From cf60f6a1910e8fa82011d6f13aa1bd9c6767fffb Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Fri, 22 Jun 2012 17:08:49 -0400
Subject: [PATCH 001/436] SH-3172 WIP - debug setting for settings.xml

---
 indra/newview/app_settings/settings.xml | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 19119438421..53c7ceaa80a 100755
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -12302,6 +12302,17 @@
       <key>Value</key>
       <integer>1</integer>
     </map>
+    <key>UseServerTextureBaking</key>
+    <map>
+      <key>Comment</key>
+      <string>Update appearance via the ServerTextureBaking cap, if available</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>Boolean</string>
+      <key>Value</key>
+      <integer>1</integer>
+    </map>
     <key>RenderDelayVBUpdate</key>
     <map>
       <key>Comment</key>
-- 
GitLab


From c3488d1fc64fb3f2bc5ad3a5a0fd5722eb574a4c Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Mon, 25 Jun 2012 13:50:39 -0400
Subject: [PATCH 002/436] SH-3172 WIP - useServerTextureBaking() func

---
 indra/newview/llappearancemgr.cpp | 9 +++++++--
 indra/newview/llappearancemgr.h   | 2 ++
 2 files changed, 9 insertions(+), 2 deletions(-)
 mode change 100644 => 100755 indra/newview/llappearancemgr.h

diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index faadfb4b87b..5d2ff1b40fb 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -2581,8 +2581,13 @@ void LLAppearanceMgr::updateClothingOrderingInfo(LLUUID cat_id, bool update_base
 	if (inventory_changed) gInventory.notifyObservers();
 }
 
-
-
+// Should be true iff both the appropriate debug setting is enabled
+// and the corresponding cap has been found.
+bool useServerTextureBaking()
+{
+	// TODO: add cap check.
+	return gSavedSettings.getBOOL("UseServerTextureBaking");
+}
 
 class LLShowCreatedOutfit: public LLInventoryCallback
 {
diff --git a/indra/newview/llappearancemgr.h b/indra/newview/llappearancemgr.h
old mode 100644
new mode 100755
index c1d561781d2..4423486b956
--- a/indra/newview/llappearancemgr.h
+++ b/indra/newview/llappearancemgr.h
@@ -182,6 +182,8 @@ class LLAppearanceMgr: public LLSingleton<LLAppearanceMgr>
 
 	bool isInUpdateAppearanceFromCOF() { return mIsInUpdateAppearanceFromCOF; }
 
+	bool useServerTextureBaking();
+
 protected:
 	LLAppearanceMgr();
 	~LLAppearanceMgr();
-- 
GitLab


From 99c1c64aa494c0b9085f0766b951fedfb60ce412 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Tue, 26 Jun 2012 16:05:03 -0400
Subject: [PATCH 003/436] SH-3172 WIP - fix

---
 indra/newview/llappearancemgr.cpp  | 2 +-
 indra/newview/lldynamictexture.cpp | 0
 2 files changed, 1 insertion(+), 1 deletion(-)
 mode change 100644 => 100755 indra/newview/lldynamictexture.cpp

diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 5d2ff1b40fb..02a90c60ecd 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -2583,7 +2583,7 @@ void LLAppearanceMgr::updateClothingOrderingInfo(LLUUID cat_id, bool update_base
 
 // Should be true iff both the appropriate debug setting is enabled
 // and the corresponding cap has been found.
-bool useServerTextureBaking()
+bool LLAppearanceMgr::useServerTextureBaking()
 {
 	// TODO: add cap check.
 	return gSavedSettings.getBOOL("UseServerTextureBaking");
diff --git a/indra/newview/lldynamictexture.cpp b/indra/newview/lldynamictexture.cpp
old mode 100644
new mode 100755
-- 
GitLab


From fbbde138c42dfced9b8805e4ce774ae8605e9d9b Mon Sep 17 00:00:00 2001
From: "Nyx (Neal Orman)" <nyx@lindenlab.com>
Date: Wed, 27 Jun 2012 17:40:19 -0400
Subject: [PATCH 004/436] SH-3231 FIX Process new texture fetch url from
 login.cgi

  - Added a new global setting (non-persist) to store the texture request URL
  - New setting is 'AgentAppearanceServiceURL'
---
 indra/newview/app_settings/settings.xml | 11 +++++++++++
 indra/newview/llstartup.cpp             |  8 ++++++++
 2 files changed, 19 insertions(+)

diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 53c7ceaa80a..6a0b9559d0c 100755
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -71,6 +71,17 @@
       <key>Value</key>
       <integer>0</integer>
     </map>
+    <key>AgentAppearanceServiceURL</key>
+    <map>
+      <key>Comment</key>
+      <string>Current Session Agent Appearance Service URL</string>
+      <key>Persist</key>
+      <integer>0</integer>
+      <key>Type</key>
+      <string>String</string>
+      <key>Value</key>
+      <string></string>
+    </map>
     <key>AlertedUnsupportedHardware</key>
     <map>
       <key>Comment</key>
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index ebde7a55fe6..e271653b2d2 100755
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -3442,6 +3442,14 @@ bool process_login_success_response()
 
 	}
 
+	// set the location of the Agent Appearance service, from which we can request
+	// avatar baked textures if they are supported by the current region
+	std::string agent_appearance_url = response["agent_appearance_service"];
+	if (!agent_appearance_url.empty())
+	{
+		gSavedSettings.setString("AgentAppearanceServiceURL", agent_appearance_url);
+	}
+
 	// Set the location of the snapshot sharing config endpoint
 	std::string snapshot_config_url = response["snapshot_config_url"];
 	if(!snapshot_config_url.empty())
-- 
GitLab


From 14fef9f08a3bfb44d94771be6478a57ed9a91540 Mon Sep 17 00:00:00 2001
From: "Nyx (Neal Orman)" <nyx@lindenlab.com>
Date: Thu, 28 Jun 2012 11:05:32 -0400
Subject: [PATCH 005/436] SH-3230 Disable texture readback & upload

If we're utilizing server-side texture baking, upload requests are
discarded.

Note: this breaks viewer in that it will *always* use the baked textures
sent by the cache request/ initial login. Without a server-generated
update, you will see those textures on your avatar for the entire session,
even if you switch outfits.
---
 indra/newview/llvoavatarself.cpp | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index 0bfd0df769b..ee3381a5ad2 100755
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -887,7 +887,10 @@ void LLVOAvatarSelf::removeMissingBakedTextures()
 			invalidateComposite(mBakedTextureDatas[i].mTexLayerSet, FALSE);
 		}
 		updateMeshTextures();
-		requestLayerSetUploads();
+		if (!LLAppearanceMgr::instance().useServerTextureBaking())
+		{
+			requestLayerSetUploads();
+		}
 	}
 }
 
@@ -1630,7 +1633,7 @@ void LLVOAvatarSelf::invalidateComposite( LLTexLayerSet* layerset, BOOL upload_r
 	layerset->requestUpdate();
 	layerset->invalidateMorphMasks();
 
-	if( upload_result )
+	if( upload_result  && !LLAppearanceMgr::instance().useServerTextureBaking())
 	{
 		llassert(isSelf());
 
-- 
GitLab


From e4a0dda457039b1a04c74024d9fbcf02e071b13d Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Thu, 28 Jun 2012 14:24:04 -0400
Subject: [PATCH 006/436] SH-3228 WIP - always respond to processAppearance for
 self, convert baked textures to checkerboards

---
 indra/llcommon/imageids.cpp       |  3 +++
 indra/llcommon/imageids.h         |  1 +
 indra/llprimitive/llprimitive.cpp | 17 +++++++++++++----
 indra/llprimitive/llprimitive.h   |  4 ++--
 indra/newview/llvoavatar.cpp      |  4 ++--
 indra/newview/llvoavatarself.cpp  |  2 +-
 indra/newview/llvovolume.cpp      |  2 +-
 7 files changed, 23 insertions(+), 10 deletions(-)
 mode change 100644 => 100755 indra/llcommon/imageids.cpp
 mode change 100644 => 100755 indra/llcommon/imageids.h
 mode change 100644 => 100755 indra/llprimitive/llprimitive.h

diff --git a/indra/llcommon/imageids.cpp b/indra/llcommon/imageids.cpp
old mode 100644
new mode 100755
index fe114652210..7d647e5c364
--- a/indra/llcommon/imageids.cpp
+++ b/indra/llcommon/imageids.cpp
@@ -68,3 +68,6 @@ const LLUUID TERRAIN_MOUNTAIN_DETAIL	("303cd381-8560-7579-23f1-f0a880799740"); /
 const LLUUID TERRAIN_ROCK_DETAIL		("53a2f406-4895-1d13-d541-d2e3b86bc19c"); // VIEWER
 
 const LLUUID DEFAULT_WATER_NORMAL		("822ded49-9a6c-f61c-cb89-6df54f42cdf4"); // VIEWER
+
+const LLUUID IMG_CHECKERBOARD_RGBA     ("2585a0f3-4163-6dd1-0f34-ad48cb909e25"); // dataserver
+
diff --git a/indra/llcommon/imageids.h b/indra/llcommon/imageids.h
old mode 100644
new mode 100755
index e0c2683fdc3..18c8ecb0743
--- a/indra/llcommon/imageids.h
+++ b/indra/llcommon/imageids.h
@@ -66,4 +66,5 @@ LL_COMMON_API extern const LLUUID TERRAIN_ROCK_DETAIL;
 
 LL_COMMON_API extern const LLUUID DEFAULT_WATER_NORMAL;
 
+LL_COMMON_API extern const LLUUID IMG_CHECKERBOARD_RGBA;
 #endif
diff --git a/indra/llprimitive/llprimitive.cpp b/indra/llprimitive/llprimitive.cpp
index 30532247ac1..c766d8a43c0 100755
--- a/indra/llprimitive/llprimitive.cpp
+++ b/indra/llprimitive/llprimitive.cpp
@@ -39,6 +39,7 @@
 #include "lldatapacker.h"
 #include "llsdutil_math.h"
 #include "llprimtexturelist.h"
+#include "imageids.h"
 
 /**
  * exported constants
@@ -1227,12 +1228,12 @@ BOOL LLPrimitive::packTEMessage(LLDataPacker &dp) const
 	return FALSE;
 }
 
-S32 LLPrimitive::unpackTEMessage(LLMessageSystem* mesgsys, char const* block_name)
+S32 LLPrimitive::unpackTEMessage(LLMessageSystem* mesgsys, char const* block_name, bool fake_images)
 {
-	return(unpackTEMessage(mesgsys,block_name,-1));
+	return(unpackTEMessage(mesgsys,block_name,-1,fake_images));
 }
 
-S32 LLPrimitive::unpackTEMessage(LLMessageSystem* mesgsys, char const* block_name, const S32 block_num)
+S32 LLPrimitive::unpackTEMessage(LLMessageSystem* mesgsys, char const* block_name, const S32 block_num, bool fake_images)
 {
 	// use a negative block_num to indicate a single-block read (a non-variable block)
 	S32 retval = 0;
@@ -1307,7 +1308,15 @@ S32 LLPrimitive::unpackTEMessage(LLMessageSystem* mesgsys, char const* block_nam
 	LLColor4U coloru;
 	for (U32 i = 0; i < face_count; i++)
 	{
-		retval |= setTETexture(i, ((LLUUID*)image_data)[i]);
+		LLUUID& req_id = ((LLUUID*)image_data)[i];
+		if (fake_images & (req_id != IMG_DEFAULT) && (req_id != IMG_DEFAULT_AVATAR) && (req_id != IMG_INVISIBLE))
+		{
+			retval |= setTETexture(i, IMG_CHECKERBOARD_RGBA);
+		}
+		else
+		{
+			retval |= setTETexture(i, req_id);
+		}
 		retval |= setTEScale(i, scale_s[i], scale_t[i]);
 		retval |= setTEOffset(i, (F32)offset_s[i] / (F32)0x7FFF, (F32) offset_t[i] / (F32) 0x7FFF);
 		retval |= setTERotation(i, ((F32)image_rot[i] / TEXTURE_ROTATION_PACK_FACTOR) * F_TWO_PI);
diff --git a/indra/llprimitive/llprimitive.h b/indra/llprimitive/llprimitive.h
old mode 100644
new mode 100755
index 998016f8f6a..1e985221c02
--- a/indra/llprimitive/llprimitive.h
+++ b/indra/llprimitive/llprimitive.h
@@ -360,8 +360,8 @@ class LLPrimitive : public LLXform
 	S32 unpackTEField(U8 *cur_ptr, U8 *buffer_end, U8 *data_ptr, U8 data_size, U8 face_count, EMsgVariableType type);
 	BOOL packTEMessage(LLMessageSystem *mesgsys) const;
 	BOOL packTEMessage(LLDataPacker &dp) const;
-	S32 unpackTEMessage(LLMessageSystem* mesgsys, char const* block_name);
-	S32 unpackTEMessage(LLMessageSystem* mesgsys, char const* block_name, const S32 block_num); // Variable num of blocks
+	S32 unpackTEMessage(LLMessageSystem* mesgsys, char const* block_name, bool fake_images = false);
+	S32 unpackTEMessage(LLMessageSystem* mesgsys, char const* block_name, const S32 block_num, bool fake_images = false); // Variable num of blocks
 	BOOL unpackTEMessage(LLDataPacker &dp);
 	
 #ifdef CHECK_FOR_FINITE
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index d2247ed5cbb..531d3b49405 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -7283,7 +7283,7 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 	if( isSelf() )
 	{
 		llwarns << avString() << "Received AvatarAppearance for self" << llendl;
-		if( mFirstTEMessageReceived )
+		if( mFirstTEMessageReceived && !LLAppearanceMgr::instance().useServerTextureBaking())
 		{
 //			llinfos << "processAvatarAppearance end  " << mID << llendl;
 			return;
@@ -7294,7 +7294,7 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 
 //	llinfos << "LLVOAvatar::processAvatarAppearance()" << llendl;
 //	dumpAvatarTEs( "PRE  processAvatarAppearance()" );
-	unpackTEMessage(mesgsys, _PREHASH_ObjectData);
+	unpackTEMessage(mesgsys, _PREHASH_ObjectData, LLAppearanceMgr::instance().useServerTextureBaking());
 //	dumpAvatarTEs( "POST processAvatarAppearance()" );
 
 	// prevent the overwriting of valid baked textures with invalid baked textures
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index 0bfd0df769b..585a116acb2 100755
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -814,7 +814,7 @@ U32  LLVOAvatarSelf::processUpdateMessage(LLMessageSystem *mesgsys,
 		updateMeshTextures();
 
 		// unpack the texture UUIDs to the texture slots
-		retval = unpackTEMessage(mesgsys, _PREHASH_ObjectData, block_num);
+		retval = unpackTEMessage(mesgsys, _PREHASH_ObjectData, (S32) block_num);
 
 		// need to trigger a few operations to get the avatar to use the new bakes
 		for (U32 i = 0; i < mBakedTextureDatas.size(); i++)
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
index b5d173346e8..4999f680dfa 100644
--- a/indra/newview/llvovolume.cpp
+++ b/indra/newview/llvovolume.cpp
@@ -370,7 +370,7 @@ U32 LLVOVolume::processUpdateMessage(LLMessageSystem *mesgsys,
 		// Unpack texture entry data
 		//
 
-		S32 result = unpackTEMessage(mesgsys, _PREHASH_ObjectData, block_num);
+		S32 result = unpackTEMessage(mesgsys, _PREHASH_ObjectData, (S32) block_num);
 		if (result & teDirtyBits)
 		{
 			updateTEData();
-- 
GitLab


From fe01e64f9756641756d18d7aab7079bfee21c089 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Fri, 29 Jun 2012 13:08:00 -0400
Subject: [PATCH 007/436] SH-3226 WIP - request appearance update request,
 connects to UpdateAgentAppearance cap, in updateAppearanceFromCOF()

---
 indra/newview/llappearancemgr.cpp | 30 ++++++++++++++++++++++++++++++
 indra/newview/llappearancemgr.h   |  2 ++
 indra/newview/llviewerregion.cpp  |  1 +
 3 files changed, 33 insertions(+)

diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 02a90c60ecd..d6cb910b4e4 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -1730,6 +1730,12 @@ void LLAppearanceMgr::updateAppearanceFromCOF(bool update_base_outfit_ordering)
 	// the saved outfit stored as a folder link
 	updateIsDirty();
 
+	// Send server request for appearance update
+	if (useServerTextureBaking())
+	{
+		requestServerAppearanceUpdate();
+	}
+	
 	//dumpCat(getCOF(),"COF, start");
 
 	bool follow_folder_links = true;
@@ -2589,6 +2595,30 @@ bool LLAppearanceMgr::useServerTextureBaking()
 	return gSavedSettings.getBOOL("UseServerTextureBaking");
 }
 
+class RequestAgentUpdateAppearanceResponder: public LLHTTPClient::Responder
+{
+public:
+	RequestAgentUpdateAppearanceResponder() {}
+	/*virtual*/ void error(U32 status, const std::string& reason)
+	{
+		llwarns << "appearance update request failed, reason: " << reason << llendl;
+	}	
+};
+
+void LLAppearanceMgr::requestServerAppearanceUpdate()
+{
+	std::string url = gAgent.getRegion()->getCapability("UpdateAgentAppearance");	
+	if (!url.empty())
+	{
+		LLSD body;
+		LLHTTPClient::post(url, body, new RequestAgentUpdateAppearanceResponder);
+	}
+	else
+	{
+		llwarns << "no cap for UpdateAgentAppearance" << llendl;
+	}
+}
+
 class LLShowCreatedOutfit: public LLInventoryCallback
 {
 public:
diff --git a/indra/newview/llappearancemgr.h b/indra/newview/llappearancemgr.h
index 4423486b956..46457f1dce4 100755
--- a/indra/newview/llappearancemgr.h
+++ b/indra/newview/llappearancemgr.h
@@ -184,6 +184,8 @@ class LLAppearanceMgr: public LLSingleton<LLAppearanceMgr>
 
 	bool useServerTextureBaking();
 
+	void requestServerAppearanceUpdate();
+
 protected:
 	LLAppearanceMgr();
 	~LLAppearanceMgr();
diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp
index e3cb985ddb3..912dd7d0c90 100644
--- a/indra/newview/llviewerregion.cpp
+++ b/indra/newview/llviewerregion.cpp
@@ -1545,6 +1545,7 @@ void LLViewerRegionImpl::buildCapabilityNames(LLSD& capabilityNames)
 	capabilityNames.append("UntrustedSimulatorMessage");
 	capabilityNames.append("UpdateAgentInformation");
 	capabilityNames.append("UpdateAgentLanguage");
+	capabilityNames.append("UpdateAgentAppearance");
 	capabilityNames.append("UpdateGestureAgentInventory");
 	capabilityNames.append("UpdateNotecardAgentInventory");
 	capabilityNames.append("UpdateScriptAgent");
-- 
GitLab


From 3f931ad1e3558a847ba93099a0336782f9f5dbdc Mon Sep 17 00:00:00 2001
From: "Nyx (Neal Orman)" <nyx@lindenlab.com>
Date: Fri, 29 Jun 2012 19:18:33 -0400
Subject: [PATCH 008/436] SH-3229 FIX suppress baked texture cache requests and
 generated agentAppearance messages

  If you're using the new pipeline, then we should not be requesting cached baked textures
from the simulator. Nor should we be sending agentAppearance messages to the simulator
(note: this may change in the future on region arrive)
---
 indra/newview/llagent.cpp          | 3 ++-
 indra/newview/llagentwearables.cpp | 2 +-
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index 33676047535..f99065aa08a 100755
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -35,6 +35,7 @@
 #include "llagentlistener.h"
 #include "llagentwearables.h"
 #include "llagentui.h"
+#include "llappearancemgr.h"
 #include "llanimationstates.h"
 #include "llcallingcard.h"
 #include "llcapabilitylistener.h"
@@ -3771,7 +3772,7 @@ void LLAgent::requestLeaveGodMode()
 //-----------------------------------------------------------------------------
 void LLAgent::sendAgentSetAppearance()
 {
-	if (!isAgentAvatarValid()) return;
+	if (!isAgentAvatarValid() || LLAppearanceMgr::instance().useServerTextureBaking()) return;
 
 	if (gAgentQueryManager.mNumPendingQueries > 0 && (isAgentAvatarValid() && gAgentAvatarp->isUsingBakedTextures())) 
 	{
diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp
index e441f21f904..0a721312f3b 100755
--- a/indra/newview/llagentwearables.cpp
+++ b/indra/newview/llagentwearables.cpp
@@ -1597,7 +1597,7 @@ void LLAgentWearables::setWearableFinal(LLInventoryItem* new_item, LLWearable* n
 
 void LLAgentWearables::queryWearableCache()
 {
-	if (!areWearablesLoaded())
+	if (!areWearablesLoaded() || LLAppearanceMgr::instance().useServerTextureBaking())
 	{
 		return;
 	}
-- 
GitLab


From 4718ffebc1942ea1d94c8e8d2eca071d0d834bc2 Mon Sep 17 00:00:00 2001
From: "Nyx (Neal Orman)" <nyx@lindenlab.com>
Date: Mon, 2 Jul 2012 18:17:56 -0400
Subject: [PATCH 009/436] FIX: renamed UpdateAgentAppearance to
 UpdateAvatarAppearance

---
 indra/newview/llappearancemgr.cpp | 4 ++--
 indra/newview/llviewerregion.cpp  | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index d6cb910b4e4..480a8e0d73b 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -2607,7 +2607,7 @@ class RequestAgentUpdateAppearanceResponder: public LLHTTPClient::Responder
 
 void LLAppearanceMgr::requestServerAppearanceUpdate()
 {
-	std::string url = gAgent.getRegion()->getCapability("UpdateAgentAppearance");	
+	std::string url = gAgent.getRegion()->getCapability("UpdateAvatarAppearance");	
 	if (!url.empty())
 	{
 		LLSD body;
@@ -2615,7 +2615,7 @@ void LLAppearanceMgr::requestServerAppearanceUpdate()
 	}
 	else
 	{
-		llwarns << "no cap for UpdateAgentAppearance" << llendl;
+		llwarns << "no cap for UpdateAvatarAppearance" << llendl;
 	}
 }
 
diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp
index 912dd7d0c90..777475fe613 100644
--- a/indra/newview/llviewerregion.cpp
+++ b/indra/newview/llviewerregion.cpp
@@ -1545,7 +1545,7 @@ void LLViewerRegionImpl::buildCapabilityNames(LLSD& capabilityNames)
 	capabilityNames.append("UntrustedSimulatorMessage");
 	capabilityNames.append("UpdateAgentInformation");
 	capabilityNames.append("UpdateAgentLanguage");
-	capabilityNames.append("UpdateAgentAppearance");
+	capabilityNames.append("UpdateAvatarAppearance");
 	capabilityNames.append("UpdateGestureAgentInventory");
 	capabilityNames.append("UpdateNotecardAgentInventory");
 	capabilityNames.append("UpdateScriptAgent");
-- 
GitLab


From 5904976435873b0b3c4f39a2514aef38bee22a39 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Tue, 3 Jul 2012 01:06:04 +0000
Subject: [PATCH 010/436] Added more rendering-code early-exits when in
 headless mode.

---
 indra/newview/llviewerwindow.cpp | 1 +
 indra/newview/pipeline.cpp       | 1 +
 2 files changed, 2 insertions(+)

diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 7afb1354708..ed970b84a79 100755
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -1712,6 +1712,7 @@ LLViewerWindow::LLViewerWindow(const Params& p)
 
 void LLViewerWindow::initGLDefaults()
 {
+	if (gHeadlessClient) return;
 	gGL.setSceneBlendType(LLRender::BT_ALPHA);
 
 	if (!LLGLSLShader::sNoFixedFunction)
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index 49c4f37871c..de72d790430 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -1105,6 +1105,7 @@ void LLPipeline::releaseScreenBuffers()
 
 void LLPipeline::createGLBuffers()
 {
+	if (gHeadlessClient) return;
 	stop_glerror();
 	LLMemType mt_cb(LLMemType::MTYPE_PIPELINE_CREATE_BUFFERS);
 	assertInitialized();
-- 
GitLab


From 189f9be7bb20bbe43c9c3060fe36cc9d867af01d Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Wed, 4 Jul 2012 01:30:55 +0000
Subject: [PATCH 011/436] Adding initial debian packaging configuration

---
 debian/changelog |  18 ++++++++
 debian/compat    |   1 +
 debian/control   |  16 +++++++
 debian/copyright |   7 ++++
 debian/postinst  |  43 +++++++++++++++++++
 debian/postrm    |  41 ++++++++++++++++++
 debian/preinst   |  39 +++++++++++++++++
 debian/prerm     |  42 +++++++++++++++++++
 debian/rules     | 107 +++++++++++++++++++++++++++++++++++++++++++++++
 9 files changed, 314 insertions(+)
 create mode 100644 debian/changelog
 create mode 100644 debian/compat
 create mode 100644 debian/control
 create mode 100644 debian/copyright
 create mode 100644 debian/postinst
 create mode 100644 debian/postrm
 create mode 100644 debian/preinst
 create mode 100644 debian/prerm
 create mode 100755 debian/rules

diff --git a/debian/changelog b/debian/changelog
new file mode 100644
index 00000000000..ce54b54c6f1
--- /dev/null
+++ b/debian/changelog
@@ -0,0 +1,18 @@
+secondlife-viewer (0.3) unstable; urgency=low
+
+  * Initial debian configuration
+
+ -- Don Kjer <don@lindenlab.com>  Wed, 04 Jul 2012 00:43:03 +0000
+
+secondlife-viewer (0.2) unstable; urgency=low
+
+  * Adding default LSB headers for squeeze
+
+ -- Tyler Kohler <tyler@lindenlab.com>  Thu, 24 Mar 2011 09:43:36 -0700
+
+secondlife-viewer (0.1) unstable; urgency=low
+
+  * Cloned from debian package skeleton.
+
+ -- Lex Linden <lex@lindenlab.com>  Mon, 20 Sep 2010 08:01:59 -0700
+
diff --git a/debian/compat b/debian/compat
new file mode 100644
index 00000000000..7ed6ff82de6
--- /dev/null
+++ b/debian/compat
@@ -0,0 +1 @@
+5
diff --git a/debian/control b/debian/control
new file mode 100644
index 00000000000..50b9ed9a264
--- /dev/null
+++ b/debian/control
@@ -0,0 +1,16 @@
+Source: secondlife-viewer
+Section: unknown
+Priority: extra
+Maintainer: Don Linden <don@lindenlab.com>
+Build-Depends: debhelper (>= 5)
+Homepage: http://secondlife.com
+Standards-Version: 3.7.2
+
+Package: secondlife-viewer
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends},
+ ia32-libs,
+ ia32-libs-gtk
+Description: Second Life Viewer
+ Second Life is an online virtual world developed by Linden Lab.
+ 
diff --git a/debian/copyright b/debian/copyright
new file mode 100644
index 00000000000..ecfceb39276
--- /dev/null
+++ b/debian/copyright
@@ -0,0 +1,7 @@
+Copyright: 2012 Linden Research, Inc.
+
+License:
+
+No license to distribute, copy, modify, or make derivitave works of this
+software is granted unless specifically granted in writing by Linden Research,
+Inc.
diff --git a/debian/postinst b/debian/postinst
new file mode 100644
index 00000000000..2c4f8ea8588
--- /dev/null
+++ b/debian/postinst
@@ -0,0 +1,43 @@
+#!/bin/sh
+# postinst script for secondlife-viewer
+#
+# Delete this file if you don't need it.
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+#        * <postinst> `configure' <most-recently-configured-version>
+#        * <old-postinst> `abort-upgrade' <new version>
+#        * <conflictor's-postinst> `abort-remove' `in-favour' <package>
+#          <new-version>
+#        * <postinst> `abort-remove'
+#        * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
+#          <failed-install-package> <version> `removing'
+#          <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+    configure)
+    ;;
+
+    abort-upgrade|abort-remove|abort-deconfigure)
+    ;;
+
+    *)
+        echo "postinst called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.  Don't delete this!
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/debian/postrm b/debian/postrm
new file mode 100644
index 00000000000..a575936ab04
--- /dev/null
+++ b/debian/postrm
@@ -0,0 +1,41 @@
+#!/bin/sh
+# postrm script for secondlife-viewer
+#
+# Delete this file if you don't need it.
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+#        * <postrm> `remove'
+#        * <postrm> `purge'
+#        * <old-postrm> `upgrade' <new-version>
+#        * <new-postrm> `failed-upgrade' <old-version>
+#        * <new-postrm> `abort-install'
+#        * <new-postrm> `abort-install' <old-version>
+#        * <new-postrm> `abort-upgrade' <old-version>
+#        * <disappearer's-postrm> `disappear' <overwriter>
+#          <overwriter-version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+    purge|remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
+    ;;
+
+    *)
+        echo "postrm called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.  Don't delete this!
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/debian/preinst b/debian/preinst
new file mode 100644
index 00000000000..f62243440f6
--- /dev/null
+++ b/debian/preinst
@@ -0,0 +1,39 @@
+#!/bin/sh
+# preinst script for secondlife-viewer
+#
+# Delete this file if you don't need it.
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+#        * <new-preinst> `install'
+#        * <new-preinst> `install' <old-version>
+#        * <new-preinst> `upgrade' <old-version>
+#        * <old-preinst> `abort-upgrade' <new-version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+    install|upgrade)
+    ;;
+
+    abort-upgrade)
+    ;;
+
+    *)
+        echo "preinst called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.  Don't delete this!
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/debian/prerm b/debian/prerm
new file mode 100644
index 00000000000..405b8f9c87b
--- /dev/null
+++ b/debian/prerm
@@ -0,0 +1,42 @@
+#!/bin/sh
+# prerm script for secondlife-viewer
+#
+# Delete this file if you don't need it.
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+#        * <prerm> `remove'
+#        * <old-prerm> `upgrade' <new-version>
+#        * <new-prerm> `failed-upgrade' <old-version>
+#        * <conflictor's-prerm> `remove' `in-favour' <package> <new-version>
+#        * <deconfigured's-prerm> `deconfigure' `in-favour'
+#          <package-being-installed> <version> `removing'
+#          <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+    remove|upgrade|deconfigure)
+    ;;
+
+    failed-upgrade)
+    ;;
+
+    *)
+        echo "prerm called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.  Don't delete this!
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/debian/rules b/debian/rules
new file mode 100755
index 00000000000..eedeeef8793
--- /dev/null
+++ b/debian/rules
@@ -0,0 +1,107 @@
+#!/usr/bin/make -f
+# -*- makefile -*-
+# Sample debian/rules that uses debhelper.
+# This file was originally written by Joey Hess and Craig Small.
+# As a special exception, when this file is copied by dh-make into a
+# dh-make output file, you may use that output file without restriction.
+# This special exception was added by Craig Small in version 0.37 of dh-make.
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+SRCDIR=build-linux-i686/newview/packaged
+DESTDIR=$(CURDIR)/debian/secondlife-viewer
+INSTALLDIR=opt/linden/viewer
+
+configure: configure-stamp
+configure-stamp:
+	dh_testdir
+	# Add here commands to configure the package.
+
+	touch configure-stamp
+
+build: build-stamp
+
+build-stamp: configure-stamp 
+	dh_testdir
+
+	# Add here commands to compile the package.
+	#$(MAKE)
+	#docbook-to-man debian/secondlife-viewer.sgml > secondlife-viewer.1
+
+	touch $@
+
+clean:
+	dh_testdir
+	dh_testroot
+	rm -f build-stamp configure-stamp
+
+	# Add here commands to clean up after the build process.
+	#-$(MAKE) clean
+
+	dh_clean 
+
+install: build
+	dh_testdir
+	dh_testroot
+	dh_clean -k 
+	dh_installdirs
+
+	# Add here commands to install the package into debian/secondlife-viewer.
+	#$(MAKE) DESTDIR=$(CURDIR)/debian/secondlife-viewer install
+	for file in $$(find $(SRCDIR) -type f | sed 's~$(SRCDIR)/~~'); do \
+		# create containing directory \
+		install -v -m 755 -o root -g root -d "$$(dirname "$(DESTDIR)/$(INSTALLDIR)/$$file")"; \
+		PERM=644; \
+		if [ -x "$(SRCDIR)/$$file" ]; then \
+			PERM=755; \
+		fi; \
+		install -v -m $$PERM -o root -g root "$(SRCDIR)/$$file" "$(DESTDIR)/$(INSTALLDIR)/$$file"; \
+	done
+	dh_link /$(INSTALLDIR)/secondlife /usr/bin/secondlife
+
+
+# Build architecture-independent files here.
+binary-indep: build install
+# We have nothing to do by default.
+
+# Build architecture-dependent files here.
+binary-arch: build install
+	dh_testdir
+	dh_testroot
+	dh_installchangelogs 
+	dh_installdocs
+	dh_installexamples
+#	dh_install
+#	dh_installmenu
+#	dh_installdebconf	
+#	dh_installlogrotate
+#	dh_installemacsen
+#	dh_installpam
+#	dh_installmime
+#	dh_python
+
+# To add an init script, uncomment this line and edit debian/init.d and 
+# customize debian/secondlife-viewer.default to suit your needs.
+#	dh_installinit
+
+# To add cron jobs, uncomment this line and make a crontab file named 
+# debian/cron.d, and it will be installed in /etc/cron.d/
+#	dh_installcron
+
+#	dh_installinfo
+	dh_installman
+	dh_link
+#	dh_strip
+	dh_compress
+#	dh_fixperms
+#	dh_perl
+#	dh_makeshlibs
+	dh_installdeb
+#	dh_shlibdeps
+	dh_gencontrol
+	dh_md5sums
+	dh_builddeb
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install configure
-- 
GitLab


From aee13892c870473a3d38d2b7524871e0024a92f2 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Fri, 6 Jul 2012 01:12:54 +0000
Subject: [PATCH 012/436] Adding debian package build to teamcity build script.

---
 build.sh | 85 +++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 file changed, 81 insertions(+), 4 deletions(-)

diff --git a/build.sh b/build.sh
index a95ca91d829..ac7fdc4f753 100755
--- a/build.sh
+++ b/build.sh
@@ -271,12 +271,89 @@ then
   end_section WaitParallel
 fi
 
+# build debian package
+if [ "$arch" == "Linux" ]
+then
+  if $succeeded
+  then
+    if $build_viewer_deb && [ "$last_built_variant" == "Release" ]
+    then
+      begin_section "Build Debian Package"
+      # mangle the changelog
+      dch --force-bad-version \
+          --distribution unstable \
+          --newversion "${VIEWER_VERSION}" \
+          "Automated build #$build_id, repository $branch revision $revision." \
+          >> "$build_log" 2>&1
+
+      # build the debian package
+      $pkg_default_debuild_command  >>"$build_log" 2>&1 || record_failure "\"$pkg_default_debuild_command\" failed."
+
+      # Unmangle the changelog file
+      hg revert debian/changelog
+
+      end_section "Build Debian Package"
+
+      # upload debian package and create repository
+      begin_section "Upload Debian Repository"
+      for deb_file in ./*.deb; do
+        upload_item debian $deb_file binary/octet-stream
+      done
+      if [ -d "$build_log_dir/debian_repo" ]
+      then
+        pushd "$build_log_dir/debian_repo"
+        cat > Release <<EOF
+Archive: stable
+Component: main
+Origin: Teamcity
+Label: Teamcity built .debs
+Architecture: i386 amd64 any
+EOF
+        if dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz \
+        && dpkg-scansources . /dev/null | gzip -9c > Sources.gz
+        then
+          begin_section Packages.gz
+          gunzip --stdout Packages.gz
+          for file in *.deb
+          do  
+            stat "$file" | sed 2q
+            md5sum "$file"
+          done
+          end_section Packages.gz
+
+          for file in *
+          do
+            upload_item debian_repo "$file" binary/octet-stream
+          done
+        else
+          record_failure 'Unable to generate Packages.gz or Sources.gz'
+        fi
+        popd
+
+        process_pending_uploads
+
+        # Rename the local debian_repo directory so that the master buildscript
+        # doesn't make a remote repo again.
+
+        mv $build_log_dir/debian_repo $build_log_dir/debian_repo_pushed
+      fi
+      end_section "Upload Debian Repository"
+      
+    else
+      echo skipping debian build
+    fi
+  else
+    echo skipping debian build due to failed build.
+  fi
+fi
+
+
 # check status and upload results to S3
 if $succeeded
 then
   if $build_viewer
   then
-    begin_section Upload
+    begin_section Upload Installer
     # Upload installer - note that ONLY THE FIRST ITEM uploaded as "installer"
     # will appear in the version manager.
     package=$(installer_$arch)
@@ -302,12 +379,12 @@ then
       # Upload stub installers
       upload_stub_installers "$build_dir_stubs"
     fi
-    end_section Upload
+    end_section Upload Installer
   else
-    echo skipping viewer
+    echo skipping upload of installer
   fi
 else
-  echo skipping upload of build results due to failed build.
+  echo skipping upload of installer due to failed build.
 fi
 
 # The branch independent build.sh script invoking this script will finish processing
-- 
GitLab


From a6ecafceff18497deba2e0d308f97b044027f7f0 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Fri, 6 Jul 2012 01:53:34 +0000
Subject: [PATCH 013/436] Change install directory to include viewer version

---
 build.sh     | 2 +-
 debian/rules | 5 ++++-
 2 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/build.sh b/build.sh
index ac7fdc4f753..47b3ff545ef 100755
--- a/build.sh
+++ b/build.sh
@@ -296,7 +296,7 @@ then
 
       # upload debian package and create repository
       begin_section "Upload Debian Repository"
-      for deb_file in ./*.deb; do
+      for deb_file in ../*.deb; do
         upload_item debian $deb_file binary/octet-stream
       done
       if [ -d "$build_log_dir/debian_repo" ]
diff --git a/debian/rules b/debian/rules
index eedeeef8793..e4106ff75c2 100755
--- a/debian/rules
+++ b/debian/rules
@@ -11,7 +11,9 @@
 
 SRCDIR=build-linux-i686/newview/packaged
 DESTDIR=$(CURDIR)/debian/secondlife-viewer
-INSTALLDIR=opt/linden/viewer
+BASEDIR=opt/linden/viewer
+VIEWER_VERSION:=$(shell dpkg-parsechangelog | grep ^Version | sed 's/^Version: //')
+INSTALLDIR:=$(BASEDIR)/SecondLife-i686-$(VIEWER_VERSION)
 
 configure: configure-stamp
 configure-stamp:
@@ -59,6 +61,7 @@ install: build
 		install -v -m $$PERM -o root -g root "$(SRCDIR)/$$file" "$(DESTDIR)/$(INSTALLDIR)/$$file"; \
 	done
 	dh_link /$(INSTALLDIR)/secondlife /usr/bin/secondlife
+	dh_link $(BASEDIR)/SecondLife-i686-$(VIEWER_VERSION) $(BASEDIR)/SecondLife
 
 
 # Build architecture-independent files here.
-- 
GitLab


From b7bcad3164c6d94bb4f9a626982145eefa40e346 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Sun, 8 Jul 2012 10:49:08 +0000
Subject: [PATCH 014/436] Added support for lib symlinks in deb package.

---
 debian/rules | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/debian/rules b/debian/rules
index e4106ff75c2..c41f02d4fbd 100755
--- a/debian/rules
+++ b/debian/rules
@@ -50,15 +50,21 @@ install: build
 	dh_installdirs
 
 	# Add here commands to install the package into debian/secondlife-viewer.
-	#$(MAKE) DESTDIR=$(CURDIR)/debian/secondlife-viewer install
-	for file in $$(find $(SRCDIR) -type f | sed 's~$(SRCDIR)/~~'); do \
+	for file in $$(find $(SRCDIR) -type f -o -type l | sed 's~$(SRCDIR)/~~'); do \
 		# create containing directory \
 		install -v -m 755 -o root -g root -d "$$(dirname "$(DESTDIR)/$(INSTALLDIR)/$$file")"; \
 		PERM=644; \
 		if [ -x "$(SRCDIR)/$$file" ]; then \
 			PERM=755; \
 		fi; \
-		install -v -m $$PERM -o root -g root "$(SRCDIR)/$$file" "$(DESTDIR)/$(INSTALLDIR)/$$file"; \
+		if [ -L "$(SRCDIR)/$$file" ]; then \
+			REAL="$$( readlink -f $(SRCDIR)/$$file )"; \
+			RELATIVE="$$( echo $$REAL | sed 's~$(CURDIR)/$(SRCDIR)/~~' )"; \
+			echo dh_link "$(INSTALLDIR)/$$RELATIVE" "$(INSTALLDIR)/$$file" ; \
+			dh_link "$(INSTALLDIR)/$$RELATIVE" "$(INSTALLDIR)/$$file" ; \
+		else \
+			install -v -m $$PERM -o root -g root "$(SRCDIR)/$$file" "$(DESTDIR)/$(INSTALLDIR)/$$file"; \
+		fi; \
 	done
 	dh_link /$(INSTALLDIR)/secondlife /usr/bin/secondlife
 	dh_link $(BASEDIR)/SecondLife-i686-$(VIEWER_VERSION) $(BASEDIR)/SecondLife
-- 
GitLab


From bc2517215cbf79cdf8a910e93cc5d3f2ac1534c7 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Mon, 9 Jul 2012 00:48:02 +0000
Subject: [PATCH 015/436] Skipping shiftObject pipeline method in headless mode

---
 indra/newview/llviewerobjectlist.cpp | 1 +
 1 file changed, 1 insertion(+)

diff --git a/indra/newview/llviewerobjectlist.cpp b/indra/newview/llviewerobjectlist.cpp
index beb68c1cbbc..e4ce670a43e 100644
--- a/indra/newview/llviewerobjectlist.cpp
+++ b/indra/newview/llviewerobjectlist.cpp
@@ -1491,6 +1491,7 @@ void LLViewerObjectList::onPhysicsFlagsFetchFailure(const LLUUID& object_id)
 
 void LLViewerObjectList::shiftObjects(const LLVector3 &offset)
 {
+	if (gHeadlessClient) return;
 	// This is called when we shift our origin when we cross region boundaries...
 	// We need to update many object caches, I'll document this more as I dig through the code
 	// cleaning things out...
-- 
GitLab


From 033c84dc9452f4b38cdf87446203241c4554d126 Mon Sep 17 00:00:00 2001
From: "Nyx (Neal Orman)" <nyx@lindenlab.com>
Date: Mon, 9 Jul 2012 14:03:08 -0400
Subject: [PATCH 016/436] SH-3171 FIX switched texture pipeline to use the new
 cap request URL

If we support server side texture baking, requests for baked textures will
go through the http url received at login.
---
 indra/newview/llviewerobject.cpp    | 17 +++++++++++++++++
 indra/newview/llviewerobject.h      |  1 +
 indra/newview/llvoavatar.cpp        | 18 ++++++++++++++++--
 indra/newview/llvoavatardefines.cpp | 12 ++++++------
 4 files changed, 40 insertions(+), 8 deletions(-)

diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp
index cd300accb7f..877e475928e 100644
--- a/indra/newview/llviewerobject.cpp
+++ b/indra/newview/llviewerobject.cpp
@@ -4141,6 +4141,23 @@ void LLViewerObject::setTEImage(const U8 te, LLViewerTexture *imagep)
 }
 
 
+S32 LLViewerObject::setTETextureCore(const U8 te, const LLUUID& uuid, const std::string &url )
+{
+	S32 retval = 0;
+	if (uuid != getTE(te)->getID() ||
+		uuid == LLUUID::null)
+	{
+		retval = LLPrimitive::setTETexture(te, uuid);
+		mTEImages[te] = LLViewerTextureManager::getFetchedTextureFromUrl  (url, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE, 0, 0, uuid);
+		setChanged(TEXTURE);
+		if (mDrawable.notNull())
+		{
+			gPipeline.markTextured(mDrawable);
+		}
+	}
+	return retval;
+}
+
 S32 LLViewerObject::setTETextureCore(const U8 te, const LLUUID& uuid, LLHost host)
 {
 	S32 retval = 0;
diff --git a/indra/newview/llviewerobject.h b/indra/newview/llviewerobject.h
index c8152e1539d..b380e9b8ce3 100644
--- a/indra/newview/llviewerobject.h
+++ b/indra/newview/llviewerobject.h
@@ -314,6 +314,7 @@ class LLViewerObject : public LLPrimitive, public LLRefCount, public LLGLUpdate
 	/*virtual*/	void	setTE(const U8 te, const LLTextureEntry &texture_entry);
 	/*virtual*/ S32		setTETexture(const U8 te, const LLUUID &uuid);
 	S32 setTETextureCore(const U8 te, const LLUUID& uuid, LLHost host);
+	S32 setTETextureCore(const U8 te, const LLUUID& uuid, const std::string &url );
 	/*virtual*/ S32		setTEColor(const U8 te, const LLColor3 &color);
 	/*virtual*/ S32		setTEColor(const U8 te, const LLColor4 &color);
 	/*virtual*/ S32		setTEScale(const U8 te, const F32 s, const F32 t);
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 531d3b49405..d48d79f8079 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -2370,6 +2370,17 @@ S32 LLVOAvatar::setTETexture(const U8 te, const LLUUID& uuid)
 	// to redirect certain avatar texture requests to different sims.
 	if (isIndexBakedTexture((ETextureIndex)te))
 	{
+		std::string url = gSavedSettings.getString("AgentAppearanceServiceURL");
+		if (LLAppearanceMgr::instance().useServerTextureBaking() && !url.empty())
+		{
+			const LLVOAvatarDictionary::TextureEntry* texture_entry = LLVOAvatarDictionary::getInstance()->getTexture((ETextureIndex)te);
+			if (texture_entry != NULL)
+			{
+				url += "texture/" + getID().asString() + "/" + texture_entry->mDefaultImageName + "/" + uuid.asString();
+				return setTETextureCore(te, uuid, url);
+			}
+		}
+
 		LLHost target_host = getObjectHost();
 		return setTETextureCore(te, uuid, target_host);
 	}
@@ -4669,7 +4680,10 @@ void LLVOAvatar::addBakedTextureStats( LLViewerFetchedTexture* imagep, F32 pixel
 	//the texture pipeline will stop fetching this texture.
 
 	imagep->resetTextureStats();
-	imagep->setCanUseHTTP(false) ; //turn off http fetching for baked textures.
+	if (!LLAppearanceMgr::instance().useServerTextureBaking())
+	{
+		imagep->setCanUseHTTP(false); //turn off http fetching for baked textures.
+	}
 	imagep->setMaxVirtualSizeResetInterval(MAX_TEXTURE_VIRTURE_SIZE_RESET_INTERVAL);
 	imagep->resetMaxVirtualSizeResetCounter() ;
 
@@ -7294,7 +7308,7 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 
 //	llinfos << "LLVOAvatar::processAvatarAppearance()" << llendl;
 //	dumpAvatarTEs( "PRE  processAvatarAppearance()" );
-	unpackTEMessage(mesgsys, _PREHASH_ObjectData, LLAppearanceMgr::instance().useServerTextureBaking());
+	unpackTEMessage(mesgsys, _PREHASH_ObjectData, FALSE);
 //	dumpAvatarTEs( "POST processAvatarAppearance()" );
 
 	// prevent the overwriting of valid baked textures with invalid baked textures
diff --git a/indra/newview/llvoavatardefines.cpp b/indra/newview/llvoavatardefines.cpp
index 1ed4e3b61c3..ef96a9e9235 100644
--- a/indra/newview/llvoavatardefines.cpp
+++ b/indra/newview/llvoavatardefines.cpp
@@ -66,12 +66,12 @@ LLVOAvatarDictionary::Textures::Textures()
 	addEntry(TEX_UPPER_TATTOO,                new TextureEntry("upper_tattoo",     TRUE,  BAKED_NUM_INDICES, "",     LLWearableType::WT_TATTOO));
 	addEntry(TEX_LOWER_TATTOO,                new TextureEntry("lower_tattoo",     TRUE,  BAKED_NUM_INDICES, "",     LLWearableType::WT_TATTOO));
 
-	addEntry(TEX_HEAD_BAKED,                  new TextureEntry("head-baked",       FALSE, BAKED_HEAD));
-	addEntry(TEX_UPPER_BAKED,                 new TextureEntry("upper-baked",      FALSE, BAKED_UPPER));
-	addEntry(TEX_LOWER_BAKED,                 new TextureEntry("lower-baked",      FALSE, BAKED_LOWER));
-	addEntry(TEX_EYES_BAKED,                  new TextureEntry("eyes-baked",       FALSE, BAKED_EYES));
-	addEntry(TEX_HAIR_BAKED,                  new TextureEntry("hair-baked",       FALSE, BAKED_HAIR));
-	addEntry(TEX_SKIRT_BAKED,                 new TextureEntry("skirt-baked",      FALSE, BAKED_SKIRT));
+	addEntry(TEX_HEAD_BAKED,                  new TextureEntry("head-baked",       FALSE, BAKED_HEAD, "head"));
+	addEntry(TEX_UPPER_BAKED,                 new TextureEntry("upper-baked",      FALSE, BAKED_UPPER, "upper"));
+	addEntry(TEX_LOWER_BAKED,                 new TextureEntry("lower-baked",      FALSE, BAKED_LOWER, "lower"));
+	addEntry(TEX_EYES_BAKED,                  new TextureEntry("eyes-baked",       FALSE, BAKED_EYES, "eyes"));
+	addEntry(TEX_HAIR_BAKED,                  new TextureEntry("hair-baked",       FALSE, BAKED_HAIR, "hair"));
+	addEntry(TEX_SKIRT_BAKED,                 new TextureEntry("skirt-baked",      FALSE, BAKED_SKIRT, "skirt"));
 }
 
 LLVOAvatarDictionary::BakedTextures::BakedTextures()
-- 
GitLab


From cb2b59b48b6cf8aeb17f5b0f9f4063e8340ce144 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Tue, 10 Jul 2012 00:42:10 +0000
Subject: [PATCH 017/436] Added new settings: DisableAllRenderTypes,
 DisableAllRenderFeatures, and MaxFPS.

---
 indra/newview/app_settings/settings.xml | 33 +++++++++++++++++++
 indra/newview/llappviewer.cpp           | 20 ++++++++++++
 indra/newview/llappviewer.h             |  1 +
 indra/newview/llviewerdisplay.cpp       |  2 +-
 indra/newview/pipeline.cpp              | 42 ++++++++++++++++++++-----
 indra/newview/pipeline.h                |  5 ++-
 6 files changed, 93 insertions(+), 10 deletions(-)

diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 5e50bd6e012..dde423f86c4 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -8705,6 +8705,28 @@
       <key>Value</key>
       <integer>1</integer>
     </map>
+    <key>DisableAllRenderTypes</key>
+    <map>
+      <key>Comment</key>
+      <string>Disables all rendering types.</string>
+      <key>Persist</key>
+      <integer>0</integer>
+      <key>Type</key>
+      <string>Boolean</string>
+      <key>Value</key>
+      <integer>0</integer>
+    </map>
+    <key>DisableAllRenderFeatures</key>
+    <map>
+      <key>Comment</key>
+      <string>Disables all rendering features.</string>
+      <key>Persist</key>
+      <integer>0</integer>
+      <key>Type</key>
+      <string>Boolean</string>
+      <key>Value</key>
+      <integer>0</integer>
+    </map>
     <key>RenderHUDInSnapshot</key>
     <map>
       <key>Comment</key>
@@ -13010,6 +13032,17 @@
       <key>Value</key>
       <integer>-1</integer>
     </map>
+    <key>MaxFPS</key>
+    <map>
+      <key>Comment</key>
+      <string>Yield some time to the local host if we reach a threshold framerate.</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>F32</string>
+      <key>Value</key>
+      <integer>-1.0</integer>
+    </map>
     <key>ZoomDirect</key>
     <map>
       <key>Comment</key>
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index efa24796e58..f01f62c798a 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -632,6 +632,7 @@ LLAppViewer::LLAppViewer() :
 	mQuitRequested(false),
 	mLogoutRequestSent(false),
 	mYieldTime(-1),
+	mMinFrameTime(-1.0),
 	mMainloopTimeout(NULL),
 	mAgentRegionLastAlive(false),
 	mRandomizeFramerate(LLCachedControl<bool>(gSavedSettings,"Randomize Framerate", FALSE)),
@@ -1465,6 +1466,19 @@ bool LLAppViewer::mainLoop()
 				{
 					gFrameStalls++;
 				}
+
+				// Limit FPS
+				if (mMinFrameTime > F_APPROXIMATELY_ZERO)
+				{
+					// Sleep a while to limit frame rate.
+					S32 milliseconds_to_sleep = llclamp((S32)((mMinFrameTime - frameTimer.getElapsedTimeF64()) * 1000.f), 0, 1000);
+					if (milliseconds_to_sleep > 0)
+					{
+						LLFastTimer t(FTM_YIELD);
+						ms_sleep(milliseconds_to_sleep);
+					}
+				}
+
 				frameTimer.reset();
 
 				resumeMainloopTimeout();
@@ -2577,6 +2591,12 @@ bool LLAppViewer::initConfiguration()
 	}
 
     mYieldTime = gSavedSettings.getS32("YieldTime");
+	mMinFrameTime = -1.0f;
+	F32 max_fps = gSavedSettings.getF32("MaxFPS");
+	if (max_fps > F_APPROXIMATELY_ZERO)
+	{
+		mMinFrameTime = 1.0f / max_fps;
+	}
 
 	// Read skin/branding settings if specified.
 	//if (! gDirUtilp->getSkinDir().empty() )
diff --git a/indra/newview/llappviewer.h b/indra/newview/llappviewer.h
index ae3c795d1e2..f55954234fb 100644
--- a/indra/newview/llappviewer.h
+++ b/indra/newview/llappviewer.h
@@ -254,6 +254,7 @@ class LLAppViewer : public LLApp
     bool mQuitRequested;				// User wants to quit, may have modified documents open.
     bool mLogoutRequestSent;			// Disconnect message sent to simulator, no longer safe to send messages to the sim.
     S32 mYieldTime;
+	F32 mMinFrameTime;
 	struct SettingsFiles* mSettingsLocationList;
 
 	LLWatchdogTimeout* mMainloopTimeout;
diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp
index 4571d08050f..e4451c3c93e 100644
--- a/indra/newview/llviewerdisplay.cpp
+++ b/indra/newview/llviewerdisplay.cpp
@@ -1042,7 +1042,7 @@ void render_hud_attachments()
 		gPipeline.pushRenderTypeMask();
 		
 		// turn off everything
-		gPipeline.andRenderTypeMask(LLPipeline::END_RENDER_TYPES);
+		gPipeline.clearAllRenderTypes();
 		// turn on HUD
 		gPipeline.toggleRenderType(LLPipeline::RENDER_TYPE_HUD);
 		// turn on HUD particles
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index de72d790430..cd4c7289a76 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -471,19 +471,29 @@ void LLPipeline::init()
 	LLViewerStats::getInstance()->mTrianglesDrawnStat.reset();
 	resetFrameStats();
 
-	for (U32 i = 0; i < NUM_RENDER_TYPES; ++i)
+	if (gSavedSettings.getBOOL("DisableAllRenderFeatures"))
 	{
-		mRenderTypeEnabled[i] = TRUE; //all rendering types start enabled
+		mRenderDebugFeatureMask = 0x0;
+	}
+	else
+	{
+		mRenderDebugFeatureMask = 0xffffffff; // By default, all debugging features on
 	}
-
-	mRenderDebugFeatureMask = 0xffffffff; // All debugging features on
 	mRenderDebugMask = 0;	// All debug starts off
 
-	// Don't turn on ground when this is set
-	// Mac Books with intel 950s need this
-	if(!gSavedSettings.getBOOL("RenderGround"))
+	if (gSavedSettings.getBOOL("DisableAllRenderTypes"))
 	{
-		toggleRenderType(RENDER_TYPE_GROUND);
+		clearAllRenderTypes();
+	}
+	else
+	{
+		setAllRenderTypes(); // By default, all rendering types start enabled
+		// Don't turn on ground when this is set
+		// Mac Books with intel 950s need this
+		if(!gSavedSettings.getBOOL("RenderGround"))
+		{
+			toggleRenderType(RENDER_TYPE_GROUND);
+		}
 	}
 
 	// make sure RenderPerformanceTest persists (hackity hack hack)
@@ -9945,6 +9955,22 @@ void LLPipeline::clearRenderTypeMask(U32 type, ...)
 	}
 }
 
+void LLPipeline::setAllRenderTypes()
+{
+	for (U32 i = 0; i < NUM_RENDER_TYPES; ++i)
+	{
+		mRenderTypeEnabled[i] = TRUE;
+	}
+}
+
+void LLPipeline::clearAllRenderTypes()
+{
+	for (U32 i = 0; i < NUM_RENDER_TYPES; ++i)
+	{
+		mRenderTypeEnabled[i] = FALSE;
+	}
+}
+
 void LLPipeline::addDebugBlip(const LLVector3& position, const LLColor4& color)
 {
 	DebugBlip blip(position, color);
diff --git a/indra/newview/pipeline.h b/indra/newview/pipeline.h
index 6ae482fa06c..3536746eb1c 100644
--- a/indra/newview/pipeline.h
+++ b/indra/newview/pipeline.h
@@ -311,9 +311,12 @@ class LLPipeline
 	BOOL hasAnyRenderType(const U32 type, ...) const;
 
 	void setRenderTypeMask(U32 type, ...);
-	void orRenderTypeMask(U32 type, ...);
+	// This is equivalent to 'setRenderTypeMask'
+	//void orRenderTypeMask(U32 type, ...);
 	void andRenderTypeMask(U32 type, ...);
 	void clearRenderTypeMask(U32 type, ...);
+	void setAllRenderTypes();
+	void clearAllRenderTypes();
 	
 	void pushRenderTypeMask();
 	void popRenderTypeMask();
-- 
GitLab


From a589bc99701d6258d3dd467a5d36fb989348a758 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Wed, 11 Jul 2012 00:30:04 +0000
Subject: [PATCH 018/436] Added LLPipeline eventhost API.  Added
 ForcePeriodicRenderingTime setting.

---
 indra/newview/CMakeLists.txt            |   2 +
 indra/newview/app_settings/settings.xml |  11 ++
 indra/newview/llappviewer.cpp           |  47 ++++--
 indra/newview/llappviewer.h             |   2 -
 indra/newview/llpipelinelistener.cpp    | 216 ++++++++++++++++++++++++
 indra/newview/llpipelinelistener.h      |  41 +++++
 indra/newview/llviewermenu.h            |   5 +
 indra/newview/pipeline.cpp              |  25 ++-
 indra/newview/pipeline.h                |  10 +-
 9 files changed, 337 insertions(+), 22 deletions(-)
 create mode 100644 indra/newview/llpipelinelistener.cpp
 create mode 100644 indra/newview/llpipelinelistener.h

diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 9783601696f..5a1055319a8 100755
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -418,6 +418,7 @@ set(viewer_SOURCE_FILES
     llpatchvertexarray.cpp
     llphysicsmotion.cpp
     llphysicsshapebuilderutil.cpp
+    llpipelinelistener.cpp
     llplacesinventorybridge.cpp
     llplacesinventorypanel.cpp
     llpopupview.cpp
@@ -967,6 +968,7 @@ set(viewer_HEADER_FILES
     llpatchvertexarray.h
     llphysicsmotion.h
     llphysicsshapebuilderutil.h
+    llpipelinelistener.h
     llplacesinventorybridge.h
     llplacesinventorypanel.h
     llpolymesh.h
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index dde423f86c4..8c82b761bbf 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -13043,6 +13043,17 @@
       <key>Value</key>
       <integer>-1.0</integer>
     </map>
+    <key>ForcePeriodicRenderingTime</key>
+    <map>
+      <key>Comment</key>
+      <string>Periodically enable all rendering masks for a single frame.</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>F32</string>
+      <key>Value</key>
+      <integer>-1.0</integer>
+    </map>
     <key>ZoomDirect</key>
     <map>
       <key>Comment</key>
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index f01f62c798a..f5dce587589 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -631,8 +631,6 @@ LLAppViewer::LLAppViewer() :
 	mForceGraphicsDetail(false),
 	mQuitRequested(false),
 	mLogoutRequestSent(false),
-	mYieldTime(-1),
-	mMinFrameTime(-1.0),
 	mMainloopTimeout(NULL),
 	mAgentRegionLastAlive(false),
 	mRandomizeFramerate(LLCachedControl<bool>(gSavedSettings,"Randomize Framerate", FALSE)),
@@ -1200,7 +1198,7 @@ bool LLAppViewer::mainLoop()
 	LLVoiceChannel::initClass();
 	LLVoiceClient::getInstance()->init(gServicePump);
 	LLVoiceChannel::setCurrentVoiceChannelChangedCallback(boost::bind(&LLCallFloater::sOnCurrentChannelChanged, _1), true);
-	LLTimer frameTimer,idleTimer;
+	LLTimer frameTimer,idleTimer,periodicRenderingTimer;
 	LLTimer debugTime;
 	LLViewerJoystick* joystick(LLViewerJoystick::getInstance());
 	joystick->setNeedsReset(true);
@@ -1212,6 +1210,8 @@ bool LLAppViewer::mainLoop()
     // point of posting.
     LLSD newFrame;
 
+	BOOL restore_rendering_masks = FALSE;
+
 	//LLPrivateMemoryPoolTester::getInstance()->run(false) ;
 	//LLPrivateMemoryPoolTester::getInstance()->run(true) ;
 	//LLPrivateMemoryPoolTester::destroy() ;
@@ -1229,6 +1229,28 @@ bool LLAppViewer::mainLoop()
 		
 		try
 		{
+			// Check if we need to restore rendering masks.
+			if (restore_rendering_masks)
+			{
+				gPipeline.popRenderDebugFeatureMask();
+				gPipeline.popRenderTypeMask();
+			}
+			// Check if we need to temporarily enable rendering.
+			F32 periodic_rendering = gSavedSettings.getF32("ForcePeriodicRenderingTime");
+			if (periodic_rendering > F_APPROXIMATELY_ZERO && periodicRenderingTimer.getElapsedTimeF64() > periodic_rendering)
+			{
+				periodicRenderingTimer.reset();
+				restore_rendering_masks = TRUE;
+				gPipeline.pushRenderTypeMask();
+				gPipeline.pushRenderDebugFeatureMask();
+				gPipeline.setAllRenderTypes();
+				gPipeline.setAllRenderDebugFeatures();
+			}
+			else
+			{
+				restore_rendering_masks = FALSE;
+			}
+
 			pingMainloopTimeout("Main:MiscNativeWindowEvents");
 
 			if (gViewerWindow)
@@ -1351,10 +1373,11 @@ bool LLAppViewer::mainLoop()
 				LLFastTimer t2(FTM_SLEEP);
 				
 				// yield some time to the os based on command line option
-				if(mYieldTime >= 0)
+				S32 yield_time = gSavedSettings.getS32("YieldTime");
+				if(yield_time >= 0)
 				{
 					LLFastTimer t(FTM_YIELD);
-					ms_sleep(mYieldTime);
+					ms_sleep(yield_time);
 				}
 
 				// yield cooperatively when not running as foreground window
@@ -1468,10 +1491,12 @@ bool LLAppViewer::mainLoop()
 				}
 
 				// Limit FPS
-				if (mMinFrameTime > F_APPROXIMATELY_ZERO)
+				F32 max_fps = gSavedSettings.getF32("MaxFPS");
+				if (max_fps > F_APPROXIMATELY_ZERO)
 				{
 					// Sleep a while to limit frame rate.
-					S32 milliseconds_to_sleep = llclamp((S32)((mMinFrameTime - frameTimer.getElapsedTimeF64()) * 1000.f), 0, 1000);
+					F32 min_frame_time = 1.f / max_fps;
+					S32 milliseconds_to_sleep = llclamp((S32)((min_frame_time - frameTimer.getElapsedTimeF64()) * 1000.f), 0, 1000);
 					if (milliseconds_to_sleep > 0)
 					{
 						LLFastTimer t(FTM_YIELD);
@@ -2590,14 +2615,6 @@ bool LLAppViewer::initConfiguration()
 		}
 	}
 
-    mYieldTime = gSavedSettings.getS32("YieldTime");
-	mMinFrameTime = -1.0f;
-	F32 max_fps = gSavedSettings.getF32("MaxFPS");
-	if (max_fps > F_APPROXIMATELY_ZERO)
-	{
-		mMinFrameTime = 1.0f / max_fps;
-	}
-
 	// Read skin/branding settings if specified.
 	//if (! gDirUtilp->getSkinDir().empty() )
 	//{
diff --git a/indra/newview/llappviewer.h b/indra/newview/llappviewer.h
index f55954234fb..043893020b1 100644
--- a/indra/newview/llappviewer.h
+++ b/indra/newview/llappviewer.h
@@ -253,8 +253,6 @@ class LLAppViewer : public LLApp
 
     bool mQuitRequested;				// User wants to quit, may have modified documents open.
     bool mLogoutRequestSent;			// Disconnect message sent to simulator, no longer safe to send messages to the sim.
-    S32 mYieldTime;
-	F32 mMinFrameTime;
 	struct SettingsFiles* mSettingsLocationList;
 
 	LLWatchdogTimeout* mMainloopTimeout;
diff --git a/indra/newview/llpipelinelistener.cpp b/indra/newview/llpipelinelistener.cpp
new file mode 100644
index 00000000000..20759239bf5
--- /dev/null
+++ b/indra/newview/llpipelinelistener.cpp
@@ -0,0 +1,216 @@
+/**
+ * @file   llpipelinelistener.h
+ * @author Don Kjer
+ * @date   2012-07-09
+ * @brief  Implementation for LLPipelineListener
+ * 
+ * $LicenseInfo:firstyear=2012&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2012, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+// Precompiled header
+#include "llviewerprecompiledheaders.h"
+
+#include "llpipelinelistener.h"
+
+#include "pipeline.h"
+#include "stringize.h"
+#include <sstream>
+#include "llviewermenu.h"
+
+
+namespace {
+	// Render Types
+	void toggle_render_types_wrapper(LLSD const& request)
+	{
+		for (LLSD::array_const_iterator iter = request["types"].beginArray();
+			iter != request["types"].endArray();
+			++iter)
+		{
+			U32 render_type = render_type_from_string( iter->asString() );
+			if ( render_type != 0 )
+			{
+				LLPipeline::toggleRenderTypeControl( (void*) render_type );
+			}
+		}
+	}
+
+	void has_render_type_wrapper(LLSD const& request)
+	{
+		LLEventAPI::Response response(LLSD(), request);
+		U32 render_type = render_type_from_string( request["type"].asString() );
+		if ( render_type != 0 )
+		{
+			response["value"] = LLPipeline::hasRenderTypeControl( (void*) render_type );
+		}
+		else
+		{
+			response.error(STRINGIZE("unknown type '" << request["type"].asString() << "'"));
+		}
+	}
+
+	void disable_all_render_types_wrapper(LLSD const& request)
+	{
+		gPipeline.clearAllRenderTypes();
+	}
+
+	void enable_all_render_types_wrapper(LLSD const& request)
+	{
+		gPipeline.setAllRenderTypes();
+	}
+
+	// Render Features
+	void toggle_render_features_wrapper(LLSD const& request)
+	{
+		for (LLSD::array_const_iterator iter = request["features"].beginArray();
+			iter != request["features"].endArray();
+			++iter)
+		{
+			U32 render_feature = feature_from_string( iter->asString() );
+			if ( render_feature != 0 )
+			{
+				LLPipeline::toggleRenderDebugControl( (void*) render_feature );
+			}
+		}
+	}
+
+	void has_render_feature_wrapper(LLSD const& request)
+	{
+		LLEventAPI::Response response(LLSD(), request);
+		U32 render_feature = feature_from_string( request["feature"].asString() );
+		if ( render_feature != 0 )
+		{
+			response["value"] = gPipeline.hasRenderDebugFeatureMask(render_feature);
+		}
+		else
+		{
+			response.error(STRINGIZE("unknown feature '" << request["feature"].asString() << "'"));
+		}
+	}
+
+	void disable_all_render_features_wrapper(LLSD const& request)
+	{
+		gPipeline.clearAllRenderDebugFeatures();
+	}
+
+	void enable_all_render_features_wrapper(LLSD const& request)
+	{
+		gPipeline.setAllRenderDebugFeatures();
+	}
+
+	// Render Info Displays
+	void toggle_info_displays_wrapper(LLSD const& request)
+	{
+		for (LLSD::array_const_iterator iter = request["displays"].beginArray();
+			iter != request["displays"].endArray();
+			++iter)
+		{
+			U32 info_display = info_display_from_string( iter->asString() );
+			if ( info_display != 0 )
+			{
+				LLPipeline::toggleRenderDebug( (void*) info_display );
+			}
+		}
+	}
+
+	void has_info_display_wrapper(LLSD const& request)
+	{
+		LLEventAPI::Response response(LLSD(), request);
+		U32 info_display = info_display_from_string( request["display"].asString() );
+		if ( info_display != 0 )
+		{
+			response["value"] = gPipeline.hasRenderDebugMask(info_display);
+		}
+		else
+		{
+			response.error(STRINGIZE("unknown display '" << request["display"].asString() << "'"));
+		}
+	}
+
+	void disable_all_info_displays_wrapper(LLSD const& request)
+	{
+		gPipeline.clearAllRenderDebugDisplays();
+	}
+
+	void enable_all_info_displays_wrapper(LLSD const& request)
+	{
+		gPipeline.setAllRenderDebugDisplays();
+	}
+
+}
+
+
+LLPipelineListener::LLPipelineListener():
+	LLEventAPI("LLPipeline",
+			   "API to te rendering pipeline.")
+{
+	// Render Types
+	add("toggleRenderTypes",
+		"Toggle rendering [\"types\"]:\n"
+		"See: llviewermenu.cpp:render_type_from_string for list of available types.",
+		&toggle_render_types_wrapper);
+	add("hasRenderType",
+		"Check if rendering [\"type\"] is enabled:\n"
+		"See: llviewermenu.cpp:render_type_from_string for list of available types.",
+		&has_render_type_wrapper,
+		LLSDMap("reply", LLSD()));
+	add("disableAllRenderTypes",
+		"Turn off all rendering types.",
+		&disable_all_render_types_wrapper);
+	add("enableAllRenderTypes",
+		"Turn on all rendering types.",
+		&enable_all_render_types_wrapper);
+
+	// Render Features
+	add("toggleRenderFeatures",
+		"Toggle rendering [\"features\"]:\n"
+		"See: llviewermenu.cpp:feature_from_string for list of available features.",
+		&toggle_render_features_wrapper);
+	add("hasRenderFeature",
+		"Check if rendering [\"feature\"] is enabled:\n"
+		"See: llviewermenu.cpp:render_feature_from_string for list of available features.",
+		&has_render_feature_wrapper,
+		LLSDMap("reply", LLSD()));
+	add("disableAllRenderFeatures",
+		"Turn off all rendering features.",
+		&disable_all_render_features_wrapper);
+	add("enableAllRenderFeatures",
+		"Turn on all rendering features.",
+		&enable_all_render_features_wrapper);
+
+	// Render Info Displays
+	add("toggleRenderInfoDisplays",
+		"Toggle info [\"displays\"]:\n"
+		"See: llviewermenu.cpp:info_display_from_string for list of available displays.",
+		&toggle_info_displays_wrapper);
+	add("hasRenderInfoDisplay",
+		"Check if info [\"display\"] is enabled:\n"
+		"See: llviewermenu.cpp:info_display_from_string for list of available displays.",
+		&has_info_display_wrapper,
+		LLSDMap("reply", LLSD()));
+	add("disableAllRenderInfoDisplays",
+		"Turn off all info displays.",
+		&disable_all_info_displays_wrapper);
+	add("enableAllRenderInfoDisplays",
+		"Turn on all info displays.",
+		&enable_all_info_displays_wrapper);
+}
+
diff --git a/indra/newview/llpipelinelistener.h b/indra/newview/llpipelinelistener.h
new file mode 100644
index 00000000000..da1898e57b6
--- /dev/null
+++ b/indra/newview/llpipelinelistener.h
@@ -0,0 +1,41 @@
+/**
+ * @file   llpipelinelistener.h
+ * @author Don Kjer
+ * @date   2012-07-09
+ * @brief  Wrap subset of LLPipeline API in event API
+ * 
+ * $LicenseInfo:firstyear=2012&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+#if ! defined(LL_LLPIPELINELISTENER_H)
+#define LL_LLPIPELINELISTENER_H
+
+#include "lleventapi.h"
+
+/// Listen on an LLEventPump with specified name for LLPipeline request events.
+class LLPipelineListener: public LLEventAPI
+{
+public:
+	LLPipelineListener();
+};
+
+#endif /* ! defined(LL_LLPIPELINELISTENER_H) */
diff --git a/indra/newview/llviewermenu.h b/indra/newview/llviewermenu.h
index 8c40762865e..c809ebde438 100644
--- a/indra/newview/llviewermenu.h
+++ b/indra/newview/llviewermenu.h
@@ -130,6 +130,11 @@ bool handle_go_to();
 // Export to XML or Collada
 void handle_export_selected( void * );
 
+// Convert strings to internal types
+U32 render_type_from_string(std::string render_type);
+U32 feature_from_string(std::string feature);
+U32 info_display_from_string(std::string info_display);
+
 class LLViewerMenuHolderGL : public LLMenuHolderGL
 {
 public:
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index cd4c7289a76..72cc6bfcd4f 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -72,6 +72,7 @@
 #include "llhudtext.h"
 #include "lllightconstants.h"
 #include "llmeshrepository.h"
+#include "llpipelinelistener.h"
 #include "llresmgr.h"
 #include "llselectmgr.h"
 #include "llsky.h"
@@ -368,6 +369,8 @@ BOOL    LLPipeline::sMemAllocationThrottled = FALSE;
 S32		LLPipeline::sVisibleLightCount = 0;
 F32		LLPipeline::sMinRenderSize = 0.f;
 
+// EventHost API LLPipeline listener.
+static LLPipelineListener sPipelineListener;
 
 static LLCullResult* sCull = NULL;
 
@@ -473,13 +476,13 @@ void LLPipeline::init()
 
 	if (gSavedSettings.getBOOL("DisableAllRenderFeatures"))
 	{
-		mRenderDebugFeatureMask = 0x0;
+		clearAllRenderDebugFeatures();
 	}
 	else
 	{
-		mRenderDebugFeatureMask = 0xffffffff; // By default, all debugging features on
+		setAllRenderDebugFeatures(); // By default, all debugging features on
 	}
-	mRenderDebugMask = 0;	// All debug starts off
+	clearAllRenderDebugDisplays(); // All debug displays off
 
 	if (gSavedSettings.getBOOL("DisableAllRenderTypes"))
 	{
@@ -6008,6 +6011,22 @@ void LLPipeline::setRenderDebugFeatureControl(U32 bit, bool value)
 	}
 }
 
+void LLPipeline::pushRenderDebugFeatureMask()
+{
+	mRenderDebugFeatureStack.push(mRenderDebugFeatureMask);
+}
+
+void LLPipeline::popRenderDebugFeatureMask()
+{
+	if (mRenderDebugFeatureStack.empty())
+	{
+		llerrs << "Depleted render feature stack." << llendl;
+	}
+
+	mRenderDebugFeatureMask = mRenderDebugFeatureStack.top();
+	mRenderDebugFeatureStack.pop();
+}
+
 // static
 void LLPipeline::setRenderScriptedBeacons(BOOL val)
 {
diff --git a/indra/newview/pipeline.h b/indra/newview/pipeline.h
index 3536746eb1c..16610b8c68b 100644
--- a/indra/newview/pipeline.h
+++ b/indra/newview/pipeline.h
@@ -304,8 +304,10 @@ class LLPipeline
 
 	BOOL hasRenderDebugFeatureMask(const U32 mask) const	{ return (mRenderDebugFeatureMask & mask) ? TRUE : FALSE; }
 	BOOL hasRenderDebugMask(const U32 mask) const			{ return (mRenderDebugMask & mask) ? TRUE : FALSE; }
-	
-
+	void setAllRenderDebugFeatures() { mRenderDebugFeatureMask = 0xffffffff; }
+	void clearAllRenderDebugFeatures() { mRenderDebugFeatureMask = 0x0; }
+	void setAllRenderDebugDisplays() { mRenderDebugMask = 0xffffffff; }
+	void clearAllRenderDebugDisplays() { mRenderDebugMask = 0x0; }
 
 	BOOL hasRenderType(const U32 type) const;
 	BOOL hasAnyRenderType(const U32 type, ...) const;
@@ -321,6 +323,9 @@ class LLPipeline
 	void pushRenderTypeMask();
 	void popRenderTypeMask();
 
+	void pushRenderDebugFeatureMask();
+	void popRenderDebugFeatureMask();
+
 	static void toggleRenderType(U32 type);
 
 	// For UI control of render features
@@ -609,6 +614,7 @@ class LLPipeline
 
 	U32						mRenderDebugFeatureMask;
 	U32						mRenderDebugMask;
+	std::stack<U32>			mRenderDebugFeatureStack;
 
 	U32						mOldRenderDebugMask;
 	
-- 
GitLab


From 64ad1aba304c50173195e15477c1882c5b6e7d37 Mon Sep 17 00:00:00 2001
From: "Nyx (Neal Orman)" <nyx@lindenlab.com>
Date: Wed, 11 Jul 2012 18:30:39 -0400
Subject: [PATCH 019/436] SH-3258 WIP initial work: refactoring appearance
 editing mode

Added flags for appearance editing status as well as which textures we should be using at a time.

Also refactored so we are not using camera state to track appearance editing mode.

Need to add more handling for which textures we actually use.
---
 indra/newview/llagentcamera.cpp         | 36 ++++++++++---------------
 indra/newview/llmorphview.cpp           |  2 --
 indra/newview/llsidepanelappearance.cpp | 32 +++++++++-------------
 indra/newview/llvoavatar.cpp            | 12 +++------
 indra/newview/llvoavatar.h              |  2 ++
 indra/newview/llvoavatarself.cpp        | 29 ++++++++++++++++----
 indra/newview/llvoavatarself.h          |  4 +--
 7 files changed, 57 insertions(+), 60 deletions(-)

diff --git a/indra/newview/llagentcamera.cpp b/indra/newview/llagentcamera.cpp
index 751b73e1eb0..a544909e661 100644
--- a/indra/newview/llagentcamera.cpp
+++ b/indra/newview/llagentcamera.cpp
@@ -2251,7 +2251,7 @@ void LLAgentCamera::changeCameraToThirdPerson(BOOL animate)
 //-----------------------------------------------------------------------------
 void LLAgentCamera::changeCameraToCustomizeAvatar()
 {
-	if (LLViewerJoystick::getInstance()->getOverrideCamera())
+	if (LLViewerJoystick::getInstance()->getOverrideCamera() || !isAgentAvatarValid())
 	{
 		return;
 	}
@@ -2275,29 +2275,21 @@ void LLAgentCamera::changeCameraToCustomizeAvatar()
 		gFocusMgr.setKeyboardFocus( NULL );
 		gFocusMgr.setMouseCapture( NULL );
 
-		LLVOAvatarSelf::onCustomizeStart();
-
-		if (isAgentAvatarValid())
-		{
-			// Remove any pitch or rotation from the avatar
-			LLVector3 at = gAgent.getAtAxis();
-			at.mV[VZ] = 0.f;
-			at.normalize();
-			gAgent.resetAxes(at);
-
-			gAgent.sendAnimationRequest(ANIM_AGENT_CUSTOMIZE, ANIM_REQUEST_START);
-			gAgent.setCustomAnim(TRUE);
-			gAgentAvatarp->startMotion(ANIM_AGENT_CUSTOMIZE);
-			LLMotion* turn_motion = gAgentAvatarp->findMotion(ANIM_AGENT_CUSTOMIZE);
+		// Remove any pitch or rotation from the avatar
+		LLVector3 at = gAgent.getAtAxis();
+		at.mV[VZ] = 0.f;
+		at.normalize();
+		gAgent.resetAxes(at);
 
-			if (turn_motion)
-			{
-				// delay camera animation long enough to play through turn animation
-				setAnimationDuration(turn_motion->getDuration() + CUSTOMIZE_AVATAR_CAMERA_ANIM_SLOP);
-			}
+		gAgent.sendAnimationRequest(ANIM_AGENT_CUSTOMIZE, ANIM_REQUEST_START);
+		gAgent.setCustomAnim(TRUE);
+		gAgentAvatarp->startMotion(ANIM_AGENT_CUSTOMIZE);
+		LLMotion* turn_motion = gAgentAvatarp->findMotion(ANIM_AGENT_CUSTOMIZE);
 
-			gAgentAvatarp->invalidateAll();
-			gAgentAvatarp->updateMeshTextures();
+		if (turn_motion)
+		{
+			// delay camera animation long enough to play through turn animation
+			setAnimationDuration(turn_motion->getDuration() + CUSTOMIZE_AVATAR_CAMERA_ANIM_SLOP);
 		}
 	}
 
diff --git a/indra/newview/llmorphview.cpp b/indra/newview/llmorphview.cpp
index eaa044cb593..252d1b78ea0 100644
--- a/indra/newview/llmorphview.cpp
+++ b/indra/newview/llmorphview.cpp
@@ -99,8 +99,6 @@ void	LLMorphView::initialize()
 //-----------------------------------------------------------------------------
 void	LLMorphView::shutdown()
 {
-	LLVOAvatarSelf::onCustomizeEnd();
-
 	if (isAgentAvatarValid())
 	{
 		gAgentAvatarp->startMotion( ANIM_AGENT_BODY_NOISE );
diff --git a/indra/newview/llsidepanelappearance.cpp b/indra/newview/llsidepanelappearance.cpp
index 853656905c9..92674445349 100644
--- a/indra/newview/llsidepanelappearance.cpp
+++ b/indra/newview/llsidepanelappearance.cpp
@@ -206,12 +206,9 @@ void LLSidepanelAppearance::updateToVisibility(const LLSD &new_visibility)
 			}
 			// Disable camera switch is currently just for WT_PHYSICS type since we don't want to freeze the avatar
 			// when editing its physics.
-			const BOOL disable_camera_motion = LLWearableType::getDisableCameraSwitch(wearable_ptr->getType());
-			if (!gAgentCamera.cameraCustomizeAvatar() && 
-				!disable_camera_motion &&
-				gSavedSettings.getBOOL("AppearanceCameraMovement"))
+			if (!gAgentCamera.cameraCustomizeAvatar())
 			{
-				gAgentCamera.changeCameraToCustomizeAvatar();
+				LLVOAvatarSelf::onCustomizeStart(LLWearableType::getDisableCameraSwitch(wearable_ptr->getType()));
 			}
 			if (is_wearable_edit_visible)
 			{
@@ -283,7 +280,7 @@ void LLSidepanelAppearance::onEditAppearanceButtonClicked()
 {
 	if (gAgentWearables.areWearablesLoaded())
 	{
-		gAgentCamera.changeCameraToCustomizeAvatar();
+		LLVOAvatarSelf::onCustomizeStart();
 	}
 }
 
@@ -371,15 +368,14 @@ void LLSidepanelAppearance::toggleOutfitEditPanel(BOOL visible, BOOL disable_cam
 	if (visible)
 	{
 		mOutfitEdit->onOpen(LLSD());
-		if (!disable_camera_switch && gSavedSettings.getBOOL("AppearanceCameraMovement") )
-		{
-			gAgentCamera.changeCameraToCustomizeAvatar();
-		}
+		LLVOAvatarSelf::onCustomizeStart(disable_camera_switch);
 	}
-	else if (!disable_camera_switch && gSavedSettings.getBOOL("AppearanceCameraMovement") )
+	else 
 	{
-		gAgentCamera.changeCameraToDefault();
-		gAgentCamera.resetView();
+		if (!disable_camera_switch)   // if we're just switching between outfit and wearable editing, don't end customization.
+		{
+			LLVOAvatarSelf::onCustomizeEnd(disable_camera_switch);
+		}
 	}
 }
 
@@ -405,10 +401,7 @@ void LLSidepanelAppearance::toggleWearableEditPanel(BOOL visible, LLWearable *we
 
 	if (visible)
 	{
-		if (!disable_camera_switch && gSavedSettings.getBOOL("AppearanceCameraMovement") )
-		{
-			gAgentCamera.changeCameraToCustomizeAvatar();
-		}
+		LLVOAvatarSelf::onCustomizeStart(disable_camera_switch);
 		mEditWearable->setWearable(wearable, disable_camera_switch);
 		mEditWearable->onOpen(LLSD()); // currently no-op, just for consistency
 	}
@@ -416,10 +409,9 @@ void LLSidepanelAppearance::toggleWearableEditPanel(BOOL visible, LLWearable *we
 	{
 		// Save changes if closing.
 		mEditWearable->saveChanges();
-		if (!disable_camera_switch && gSavedSettings.getBOOL("AppearanceCameraMovement") )
+		if (!disable_camera_switch)   // if we're just switching between outfit and wearable editing, don't end customization.
 		{
-			gAgentCamera.changeCameraToDefault();
-			gAgentCamera.resetView();
+			LLVOAvatarSelf::onCustomizeEnd(disable_camera_switch);
 		}
 	}
 }
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index d48d79f8079..6bcb0c6882d 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -692,8 +692,9 @@ LLVOAvatar::LLVOAvatar(const LLUUID& id,
 	mLoadedCallbacksPaused(FALSE),
 	mHasPelvisOffset( FALSE ),
 	mRenderUnloadedAvatar(LLCachedControl<bool>(gSavedSettings, "RenderUnloadedAvatar")),
-	mLastRezzedStatus(-1)
-
+	mLastRezzedStatus(-1),
+	mIsEditingAppearance(FALSE),
+	mUseLocalAppearance(FALSE)
 {
 	LLMemType mt(LLMemType::MTYPE_AVATAR);
 	//VTResume();  // VTune
@@ -7336,13 +7337,6 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 	mMeshTexturesDirty = TRUE;
 	gPipeline.markGLRebuild(this);
 
-	// ! BACKWARDS COMPATIBILITY !
-	// Non-self avatars will no longer have component textures
-	if (!isSelf())
-	{
-		releaseComponentTextures();
-	}
-	
 	// parse visual params
 	S32 num_blocks = mesgsys->getNumberOfBlocksFast(_PREHASH_VisualParam);
 	bool drop_visual_params_debug = gSavedSettings.getBOOL("BlockSomeAvatarAppearanceVisualParams") && (ll_rand(2) == 0); // pretend that ~12% of AvatarAppearance messages arrived without a VisualParam block, for testing
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
index 6fb56a4c0bb..3ad13d2edb7 100755
--- a/indra/newview/llvoavatar.h
+++ b/indra/newview/llvoavatar.h
@@ -702,6 +702,8 @@ class LLVOAvatar :
 	BOOL			mAppearanceAnimating;
 	LLFrameTimer	mAppearanceMorphTimer;
 	F32				mLastAppearanceBlendTime;
+	BOOL			mIsEditingAppearance;
+	BOOL			mUseLocalAppearance;
 
 	//--------------------------------------------------------------------
 	// Clothing colors (convenience functions to access visual parameters)
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index ecc616fa67a..5355651692d 100755
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -2705,19 +2705,38 @@ LLTexLayerSet* LLVOAvatarSelf::getLayerSet(EBakedTextureIndex baked_index) const
 
 
 // static
-void LLVOAvatarSelf::onCustomizeStart()
+void LLVOAvatarSelf::onCustomizeStart(bool disable_camera_switch)
 {
-	// We're no longer doing any baking or invalidating on entering 
-	// appearance editing mode. Leaving function in place in case 
-	// further changes require us to do something at this point - Nyx
+	if (isAgentAvatarValid())
+	{
+		gAgentAvatarp->mIsEditingAppearance = true;
+		gAgentAvatarp->mUseLocalAppearance = true;
+
+		if (gSavedSettings.getBOOL("AppearanceCameraMovement") && !disable_camera_switch)
+		{
+			gAgentCamera.changeCameraToCustomizeAvatar();
+		}
+
+		gAgentAvatarp->invalidateAll();
+		gAgentAvatarp->updateMeshTextures();
+	}
 }
 
 // static
-void LLVOAvatarSelf::onCustomizeEnd()
+void LLVOAvatarSelf::onCustomizeEnd(bool disable_camera_switch)
 {
+	gAgentAvatarp->mIsEditingAppearance = false;
 	if (isAgentAvatarValid())
 	{
 		gAgentAvatarp->invalidateAll();
+
+		if (gSavedSettings.getBOOL("AppearanceCameraMovement") && !disable_camera_switch)
+		{
+			gAgentCamera.changeCameraToDefault();
+			gAgentCamera.resetView();
+		}
+
+		LLAppearanceMgr::instance().updateAppearanceFromCOF();
 	}
 }
 
diff --git a/indra/newview/llvoavatarself.h b/indra/newview/llvoavatarself.h
index 543891ca632..5354f186797 100755
--- a/indra/newview/llvoavatarself.h
+++ b/indra/newview/llvoavatarself.h
@@ -330,8 +330,8 @@ class LLVOAvatarSelf :
  **/
 
 public:
-	static void		onCustomizeStart();
-	static void		onCustomizeEnd();
+	static void		onCustomizeStart(bool disable_camera_switch = false);
+	static void		onCustomizeEnd(bool disable_camera_switch = false);
 
 	//--------------------------------------------------------------------
 	// Visibility
-- 
GitLab


From f0e34ebcd61ee998efa681a211545a7335d60c97 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Wed, 11 Jul 2012 23:58:11 +0000
Subject: [PATCH 020/436] Adding --skip-gridargs argument to secondlife wrapper
 script on linux.

---
 indra/newview/linux_tools/wrapper.sh | 20 +++++++++++++++++---
 1 file changed, 17 insertions(+), 3 deletions(-)

diff --git a/indra/newview/linux_tools/wrapper.sh b/indra/newview/linux_tools/wrapper.sh
index 20936c6460b..fa9ce703a82 100755
--- a/indra/newview/linux_tools/wrapper.sh
+++ b/indra/newview/linux_tools/wrapper.sh
@@ -117,18 +117,32 @@ export LD_LIBRARY_PATH="$PWD/lib:${LD_LIBRARY_PATH}"
 # Simply embedding $(<etc/gridargs.dat) into a command line treats each of
 # Second, Life and Developer as separate args -- no good. We need bash to
 # process quotes using eval.
-# First read it without scanning, then scan that string. Break quoted words
+# First, check if we have been instructed to skip reading in gridargs.dat:
+skip_gridargs=false
+argnum=0
+for ARG in "$@"; do
+    if [ "--skip-gridargs" == "$ARG" ]; then
+        skip_gridargs=true
+    else
+        ARGS[$argnum]="$ARG"
+        argnum=$(($argnum+1))
+    fi
+done
+
+# Second, read it without scanning, then scan that string. Break quoted words
 # into a bash array. Note that if gridargs.dat is empty, or contains only
 # whitespace, the resulting gridargs array will be empty -- zero entries --
 # therefore "${gridargs[@]}" entirely vanishes from the command line below,
 # just as we want.
-eval gridargs=("$(<etc/gridargs.dat)")
+if ! $skip_gridargs ; then
+    eval gridargs=("$(<etc/gridargs.dat)")
+fi
 
 # Run the program.
 # Don't quote $LL_WRAPPER because, if empty, it should simply vanish from the
 # command line. But DO quote "$@": preserve separate args as individually
 # quoted. Similar remarks about the contents of gridargs.
-$LL_WRAPPER bin/do-not-directly-run-secondlife-bin "${gridargs[@]}" "$@"
+$LL_WRAPPER bin/do-not-directly-run-secondlife-bin "${gridargs[@]}" "${ARGS[@]}"
 LL_RUN_ERR=$?
 
 # Handle any resulting errors
-- 
GitLab


From 6681b47d4f75433ef409ca3eaa0ea1e10161cc80 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Thu, 12 Jul 2012 11:09:27 -0400
Subject: [PATCH 021/436] SH-3267 WIP

---
 indra/newview/llappearancemgr.cpp | 13 +++++++++++++
 indra/newview/llappearancemgr.h   |  1 +
 2 files changed, 14 insertions(+)

diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 480a8e0d73b..04c4220afde 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -925,6 +925,18 @@ const LLUUID LLAppearanceMgr::getCOF() const
 	return gInventory.findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT);
 }
 
+S32 LLAppearanceMgr::getCOFVersion() const
+{
+	LLViewerInventoryCategory *cof = gInventory.getCategory(getCOF());
+	if (cof)
+	{
+		return cof->getVersion();
+	}
+	else
+	{
+		return LLViewerInventoryCategory::VERSION_UNKNOWN;
+	}
+}
 
 const LLViewerInventoryItem* LLAppearanceMgr::getBaseOutfitLink()
 {
@@ -2611,6 +2623,7 @@ void LLAppearanceMgr::requestServerAppearanceUpdate()
 	if (!url.empty())
 	{
 		LLSD body;
+		body["cof_version"] = getCOFVersion();
 		LLHTTPClient::post(url, body, new RequestAgentUpdateAppearanceResponder);
 	}
 	else
diff --git a/indra/newview/llappearancemgr.h b/indra/newview/llappearancemgr.h
index 46457f1dce4..954820c154b 100755
--- a/indra/newview/llappearancemgr.h
+++ b/indra/newview/llappearancemgr.h
@@ -93,6 +93,7 @@ class LLAppearanceMgr: public LLSingleton<LLAppearanceMgr>
 
 	// Find the Current Outfit folder.
 	const LLUUID getCOF() const;
+	S32 getCOFVersion() const;
 
 	// Finds the folder link to the currently worn outfit
 	const LLViewerInventoryItem *getBaseOutfitLink();
-- 
GitLab


From 27c7b259b417d5843422e8bd4e8e480a186e44f4 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Thu, 12 Jul 2012 18:24:23 -0400
Subject: [PATCH 022/436] SH-3267 WIP

---
 indra/llprimitive/llprimitive.cpp | 107 +++++++++++++++++++++++++++++-
 indra/llprimitive/llprimitive.h   |  31 ++++++++-
 indra/newview/llappearancemgr.cpp |   8 ++-
 indra/newview/llappearancemgr.h   |   2 +
 indra/newview/llvoavatar.cpp      |  20 +++++-
 5 files changed, 162 insertions(+), 6 deletions(-)

diff --git a/indra/llprimitive/llprimitive.cpp b/indra/llprimitive/llprimitive.cpp
index c766d8a43c0..0388e2c020e 100755
--- a/indra/llprimitive/llprimitive.cpp
+++ b/indra/llprimitive/llprimitive.cpp
@@ -1228,11 +1228,113 @@ BOOL LLPrimitive::packTEMessage(LLDataPacker &dp) const
 	return FALSE;
 }
 
-S32 LLPrimitive::unpackTEMessage(LLMessageSystem* mesgsys, char const* block_name, bool fake_images)
+S32 LLPrimitive::parseTEMessage(LLMessageSystem* mesgsys, char const* block_name, const S32 block_num, bool fake_images,
+	LLTEContents& tec)
 {
-	return(unpackTEMessage(mesgsys,block_name,-1,fake_images));
+	tec.fake_images = fake_images;
+	
+	S32 retval = 0;
+
+	if (block_num < 0)
+	{
+		tec.size = mesgsys->getSizeFast(block_name, _PREHASH_TextureEntry);
+	}
+	else
+	{
+		tec.size = mesgsys->getSizeFast(block_name, block_num, _PREHASH_TextureEntry);
+	}
+
+	if (tec.size == 0)
+	{
+		return retval;
+	}
+
+	if (block_num < 0)
+	{
+		mesgsys->getBinaryDataFast(block_name, _PREHASH_TextureEntry, tec.packed_buffer, 0, 0, LLTEContents::MAX_TE_BUFFER);
+	}
+	else
+	{
+		mesgsys->getBinaryDataFast(block_name, _PREHASH_TextureEntry, tec.packed_buffer, 0, block_num, LLTEContents::MAX_TE_BUFFER);
+	}
+
+	tec.face_count = getNumTEs();
+
+	U8 *cur_ptr = tec.packed_buffer;
+	cur_ptr += unpackTEField(cur_ptr, tec.packed_buffer+tec.size, (U8 *)tec.image_data, 16, tec.face_count, MVT_LLUUID);
+	cur_ptr++;
+	cur_ptr += unpackTEField(cur_ptr, tec.packed_buffer+tec.size, (U8 *)tec.colors, 4, tec.face_count, MVT_U8);
+	cur_ptr++;
+	cur_ptr += unpackTEField(cur_ptr, tec.packed_buffer+tec.size, (U8 *)tec.scale_s, 4, tec.face_count, MVT_F32);
+	cur_ptr++;
+	cur_ptr += unpackTEField(cur_ptr, tec.packed_buffer+tec.size, (U8 *)tec.scale_t, 4, tec.face_count, MVT_F32);
+	cur_ptr++;
+	cur_ptr += unpackTEField(cur_ptr, tec.packed_buffer+tec.size, (U8 *)tec.offset_s, 2, tec.face_count, MVT_S16Array);
+	cur_ptr++;
+	cur_ptr += unpackTEField(cur_ptr, tec.packed_buffer+tec.size, (U8 *)tec.offset_t, 2, tec.face_count, MVT_S16Array);
+	cur_ptr++;
+	cur_ptr += unpackTEField(cur_ptr, tec.packed_buffer+tec.size, (U8 *)tec.image_rot, 2, tec.face_count, MVT_S16Array);
+	cur_ptr++;
+	cur_ptr += unpackTEField(cur_ptr, tec.packed_buffer+tec.size, (U8 *)tec.bump, 1, tec.face_count, MVT_U8);
+	cur_ptr++;
+	cur_ptr += unpackTEField(cur_ptr, tec.packed_buffer+tec.size, (U8 *)tec.media_flags, 1, tec.face_count, MVT_U8);
+	cur_ptr++;
+	cur_ptr += unpackTEField(cur_ptr, tec.packed_buffer+tec.size, (U8 *)tec.glow, 1, tec.face_count, MVT_U8);
+
+	retval = 1;
+	return retval;
+}
+
+S32 LLPrimitive::unpackParsedTEMessage(LLTEContents& tec)
+{
+	S32 retval = 0;
+
+	LLColor4 color;
+	LLColor4U coloru;
+	for (U32 i = 0; i < tec.face_count; i++)
+	{
+		LLUUID& req_id = ((LLUUID*)tec.image_data)[i];
+		if (tec.fake_images & (req_id != IMG_DEFAULT) && (req_id != IMG_DEFAULT_AVATAR) && (req_id != IMG_INVISIBLE))
+		{
+			retval |= setTETexture(i, IMG_CHECKERBOARD_RGBA);
+		}
+		else
+		{
+			retval |= setTETexture(i, req_id);
+		}
+		retval |= setTEScale(i, tec.scale_s[i], tec.scale_t[i]);
+		retval |= setTEOffset(i, (F32)tec.offset_s[i] / (F32)0x7FFF, (F32) tec.offset_t[i] / (F32) 0x7FFF);
+		retval |= setTERotation(i, ((F32)tec.image_rot[i] / TEXTURE_ROTATION_PACK_FACTOR) * F_TWO_PI);
+		retval |= setTEBumpShinyFullbright(i, tec.bump[i]);
+		retval |= setTEMediaTexGen(i, tec.media_flags[i]);
+		retval |= setTEGlow(i, (F32)tec.glow[i] / (F32)0xFF);
+		coloru = LLColor4U(tec.colors + 4*i);
+
+		// Note:  This is an optimization to send common colors (1.f, 1.f, 1.f, 1.f)
+		// as all zeros.  However, the subtraction and addition must be done in unsigned
+		// byte space, not in float space, otherwise off-by-one errors occur. JC
+		color.mV[VRED]		= F32(255 - coloru.mV[VRED])   / 255.f;
+		color.mV[VGREEN]	= F32(255 - coloru.mV[VGREEN]) / 255.f;
+		color.mV[VBLUE]		= F32(255 - coloru.mV[VBLUE])  / 255.f;
+		color.mV[VALPHA]	= F32(255 - coloru.mV[VALPHA]) / 255.f;
+
+		retval |= setTEColor(i, color);
+
+	}
+
+	return retval;
+}
+
+S32 LLPrimitive::unpackTEMessage(LLMessageSystem* mesgsys, char const* block_name, const S32 block_num, bool fake_images)
+{
+	LLTEContents tec;
+	S32 retval = parseTEMessage(mesgsys, block_name, block_num, fake_images, tec);
+	if (!retval)
+		return retval;
+	return unpackParsedTEMessage(tec);
 }
 
+#if 0
 S32 LLPrimitive::unpackTEMessage(LLMessageSystem* mesgsys, char const* block_name, const S32 block_num, bool fake_images)
 {
 	// use a negative block_num to indicate a single-block read (a non-variable block)
@@ -1339,6 +1441,7 @@ S32 LLPrimitive::unpackTEMessage(LLMessageSystem* mesgsys, char const* block_nam
 
 	return retval;
 }
+#endif
 
 S32 LLPrimitive::unpackTEMessage(LLDataPacker &dp)
 {
diff --git a/indra/llprimitive/llprimitive.h b/indra/llprimitive/llprimitive.h
index 1e985221c02..19ef3faf3f4 100755
--- a/indra/llprimitive/llprimitive.h
+++ b/indra/llprimitive/llprimitive.h
@@ -289,6 +289,34 @@ class LLLightImageParams : public LLNetworkData
 };
 
 
+struct LLTEContents
+{
+	LLTEContents()
+	{
+	}
+
+	static const U32 MAX_TES = 32;
+
+	U8     image_data[MAX_TES*16];
+	U8	  colors[MAX_TES*4];
+	F32    scale_s[MAX_TES];
+	F32    scale_t[MAX_TES];
+	S16    offset_s[MAX_TES];
+	S16    offset_t[MAX_TES];
+	S16    image_rot[MAX_TES];
+	U8	   bump[MAX_TES];
+	U8	   media_flags[MAX_TES];
+    U8     glow[MAX_TES];
+	
+	static const U32 MAX_TE_BUFFER = 4096;
+	U8 packed_buffer[MAX_TE_BUFFER];
+
+	U32 size;
+	U32 face_count;
+
+	bool fake_images;
+};
+
 class LLPrimitive : public LLXform
 {
 public:
@@ -360,9 +388,10 @@ class LLPrimitive : public LLXform
 	S32 unpackTEField(U8 *cur_ptr, U8 *buffer_end, U8 *data_ptr, U8 data_size, U8 face_count, EMsgVariableType type);
 	BOOL packTEMessage(LLMessageSystem *mesgsys) const;
 	BOOL packTEMessage(LLDataPacker &dp) const;
-	S32 unpackTEMessage(LLMessageSystem* mesgsys, char const* block_name, bool fake_images = false);
 	S32 unpackTEMessage(LLMessageSystem* mesgsys, char const* block_name, const S32 block_num, bool fake_images = false); // Variable num of blocks
 	BOOL unpackTEMessage(LLDataPacker &dp);
+	S32 parseTEMessage(LLMessageSystem* mesgsys, char const* block_name, const S32 block_num, bool fake_images,LLTEContents& tec);
+	S32 unpackParsedTEMessage(LLTEContents& tec);
 	
 #ifdef CHECK_FOR_FINITE
 	inline void setPosition(const LLVector3& pos);
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 04c4220afde..eb31358000c 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -2623,8 +2623,11 @@ void LLAppearanceMgr::requestServerAppearanceUpdate()
 	if (!url.empty())
 	{
 		LLSD body;
-		body["cof_version"] = getCOFVersion();
+		S32 cof_version = getCOFVersion();
+		body["cof_version"] = cof_version;
 		LLHTTPClient::post(url, body, new RequestAgentUpdateAppearanceResponder);
+		llassert(cof_version >= mLastUpdateRequestCOFVersion);
+		mLastUpdateRequestCOFVersion = cof_version;
 	}
 	else
 	{
@@ -2842,7 +2845,8 @@ LLAppearanceMgr::LLAppearanceMgr():
 	mAttachmentInvLinkEnabled(false),
 	mOutfitIsDirty(false),
 	mOutfitLocked(false),
-	mIsInUpdateAppearanceFromCOF(false)
+	mIsInUpdateAppearanceFromCOF(false),
+	mLastUpdateRequestCOFVersion(LLViewerInventoryCategory::VERSION_UNKNOWN)
 {
 	LLOutfitObserver& outfit_observer = LLOutfitObserver::instance();
 
diff --git a/indra/newview/llappearancemgr.h b/indra/newview/llappearancemgr.h
index 954820c154b..45291419c72 100755
--- a/indra/newview/llappearancemgr.h
+++ b/indra/newview/llappearancemgr.h
@@ -95,6 +95,8 @@ class LLAppearanceMgr: public LLSingleton<LLAppearanceMgr>
 	const LLUUID getCOF() const;
 	S32 getCOFVersion() const;
 
+	S32 mLastUpdateRequestCOFVersion;
+
 	// Finds the folder link to the currently worn outfit
 	const LLViewerInventoryItem *getBaseOutfitLink();
 	bool getBaseOutfitName(std::string &name);
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 6bcb0c6882d..f85b59b8c62 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -7309,9 +7309,27 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 
 //	llinfos << "LLVOAvatar::processAvatarAppearance()" << llendl;
 //	dumpAvatarTEs( "PRE  processAvatarAppearance()" );
-	unpackTEMessage(mesgsys, _PREHASH_ObjectData, FALSE);
+	LLTEContents tec;
+	parseTEMessage(mesgsys, _PREHASH_ObjectData, -1, FALSE, tec);
 //	dumpAvatarTEs( "POST processAvatarAppearance()" );
 
+	// Check for stale update.
+	if (isSelf() && LLAppearanceMgr::instance().useServerTextureBaking())
+	{
+		// Extract COF Version field hacked into local texture id.
+		LLUUID texture_id = ((LLUUID*)tec.image_data)[0];
+		S32 last_update_request_cof_version = LLAppearanceMgr::instance().mLastUpdateRequestCOFVersion;
+		S32 *s_words = (S32*) texture_id.mData;
+		S32 this_update_cof_version = s_words[0];
+		if (this_update_cof_version < last_update_request_cof_version)
+		{
+			llwarns << "Stale appearance update, wanted version " << last_update_request_cof_version
+					<< ", got " << this_update_cof_version << llendl;
+			return;
+		}
+	}
+	unpackParsedTEMessage(tec);
+
 	// prevent the overwriting of valid baked textures with invalid baked textures
 	for (U8 baked_index = 0; baked_index < mBakedTextureDatas.size(); baked_index++)
 	{
-- 
GitLab


From 5a473a42a63d3277c65bb3bc96e49f020508cfe8 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Fri, 13 Jul 2012 02:54:48 +0000
Subject: [PATCH 023/436] Remove MaxFPS limit during login, teleports, and
 logout.

---
 indra/newview/llappviewer.cpp | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index f5dce587589..8210a41a789 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -1492,7 +1492,12 @@ bool LLAppViewer::mainLoop()
 
 				// Limit FPS
 				F32 max_fps = gSavedSettings.getF32("MaxFPS");
-				if (max_fps > F_APPROXIMATELY_ZERO)
+				// Only limit FPS when we are actually rendering something.  Otherwise
+				// logins, logouts and teleports take much longer to complete.
+				if (max_fps > F_APPROXIMATELY_ZERO && 
+					LLStartUp::getStartupState() == STATE_STARTED &&
+					!gTeleportDisplay &&
+					!logoutRequestSent())
 				{
 					// Sleep a while to limit frame rate.
 					F32 min_frame_time = 1.f / max_fps;
-- 
GitLab


From 409be9dcc4e372385f0fb0de274a4b17913bd124 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Fri, 13 Jul 2012 16:59:57 -0400
Subject: [PATCH 024/436] SH-3267 WIP - extract cof version from avatar
 appearance message, use to reject stale updates

---
 indra/llprimitive/llprimitive.cpp | 131 ++----------------------------
 indra/llprimitive/llprimitive.h   |  18 ++--
 indra/newview/llappearancemgr.cpp |  20 +++--
 indra/newview/llvoavatar.cpp      |   8 +-
 4 files changed, 31 insertions(+), 146 deletions(-)

diff --git a/indra/llprimitive/llprimitive.cpp b/indra/llprimitive/llprimitive.cpp
index 0388e2c020e..97a382634aa 100755
--- a/indra/llprimitive/llprimitive.cpp
+++ b/indra/llprimitive/llprimitive.cpp
@@ -1228,11 +1228,8 @@ BOOL LLPrimitive::packTEMessage(LLDataPacker &dp) const
 	return FALSE;
 }
 
-S32 LLPrimitive::parseTEMessage(LLMessageSystem* mesgsys, char const* block_name, const S32 block_num, bool fake_images,
-	LLTEContents& tec)
+S32 LLPrimitive::parseTEMessage(LLMessageSystem* mesgsys, char const* block_name, const S32 block_num, LLTEContents& tec)
 {
-	tec.fake_images = fake_images;
-	
 	S32 retval = 0;
 
 	if (block_num < 0)
@@ -1285,7 +1282,7 @@ S32 LLPrimitive::parseTEMessage(LLMessageSystem* mesgsys, char const* block_name
 	return retval;
 }
 
-S32 LLPrimitive::unpackParsedTEMessage(LLTEContents& tec)
+S32 LLPrimitive::applyParsedTEMessage(LLTEContents& tec)
 {
 	S32 retval = 0;
 
@@ -1294,14 +1291,7 @@ S32 LLPrimitive::unpackParsedTEMessage(LLTEContents& tec)
 	for (U32 i = 0; i < tec.face_count; i++)
 	{
 		LLUUID& req_id = ((LLUUID*)tec.image_data)[i];
-		if (tec.fake_images & (req_id != IMG_DEFAULT) && (req_id != IMG_DEFAULT_AVATAR) && (req_id != IMG_INVISIBLE))
-		{
-			retval |= setTETexture(i, IMG_CHECKERBOARD_RGBA);
-		}
-		else
-		{
-			retval |= setTETexture(i, req_id);
-		}
+		retval |= setTETexture(i, req_id);
 		retval |= setTEScale(i, tec.scale_s[i], tec.scale_t[i]);
 		retval |= setTEOffset(i, (F32)tec.offset_s[i] / (F32)0x7FFF, (F32) tec.offset_t[i] / (F32) 0x7FFF);
 		retval |= setTERotation(i, ((F32)tec.image_rot[i] / TEXTURE_ROTATION_PACK_FACTOR) * F_TWO_PI);
@@ -1325,123 +1315,14 @@ S32 LLPrimitive::unpackParsedTEMessage(LLTEContents& tec)
 	return retval;
 }
 
-S32 LLPrimitive::unpackTEMessage(LLMessageSystem* mesgsys, char const* block_name, const S32 block_num, bool fake_images)
+S32 LLPrimitive::unpackTEMessage(LLMessageSystem* mesgsys, char const* block_name, const S32 block_num)
 {
 	LLTEContents tec;
-	S32 retval = parseTEMessage(mesgsys, block_name, block_num, fake_images, tec);
+	S32 retval = parseTEMessage(mesgsys, block_name, block_num, tec);
 	if (!retval)
 		return retval;
-	return unpackParsedTEMessage(tec);
-}
-
-#if 0
-S32 LLPrimitive::unpackTEMessage(LLMessageSystem* mesgsys, char const* block_name, const S32 block_num, bool fake_images)
-{
-	// use a negative block_num to indicate a single-block read (a non-variable block)
-	S32 retval = 0;
-	const U32 MAX_TES = 32;
-
-	// Avoid construction of 32 UUIDs per call. JC
-
-	U8     image_data[MAX_TES*16];
-	U8	  colors[MAX_TES*4];
-	F32    scale_s[MAX_TES];
-	F32    scale_t[MAX_TES];
-	S16    offset_s[MAX_TES];
-	S16    offset_t[MAX_TES];
-	S16    image_rot[MAX_TES];
-	U8	   bump[MAX_TES];
-	U8	   media_flags[MAX_TES];
-    U8     glow[MAX_TES];
-	
-	const U32 MAX_TE_BUFFER = 4096;
-	U8 packed_buffer[MAX_TE_BUFFER];
-	U8 *cur_ptr = packed_buffer;
-
-	U32 size;
-	U32 face_count = 0;
-
-	if (block_num < 0)
-	{
-		size = mesgsys->getSizeFast(block_name, _PREHASH_TextureEntry);
-	}
-	else
-	{
-		size = mesgsys->getSizeFast(block_name, block_num, _PREHASH_TextureEntry);
-	}
-
-	if (size == 0)
-	{
-		return retval;
-	}
-
-	if (block_num < 0)
-	{
-		mesgsys->getBinaryDataFast(block_name, _PREHASH_TextureEntry, packed_buffer, 0, 0, MAX_TE_BUFFER);
-	}
-	else
-	{
-		mesgsys->getBinaryDataFast(block_name, _PREHASH_TextureEntry, packed_buffer, 0, block_num, MAX_TE_BUFFER);
-	}
-
-	face_count = getNumTEs();
-
-	cur_ptr += unpackTEField(cur_ptr, packed_buffer+size, (U8 *)image_data, 16, face_count, MVT_LLUUID);
-	cur_ptr++;
-	cur_ptr += unpackTEField(cur_ptr, packed_buffer+size, (U8 *)colors, 4, face_count, MVT_U8);
-	cur_ptr++;
-	cur_ptr += unpackTEField(cur_ptr, packed_buffer+size, (U8 *)scale_s, 4, face_count, MVT_F32);
-	cur_ptr++;
-	cur_ptr += unpackTEField(cur_ptr, packed_buffer+size, (U8 *)scale_t, 4, face_count, MVT_F32);
-	cur_ptr++;
-	cur_ptr += unpackTEField(cur_ptr, packed_buffer+size, (U8 *)offset_s, 2, face_count, MVT_S16Array);
-	cur_ptr++;
-	cur_ptr += unpackTEField(cur_ptr, packed_buffer+size, (U8 *)offset_t, 2, face_count, MVT_S16Array);
-	cur_ptr++;
-	cur_ptr += unpackTEField(cur_ptr, packed_buffer+size, (U8 *)image_rot, 2, face_count, MVT_S16Array);
-	cur_ptr++;
-	cur_ptr += unpackTEField(cur_ptr, packed_buffer+size, (U8 *)bump, 1, face_count, MVT_U8);
-	cur_ptr++;
-	cur_ptr += unpackTEField(cur_ptr, packed_buffer+size, (U8 *)media_flags, 1, face_count, MVT_U8);
-	cur_ptr++;
-	cur_ptr += unpackTEField(cur_ptr, packed_buffer+size, (U8 *)glow, 1, face_count, MVT_U8);
-	
-	LLColor4 color;
-	LLColor4U coloru;
-	for (U32 i = 0; i < face_count; i++)
-	{
-		LLUUID& req_id = ((LLUUID*)image_data)[i];
-		if (fake_images & (req_id != IMG_DEFAULT) && (req_id != IMG_DEFAULT_AVATAR) && (req_id != IMG_INVISIBLE))
-		{
-			retval |= setTETexture(i, IMG_CHECKERBOARD_RGBA);
-		}
-		else
-		{
-			retval |= setTETexture(i, req_id);
-		}
-		retval |= setTEScale(i, scale_s[i], scale_t[i]);
-		retval |= setTEOffset(i, (F32)offset_s[i] / (F32)0x7FFF, (F32) offset_t[i] / (F32) 0x7FFF);
-		retval |= setTERotation(i, ((F32)image_rot[i] / TEXTURE_ROTATION_PACK_FACTOR) * F_TWO_PI);
-		retval |= setTEBumpShinyFullbright(i, bump[i]);
-		retval |= setTEMediaTexGen(i, media_flags[i]);
-		retval |= setTEGlow(i, (F32)glow[i] / (F32)0xFF);
-		coloru = LLColor4U(colors + 4*i);
-
-		// Note:  This is an optimization to send common colors (1.f, 1.f, 1.f, 1.f)
-		// as all zeros.  However, the subtraction and addition must be done in unsigned
-		// byte space, not in float space, otherwise off-by-one errors occur. JC
-		color.mV[VRED]		= F32(255 - coloru.mV[VRED])   / 255.f;
-		color.mV[VGREEN]	= F32(255 - coloru.mV[VGREEN]) / 255.f;
-		color.mV[VBLUE]		= F32(255 - coloru.mV[VBLUE])  / 255.f;
-		color.mV[VALPHA]	= F32(255 - coloru.mV[VALPHA]) / 255.f;
-
-		retval |= setTEColor(i, color);
-
-	}
-
-	return retval;
+	return applyParsedTEMessage(tec);
 }
-#endif
 
 S32 LLPrimitive::unpackTEMessage(LLDataPacker &dp)
 {
diff --git a/indra/llprimitive/llprimitive.h b/indra/llprimitive/llprimitive.h
index 19ef3faf3f4..d9333140a34 100755
--- a/indra/llprimitive/llprimitive.h
+++ b/indra/llprimitive/llprimitive.h
@@ -289,12 +289,14 @@ class LLLightImageParams : public LLNetworkData
 };
 
 
+// This code is not naming-standards compliant. Leaving it like this for
+// now to make the connection to code in
+// 	BOOL packTEMessage(LLDataPacker &dp) const;
+// more obvious. This should be refactored to remove the duplication, at which
+// point we can fix the names as well.
+// - Vir
 struct LLTEContents
 {
-	LLTEContents()
-	{
-	}
-
 	static const U32 MAX_TES = 32;
 
 	U8     image_data[MAX_TES*16];
@@ -313,8 +315,6 @@ struct LLTEContents
 
 	U32 size;
 	U32 face_count;
-
-	bool fake_images;
 };
 
 class LLPrimitive : public LLXform
@@ -388,10 +388,10 @@ class LLPrimitive : public LLXform
 	S32 unpackTEField(U8 *cur_ptr, U8 *buffer_end, U8 *data_ptr, U8 data_size, U8 face_count, EMsgVariableType type);
 	BOOL packTEMessage(LLMessageSystem *mesgsys) const;
 	BOOL packTEMessage(LLDataPacker &dp) const;
-	S32 unpackTEMessage(LLMessageSystem* mesgsys, char const* block_name, const S32 block_num, bool fake_images = false); // Variable num of blocks
+	S32 unpackTEMessage(LLMessageSystem* mesgsys, char const* block_name, const S32 block_num); // Variable num of blocks
 	BOOL unpackTEMessage(LLDataPacker &dp);
-	S32 parseTEMessage(LLMessageSystem* mesgsys, char const* block_name, const S32 block_num, bool fake_images,LLTEContents& tec);
-	S32 unpackParsedTEMessage(LLTEContents& tec);
+	S32 parseTEMessage(LLMessageSystem* mesgsys, char const* block_name, const S32 block_num, LLTEContents& tec);
+	S32 applyParsedTEMessage(LLTEContents& tec);
 	
 #ifdef CHECK_FOR_FINITE
 	inline void setPosition(const LLVector3& pos);
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index eb31358000c..e27a21f7fde 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -2619,20 +2619,22 @@ class RequestAgentUpdateAppearanceResponder: public LLHTTPClient::Responder
 
 void LLAppearanceMgr::requestServerAppearanceUpdate()
 {
-	std::string url = gAgent.getRegion()->getCapability("UpdateAvatarAppearance");	
-	if (!url.empty())
+	if (!gAgent.getRegion())
 	{
-		LLSD body;
-		S32 cof_version = getCOFVersion();
-		body["cof_version"] = cof_version;
-		LLHTTPClient::post(url, body, new RequestAgentUpdateAppearanceResponder);
-		llassert(cof_version >= mLastUpdateRequestCOFVersion);
-		mLastUpdateRequestCOFVersion = cof_version;
+		llwarns << "Region not set, cannot request server appearance update" << llendl;
 	}
-	else
+	std::string url = gAgent.getRegion()->getCapability("UpdateAvatarAppearance");	
+	if (url.empty())
 	{
 		llwarns << "no cap for UpdateAvatarAppearance" << llendl;
 	}
+	
+	LLSD body;
+	S32 cof_version = getCOFVersion();
+	body["cof_version"] = cof_version;
+	LLHTTPClient::post(url, body, new RequestAgentUpdateAppearanceResponder);
+	llassert(cof_version >= mLastUpdateRequestCOFVersion);
+	mLastUpdateRequestCOFVersion = cof_version;
 }
 
 class LLShowCreatedOutfit: public LLInventoryCallback
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index f85b59b8c62..e686948fa2c 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -7310,7 +7310,7 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 //	llinfos << "LLVOAvatar::processAvatarAppearance()" << llendl;
 //	dumpAvatarTEs( "PRE  processAvatarAppearance()" );
 	LLTEContents tec;
-	parseTEMessage(mesgsys, _PREHASH_ObjectData, -1, FALSE, tec);
+	parseTEMessage(mesgsys, _PREHASH_ObjectData, -1, tec);
 //	dumpAvatarTEs( "POST processAvatarAppearance()" );
 
 	// Check for stale update.
@@ -7321,14 +7321,16 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 		S32 last_update_request_cof_version = LLAppearanceMgr::instance().mLastUpdateRequestCOFVersion;
 		S32 *s_words = (S32*) texture_id.mData;
 		S32 this_update_cof_version = s_words[0];
-		if (this_update_cof_version < last_update_request_cof_version)
+		if ((this_update_cof_version > 0) && 
+			(this_update_cof_version < last_update_request_cof_version))
 		{
 			llwarns << "Stale appearance update, wanted version " << last_update_request_cof_version
 					<< ", got " << this_update_cof_version << llendl;
 			return;
 		}
+		((LLUUID*)tec.image_data)[0].setNull();
 	}
-	unpackParsedTEMessage(tec);
+	applyParsedTEMessage(tec);
 
 	// prevent the overwriting of valid baked textures with invalid baked textures
 	for (U8 baked_index = 0; baked_index < mBakedTextureDatas.size(); baked_index++)
-- 
GitLab


From 3679631887f0acec0b0d180525a56d318692a0e2 Mon Sep 17 00:00:00 2001
From: "Nyx (Neal Orman)" <nyx@lindenlab.com>
Date: Mon, 16 Jul 2012 17:29:01 -0400
Subject: [PATCH 025/436] SH-3261 WIP Updated texture switching code

Updated texture switching code to use the proper request URL, even if
reverting to a "last known good" baked texture UUID. Viewer should now
switch to a locally-generated composite on entering appearance mode, and
should remain using such until a new appearance message is received.

Still to do: handling adjacent regions with varying support for the new
system, fixing switch back to server-generated bakes.
---
 indra/newview/llvoavatar.cpp     | 71 ++++++++++++++++++--------------
 indra/newview/llvoavatar.h       |  4 +-
 indra/newview/llvoavatarself.cpp |  5 +++
 3 files changed, 46 insertions(+), 34 deletions(-)

diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 6bcb0c6882d..9c5998b976d 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -688,7 +688,6 @@ LLVOAvatar::LLVOAvatar(const LLUUID& id,
 	mFullyLoaded(FALSE),
 	mPreviousFullyLoaded(FALSE),
 	mFullyLoadedInitialized(FALSE),
-	mSupportsAlphaLayers(FALSE),
 	mLoadedCallbacksPaused(FALSE),
 	mHasPelvisOffset( FALSE ),
 	mRenderUnloadedAvatar(LLCachedControl<bool>(gSavedSettings, "RenderUnloadedAvatar")),
@@ -2371,15 +2370,10 @@ S32 LLVOAvatar::setTETexture(const U8 te, const LLUUID& uuid)
 	// to redirect certain avatar texture requests to different sims.
 	if (isIndexBakedTexture((ETextureIndex)te))
 	{
-		std::string url = gSavedSettings.getString("AgentAppearanceServiceURL");
-		if (LLAppearanceMgr::instance().useServerTextureBaking() && !url.empty())
+		const std::string url = getImageURL(te,uuid);
+		if (!url.empty())
 		{
-			const LLVOAvatarDictionary::TextureEntry* texture_entry = LLVOAvatarDictionary::getInstance()->getTexture((ETextureIndex)te);
-			if (texture_entry != NULL)
-			{
-				url += "texture/" + getID().asString() + "/" + texture_entry->mDefaultImageName + "/" + uuid.asString();
-				return setTETextureCore(te, uuid, url);
-			}
+			return setTETextureCore(te, uuid, url);
 		}
 
 		LLHost target_host = getObjectHost();
@@ -4152,7 +4146,7 @@ void LLVOAvatar::updateVisibility()
 // private
 bool LLVOAvatar::shouldAlphaMask()
 {
-	const bool should_alpha_mask = mSupportsAlphaLayers && !LLDrawPoolAlpha::sShowDebugAlpha // Don't alpha mask if "Highlight Transparent" checked
+	const bool should_alpha_mask = !LLDrawPoolAlpha::sShowDebugAlpha // Don't alpha mask if "Highlight Transparent" checked
 							&& !LLDrawPoolAvatar::sSkipTransparent;
 
 	return should_alpha_mask;
@@ -4726,6 +4720,20 @@ void LLVOAvatar::setTexEntry(const U8 index, const LLTextureEntry &te)
 	setTE(index, te);
 }
 
+const std::string LLVOAvatar::getImageURL(const U8 te, const LLUUID &uuid)
+{
+	std::string url = "";
+	if (LLAppearanceMgr::instance().useServerTextureBaking() && !gSavedSettings.getString("AgentAppearanceServiceURL").empty())
+	{
+		const LLVOAvatarDictionary::TextureEntry* texture_entry = LLVOAvatarDictionary::getInstance()->getTexture((ETextureIndex)te);
+		if (texture_entry != NULL)
+		{
+			url = gSavedSettings.getString("AgentAppearanceServiceURL") + "texture/" + getID().asString() + "/" + texture_entry->mDefaultImageName + "/" + uuid.asString();
+		}
+	}
+	return url;
+}
+
 //-----------------------------------------------------------------------------
 // resolveHeight()
 //-----------------------------------------------------------------------------
@@ -6658,7 +6666,6 @@ void LLVOAvatar::updateMeshTextures()
 		}
 	}
 
-	const BOOL self_customizing = isSelf() && gAgentCamera.cameraCustomizeAvatar(); // During face edit mode, we don't use baked textures
 	const BOOL other_culled = !isSelf() && mCulled;
 	LLLoadedCallbackEntry::source_callback_list_t* src_callback_list = NULL ;
 	BOOL paused = FALSE;
@@ -6698,36 +6705,39 @@ void LLVOAvatar::updateMeshTextures()
 		{
 			use_lkg_baked_layer[i] = (!is_layer_baked[i] 
 									  && mBakedTextureDatas[i].mLastTextureIndex != IMG_DEFAULT_AVATAR);
-			if (mBakedTextureDatas[i].mTexLayerSet)
-			{
-				mBakedTextureDatas[i].mTexLayerSet->destroyComposite();
-			}
 		}
 
 	}
-
-	// Turn on alpha masking correctly for yourself and other avatars on 1.23+
-	mSupportsAlphaLayers = isSelf() || is_layer_baked[BAKED_HAIR];
-
-	// Baked textures should be requested from the sim this avatar is on. JC
-	const LLHost target_host = getObjectHost();
-	if (!target_host.isOk())
-	{
-		llwarns << "updateMeshTextures: invalid host for object: " << getID() << llendl;
-	}
 	
 	for (U32 i=0; i < mBakedTextureDatas.size(); i++)
 	{
-		if (use_lkg_baked_layer[i] && !self_customizing )
+		if (use_lkg_baked_layer[i] && !mUseLocalAppearance )
 		{
-			LLViewerFetchedTexture* baked_img = LLViewerTextureManager::getFetchedTextureFromHost( mBakedTextureDatas[i].mLastTextureIndex, target_host );
+			LLViewerFetchedTexture* baked_img;
+			const std::string url = getImageURL(i, mBakedTextureDatas[i].mLastTextureIndex);
+			if (!url.empty())
+			{
+				baked_img = LLViewerTextureManager::getFetchedTextureFromUrl(url, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE, 0, 0, mBakedTextureDatas[i].mLastTextureIndex);
+			}
+			else
+			{
+				// Baked textures should be requested from the sim this avatar is on. JC
+				const LLHost target_host = getObjectHost();
+				if (!target_host.isOk())
+				{
+					llwarns << "updateMeshTextures: invalid host for object: " << getID() << llendl;
+				}
+
+				baked_img = LLViewerTextureManager::getFetchedTextureFromHost( mBakedTextureDatas[i].mLastTextureIndex, target_host );
+			}
+
 			mBakedTextureDatas[i].mIsUsed = TRUE;
 			for (U32 k=0; k < mBakedTextureDatas[i].mMeshes.size(); k++)
 			{
 				mBakedTextureDatas[i].mMeshes[k]->setTexture( baked_img );
 			}
 		}
-		else if (!self_customizing && is_layer_baked[i])
+		else if (!mUseLocalAppearance && is_layer_baked[i])
 		{
 			LLViewerFetchedTexture* baked_img = LLViewerTextureManager::staticCastToFetchedTexture(getImage( mBakedTextureDatas[i].mTextureIndex, 0 ), TRUE) ;
 			if( baked_img->getID() == mBakedTextureDatas[i].mLastTextureIndex )
@@ -6747,8 +6757,7 @@ void LLVOAvatar::updateMeshTextures()
 					src_callback_list, paused );
 			}
 		}
-		else if (mBakedTextureDatas[i].mTexLayerSet 
-				 && !other_culled) 
+		else if (mBakedTextureDatas[i].mTexLayerSet && mUseLocalAppearance) 
 		{
 			mBakedTextureDatas[i].mTexLayerSet->createComposite();
 			mBakedTextureDatas[i].mTexLayerSet->setUpdatesEnabled( TRUE );
@@ -6763,7 +6772,7 @@ void LLVOAvatar::updateMeshTextures()
 	// set texture and color of hair manually if we are not using a baked image.
 	// This can happen while loading hair for yourself, or for clients that did not
 	// bake a hair texture. Still needed for yourself after 1.22 is depricated.
-	if (!is_layer_baked[BAKED_HAIR] || self_customizing)
+	if (!is_layer_baked[BAKED_HAIR] || mIsEditingAppearance)
 	{
 		const LLColor4 color = mTexHairColor ? mTexHairColor->getColor() : LLColor4(1,1,1,1);
 		LLViewerTexture* hair_img = getImage( TEX_HAIR, 0 );
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
index 3ad13d2edb7..2b999891f90 100755
--- a/indra/newview/llvoavatar.h
+++ b/indra/newview/llvoavatar.h
@@ -217,9 +217,6 @@ class LLVOAvatar :
 private: //aligned members
 	LLVector4a	mImpostorExtents[2];
 
-private:
-	BOOL			mSupportsAlphaLayers; // For backwards compatibility, TRUE for 1.23+ clients
-
 	//--------------------------------------------------------------------
 	// Updates
 	//--------------------------------------------------------------------
@@ -603,6 +600,7 @@ class LLVOAvatar :
 private:
 	virtual	void				setImage(const U8 te, LLViewerTexture *imagep, const U32 index); 
 	virtual LLViewerTexture*	getImage(const U8 te, const U32 index) const;
+	const std::string 			getImageURL(const U8 te, const LLUUID &uuid);
 
 	virtual const LLTextureEntry* getTexEntry(const U8 te_num) const;
 	virtual void setTexEntry(const U8 index, const LLTextureEntry &te);
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index 5355651692d..e715a0d2f15 100755
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -2726,6 +2726,11 @@ void LLVOAvatarSelf::onCustomizeStart(bool disable_camera_switch)
 void LLVOAvatarSelf::onCustomizeEnd(bool disable_camera_switch)
 {
 	gAgentAvatarp->mIsEditingAppearance = false;
+	if (!LLAppearanceMgr::instance().useServerTextureBaking())
+	{
+		gAgentAvatarp->mUseLocalAppearance = false;
+	}
+
 	if (isAgentAvatarValid())
 	{
 		gAgentAvatarp->invalidateAll();
-- 
GitLab


From d2801da16f9ce6addf6d34b3532a574e24f5d9be Mon Sep 17 00:00:00 2001
From: "Nyx (Neal Orman)" <nyx@lindenlab.com>
Date: Tue, 17 Jul 2012 14:34:35 -0400
Subject: [PATCH 026/436] SH-3258 WIP revert to server-generated textures

After exiting appearance mode, next server-generated appearance message should
over-ride the locally-generated textures.
---
 indra/newview/llvoavatar.cpp | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 236cc1b0896..d953a4b99e4 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -4581,6 +4581,7 @@ void LLVOAvatar::updateTextures()
 			if (isIndexBakedTexture((ETextureIndex)texture_index)
 				&& imagep->getID() != IMG_DEFAULT_AVATAR
 				&& imagep->getID() != IMG_INVISIBLE
+				&& !LLAppearanceMgr::instance().useServerTextureBaking()
 				&& !imagep->getTargetHost().isOk())
 			{
 				LL_WARNS_ONCE("Texture") << "LLVOAvatar::updateTextures No host for texture "
@@ -7363,7 +7364,6 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 	}
 
 	setCompositeUpdatesEnabled( FALSE );
-	mMeshTexturesDirty = TRUE;
 	gPipeline.markGLRebuild(this);
 
 	// parse visual params
@@ -7475,6 +7475,13 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 	// If all of the avatars are completely baked, release the global image caches to conserve memory.
 	LLVOAvatar::cullAvatarsByPixelArea();
 
+	if (isSelf() && LLAppearanceMgr::instance().useServerTextureBaking())
+	{
+		mUseLocalAppearance = false;
+	}
+
+	updateMeshTextures();
+
 //	llinfos << "processAvatarAppearance end " << mID << llendl;
 }
 
-- 
GitLab


From 020980fb4cd5f2cc18b56fa795c08c153a15bd4a Mon Sep 17 00:00:00 2001
From: "Nyx (Neal Orman)" <nyx@lindenlab.com>
Date: Wed, 25 Jul 2012 15:22:13 -0400
Subject: [PATCH 027/436] SH-3258 WIP Adding new switching of new vs old
 appearance based on appearance message

Not all appearance messages on a region will be new or old style at all times.
Thus we're using a specific flag to mark the new appearance messages.
---
 indra/newview/llvoavatar.cpp | 41 ++++++++++++++++++++++++------------
 indra/newview/llvoavatar.h   |  1 +
 2 files changed, 29 insertions(+), 13 deletions(-)

diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index d953a4b99e4..45c7a59b24a 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -192,6 +192,8 @@ const S32 MAX_BUBBLE_CHAT_UTTERANCES = 12;
 const F32 CHAT_FADE_TIME = 8.0;
 const F32 BUBBLE_CHAT_TIME = CHAT_FADE_TIME * 3.f;
 
+const S32 SERVER_GENERATED_APPEARANCE = 359949045;
+
 const LLColor4 DUMMY_COLOR = LLColor4(0.5,0.5,0.5,1.0);
 
 enum ERenderName
@@ -693,7 +695,8 @@ LLVOAvatar::LLVOAvatar(const LLUUID& id,
 	mRenderUnloadedAvatar(LLCachedControl<bool>(gSavedSettings, "RenderUnloadedAvatar")),
 	mLastRezzedStatus(-1),
 	mIsEditingAppearance(FALSE),
-	mUseLocalAppearance(FALSE)
+	mUseLocalAppearance(FALSE),
+	mUseServerBakes(TRUE)
 {
 	LLMemType mt(LLMemType::MTYPE_AVATAR);
 	//VTResume();  // VTune
@@ -4581,7 +4584,7 @@ void LLVOAvatar::updateTextures()
 			if (isIndexBakedTexture((ETextureIndex)texture_index)
 				&& imagep->getID() != IMG_DEFAULT_AVATAR
 				&& imagep->getID() != IMG_INVISIBLE
-				&& !LLAppearanceMgr::instance().useServerTextureBaking()
+				&& !mUseServerBakes 
 				&& !imagep->getTargetHost().isOk())
 			{
 				LL_WARNS_ONCE("Texture") << "LLVOAvatar::updateTextures No host for texture "
@@ -4676,10 +4679,10 @@ void LLVOAvatar::addBakedTextureStats( LLViewerFetchedTexture* imagep, F32 pixel
 	//the texture pipeline will stop fetching this texture.
 
 	imagep->resetTextureStats();
-	if (!LLAppearanceMgr::instance().useServerTextureBaking())
-	{
-		imagep->setCanUseHTTP(false); //turn off http fetching for baked textures.
-	}
+	// TODO: currently default to HTTP texture and fall back to UDP if cannot be found there.
+	// Once server messaging is in place, we should call setCanUseHTTP(false) for old style
+	// appearance requests
+	imagep->setCanUseHTTP(true);
 	imagep->setMaxVirtualSizeResetInterval(MAX_TEXTURE_VIRTURE_SIZE_RESET_INTERVAL);
 	imagep->resetMaxVirtualSizeResetCounter() ;
 
@@ -4730,6 +4733,7 @@ const std::string LLVOAvatar::getImageURL(const U8 te, const LLUUID &uuid)
 		if (texture_entry != NULL)
 		{
 			url = gSavedSettings.getString("AgentAppearanceServiceURL") + "texture/" + getID().asString() + "/" + texture_entry->mDefaultImageName + "/" + uuid.asString();
+			//llinfos << "baked texture url: " << url << llendl;
 		}
 	}
 	return url;
@@ -7323,14 +7327,25 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 	parseTEMessage(mesgsys, _PREHASH_ObjectData, -1, tec);
 //	dumpAvatarTEs( "POST processAvatarAppearance()" );
 
+	// Extract COF Version field hacked into local texture id.
+	LLUUID flags_id = ((LLUUID*)tec.image_data)[0];
+	S32 this_update_cof_version = (flags_id.mData[0] << 24) + (flags_id.mData[1] << 16) +(flags_id.mData[2] << 8) +flags_id.mData[3];
+	S32 message_type = (flags_id.mData[4] << 24) + (flags_id.mData[5] << 16) +(flags_id.mData[6] << 8) +flags_id.mData[7];
+
+	if (message_type == SERVER_GENERATED_APPEARANCE)
+	{
+		mUseServerBakes = true;
+	}
+	else
+	{
+		mUseServerBakes = false;
+	}
+
+	S32 last_update_request_cof_version = LLAppearanceMgr::instance().mLastUpdateRequestCOFVersion;
+
 	// Check for stale update.
-	if (isSelf() && LLAppearanceMgr::instance().useServerTextureBaking())
+	if (isSelf() && mUseServerBakes)
 	{
-		// Extract COF Version field hacked into local texture id.
-		LLUUID texture_id = ((LLUUID*)tec.image_data)[0];
-		S32 last_update_request_cof_version = LLAppearanceMgr::instance().mLastUpdateRequestCOFVersion;
-		S32 *s_words = (S32*) texture_id.mData;
-		S32 this_update_cof_version = s_words[0];
 		if ((this_update_cof_version > 0) && 
 			(this_update_cof_version < last_update_request_cof_version))
 		{
@@ -7475,7 +7490,7 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 	// If all of the avatars are completely baked, release the global image caches to conserve memory.
 	LLVOAvatar::cullAvatarsByPixelArea();
 
-	if (isSelf() && LLAppearanceMgr::instance().useServerTextureBaking())
+	if (isSelf())
 	{
 		mUseLocalAppearance = false;
 	}
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
index 2b999891f90..4283c0e017c 100755
--- a/indra/newview/llvoavatar.h
+++ b/indra/newview/llvoavatar.h
@@ -702,6 +702,7 @@ class LLVOAvatar :
 	F32				mLastAppearanceBlendTime;
 	BOOL			mIsEditingAppearance;
 	BOOL			mUseLocalAppearance;
+	BOOL			mUseServerBakes;
 
 	//--------------------------------------------------------------------
 	// Clothing colors (convenience functions to access visual parameters)
-- 
GitLab


From dfce4c451c0b12f5836db1af0c26bffc316837fa Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Thu, 2 Aug 2012 22:54:01 +0000
Subject: [PATCH 028/436] Added AppearanceData block to AvatarAppearance
 message

---
 indra/llmessage/message_prehash.cpp        |  3 ++
 indra/llmessage/message_prehash.h          |  3 ++
 indra/newview/llvoavatar.cpp               | 38 ++++++++++++----------
 scripts/messages/message_template.msg      |  6 ++++
 scripts/messages/message_template.msg.sha1 |  2 +-
 5 files changed, 33 insertions(+), 19 deletions(-)

diff --git a/indra/llmessage/message_prehash.cpp b/indra/llmessage/message_prehash.cpp
index d7658862da4..c3fa7ff048c 100644
--- a/indra/llmessage/message_prehash.cpp
+++ b/indra/llmessage/message_prehash.cpp
@@ -1376,3 +1376,6 @@ char const* const _PREHASH_ProductSKU = LLMessageStringTable::getInstance()->get
 char const* const _PREHASH_SeeAVs = LLMessageStringTable::getInstance()->getString("SeeAVs");
 char const* const _PREHASH_AnyAVSounds = LLMessageStringTable::getInstance()->getString("AnyAVSounds");
 char const* const _PREHASH_GroupAVSounds = LLMessageStringTable::getInstance()->getString("GroupAVSounds");
+char const* const _PREHASH_AppearanceData = LLMessageStringTable::getInstance()->getString("AppearanceData");
+char const* const _PREHASH_AppearanceVersion = LLMessageStringTable::getInstance()->getString("AppearanceVersion");
+char const* const _PREHASH_CofVersion = LLMessageStringTable::getInstance()->getString("CofVersion");
diff --git a/indra/llmessage/message_prehash.h b/indra/llmessage/message_prehash.h
index da2b613f539..92146820030 100644
--- a/indra/llmessage/message_prehash.h
+++ b/indra/llmessage/message_prehash.h
@@ -1376,4 +1376,7 @@ extern char const* const _PREHASH_ProductSKU;
 extern char const* const _PREHASH_SeeAVs;
 extern char const* const _PREHASH_AnyAVSounds;
 extern char const* const _PREHASH_GroupAVSounds;
+extern char const* const _PREHASH_AppearanceData;
+extern char const* const _PREHASH_AppearanceVersion;
+extern char const* const _PREHASH_CofVersion;
 #endif
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index b7bb4e6b47a..0d85666d88a 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -192,8 +192,6 @@ const S32 MAX_BUBBLE_CHAT_UTTERANCES = 12;
 const F32 CHAT_FADE_TIME = 8.0;
 const F32 BUBBLE_CHAT_TIME = CHAT_FADE_TIME * 3.f;
 
-const S32 SERVER_GENERATED_APPEARANCE = 359949045;
-
 const LLColor4 DUMMY_COLOR = LLColor4(0.5,0.5,0.5,1.0);
 
 enum ERenderName
@@ -7355,12 +7353,21 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 	parseTEMessage(mesgsys, _PREHASH_ObjectData, -1, tec);
 //	dumpAvatarTEs( "POST processAvatarAppearance()" );
 
-	// Extract COF Version field hacked into local texture id.
-	LLUUID flags_id = ((LLUUID*)tec.image_data)[0];
-	S32 this_update_cof_version = (flags_id.mData[0] << 24) + (flags_id.mData[1] << 16) +(flags_id.mData[2] << 8) +flags_id.mData[3];
-	S32 message_type = (flags_id.mData[4] << 24) + (flags_id.mData[5] << 16) +(flags_id.mData[6] << 8) +flags_id.mData[7];
+	U8 appearance_version = 0;
+	S32 this_update_cof_version = LLViewerInventoryCategory::VERSION_UNKNOWN;
+	S32 last_update_request_cof_version = LLAppearanceMgr::instance().mLastUpdateRequestCOFVersion;
+	// For future use:
+	//U32 appearance_flags = 0;
+
+	if (mesgsys->has(_PREHASH_AppearanceData))
+	{
+		mesgsys->getU8Fast(_PREHASH_AppearanceData, _PREHASH_AppearanceVersion, appearance_version, 0);
+		mesgsys->getS32Fast(_PREHASH_AppearanceData, _PREHASH_CofVersion, this_update_cof_version, 0);
+		// For future use:
+		//mesgsys->getU32Fast(_PREHASH_AppearanceData, _PREHASH_Flags, appearance_flags, 0);
+	}
 
-	if (message_type == SERVER_GENERATED_APPEARANCE)
+	if (appearance_version > 0)
 	{
 		mUseServerBakes = true;
 	}
@@ -7369,19 +7376,14 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 		mUseServerBakes = false;
 	}
 
-	S32 last_update_request_cof_version = LLAppearanceMgr::instance().mLastUpdateRequestCOFVersion;
-
 	// Check for stale update.
-	if (isSelf() && mUseServerBakes)
+	if (mUseServerBakes && isSelf()
+		&& this_update_cof_version >= LLViewerInventoryCategory::VERSION_INITIAL
+		&& this_update_cof_version < last_update_request_cof_version)
 	{
-		if ((this_update_cof_version > 0) && 
-			(this_update_cof_version < last_update_request_cof_version))
-		{
-			llwarns << "Stale appearance update, wanted version " << last_update_request_cof_version
-					<< ", got " << this_update_cof_version << llendl;
-			return;
-		}
-		((LLUUID*)tec.image_data)[0].setNull();
+		llwarns << "Stale appearance update, wanted version " << last_update_request_cof_version
+				<< ", got " << this_update_cof_version << llendl;
+		return;
 	}
 	applyParsedTEMessage(tec);
 
diff --git a/scripts/messages/message_template.msg b/scripts/messages/message_template.msg
index 2cb0a833d4c..5b147db0843 100644
--- a/scripts/messages/message_template.msg
+++ b/scripts/messages/message_template.msg
@@ -3571,6 +3571,12 @@ version 2.0
 		VisualParam			Variable
 		{	ParamValue		U8	}
 	}
+	{
+		AppearanceData		Variable
+		{	AppearanceVersion	U8	}
+		{	CofVersion			S32	}
+		{	Flags				U32	}
+	}
 }
 
 // AvatarSitResponse - response to a request to sit on an object
diff --git a/scripts/messages/message_template.msg.sha1 b/scripts/messages/message_template.msg.sha1
index 6486d92851a..9e3dd21fb00 100644
--- a/scripts/messages/message_template.msg.sha1
+++ b/scripts/messages/message_template.msg.sha1
@@ -1 +1 @@
-465164e1a07f63d68c4ad1f00c19805dfb6ee2d7
\ No newline at end of file
+ac4e232bd595c8dd31bc67fd77bcf68d8e9e837c
\ No newline at end of file
-- 
GitLab


From 225ac5c487548ba7e62f3e15f1b941baba3a433c Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Fri, 3 Aug 2012 17:49:03 -0400
Subject: [PATCH 029/436] Added viewer param for appearance message version

---
 indra/newview/character/avatar_lad.xml | 11 +++++++++++
 1 file changed, 11 insertions(+)
 mode change 100644 => 100755 indra/newview/character/avatar_lad.xml

diff --git a/indra/newview/character/avatar_lad.xml b/indra/newview/character/avatar_lad.xml
old mode 100644
new mode 100755
index 99dbfcae51e..2b090c4fa4d
--- a/indra/newview/character/avatar_lad.xml
+++ b/indra/newview/character/avatar_lad.xml
@@ -12291,6 +12291,17 @@ render_pass="bump">
 	 <param_driver />
     </param>
 
+    <param
+     id="11000"
+     group="0"
+     name="AppearanceMessage_Version"
+     label="AppearanceMessage Version"
+     value_default="0"
+     value_min="0"
+     value_max="255">
+	 <param_driver />
+    </param>
+
   </driver_parameters>
 
   <morph_masks>
-- 
GitLab


From e7a63cb356d49925131edfadb5a0e8d5368a9096 Mon Sep 17 00:00:00 2001
From: "Nyx (Neal Orman)" <nyx@lindenlab.com>
Date: Tue, 14 Aug 2012 17:12:01 -0400
Subject: [PATCH 030/436] SH-3310 WIP setting up architecture for switching
 texture baking on per-region basis

Set up an architecture to minimize the use of the baked texture debug setting.
Instead concentrating on setting a per-region flag at the region handshake point.
This should be processed once the new regions are using the updated handshake.
The debug setting is being used in this one location as a placeholder.

Builds, but not fully tested/commented yet, passing this work off to Vir.
---
 indra/newview/llagent.cpp          |  2 +-
 indra/newview/llagentwearables.cpp |  2 +-
 indra/newview/llappearancemgr.cpp  | 10 +---------
 indra/newview/llappearancemgr.h    |  2 --
 indra/newview/llviewerregion.cpp   | 12 ++++++++++++
 indra/newview/llviewerregion.h     |  3 +++
 indra/newview/llvoavatar.cpp       |  4 ++--
 indra/newview/llvoavatar.h         |  7 ++++---
 indra/newview/llvoavatarself.cpp   | 24 ++++++++----------------
 indra/newview/llvoavatarself.h     |  1 -
 10 files changed, 32 insertions(+), 35 deletions(-)

diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index f99065aa08a..35280d5b5fb 100755
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -3772,7 +3772,7 @@ void LLAgent::requestLeaveGodMode()
 //-----------------------------------------------------------------------------
 void LLAgent::sendAgentSetAppearance()
 {
-	if (!isAgentAvatarValid() || LLAppearanceMgr::instance().useServerTextureBaking()) return;
+	if (!isAgentAvatarValid() || (getRegion() && getRegion()->getCentralBakeVersion())) return;
 
 	if (gAgentQueryManager.mNumPendingQueries > 0 && (isAgentAvatarValid() && gAgentAvatarp->isUsingBakedTextures())) 
 	{
diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp
index 0a721312f3b..e44b27c6afc 100755
--- a/indra/newview/llagentwearables.cpp
+++ b/indra/newview/llagentwearables.cpp
@@ -1597,7 +1597,7 @@ void LLAgentWearables::setWearableFinal(LLInventoryItem* new_item, LLWearable* n
 
 void LLAgentWearables::queryWearableCache()
 {
-	if (!areWearablesLoaded() || LLAppearanceMgr::instance().useServerTextureBaking())
+	if (!areWearablesLoaded() || (gAgent.getRegion() && gAgent.getRegion()->getCentralBakeVersion()))
 	{
 		return;
 	}
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index e27a21f7fde..237cc0b9f35 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -1743,7 +1743,7 @@ void LLAppearanceMgr::updateAppearanceFromCOF(bool update_base_outfit_ordering)
 	updateIsDirty();
 
 	// Send server request for appearance update
-	if (useServerTextureBaking())
+	if (gAgent.getRegion() && gAgent.getRegion()->getCentralBakeVersion())
 	{
 		requestServerAppearanceUpdate();
 	}
@@ -2599,14 +2599,6 @@ void LLAppearanceMgr::updateClothingOrderingInfo(LLUUID cat_id, bool update_base
 	if (inventory_changed) gInventory.notifyObservers();
 }
 
-// Should be true iff both the appropriate debug setting is enabled
-// and the corresponding cap has been found.
-bool LLAppearanceMgr::useServerTextureBaking()
-{
-	// TODO: add cap check.
-	return gSavedSettings.getBOOL("UseServerTextureBaking");
-}
-
 class RequestAgentUpdateAppearanceResponder: public LLHTTPClient::Responder
 {
 public:
diff --git a/indra/newview/llappearancemgr.h b/indra/newview/llappearancemgr.h
index 45291419c72..742833211ae 100755
--- a/indra/newview/llappearancemgr.h
+++ b/indra/newview/llappearancemgr.h
@@ -185,8 +185,6 @@ class LLAppearanceMgr: public LLSingleton<LLAppearanceMgr>
 
 	bool isInUpdateAppearanceFromCOF() { return mIsInUpdateAppearanceFromCOF; }
 
-	bool useServerTextureBaking();
-
 	void requestServerAppearanceUpdate();
 
 protected:
diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp
index 777475fe613..18f8e4e101b 100644
--- a/indra/newview/llviewerregion.cpp
+++ b/indra/newview/llviewerregion.cpp
@@ -1424,6 +1424,18 @@ void LLViewerRegion::unpackRegionHandshake()
 		mProductName = productName;
 	}
 
+
+	mCentralBakeVersion = (S32)gSavedSettings.getBOOL("UseServerTextureBaking");
+	/*
+	if (msg->getSize("RegionInfo4", "CentralBakesVersion") > 0)
+	{
+		msg->getS32("RegionInfo4", "CentralBakesVersion", mCentralBakeVersion);
+	}
+	else
+	{
+		mCentralBakeVersion = 0;
+	}
+	*/
 	LLVLComposition *compp = getComposition();
 	if (compp)
 	{
diff --git a/indra/newview/llviewerregion.h b/indra/newview/llviewerregion.h
index c483c6ef529..2428f56db49 100644
--- a/indra/newview/llviewerregion.h
+++ b/indra/newview/llviewerregion.h
@@ -277,6 +277,8 @@ class LLViewerRegion: public LLCapabilityProvider // implements this interface
 
 	F32 getLandHeightRegion(const LLVector3& region_pos);
 
+	U8 getCentralBakeVersion() { return mCentralBakeVersion; }
+
 	void getInfo(LLSD& info);
 	
 	bool meshRezEnabled() const;
@@ -390,6 +392,7 @@ class LLViewerRegion: public LLCapabilityProvider // implements this interface
 	F32 	mBillableFactor;
 	U32		mMaxTasks;				// max prim count
 	F32		mCameraDistanceSquared;	// updated once per frame
+	U8		mCentralBakeVersion;
 	
 	// Information for Homestead / CR-53
 	S32 mClassID;
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 45c7a59b24a..66674d8c19f 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -4727,7 +4727,7 @@ void LLVOAvatar::setTexEntry(const U8 index, const LLTextureEntry &te)
 const std::string LLVOAvatar::getImageURL(const U8 te, const LLUUID &uuid)
 {
 	std::string url = "";
-	if (LLAppearanceMgr::instance().useServerTextureBaking() && !gSavedSettings.getString("AgentAppearanceServiceURL").empty())
+	if (mUseServerBakes && !gSavedSettings.getString("AgentAppearanceServiceURL").empty())
 	{
 		const LLVOAvatarDictionary::TextureEntry* texture_entry = LLVOAvatarDictionary::getInstance()->getTexture((ETextureIndex)te);
 		if (texture_entry != NULL)
@@ -7312,7 +7312,7 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 	if( isSelf() )
 	{
 		llwarns << avString() << "Received AvatarAppearance for self" << llendl;
-		if( mFirstTEMessageReceived && !LLAppearanceMgr::instance().useServerTextureBaking())
+		if( mFirstTEMessageReceived && !mUseServerBakes)
 		{
 //			llinfos << "processAvatarAppearance end  " << mID << llendl;
 			return;
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
index 4283c0e017c..15f3721c734 100755
--- a/indra/newview/llvoavatar.h
+++ b/indra/newview/llvoavatar.h
@@ -696,13 +696,14 @@ class LLVOAvatar :
 	//--------------------------------------------------------------------
 public:
 	BOOL			getIsAppearanceAnimating() const { return mAppearanceAnimating; }
+	BOOL			isUsingBakedTextures() const { return mUseServerBakes; } // e.g. false if in appearance edit mode		
 private:
 	BOOL			mAppearanceAnimating;
 	LLFrameTimer	mAppearanceMorphTimer;
 	F32				mLastAppearanceBlendTime;
-	BOOL			mIsEditingAppearance;
-	BOOL			mUseLocalAppearance;
-	BOOL			mUseServerBakes;
+	BOOL			mIsEditingAppearance; // flag for if we're actively in appearance editing mode
+	BOOL			mUseLocalAppearance; // flag for if we're using a local composite
+	BOOL			mUseServerBakes; // flag for if baked textures should be fetched from baking service (false if they're temporary uploads)
 
 	//--------------------------------------------------------------------
 	// Clothing colors (convenience functions to access visual parameters)
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index e715a0d2f15..c5eb96e7409 100755
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -887,7 +887,7 @@ void LLVOAvatarSelf::removeMissingBakedTextures()
 			invalidateComposite(mBakedTextureDatas[i].mTexLayerSet, FALSE);
 		}
 		updateMeshTextures();
-		if (!LLAppearanceMgr::instance().useServerTextureBaking())
+		if (getRegion() && !getRegion()->getCentralBakeVersion())
 		{
 			requestLayerSetUploads();
 		}
@@ -1633,7 +1633,7 @@ void LLVOAvatarSelf::invalidateComposite( LLTexLayerSet* layerset, BOOL upload_r
 	layerset->requestUpdate();
 	layerset->invalidateMorphMasks();
 
-	if( upload_result  && !LLAppearanceMgr::instance().useServerTextureBaking())
+	if( upload_result  && (getRegion() && !getRegion()->getCentralBakeVersion()))
 	{
 		llassert(isSelf());
 
@@ -2616,15 +2616,6 @@ void LLVOAvatarSelf::processRebakeAvatarTextures(LLMessageSystem* msg, void**)
 	}
 }
 
-BOOL LLVOAvatarSelf::isUsingBakedTextures() const
-{
-	// Composite textures are used during appearance mode.
-	if (gAgentCamera.cameraCustomizeAvatar())
-		return FALSE;
-
-	return TRUE;
-}
-
 
 void LLVOAvatarSelf::forceBakeAllTextures(bool slam_for_debug)
 {
@@ -2725,14 +2716,15 @@ void LLVOAvatarSelf::onCustomizeStart(bool disable_camera_switch)
 // static
 void LLVOAvatarSelf::onCustomizeEnd(bool disable_camera_switch)
 {
-	gAgentAvatarp->mIsEditingAppearance = false;
-	if (!LLAppearanceMgr::instance().useServerTextureBaking())
-	{
-		gAgentAvatarp->mUseLocalAppearance = false;
-	}
 
 	if (isAgentAvatarValid())
 	{
+		gAgentAvatarp->mIsEditingAppearance = false;
+		if (gAgentAvatarp->getRegion() && !gAgentAvatarp->getRegion()->getCentralBakeVersion())
+		{
+			gAgentAvatarp->mUseLocalAppearance = false;
+		}
+
 		gAgentAvatarp->invalidateAll();
 
 		if (gSavedSettings.getBOOL("AppearanceCameraMovement") && !disable_camera_switch)
diff --git a/indra/newview/llvoavatarself.h b/indra/newview/llvoavatarself.h
index 5354f186797..c8f8b3791a3 100755
--- a/indra/newview/llvoavatarself.h
+++ b/indra/newview/llvoavatarself.h
@@ -229,7 +229,6 @@ class LLVOAvatarSelf :
 	void				setCachedBakedTexture(LLVOAvatarDefines::ETextureIndex i, const LLUUID& uuid);
 	void				forceBakeAllTextures(bool slam_for_debug = false);
 	static void			processRebakeAvatarTextures(LLMessageSystem* msg, void**);
-	BOOL				isUsingBakedTextures() const; // e.g. false if in appearance edit mode
 protected:
 	/*virtual*/ void	removeMissingBakedTextures();
 
-- 
GitLab


From 73dbcc10c5b35e2b55a454e600e86ddd7d24399d Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Wed, 15 Aug 2012 14:28:05 -0400
Subject: [PATCH 031/436] requestServerAppearanceUpdate bails out if
 corresponding cap is null

---
 indra/newview/llappearancemgr.cpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 3e02f98933f..5f1a880ebd1 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -2619,7 +2619,8 @@ void LLAppearanceMgr::requestServerAppearanceUpdate()
 	std::string url = gAgent.getRegion()->getCapability("UpdateAvatarAppearance");	
 	if (url.empty())
 	{
-		llwarns << "no cap for UpdateAvatarAppearance" << llendl;
+		llwarns << "NO CAP for UpdateAvatarAppearance. This is a bug." << llendl;
+		return;
 	}
 	
 	LLSD body;
-- 
GitLab


From 64d9705ae21c42f4c7869a414e250c5de251b143 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Fri, 17 Aug 2012 03:56:38 +0000
Subject: [PATCH 032/436] Expanding region flags to 64 bits.  Adding region
 protocol flags

---
 indra/llmessage/llregionflags.h            | 65 +++++++++++-----------
 indra/llmessage/message_prehash.cpp        |  4 ++
 indra/llmessage/message_prehash.h          |  4 ++
 indra/newview/llestateinfomodel.cpp        | 24 ++------
 indra/newview/llestateinfomodel.h          | 25 ++++++++-
 indra/newview/llfloaterbuyland.cpp         |  4 +-
 indra/newview/llfloatergodtools.cpp        | 34 +++++++----
 indra/newview/llfloatergodtools.h          | 14 ++---
 indra/newview/llfloaterland.cpp            |  8 +--
 indra/newview/llfloaterregioninfo.cpp      | 24 +++++---
 indra/newview/llfloaterreporter.cpp        |  3 -
 indra/newview/lllocationinputctrl.cpp      |  4 +-
 indra/newview/llpanelland.cpp              |  2 +-
 indra/newview/llpanelplaceprofile.cpp      |  4 +-
 indra/newview/llpaneltopinfobar.cpp        |  4 +-
 indra/newview/llregioninfomodel.cpp        | 14 ++++-
 indra/newview/llregioninfomodel.h          |  2 +-
 indra/newview/lltoolbrush.cpp              |  2 +-
 indra/newview/lltooldraganddrop.cpp        |  2 +-
 indra/newview/lltoolplacer.cpp             |  4 +-
 indra/newview/llviewermessage.cpp          | 14 ++++-
 indra/newview/llviewerparcelmgr.cpp        |  8 +--
 indra/newview/llviewerregion.cpp           | 40 ++++++-------
 indra/newview/llviewerregion.h             | 65 ++++++++++++++++++----
 indra/newview/llworldmap.cpp               |  2 +-
 indra/newview/llworldmap.h                 |  6 +-
 scripts/messages/message_template.msg      | 17 ++++++
 scripts/messages/message_template.msg.sha1 |  2 +-
 28 files changed, 258 insertions(+), 143 deletions(-)

diff --git a/indra/llmessage/llregionflags.h b/indra/llmessage/llregionflags.h
index 7b796a0fa87..1cf940918b7 100644
--- a/indra/llmessage/llregionflags.h
+++ b/indra/llmessage/llregionflags.h
@@ -28,95 +28,98 @@
 #define LL_LLREGIONFLAGS_H
 
 // Can you be hurt here? Should health be on?
-const U32 REGION_FLAGS_ALLOW_DAMAGE				= (1 << 0);
+const U64 REGION_FLAGS_ALLOW_DAMAGE				= (1 << 0);
 
 // Can you make landmarks here?
-const U32 REGION_FLAGS_ALLOW_LANDMARK			= (1 << 1);
+const U64 REGION_FLAGS_ALLOW_LANDMARK			= (1 << 1);
 
 // Do we reset the home position when someone teleports away from here?
-const U32 REGION_FLAGS_ALLOW_SET_HOME			= (1 << 2);
+const U64 REGION_FLAGS_ALLOW_SET_HOME			= (1 << 2);
 
 // Do we reset the home position when someone teleports away from here?
-const U32 REGION_FLAGS_RESET_HOME_ON_TELEPORT	= (1 << 3);
+const U64 REGION_FLAGS_RESET_HOME_ON_TELEPORT	= (1 << 3);
 
 // Does the sun move?
-const U32 REGION_FLAGS_SUN_FIXED				= (1 << 4);
+const U64 REGION_FLAGS_SUN_FIXED				= (1 << 4);
 
 // Can't change the terrain heightfield, even on owned parcels,
 // but can plant trees and grass.
-const U32 REGION_FLAGS_BLOCK_TERRAFORM			= (1 << 6);
+const U64 REGION_FLAGS_BLOCK_TERRAFORM			= (1 << 6);
 
 // Can't release, sell, or buy land.
-const U32 REGION_FLAGS_BLOCK_LAND_RESELL		= (1 << 7);
+const U64 REGION_FLAGS_BLOCK_LAND_RESELL		= (1 << 7);
 
 // All content wiped once per night
-const U32 REGION_FLAGS_SANDBOX					= (1 << 8);
-const U32 REGION_FLAGS_SKIP_COLLISIONS			= (1 << 12); // Pin all non agent rigid bodies
-const U32 REGION_FLAGS_SKIP_SCRIPTS				= (1 << 13);
-const U32 REGION_FLAGS_SKIP_PHYSICS				= (1 << 14); // Skip all physics
-const U32 REGION_FLAGS_EXTERNALLY_VISIBLE		= (1 << 15);
-const U32 REGION_FLAGS_ALLOW_RETURN_ENCROACHING_OBJECT = (1 << 16);
-const U32 REGION_FLAGS_ALLOW_RETURN_ENCROACHING_ESTATE_OBJECT = (1 << 17);
-const U32 REGION_FLAGS_BLOCK_DWELL				= (1 << 18);
+const U64 REGION_FLAGS_SANDBOX					= (1 << 8);
+const U64 REGION_FLAGS_SKIP_COLLISIONS			= (1 << 12); // Pin all non agent rigid bodies
+const U64 REGION_FLAGS_SKIP_SCRIPTS				= (1 << 13);
+const U64 REGION_FLAGS_SKIP_PHYSICS				= (1 << 14); // Skip all physics
+const U64 REGION_FLAGS_EXTERNALLY_VISIBLE		= (1 << 15);
+const U64 REGION_FLAGS_ALLOW_RETURN_ENCROACHING_OBJECT = (1 << 16);
+const U64 REGION_FLAGS_ALLOW_RETURN_ENCROACHING_ESTATE_OBJECT = (1 << 17);
+const U64 REGION_FLAGS_BLOCK_DWELL				= (1 << 18);
 
 // Is flight allowed?
-const U32 REGION_FLAGS_BLOCK_FLY				= (1 << 19);	
+const U64 REGION_FLAGS_BLOCK_FLY				= (1 << 19);	
 
 // Is direct teleport (p2p) allowed?
-const U32 REGION_FLAGS_ALLOW_DIRECT_TELEPORT	= (1 << 20);
+const U64 REGION_FLAGS_ALLOW_DIRECT_TELEPORT	= (1 << 20);
 
 // Is there an administrative override on scripts in the region at the
 // moment. This is the similar skip scripts, except this flag is
 // presisted in the database on an estate level.
-const U32 REGION_FLAGS_ESTATE_SKIP_SCRIPTS		= (1 << 21);
+const U64 REGION_FLAGS_ESTATE_SKIP_SCRIPTS		= (1 << 21);
 
-const U32 REGION_FLAGS_RESTRICT_PUSHOBJECT		= (1 << 22);
+const U64 REGION_FLAGS_RESTRICT_PUSHOBJECT		= (1 << 22);
 
-const U32 REGION_FLAGS_DENY_ANONYMOUS			= (1 << 23);
+const U64 REGION_FLAGS_DENY_ANONYMOUS			= (1 << 23);
 
-const U32 REGION_FLAGS_ALLOW_PARCEL_CHANGES		= (1 << 26);
+const U64 REGION_FLAGS_ALLOW_PARCEL_CHANGES		= (1 << 26);
 
-const U32 REGION_FLAGS_ALLOW_VOICE = (1 << 28);
+const U64 REGION_FLAGS_ALLOW_VOICE = (1 << 28);
 
-const U32 REGION_FLAGS_BLOCK_PARCEL_SEARCH = (1 << 29);
-const U32 REGION_FLAGS_DENY_AGEUNVERIFIED	= (1 << 30);
+const U64 REGION_FLAGS_BLOCK_PARCEL_SEARCH = (1 << 29);
+const U64 REGION_FLAGS_DENY_AGEUNVERIFIED	= (1 << 30);
 
-const U32 REGION_FLAGS_DEFAULT = REGION_FLAGS_ALLOW_LANDMARK |
+const U64 REGION_FLAGS_DEFAULT = REGION_FLAGS_ALLOW_LANDMARK |
 								 REGION_FLAGS_ALLOW_SET_HOME |
                                  REGION_FLAGS_ALLOW_PARCEL_CHANGES |
                                  REGION_FLAGS_ALLOW_VOICE;
 
 
-const U32 REGION_FLAGS_PRELUDE_SET = REGION_FLAGS_RESET_HOME_ON_TELEPORT;
-const U32 REGION_FLAGS_PRELUDE_UNSET = REGION_FLAGS_ALLOW_LANDMARK 
+const U64 REGION_FLAGS_PRELUDE_SET = REGION_FLAGS_RESET_HOME_ON_TELEPORT;
+const U64 REGION_FLAGS_PRELUDE_UNSET = REGION_FLAGS_ALLOW_LANDMARK 
 									   | REGION_FLAGS_ALLOW_SET_HOME;
 
-const U32 REGION_FLAGS_ESTATE_MASK = REGION_FLAGS_EXTERNALLY_VISIBLE
+const U64 REGION_FLAGS_ESTATE_MASK = REGION_FLAGS_EXTERNALLY_VISIBLE
 									 | REGION_FLAGS_SUN_FIXED
 									 | REGION_FLAGS_DENY_ANONYMOUS
 									 | REGION_FLAGS_DENY_AGEUNVERIFIED;
 
-inline BOOL is_prelude( U32 flags )
+inline BOOL is_prelude( U64 flags )
 {
 	// definition of prelude does not depend on fixed-sun
 	return 0 == (flags & REGION_FLAGS_PRELUDE_UNSET)
 		   && 0 != (flags & REGION_FLAGS_PRELUDE_SET);
 }
 
-inline U32 set_prelude_flags(U32 flags)
+inline U64 set_prelude_flags(U64 flags)
 {
 	// also set the sun-fixed flag
 	return ((flags & ~REGION_FLAGS_PRELUDE_UNSET)
 			| (REGION_FLAGS_PRELUDE_SET | REGION_FLAGS_SUN_FIXED));
 }
 
-inline U32 unset_prelude_flags(U32 flags)
+inline U64 unset_prelude_flags(U64 flags)
 {
 	// also unset the fixed-sun flag
 	return ((flags | REGION_FLAGS_PRELUDE_UNSET) 
 			& ~(REGION_FLAGS_PRELUDE_SET | REGION_FLAGS_SUN_FIXED));
 }
 
+// Region protocols
+const U64 REGION_PROTOCOLS_AGENT_APPEARANCE_SERVICE = (1 << 0);
+
 // estate constants. Need to match first few etries in indra.estate table.
 const U32 ESTATE_ALL = 0; // will not match in db, reserved key for logic
 const U32 ESTATE_MAINLAND = 1;
diff --git a/indra/llmessage/message_prehash.cpp b/indra/llmessage/message_prehash.cpp
index c3fa7ff048c..39cfb6019e5 100644
--- a/indra/llmessage/message_prehash.cpp
+++ b/indra/llmessage/message_prehash.cpp
@@ -279,6 +279,8 @@ char const* const _PREHASH_GrabOffset = LLMessageStringTable::getInstance()->get
 char const* const _PREHASH_SimPort = LLMessageStringTable::getInstance()->getString("SimPort");
 char const* const _PREHASH_PricePerMeter = LLMessageStringTable::getInstance()->getString("PricePerMeter");
 char const* const _PREHASH_RegionFlags = LLMessageStringTable::getInstance()->getString("RegionFlags");
+char const* const _PREHASH_RegionFlagsExtended = LLMessageStringTable::getInstance()->getString("RegionFlagsExtended");
+char const* const _PREHASH_RegionProtocols = LLMessageStringTable::getInstance()->getString("RegionProtocols");
 char const* const _PREHASH_VoteResult = LLMessageStringTable::getInstance()->getString("VoteResult");
 char const* const _PREHASH_ParcelDirFeeEstimate = LLMessageStringTable::getInstance()->getString("ParcelDirFeeEstimate");
 char const* const _PREHASH_ModifyBlock = LLMessageStringTable::getInstance()->getString("ModifyBlock");
@@ -305,6 +307,8 @@ char const* const _PREHASH_ViewerStartAuction = LLMessageStringTable::getInstanc
 char const* const _PREHASH_StartAuction = LLMessageStringTable::getInstance()->getString("StartAuction");
 char const* const _PREHASH_DuplicateFlags = LLMessageStringTable::getInstance()->getString("DuplicateFlags");
 char const* const _PREHASH_RegionInfo2 = LLMessageStringTable::getInstance()->getString("RegionInfo2");
+char const* const _PREHASH_RegionInfo3 = LLMessageStringTable::getInstance()->getString("RegionInfo3");
+char const* const _PREHASH_RegionInfo4 = LLMessageStringTable::getInstance()->getString("RegionInfo4");
 char const* const _PREHASH_TextColor = LLMessageStringTable::getInstance()->getString("TextColor");
 char const* const _PREHASH_SlaveID = LLMessageStringTable::getInstance()->getString("SlaveID");
 char const* const _PREHASH_Charter = LLMessageStringTable::getInstance()->getString("Charter");
diff --git a/indra/llmessage/message_prehash.h b/indra/llmessage/message_prehash.h
index 92146820030..573e10dc0bc 100644
--- a/indra/llmessage/message_prehash.h
+++ b/indra/llmessage/message_prehash.h
@@ -279,6 +279,8 @@ extern char const* const _PREHASH_GrabOffset;
 extern char const* const _PREHASH_SimPort;
 extern char const* const _PREHASH_PricePerMeter;
 extern char const* const _PREHASH_RegionFlags;
+extern char const* const _PREHASH_RegionFlagsExtended;
+extern char const* const _PREHASH_RegionProtocols;
 extern char const* const _PREHASH_VoteResult;
 extern char const* const _PREHASH_ParcelDirFeeEstimate;
 extern char const* const _PREHASH_ModifyBlock;
@@ -305,6 +307,8 @@ extern char const* const _PREHASH_ViewerStartAuction;
 extern char const* const _PREHASH_StartAuction;
 extern char const* const _PREHASH_DuplicateFlags;
 extern char const* const _PREHASH_RegionInfo2;
+extern char const* const _PREHASH_RegionInfo3;
+extern char const* const _PREHASH_RegionInfo4;
 extern char const* const _PREHASH_TextColor;
 extern char const* const _PREHASH_SlaveID;
 extern char const* const _PREHASH_Charter;
diff --git a/indra/newview/llestateinfomodel.cpp b/indra/newview/llestateinfomodel.cpp
index 7ed22d68f60..0faa8883988 100644
--- a/indra/newview/llestateinfomodel.cpp
+++ b/indra/newview/llestateinfomodel.cpp
@@ -65,12 +65,12 @@ void LLEstateInfoModel::sendEstateInfo()
 	}
 }
 
-bool LLEstateInfoModel::getUseFixedSun()			const {	return mFlags & REGION_FLAGS_SUN_FIXED;				}
-bool LLEstateInfoModel::getIsExternallyVisible()	const {	return mFlags & REGION_FLAGS_EXTERNALLY_VISIBLE;	}
-bool LLEstateInfoModel::getAllowDirectTeleport()	const {	return mFlags & REGION_FLAGS_ALLOW_DIRECT_TELEPORT;	}
-bool LLEstateInfoModel::getDenyAnonymous()			const {	return mFlags & REGION_FLAGS_DENY_ANONYMOUS; 		}
-bool LLEstateInfoModel::getDenyAgeUnverified()		const {	return mFlags & REGION_FLAGS_DENY_AGEUNVERIFIED;	}
-bool LLEstateInfoModel::getAllowVoiceChat()			const {	return mFlags & REGION_FLAGS_ALLOW_VOICE;			}
+bool LLEstateInfoModel::getUseFixedSun()			const {	return getFlag(REGION_FLAGS_SUN_FIXED);				}
+bool LLEstateInfoModel::getIsExternallyVisible()	const {	return getFlag(REGION_FLAGS_EXTERNALLY_VISIBLE);	}
+bool LLEstateInfoModel::getAllowDirectTeleport()	const {	return getFlag(REGION_FLAGS_ALLOW_DIRECT_TELEPORT);	}
+bool LLEstateInfoModel::getDenyAnonymous()			const {	return getFlag(REGION_FLAGS_DENY_ANONYMOUS); 		}
+bool LLEstateInfoModel::getDenyAgeUnverified()		const {	return getFlag(REGION_FLAGS_DENY_AGEUNVERIFIED);	}
+bool LLEstateInfoModel::getAllowVoiceChat()			const {	return getFlag(REGION_FLAGS_ALLOW_VOICE);			}
 
 void LLEstateInfoModel::setUseFixedSun(bool val)			{ setFlag(REGION_FLAGS_SUN_FIXED, 				val);	}
 void LLEstateInfoModel::setIsExternallyVisible(bool val)	{ setFlag(REGION_FLAGS_EXTERNALLY_VISIBLE,		val);	}
@@ -199,18 +199,6 @@ void LLEstateInfoModel::commitEstateInfoDataserver()
 	gAgent.sendMessage();
 }
 
-void LLEstateInfoModel::setFlag(U32 flag, bool val)
-{
-	if (val)
-	{
-		mFlags |= flag;
-	}
-	else
-	{
-		mFlags &= ~flag;
-	}
-}
-
 std::string LLEstateInfoModel::getInfoDump()
 {
 	LLSD dump;
diff --git a/indra/newview/llestateinfomodel.h b/indra/newview/llestateinfomodel.h
index 56391eda912..538f2f7c756 100644
--- a/indra/newview/llestateinfomodel.h
+++ b/indra/newview/llestateinfomodel.h
@@ -85,19 +85,38 @@ class LLEstateInfoModel : public LLSingleton<LLEstateInfoModel>
 private:
 	bool commitEstateInfoCaps();
 	void commitEstateInfoDataserver();
-	U32  getFlags() const { return mFlags; }
-	void setFlag(U32 flag, bool val);
+	inline bool getFlag(U64 flag) const;
+	inline void setFlag(U64 flag, bool val);
+	U64  getFlags() const { return mFlags; }
 	std::string getInfoDump();
 
 	// estate info
 	std::string	mName;			/// estate name
 	LLUUID		mOwnerID;		/// estate owner id
 	U32			mID;			/// estate id
-	U32			mFlags;			/// estate flags
+	U64			mFlags;			/// estate flags
 	F32			mSunHour;		/// estate sun hour
 
 	update_signal_t mUpdateSignal; /// emitted when we receive update from sim
 	update_signal_t mCommitSignal; /// emitted when our update gets applied to sim
 };
 
+inline bool LLEstateInfoModel::getFlag(U64 flag) const
+{
+	return ((mFlags & flag) != 0);
+}
+
+inline void LLEstateInfoModel::setFlag(U64 flag, bool val)
+{
+	if (val)
+	{
+		mFlags |= flag;
+	}
+	else
+	{
+		mFlags &= ~flag;
+	}
+}
+
+
 #endif // LL_LLESTATEINFOMODEL_H
diff --git a/indra/newview/llfloaterbuyland.cpp b/indra/newview/llfloaterbuyland.cpp
index 8223e89b647..42857b2aa21 100644
--- a/indra/newview/llfloaterbuyland.cpp
+++ b/indra/newview/llfloaterbuyland.cpp
@@ -538,7 +538,7 @@ void LLFloaterBuyLandUI::updateCovenantInfo()
 	LLTextBox* resellable_clause = getChild<LLTextBox>("resellable_clause");
 	if (resellable_clause)
 	{
-		if (region->getRegionFlags() & REGION_FLAGS_BLOCK_LAND_RESELL)
+		if (region->getRegionFlag(REGION_FLAGS_BLOCK_LAND_RESELL))
 		{
 			resellable_clause->setText(getString("can_not_resell"));
 		}
@@ -551,7 +551,7 @@ void LLFloaterBuyLandUI::updateCovenantInfo()
 	LLTextBox* changeable_clause = getChild<LLTextBox>("changeable_clause");
 	if (changeable_clause)
 	{
-		if (region->getRegionFlags() & REGION_FLAGS_ALLOW_PARCEL_CHANGES)
+		if (region->getRegionFlag(REGION_FLAGS_ALLOW_PARCEL_CHANGES))
 		{
 			changeable_clause->setText(getString("can_change"));
 		}
diff --git a/indra/newview/llfloatergodtools.cpp b/indra/newview/llfloatergodtools.cpp
index fb905eae116..aac8f5bfc1a 100644
--- a/indra/newview/llfloatergodtools.cpp
+++ b/indra/newview/llfloatergodtools.cpp
@@ -164,9 +164,9 @@ LLFloaterGodTools::~LLFloaterGodTools()
 }
 
 
-U32 LLFloaterGodTools::computeRegionFlags() const
+U64 LLFloaterGodTools::computeRegionFlags() const
 {
-	U32 flags = gAgent.getRegion()->getRegionFlags();
+	U64 flags = gAgent.getRegion()->getRegionFlags();
 	if (mPanelRegionTools) flags = mPanelRegionTools->computeRegionFlags(flags);
 	if (mPanelObjectTools) flags = mPanelObjectTools->computeRegionFlags(flags);
 	return flags;
@@ -210,7 +210,7 @@ void LLFloaterGodTools::processRegionInfo(LLMessageSystem* msg)
 	if (!msg) return;
 
 	//const S32 SIM_NAME_BUF = 256;
-	U32 region_flags;
+	U64 region_flags;
 	U8 sim_access;
 	U8 agent_limit;
 	std::string sim_name;
@@ -231,13 +231,23 @@ void LLFloaterGodTools::processRegionInfo(LLMessageSystem* msg)
 	msg->getStringFast(_PREHASH_RegionInfo, _PREHASH_SimName, sim_name);
 	msg->getU32Fast(_PREHASH_RegionInfo, _PREHASH_EstateID, estate_id);
 	msg->getU32Fast(_PREHASH_RegionInfo, _PREHASH_ParentEstateID, parent_estate_id);
-	msg->getU32Fast(_PREHASH_RegionInfo, _PREHASH_RegionFlags, region_flags);
 	msg->getU8Fast(_PREHASH_RegionInfo, _PREHASH_SimAccess, sim_access);
 	msg->getU8Fast(_PREHASH_RegionInfo, _PREHASH_MaxAgents, agent_limit);
 	msg->getF32Fast(_PREHASH_RegionInfo, _PREHASH_ObjectBonusFactor, object_bonus_factor);
 	msg->getF32Fast(_PREHASH_RegionInfo, _PREHASH_BillableFactor, billable_factor);
 	msg->getF32Fast(_PREHASH_RegionInfo, _PREHASH_WaterHeight, water_height);
 
+	if (msg->has(_PREHASH_RegionInfo3))
+	{
+		msg->getU64Fast(_PREHASH_RegionInfo3, _PREHASH_RegionFlags, region_flags);
+	}
+	else
+	{
+		U32 flags = 0;
+		msg->getU32Fast(_PREHASH_RegionInfo, _PREHASH_RegionFlags, flags);
+		region_flags = flags;
+	}
+
 	if (host != gAgent.getRegionHost())
 	{
 		// Update is for a different region than the one we're in.
@@ -434,7 +444,7 @@ LLPanelRegionTools::~LLPanelRegionTools()
 	// base class will take care of everything
 }
 
-U32 LLPanelRegionTools::computeRegionFlags(U32 flags) const
+U64 LLPanelRegionTools::computeRegionFlags(U64 flags) const
 {
 	flags &= getRegionFlagsMask();
 	flags |= getRegionFlags();
@@ -562,9 +572,9 @@ S32 LLPanelRegionTools::getGridPosY() const
 	return getChild<LLUICtrl>("gridposy")->getValue().asInteger();
 }
 
-U32 LLPanelRegionTools::getRegionFlags() const
+U64 LLPanelRegionTools::getRegionFlags() const
 {
-	U32 flags = 0x0;
+	U64 flags = 0x0;
 	flags = getChild<LLUICtrl>("check prelude")->getValue().asBoolean()  
 					? set_prelude_flags(flags)
 					: unset_prelude_flags(flags);
@@ -601,9 +611,9 @@ U32 LLPanelRegionTools::getRegionFlags() const
 	return flags;
 }
 
-U32 LLPanelRegionTools::getRegionFlagsMask() const
+U64 LLPanelRegionTools::getRegionFlagsMask() const
 {
-	U32 flags = 0xffffffff;
+	U64 flags = 0xFFFFFFFFFFFFFFFFULL;
 	flags = getChild<LLUICtrl>("check prelude")->getValue().asBoolean()
 				? set_prelude_flags(flags)
 				: unset_prelude_flags(flags);
@@ -684,7 +694,7 @@ void LLPanelRegionTools::setParentEstateID(U32 id)
 	getChild<LLUICtrl>("parentestate")->setValue((S32)id);
 }
 
-void LLPanelRegionTools::setCheckFlags(U32 flags)
+void LLPanelRegionTools::setCheckFlags(U64 flags)
 {
 	getChild<LLUICtrl>("check prelude")->setValue(is_prelude(flags) ? TRUE : FALSE);
 	getChild<LLUICtrl>("check fixed sun")->setValue(flags & REGION_FLAGS_SUN_FIXED ? TRUE : FALSE);
@@ -943,7 +953,7 @@ void LLPanelObjectTools::refresh()
 }
 
 
-U32 LLPanelObjectTools::computeRegionFlags(U32 flags) const
+U64 LLPanelObjectTools::computeRegionFlags(U64 flags) const
 {
 	if (getChild<LLUICtrl>("disable scripts")->getValue().asBoolean())
 	{
@@ -973,7 +983,7 @@ U32 LLPanelObjectTools::computeRegionFlags(U32 flags) const
 }
 
 
-void LLPanelObjectTools::setCheckFlags(U32 flags)
+void LLPanelObjectTools::setCheckFlags(U64 flags)
 {
 	getChild<LLUICtrl>("disable scripts")->setValue(flags & REGION_FLAGS_SKIP_SCRIPTS ? TRUE : FALSE);
 	getChild<LLUICtrl>("disable collisions")->setValue(flags & REGION_FLAGS_SKIP_COLLISIONS ? TRUE : FALSE);
diff --git a/indra/newview/llfloatergodtools.h b/indra/newview/llfloatergodtools.h
index 1aa8b838fb7..cbaeee70518 100644
--- a/indra/newview/llfloatergodtools.h
+++ b/indra/newview/llfloatergodtools.h
@@ -98,7 +98,7 @@ class LLFloaterGodTools
 	~LLFloaterGodTools();
 	
 protected:
-	U32 computeRegionFlags() const;
+	U64 computeRegionFlags() const;
 
 protected:
 
@@ -147,8 +147,8 @@ class LLPanelRegionTools
 	const std::string getSimName() const;
 	U32 getEstateID() const;
 	U32 getParentEstateID() const;
-	U32 getRegionFlags() const;
-	U32 getRegionFlagsMask() const;
+	U64 getRegionFlags() const;
+	U64 getRegionFlagsMask() const;
 	F32 getBillableFactor() const;
 	S32 getPricePerMeter() const;
 	S32 getGridPosX() const;
@@ -160,7 +160,7 @@ class LLPanelRegionTools
 	void setSimName(const std::string& name);
 	void setEstateID(U32 id);
 	void setParentEstateID(U32 id);
-	void setCheckFlags(U32 flags);
+	void setCheckFlags(U64 flags);
 	void setBillableFactor(F32 billable_factor);
 	void setPricePerMeter(S32 price);
 	void setGridPosX(S32 pos);
@@ -168,7 +168,7 @@ class LLPanelRegionTools
 	void setRedirectGridX(S32 pos);
 	void setRedirectGridY(S32 pos);
 
-	U32 computeRegionFlags(U32 initial_flags) const;
+	U64 computeRegionFlags(U64 initial_flags) const;
 	void clearAllWidgets();
 	void enableAllWidgets();
 
@@ -218,10 +218,10 @@ class LLPanelObjectTools
 	/*virtual*/ void refresh();
 
 	void setTargetAvatar(const LLUUID& target_id);
-	U32 computeRegionFlags(U32 initial_flags) const;
+	U64 computeRegionFlags(U64 initial_flags) const;
 	void clearAllWidgets();
 	void enableAllWidgets();
-	void setCheckFlags(U32 flags);
+	void setCheckFlags(U64 flags);
 
 	void onChangeAnything();
 	void onApplyChanges();
diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp
index 55f3d548ec6..ce95d8bacfe 100644
--- a/indra/newview/llfloaterland.cpp
+++ b/indra/newview/llfloaterland.cpp
@@ -557,7 +557,7 @@ void LLPanelLandGeneral::refresh()
 		BOOL is_leased = (LLParcel::OS_LEASED == parcel->getOwnershipStatus());
 		BOOL region_xfer = FALSE;
 		if(regionp
-		   && !(regionp->getRegionFlags() & REGION_FLAGS_BLOCK_LAND_RESELL))
+		   && !(regionp->getRegionFlag(REGION_FLAGS_BLOCK_LAND_RESELL)))
 		{
 			region_xfer = TRUE;
 		}
@@ -2117,7 +2117,7 @@ void LLPanelLandOptions::refreshSearch()
 			LLViewerParcelMgr::isParcelModifiableByAgent(
 				parcel, GP_LAND_CHANGE_IDENTITY)
 			&& region
-			&& !(region->getRegionFlags() & REGION_FLAGS_BLOCK_PARCEL_SEARCH);
+			&& !(region->getRegionFlag(REGION_FLAGS_BLOCK_PARCEL_SEARCH));
 
 	// There is a bug with this panel whereby the Show Directory bit can be 
 	// slammed off by the Region based on an override.  Since this data is cached
@@ -2866,7 +2866,7 @@ void LLPanelLandCovenant::refresh()
 	LLTextBox* resellable_clause = getChild<LLTextBox>("resellable_clause");
 	if (resellable_clause)
 	{
-		if (region->getRegionFlags() & REGION_FLAGS_BLOCK_LAND_RESELL)
+		if (region->getRegionFlag(REGION_FLAGS_BLOCK_LAND_RESELL))
 		{
 			resellable_clause->setText(getString("can_not_resell"));
 		}
@@ -2879,7 +2879,7 @@ void LLPanelLandCovenant::refresh()
 	LLTextBox* changeable_clause = getChild<LLTextBox>("changeable_clause");
 	if (changeable_clause)
 	{
-		if (region->getRegionFlags() & REGION_FLAGS_ALLOW_PARCEL_CHANGES)
+		if (region->getRegionFlag(REGION_FLAGS_ALLOW_PARCEL_CHANGES))
 		{
 			changeable_clause->setText(getString("can_change"));
 		}
diff --git a/indra/newview/llfloaterregioninfo.cpp b/indra/newview/llfloaterregioninfo.cpp
index fe29bb38c73..1d9f519d702 100644
--- a/indra/newview/llfloaterregioninfo.cpp
+++ b/indra/newview/llfloaterregioninfo.cpp
@@ -318,7 +318,7 @@ void LLFloaterRegionInfo::processRegionInfo(LLMessageSystem* msg)
 	// extract message
 	std::string sim_name;
 	std::string sim_type = LLTrans::getString("land_type_unknown");
-	U32 region_flags;
+	U64 region_flags;
 	U8 agent_limit;
 	F32 object_bonus_factor;
 	U8 sim_access;
@@ -328,7 +328,6 @@ void LLFloaterRegionInfo::processRegionInfo(LLMessageSystem* msg)
 	BOOL use_estate_sun;
 	F32 sun_hour;
 	msg->getString("RegionInfo", "SimName", sim_name);
-	msg->getU32("RegionInfo", "RegionFlags", region_flags);
 	msg->getU8("RegionInfo", "MaxAgents", agent_limit);
 	msg->getF32("RegionInfo", "ObjectBonusFactor", object_bonus_factor);
 	msg->getU8("RegionInfo", "SimAccess", sim_access);
@@ -347,6 +346,17 @@ void LLFloaterRegionInfo::processRegionInfo(LLMessageSystem* msg)
 		LLTrans::findString(sim_type, sim_type); // try localizing sim product name
 	}
 
+	if (msg->has(_PREHASH_RegionInfo3))
+	{
+		msg->getU64("RegionInfo", "RegionFlags", region_flags);
+	}
+	else
+	{
+		U32 flags = 0;
+		msg->getU32("RegionInfo", "RegionFlags", flags);
+		region_flags = flags;
+	}
+
 	// GENERAL PANEL
 	panel = tab->getChild<LLPanel>("General");
 	panel->getChild<LLUICtrl>("region_text")->setValue(LLSD(sim_name));
@@ -378,9 +388,9 @@ void LLFloaterRegionInfo::processRegionInfo(LLMessageSystem* msg)
 	panel = tab->getChild<LLPanel>("Debug");
 
 	panel->getChild<LLUICtrl>("region_text")->setValue(LLSD(sim_name) );
-	panel->getChild<LLUICtrl>("disable_scripts_check")->setValue(LLSD((BOOL)(region_flags & REGION_FLAGS_SKIP_SCRIPTS)) );
-	panel->getChild<LLUICtrl>("disable_collisions_check")->setValue(LLSD((BOOL)(region_flags & REGION_FLAGS_SKIP_COLLISIONS)) );
-	panel->getChild<LLUICtrl>("disable_physics_check")->setValue(LLSD((BOOL)(region_flags & REGION_FLAGS_SKIP_PHYSICS)) );
+	panel->getChild<LLUICtrl>("disable_scripts_check")->setValue(LLSD((BOOL)((region_flags & REGION_FLAGS_SKIP_SCRIPTS) ? TRUE : FALSE )) );
+	panel->getChild<LLUICtrl>("disable_collisions_check")->setValue(LLSD((BOOL)((region_flags & REGION_FLAGS_SKIP_COLLISIONS) ? TRUE : FALSE )) );
+	panel->getChild<LLUICtrl>("disable_physics_check")->setValue(LLSD((BOOL)((region_flags & REGION_FLAGS_SKIP_PHYSICS) ? TRUE : FALSE )) );
 	panel->setCtrlsEnabled(allow_modify);
 
 	// TERRAIN PANEL
@@ -2276,7 +2286,7 @@ bool LLPanelEstateCovenant::refreshFromRegion(LLViewerRegion* region)
 	LLTextBox* resellable_clause = getChild<LLTextBox>("resellable_clause");
 	if (resellable_clause)
 	{
-		if (region->getRegionFlags() & REGION_FLAGS_BLOCK_LAND_RESELL)
+		if (region->getRegionFlag(REGION_FLAGS_BLOCK_LAND_RESELL))
 		{
 			resellable_clause->setText(getString("can_not_resell"));
 		}
@@ -2289,7 +2299,7 @@ bool LLPanelEstateCovenant::refreshFromRegion(LLViewerRegion* region)
 	LLTextBox* changeable_clause = getChild<LLTextBox>("changeable_clause");
 	if (changeable_clause)
 	{
-		if (region->getRegionFlags() & REGION_FLAGS_ALLOW_PARCEL_CHANGES)
+		if (region->getRegionFlag(REGION_FLAGS_ALLOW_PARCEL_CHANGES))
 		{
 			changeable_clause->setText(getString("can_change"));
 		}
diff --git a/indra/newview/llfloaterreporter.cpp b/indra/newview/llfloaterreporter.cpp
index 3ec1e372eb1..479bdd5ff70 100644
--- a/indra/newview/llfloaterreporter.cpp
+++ b/indra/newview/llfloaterreporter.cpp
@@ -110,9 +110,6 @@ LLFloaterReporter::LLFloaterReporter(const LLSD& key)
 // static
 void LLFloaterReporter::processRegionInfo(LLMessageSystem* msg)
 {
-	U32 region_flags;
-	msg->getU32("RegionInfo", "RegionFlags", region_flags);
-	
 	if ( LLFloaterReg::instanceVisible("reporter") )
 	{
 		LLNotificationsUtil::add("HelpReportAbuseEmailLL");
diff --git a/indra/newview/lllocationinputctrl.cpp b/indra/newview/lllocationinputctrl.cpp
index 8d9d70b50ee..5022dba9344 100644
--- a/indra/newview/lllocationinputctrl.cpp
+++ b/indra/newview/lllocationinputctrl.cpp
@@ -1217,11 +1217,11 @@ void LLLocationInputCtrl::onParcelIconClick(EParcelIcon icon)
 	case SCRIPTS_ICON:
 	{
 		LLViewerRegion* region = gAgent.getRegion();
-		if(region && region->getRegionFlags() & REGION_FLAGS_ESTATE_SKIP_SCRIPTS)
+		if(region && region->getRegionFlag(REGION_FLAGS_ESTATE_SKIP_SCRIPTS))
 		{
 			LLNotificationsUtil::add("ScriptsStopped");
 		}
-		else if(region && region->getRegionFlags() & REGION_FLAGS_SKIP_SCRIPTS)
+		else if(region && region->getRegionFlag(REGION_FLAGS_SKIP_SCRIPTS))
 		{
 			LLNotificationsUtil::add("ScriptsNotRunning");
 		}
diff --git a/indra/newview/llpanelland.cpp b/indra/newview/llpanelland.cpp
index 04c1a86f69f..5321ebc7773 100644
--- a/indra/newview/llpanelland.cpp
+++ b/indra/newview/llpanelland.cpp
@@ -166,7 +166,7 @@ void LLPanelLandInfo::refresh()
 		getChildView("button abandon land")->setEnabled(owner_release || manager_releaseable || gAgent.isGodlike());
 
 		// only mainland sims are subdividable by owner
-		if (regionp->getRegionFlags() && REGION_FLAGS_ALLOW_PARCEL_CHANGES)
+		if (regionp->getRegionFlag(REGION_FLAGS_ALLOW_PARCEL_CHANGES))
 		{
 			getChildView("button subdivide land")->setEnabled(owner_divide || manager_divideable || gAgent.isGodlike());
 		}
diff --git a/indra/newview/llpanelplaceprofile.cpp b/indra/newview/llpanelplaceprofile.cpp
index ce8057eeadd..884de65dd8e 100644
--- a/indra/newview/llpanelplaceprofile.cpp
+++ b/indra/newview/llpanelplaceprofile.cpp
@@ -572,7 +572,7 @@ void LLPanelPlaceProfile::displaySelectedParcelInfo(LLParcel* parcel,
 
 		mTerraformLimitsText->setText(parcel->getAllowTerraform() ? on : off);
 
-		if (region->getRegionFlags() & REGION_FLAGS_ALLOW_PARCEL_CHANGES)
+		if (region->getRegionFlag(REGION_FLAGS_ALLOW_PARCEL_CHANGES))
 		{
 			mSubdivideText->setText(getString("can_change"));
 		}
@@ -580,7 +580,7 @@ void LLPanelPlaceProfile::displaySelectedParcelInfo(LLParcel* parcel,
 		{
 			mSubdivideText->setText(getString("can_not_change"));
 		}
-		if (region->getRegionFlags() & REGION_FLAGS_BLOCK_LAND_RESELL)
+		if (region->getRegionFlag(REGION_FLAGS_BLOCK_LAND_RESELL))
 		{
 			mResaleText->setText(getString("can_not_resell"));
 		}
diff --git a/indra/newview/llpaneltopinfobar.cpp b/indra/newview/llpaneltopinfobar.cpp
index 280cc111796..fbd86df1f31 100644
--- a/indra/newview/llpaneltopinfobar.cpp
+++ b/indra/newview/llpaneltopinfobar.cpp
@@ -415,11 +415,11 @@ void LLPanelTopInfoBar::onParcelIconClick(EParcelIcon icon)
 	case SCRIPTS_ICON:
 	{
 		LLViewerRegion* region = gAgent.getRegion();
-		if(region && region->getRegionFlags() & REGION_FLAGS_ESTATE_SKIP_SCRIPTS)
+		if(region && region->getRegionFlag(REGION_FLAGS_ESTATE_SKIP_SCRIPTS))
 		{
 			LLNotificationsUtil::add("ScriptsStopped");
 		}
-		else if(region && region->getRegionFlags() & REGION_FLAGS_SKIP_SCRIPTS)
+		else if(region && region->getRegionFlag(REGION_FLAGS_SKIP_SCRIPTS))
 		{
 			LLNotificationsUtil::add("ScriptsNotRunning");
 		}
diff --git a/indra/newview/llregioninfomodel.cpp b/indra/newview/llregioninfomodel.cpp
index 698c4f9bb93..cc777d9297c 100644
--- a/indra/newview/llregioninfomodel.cpp
+++ b/indra/newview/llregioninfomodel.cpp
@@ -119,7 +119,7 @@ void LLRegionInfoModel::sendRegionTerrain(const LLUUID& invoice) const
 
 bool LLRegionInfoModel::getUseFixedSun() const
 {
-	return mRegionFlags & REGION_FLAGS_SUN_FIXED;
+	return ((mRegionFlags & REGION_FLAGS_SUN_FIXED) != 0);
 }
 
 void LLRegionInfoModel::setUseFixedSun(bool fixed)
@@ -141,7 +141,6 @@ void LLRegionInfoModel::update(LLMessageSystem* msg)
 	msg->getStringFast(_PREHASH_RegionInfo, _PREHASH_SimName, mSimName);
 	msg->getU32Fast(_PREHASH_RegionInfo, _PREHASH_EstateID, mEstateID);
 	msg->getU32Fast(_PREHASH_RegionInfo, _PREHASH_ParentEstateID, mParentEstateID);
-	msg->getU32Fast(_PREHASH_RegionInfo, _PREHASH_RegionFlags, mRegionFlags);
 	msg->getU8Fast(_PREHASH_RegionInfo, _PREHASH_SimAccess, mSimAccess);
 	msg->getU8Fast(_PREHASH_RegionInfo, _PREHASH_MaxAgents, mAgentLimit);
 	msg->getF32Fast(_PREHASH_RegionInfo, _PREHASH_ObjectBonusFactor, mObjectBonusFactor);
@@ -159,6 +158,17 @@ void LLRegionInfoModel::update(LLMessageSystem* msg)
 	msg->getF32(_PREHASH_RegionInfo, _PREHASH_SunHour, mSunHour);
 	LL_DEBUGS("Windlight Sync") << "Got region sun hour: " << mSunHour << LL_ENDL;
 
+	if (msg->has(_PREHASH_RegionInfo3))
+	{
+		msg->getU64Fast(_PREHASH_RegionInfo, _PREHASH_RegionFlags, mRegionFlags);
+	}
+	else
+	{
+		U32 flags = 0;
+		msg->getU32Fast(_PREHASH_RegionInfo, _PREHASH_RegionFlags, flags);
+		mRegionFlags = flags;
+	}
+
 	// the only reasonable way to decide if we actually have any data is to
 	// check to see if any of these fields have nonzero sizes
 	if (msg->getSize(_PREHASH_RegionInfo2, _PREHASH_ProductSKU) > 0 ||
diff --git a/indra/newview/llregioninfomodel.h b/indra/newview/llregioninfomodel.h
index 89efd827674..d22a0de4635 100644
--- a/indra/newview/llregioninfomodel.h
+++ b/indra/newview/llregioninfomodel.h
@@ -52,7 +52,7 @@ class LLRegionInfoModel : public LLSingleton<LLRegionInfoModel>
 	U8			mSimAccess;
 	U8			mAgentLimit;
 
-	U32			mRegionFlags;
+	U64			mRegionFlags;
 	U32			mEstateID;
 	U32			mParentEstateID;
 
diff --git a/indra/newview/lltoolbrush.cpp b/indra/newview/lltoolbrush.cpp
index aba43a97153..08d82ea9cbc 100644
--- a/indra/newview/lltoolbrush.cpp
+++ b/indra/newview/lltoolbrush.cpp
@@ -657,7 +657,7 @@ bool LLToolBrushLand::canTerraform(LLViewerRegion* regionp) const
 {
 	if (!regionp) return false;
 	if (regionp->canManageEstate()) return true;
-	return !(regionp->getRegionFlags() & REGION_FLAGS_BLOCK_TERRAFORM);
+	return !regionp->getRegionFlag(REGION_FLAGS_BLOCK_TERRAFORM);
 }
 
 // static
diff --git a/indra/newview/lltooldraganddrop.cpp b/indra/newview/lltooldraganddrop.cpp
index c69999981ce..3181e19cae6 100644
--- a/indra/newview/lltooldraganddrop.cpp
+++ b/indra/newview/lltooldraganddrop.cpp
@@ -1215,7 +1215,7 @@ void LLToolDragAndDrop::dropObject(LLViewerObject* raycast_target,
 	if (!item || !item->isFinished()) return;
 	
 	//if (regionp
-	//	&& (regionp->getRegionFlags() & REGION_FLAGS_SANDBOX))
+	//	&& (regionp->getRegionFlag(REGION_FLAGS_SANDBOX)))
 	//{
 	//	LLFirstUse::useSandbox();
 	//}
diff --git a/indra/newview/lltoolplacer.cpp b/indra/newview/lltoolplacer.cpp
index 93ba3b25587..641fbc50422 100644
--- a/indra/newview/lltoolplacer.cpp
+++ b/indra/newview/lltoolplacer.cpp
@@ -182,7 +182,7 @@ BOOL LLToolPlacer::addObject( LLPCode pcode, S32 x, S32 y, U8 use_physics )
 		return FALSE;
 	}
 
-	if (regionp->getRegionFlags() & REGION_FLAGS_SANDBOX)
+	if (regionp->getRegionFlag(REGION_FLAGS_SANDBOX))
 	{
 		//LLFirstUse::useSandbox();
 	}
@@ -485,7 +485,7 @@ BOOL LLToolPlacer::addDuplicate(S32 x, S32 y)
 										FALSE);				// select copy
 
 	if (regionp
-		&& (regionp->getRegionFlags() & REGION_FLAGS_SANDBOX))
+		&& (regionp->getRegionFlag(REGION_FLAGS_SANDBOX)))
 	{
 		//LLFirstUse::useSandbox();
 	}
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index 903f4437a7e..f399275c949 100755
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -4900,9 +4900,19 @@ void process_sim_stats(LLMessageSystem *msg, void **user_data)
 	// Various hacks that aren't statistics, but are being handled here.
 	//
 	U32 max_tasks_per_region;
-	U32 region_flags;
+	U64 region_flags;
 	msg->getU32("Region", "ObjectCapacity", max_tasks_per_region);
-	msg->getU32("Region", "RegionFlags", region_flags);
+
+	if (msg->has(_PREHASH_RegionInfo))
+	{
+		msg->getU64("RegionInfo", "RegionFlagsExtended", region_flags);
+	}
+	else
+	{
+		U32 flags = 0;
+		msg->getU32("Region", "RegionFlags", flags);
+		region_flags = flags;
+	}
 
 	LLViewerRegion* regionp = gAgent.getRegion();
 	if (regionp)
diff --git a/indra/newview/llviewerparcelmgr.cpp b/indra/newview/llviewerparcelmgr.cpp
index 2bb2e922798..0077632b4a7 100644
--- a/indra/newview/llviewerparcelmgr.cpp
+++ b/indra/newview/llviewerparcelmgr.cpp
@@ -696,8 +696,8 @@ bool LLViewerParcelMgr::allowAgentScripts(const LLViewerRegion* region, const LL
 	// This mirrors the traditional menu bar parcel icon code, but is not
 	// technically correct.
 	return region
-		&& !(region->getRegionFlags() & REGION_FLAGS_SKIP_SCRIPTS)
-		&& !(region->getRegionFlags() & REGION_FLAGS_ESTATE_SKIP_SCRIPTS)
+		&& !region->getRegionFlag(REGION_FLAGS_SKIP_SCRIPTS)
+		&& !region->getRegionFlag(REGION_FLAGS_ESTATE_SKIP_SCRIPTS)
 		&& parcel
 		&& parcel->getAllowOtherScripts();
 }
@@ -2121,7 +2121,7 @@ void LLViewerParcelMgr::startReleaseLand()
 		return;
 	}
 /*
-	if ((region->getRegionFlags() & REGION_FLAGS_BLOCK_LAND_RESELL)
+	if (region->getRegionFlag(REGION_FLAGS_BLOCK_LAND_RESELL)
 		&& !gAgent.isGodlike())
 	{
 		LLSD args;
@@ -2366,7 +2366,7 @@ void LLViewerParcelMgr::startDeedLandToGroup()
 	/*
 	if(!gAgent.isGodlike())
 	{
-		if((region->getRegionFlags() & REGION_FLAGS_BLOCK_LAND_RESELL)
+		if(region->getRegionFlag(REGION_FLAGS_BLOCK_LAND_RESELL)
 			&& (mCurrentParcel->getOwnerID() != region->getOwner()))
 		{
 			LLSD args;
diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp
index c6f1be44839..9ff00a1b822 100644
--- a/indra/newview/llviewerregion.cpp
+++ b/indra/newview/llviewerregion.cpp
@@ -279,6 +279,7 @@ LLViewerRegion::LLViewerRegion(const U64 &handle,
 	mZoning(""),
 	mIsEstateManager(FALSE),
 	mRegionFlags( REGION_FLAGS_DEFAULT ),
+	mRegionProtocols( 0 ),
 	mSimAccess( SIM_ACCESS_MIN ),
 	mBillableFactor(1.0),
 	mMaxTasks(DEFAULT_MAX_REGION_WIDE_PRIM_COUNT),
@@ -454,18 +455,6 @@ void LLViewerRegion::sendReliableMessage()
 	gMessageSystem->sendReliable(mImpl->mHost);
 }
 
-void LLViewerRegion::setFlags(BOOL b, U32 flags)
-{
-	if (b)
-	{
-		mRegionFlags |=  flags;
-	}
-	else
-	{
-		mRegionFlags &= ~flags;
-	}
-}
-
 void LLViewerRegion::setWaterHeight(F32 water_level)
 {
 	mImpl->mLandp->setWaterHeight(water_level);
@@ -478,10 +467,10 @@ F32 LLViewerRegion::getWaterHeight() const
 
 BOOL LLViewerRegion::isVoiceEnabled() const
 {
-	return (getRegionFlags() & REGION_FLAGS_ALLOW_VOICE);
+	return getRegionFlag(REGION_FLAGS_ALLOW_VOICE);
 }
 
-void LLViewerRegion::setRegionFlags(U32 flags)
+void LLViewerRegion::setRegionFlags(U64 flags)
 {
 	mRegionFlags = flags;
 }
@@ -574,7 +563,7 @@ std::string LLViewerRegion::getLocalizedSimProductName() const
 }
 
 // static
-std::string LLViewerRegion::regionFlagsToString(U32 flags)
+std::string LLViewerRegion::regionFlagsToString(U64 flags)
 {
 	std::string result;
 
@@ -1393,7 +1382,8 @@ void LLViewerRegion::unpackRegionHandshake()
 {
 	LLMessageSystem *msg = gMessageSystem;
 
-	U32 region_flags;
+	U64 region_flags = 0;
+	U64 region_protocols = 0;
 	U8 sim_access;
 	std::string sim_name;
 	LLUUID sim_owner;
@@ -1402,7 +1392,6 @@ void LLViewerRegion::unpackRegionHandshake()
 	F32 billable_factor;
 	LLUUID cache_id;
 
-	msg->getU32		("RegionInfo", "RegionFlags", region_flags);
 	msg->getU8		("RegionInfo", "SimAccess", sim_access);
 	msg->getString	("RegionInfo", "SimName", sim_name);
 	msg->getUUID	("RegionInfo", "SimOwner", sim_owner);
@@ -1411,7 +1400,20 @@ void LLViewerRegion::unpackRegionHandshake()
 	msg->getF32		("RegionInfo", "BillableFactor", billable_factor);
 	msg->getUUID	("RegionInfo", "CacheID", cache_id );
 
+	if (msg->has(_PREHASH_RegionInfo4))
+	{
+		msg->getU64Fast(_PREHASH_RegionInfo4, _PREHASH_RegionFlagsExtended, region_flags);
+		msg->getU64Fast(_PREHASH_RegionInfo4, _PREHASH_RegionProtocols, region_protocols);
+	}
+	else
+	{
+		U32 flags = 0;
+		msg->getU32Fast(_PREHASH_RegionInfo, _PREHASH_RegionFlags, flags);
+		region_flags = flags;
+	}
+
 	setRegionFlags(region_flags);
+	setRegionProtocols(region_protocols);
 	setSimAccess(sim_access);
 	setRegionNameAndZone(sim_name);
 	setOwner(sim_owner);
@@ -1812,7 +1814,7 @@ LLSpatialPartition* LLViewerRegion::getSpatialPartition(U32 type)
 
 // the viewer can not yet distinquish between normal- and estate-owned objects
 // so we collapse these two bits and enable the UI if either are set
-const U32 ALLOW_RETURN_ENCROACHING_OBJECT = REGION_FLAGS_ALLOW_RETURN_ENCROACHING_OBJECT
+const U64 ALLOW_RETURN_ENCROACHING_OBJECT = REGION_FLAGS_ALLOW_RETURN_ENCROACHING_OBJECT
 											| REGION_FLAGS_ALLOW_RETURN_ENCROACHING_ESTATE_OBJECT;
 
 bool LLViewerRegion::objectIsReturnable(const LLVector3& pos, const std::vector<LLBBox>& boxes) const
@@ -1820,7 +1822,7 @@ bool LLViewerRegion::objectIsReturnable(const LLVector3& pos, const std::vector<
 	return (mParcelOverlay != NULL)
 		&& (mParcelOverlay->isOwnedSelf(pos)
 			|| mParcelOverlay->isOwnedGroup(pos)
-			|| ((mRegionFlags & ALLOW_RETURN_ENCROACHING_OBJECT)
+			|| (getRegionFlag(ALLOW_RETURN_ENCROACHING_OBJECT)
 				&& mParcelOverlay->encroachesOwned(boxes)) );
 }
 
diff --git a/indra/newview/llviewerregion.h b/indra/newview/llviewerregion.h
index 2ddb17f1719..20d96ad9ac6 100644
--- a/indra/newview/llviewerregion.h
+++ b/indra/newview/llviewerregion.h
@@ -109,13 +109,13 @@ class LLViewerRegion: public LLCapabilityProvider // implements this interface
 	//void setAgentOffset(const LLVector3d &offset);
 	void updateRenderMatrix();
 
-	void setAllowDamage(BOOL b) { setFlags(b, REGION_FLAGS_ALLOW_DAMAGE); }
-	void setAllowLandmark(BOOL b) { setFlags(b, REGION_FLAGS_ALLOW_LANDMARK); }
-	void setAllowSetHome(BOOL b) { setFlags(b, REGION_FLAGS_ALLOW_SET_HOME); }
-	void setResetHomeOnTeleport(BOOL b) { setFlags(b, REGION_FLAGS_RESET_HOME_ON_TELEPORT); }
-	void setSunFixed(BOOL b) { setFlags(b, REGION_FLAGS_SUN_FIXED); }
-	void setBlockFly(BOOL b) { setFlags(b, REGION_FLAGS_BLOCK_FLY); }
-	void setAllowDirectTeleport(BOOL b) { setFlags(b, REGION_FLAGS_ALLOW_DIRECT_TELEPORT); }
+	void setAllowDamage(BOOL b) { setRegionFlag(REGION_FLAGS_ALLOW_DAMAGE, b); }
+	void setAllowLandmark(BOOL b) { setRegionFlag(REGION_FLAGS_ALLOW_LANDMARK, b); }
+	void setAllowSetHome(BOOL b) { setRegionFlag(REGION_FLAGS_ALLOW_SET_HOME, b); }
+	void setResetHomeOnTeleport(BOOL b) { setRegionFlag(REGION_FLAGS_RESET_HOME_ON_TELEPORT, b); }
+	void setSunFixed(BOOL b) { setRegionFlag(REGION_FLAGS_SUN_FIXED, b); }
+	void setBlockFly(BOOL b) { setRegionFlag(REGION_FLAGS_BLOCK_FLY, b); }
+	void setAllowDirectTeleport(BOOL b) { setRegionFlag(REGION_FLAGS_ALLOW_DIRECT_TELEPORT, b); }
 
 
 	inline BOOL getAllowDamage()			const;
@@ -156,8 +156,15 @@ class LLViewerRegion: public LLCapabilityProvider // implements this interface
 	LLViewerParcelOverlay *getParcelOverlay() const
 			{ return mParcelOverlay; }
 
-	void setRegionFlags(U32 flags);
-	U32 getRegionFlags() const					{ return mRegionFlags; }
+	inline void setRegionFlag(U64 flag, BOOL on);
+	inline BOOL getRegionFlag(U64 flag) const;
+	void setRegionFlags(U64 flags);
+	U64 getRegionFlags() const					{ return mRegionFlags; }
+
+	inline void setRegionProtocol(U64 protocol, BOOL on);
+	BOOL getRegionProtocol(U64 protocol) const;
+	void setRegionProtocols(U64 protocols)			{ mRegionProtocols = protocols; }
+	U64 getRegionProtocols() const					{ return mRegionProtocols; }
 
 	void setTimeDilation(F32 time_dilation);
 	F32  getTimeDilation() const				{ return mTimeDilation; }
@@ -195,7 +202,7 @@ class LLViewerRegion: public LLCapabilityProvider // implements this interface
 	std::string getLocalizedSimProductName() const;
 
 	// Returns "Sandbox", "Expensive", etc.
-	static std::string regionFlagsToString(U32 flags);
+	static std::string regionFlagsToString(U64 flags);
 
 	// Returns translated version of "Mature", "PG", "Adult", etc.
 	static std::string accessToString(U8 sim_access);
@@ -347,7 +354,6 @@ class LLViewerRegion: public LLCapabilityProvider // implements this interface
 protected:
 	void disconnectAllNeighbors();
 	void initStats();
-	void setFlags(BOOL b, U32 flags);
 
 public:
 	LLWind  mWind;
@@ -392,7 +398,8 @@ class LLViewerRegion: public LLCapabilityProvider // implements this interface
 	U32		mPingDelay;
 	F32		mDeltaTime;				// Time since last measurement of lastPackets, Bits, etc
 
-	U32		mRegionFlags;			// includes damage flags
+	U64		mRegionFlags;			// includes damage flags
+	U64		mRegionProtocols;		// protocols supported by this region
 	U8		mSimAccess;
 	F32 	mBillableFactor;
 	U32		mMaxTasks;				// max prim count
@@ -426,6 +433,40 @@ class LLViewerRegion: public LLCapabilityProvider // implements this interface
 	LLSD mSimulatorFeatures;
 };
 
+inline BOOL LLViewerRegion::getRegionProtocol(U64 protocol) const
+{
+	return ((mRegionProtocols & protocol) != 0);
+}
+
+inline void LLViewerRegion::setRegionProtocol(U64 protocol, BOOL on)
+{
+	if (on)
+	{
+		mRegionProtocols |= protocol;
+	}
+	else
+	{
+		mRegionProtocols &= ~protocol;
+	}
+}
+
+inline BOOL LLViewerRegion::getRegionFlag(U64 flag) const
+{
+	return ((mRegionFlags & flag) != 0);
+}
+
+inline void LLViewerRegion::setRegionFlag(U64 flag, BOOL on)
+{
+	if (on)
+	{
+		mRegionFlags |= flag;
+	}
+	else
+	{
+		mRegionFlags &= ~flag;
+	}
+}
+
 inline BOOL LLViewerRegion::getAllowDamage() const
 {
 	return ((mRegionFlags & REGION_FLAGS_ALLOW_DAMAGE) !=0);
diff --git a/indra/newview/llworldmap.cpp b/indra/newview/llworldmap.cpp
index 350ba39b45c..cb24e96d5bc 100644
--- a/indra/newview/llworldmap.cpp
+++ b/indra/newview/llworldmap.cpp
@@ -389,7 +389,7 @@ void LLWorldMap::reloadItems(bool force)
 // static public
 // Insert a region in the region map
 // returns true if region inserted, false otherwise
-bool LLWorldMap::insertRegion(U32 x_world, U32 y_world, std::string& name, LLUUID& image_id, U32 accesscode, U32 region_flags)
+bool LLWorldMap::insertRegion(U32 x_world, U32 y_world, std::string& name, LLUUID& image_id, U32 accesscode, U64 region_flags)
 {
 	// This region doesn't exist
 	if (accesscode == 255)
diff --git a/indra/newview/llworldmap.h b/indra/newview/llworldmap.h
index 73530b96940..c17feaa04b8 100644
--- a/indra/newview/llworldmap.h
+++ b/indra/newview/llworldmap.h
@@ -102,7 +102,7 @@ class LLSimInfo
 	// Setters
 	void setName(std::string& name) { mName = name; }
 	void setAccess (U32 accesscode) { mAccess = accesscode; }
-	void setRegionFlags (U32 region_flags) { mRegionFlags = region_flags; }
+	void setRegionFlags (U64 region_flags) { mRegionFlags = region_flags; }
 	void setLandForSaleImage (LLUUID image_id);
 //	void setWaterHeight (F32 water_height) { mWaterHeight = water_height; }
 
@@ -152,7 +152,7 @@ class LLSimInfo
 	bool mFirstAgentRequest;	// Init agent request flag
 
 	U32  mAccess;				// Down/up and maturity rating of the region
-	U32 mRegionFlags;			// Tell us if the siminfo has been received (if non 0) and what kind of region it is (Sandbox, allow damage)
+	U64 mRegionFlags;			// Tell us if the siminfo has been received (if non 0) and what kind of region it is (Sandbox, allow damage)
 	// Currently not used but might prove useful one day so we comment out 
 //	F32 mWaterHeight;			// Water height on the region (not actively used)
 
@@ -198,7 +198,7 @@ class LLWorldMap : public LLSingleton<LLWorldMap>
 
 	// Insert a region and items in the map global instance
 	// Note: x_world and y_world in world coordinates (meters)
-	static bool insertRegion(U32 x_world, U32 y_world, std::string& name, LLUUID& uuid, U32 accesscode, U32 region_flags);
+	static bool insertRegion(U32 x_world, U32 y_world, std::string& name, LLUUID& uuid, U32 accesscode, U64 region_flags);
 	static bool insertItem(U32 x_world, U32 y_world, std::string& name, LLUUID& uuid, U32 type, S32 extra, S32 extra2);
 
 	// Get info on sims (region) : note that those methods only search the range of loaded sims (the one that are being browsed)
diff --git a/scripts/messages/message_template.msg b/scripts/messages/message_template.msg
index 5b147db0843..97f879629d6 100644
--- a/scripts/messages/message_template.msg
+++ b/scripts/messages/message_template.msg
@@ -2939,6 +2939,10 @@ version 2.0
 		PidStat Single
 		{	PID					S32				}
 	}
+	{
+		RegionInfo Single
+		{	RegionFlagsExtended	U64				}
+	}
 }
 
 // viewer -> sim
@@ -2991,6 +2995,10 @@ version 2.0
 		{	HardMaxAgents		U32			}
 		{	HardMaxObjects		U32			}
 	}
+	{
+		RegionInfo3		Single
+		{	RegionFlagsExtended	U64			}
+	}
 }
 
 // GodUpdateRegionInfo
@@ -3016,6 +3024,10 @@ version 2.0
 		{	RedirectGridX 		S32			}
 		{	RedirectGridY 		S32			}
 	}
+	{
+		RegionInfo2	Single
+		{	RegionFlagsExtended	U64			}
+	}
 }
 
 //NearestLandingRegionRequest
@@ -3116,6 +3128,11 @@ version 2.0
 		{	ProductSKU				Variable	1	}	// string
 		{	ProductName				Variable	1	}	// string
 	}
+	{
+		RegionInfo4		Single
+		{	RegionFlagsExtended	U64			}
+		{	RegionProtocols		U64			}
+	}
 }
 
 // RegionHandshakeReply
diff --git a/scripts/messages/message_template.msg.sha1 b/scripts/messages/message_template.msg.sha1
index 9e3dd21fb00..2190f50c23d 100644
--- a/scripts/messages/message_template.msg.sha1
+++ b/scripts/messages/message_template.msg.sha1
@@ -1 +1 @@
-ac4e232bd595c8dd31bc67fd77bcf68d8e9e837c
\ No newline at end of file
+74e56dceb590807a5d48ece83867879ea5c6d22e
\ No newline at end of file
-- 
GitLab


From c188fa6ab7f008069ac5c8d7ae8abc793e7e96f9 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Fri, 17 Aug 2012 06:34:28 +0000
Subject: [PATCH 033/436] Fix for incorrectly reading extended region flags

---
 indra/newview/llfloatergodtools.cpp   | 2 +-
 indra/newview/llfloaterregioninfo.cpp | 2 +-
 indra/newview/llregioninfomodel.cpp   | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/indra/newview/llfloatergodtools.cpp b/indra/newview/llfloatergodtools.cpp
index aac8f5bfc1a..9c95899c77e 100644
--- a/indra/newview/llfloatergodtools.cpp
+++ b/indra/newview/llfloatergodtools.cpp
@@ -239,7 +239,7 @@ void LLFloaterGodTools::processRegionInfo(LLMessageSystem* msg)
 
 	if (msg->has(_PREHASH_RegionInfo3))
 	{
-		msg->getU64Fast(_PREHASH_RegionInfo3, _PREHASH_RegionFlags, region_flags);
+		msg->getU64Fast(_PREHASH_RegionInfo3, _PREHASH_RegionFlagsExtended, region_flags);
 	}
 	else
 	{
diff --git a/indra/newview/llfloaterregioninfo.cpp b/indra/newview/llfloaterregioninfo.cpp
index 1d9f519d702..a179e4dff78 100644
--- a/indra/newview/llfloaterregioninfo.cpp
+++ b/indra/newview/llfloaterregioninfo.cpp
@@ -348,7 +348,7 @@ void LLFloaterRegionInfo::processRegionInfo(LLMessageSystem* msg)
 
 	if (msg->has(_PREHASH_RegionInfo3))
 	{
-		msg->getU64("RegionInfo", "RegionFlags", region_flags);
+		msg->getU64("RegionInfo", "RegionFlagsExtended", region_flags);
 	}
 	else
 	{
diff --git a/indra/newview/llregioninfomodel.cpp b/indra/newview/llregioninfomodel.cpp
index cc777d9297c..498564ecc9d 100644
--- a/indra/newview/llregioninfomodel.cpp
+++ b/indra/newview/llregioninfomodel.cpp
@@ -160,7 +160,7 @@ void LLRegionInfoModel::update(LLMessageSystem* msg)
 
 	if (msg->has(_PREHASH_RegionInfo3))
 	{
-		msg->getU64Fast(_PREHASH_RegionInfo, _PREHASH_RegionFlags, mRegionFlags);
+		msg->getU64Fast(_PREHASH_RegionInfo, _PREHASH_RegionFlagsExtended, mRegionFlags);
 	}
 	else
 	{
-- 
GitLab


From ba07e95d682428f20e529fca4cc324817dc781a7 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Fri, 17 Aug 2012 08:22:50 +0000
Subject: [PATCH 034/436] Added extended flags to god tools region info
 response

---
 indra/newview/llfloatergodtools.cpp   | 6 +++++-
 indra/newview/llfloaterregioninfo.cpp | 2 +-
 indra/newview/llregioninfomodel.cpp   | 2 +-
 3 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/indra/newview/llfloatergodtools.cpp b/indra/newview/llfloatergodtools.cpp
index 9c95899c77e..ab56b8e3d6b 100644
--- a/indra/newview/llfloatergodtools.cpp
+++ b/indra/newview/llfloatergodtools.cpp
@@ -351,6 +351,7 @@ void LLFloaterGodTools::sendGodUpdateRegionInfo()
 		LLMessageSystem *msg = gMessageSystem;
 		LLPanelRegionTools *rtool = god_tools->mPanelRegionTools;
 
+		U64 region_flags = computeRegionFlags();
 		msg->newMessage("GodUpdateRegionInfo");
 		msg->nextBlockFast(_PREHASH_AgentData);
 		msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
@@ -359,11 +360,14 @@ void LLFloaterGodTools::sendGodUpdateRegionInfo()
 		msg->addStringFast(_PREHASH_SimName, rtool->getSimName());
 		msg->addU32Fast(_PREHASH_EstateID, rtool->getEstateID());
 		msg->addU32Fast(_PREHASH_ParentEstateID, rtool->getParentEstateID());
-		msg->addU32Fast(_PREHASH_RegionFlags, computeRegionFlags());
+		// Legacy flags
+		msg->addU32Fast(_PREHASH_RegionFlags, U32(region_flags));
 		msg->addF32Fast(_PREHASH_BillableFactor, rtool->getBillableFactor());
 		msg->addS32Fast(_PREHASH_PricePerMeter, rtool->getPricePerMeter());
 		msg->addS32Fast(_PREHASH_RedirectGridX, rtool->getRedirectGridX());
 		msg->addS32Fast(_PREHASH_RedirectGridY, rtool->getRedirectGridY());
+		msg->nextBlockFast(_PREHASH_RegionInfo2);
+		msg->addU64Fast(_PREHASH_RegionFlagsExtended, region_flags);
 
 		gAgent.sendReliableMessage();
 	}
diff --git a/indra/newview/llfloaterregioninfo.cpp b/indra/newview/llfloaterregioninfo.cpp
index a179e4dff78..a36021f9717 100644
--- a/indra/newview/llfloaterregioninfo.cpp
+++ b/indra/newview/llfloaterregioninfo.cpp
@@ -348,7 +348,7 @@ void LLFloaterRegionInfo::processRegionInfo(LLMessageSystem* msg)
 
 	if (msg->has(_PREHASH_RegionInfo3))
 	{
-		msg->getU64("RegionInfo", "RegionFlagsExtended", region_flags);
+		msg->getU64("RegionInfo3", "RegionFlagsExtended", region_flags);
 	}
 	else
 	{
diff --git a/indra/newview/llregioninfomodel.cpp b/indra/newview/llregioninfomodel.cpp
index 498564ecc9d..590e2464823 100644
--- a/indra/newview/llregioninfomodel.cpp
+++ b/indra/newview/llregioninfomodel.cpp
@@ -160,7 +160,7 @@ void LLRegionInfoModel::update(LLMessageSystem* msg)
 
 	if (msg->has(_PREHASH_RegionInfo3))
 	{
-		msg->getU64Fast(_PREHASH_RegionInfo, _PREHASH_RegionFlagsExtended, mRegionFlags);
+		msg->getU64Fast(_PREHASH_RegionInfo3, _PREHASH_RegionFlagsExtended, mRegionFlags);
 	}
 	else
 	{
-- 
GitLab


From 2db20dd01b12be830e8b5ac58172e9963b73eba1 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Mon, 20 Aug 2012 18:11:07 -0400
Subject: [PATCH 035/436] SH-3625 WIP - removeItem(s)FromAvatar use
 updateAppearanceFromCOF. Some but not all remove code goes through these.

---
 indra/newview/llappearancemgr.cpp | 21 ++++++++++++++++++++-
 indra/newview/llappearancemgr.h   |  1 +
 2 files changed, 21 insertions(+), 1 deletion(-)

diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 5f1a880ebd1..0b425b656ca 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -1160,11 +1160,13 @@ void LLAppearanceMgr::takeOffOutfit(const LLUUID& cat_id)
 
 	LLInventoryModel::item_array_t::const_iterator it = items.begin();
 	const LLInventoryModel::item_array_t::const_iterator it_end = items.end();
+	uuid_vec_t uuids_to_remove;
 	for( ; it_end != it; ++it)
 	{
 		LLViewerInventoryItem* item = *it;
-		removeItemFromAvatar(item->getUUID());
+		uuids_to_remove.push_back(item->getUUID());
 	}
+	removeItemsFromAvatar(uuids_to_remove);
 }
 
 // Create a copy of src_id + contents as a subfolder of dst_id.
@@ -2706,8 +2708,24 @@ void LLAppearanceMgr::wearBaseOutfit()
 	updateCOF(base_outfit_id);
 }
 
+void LLAppearanceMgr::removeItemsFromAvatar(const uuid_vec_t& ids_to_remove)
+{
+	for (uuid_vec_t::const_iterator it = ids_to_remove.begin(); it != ids_to_remove.end(); ++it)
+	{
+		const LLUUID& id_to_remove = *it;
+		const LLUUID& linked_item_id = gInventory.getLinkedItemID(id_to_remove);
+		removeCOFItemLinks(linked_item_id,false);
+	}
+	updateAppearanceFromCOF();
+}
+
 void LLAppearanceMgr::removeItemFromAvatar(const LLUUID& id_to_remove)
 {
+#if 1
+	LLUUID linked_item_id = gInventory.getLinkedItemID(id_to_remove);
+	removeCOFItemLinks(linked_item_id,false);
+	updateAppearanceFromCOF();
+#else
 	LLViewerInventoryItem * item_to_remove = gInventory.getItem(id_to_remove);
 	if (!item_to_remove) return;
 
@@ -2733,6 +2751,7 @@ void LLAppearanceMgr::removeItemFromAvatar(const LLUUID& id_to_remove)
 	// Also we can't check is link was successfully removed from COF since in case
 	// deleting attachment link removing performs asynchronously in process_kill_object callback.
 	removeCOFItemLinks(id_to_remove,false);
+#endif
 }
 
 bool LLAppearanceMgr::moveWearable(LLViewerInventoryItem* item, bool closer_to_body)
diff --git a/indra/newview/llappearancemgr.h b/indra/newview/llappearancemgr.h
index 742833211ae..c0f41075aa6 100755
--- a/indra/newview/llappearancemgr.h
+++ b/indra/newview/llappearancemgr.h
@@ -165,6 +165,7 @@ class LLAppearanceMgr: public LLSingleton<LLAppearanceMgr>
 	bool updateBaseOutfit();
 
 	//Remove clothing or detach an object from the agent (a bodypart cannot be removed)
+	void removeItemsFromAvatar(const uuid_vec_t& item_ids);
 	void removeItemFromAvatar(const LLUUID& item_id);
 
 
-- 
GitLab


From b232919c0a6d66582b57c8997fee7a99ab9bbddb Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Tue, 21 Aug 2012 17:03:42 -0400
Subject: [PATCH 036/436] SH-3625 WIP - consolidating code paths for
 wearable/attachment removal

---
 indra/newview/llappearancemgr.cpp     | 51 ++++++++++++---------------
 indra/newview/llappearancemgr.h       |  1 +
 indra/newview/llcofwearables.cpp      |  6 ++--
 indra/newview/llinventorybridge.cpp   | 34 +++---------------
 indra/newview/llpanelwearing.cpp      | 15 +++-----
 indra/newview/llviewermenu.cpp        |  6 ++--
 indra/newview/llwearableitemslist.cpp | 11 +++---
 7 files changed, 45 insertions(+), 79 deletions(-)
 mode change 100644 => 100755 indra/newview/llcofwearables.cpp
 mode change 100644 => 100755 indra/newview/llinventorybridge.cpp
 mode change 100644 => 100755 indra/newview/llpanelwearing.cpp
 mode change 100644 => 100755 indra/newview/llviewermenu.cpp
 mode change 100644 => 100755 indra/newview/llwearableitemslist.cpp

diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 0b425b656ca..933049fa793 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -2215,6 +2215,29 @@ void LLAppearanceMgr::addEnsembleLink( LLInventoryCategory* cat, bool do_update
 #endif
 }
 
+void LLAppearanceMgr::removeAllClothesFromAvatar()
+{
+	// Fetch worn clothes (i.e. the ones in COF).
+	LLInventoryModel::item_array_t clothing_items;
+	LLInventoryModel::cat_array_t dummy;
+	LLIsType is_clothing(LLAssetType::AT_CLOTHING);
+	gInventory.collectDescendentsIf(getCOF(),
+									dummy,
+									clothing_items,
+									LLInventoryModel::EXCLUDE_TRASH,
+									is_clothing,
+									false);
+	uuid_vec_t item_ids;
+	for (LLInventoryModel::item_array_t::iterator it = clothing_items.begin();
+		it != clothing_items.end(); ++it)
+	{
+		item_ids.push_back((*it).get()->getLinkedUUID());
+	}
+
+	// Take them off by removing from COF.
+	removeItemsFromAvatar(item_ids);
+}
+
 void LLAppearanceMgr::removeCOFItemLinks(const LLUUID& item_id, bool do_update)
 {
 	gInventory.addChangedMask(LLInventoryObserver::LABEL, item_id);
@@ -2721,37 +2744,9 @@ void LLAppearanceMgr::removeItemsFromAvatar(const uuid_vec_t& ids_to_remove)
 
 void LLAppearanceMgr::removeItemFromAvatar(const LLUUID& id_to_remove)
 {
-#if 1
 	LLUUID linked_item_id = gInventory.getLinkedItemID(id_to_remove);
 	removeCOFItemLinks(linked_item_id,false);
 	updateAppearanceFromCOF();
-#else
-	LLViewerInventoryItem * item_to_remove = gInventory.getItem(id_to_remove);
-	if (!item_to_remove) return;
-
-	switch (item_to_remove->getType())
-	{
-		case LLAssetType::AT_CLOTHING:
-			if (get_is_item_worn(id_to_remove))
-			{
-				//*TODO move here the exact removing code from LLWearableBridge::removeItemFromAvatar in the future
-				LLWearableBridge::removeItemFromAvatar(item_to_remove);
-			}
-			break;
-		case LLAssetType::AT_OBJECT:
-			LLVOAvatarSelf::detachAttachmentIntoInventory(item_to_remove->getLinkedUUID());
-		default:
-			break;
-	}
-
-	// *HACK: Force to remove garbage from COF.
-	// Unworn links or objects can't be processed by existed removing functionality
-	// since it is not designed for such cases. As example attachment object can't be removed
-	// since sever don't sends message _PREHASH_KillObject in that case.
-	// Also we can't check is link was successfully removed from COF since in case
-	// deleting attachment link removing performs asynchronously in process_kill_object callback.
-	removeCOFItemLinks(id_to_remove,false);
-#endif
 }
 
 bool LLAppearanceMgr::moveWearable(LLViewerInventoryItem* item, bool closer_to_body)
diff --git a/indra/newview/llappearancemgr.h b/indra/newview/llappearancemgr.h
index c0f41075aa6..7734eba1445 100755
--- a/indra/newview/llappearancemgr.h
+++ b/indra/newview/llappearancemgr.h
@@ -135,6 +135,7 @@ class LLAppearanceMgr: public LLSingleton<LLAppearanceMgr>
 	// Remove COF entries
 	void removeCOFItemLinks(const LLUUID& item_id, bool do_update = true);
 	void removeCOFLinksOfType(LLWearableType::EType type, bool do_update = true);
+	void removeAllClothesFromAvatar();
 
 	// Add COF link to ensemble folder.
 	void addEnsembleLink(LLInventoryCategory* item, bool do_update = true);
diff --git a/indra/newview/llcofwearables.cpp b/indra/newview/llcofwearables.cpp
old mode 100644
new mode 100755
index e9c7a3fa039..e86d6930e89
--- a/indra/newview/llcofwearables.cpp
+++ b/indra/newview/llcofwearables.cpp
@@ -139,8 +139,7 @@ class CofAttachmentContextMenu : public CofContextMenu
 	{
 		LLUICtrl::CommitCallbackRegistry::ScopedRegistrar registrar;
 
-		functor_t take_off = boost::bind(&LLAppearanceMgr::removeItemFromAvatar, LLAppearanceMgr::getInstance(), _1);
-		registrar.add("Attachment.Detach", boost::bind(handleMultiple, take_off, mUUIDs));
+		registrar.add("Attachment.Detach", boost::bind(&LLAppearanceMgr::removeItemsFromAvatar, LLAppearanceMgr::getInstance(), mUUIDs));
 
 		return createFromFile("menu_cof_attachment.xml");
 	}
@@ -173,9 +172,8 @@ class CofClothingContextMenu : public CofContextMenu
 		LLUICtrl::CommitCallbackRegistry::ScopedRegistrar registrar;
 		LLUICtrl::EnableCallbackRegistry::ScopedRegistrar enable_registrar;
 		LLUUID selected_id = mUUIDs.back();
-		functor_t take_off = boost::bind(&LLAppearanceMgr::removeItemFromAvatar, LLAppearanceMgr::getInstance(), _1);
 
-		registrar.add("Clothing.TakeOff", boost::bind(handleMultiple, take_off, mUUIDs));
+		registrar.add("Clothing.TakeOff", boost::bind(&LLAppearanceMgr::removeItemsFromAvatar, LLAppearanceMgr::getInstance(), mUUIDs));
 		registrar.add("Clothing.Replace", boost::bind(replaceWearable, selected_id));
 		registrar.add("Clothing.Edit", boost::bind(LLAgentWearables::editWearable, selected_id));
 		registrar.add("Clothing.Create", boost::bind(&CofClothingContextMenu::createNew, this, selected_id));
diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp
old mode 100644
new mode 100755
index b819100b9bb..e07365109b5
--- a/indra/newview/llinventorybridge.cpp
+++ b/indra/newview/llinventorybridge.cpp
@@ -2764,7 +2764,7 @@ void LLFolderBridge::performAction(LLInventoryModel* model, std::string action)
 		LLViewerInventoryCategory* cat = getCategory();
 		if(!cat) return;
 
-		remove_inventory_category_from_avatar ( cat );
+		LLAppearanceMgr::instance().takeOffOutfit( cat->getLinkedUUID() );
 		return;
 	}
 	else if ("purge" == action)
@@ -5073,11 +5073,7 @@ void LLObjectBridge::performAction(LLInventoryModel* model, std::string action)
 	}
 	else if (isRemoveAction(action))
 	{
-		LLInventoryItem* item = gInventory.getItem(mUUID);
-		if(item)
-		{
-			LLVOAvatarSelf::detachAttachmentIntoInventory(item->getLinkedUUID());
-		}
+		LLAppearanceMgr::instance().removeItemFromAvatar(mUUID);
 	}
 	else LLItemBridge::performAction(model, action);
 }
@@ -5827,30 +5823,10 @@ void LLWearableBridge::onRemoveFromAvatarArrived(LLWearable* wearable,
 	delete on_remove_struct;
 }
 
-// static
-void LLWearableBridge::removeAllClothesFromAvatar()
-{
-	// Fetch worn clothes (i.e. the ones in COF).
-	LLInventoryModel::item_array_t clothing_items;
-	LLInventoryModel::cat_array_t dummy;
-	LLIsType is_clothing(LLAssetType::AT_CLOTHING);
-	gInventory.collectDescendentsIf(LLAppearanceMgr::instance().getCOF(),
-									dummy,
-									clothing_items,
-									LLInventoryModel::EXCLUDE_TRASH,
-									is_clothing,
-									false);
-
-	// Take them off by removing from COF.
-	for (LLInventoryModel::item_array_t::const_iterator it = clothing_items.begin(); it != clothing_items.end(); ++it)
-	{
-		LLAppearanceMgr::instance().removeItemFromAvatar((*it)->getUUID());
-	}
-}
-
 // static
 void LLWearableBridge::removeItemFromAvatar(LLViewerInventoryItem *item)
 {
+	llwarns << "safe to remove?" << llendl;
 	if (item)
 	{
 		LLWearableList::instance().getAsset(item->getAssetUUID(),
@@ -5863,10 +5839,10 @@ void LLWearableBridge::removeItemFromAvatar(LLViewerInventoryItem *item)
 
 void LLWearableBridge::removeFromAvatar()
 {
+	llwarns << "safe to remove?" << llendl;
 	if (get_is_item_worn(mUUID))
 	{
-		LLViewerInventoryItem* item = getItem();
-		removeItemFromAvatar(item);
+		LLAppearanceMgr::instance().removeItemFromAvatar(mUUID);
 	}
 }
 
diff --git a/indra/newview/llpanelwearing.cpp b/indra/newview/llpanelwearing.cpp
old mode 100644
new mode 100755
index 3b9934d4be3..aa3ed22bee8
--- a/indra/newview/llpanelwearing.cpp
+++ b/indra/newview/llpanelwearing.cpp
@@ -77,11 +77,7 @@ class LLWearingGearMenu
 	{
 		uuid_vec_t selected_uuids;
 		mPanelWearing->getSelectedItemsUUIDs(selected_uuids);
-
-		for (uuid_vec_t::const_iterator it=selected_uuids.begin(); it != selected_uuids.end(); ++it)
-		{
-				LLAppearanceMgr::instance().removeItemFromAvatar(*it);
-		}
+		LLAppearanceMgr::instance().removeItemsFromAvatar(selected_uuids);
 	}
 
 	LLToggleableMenu*		mMenu;
@@ -97,12 +93,11 @@ class LLWearingContextMenu : public LLListContextMenu
 	{
 		LLUICtrl::CommitCallbackRegistry::ScopedRegistrar registrar;
 
-		functor_t take_off = boost::bind(&LLAppearanceMgr::removeItemFromAvatar, LLAppearanceMgr::getInstance(), _1);
-
 		registrar.add("Wearing.Edit", boost::bind(&edit_outfit));
-		registrar.add("Wearing.TakeOff", boost::bind(handleMultiple, take_off, mUUIDs));
-		registrar.add("Wearing.Detach", boost::bind(handleMultiple, take_off, mUUIDs));
-
+		registrar.add("Wearing.TakeOff",
+					  boost::bind(&LLAppearanceMgr::removeItemsFromAvatar, LLAppearanceMgr::getInstance(), mUUIDs));
+		registrar.add("Wearing.Detach", 
+					  boost::bind(&LLAppearanceMgr::removeItemsFromAvatar, LLAppearanceMgr::getInstance(), mUUIDs));
 		LLContextMenu* menu = createFromFile("menu_wearing_tab.xml");
 
 		updateMenuItemsVisibility(menu);
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
old mode 100644
new mode 100755
index 01a54509ef0..5bed2eccb58
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -7897,7 +7897,7 @@ class LLEditTakeOff : public view_listener_t
 	{
 		std::string clothing = userdata.asString();
 		if (clothing == "all")
-			LLWearableBridge::removeAllClothesFromAvatar();
+			LLAppearanceMgr::instance().removeAllClothesFromAvatar();
 		else
 		{
 			LLWearableType::EType type = LLWearableType::typeNameToType(clothing);
@@ -7907,8 +7907,8 @@ class LLEditTakeOff : public view_listener_t
 			{
 				// MULTI-WEARABLES: assuming user wanted to remove top shirt.
 				U32 wearable_index = gAgentWearables.getWearableCount(type) - 1;
-				LLViewerInventoryItem *item = dynamic_cast<LLViewerInventoryItem*>(gAgentWearables.getWearableInventoryItem(type,wearable_index));
-				LLWearableBridge::removeItemFromAvatar(item);
+				LLUUID item_id = gAgentWearables.getWearableItemID(type,wearable_index);
+				LLAppearanceMgr::instance().removeItemFromAvatar(item_id);
 			}
 				
 		}
diff --git a/indra/newview/llwearableitemslist.cpp b/indra/newview/llwearableitemslist.cpp
old mode 100644
new mode 100755
index 92697fb2eb8..c7e92156432
--- a/indra/newview/llwearableitemslist.cpp
+++ b/indra/newview/llwearableitemslist.cpp
@@ -788,23 +788,24 @@ LLContextMenu* LLWearableItemsList::ContextMenu::createMenu()
 	const uuid_vec_t& ids = mUUIDs;		// selected items IDs
 	LLUUID selected_id = ids.front();	// ID of the first selected item
 
-	functor_t take_off = boost::bind(&LLAppearanceMgr::removeItemFromAvatar, LLAppearanceMgr::getInstance(), _1);
-
 	// Register handlers common for all wearable types.
 	registrar.add("Wearable.Wear", boost::bind(wear_multiple, ids, true));
 	registrar.add("Wearable.Add", boost::bind(wear_multiple, ids, false));
 	registrar.add("Wearable.Edit", boost::bind(handleMultiple, LLAgentWearables::editWearable, ids));
 	registrar.add("Wearable.CreateNew", boost::bind(createNewWearable, selected_id));
 	registrar.add("Wearable.ShowOriginal", boost::bind(show_item_original, selected_id));
-	registrar.add("Wearable.TakeOffDetach", boost::bind(handleMultiple, take_off, ids));
+	registrar.add("Wearable.TakeOffDetach", 
+				  boost::bind(&LLAppearanceMgr::removeItemsFromAvatar, LLAppearanceMgr::getInstance(), ids));
 
 	// Register handlers for clothing.
-	registrar.add("Clothing.TakeOff", boost::bind(handleMultiple, take_off, ids));
+	registrar.add("Clothing.TakeOff", 
+				  boost::bind(&LLAppearanceMgr::removeItemsFromAvatar, LLAppearanceMgr::getInstance(), ids));
 
 	// Register handlers for body parts.
 
 	// Register handlers for attachments.
-	registrar.add("Attachment.Detach", boost::bind(handleMultiple, take_off, ids));
+	registrar.add("Attachment.Detach", 
+				  boost::bind(&LLAppearanceMgr::removeItemsFromAvatar, LLAppearanceMgr::getInstance(), ids));
 	registrar.add("Attachment.Profile", boost::bind(show_item_profile, selected_id));
 	registrar.add("Object.Attach", boost::bind(LLViewerAttachMenu::attachObjects, ids, _2));
 
-- 
GitLab


From 40df1bba9707cdf35eb9583c2024b294da671a2a Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Tue, 21 Aug 2012 17:58:26 -0400
Subject: [PATCH 037/436] SH-3625 WIP - consolidating code paths for removal,
 removed dead code

---
 indra/newview/llagentwearables.cpp  |  27 +----
 indra/newview/llagentwearables.h    |   1 -
 indra/newview/llappearancemgr.cpp   |  32 +++++
 indra/newview/llappearancemgr.h     |   1 +
 indra/newview/llinventorybridge.cpp | 179 ----------------------------
 indra/newview/llinventorybridge.h   |   3 -
 indra/newview/llviewermenu.cpp      |   2 +-
 7 files changed, 35 insertions(+), 210 deletions(-)

diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp
index e44b27c6afc..53a255fe92b 100755
--- a/indra/newview/llagentwearables.cpp
+++ b/indra/newview/llagentwearables.cpp
@@ -1715,7 +1715,7 @@ void LLAgentWearables::userRemoveWearablesOfType(const LLWearableType::EType &ty
 	}
 }
 
-// Combines userRemoveAllAttachments() and userAttachMultipleAttachments() logic to
+// Combines userRemoveMulipleAttachments() and userAttachMultipleAttachments() logic to
 // get attachments into desired state with minimal number of adds/removes.
 void LLAgentWearables::userUpdateAttachments(LLInventoryModel::item_array_t& obj_item_array)
 {
@@ -1811,31 +1811,6 @@ void LLAgentWearables::userRemoveMultipleAttachments(llvo_vec_t& objects_to_remo
 	gMessageSystem->sendReliable(gAgent.getRegionHost());
 }
 
-void LLAgentWearables::userRemoveAllAttachments()
-{
-	if (!isAgentAvatarValid()) return;
-
-	llvo_vec_t objects_to_remove;
-	
-	for (LLVOAvatar::attachment_map_t::iterator iter = gAgentAvatarp->mAttachmentPoints.begin(); 
-		 iter != gAgentAvatarp->mAttachmentPoints.end();)
-	{
-		LLVOAvatar::attachment_map_t::iterator curiter = iter++;
-		LLViewerJointAttachment* attachment = curiter->second;
-		for (LLViewerJointAttachment::attachedobjs_vec_t::iterator attachment_iter = attachment->mAttachedObjects.begin();
-			 attachment_iter != attachment->mAttachedObjects.end();
-			 ++attachment_iter)
-		{
-			LLViewerObject *attached_object = (*attachment_iter);
-			if (attached_object)
-			{
-				objects_to_remove.push_back(attached_object);
-			}
-		}
-	}
-	userRemoveMultipleAttachments(objects_to_remove);
-}
-
 void LLAgentWearables::userAttachMultipleAttachments(LLInventoryModel::item_array_t& obj_item_array)
 {
 	// Build a compound message to send all the objects that need to be rezzed.
diff --git a/indra/newview/llagentwearables.h b/indra/newview/llagentwearables.h
index 5932be21c63..550560d7bcf 100755
--- a/indra/newview/llagentwearables.h
+++ b/indra/newview/llagentwearables.h
@@ -215,7 +215,6 @@ class LLAgentWearables : public LLInitClass<LLAgentWearables>
 
 	static void 	userUpdateAttachments(LLInventoryModel::item_array_t& obj_item_array);
 	static void		userRemoveMultipleAttachments(llvo_vec_t& llvo_array);
-	static void		userRemoveAllAttachments();
 	static void		userAttachMultipleAttachments(LLInventoryModel::item_array_t& obj_item_array);
 
 	BOOL			itemUpdatePending(const LLUUID& item_id) const;
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 933049fa793..71b7298f5c2 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -2238,6 +2238,38 @@ void LLAppearanceMgr::removeAllClothesFromAvatar()
 	removeItemsFromAvatar(item_ids);
 }
 
+void LLAppearanceMgr::removeAllAttachmentsFromAvatar()
+{
+	if (!isAgentAvatarValid()) return;
+
+	LLAgentWearables::llvo_vec_t objects_to_remove;
+	
+	for (LLVOAvatar::attachment_map_t::iterator iter = gAgentAvatarp->mAttachmentPoints.begin(); 
+		 iter != gAgentAvatarp->mAttachmentPoints.end();)
+	{
+		LLVOAvatar::attachment_map_t::iterator curiter = iter++;
+		LLViewerJointAttachment* attachment = curiter->second;
+		for (LLViewerJointAttachment::attachedobjs_vec_t::iterator attachment_iter = attachment->mAttachedObjects.begin();
+			 attachment_iter != attachment->mAttachedObjects.end();
+			 ++attachment_iter)
+		{
+			LLViewerObject *attached_object = (*attachment_iter);
+			if (attached_object)
+			{
+				objects_to_remove.push_back(attached_object);
+			}
+		}
+	}
+	uuid_vec_t ids_to_remove;
+	for (LLAgentWearables::llvo_vec_t::iterator it = objects_to_remove.begin();
+		 it != objects_to_remove.end();
+		 ++it)
+	{
+		ids_to_remove.push_back((*it)->getAttachmentItemID());
+	}
+	removeItemsFromAvatar(ids_to_remove);
+}
+
 void LLAppearanceMgr::removeCOFItemLinks(const LLUUID& item_id, bool do_update)
 {
 	gInventory.addChangedMask(LLInventoryObserver::LABEL, item_id);
diff --git a/indra/newview/llappearancemgr.h b/indra/newview/llappearancemgr.h
index 7734eba1445..df27d5478a9 100755
--- a/indra/newview/llappearancemgr.h
+++ b/indra/newview/llappearancemgr.h
@@ -136,6 +136,7 @@ class LLAppearanceMgr: public LLSingleton<LLAppearanceMgr>
 	void removeCOFItemLinks(const LLUUID& item_id, bool do_update = true);
 	void removeCOFLinksOfType(LLWearableType::EType type, bool do_update = true);
 	void removeAllClothesFromAvatar();
+	void removeAllAttachmentsFromAvatar();
 
 	// Add COF link to ensemble folder.
 	void addEnsembleLink(LLInventoryCategory* item, bool do_update = true);
diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp
index e07365109b5..27dfbba5617 100755
--- a/indra/newview/llinventorybridge.cpp
+++ b/indra/newview/llinventorybridge.cpp
@@ -107,8 +107,6 @@ void dec_busy_count()
 }
 
 // Function declarations
-void remove_inventory_category_from_avatar(LLInventoryCategory* category);
-void remove_inventory_category_from_avatar_step2( BOOL proceed, LLUUID category_id);
 bool move_task_inventory_callback(const LLSD& notification, const LLSD& response, LLMoveInv*);
 bool confirm_attachment_rez(const LLSD& notification, const LLSD& response);
 void teleport_via_landmark(const LLUUID& asset_id);
@@ -5365,120 +5363,6 @@ LLWearableBridge::LLWearableBridge(LLInventoryPanel* inventory,
 	mInvType = inv_type;
 }
 
-void remove_inventory_category_from_avatar( LLInventoryCategory* category )
-{
-	if(!category) return;
-	lldebugs << "remove_inventory_category_from_avatar( " << category->getName()
-			 << " )" << llendl;
-
-
-	if (gAgentCamera.cameraCustomizeAvatar())
-	{
-		// switching to outfit editor should automagically save any currently edited wearable
-		LLFloaterSidePanelContainer::showPanel("appearance", LLSD().with("type", "edit_outfit"));
-	}
-
-	remove_inventory_category_from_avatar_step2(TRUE, category->getUUID() );
-}
-
-struct OnRemoveStruct
-{
-	LLUUID mUUID;
-	OnRemoveStruct(const LLUUID& uuid):
-		mUUID(uuid)
-	{
-	}
-};
-
-void remove_inventory_category_from_avatar_step2( BOOL proceed, LLUUID category_id)
-{
-
-	// Find all the wearables that are in the category's subtree.
-	lldebugs << "remove_inventory_category_from_avatar_step2()" << llendl;
-	if(proceed)
-	{
-		LLInventoryModel::cat_array_t cat_array;
-		LLInventoryModel::item_array_t item_array;
-		LLFindWearables is_wearable;
-		gInventory.collectDescendentsIf(category_id,
-										cat_array,
-										item_array,
-										LLInventoryModel::EXCLUDE_TRASH,
-										is_wearable);
-		S32 i;
-		S32 wearable_count = item_array.count();
-
-		LLInventoryModel::cat_array_t	obj_cat_array;
-		LLInventoryModel::item_array_t	obj_item_array;
-		LLIsType is_object( LLAssetType::AT_OBJECT );
-		gInventory.collectDescendentsIf(category_id,
-										obj_cat_array,
-										obj_item_array,
-										LLInventoryModel::EXCLUDE_TRASH,
-										is_object);
-		S32 obj_count = obj_item_array.count();
-
-		// Find all gestures in this folder
-		LLInventoryModel::cat_array_t	gest_cat_array;
-		LLInventoryModel::item_array_t	gest_item_array;
-		LLIsType is_gesture( LLAssetType::AT_GESTURE );
-		gInventory.collectDescendentsIf(category_id,
-										gest_cat_array,
-										gest_item_array,
-										LLInventoryModel::EXCLUDE_TRASH,
-										is_gesture);
-		S32 gest_count = gest_item_array.count();
-
-		if (wearable_count > 0)	//Loop through wearables.  If worn, remove.
-		{
-			for(i = 0; i  < wearable_count; ++i)
-			{
-				LLViewerInventoryItem *item = item_array.get(i);
-				if (item->getType() == LLAssetType::AT_BODYPART)
-					continue;
-				if (gAgent.isTeen() && item->isWearableType() &&
-					(item->getWearableType() == LLWearableType::WT_UNDERPANTS || item->getWearableType() == LLWearableType::WT_UNDERSHIRT))
-					continue;
-				if (get_is_item_worn(item->getUUID()))
-				{
-					LLWearableList::instance().getAsset(item->getAssetUUID(),
-														item->getName(),
-														item->getType(),
-														LLWearableBridge::onRemoveFromAvatarArrived,
-														new OnRemoveStruct(item->getLinkedUUID()));
-				}
-			}
-		}
-
-		if (obj_count > 0)
-		{
-			for(i = 0; i  < obj_count; ++i)
-			{
-				LLViewerInventoryItem *obj_item = obj_item_array.get(i);
-				if (get_is_item_worn(obj_item->getUUID()))
-				{
-					LLVOAvatarSelf::detachAttachmentIntoInventory(obj_item->getLinkedUUID());
-				}
-			}
-		}
-
-		if (gest_count > 0)
-		{
-			for(i = 0; i  < gest_count; ++i)
-			{
-				LLViewerInventoryItem *gest_item = gest_item_array.get(i);
-				if (get_is_item_worn(gest_item->getUUID()))
-				{
-					LLGestureMgr::instance().deactivateGesture( gest_item->getLinkedUUID() );
-					gInventory.updateItem( gest_item );
-					gInventory.notifyObservers();
-				}
-
-			}
-		}
-	}
-}
-
 BOOL LLWearableBridge::renameItem(const std::string& new_name)
 {
 	if (get_is_item_worn(mUUID))
@@ -5774,69 +5658,6 @@ BOOL LLWearableBridge::canRemoveFromAvatar(void* user_data)
 	return FALSE;
 }
 
-// static
-void LLWearableBridge::onRemoveFromAvatar(void* user_data)
-{
-	LLWearableBridge* self = (LLWearableBridge*)user_data;
-	if(!self) return;
-	if(get_is_item_worn(self->mUUID))
-	{
-		LLViewerInventoryItem* item = self->getItem();
-		if (item)
-		{
-			LLUUID parent_id = item->getParentUUID();
-			LLWearableList::instance().getAsset(item->getAssetUUID(),
-												item->getName(),
-												item->getType(),
-												onRemoveFromAvatarArrived,
-												new OnRemoveStruct(LLUUID(self->mUUID)));
-		}
-	}
-}
-
-// static
-void LLWearableBridge::onRemoveFromAvatarArrived(LLWearable* wearable,
-												 void* userdata)
-{
-	OnRemoveStruct *on_remove_struct = (OnRemoveStruct*) userdata;
-	const LLUUID &item_id = gInventory.getLinkedItemID(on_remove_struct->mUUID);
-	if(wearable)
-	{
-		if( get_is_item_worn( item_id ) )
-		{
-			LLWearableType::EType type = wearable->getType();
-
-			if( !(type==LLWearableType::WT_SHAPE || type==LLWearableType::WT_SKIN || type==LLWearableType::WT_HAIR || type==LLWearableType::WT_EYES ) ) //&&
-				//!((!gAgent.isTeen()) && ( type==LLWearableType::WT_UNDERPANTS || type==LLWearableType::WT_UNDERSHIRT )) )
-			{
-				bool do_remove_all = false;
-				U32 index = gAgentWearables.getWearableIndex(wearable);
-				gAgentWearables.removeWearable( type, do_remove_all, index );
-			}
-		}
-	}
-
-	// Find and remove this item from the COF.
-	LLAppearanceMgr::instance().removeCOFItemLinks(item_id,false);
-	gInventory.notifyObservers();
-
-	delete on_remove_struct;
-}
-
-// static
-void LLWearableBridge::removeItemFromAvatar(LLViewerInventoryItem *item)
-{
-	llwarns << "safe to remove?" << llendl;
-	if (item)
-	{
-		LLWearableList::instance().getAsset(item->getAssetUUID(),
-											item->getName(),
-											item->getType(),
-											LLWearableBridge::onRemoveFromAvatarArrived,
-											new OnRemoveStruct(item->getUUID()));
-	}
-}
-
 void LLWearableBridge::removeFromAvatar()
 {
 	llwarns << "safe to remove?" << llendl;
diff --git a/indra/newview/llinventorybridge.h b/indra/newview/llinventorybridge.h
index dc9e88d54d8..c37343e6781 100644
--- a/indra/newview/llinventorybridge.h
+++ b/indra/newview/llinventorybridge.h
@@ -497,9 +497,6 @@ class LLWearableBridge : public LLItemBridge
 	void			editOnAvatar();
 
 	static BOOL		canRemoveFromAvatar( void* userdata );
-	static void		onRemoveFromAvatar( void* userdata );
-	static void		onRemoveFromAvatarArrived( LLWearable* wearable, 	void* userdata );
-	static void 	removeItemFromAvatar(LLViewerInventoryItem *item);
 	static void 	removeAllClothesFromAvatar();
 	void			removeFromAvatar();
 protected:
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index 5bed2eccb58..9001c79a4d7 100755
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -2798,7 +2798,7 @@ class LLSelfRemoveAllAttachments : public view_listener_t
 {
 	bool handleEvent(const LLSD& userdata)
 	{
-		LLAgentWearables::userRemoveAllAttachments();
+		LLAppearanceMgr::instance().removeAllAttachmentsFromAvatar();
 		return true;
 	}
 };
-- 
GitLab


From 51fabc385079a0b5fab4611bb5b16fea5dc26372 Mon Sep 17 00:00:00 2001
From: "Nyx (Neal Orman)" <nyx@lindenlab.com>
Date: Tue, 21 Aug 2012 18:21:11 -0400
Subject: [PATCH 038/436] SH-3261 SH-3324 WIP Starting extraction of
 wearable/appearance libraries

First pass at cmake configs, and starting to try to move wearable class.
Things are broken, checkpointing work to collaborate.
---
 indra/CMakeLists.txt                          |  1 +
 indra/cmake/CMakeLists.txt                    |  2 +
 indra/cmake/LLAppearance.cmake                |  7 ++
 indra/cmake/Viewer.cmake                      |  7 ++
 indra/llappearance/CMakeLists.txt             | 78 +++++++++++++++++++
 .../{newview => llappearance}/llwearable.cpp  | 36 ++++-----
 indra/{newview => llappearance}/llwearable.h  | 16 ++--
 indra/newview/CMakeLists.txt                  |  4 +-
 8 files changed, 123 insertions(+), 28 deletions(-)
 create mode 100644 indra/cmake/LLAppearance.cmake
 create mode 100644 indra/cmake/Viewer.cmake
 create mode 100644 indra/llappearance/CMakeLists.txt
 rename indra/{newview => llappearance}/llwearable.cpp (98%)
 rename indra/{newview => llappearance}/llwearable.h (96%)

diff --git a/indra/CMakeLists.txt b/indra/CMakeLists.txt
index 1cebb53a07d..078b17bf53f 100644
--- a/indra/CMakeLists.txt
+++ b/indra/CMakeLists.txt
@@ -41,6 +41,7 @@ endif ("${CMAKE_SOURCE_DIR}/../autobuild.xml" IS_NEWER_THAN "${CMAKE_BINARY_DIR}
 add_subdirectory(cmake)
 
 add_subdirectory(${LIBS_OPEN_PREFIX}llaudio)
+add_subdirectory(${LIBS_OPEN_PREFIX}llappearance)
 add_subdirectory(${LIBS_OPEN_PREFIX}llcharacter)
 add_subdirectory(${LIBS_OPEN_PREFIX}llcommon)
 add_subdirectory(${LIBS_OPEN_PREFIX}llimage)
diff --git a/indra/cmake/CMakeLists.txt b/indra/cmake/CMakeLists.txt
index 569034a6fb9..875b5be1526 100644
--- a/indra/cmake/CMakeLists.txt
+++ b/indra/cmake/CMakeLists.txt
@@ -40,6 +40,7 @@ set(cmake_SOURCE_FILES
     Hunspell.cmake
     JPEG.cmake
     LLAddBuildTest.cmake
+    LLAppearance.cmake
     LLAudio.cmake
     LLCharacter.cmake
     LLCommon.cmake
@@ -77,6 +78,7 @@ set(cmake_SOURCE_FILES
     Tut.cmake
     UI.cmake
     UnixInstall.cmake
+    Viewer.cmake
     Variables.cmake
     XmlRpcEpi.cmake
     ZLIB.cmake
diff --git a/indra/cmake/LLAppearance.cmake b/indra/cmake/LLAppearance.cmake
new file mode 100644
index 00000000000..36cebe98165
--- /dev/null
+++ b/indra/cmake/LLAppearance.cmake
@@ -0,0 +1,7 @@
+# -*- cmake -*-
+
+set(LLAPPEARANCE_INCLUDE_DIRS
+    ${LIBS_OPEN_DIR}/llappearance
+    )
+
+set(LLAPPEARANCE_LIBRARIES llappearance)
diff --git a/indra/cmake/Viewer.cmake b/indra/cmake/Viewer.cmake
new file mode 100644
index 00000000000..771bb0ed7ae
--- /dev/null
+++ b/indra/cmake/Viewer.cmake
@@ -0,0 +1,7 @@
+# -*- cmake -*-
+
+set(VIEWER_INCLUDE_DIRS
+    ${LIBS_OPEN_DIR}/newview
+    )
+
+set(VIEWER_LIBRARIES viewer)
diff --git a/indra/llappearance/CMakeLists.txt b/indra/llappearance/CMakeLists.txt
new file mode 100644
index 00000000000..39bfbc9a210
--- /dev/null
+++ b/indra/llappearance/CMakeLists.txt
@@ -0,0 +1,78 @@
+# -*- cmake -*-
+
+project(llappearance)
+
+include(00-Common)
+include(LLCommon)
+include(Viewer)
+include(LLAudio)
+include(LLCharacter)
+include(LLCommon)
+include(LLImage)
+include(LLImageJ2COJ)
+include(LLInventory)
+include(LLMath)
+include(LLMessage)
+include(LLPhysicsExtensions)
+include(LLPlugin)
+include(LLPrimitive)
+include(LLRender)
+include(LLUI)
+include(LLVFS)
+include(LLWindow)
+include(LLXML)
+include(Linking)
+include(LLKDU)
+include(ViewerMiscLibs)
+include(LLLogin)
+
+include_directories(
+    ${LLCOMMON_INCLUDE_DIRS}
+    ${VIEWER_INCLUDE_DIRS}
+    ${LLAUDIO_INCLUDE_DIRS}
+    ${LLCHARACTER_INCLUDE_DIRS}
+    ${LLCOMMON_INCLUDE_DIRS}
+    ${LLPHYSICS_INCLUDE_DIRS}
+    ${LLIMAGE_INCLUDE_DIRS}
+    ${LLKDU_INCLUDE_DIRS}
+    ${LLINVENTORY_INCLUDE_DIRS}
+    ${LLMATH_INCLUDE_DIRS}
+    ${LLMESSAGE_INCLUDE_DIRS}
+    ${LLPHYSICSEXTENSIONS_INCLUDE_DIRS}
+    ${LLPLUGIN_INCLUDE_DIRS}
+    ${LLPRIMITIVE_INCLUDE_DIRS}
+    ${LLRENDER_INCLUDE_DIRS}
+    ${LLUI_INCLUDE_DIRS}
+    ${LLVFS_INCLUDE_DIRS}
+    ${LLWINDOW_INCLUDE_DIRS}
+    ${LLXML_INCLUDE_DIRS}
+    ${LLLOGIN_INCLUDE_DIRS}
+    )
+
+set(llappearance_SOURCE_FILES
+    llwearable.cpp
+    )
+    
+set(llappearance_HEADER_FILES
+    llwearable.h
+    CMakeLists.txt
+    )
+
+set_source_files_properties(${llappearance_HEADER_FILES}
+                            PROPERTIES HEADER_FILE_ONLY TRUE)
+
+list(APPEND llappearance_SOURCE_FILES ${llappearance_HEADER_FILES})
+
+add_library (llappearance ${llappearance_SOURCE_FILES})
+
+#add unit tests
+#if (LL_TESTS)
+#    INCLUDE(LLAddBuildTest)
+#    SET(llappearance_TEST_SOURCE_FILES
+#      # no real unit tests yet!
+#      )
+#    LL_ADD_PROJECT_UNIT_TESTS(llappearance "${llappearance_TEST_SOURCE_FILES}")
+
+    #set(TEST_DEBUG on)
+#    set(test_libs llappearance ${LLCOMMON_LIBRARIES})
+#endif (LL_TESTS)
diff --git a/indra/newview/llwearable.cpp b/indra/llappearance/llwearable.cpp
similarity index 98%
rename from indra/newview/llwearable.cpp
rename to indra/llappearance/llwearable.cpp
index 402504933cd..d72999d8c78 100644
--- a/indra/newview/llwearable.cpp
+++ b/indra/llappearance/llwearable.cpp
@@ -24,29 +24,29 @@
  * $/LicenseInfo$
  */
 
-#include "llviewerprecompiledheaders.h"
+//#include "llviewerprecompiledheaders.h"
 
-#include "llagent.h"
-#include "llagentcamera.h"
+//#include "llagent.h"
+//#include "llagentcamera.h"
 #include "llagentwearables.h"
-#include "lldictionary.h"
-#include "llfloatersidepanelcontainer.h"
-#include "lllocaltextureobject.h"
-#include "llnotificationsutil.h"
-#include "llviewertexturelist.h"
-#include "llinventorymodel.h"
-#include "llinventoryobserver.h"
-#include "llsidepanelappearance.h"
+//#include "lldictionary.h"
+//#include "llfloatersidepanelcontainer.h"
+//#include "lllocaltextureobject.h"
+//#include "llnotificationsutil.h"
+//#include "llviewertexturelist.h"
+//#include "llinventorymodel.h"
+//#include "llinventoryobserver.h"
+//#include "llsidepanelappearance.h"
 #include "lltexlayer.h"
-#include "lltexglobalcolor.h"
-#include "lltrans.h"
-#include "llviewerregion.h"
+//#include "lltexglobalcolor.h"
+//#include "lltrans.h"
+//#include "llviewerregion.h"
 #include "llvisualparam.h"
-#include "llvoavatar.h"
-#include "llvoavatarself.h"
-#include "llvoavatardefines.h"
+//#include "llvoavatar.h"
+//#include "llvoavatarself.h"
+//#include "llvoavatardefines.h"
 #include "llwearable.h"
-#include "llviewercontrol.h"
+//#include "llviewercontrol.h"
 
 using namespace LLVOAvatarDefines;
 
diff --git a/indra/newview/llwearable.h b/indra/llappearance/llwearable.h
similarity index 96%
rename from indra/newview/llwearable.h
rename to indra/llappearance/llwearable.h
index 3d8c53a755c..c8f9ef1fb94 100644
--- a/indra/newview/llwearable.h
+++ b/indra/llappearance/llwearable.h
@@ -27,14 +27,14 @@
 #ifndef LL_LLWEARABLE_H
 #define LL_LLWEARABLE_H
 
-#include "lluuid.h"
-#include "llstring.h"
-#include "llpermissions.h"
-#include "llsaleinfo.h"
-#include "llassetstorage.h"
-#include "llwearabletype.h"
-#include "llfile.h"
-#include "lllocaltextureobject.h"
+//#include "lluuid.h"
+//#include "llstring.h"
+//#include "llpermissions.h"
+//#include "llsaleinfo.h"
+//#include "llassetstorage.h"
+//#include "llwearabletype.h"
+//#include "llfile.h"
+//#include "lllocaltextureobject.h"
 
 class LLViewerInventoryItem;
 class LLVisualParam;
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 2c9952cbc8e..ff3fb0038cf 100755
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -44,6 +44,7 @@ include(LLLogin)
 include(VisualLeakDetector)
 include(GLOD)
 include(CMakeCopyIfDifferent)
+include(LLAppearance)
 
 add_subdirectory(${LLPHYSICSEXTENSIONS_SRC_DIR} llphysicsextensions)
 
@@ -77,6 +78,7 @@ include_directories(
     ${LIBS_PREBUILD_DIR}/include/hunspell
     ${OPENAL_LIB_INCLUDE_DIRS}
     ${LIBS_PREBUILT_DIR}/include/collada/1.4
+    ${LLAPPEARANCE_INCLUDE_DIRS}
     )
 
 set(viewer_SOURCE_FILES
@@ -625,7 +627,6 @@ set(viewer_SOURCE_FILES
     llwatchdog.cpp
     llwaterparammanager.cpp
     llwaterparamset.cpp
-    llwearable.cpp
     llwearableitemslist.cpp
     llwearablelist.cpp
     llwearabletype.cpp
@@ -1194,7 +1195,6 @@ set(viewer_HEADER_FILES
     llwatchdog.h
     llwaterparammanager.h
     llwaterparamset.h
-    llwearable.h
     llwearableitemslist.h
     llwearablelist.h
     llwearabletype.h
-- 
GitLab


From 01a229ecdf466bc183ad68b130b0bb2befcc1e6a Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Wed, 22 Aug 2012 15:27:34 -0400
Subject: [PATCH 039/436] SH-3625 WIP - consolidated a couple of attachment
 removal paths

---
 indra/newview/llappearancemgr.cpp |  4 ++++
 indra/newview/llviewermenu.cpp    | 27 ++++++++-------------------
 2 files changed, 12 insertions(+), 19 deletions(-)

diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 71b7298f5c2..2ad6f50ba9c 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -2765,6 +2765,10 @@ void LLAppearanceMgr::wearBaseOutfit()
 
 void LLAppearanceMgr::removeItemsFromAvatar(const uuid_vec_t& ids_to_remove)
 {
+	if (ids_to_remove.empty())
+	{
+		llwarns << "called with empty list, nothing to do" << llendl;
+	}
 	for (uuid_vec_t::const_iterator it = ids_to_remove.begin(); it != ids_to_remove.end(); ++it)
 	{
 		const LLUUID& id_to_remove = *it;
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index 9001c79a4d7..24bed93f045 100755
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -6389,23 +6389,21 @@ class LLAttachmentDetachFromPoint : public view_listener_t
 {
 	bool handleEvent(const LLSD& user_data)
 	{
+		uuid_vec_t ids_to_remove;
 		const LLViewerJointAttachment *attachment = get_if_there(gAgentAvatarp->mAttachmentPoints, user_data.asInteger(), (LLViewerJointAttachment*)NULL);
 		if (attachment->getNumObjects() > 0)
 		{
-			gMessageSystem->newMessage("ObjectDetach");
-			gMessageSystem->nextBlockFast(_PREHASH_AgentData);
-			gMessageSystem->addUUIDFast(_PREHASH_AgentID, gAgent.getID() );
-			gMessageSystem->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
-			
 			for (LLViewerJointAttachment::attachedobjs_vec_t::const_iterator iter = attachment->mAttachedObjects.begin();
 				 iter != attachment->mAttachedObjects.end();
 				 iter++)
 			{
 				LLViewerObject *attached_object = (*iter);
-				gMessageSystem->nextBlockFast(_PREHASH_ObjectData);
-				gMessageSystem->addU32Fast(_PREHASH_ObjectLocalID, attached_object->getLocalID());
+				ids_to_remove.push_back(attached_object->getAttachmentItemID());
 			}
-			gMessageSystem->sendReliable( gAgent.getRegionHost() );
+		}
+		if (!ids_to_remove.empty())
+		{
+			LLAppearanceMgr::instance().removeItemsFromAvatar(ids_to_remove);
 		}
 		return true;
 	}
@@ -6478,17 +6476,8 @@ class LLAttachmentDetach : public view_listener_t
 			return true;
 		}
 
-		// The sendDetach() method works on the list of selected
-		// objects.  Thus we need to clear the list, make sure it only
-		// contains the object the user clicked, send the message,
-		// then clear the list.
-		// We use deselectAll to update the simulator's notion of what's
-		// selected, and removeAll just to change things locally.
-		//RN: I thought it was more useful to detach everything that was selected
-		if (LLSelectMgr::getInstance()->getSelection()->isAttachment())
-		{
-			LLSelectMgr::getInstance()->sendDetach();
-		}
+		LLAppearanceMgr::instance().removeItemFromAvatar(object->getAttachmentItemID());
+
 		return true;
 	}
 };
-- 
GitLab


From 6e2739b76c669275b9ad62aa1b888cfc891012eb Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Wed, 22 Aug 2012 16:16:54 -0400
Subject: [PATCH 040/436] SH-3625 - some associated cleanup, do_update field is
 useless in various calls because of possible race conditions

---
 indra/newview/llappearancemgr.cpp     | 27 +++++++++------------------
 indra/newview/llappearancemgr.h       |  4 ++--
 indra/newview/llgesturemgr.cpp        |  2 +-
 indra/newview/llpaneleditwearable.cpp |  2 +-
 indra/newview/llvoavatarself.cpp      |  2 +-
 5 files changed, 14 insertions(+), 23 deletions(-)

diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 2ad6f50ba9c..2864338ef57 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -698,7 +698,7 @@ void LLWearableHoldingPattern::clearCOFLinksForMissingWearables()
 		{
 			// Wearable link that was never resolved; remove links to it from COF
 			LL_INFOS("Avatar") << self_av_string() << "removing link for unresolved item " << data.mItemID.asString() << LL_ENDL;
-			LLAppearanceMgr::instance().removeCOFItemLinks(data.mItemID,false);
+			LLAppearanceMgr::instance().removeCOFItemLinks(data.mItemID);
 		}
 	}
 }
@@ -812,7 +812,7 @@ void LLWearableHoldingPattern::handleLateArrivals()
 		if (data.mWearable && data.mIsReplacement &&
 			replaced_types.find(data.mWearableType) != replaced_types.end())
 		{
-			LLAppearanceMgr::instance().removeCOFItemLinks(data.mItemID,false);
+			LLAppearanceMgr::instance().removeCOFItemLinks(data.mItemID);
 			std::list<LLFoundData>::iterator clobber_ator = iter;
 			++iter;
 			getFoundList().erase(clobber_ator);
@@ -1052,7 +1052,7 @@ bool LLAppearanceMgr::wearItemOnAvatar(const LLUUID& item_id_to_wear, bool do_up
 			if ((replace && wearable_count != 0) ||
 				(wearable_count >= LLAgentWearables::MAX_CLOTHING_PER_TYPE) )
 			{
-				removeCOFItemLinks(gAgentWearables.getWearableItemID(item_to_wear->getWearableType(), wearable_count-1), false);
+				removeCOFItemLinks(gAgentWearables.getWearableItemID(item_to_wear->getWearableType(), wearable_count-1));
 			}
 			addCOFItemLink(item_to_wear, do_update, cb);
 		} 
@@ -1062,7 +1062,7 @@ bool LLAppearanceMgr::wearItemOnAvatar(const LLUUID& item_id_to_wear, bool do_up
 		
 		// Remove the existing wearables of the same type.
 		// Remove existing body parts anyway because we must not be able to wear e.g. two skins.
-		removeCOFLinksOfType(item_to_wear->getWearableType(), false);
+		removeCOFLinksOfType(item_to_wear->getWearableType());
 
 		addCOFItemLink(item_to_wear, do_update, cb);
 		break;
@@ -2270,7 +2270,7 @@ void LLAppearanceMgr::removeAllAttachmentsFromAvatar()
 	removeItemsFromAvatar(ids_to_remove);
 }
 
-void LLAppearanceMgr::removeCOFItemLinks(const LLUUID& item_id, bool do_update)
+void LLAppearanceMgr::removeCOFItemLinks(const LLUUID& item_id)
 {
 	gInventory.addChangedMask(LLInventoryObserver::LABEL, item_id);
 
@@ -2288,13 +2288,9 @@ void LLAppearanceMgr::removeCOFItemLinks(const LLUUID& item_id, bool do_update)
 			gInventory.purgeObject(item->getUUID());
 		}
 	}
-	if (do_update)
-	{
-		LLAppearanceMgr::updateAppearanceFromCOF();
-	}
 }
 
-void LLAppearanceMgr::removeCOFLinksOfType(LLWearableType::EType type, bool do_update)
+void LLAppearanceMgr::removeCOFLinksOfType(LLWearableType::EType type)
 {
 	LLFindWearablesOfType filter_wearables_of_type(type);
 	LLInventoryModel::cat_array_t cats;
@@ -2310,11 +2306,6 @@ void LLAppearanceMgr::removeCOFLinksOfType(LLWearableType::EType type, bool do_u
 			gInventory.purgeObject(item->getUUID());
 		}
 	}
-
-	if (do_update)
-	{
-		updateAppearanceFromCOF();
-	}
 }
 
 bool sort_by_linked_uuid(const LLViewerInventoryItem* item1, const LLViewerInventoryItem* item2)
@@ -2773,7 +2764,7 @@ void LLAppearanceMgr::removeItemsFromAvatar(const uuid_vec_t& ids_to_remove)
 	{
 		const LLUUID& id_to_remove = *it;
 		const LLUUID& linked_item_id = gInventory.getLinkedItemID(id_to_remove);
-		removeCOFItemLinks(linked_item_id,false);
+		removeCOFItemLinks(linked_item_id);
 	}
 	updateAppearanceFromCOF();
 }
@@ -2781,7 +2772,7 @@ void LLAppearanceMgr::removeItemsFromAvatar(const uuid_vec_t& ids_to_remove)
 void LLAppearanceMgr::removeItemFromAvatar(const LLUUID& id_to_remove)
 {
 	LLUUID linked_item_id = gInventory.getLinkedItemID(id_to_remove);
-	removeCOFItemLinks(linked_item_id,false);
+	removeCOFItemLinks(linked_item_id);
 	updateAppearanceFromCOF();
 }
 
@@ -2956,7 +2947,7 @@ void LLAppearanceMgr::unregisterAttachment(const LLUUID& item_id)
 
 	   if (mAttachmentInvLinkEnabled)
 	   {
-		   LLAppearanceMgr::removeCOFItemLinks(item_id, false);
+		   LLAppearanceMgr::removeCOFItemLinks(item_id);
 	   }
 	   else
 	   {
diff --git a/indra/newview/llappearancemgr.h b/indra/newview/llappearancemgr.h
index df27d5478a9..d6187e1cfb1 100755
--- a/indra/newview/llappearancemgr.h
+++ b/indra/newview/llappearancemgr.h
@@ -133,8 +133,8 @@ class LLAppearanceMgr: public LLSingleton<LLAppearanceMgr>
 	void addCOFItemLink(const LLInventoryItem *item, bool do_update = true, LLPointer<LLInventoryCallback> cb = NULL);
 
 	// Remove COF entries
-	void removeCOFItemLinks(const LLUUID& item_id, bool do_update = true);
-	void removeCOFLinksOfType(LLWearableType::EType type, bool do_update = true);
+	void removeCOFItemLinks(const LLUUID& item_id);
+	void removeCOFLinksOfType(LLWearableType::EType type);
 	void removeAllClothesFromAvatar();
 	void removeAllAttachmentsFromAvatar();
 
diff --git a/indra/newview/llgesturemgr.cpp b/indra/newview/llgesturemgr.cpp
index 66ca76bfb07..05fd9640c8f 100644
--- a/indra/newview/llgesturemgr.cpp
+++ b/indra/newview/llgesturemgr.cpp
@@ -337,7 +337,7 @@ void LLGestureMgr::deactivateGesture(const LLUUID& item_id)
 
 	gAgent.sendReliableMessage();
 
-	LLAppearanceMgr::instance().removeCOFItemLinks(base_item_id, false);
+	LLAppearanceMgr::instance().removeCOFItemLinks(base_item_id);
 
 	notifyObservers();
 }
diff --git a/indra/newview/llpaneleditwearable.cpp b/indra/newview/llpaneleditwearable.cpp
index d58d6d536c0..d8ba2aa6593 100644
--- a/indra/newview/llpaneleditwearable.cpp
+++ b/indra/newview/llpaneleditwearable.cpp
@@ -1044,7 +1044,7 @@ void LLPanelEditWearable::saveChanges(bool force_save_as)
         if (force_save_as)
         {
                 // the name of the wearable has changed, re-save wearable with new name
-                LLAppearanceMgr::instance().removeCOFItemLinks(mWearablePtr->getItemID(),false);
+                LLAppearanceMgr::instance().removeCOFItemLinks(mWearablePtr->getItemID());
                 gAgentWearables.saveWearableAs(mWearablePtr->getType(), index, new_name, FALSE);
                 mNameEditor->setText(mWearableItem->getName());
         }
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index 3604a373add..6c8cbc37f76 100755
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -1296,7 +1296,7 @@ BOOL LLVOAvatarSelf::detachAttachmentIntoInventory(const LLUUID &item_id)
 			const LLViewerObject *attached_obj = gAgentAvatarp->getWornAttachment(item_id);
 			if (!attached_obj)
 			{
-				LLAppearanceMgr::instance().removeCOFItemLinks(item_id, false);
+				LLAppearanceMgr::instance().removeCOFItemLinks(item_id);
 			}
 		}
 		return TRUE;
-- 
GitLab


From b59a443254ef11def158ffb46dbbb3d4d3dada4a Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Wed, 22 Aug 2012 18:51:03 -0400
Subject: [PATCH 041/436] Removed UseServerTextureBaking setting, now key off
 region protocol bits

---
 indra/newview/app_settings/settings.xml | 11 -----------
 indra/newview/llviewerregion.cpp        | 12 +-----------
 2 files changed, 1 insertion(+), 22 deletions(-)
 mode change 100644 => 100755 indra/newview/llviewerregion.cpp

diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 32213a07a8d..69986af83be 100755
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -12384,17 +12384,6 @@
       <key>Value</key>
       <integer>1</integer>
     </map>
-    <key>UseServerTextureBaking</key>
-    <map>
-      <key>Comment</key>
-      <string>Update appearance via the ServerTextureBaking cap, if available</string>
-      <key>Persist</key>
-      <integer>1</integer>
-      <key>Type</key>
-      <string>Boolean</string>
-      <key>Value</key>
-      <integer>1</integer>
-    </map>
   <key>RenderSynchronousOcclusion</key>
   <map>
     <key>Comment</key>
diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp
old mode 100644
new mode 100755
index 58e4b804fd5..fb50b8bb77b
--- a/indra/newview/llviewerregion.cpp
+++ b/indra/newview/llviewerregion.cpp
@@ -1453,17 +1453,7 @@ void LLViewerRegion::unpackRegionHandshake()
 	}
 
 
-	mCentralBakeVersion = (S32)gSavedSettings.getBOOL("UseServerTextureBaking");
-	/*
-	if (msg->getSize("RegionInfo4", "CentralBakesVersion") > 0)
-	{
-		msg->getS32("RegionInfo4", "CentralBakesVersion", mCentralBakeVersion);
-	}
-	else
-	{
-		mCentralBakeVersion = 0;
-	}
-	*/
+	mCentralBakeVersion = region_protocols & 1; // was (S32)gSavedSettings.getBOOL("UseServerTextureBaking");
 	LLVLComposition *compp = getComposition();
 	if (compp)
 	{
-- 
GitLab


From 87833a2485216e742da2617bc79dc600636f3736 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Mon, 27 Aug 2012 17:37:34 -0400
Subject: [PATCH 042/436] Fixed issues with mixed grids - new message blocks
 now variable

---
 scripts/messages/message_template.msg      | 8 ++++----
 scripts/messages/message_template.msg.sha1 | 2 +-
 2 files changed, 5 insertions(+), 5 deletions(-)
 mode change 100644 => 100755 scripts/messages/message_template.msg

diff --git a/scripts/messages/message_template.msg b/scripts/messages/message_template.msg
old mode 100644
new mode 100755
index 97f879629d6..6702de9b4a7
--- a/scripts/messages/message_template.msg
+++ b/scripts/messages/message_template.msg
@@ -2940,7 +2940,7 @@ version 2.0
 		{	PID					S32				}
 	}
 	{
-		RegionInfo Single
+		RegionInfo Variable
 		{	RegionFlagsExtended	U64				}
 	}
 }
@@ -2996,7 +2996,7 @@ version 2.0
 		{	HardMaxObjects		U32			}
 	}
 	{
-		RegionInfo3		Single
+		RegionInfo3		Variable
 		{	RegionFlagsExtended	U64			}
 	}
 }
@@ -3025,7 +3025,7 @@ version 2.0
 		{	RedirectGridY 		S32			}
 	}
 	{
-		RegionInfo2	Single
+		RegionInfo2	Variable
 		{	RegionFlagsExtended	U64			}
 	}
 }
@@ -3129,7 +3129,7 @@ version 2.0
 		{	ProductName				Variable	1	}	// string
 	}
 	{
-		RegionInfo4		Single
+		RegionInfo4		Variable
 		{	RegionFlagsExtended	U64			}
 		{	RegionProtocols		U64			}
 	}
diff --git a/scripts/messages/message_template.msg.sha1 b/scripts/messages/message_template.msg.sha1
index 2190f50c23d..7a31177f118 100644
--- a/scripts/messages/message_template.msg.sha1
+++ b/scripts/messages/message_template.msg.sha1
@@ -1 +1 @@
-74e56dceb590807a5d48ece83867879ea5c6d22e
\ No newline at end of file
+4dbf88396c3188ad4c54c4f847a7d8817793668d
\ No newline at end of file
-- 
GitLab


From a6bdef648014ec1c7424b2bd307b3453cc5c786c Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Tue, 28 Aug 2012 17:59:10 -0400
Subject: [PATCH 043/436] Force rebake now calls
 requestServerAppearanceUpdate() if supported

---
 indra/newview/llviewermenu.cpp | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index 24bed93f045..3c0136c258c 100755
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -7620,6 +7620,10 @@ void handle_rebake_textures(void*)
 	// Slam pending upload count to "unstick" things
 	bool slam_for_debug = true;
 	gAgentAvatarp->forceBakeAllTextures(slam_for_debug);
+	if (gAgent.getRegion() && gAgent.getRegion()->getCentralBakeVersion())
+	{
+		LLAppearanceMgr::instance().requestServerAppearanceUpdate();
+	}
 }
 
 void toggle_visibility(void* user_data)
-- 
GitLab


From 9e1b5bcd2cf40e9efe381f7fea7d855924b0f11c Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Wed, 29 Aug 2012 18:20:29 -0400
Subject: [PATCH 044/436] SH-3312 FIX - closing floater with outfit edit now
 has same behavior as explicitly leaving outfit edit with backarrow

---
 indra/newview/llfloatersidepanelcontainer.cpp | 22 +++++++++++++++++++
 indra/newview/llfloatersidepanelcontainer.h   |  2 ++
 2 files changed, 24 insertions(+)
 mode change 100644 => 100755 indra/newview/llfloatersidepanelcontainer.cpp
 mode change 100644 => 100755 indra/newview/llfloatersidepanelcontainer.h

diff --git a/indra/newview/llfloatersidepanelcontainer.cpp b/indra/newview/llfloatersidepanelcontainer.cpp
old mode 100644
new mode 100755
index 5385977d95d..3c966a073fd
--- a/indra/newview/llfloatersidepanelcontainer.cpp
+++ b/indra/newview/llfloatersidepanelcontainer.cpp
@@ -32,6 +32,8 @@
 // newview includes
 #include "llsidetraypanelcontainer.h"
 #include "lltransientfloatermgr.h"
+#include "llpaneloutfitedit.h"
+#include "llsidepanelappearance.h"
 
 //static
 const std::string LLFloaterSidePanelContainer::sMainPanelName("main_panel");
@@ -54,6 +56,26 @@ void LLFloaterSidePanelContainer::onOpen(const LLSD& key)
 	getChild<LLPanel>(sMainPanelName)->onOpen(key);
 }
 
+void LLFloaterSidePanelContainer::onClickCloseBtn()
+{
+	llinfos << "close clicked" << llendl;
+
+	LLPanelOutfitEdit* panel_outfit_edit =
+		dynamic_cast<LLPanelOutfitEdit*>(LLFloaterSidePanelContainer::getPanel("appearance", "panel_outfit_edit"));
+	if (panel_outfit_edit && panel_outfit_edit->getVisible())
+	{
+		LLFloater *parent = gFloaterView->getParentFloater(panel_outfit_edit);
+		if (parent == this)
+		{
+			LLSidepanelAppearance* panel_appearance =
+				dynamic_cast<LLSidepanelAppearance*>(getPanel("appearance"));
+			panel_appearance->showOutfitsInventoryPanel();
+		}
+	}
+
+	LLFloater::onClickCloseBtn();
+}
+
 LLPanel* LLFloaterSidePanelContainer::openChildPanel(const std::string& panel_name, const LLSD& params)
 {
 	LLView* view = findChildView(panel_name, true);
diff --git a/indra/newview/llfloatersidepanelcontainer.h b/indra/newview/llfloatersidepanelcontainer.h
old mode 100644
new mode 100755
index 10d85867ce5..491723471fb
--- a/indra/newview/llfloatersidepanelcontainer.h
+++ b/indra/newview/llfloatersidepanelcontainer.h
@@ -51,6 +51,8 @@ class LLFloaterSidePanelContainer : public LLFloater
 
 	/*virtual*/ void onOpen(const LLSD& key);
 
+	/*virtual*/ void onClickCloseBtn();
+
 	LLPanel* openChildPanel(const std::string& panel_name, const LLSD& params);
 
 	static void showPanel(const std::string& floater_name, const LLSD& key);
-- 
GitLab


From 825cc7873251ad90720ab40221d689abed7b2ac8 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Thu, 30 Aug 2012 17:36:03 -0400
Subject: [PATCH 045/436] log appearance update requests and results

---
 indra/newview/llappearancemgr.cpp | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 2864338ef57..f71d9c77049 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -2651,7 +2651,18 @@ void LLAppearanceMgr::updateClothingOrderingInfo(LLUUID cat_id, bool update_base
 class RequestAgentUpdateAppearanceResponder: public LLHTTPClient::Responder
 {
 public:
-	RequestAgentUpdateAppearanceResponder() {}
+	RequestAgentUpdateAppearanceResponder()
+	{
+		llinfos << "request created" << llendl;
+	}
+
+	// Successful completion.
+	/* virtual */ void result(const LLSD& content)
+	{
+		llinfos << "request OK" << llendl;
+	}
+
+	// Error
 	/*virtual*/ void error(U32 status, const std::string& reason)
 	{
 		llwarns << "appearance update request failed, reason: " << reason << llendl;
-- 
GitLab


From c355fb98d3f4040196b7b8586dc9328fccb906d2 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Mon, 3 Sep 2012 06:12:50 +0000
Subject: [PATCH 046/436] Extracted texture baking system into llappearance
 library.

---
 indra/llappearance/CMakeLists.txt             |  32 +-
 indra/llappearance/llavatarappearance.cpp     | 174 ++++
 indra/llappearance/llavatarappearance.h       | 128 +++
 .../llinventoryicon.cpp                       |   3 +-
 .../llinventoryicon.h                         |   0
 indra/llappearance/lljointpickname.h          |  46 +
 .../lllocaltextureobject.cpp                  |  13 +-
 .../lllocaltextureobject.h                    |  12 +-
 .../lltexglobalcolor.cpp                      |  18 +-
 .../lltexglobalcolor.h                        |  12 +-
 .../{newview => llappearance}/lltexlayer.cpp  | 848 ++---------------
 indra/{newview => llappearance}/lltexlayer.h  | 149 +--
 .../lltexlayerparams.cpp                      |  61 +-
 .../lltexlayerparams.h                        |  18 +-
 indra/llappearance/lltexturemanagerbridge.cpp |  32 +
 indra/llappearance/lltexturemanagerbridge.h   |  45 +
 .../llviewervisualparam.cpp                   |   3 +-
 .../llviewervisualparam.h                     |   0
 .../llvoavatardefines.cpp                     |  43 +-
 .../llvoavatardefines.h                       |  12 +-
 indra/llappearance/llwearable.cpp             | 868 +----------------
 indra/llappearance/llwearable.h               |  87 +-
 .../llwearabletype.cpp                        |   7 +-
 .../llwearabletype.h                          |   0
 indra/llcharacter/CMakeLists.txt              |   1 +
 indra/llrender/llglslshader.h                 |   2 +
 indra/llrender/lltexture.h                    |  46 +-
 indra/newview/CMakeLists.txt                  |  21 +-
 indra/newview/llagentwearables.cpp            | 120 +--
 indra/newview/llagentwearables.h              |  49 +-
 indra/newview/llappearancemgr.cpp             |  28 +-
 indra/newview/llappearancemgr.h               |   1 -
 indra/newview/llassetuploadresponders.cpp     |   2 +-
 indra/newview/llavatariconctrl.cpp            |   2 +
 indra/newview/lldriverparam.cpp               |  17 +-
 indra/newview/llfloaterauction.cpp            |   1 +
 indra/newview/llfloateravatartextures.cpp     |   5 +-
 indra/newview/llgroupiconctrl.cpp             |   1 +
 indra/newview/llinventorybridge.cpp           |   6 +-
 indra/newview/llinventorybridge.h             |   8 +-
 indra/newview/lllocalbitmaps.cpp              |   4 +-
 indra/newview/lllocalbitmaps.h                |   1 +
 indra/newview/llpanelclassified.cpp           |   1 +
 indra/newview/llpaneleditwearable.cpp         |  10 +-
 indra/newview/llpaneleditwearable.h           |  10 +-
 indra/newview/llpostcard.cpp                  |   1 +
 indra/newview/llsidepanelappearance.cpp       |  10 +-
 indra/newview/llsidepanelappearance.h         |   8 +-
 indra/newview/lltextureview.cpp               |   4 +-
 indra/newview/llviewerjoint.h                 |  20 +-
 indra/newview/llviewerjointmesh.cpp           |   4 +-
 indra/newview/llviewerjointmesh.h             |   6 +-
 indra/newview/llviewershadermgr.h             |   1 -
 indra/newview/llviewerstats.cpp               |   2 +-
 indra/newview/llviewertexlayer.cpp            | 791 +++++++++++++++
 indra/newview/llviewertexlayer.h              | 172 ++++
 indra/newview/llviewertexture.cpp             |  25 +
 indra/newview/llviewertexture.h               |  48 +-
 indra/newview/llviewerwearable.cpp            | 900 ++++++++++++++++++
 indra/newview/llviewerwearable.h              | 116 +++
 indra/newview/llvoavatar.cpp                  | 171 +---
 indra/newview/llvoavatar.h                    |  69 +-
 indra/newview/llvoavatarself.cpp              |  65 +-
 indra/newview/llvoavatarself.h                |  18 +-
 indra/newview/llwearablelist.cpp              |  24 +-
 indra/newview/llwearablelist.h                |  12 +-
 66 files changed, 3037 insertions(+), 2377 deletions(-)
 create mode 100644 indra/llappearance/llavatarappearance.cpp
 create mode 100644 indra/llappearance/llavatarappearance.h
 rename indra/{newview => llappearance}/llinventoryicon.cpp (99%)
 rename indra/{newview => llappearance}/llinventoryicon.h (100%)
 create mode 100644 indra/llappearance/lljointpickname.h
 rename indra/{newview => llappearance}/lllocaltextureobject.cpp (92%)
 rename indra/{newview => llappearance}/lllocaltextureobject.h (90%)
 rename indra/{newview => llappearance}/lltexglobalcolor.cpp (92%)
 rename indra/{newview => llappearance}/lltexglobalcolor.h (84%)
 rename indra/{newview => llappearance}/lltexlayer.cpp (63%)
 rename indra/{newview => llappearance}/lltexlayer.h (64%)
 rename indra/{newview => llappearance}/lltexlayerparams.cpp (87%)
 rename indra/{newview => llappearance}/lltexlayerparams.h (94%)
 create mode 100644 indra/llappearance/lltexturemanagerbridge.cpp
 create mode 100644 indra/llappearance/lltexturemanagerbridge.h
 rename indra/{newview => llappearance}/llviewervisualparam.cpp (98%)
 rename indra/{newview => llappearance}/llviewervisualparam.h (100%)
 rename indra/{newview => llappearance}/llvoavatardefines.cpp (92%)
 rename indra/{newview => llappearance}/llvoavatardefines.h (96%)
 rename indra/{newview => llappearance}/llwearabletype.cpp (98%)
 rename indra/{newview => llappearance}/llwearabletype.h (100%)
 create mode 100644 indra/newview/llviewertexlayer.cpp
 create mode 100644 indra/newview/llviewertexlayer.h
 create mode 100644 indra/newview/llviewerwearable.cpp
 create mode 100644 indra/newview/llviewerwearable.h

diff --git a/indra/llappearance/CMakeLists.txt b/indra/llappearance/CMakeLists.txt
index 39bfbc9a210..bc4748b87f5 100644
--- a/indra/llappearance/CMakeLists.txt
+++ b/indra/llappearance/CMakeLists.txt
@@ -28,34 +28,48 @@ include(LLLogin)
 
 include_directories(
     ${LLCOMMON_INCLUDE_DIRS}
-    ${VIEWER_INCLUDE_DIRS}
-    ${LLAUDIO_INCLUDE_DIRS}
     ${LLCHARACTER_INCLUDE_DIRS}
-    ${LLCOMMON_INCLUDE_DIRS}
     ${LLPHYSICS_INCLUDE_DIRS}
     ${LLIMAGE_INCLUDE_DIRS}
     ${LLKDU_INCLUDE_DIRS}
     ${LLINVENTORY_INCLUDE_DIRS}
     ${LLMATH_INCLUDE_DIRS}
-    ${LLMESSAGE_INCLUDE_DIRS}
-    ${LLPHYSICSEXTENSIONS_INCLUDE_DIRS}
-    ${LLPLUGIN_INCLUDE_DIRS}
-    ${LLPRIMITIVE_INCLUDE_DIRS}
     ${LLRENDER_INCLUDE_DIRS}
     ${LLUI_INCLUDE_DIRS}
     ${LLVFS_INCLUDE_DIRS}
     ${LLWINDOW_INCLUDE_DIRS}
     ${LLXML_INCLUDE_DIRS}
-    ${LLLOGIN_INCLUDE_DIRS}
     )
 
 set(llappearance_SOURCE_FILES
+    llavatarappearance.cpp
+    llinventoryicon.cpp
+    lllocaltextureobject.cpp
+    lltexglobalcolor.cpp
+    lltexlayer.cpp
+    lltexlayerparams.cpp
+    lltexturemanagerbridge.cpp
     llwearable.cpp
+    llwearabletype.cpp
+    llviewervisualparam.cpp
+    llvoavatardefines.cpp
     )
     
 set(llappearance_HEADER_FILES
-    llwearable.h
     CMakeLists.txt
+
+    llavatarappearance.h
+    llinventoryicon.cpp
+    lljointpickname.h
+    lllocaltextureobject.h
+    lltexglobalcolor.h
+    lltexlayer.h
+    lltexlayerparams.h
+    lltexturemanagerbridge.h
+    llwearable.h
+    llwearabletype.h
+    llviewervisualparam.h
+    llvoavatardefines.h
     )
 
 set_source_files_properties(${llappearance_HEADER_FILES}
diff --git a/indra/llappearance/llavatarappearance.cpp b/indra/llappearance/llavatarappearance.cpp
new file mode 100644
index 00000000000..1ca0161d7ed
--- /dev/null
+++ b/indra/llappearance/llavatarappearance.cpp
@@ -0,0 +1,174 @@
+/** 
+ * @File llavatarappearance.cpp
+ * @brief Implementation of LLAvatarAppearance class
+ *
+ * $LicenseInfo:firstyear=2012&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+#include "linden_common.h"
+
+#include "llavatarappearance.h"
+#include "lltexglobalcolor.h"
+
+const LLColor4 DUMMY_COLOR = LLColor4(0.5,0.5,0.5,1.0);
+
+LLAvatarAppearance::LLAvatarAppearance() :
+	LLCharacter(),
+	mTexSkinColor( NULL ),
+	mTexHairColor( NULL ),
+	mTexEyeColor( NULL ),
+	mIsDummy(FALSE)
+{
+	mDebugExistenceTimer.reset();
+}
+
+using namespace LLVOAvatarDefines;
+
+//static
+BOOL LLAvatarAppearance::teToColorParams( ETextureIndex te, U32 *param_name )
+{
+	switch( te )
+	{
+		case TEX_UPPER_SHIRT:
+			param_name[0] = 803; //"shirt_red";
+			param_name[1] = 804; //"shirt_green";
+			param_name[2] = 805; //"shirt_blue";
+			break;
+
+		case TEX_LOWER_PANTS:
+			param_name[0] = 806; //"pants_red";
+			param_name[1] = 807; //"pants_green";
+			param_name[2] = 808; //"pants_blue";
+			break;
+
+		case TEX_LOWER_SHOES:
+			param_name[0] = 812; //"shoes_red";
+			param_name[1] = 813; //"shoes_green";
+			param_name[2] = 817; //"shoes_blue";
+			break;
+
+		case TEX_LOWER_SOCKS:
+			param_name[0] = 818; //"socks_red";
+			param_name[1] = 819; //"socks_green";
+			param_name[2] = 820; //"socks_blue";
+			break;
+
+		case TEX_UPPER_JACKET:
+		case TEX_LOWER_JACKET:
+			param_name[0] = 834; //"jacket_red";
+			param_name[1] = 835; //"jacket_green";
+			param_name[2] = 836; //"jacket_blue";
+			break;
+
+		case TEX_UPPER_GLOVES:
+			param_name[0] = 827; //"gloves_red";
+			param_name[1] = 829; //"gloves_green";
+			param_name[2] = 830; //"gloves_blue";
+			break;
+
+		case TEX_UPPER_UNDERSHIRT:
+			param_name[0] = 821; //"undershirt_red";
+			param_name[1] = 822; //"undershirt_green";
+			param_name[2] = 823; //"undershirt_blue";
+			break;
+	
+		case TEX_LOWER_UNDERPANTS:
+			param_name[0] = 824; //"underpants_red";
+			param_name[1] = 825; //"underpants_green";
+			param_name[2] = 826; //"underpants_blue";
+			break;
+
+		case TEX_SKIRT:
+			param_name[0] = 921; //"skirt_red";
+			param_name[1] = 922; //"skirt_green";
+			param_name[2] = 923; //"skirt_blue";
+			break;
+
+		case TEX_HEAD_TATTOO:
+		case TEX_LOWER_TATTOO:
+		case TEX_UPPER_TATTOO:
+			param_name[0] = 1071; //"tattoo_red";
+			param_name[1] = 1072; //"tattoo_green";
+			param_name[2] = 1073; //"tattoo_blue";
+			break;	
+
+		default:
+			llassert(0);
+			return FALSE;
+	}
+
+	return TRUE;
+}
+
+void LLAvatarAppearance::setClothesColor( ETextureIndex te, const LLColor4& new_color, BOOL upload_bake )
+{
+	U32 param_name[3];
+	if( teToColorParams( te, param_name ) )
+	{
+		setVisualParamWeight( param_name[0], new_color.mV[VX], upload_bake );
+		setVisualParamWeight( param_name[1], new_color.mV[VY], upload_bake );
+		setVisualParamWeight( param_name[2], new_color.mV[VZ], upload_bake );
+	}
+}
+
+LLColor4 LLAvatarAppearance::getClothesColor( ETextureIndex te )
+{
+	LLColor4 color;
+	U32 param_name[3];
+	if( teToColorParams( te, param_name ) )
+	{
+		color.mV[VX] = getVisualParamWeight( param_name[0] );
+		color.mV[VY] = getVisualParamWeight( param_name[1] );
+		color.mV[VZ] = getVisualParamWeight( param_name[2] );
+	}
+	return color;
+}
+
+// static
+LLColor4 LLAvatarAppearance::getDummyColor()
+{
+	return DUMMY_COLOR;
+}
+
+LLColor4 LLAvatarAppearance::getGlobalColor( const std::string& color_name ) const
+{
+	if (color_name=="skin_color" && mTexSkinColor)
+	{
+		return mTexSkinColor->getColor();
+	}
+	else if(color_name=="hair_color" && mTexHairColor)
+	{
+		return mTexHairColor->getColor();
+	}
+	if(color_name=="eye_color" && mTexEyeColor)
+	{
+		return mTexEyeColor->getColor();
+	}
+	else
+	{
+//		return LLColor4( .5f, .5f, .5f, .5f );
+		return LLColor4( 0.f, 1.f, 1.f, 1.f ); // good debugging color
+	}
+}
+
+
+
diff --git a/indra/llappearance/llavatarappearance.h b/indra/llappearance/llavatarappearance.h
new file mode 100644
index 00000000000..cb2ae7aeefa
--- /dev/null
+++ b/indra/llappearance/llavatarappearance.h
@@ -0,0 +1,128 @@
+/**
+ * @file llavatarappearance.h
+ * @brief Declaration of LLAvatarAppearance class
+ *
+ * $LicenseInfo:firstyear=2012&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_AVATAR_APPEARANCE_H
+#define LL_AVATAR_APPEARANCE_H
+
+#include "llcharacter.h"
+#include "llframetimer.h"
+#include "llvoavatardefines.h"
+
+class LLTexGlobalColor;
+class LLTexLayerSet;
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// LLAvatarAppearance
+// 
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+class LLAvatarAppearance : public LLCharacter
+{
+	LOG_CLASS(LLAvatarAppearance);
+
+public:
+	LLAvatarAppearance();
+
+	//--------------------------------------------------------------------
+	// Clothing colors (convenience functions to access visual parameters)
+	//--------------------------------------------------------------------
+public:
+	void			setClothesColor(LLVOAvatarDefines::ETextureIndex te, const LLColor4& new_color, BOOL upload_bake);
+	LLColor4		getClothesColor(LLVOAvatarDefines::ETextureIndex te);
+	static BOOL		teToColorParams(LLVOAvatarDefines::ETextureIndex te, U32 *param_name);
+
+	//--------------------------------------------------------------------
+	// Global colors
+	//--------------------------------------------------------------------
+public:
+	LLColor4		getGlobalColor(const std::string& color_name ) const;
+	virtual void	onGlobalColorChanged(const LLTexGlobalColor* global_color, BOOL upload_bake) = 0;
+protected:
+	LLTexGlobalColor* mTexSkinColor;
+	LLTexGlobalColor* mTexHairColor;
+	LLTexGlobalColor* mTexEyeColor;
+
+	//--------------------------------------------------------------------
+	// Morph masks
+	//--------------------------------------------------------------------
+public:
+	virtual void	applyMorphMask(U8* tex_data, S32 width, S32 height, S32 num_components, LLVOAvatarDefines::EBakedTextureIndex index = LLVOAvatarDefines::BAKED_NUM_INDICES) = 0;
+
+	//--------------------------------------------------------------------
+	// Composites
+	//--------------------------------------------------------------------
+public:
+	virtual void	invalidateComposite(LLTexLayerSet* layerset, BOOL upload_result) = 0;
+
+/********************************************************************************
+ **                                                                            **
+ **                    MESHES
+ **/
+	virtual void	dirtyMesh() = 0; // Dirty the avatar mesh
+	virtual void	dirtyMesh(S32 priority) = 0; // Dirty the avatar mesh, with priority
+
+/********************************************************************************
+ **                                                                            **
+ **                    RENDERING
+ **/
+	BOOL		mIsDummy; // for special views
+
+/********************************************************************************
+ **                                                                            **
+ **                    STATE
+ **/
+public:
+	virtual bool 	isSelf() const { return false; } // True if this avatar is for this viewer's agent
+	virtual BOOL	isUsingBakedTextures() const = 0;
+
+/********************************************************************************
+ **                                                                            **
+ **                    WEARABLES
+ **/
+public:
+	virtual U32				getWearableCount(const LLWearableType::EType type) const = 0;
+	virtual U32				getWearableCount(const U32 tex_index) const = 0;
+
+	virtual LLWearable*			getWearable(const LLWearableType::EType type, U32 index /*= 0*/) = 0;
+	virtual const LLWearable* 	getWearable(const LLWearableType::EType type, U32 index /*= 0*/) const = 0;
+
+	virtual BOOL			isWearingWearableType(LLWearableType::EType type ) const = 0;
+
+	//--------------------------------------------------------------------
+	// Avatar Rez Metrics
+	//--------------------------------------------------------------------
+public:
+	F32				debugGetExistenceTimeElapsedF32() const { return mDebugExistenceTimer.getElapsedTimeF32(); }
+
+protected:
+	LLFrameTimer	mDebugExistenceTimer; // Debugging for how long the avatar has been in memory.
+
+public:
+	static LLColor4 getDummyColor();
+	virtual void	updateMeshTextures() = 0;
+};
+
+#endif // LL_AVATAR_APPEARANCE_H
diff --git a/indra/newview/llinventoryicon.cpp b/indra/llappearance/llinventoryicon.cpp
similarity index 99%
rename from indra/newview/llinventoryicon.cpp
rename to indra/llappearance/llinventoryicon.cpp
index 34734d57c5f..62261058ef3 100644
--- a/indra/newview/llinventoryicon.cpp
+++ b/indra/llappearance/llinventoryicon.cpp
@@ -24,7 +24,8 @@
  * $/LicenseInfo$
  */
 
-#include "llviewerprecompiledheaders.h"
+//#include "llviewerprecompiledheaders.h"
+#include "linden_common.h"
 #include "llinventoryicon.h"
 
 #include "lldictionary.h"
diff --git a/indra/newview/llinventoryicon.h b/indra/llappearance/llinventoryicon.h
similarity index 100%
rename from indra/newview/llinventoryicon.h
rename to indra/llappearance/llinventoryicon.h
diff --git a/indra/llappearance/lljointpickname.h b/indra/llappearance/lljointpickname.h
new file mode 100644
index 00000000000..17181520e3e
--- /dev/null
+++ b/indra/llappearance/lljointpickname.h
@@ -0,0 +1,46 @@
+/** 
+ * @file lljointpickname.h
+ * @brief Defines OpenGL seleciton stack names
+ *
+ * $LicenseInfo:firstyear=2001&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+
+#ifndef LL_LLJOINTPICKNAME_H
+#define LL_LLJOINTPICKNAME_H
+
+
+// Sets the OpenGL selection stack name that is pushed and popped
+// with this joint state.  The default value indicates that no name
+// should be pushed/popped.
+enum LLJointPickName
+{
+	PN_DEFAULT = -1,
+	PN_0 = 0,
+	PN_1 = 1,
+	PN_2 = 2,
+	PN_3 = 3,
+	PN_4 = 4,
+	PN_5 = 5
+};
+
+#endif // LL_LLJOINTPICKNAME_H
diff --git a/indra/newview/lllocaltextureobject.cpp b/indra/llappearance/lllocaltextureobject.cpp
similarity index 92%
rename from indra/newview/lllocaltextureobject.cpp
rename to indra/llappearance/lllocaltextureobject.cpp
index 07ec0fab95c..0e77444f491 100644
--- a/indra/newview/lllocaltextureobject.cpp
+++ b/indra/llappearance/lllocaltextureobject.cpp
@@ -23,13 +23,14 @@
  * $/LicenseInfo$
  */
 
-#include "llviewerprecompiledheaders.h"
+#include "linden_common.h"
 
 #include "lllocaltextureobject.h"
 
+#include "llimage.h"
+#include "llrender.h"
 #include "lltexlayer.h"
-#include "llviewertexture.h"
-#include "lltextureentry.h"
+#include "lltexture.h"
 #include "lluuid.h"
 #include "llwearable.h"
 
@@ -41,7 +42,7 @@ LLLocalTextureObject::LLLocalTextureObject() :
 	mImage = NULL;
 }
 
-LLLocalTextureObject::LLLocalTextureObject(LLViewerFetchedTexture* image, const LLUUID& id) :
+LLLocalTextureObject::LLLocalTextureObject(LLTexture* image, const LLUUID& id) :
 	mIsBakedReady(FALSE),
 	mDiscard(MAX_DISCARD_LEVEL+1)
 {
@@ -77,7 +78,7 @@ LLLocalTextureObject::~LLLocalTextureObject()
 {
 }
 
-LLViewerFetchedTexture* LLLocalTextureObject::getImage() const
+LLTexture* LLLocalTextureObject::getImage() const
 {
 	return mImage;
 }
@@ -126,7 +127,7 @@ BOOL LLLocalTextureObject::getBakedReady() const
 	return mIsBakedReady;
 }
 
-void LLLocalTextureObject::setImage(LLViewerFetchedTexture* new_image)
+void LLLocalTextureObject::setImage(LLTexture* new_image)
 {
 	mImage = new_image;
 }
diff --git a/indra/newview/lllocaltextureobject.h b/indra/llappearance/lllocaltextureobject.h
similarity index 90%
rename from indra/newview/lllocaltextureobject.h
rename to indra/llappearance/lllocaltextureobject.h
index b9bfc5472fa..8f868eb4127 100644
--- a/indra/newview/lllocaltextureobject.h
+++ b/indra/llappearance/lllocaltextureobject.h
@@ -29,11 +29,11 @@
 
 #include <boost/shared_ptr.hpp>
 
-#include "llviewertexture.h"
+#include "llpointer.h"
+#include "lltexture.h"
 
 class LLUUID;
 class LLTexLayer;
-class LLTextureEntry;
 class LLTexLayerTemplate;
 class LLWearable;
 
@@ -44,11 +44,11 @@ class LLLocalTextureObject
 {
 public:
 	LLLocalTextureObject();
-	LLLocalTextureObject(LLViewerFetchedTexture* image, const LLUUID& id);
+	LLLocalTextureObject(LLTexture* image, const LLUUID& id);
 	LLLocalTextureObject(const LLLocalTextureObject& lto);
 	~LLLocalTextureObject();
 
-	LLViewerFetchedTexture* getImage() const;
+	LLTexture* getImage() const;
 	LLTexLayer* getTexLayer(U32 index) const;
 	LLTexLayer* getTexLayer(const std::string &name);
 	U32 		getNumTexLayers() const;
@@ -56,7 +56,7 @@ class LLLocalTextureObject
 	S32			getDiscard() const;
 	BOOL		getBakedReady() const;
 
-	void setImage(LLViewerFetchedTexture* new_image);
+	void setImage(LLTexture* new_image);
 	BOOL setTexLayer(LLTexLayer *new_tex_layer, U32 index);
 	BOOL addTexLayer(LLTexLayer *new_tex_layer, LLWearable *wearable);
 	BOOL addTexLayer(LLTexLayerTemplate *new_tex_layer, LLWearable *wearable);
@@ -70,7 +70,7 @@ class LLLocalTextureObject
 
 private:
 
-	LLPointer<LLViewerFetchedTexture>  			mImage;
+	LLPointer<LLTexture>			mImage;
 	// NOTE: LLLocalTextureObject should be the exclusive owner of mTexEntry and mTexLayer
 	// using shared pointers here only for smart assignment & cleanup
 	// do NOT create new shared pointers to these objects, or keep pointers to them around
diff --git a/indra/newview/lltexglobalcolor.cpp b/indra/llappearance/lltexglobalcolor.cpp
similarity index 92%
rename from indra/newview/lltexglobalcolor.cpp
rename to indra/llappearance/lltexglobalcolor.cpp
index ebe5ccd6c05..d9c6150fc61 100644
--- a/indra/newview/lltexglobalcolor.cpp
+++ b/indra/llappearance/lltexglobalcolor.cpp
@@ -24,20 +24,22 @@
  * $/LicenseInfo$
  */
 
-#include "llviewerprecompiledheaders.h"
-#include "llagent.h"
+#include "linden_common.h"
+
+#include "llavatarappearance.h"
 #include "lltexlayer.h"
-#include "llvoavatar.h"
-#include "llwearable.h"
+//#include "llwearable.h"
 #include "lltexglobalcolor.h"
 
+class LLWearable;
+
 //-----------------------------------------------------------------------------
 // LLTexGlobalColor
 //-----------------------------------------------------------------------------
 
-LLTexGlobalColor::LLTexGlobalColor(LLVOAvatar* avatar) 
+LLTexGlobalColor::LLTexGlobalColor(LLAvatarAppearance* appearance)
 	:
-	mAvatar(avatar),
+	mAvatarAppearance(appearance),
 	mInfo(NULL)
 {
 }
@@ -91,7 +93,7 @@ const std::string& LLTexGlobalColor::getName() const
 // LLTexParamGlobalColor
 //-----------------------------------------------------------------------------
 LLTexParamGlobalColor::LLTexParamGlobalColor(LLTexGlobalColor* tex_global_color) :
-	LLTexLayerParamColor(tex_global_color->getAvatar()),
+	LLTexLayerParamColor(tex_global_color->getAvatarAppearance()),
 	mTexGlobalColor(tex_global_color)
 {
 }
@@ -105,7 +107,7 @@ LLTexParamGlobalColor::LLTexParamGlobalColor(LLTexGlobalColor* tex_global_color)
 
 void LLTexParamGlobalColor::onGlobalColorChanged(bool upload_bake)
 {
-	mAvatar->onGlobalColorChanged(mTexGlobalColor, upload_bake);
+	mAvatarAppearance->onGlobalColorChanged(mTexGlobalColor, upload_bake);
 }
 
 //-----------------------------------------------------------------------------
diff --git a/indra/newview/lltexglobalcolor.h b/indra/llappearance/lltexglobalcolor.h
similarity index 84%
rename from indra/newview/lltexglobalcolor.h
rename to indra/llappearance/lltexglobalcolor.h
index ae047984452..2867479876d 100644
--- a/indra/newview/lltexglobalcolor.h
+++ b/indra/llappearance/lltexglobalcolor.h
@@ -1,6 +1,6 @@
 /** 
  * @file lltexglobalcolor.h
- * @brief This is global texture color info used by llvoavatar.
+ * @brief This is global texture color info used by llavatarappearance.
  *
  * $LicenseInfo:firstyear=2008&license=viewerlgpl$
  * Second Life Viewer Source Code
@@ -30,31 +30,31 @@
 #include "lltexlayer.h"
 #include "lltexlayerparams.h"
 
-class LLVOAvatar;
+class LLAvatarAppearance;
 class LLWearable;
 class LLTexGlobalColorInfo;
 
 class LLTexGlobalColor
 {
 public:
-	LLTexGlobalColor( LLVOAvatar* avatar );
+	LLTexGlobalColor( LLAvatarAppearance* appearance );
 	~LLTexGlobalColor();
 
 	LLTexGlobalColorInfo*	getInfo() const { return mInfo; }
 	//   This sets mInfo and calls initialization functions
 	BOOL					setInfo(LLTexGlobalColorInfo *info);
 	
-	LLVOAvatar*				getAvatar()	const			   	{ return mAvatar; }
+	LLAvatarAppearance*		getAvatarAppearance()	const	   	{ return mAvatarAppearance; }
 	LLColor4				getColor() const;
 	const std::string&		getName() const;
 
 private:
 	param_color_list_t		mParamGlobalColorList;
-	LLVOAvatar*				mAvatar;  // just backlink, don't LLPointer 
+	LLAvatarAppearance*		mAvatarAppearance;  // just backlink, don't LLPointer 
 	LLTexGlobalColorInfo	*mInfo;
 };
 
-// Used by llvoavatar to determine skin/eye/hair color.
+// Used by llavatarappearance to determine skin/eye/hair color.
 class LLTexGlobalColorInfo
 {
 	friend class LLTexGlobalColor;
diff --git a/indra/newview/lltexlayer.cpp b/indra/llappearance/lltexlayer.cpp
similarity index 63%
rename from indra/newview/lltexlayer.cpp
rename to indra/llappearance/lltexlayer.cpp
index 467115c9284..3bb31d37215 100644
--- a/indra/newview/lltexlayer.cpp
+++ b/indra/llappearance/lltexlayer.cpp
@@ -24,28 +24,29 @@
  * $/LicenseInfo$
  */
 
-#include "llviewerprecompiledheaders.h"
+#include "linden_common.h"
 
 #include "lltexlayer.h"
 
-#include "llagent.h"
+#include "llavatarappearance.h"
+#include "llcrc.h"
+#include "imageids.h"
 #include "llimagej2c.h"
 #include "llimagetga.h"
-#include "llnotificationsutil.h"
+//#include "llnotificationsutil.h"
+#include "lldir.h"
 #include "llvfile.h"
 #include "llvfs.h"
-#include "llviewerstats.h"
-#include "llviewerregion.h"
-#include "llvoavatar.h"
-#include "llvoavatarself.h"
-#include "pipeline.h"
-#include "llassetuploadresponders.h"
+//#include "llviewerstats.h"
+//#include "llviewerregion.h"
+//#include "pipeline.h"
 #include "lltexlayerparams.h"
+#include "lltexturemanagerbridge.h"
 #include "llui.h"
-#include "llagentwearables.h"
+//#include "llagentwearables.h"
 #include "llwearable.h"
-#include "llviewercontrol.h"
-#include "llviewershadermgr.h"
+//#include "llviewercontrol.h"
+//#include "llviewershadermgr.h"
 #include "llviewervisualparam.h"
 
 //#include "../tools/imdebug/imdebug.h"
@@ -68,7 +69,7 @@ class LLTexLayerInfo
 	~LLTexLayerInfo();
 
 	BOOL parseXml(LLXmlTreeNode* node);
-	BOOL createVisualParams(LLVOAvatar *avatar);
+	BOOL createVisualParams(LLAvatarAppearance *appearance);
 	BOOL isUserSettable() { return mLocalTexture != -1;	}
 	S32  getLocalTexture() const { return mLocalTexture; }
 	BOOL getOnlyAlpha() const { return mUseLocalTextureAlphaOnly; }
@@ -95,626 +96,9 @@ class LLTexLayerInfo
 	param_alpha_info_list_t		mParamAlphaInfoList;
 };
 
-//-----------------------------------------------------------------------------
-// LLBakedUploadData()
-//-----------------------------------------------------------------------------
-LLBakedUploadData::LLBakedUploadData(const LLVOAvatarSelf* avatar,
-									 LLTexLayerSet* layerset,
-									 const LLUUID& id,
-									 bool highest_res) :
-	mAvatar(avatar),
-	mTexLayerSet(layerset),
-	mID(id),
-	mStartTime(LLFrameTimer::getTotalTime()),		// Record starting time
-	mIsHighestRes(highest_res)
-{ 
-}
 
 //-----------------------------------------------------------------------------
-// LLTexLayerSetBuffer
-// The composite image that a LLTexLayerSet writes to.  Each LLTexLayerSet has one.
-//-----------------------------------------------------------------------------
-
-// static
-S32 LLTexLayerSetBuffer::sGLByteCount = 0;
-
-LLTexLayerSetBuffer::LLTexLayerSetBuffer(LLTexLayerSet* const owner, 
-										 S32 width, S32 height) :
-	// ORDER_LAST => must render these after the hints are created.
-	LLViewerDynamicTexture( width, height, 4, LLViewerDynamicTexture::ORDER_LAST, TRUE ), 
-	mUploadPending(FALSE), // Not used for any logic here, just to sync sending of updates
-	mNeedsUpload(FALSE),
-	mNumLowresUploads(0),
-	mUploadFailCount(0),
-	mNeedsUpdate(TRUE),
-	mNumLowresUpdates(0),
-	mTexLayerSet(owner)
-{
-	LLTexLayerSetBuffer::sGLByteCount += getSize();
-	mNeedsUploadTimer.start();
-	mNeedsUpdateTimer.start();
-}
-
-LLTexLayerSetBuffer::~LLTexLayerSetBuffer()
-{
-	LLTexLayerSetBuffer::sGLByteCount -= getSize();
-	destroyGLTexture();
-	for( S32 order = 0; order < ORDER_COUNT; order++ )
-	{
-		LLViewerDynamicTexture::sInstances[order].erase(this);  // will fail in all but one case.
-	}
-}
-
-//virtual 
-S8 LLTexLayerSetBuffer::getType() const 
-{
-	return LLViewerDynamicTexture::LL_TEX_LAYER_SET_BUFFER ;
-}
-
-//virtual 
-void LLTexLayerSetBuffer::restoreGLTexture() 
-{	
-	LLViewerDynamicTexture::restoreGLTexture() ;
-}
-
-//virtual 
-void LLTexLayerSetBuffer::destroyGLTexture() 
-{
-	LLViewerDynamicTexture::destroyGLTexture() ;
-}
-
-// static
-void LLTexLayerSetBuffer::dumpTotalByteCount()
-{
-	llinfos << "Composite System GL Buffers: " << (LLTexLayerSetBuffer::sGLByteCount/1024) << "KB" << llendl;
-}
-
-void LLTexLayerSetBuffer::requestUpdate()
-{
-	restartUpdateTimer();
-	mNeedsUpdate = TRUE;
-	mNumLowresUpdates = 0;
-	// If we're in the middle of uploading a baked texture, we don't care about it any more.
-	// When it's downloaded, ignore it.
-	mUploadID.setNull();
-}
-
-void LLTexLayerSetBuffer::requestUpload()
-{
-	conditionalRestartUploadTimer();
-	mNeedsUpload = TRUE;
-	mNumLowresUploads = 0;
-	mUploadPending = TRUE;
-}
-
-void LLTexLayerSetBuffer::conditionalRestartUploadTimer()
-{
-	// If we requested a new upload but haven't even uploaded
-	// a low res version of our last upload request, then
-	// keep the timer ticking instead of resetting it.
-	if (mNeedsUpload && (mNumLowresUploads == 0))
-	{
-		mNeedsUploadTimer.unpause();
-	}
-	else
-	{
-		mNeedsUploadTimer.reset();
-		mNeedsUploadTimer.start();
-	}
-}
-
-void LLTexLayerSetBuffer::restartUpdateTimer()
-{
-	mNeedsUpdateTimer.reset();
-	mNeedsUpdateTimer.start();
-}
-
-void LLTexLayerSetBuffer::cancelUpload()
-{
-	mNeedsUpload = FALSE;
-	mUploadPending = FALSE;
-	mNeedsUploadTimer.pause();
-	mUploadRetryTimer.reset();
-}
-
-void LLTexLayerSetBuffer::pushProjection() const
-{
-	gGL.matrixMode(LLRender::MM_PROJECTION);
-	gGL.pushMatrix();
-	gGL.loadIdentity();
-	gGL.ortho(0.0f, mFullWidth, 0.0f, mFullHeight, -1.0f, 1.0f);
-
-	gGL.matrixMode(LLRender::MM_MODELVIEW);
-	gGL.pushMatrix();
-	gGL.loadIdentity();
-}
-
-void LLTexLayerSetBuffer::popProjection() const
-{
-	gGL.matrixMode(LLRender::MM_PROJECTION);
-	gGL.popMatrix();
-
-	gGL.matrixMode(LLRender::MM_MODELVIEW);
-	gGL.popMatrix();
-}
-
-BOOL LLTexLayerSetBuffer::needsRender()
-{
-	llassert(mTexLayerSet->getAvatar() == gAgentAvatarp);
-	if (!isAgentAvatarValid()) return FALSE;
-
-	const BOOL upload_now = mNeedsUpload && isReadyToUpload();
-	const BOOL update_now = mNeedsUpdate && isReadyToUpdate();
-
-	// Don't render if we don't want to (or aren't ready to) upload or update.
-	if (!(update_now || upload_now))
-	{
-		return FALSE;
-	}
-
-	// Don't render if we're animating our appearance.
-	if (gAgentAvatarp->getIsAppearanceAnimating())
-	{
-		return FALSE;
-	}
-
-	// Don't render if we are trying to create a shirt texture but aren't wearing a skirt.
-	if (gAgentAvatarp->getBakedTE(mTexLayerSet) == LLVOAvatarDefines::TEX_SKIRT_BAKED && 
-		!gAgentAvatarp->isWearingWearableType(LLWearableType::WT_SKIRT))
-	{
-		cancelUpload();
-		return FALSE;
-	}
-
-	// Render if we have at least minimal level of detail for each local texture.
-	return mTexLayerSet->isLocalTextureDataAvailable();
-}
-
-void LLTexLayerSetBuffer::preRender(BOOL clear_depth)
-{
-	// Set up an ortho projection
-	pushProjection();
-	
-	// keep depth buffer, we don't need to clear it
-	LLViewerDynamicTexture::preRender(FALSE);
-}
-
-void LLTexLayerSetBuffer::postRender(BOOL success)
-{
-	popProjection();
-
-	LLViewerDynamicTexture::postRender(success);
-}
-
-BOOL LLTexLayerSetBuffer::render()
-{
-	// Default color mask for tex layer render
-	gGL.setColorMask(true, true);
-
-	// do we need to upload, and do we have sufficient data to create an uploadable composite?
-	// TODO: When do we upload the texture if gAgent.mNumPendingQueries is non-zero?
-	const BOOL upload_now = mNeedsUpload && isReadyToUpload();
-	const BOOL update_now = mNeedsUpdate && isReadyToUpdate();
-	
-	BOOL success = TRUE;
-	
-	bool use_shaders = LLGLSLShader::sNoFixedFunction;
-
-	if (use_shaders)
-	{
-		gAlphaMaskProgram.bind();
-		gAlphaMaskProgram.setMinimumAlpha(0.004f);
-	}
-
-	LLVertexBuffer::unbind();
-
-	// Composite the color data
-	LLGLSUIDefault gls_ui;
-	success &= mTexLayerSet->render( mOrigin.mX, mOrigin.mY, mFullWidth, mFullHeight );
-	gGL.flush();
-
-	if(upload_now)
-	{
-		if (!success)
-		{
-			llinfos << "Failed attempt to bake " << mTexLayerSet->getBodyRegionName() << llendl;
-			mUploadPending = FALSE;
-		}
-		else
-		{
-			if (mTexLayerSet->isVisible())
-			{
-				mTexLayerSet->getAvatar()->debugBakedTextureUpload(mTexLayerSet->getBakedTexIndex(), FALSE); // FALSE for start of upload, TRUE for finish.
-				doUpload();
-			}
-			else
-			{
-				mUploadPending = FALSE;
-				mNeedsUpload = FALSE;
-				mNeedsUploadTimer.pause();
-				mTexLayerSet->getAvatar()->setNewBakedTexture(mTexLayerSet->getBakedTexIndex(),IMG_INVISIBLE);
-			}
-		}
-	}
-	
-	if (update_now)
-	{
-		doUpdate();
-	}
-
-	if (use_shaders)
-	{
-		gAlphaMaskProgram.unbind();
-	}
-
-	LLVertexBuffer::unbind();
-	
-	// reset GL state
-	gGL.setColorMask(true, true);
-	gGL.setSceneBlendType(LLRender::BT_ALPHA);
-
-	// we have valid texture data now
-	mGLTexturep->setGLTextureCreated(true);
-
-	return success;
-}
-
-BOOL LLTexLayerSetBuffer::isInitialized(void) const
-{
-	return mGLTexturep.notNull() && mGLTexturep->isGLTextureCreated();
-}
-
-BOOL LLTexLayerSetBuffer::uploadPending() const
-{
-	return mUploadPending;
-}
-
-BOOL LLTexLayerSetBuffer::uploadNeeded() const
-{
-	return mNeedsUpload;
-}
-
-BOOL LLTexLayerSetBuffer::uploadInProgress() const
-{
-	return !mUploadID.isNull();
-}
-
-BOOL LLTexLayerSetBuffer::isReadyToUpload() const
-{
-	if (!gAgentQueryManager.hasNoPendingQueries()) return FALSE; // Can't upload if there are pending queries.
-	if (isAgentAvatarValid() && !gAgentAvatarp->isUsingBakedTextures()) return FALSE; // Don't upload if avatar is using composites.
-
-	BOOL ready = FALSE;
-	if (mTexLayerSet->isLocalTextureDataFinal())
-	{
-		// If we requested an upload and have the final LOD ready, upload (or wait a while if this is a retry)
-		if (mUploadFailCount == 0)
-		{
-			ready = TRUE;
-		}
-		else
-		{
-			ready = mUploadRetryTimer.getElapsedTimeF32() >= BAKE_UPLOAD_RETRY_DELAY * (1 << (mUploadFailCount - 1));
-		}
-	}
-	else
-	{
-		// Upload if we've hit a timeout.  Upload is a pretty expensive process so we need to make sure
-		// we aren't doing uploads too frequently.
-		const U32 texture_timeout = gSavedSettings.getU32("AvatarBakedTextureUploadTimeout");
-		if (texture_timeout != 0)
-		{
-			// The timeout period increases exponentially between every lowres upload in order to prevent
-			// spamming the server with frequent uploads.
-			const U32 texture_timeout_threshold = texture_timeout*(1 << mNumLowresUploads);
-
-			// If we hit our timeout and have textures available at even lower resolution, then upload.
-			const BOOL is_upload_textures_timeout = mNeedsUploadTimer.getElapsedTimeF32() >= texture_timeout_threshold;
-			const BOOL has_lower_lod = mTexLayerSet->isLocalTextureDataAvailable();
-			ready = has_lower_lod && is_upload_textures_timeout;
-		}
-	}
-
-	return ready;
-}
-
-BOOL LLTexLayerSetBuffer::isReadyToUpdate() const
-{
-	// If we requested an update and have the final LOD ready, then update.
-	if (mTexLayerSet->isLocalTextureDataFinal()) return TRUE;
-
-	// If we haven't done an update yet, then just do one now regardless of state of textures.
-	if (mNumLowresUpdates == 0) return TRUE;
-
-	// Update if we've hit a timeout.  Unlike for uploads, we can make this timeout fairly small
-	// since render unnecessarily doesn't cost much.
-	const U32 texture_timeout = gSavedSettings.getU32("AvatarBakedLocalTextureUpdateTimeout");
-	if (texture_timeout != 0)
-	{
-		// If we hit our timeout and have textures available at even lower resolution, then update.
-		const BOOL is_update_textures_timeout = mNeedsUpdateTimer.getElapsedTimeF32() >= texture_timeout;
-		const BOOL has_lower_lod = mTexLayerSet->isLocalTextureDataAvailable();
-		if (has_lower_lod && is_update_textures_timeout) return TRUE; 
-	}
-
-	return FALSE;
-}
-
-BOOL LLTexLayerSetBuffer::requestUpdateImmediate()
-{
-	mNeedsUpdate = TRUE;
-	BOOL result = FALSE;
-
-	if (needsRender())
-	{
-		preRender(FALSE);
-		result = render();
-		postRender(result);
-	}
-
-	return result;
-}
-
-// Create the baked texture, send it out to the server, then wait for it to come
-// back so we can switch to using it.
-void LLTexLayerSetBuffer::doUpload()
-{
-	llinfos << "Uploading baked " << mTexLayerSet->getBodyRegionName() << llendl;
-	LLViewerStats::getInstance()->incStat(LLViewerStats::ST_TEX_BAKES);
-
-	// Don't need caches since we're baked now.  (note: we won't *really* be baked 
-	// until this image is sent to the server and the Avatar Appearance message is received.)
-	mTexLayerSet->deleteCaches();
-
-	// Get the COLOR information from our texture
-	U8* baked_color_data = new U8[ mFullWidth * mFullHeight * 4 ];
-	glReadPixels(mOrigin.mX, mOrigin.mY, mFullWidth, mFullHeight, GL_RGBA, GL_UNSIGNED_BYTE, baked_color_data );
-	stop_glerror();
-
-	// Get the MASK information from our texture
-	LLGLSUIDefault gls_ui;
-	LLPointer<LLImageRaw> baked_mask_image = new LLImageRaw(mFullWidth, mFullHeight, 1 );
-	U8* baked_mask_data = baked_mask_image->getData(); 
-	mTexLayerSet->gatherMorphMaskAlpha(baked_mask_data, mFullWidth, mFullHeight);
-
-
-	// Create the baked image from our color and mask information
-	const S32 baked_image_components = 5; // red green blue [bump] clothing
-	LLPointer<LLImageRaw> baked_image = new LLImageRaw( mFullWidth, mFullHeight, baked_image_components );
-	U8* baked_image_data = baked_image->getData();
-	S32 i = 0;
-	for (S32 u=0; u < mFullWidth; u++)
-	{
-		for (S32 v=0; v < mFullHeight; v++)
-		{
-			baked_image_data[5*i + 0] = baked_color_data[4*i + 0];
-			baked_image_data[5*i + 1] = baked_color_data[4*i + 1];
-			baked_image_data[5*i + 2] = baked_color_data[4*i + 2];
-			baked_image_data[5*i + 3] = baked_color_data[4*i + 3]; // alpha should be correct for eyelashes.
-			baked_image_data[5*i + 4] = baked_mask_data[i];
-			i++;
-		}
-	}
-	
-	LLPointer<LLImageJ2C> compressedImage = new LLImageJ2C;
-	const char* comment_text = LINDEN_J2C_COMMENT_PREFIX "RGBHM"; // writes into baked_color_data. 5 channels (rgb, heightfield/alpha, mask)
-	if (compressedImage->encode(baked_image, comment_text))
-	{
-		LLTransactionID tid;
-		tid.generate();
-		const LLAssetID asset_id = tid.makeAssetID(gAgent.getSecureSessionID());
-		if (LLVFile::writeFile(compressedImage->getData(), compressedImage->getDataSize(),
-							   gVFS, asset_id, LLAssetType::AT_TEXTURE))
-		{
-			// Read back the file and validate.
-			BOOL valid = FALSE;
-			LLPointer<LLImageJ2C> integrity_test = new LLImageJ2C;
-			S32 file_size = 0;
-			U8* data = LLVFile::readFile(gVFS, asset_id, LLAssetType::AT_TEXTURE, &file_size);
-			if (data)
-			{
-				valid = integrity_test->validate(data, file_size); // integrity_test will delete 'data'
-			}
-			else
-			{
-				integrity_test->setLastError("Unable to read entire file");
-			}
-			
-			if (valid)
-			{
-				const bool highest_lod = mTexLayerSet->isLocalTextureDataFinal();
-				// Baked_upload_data is owned by the responder and deleted after the request completes.
-				LLBakedUploadData* baked_upload_data = new LLBakedUploadData(gAgentAvatarp, 
-																			 this->mTexLayerSet, 
-																			 asset_id,
-																			 highest_lod);
-				// upload ID is used to avoid overlaps, e.g. when the user rapidly makes two changes outside of Face Edit.
-				mUploadID = asset_id;
-
-				// Upload the image
-				const std::string url = gAgent.getRegion()->getCapability("UploadBakedTexture");
-				if(!url.empty()
-					&& !LLPipeline::sForceOldBakedUpload // toggle debug setting UploadBakedTexOld to change between the new caps method and old method
-					&& (mUploadFailCount < (BAKE_UPLOAD_ATTEMPTS - 1))) // Try last ditch attempt via asset store if cap upload is failing.
-				{
-					LLSD body = LLSD::emptyMap();
-					// The responder will call LLTexLayerSetBuffer::onTextureUploadComplete()
-					LLHTTPClient::post(url, body, new LLSendTexLayerResponder(body, mUploadID, LLAssetType::AT_TEXTURE, baked_upload_data));
-					llinfos << "Baked texture upload via capability of " << mUploadID << " to " << url << llendl;
-				} 
-				else
-				{
-					gAssetStorage->storeAssetData(tid,
-												  LLAssetType::AT_TEXTURE,
-												  LLTexLayerSetBuffer::onTextureUploadComplete,
-												  baked_upload_data,
-												  TRUE,		// temp_file
-												  TRUE,		// is_priority
-												  TRUE);	// store_local
-					llinfos << "Baked texture upload via Asset Store." <<  llendl;
-				}
-
-				if (highest_lod)
-				{
-					// Sending the final LOD for the baked texture.  All done, pause 
-					// the upload timer so we know how long it took.
-					mNeedsUpload = FALSE;
-					mNeedsUploadTimer.pause();
-				}
-				else
-				{
-					// Sending a lower level LOD for the baked texture.  Restart the upload timer.
-					mNumLowresUploads++;
-					mNeedsUploadTimer.unpause();
-					mNeedsUploadTimer.reset();
-				}
-
-				// Print out notification that we uploaded this texture.
-				if (gSavedSettings.getBOOL("DebugAvatarRezTime"))
-				{
-					const std::string lod_str = highest_lod ? "HighRes" : "LowRes";
-					LLSD args;
-					args["EXISTENCE"] = llformat("%d",(U32)mTexLayerSet->getAvatar()->debugGetExistenceTimeElapsedF32());
-					args["TIME"] = llformat("%d",(U32)mNeedsUploadTimer.getElapsedTimeF32());
-					args["BODYREGION"] = mTexLayerSet->getBodyRegionName();
-					args["RESOLUTION"] = lod_str;
-					LLNotificationsUtil::add("AvatarRezSelfBakedTextureUploadNotification",args);
-					LL_DEBUGS("Avatar") << self_av_string() << "Uploading [ name: " << mTexLayerSet->getBodyRegionName() << " res:" << lod_str << " time:" << (U32)mNeedsUploadTimer.getElapsedTimeF32() << " ]" << LL_ENDL;
-				}
-			}
-			else
-			{
-				// The read back and validate operation failed.  Remove the uploaded file.
-				mUploadPending = FALSE;
-				LLVFile file(gVFS, asset_id, LLAssetType::AT_TEXTURE, LLVFile::WRITE);
-				file.remove();
-				llinfos << "Unable to create baked upload file (reason: corrupted)." << llendl;
-			}
-		}
-	}
-	else
-	{
-		// The VFS write file operation failed.
-		mUploadPending = FALSE;
-		llinfos << "Unable to create baked upload file (reason: failed to write file)" << llendl;
-	}
-
-	delete [] baked_color_data;
-}
-
-// Mostly bookkeeping; don't need to actually "do" anything since
-// render() will actually do the update.
-void LLTexLayerSetBuffer::doUpdate()
-{
-	const BOOL highest_lod = mTexLayerSet->isLocalTextureDataFinal();
-	if (highest_lod)
-	{
-		mNeedsUpdate = FALSE;
-	}
-	else
-	{
-		mNumLowresUpdates++;
-	}
-
-	restartUpdateTimer();
-
-	// need to swtich to using this layerset if this is the first update
-	// after getting the lowest LOD
-	mTexLayerSet->getAvatar()->updateMeshTextures();
-	
-	// Print out notification that we uploaded this texture.
-	if (gSavedSettings.getBOOL("DebugAvatarRezTime"))
-	{
-		const BOOL highest_lod = mTexLayerSet->isLocalTextureDataFinal();
-		const std::string lod_str = highest_lod ? "HighRes" : "LowRes";
-		LLSD args;
-		args["EXISTENCE"] = llformat("%d",(U32)mTexLayerSet->getAvatar()->debugGetExistenceTimeElapsedF32());
-		args["TIME"] = llformat("%d",(U32)mNeedsUpdateTimer.getElapsedTimeF32());
-		args["BODYREGION"] = mTexLayerSet->getBodyRegionName();
-		args["RESOLUTION"] = lod_str;
-		LLNotificationsUtil::add("AvatarRezSelfBakedTextureUpdateNotification",args);
-		LL_DEBUGS("Avatar") << self_av_string() << "Locally updating [ name: " << mTexLayerSet->getBodyRegionName() << " res:" << lod_str << " time:" << (U32)mNeedsUpdateTimer.getElapsedTimeF32() << " ]" << LL_ENDL;
-	}
-}
-
-// static
-void LLTexLayerSetBuffer::onTextureUploadComplete(const LLUUID& uuid,
-												  void* userdata,
-												  S32 result,
-												  LLExtStat ext_status) // StoreAssetData callback (not fixed)
-{
-	LLBakedUploadData* baked_upload_data = (LLBakedUploadData*)userdata;
-
-	if (isAgentAvatarValid() &&
-		!gAgentAvatarp->isDead() &&
-		(baked_upload_data->mAvatar == gAgentAvatarp) && // Sanity check: only the user's avatar should be uploading textures.
-		(baked_upload_data->mTexLayerSet->hasComposite()))
-	{
-		LLTexLayerSetBuffer* layerset_buffer = baked_upload_data->mTexLayerSet->getComposite();
-		S32 failures = layerset_buffer->mUploadFailCount;
-		layerset_buffer->mUploadFailCount = 0;
-
-		if (layerset_buffer->mUploadID.isNull())
-		{
-			// The upload got canceled, we should be in the
-			// process of baking a new texture so request an
-			// upload with the new data
-
-			// BAP: does this really belong in this callback, as
-			// opposed to where the cancellation takes place?
-			// suspect this does nothing.
-			layerset_buffer->requestUpload();
-		}
-		else if (baked_upload_data->mID == layerset_buffer->mUploadID)
-		{
-			// This is the upload we're currently waiting for.
-			layerset_buffer->mUploadID.setNull();
-			const std::string name(baked_upload_data->mTexLayerSet->getBodyRegionName());
-			const std::string resolution = baked_upload_data->mIsHighestRes ? " full res " : " low res ";
-			if (result >= 0)
-			{
-				layerset_buffer->mUploadPending = FALSE; // Allows sending of AgentSetAppearance later
-				LLVOAvatarDefines::ETextureIndex baked_te = gAgentAvatarp->getBakedTE(layerset_buffer->mTexLayerSet);
-				// Update baked texture info with the new UUID
-				U64 now = LLFrameTimer::getTotalTime();		// Record starting time
-				llinfos << "Baked" << resolution << "texture upload for " << name << " took " << (S32)((now - baked_upload_data->mStartTime) / 1000) << " ms" << llendl;
-				gAgentAvatarp->setNewBakedTexture(baked_te, uuid);
-			}
-			else
-			{	
-				++failures;
-				S32 max_attempts = baked_upload_data->mIsHighestRes ? BAKE_UPLOAD_ATTEMPTS : 1; // only retry final bakes
-				llwarns << "Baked" << resolution << "texture upload for " << name << " failed (attempt " << failures << "/" << max_attempts << ")" << llendl;
-				if (failures < max_attempts)
-				{
-					layerset_buffer->mUploadFailCount = failures;
-					layerset_buffer->mUploadRetryTimer.start();
-					layerset_buffer->requestUpload();
-				}
-			}
-		}
-		else
-		{
-			llinfos << "Received baked texture out of date, ignored." << llendl;
-		}
-
-		gAgentAvatarp->dirtyMesh();
-	}
-	else
-	{
-		// Baked texture failed to upload (in which case since we
-		// didn't set the new baked texture, it means that they'll try
-		// and rebake it at some point in the future (after login?)),
-		// or this response to upload is out of date, in which case a
-		// current response should be on the way or already processed.
-		llwarns << "Baked upload failed" << llendl;
-	}
-
-	delete baked_upload_data;
-}
-
-//-----------------------------------------------------------------------------
-// LLTexLayerSet
+// LLTexLayerSetInfo
 // An ordered set of texture layers that get composited into a single texture.
 //-----------------------------------------------------------------------------
 
@@ -784,7 +168,7 @@ BOOL LLTexLayerSetInfo::parseXml(LLXmlTreeNode* node)
 }
 
 // creates visual params without generating layersets or layers
-void LLTexLayerSetInfo::createVisualParams(LLVOAvatar *avatar)
+void LLTexLayerSetInfo::createVisualParams(LLAvatarAppearance *appearance)
 {
 	//layer_info_list_t		mLayerInfoList;
 	for (layer_info_list_t::iterator layer_iter = mLayerInfoList.begin();
@@ -792,7 +176,7 @@ void LLTexLayerSetInfo::createVisualParams(LLVOAvatar *avatar)
 		 layer_iter++)
 	{
 		LLTexLayerInfo *layer_info = *layer_iter;
-		layer_info->createVisualParams(avatar);
+		layer_info->createVisualParams(appearance);
 	}
 }
 
@@ -803,16 +187,15 @@ void LLTexLayerSetInfo::createVisualParams(LLVOAvatar *avatar)
 
 BOOL LLTexLayerSet::sHasCaches = FALSE;
 
-LLTexLayerSet::LLTexLayerSet(LLVOAvatarSelf* const avatar) :
-	mComposite( NULL ),
-	mAvatar( avatar ),
-	mUpdatesEnabled( FALSE ),
+LLTexLayerSet::LLTexLayerSet(LLAvatarAppearance* const appearance) :
+	mAvatarAppearance( appearance ),
 	mIsVisible( TRUE ),
 	mBakedTexIndex(LLVOAvatarDefines::BAKED_HEAD),
 	mInfo( NULL )
 {
 }
 
+// virtual
 LLTexLayerSet::~LLTexLayerSet()
 {
 	deleteCaches();
@@ -838,13 +221,13 @@ BOOL LLTexLayerSet::setInfo(const LLTexLayerSetInfo *info)
 		LLTexLayerInterface *layer = NULL;
 		if ( (*iter)->isUserSettable() )
 		{
-			layer = new LLTexLayerTemplate( this );
+			layer = new LLTexLayerTemplate( this, getAvatarAppearance() );
 		}
 		else
 		{
 			layer = new LLTexLayer(this);
 		}
-		// this is the first time this layer (of either type) is being created - make sure you add the parameters to the avatar
+		// this is the first time this layer (of either type) is being created - make sure you add the parameters to the avatar appearance
 		if (!layer->setInfo(*iter, NULL))
 		{
 			mInfo = NULL;
@@ -904,21 +287,6 @@ void LLTexLayerSet::deleteCaches()
 	}
 }
 
-// Returns TRUE if at least one packet of data has been received for each of the textures that this layerset depends on.
-BOOL LLTexLayerSet::isLocalTextureDataAvailable() const
-{
-	if (!mAvatar->isSelf()) return FALSE;
-	return ((LLVOAvatarSelf *)mAvatar)->isLocalTextureDataAvailable(this);
-}
-
-
-// Returns TRUE if all of the data for the textures that this layerset depends on have arrived.
-BOOL LLTexLayerSet::isLocalTextureDataFinal() const
-{
-	if (!mAvatar->isSelf()) return FALSE;
-	return ((LLVOAvatarSelf *)mAvatar)->isLocalTextureDataFinal(this);
-}
-
 
 BOOL LLTexLayerSet::render( S32 x, S32 y, S32 width, S32 height )
 {
@@ -1019,91 +387,6 @@ const std::string LLTexLayerSet::getBodyRegionName() const
 	return mInfo->mBodyRegion; 
 }
 
-void LLTexLayerSet::requestUpdate()
-{
-	if( mUpdatesEnabled )
-	{
-		createComposite();
-		mComposite->requestUpdate(); 
-	}
-}
-
-void LLTexLayerSet::requestUpload()
-{
-	createComposite();
-	mComposite->requestUpload();
-}
-
-void LLTexLayerSet::cancelUpload()
-{
-	if(mComposite)
-	{
-		mComposite->cancelUpload();
-	}
-}
-
-void LLTexLayerSet::createComposite()
-{
-	if(!mComposite)
-	{
-		S32 width = mInfo->mWidth;
-		S32 height = mInfo->mHeight;
-		// Composite other avatars at reduced resolution
-		if( !mAvatar->isSelf() )
-		{
-			llerrs << "composites should not be created for non-self avatars!" << llendl;
-		}
-		mComposite = new LLTexLayerSetBuffer( this, width, height );
-	}
-}
-
-void LLTexLayerSet::destroyComposite()
-{
-	if( mComposite )
-	{
-		mComposite = NULL;
-	}
-}
-
-void LLTexLayerSet::setUpdatesEnabled( BOOL b )
-{
-	mUpdatesEnabled = b; 
-}
-
-
-void LLTexLayerSet::updateComposite()
-{
-	createComposite();
-	mComposite->requestUpdateImmediate();
-}
-
-LLTexLayerSetBuffer* LLTexLayerSet::getComposite()
-{
-	if (!mComposite)
-	{
-		createComposite();
-	}
-	return mComposite;
-}
-
-const LLTexLayerSetBuffer* LLTexLayerSet::getComposite() const
-{
-	return mComposite;
-}
-
-void LLTexLayerSet::gatherMorphMaskAlpha(U8 *data, S32 width, S32 height)
-{
-	memset(data, 255, width * height);
-
-	for( layer_list_t::iterator iter = mLayerList.begin(); iter != mLayerList.end(); iter++ )
-	{
-		LLTexLayerInterface* layer = *iter;
-		layer->gatherAlphaMasks(data, mComposite->getOriginX(),mComposite->getOriginY(), width, height);
-	}
-	
-	// Set alpha back to that of our alpha masks.
-	renderAlphaMaskTextures(mComposite->getOriginX(), mComposite->getOriginY(), width, height, true);
-}
 
 void LLTexLayerSet::renderAlphaMaskTextures(S32 x, S32 y, S32 width, S32 height, bool forceClear)
 {
@@ -1119,7 +402,7 @@ void LLTexLayerSet::renderAlphaMaskTextures(S32 x, S32 y, S32 width, S32 height,
 	{
 		gGL.flush();
 		{
-			LLViewerTexture* tex = LLTexLayerStaticImageList::getInstance()->getTexture(info->mStaticAlphaFileName, TRUE);
+			LLTexture* tex = LLTexLayerStaticImageList::getInstance()->getTexture(info->mStaticAlphaFileName, TRUE);
 			if( tex )
 			{
 				LLGLSUIDefault gls_ui;
@@ -1176,7 +459,7 @@ void LLTexLayerSet::renderAlphaMaskTextures(S32 x, S32 y, S32 width, S32 height,
 
 void LLTexLayerSet::applyMorphMask(U8* tex_data, S32 width, S32 height, S32 num_components)
 {
-	mAvatar->applyMorphMask(tex_data, width, height, num_components, mBakedTexIndex);
+	mAvatarAppearance->applyMorphMask(tex_data, width, height, num_components, mBakedTexIndex);
 }
 
 BOOL LLTexLayerSet::isMorphValid() const
@@ -1362,7 +645,7 @@ BOOL LLTexLayerInfo::parseXml(LLXmlTreeNode* node)
 	return TRUE;
 }
 
-BOOL LLTexLayerInfo::createVisualParams(LLVOAvatar *avatar)
+BOOL LLTexLayerInfo::createVisualParams(LLAvatarAppearance *appearance)
 {
 	BOOL success = TRUE;
 	for (param_color_info_list_t::iterator color_info_iter = mParamColorInfoList.begin();
@@ -1370,7 +653,7 @@ BOOL LLTexLayerInfo::createVisualParams(LLVOAvatar *avatar)
 		 color_info_iter++)
 	{
 		LLTexLayerParamColorInfo * color_info = *color_info_iter;
-		LLTexLayerParamColor* param_color = new LLTexLayerParamColor(avatar);
+		LLTexLayerParamColor* param_color = new LLTexLayerParamColor(appearance);
 		if (!param_color->setInfo(color_info, TRUE))
 		{
 			llwarns << "NULL TexLayer Color Param could not be added to visual param list. Deleting." << llendl;
@@ -1384,7 +667,7 @@ BOOL LLTexLayerInfo::createVisualParams(LLVOAvatar *avatar)
 		 alpha_info_iter++)
 	{
 		LLTexLayerParamAlphaInfo * alpha_info = *alpha_info_iter;
-		LLTexLayerParamAlpha* param_alpha = new LLTexLayerParamAlpha(avatar);
+		LLTexLayerParamAlpha* param_alpha = new LLTexLayerParamAlpha(appearance);
 		if (!param_alpha->setInfo(alpha_info, TRUE))
 		{
 			llwarns << "NULL TexLayer Alpha Param could not be added to visual param list. Deleting." << llendl;
@@ -1631,17 +914,21 @@ void LLTexLayer::calculateTexLayerColor(const param_color_list_t &param_list, LL
 BOOL LLTexLayer::render(S32 x, S32 y, S32 width, S32 height)
 {
 	LLGLEnable color_mat(GL_COLOR_MATERIAL);
-	gPipeline.disableLights();
+	// *TODO: Is this correct?
+	//gPipeline.disableLights();
+	stop_glerror();
+	glDisable(GL_LIGHTING);
+	stop_glerror();
 
 	bool use_shaders = LLGLSLShader::sNoFixedFunction;
 
 	LLColor4 net_color;
 	BOOL color_specified = findNetColor(&net_color);
 	
-	if (mTexLayerSet->getAvatar()->mIsDummy)
+	if (mTexLayerSet->getAvatarAppearance()->mIsDummy)
 	{
 		color_specified = true;
-		net_color = LLVOAvatar::getDummyColor();
+		net_color = LLAvatarAppearance::getDummyColor();
 	}
 
 	BOOL success = TRUE;
@@ -1698,7 +985,7 @@ BOOL LLTexLayer::render(S32 x, S32 y, S32 width, S32 height)
 	if( (getInfo()->mLocalTexture != -1) && !getInfo()->mUseLocalTextureAlphaOnly )
 	{
 		{
-			LLViewerTexture* tex = NULL;
+			LLTexture* tex = NULL;
 			if (mLocalTextureObject && mLocalTextureObject->getImage())
 			{
 				tex = mLocalTextureObject->getImage();
@@ -1711,7 +998,7 @@ BOOL LLTexLayer::render(S32 x, S32 y, S32 width, S32 height)
 			{
 				llinfos << "lto not defined or image not defined: " << getInfo()->getLocalTexture() << " lto: " << mLocalTextureObject << llendl;
 			}
-//			if( mTexLayerSet->getAvatar()->getLocalTextureGL((ETextureIndex)getInfo()->mLocalTexture, &image_gl ) )
+//			if( mTexLayerSet->getAvatarAppearance()->getLocalTextureGL((ETextureIndex)getInfo()->mLocalTexture, &image_gl ) )
 			{
 				if( tex )
 				{
@@ -1748,7 +1035,7 @@ BOOL LLTexLayer::render(S32 x, S32 y, S32 width, S32 height)
 	if( !getInfo()->mStaticImageFileName.empty() )
 	{
 		{
-			LLViewerTexture* tex = LLTexLayerStaticImageList::getInstance()->getTexture(getInfo()->mStaticImageFileName, getInfo()->mStaticImageIsMask);
+			LLTexture* tex = LLTexLayerStaticImageList::getInstance()->getTexture(getInfo()->mStaticImageFileName, getInfo()->mStaticImageIsMask);
 			if( tex )
 			{
 				gGL.getTexUnit(0)->bind(tex, TRUE);
@@ -1828,7 +1115,7 @@ BOOL LLTexLayer::findNetColor(LLColor4* net_color) const
 	{
 		if( !getGlobalColor().empty() )
 		{
-			net_color->setVec( mTexLayerSet->getAvatar()->getGlobalColor( getInfo()->mGlobalColor ) );
+			net_color->setVec( mTexLayerSet->getAvatarAppearance()->getGlobalColor( getInfo()->mGlobalColor ) );
 		}
 		else if (getInfo()->mFixedColor.mV[VW])
 		{
@@ -1845,7 +1132,7 @@ BOOL LLTexLayer::findNetColor(LLColor4* net_color) const
 
 	if( !getGlobalColor().empty() )
 	{
-		net_color->setVec( mTexLayerSet->getAvatar()->getGlobalColor( getGlobalColor() ) );
+		net_color->setVec( mTexLayerSet->getAvatarAppearance()->getGlobalColor( getGlobalColor() ) );
 		return TRUE;
 	}
 
@@ -1870,7 +1157,7 @@ BOOL LLTexLayer::blendAlphaTexture(S32 x, S32 y, S32 width, S32 height)
 
 	if( !getInfo()->mStaticImageFileName.empty() )
 	{
-		LLViewerTexture* tex = LLTexLayerStaticImageList::getInstance()->getTexture( getInfo()->mStaticImageFileName, getInfo()->mStaticImageIsMask );
+		LLTexture* tex = LLTexLayerStaticImageList::getInstance()->getTexture( getInfo()->mStaticImageFileName, getInfo()->mStaticImageIsMask );
 		if( tex )
 		{
 			LLGLSNoAlphaTest gls_no_alpha_test;
@@ -1895,7 +1182,7 @@ BOOL LLTexLayer::blendAlphaTexture(S32 x, S32 y, S32 width, S32 height)
 	{
 		if (getInfo()->mLocalTexture >=0 && getInfo()->mLocalTexture < TEX_NUM_INDICES)
 		{
-			LLViewerTexture* tex = mLocalTextureObject->getImage();
+			LLTexture* tex = mLocalTextureObject->getImage();
 			if (tex)
 			{
 				LLGLSNoAlphaTest gls_no_alpha_test;
@@ -1969,7 +1256,7 @@ BOOL LLTexLayer::renderMorphMasks(S32 x, S32 y, S32 width, S32 height, const LLC
 	// Accumulate the alpha component of the texture
 	if( getInfo()->mLocalTexture != -1 )
 	{
-		LLViewerTexture* tex = mLocalTextureObject->getImage();
+		LLTexture* tex = mLocalTextureObject->getImage();
 		if( tex && (tex->getComponents() == 4) )
 		{
 			LLGLSNoAlphaTest gls_no_alpha_test;
@@ -1987,7 +1274,7 @@ BOOL LLTexLayer::renderMorphMasks(S32 x, S32 y, S32 width, S32 height, const LLC
 
 	if( !getInfo()->mStaticImageFileName.empty() )
 	{
-		LLViewerTexture* tex = LLTexLayerStaticImageList::getInstance()->getTexture(getInfo()->mStaticImageFileName, getInfo()->mStaticImageIsMask);
+		LLTexture* tex = LLTexLayerStaticImageList::getInstance()->getTexture(getInfo()->mStaticImageFileName, getInfo()->mStaticImageIsMask);
 		if( tex )
 		{
 			if(	(tex->getComponents() == 4) ||
@@ -2038,7 +1325,7 @@ BOOL LLTexLayer::renderMorphMasks(S32 x, S32 y, S32 width, S32 height, const LLC
 		if (!alpha_data)
 		{
 			// clear out a slot if we have filled our cache
-			S32 max_cache_entries = getTexLayerSet()->getAvatar()->isSelf() ? 4 : 1;
+			S32 max_cache_entries = getTexLayerSet()->getAvatarAppearance()->isSelf() ? 4 : 1;
 			while ((S32)mAlphaCache.size() >= max_cache_entries)
 			{
 				alpha_cache_t::iterator iter2 = mAlphaCache.begin(); // arbitrarily grab the first entry
@@ -2051,7 +1338,7 @@ BOOL LLTexLayer::renderMorphMasks(S32 x, S32 y, S32 width, S32 height, const LLC
 			glReadPixels(x, y, width, height, GL_ALPHA, GL_UNSIGNED_BYTE, alpha_data);
 		}
 		
-		getTexLayerSet()->getAvatar()->dirtyMesh();
+		getTexLayerSet()->getAvatarAppearance()->dirtyMesh();
 
 		mMorphMasksValid = TRUE;
 		getTexLayerSet()->applyMorphMask(alpha_data, width, height, 1);
@@ -2104,7 +1391,7 @@ LLUUID LLTexLayer::getUUID() const
 	LLUUID uuid;
 	if( getInfo()->mLocalTexture != -1 )
 	{
-			LLViewerTexture* tex = mLocalTextureObject->getImage();
+			LLTexture* tex = mLocalTextureObject->getImage();
 			if (tex)
 			{
 				uuid = mLocalTextureObject->getID();
@@ -2112,7 +1399,7 @@ LLUUID LLTexLayer::getUUID() const
 	}
 	if( !getInfo()->mStaticImageFileName.empty() )
 	{
-			LLViewerTexture* tex = LLTexLayerStaticImageList::getInstance()->getTexture(getInfo()->mStaticImageFileName, getInfo()->mStaticImageIsMask);
+			LLTexture* tex = LLTexLayerStaticImageList::getInstance()->getTexture(getInfo()->mStaticImageFileName, getInfo()->mStaticImageIsMask);
 			if( tex )
 			{
 				uuid = tex->getID();
@@ -2135,13 +1422,15 @@ LLUUID LLTexLayer::getUUID() const
 //			* a texture entry index (TE)
 //		* (optional) one or more alpha parameters (weighted alpha textures)
 //-----------------------------------------------------------------------------
-LLTexLayerTemplate::LLTexLayerTemplate(LLTexLayerSet* layer_set) :
-	LLTexLayerInterface(layer_set)
+LLTexLayerTemplate::LLTexLayerTemplate(LLTexLayerSet* layer_set, LLAvatarAppearance* const appearance) :
+	LLTexLayerInterface(layer_set),
+	mAvatarAppearance( appearance )
 {
 }
 
 LLTexLayerTemplate::LLTexLayerTemplate(const LLTexLayerTemplate &layer) :
-	LLTexLayerInterface(layer)
+	LLTexLayerInterface(layer),
+	mAvatarAppearance(layer.getAvatarAppearance())
 {
 }
 
@@ -2169,11 +1458,11 @@ U32 LLTexLayerTemplate::updateWearableCache() const
 		return 0;
 	}
 	LLWearableType::EType wearable_type = LLVOAvatarDictionary::getTEWearableType((ETextureIndex)te);
-	U32 num_wearables = gAgentWearables.getWearableCount(wearable_type);
+	U32 num_wearables = getAvatarAppearance()->getWearableCount(wearable_type);
 	U32 added = 0;
 	for (U32 i = 0; i < num_wearables; i++)
 	{
-		LLWearable*  wearable = gAgentWearables.getWearable(wearable_type, i);
+		LLWearable*  wearable = getAvatarAppearance()->getWearable(wearable_type, i);
 		if (!wearable)
 		{
 			continue;
@@ -2430,9 +1719,9 @@ LLImageTGA* LLTexLayerStaticImageList::getImageTGA(const std::string& file_name)
 
 // Returns a GL Image (without a backing ImageRaw) that contains the decoded data from a tga file named file_name.
 // Caches the result to speed identical subsequent requests.
-LLViewerTexture* LLTexLayerStaticImageList::getTexture(const std::string& file_name, BOOL is_mask)
+LLTexture* LLTexLayerStaticImageList::getTexture(const std::string& file_name, BOOL is_mask)
 {
-	LLPointer<LLViewerTexture> tex;
+	LLPointer<LLTexture> tex;
 	const char *namekey = mImageNames.addString(file_name);
 
 	texture_map_t::const_iterator iter = mStaticImageList.find(namekey);
@@ -2442,7 +1731,8 @@ LLViewerTexture* LLTexLayerStaticImageList::getTexture(const std::string& file_n
 	}
 	else
 	{
-		tex = LLViewerTextureManager::getLocalTexture( FALSE );
+		llassert(gTextureManagerBridgep);
+		tex = gTextureManagerBridgep->getLocalTexture( FALSE );
 		LLPointer<LLImageRaw> image_raw = new LLImageRaw;
 		if( loadImageRaw( file_name, image_raw ) )
 		{
@@ -2452,7 +1742,7 @@ LLViewerTexture* LLTexLayerStaticImageList::getTexture(const std::string& file_n
 				// that once an image is a mask it's always a mask.
 				tex->setExplicitFormat( GL_ALPHA8, GL_ALPHA );
 			}
-			tex->createGLTexture(0, image_raw, 0, TRUE, LLViewerTexture::LOCAL);
+			tex->createGLTexture(0, image_raw, 0, TRUE, LLTexture::LOCAL);
 
 			gGL.getTexUnit(0)->bind(tex);
 			tex->setAddressMode(LLTexUnit::TAM_CLAMP);
@@ -2486,23 +1776,3 @@ BOOL LLTexLayerStaticImageList::loadImageRaw(const std::string& file_name, LLIma
 	return success;
 }
 
-const std::string LLTexLayerSetBuffer::dumpTextureInfo() const
-{
-	if (!isAgentAvatarValid()) return "";
-
-	const BOOL is_high_res = !mNeedsUpload;
-	const U32 num_low_res = mNumLowresUploads;
-	const U32 upload_time = (U32)mNeedsUploadTimer.getElapsedTimeF32();
-	const std::string local_texture_info = gAgentAvatarp->debugDumpLocalTextureDataInfo(mTexLayerSet);
-
-	std::string status 				= "CREATING ";
-	if (!uploadNeeded()) status 	= "DONE     ";
-	if (uploadInProgress()) status 	= "UPLOADING";
-
-	std::string text = llformat("[%s] [HiRes:%d LoRes:%d] [Elapsed:%d] %s",
-								status.c_str(),
-								is_high_res, num_low_res,
-								upload_time, 
-								local_texture_info.c_str());
-	return text;
-}
diff --git a/indra/newview/lltexlayer.h b/indra/llappearance/lltexlayer.h
similarity index 64%
rename from indra/newview/lltexlayer.h
rename to indra/llappearance/lltexlayer.h
index 4f43547dae5..5ee08e67ec9 100644
--- a/indra/newview/lltexlayer.h
+++ b/indra/llappearance/lltexlayer.h
@@ -28,19 +28,18 @@
 #define LL_LLTEXLAYER_H
 
 #include <deque>
-#include "lldynamictexture.h"
+#include "lltexture.h"
+#include "llframetimer.h"
 #include "llvoavatardefines.h"
 #include "lltexlayerparams.h"
 
-class LLVOAvatar;
-class LLVOAvatarSelf;
+class LLAvatarAppearance;
 class LLImageTGA;
 class LLImageRaw;
 class LLXmlTreeNode;
 class LLTexLayerSet;
 class LLTexLayerSetInfo;
 class LLTexLayerInfo;
-class LLTexLayerSetBuffer;
 class LLWearable;
 class LLViewerVisualParam;
 
@@ -113,7 +112,7 @@ class LLTexLayerInterface
 class LLTexLayerTemplate : public LLTexLayerInterface
 {
 public:
-	LLTexLayerTemplate(LLTexLayerSet* const layer_set);
+	LLTexLayerTemplate(LLTexLayerSet* const layer_set, LLAvatarAppearance* const appearance);
 	LLTexLayerTemplate(const LLTexLayerTemplate &layer);
 	/*virtual*/ ~LLTexLayerTemplate();
 	/*virtual*/ BOOL		render(S32 x, S32 y, S32 width, S32 height);
@@ -126,7 +125,9 @@ class LLTexLayerTemplate : public LLTexLayerInterface
 protected:
 	U32 					updateWearableCache() const;
 	LLTexLayer* 			getLayer(U32 i) const;
+	LLAvatarAppearance*		getAvatarAppearance()	const		{ return mAvatarAppearance; }
 private:
+	LLAvatarAppearance*	const	mAvatarAppearance; // note: backlink only; don't make this an LLPointer.
 	typedef std::vector<LLWearable*> wearable_cache_t;
 	mutable wearable_cache_t mWearableCache; // mutable b/c most get- require updating this cache
 };
@@ -177,10 +178,9 @@ class LLTexLayer : public LLTexLayerInterface
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 class LLTexLayerSet
 {
-	friend class LLTexLayerSetBuffer;
 public:
-	LLTexLayerSet(LLVOAvatarSelf* const avatar);
-	~LLTexLayerSet();
+	LLTexLayerSet(LLAvatarAppearance* const appearance);
+	virtual ~LLTexLayerSet();
 
 	const LLTexLayerSetInfo* 	getInfo() const 			{ return mInfo; }
 	BOOL						setInfo(const LLTexLayerSetInfo *info); // This sets mInfo and calls initialization functions
@@ -189,42 +189,27 @@ class LLTexLayerSet
 	void						renderAlphaMaskTextures(S32 x, S32 y, S32 width, S32 height, bool forceClear = false);
 
 	BOOL						isBodyRegion(const std::string& region) const;
-	LLTexLayerSetBuffer*		getComposite();
-	const LLTexLayerSetBuffer* 	getComposite() const; // Do not create one if it doesn't exist.
-	void						requestUpdate();
-	void						requestUpload();
-	void						cancelUpload();
-	void						updateComposite();
-	BOOL						isLocalTextureDataAvailable() const;
-	BOOL						isLocalTextureDataFinal() const;
-	void						createComposite();
-	void						destroyComposite();
-	void						setUpdatesEnabled(BOOL b);
-	BOOL						getUpdatesEnabled()	const 	{ return mUpdatesEnabled; }
-	void						deleteCaches();
-	void						gatherMorphMaskAlpha(U8 *data, S32 width, S32 height);
 	void						applyMorphMask(U8* tex_data, S32 width, S32 height, S32 num_components);
 	BOOL						isMorphValid() const;
+	virtual void				requestUpdate() = 0;
 	void						invalidateMorphMasks();
+	void						deleteCaches();
 	LLTexLayerInterface*		findLayerByName(const std::string& name);
 	void						cloneTemplates(LLLocalTextureObject *lto, LLVOAvatarDefines::ETextureIndex tex_index, LLWearable* wearable);
 	
-	LLVOAvatarSelf*		    	getAvatar()	const 			{ return mAvatar; }
+	LLAvatarAppearance*			getAvatarAppearance()	const		{ return mAvatarAppearance; }
 	const std::string			getBodyRegionName() const;
-	BOOL						hasComposite() const 		{ return (mComposite.notNull()); }
 	LLVOAvatarDefines::EBakedTextureIndex getBakedTexIndex() { return mBakedTexIndex; }
 	void						setBakedTexIndex(LLVOAvatarDefines::EBakedTextureIndex index) { mBakedTexIndex = index; }
 	BOOL						isVisible() const 			{ return mIsVisible; }
 
 	static BOOL					sHasCaches;
 
-private:
+protected:
 	typedef std::vector<LLTexLayerInterface *> layer_list_t;
 	layer_list_t				mLayerList;
 	layer_list_t				mMaskLayerList;
-	LLPointer<LLTexLayerSetBuffer>	mComposite;
-	LLVOAvatarSelf*	const		mAvatar; // note: backlink only; don't make this an LLPointer.
-	BOOL						mUpdatesEnabled;
+	LLAvatarAppearance*	const	mAvatarAppearance; // note: backlink only; don't make this an LLPointer.
 	BOOL						mIsVisible;
 
 	LLVOAvatarDefines::EBakedTextureIndex mBakedTexIndex;
@@ -243,8 +228,10 @@ class LLTexLayerSetInfo
 	LLTexLayerSetInfo();
 	~LLTexLayerSetInfo();
 	BOOL parseXml(LLXmlTreeNode* node);
-	void createVisualParams(LLVOAvatar *avatar);
-private:
+	void createVisualParams(LLAvatarAppearance *appearance);
+	S32 getWidth() const { return mWidth; }
+	S32 getHeight() const { return mHeight; }
+protected:
 	std::string				mBodyRegion;
 	S32						mWidth;
 	S32						mHeight;
@@ -254,85 +241,6 @@ class LLTexLayerSetInfo
 	layer_info_list_t		mLayerInfoList;
 };
 
-//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-// LLTexLayerSetBuffer
-//
-// The composite image that a LLTexLayerSet writes to.  Each LLTexLayerSet has one.
-//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-class LLTexLayerSetBuffer : public LLViewerDynamicTexture
-{
-	LOG_CLASS(LLTexLayerSetBuffer);
-
-public:
-	LLTexLayerSetBuffer(LLTexLayerSet* const owner, S32 width, S32 height);
-	virtual ~LLTexLayerSetBuffer();
-
-public:
-	/*virtual*/ S8          getType() const;
-	BOOL					isInitialized(void) const;
-	static void				dumpTotalByteCount();
-	const std::string		dumpTextureInfo() const;
-	virtual void 			restoreGLTexture();
-	virtual void 			destroyGLTexture();
-protected:
-	void					pushProjection() const;
-	void					popProjection() const;
-private:
-	LLTexLayerSet* const    mTexLayerSet;
-	static S32				sGLByteCount;
-
-	//--------------------------------------------------------------------
-	// Render
-	//--------------------------------------------------------------------
-public:
-	/*virtual*/ BOOL		needsRender();
-protected:
-	BOOL					render(S32 x, S32 y, S32 width, S32 height);
-	virtual void			preRender(BOOL clear_depth);
-	virtual void			postRender(BOOL success);
-	virtual BOOL			render();	
-	
-	//--------------------------------------------------------------------
-	// Uploads
-	//--------------------------------------------------------------------
-public:
-	void					requestUpload();
-	void					cancelUpload();
-	BOOL					uploadNeeded() const; 			// We need to upload a new texture
-	BOOL					uploadInProgress() const; 		// We have started uploading a new texture and are awaiting the result
-	BOOL					uploadPending() const; 			// We are expecting a new texture to be uploaded at some point
-	static void				onTextureUploadComplete(const LLUUID& uuid,
-													void* userdata,
-													S32 result, LLExtStat ext_status);
-protected:
-	BOOL					isReadyToUpload() const;
-	void					doUpload(); 					// Does a read back and upload.
-	void					conditionalRestartUploadTimer();
-private:
-	BOOL					mNeedsUpload; 					// Whether we need to send our baked textures to the server
-	U32						mNumLowresUploads; 				// Number of times we've sent a lowres version of our baked textures to the server
-	BOOL					mUploadPending; 				// Whether we have received back the new baked textures
-	LLUUID					mUploadID; 						// The current upload process (null if none).
-	LLFrameTimer    		mNeedsUploadTimer; 				// Tracks time since upload was requested and performed.
-	S32						mUploadFailCount;				// Number of consecutive upload failures
-	LLFrameTimer    		mUploadRetryTimer; 				// Tracks time since last upload failure.
-
-	//--------------------------------------------------------------------
-	// Updates
-	//--------------------------------------------------------------------
-public:
-	void					requestUpdate();
-	BOOL					requestUpdateImmediate();
-protected:
-	BOOL					isReadyToUpdate() const;
-	void					doUpdate();
-	void					restartUpdateTimer();
-private:
-	BOOL					mNeedsUpdate; 					// Whether we need to locally update our baked textures
-	U32						mNumLowresUpdates; 				// Number of times we've locally updated with lowres version of our baked textures
-	LLFrameTimer    		mNeedsUpdateTimer; 				// Tracks time since update was requested and performed.
-};
-
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 // LLTexLayerStaticImageList
 //
@@ -342,7 +250,7 @@ class LLTexLayerStaticImageList : public LLSingleton<LLTexLayerStaticImageList>
 public:
 	LLTexLayerStaticImageList();
 	~LLTexLayerStaticImageList();
-	LLViewerTexture*	getTexture(const std::string& file_name, BOOL is_mask);
+	LLTexture*			getTexture(const std::string& file_name, BOOL is_mask);
 	LLImageTGA*			getImageTGA(const std::string& file_name);
 	void				deleteCachedImages();
 	void				dumpByteCount() const;
@@ -350,7 +258,7 @@ class LLTexLayerStaticImageList : public LLSingleton<LLTexLayerStaticImageList>
 	BOOL				loadImageRaw(const std::string& file_name, LLImageRaw* image_raw);
 private:
 	LLStringTable 		mImageNames;
-	typedef std::map<const char*, LLPointer<LLViewerTexture> > texture_map_t;
+	typedef std::map<const char*, LLPointer<LLTexture> > texture_map_t;
 	texture_map_t 		mStaticImageList;
 	typedef std::map<const char*, LLPointer<LLImageTGA> > image_tga_map_t;
 	image_tga_map_t 	mStaticImageListTGA;
@@ -358,23 +266,4 @@ class LLTexLayerStaticImageList : public LLSingleton<LLTexLayerStaticImageList>
 	S32 				mTGABytes;
 };
 
-//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-// LLBakedUploadData
-//
-// Used by LLTexLayerSetBuffer for a callback.
-//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-struct LLBakedUploadData
-{
-	LLBakedUploadData(const LLVOAvatarSelf* avatar, 
-					  LLTexLayerSet* layerset, 
-					  const LLUUID& id,
-					  bool highest_res);
-	~LLBakedUploadData() {}
-	const LLUUID				mID;
-	const LLVOAvatarSelf*		mAvatar; // note: backlink only; don't LLPointer 
-	LLTexLayerSet*				mTexLayerSet;
-   	const U64					mStartTime;	// for measuring baked texture upload time
-   	const bool					mIsHighestRes; // whether this is a "final" bake, or intermediate low res
-};
-
 #endif  // LL_LLTEXLAYER_H
diff --git a/indra/newview/lltexlayerparams.cpp b/indra/llappearance/lltexlayerparams.cpp
similarity index 87%
rename from indra/newview/lltexlayerparams.cpp
rename to indra/llappearance/lltexlayerparams.cpp
index 8972827effb..c8433673570 100644
--- a/indra/newview/lltexlayerparams.cpp
+++ b/indra/llappearance/lltexlayerparams.cpp
@@ -24,14 +24,16 @@
  * $/LicenseInfo$
  */
 
-#include "llviewerprecompiledheaders.h"
+#include "linden_common.h"
 
 #include "lltexlayerparams.h"
 
-#include "llagentcamera.h"
+#include "llavatarappearance.h"
+//#include "llagentcamera.h"
 #include "llimagetga.h"
+#include "llquantize.h"
 #include "lltexlayer.h"
-#include "llvoavatarself.h"
+#include "lltexturemanagerbridge.h"
 #include "llwearable.h"
 #include "llui.h"
 
@@ -40,11 +42,11 @@
 //-----------------------------------------------------------------------------
 LLTexLayerParam::LLTexLayerParam(LLTexLayerInterface *layer) :
 	mTexLayer(layer),
-	mAvatar(NULL)
+	mAvatarAppearance(NULL)
 {
 	if (mTexLayer != NULL)
 	{
-		mAvatar = mTexLayer->getTexLayerSet()->getAvatar();
+		mAvatarAppearance = mTexLayer->getTexLayerSet()->getAvatarAppearance();
 	}
 	else
 	{
@@ -52,20 +54,20 @@ LLTexLayerParam::LLTexLayerParam(LLTexLayerInterface *layer) :
 	}
 }
 
-LLTexLayerParam::LLTexLayerParam(LLVOAvatar *avatar) :
-	mTexLayer(NULL)
+LLTexLayerParam::LLTexLayerParam(LLAvatarAppearance *appearance) :
+	mTexLayer(NULL),
+	mAvatarAppearance(appearance)
 {
-	mAvatar = avatar;
 }
 
 
-BOOL LLTexLayerParam::setInfo(LLViewerVisualParamInfo *info, BOOL add_to_avatar  )
-{	
+BOOL LLTexLayerParam::setInfo(LLViewerVisualParamInfo *info, BOOL add_to_appearance)
+{
 	LLViewerVisualParam::setInfo(info);
 
-	if (add_to_avatar)
+	if (add_to_appearance)
 	{
-		mAvatar->addVisualParam( this);
+		mAvatarAppearance->addVisualParam( this);
 	}
 
 	return TRUE;
@@ -96,7 +98,7 @@ void LLTexLayerParamAlpha::getCacheByteCount(S32* gl_bytes)
 		 iter != sInstances.end(); iter++)
 	{
 		LLTexLayerParamAlpha* instance = *iter;
-		LLViewerTexture* tex = instance->mCachedProcessedTexture;
+		LLTexture* tex = instance->mCachedProcessedTexture;
 		if (tex)
 		{
 			S32 bytes = (S32)tex->getWidth() * tex->getHeight() * tex->getComponents();
@@ -120,8 +122,8 @@ LLTexLayerParamAlpha::LLTexLayerParamAlpha(LLTexLayerInterface* layer) :
 	sInstances.push_front(this);
 }
 
-LLTexLayerParamAlpha::LLTexLayerParamAlpha(LLVOAvatar* avatar) :
-	LLTexLayerParam(avatar),
+LLTexLayerParamAlpha::LLTexLayerParamAlpha(LLAvatarAppearance* appearance) :
+	LLTexLayerParam(appearance),
 	mCachedProcessedTexture(NULL),
 	mNeedsCreateTexture(FALSE),
 	mStaticImageInvalid(FALSE),
@@ -173,13 +175,13 @@ void LLTexLayerParamAlpha::setWeight(F32 weight, BOOL upload_bake)
 	{
 		mCurWeight = new_weight;
 
-		if ((mAvatar->getSex() & getSex()) && (mAvatar->isSelf() && !mIsDummy)) // only trigger a baked texture update if we're changing a wearable's visual param.
+		if ((mAvatarAppearance->getSex() & getSex()) && (mAvatarAppearance->isSelf() && !mIsDummy)) // only trigger a baked texture update if we're changing a wearable's visual param.
 		{
-			if (isAgentAvatarValid() && !gAgentAvatarp->isUsingBakedTextures())
+			if (!mAvatarAppearance->isUsingBakedTextures())
 			{
 				upload_bake = FALSE;
 			}
-			mAvatar->invalidateComposite(mTexLayer->getTexLayerSet(), upload_bake);
+			mAvatarAppearance->invalidateComposite(mTexLayer->getTexLayerSet(), upload_bake);
 			mTexLayer->invalidateMorphMasks();
 		}
 	}
@@ -218,11 +220,11 @@ BOOL LLTexLayerParamAlpha::getSkip() const
 		return TRUE;
 	}
 
-	const LLVOAvatar *avatar = mTexLayer->getTexLayerSet()->getAvatar();
+	const LLAvatarAppearance *appearance = mTexLayer->getTexLayerSet()->getAvatarAppearance();
 
 	if (((LLTexLayerParamAlphaInfo *)getInfo())->mSkipIfZeroWeight)
 	{
-		F32 effective_weight = (avatar->getSex() & getSex()) ? mCurWeight : getDefaultWeight();
+		F32 effective_weight = (appearance->getSex() & getSex()) ? mCurWeight : getDefaultWeight();
 		if (is_approx_zero(effective_weight)) 
 		{
 			return TRUE;
@@ -230,7 +232,7 @@ BOOL LLTexLayerParamAlpha::getSkip() const
 	}
 
 	LLWearableType::EType type = (LLWearableType::EType)getWearableType();
-	if ((type != LLWearableType::WT_INVALID) && !avatar->isWearingWearableType(type))
+	if ((type != LLWearableType::WT_INVALID) && !appearance->isWearingWearableType(type))
 	{
 		return TRUE;
 	}
@@ -248,7 +250,7 @@ BOOL LLTexLayerParamAlpha::render(S32 x, S32 y, S32 width, S32 height)
 		return success;
 	}
 
-	F32 effective_weight = (mTexLayer->getTexLayerSet()->getAvatar()->getSex() & getSex()) ? mCurWeight : getDefaultWeight();
+	F32 effective_weight = (mTexLayer->getTexLayerSet()->getAvatarAppearance()->getSex() & getSex()) ? mCurWeight : getDefaultWeight();
 	BOOL weight_changed = effective_weight != mCachedEffectiveWeight;
 	if (getSkip())
 	{
@@ -295,7 +297,8 @@ BOOL LLTexLayerParamAlpha::render(S32 x, S32 y, S32 width, S32 height)
 
 			if (!mCachedProcessedTexture)
 			{
-				mCachedProcessedTexture = LLViewerTextureManager::getLocalTexture(image_tga_width, image_tga_height, 1, FALSE);
+				llassert(gTextureManagerBridgep);
+				mCachedProcessedTexture = gTextureManagerBridgep->getLocalTexture(image_tga_width, image_tga_height, 1, FALSE);
 
 				// We now have something in one of our caches
 				LLTexLayerSet::sHasCaches |= mCachedProcessedTexture ? TRUE : FALSE;
@@ -332,7 +335,7 @@ BOOL LLTexLayerParamAlpha::render(S32 x, S32 y, S32 width, S32 height)
 
 		// Don't keep the cache for other people's avatars
 		// (It's not really a "cache" in that case, but the logic is the same)
-		if (!mAvatar->isSelf())
+		if (!mAvatarAppearance->isSelf())
 		{
 			mCachedProcessedTexture = NULL;
 		}
@@ -402,8 +405,8 @@ LLTexLayerParamColor::LLTexLayerParamColor(LLTexLayerInterface* layer) :
 {
 }
 
-LLTexLayerParamColor::LLTexLayerParamColor(LLVOAvatar *avatar) :
-	LLTexLayerParam(avatar),
+LLTexLayerParamColor::LLTexLayerParamColor(LLAvatarAppearance *appearance) :
+	LLTexLayerParam(appearance),
 	mAvgDistortionVec(1.f, 1.f, 1.f)
 {
 }
@@ -425,7 +428,7 @@ LLColor4 LLTexLayerParamColor::getNetColor() const
 	
 	llassert(info->mNumColors >= 1);
 
-	F32 effective_weight = (mAvatar && (mAvatar->getSex() & getSex())) ? mCurWeight : getDefaultWeight();
+	F32 effective_weight = (mAvatarAppearance && (mAvatarAppearance->getSex() & getSex())) ? mCurWeight : getDefaultWeight();
 
 	S32 index_last = info->mNumColors - 1;
 	F32 scaled_weight = effective_weight * index_last;
@@ -470,12 +473,12 @@ void LLTexLayerParamColor::setWeight(F32 weight, BOOL upload_bake)
 			return;
 		}
 
-		if ((mAvatar->getSex() & getSex()) && (mAvatar->isSelf() && !mIsDummy)) // only trigger a baked texture update if we're changing a wearable's visual param.
+		if ((mAvatarAppearance->getSex() & getSex()) && (mAvatarAppearance->isSelf() && !mIsDummy)) // only trigger a baked texture update if we're changing a wearable's visual param.
 		{
 			onGlobalColorChanged(upload_bake);
 			if (mTexLayer)
 			{
-				mAvatar->invalidateComposite(mTexLayer->getTexLayerSet(), upload_bake);
+				mAvatarAppearance->invalidateComposite(mTexLayer->getTexLayerSet(), upload_bake);
 			}
 		}
 
diff --git a/indra/newview/lltexlayerparams.h b/indra/llappearance/lltexlayerparams.h
similarity index 94%
rename from indra/newview/lltexlayerparams.h
rename to indra/llappearance/lltexlayerparams.h
index 2c0da60b486..dbffd157515 100644
--- a/indra/newview/lltexlayerparams.h
+++ b/indra/llappearance/lltexlayerparams.h
@@ -27,14 +27,16 @@
 #ifndef LL_LLTEXLAYERPARAMS_H
 #define LL_LLTEXLAYERPARAMS_H
 
+#include "llpointer.h"
+#include "v4color.h"
 #include "llviewervisualparam.h"
 
+class LLAvatarAppearance;
 class LLImageRaw;
 class LLImageTGA;
 class LLTexLayer;
 class LLTexLayerInterface;
-class LLViewerTexture;
-class LLVOAvatar;
+class LLTexture;
 class LLWearable;
 
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -45,13 +47,13 @@ class LLTexLayerParam : public LLViewerVisualParam
 {
 public: 
 	LLTexLayerParam(LLTexLayerInterface *layer);
-	LLTexLayerParam(LLVOAvatar *avatar);
-	/*virtual*/ BOOL setInfo(LLViewerVisualParamInfo *info, BOOL add_to_avatar  );
+	LLTexLayerParam(LLAvatarAppearance *appearance);
+	/*virtual*/ BOOL setInfo(LLViewerVisualParamInfo *info, BOOL add_to_appearance);
 	/*virtual*/ LLViewerVisualParam* cloneParam(LLWearable* wearable) const = 0;
 
 protected:
 	LLTexLayerInterface*	mTexLayer;
-	LLVOAvatar*             mAvatar;
+	LLAvatarAppearance*		mAvatarAppearance;
 };
 
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -62,7 +64,7 @@ class LLTexLayerParamAlpha : public LLTexLayerParam
 {
 public:
 	LLTexLayerParamAlpha( LLTexLayerInterface* layer );
-	LLTexLayerParamAlpha( LLVOAvatar* avatar );
+	LLTexLayerParamAlpha( LLAvatarAppearance* appearance );
 	/*virtual*/ ~LLTexLayerParamAlpha();
 
 	/*virtual*/ LLViewerVisualParam* cloneParam(LLWearable* wearable = NULL) const;
@@ -89,7 +91,7 @@ class LLTexLayerParamAlpha : public LLTexLayerParam
 	BOOL					getMultiplyBlend() const;
 
 private:
-	LLPointer<LLViewerTexture>	mCachedProcessedTexture;
+	LLPointer<LLTexture>	mCachedProcessedTexture;
 	LLPointer<LLImageTGA>	mStaticImageTGA;
 	LLPointer<LLImageRaw>	mStaticImageRaw;
 	BOOL					mNeedsCreateTexture;
@@ -140,7 +142,7 @@ class LLTexLayerParamColor : public LLTexLayerParam
 	};
 
 	LLTexLayerParamColor( LLTexLayerInterface* layer );
-	LLTexLayerParamColor( LLVOAvatar* avatar );
+	LLTexLayerParamColor( LLAvatarAppearance* appearance );
 	/* virtual */ ~LLTexLayerParamColor();
 
 	/*virtual*/ LLViewerVisualParam* cloneParam(LLWearable* wearable = NULL) const;
diff --git a/indra/llappearance/lltexturemanagerbridge.cpp b/indra/llappearance/lltexturemanagerbridge.cpp
new file mode 100644
index 00000000000..33f2185e4fa
--- /dev/null
+++ b/indra/llappearance/lltexturemanagerbridge.cpp
@@ -0,0 +1,32 @@
+ /** 
+ * @file lltexturemanagerbridge.cpp
+ * @brief Defined a null texture manager bridge.  Applications must provide their own bridge implementaton.
+ *
+ * $LicenseInfo:firstyear=2012&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+#include "lltexturemanagerbridge.h"
+
+// Define a null texture manager bridge.  Applications must provide their own bridge implementaton.
+LLTextureManagerBridge* gTextureManagerBridgep = NULL;
+
+
diff --git a/indra/llappearance/lltexturemanagerbridge.h b/indra/llappearance/lltexturemanagerbridge.h
new file mode 100644
index 00000000000..20f5d0fd3c8
--- /dev/null
+++ b/indra/llappearance/lltexturemanagerbridge.h
@@ -0,0 +1,45 @@
+/** 
+ * @file lltexturemanagerbridge.h
+ * @brief Bridge to an application-specific texture manager.
+ *
+ * $LicenseInfo:firstyear=2012&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_TEXTUREMANAGERBRIDGE_H
+#define LL_TEXTUREMANAGERBRIDGE_H
+
+#include "llpointer.h"
+#include "lltexture.h"
+
+// Abstract bridge interface
+class LLTextureManagerBridge
+{
+public:
+	virtual LLPointer<LLTexture> getLocalTexture(BOOL usemipmaps = TRUE, BOOL generate_gl_tex = TRUE) = 0;
+	virtual LLPointer<LLTexture> getLocalTexture(const U32 width, const U32 height, const U8 components, BOOL usemipmaps, BOOL generate_gl_tex = TRUE) = 0;
+	virtual LLTexture* getFetchedTexture(const LLUUID &image_id) = 0;
+};
+
+extern LLTextureManagerBridge* gTextureManagerBridgep;
+
+#endif // LL_TEXTUREMANAGERBRIDGE_H
+
diff --git a/indra/newview/llviewervisualparam.cpp b/indra/llappearance/llviewervisualparam.cpp
similarity index 98%
rename from indra/newview/llviewervisualparam.cpp
rename to indra/llappearance/llviewervisualparam.cpp
index f0cf9b7692e..e1ddeeeff00 100644
--- a/indra/newview/llviewervisualparam.cpp
+++ b/indra/llappearance/llviewervisualparam.cpp
@@ -27,7 +27,8 @@
 //-----------------------------------------------------------------------------
 // Header Files
 //-----------------------------------------------------------------------------
-#include "llviewerprecompiledheaders.h"
+//#include "llviewerprecompiledheaders.h"
+#include "linden_common.h"
 
 #include "llviewervisualparam.h"
 #include "llxmltree.h"
diff --git a/indra/newview/llviewervisualparam.h b/indra/llappearance/llviewervisualparam.h
similarity index 100%
rename from indra/newview/llviewervisualparam.h
rename to indra/llappearance/llviewervisualparam.h
diff --git a/indra/newview/llvoavatardefines.cpp b/indra/llappearance/llvoavatardefines.cpp
similarity index 92%
rename from indra/newview/llvoavatardefines.cpp
rename to indra/llappearance/llvoavatardefines.cpp
index ef96a9e9235..48ef63ab641 100644
--- a/indra/newview/llvoavatardefines.cpp
+++ b/indra/llappearance/llvoavatardefines.cpp
@@ -1,6 +1,6 @@
 /** 
- * @file llvoavatar.cpp
- * @brief Implementation of LLVOAvatar class which is a derivation fo LLViewerObject
+ * @file llvoavatardefines.cpp
+ * @brief Implementation of LLVOAvatarDefines::LLVOAvatarDictionary 
  *
  * $LicenseInfo:firstyear=2001&license=viewerlgpl$
  * Second Life Viewer Source Code
@@ -24,9 +24,11 @@
  * $/LicenseInfo$
  */
 
-#include "llviewerprecompiledheaders.h"
+//#include "llviewerprecompiledheaders.h"
+#include "linden_common.h"
+
 #include "llvoavatardefines.h"
-#include "llviewercontrol.h" // gSavedSettings
+//#include "llviewercontrol.h" // gSavedSettings
 
 const S32 LLVOAvatarDefines::SCRATCH_TEX_WIDTH = 512;
 const S32 LLVOAvatarDefines::SCRATCH_TEX_HEIGHT = 512;
@@ -113,14 +115,14 @@ LLVOAvatarDictionary::BakedTextures::BakedTextures()
 LLVOAvatarDictionary::Meshes::Meshes()
 {
 	// Meshes
-	addEntry(MESH_ID_HAIR,             new MeshEntry(BAKED_HAIR,  "hairMesh",         6, LLViewerJoint::PN_4));
-	addEntry(MESH_ID_HEAD,             new MeshEntry(BAKED_HEAD,  "headMesh",         5, LLViewerJoint::PN_5));
-	addEntry(MESH_ID_EYELASH,          new MeshEntry(BAKED_HEAD,  "eyelashMesh",      1, LLViewerJoint::PN_0)); // no baked mesh associated currently
-	addEntry(MESH_ID_UPPER_BODY,       new MeshEntry(BAKED_UPPER, "upperBodyMesh",    5, LLViewerJoint::PN_1));
-	addEntry(MESH_ID_LOWER_BODY,       new MeshEntry(BAKED_LOWER, "lowerBodyMesh",    5, LLViewerJoint::PN_2));
-	addEntry(MESH_ID_EYEBALL_LEFT,     new MeshEntry(BAKED_EYES,  "eyeBallLeftMesh",  2, LLViewerJoint::PN_3));
-	addEntry(MESH_ID_EYEBALL_RIGHT,    new MeshEntry(BAKED_EYES,  "eyeBallRightMesh", 2, LLViewerJoint::PN_3));
-	addEntry(MESH_ID_SKIRT,            new MeshEntry(BAKED_SKIRT, "skirtMesh",        5, LLViewerJoint::PN_5));
+	addEntry(MESH_ID_HAIR,             new MeshEntry(BAKED_HAIR,  "hairMesh",         6, PN_4));
+	addEntry(MESH_ID_HEAD,             new MeshEntry(BAKED_HEAD,  "headMesh",         5, PN_5));
+	addEntry(MESH_ID_EYELASH,          new MeshEntry(BAKED_HEAD,  "eyelashMesh",      1, PN_0)); // no baked mesh associated currently
+	addEntry(MESH_ID_UPPER_BODY,       new MeshEntry(BAKED_UPPER, "upperBodyMesh",    5, PN_1));
+	addEntry(MESH_ID_LOWER_BODY,       new MeshEntry(BAKED_LOWER, "lowerBodyMesh",    5, PN_2));
+	addEntry(MESH_ID_EYEBALL_LEFT,     new MeshEntry(BAKED_EYES,  "eyeBallLeftMesh",  2, PN_3));
+	addEntry(MESH_ID_EYEBALL_RIGHT,    new MeshEntry(BAKED_EYES,  "eyeBallRightMesh", 2, PN_3));
+	addEntry(MESH_ID_SKIRT,            new MeshEntry(BAKED_SKIRT, "skirtMesh",        5, PN_5));
 }
 
 /*
@@ -178,7 +180,7 @@ LLVOAvatarDictionary::TextureEntry::TextureEntry(const std::string &name,
 LLVOAvatarDictionary::MeshEntry::MeshEntry(EBakedTextureIndex baked_index, 
 										   const std::string &name, 
 										   U8 level,
-										   LLViewerJoint::PickName pick) :
+										   LLJointPickName pick) :
 	LLDictionaryEntry(name),
 	mBakedID(baked_index),
 	mLOD(level),
@@ -239,21 +241,6 @@ EBakedTextureIndex LLVOAvatarDictionary::findBakedByRegionName(std::string name)
 	return BAKED_NUM_INDICES;
 }
 
-//static
-const LLUUID LLVOAvatarDictionary::getDefaultTextureImageID(ETextureIndex index)
-{
-	const TextureEntry *texture_dict = getInstance()->getTexture(index);
-	const std::string &default_image_name = texture_dict->mDefaultImageName;
-	if (default_image_name == "")
-	{
-		return IMG_DEFAULT_AVATAR;
-	}
-	else
-	{
-		return LLUUID(gSavedSettings.getString(default_image_name));
-	}
-}
-
 // static
 LLWearableType::EType LLVOAvatarDictionary::getTEWearableType(ETextureIndex index )
 {
diff --git a/indra/newview/llvoavatardefines.h b/indra/llappearance/llvoavatardefines.h
similarity index 96%
rename from indra/newview/llvoavatardefines.h
rename to indra/llappearance/llvoavatardefines.h
index 35bb37463ae..7b0442bffb2 100644
--- a/indra/newview/llvoavatardefines.h
+++ b/indra/llappearance/llvoavatardefines.h
@@ -1,6 +1,6 @@
 /** 
- * @file llvoavatar.h
- * @brief Declaration of LLVOAvatar class which is a derivation fo
+ * @file llvoavatardefines.h
+ * @brief Various LLAvatarAppearance related definitions
  * LLViewerObject
  *
  * $LicenseInfo:firstyear=2001&license=viewerlgpl$
@@ -29,8 +29,8 @@
 #define LLVOAVATAR_DEFINES_H
 
 #include <vector>
+#include "lljointpickname.h"
 #include "llwearable.h"
-#include "llviewerjoint.h"
 #include "lldictionary.h"
 
 namespace LLVOAvatarDefines
@@ -166,12 +166,12 @@ class LLVOAvatarDictionary : public LLSingleton<LLVOAvatarDictionary>
 		MeshEntry(EBakedTextureIndex baked_index, 
 				  const std::string &name, // names of mesh types as they are used in avatar_lad.xml
 				  U8 level,
-				  LLViewerJoint::PickName pick);
+				  LLJointPickName pick);
 		// Levels of Detail for each mesh.  Must match levels of detail present in avatar_lad.xml
         // Otherwise meshes will be unable to be found, or levels of detail will be ignored
 		const U8 						mLOD;
 		const EBakedTextureIndex 		mBakedID;
-		const LLViewerJoint::PickName 	mPickName;
+		const LLJointPickName 	mPickName;
 	};
 
 	struct Meshes : public LLDictionary<EMeshIndex, MeshEntry>
@@ -216,8 +216,6 @@ class LLVOAvatarDictionary : public LLSingleton<LLVOAvatarDictionary>
 	// find a baked texture index based on its name
 	static EBakedTextureIndex 	findBakedByRegionName(std::string name);
 
-	static const LLUUID			getDefaultTextureImageID(ETextureIndex index);
-
 	// Given a texture entry, determine which wearable type owns it.
 	static LLWearableType::EType 		getTEWearableType(ETextureIndex index);
 
diff --git a/indra/llappearance/llwearable.cpp b/indra/llappearance/llwearable.cpp
index d72999d8c78..64bd921ec5b 100644
--- a/indra/llappearance/llwearable.cpp
+++ b/indra/llappearance/llwearable.cpp
@@ -24,14 +24,13 @@
  * $/LicenseInfo$
  */
 
-//#include "llviewerprecompiledheaders.h"
+#include "linden_common.h"
 
-//#include "llagent.h"
-//#include "llagentcamera.h"
-#include "llagentwearables.h"
+#include "llavatarappearance.h"
+//#include "llagentwearables.h"
 //#include "lldictionary.h"
 //#include "llfloatersidepanelcontainer.h"
-//#include "lllocaltextureobject.h"
+#include "lllocaltextureobject.h"
 //#include "llnotificationsutil.h"
 //#include "llviewertexturelist.h"
 //#include "llinventorymodel.h"
@@ -39,12 +38,11 @@
 //#include "llsidepanelappearance.h"
 #include "lltexlayer.h"
 //#include "lltexglobalcolor.h"
+#include "lltexturemanagerbridge.h"
 //#include "lltrans.h"
 //#include "llviewerregion.h"
 #include "llvisualparam.h"
-//#include "llvoavatar.h"
-//#include "llvoavatarself.h"
-//#include "llvoavatardefines.h"
+#include "llvoavatardefines.h"
 #include "llwearable.h"
 //#include "llviewercontrol.h"
 
@@ -53,52 +51,10 @@ using namespace LLVOAvatarDefines;
 // static
 S32 LLWearable::sCurrentDefinitionVersion = 1;
 
-// support class - remove for 2.1 (hackity hack hack)
-class LLOverrideBakedTextureUpdate
-{
-public:
-	LLOverrideBakedTextureUpdate(bool temp_state)
-	{
-		U32 num_bakes = (U32) LLVOAvatarDefines::BAKED_NUM_INDICES;
-		for( U32 index = 0; index < num_bakes; ++index )
-		{
-			composite_enabled[index] = gAgentAvatarp->isCompositeUpdateEnabled(index);
-		}
-		gAgentAvatarp->setCompositeUpdatesEnabled(temp_state);
-	}
-
-	~LLOverrideBakedTextureUpdate()
-	{
-		U32 num_bakes = (U32)LLVOAvatarDefines::BAKED_NUM_INDICES;		
-		for( U32 index = 0; index < num_bakes; ++index )
-		{
-			gAgentAvatarp->setCompositeUpdatesEnabled(index, composite_enabled[index]);
-		}
-	}
-private:
-	bool composite_enabled[LLVOAvatarDefines::BAKED_NUM_INDICES];
-};
-
 // Private local functions
 static std::string terse_F32_to_string(F32 f);
-static std::string asset_id_to_filename(const LLUUID &asset_id);
-
-LLWearable::LLWearable(const LLTransactionID& transaction_id) :
-	mDefinitionVersion(LLWearable::sCurrentDefinitionVersion),
-	mType(LLWearableType::WT_INVALID)
-{
-	mTransactionID = transaction_id;
-	mAssetID = mTransactionID.makeAssetID(gAgent.getSecureSessionID());
-}
-
-LLWearable::LLWearable(const LLAssetID& asset_id) :
-	mDefinitionVersion( LLWearable::sCurrentDefinitionVersion ),
-	mType(LLWearableType::WT_INVALID)
-{
-	mAssetID = asset_id;
-	mTransactionID.setNull();
-}
 
+// virtual
 LLWearable::~LLWearable()
 {
 }
@@ -118,6 +74,7 @@ LLAssetType::EType LLWearable::getAssetType() const
 	return LLWearableType::getAssetType(mType);
 }
 
+// virtual
 BOOL LLWearable::exportFile(LLFILE* file) const
 {
 	// header and version
@@ -178,16 +135,16 @@ BOOL LLWearable::exportFile(LLFILE* file) const
 	}
 
 	// texture entries
-	S32 num_textures = mTEMap.size();
+	S32 num_textures = mTextureIDMap.size();
 	if( fprintf( file, "textures %d\n", num_textures ) < 0 )
 	{
 		return FALSE;
 	}
 	
-	for (te_map_t::const_iterator iter = mTEMap.begin(); iter != mTEMap.end(); ++iter)
+	for (texture_id_map_t::const_iterator iter = mTextureIDMap.begin(); iter != mTextureIDMap.end(); ++iter)
 	{
 		S32 te = iter->first;
-		const LLUUID& image_id = iter->second->getID();
+		const LLUUID& image_id = iter->second;
 		if( fprintf( file, "%d %s\n", te, image_id.asString().c_str()) < 0 )
 		{
 			return FALSE;
@@ -197,40 +154,8 @@ BOOL LLWearable::exportFile(LLFILE* file) const
 }
 
 
-void LLWearable::createVisualParams()
-{
-	for (LLViewerVisualParam* param = (LLViewerVisualParam*) gAgentAvatarp->getFirstVisualParam(); 
-		 param;
-		 param = (LLViewerVisualParam*) gAgentAvatarp->getNextVisualParam())
-	{
-		if (param->getWearableType() == mType)
-		{
-			addVisualParam(param->cloneParam(this));
-		}
-	}
-
-	// resync driver parameters to point to the newly cloned driven parameters
-	for (visual_param_index_map_t::iterator param_iter = mVisualParamIndexMap.begin(); 
-		 param_iter != mVisualParamIndexMap.end(); 
-		 ++param_iter)
-	{
-		LLVisualParam* param = param_iter->second;
-		LLVisualParam*(LLWearable::*wearable_function)(S32)const = &LLWearable::getVisualParam; 
-		// need this line to disambiguate between versions of LLCharacter::getVisualParam()
-		LLVisualParam*(LLVOAvatarSelf::*avatar_function)(S32)const = &LLVOAvatarSelf::getVisualParam; 
-		param->resetDrivenParams();
-		if(!param->linkDrivenParams(boost::bind(wearable_function,(LLWearable*)this, _1), false))
-		{
-			if( !param->linkDrivenParams(boost::bind(avatar_function,gAgentAvatarp.get(),_1 ), true))
-			{
-				llwarns << "could not link driven params for wearable " << getName() << " id: " << param->getID() << llendl;
-				continue;
-			}
-		}
-	}
-}
-
-BOOL LLWearable::importFile( LLFILE* file )
+// virtual
+LLWearable::EImportResult LLWearable::importFile( LLFILE* file )
 {
 	// *NOTE: changing the type or size of this buffer will require
 	// changes in the fscanf() code below. You would be better off
@@ -238,23 +163,14 @@ BOOL LLWearable::importFile( LLFILE* file )
 	char text_buffer[2048];		/* Flawfinder: ignore */
 	S32 fields_read = 0;
 
-	// suppress texlayerset updates while wearables are being imported. Layersets will be updated
-	// when the wearables are "worn", not loaded. Note state will be restored when this object is destroyed.
-	LLOverrideBakedTextureUpdate stop_bakes(false);
-
 	// read header and version 
 	fields_read = fscanf( file, "LLWearable version %d\n", &mDefinitionVersion );
 	if( fields_read != 1 )
 	{
-		// Shouldn't really log the asset id for security reasons, but
-		// we need it in this case.
-		llwarns << "Bad Wearable asset header: " << mAssetID << llendl;
-		//gVFS->dumpMap();
-		return FALSE;
+		return LLWearable::BAD_HEADER;
 	}
 
-
-	// Temoprary hack to allow wearables with definition version 24 to still load.
+	// Temporary hack to allow wearables with definition version 24 to still load.
 	// This should only affect lindens and NDA'd testers who have saved wearables in 2.0
 	// the extra check for version == 24 can be removed before release, once internal testers
 	// have loaded these wearables again. See hack pt 2 at bottom of function to ensure that
@@ -262,7 +178,7 @@ BOOL LLWearable::importFile( LLFILE* file )
 	if( mDefinitionVersion > LLWearable::sCurrentDefinitionVersion && mDefinitionVersion != 24 )
 	{
 		llwarns << "Wearable asset has newer version (" << mDefinitionVersion << ") than XML (" << LLWearable::sCurrentDefinitionVersion << ")" << llendl;
-		return FALSE;
+		return LLWearable::FAILURE;
 	}
 
 	// name
@@ -282,10 +198,9 @@ BOOL LLWearable::importFile( LLFILE* file )
 		if( (1 != fields_read) || (fgetc( file ) != '\n') )		/* Flawfinder: ignore */
 		{
 			llwarns << "Bad Wearable asset: early end of file" << llendl;
-			return FALSE;
+			return LLWearable::FAILURE;
 		}
 		mName = text_buffer;
-		LLStringUtil::truncate(mName, DB_INV_ITEM_NAME_STR_LEN );
 	}
 
 	// description
@@ -305,10 +220,9 @@ BOOL LLWearable::importFile( LLFILE* file )
 		if( (1 != fields_read) || (fgetc( file ) != '\n') )		/* Flawfinder: ignore */
 		{
 			llwarns << "Bad Wearable asset: early end of file" << llendl;
-			return FALSE;
+			return LLWearable::FAILURE;
 		}
 		mDescription = text_buffer;
-		LLStringUtil::truncate(mDescription, DB_INV_ITEM_DESC_STR_LEN );
 	}
 
 	// permissions
@@ -317,11 +231,11 @@ BOOL LLWearable::importFile( LLFILE* file )
 	if( (fields_read != 1) || (perm_version != 0) )
 	{
 		llwarns << "Bad Wearable asset: missing permissions" << llendl;
-		return FALSE;
+		return LLWearable::FAILURE;
 	}
 	if( !mPermissions.importFile( file ) )
 	{
-		return FALSE;
+		return LLWearable::FAILURE;
 	}
 
 	// sale info
@@ -330,7 +244,7 @@ BOOL LLWearable::importFile( LLFILE* file )
 	if( (fields_read != 1) || (sale_info_version != 0) )
 	{
 		llwarns << "Bad Wearable asset: missing sale_info" << llendl;
-		return FALSE;
+		return LLWearable::FAILURE;
 	}
 	// Sale info used to contain next owner perm. It is now in the
 	// permissions. Thus, we read that out, and fix legacy
@@ -340,7 +254,7 @@ BOOL LLWearable::importFile( LLFILE* file )
 	U32 perm_mask = 0;
 	if( !mSaleInfo.importFile(file, has_perm_mask, perm_mask) )
 	{
-		return FALSE;
+		return LLWearable::FAILURE;
 	}
 	if(has_perm_mask)
 	{
@@ -358,7 +272,7 @@ BOOL LLWearable::importFile( LLFILE* file )
 	if( fields_read != 1 )
 	{
 		llwarns << "Bad Wearable asset: bad type" << llendl;
-		return FALSE;
+		return LLWearable::FAILURE;
 	}
 	if( 0 <= type && type < LLWearableType::WT_COUNT )
 	{
@@ -368,7 +282,7 @@ BOOL LLWearable::importFile( LLFILE* file )
 	{
 		mType = LLWearableType::WT_COUNT;
 		llwarns << "Bad Wearable asset: bad type #" << type <<  llendl;
-		return FALSE;
+		return LLWearable::FAILURE;
 	}
 
 	// parameters header
@@ -377,7 +291,7 @@ BOOL LLWearable::importFile( LLFILE* file )
 	if( fields_read != 1 )
 	{
 		llwarns << "Bad Wearable asset: missing parameters block" << llendl;
-		return FALSE;
+		return LLWearable::FAILURE;
 	}
 
 	if( num_parameters != mVisualParamIndexMap.size() )
@@ -395,7 +309,7 @@ BOOL LLWearable::importFile( LLFILE* file )
 		if( fields_read != 2 )
 		{
 			llwarns << "Bad Wearable asset: bad parameter, #" << i << llendl;
-			return FALSE;
+			return LLWearable::FAILURE;
 		}
 		mSavedVisualParamMap[param_id] = param_weight;
 	}
@@ -406,10 +320,11 @@ BOOL LLWearable::importFile( LLFILE* file )
 	if( fields_read != 1 )
 	{
 		llwarns << "Bad Wearable asset: missing textures block" << llendl;
-		return FALSE;
+		return LLWearable::FAILURE;
 	}
 
 	// textures
+	mTextureIDMap.clear();
 	for( i = 0; i < num_textures; i++ )
 	{
 		S32 te = 0;
@@ -420,367 +335,21 @@ BOOL LLWearable::importFile( LLFILE* file )
 		if( fields_read != 2 )
 		{
 			llwarns << "Bad Wearable asset: bad texture, #" << i << llendl;
-			return FALSE;
+			return LLWearable::FAILURE;
 		}
 
 		if( !LLUUID::validate( text_buffer ) )
 		{
 			llwarns << "Bad Wearable asset: bad texture uuid: " << text_buffer << llendl;
-			return FALSE;
+			return LLWearable::FAILURE;
 		}
 		LLUUID id = LLUUID(text_buffer);
-		LLViewerFetchedTexture* image = LLViewerTextureManager::getFetchedTexture( id );
-		if( mTEMap.find(te) != mTEMap.end() )
-		{
-			delete mTEMap[te];
-		}
-		if( mSavedTEMap.find(te) != mSavedTEMap.end() )
-		{
-			delete mSavedTEMap[te];
-		}
-
-		if(gSavedSettings.getBOOL("DebugAvatarLocalTexLoadedTime"))
-		{
-			image->setLoadedCallback(LLVOAvatarSelf::debugOnTimingLocalTexLoaded,0,TRUE,FALSE, new LLVOAvatarSelf::LLAvatarTexData(id, (LLVOAvatarDefines::ETextureIndex)te), NULL);
-		}
-		LLUUID textureid(text_buffer);
-		mTEMap[te] = new LLLocalTextureObject(image, textureid);
-		mSavedTEMap[te] = new LLLocalTextureObject(image, textureid);
-		createLayers(te);
-	}
-
-	// copy all saved param values to working params
-	revertValues();
-
-	return TRUE;
-}
-
-
-// Avatar parameter and texture definitions can change over time.
-// This function returns true if parameters or textures have been added or removed
-// since this wearable was created.
-BOOL LLWearable::isOldVersion() const
-{
-	if (!isAgentAvatarValid()) return FALSE;
-
-	if( LLWearable::sCurrentDefinitionVersion < mDefinitionVersion )
-	{
-		llwarns << "Wearable asset has newer version (" << mDefinitionVersion << ") than XML (" << LLWearable::sCurrentDefinitionVersion << ")" << llendl;
-		llassert(0);
-	}
-
-	if( LLWearable::sCurrentDefinitionVersion != mDefinitionVersion )
-	{
-		return TRUE;
-	}
-
-	S32 param_count = 0;
-	for( LLViewerVisualParam* param = (LLViewerVisualParam*) gAgentAvatarp->getFirstVisualParam(); 
-		param;
-		param = (LLViewerVisualParam*) gAgentAvatarp->getNextVisualParam() )
-	{
-		if( (param->getWearableType() == mType) && (param->isTweakable() ) )
-		{
-			param_count++;
-			if( !is_in_map(mVisualParamIndexMap, param->getID() ) )
-			{
-				return TRUE;
-			}
-		}
-	}
-	if( param_count != mVisualParamIndexMap.size() )
-	{
-		return TRUE;
-	}
-
-
-	S32 te_count = 0;
-	for( S32 te = 0; te < TEX_NUM_INDICES; te++ )
-	{
-		if (LLVOAvatarDictionary::getTEWearableType((ETextureIndex) te) == mType)
-		{
-			te_count++;
-			if( !is_in_map(mTEMap, te ) )
-			{
-				return TRUE;
-			}
-		}
-	}
-	if( te_count != mTEMap.size() )
-	{
-		return TRUE;
-	}
-
-	return FALSE;
-}
-
-// Avatar parameter and texture definitions can change over time.
-// * If parameters or textures have been REMOVED since the wearable was created,
-// they're just ignored, so we consider the wearable clean even though isOldVersion()
-// will return true. 
-// * If parameters or textures have been ADDED since the wearable was created,
-// they are taken to have default values, so we consider the wearable clean
-// only if those values are the same as the defaults.
-BOOL LLWearable::isDirty() const
-{
-	if (!isAgentAvatarValid()) return FALSE;
-
-	for( LLViewerVisualParam* param = (LLViewerVisualParam*) gAgentAvatarp->getFirstVisualParam(); 
-		param;
-		param = (LLViewerVisualParam*) gAgentAvatarp->getNextVisualParam() )
-	{
-		if( (param->getWearableType() == mType) 
-			&& (param->isTweakable() ) 
-			&& !param->getCrossWearable())
-		{
-			F32 current_weight = getVisualParamWeight(param->getID());
-			current_weight = llclamp( current_weight, param->getMinWeight(), param->getMaxWeight() );
-			F32 saved_weight = get_if_there(mSavedVisualParamMap, param->getID(), param->getDefaultWeight());
-			saved_weight = llclamp( saved_weight, param->getMinWeight(), param->getMaxWeight() );
-			
-			U8 a = F32_to_U8( saved_weight, param->getMinWeight(), param->getMaxWeight() );
-			U8 b = F32_to_U8( current_weight, param->getMinWeight(), param->getMaxWeight() );
-			if( a != b  )
-			{
-				return TRUE;
-			}
-		}
-	}
-
-	for( S32 te = 0; te < TEX_NUM_INDICES; te++ )
-	{
-		if (LLVOAvatarDictionary::getTEWearableType((ETextureIndex) te) == mType)
-		{
-			te_map_t::const_iterator current_iter = mTEMap.find(te);
-			if(current_iter != mTEMap.end())
-			{
- 				const LLUUID& current_image_id = current_iter->second->getID();
-				te_map_t::const_iterator saved_iter = mSavedTEMap.find(te);
-				if(saved_iter != mSavedTEMap.end())
-				{
-					const LLUUID& saved_image_id = saved_iter->second->getID();
-					if (saved_image_id != current_image_id)
-					{
-						// saved vs current images are different, wearable is dirty
-						return TRUE;
-					}
-				}
-				else
-				{
-					// image found in current image list but not saved image list
-					return TRUE;
-				}
-			}
-		}
-	}
-
-	return FALSE;
-}
-
-
-void LLWearable::setParamsToDefaults()
-{
-	if (!isAgentAvatarValid()) return;
-
-	for( LLVisualParam* param = gAgentAvatarp->getFirstVisualParam(); param; param = gAgentAvatarp->getNextVisualParam() )
-	{
-		if( (((LLViewerVisualParam*)param)->getWearableType() == mType ) && (param->isTweakable() ) )
-		{
-			setVisualParamWeight(param->getID(),param->getDefaultWeight(), FALSE);
-		}
-	}
-}
-
-void LLWearable::setTexturesToDefaults()
-{
-	for( S32 te = 0; te < TEX_NUM_INDICES; te++ )
-	{
-		if (LLVOAvatarDictionary::getTEWearableType((ETextureIndex) te) == mType)
-		{
-			LLUUID id = LLVOAvatarDictionary::getDefaultTextureImageID((ETextureIndex) te);
-			LLViewerFetchedTexture * image = LLViewerTextureManager::getFetchedTexture( id );
-			if( mTEMap.find(te) == mTEMap.end() )
-			{
-				mTEMap[te] = new LLLocalTextureObject(image, id);
-				createLayers(te);
-			}
-			else
-			{
-				// Local Texture Object already created, just set image and UUID
-				LLLocalTextureObject *lto = mTEMap[te];
-				lto->setID(id);
-				lto->setImage(image);
-			}
-		}
-	}
-}
-
-// Updates the user's avatar's appearance
-void LLWearable::writeToAvatar()
-{
-	if (!isAgentAvatarValid()) return;
-
-	ESex old_sex = gAgentAvatarp->getSex();
-
-	// Pull params
-	for( LLVisualParam* param = gAgentAvatarp->getFirstVisualParam(); param; param = gAgentAvatarp->getNextVisualParam() )
-	{
-		// cross-wearable parameters are not authoritative, as they are driven by a different wearable. So don't copy the values to the
-		// avatar object if cross wearable. Cross wearable params get their values from the avatar, they shouldn't write the other way.
-		if( (((LLViewerVisualParam*)param)->getWearableType() == mType) && (!((LLViewerVisualParam*)param)->getCrossWearable()) )
-		{
-			S32 param_id = param->getID();
-			F32 weight = getVisualParamWeight(param_id);
-
-			gAgentAvatarp->setVisualParamWeight( param_id, weight, FALSE );
-		}
-	}
-
-	// Pull texture entries
-	for( S32 te = 0; te < TEX_NUM_INDICES; te++ )
-	{
-		if (LLVOAvatarDictionary::getTEWearableType((ETextureIndex) te) == mType)
-		{
-			te_map_t::const_iterator iter = mTEMap.find(te);
-			LLUUID image_id;
-			if(iter != mTEMap.end())
-			{
-				image_id = iter->second->getID();
-			}
-			else
-			{	
-				image_id = LLVOAvatarDictionary::getDefaultTextureImageID((ETextureIndex) te);
-			}
-			LLViewerTexture* image = LLViewerTextureManager::getFetchedTexture( image_id, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE );
-			// MULTI-WEARABLE: assume index 0 will be used when writing to avatar. TODO: eliminate the need for this.
-			gAgentAvatarp->setLocalTextureTE(te, image, 0);
-		}
-	}
-
-	ESex new_sex = gAgentAvatarp->getSex();
-	if( old_sex != new_sex )
-	{
-		gAgentAvatarp->updateSexDependentLayerSets( FALSE );
-	}	
-	
-//	if( upload_bake )
-//	{
-//		gAgent.sendAgentSetAppearance();
-//	}
-}
-
-
-// Updates the user's avatar's appearance, replacing this wearables' parameters and textures with default values.
-// static 
-void LLWearable::removeFromAvatar( LLWearableType::EType type, BOOL upload_bake )
-{
-	if (!isAgentAvatarValid()) return;
-
-	// You can't just remove body parts.
-	if( (type == LLWearableType::WT_SHAPE) ||
-		(type == LLWearableType::WT_SKIN) ||
-		(type == LLWearableType::WT_HAIR) ||
-		(type == LLWearableType::WT_EYES) )
-	{
-		return;
-	}
-
-	// Pull params
-	for( LLVisualParam* param = gAgentAvatarp->getFirstVisualParam(); param; param = gAgentAvatarp->getNextVisualParam() )
-	{
-		if( (((LLViewerVisualParam*)param)->getWearableType() == type) && (param->isTweakable() ) )
-		{
-			S32 param_id = param->getID();
-			gAgentAvatarp->setVisualParamWeight( param_id, param->getDefaultWeight(), upload_bake );
-		}
-	}
-
-	if(gAgentCamera.cameraCustomizeAvatar())
-	{
-		LLFloaterSidePanelContainer::showPanel("appearance", LLSD().with("type", "edit_outfit"));
-	}
-
-	gAgentAvatarp->updateVisualParams();
-	gAgentAvatarp->wearableUpdated(type, FALSE);
-
-//	if( upload_bake )
-//	{
-//		gAgent.sendAgentSetAppearance();
-//	}
-}
-
-// Does not copy mAssetID.
-// Definition version is current: removes obsolete enties and creates default values for new ones.
-void LLWearable::copyDataFrom(const LLWearable* src)
-{
-	if (!isAgentAvatarValid()) return;
-
-	mDefinitionVersion = LLWearable::sCurrentDefinitionVersion;
-
-	mName = src->mName;
-	mDescription = src->mDescription;
-	mPermissions = src->mPermissions;
-	mSaleInfo = src->mSaleInfo;
-
-	setType(src->mType);
-
-	mSavedVisualParamMap.clear();
-	// Deep copy of mVisualParamMap (copies only those params that are current, filling in defaults where needed)
-	for (LLViewerVisualParam* param = (LLViewerVisualParam*) gAgentAvatarp->getFirstVisualParam(); 
-		param;
-		param = (LLViewerVisualParam*) gAgentAvatarp->getNextVisualParam() )
-	{
-		if( (param->getWearableType() == mType) )
-		{
-			S32 id = param->getID();
-			F32 weight = src->getVisualParamWeight(id);
-			mSavedVisualParamMap[id] = weight;
-		}
-	}
-
-	destroyTextures();
-	// Deep copy of mTEMap (copies only those tes that are current, filling in defaults where needed)
-	for (S32 te = 0; te < TEX_NUM_INDICES; te++)
-	{
-		if (LLVOAvatarDictionary::getTEWearableType((ETextureIndex) te) == mType)
-		{
-			te_map_t::const_iterator iter = src->mTEMap.find(te);
-			LLUUID image_id;
-			LLViewerFetchedTexture *image = NULL;
-			if(iter != src->mTEMap.end())
-			{
-				image = src->getLocalTextureObject(te)->getImage();
-				image_id = src->getLocalTextureObject(te)->getID();
-				mTEMap[te] = new LLLocalTextureObject(image, image_id);
-				mSavedTEMap[te] = new LLLocalTextureObject(image, image_id);
-				mTEMap[te]->setBakedReady(src->getLocalTextureObject(te)->getBakedReady());
-				mTEMap[te]->setDiscard(src->getLocalTextureObject(te)->getDiscard());
-			}
-			else
-			{
-				image_id = LLVOAvatarDictionary::getDefaultTextureImageID((ETextureIndex) te);
-				image = LLViewerTextureManager::getFetchedTexture( image_id );
-				mTEMap[te] = new LLLocalTextureObject(image, image_id);
-				mSavedTEMap[te] = new LLLocalTextureObject(image, image_id);
-			}
-			createLayers(te);
-		}
+		mTextureIDMap[te] = id;
 	}
 
-	// Probably reduntant, but ensure that the newly created wearable is not dirty by setting current value of params in new wearable
-	// to be the same as the saved values (which were loaded from src at param->cloneParam(this))
-	revertValues();
+	return LLWearable::SUCCESS;
 }
 
-void LLWearable::setItemID(const LLUUID& item_id)
-{
-	mItemID = item_id;
-}
-
-const LLUUID& LLWearable::getItemID() const
-{
-	return mItemID;
-}
 
 void LLWearable::setType(LLWearableType::EType type) 
 { 
@@ -788,51 +357,6 @@ void LLWearable::setType(LLWearableType::EType type)
 	createVisualParams();
 }
 
-LLLocalTextureObject* LLWearable::getLocalTextureObject(S32 index)
-{
-	te_map_t::iterator iter = mTEMap.find(index);
-	if( iter != mTEMap.end() )
-	{
-		LLLocalTextureObject* lto = iter->second;
-		return lto;
-	}
-	return NULL;
-}
-
-const LLLocalTextureObject* LLWearable::getLocalTextureObject(S32 index) const
-{
-	te_map_t::const_iterator iter = mTEMap.find(index);
-	if( iter != mTEMap.end() )
-	{
-		const LLLocalTextureObject* lto = iter->second;
-		return lto;
-	}
-	return NULL;
-}
-
-std::vector<LLLocalTextureObject*> LLWearable::getLocalTextureListSeq()
-{
-	std::vector<LLLocalTextureObject*> result;
-
-	for(te_map_t::const_iterator iter = mTEMap.begin();
-		iter != mTEMap.end(); iter++)
-	{
-		LLLocalTextureObject* lto = iter->second;
-		result.push_back(lto);
-	}
-
-	return result;
-}
-
-void LLWearable::setLocalTextureObject(S32 index, LLLocalTextureObject &lto)
-{
-	if( mTEMap.find(index) != mTEMap.end() )
-	{
-		mTEMap.erase(index);
-	}
-	mTEMap[index] = new LLLocalTextureObject(lto);
-}
-
 
 void LLWearable::addVisualParam(LLVisualParam *param)
 {
@@ -845,17 +369,6 @@ void LLWearable::addVisualParam(LLVisualParam *param)
 	mSavedVisualParamMap[param->getID()] = param->getDefaultWeight();
 }
 
-void LLWearable::setVisualParams()
-{
-	for (visual_param_index_map_t::const_iterator iter = mVisualParamIndexMap.begin(); iter != mVisualParamIndexMap.end(); iter++)
-	{
-		S32 id = iter->first;
-		LLVisualParam *wearable_param = iter->second;
-		F32 value = wearable_param->getWeight();
-		gAgentAvatarp->setVisualParamWeight(id, value, FALSE);
-	}
-}
-
 
 void LLWearable::setVisualParamWeight(S32 param_index, F32 value, BOOL upload_bake)
 {
@@ -918,7 +431,7 @@ LLColor4 LLWearable::getClothesColor(S32 te) const
 {
 	LLColor4 color;
 	U32 param_name[3];
-	if( LLVOAvatar::teToColorParams( (LLVOAvatarDefines::ETextureIndex)te, param_name ) )
+	if( LLAvatarAppearance::teToColorParams( (LLVOAvatarDefines::ETextureIndex)te, param_name ) )
 	{
 		for( U8 index = 0; index < 3; index++ )
 		{
@@ -931,7 +444,7 @@ LLColor4 LLWearable::getClothesColor(S32 te) const
 void LLWearable::setClothesColor( S32 te, const LLColor4& new_color, BOOL upload_bake )
 {
 	U32 param_name[3];
-	if( LLVOAvatar::teToColorParams( (LLVOAvatarDefines::ETextureIndex)te, param_name ) )
+	if( LLAvatarAppearance::teToColorParams( (LLVOAvatarDefines::ETextureIndex)te, param_name ) )
 	{
 		for( U8 index = 0; index < 3; index++ )
 		{
@@ -940,312 +453,6 @@ void LLWearable::setClothesColor( S32 te, const LLColor4& new_color, BOOL upload
 	}
 }
 
-void LLWearable::revertValues()
-{
-	//update saved settings so wearable is no longer dirty
-	// non-driver params first
-	for (param_map_t::const_iterator iter = mSavedVisualParamMap.begin(); iter != mSavedVisualParamMap.end(); iter++)
-	{
-		S32 id = iter->first;
-		F32 value = iter->second;
-		LLVisualParam *param = getVisualParam(id);
-		if(param &&  !dynamic_cast<LLDriverParam*>(param) )
-		{
-			setVisualParamWeight(id, value, TRUE);
-		}
-	}
-
-	//then driver params
-	for (param_map_t::const_iterator iter = mSavedVisualParamMap.begin(); iter != mSavedVisualParamMap.end(); iter++)
-	{
-		S32 id = iter->first;
-		F32 value = iter->second;
-		LLVisualParam *param = getVisualParam(id);
-		if(param &&  dynamic_cast<LLDriverParam*>(param) )
-		{
-			setVisualParamWeight(id, value, TRUE);
-		}
-	}
-
-	// make sure that saved values are sane
-	for (param_map_t::const_iterator iter = mSavedVisualParamMap.begin(); iter != mSavedVisualParamMap.end(); iter++)
-	{
-		S32 id = iter->first;
-		LLVisualParam *param = getVisualParam(id);
-		if( param )
-		{
-			mSavedVisualParamMap[id] = param->getWeight();
-		}
-	}
-
-	syncImages(mSavedTEMap, mTEMap);
-
-
-	LLSidepanelAppearance *panel = dynamic_cast<LLSidepanelAppearance*>(LLFloaterSidePanelContainer::getPanel("appearance"));
-	if( panel )
-	{
-		panel->updateScrollingPanelList();
-	}
-}
-
-BOOL LLWearable::isOnTop() const
-{ 
-	return (this == gAgentWearables.getTopWearable(mType));
-}
-
-void LLWearable::createLayers(S32 te)
-{
-	LLTexLayerSet *layer_set = gAgentAvatarp->getLayerSet((ETextureIndex)te);
-	if (layer_set)
-	{
-		layer_set->cloneTemplates(mTEMap[te], (ETextureIndex)te, this);
-	}
-	else
-	{
-		llerrs << "could not find layerset for LTO in wearable!" << llendl;
-	}
-}
-
-void LLWearable::saveValues()
-{
-	//update saved settings so wearable is no longer dirty
-	mSavedVisualParamMap.clear();
-	for (visual_param_index_map_t::const_iterator iter = mVisualParamIndexMap.begin(); iter != mVisualParamIndexMap.end(); ++iter)
-	{
-		S32 id = iter->first;
-		LLVisualParam *wearable_param = iter->second;
-		F32 value = wearable_param->getWeight();
-		mSavedVisualParamMap[id] = value;
-	}
-
-	// Deep copy of mTEMap (copies only those tes that are current, filling in defaults where needed)
-	syncImages(mTEMap, mSavedTEMap);
-
-
-	LLSidepanelAppearance *panel = dynamic_cast<LLSidepanelAppearance*>(LLFloaterSidePanelContainer::getPanel("appearance"));
-	if( panel )
-	{
-		panel->updateScrollingPanelList();
-	}
-}
-
-void LLWearable::syncImages(te_map_t &src, te_map_t &dst)
-{
-	// Deep copy of src (copies only those tes that are current, filling in defaults where needed)
-	for( S32 te = 0; te < TEX_NUM_INDICES; te++ )
-	{
-		if (LLVOAvatarDictionary::getTEWearableType((ETextureIndex) te) == mType)
-		{
-			te_map_t::const_iterator iter = src.find(te);
-			LLUUID image_id;
-			LLViewerFetchedTexture *image = NULL;
-			LLLocalTextureObject *lto = NULL;
-			if(iter != src.end())
-			{
-				// there's a Local Texture Object in the source image map. Use this to populate the values to store in the destination image map.
-				lto = iter->second;
-				image = lto->getImage();
-				image_id = lto->getID();
-			}
-			else
-			{
-				// there is no Local Texture Object in the source image map. Get defaults values for populating the destination image map.
-				image_id = LLVOAvatarDictionary::getDefaultTextureImageID((ETextureIndex) te);
-				image = LLViewerTextureManager::getFetchedTexture( image_id );
-			}
-
-			if( dst.find(te) != dst.end() )
-			{
-				// there's already an entry in the destination map for the texture. Just update its values.
-				dst[te]->setImage(image);
-				dst[te]->setID(image_id);
-			}
-			else
-			{
-				// no entry found in the destination map, we need to create a new Local Texture Object
-				dst[te] = new LLLocalTextureObject(image, image_id);
-			}
-
-			if( lto )
-			{
-				// If we pulled values from a Local Texture Object in the source map, make sure the proper flags are set in the new (or updated) entry in the destination map.
-				dst[te]->setBakedReady(lto->getBakedReady());
-				dst[te]->setDiscard(lto->getDiscard());
-			}
-		}
-	}
-}
-
-void LLWearable::destroyTextures()
-{
-	for( te_map_t::iterator iter = mTEMap.begin(); iter != mTEMap.end(); ++iter )
-	{
-		LLLocalTextureObject *lto = iter->second;
-		delete lto;
-	}
-	mTEMap.clear();
-	for( te_map_t::iterator iter = mSavedTEMap.begin(); iter != mSavedTEMap.end(); ++iter )
-	{
-		LLLocalTextureObject *lto = iter->second;
-		delete lto;
-	}
-	mSavedTEMap.clear();
-}
-
-void LLWearable::pullCrossWearableValues()
-{
-	// scan through all of the avatar's visual parameters
-	for (LLViewerVisualParam* param = (LLViewerVisualParam*) gAgentAvatarp->getFirstVisualParam(); 
-		 param;
-		 param = (LLViewerVisualParam*) gAgentAvatarp->getNextVisualParam())
-	{
-		if( param )
-		{
-			LLDriverParam *driver_param = dynamic_cast<LLDriverParam*>(param);
-			if(driver_param)
-			{
-				// parameter is a driver parameter, have it update its 
-				driver_param->updateCrossDrivenParams(getType());
-			}
-		}
-	}
-}
-
-
-void LLWearable::setLabelUpdated() const
-{ 
-	gInventory.addChangedMask(LLInventoryObserver::LABEL, getItemID());
-}
-
-void LLWearable::refreshName()
-{
-	LLUUID item_id = getItemID();
-	LLInventoryItem* item = gInventory.getItem(item_id);
-	if( item )
-	{
-		mName = item->getName();
-	}
-}
-
-struct LLWearableSaveData
-{
-	LLWearableType::EType mType;
-};
-
-void LLWearable::saveNewAsset() const
-{
-//	llinfos << "LLWearable::saveNewAsset() type: " << getTypeName() << llendl;
-	//llinfos << *this << llendl;
-
-	const std::string filename = asset_id_to_filename(mAssetID);
-	LLFILE* fp = LLFile::fopen(filename, "wb");		/* Flawfinder: ignore */
-	BOOL successful_save = FALSE;
-	if(fp && exportFile(fp))
-	{
-		successful_save = TRUE;
-	}
-	if(fp)
-	{
-		fclose(fp);
-		fp = NULL;
-	}
-	if(!successful_save)
-	{
-		std::string buffer = llformat("Unable to save '%s' to wearable file.", mName.c_str());
-		llwarns << buffer << llendl;
-		
-		LLSD args;
-		args["NAME"] = mName;
-		LLNotificationsUtil::add("CannotSaveWearableOutOfSpace", args);
-		return;
-	}
-
-	// save it out to database
-	if( gAssetStorage )
-	{
-		 /*
-		std::string url = gAgent.getRegion()->getCapability("NewAgentInventory");
-		if (!url.empty())
-		{
-			llinfos << "Update Agent Inventory via capability" << llendl;
-			LLSD body;
-			body["folder_id"] = gInventory.findCategoryUUIDForType(LLFolderType::assetToFolderType(getAssetType()));
-			body["asset_type"] = LLAssetType::lookup(getAssetType());
-			body["inventory_type"] = LLInventoryType::lookup(LLInventoryType::IT_WEARABLE);
-			body["name"] = getName();
-			body["description"] = getDescription();
-			LLHTTPClient::post(url, body, new LLNewAgentInventoryResponder(body, filename));
-		}
-		else
-		{
-		}
-		 */
-		 LLWearableSaveData* data = new LLWearableSaveData;
-		 data->mType = mType;
-		 gAssetStorage->storeAssetData(filename, mTransactionID, getAssetType(),
-                                     &LLWearable::onSaveNewAssetComplete,
-                                     (void*)data);
-	}
-}
-
-// static
-void LLWearable::onSaveNewAssetComplete(const LLUUID& new_asset_id, void* userdata, S32 status, LLExtStat ext_status) // StoreAssetData callback (fixed)
-{
-	LLWearableSaveData* data = (LLWearableSaveData*)userdata;
-	const std::string& type_name = LLWearableType::getTypeName(data->mType);
-	if(0 == status)
-	{
-		// Success
-		llinfos << "Saved wearable " << type_name << llendl;
-	}
-	else
-	{
-		std::string buffer = llformat("Unable to save %s to central asset store.", type_name.c_str());
-		llwarns << buffer << " Status: " << status << llendl;
-		LLSD args;
-		args["NAME"] = type_name;
-		LLNotificationsUtil::add("CannotSaveToAssetStore", args);
-	}
-
-	// Delete temp file
-	const std::string src_filename = asset_id_to_filename(new_asset_id);
-	LLFile::remove(src_filename);
-
-	// delete the context data
-	delete data;
-
-}
-
-std::ostream& operator<<(std::ostream &s, const LLWearable &w)
-{
-	s << "wearable " << LLWearableType::getTypeName(w.mType) << "\n";
-	s << "    Name: " << w.mName << "\n";
-	s << "    Desc: " << w.mDescription << "\n";
-	//w.mPermissions
-	//w.mSaleInfo
-
-	s << "    Params:" << "\n";
-	for (LLWearable::visual_param_index_map_t::const_iterator iter = w.mVisualParamIndexMap.begin();
-		 iter != w.mVisualParamIndexMap.end(); ++iter)
-	{
-		S32 param_id = iter->first;
-		LLVisualParam *wearable_param = iter->second;
-		F32 param_weight = wearable_param->getWeight();
-		s << "        " << param_id << " " << param_weight << "\n";
-	}
-
-	s << "    Textures:" << "\n";
-	for (LLWearable::te_map_t::const_iterator iter = w.mTEMap.begin();
-		 iter != w.mTEMap.end(); ++iter)
-	{
-		S32 te = iter->first;
-		const LLUUID& image_id = iter->second->getID();
-		s << "        " << te << " " << image_id << "\n";
-	}
-	return s;
-}
-
-
 std::string terse_F32_to_string(F32 f)
 {
 	std::string r = llformat("%.2f", f);
@@ -1276,10 +483,3 @@ std::string terse_F32_to_string(F32 f)
 	return r;
 }
 
-std::string asset_id_to_filename(const LLUUID &asset_id)
-{
-	std::string asset_id_string;
-	asset_id.toString(asset_id_string);
-	std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_CACHE,asset_id_string) + ".wbl";	
-	return filename;
-}
diff --git a/indra/llappearance/llwearable.h b/indra/llappearance/llwearable.h
index c8f9ef1fb94..56c931e43b7 100644
--- a/indra/llappearance/llwearable.h
+++ b/indra/llappearance/llwearable.h
@@ -27,31 +27,25 @@
 #ifndef LL_LLWEARABLE_H
 #define LL_LLWEARABLE_H
 
+#include "llextendedstatus.h"
 //#include "lluuid.h"
 //#include "llstring.h"
-//#include "llpermissions.h"
-//#include "llsaleinfo.h"
+#include "llpermissions.h"
+#include "llsaleinfo.h"
 //#include "llassetstorage.h"
-//#include "llwearabletype.h"
+#include "llwearabletype.h"
 //#include "llfile.h"
-//#include "lllocaltextureobject.h"
+#include "lllocaltextureobject.h"
 
-class LLViewerInventoryItem;
 class LLVisualParam;
 class LLTexGlobalColorInfo;
 class LLTexGlobalColor;
 
 class LLWearable
 {
-	friend class LLWearableList;
-
 	//--------------------------------------------------------------------
 	// Constructors and destructors
 	//--------------------------------------------------------------------
-private:
-	// Private constructors used by LLWearableList
-	LLWearable(const LLTransactionID& transactionID);
-	LLWearable(const LLAssetID& assetID);
 public:
 	virtual ~LLWearable();
 
@@ -59,10 +53,7 @@ class LLWearable
 	// Accessors
 	//--------------------------------------------------------------------
 public:
-	const LLUUID&				getItemID() const;
-	const LLAssetID&			getAssetID() const { return mAssetID; }
-	const LLTransactionID&		getTransactionID() const { return mTransactionID; }
-	LLWearableType::EType				getType() const	{ return mType; }
+	LLWearableType::EType		getType() const	{ return mType; }
 	void						setType(LLWearableType::EType type);
 	const std::string&			getName() const	{ return mName; }
 	void						setName(const std::string& name) { mName = name; }
@@ -81,36 +72,22 @@ class LLWearable
 public:
 	typedef std::vector<LLVisualParam*> visual_param_vec_t;
 
-	BOOL				isDirty() const;
-	BOOL				isOldVersion() const;
-
-	void				writeToAvatar();
-	void				removeFromAvatar( BOOL upload_bake )	{ LLWearable::removeFromAvatar( mType, upload_bake ); }
-	static void			removeFromAvatar( LLWearableType::EType type, BOOL upload_bake ); 
-
-	BOOL				exportFile(LLFILE* file) const;
-	BOOL				importFile(LLFILE* file);
-	
-	void				setParamsToDefaults();
-	void				setTexturesToDefaults();
+	enum EImportResult
+	{
+		FAILURE = 0,
+		SUCCESS,
+		BAD_HEADER
+	};
+	virtual BOOL				exportFile(LLFILE* file) const;
+	virtual EImportResult		importFile(LLFILE* file);
 
-	void				saveNewAsset() const;
-	static void			onSaveNewAssetComplete( const LLUUID& asset_uuid, void* user_data, S32 status, LLExtStat ext_status );
+	virtual LLLocalTextureObject* getLocalTextureObject(S32 index) = 0;
+	virtual void	writeToAvatar() = 0;
 
-	void				copyDataFrom(const LLWearable* src);
 
 	static void			setCurrentDefinitionVersion( S32 version ) { LLWearable::sCurrentDefinitionVersion = version; }
 
-	friend std::ostream& operator<<(std::ostream &s, const LLWearable &w);
-	void				setItemID(const LLUUID& item_id);
-
-	LLLocalTextureObject* getLocalTextureObject(S32 index);
-	const LLLocalTextureObject* getLocalTextureObject(S32 index) const;
-	std::vector<LLLocalTextureObject*> getLocalTextureListSeq();
-
-	void				setLocalTextureObject(S32 index, LLLocalTextureObject &lto);
 	void				addVisualParam(LLVisualParam *param);
-	void				setVisualParams();
 	void 				setVisualParamWeight(S32 index, F32 value, BOOL upload_bake);
 	F32					getVisualParamWeight(S32 index) const;
 	LLVisualParam*		getVisualParam(S32 index) const;
@@ -120,27 +97,11 @@ class LLWearable
 	LLColor4			getClothesColor(S32 te) const;
 	void 				setClothesColor( S32 te, const LLColor4& new_color, BOOL upload_bake );
 
-	void				revertValues();
-	void				saveValues();
-	void				pullCrossWearableValues();		
-
-	BOOL				isOnTop() const;
+	typedef std::map<S32, LLUUID> texture_id_map_t;
+	const texture_id_map_t& getTextureIDMap() const { return mTextureIDMap; }
 
-	// Something happened that requires the wearable's label to be updated (e.g. worn/unworn).
-	void				setLabelUpdated() const;
-
-	// the wearable was worn. make sure the name of the wearable object matches the LLViewerInventoryItem,
-	// not the wearable asset itself.
-	void				refreshName();
-
-private:
-	typedef std::map<S32, LLLocalTextureObject*> te_map_t;
-	typedef std::map<S32, LLVisualParam *>    visual_param_index_map_t;
-
-	void 				createLayers(S32 te);
-	void 				createVisualParams();
-	void				syncImages(te_map_t &src, te_map_t &dst);
-	void				destroyTextures();	
+protected:
+	virtual void 	createVisualParams() = 0;
 
 	static S32			sCurrentDefinitionVersion;	// Depends on the current state of the avatar_lad.xml.
 	S32					mDefinitionVersion;			// Depends on the state of the avatar_lad.xml when this asset was created.
@@ -148,18 +109,16 @@ class LLWearable
 	std::string			mDescription;
 	LLPermissions		mPermissions;
 	LLSaleInfo			mSaleInfo;
-	LLAssetID mAssetID;
-	LLTransactionID		mTransactionID;
 	LLWearableType::EType		mType;
 
 	typedef std::map<S32, F32> param_map_t;
 	param_map_t mSavedVisualParamMap; // last saved version of visual params
 
+	typedef std::map<S32, LLVisualParam *>    visual_param_index_map_t;
 	visual_param_index_map_t mVisualParamIndexMap;
 
-	te_map_t mTEMap;				// maps TE to LocalTextureObject
-	te_map_t mSavedTEMap;			// last saved version of TEMap
-	LLUUID				mItemID;  // ID of the inventory item in the agent's inventory	
+	// *TODO: Lazy mutable.  Find a better way?
+	mutable texture_id_map_t mTextureIDMap;
 };
 
 #endif  // LL_LLWEARABLE_H
diff --git a/indra/newview/llwearabletype.cpp b/indra/llappearance/llwearabletype.cpp
similarity index 98%
rename from indra/newview/llwearabletype.cpp
rename to indra/llappearance/llwearabletype.cpp
index c090ab5c3de..d47702ff4d8 100644
--- a/indra/newview/llwearabletype.cpp
+++ b/indra/llappearance/llwearabletype.cpp
@@ -24,9 +24,12 @@
  * $/LicenseInfo$
  */
 
-#include "llviewerprecompiledheaders.h"
+//#include "llviewerprecompiledheaders.h"
+#include "linden_common.h"
+ 
 #include "llwearabletype.h"
-#include "llinventoryfunctions.h"
+//#include "llinventoryfunctions.h"
+#include "llinventoryicon.h"
 #include "lltrans.h"
 
 struct WearableEntry : public LLDictionaryEntry
diff --git a/indra/newview/llwearabletype.h b/indra/llappearance/llwearabletype.h
similarity index 100%
rename from indra/newview/llwearabletype.h
rename to indra/llappearance/llwearabletype.h
diff --git a/indra/llcharacter/CMakeLists.txt b/indra/llcharacter/CMakeLists.txt
index a1712699eb2..e9704d56359 100644
--- a/indra/llcharacter/CMakeLists.txt
+++ b/indra/llcharacter/CMakeLists.txt
@@ -15,6 +15,7 @@ include_directories(
     ${LLMESSAGE_INCLUDE_DIRS}
     ${LLVFS_INCLUDE_DIRS}
     ${LLXML_INCLUDE_DIRS}
+    ${LLAPPEARANCE_INCLUDE_DIRS}
     )
 
 set(llcharacter_SOURCE_FILES
diff --git a/indra/llrender/llglslshader.h b/indra/llrender/llglslshader.h
index 5c68cb46eb3..cf21101e35a 100644
--- a/indra/llrender/llglslshader.h
+++ b/indra/llrender/llglslshader.h
@@ -159,6 +159,8 @@ class LLGLSLShader
 extern LLGLSLShader			gUIProgram;
 //output vec4(color.rgb,color.a*tex0[tc0].a)
 extern LLGLSLShader			gSolidColorProgram;
+//Alpha mask shader (declared here so llappearance can access properly)
+extern LLGLSLShader			gAlphaMaskProgram;
 
 
 #endif
diff --git a/indra/llrender/lltexture.h b/indra/llrender/lltexture.h
index 569a65c2e08..a23aa725208 100644
--- a/indra/llrender/lltexture.h
+++ b/indra/llrender/lltexture.h
@@ -32,10 +32,12 @@
 #ifndef LL_TEXTURE_H
 #define LL_TEXTURE_H
 
+#include "llgltypes.h"
 #include "llrefcount.h"
-class LLImageGL ;
-class LLTexUnit ;
+#include "llrender.h"
+
 class LLFontGL ;
+class LLImageRaw ;
 
 //
 //this is an abstract class as the parent for the class LLViewerTexture
@@ -52,6 +54,39 @@ class LLTexture : public LLRefCount
 public:
 	LLTexture(){}
 
+	enum EBoostLevel
+	{
+		BOOST_NONE 			= 0,
+		BOOST_AVATAR_BAKED	,
+		BOOST_AVATAR		,
+		BOOST_CLOUDS		,
+		BOOST_SCULPTED      ,
+		
+		BOOST_HIGH 			= 10,
+		BOOST_BUMP          ,
+		BOOST_TERRAIN		, // has to be high priority for minimap / low detail
+		BOOST_SELECTED		,		
+		BOOST_AVATAR_BAKED_SELF	,
+		BOOST_AVATAR_SELF	, // needed for baking avatar
+		BOOST_SUPER_HIGH    , //textures higher than this need to be downloaded at the required resolution without delay.
+		BOOST_HUD			,
+		BOOST_ICON			,
+		BOOST_UI			,
+		BOOST_PREVIEW		,
+		BOOST_MAP			,
+		BOOST_MAP_VISIBLE	,		
+		BOOST_MAX_LEVEL,
+
+		//other texture Categories
+		LOCAL = BOOST_MAX_LEVEL,
+		AVATAR_SCRATCH_TEX,
+		DYNAMIC_TEX,
+		MEDIA,
+		ATLAS,
+		OTHER,
+		MAX_GL_IMAGE_CATEGORY
+	};
+
 	//
 	//interfaces to access LLViewerTexture
 	//
@@ -62,6 +97,13 @@ class LLTexture : public LLRefCount
 	virtual void       setActive() = 0 ;
 	virtual S32	       getWidth(S32 discard_level = -1) const = 0 ;
 	virtual S32	       getHeight(S32 discard_level = -1) const = 0 ;
+	virtual BOOL       hasGLTexture() const  = 0;
+	virtual BOOL       createGLTexture(S32 discard_level, const LLImageRaw* imageraw, S32 usename = 0, BOOL to_create = TRUE, S32 category = LLTexture::OTHER) = 0;
+	virtual void       setExplicitFormat(LLGLint internal_format, LLGLenum primary_format, LLGLenum type_format = 0, BOOL swap_bytes = FALSE) = 0;
+	virtual void       setAddressMode(LLTexUnit::eTextureAddressMode mode) = 0;
+	virtual LLTexUnit::eTextureAddressMode getAddressMode(void) const = 0;
+	virtual S8         getComponents() const = 0;
+	virtual            const LLUUID& getID() const = 0;
 
 private:
 	//note: do not make this function public.
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index ff3fb0038cf..a40f7cd3d3b 100755
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -302,7 +302,6 @@ set(viewer_SOURCE_FILES
     llinventorybridge.cpp
     llinventoryfilter.cpp
     llinventoryfunctions.cpp
-    llinventoryicon.cpp
     llinventoryitemslist.cpp
     llinventorylistitem.cpp
     llinventorymodel.cpp
@@ -316,7 +315,6 @@ set(viewer_SOURCE_FILES
     lllistcontextmenu.cpp
     lllistview.cpp
     lllocalbitmaps.cpp
-    lllocaltextureobject.cpp
     lllocationhistory.cpp
     lllocationinputctrl.cpp
     lllogchat.cpp
@@ -495,9 +493,6 @@ set(viewer_SOURCE_FILES
     llsyswellwindow.cpp
     llteleporthistory.cpp
     llteleporthistorystorage.cpp
-    lltexglobalcolor.cpp
-    lltexlayer.cpp
-    lltexlayerparams.cpp
     lltextureatlas.cpp
     lltextureatlasmanager.cpp
     lltexturecache.cpp
@@ -595,18 +590,18 @@ set(viewer_SOURCE_FILES
     llviewershadermgr.cpp
     llviewerstats.cpp
     llviewerstatsrecorder.cpp
+    llviewertexlayer.cpp
     llviewertexteditor.cpp
     llviewertexture.cpp
     llviewertextureanim.cpp
     llviewertexturelist.cpp
     llviewerthrottle.cpp
-    llviewervisualparam.cpp
+    llviewerwearable.cpp
     llviewerwindow.cpp
     llviewerwindowlistener.cpp
     llvlcomposition.cpp
     llvlmanager.cpp
     llvoavatar.cpp
-    llvoavatardefines.cpp
     llvoavatarself.cpp
     llvocache.cpp
     llvograss.cpp
@@ -629,7 +624,6 @@ set(viewer_SOURCE_FILES
     llwaterparamset.cpp
     llwearableitemslist.cpp
     llwearablelist.cpp
-    llwearabletype.cpp
     llweb.cpp
     llwebprofile.cpp
     llwebsharing.cpp
@@ -877,7 +871,6 @@ set(viewer_HEADER_FILES
     llinventorybridge.h
     llinventoryfilter.h
     llinventoryfunctions.h
-    llinventoryicon.h
     llinventoryitemslist.h
     llinventorylistitem.h
     llinventorymodel.h
@@ -892,7 +885,6 @@ set(viewer_HEADER_FILES
     lllistcontextmenu.h
     lllistview.h
     lllocalbitmaps.h
-    lllocaltextureobject.h
     lllocationhistory.h
     lllocationinputctrl.h
     lllogchat.h
@@ -1062,9 +1054,6 @@ set(viewer_HEADER_FILES
     lltable.h
     llteleporthistory.h
     llteleporthistorystorage.h
-    lltexglobalcolor.h
-    lltexlayer.h
-    lltexlayerparams.h
     lltextureatlas.h
     lltextureatlasmanager.h
     lltexturecache.h
@@ -1163,18 +1152,18 @@ set(viewer_HEADER_FILES
     llviewershadermgr.h
     llviewerstats.h
     llviewerstatsrecorder.h
+    llviewertexlayer.h
     llviewertexteditor.h
     llviewertexture.h
     llviewertextureanim.h
     llviewertexturelist.h
     llviewerthrottle.h
-    llviewervisualparam.h
+    llviewerwearable.h
     llviewerwindow.h
     llviewerwindowlistener.h
     llvlcomposition.h
     llvlmanager.h
     llvoavatar.h
-    llvoavatardefines.h
     llvoavatarself.h
     llvocache.h
     llvograss.h
@@ -1197,7 +1186,6 @@ set(viewer_HEADER_FILES
     llwaterparamset.h
     llwearableitemslist.h
     llwearablelist.h
-    llwearabletype.h
     llweb.h
     llwebprofile.h
     llwebsharing.h
@@ -1834,6 +1822,7 @@ target_link_libraries(${VIEWER_BINARY_NAME}
     ${LLPHYSICS_LIBRARIES}
     ${LLPHYSICSEXTENSIONS_LIBRARIES}
     ${TCMALLOC_LIBRARIES}
+    ${LLAPPEARANCE_LIBRARIES}
     )
 
 if (USE_KDU)
diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp
index e44b27c6afc..e4f02b9f0bf 100755
--- a/indra/newview/llagentwearables.cpp
+++ b/indra/newview/llagentwearables.cpp
@@ -47,7 +47,7 @@
 #include "lltooldraganddrop.h"
 #include "llviewerregion.h"
 #include "llvoavatarself.h"
-#include "llwearable.h"
+#include "llviewerwearable.h"
 #include "llwearablelist.h"
 
 #include <boost/scoped_ptr.hpp>
@@ -82,7 +82,7 @@ class LLWearAndEditCallback : public LLInventoryCallback
 // wearable type stored in asset is some other value.
 // Calling this function whenever a wearable is added to increase visibility if this problem
 // turns up in other inventories.
-void checkWearableAgainstInventory(LLWearable *wearable)
+void checkWearableAgainstInventory(LLViewerWearable *wearable)
 {
 	if (wearable->getItemID().isNull())
 		return;
@@ -119,7 +119,7 @@ void LLAgentWearables::dump()
 		llinfos << "Type: " << i << " count " << count << llendl;
 		for (U32 j=0; j<count; j++)
 		{
-			LLWearable* wearable = getWearable((LLWearableType::EType)i,j);
+			LLViewerWearable* wearable = getWearable((LLWearableType::EType)i,j);
 			if (wearable == NULL)
 			{
 				llinfos << "    " << j << " NULL wearable" << llendl;
@@ -213,7 +213,7 @@ LLAgentWearables::sendAgentWearablesUpdateCallback::~sendAgentWearablesUpdateCal
  * @param todo Bitmask of actions to take on completion.
  */
 LLAgentWearables::addWearableToAgentInventoryCallback::addWearableToAgentInventoryCallback(
-	LLPointer<LLRefCount> cb, LLWearableType::EType type, U32 index, LLWearable* wearable, U32 todo) :
+	LLPointer<LLRefCount> cb, LLWearableType::EType type, U32 index, LLViewerWearable* wearable, U32 todo) :
 	mType(type),
 	mIndex(index),	
 	mWearable(wearable),
@@ -265,7 +265,7 @@ void LLAgentWearables::addWearableToAgentInventoryCallback::fire(const LLUUID& i
 void LLAgentWearables::addWearabletoAgentInventoryDone(const LLWearableType::EType type,
 													   const U32 index,
 													   const LLUUID& item_id,
-													   LLWearable* wearable)
+													   LLViewerWearable* wearable)
 {
 	llinfos << "type " << type << " index " << index << " item " << item_id.asString() << llendl;
 
@@ -312,7 +312,7 @@ void LLAgentWearables::sendAgentWearablesUpdate()
 	{
 		for (U32 index=0; index < getWearableCount((LLWearableType::EType)type); ++index)
 		{
-			LLWearable* wearable = getWearable((LLWearableType::EType)type,index);
+			LLViewerWearable* wearable = getWearable((LLWearableType::EType)type,index);
 			if (wearable)
 			{
 				if (wearable->getItemID().isNull())
@@ -354,7 +354,7 @@ void LLAgentWearables::sendAgentWearablesUpdate()
 		U8 type_u8 = (U8)type;
 		gMessageSystem->addU8Fast(_PREHASH_WearableType, type_u8);
 
-		LLWearable* wearable = getWearable((LLWearableType::EType)type, 0);
+		LLViewerWearable* wearable = getWearable((LLWearableType::EType)type, 0);
 		if (wearable)
 		{
 			//llinfos << "Sending wearable " << wearable->getName() << llendl;
@@ -382,14 +382,14 @@ void LLAgentWearables::sendAgentWearablesUpdate()
 void LLAgentWearables::saveWearable(const LLWearableType::EType type, const U32 index, BOOL send_update,
 									const std::string new_name)
 {
-	LLWearable* old_wearable = getWearable(type, index);
+	LLViewerWearable* old_wearable = getWearable(type, index);
 	if(!old_wearable) return;
 	bool name_changed = !new_name.empty() && (new_name != old_wearable->getName());
 	if (name_changed || old_wearable->isDirty() || old_wearable->isOldVersion())
 	{
 		LLUUID old_item_id = old_wearable->getItemID();
-		LLWearable* new_wearable = LLWearableList::instance().createCopy(old_wearable);
-		new_wearable->setItemID(old_item_id); // should this be in LLWearable::copyDataFrom()?
+		LLViewerWearable* new_wearable = LLWearableList::instance().createCopy(old_wearable);
+		new_wearable->setItemID(old_item_id); // should this be in LLViewerWearable::copyDataFrom()?
 		setWearable(type,index,new_wearable);
 
 		// old_wearable may still be referred to by other inventory items. Revert
@@ -465,7 +465,7 @@ void LLAgentWearables::saveWearableAs(const LLWearableType::EType type,
 		llwarns << "LLAgent::saveWearableAs() not copyable." << llendl;
 		return;
 	}
-	LLWearable* old_wearable = getWearable(type, index);
+	LLViewerWearable* old_wearable = getWearable(type, index);
 	if (!old_wearable)
 	{
 		llwarns << "LLAgent::saveWearableAs() no old wearable." << llendl;
@@ -480,7 +480,7 @@ void LLAgentWearables::saveWearableAs(const LLWearableType::EType type,
 	}
 	std::string trunc_name(new_name);
 	LLStringUtil::truncate(trunc_name, DB_INV_ITEM_NAME_STR_LEN);
-	LLWearable* new_wearable = LLWearableList::instance().createCopy(
+	LLViewerWearable* new_wearable = LLWearableList::instance().createCopy(
 		old_wearable,
 		trunc_name);
 	LLPointer<LLInventoryCallback> cb =
@@ -518,7 +518,7 @@ void LLAgentWearables::saveWearableAs(const LLWearableType::EType type,
 
 void LLAgentWearables::revertWearable(const LLWearableType::EType type, const U32 index)
 {
-	LLWearable* wearable = getWearable(type, index);
+	LLViewerWearable* wearable = getWearable(type, index);
 	llassert(wearable);
 	if (wearable)
 	{
@@ -553,13 +553,13 @@ void LLAgentWearables::setWearableName(const LLUUID& item_id, const std::string&
 			LLUUID curr_item_id = getWearableItemID((LLWearableType::EType)i,j);
 			if (curr_item_id == item_id)
 			{
-				LLWearable* old_wearable = getWearable((LLWearableType::EType)i,j);
+				LLViewerWearable* old_wearable = getWearable((LLWearableType::EType)i,j);
 				llassert(old_wearable);
 				if (!old_wearable) continue;
 
 				std::string old_name = old_wearable->getName();
 				old_wearable->setName(new_name);
-				LLWearable* new_wearable = LLWearableList::instance().createCopy(old_wearable);
+				LLViewerWearable* new_wearable = LLWearableList::instance().createCopy(old_wearable);
 				new_wearable->setItemID(item_id);
 				LLInventoryItem* item = gInventory.getItem(item_id);
 				if (item)
@@ -640,14 +640,14 @@ LLInventoryItem* LLAgentWearables::getWearableInventoryItem(LLWearableType::ETyp
 	return item;
 }
 
-const LLWearable* LLAgentWearables::getWearableFromItemID(const LLUUID& item_id) const
+const LLViewerWearable* LLAgentWearables::getWearableFromItemID(const LLUUID& item_id) const
 {
 	const LLUUID& base_item_id = gInventory.getLinkedItemID(item_id);
 	for (S32 i=0; i < LLWearableType::WT_COUNT; i++)
 	{
 		for (U32 j=0; j < getWearableCount((LLWearableType::EType)i); j++)
 		{
-			const LLWearable * curr_wearable = getWearable((LLWearableType::EType)i, j);
+			const LLViewerWearable * curr_wearable = getWearable((LLWearableType::EType)i, j);
 			if (curr_wearable && (curr_wearable->getItemID() == base_item_id))
 			{
 				return curr_wearable;
@@ -657,14 +657,14 @@ const LLWearable* LLAgentWearables::getWearableFromItemID(const LLUUID& item_id)
 	return NULL;
 }
 
-LLWearable* LLAgentWearables::getWearableFromItemID(const LLUUID& item_id)
+LLViewerWearable* LLAgentWearables::getWearableFromItemID(const LLUUID& item_id)
 {
 	const LLUUID& base_item_id = gInventory.getLinkedItemID(item_id);
 	for (S32 i=0; i < LLWearableType::WT_COUNT; i++)
 	{
 		for (U32 j=0; j < getWearableCount((LLWearableType::EType)i); j++)
 		{
-			LLWearable * curr_wearable = getWearable((LLWearableType::EType)i, j);
+			LLViewerWearable * curr_wearable = getWearable((LLWearableType::EType)i, j);
 			if (curr_wearable && (curr_wearable->getItemID() == base_item_id))
 			{
 				return curr_wearable;
@@ -674,13 +674,13 @@ LLWearable* LLAgentWearables::getWearableFromItemID(const LLUUID& item_id)
 	return NULL;
 }
 
-LLWearable*	LLAgentWearables::getWearableFromAssetID(const LLUUID& asset_id) 
+LLViewerWearable*	LLAgentWearables::getWearableFromAssetID(const LLUUID& asset_id) 
 {
 	for (S32 i=0; i < LLWearableType::WT_COUNT; i++)
 	{
 		for (U32 j=0; j < getWearableCount((LLWearableType::EType)i); j++)
 		{
-			LLWearable * curr_wearable = getWearable((LLWearableType::EType)i, j);
+			LLViewerWearable * curr_wearable = getWearable((LLWearableType::EType)i, j);
 			if (curr_wearable && (curr_wearable->getAssetID() == asset_id))
 			{
 				return curr_wearable;
@@ -705,7 +705,7 @@ BOOL LLAgentWearables::selfHasWearable(LLWearableType::EType type)
 	return (gAgentWearables.getWearableCount(type) > 0);
 }
 
-LLWearable* LLAgentWearables::getWearable(const LLWearableType::EType type, U32 index)
+LLViewerWearable* LLAgentWearables::getWearable(const LLWearableType::EType type, U32 index)
 {
 	wearableentry_map_t::iterator wearable_iter = mWearableDatas.find(type);
 	if (wearable_iter == mWearableDatas.end())
@@ -723,10 +723,10 @@ LLWearable* LLAgentWearables::getWearable(const LLWearableType::EType type, U32
 	}
 }
 
-void LLAgentWearables::setWearable(const LLWearableType::EType type, U32 index, LLWearable *wearable)
+void LLAgentWearables::setWearable(const LLWearableType::EType type, U32 index, LLViewerWearable *wearable)
 {
 
-	LLWearable *old_wearable = getWearable(type,index);
+	LLViewerWearable *old_wearable = getWearable(type,index);
 	if (!old_wearable)
 	{
 		pushWearable(type,wearable);
@@ -753,7 +753,7 @@ void LLAgentWearables::setWearable(const LLWearableType::EType type, U32 index,
 	}
 }
 
-U32 LLAgentWearables::pushWearable(const LLWearableType::EType type, LLWearable *wearable)
+U32 LLAgentWearables::pushWearable(const LLWearableType::EType type, LLViewerWearable *wearable)
 {
 	if (wearable == NULL)
 	{
@@ -771,7 +771,7 @@ U32 LLAgentWearables::pushWearable(const LLWearableType::EType type, LLWearable
 	return MAX_CLOTHING_PER_TYPE;
 }
 
-void LLAgentWearables::wearableUpdated(LLWearable *wearable)
+void LLAgentWearables::wearableUpdated(LLViewerWearable *wearable)
 {
 	gAgentAvatarp->wearableUpdated(wearable->getType(), FALSE);
 	wearable->refreshName();
@@ -794,7 +794,7 @@ void LLAgentWearables::wearableUpdated(LLWearable *wearable)
 
 }
 
-void LLAgentWearables::popWearable(LLWearable *wearable)
+void LLAgentWearables::popWearable(LLViewerWearable *wearable)
 {
 	if (wearable == NULL)
 	{
@@ -813,7 +813,7 @@ void LLAgentWearables::popWearable(LLWearable *wearable)
 
 void LLAgentWearables::popWearable(const LLWearableType::EType type, U32 index)
 {
-	LLWearable *wearable = getWearable(type, index);
+	LLViewerWearable *wearable = getWearable(type, index);
 	if (wearable)
 	{
 		mWearableDatas[type].erase(mWearableDatas[type].begin() + index);
@@ -825,7 +825,7 @@ void LLAgentWearables::popWearable(const LLWearableType::EType type, U32 index)
 	}
 }
 
-U32	LLAgentWearables::getWearableIndex(const LLWearable *wearable) const
+U32	LLAgentWearables::getWearableIndex(const LLViewerWearable *wearable) const
 {
 	if (wearable == NULL)
 	{
@@ -851,7 +851,7 @@ U32	LLAgentWearables::getWearableIndex(const LLWearable *wearable) const
 	return MAX_CLOTHING_PER_TYPE;
 }
 
-const LLWearable* LLAgentWearables::getWearable(const LLWearableType::EType type, U32 index) const
+const LLViewerWearable* LLAgentWearables::getWearable(const LLWearableType::EType type, U32 index) const
 {
 	wearableentry_map_t::const_iterator wearable_iter = mWearableDatas.find(type);
 	if (wearable_iter == mWearableDatas.end())
@@ -869,7 +869,7 @@ const LLWearable* LLAgentWearables::getWearable(const LLWearableType::EType type
 	}
 }
 
-LLWearable* LLAgentWearables::getTopWearable(const LLWearableType::EType type)
+LLViewerWearable* LLAgentWearables::getTopWearable(const LLWearableType::EType type)
 {
 	U32 count = getWearableCount(type);
 	if ( count == 0)
@@ -880,7 +880,7 @@ LLWearable* LLAgentWearables::getTopWearable(const LLWearableType::EType type)
 	return getWearable(type, count-1);
 }
 
-LLWearable* LLAgentWearables::getBottomWearable(const LLWearableType::EType type)
+LLViewerWearable* LLAgentWearables::getBottomWearable(const LLWearableType::EType type)
 {
 	if (getWearableCount(type) == 0)
 	{
@@ -920,7 +920,7 @@ U32 LLAgentWearables::itemUpdatePendingCount() const
 
 const LLUUID LLAgentWearables::getWearableItemID(LLWearableType::EType type, U32 index) const
 {
-	const LLWearable *wearable = getWearable(type,index);
+	const LLViewerWearable *wearable = getWearable(type,index);
 	if (wearable)
 		return wearable->getItemID();
 	else
@@ -929,7 +929,7 @@ const LLUUID LLAgentWearables::getWearableItemID(LLWearableType::EType type, U32
 
 const LLUUID LLAgentWearables::getWearableAssetID(LLWearableType::EType type, U32 index) const
 {
-	const LLWearable *wearable = getWearable(type,index);
+	const LLViewerWearable *wearable = getWearable(type,index);
 	if (wearable)
 		return wearable->getAssetID();
 	else
@@ -1012,7 +1012,7 @@ void LLAgentWearables::processAgentInitialWearablesUpdate(LLMessageSystem* mesgs
 			gMessageSystem->getUUIDFast(_PREHASH_WearableData, _PREHASH_AssetID, asset_id, i);
 			if (asset_id.isNull())
 			{
-				LLWearable::removeFromAvatar(type, FALSE);
+				LLViewerWearable::removeFromAvatar(type, FALSE);
 			}
 			else
 			{
@@ -1058,7 +1058,7 @@ void LLAgentWearables::recoverMissingWearable(const LLWearableType::EType type,
 	// Try to recover by replacing missing wearable with a new one.
 	LLNotificationsUtil::add("ReplacedMissingWearable");
 	lldebugs << "Wearable " << LLWearableType::getTypeLabel(type) << " could not be downloaded.  Replaced inventory item with default wearable." << llendl;
-	LLWearable* new_wearable = LLWearableList::instance().createNewWearable(type);
+	LLViewerWearable* new_wearable = LLWearableList::instance().createNewWearable(type);
 
 	setWearable(type,index,new_wearable);
 	//new_wearable->writeToAvatar(TRUE);
@@ -1095,7 +1095,7 @@ void LLAgentWearables::recoverMissingWearableDone()
 
 void LLAgentWearables::addLocalTextureObject(const LLWearableType::EType wearable_type, const LLVOAvatarDefines::ETextureIndex texture_type, U32 wearable_index)
 {
-	LLWearable* wearable = getWearable((LLWearableType::EType)wearable_type, wearable_index);
+	LLViewerWearable* wearable = getWearable((LLWearableType::EType)wearable_type, wearable_index);
 	if (!wearable)
 	{
 		llerrs << "Tried to add local texture object to invalid wearable with type " << wearable_type << " and index " << wearable_index << llendl;
@@ -1128,7 +1128,7 @@ class OnWearableItemCreatedCB: public LLInventoryCallback
 												mItemsToLink,
 												link_waiter);
 	}
-	void addPendingWearable(LLWearable *wearable)
+	void addPendingWearable(LLViewerWearable *wearable)
 	{
 		if (!wearable)
 		{
@@ -1163,7 +1163,7 @@ class OnWearableItemCreatedCB: public LLInventoryCallback
 			LLWearableType::EType type = item->getWearableType();
 			if (type < LLWearableType::WT_COUNT)
 			{
-				LLWearable *wearable = mWearablesAwaitingItems[type];
+				LLViewerWearable *wearable = mWearablesAwaitingItems[type];
 				if (wearable)
 					wearable->setItemID(inv_item);
 			}
@@ -1176,7 +1176,7 @@ class OnWearableItemCreatedCB: public LLInventoryCallback
 	
 private:
 	LLInventoryModel::item_array_t mItemsToLink;
-	std::vector<LLWearable*> mWearablesAwaitingItems;
+	std::vector<LLViewerWearable*> mWearablesAwaitingItems;
 };
 
 void LLAgentWearables::createStandardWearables()
@@ -1208,7 +1208,7 @@ void LLAgentWearables::createStandardWearables()
 		if (create[i])
 		{
 			llassert(getWearableCount((LLWearableType::EType)i) == 0);
-			LLWearable* wearable = LLWearableList::instance().createNewWearable((LLWearableType::EType)i);
+			LLViewerWearable* wearable = LLWearableList::instance().createNewWearable((LLWearableType::EType)i);
 			((OnWearableItemCreatedCB*)(&(*cb)))->addPendingWearable(wearable);
 			// no need to update here...
 			LLUUID category_id = LLUUID::null;
@@ -1267,7 +1267,7 @@ void LLAgentWearables::makeNewOutfitDone(S32 type, U32 index)
 
 
 void LLAgentWearables::addWearableToAgentInventory(LLPointer<LLInventoryCallback> cb,
-												   LLWearable* wearable,
+												   LLViewerWearable* wearable,
 												   const LLUUID& category_id,
 												   BOOL notify)
 {
@@ -1305,7 +1305,7 @@ void LLAgentWearables::removeWearable(const LLWearableType::EType type, bool do_
 	}
 	else
 	{
-		LLWearable* old_wearable = getWearable(type,index);
+		LLViewerWearable* old_wearable = getWearable(type,index);
 		
 		if (old_wearable)
 		{
@@ -1363,7 +1363,7 @@ void LLAgentWearables::removeWearableFinal(const LLWearableType::EType type, boo
 		S32 max_entry = mWearableDatas[type].size()-1;
 		for (S32 i=max_entry; i>=0; i--)
 		{
-			LLWearable* old_wearable = getWearable(type,i);
+			LLViewerWearable* old_wearable = getWearable(type,i);
 			//queryWearableCache(); // moved below
 			if (old_wearable)
 			{
@@ -1375,7 +1375,7 @@ void LLAgentWearables::removeWearableFinal(const LLWearableType::EType type, boo
 	}
 	else
 	{
-		LLWearable* old_wearable = getWearable(type, index);
+		LLViewerWearable* old_wearable = getWearable(type, index);
 		//queryWearableCache(); // moved below
 
 		if (old_wearable)
@@ -1394,7 +1394,7 @@ void LLAgentWearables::removeWearableFinal(const LLWearableType::EType type, boo
 
 // Assumes existing wearables are not dirty.
 void LLAgentWearables::setWearableOutfit(const LLInventoryItem::item_array_t& items,
-										 const LLDynamicArray< LLWearable* >& wearables,
+										 const LLDynamicArray< LLViewerWearable* >& wearables,
 										 BOOL remove)
 {
 	llinfos << "setWearableOutfit() start" << llendl;
@@ -1419,7 +1419,7 @@ void LLAgentWearables::setWearableOutfit(const LLInventoryItem::item_array_t& it
 	S32 i;
 	for (i = 0; i < count; i++)
 	{
-		LLWearable* new_wearable = wearables[i];
+		LLViewerWearable* new_wearable = wearables[i];
 		LLPointer<LLInventoryItem> new_item = items[i];
 
 		llassert(new_wearable);
@@ -1476,7 +1476,7 @@ void LLAgentWearables::setWearableOutfit(const LLInventoryItem::item_array_t& it
 
 
 // User has picked "wear on avatar" from a menu.
-void LLAgentWearables::setWearableItem(LLInventoryItem* new_item, LLWearable* new_wearable, bool do_append)
+void LLAgentWearables::setWearableItem(LLInventoryItem* new_item, LLViewerWearable* new_wearable, bool do_append)
 {
 	//LLAgentDumper dumper("setWearableItem");
 	if (isWearingItem(new_item->getUUID()))
@@ -1491,7 +1491,7 @@ void LLAgentWearables::setWearableItem(LLInventoryItem* new_item, LLWearable* ne
 	{
 		// Remove old wearable, if any
 		// MULTI_WEARABLE: hardwired to 0
-		LLWearable* old_wearable = getWearable(type,0);
+		LLViewerWearable* old_wearable = getWearable(type,0);
 		if (old_wearable)
 		{
 			const LLUUID& old_item_id = old_wearable->getItemID();
@@ -1517,7 +1517,7 @@ void LLAgentWearables::setWearableItem(LLInventoryItem* new_item, LLWearable* ne
 }
 
 // static 
-bool LLAgentWearables::onSetWearableDialog(const LLSD& notification, const LLSD& response, LLWearable* wearable)
+bool LLAgentWearables::onSetWearableDialog(const LLSD& notification, const LLSD& response, LLViewerWearable* wearable)
 {
 	S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
 	LLInventoryItem* new_item = gInventory.getItem(notification["payload"]["item_id"].asUUID());
@@ -1553,7 +1553,7 @@ bool LLAgentWearables::onSetWearableDialog(const LLSD& notification, const LLSD&
 
 // Called from setWearableItem() and onSetWearableDialog() to actually set the wearable.
 // MULTI_WEARABLE: unify code after null objects are gone.
-void LLAgentWearables::setWearableFinal(LLInventoryItem* new_item, LLWearable* new_wearable, bool do_append)
+void LLAgentWearables::setWearableFinal(LLInventoryItem* new_item, LLViewerWearable* new_wearable, bool do_append)
 {
 	const LLWearableType::EType type = new_wearable->getType();
 
@@ -1570,7 +1570,7 @@ void LLAgentWearables::setWearableFinal(LLInventoryItem* new_item, LLWearable* n
 		// Replace the old wearable with a new one.
 		llassert(new_item->getAssetUUID() == new_wearable->getAssetID());
 
-		LLWearable *old_wearable = getWearable(type,0);
+		LLViewerWearable *old_wearable = getWearable(type,0);
 		LLUUID old_item_id;
 		if (old_wearable)
 		{
@@ -1666,7 +1666,7 @@ LLUUID LLAgentWearables::computeBakedTextureHash(LLVOAvatarDefines::EBakedTextur
 		const U32 num_wearables = getWearableCount(baked_type);
 		for (U32 index = 0; index < num_wearables; ++index)
 		{
-			const LLWearable* wearable = getWearable(baked_type,index);
+			const LLViewerWearable* wearable = getWearable(baked_type,index);
 			if (wearable)
 			{
 				LLUUID asset_id = wearable->getAssetID();
@@ -1902,11 +1902,11 @@ void LLAgentWearables::checkWearablesLoaded() const
 // (depending on closer_to_body parameter).
 bool LLAgentWearables::canMoveWearable(const LLUUID& item_id, bool closer_to_body)
 {
-	const LLWearable* wearable = getWearableFromItemID(item_id);
+	const LLViewerWearable* wearable = getWearableFromItemID(item_id);
 	if (!wearable) return false;
 
 	LLWearableType::EType wtype = wearable->getType();
-	const LLWearable* marginal_wearable = closer_to_body ? getBottomWearable(wtype) : getTopWearable(wtype);
+	const LLViewerWearable* marginal_wearable = closer_to_body ? getBottomWearable(wtype) : getTopWearable(wtype);
 	if (!marginal_wearable) return false;
 
 	return wearable != marginal_wearable;
@@ -1928,7 +1928,7 @@ void LLAgentWearables::updateWearablesLoaded()
 	}
 }
 
-bool LLAgentWearables::canWearableBeRemoved(const LLWearable* wearable) const
+bool LLAgentWearables::canWearableBeRemoved(const LLViewerWearable* wearable) const
 {
 	if (!wearable) return false;
 	
@@ -1943,7 +1943,7 @@ void LLAgentWearables::animateAllWearableParams(F32 delta, BOOL upload_bake)
 	{
 		for (S32 count = 0; count < (S32)getWearableCount((LLWearableType::EType)type); ++count)
 		{
-			LLWearable *wearable = getWearable((LLWearableType::EType)type,count);
+			LLViewerWearable *wearable = getWearable((LLWearableType::EType)type,count);
 			llassert(wearable);
 			if (wearable)
 			{
@@ -1972,7 +1972,7 @@ bool LLAgentWearables::moveWearable(const LLViewerInventoryItem* item, bool clos
 
 	for (U32 i = 0; i < wearable_vec.size(); ++i)
 	{
-		LLWearable* wearable = wearable_vec[i];
+		LLViewerWearable* wearable = wearable_vec[i];
 		if (!wearable) continue;
 		if (wearable->getAssetID() != asset_id) continue;
 		
@@ -1991,7 +1991,7 @@ void LLAgentWearables::createWearable(LLWearableType::EType type, bool wear, con
 {
 	if (type == LLWearableType::WT_INVALID || type == LLWearableType::WT_NONE) return;
 
-	LLWearable* wearable = LLWearableList::instance().createNewWearable(type);
+	LLViewerWearable* wearable = LLWearableList::instance().createNewWearable(type);
 	LLAssetType::EType asset_type = wearable->getAssetType();
 	LLInventoryType::EType inv_type = LLInventoryType::IT_WEARABLE;
 	LLPointer<LLInventoryCallback> cb = wear ? new LLWearAndEditCallback : NULL;
@@ -2024,7 +2024,7 @@ void LLAgentWearables::editWearable(const LLUUID& item_id)
 		return;
 	}
 
-	LLWearable* wearable = gAgentWearables.getWearableFromItemID(item_id);
+	LLViewerWearable* wearable = gAgentWearables.getWearableFromItemID(item_id);
 	if (!wearable)
 	{
 		llwarns << "Cannot get wearable" << llendl;
diff --git a/indra/newview/llagentwearables.h b/indra/newview/llagentwearables.h
index 5932be21c63..3df552544ba 100755
--- a/indra/newview/llagentwearables.h
+++ b/indra/newview/llagentwearables.h
@@ -40,10 +40,9 @@
 
 class LLInventoryItem;
 class LLVOAvatarSelf;
-class LLWearable;
+class LLViewerWearable;
 class LLInitialWearablesFetch;
 class LLViewerObject;
-class LLTexLayerTemplate;
 
 class LLAgentWearables : public LLInitClass<LLAgentWearables>
 {
@@ -82,7 +81,7 @@ class LLAgentWearables : public LLInitClass<LLAgentWearables>
 	bool			canMoveWearable(const LLUUID& item_id, bool closer_to_body);
 	
 	// Note: False for shape, skin, eyes, and hair, unless you have MORE than 1.
-	bool			canWearableBeRemoved(const LLWearable* wearable) const;
+	bool			canWearableBeRemoved(const LLViewerWearable* wearable) const;
 
 	void			animateAllWearableParams(F32 delta, BOOL upload_bake);
 
@@ -92,15 +91,15 @@ class LLAgentWearables : public LLInitClass<LLAgentWearables>
 public:
 	const LLUUID		getWearableItemID(LLWearableType::EType type, U32 index /*= 0*/) const;
 	const LLUUID		getWearableAssetID(LLWearableType::EType type, U32 index /*= 0*/) const;
-	const LLWearable*	getWearableFromItemID(const LLUUID& item_id) const;
-	LLWearable*	getWearableFromItemID(const LLUUID& item_id);
-	LLWearable*	getWearableFromAssetID(const LLUUID& asset_id);
+	const LLViewerWearable*	getWearableFromItemID(const LLUUID& item_id) const;
+	LLViewerWearable*	getWearableFromItemID(const LLUUID& item_id);
+	LLViewerWearable*	getWearableFromAssetID(const LLUUID& asset_id);
 	LLInventoryItem*	getWearableInventoryItem(LLWearableType::EType type, U32 index /*= 0*/);
 	static BOOL			selfHasWearable(LLWearableType::EType type);
-	LLWearable*			getWearable(const LLWearableType::EType type, U32 index /*= 0*/); 
-	const LLWearable* 	getWearable(const LLWearableType::EType type, U32 index /*= 0*/) const;
-	LLWearable*		getTopWearable(const LLWearableType::EType type);
-	LLWearable*		getBottomWearable(const LLWearableType::EType type);
+	LLViewerWearable*			getWearable(const LLWearableType::EType type, U32 index /*= 0*/); 
+	const LLViewerWearable* 	getWearable(const LLWearableType::EType type, U32 index /*= 0*/) const;
+	LLViewerWearable*		getTopWearable(const LLWearableType::EType type);
+	LLViewerWearable*		getBottomWearable(const LLWearableType::EType type);
 	U32				getWearableCount(const LLWearableType::EType type) const;
 	U32				getWearableCount(const U32 tex_index) const;
 
@@ -113,31 +112,31 @@ class LLAgentWearables : public LLInitClass<LLAgentWearables>
 
 private:
 	// Low-level data structure setter - public access is via setWearableItem, etc.
-	void 			setWearable(const LLWearableType::EType type, U32 index, LLWearable *wearable);
-	U32 			pushWearable(const LLWearableType::EType type, LLWearable *wearable);
-	void			wearableUpdated(LLWearable *wearable);
-	void 			popWearable(LLWearable *wearable);
+	void 			setWearable(const LLWearableType::EType type, U32 index, LLViewerWearable *wearable);
+	U32 			pushWearable(const LLWearableType::EType type, LLViewerWearable *wearable);
+	void			wearableUpdated(LLViewerWearable *wearable);
+	void 			popWearable(LLViewerWearable *wearable);
 	void			popWearable(const LLWearableType::EType type, U32 index);
 	
 public:
-	void			setWearableItem(LLInventoryItem* new_item, LLWearable* wearable, bool do_append = false);
-	void			setWearableOutfit(const LLInventoryItem::item_array_t& items, const LLDynamicArray< LLWearable* >& wearables, BOOL remove);
+	void			setWearableItem(LLInventoryItem* new_item, LLViewerWearable* wearable, bool do_append = false);
+	void			setWearableOutfit(const LLInventoryItem::item_array_t& items, const LLDynamicArray< LLViewerWearable* >& wearables, BOOL remove);
 	void			setWearableName(const LLUUID& item_id, const std::string& new_name);
 	void			addLocalTextureObject(const LLWearableType::EType wearable_type, const LLVOAvatarDefines::ETextureIndex texture_type, U32 wearable_index);
-	U32				getWearableIndex(const LLWearable *wearable) const;
+	U32				getWearableIndex(const LLViewerWearable *wearable) const;
 
 protected:
-	void			setWearableFinal(LLInventoryItem* new_item, LLWearable* new_wearable, bool do_append = false);
-	static bool		onSetWearableDialog(const LLSD& notification, const LLSD& response, LLWearable* wearable);
+	void			setWearableFinal(LLInventoryItem* new_item, LLViewerWearable* new_wearable, bool do_append = false);
+	static bool		onSetWearableDialog(const LLSD& notification, const LLSD& response, LLViewerWearable* wearable);
 
 	void			addWearableToAgentInventory(LLPointer<LLInventoryCallback> cb,
-												LLWearable* wearable, 
+												LLViewerWearable* wearable, 
 												const LLUUID& category_id = LLUUID::null,
 												BOOL notify = TRUE);
 	void 			addWearabletoAgentInventoryDone(const LLWearableType::EType type,
 													const U32 index,
 													const LLUUID& item_id,
-													LLWearable* wearable);
+													LLViewerWearable* wearable);
 	void			recoverMissingWearable(const LLWearableType::EType type, U32 index /*= 0*/);
 	void			recoverMissingWearableDone();
 
@@ -180,7 +179,7 @@ class LLAgentWearables : public LLInitClass<LLAgentWearables>
 	void			sendAgentWearablesRequest();
 	void			queryWearableCache();
 	void 			updateServer();
-	static void		onInitialWearableAssetArrived(LLWearable* wearable, void* userdata);
+	static void		onInitialWearableAssetArrived(LLViewerWearable* wearable, void* userdata);
 
 	//--------------------------------------------------------------------
 	// Outfits
@@ -245,7 +244,7 @@ class LLAgentWearables : public LLInitClass<LLAgentWearables>
 	// Member variables
 	//--------------------------------------------------------------------
 private:
-	typedef std::vector<LLWearable*> wearableentry_vec_t; // all wearables of a certain type (EG all shirts)
+	typedef std::vector<LLViewerWearable*> wearableentry_vec_t; // all wearables of a certain type (EG all shirts)
 	typedef std::map<LLWearableType::EType, wearableentry_vec_t> wearableentry_map_t;	// wearable "categories" arranged by wearable type
 	wearableentry_map_t mWearableDatas;
 
@@ -289,13 +288,13 @@ class LLAgentWearables : public LLInitClass<LLAgentWearables>
 		addWearableToAgentInventoryCallback(LLPointer<LLRefCount> cb,
 											LLWearableType::EType type,
 											U32 index,
-											LLWearable* wearable,
+											LLViewerWearable* wearable,
 											U32 todo = CALL_NONE);
 		virtual void fire(const LLUUID& inv_item);
 	private:
 		LLWearableType::EType mType;
 		U32 mIndex;
-		LLWearable* mWearable;
+		LLViewerWearable* mWearable;
 		U32 mTodo;
 		LLPointer<LLRefCount> mCB;
 	};
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 3e02f98933f..58a0b0fa5b9 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -277,7 +277,7 @@ struct LLFoundData
 	std::string mName;
 	LLAssetType::EType mAssetType;
 	LLWearableType::EType mWearableType;
-	LLWearable* mWearable;
+	LLViewerWearable* mWearable;
 	bool mIsReplacement;
 };
 
@@ -301,7 +301,7 @@ class LLWearableHoldingPattern
 	void recoverMissingWearable(LLWearableType::EType type);
 	void clearCOFLinksForMissingWearables();
 	
-	void onWearableAssetFetch(LLWearable *wearable);
+	void onWearableAssetFetch(LLViewerWearable *wearable);
 	void onAllComplete();
 
 	typedef std::list<LLFoundData> found_list_t;
@@ -327,7 +327,7 @@ class LLWearableHoldingPattern
 	typedef std::set<LLWearableHoldingPattern*> type_set_hp;
 	static type_set_hp sActiveHoldingPatterns;
 	bool mIsMostRecent;
-	std::set<LLWearable*> mLateArrivals;
+	std::set<LLViewerWearable*> mLateArrivals;
 	bool mIsAllComplete;
 };
 
@@ -561,7 +561,7 @@ bool LLWearableHoldingPattern::pollFetchCompletion()
 class RecoveredItemLinkCB: public LLInventoryCallback
 {
 public:
-	RecoveredItemLinkCB(LLWearableType::EType type, LLWearable *wearable, LLWearableHoldingPattern* holder):
+	RecoveredItemLinkCB(LLWearableType::EType type, LLViewerWearable *wearable, LLWearableHoldingPattern* holder):
 		mHolder(holder),
 		mWearable(wearable),
 		mType(type)
@@ -609,14 +609,14 @@ class RecoveredItemLinkCB: public LLInventoryCallback
 	}
 private:
 	LLWearableHoldingPattern* mHolder;
-	LLWearable *mWearable;
+	LLViewerWearable *mWearable;
 	LLWearableType::EType mType;
 };
 
 class RecoveredItemCB: public LLInventoryCallback
 {
 public:
-	RecoveredItemCB(LLWearableType::EType type, LLWearable *wearable, LLWearableHoldingPattern* holder):
+	RecoveredItemCB(LLWearableType::EType type, LLViewerWearable *wearable, LLWearableHoldingPattern* holder):
 		mHolder(holder),
 		mWearable(wearable),
 		mType(type)
@@ -649,7 +649,7 @@ class RecoveredItemCB: public LLInventoryCallback
 	}
 private:
 	LLWearableHoldingPattern* mHolder;
-	LLWearable *mWearable;
+	LLViewerWearable *mWearable;
 	LLWearableType::EType mType;
 };
 
@@ -665,7 +665,7 @@ void LLWearableHoldingPattern::recoverMissingWearable(LLWearableType::EType type
 	LLNotificationsUtil::add("ReplacedMissingWearable");
 	lldebugs << "Wearable " << LLWearableType::getTypeLabel(type)
 			 << " could not be downloaded.  Replaced inventory item with default wearable." << llendl;
-	LLWearable* wearable = LLWearableList::instance().createNewWearable(type);
+	LLViewerWearable* wearable = LLWearableList::instance().createNewWearable(type);
 
 	// Add a new one in the lost and found folder.
 	const LLUUID lost_and_found_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_LOST_AND_FOUND);
@@ -772,11 +772,11 @@ void LLWearableHoldingPattern::handleLateArrivals()
 		 iter != getFoundList().end(); ++iter)
 	{
 		LLFoundData& data = *iter;
-		for (std::set<LLWearable*>::iterator wear_it = mLateArrivals.begin();
+		for (std::set<LLViewerWearable*>::iterator wear_it = mLateArrivals.begin();
 			 wear_it != mLateArrivals.end();
 			 ++wear_it)
 		{
-			LLWearable *wearable = *wear_it;
+			LLViewerWearable *wearable = *wear_it;
 
 			if(wearable->getAssetID() == data.mAssetID)
 			{
@@ -836,7 +836,7 @@ void LLWearableHoldingPattern::resetTime(F32 timeout)
 	mWaitTime.setTimerExpirySec(timeout);
 }
 
-void LLWearableHoldingPattern::onWearableAssetFetch(LLWearable *wearable)
+void LLWearableHoldingPattern::onWearableAssetFetch(LLViewerWearable *wearable)
 {
 	if (!isMostRecent())
 	{
@@ -887,7 +887,7 @@ void LLWearableHoldingPattern::onWearableAssetFetch(LLWearable *wearable)
 	}
 }
 
-static void onWearableAssetFetch(LLWearable* wearable, void* data)
+static void onWearableAssetFetch(LLViewerWearable* wearable, void* data)
 {
 	LLWearableHoldingPattern* holder = (LLWearableHoldingPattern*)data;
 	holder->onWearableAssetFetch(wearable);
@@ -1588,7 +1588,7 @@ void LLAppearanceMgr::updateAgentWearables(LLWearableHoldingPattern* holder, boo
 {
 	lldebugs << "updateAgentWearables()" << llendl;
 	LLInventoryItem::item_array_t items;
-	LLDynamicArray< LLWearable* > wearables;
+	LLDynamicArray< LLViewerWearable* > wearables;
 
 	// For each wearable type, find the wearables of that type.
 	for( S32 i = 0; i < LLWearableType::WT_COUNT; i++ )
@@ -1597,7 +1597,7 @@ void LLAppearanceMgr::updateAgentWearables(LLWearableHoldingPattern* holder, boo
 			 iter != holder->getFoundList().end(); ++iter)
 		{
 			LLFoundData& data = *iter;
-			LLWearable* wearable = data.mWearable;
+			LLViewerWearable* wearable = data.mWearable;
 			if( wearable && ((S32)wearable->getType() == i) )
 			{
 				LLViewerInventoryItem* item = (LLViewerInventoryItem*)gInventory.getItem(data.mItemID);
diff --git a/indra/newview/llappearancemgr.h b/indra/newview/llappearancemgr.h
index 742833211ae..370aec8a8f0 100755
--- a/indra/newview/llappearancemgr.h
+++ b/indra/newview/llappearancemgr.h
@@ -35,7 +35,6 @@
 #include "llinventoryobserver.h"
 #include "llviewerinventory.h"
 
-class LLWearable;
 class LLWearableHoldingPattern;
 class LLInventoryCallback;
 class LLOutfitUnLockTimer;
diff --git a/indra/newview/llassetuploadresponders.cpp b/indra/newview/llassetuploadresponders.cpp
index 65bfc990d1e..35e44d73d47 100644
--- a/indra/newview/llassetuploadresponders.cpp
+++ b/indra/newview/llassetuploadresponders.cpp
@@ -48,8 +48,8 @@
 #include "llviewercontrol.h"
 #include "llviewerobjectlist.h"
 #include "llviewermenufile.h"
+#include "llviewertexlayer.h"
 #include "llviewerwindow.h"
-#include "lltexlayer.h"
 #include "lltrans.h"
 
 // library includes
diff --git a/indra/newview/llavatariconctrl.cpp b/indra/newview/llavatariconctrl.cpp
index b539ac38ed8..d2acd32713c 100755
--- a/indra/newview/llavatariconctrl.cpp
+++ b/indra/newview/llavatariconctrl.cpp
@@ -37,6 +37,8 @@
 #include "lluictrlfactory.h"
 #include "llagentdata.h"
 #include "llimfloater.h"
+#include "llviewertexture.h"
+#include "llvoavatardefines.h"
 
 // library includes
 #include "llavatarnamecache.h"
diff --git a/indra/newview/lldriverparam.cpp b/indra/newview/lldriverparam.cpp
index 885cae17370..0ae9acd1afd 100644
--- a/indra/newview/lldriverparam.cpp
+++ b/indra/newview/lldriverparam.cpp
@@ -32,7 +32,7 @@
 #include "llvoavatar.h"
 #include "llvoavatarself.h"
 #include "llagent.h"
-#include "llwearable.h"
+#include "llviewerwearable.h"
 #include "llagentwearables.h"
 
 //-----------------------------------------------------------------------------
@@ -623,10 +623,19 @@ F32 LLDriverParam::getDrivenWeight(const LLDrivenEntry* driven, F32 input_weight
 
 void LLDriverParam::setDrivenWeight(LLDrivenEntry *driven, F32 driven_weight, bool upload_bake)
 {
+	bool use_self = false;
 	if(isAgentAvatarValid() &&
-	   mWearablep && 
-	   driven->mParam->getCrossWearable() &&
-	   mWearablep->isOnTop())
+		mWearablep && 
+		driven->mParam->getCrossWearable())
+	{
+		LLViewerWearable* wearable = dynamic_cast<LLViewerWearable*> (mWearablep);
+		if (!wearable->isOnTop())
+		{
+			use_self = false;
+		}
+	}
+
+	if (use_self)
 	{
 		// call setWeight through LLVOAvatarSelf so other wearables can be updated with the correct values
 		gAgentAvatarp->setVisualParamWeight( (LLVisualParam*)driven->mParam, driven_weight, upload_bake );
diff --git a/indra/newview/llfloaterauction.cpp b/indra/newview/llfloaterauction.cpp
index 2939d31087e..3c40e2d4bcc 100644
--- a/indra/newview/llfloaterauction.cpp
+++ b/indra/newview/llfloaterauction.cpp
@@ -38,6 +38,7 @@
 #include "message.h"
 
 #include "llagent.h"
+#include "llassetstorage.h"
 #include "llcombobox.h"
 #include "llestateinfomodel.h"
 #include "llmimetypes.h"
diff --git a/indra/newview/llfloateravatartextures.cpp b/indra/newview/llfloateravatartextures.cpp
index 4e10b4fc2c0..b26b302ea6e 100644
--- a/indra/newview/llfloateravatartextures.cpp
+++ b/indra/newview/llfloateravatartextures.cpp
@@ -32,6 +32,7 @@
 
 #include "llagent.h"
 #include "llagentwearables.h"
+#include "llviewerwearable.h"
 #include "lltexturectrl.h"
 #include "lluictrlfactory.h"
 #include "llviewerobjectlist.h"
@@ -81,7 +82,7 @@ static void update_texture_ctrl(LLVOAvatar* avatarp,
 		if (avatarp->isSelf())
 		{
 			const LLWearableType::EType wearable_type = tex_entry->mWearableType;
-			LLWearable *wearable = gAgentWearables.getWearable(wearable_type, 0);
+			LLViewerWearable *wearable = gAgentWearables.getWearable(wearable_type, 0);
 			if (wearable)
 			{
 				LLLocalTextureObject *lto = wearable->getLocalTextureObject(te);
@@ -173,7 +174,7 @@ void LLFloaterAvatarTextures::onClickDump(void* data)
 				LLWearableType::EType wearable_type = LLVOAvatarDictionary::getInstance()->getTEWearableType((ETextureIndex)i);
 				if (avatarp->isSelf())
 				{
-					LLWearable *wearable = gAgentWearables.getWearable(wearable_type, 0);
+					LLViewerWearable *wearable = gAgentWearables.getWearable(wearable_type, 0);
 					if (wearable)
 					{
 						LLLocalTextureObject *lto = wearable->getLocalTextureObject(i);
diff --git a/indra/newview/llgroupiconctrl.cpp b/indra/newview/llgroupiconctrl.cpp
index 2f9810775b8..97f72b020cd 100644
--- a/indra/newview/llgroupiconctrl.cpp
+++ b/indra/newview/llgroupiconctrl.cpp
@@ -29,6 +29,7 @@
 #include "llgroupiconctrl.h"
 
 #include "llagent.h"
+#include "llviewertexture.h"
 /*
 #include "llavatarconstants.h"
 #include "llcallingcard.h" // for LLAvatarTracker
diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp
index b819100b9bb..17e9b8026a8 100644
--- a/indra/newview/llinventorybridge.cpp
+++ b/indra/newview/llinventorybridge.cpp
@@ -5692,7 +5692,7 @@ void LLWearableBridge::wearAddOnAvatar()
 }
 
 // static
-void LLWearableBridge::onWearOnAvatarArrived( LLWearable* wearable, void* userdata )
+void LLWearableBridge::onWearOnAvatarArrived( LLViewerWearable* wearable, void* userdata )
 {
 	LLUUID* item_id = (LLUUID*) userdata;
 	if(wearable)
@@ -5718,7 +5718,7 @@ void LLWearableBridge::onWearOnAvatarArrived( LLWearable* wearable, void* userda
 
 // static
 // BAP remove the "add" code path once everything is fully COF-ified.
-void LLWearableBridge::onWearAddOnAvatarArrived( LLWearable* wearable, void* userdata )
+void LLWearableBridge::onWearAddOnAvatarArrived( LLViewerWearable* wearable, void* userdata )
 {
 	LLUUID* item_id = (LLUUID*) userdata;
 	if(wearable)
@@ -5799,7 +5799,7 @@ void LLWearableBridge::onRemoveFromAvatar(void* user_data)
 }
 
 // static
-void LLWearableBridge::onRemoveFromAvatarArrived(LLWearable* wearable,
+void LLWearableBridge::onRemoveFromAvatarArrived(LLViewerWearable* wearable,
 												 void* userdata)
 {
 	OnRemoveStruct *on_remove_struct = (OnRemoveStruct*) userdata;
diff --git a/indra/newview/llinventorybridge.h b/indra/newview/llinventorybridge.h
index dc9e88d54d8..067e4bdf3df 100644
--- a/indra/newview/llinventorybridge.h
+++ b/indra/newview/llinventorybridge.h
@@ -33,7 +33,7 @@
 #include "llinventorymodel.h"
 #include "llinventoryobserver.h"
 #include "llviewercontrol.h"
-#include "llwearable.h"
+#include "llviewerwearable.h"
 
 class LLInventoryFilter;
 class LLInventoryPanel;
@@ -486,10 +486,10 @@ class LLWearableBridge : public LLItemBridge
 
 	static void		onWearOnAvatar( void* userdata );	// Access to wearOnAvatar() from menu
 	static BOOL		canWearOnAvatar( void* userdata );
-	static void		onWearOnAvatarArrived( LLWearable* wearable, void* userdata );
+	static void		onWearOnAvatarArrived( LLViewerWearable* wearable, void* userdata );
 	void			wearOnAvatar();
 
-	static void		onWearAddOnAvatarArrived( LLWearable* wearable, void* userdata );
+	static void		onWearAddOnAvatarArrived( LLViewerWearable* wearable, void* userdata );
 	void			wearAddOnAvatar();
 
 	static BOOL		canEditOnAvatar( void* userdata );	// Access to editOnAvatar() from menu
@@ -498,7 +498,7 @@ class LLWearableBridge : public LLItemBridge
 
 	static BOOL		canRemoveFromAvatar( void* userdata );
 	static void		onRemoveFromAvatar( void* userdata );
-	static void		onRemoveFromAvatarArrived( LLWearable* wearable, 	void* userdata );
+	static void		onRemoveFromAvatarArrived( LLViewerWearable* wearable, 	void* userdata );
 	static void 	removeItemFromAvatar(LLViewerInventoryItem *item);
 	static void 	removeAllClothesFromAvatar();
 	void			removeFromAvatar();
diff --git a/indra/newview/lllocalbitmaps.cpp b/indra/newview/lllocalbitmaps.cpp
index 459e52c4f4e..097c7513861 100644
--- a/indra/newview/lllocalbitmaps.cpp
+++ b/indra/newview/lllocalbitmaps.cpp
@@ -55,7 +55,7 @@
 #include "llviewerobject.h"
 #include "llface.h"
 #include "llvoavatarself.h"
-#include "llwearable.h"
+#include "llviewerwearable.h"
 #include "llagentwearables.h"
 #include "lltexlayerparams.h"
 #include "llvovolume.h"
@@ -483,7 +483,7 @@ void LLLocalBitmap::updateUserLayers(LLUUID old_id, LLUUID new_id, LLWearableTyp
 	U32 count = gAgentWearables.getWearableCount(type);
 	for(U32 wearable_iter = 0; wearable_iter < count; wearable_iter++)
 	{
-		LLWearable* wearable = gAgentWearables.getWearable(type, wearable_iter);
+		LLViewerWearable* wearable = gAgentWearables.getWearable(type, wearable_iter);
 		if (wearable)
 		{
 			std::vector<LLLocalTextureObject*> texture_list = wearable->getLocalTextureListSeq();
diff --git a/indra/newview/lllocalbitmaps.h b/indra/newview/lllocalbitmaps.h
index 7a23c7ef6e3..df031de3cb3 100644
--- a/indra/newview/lllocalbitmaps.h
+++ b/indra/newview/lllocalbitmaps.h
@@ -33,6 +33,7 @@
 #include "llvoavatardefines.h"
 
 class LLScrollListCtrl;
+class LLViewerObject;
 
 class LLLocalBitmap
 {
diff --git a/indra/newview/llpanelclassified.cpp b/indra/newview/llpanelclassified.cpp
index 6889b98ab17..862e4be203a 100644
--- a/indra/newview/llpanelclassified.cpp
+++ b/indra/newview/llpanelclassified.cpp
@@ -55,6 +55,7 @@
 #include "lltrans.h"
 #include "llscrollcontainer.h"
 #include "llstatusbar.h"
+#include "llviewertexture.h"
 
 const S32 MINIMUM_PRICE_FOR_LISTING = 50;	// L$
 
diff --git a/indra/newview/llpaneleditwearable.cpp b/indra/newview/llpaneleditwearable.cpp
index d58d6d536c0..44b56afb1ad 100644
--- a/indra/newview/llpaneleditwearable.cpp
+++ b/indra/newview/llpaneleditwearable.cpp
@@ -28,7 +28,7 @@
 
 #include "llpaneleditwearable.h"
 #include "llpanel.h"
-#include "llwearable.h"
+#include "llviewerwearable.h"
 #include "lluictrl.h"
 #include "llscrollingpanellist.h"
 #include "llvisualparam.h"
@@ -865,7 +865,7 @@ void LLPanelEditWearable::setVisible(BOOL visible)
         LLPanel::setVisible(visible);
 }
 
-void LLPanelEditWearable::setWearable(LLWearable *wearable, BOOL disable_camera_switch)
+void LLPanelEditWearable::setWearable(LLViewerWearable *wearable, BOOL disable_camera_switch)
 {
         showWearable(mWearablePtr, FALSE, disable_camera_switch);
         mWearablePtr = wearable;
@@ -922,7 +922,7 @@ void LLPanelEditWearable::onCommitSexChange()
         }
 
         bool is_new_sex_male = (gSavedSettings.getU32("AvatarSex") ? SEX_MALE : SEX_FEMALE) == SEX_MALE;
-        LLWearable*     wearable = gAgentWearables.getWearable(type, index);
+        LLViewerWearable*     wearable = gAgentWearables.getWearable(type, index);
         if (wearable)
         {
                 wearable->setVisualParamWeight(param->getID(), is_new_sex_male, FALSE);
@@ -1069,7 +1069,7 @@ void LLPanelEditWearable::revertChanges()
         gAgentAvatarp->wearableUpdated(mWearablePtr->getType(), FALSE);
 }
 
-void LLPanelEditWearable::showWearable(LLWearable* wearable, BOOL show, BOOL disable_camera_switch)
+void LLPanelEditWearable::showWearable(LLViewerWearable* wearable, BOOL show, BOOL disable_camera_switch)
 {
         if (!wearable)
         {
@@ -1445,7 +1445,7 @@ void LLPanelEditWearable::buildParamList(LLScrollingPanelList *panel_list, value
                 {
                         LLPanel::Params p;
                         p.name("LLScrollingPanelParam");
-                        LLWearable *wearable = this->getWearable();
+                        LLViewerWearable *wearable = this->getWearable();
                         LLScrollingPanelParamBase *panel_param = NULL;
                         if (wearable && wearable->getType() == LLWearableType::WT_PHYSICS) // Hack to show a different panel for physics.  Should generalize this later.
                         {
diff --git a/indra/newview/llpaneleditwearable.h b/indra/newview/llpaneleditwearable.h
index 692a7ce90fa..85e43c8ebdd 100644
--- a/indra/newview/llpaneleditwearable.h
+++ b/indra/newview/llpaneleditwearable.h
@@ -35,7 +35,7 @@
 
 class LLAccordionCtrl;
 class LLCheckBoxCtrl;
-class LLWearable;
+class LLViewerWearable;
 class LLTextBox;
 class LLViewerInventoryItem;
 class LLViewerVisualParam;
@@ -58,8 +58,8 @@ class LLPanelEditWearable : public LLPanel
 	// changes camera angle to default for selected subpart
 	void				changeCamera(U8 subpart);
 
-	LLWearable* 		getWearable() { return mWearablePtr; }
-	void				setWearable(LLWearable *wearable, BOOL disable_camera_switch = FALSE);
+	LLViewerWearable*	getWearable() { return mWearablePtr; }
+	void				setWearable(LLViewerWearable *wearable, BOOL disable_camera_switch = FALSE);
 
 	void				saveChanges(bool force_save_as = false);
 	void				revertChanges();
@@ -80,7 +80,7 @@ class LLPanelEditWearable : public LLPanel
 private:
 	typedef std::map<F32, LLViewerVisualParam*> value_map_t;
 
-	void				showWearable(LLWearable* wearable, BOOL show, BOOL disable_camera_switch = FALSE);
+	void				showWearable(LLViewerWearable* wearable, BOOL show, BOOL disable_camera_switch = FALSE);
 	void				updateScrollingPanelUI();
 	LLPanel*			getPanel(LLWearableType::EType type);
 	void				getSortedParams(value_map_t &sorted_params, const std::string &edit_group);
@@ -115,7 +115,7 @@ class LLPanelEditWearable : public LLPanel
 	void setWearablePanelVisibilityChangeCallback(LLPanel* bodypart_panel);
 
 	// the pointer to the wearable we're editing. NULL means we're not editing a wearable.
-	LLWearable *mWearablePtr;
+	LLViewerWearable *mWearablePtr;
 	LLViewerInventoryItem* mWearableItem;
 
 	// these are constant no matter what wearable we're editing
diff --git a/indra/newview/llpostcard.cpp b/indra/newview/llpostcard.cpp
index 4f2d6da7e59..aebe636f599 100644
--- a/indra/newview/llpostcard.cpp
+++ b/indra/newview/llpostcard.cpp
@@ -35,6 +35,7 @@
 #include "message.h"
 
 #include "llagent.h"
+#include "llassetstorage.h"
 #include "llassetuploadresponders.h"
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/indra/newview/llsidepanelappearance.cpp b/indra/newview/llsidepanelappearance.cpp
index 92674445349..6a692209e97 100644
--- a/indra/newview/llsidepanelappearance.cpp
+++ b/indra/newview/llsidepanelappearance.cpp
@@ -47,7 +47,7 @@
 #include "llviewercontrol.h"
 #include "llviewerregion.h"
 #include "llvoavatarself.h"
-#include "llwearable.h"
+#include "llviewerwearable.h"
 
 static LLRegisterPanelClassWrapper<LLSidepanelAppearance> t_appearance("sidepanel_appearance");
 
@@ -198,7 +198,7 @@ void LLSidepanelAppearance::updateToVisibility(const LLSD &new_visibility)
 
 		if (is_outfit_edit_visible || is_wearable_edit_visible)
 		{
-			const LLWearable *wearable_ptr = mEditWearable->getWearable();
+			const LLViewerWearable *wearable_ptr = mEditWearable->getWearable();
 			if (!wearable_ptr)
 			{
 				llwarns << "Visibility change to invalid wearable" << llendl;
@@ -326,7 +326,7 @@ void LLSidepanelAppearance::showOutfitEditPanel()
 	toggleOutfitEditPanel(TRUE);
 }
 
-void LLSidepanelAppearance::showWearableEditPanel(LLWearable *wearable /* = NULL*/, BOOL disable_camera_switch)
+void LLSidepanelAppearance::showWearableEditPanel(LLViewerWearable *wearable /* = NULL*/, BOOL disable_camera_switch)
 {
 	toggleMyOutfitsPanel(FALSE);
 	toggleOutfitEditPanel(FALSE, TRUE); // don't switch out of edit appearance mode
@@ -379,7 +379,7 @@ void LLSidepanelAppearance::toggleOutfitEditPanel(BOOL visible, BOOL disable_cam
 	}
 }
 
-void LLSidepanelAppearance::toggleWearableEditPanel(BOOL visible, LLWearable *wearable, BOOL disable_camera_switch)
+void LLSidepanelAppearance::toggleWearableEditPanel(BOOL visible, LLViewerWearable *wearable, BOOL disable_camera_switch)
 {
 	if (!mEditWearable || mEditWearable->getVisible() == visible)
 	{
@@ -445,7 +445,7 @@ void LLSidepanelAppearance::refreshCurrentOutfitName(const std::string& name)
 }
 
 //static
-void LLSidepanelAppearance::editWearable(LLWearable *wearable, LLView *data, BOOL disable_camera_switch)
+void LLSidepanelAppearance::editWearable(LLViewerWearable *wearable, LLView *data, BOOL disable_camera_switch)
 {
 	LLFloaterSidePanelContainer::showPanel("appearance", LLSD());
 
diff --git a/indra/newview/llsidepanelappearance.h b/indra/newview/llsidepanelappearance.h
index 6dd35202665..32bbb8a7768 100644
--- a/indra/newview/llsidepanelappearance.h
+++ b/indra/newview/llsidepanelappearance.h
@@ -36,7 +36,7 @@
 class LLFilterEditor;
 class LLCurrentlyWornFetchObserver;
 class LLPanelEditWearable;
-class LLWearable;
+class LLViewerWearable;
 class LLPanelOutfitsInventory;
 
 class LLSidepanelAppearance : public LLPanel
@@ -51,7 +51,7 @@ class LLSidepanelAppearance : public LLPanel
 
 	void refreshCurrentOutfitName(const std::string& name = "");
 
-	static void editWearable(LLWearable *wearable, LLView *data, BOOL disable_camera_switch = FALSE);
+	static void editWearable(LLViewerWearable *wearable, LLView *data, BOOL disable_camera_switch = FALSE);
 
 	void fetchInventory();
 	void inventoryFetched();
@@ -59,7 +59,7 @@ class LLSidepanelAppearance : public LLPanel
 
 	void showOutfitsInventoryPanel();
 	void showOutfitEditPanel();
-	void showWearableEditPanel(LLWearable *wearable = NULL, BOOL disable_camera_switch = FALSE);
+	void showWearableEditPanel(LLViewerWearable *wearable = NULL, BOOL disable_camera_switch = FALSE);
 	void setWearablesLoading(bool val);
 	void showDefaultSubpart();
 	void updateScrollingPanelList();
@@ -74,7 +74,7 @@ class LLSidepanelAppearance : public LLPanel
 
 	void toggleMyOutfitsPanel(BOOL visible);
 	void toggleOutfitEditPanel(BOOL visible, BOOL disable_camera_switch = FALSE);
-	void toggleWearableEditPanel(BOOL visible, LLWearable* wearable = NULL, BOOL disable_camera_switch = FALSE);
+	void toggleWearableEditPanel(BOOL visible, LLViewerWearable* wearable = NULL, BOOL disable_camera_switch = FALSE);
 
 	LLFilterEditor*			mFilterEditor;
 	LLPanelOutfitsInventory* mPanelOutfitsInventory;
diff --git a/indra/newview/lltextureview.cpp b/indra/newview/lltextureview.cpp
index c60b4155a0c..4611107bc29 100755
--- a/indra/newview/lltextureview.cpp
+++ b/indra/newview/lltextureview.cpp
@@ -40,7 +40,7 @@
 #include "lltooltip.h"
 #include "llappviewer.h"
 #include "llselectmgr.h"
-#include "lltexlayer.h"
+#include "llviewertexlayer.h"
 #include "lltexturecache.h"
 #include "lltexturefetch.h"
 #include "llviewercontrol.h"
@@ -423,7 +423,7 @@ void LLAvatarTexBar::draw()
 		 ++baked_iter)
 	{
 		const LLVOAvatarDefines::EBakedTextureIndex baked_index = baked_iter->first;
-		const LLTexLayerSet *layerset = avatarp->debugGetLayerSet(baked_index);
+		const LLViewerTexLayerSet *layerset = avatarp->debugGetLayerSet(baked_index);
 		if (!layerset) continue;
 		const LLTexLayerSetBuffer *layerset_buffer = layerset->getComposite();
 		if (!layerset_buffer) continue;
diff --git a/indra/newview/llviewerjoint.h b/indra/newview/llviewerjoint.h
index 76e3833acbf..531c0f765cb 100644
--- a/indra/newview/llviewerjoint.h
+++ b/indra/newview/llviewerjoint.h
@@ -31,6 +31,7 @@
 // Header Files
 //-----------------------------------------------------------------------------
 #include "lljoint.h"
+#include "lljointpickname.h"
 
 class LLFace;
 class LLViewerJointMesh;
@@ -103,21 +104,8 @@ class LLViewerJoint :
 	F32 getLOD() { return mMinPixelArea; }
 	void setLOD( F32 pixelArea ) { mMinPixelArea = pixelArea; }
 	
-	// Sets the OpenGL selection stack name that is pushed and popped
-	// with this joint state.  The default value indicates that no name
-	// should be pushed/popped.
-	enum PickName
-	{
-		PN_DEFAULT = -1,
-		PN_0 = 0,
-		PN_1 = 1,
-		PN_2 = 2,
-		PN_3 = 3,
-		PN_4 = 4,
-		PN_5 = 5
-	};
-	void setPickName(PickName name) { mPickName = name; }
-	PickName getPickName() { return mPickName; }
+	void setPickName(LLJointPickName name) { mPickName = name; }
+	LLJointPickName getPickName() { return mPickName; }
 
 	virtual void updateFaceSizes(U32 &num_vertices, U32& num_indices, F32 pixel_area);
 	virtual void updateFaceData(LLFace *face, F32 pixel_area, BOOL damp_wind = FALSE, bool terse_update = false);
@@ -141,7 +129,7 @@ class LLViewerJoint :
 	BOOL		mValid;
 	U32			mComponents;
 	F32			mMinPixelArea;
-	PickName	mPickName;
+	LLJointPickName	mPickName;
 	BOOL		mVisible;
 	S32			mMeshID;
 };
diff --git a/indra/newview/llviewerjointmesh.cpp b/indra/newview/llviewerjointmesh.cpp
index 5d1aa870a31..79800c1df31 100755
--- a/indra/newview/llviewerjointmesh.cpp
+++ b/indra/newview/llviewerjointmesh.cpp
@@ -42,7 +42,7 @@
 #include "llface.h"
 #include "llgldbg.h"
 #include "llglheaders.h"
-#include "lltexlayer.h"
+#include "llviewertexlayer.h"
 #include "llviewercamera.h"
 #include "llviewercontrol.h"
 #include "llviewertexturelist.h"
@@ -248,7 +248,7 @@ void LLViewerJointMesh::setTexture( LLViewerTexture *texture )
 // LLViewerJointMesh::setLayerSet()
 // Sets the shape texture (takes precedence over normal texture)
 //--------------------------------------------------------------------
-void LLViewerJointMesh::setLayerSet( LLTexLayerSet* layer_set )
+void LLViewerJointMesh::setLayerSet( LLViewerTexLayerSet* layer_set )
 {
 	mLayerSet = layer_set;
 	
diff --git a/indra/newview/llviewerjointmesh.h b/indra/newview/llviewerjointmesh.h
index dd5dae1dc1e..ff6bed4f0f9 100755
--- a/indra/newview/llviewerjointmesh.h
+++ b/indra/newview/llviewerjointmesh.h
@@ -35,7 +35,7 @@
 class LLDrawable;
 class LLFace;
 class LLCharacter;
-class LLTexLayerSet;
+class LLViewerTexLayerSet;
 
 typedef enum e_avatar_render_pass
 {
@@ -67,7 +67,7 @@ class LLViewerJointMesh : public LLViewerJoint
 // 	LLColor4					mSpecular;		// specular color (always white for now)
 	F32							mShiny;			// shiny value
 	LLPointer<LLViewerTexture>	mTexture;		// ptr to a global texture
-	LLTexLayerSet*				mLayerSet;		// ptr to a layer set owned by the avatar
+	LLViewerTexLayerSet*		mLayerSet;		// ptr to a layer set owned by the avatar
 	U32 						mTestImageName;		// handle to a temporary texture for previewing uploads
 	LLPolyMesh*					mMesh;			// ptr to a global polymesh
 	BOOL						mCullBackFaces;	// true by default
@@ -109,7 +109,7 @@ class LLViewerJointMesh : public LLViewerJoint
 	void setTestTexture( U32 name ) { mTestImageName = name; }
 
 	// Sets layer set responsible for a dynamic shape texture (takes precedence over normal texture)
-	void setLayerSet( LLTexLayerSet* layer_set );
+	void setLayerSet( LLViewerTexLayerSet* layer_set );
 
 	// Gets the poly mesh
 	LLPolyMesh *getMesh();
diff --git a/indra/newview/llviewershadermgr.h b/indra/newview/llviewershadermgr.h
index d6dd645e8cc..e3d28f2f5c2 100644
--- a/indra/newview/llviewershadermgr.h
+++ b/indra/newview/llviewershadermgr.h
@@ -229,7 +229,6 @@ extern LLGLSLShader			gSplatTextureRectProgram;
 extern LLGLSLShader			gGlowCombineFXAAProgram;
 extern LLGLSLShader			gDebugProgram;
 extern LLGLSLShader			gClipProgram;
-extern LLGLSLShader			gAlphaMaskProgram;
 
 //output tex0[tc0] + tex1[tc1]
 extern LLGLSLShader			gTwoTextureAddProgram;
diff --git a/indra/newview/llviewerstats.cpp b/indra/newview/llviewerstats.cpp
index d1c6b7ea791..f049130f3a0 100755
--- a/indra/newview/llviewerstats.cpp
+++ b/indra/newview/llviewerstats.cpp
@@ -41,7 +41,6 @@
 #include "lltexturefetch.h" 
 #include "llviewerobjectlist.h" 
 #include "llviewertexturelist.h" 
-#include "lltexlayer.h"
 #include "lltexlayerparams.h"
 #include "llsurface.h"
 #include "llvlmanager.h"
@@ -55,6 +54,7 @@
 #include "llviewerregion.h"
 #include "llvoavatar.h"
 #include "llvoavatarself.h"
+#include "llviewertexlayer.h"
 #include "llviewerwindow.h"		// *TODO: remove, only used for width/height
 #include "llworld.h"
 #include "llfeaturemanager.h"
diff --git a/indra/newview/llviewertexlayer.cpp b/indra/newview/llviewertexlayer.cpp
new file mode 100644
index 00000000000..f805083aaa1
--- /dev/null
+++ b/indra/newview/llviewertexlayer.cpp
@@ -0,0 +1,791 @@
+/** 
+ * @file llviewertexlayer.cpp
+ * @brief Viewer texture layer. Used for avatars.
+ *
+ * $LicenseInfo:firstyear=2012&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+#include "llviewerprecompiledheaders.h"
+
+#include "llagent.h"
+#include "llassetuploadresponders.h"
+#include "llavatarappearance.h"
+#include "llglslshader.h"
+#include "llimagej2c.h"
+#include "llnotificationsutil.h"
+#include "llviewercontrol.h"
+#include "llviewerregion.h"
+#include "llviewertexlayer.h"
+#include "llvfile.h"
+#include "llvfs.h"
+#include "llvoavatarself.h"
+#include "pipeline.h"
+
+static const S32 BAKE_UPLOAD_ATTEMPTS = 7;
+static const F32 BAKE_UPLOAD_RETRY_DELAY = 2.f; // actual delay grows by power of 2 each attempt
+
+// runway consolidate
+extern std::string self_av_string();
+
+LLViewerTexLayerSet::LLViewerTexLayerSet(LLAvatarAppearance* const appearance) :
+	LLTexLayerSet(appearance),
+	mComposite( NULL ),
+	mUpdatesEnabled( FALSE )
+{
+}
+
+// virtual
+LLViewerTexLayerSet::~LLViewerTexLayerSet()
+{
+}
+
+void LLViewerTexLayerSet::gatherMorphMaskAlpha(U8 *data, S32 width, S32 height)
+{
+	memset(data, 255, width * height);
+
+	for( layer_list_t::iterator iter = mLayerList.begin(); iter != mLayerList.end(); iter++ )
+	{
+		LLTexLayerInterface* layer = *iter;
+		layer->gatherAlphaMasks(data, mComposite->getOriginX(),mComposite->getOriginY(), width, height);
+	}
+	
+	// Set alpha back to that of our alpha masks.
+	renderAlphaMaskTextures(mComposite->getOriginX(), mComposite->getOriginY(), width, height, true);
+}
+
+LLTexLayerSetBuffer* LLViewerTexLayerSet::getComposite()
+{
+	if (!mComposite)
+	{
+		createComposite();
+	}
+	return mComposite;
+}
+
+const LLTexLayerSetBuffer* LLViewerTexLayerSet::getComposite() const
+{
+	return mComposite;
+}
+
+// virtual
+void LLViewerTexLayerSet::requestUpdate()
+{
+	if( mUpdatesEnabled )
+	{
+		createComposite();
+		mComposite->requestUpdate(); 
+	}
+}
+
+void LLViewerTexLayerSet::requestUpload()
+{
+	createComposite();
+	mComposite->requestUpload();
+}
+
+void LLViewerTexLayerSet::cancelUpload()
+{
+	if(mComposite)
+	{
+		mComposite->cancelUpload();
+	}
+}
+
+
+void LLViewerTexLayerSet::createComposite()
+{
+	if(!mComposite)
+	{
+		S32 width = mInfo->getWidth();
+		S32 height = mInfo->getHeight();
+		// Composite other avatars at reduced resolution
+		if( !mAvatarAppearance->isSelf() )
+		{
+			llerrs << "composites should not be created for non-self avatars!" << llendl;
+		}
+		mComposite = new LLTexLayerSetBuffer( this, width, height );
+	}
+}
+
+void LLViewerTexLayerSet::updateComposite()
+{
+	createComposite();
+	mComposite->requestUpdateImmediate();
+}
+
+// Returns TRUE if at least one packet of data has been received for each of the textures that this layerset depends on.
+BOOL LLViewerTexLayerSet::isLocalTextureDataAvailable() const
+{
+	if (!mAvatarAppearance->isSelf()) return FALSE;
+	LLVOAvatarSelf* self = dynamic_cast<LLVOAvatarSelf *>(mAvatarAppearance);
+	return self->isLocalTextureDataAvailable(this);
+}
+
+
+// Returns TRUE if all of the data for the textures that this layerset depends on have arrived.
+BOOL LLViewerTexLayerSet::isLocalTextureDataFinal() const
+{
+	if (!mAvatarAppearance->isSelf()) return FALSE;
+	LLVOAvatarSelf* self = dynamic_cast<LLVOAvatarSelf *>(mAvatarAppearance);
+	return self->isLocalTextureDataFinal(this);
+}
+
+void LLViewerTexLayerSet::destroyComposite()
+{
+	if( mComposite )
+	{
+		mComposite = NULL;
+	}
+}
+
+void LLViewerTexLayerSet::setUpdatesEnabled( BOOL b )
+{
+	mUpdatesEnabled = b; 
+}
+
+LLVOAvatarSelf* LLViewerTexLayerSet::getAvatar() const
+{
+	return dynamic_cast<LLVOAvatarSelf*> (mAvatarAppearance);
+}
+
+//-----------------------------------------------------------------------------
+// LLBakedUploadData()
+//-----------------------------------------------------------------------------
+LLBakedUploadData::LLBakedUploadData(const LLVOAvatarSelf* avatar,
+									 LLViewerTexLayerSet* layerset,
+									 const LLUUID& id,
+									 bool highest_res) :
+	mAvatar(avatar),
+	mTexLayerSet(layerset),
+	mID(id),
+	mStartTime(LLFrameTimer::getTotalTime()),		// Record starting time
+	mIsHighestRes(highest_res)
+{ 
+}
+
+//-----------------------------------------------------------------------------
+// LLTexLayerSetBuffer
+// The composite image that a LLViewerTexLayerSet writes to.  Each LLViewerTexLayerSet has one.
+//-----------------------------------------------------------------------------
+
+// static
+S32 LLTexLayerSetBuffer::sGLByteCount = 0;
+
+LLTexLayerSetBuffer::LLTexLayerSetBuffer(LLViewerTexLayerSet* const owner, 
+										 S32 width, S32 height) :
+	// ORDER_LAST => must render these after the hints are created.
+	LLViewerDynamicTexture( width, height, 4, LLViewerDynamicTexture::ORDER_LAST, TRUE ), 
+	mUploadPending(FALSE), // Not used for any logic here, just to sync sending of updates
+	mNeedsUpload(FALSE),
+	mNumLowresUploads(0),
+	mUploadFailCount(0),
+	mNeedsUpdate(TRUE),
+	mNumLowresUpdates(0),
+	mTexLayerSet(owner)
+{
+	LLTexLayerSetBuffer::sGLByteCount += getSize();
+	mNeedsUploadTimer.start();
+	mNeedsUpdateTimer.start();
+}
+
+LLTexLayerSetBuffer::~LLTexLayerSetBuffer()
+{
+	LLTexLayerSetBuffer::sGLByteCount -= getSize();
+	destroyGLTexture();
+	for( S32 order = 0; order < ORDER_COUNT; order++ )
+	{
+		LLViewerDynamicTexture::sInstances[order].erase(this);  // will fail in all but one case.
+	}
+}
+
+//virtual 
+S8 LLTexLayerSetBuffer::getType() const 
+{
+	return LLViewerDynamicTexture::LL_TEX_LAYER_SET_BUFFER ;
+}
+
+//virtual 
+void LLTexLayerSetBuffer::restoreGLTexture() 
+{	
+	LLViewerDynamicTexture::restoreGLTexture() ;
+}
+
+//virtual 
+void LLTexLayerSetBuffer::destroyGLTexture() 
+{
+	LLViewerDynamicTexture::destroyGLTexture() ;
+}
+
+// static
+void LLTexLayerSetBuffer::dumpTotalByteCount()
+{
+	llinfos << "Composite System GL Buffers: " << (LLTexLayerSetBuffer::sGLByteCount/1024) << "KB" << llendl;
+}
+
+void LLTexLayerSetBuffer::requestUpdate()
+{
+	restartUpdateTimer();
+	mNeedsUpdate = TRUE;
+	mNumLowresUpdates = 0;
+	// If we're in the middle of uploading a baked texture, we don't care about it any more.
+	// When it's downloaded, ignore it.
+	mUploadID.setNull();
+}
+
+void LLTexLayerSetBuffer::requestUpload()
+{
+	conditionalRestartUploadTimer();
+	mNeedsUpload = TRUE;
+	mNumLowresUploads = 0;
+	mUploadPending = TRUE;
+}
+
+void LLTexLayerSetBuffer::conditionalRestartUploadTimer()
+{
+	// If we requested a new upload but haven't even uploaded
+	// a low res version of our last upload request, then
+	// keep the timer ticking instead of resetting it.
+	if (mNeedsUpload && (mNumLowresUploads == 0))
+	{
+		mNeedsUploadTimer.unpause();
+	}
+	else
+	{
+		mNeedsUploadTimer.reset();
+		mNeedsUploadTimer.start();
+	}
+}
+
+void LLTexLayerSetBuffer::restartUpdateTimer()
+{
+	mNeedsUpdateTimer.reset();
+	mNeedsUpdateTimer.start();
+}
+
+void LLTexLayerSetBuffer::cancelUpload()
+{
+	mNeedsUpload = FALSE;
+	mUploadPending = FALSE;
+	mNeedsUploadTimer.pause();
+	mUploadRetryTimer.reset();
+}
+
+void LLTexLayerSetBuffer::pushProjection() const
+{
+	gGL.matrixMode(LLRender::MM_PROJECTION);
+	gGL.pushMatrix();
+	gGL.loadIdentity();
+	gGL.ortho(0.0f, mFullWidth, 0.0f, mFullHeight, -1.0f, 1.0f);
+
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
+	gGL.pushMatrix();
+	gGL.loadIdentity();
+}
+
+void LLTexLayerSetBuffer::popProjection() const
+{
+	gGL.matrixMode(LLRender::MM_PROJECTION);
+	gGL.popMatrix();
+
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
+	gGL.popMatrix();
+}
+
+// virtual
+BOOL LLTexLayerSetBuffer::needsRender()
+{
+	llassert(mTexLayerSet->getAvatarAppearance() == gAgentAvatarp);
+	if (!isAgentAvatarValid()) return FALSE;
+
+	const BOOL upload_now = mNeedsUpload && isReadyToUpload();
+	const BOOL update_now = mNeedsUpdate && isReadyToUpdate();
+
+	// Don't render if we don't want to (or aren't ready to) upload or update.
+	if (!(update_now || upload_now))
+	{
+		return FALSE;
+	}
+
+	// Don't render if we're animating our appearance.
+	if (gAgentAvatarp->getIsAppearanceAnimating())
+	{
+		return FALSE;
+	}
+
+	// Don't render if we are trying to create a shirt texture but aren't wearing a skirt.
+	if (gAgentAvatarp->getBakedTE(mTexLayerSet) == LLVOAvatarDefines::TEX_SKIRT_BAKED && 
+		!gAgentAvatarp->isWearingWearableType(LLWearableType::WT_SKIRT))
+	{
+		cancelUpload();
+		return FALSE;
+	}
+
+	// Render if we have at least minimal level of detail for each local texture.
+	return mTexLayerSet->isLocalTextureDataAvailable();
+}
+
+void LLTexLayerSetBuffer::preRender(BOOL clear_depth)
+{
+	// Set up an ortho projection
+	pushProjection();
+	
+	// keep depth buffer, we don't need to clear it
+	LLViewerDynamicTexture::preRender(FALSE);
+}
+
+void LLTexLayerSetBuffer::postRender(BOOL success)
+{
+	popProjection();
+
+	LLViewerDynamicTexture::postRender(success);
+}
+
+BOOL LLTexLayerSetBuffer::render()
+{
+	// Default color mask for tex layer render
+	gGL.setColorMask(true, true);
+
+	// do we need to upload, and do we have sufficient data to create an uploadable composite?
+	// TODO: When do we upload the texture if gAgent.mNumPendingQueries is non-zero?
+	const BOOL upload_now = mNeedsUpload && isReadyToUpload();
+	const BOOL update_now = mNeedsUpdate && isReadyToUpdate();
+	
+	BOOL success = TRUE;
+	
+	bool use_shaders = LLGLSLShader::sNoFixedFunction;
+
+	if (use_shaders)
+	{
+		gAlphaMaskProgram.bind();
+		gAlphaMaskProgram.setMinimumAlpha(0.004f);
+	}
+
+	LLVertexBuffer::unbind();
+
+	// Composite the color data
+	LLGLSUIDefault gls_ui;
+	success &= mTexLayerSet->render( mOrigin.mX, mOrigin.mY, mFullWidth, mFullHeight );
+	gGL.flush();
+
+	if(upload_now)
+	{
+		if (!success)
+		{
+			llinfos << "Failed attempt to bake " << mTexLayerSet->getBodyRegionName() << llendl;
+			mUploadPending = FALSE;
+		}
+		else
+		{
+			if (mTexLayerSet->isVisible())
+			{
+				mTexLayerSet->getAvatar()->debugBakedTextureUpload(mTexLayerSet->getBakedTexIndex(), FALSE); // FALSE for start of upload, TRUE for finish.
+				doUpload();
+			}
+			else
+			{
+				mUploadPending = FALSE;
+				mNeedsUpload = FALSE;
+				mNeedsUploadTimer.pause();
+				mTexLayerSet->getAvatar()->setNewBakedTexture(mTexLayerSet->getBakedTexIndex(),IMG_INVISIBLE);
+			}
+		}
+	}
+	
+	if (update_now)
+	{
+		doUpdate();
+	}
+
+	if (use_shaders)
+	{
+		gAlphaMaskProgram.unbind();
+	}
+
+	LLVertexBuffer::unbind();
+	
+	// reset GL state
+	gGL.setColorMask(true, true);
+	gGL.setSceneBlendType(LLRender::BT_ALPHA);
+
+	// we have valid texture data now
+	mGLTexturep->setGLTextureCreated(true);
+
+	return success;
+}
+
+BOOL LLTexLayerSetBuffer::isInitialized(void) const
+{
+	return mGLTexturep.notNull() && mGLTexturep->isGLTextureCreated();
+}
+
+BOOL LLTexLayerSetBuffer::uploadPending() const
+{
+	return mUploadPending;
+}
+
+BOOL LLTexLayerSetBuffer::uploadNeeded() const
+{
+	return mNeedsUpload;
+}
+
+BOOL LLTexLayerSetBuffer::uploadInProgress() const
+{
+	return !mUploadID.isNull();
+}
+
+BOOL LLTexLayerSetBuffer::isReadyToUpload() const
+{
+	if (!gAgentQueryManager.hasNoPendingQueries()) return FALSE; // Can't upload if there are pending queries.
+	if (isAgentAvatarValid() && !gAgentAvatarp->isUsingBakedTextures()) return FALSE; // Don't upload if avatar is using composites.
+
+	BOOL ready = FALSE;
+	if (mTexLayerSet->isLocalTextureDataFinal())
+	{
+		// If we requested an upload and have the final LOD ready, upload (or wait a while if this is a retry)
+		if (mUploadFailCount == 0)
+		{
+			ready = TRUE;
+		}
+		else
+		{
+			ready = mUploadRetryTimer.getElapsedTimeF32() >= BAKE_UPLOAD_RETRY_DELAY * (1 << (mUploadFailCount - 1));
+		}
+	}
+	else
+	{
+		// Upload if we've hit a timeout.  Upload is a pretty expensive process so we need to make sure
+		// we aren't doing uploads too frequently.
+		const U32 texture_timeout = gSavedSettings.getU32("AvatarBakedTextureUploadTimeout");
+		if (texture_timeout != 0)
+		{
+			// The timeout period increases exponentially between every lowres upload in order to prevent
+			// spamming the server with frequent uploads.
+			const U32 texture_timeout_threshold = texture_timeout*(1 << mNumLowresUploads);
+
+			// If we hit our timeout and have textures available at even lower resolution, then upload.
+			const BOOL is_upload_textures_timeout = mNeedsUploadTimer.getElapsedTimeF32() >= texture_timeout_threshold;
+			const BOOL has_lower_lod = mTexLayerSet->isLocalTextureDataAvailable();
+			ready = has_lower_lod && is_upload_textures_timeout;
+		}
+	}
+
+	return ready;
+}
+
+BOOL LLTexLayerSetBuffer::isReadyToUpdate() const
+{
+	// If we requested an update and have the final LOD ready, then update.
+	if (mTexLayerSet->isLocalTextureDataFinal()) return TRUE;
+
+	// If we haven't done an update yet, then just do one now regardless of state of textures.
+	if (mNumLowresUpdates == 0) return TRUE;
+
+	// Update if we've hit a timeout.  Unlike for uploads, we can make this timeout fairly small
+	// since render unnecessarily doesn't cost much.
+	const U32 texture_timeout = gSavedSettings.getU32("AvatarBakedLocalTextureUpdateTimeout");
+	if (texture_timeout != 0)
+	{
+		// If we hit our timeout and have textures available at even lower resolution, then update.
+		const BOOL is_update_textures_timeout = mNeedsUpdateTimer.getElapsedTimeF32() >= texture_timeout;
+		const BOOL has_lower_lod = mTexLayerSet->isLocalTextureDataAvailable();
+		if (has_lower_lod && is_update_textures_timeout) return TRUE; 
+	}
+
+	return FALSE;
+}
+
+BOOL LLTexLayerSetBuffer::requestUpdateImmediate()
+{
+	mNeedsUpdate = TRUE;
+	BOOL result = FALSE;
+
+	if (needsRender())
+	{
+		preRender(FALSE);
+		result = render();
+		postRender(result);
+	}
+
+	return result;
+}
+
+// Create the baked texture, send it out to the server, then wait for it to come
+// back so we can switch to using it.
+void LLTexLayerSetBuffer::doUpload()
+{
+	llinfos << "Uploading baked " << mTexLayerSet->getBodyRegionName() << llendl;
+	LLViewerStats::getInstance()->incStat(LLViewerStats::ST_TEX_BAKES);
+
+	// Don't need caches since we're baked now.  (note: we won't *really* be baked 
+	// until this image is sent to the server and the Avatar Appearance message is received.)
+	mTexLayerSet->deleteCaches();
+
+	// Get the COLOR information from our texture
+	U8* baked_color_data = new U8[ mFullWidth * mFullHeight * 4 ];
+	glReadPixels(mOrigin.mX, mOrigin.mY, mFullWidth, mFullHeight, GL_RGBA, GL_UNSIGNED_BYTE, baked_color_data );
+	stop_glerror();
+
+	// Get the MASK information from our texture
+	LLGLSUIDefault gls_ui;
+	LLPointer<LLImageRaw> baked_mask_image = new LLImageRaw(mFullWidth, mFullHeight, 1 );
+	U8* baked_mask_data = baked_mask_image->getData(); 
+	mTexLayerSet->gatherMorphMaskAlpha(baked_mask_data, mFullWidth, mFullHeight);
+
+
+	// Create the baked image from our color and mask information
+	const S32 baked_image_components = 5; // red green blue [bump] clothing
+	LLPointer<LLImageRaw> baked_image = new LLImageRaw( mFullWidth, mFullHeight, baked_image_components );
+	U8* baked_image_data = baked_image->getData();
+	S32 i = 0;
+	for (S32 u=0; u < mFullWidth; u++)
+	{
+		for (S32 v=0; v < mFullHeight; v++)
+		{
+			baked_image_data[5*i + 0] = baked_color_data[4*i + 0];
+			baked_image_data[5*i + 1] = baked_color_data[4*i + 1];
+			baked_image_data[5*i + 2] = baked_color_data[4*i + 2];
+			baked_image_data[5*i + 3] = baked_color_data[4*i + 3]; // alpha should be correct for eyelashes.
+			baked_image_data[5*i + 4] = baked_mask_data[i];
+			i++;
+		}
+	}
+	
+	LLPointer<LLImageJ2C> compressedImage = new LLImageJ2C;
+	const char* comment_text = LINDEN_J2C_COMMENT_PREFIX "RGBHM"; // writes into baked_color_data. 5 channels (rgb, heightfield/alpha, mask)
+	if (compressedImage->encode(baked_image, comment_text))
+	{
+		LLTransactionID tid;
+		tid.generate();
+		const LLAssetID asset_id = tid.makeAssetID(gAgent.getSecureSessionID());
+		if (LLVFile::writeFile(compressedImage->getData(), compressedImage->getDataSize(),
+							   gVFS, asset_id, LLAssetType::AT_TEXTURE))
+		{
+			// Read back the file and validate.
+			BOOL valid = FALSE;
+			LLPointer<LLImageJ2C> integrity_test = new LLImageJ2C;
+			S32 file_size = 0;
+			U8* data = LLVFile::readFile(gVFS, asset_id, LLAssetType::AT_TEXTURE, &file_size);
+			if (data)
+			{
+				valid = integrity_test->validate(data, file_size); // integrity_test will delete 'data'
+			}
+			else
+			{
+				integrity_test->setLastError("Unable to read entire file");
+			}
+			
+			if (valid)
+			{
+				const bool highest_lod = mTexLayerSet->isLocalTextureDataFinal();
+				// Baked_upload_data is owned by the responder and deleted after the request completes.
+				LLBakedUploadData* baked_upload_data = new LLBakedUploadData(gAgentAvatarp, 
+																			 this->mTexLayerSet, 
+																			 asset_id,
+																			 highest_lod);
+				// upload ID is used to avoid overlaps, e.g. when the user rapidly makes two changes outside of Face Edit.
+				mUploadID = asset_id;
+
+				// Upload the image
+				const std::string url = gAgent.getRegion()->getCapability("UploadBakedTexture");
+				if(!url.empty()
+					&& !LLPipeline::sForceOldBakedUpload // toggle debug setting UploadBakedTexOld to change between the new caps method and old method
+					&& (mUploadFailCount < (BAKE_UPLOAD_ATTEMPTS - 1))) // Try last ditch attempt via asset store if cap upload is failing.
+				{
+					LLSD body = LLSD::emptyMap();
+					// The responder will call LLTexLayerSetBuffer::onTextureUploadComplete()
+					LLHTTPClient::post(url, body, new LLSendTexLayerResponder(body, mUploadID, LLAssetType::AT_TEXTURE, baked_upload_data));
+					llinfos << "Baked texture upload via capability of " << mUploadID << " to " << url << llendl;
+				} 
+				else
+				{
+					gAssetStorage->storeAssetData(tid,
+												  LLAssetType::AT_TEXTURE,
+												  LLTexLayerSetBuffer::onTextureUploadComplete,
+												  baked_upload_data,
+												  TRUE,		// temp_file
+												  TRUE,		// is_priority
+												  TRUE);	// store_local
+					llinfos << "Baked texture upload via Asset Store." <<  llendl;
+				}
+
+				if (highest_lod)
+				{
+					// Sending the final LOD for the baked texture.  All done, pause 
+					// the upload timer so we know how long it took.
+					mNeedsUpload = FALSE;
+					mNeedsUploadTimer.pause();
+				}
+				else
+				{
+					// Sending a lower level LOD for the baked texture.  Restart the upload timer.
+					mNumLowresUploads++;
+					mNeedsUploadTimer.unpause();
+					mNeedsUploadTimer.reset();
+				}
+
+				// Print out notification that we uploaded this texture.
+				if (gSavedSettings.getBOOL("DebugAvatarRezTime"))
+				{
+					const std::string lod_str = highest_lod ? "HighRes" : "LowRes";
+					LLSD args;
+					args["EXISTENCE"] = llformat("%d",(U32)mTexLayerSet->getAvatar()->debugGetExistenceTimeElapsedF32());
+					args["TIME"] = llformat("%d",(U32)mNeedsUploadTimer.getElapsedTimeF32());
+					args["BODYREGION"] = mTexLayerSet->getBodyRegionName();
+					args["RESOLUTION"] = lod_str;
+					LLNotificationsUtil::add("AvatarRezSelfBakedTextureUploadNotification",args);
+					LL_DEBUGS("Avatar") << self_av_string() << "Uploading [ name: " << mTexLayerSet->getBodyRegionName() << " res:" << lod_str << " time:" << (U32)mNeedsUploadTimer.getElapsedTimeF32() << " ]" << LL_ENDL;
+				}
+			}
+			else
+			{
+				// The read back and validate operation failed.  Remove the uploaded file.
+				mUploadPending = FALSE;
+				LLVFile file(gVFS, asset_id, LLAssetType::AT_TEXTURE, LLVFile::WRITE);
+				file.remove();
+				llinfos << "Unable to create baked upload file (reason: corrupted)." << llendl;
+			}
+		}
+	}
+	else
+	{
+		// The VFS write file operation failed.
+		mUploadPending = FALSE;
+		llinfos << "Unable to create baked upload file (reason: failed to write file)" << llendl;
+	}
+
+	delete [] baked_color_data;
+}
+
+// Mostly bookkeeping; don't need to actually "do" anything since
+// render() will actually do the update.
+void LLTexLayerSetBuffer::doUpdate()
+{
+	const BOOL highest_lod = mTexLayerSet->isLocalTextureDataFinal();
+	if (highest_lod)
+	{
+		mNeedsUpdate = FALSE;
+	}
+	else
+	{
+		mNumLowresUpdates++;
+	}
+
+	restartUpdateTimer();
+
+	// need to switch to using this layerset if this is the first update
+	// after getting the lowest LOD
+	mTexLayerSet->getAvatarAppearance()->updateMeshTextures();
+	
+	// Print out notification that we updated this texture.
+	if (gSavedSettings.getBOOL("DebugAvatarRezTime"))
+	{
+		const BOOL highest_lod = mTexLayerSet->isLocalTextureDataFinal();
+		const std::string lod_str = highest_lod ? "HighRes" : "LowRes";
+		LLSD args;
+		args["EXISTENCE"] = llformat("%d",(U32)mTexLayerSet->getAvatarAppearance()->debugGetExistenceTimeElapsedF32());
+		args["TIME"] = llformat("%d",(U32)mNeedsUpdateTimer.getElapsedTimeF32());
+		args["BODYREGION"] = mTexLayerSet->getBodyRegionName();
+		args["RESOLUTION"] = lod_str;
+		LLNotificationsUtil::add("AvatarRezSelfBakedTextureUpdateNotification",args);
+		LL_DEBUGS("Avatar") << self_av_string() << "Locally updating [ name: " << mTexLayerSet->getBodyRegionName() << " res:" << lod_str << " time:" << (U32)mNeedsUpdateTimer.getElapsedTimeF32() << " ]" << LL_ENDL;
+	}
+}
+
+// static
+void LLTexLayerSetBuffer::onTextureUploadComplete(const LLUUID& uuid,
+												  void* userdata,
+												  S32 result,
+												  LLExtStat ext_status) // StoreAssetData callback (not fixed)
+{
+	LLBakedUploadData* baked_upload_data = (LLBakedUploadData*)userdata;
+
+	if (isAgentAvatarValid() &&
+		!gAgentAvatarp->isDead() &&
+		(baked_upload_data->mAvatar == gAgentAvatarp) && // Sanity check: only the user's avatar should be uploading textures.
+		(baked_upload_data->mTexLayerSet->hasComposite()))
+	{
+		LLTexLayerSetBuffer* layerset_buffer = baked_upload_data->mTexLayerSet->getComposite();
+		S32 failures = layerset_buffer->mUploadFailCount;
+		layerset_buffer->mUploadFailCount = 0;
+
+		if (layerset_buffer->mUploadID.isNull())
+		{
+			// The upload got canceled, we should be in the
+			// process of baking a new texture so request an
+			// upload with the new data
+
+			// BAP: does this really belong in this callback, as
+			// opposed to where the cancellation takes place?
+			// suspect this does nothing.
+			layerset_buffer->requestUpload();
+		}
+		else if (baked_upload_data->mID == layerset_buffer->mUploadID)
+		{
+			// This is the upload we're currently waiting for.
+			layerset_buffer->mUploadID.setNull();
+			const std::string name(baked_upload_data->mTexLayerSet->getBodyRegionName());
+			const std::string resolution = baked_upload_data->mIsHighestRes ? " full res " : " low res ";
+			if (result >= 0)
+			{
+				layerset_buffer->mUploadPending = FALSE; // Allows sending of AgentSetAppearance later
+				LLVOAvatarDefines::ETextureIndex baked_te = gAgentAvatarp->getBakedTE(layerset_buffer->mTexLayerSet);
+				// Update baked texture info with the new UUID
+				U64 now = LLFrameTimer::getTotalTime();		// Record starting time
+				llinfos << "Baked" << resolution << "texture upload for " << name << " took " << (S32)((now - baked_upload_data->mStartTime) / 1000) << " ms" << llendl;
+				gAgentAvatarp->setNewBakedTexture(baked_te, uuid);
+			}
+			else
+			{	
+				++failures;
+				S32 max_attempts = baked_upload_data->mIsHighestRes ? BAKE_UPLOAD_ATTEMPTS : 1; // only retry final bakes
+				llwarns << "Baked" << resolution << "texture upload for " << name << " failed (attempt " << failures << "/" << max_attempts << ")" << llendl;
+				if (failures < max_attempts)
+				{
+					layerset_buffer->mUploadFailCount = failures;
+					layerset_buffer->mUploadRetryTimer.start();
+					layerset_buffer->requestUpload();
+				}
+			}
+		}
+		else
+		{
+			llinfos << "Received baked texture out of date, ignored." << llendl;
+		}
+
+		gAgentAvatarp->dirtyMesh();
+	}
+	else
+	{
+		// Baked texture failed to upload (in which case since we
+		// didn't set the new baked texture, it means that they'll try
+		// and rebake it at some point in the future (after login?)),
+		// or this response to upload is out of date, in which case a
+		// current response should be on the way or already processed.
+		llwarns << "Baked upload failed" << llendl;
+	}
+
+	delete baked_upload_data;
+}
+
+
+
+
diff --git a/indra/newview/llviewertexlayer.h b/indra/newview/llviewertexlayer.h
new file mode 100644
index 00000000000..ff3def5a828
--- /dev/null
+++ b/indra/newview/llviewertexlayer.h
@@ -0,0 +1,172 @@
+/** 
+ * @file llviewertexlayer.h
+ * @brief Viewer Texture layer classes. Used for avatars.
+ *
+ * $LicenseInfo:firstyear=2012&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_VIEWER_TEXLAYER_H
+#define LL_VIEWER_TEXLAYER_H
+
+#include "lldynamictexture.h"
+#include "lltexlayer.h"
+
+class LLTexLayerSetBuffer;
+class LLVOAvatarSelf;
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// LLViewerTexLayerSet
+//
+// An ordered set of texture layers that gets composited into a single texture.
+// Only exists for llavatarappearanceself.
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+class LLViewerTexLayerSet : public LLTexLayerSet
+{
+	friend class LLTexLayerSetBuffer;
+public:
+	LLViewerTexLayerSet(LLAvatarAppearance* const appearance);
+	virtual ~LLViewerTexLayerSet();
+
+	LLTexLayerSetBuffer*		getComposite();
+	const LLTexLayerSetBuffer* 	getComposite() const; // Do not create one if it doesn't exist.
+	virtual void				requestUpdate();
+	void						requestUpload();
+	void						cancelUpload();
+	void						updateComposite();
+	BOOL						isLocalTextureDataAvailable() const;
+	BOOL						isLocalTextureDataFinal() const;
+	void						createComposite();
+	void						destroyComposite();
+	void						setUpdatesEnabled(BOOL b);
+	BOOL						getUpdatesEnabled()	const 	{ return mUpdatesEnabled; }
+	void						gatherMorphMaskAlpha(U8 *data, S32 width, S32 height);
+
+	LLVOAvatarSelf*				getAvatar()	const;
+	BOOL						hasComposite() const 		{ return (mComposite.notNull()); }
+
+private:
+	LLPointer<LLTexLayerSetBuffer>	mComposite;
+	BOOL						mUpdatesEnabled;
+
+};
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// LLTexLayerSetBuffer
+//
+// The composite image that a LLViewerTexLayerSet writes to.  Each LLTexLayerSet has one.
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+class LLTexLayerSetBuffer : public LLViewerDynamicTexture
+{
+	LOG_CLASS(LLTexLayerSetBuffer);
+
+public:
+	LLTexLayerSetBuffer(LLViewerTexLayerSet* const owner, S32 width, S32 height);
+	virtual ~LLTexLayerSetBuffer();
+
+public:
+	/*virtual*/ S8          getType() const;
+	BOOL					isInitialized(void) const;
+	static void				dumpTotalByteCount();
+	const std::string		dumpTextureInfo() const;
+	virtual void 			restoreGLTexture();
+	virtual void 			destroyGLTexture();
+protected:
+	void					pushProjection() const;
+	void					popProjection() const;
+private:
+	LLViewerTexLayerSet* const	mTexLayerSet;
+	static S32				sGLByteCount;
+
+	//--------------------------------------------------------------------
+	// Render
+	//--------------------------------------------------------------------
+public:
+	/*virtual*/ BOOL		needsRender();
+protected:
+	BOOL					render(S32 x, S32 y, S32 width, S32 height);
+	virtual void			preRender(BOOL clear_depth);
+	virtual void			postRender(BOOL success);
+	virtual BOOL			render();	
+	
+	//--------------------------------------------------------------------
+	// Uploads
+	//--------------------------------------------------------------------
+public:
+	void					requestUpload();
+	void					cancelUpload();
+	BOOL					uploadNeeded() const; 			// We need to upload a new texture
+	BOOL					uploadInProgress() const; 		// We have started uploading a new texture and are awaiting the result
+	BOOL					uploadPending() const; 			// We are expecting a new texture to be uploaded at some point
+	static void				onTextureUploadComplete(const LLUUID& uuid,
+													void* userdata,
+													S32 result, LLExtStat ext_status);
+protected:
+	BOOL					isReadyToUpload() const;
+	void					doUpload(); 					// Does a read back and upload.
+	void					conditionalRestartUploadTimer();
+private:
+	BOOL					mNeedsUpload; 					// Whether we need to send our baked textures to the server
+	U32						mNumLowresUploads; 				// Number of times we've sent a lowres version of our baked textures to the server
+	BOOL					mUploadPending; 				// Whether we have received back the new baked textures
+	LLUUID					mUploadID; 						// The current upload process (null if none).
+	LLFrameTimer    		mNeedsUploadTimer; 				// Tracks time since upload was requested and performed.
+	S32						mUploadFailCount;				// Number of consecutive upload failures
+	LLFrameTimer    		mUploadRetryTimer; 				// Tracks time since last upload failure.
+
+	//--------------------------------------------------------------------
+	// Updates
+	//--------------------------------------------------------------------
+public:
+	void					requestUpdate();
+	BOOL					requestUpdateImmediate();
+protected:
+	BOOL					isReadyToUpdate() const;
+	void					doUpdate();
+	void					restartUpdateTimer();
+private:
+	BOOL					mNeedsUpdate; 					// Whether we need to locally update our baked textures
+	U32						mNumLowresUpdates; 				// Number of times we've locally updated with lowres version of our baked textures
+	LLFrameTimer    		mNeedsUpdateTimer; 				// Tracks time since update was requested and performed.
+};
+
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// LLBakedUploadData
+//
+// Used by LLTexLayerSetBuffer for a callback.
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+struct LLBakedUploadData
+{
+	LLBakedUploadData(const LLVOAvatarSelf* avatar,
+					  LLViewerTexLayerSet* layerset, 
+					  const LLUUID& id,
+					  bool highest_res);
+	~LLBakedUploadData() {}
+	const LLUUID				mID;
+	const LLVOAvatarSelf*		mAvatar; // note: backlink only; don't LLPointer 
+	LLViewerTexLayerSet*		mTexLayerSet;
+   	const U64					mStartTime;	// for measuring baked texture upload time
+   	const bool					mIsHighestRes; // whether this is a "final" bake, or intermediate low res
+};
+
+#endif  // LL_VIEWER_TEXLAYER_H
+
diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp
index 8eb8717de2d..c362269b81f 100644
--- a/indra/newview/llviewertexture.cpp
+++ b/indra/newview/llviewertexture.cpp
@@ -59,6 +59,7 @@
 #include "lltextureatlas.h"
 #include "lltextureatlasmanager.h"
 #include "lltextureentry.h"
+#include "lltexturemanagerbridge.h"
 #include "llmediaentry.h"
 #include "llvovolume.h"
 #include "llviewermedia.h"
@@ -305,6 +306,26 @@ LLViewerFetchedTexture* LLViewerTextureManager::getFetchedTextureFromHost(const
 	return gTextureList.getImageFromHost(image_id, host) ;
 }
 
+// Create a bridge to the viewer texture manager.
+class LLViewerTextureManagerBridge : public LLTextureManagerBridge
+{
+	/*virtual*/ LLPointer<LLTexture> getLocalTexture(BOOL usemipmaps = TRUE, BOOL generate_gl_tex = TRUE)
+	{
+		return LLViewerTextureManager::getLocalTexture(usemipmaps, generate_gl_tex);
+	}
+
+	/*virtual*/ LLPointer<LLTexture> getLocalTexture(const U32 width, const U32 height, const U8 components, BOOL usemipmaps, BOOL generate_gl_tex = TRUE)
+	{
+		return LLViewerTextureManager::getLocalTexture(width, height, components, usemipmaps, generate_gl_tex);
+	}
+
+	/*virtual*/ LLTexture* getFetchedTexture(const LLUUID &image_id)
+	{
+		return LLViewerTextureManager::getFetchedTexture(image_id);
+	}
+};
+
+
 void LLViewerTextureManager::init()
 {
 	{
@@ -374,6 +395,9 @@ void LLViewerTextureManager::init()
 	LLViewerTexture::sCheckerBoardImagep = LLViewerTextureManager::getLocalTexture(image_raw.get(), TRUE);
 
 	LLViewerTexture::initClass() ;
+	
+	// Create a texture manager bridge.
+	gTextureManagerBridgep = new LLViewerTextureManagerBridge();
 
 	if (LLMetricPerformanceTesterBasic::isMetricLogRequested(sTesterName) && !LLMetricPerformanceTesterBasic::getTester(sTesterName))
 	{
@@ -390,6 +414,7 @@ void LLViewerTextureManager::cleanup()
 {
 	stop_glerror();
 
+	delete gTextureManagerBridgep;
 	LLImageGL::sDefaultGLTexture = NULL ;
 	LLViewerTexture::sNullImagep = NULL;
 	LLViewerTexture::sBlackImagep = NULL;
diff --git a/indra/newview/llviewertexture.h b/indra/newview/llviewertexture.h
index 2ea9a07e9a1..4b92a2bf8a2 100755
--- a/indra/newview/llviewertexture.h
+++ b/indra/newview/llviewertexture.h
@@ -107,39 +107,6 @@ class LLViewerTexture : public LLTexture
 		INVALID_TEXTURE_TYPE
 	};
 
-	enum EBoostLevel
-	{
-		BOOST_NONE 			= 0,
-		BOOST_AVATAR_BAKED	,
-		BOOST_AVATAR		,
-		BOOST_CLOUDS		,
-		BOOST_SCULPTED      ,
-		
-		BOOST_HIGH 			= 10,
-		BOOST_BUMP          ,
-		BOOST_TERRAIN		, // has to be high priority for minimap / low detail
-		BOOST_SELECTED		,		
-		BOOST_AVATAR_BAKED_SELF	,
-		BOOST_AVATAR_SELF	, // needed for baking avatar
-		BOOST_SUPER_HIGH    , //textures higher than this need to be downloaded at the required resolution without delay.
-		BOOST_HUD			,
-		BOOST_ICON			,
-		BOOST_UI			,
-		BOOST_PREVIEW		,
-		BOOST_MAP			,
-		BOOST_MAP_VISIBLE	,		
-		BOOST_MAX_LEVEL,
-
-		//other texture Categories
-		LOCAL = BOOST_MAX_LEVEL,
-		AVATAR_SCRATCH_TEX,
-		DYNAMIC_TEX,
-		MEDIA,
-		ATLAS,
-		OTHER,
-		MAX_GL_IMAGE_CATEGORY
-	};
-
 	static S32 getTotalNumOfCategories() ;
 	static S32 getIndexFromCategory(S32 category) ;
 	static S32 getCategoryFromIndex(S32 index) ;
@@ -168,7 +135,7 @@ class LLViewerTexture : public LLTexture
 	/*virtual*/ bool bindDefaultImage(const S32 stage = 0) ;
 	/*virtual*/ void forceImmediateUpdate() ;
 	
-	const LLUUID& getID() const { return mID; }
+	/*virtual*/ const LLUUID& getID() const { return mID; }
 	
 	void setBoostLevel(S32 level);
 	S32  getBoostLevel() { return mBoostLevel; }
@@ -205,24 +172,24 @@ class LLViewerTexture : public LLTexture
 	/*virtual*/S32	       getWidth(S32 discard_level = -1) const;
 	/*virtual*/S32	       getHeight(S32 discard_level = -1) const;
 	
-	BOOL       hasGLTexture() const ;
+	/*virtual*/BOOL       hasGLTexture() const ;
 	LLGLuint   getTexName() const ;		
 	BOOL       createGLTexture() ;
-	BOOL       createGLTexture(S32 discard_level, const LLImageRaw* imageraw, S32 usename = 0, BOOL to_create = TRUE, S32 category = LLViewerTexture::OTHER);
+	/*virtual*/ BOOL       createGLTexture(S32 discard_level, const LLImageRaw* imageraw, S32 usename = 0, BOOL to_create = TRUE, S32 category = LLTexture::OTHER);
 	virtual void setCachedRawImage(S32 discard_level, LLImageRaw* imageraw) ;
 
 	void       setFilteringOption(LLTexUnit::eTextureFilterOptions option);
-	void       setExplicitFormat(LLGLint internal_format, LLGLenum primary_format, LLGLenum type_format = 0, BOOL swap_bytes = FALSE);
-	void       setAddressMode(LLTexUnit::eTextureAddressMode mode);
+	/*virtual*/ void setExplicitFormat(LLGLint internal_format, LLGLenum primary_format, LLGLenum type_format = 0, BOOL swap_bytes = FALSE);
+	/*virtual*/ void setAddressMode(LLTexUnit::eTextureAddressMode mode);
 	BOOL       setSubImage(const LLImageRaw* imageraw, S32 x_pos, S32 y_pos, S32 width, S32 height);
 	BOOL       setSubImage(const U8* datap, S32 data_width, S32 data_height, S32 x_pos, S32 y_pos, S32 width, S32 height);
 	void       setGLTextureCreated (bool initialized);
 	void       setCategory(S32 category) ;
 
-	LLTexUnit::eTextureAddressMode getAddressMode(void) const ;
+	/*virtual*/ LLTexUnit::eTextureAddressMode getAddressMode(void) const ;
 	S32        getMaxDiscardLevel() const;
 	S32        getDiscardLevel() const;
-	S8		   getComponents() const ;		
+	/*virtual*/ S8 getComponents() const;
 	BOOL       getBoundRecently() const;
 	S32        getTextureMemory() const ;
 	LLGLenum   getPrimaryFormat() const;
@@ -761,6 +728,7 @@ class LLViewerTextureManager
 	static void init() ;
 	static void cleanup() ;
 };
+
 //
 //this class is used for test/debug only
 //it tracks the activities of the texture pipeline
diff --git a/indra/newview/llviewerwearable.cpp b/indra/newview/llviewerwearable.cpp
new file mode 100644
index 00000000000..b63f1f57cbf
--- /dev/null
+++ b/indra/newview/llviewerwearable.cpp
@@ -0,0 +1,900 @@
+/** 
+ * @file llviewerwearable.cpp
+ * @brief LLViewerWearable class implementation
+ *
+ * $LicenseInfo:firstyear=2012&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+#include "llviewerprecompiledheaders.h"
+
+#include "llagent.h"
+#include "llagentcamera.h"
+#include "llagentwearables.h"
+#include "llfloatersidepanelcontainer.h"
+#include "llnotificationsutil.h"
+#include "llsidepanelappearance.h"
+#include "lltextureentry.h"
+#include "llviewercontrol.h"
+#include "llviewertexlayer.h"
+#include "llviewerwearable.h"
+#include "llvoavatarself.h"
+#include "llvoavatardefines.h"
+
+using namespace LLVOAvatarDefines;
+
+// support class - remove for 2.1 (hackity hack hack)
+class LLOverrideBakedTextureUpdate
+{
+public:
+	LLOverrideBakedTextureUpdate(bool temp_state)
+	{
+		U32 num_bakes = (U32) LLVOAvatarDefines::BAKED_NUM_INDICES;
+		for( U32 index = 0; index < num_bakes; ++index )
+		{
+			composite_enabled[index] = gAgentAvatarp->isCompositeUpdateEnabled(index);
+		}
+		gAgentAvatarp->setCompositeUpdatesEnabled(temp_state);
+	}
+
+	~LLOverrideBakedTextureUpdate()
+	{
+		U32 num_bakes = (U32)LLVOAvatarDefines::BAKED_NUM_INDICES;		
+		for( U32 index = 0; index < num_bakes; ++index )
+		{
+			gAgentAvatarp->setCompositeUpdatesEnabled(index, composite_enabled[index]);
+		}
+	}
+private:
+	bool composite_enabled[LLVOAvatarDefines::BAKED_NUM_INDICES];
+};
+
+// Private local functions
+static std::string asset_id_to_filename(const LLUUID &asset_id);
+
+LLViewerWearable::LLViewerWearable(const LLTransactionID& transaction_id) :
+	LLWearable()
+{
+	mTransactionID = transaction_id;
+	mAssetID = mTransactionID.makeAssetID(gAgent.getSecureSessionID());
+}
+
+LLViewerWearable::LLViewerWearable(const LLAssetID& asset_id) :
+	LLWearable()
+{
+	mAssetID = asset_id;
+	mTransactionID.setNull();
+}
+
+// virtual
+LLViewerWearable::~LLViewerWearable()
+{
+}
+
+void LLViewerWearable::setItemID(const LLUUID& item_id)
+{
+	mItemID = item_id;
+}
+
+// virtual
+BOOL LLViewerWearable::exportFile(LLFILE* file) const
+{
+	mTextureIDMap.clear();
+	for (te_map_t::const_iterator iter = mTEMap.begin(); iter != mTEMap.end(); ++iter)
+	{
+		S32 te = iter->first;
+		const LLUUID& image_id = iter->second->getID();
+		mTextureIDMap[te] = image_id;
+	}
+	return LLWearable::exportFile(file);
+}
+
+// virtual
+LLWearable::EImportResult LLViewerWearable::importFile( LLFILE* file )
+{
+	// suppress texlayerset updates while wearables are being imported. Layersets will be updated
+	// when the wearables are "worn", not loaded. Note state will be restored when this object is destroyed.
+	LLOverrideBakedTextureUpdate stop_bakes(false);
+
+	LLWearable::EImportResult result = LLWearable::importFile(file);
+	if (LLWearable::FAILURE == result) return result;
+	if (LLWearable::BAD_HEADER == result)
+	{
+		// Shouldn't really log the asset id for security reasons, but
+		// we need it in this case.
+		llwarns << "Bad Wearable asset header: " << mAssetID << llendl;
+		//gVFS->dumpMap();
+		return result;
+	}
+
+	LLStringUtil::truncate(mName, DB_INV_ITEM_NAME_STR_LEN );
+	LLStringUtil::truncate(mDescription, DB_INV_ITEM_DESC_STR_LEN );
+
+	texture_id_map_t::const_iterator iter = mTextureIDMap.begin();
+	texture_id_map_t::const_iterator end = mTextureIDMap.end();
+	for (; iter != end; ++iter)
+	{
+		S32 te = iter->first;
+		const LLUUID& textureid = iter->second;
+		if( mTEMap.find(te) != mTEMap.end() )
+		{
+			delete mTEMap[te];
+		}
+		if( mSavedTEMap.find(te) != mSavedTEMap.end() )
+		{
+			delete mSavedTEMap[te];
+		}
+
+		LLViewerFetchedTexture* image = LLViewerTextureManager::getFetchedTexture( textureid );
+		if(gSavedSettings.getBOOL("DebugAvatarLocalTexLoadedTime"))
+		{
+			image->setLoadedCallback(LLVOAvatarSelf::debugOnTimingLocalTexLoaded,0,TRUE,FALSE, new LLVOAvatarSelf::LLAvatarTexData(textureid, (LLVOAvatarDefines::ETextureIndex)te), NULL);
+		}
+		mTEMap[te] = new LLLocalTextureObject(image, textureid);
+		mSavedTEMap[te] = new LLLocalTextureObject(image, textureid);
+		createLayers(te);
+	}
+
+	// copy all saved param values to working params
+	revertValues();
+
+	return result;
+}
+
+// Avatar parameter and texture definitions can change over time.
+// This function returns true if parameters or textures have been added or removed
+// since this wearable was created.
+BOOL LLViewerWearable::isOldVersion() const
+{
+	if (!isAgentAvatarValid()) return FALSE;
+
+	if( LLWearable::sCurrentDefinitionVersion < mDefinitionVersion )
+	{
+		llwarns << "Wearable asset has newer version (" << mDefinitionVersion << ") than XML (" << LLWearable::sCurrentDefinitionVersion << ")" << llendl;
+		llassert(0);
+	}
+
+	if( LLWearable::sCurrentDefinitionVersion != mDefinitionVersion )
+	{
+		return TRUE;
+	}
+
+	S32 param_count = 0;
+	for( LLViewerVisualParam* param = (LLViewerVisualParam*) gAgentAvatarp->getFirstVisualParam(); 
+		param;
+		param = (LLViewerVisualParam*) gAgentAvatarp->getNextVisualParam() )
+	{
+		if( (param->getWearableType() == mType) && (param->isTweakable() ) )
+		{
+			param_count++;
+			if( !is_in_map(mVisualParamIndexMap, param->getID() ) )
+			{
+				return TRUE;
+			}
+		}
+	}
+	if( param_count != mVisualParamIndexMap.size() )
+	{
+		return TRUE;
+	}
+
+
+	S32 te_count = 0;
+	for( S32 te = 0; te < TEX_NUM_INDICES; te++ )
+	{
+		if (LLVOAvatarDictionary::getTEWearableType((ETextureIndex) te) == mType)
+		{
+			te_count++;
+			if( !is_in_map(mTEMap, te ) )
+			{
+				return TRUE;
+			}
+		}
+	}
+	if( te_count != mTEMap.size() )
+	{
+		return TRUE;
+	}
+
+	return FALSE;
+}
+
+// Avatar parameter and texture definitions can change over time.
+// * If parameters or textures have been REMOVED since the wearable was created,
+// they're just ignored, so we consider the wearable clean even though isOldVersion()
+// will return true. 
+// * If parameters or textures have been ADDED since the wearable was created,
+// they are taken to have default values, so we consider the wearable clean
+// only if those values are the same as the defaults.
+BOOL LLViewerWearable::isDirty() const
+{
+	if (!isAgentAvatarValid()) return FALSE;
+
+	for( LLViewerVisualParam* param = (LLViewerVisualParam*) gAgentAvatarp->getFirstVisualParam(); 
+		param;
+		param = (LLViewerVisualParam*) gAgentAvatarp->getNextVisualParam() )
+	{
+		if( (param->getWearableType() == mType) 
+			&& (param->isTweakable() ) 
+			&& !param->getCrossWearable())
+		{
+			F32 current_weight = getVisualParamWeight(param->getID());
+			current_weight = llclamp( current_weight, param->getMinWeight(), param->getMaxWeight() );
+			F32 saved_weight = get_if_there(mSavedVisualParamMap, param->getID(), param->getDefaultWeight());
+			saved_weight = llclamp( saved_weight, param->getMinWeight(), param->getMaxWeight() );
+			
+			U8 a = F32_to_U8( saved_weight, param->getMinWeight(), param->getMaxWeight() );
+			U8 b = F32_to_U8( current_weight, param->getMinWeight(), param->getMaxWeight() );
+			if( a != b  )
+			{
+				return TRUE;
+			}
+		}
+	}
+
+	for( S32 te = 0; te < TEX_NUM_INDICES; te++ )
+	{
+		if (LLVOAvatarDictionary::getTEWearableType((ETextureIndex) te) == mType)
+		{
+			te_map_t::const_iterator current_iter = mTEMap.find(te);
+			if(current_iter != mTEMap.end())
+			{
+ 				const LLUUID& current_image_id = current_iter->second->getID();
+				te_map_t::const_iterator saved_iter = mSavedTEMap.find(te);
+				if(saved_iter != mSavedTEMap.end())
+				{
+					const LLUUID& saved_image_id = saved_iter->second->getID();
+					if (saved_image_id != current_image_id)
+					{
+						// saved vs current images are different, wearable is dirty
+						return TRUE;
+					}
+				}
+				else
+				{
+					// image found in current image list but not saved image list
+					return TRUE;
+				}
+			}
+		}
+	}
+
+	return FALSE;
+}
+
+
+void LLViewerWearable::setParamsToDefaults()
+{
+	if (!isAgentAvatarValid()) return;
+
+	for( LLVisualParam* param = gAgentAvatarp->getFirstVisualParam(); param; param = gAgentAvatarp->getNextVisualParam() )
+	{
+		if( (((LLViewerVisualParam*)param)->getWearableType() == mType ) && (param->isTweakable() ) )
+		{
+			setVisualParamWeight(param->getID(),param->getDefaultWeight(), FALSE);
+		}
+	}
+}
+
+void LLViewerWearable::setTexturesToDefaults()
+{
+	for( S32 te = 0; te < TEX_NUM_INDICES; te++ )
+	{
+		if (LLVOAvatarDictionary::getTEWearableType((ETextureIndex) te) == mType)
+		{
+			LLUUID id = getDefaultTextureImageID((ETextureIndex) te);
+			LLViewerFetchedTexture * image = LLViewerTextureManager::getFetchedTexture( id );
+			if( mTEMap.find(te) == mTEMap.end() )
+			{
+				mTEMap[te] = new LLLocalTextureObject(image, id);
+				createLayers(te);
+			}
+			else
+			{
+				// Local Texture Object already created, just set image and UUID
+				LLLocalTextureObject *lto = mTEMap[te];
+				lto->setID(id);
+				lto->setImage(image);
+			}
+		}
+	}
+}
+
+
+//static
+const LLUUID LLViewerWearable::getDefaultTextureImageID(ETextureIndex index)
+{
+	const LLVOAvatarDictionary::TextureEntry *texture_dict = LLVOAvatarDictionary::getInstance()->getTexture(index);
+	const std::string &default_image_name = texture_dict->mDefaultImageName;
+	if (default_image_name == "")
+	{
+		return IMG_DEFAULT_AVATAR;
+	}
+	else
+	{
+		return LLUUID(gSavedSettings.getString(default_image_name));
+	}
+}
+
+
+// Updates the user's avatar's appearance
+void LLViewerWearable::writeToAvatar()
+{
+	if (!isAgentAvatarValid()) return;
+
+	ESex old_sex = gAgentAvatarp->getSex();
+
+	// Pull params
+	for( LLVisualParam* param = gAgentAvatarp->getFirstVisualParam(); param; param = gAgentAvatarp->getNextVisualParam() )
+	{
+		// cross-wearable parameters are not authoritative, as they are driven by a different wearable. So don't copy the values to the
+		// avatar object if cross wearable. Cross wearable params get their values from the avatar, they shouldn't write the other way.
+		if( (((LLViewerVisualParam*)param)->getWearableType() == mType) && (!((LLViewerVisualParam*)param)->getCrossWearable()) )
+		{
+			S32 param_id = param->getID();
+			F32 weight = getVisualParamWeight(param_id);
+
+			gAgentAvatarp->setVisualParamWeight( param_id, weight, FALSE );
+		}
+	}
+
+	// Pull texture entries
+	for( S32 te = 0; te < TEX_NUM_INDICES; te++ )
+	{
+		if (LLVOAvatarDictionary::getTEWearableType((ETextureIndex) te) == mType)
+		{
+			te_map_t::const_iterator iter = mTEMap.find(te);
+			LLUUID image_id;
+			if(iter != mTEMap.end())
+			{
+				image_id = iter->second->getID();
+			}
+			else
+			{	
+				image_id = getDefaultTextureImageID((ETextureIndex) te);
+			}
+			LLViewerTexture* image = LLViewerTextureManager::getFetchedTexture( image_id, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE );
+			// MULTI-WEARABLE: assume index 0 will be used when writing to avatar. TODO: eliminate the need for this.
+			gAgentAvatarp->setLocalTextureTE(te, image, 0);
+		}
+	}
+
+	ESex new_sex = gAgentAvatarp->getSex();
+	if( old_sex != new_sex )
+	{
+		gAgentAvatarp->updateSexDependentLayerSets( FALSE );
+	}	
+	
+//	if( upload_bake )
+//	{
+//		gAgent.sendAgentSetAppearance();
+//	}
+}
+
+
+// Updates the user's avatar's appearance, replacing this wearables' parameters and textures with default values.
+// static 
+void LLViewerWearable::removeFromAvatar( LLWearableType::EType type, BOOL upload_bake )
+{
+	if (!isAgentAvatarValid()) return;
+
+	// You can't just remove body parts.
+	if( (type == LLWearableType::WT_SHAPE) ||
+		(type == LLWearableType::WT_SKIN) ||
+		(type == LLWearableType::WT_HAIR) ||
+		(type == LLWearableType::WT_EYES) )
+	{
+		return;
+	}
+
+	// Pull params
+	for( LLVisualParam* param = gAgentAvatarp->getFirstVisualParam(); param; param = gAgentAvatarp->getNextVisualParam() )
+	{
+		if( (((LLViewerVisualParam*)param)->getWearableType() == type) && (param->isTweakable() ) )
+		{
+			S32 param_id = param->getID();
+			gAgentAvatarp->setVisualParamWeight( param_id, param->getDefaultWeight(), upload_bake );
+		}
+	}
+
+	if(gAgentCamera.cameraCustomizeAvatar())
+	{
+		LLFloaterSidePanelContainer::showPanel("appearance", LLSD().with("type", "edit_outfit"));
+	}
+
+	gAgentAvatarp->updateVisualParams();
+	gAgentAvatarp->wearableUpdated(type, FALSE);
+
+//	if( upload_bake )
+//	{
+//		gAgent.sendAgentSetAppearance();
+//	}
+}
+
+// Does not copy mAssetID.
+// Definition version is current: removes obsolete enties and creates default values for new ones.
+void LLViewerWearable::copyDataFrom(const LLViewerWearable* src)
+{
+	if (!isAgentAvatarValid()) return;
+
+	mDefinitionVersion = LLWearable::sCurrentDefinitionVersion;
+
+	mName = src->mName;
+	mDescription = src->mDescription;
+	mPermissions = src->mPermissions;
+	mSaleInfo = src->mSaleInfo;
+
+	setType(src->mType);
+
+	mSavedVisualParamMap.clear();
+	// Deep copy of mVisualParamMap (copies only those params that are current, filling in defaults where needed)
+	for (LLViewerVisualParam* param = (LLViewerVisualParam*) gAgentAvatarp->getFirstVisualParam(); 
+		param;
+		param = (LLViewerVisualParam*) gAgentAvatarp->getNextVisualParam() )
+	{
+		if( (param->getWearableType() == mType) )
+		{
+			S32 id = param->getID();
+			F32 weight = src->getVisualParamWeight(id);
+			mSavedVisualParamMap[id] = weight;
+		}
+	}
+
+	destroyTextures();
+	// Deep copy of mTEMap (copies only those tes that are current, filling in defaults where needed)
+	for (S32 te = 0; te < TEX_NUM_INDICES; te++)
+	{
+		if (LLVOAvatarDictionary::getTEWearableType((ETextureIndex) te) == mType)
+		{
+			te_map_t::const_iterator iter = src->mTEMap.find(te);
+			LLUUID image_id;
+			LLViewerFetchedTexture *image = NULL;
+			if(iter != src->mTEMap.end())
+			{
+				image = dynamic_cast<LLViewerFetchedTexture*> (src->getLocalTextureObject(te)->getImage());
+				image_id = src->getLocalTextureObject(te)->getID();
+				mTEMap[te] = new LLLocalTextureObject(image, image_id);
+				mSavedTEMap[te] = new LLLocalTextureObject(image, image_id);
+				mTEMap[te]->setBakedReady(src->getLocalTextureObject(te)->getBakedReady());
+				mTEMap[te]->setDiscard(src->getLocalTextureObject(te)->getDiscard());
+			}
+			else
+			{
+				image_id = getDefaultTextureImageID((ETextureIndex) te);
+				image = LLViewerTextureManager::getFetchedTexture( image_id );
+				mTEMap[te] = new LLLocalTextureObject(image, image_id);
+				mSavedTEMap[te] = new LLLocalTextureObject(image, image_id);
+			}
+			createLayers(te);
+		}
+	}
+
+	// Probably reduntant, but ensure that the newly created wearable is not dirty by setting current value of params in new wearable
+	// to be the same as the saved values (which were loaded from src at param->cloneParam(this))
+	revertValues();
+}
+
+
+LLLocalTextureObject* LLViewerWearable::getLocalTextureObject(S32 index)
+{
+	te_map_t::iterator iter = mTEMap.find(index);
+	if( iter != mTEMap.end() )
+	{
+		LLLocalTextureObject* lto = iter->second;
+		return lto;
+	}
+	return NULL;
+}
+
+const LLLocalTextureObject* LLViewerWearable::getLocalTextureObject(S32 index) const
+{
+	te_map_t::const_iterator iter = mTEMap.find(index);
+	if( iter != mTEMap.end() )
+	{
+		const LLLocalTextureObject* lto = iter->second;
+		return lto;
+	}
+	return NULL;
+}
+
+std::vector<LLLocalTextureObject*> LLViewerWearable::getLocalTextureListSeq()
+{
+	std::vector<LLLocalTextureObject*> result;
+
+	for(te_map_t::const_iterator iter = mTEMap.begin();
+		iter != mTEMap.end(); iter++)
+	{
+		LLLocalTextureObject* lto = iter->second;
+		result.push_back(lto);
+	}
+
+	return result;
+}
+
+void LLViewerWearable::setLocalTextureObject(S32 index, LLLocalTextureObject &lto)
+{
+	if( mTEMap.find(index) != mTEMap.end() )
+	{
+		mTEMap.erase(index);
+	}
+	mTEMap[index] = new LLLocalTextureObject(lto);
+}
+
+void LLViewerWearable::revertValues()
+{
+	//update saved settings so wearable is no longer dirty
+	// non-driver params first
+	for (param_map_t::const_iterator iter = mSavedVisualParamMap.begin(); iter != mSavedVisualParamMap.end(); iter++)
+	{
+		S32 id = iter->first;
+		F32 value = iter->second;
+		LLVisualParam *param = getVisualParam(id);
+		if(param &&  !dynamic_cast<LLDriverParam*>(param) )
+		{
+			setVisualParamWeight(id, value, TRUE);
+		}
+	}
+
+	//then driver params
+	for (param_map_t::const_iterator iter = mSavedVisualParamMap.begin(); iter != mSavedVisualParamMap.end(); iter++)
+	{
+		S32 id = iter->first;
+		F32 value = iter->second;
+		LLVisualParam *param = getVisualParam(id);
+		if(param &&  dynamic_cast<LLDriverParam*>(param) )
+		{
+			setVisualParamWeight(id, value, TRUE);
+		}
+	}
+
+	// make sure that saved values are sane
+	for (param_map_t::const_iterator iter = mSavedVisualParamMap.begin(); iter != mSavedVisualParamMap.end(); iter++)
+	{
+		S32 id = iter->first;
+		LLVisualParam *param = getVisualParam(id);
+		if( param )
+		{
+			mSavedVisualParamMap[id] = param->getWeight();
+		}
+	}
+
+	syncImages(mSavedTEMap, mTEMap);
+
+
+	LLSidepanelAppearance *panel = dynamic_cast<LLSidepanelAppearance*>(LLFloaterSidePanelContainer::getPanel("appearance"));
+	if( panel )
+	{
+		panel->updateScrollingPanelList();
+	}
+}
+
+BOOL LLViewerWearable::isOnTop() const
+{ 
+	return (this == gAgentWearables.getTopWearable(mType));
+}
+
+void LLViewerWearable::saveValues()
+{
+	//update saved settings so wearable is no longer dirty
+	mSavedVisualParamMap.clear();
+	for (visual_param_index_map_t::const_iterator iter = mVisualParamIndexMap.begin(); iter != mVisualParamIndexMap.end(); ++iter)
+	{
+		S32 id = iter->first;
+		LLVisualParam *wearable_param = iter->second;
+		F32 value = wearable_param->getWeight();
+		mSavedVisualParamMap[id] = value;
+	}
+
+	// Deep copy of mTEMap (copies only those tes that are current, filling in defaults where needed)
+	syncImages(mTEMap, mSavedTEMap);
+
+
+	LLSidepanelAppearance *panel = dynamic_cast<LLSidepanelAppearance*>(LLFloaterSidePanelContainer::getPanel("appearance"));
+	if( panel )
+	{
+		panel->updateScrollingPanelList();
+	}
+}
+
+void LLViewerWearable::syncImages(te_map_t &src, te_map_t &dst)
+{
+	// Deep copy of src (copies only those tes that are current, filling in defaults where needed)
+	for( S32 te = 0; te < TEX_NUM_INDICES; te++ )
+	{
+		if (LLVOAvatarDictionary::getTEWearableType((ETextureIndex) te) == mType)
+		{
+			te_map_t::const_iterator iter = src.find(te);
+			LLUUID image_id;
+			LLViewerFetchedTexture *image = NULL;
+			LLLocalTextureObject *lto = NULL;
+			if(iter != src.end())
+			{
+				// there's a Local Texture Object in the source image map. Use this to populate the values to store in the destination image map.
+				lto = iter->second;
+				image = dynamic_cast<LLViewerFetchedTexture*> (lto->getImage());
+				image_id = lto->getID();
+			}
+			else
+			{
+				// there is no Local Texture Object in the source image map. Get defaults values for populating the destination image map.
+				image_id = getDefaultTextureImageID((ETextureIndex) te);
+				image = LLViewerTextureManager::getFetchedTexture( image_id );
+			}
+
+			if( dst.find(te) != dst.end() )
+			{
+				// there's already an entry in the destination map for the texture. Just update its values.
+				dst[te]->setImage(image);
+				dst[te]->setID(image_id);
+			}
+			else
+			{
+				// no entry found in the destination map, we need to create a new Local Texture Object
+				dst[te] = new LLLocalTextureObject(image, image_id);
+			}
+
+			if( lto )
+			{
+				// If we pulled values from a Local Texture Object in the source map, make sure the proper flags are set in the new (or updated) entry in the destination map.
+				dst[te]->setBakedReady(lto->getBakedReady());
+				dst[te]->setDiscard(lto->getDiscard());
+			}
+		}
+	}
+}
+
+void LLViewerWearable::destroyTextures()
+{
+	for( te_map_t::iterator iter = mTEMap.begin(); iter != mTEMap.end(); ++iter )
+	{
+		LLLocalTextureObject *lto = iter->second;
+		delete lto;
+	}
+	mTEMap.clear();
+	for( te_map_t::iterator iter = mSavedTEMap.begin(); iter != mSavedTEMap.end(); ++iter )
+	{
+		LLLocalTextureObject *lto = iter->second;
+		delete lto;
+	}
+	mSavedTEMap.clear();
+}
+
+void LLViewerWearable::pullCrossWearableValues()
+{
+	// scan through all of the avatar's visual parameters
+	for (LLViewerVisualParam* param = (LLViewerVisualParam*) gAgentAvatarp->getFirstVisualParam(); 
+		 param;
+		 param = (LLViewerVisualParam*) gAgentAvatarp->getNextVisualParam())
+	{
+		if( param )
+		{
+			LLDriverParam *driver_param = dynamic_cast<LLDriverParam*>(param);
+			if(driver_param)
+			{
+				// parameter is a driver parameter, have it update its 
+				driver_param->updateCrossDrivenParams(getType());
+			}
+		}
+	}
+}
+
+
+void LLViewerWearable::setLabelUpdated() const
+{ 
+	gInventory.addChangedMask(LLInventoryObserver::LABEL, getItemID());
+}
+
+
+void LLViewerWearable::refreshName()
+{
+	LLUUID item_id = getItemID();
+	LLInventoryItem* item = gInventory.getItem(item_id);
+	if( item )
+	{
+		mName = item->getName();
+	}
+}
+
+struct LLWearableSaveData
+{
+	LLWearableType::EType mType;
+};
+
+void LLViewerWearable::saveNewAsset() const
+{
+//	llinfos << "LLViewerWearable::saveNewAsset() type: " << getTypeName() << llendl;
+	//llinfos << *this << llendl;
+
+	const std::string filename = asset_id_to_filename(mAssetID);
+	LLFILE* fp = LLFile::fopen(filename, "wb");		/* Flawfinder: ignore */
+	BOOL successful_save = FALSE;
+	if(fp && exportFile(fp))
+	{
+		successful_save = TRUE;
+	}
+	if(fp)
+	{
+		fclose(fp);
+		fp = NULL;
+	}
+	if(!successful_save)
+	{
+		std::string buffer = llformat("Unable to save '%s' to wearable file.", mName.c_str());
+		llwarns << buffer << llendl;
+		
+		LLSD args;
+		args["NAME"] = mName;
+		LLNotificationsUtil::add("CannotSaveWearableOutOfSpace", args);
+		return;
+	}
+
+	// save it out to database
+	if( gAssetStorage )
+	{
+		 /*
+		std::string url = gAgent.getRegion()->getCapability("NewAgentInventory");
+		if (!url.empty())
+		{
+			llinfos << "Update Agent Inventory via capability" << llendl;
+			LLSD body;
+			body["folder_id"] = gInventory.findCategoryUUIDForType(LLFolderType::assetToFolderType(getAssetType()));
+			body["asset_type"] = LLAssetType::lookup(getAssetType());
+			body["inventory_type"] = LLInventoryType::lookup(LLInventoryType::IT_WEARABLE);
+			body["name"] = getName();
+			body["description"] = getDescription();
+			LLHTTPClient::post(url, body, new LLNewAgentInventoryResponder(body, filename));
+		}
+		else
+		{
+		}
+		 */
+		 LLWearableSaveData* data = new LLWearableSaveData;
+		 data->mType = mType;
+		 gAssetStorage->storeAssetData(filename, mTransactionID, getAssetType(),
+                                     &LLViewerWearable::onSaveNewAssetComplete,
+                                     (void*)data);
+	}
+}
+
+// static
+void LLViewerWearable::onSaveNewAssetComplete(const LLUUID& new_asset_id, void* userdata, S32 status, LLExtStat ext_status) // StoreAssetData callback (fixed)
+{
+	LLWearableSaveData* data = (LLWearableSaveData*)userdata;
+	const std::string& type_name = LLWearableType::getTypeName(data->mType);
+	if(0 == status)
+	{
+		// Success
+		llinfos << "Saved wearable " << type_name << llendl;
+	}
+	else
+	{
+		std::string buffer = llformat("Unable to save %s to central asset store.", type_name.c_str());
+		llwarns << buffer << " Status: " << status << llendl;
+		LLSD args;
+		args["NAME"] = type_name;
+		LLNotificationsUtil::add("CannotSaveToAssetStore", args);
+	}
+
+	// Delete temp file
+	const std::string src_filename = asset_id_to_filename(new_asset_id);
+	LLFile::remove(src_filename);
+
+	// delete the context data
+	delete data;
+
+}
+
+void LLViewerWearable::createLayers(S32 te)
+{
+	LLViewerTexLayerSet *layer_set = gAgentAvatarp->getLayerSet((ETextureIndex)te);
+	if (layer_set)
+	{
+		layer_set->cloneTemplates(mTEMap[te], (ETextureIndex)te, this);
+	}
+	else
+	{
+		llerrs << "could not find layerset for LTO in wearable!" << llendl;
+	}
+}
+
+void LLViewerWearable::createVisualParams()
+{
+	for (LLViewerVisualParam* param = (LLViewerVisualParam*) gAgentAvatarp->getFirstVisualParam(); 
+		 param;
+		 param = (LLViewerVisualParam*) gAgentAvatarp->getNextVisualParam())
+	{
+		if (param->getWearableType() == mType)
+		{
+			addVisualParam(param->cloneParam(this));
+		}
+	}
+
+	// resync driver parameters to point to the newly cloned driven parameters
+	for (visual_param_index_map_t::iterator param_iter = mVisualParamIndexMap.begin(); 
+		 param_iter != mVisualParamIndexMap.end(); 
+		 ++param_iter)
+	{
+		LLVisualParam* param = param_iter->second;
+		LLVisualParam*(LLWearable::*wearable_function)(S32)const = &LLWearable::getVisualParam; 
+		// need this line to disambiguate between versions of LLCharacter::getVisualParam()
+		LLVisualParam*(LLAvatarAppearance::*param_function)(S32)const = &LLAvatarAppearance::getVisualParam; 
+		param->resetDrivenParams();
+		if(!param->linkDrivenParams(boost::bind(wearable_function,(LLWearable*)this, _1), false))
+		{
+			if( !param->linkDrivenParams(boost::bind(param_function,gAgentAvatarp.get(),_1 ), true))
+			{
+				llwarns << "could not link driven params for wearable " << getName() << " id: " << param->getID() << llendl;
+				continue;
+			}
+		}
+	}
+}
+
+void LLViewerWearable::setVisualParams()
+{
+	for (visual_param_index_map_t::const_iterator iter = mVisualParamIndexMap.begin(); iter != mVisualParamIndexMap.end(); iter++)
+	{
+		S32 id = iter->first;
+		LLVisualParam *wearable_param = iter->second;
+		F32 value = wearable_param->getWeight();
+		gAgentAvatarp->setVisualParamWeight(id, value, FALSE);
+	}
+}
+
+
+
+std::ostream& operator<<(std::ostream &s, const LLViewerWearable &w)
+{
+	s << "wearable " << LLWearableType::getTypeName(w.mType) << "\n";
+	s << "    Name: " << w.mName << "\n";
+	s << "    Desc: " << w.mDescription << "\n";
+	//w.mPermissions
+	//w.mSaleInfo
+
+	s << "    Params:" << "\n";
+	for (LLWearable::visual_param_index_map_t::const_iterator iter = w.mVisualParamIndexMap.begin();
+		 iter != w.mVisualParamIndexMap.end(); ++iter)
+	{
+		S32 param_id = iter->first;
+		LLVisualParam *wearable_param = iter->second;
+		F32 param_weight = wearable_param->getWeight();
+		s << "        " << param_id << " " << param_weight << "\n";
+	}
+
+	s << "    Textures:" << "\n";
+	for (LLViewerWearable::te_map_t::const_iterator iter = w.mTEMap.begin();
+		 iter != w.mTEMap.end(); ++iter)
+	{
+		S32 te = iter->first;
+		const LLUUID& image_id = iter->second->getID();
+		s << "        " << te << " " << image_id << "\n";
+	}
+	return s;
+}
+
+std::string asset_id_to_filename(const LLUUID &asset_id)
+{
+	std::string asset_id_string;
+	asset_id.toString(asset_id_string);
+	std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_CACHE,asset_id_string) + ".wbl";	
+	return filename;
+}
+
diff --git a/indra/newview/llviewerwearable.h b/indra/newview/llviewerwearable.h
new file mode 100644
index 00000000000..857900f5832
--- /dev/null
+++ b/indra/newview/llviewerwearable.h
@@ -0,0 +1,116 @@
+/** 
+ * @file llviewerwearable.h
+ * @brief LLViewerWearable class header file
+ *
+ * $LicenseInfo:firstyear=2012&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_VIEWER_WEARABLE_H
+#define LL_VIEWER_WEARABLE_H
+
+#include "llwearable.h"
+#include "llvoavatardefines.h"
+
+class LLViewerWearable : public LLWearable
+{
+	friend class LLWearableList;
+
+	//--------------------------------------------------------------------
+	// Constructors and destructors
+	//--------------------------------------------------------------------
+private:
+	// Private constructors used by LLViewerWearableList
+	LLViewerWearable(const LLTransactionID& transactionID);
+	LLViewerWearable(const LLAssetID& assetID);
+public:
+	virtual ~LLViewerWearable();
+
+	//--------------------------------------------------------------------
+	// Accessors
+	//--------------------------------------------------------------------
+public:
+	const LLUUID&				getItemID() const { return mItemID; }
+	const LLAssetID&			getAssetID() const { return mAssetID; }
+	const LLTransactionID&		getTransactionID() const { return mTransactionID; }
+	void						setItemID(const LLUUID& item_id);
+
+public:
+	/*virtual*/ BOOL	exportFile(LLFILE* file) const;
+	/*virtual*/ EImportResult	importFile(LLFILE* file);
+
+	BOOL				isDirty() const;
+	BOOL				isOldVersion() const;
+
+	/*virtual*/ void	writeToAvatar();
+	void				removeFromAvatar( BOOL upload_bake )	{ LLViewerWearable::removeFromAvatar( mType, upload_bake ); }
+	static void			removeFromAvatar( LLWearableType::EType type, BOOL upload_bake ); 
+
+	void				setParamsToDefaults();
+	void				setTexturesToDefaults();
+
+	static const LLUUID			getDefaultTextureImageID(LLVOAvatarDefines::ETextureIndex index);
+
+
+	void				saveNewAsset() const;
+	static void			onSaveNewAssetComplete( const LLUUID& asset_uuid, void* user_data, S32 status, LLExtStat ext_status );
+
+	void				copyDataFrom(const LLViewerWearable* src);
+
+	friend std::ostream& operator<<(std::ostream &s, const LLViewerWearable &w);
+
+	/*virtual*/ LLLocalTextureObject* getLocalTextureObject(S32 index);
+	const LLLocalTextureObject* getLocalTextureObject(S32 index) const;
+	std::vector<LLLocalTextureObject*> getLocalTextureListSeq();
+	void				setLocalTextureObject(S32 index, LLLocalTextureObject &lto);
+
+	void				revertValues();
+	void				saveValues();
+	void				pullCrossWearableValues();		
+
+	BOOL				isOnTop() const;
+
+	// Something happened that requires the wearable's label to be updated (e.g. worn/unworn).
+	void				setLabelUpdated() const;
+
+	// the wearable was worn. make sure the name of the wearable object matches the LLViewerInventoryItem,
+	// not the wearable asset itself.
+	void				refreshName();
+
+protected:
+	void 				createLayers(S32 te);
+	/*virtual*/void 	createVisualParams();
+	void				setVisualParams();
+
+	typedef std::map<S32, LLLocalTextureObject*> te_map_t;
+	void				syncImages(te_map_t &src, te_map_t &dst);
+	void				destroyTextures();	
+	LLTransactionID		mTransactionID;
+	LLAssetID			mAssetID;
+	LLUUID				mItemID;  // ID of the inventory item in the agent's inventory	
+
+	te_map_t mTEMap;				// maps TE to LocalTextureObject
+	te_map_t mSavedTEMap;			// last saved version of TEMap
+};
+
+
+#endif  // LL_VIEWER_WEARABLE_H
+
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 4894f21e676..dac479b2e01 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -77,15 +77,16 @@
 #include "llselectmgr.h"
 #include "llsprite.h"
 #include "lltargetingmotion.h"
-#include "lltexlayer.h"
 #include "lltoolmorph.h"
 #include "llviewercamera.h"
+#include "llviewertexlayer.h"
 #include "llviewertexturelist.h"
 #include "llviewermenu.h"
 #include "llviewerobjectlist.h"
 #include "llviewerparcelmgr.h"
 #include "llviewershadermgr.h"
 #include "llviewerstats.h"
+#include "llviewerwearable.h"
 #include "llvoavatarself.h"
 #include "llvovolume.h"
 #include "llworld.h"
@@ -192,8 +193,6 @@ const S32 MAX_BUBBLE_CHAT_UTTERANCES = 12;
 const F32 CHAT_FADE_TIME = 8.0;
 const F32 BUBBLE_CHAT_TIME = CHAT_FADE_TIME * 3.f;
 
-const LLColor4 DUMMY_COLOR = LLColor4(0.5,0.5,0.5,1.0);
-
 enum ERenderName
 {
 	RENDER_NAME_NEVER,
@@ -645,8 +644,8 @@ static F32 calc_bouncy_animation(F32 x);
 LLVOAvatar::LLVOAvatar(const LLUUID& id,
 					   const LLPCode pcode,
 					   LLViewerRegion* regionp) :
+	LLAvatarAppearance(),
 	LLViewerObject(id, pcode, regionp),
-	mIsDummy(FALSE),
 	mSpecialRenderMode(0),
 	mAttachmentGeometryBytes(0),
 	mAttachmentSurfaceArea(0.f),
@@ -678,9 +677,6 @@ LLVOAvatar::LLVOAvatar(const LLUUID& id,
 	mFirstAppearanceMessageReceived( FALSE ),
 	mCulled( FALSE ),
 	mVisibilityRank(0),
-	mTexSkinColor( NULL ),
-	mTexHairColor( NULL ),
-	mTexEyeColor( NULL ),
 	mNeedsSkin(FALSE),
 	mLastSkinTime(0.f),
 	mUpdatePeriod(1),
@@ -768,7 +764,6 @@ LLVOAvatar::LLVOAvatar(const LLUUID& id,
 
 	mRuthTimer.reset();
 	mRuthDebugTimer.reset();
-	mDebugExistenceTimer.reset();
 	mPelvisOffset = LLVector3(0.0f,0.0f,0.0f);
 	mLastPelvisToFoot = 0.0f;
 	mPelvisFixup = 0.0f;
@@ -1133,7 +1128,7 @@ void LLVOAvatar::resetImpostors()
 // static
 void LLVOAvatar::deleteCachedImages(bool clearAll)
 {	
-	if (LLTexLayerSet::sHasCaches)
+	if (LLViewerTexLayerSet::sHasCaches)
 	{
 		lldebugs << "Deleting layer set caches" << llendl;
 		for (std::vector<LLCharacter*>::iterator iter = LLCharacter::sInstances.begin();
@@ -1142,7 +1137,7 @@ void LLVOAvatar::deleteCachedImages(bool clearAll)
 			LLVOAvatar* inst = (LLVOAvatar*) *iter;
 			inst->deleteLayerSetCaches(clearAll);
 		}
-		LLTexLayerSet::sHasCaches = FALSE;
+		LLViewerTexLayerSet::sHasCaches = FALSE;
 	}
 	LLVOAvatarSelf::deleteScratchTextures();
 	LLTexLayerStaticImageList::getInstance()->deleteCachedImages();
@@ -5864,6 +5859,30 @@ void LLVOAvatar::updateVisualParams()
 	updateHeadOffset();
 }
 
+// virtual
+U32 LLVOAvatar::getWearableCount(const LLWearableType::EType type) const
+{
+	return gAgentWearables.getWearableCount(type);
+}
+
+// virtual
+U32 LLVOAvatar::getWearableCount(const U32 tex_index) const
+{
+	return gAgentWearables.getWearableCount(tex_index);
+}
+
+// virtual
+LLWearable* LLVOAvatar::getWearable(const LLWearableType::EType type, U32 index /*= 0*/)
+{
+	return gAgentWearables.getWearable(type, index);
+}
+
+// virtual
+const LLWearable* LLVOAvatar::getWearable(const LLWearableType::EType type, U32 index /*= 0*/) const
+{
+	return gAgentWearables.getWearable(type, index);
+}
+
 //-----------------------------------------------------------------------------
 // isActive()
 //-----------------------------------------------------------------------------
@@ -6453,26 +6472,6 @@ S32 LLVOAvatar::getAttachmentCount()
 	return count;
 }
 
-LLColor4 LLVOAvatar::getGlobalColor( const std::string& color_name ) const
-{
-	if (color_name=="skin_color" && mTexSkinColor)
-	{
-		return mTexSkinColor->getColor();
-	}
-	else if(color_name=="hair_color" && mTexHairColor)
-	{
-		return mTexHairColor->getColor();
-	}
-	if(color_name=="eye_color" && mTexEyeColor)
-	{
-		return mTexEyeColor->getColor();
-	}
-	else
-	{
-//		return LLColor4( .5f, .5f, .5f, .5f );
-		return LLColor4( 0.f, 1.f, 1.f, 1.f ); // good debugging color
-	}
-}
 
 // virtual
 void LLVOAvatar::invalidateComposite( LLTexLayerSet* layerset, BOOL upload_result )
@@ -6483,6 +6482,7 @@ void LLVOAvatar::invalidateAll()
 {
 }
 
+// virtual
 void LLVOAvatar::onGlobalColorChanged(const LLTexGlobalColor* global_color, BOOL upload_bake )
 {
 	if (global_color == mTexSkinColor)
@@ -6682,6 +6682,7 @@ LLMotion* LLVOAvatar::findMotion(const LLUUID& id) const
 // updateMeshTextures()
 // Uses the current TE values to set the meshes' and layersets' textures.
 //-----------------------------------------------------------------------------
+// virtual
 void LLVOAvatar::updateMeshTextures()
 {
     // llinfos << "updateMeshTextures" << llendl;
@@ -6903,7 +6904,7 @@ BOOL LLVOAvatar::morphMaskNeedsUpdate(LLVOAvatarDefines::EBakedTextureIndex inde
 	{
 		if (isSelf())
 		{
-			LLTexLayerSet *layer_set = mBakedTextureDatas[index].mTexLayerSet;
+			LLViewerTexLayerSet *layer_set = mBakedTextureDatas[index].mTexLayerSet;
 			if (layer_set)
 			{
 				return !layer_set->isMorphValid();
@@ -6973,112 +6974,6 @@ void LLVOAvatar::releaseComponentTextures()
 	}
 }
 
-//static
-BOOL LLVOAvatar::teToColorParams( ETextureIndex te, U32 *param_name )
-{
-	switch( te )
-	{
-		case TEX_UPPER_SHIRT:
-			param_name[0] = 803; //"shirt_red";
-			param_name[1] = 804; //"shirt_green";
-			param_name[2] = 805; //"shirt_blue";
-			break;
-
-		case TEX_LOWER_PANTS:
-			param_name[0] = 806; //"pants_red";
-			param_name[1] = 807; //"pants_green";
-			param_name[2] = 808; //"pants_blue";
-			break;
-
-		case TEX_LOWER_SHOES:
-			param_name[0] = 812; //"shoes_red";
-			param_name[1] = 813; //"shoes_green";
-			param_name[2] = 817; //"shoes_blue";
-			break;
-
-		case TEX_LOWER_SOCKS:
-			param_name[0] = 818; //"socks_red";
-			param_name[1] = 819; //"socks_green";
-			param_name[2] = 820; //"socks_blue";
-			break;
-
-		case TEX_UPPER_JACKET:
-		case TEX_LOWER_JACKET:
-			param_name[0] = 834; //"jacket_red";
-			param_name[1] = 835; //"jacket_green";
-			param_name[2] = 836; //"jacket_blue";
-			break;
-
-		case TEX_UPPER_GLOVES:
-			param_name[0] = 827; //"gloves_red";
-			param_name[1] = 829; //"gloves_green";
-			param_name[2] = 830; //"gloves_blue";
-			break;
-
-		case TEX_UPPER_UNDERSHIRT:
-			param_name[0] = 821; //"undershirt_red";
-			param_name[1] = 822; //"undershirt_green";
-			param_name[2] = 823; //"undershirt_blue";
-			break;
-	
-		case TEX_LOWER_UNDERPANTS:
-			param_name[0] = 824; //"underpants_red";
-			param_name[1] = 825; //"underpants_green";
-			param_name[2] = 826; //"underpants_blue";
-			break;
-
-		case TEX_SKIRT:
-			param_name[0] = 921; //"skirt_red";
-			param_name[1] = 922; //"skirt_green";
-			param_name[2] = 923; //"skirt_blue";
-			break;
-
-		case TEX_HEAD_TATTOO:
-		case TEX_LOWER_TATTOO:
-		case TEX_UPPER_TATTOO:
-			param_name[0] = 1071; //"tattoo_red";
-			param_name[1] = 1072; //"tattoo_green";
-			param_name[2] = 1073; //"tattoo_blue";
-			break;	
-
-		default:
-			llassert(0);
-			return FALSE;
-	}
-
-	return TRUE;
-}
-
-void LLVOAvatar::setClothesColor( ETextureIndex te, const LLColor4& new_color, BOOL upload_bake )
-{
-	U32 param_name[3];
-	if( teToColorParams( te, param_name ) )
-	{
-		setVisualParamWeight( param_name[0], new_color.mV[VX], upload_bake );
-		setVisualParamWeight( param_name[1], new_color.mV[VY], upload_bake );
-		setVisualParamWeight( param_name[2], new_color.mV[VZ], upload_bake );
-	}
-}
-
-LLColor4 LLVOAvatar::getClothesColor( ETextureIndex te )
-{
-	LLColor4 color;
-	U32 param_name[3];
-	if( teToColorParams( te, param_name ) )
-	{
-		color.mV[VX] = getVisualParamWeight( param_name[0] );
-		color.mV[VY] = getVisualParamWeight( param_name[1] );
-		color.mV[VZ] = getVisualParamWeight( param_name[2] );
-	}
-	return color;
-}
-
-// static
-LLColor4 LLVOAvatar::getDummyColor()
-{
-	return DUMMY_COLOR;
-}
-
 void LLVOAvatar::dumpAvatarTEs( const std::string& context ) const
 {	
 	LL_DEBUGS("Avatar") << avString() << (isSelf() ? "Self: " : "Other: ") << context << LL_ENDL;
@@ -8787,7 +8682,7 @@ BOOL LLVOAvatar::isTextureVisible(LLVOAvatarDefines::ETextureIndex type, U32 ind
 }
 
 //virtual
-BOOL LLVOAvatar::isTextureVisible(LLVOAvatarDefines::ETextureIndex type, LLWearable *wearable) const
+BOOL LLVOAvatar::isTextureVisible(LLVOAvatarDefines::ETextureIndex type, LLViewerWearable *wearable) const
 {
 	// non-self avatars don't have wearables
 	return FALSE;
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
index 3f65dec11c4..023711d81b1 100755
--- a/indra/newview/llvoavatar.h
+++ b/indra/newview/llvoavatar.h
@@ -25,8 +25,8 @@
  * $/LicenseInfo$
  */
 
-#ifndef LL_LLVOAVATAR_H
-#define LL_LLVOAVATAR_H
+#ifndef LL_VOAVATAR_H
+#define LL_VOAVATAR_H
 
 #include <map>
 #include <deque>
@@ -36,6 +36,7 @@
 #include <boost/signals2.hpp>
 
 #include "imageids.h"			// IMG_INVISIBLE
+#include "llavatarappearance.h"
 #include "llchat.h"
 #include "lldrawpoolalpha.h"
 #include "llviewerobject.h"
@@ -62,7 +63,8 @@ extern const LLUUID ANIM_AGENT_PELVIS_FIX;
 extern const LLUUID ANIM_AGENT_TARGET;
 extern const LLUUID ANIM_AGENT_WALK_ADJUST;
 
-class LLTexLayerSet;
+class LLViewerTexLayerSet;
+class LLViewerWearable;
 class LLVoiceVisualizer;
 class LLHUDNameTag;
 class LLHUDEffectSpiral;
@@ -75,8 +77,8 @@ class LLVOAvatarSkeletonInfo;
 // 
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 class LLVOAvatar :
+	public LLAvatarAppearance,
 	public LLViewerObject,
-	public LLCharacter,
 	public boost::signals2::trackable
 {
 	LOG_CLASS(LLVOAvatar);
@@ -222,8 +224,20 @@ class LLVOAvatar :
 
 public:
 	virtual bool 	isSelf() const { return false; } // True if this avatar is for this viewer's agent
+	/*virtual*/BOOL	isUsingBakedTextures() const { return mUseServerBakes; } // e.g. false if in appearance edit mode		
 	bool isBuilt() const { return mIsBuilt; }
 
+/********************************************************************************
+ **                                                                            **
+ **                    WEARABLES
+ **/
+public:
+	/*virtual*/ U32				getWearableCount(const LLWearableType::EType type) const;
+	/*virtual*/ U32				getWearableCount(const U32 tex_index) const;
+
+	/*virtual*/ LLWearable*			getWearable(const LLWearableType::EType type, U32 index /*= 0*/);
+	/*virtual*/ const LLWearable* 	getWearable(const LLWearableType::EType type, U32 index /*= 0*/) const;
+
 private: //aligned members
 	LL_ALIGN_16(LLVector4a	mImpostorExtents[2]);
 
@@ -440,7 +454,7 @@ class LLVOAvatar :
 	static void	deleteCachedImages(bool clearAll=true);
 	static void	destroyGL();
 	static void	restoreGL();
-	BOOL 		mIsDummy; // for special views
+	BOOL		mIsDummy; // for special views
 	S32			mSpecialRenderMode; // special lighting
 	U32			mAttachmentGeometryBytes; //number of bytes in attached geometry
 	F32			mAttachmentSurfaceArea; //estimated surface area of attachments
@@ -460,7 +474,14 @@ class LLVOAvatar :
 public:
 	BOOL 		morphMaskNeedsUpdate(LLVOAvatarDefines::EBakedTextureIndex index = LLVOAvatarDefines::BAKED_NUM_INDICES);
 	void 		addMaskedMorph(LLVOAvatarDefines::EBakedTextureIndex index, LLPolyMorphTarget* morph_target, BOOL invert, std::string layer);
-	void 		applyMorphMask(U8* tex_data, S32 width, S32 height, S32 num_components, LLVOAvatarDefines::EBakedTextureIndex index = LLVOAvatarDefines::BAKED_NUM_INDICES);
+	virtual void	applyMorphMask(U8* tex_data, S32 width, S32 height, S32 num_components, LLVOAvatarDefines::EBakedTextureIndex index = LLVOAvatarDefines::BAKED_NUM_INDICES);
+
+	
+	//--------------------------------------------------------------------
+	// Global colors
+	//--------------------------------------------------------------------
+public:
+	virtual void	onGlobalColorChanged(const LLTexGlobalColor* global_color, BOOL upload_bake);
 
 	//--------------------------------------------------------------------
 	// Visibility
@@ -563,7 +584,7 @@ class LLVOAvatar :
 public:
 	virtual BOOL    isTextureDefined(LLVOAvatarDefines::ETextureIndex type, U32 index = 0) const;
 	virtual BOOL	isTextureVisible(LLVOAvatarDefines::ETextureIndex type, U32 index = 0) const;
-	virtual BOOL	isTextureVisible(LLVOAvatarDefines::ETextureIndex type, LLWearable *wearable) const;
+	virtual BOOL	isTextureVisible(LLVOAvatarDefines::ETextureIndex type, LLViewerWearable *wearable) const;
 
 	BOOL			isFullyBaked();
 	static BOOL		areAllNearbyInstancesBaked(S32& grey_avatars);
@@ -586,7 +607,7 @@ class LLVOAvatar :
 	struct BakedTextureData
 	{
 		LLUUID								mLastTextureIndex;
-		LLTexLayerSet* 						mTexLayerSet; // Only exists for self
+		LLViewerTexLayerSet* 				mTexLayerSet; // Only exists for self
 		bool								mIsLoaded;
 		bool								mIsUsed;
 		LLVOAvatarDefines::ETextureIndex 	mTextureIndex;
@@ -668,15 +689,15 @@ class LLVOAvatar :
  **/
 
 public:
-	void 			updateMeshTextures();
+	virtual void 	updateMeshTextures();
 	void 			updateSexDependentLayerSets(BOOL upload_bake);
-	void 			dirtyMesh(); // Dirty the avatar mesh
+	virtual void	dirtyMesh(); // Dirty the avatar mesh
 	void 			updateMeshData();
 protected:
 	void 			releaseMeshData();
 	virtual void restoreMeshData();
 private:
-	void 			dirtyMesh(S32 priority); // Dirty the avatar mesh, with priority
+	virtual void	dirtyMesh(S32 priority); // Dirty the avatar mesh, with priority
 	S32 			mDirtyMesh; // 0 -- not dirty, 1 -- morphed, 2 -- LOD
 	BOOL			mMeshTexturesDirty;
 
@@ -710,7 +731,6 @@ class LLVOAvatar :
 	//--------------------------------------------------------------------
 public:
 	BOOL			getIsAppearanceAnimating() const { return mAppearanceAnimating; }
-	BOOL			isUsingBakedTextures() const { return mUseServerBakes; } // e.g. false if in appearance edit mode		
 private:
 	BOOL			mAppearanceAnimating;
 	LLFrameTimer	mAppearanceMorphTimer;
@@ -719,25 +739,6 @@ class LLVOAvatar :
 	BOOL			mUseLocalAppearance; // flag for if we're using a local composite
 	BOOL			mUseServerBakes; // flag for if baked textures should be fetched from baking service (false if they're temporary uploads)
 
-	//--------------------------------------------------------------------
-	// Clothing colors (convenience functions to access visual parameters)
-	//--------------------------------------------------------------------
-public:
-	void			setClothesColor(LLVOAvatarDefines::ETextureIndex te, const LLColor4& new_color, BOOL upload_bake);
-	LLColor4		getClothesColor(LLVOAvatarDefines::ETextureIndex te);
-	static BOOL			teToColorParams(LLVOAvatarDefines::ETextureIndex te, U32 *param_name);
-
-	//--------------------------------------------------------------------
-	// Global colors
-	//--------------------------------------------------------------------
-public:
-	LLColor4		getGlobalColor(const std::string& color_name ) const;
-	void			onGlobalColorChanged(const LLTexGlobalColor* global_color, BOOL upload_bake);
-private:
-	LLTexGlobalColor* mTexSkinColor;
-	LLTexGlobalColor* mTexHairColor;
-	LLTexGlobalColor* mTexEyeColor;
-
 	//--------------------------------------------------------------------
 	// Visibility
 	//--------------------------------------------------------------------
@@ -746,7 +747,6 @@ class LLVOAvatar :
 	void			setVisibilityRank(U32 rank);
 	U32				getVisibilityRank()  const { return mVisibilityRank; } // unused
 	static S32 		sNumVisibleAvatars; // Number of instances of this class
-	static LLColor4 getDummyColor();
 /**                    Appearance
  **                                                                            **
  *******************************************************************************/
@@ -1038,11 +1038,9 @@ class LLVOAvatar :
 	//--------------------------------------------------------------------
 public:
 	void 			debugAvatarRezTime(std::string notification_name, std::string comment = "");
-	F32				debugGetExistenceTimeElapsedF32() const { return mDebugExistenceTimer.getElapsedTimeF32(); }
 
 protected:
 	LLFrameTimer	mRuthDebugTimer; // For tracking how long it takes for av to rez
-	LLFrameTimer	mDebugExistenceTimer; // Debugging for how long the avatar has been in memory.
 
 /**                    Diagnostics
  **                                                                            **
@@ -1163,4 +1161,5 @@ class LLVOAvatar :
 extern const F32 SELF_ADDITIONAL_PRI;
 extern const S32 MAX_TEXTURE_VIRTURE_SIZE_RESET_INTERVAL;
 
-#endif // LL_VO_AVATAR_H
+#endif // LL_VOAVATAR_H
+
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index 3604a373add..0fcf43a501e 100755
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -55,6 +55,8 @@
 #include "llviewerobjectlist.h"
 #include "llviewerstats.h"
 #include "llviewerregion.h"
+#include "llviewertexlayer.h"
+#include "llviewerwearable.h"
 #include "llappearancemgr.h"
 #include "llmeshrepository.h"
 #include "llvovolume.h"
@@ -595,7 +597,7 @@ BOOL LLVOAvatarSelf::loadLayersets()
 	{
 		// Construct a layerset for each one specified in avatar_lad.xml and initialize it as such.
 		const LLTexLayerSetInfo *info = *iter;
-		LLTexLayerSet* layer_set = new LLTexLayerSet( this );
+		LLViewerTexLayerSet* layer_set = new LLViewerTexLayerSet( this );
 		
 		if (!layer_set->setInfo(info))
 		{
@@ -734,7 +736,7 @@ BOOL LLVOAvatarSelf::setParamWeight(LLViewerVisualParam *param, F32 weight, BOOL
 		U32 size = gAgentWearables.getWearableCount(type);
 		for (U32 count = 0; count < size; ++count)
 		{
-			LLWearable *wearable = gAgentWearables.getWearable(type,count);
+			LLViewerWearable *wearable = gAgentWearables.getWearable(type,count);
 			if (wearable)
 			{
 				wearable->setVisualParamWeight(param->getID(), weight, upload_bake);
@@ -760,7 +762,7 @@ void LLVOAvatarSelf::idleUpdateAppearanceAnimation()
 	// apply wearable visual params to avatar
 	for (U32 type = 0; type < LLWearableType::WT_COUNT; type++)
 	{
-		LLWearable *wearable = gAgentWearables.getTopWearable((LLWearableType::EType)type);
+		LLViewerWearable *wearable = gAgentWearables.getTopWearable((LLWearableType::EType)type);
 		if (wearable)
 		{
 			wearable->writeToAvatar();
@@ -1375,7 +1377,7 @@ BOOL LLVOAvatarSelf::getLocalTextureGL(ETextureIndex type, LLViewerTexture** tex
 	{
 		return FALSE;
 	}
-	*tex_pp = local_tex_obj->getImage();
+	*tex_pp = dynamic_cast<LLViewerTexture*> (local_tex_obj->getImage());
 	return TRUE;
 }
 
@@ -1395,7 +1397,7 @@ LLViewerFetchedTexture* LLVOAvatarSelf::getLocalTextureGL(LLVOAvatarDefines::ETe
 	{
 		return LLViewerTextureManager::getFetchedTexture(IMG_DEFAULT_AVATAR);
 	}
-	return local_tex_obj->getImage();
+	return dynamic_cast<LLViewerFetchedTexture*> (local_tex_obj->getImage());
 }
 
 const LLUUID& LLVOAvatarSelf::getLocalTextureID(ETextureIndex type, U32 index) const
@@ -1416,7 +1418,7 @@ const LLUUID& LLVOAvatarSelf::getLocalTextureID(ETextureIndex type, U32 index) c
 // Returns true if at least the lowest quality discard level exists for every texture
 // in the layerset.
 //-----------------------------------------------------------------------------
-BOOL LLVOAvatarSelf::isLocalTextureDataAvailable(const LLTexLayerSet* layerset) const
+BOOL LLVOAvatarSelf::isLocalTextureDataAvailable(const LLViewerTexLayerSet* layerset) const
 {
 	/* if (layerset == mBakedTextureDatas[BAKED_HEAD].mTexLayerSet)
 	   return getLocalDiscardLevel(TEX_HEAD_BODYPAINT) >= 0; */
@@ -1454,7 +1456,7 @@ BOOL LLVOAvatarSelf::isLocalTextureDataAvailable(const LLTexLayerSet* layerset)
 // Returns true if the highest quality discard level exists for every texture
 // in the layerset.
 //-----------------------------------------------------------------------------
-BOOL LLVOAvatarSelf::isLocalTextureDataFinal(const LLTexLayerSet* layerset) const
+BOOL LLVOAvatarSelf::isLocalTextureDataFinal(const LLViewerTexLayerSet* layerset) const
 {
 	const U32 desired_tex_discard_level = gSavedSettings.getU32("TextureDiscardLevel"); 
 	// const U32 desired_tex_discard_level = 0; // hack to not bake textures on lower discard levels.
@@ -1515,7 +1517,7 @@ BOOL LLVOAvatarSelf::isAllLocalTextureDataFinal() const
 
 BOOL LLVOAvatarSelf::isBakedTextureFinal(const LLVOAvatarDefines::EBakedTextureIndex index) const
 {
-	const LLTexLayerSet *layerset = mBakedTextureDatas[index].mTexLayerSet;
+	const LLViewerTexLayerSet *layerset = mBakedTextureDatas[index].mTexLayerSet;
 	if (!layerset) return FALSE;
 	const LLTexLayerSetBuffer *layerset_buffer = layerset->getComposite();
 	if (!layerset_buffer) return FALSE;
@@ -1568,7 +1570,7 @@ BOOL LLVOAvatarSelf::isTextureVisible(LLVOAvatarDefines::ETextureIndex type, U32
 }
 
 //virtual
-BOOL LLVOAvatarSelf::isTextureVisible(LLVOAvatarDefines::ETextureIndex type, LLWearable *wearable) const
+BOOL LLVOAvatarSelf::isTextureVisible(LLVOAvatarDefines::ETextureIndex type, LLViewerWearable *wearable) const
 {
 	if (isIndexBakedTexture(type))
 	{
@@ -1611,7 +1613,7 @@ bool LLVOAvatarSelf::hasPendingBakedUploads() const
 {
 	for (U32 i = 0; i < mBakedTextureDatas.size(); i++)
 	{
-		LLTexLayerSet* layerset = mBakedTextureDatas[i].mTexLayerSet;
+		LLViewerTexLayerSet* layerset = mBakedTextureDatas[i].mTexLayerSet;
 		if (layerset && layerset->getComposite() && layerset->getComposite()->uploadPending())
 		{
 			return true;
@@ -1620,7 +1622,7 @@ bool LLVOAvatarSelf::hasPendingBakedUploads() const
 	return false;
 }
 
-void LLVOAvatarSelf::invalidateComposite( LLTexLayerSet* layerset, BOOL upload_result )
+void LLVOAvatarSelf::invalidateComposite( LLViewerTexLayerSet* layerset, BOOL upload_result )
 {
 	if( !layerset || !layerset->getUpdatesEnabled() )
 	{
@@ -1712,11 +1714,12 @@ S32 LLVOAvatarSelf::getLocalDiscardLevel(ETextureIndex type, U32 wearable_index)
 	const LLLocalTextureObject *local_tex_obj = getLocalTextureObject(type, wearable_index);
 	if (local_tex_obj)
 	{
+		const LLViewerFetchedTexture* image = dynamic_cast<LLViewerFetchedTexture*>( local_tex_obj->getImage() );
 		if (type >= 0
 			&& local_tex_obj->getID() != IMG_DEFAULT_AVATAR
-			&& !local_tex_obj->getImage()->isMissingAsset())
+			&& !image->isMissingAsset())
 		{
-			return local_tex_obj->getImage()->getDiscardLevel();
+			return image->getDiscardLevel();
 		}
 		else
 		{
@@ -1741,7 +1744,7 @@ void LLVOAvatarSelf::getLocalTextureByteCount(S32* gl_bytes) const
 			const LLLocalTextureObject *local_tex_obj = getLocalTextureObject((ETextureIndex) type, num);
 			if (local_tex_obj)
 			{
-				const LLViewerFetchedTexture* image_gl = local_tex_obj->getImage();
+				const LLViewerFetchedTexture* image_gl = dynamic_cast<LLViewerFetchedTexture*>( local_tex_obj->getImage() );
 				if (image_gl)
 				{
 					S32 bytes = (S32)image_gl->getWidth() * image_gl->getHeight() * image_gl->getComponents();
@@ -1790,7 +1793,7 @@ void LLVOAvatarSelf::setLocalTexture(ETextureIndex type, LLViewerTexture* src_te
 			return;
 		}
 		
-		LLTexLayerSet *layer_set = getLayerSet(type);
+		LLViewerTexLayerSet *layer_set = getLayerSet(type);
 		if (layer_set)
 		{
 			layer_set->cloneTemplates(local_tex_obj, type, gAgentWearables.getWearable(wearable_type,index));
@@ -1814,15 +1817,15 @@ void LLVOAvatarSelf::setLocalTexture(ETextureIndex type, LLViewerTexture* src_te
 					if (isSelf())
 					{
 						if (gAgentAvatarp->isUsingBakedTextures())
-					{
-						requestLayerSetUpdate(type);
-					}
+						{
+							requestLayerSetUpdate(type);
+						}
 						else
-					{
-						LLVisualParamHint::requestHintUpdates();
+						{
+							LLVisualParamHint::requestHintUpdates();
+						}
 					}
 				}
-				}
 				else
 				{					
 					tex->setLoadedCallback(onLocalTextureLoaded, desired_discard, TRUE, FALSE, new LLAvatarTexData(getID(), type), NULL);
@@ -1887,7 +1890,7 @@ void LLVOAvatarSelf::dumpLocalTextures() const
 			}
 			else
 			{
-				const LLViewerFetchedTexture* image = local_tex_obj->getImage();
+				const LLViewerFetchedTexture* image = dynamic_cast<LLViewerFetchedTexture*>( local_tex_obj->getImage() );
 
 				llinfos << "LocTex " << name << ": "
 						<< "Discard " << image->getDiscardLevel() << ", "
@@ -2060,7 +2063,7 @@ void LLVOAvatarSelf::debugBakedTextureUpload(EBakedTextureIndex index, BOOL fini
 	mDebugBakedTextureTimes[index][done] = mDebugSelfLoadTimer.getElapsedTimeF32();
 }
 
-const std::string LLVOAvatarSelf::debugDumpLocalTextureDataInfo(const LLTexLayerSet* layerset) const
+const std::string LLVOAvatarSelf::debugDumpLocalTextureDataInfo(const LLViewerTexLayerSet* layerset) const
 {
 	std::string text="";
 
@@ -2283,7 +2286,7 @@ BOOL LLVOAvatarSelf::canGrabBakedTexture(EBakedTextureIndex baked_index) const
 		
 		for (U32 wearable_index = 0; wearable_index < count; ++wearable_index)
 		{
-			LLWearable *wearable = gAgentWearables.getWearable(wearable_type, wearable_index);
+			LLViewerWearable *wearable = gAgentWearables.getWearable(wearable_type, wearable_index);
 			if (wearable)
 			{
 				const LLLocalTextureObject *texture = wearable->getLocalTextureObject((S32)t_index);
@@ -2358,7 +2361,7 @@ void LLVOAvatarSelf::addLocalTextureStats( ETextureIndex type, LLViewerFetchedTe
 LLLocalTextureObject* LLVOAvatarSelf::getLocalTextureObject(LLVOAvatarDefines::ETextureIndex i, U32 wearable_index) const
 {
 	LLWearableType::EType type = LLVOAvatarDictionary::getInstance()->getTEWearableType(i);
-	LLWearable* wearable = gAgentWearables.getWearable(type, wearable_index);
+	LLViewerWearable* wearable = gAgentWearables.getWearable(type, wearable_index);
 	if (wearable)
 	{
 		return wearable->getLocalTextureObject(i);
@@ -2371,7 +2374,7 @@ LLLocalTextureObject* LLVOAvatarSelf::getLocalTextureObject(LLVOAvatarDefines::E
 // getBakedTE()
 // Used by the LayerSet.  (Layer sets don't in general know what textures depend on them.)
 //-----------------------------------------------------------------------------
-ETextureIndex LLVOAvatarSelf::getBakedTE( const LLTexLayerSet* layerset ) const
+ETextureIndex LLVOAvatarSelf::getBakedTE( const LLViewerTexLayerSet* layerset ) const
 {
 	for (U32 i = 0; i < mBakedTextureDatas.size(); i++)
 	{
@@ -2512,7 +2515,7 @@ void LLVOAvatarSelf::outputRezDiagnostics() const
 		 ++baked_iter)
 	{
 		const LLVOAvatarDefines::EBakedTextureIndex baked_index = baked_iter->first;
-		const LLTexLayerSet *layerset = debugGetLayerSet(baked_index);
+		const LLViewerTexLayerSet *layerset = debugGetLayerSet(baked_index);
 		if (!layerset) continue;
 		const LLTexLayerSetBuffer *layerset_buffer = layerset->getComposite();
 		if (!layerset_buffer) continue;
@@ -2590,7 +2593,7 @@ void LLVOAvatarSelf::processRebakeAvatarTextures(LLMessageSystem* msg, void**)
 		{
 			if (texture_id == gAgentAvatarp->getTEImage(index)->getID())
 			{
-				LLTexLayerSet* layer_set = gAgentAvatarp->getLayerSet(index);
+				LLViewerTexLayerSet* layer_set = gAgentAvatarp->getLayerSet(index);
 				if (layer_set)
 				{
 					llinfos << "TAT: rebake - matched entry " << (S32)index << llendl;
@@ -2622,7 +2625,7 @@ void LLVOAvatarSelf::forceBakeAllTextures(bool slam_for_debug)
 	for (U32 i = 0; i < mBakedTextureDatas.size(); i++)
 	{
 		ETextureIndex baked_index = mBakedTextureDatas[i].mTextureIndex;
-		LLTexLayerSet* layer_set = getLayerSet(baked_index);
+		LLViewerTexLayerSet* layer_set = getLayerSet(baked_index);
 		if (layer_set)
 		{
 			if (slam_for_debug)
@@ -2664,7 +2667,7 @@ void LLVOAvatarSelf::requestLayerSetUpdate(ETextureIndex index )
 	}
 }
 
-LLTexLayerSet* LLVOAvatarSelf::getLayerSet(ETextureIndex index) const
+LLViewerTexLayerSet* LLVOAvatarSelf::getLayerSet(ETextureIndex index) const
 {
 	/* switch(index)
 		case TEX_HEAD_BAKED:
@@ -2679,7 +2682,7 @@ LLTexLayerSet* LLVOAvatarSelf::getLayerSet(ETextureIndex index) const
 	return NULL;
 }
 
-LLTexLayerSet* LLVOAvatarSelf::getLayerSet(EBakedTextureIndex baked_index) const
+LLViewerTexLayerSet* LLVOAvatarSelf::getLayerSet(EBakedTextureIndex baked_index) const
 {
        /* switch(index)
                case TEX_HEAD_BAKED:
diff --git a/indra/newview/llvoavatarself.h b/indra/newview/llvoavatarself.h
index 92d59dc9e16..26662e8a25f 100755
--- a/indra/newview/llvoavatarself.h
+++ b/indra/newview/llvoavatarself.h
@@ -197,13 +197,13 @@ class LLVOAvatarSelf :
 	/*virtual*/ bool	hasPendingBakedUploads() const;
 	S32					getLocalDiscardLevel(LLVOAvatarDefines::ETextureIndex type, U32 index) const;
 	bool				areTexturesCurrent() const;
-	BOOL				isLocalTextureDataAvailable(const LLTexLayerSet* layerset) const;
-	BOOL				isLocalTextureDataFinal(const LLTexLayerSet* layerset) const;
+	BOOL				isLocalTextureDataAvailable(const LLViewerTexLayerSet* layerset) const;
+	BOOL				isLocalTextureDataFinal(const LLViewerTexLayerSet* layerset) const;
 	BOOL				isBakedTextureFinal(const LLVOAvatarDefines::EBakedTextureIndex index) const;
 	// If you want to check all textures of a given type, pass gAgentWearables.getWearableCount() for index
 	/*virtual*/ BOOL    isTextureDefined(LLVOAvatarDefines::ETextureIndex type, U32 index) const;
 	/*virtual*/ BOOL	isTextureVisible(LLVOAvatarDefines::ETextureIndex type, U32 index = 0) const;
-	/*virtual*/ BOOL	isTextureVisible(LLVOAvatarDefines::ETextureIndex type, LLWearable *wearable) const;
+	/*virtual*/ BOOL	isTextureVisible(LLVOAvatarDefines::ETextureIndex type, LLViewerWearable *wearable) const;
 
 
 	//--------------------------------------------------------------------
@@ -233,7 +233,7 @@ class LLVOAvatarSelf :
 	// Baked textures
 	//--------------------------------------------------------------------
 public:
-	LLVOAvatarDefines::ETextureIndex getBakedTE(const LLTexLayerSet* layerset ) const;
+	LLVOAvatarDefines::ETextureIndex getBakedTE(const LLViewerTexLayerSet* layerset ) const;
 	void				setNewBakedTexture(LLVOAvatarDefines::EBakedTextureIndex i, const LLUUID &uuid);
 	void				setNewBakedTexture(LLVOAvatarDefines::ETextureIndex i, const LLUUID& uuid);
 	void				setCachedBakedTexture(LLVOAvatarDefines::ETextureIndex i, const LLUUID& uuid);
@@ -249,14 +249,14 @@ class LLVOAvatarSelf :
 	void 				requestLayerSetUploads();
 	void				requestLayerSetUpload(LLVOAvatarDefines::EBakedTextureIndex i);
 	void				requestLayerSetUpdate(LLVOAvatarDefines::ETextureIndex i);
-	LLTexLayerSet*		getLayerSet(LLVOAvatarDefines::ETextureIndex index) const;
-	LLTexLayerSet* 		getLayerSet(LLVOAvatarDefines::EBakedTextureIndex baked_index) const;
+	LLViewerTexLayerSet*	getLayerSet(LLVOAvatarDefines::ETextureIndex index) const;
+	LLViewerTexLayerSet*	getLayerSet(LLVOAvatarDefines::EBakedTextureIndex baked_index) const;
 	
 	//--------------------------------------------------------------------
 	// Composites
 	//--------------------------------------------------------------------
 public:
-	/* virtual */ void	invalidateComposite(LLTexLayerSet* layerset, BOOL upload_result);
+	/* virtual */ void	invalidateComposite(LLViewerTexLayerSet* layerset, BOOL upload_result);
 	/* virtual */ void	invalidateAll();
 	/* virtual */ void	setCompositeUpdatesEnabled(bool b); // only works for self
 	/* virtual */ void  setCompositeUpdatesEnabled(U32 index, bool b);
@@ -388,8 +388,8 @@ class LLVOAvatarSelf :
 
 	BOOL					isAllLocalTextureDataFinal() const;
 
-	const LLTexLayerSet*  	debugGetLayerSet(LLVOAvatarDefines::EBakedTextureIndex index) const { return mBakedTextureDatas[index].mTexLayerSet; }
-	const std::string		debugDumpLocalTextureDataInfo(const LLTexLayerSet* layerset) const; // Lists out state of this particular baked texture layer
+	const LLViewerTexLayerSet*	debugGetLayerSet(LLVOAvatarDefines::EBakedTextureIndex index) const { return mBakedTextureDatas[index].mTexLayerSet; }
+	const std::string		debugDumpLocalTextureDataInfo(const LLViewerTexLayerSet* layerset) const; // Lists out state of this particular baked texture layer
 	const std::string		debugDumpAllLocalTextureDataInfo() const; // Lists out which baked textures are at highest LOD
 	LLSD					metricsData();
 	void					sendAppearanceChangeMetrics(); // send data associated with completing a change.
diff --git a/indra/newview/llwearablelist.cpp b/indra/newview/llwearablelist.cpp
index 6f6411ce3cc..9f04fbecf09 100644
--- a/indra/newview/llwearablelist.cpp
+++ b/indra/newview/llwearablelist.cpp
@@ -42,7 +42,7 @@ struct LLWearableArrivedData
 {
 	LLWearableArrivedData(LLAssetType::EType asset_type,
 		const std::string& wearable_name,
-		void(*asset_arrived_callback)(LLWearable*, void* userdata),
+		void(*asset_arrived_callback)(LLViewerWearable*, void* userdata),
 						  void* userdata) :
 		mAssetType( asset_type ),
 		mCallback( asset_arrived_callback ), 
@@ -52,7 +52,7 @@ struct LLWearableArrivedData
 		{}
 
 	LLAssetType::EType mAssetType;
-	void	(*mCallback)(LLWearable*, void* userdata);
+	void	(*mCallback)(LLViewerWearable*, void* userdata);
 	void*	mUserdata;
 	std::string mName;
 	S32	mRetries;
@@ -72,10 +72,10 @@ void LLWearableList::cleanup()
 	mList.clear();
 }
 
-void LLWearableList::getAsset(const LLAssetID& assetID, const std::string& wearable_name, LLAssetType::EType asset_type, void(*asset_arrived_callback)(LLWearable*, void* userdata), void* userdata)
+void LLWearableList::getAsset(const LLAssetID& assetID, const std::string& wearable_name, LLAssetType::EType asset_type, void(*asset_arrived_callback)(LLViewerWearable*, void* userdata), void* userdata)
 {
 	llassert( (asset_type == LLAssetType::AT_CLOTHING) || (asset_type == LLAssetType::AT_BODYPART) );
-	LLWearable* instance = get_if_there(mList, assetID, (LLWearable*)NULL );
+	LLViewerWearable* instance = get_if_there(mList, assetID, (LLViewerWearable*)NULL );
 	if( instance )
 	{
 		asset_arrived_callback( instance, userdata );
@@ -95,7 +95,7 @@ void LLWearableList::processGetAssetReply( const char* filename, const LLAssetID
 {
 	BOOL isNewWearable = FALSE;
 	LLWearableArrivedData* data = (LLWearableArrivedData*) userdata;
-	LLWearable* wearable = NULL; // NULL indicates failure
+	LLViewerWearable* wearable = NULL; // NULL indicates failure
 	
 	if( !filename )
 	{
@@ -111,7 +111,7 @@ void LLWearableList::processGetAssetReply( const char* filename, const LLAssetID
 		}
 		else
 		{
-			wearable = new LLWearable(uuid);
+			wearable = new LLViewerWearable(uuid);
 			bool res = wearable->importFile( fp );
 			if (!res)
 			{
@@ -203,11 +203,11 @@ void LLWearableList::processGetAssetReply( const char* filename, const LLAssetID
 }
 
 
-LLWearable* LLWearableList::createCopy(const LLWearable* old_wearable, const std::string& new_name)
+LLViewerWearable* LLWearableList::createCopy(const LLViewerWearable* old_wearable, const std::string& new_name)
 {
 	lldebugs << "LLWearableList::createCopy()" << llendl;
 
-	LLWearable *wearable = generateNewWearable();
+	LLViewerWearable *wearable = generateNewWearable();
 	wearable->copyDataFrom(old_wearable);
 
 	LLPermissions perm(old_wearable->getPermissions());
@@ -222,11 +222,11 @@ LLWearable* LLWearableList::createCopy(const LLWearable* old_wearable, const std
 	return wearable;
 }
 
-LLWearable* LLWearableList::createNewWearable( LLWearableType::EType type )
+LLViewerWearable* LLWearableList::createNewWearable( LLWearableType::EType type )
 {
 	lldebugs << "LLWearableList::createNewWearable()" << llendl;
 
-	LLWearable *wearable = generateNewWearable();
+	LLViewerWearable *wearable = generateNewWearable();
 	wearable->setType( type );
 	
 	std::string name = LLTrans::getString( LLWearableType::getTypeDefaultNewName(wearable->getType()) );
@@ -251,13 +251,13 @@ LLWearable* LLWearableList::createNewWearable( LLWearableType::EType type )
 	return wearable;
 }
 
-LLWearable *LLWearableList::generateNewWearable()
+LLViewerWearable *LLWearableList::generateNewWearable()
 {
 	LLTransactionID tid;
 	tid.generate();
 	LLAssetID new_asset_id = tid.makeAssetID(gAgent.getSecureSessionID());
 
-	LLWearable* wearable = new LLWearable(tid);
+	LLViewerWearable* wearable = new LLViewerWearable(tid);
 	mList[new_asset_id] = wearable;
 	return wearable;
 }
diff --git a/indra/newview/llwearablelist.h b/indra/newview/llwearablelist.h
index 12d0037aee4..0f3078facff 100644
--- a/indra/newview/llwearablelist.h
+++ b/indra/newview/llwearablelist.h
@@ -28,7 +28,7 @@
 #define LL_LLWEARABLELIST_H
 
 #include "llmemory.h"
-#include "llwearable.h"
+#include "llviewerwearable.h"
 #include "lluuid.h"
 #include "llassetstorage.h"
 
@@ -51,19 +51,19 @@ class LLWearableList : public LLSingleton<LLWearableList>
 	void				getAsset(const LLAssetID& assetID,
 								 const std::string& wearable_name,
 								 LLAssetType::EType asset_type,
-								 void(*asset_arrived_callback)(LLWearable*, void* userdata),
+								 void(*asset_arrived_callback)(LLViewerWearable*, void* userdata),
 								 void* userdata);
 
-	LLWearable*			createCopy(const LLWearable* old_wearable, const std::string& new_name = std::string());
-	LLWearable*			createNewWearable(LLWearableType::EType type);
+	LLViewerWearable*			createCopy(const LLViewerWearable* old_wearable, const std::string& new_name = std::string());
+	LLViewerWearable*			createNewWearable(LLWearableType::EType type);
 	
 	// Callback
 	static void	 	    processGetAssetReply(const char* filename, const LLAssetID& assetID, void* user_data, S32 status, LLExtStat ext_status);
 
 protected:
-	LLWearable* generateNewWearable(); // used for the create... functions
+	LLViewerWearable* generateNewWearable(); // used for the create... functions
 private:
-	std::map<LLUUID, LLWearable*> mList;
+	std::map<LLUUID, LLViewerWearable*> mList;
 };
 
 #endif  // LL_LLWEARABLELIST_H
-- 
GitLab


From 1bd5fd8c50eb299ea96720db8cf0f9b25ec6e941 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Mon, 3 Sep 2012 07:00:56 +0000
Subject: [PATCH 047/436] Fixed typo in cmake file

---
 indra/llappearance/CMakeLists.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/llappearance/CMakeLists.txt b/indra/llappearance/CMakeLists.txt
index bc4748b87f5..8d2334c566c 100644
--- a/indra/llappearance/CMakeLists.txt
+++ b/indra/llappearance/CMakeLists.txt
@@ -59,7 +59,7 @@ set(llappearance_HEADER_FILES
     CMakeLists.txt
 
     llavatarappearance.h
-    llinventoryicon.cpp
+    llinventoryicon.h
     lljointpickname.h
     lllocaltextureobject.h
     lltexglobalcolor.h
-- 
GitLab


From 0c7623f628cbba999860379a2f5c302d94c1d287 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Mon, 3 Sep 2012 08:37:58 +0000
Subject: [PATCH 048/436] Cleanup of llappearance refactor file definition
 order for easier diff'ing

---
 indra/llappearance/llavatarappearance.cpp |   1 -
 indra/llappearance/llavatarappearance.h   |   9 -
 indra/llappearance/lltexlayer.cpp         |   7 -
 indra/llappearance/lltexlayerparams.cpp   |   1 -
 indra/llappearance/llvoavatardefines.cpp  |   3 -
 indra/llappearance/llvoavatardefines.h    |   2 +-
 indra/llappearance/llwearable.cpp         |  13 +-
 indra/llappearance/llwearable.h           |  10 +-
 indra/llappearance/llwearabletype.cpp     |   2 -
 indra/newview/llviewertexlayer.cpp        | 280 ++++++++++++----------
 indra/newview/llviewertexlayer.h          |   2 +-
 indra/newview/llviewerwearable.cpp        | 134 +++++------
 indra/newview/llviewerwearable.h          |  14 +-
 indra/newview/llvoavatar.cpp              |   1 +
 indra/newview/llvoavatar.h                |   3 +
 15 files changed, 237 insertions(+), 245 deletions(-)

diff --git a/indra/llappearance/llavatarappearance.cpp b/indra/llappearance/llavatarappearance.cpp
index 1ca0161d7ed..044ea8fbf06 100644
--- a/indra/llappearance/llavatarappearance.cpp
+++ b/indra/llappearance/llavatarappearance.cpp
@@ -38,7 +38,6 @@ LLAvatarAppearance::LLAvatarAppearance() :
 	mTexEyeColor( NULL ),
 	mIsDummy(FALSE)
 {
-	mDebugExistenceTimer.reset();
 }
 
 using namespace LLVOAvatarDefines;
diff --git a/indra/llappearance/llavatarappearance.h b/indra/llappearance/llavatarappearance.h
index cb2ae7aeefa..1b0e0ad2701 100644
--- a/indra/llappearance/llavatarappearance.h
+++ b/indra/llappearance/llavatarappearance.h
@@ -111,15 +111,6 @@ class LLAvatarAppearance : public LLCharacter
 
 	virtual BOOL			isWearingWearableType(LLWearableType::EType type ) const = 0;
 
-	//--------------------------------------------------------------------
-	// Avatar Rez Metrics
-	//--------------------------------------------------------------------
-public:
-	F32				debugGetExistenceTimeElapsedF32() const { return mDebugExistenceTimer.getElapsedTimeF32(); }
-
-protected:
-	LLFrameTimer	mDebugExistenceTimer; // Debugging for how long the avatar has been in memory.
-
 public:
 	static LLColor4 getDummyColor();
 	virtual void	updateMeshTextures() = 0;
diff --git a/indra/llappearance/lltexlayer.cpp b/indra/llappearance/lltexlayer.cpp
index 3bb31d37215..6522976be1f 100644
--- a/indra/llappearance/lltexlayer.cpp
+++ b/indra/llappearance/lltexlayer.cpp
@@ -33,20 +33,13 @@
 #include "imageids.h"
 #include "llimagej2c.h"
 #include "llimagetga.h"
-//#include "llnotificationsutil.h"
 #include "lldir.h"
 #include "llvfile.h"
 #include "llvfs.h"
-//#include "llviewerstats.h"
-//#include "llviewerregion.h"
-//#include "pipeline.h"
 #include "lltexlayerparams.h"
 #include "lltexturemanagerbridge.h"
 #include "llui.h"
-//#include "llagentwearables.h"
 #include "llwearable.h"
-//#include "llviewercontrol.h"
-//#include "llviewershadermgr.h"
 #include "llviewervisualparam.h"
 
 //#include "../tools/imdebug/imdebug.h"
diff --git a/indra/llappearance/lltexlayerparams.cpp b/indra/llappearance/lltexlayerparams.cpp
index c8433673570..4f0456f315b 100644
--- a/indra/llappearance/lltexlayerparams.cpp
+++ b/indra/llappearance/lltexlayerparams.cpp
@@ -29,7 +29,6 @@
 #include "lltexlayerparams.h"
 
 #include "llavatarappearance.h"
-//#include "llagentcamera.h"
 #include "llimagetga.h"
 #include "llquantize.h"
 #include "lltexlayer.h"
diff --git a/indra/llappearance/llvoavatardefines.cpp b/indra/llappearance/llvoavatardefines.cpp
index 48ef63ab641..29891986f5c 100644
--- a/indra/llappearance/llvoavatardefines.cpp
+++ b/indra/llappearance/llvoavatardefines.cpp
@@ -24,11 +24,8 @@
  * $/LicenseInfo$
  */
 
-//#include "llviewerprecompiledheaders.h"
 #include "linden_common.h"
-
 #include "llvoavatardefines.h"
-//#include "llviewercontrol.h" // gSavedSettings
 
 const S32 LLVOAvatarDefines::SCRATCH_TEX_WIDTH = 512;
 const S32 LLVOAvatarDefines::SCRATCH_TEX_HEIGHT = 512;
diff --git a/indra/llappearance/llvoavatardefines.h b/indra/llappearance/llvoavatardefines.h
index 7b0442bffb2..7745775f9f5 100644
--- a/indra/llappearance/llvoavatardefines.h
+++ b/indra/llappearance/llvoavatardefines.h
@@ -29,8 +29,8 @@
 #define LLVOAVATAR_DEFINES_H
 
 #include <vector>
-#include "lljointpickname.h"
 #include "llwearable.h"
+#include "lljointpickname.h"
 #include "lldictionary.h"
 
 namespace LLVOAvatarDefines
diff --git a/indra/llappearance/llwearable.cpp b/indra/llappearance/llwearable.cpp
index 64bd921ec5b..77f1f27cb07 100644
--- a/indra/llappearance/llwearable.cpp
+++ b/indra/llappearance/llwearable.cpp
@@ -27,24 +27,12 @@
 #include "linden_common.h"
 
 #include "llavatarappearance.h"
-//#include "llagentwearables.h"
-//#include "lldictionary.h"
-//#include "llfloatersidepanelcontainer.h"
 #include "lllocaltextureobject.h"
-//#include "llnotificationsutil.h"
-//#include "llviewertexturelist.h"
-//#include "llinventorymodel.h"
-//#include "llinventoryobserver.h"
-//#include "llsidepanelappearance.h"
 #include "lltexlayer.h"
-//#include "lltexglobalcolor.h"
 #include "lltexturemanagerbridge.h"
-//#include "lltrans.h"
-//#include "llviewerregion.h"
 #include "llvisualparam.h"
 #include "llvoavatardefines.h"
 #include "llwearable.h"
-//#include "llviewercontrol.h"
 
 using namespace LLVOAvatarDefines;
 
@@ -170,6 +158,7 @@ LLWearable::EImportResult LLWearable::importFile( LLFILE* file )
 		return LLWearable::BAD_HEADER;
 	}
 
+
 	// Temporary hack to allow wearables with definition version 24 to still load.
 	// This should only affect lindens and NDA'd testers who have saved wearables in 2.0
 	// the extra check for version == 24 can be removed before release, once internal testers
diff --git a/indra/llappearance/llwearable.h b/indra/llappearance/llwearable.h
index 56c931e43b7..8a99debac86 100644
--- a/indra/llappearance/llwearable.h
+++ b/indra/llappearance/llwearable.h
@@ -28,19 +28,16 @@
 #define LL_LLWEARABLE_H
 
 #include "llextendedstatus.h"
-//#include "lluuid.h"
-//#include "llstring.h"
 #include "llpermissions.h"
 #include "llsaleinfo.h"
-//#include "llassetstorage.h"
 #include "llwearabletype.h"
-//#include "llfile.h"
 #include "lllocaltextureobject.h"
 
 class LLVisualParam;
 class LLTexGlobalColorInfo;
 class LLTexGlobalColor;
 
+// Abstract class.
 class LLWearable
 {
 	//--------------------------------------------------------------------
@@ -72,6 +69,8 @@ class LLWearable
 public:
 	typedef std::vector<LLVisualParam*> visual_param_vec_t;
 
+	virtual void	writeToAvatar() = 0;
+
 	enum EImportResult
 	{
 		FAILURE = 0,
@@ -81,12 +80,11 @@ class LLWearable
 	virtual BOOL				exportFile(LLFILE* file) const;
 	virtual EImportResult		importFile(LLFILE* file);
 
-	virtual LLLocalTextureObject* getLocalTextureObject(S32 index) = 0;
-	virtual void	writeToAvatar() = 0;
 
 
 	static void			setCurrentDefinitionVersion( S32 version ) { LLWearable::sCurrentDefinitionVersion = version; }
 
+	virtual LLLocalTextureObject* getLocalTextureObject(S32 index) = 0;
 	void				addVisualParam(LLVisualParam *param);
 	void 				setVisualParamWeight(S32 index, F32 value, BOOL upload_bake);
 	F32					getVisualParamWeight(S32 index) const;
diff --git a/indra/llappearance/llwearabletype.cpp b/indra/llappearance/llwearabletype.cpp
index d47702ff4d8..009a3b631a8 100644
--- a/indra/llappearance/llwearabletype.cpp
+++ b/indra/llappearance/llwearabletype.cpp
@@ -24,11 +24,9 @@
  * $/LicenseInfo$
  */
 
-//#include "llviewerprecompiledheaders.h"
 #include "linden_common.h"
  
 #include "llwearabletype.h"
-//#include "llinventoryfunctions.h"
 #include "llinventoryicon.h"
 #include "lltrans.h"
 
diff --git a/indra/newview/llviewertexlayer.cpp b/indra/newview/llviewertexlayer.cpp
index f805083aaa1..3a3cae4047c 100644
--- a/indra/newview/llviewertexlayer.cpp
+++ b/indra/newview/llviewertexlayer.cpp
@@ -26,19 +26,19 @@
 
 #include "llviewerprecompiledheaders.h"
 
+#include "llviewertexlayer.h"
+
 #include "llagent.h"
-#include "llassetuploadresponders.h"
-#include "llavatarappearance.h"
-#include "llglslshader.h"
 #include "llimagej2c.h"
 #include "llnotificationsutil.h"
-#include "llviewercontrol.h"
-#include "llviewerregion.h"
-#include "llviewertexlayer.h"
 #include "llvfile.h"
 #include "llvfs.h"
+#include "llviewerregion.h"
+#include "llglslshader.h"
 #include "llvoavatarself.h"
 #include "pipeline.h"
+#include "llassetuploadresponders.h"
+#include "llviewercontrol.h"
 
 static const S32 BAKE_UPLOAD_ATTEMPTS = 7;
 static const F32 BAKE_UPLOAD_RETRY_DELAY = 2.f; // actual delay grows by power of 2 each attempt
@@ -46,126 +46,6 @@ static const F32 BAKE_UPLOAD_RETRY_DELAY = 2.f; // actual delay grows by power o
 // runway consolidate
 extern std::string self_av_string();
 
-LLViewerTexLayerSet::LLViewerTexLayerSet(LLAvatarAppearance* const appearance) :
-	LLTexLayerSet(appearance),
-	mComposite( NULL ),
-	mUpdatesEnabled( FALSE )
-{
-}
-
-// virtual
-LLViewerTexLayerSet::~LLViewerTexLayerSet()
-{
-}
-
-void LLViewerTexLayerSet::gatherMorphMaskAlpha(U8 *data, S32 width, S32 height)
-{
-	memset(data, 255, width * height);
-
-	for( layer_list_t::iterator iter = mLayerList.begin(); iter != mLayerList.end(); iter++ )
-	{
-		LLTexLayerInterface* layer = *iter;
-		layer->gatherAlphaMasks(data, mComposite->getOriginX(),mComposite->getOriginY(), width, height);
-	}
-	
-	// Set alpha back to that of our alpha masks.
-	renderAlphaMaskTextures(mComposite->getOriginX(), mComposite->getOriginY(), width, height, true);
-}
-
-LLTexLayerSetBuffer* LLViewerTexLayerSet::getComposite()
-{
-	if (!mComposite)
-	{
-		createComposite();
-	}
-	return mComposite;
-}
-
-const LLTexLayerSetBuffer* LLViewerTexLayerSet::getComposite() const
-{
-	return mComposite;
-}
-
-// virtual
-void LLViewerTexLayerSet::requestUpdate()
-{
-	if( mUpdatesEnabled )
-	{
-		createComposite();
-		mComposite->requestUpdate(); 
-	}
-}
-
-void LLViewerTexLayerSet::requestUpload()
-{
-	createComposite();
-	mComposite->requestUpload();
-}
-
-void LLViewerTexLayerSet::cancelUpload()
-{
-	if(mComposite)
-	{
-		mComposite->cancelUpload();
-	}
-}
-
-
-void LLViewerTexLayerSet::createComposite()
-{
-	if(!mComposite)
-	{
-		S32 width = mInfo->getWidth();
-		S32 height = mInfo->getHeight();
-		// Composite other avatars at reduced resolution
-		if( !mAvatarAppearance->isSelf() )
-		{
-			llerrs << "composites should not be created for non-self avatars!" << llendl;
-		}
-		mComposite = new LLTexLayerSetBuffer( this, width, height );
-	}
-}
-
-void LLViewerTexLayerSet::updateComposite()
-{
-	createComposite();
-	mComposite->requestUpdateImmediate();
-}
-
-// Returns TRUE if at least one packet of data has been received for each of the textures that this layerset depends on.
-BOOL LLViewerTexLayerSet::isLocalTextureDataAvailable() const
-{
-	if (!mAvatarAppearance->isSelf()) return FALSE;
-	LLVOAvatarSelf* self = dynamic_cast<LLVOAvatarSelf *>(mAvatarAppearance);
-	return self->isLocalTextureDataAvailable(this);
-}
-
-
-// Returns TRUE if all of the data for the textures that this layerset depends on have arrived.
-BOOL LLViewerTexLayerSet::isLocalTextureDataFinal() const
-{
-	if (!mAvatarAppearance->isSelf()) return FALSE;
-	LLVOAvatarSelf* self = dynamic_cast<LLVOAvatarSelf *>(mAvatarAppearance);
-	return self->isLocalTextureDataFinal(this);
-}
-
-void LLViewerTexLayerSet::destroyComposite()
-{
-	if( mComposite )
-	{
-		mComposite = NULL;
-	}
-}
-
-void LLViewerTexLayerSet::setUpdatesEnabled( BOOL b )
-{
-	mUpdatesEnabled = b; 
-}
-
-LLVOAvatarSelf* LLViewerTexLayerSet::getAvatar() const
-{
-	return dynamic_cast<LLVOAvatarSelf*> (mAvatarAppearance);
-}
 
 //-----------------------------------------------------------------------------
 // LLBakedUploadData()
@@ -693,7 +573,7 @@ void LLTexLayerSetBuffer::doUpdate()
 
 	// need to switch to using this layerset if this is the first update
 	// after getting the lowest LOD
-	mTexLayerSet->getAvatarAppearance()->updateMeshTextures();
+	mTexLayerSet->getAvatar()->updateMeshTextures();
 	
 	// Print out notification that we updated this texture.
 	if (gSavedSettings.getBOOL("DebugAvatarRezTime"))
@@ -701,7 +581,7 @@ void LLTexLayerSetBuffer::doUpdate()
 		const BOOL highest_lod = mTexLayerSet->isLocalTextureDataFinal();
 		const std::string lod_str = highest_lod ? "HighRes" : "LowRes";
 		LLSD args;
-		args["EXISTENCE"] = llformat("%d",(U32)mTexLayerSet->getAvatarAppearance()->debugGetExistenceTimeElapsedF32());
+		args["EXISTENCE"] = llformat("%d",(U32)mTexLayerSet->getAvatar()->debugGetExistenceTimeElapsedF32());
 		args["TIME"] = llformat("%d",(U32)mNeedsUpdateTimer.getElapsedTimeF32());
 		args["BODYREGION"] = mTexLayerSet->getBodyRegionName();
 		args["RESOLUTION"] = lod_str;
@@ -786,6 +666,150 @@ void LLTexLayerSetBuffer::onTextureUploadComplete(const LLUUID& uuid,
 	delete baked_upload_data;
 }
 
+//-----------------------------------------------------------------------------
+// LLViewerTexLayerSet
+// An ordered set of texture layers that get composited into a single texture.
+//-----------------------------------------------------------------------------
+
+LLViewerTexLayerSet::LLViewerTexLayerSet(LLAvatarAppearance* const appearance) :
+	LLTexLayerSet(appearance),
+	mComposite( NULL ),
+	mUpdatesEnabled( FALSE )
+{
+}
+
+// virtual
+LLViewerTexLayerSet::~LLViewerTexLayerSet()
+{
+}
+
+// Returns TRUE if at least one packet of data has been received for each of the textures that this layerset depends on.
+BOOL LLViewerTexLayerSet::isLocalTextureDataAvailable() const
+{
+	if (!mAvatarAppearance->isSelf()) return FALSE;
+	return getAvatar()->isLocalTextureDataAvailable(this);
+}
+
+
+// Returns TRUE if all of the data for the textures that this layerset depends on have arrived.
+BOOL LLViewerTexLayerSet::isLocalTextureDataFinal() const
+{
+	if (!mAvatarAppearance->isSelf()) return FALSE;
+	return getAvatar()->isLocalTextureDataFinal(this);
+}
+
+// virtual
+void LLViewerTexLayerSet::requestUpdate()
+{
+	if( mUpdatesEnabled )
+	{
+		createComposite();
+		mComposite->requestUpdate(); 
+	}
+}
+
+void LLViewerTexLayerSet::requestUpload()
+{
+	createComposite();
+	mComposite->requestUpload();
+}
+
+void LLViewerTexLayerSet::cancelUpload()
+{
+	if(mComposite)
+	{
+		mComposite->cancelUpload();
+	}
+}
+
+void LLViewerTexLayerSet::createComposite()
+{
+	if(!mComposite)
+	{
+		S32 width = mInfo->getWidth();
+		S32 height = mInfo->getHeight();
+		// Composite other avatars at reduced resolution
+		if( !mAvatarAppearance->isSelf() )
+		{
+			llerrs << "composites should not be created for non-self avatars!" << llendl;
+		}
+		mComposite = new LLTexLayerSetBuffer( this, width, height );
+	}
+}
+
+void LLViewerTexLayerSet::destroyComposite()
+{
+	if( mComposite )
+	{
+		mComposite = NULL;
+	}
+}
+
+void LLViewerTexLayerSet::setUpdatesEnabled( BOOL b )
+{
+	mUpdatesEnabled = b; 
+}
+
 
+void LLViewerTexLayerSet::updateComposite()
+{
+	createComposite();
+	mComposite->requestUpdateImmediate();
+}
 
+LLTexLayerSetBuffer* LLViewerTexLayerSet::getComposite()
+{
+	if (!mComposite)
+	{
+		createComposite();
+	}
+	return mComposite;
+}
 
+const LLTexLayerSetBuffer* LLViewerTexLayerSet::getComposite() const
+{
+	return mComposite;
+}
+
+void LLViewerTexLayerSet::gatherMorphMaskAlpha(U8 *data, S32 width, S32 height)
+{
+	memset(data, 255, width * height);
+
+	for( layer_list_t::iterator iter = mLayerList.begin(); iter != mLayerList.end(); iter++ )
+	{
+		LLTexLayerInterface* layer = *iter;
+		layer->gatherAlphaMasks(data, mComposite->getOriginX(),mComposite->getOriginY(), width, height);
+	}
+	
+	// Set alpha back to that of our alpha masks.
+	renderAlphaMaskTextures(mComposite->getOriginX(), mComposite->getOriginY(), width, height, true);
+}
+
+
+LLVOAvatarSelf* LLViewerTexLayerSet::getAvatar() const
+{
+	return dynamic_cast<LLVOAvatarSelf*> (mAvatarAppearance);
+}
+
+
+
+const std::string LLTexLayerSetBuffer::dumpTextureInfo() const
+{
+	if (!isAgentAvatarValid()) return "";
+
+	const BOOL is_high_res = !mNeedsUpload;
+	const U32 num_low_res = mNumLowresUploads;
+	const U32 upload_time = (U32)mNeedsUploadTimer.getElapsedTimeF32();
+	const std::string local_texture_info = gAgentAvatarp->debugDumpLocalTextureDataInfo(mTexLayerSet);
+
+	std::string status 				= "CREATING ";
+	if (!uploadNeeded()) status 	= "DONE     ";
+	if (uploadInProgress()) status 	= "UPLOADING";
+
+	std::string text = llformat("[%s] [HiRes:%d LoRes:%d] [Elapsed:%d] %s",
+								status.c_str(),
+								is_high_res, num_low_res,
+								upload_time, 
+								local_texture_info.c_str());
+	return text;
+}
diff --git a/indra/newview/llviewertexlayer.h b/indra/newview/llviewertexlayer.h
index ff3def5a828..125bf82adff 100644
--- a/indra/newview/llviewertexlayer.h
+++ b/indra/newview/llviewertexlayer.h
@@ -30,8 +30,8 @@
 #include "lldynamictexture.h"
 #include "lltexlayer.h"
 
-class LLTexLayerSetBuffer;
 class LLVOAvatarSelf;
+class LLTexLayerSetBuffer;
 
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 // LLViewerTexLayerSet
diff --git a/indra/newview/llviewerwearable.cpp b/indra/newview/llviewerwearable.cpp
index b63f1f57cbf..2b6649a7ec9 100644
--- a/indra/newview/llviewerwearable.cpp
+++ b/indra/newview/llviewerwearable.cpp
@@ -33,11 +33,11 @@
 #include "llnotificationsutil.h"
 #include "llsidepanelappearance.h"
 #include "lltextureentry.h"
-#include "llviewercontrol.h"
 #include "llviewertexlayer.h"
-#include "llviewerwearable.h"
 #include "llvoavatarself.h"
 #include "llvoavatardefines.h"
+#include "llviewerwearable.h"
+#include "llviewercontrol.h"
 
 using namespace LLVOAvatarDefines;
 
@@ -89,11 +89,6 @@ LLViewerWearable::~LLViewerWearable()
 {
 }
 
-void LLViewerWearable::setItemID(const LLUUID& item_id)
-{
-	mItemID = item_id;
-}
-
 // virtual
 BOOL LLViewerWearable::exportFile(LLFILE* file) const
 {
@@ -107,6 +102,40 @@ BOOL LLViewerWearable::exportFile(LLFILE* file) const
 	return LLWearable::exportFile(file);
 }
 
+
+void LLViewerWearable::createVisualParams()
+{
+	for (LLViewerVisualParam* param = (LLViewerVisualParam*) gAgentAvatarp->getFirstVisualParam(); 
+		 param;
+		 param = (LLViewerVisualParam*) gAgentAvatarp->getNextVisualParam())
+	{
+		if (param->getWearableType() == mType)
+		{
+			addVisualParam(param->cloneParam(this));
+		}
+	}
+
+	// resync driver parameters to point to the newly cloned driven parameters
+	for (visual_param_index_map_t::iterator param_iter = mVisualParamIndexMap.begin(); 
+		 param_iter != mVisualParamIndexMap.end(); 
+		 ++param_iter)
+	{
+		LLVisualParam* param = param_iter->second;
+		LLVisualParam*(LLWearable::*wearable_function)(S32)const = &LLWearable::getVisualParam; 
+		// need this line to disambiguate between versions of LLCharacter::getVisualParam()
+		LLVisualParam*(LLAvatarAppearance::*param_function)(S32)const = &LLAvatarAppearance::getVisualParam; 
+		param->resetDrivenParams();
+		if(!param->linkDrivenParams(boost::bind(wearable_function,(LLWearable*)this, _1), false))
+		{
+			if( !param->linkDrivenParams(boost::bind(param_function,gAgentAvatarp.get(),_1 ), true))
+			{
+				llwarns << "could not link driven params for wearable " << getName() << " id: " << param->getID() << llendl;
+				continue;
+			}
+		}
+	}
+}
+
 // virtual
 LLWearable::EImportResult LLViewerWearable::importFile( LLFILE* file )
 {
@@ -159,6 +188,7 @@ LLWearable::EImportResult LLViewerWearable::importFile( LLFILE* file )
 	return result;
 }
 
+
 // Avatar parameter and texture definitions can change over time.
 // This function returns true if parameters or textures have been added or removed
 // since this wearable was created.
@@ -492,6 +522,11 @@ void LLViewerWearable::copyDataFrom(const LLViewerWearable* src)
 	revertValues();
 }
 
+void LLViewerWearable::setItemID(const LLUUID& item_id)
+{
+	mItemID = item_id;
+}
+
 
 LLLocalTextureObject* LLViewerWearable::getLocalTextureObject(S32 index)
 {
@@ -538,6 +573,17 @@ void LLViewerWearable::setLocalTextureObject(S32 index, LLLocalTextureObject &lt
 	mTEMap[index] = new LLLocalTextureObject(lto);
 }
 
+void LLViewerWearable::setVisualParams()
+{
+	for (visual_param_index_map_t::const_iterator iter = mVisualParamIndexMap.begin(); iter != mVisualParamIndexMap.end(); iter++)
+	{
+		S32 id = iter->first;
+		LLVisualParam *wearable_param = iter->second;
+		F32 value = wearable_param->getWeight();
+		gAgentAvatarp->setVisualParamWeight(id, value, FALSE);
+	}
+}
+
 void LLViewerWearable::revertValues()
 {
 	//update saved settings so wearable is no longer dirty
@@ -591,6 +637,19 @@ BOOL LLViewerWearable::isOnTop() const
 	return (this == gAgentWearables.getTopWearable(mType));
 }
 
+void LLViewerWearable::createLayers(S32 te)
+{
+	LLViewerTexLayerSet *layer_set = gAgentAvatarp->getLayerSet((ETextureIndex)te);
+	if (layer_set)
+	{
+		layer_set->cloneTemplates(mTEMap[te], (ETextureIndex)te, this);
+	}
+	else
+	{
+		llerrs << "could not find layerset for LTO in wearable!" << llendl;
+	}
+}
+
 void LLViewerWearable::saveValues()
 {
 	//update saved settings so wearable is no longer dirty
@@ -702,7 +761,6 @@ void LLViewerWearable::setLabelUpdated() const
 	gInventory.addChangedMask(LLInventoryObserver::LABEL, getItemID());
 }
 
-
 void LLViewerWearable::refreshName()
 {
 	LLUUID item_id = getItemID();
@@ -802,65 +860,6 @@ void LLViewerWearable::onSaveNewAssetComplete(const LLUUID& new_asset_id, void*
 
 }
 
-void LLViewerWearable::createLayers(S32 te)
-{
-	LLViewerTexLayerSet *layer_set = gAgentAvatarp->getLayerSet((ETextureIndex)te);
-	if (layer_set)
-	{
-		layer_set->cloneTemplates(mTEMap[te], (ETextureIndex)te, this);
-	}
-	else
-	{
-		llerrs << "could not find layerset for LTO in wearable!" << llendl;
-	}
-}
-
-void LLViewerWearable::createVisualParams()
-{
-	for (LLViewerVisualParam* param = (LLViewerVisualParam*) gAgentAvatarp->getFirstVisualParam(); 
-		 param;
-		 param = (LLViewerVisualParam*) gAgentAvatarp->getNextVisualParam())
-	{
-		if (param->getWearableType() == mType)
-		{
-			addVisualParam(param->cloneParam(this));
-		}
-	}
-
-	// resync driver parameters to point to the newly cloned driven parameters
-	for (visual_param_index_map_t::iterator param_iter = mVisualParamIndexMap.begin(); 
-		 param_iter != mVisualParamIndexMap.end(); 
-		 ++param_iter)
-	{
-		LLVisualParam* param = param_iter->second;
-		LLVisualParam*(LLWearable::*wearable_function)(S32)const = &LLWearable::getVisualParam; 
-		// need this line to disambiguate between versions of LLCharacter::getVisualParam()
-		LLVisualParam*(LLAvatarAppearance::*param_function)(S32)const = &LLAvatarAppearance::getVisualParam; 
-		param->resetDrivenParams();
-		if(!param->linkDrivenParams(boost::bind(wearable_function,(LLWearable*)this, _1), false))
-		{
-			if( !param->linkDrivenParams(boost::bind(param_function,gAgentAvatarp.get(),_1 ), true))
-			{
-				llwarns << "could not link driven params for wearable " << getName() << " id: " << param->getID() << llendl;
-				continue;
-			}
-		}
-	}
-}
-
-void LLViewerWearable::setVisualParams()
-{
-	for (visual_param_index_map_t::const_iterator iter = mVisualParamIndexMap.begin(); iter != mVisualParamIndexMap.end(); iter++)
-	{
-		S32 id = iter->first;
-		LLVisualParam *wearable_param = iter->second;
-		F32 value = wearable_param->getWeight();
-		gAgentAvatarp->setVisualParamWeight(id, value, FALSE);
-	}
-}
-
-
-
 std::ostream& operator<<(std::ostream &s, const LLViewerWearable &w)
 {
 	s << "wearable " << LLWearableType::getTypeName(w.mType) << "\n";
@@ -897,4 +896,3 @@ std::string asset_id_to_filename(const LLUUID &asset_id)
 	std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_CACHE,asset_id_string) + ".wbl";	
 	return filename;
 }
-
diff --git a/indra/newview/llviewerwearable.h b/indra/newview/llviewerwearable.h
index 857900f5832..a921f82e7d1 100644
--- a/indra/newview/llviewerwearable.h
+++ b/indra/newview/llviewerwearable.h
@@ -54,8 +54,6 @@ class LLViewerWearable : public LLWearable
 	void						setItemID(const LLUUID& item_id);
 
 public:
-	/*virtual*/ BOOL	exportFile(LLFILE* file) const;
-	/*virtual*/ EImportResult	importFile(LLFILE* file);
 
 	BOOL				isDirty() const;
 	BOOL				isOldVersion() const;
@@ -64,6 +62,9 @@ class LLViewerWearable : public LLWearable
 	void				removeFromAvatar( BOOL upload_bake )	{ LLViewerWearable::removeFromAvatar( mType, upload_bake ); }
 	static void			removeFromAvatar( LLWearableType::EType type, BOOL upload_bake ); 
 
+	/*virtual*/ BOOL	exportFile(LLFILE* file) const;
+	/*virtual*/ EImportResult	importFile(LLFILE* file);
+	
 	void				setParamsToDefaults();
 	void				setTexturesToDefaults();
 
@@ -81,6 +82,7 @@ class LLViewerWearable : public LLWearable
 	const LLLocalTextureObject* getLocalTextureObject(S32 index) const;
 	std::vector<LLLocalTextureObject*> getLocalTextureListSeq();
 	void				setLocalTextureObject(S32 index, LLLocalTextureObject &lto);
+	void				setVisualParams();
 
 	void				revertValues();
 	void				saveValues();
@@ -96,19 +98,19 @@ class LLViewerWearable : public LLWearable
 	void				refreshName();
 
 protected:
+	typedef std::map<S32, LLLocalTextureObject*> te_map_t;
+
 	void 				createLayers(S32 te);
 	/*virtual*/void 	createVisualParams();
-	void				setVisualParams();
 
-	typedef std::map<S32, LLLocalTextureObject*> te_map_t;
 	void				syncImages(te_map_t &src, te_map_t &dst);
 	void				destroyTextures();	
-	LLTransactionID		mTransactionID;
 	LLAssetID			mAssetID;
-	LLUUID				mItemID;  // ID of the inventory item in the agent's inventory	
+	LLTransactionID		mTransactionID;
 
 	te_map_t mTEMap;				// maps TE to LocalTextureObject
 	te_map_t mSavedTEMap;			// last saved version of TEMap
+	LLUUID				mItemID;  // ID of the inventory item in the agent's inventory	
 };
 
 
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index dac479b2e01..e3d8f9135e5 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -764,6 +764,7 @@ LLVOAvatar::LLVOAvatar(const LLUUID& id,
 
 	mRuthTimer.reset();
 	mRuthDebugTimer.reset();
+	mDebugExistenceTimer.reset();
 	mPelvisOffset = LLVector3(0.0f,0.0f,0.0f);
 	mLastPelvisToFoot = 0.0f;
 	mPelvisFixup = 0.0f;
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
index 023711d81b1..512522803ae 100755
--- a/indra/newview/llvoavatar.h
+++ b/indra/newview/llvoavatar.h
@@ -1038,9 +1038,12 @@ class LLVOAvatar :
 	//--------------------------------------------------------------------
 public:
 	void 			debugAvatarRezTime(std::string notification_name, std::string comment = "");
+	F32				debugGetExistenceTimeElapsedF32() const { return mDebugExistenceTimer.getElapsedTimeF32(); }
+
 
 protected:
 	LLFrameTimer	mRuthDebugTimer; // For tracking how long it takes for av to rez
+	LLFrameTimer	mDebugExistenceTimer; // Debugging for how long the avatar has been in memory.
 
 /**                    Diagnostics
  **                                                                            **
-- 
GitLab


From 21c364c4d455cc05ec176032e8c090be0cc4ed50 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Mon, 3 Sep 2012 09:10:24 +0000
Subject: [PATCH 049/436] Renamed LLVOAvatarDefines to
 LLAvatarAppearanceDefines

---
 indra/llappearance/CMakeLists.txt             |   4 +-
 indra/llappearance/llavatarappearance.cpp     |   2 +-
 indra/llappearance/llavatarappearance.h       |  10 +-
 ...ines.cpp => llavatarappearancedefines.cpp} |  42 +++---
 ...rdefines.h => llavatarappearancedefines.h} |  22 +--
 indra/llappearance/lltexlayer.cpp             |  14 +-
 indra/llappearance/lltexlayer.h               |  10 +-
 indra/llappearance/llwearable.cpp             |   8 +-
 indra/newview/llagent.cpp                     |  10 +-
 indra/newview/llagent.h                       |   4 +-
 indra/newview/llagentcamera.cpp               |   2 +-
 indra/newview/llagentwearables.cpp            |  12 +-
 indra/newview/llagentwearables.h              |   6 +-
 indra/newview/llappearance.h                  |   8 +-
 indra/newview/llavatariconctrl.cpp            |   2 +-
 indra/newview/llfloateravatartextures.cpp     |  10 +-
 indra/newview/llfloateravatartextures.h       |   4 +-
 indra/newview/lllocalbitmaps.cpp              | 100 ++++++-------
 indra/newview/lllocalbitmaps.h                |   4 +-
 indra/newview/llpaneleditwearable.cpp         |  20 +--
 indra/newview/llpaneleditwearable.h           |  12 +-
 indra/newview/lltextureview.cpp               |   6 +-
 indra/newview/llviewermenu.cpp                |   4 +-
 indra/newview/llviewertexlayer.cpp            |   4 +-
 indra/newview/llviewerwearable.cpp            |  26 ++--
 indra/newview/llviewerwearable.h              |   4 +-
 indra/newview/llvoavatar.cpp                  | 102 +++++++-------
 indra/newview/llvoavatar.h                    |  30 ++--
 indra/newview/llvoavatarself.cpp              | 132 +++++++++---------
 indra/newview/llvoavatarself.h                |  58 ++++----
 30 files changed, 336 insertions(+), 336 deletions(-)
 rename indra/llappearance/{llvoavatardefines.cpp => llavatarappearancedefines.cpp} (88%)
 rename indra/llappearance/{llvoavatardefines.h => llavatarappearancedefines.h} (93%)

diff --git a/indra/llappearance/CMakeLists.txt b/indra/llappearance/CMakeLists.txt
index 8d2334c566c..f77c7e6440d 100644
--- a/indra/llappearance/CMakeLists.txt
+++ b/indra/llappearance/CMakeLists.txt
@@ -52,7 +52,7 @@ set(llappearance_SOURCE_FILES
     llwearable.cpp
     llwearabletype.cpp
     llviewervisualparam.cpp
-    llvoavatardefines.cpp
+    llavatarappearancedefines.cpp
     )
     
 set(llappearance_HEADER_FILES
@@ -69,7 +69,7 @@ set(llappearance_HEADER_FILES
     llwearable.h
     llwearabletype.h
     llviewervisualparam.h
-    llvoavatardefines.h
+    llavatarappearancedefines.h
     )
 
 set_source_files_properties(${llappearance_HEADER_FILES}
diff --git a/indra/llappearance/llavatarappearance.cpp b/indra/llappearance/llavatarappearance.cpp
index 044ea8fbf06..2cc38ae2ab8 100644
--- a/indra/llappearance/llavatarappearance.cpp
+++ b/indra/llappearance/llavatarappearance.cpp
@@ -40,7 +40,7 @@ LLAvatarAppearance::LLAvatarAppearance() :
 {
 }
 
-using namespace LLVOAvatarDefines;
+using namespace LLAvatarAppearanceDefines;
 
 //static
 BOOL LLAvatarAppearance::teToColorParams( ETextureIndex te, U32 *param_name )
diff --git a/indra/llappearance/llavatarappearance.h b/indra/llappearance/llavatarappearance.h
index 1b0e0ad2701..0ab3960e643 100644
--- a/indra/llappearance/llavatarappearance.h
+++ b/indra/llappearance/llavatarappearance.h
@@ -29,7 +29,7 @@
 
 #include "llcharacter.h"
 #include "llframetimer.h"
-#include "llvoavatardefines.h"
+#include "llavatarappearancedefines.h"
 
 class LLTexGlobalColor;
 class LLTexLayerSet;
@@ -50,9 +50,9 @@ class LLAvatarAppearance : public LLCharacter
 	// Clothing colors (convenience functions to access visual parameters)
 	//--------------------------------------------------------------------
 public:
-	void			setClothesColor(LLVOAvatarDefines::ETextureIndex te, const LLColor4& new_color, BOOL upload_bake);
-	LLColor4		getClothesColor(LLVOAvatarDefines::ETextureIndex te);
-	static BOOL		teToColorParams(LLVOAvatarDefines::ETextureIndex te, U32 *param_name);
+	void			setClothesColor(LLAvatarAppearanceDefines::ETextureIndex te, const LLColor4& new_color, BOOL upload_bake);
+	LLColor4		getClothesColor(LLAvatarAppearanceDefines::ETextureIndex te);
+	static BOOL		teToColorParams(LLAvatarAppearanceDefines::ETextureIndex te, U32 *param_name);
 
 	//--------------------------------------------------------------------
 	// Global colors
@@ -69,7 +69,7 @@ class LLAvatarAppearance : public LLCharacter
 	// Morph masks
 	//--------------------------------------------------------------------
 public:
-	virtual void	applyMorphMask(U8* tex_data, S32 width, S32 height, S32 num_components, LLVOAvatarDefines::EBakedTextureIndex index = LLVOAvatarDefines::BAKED_NUM_INDICES) = 0;
+	virtual void	applyMorphMask(U8* tex_data, S32 width, S32 height, S32 num_components, LLAvatarAppearanceDefines::EBakedTextureIndex index = LLAvatarAppearanceDefines::BAKED_NUM_INDICES) = 0;
 
 	//--------------------------------------------------------------------
 	// Composites
diff --git a/indra/llappearance/llvoavatardefines.cpp b/indra/llappearance/llavatarappearancedefines.cpp
similarity index 88%
rename from indra/llappearance/llvoavatardefines.cpp
rename to indra/llappearance/llavatarappearancedefines.cpp
index 29891986f5c..2c3cf781c18 100644
--- a/indra/llappearance/llvoavatardefines.cpp
+++ b/indra/llappearance/llavatarappearancedefines.cpp
@@ -1,6 +1,6 @@
 /** 
- * @file llvoavatardefines.cpp
- * @brief Implementation of LLVOAvatarDefines::LLVOAvatarDictionary 
+ * @file llavatarappearancedefines.cpp
+ * @brief Implementation of LLAvatarAppearanceDefines::LLAvatarAppearanceDictionary 
  *
  * $LicenseInfo:firstyear=2001&license=viewerlgpl$
  * Second Life Viewer Source Code
@@ -25,19 +25,19 @@
  */
 
 #include "linden_common.h"
-#include "llvoavatardefines.h"
+#include "llavatarappearancedefines.h"
 
-const S32 LLVOAvatarDefines::SCRATCH_TEX_WIDTH = 512;
-const S32 LLVOAvatarDefines::SCRATCH_TEX_HEIGHT = 512;
-const S32 LLVOAvatarDefines::IMPOSTOR_PERIOD = 2;
+const S32 LLAvatarAppearanceDefines::SCRATCH_TEX_WIDTH = 512;
+const S32 LLAvatarAppearanceDefines::SCRATCH_TEX_HEIGHT = 512;
+const S32 LLAvatarAppearanceDefines::IMPOSTOR_PERIOD = 2;
 
-using namespace LLVOAvatarDefines;
+using namespace LLAvatarAppearanceDefines;
 
 /*********************************************************************************
  * Edit this function to add/remove/change textures and mesh definitions for avatars.
  */
 
-LLVOAvatarDictionary::Textures::Textures()
+LLAvatarAppearanceDictionary::Textures::Textures()
 {
 	addEntry(TEX_HEAD_BODYPAINT,              new TextureEntry("head_bodypaint",   TRUE,  BAKED_NUM_INDICES, "",                          LLWearableType::WT_SKIN));
 	addEntry(TEX_UPPER_SHIRT,                 new TextureEntry("upper_shirt",      TRUE,  BAKED_NUM_INDICES, "UIImgDefaultShirtUUID",     LLWearableType::WT_SHIRT));
@@ -73,7 +73,7 @@ LLVOAvatarDictionary::Textures::Textures()
 	addEntry(TEX_SKIRT_BAKED,                 new TextureEntry("skirt-baked",      FALSE, BAKED_SKIRT, "skirt"));
 }
 
-LLVOAvatarDictionary::BakedTextures::BakedTextures()
+LLAvatarAppearanceDictionary::BakedTextures::BakedTextures()
 {
 	// Baked textures
 	addEntry(BAKED_HEAD,       new BakedEntry(TEX_HEAD_BAKED,  
@@ -109,7 +109,7 @@ LLVOAvatarDictionary::BakedTextures::BakedTextures()
 											  2, LLWearableType::WT_HAIR, LLWearableType::WT_ALPHA));
 }
 
-LLVOAvatarDictionary::Meshes::Meshes()
+LLAvatarAppearanceDictionary::Meshes::Meshes()
 {
 	// Meshes
 	addEntry(MESH_ID_HAIR,             new MeshEntry(BAKED_HAIR,  "hairMesh",         6, PN_4));
@@ -126,19 +126,19 @@ LLVOAvatarDictionary::Meshes::Meshes()
  *
  *********************************************************************************/
 
-LLVOAvatarDictionary::LLVOAvatarDictionary()
+LLAvatarAppearanceDictionary::LLAvatarAppearanceDictionary()
 {
 	createAssociations();
 }
 
 //virtual 
-LLVOAvatarDictionary::~LLVOAvatarDictionary()
+LLAvatarAppearanceDictionary::~LLAvatarAppearanceDictionary()
 {
 }
 
 // Baked textures are composites of textures; for each such composited texture,
 // map it to the baked texture.
-void LLVOAvatarDictionary::createAssociations()
+void LLAvatarAppearanceDictionary::createAssociations()
 {
 	for (BakedTextures::const_iterator iter = mBakedTextures.begin(); iter != mBakedTextures.end(); iter++)
 	{
@@ -159,7 +159,7 @@ void LLVOAvatarDictionary::createAssociations()
 		
 }
 
-LLVOAvatarDictionary::TextureEntry::TextureEntry(const std::string &name,
+LLAvatarAppearanceDictionary::TextureEntry::TextureEntry(const std::string &name,
 												 bool is_local_texture, 
 												 EBakedTextureIndex baked_texture_index,
 												 const std::string &default_image_name,
@@ -174,7 +174,7 @@ LLVOAvatarDictionary::TextureEntry::TextureEntry(const std::string &name,
 {
 }
 
-LLVOAvatarDictionary::MeshEntry::MeshEntry(EBakedTextureIndex baked_index, 
+LLAvatarAppearanceDictionary::MeshEntry::MeshEntry(EBakedTextureIndex baked_index, 
 										   const std::string &name, 
 										   U8 level,
 										   LLJointPickName pick) :
@@ -184,7 +184,7 @@ LLVOAvatarDictionary::MeshEntry::MeshEntry(EBakedTextureIndex baked_index,
 	mPickName(pick)
 {
 }
-LLVOAvatarDictionary::BakedEntry::BakedEntry(ETextureIndex tex_index, 
+LLAvatarAppearanceDictionary::BakedEntry::BakedEntry(ETextureIndex tex_index, 
 											 const std::string &name, 
 											 const std::string &hash_name,
 											 U32 num_local_textures,
@@ -215,18 +215,18 @@ LLVOAvatarDictionary::BakedEntry::BakedEntry(ETextureIndex tex_index,
 }
 
 // static
-ETextureIndex LLVOAvatarDictionary::bakedToLocalTextureIndex(EBakedTextureIndex index)
+ETextureIndex LLAvatarAppearanceDictionary::bakedToLocalTextureIndex(EBakedTextureIndex index)
 {
-	return LLVOAvatarDictionary::getInstance()->getBakedTexture(index)->mTextureIndex;
+	return LLAvatarAppearanceDictionary::getInstance()->getBakedTexture(index)->mTextureIndex;
 }
 
 //static 
-EBakedTextureIndex LLVOAvatarDictionary::findBakedByRegionName(std::string name)
+EBakedTextureIndex LLAvatarAppearanceDictionary::findBakedByRegionName(std::string name)
 {
 	U8 index = 0;
 	while (index < BAKED_NUM_INDICES)
 	{
-		const BakedEntry *be = LLVOAvatarDictionary::getInstance()->getBakedTexture((EBakedTextureIndex) index);
+		const BakedEntry *be = LLAvatarAppearanceDictionary::getInstance()->getBakedTexture((EBakedTextureIndex) index);
 		if (be && be->mName.compare(name) == 0)
 		{
 			// baked texture found
@@ -239,7 +239,7 @@ EBakedTextureIndex LLVOAvatarDictionary::findBakedByRegionName(std::string name)
 }
 
 // static
-LLWearableType::EType LLVOAvatarDictionary::getTEWearableType(ETextureIndex index )
+LLWearableType::EType LLAvatarAppearanceDictionary::getTEWearableType(ETextureIndex index )
 {
 	return getInstance()->getTexture(index)->mWearableType;
 }
diff --git a/indra/llappearance/llvoavatardefines.h b/indra/llappearance/llavatarappearancedefines.h
similarity index 93%
rename from indra/llappearance/llvoavatardefines.h
rename to indra/llappearance/llavatarappearancedefines.h
index 7745775f9f5..c5285ddc023 100644
--- a/indra/llappearance/llvoavatardefines.h
+++ b/indra/llappearance/llavatarappearancedefines.h
@@ -1,5 +1,5 @@
 /** 
- * @file llvoavatardefines.h
+ * @file llavatarappearancedefines.h
  * @brief Various LLAvatarAppearance related definitions
  * LLViewerObject
  *
@@ -25,15 +25,15 @@
  * $/LicenseInfo$
  */
 
-#ifndef LLVOAVATAR_DEFINES_H
-#define LLVOAVATAR_DEFINES_H
+#ifndef LL_AVATARAPPEARANCE_DEFINES_H
+#define LL_AVATARAPPEARANCE_DEFINES_H
 
 #include <vector>
 #include "llwearable.h"
 #include "lljointpickname.h"
 #include "lldictionary.h"
 
-namespace LLVOAvatarDefines
+namespace LLAvatarAppearanceDefines
 {
 
 extern const S32 SCRATCH_TEX_WIDTH;
@@ -111,21 +111,21 @@ typedef std::vector<EMeshIndex> mesh_vec_t;
 typedef std::vector<LLWearableType::EType> wearables_vec_t;
 
 //------------------------------------------------------------------------
-// LLVOAvatarDictionary
+// LLAvatarAppearanceDictionary
 // 
 // Holds dictionary static entries for textures, baked textures, meshes, etc.; i.e.
 // information that is common to all avatars.
 // 
 // This holds const data - it is initialized once and the contents never change after that.
 //------------------------------------------------------------------------
-class LLVOAvatarDictionary : public LLSingleton<LLVOAvatarDictionary>
+class LLAvatarAppearanceDictionary : public LLSingleton<LLAvatarAppearanceDictionary>
 {
 	//--------------------------------------------------------------------
 	// Constructors and Destructors
 	//--------------------------------------------------------------------
 public:
-	LLVOAvatarDictionary();
-	virtual ~LLVOAvatarDictionary();
+	LLAvatarAppearanceDictionary();
+	virtual ~LLAvatarAppearanceDictionary();
 private:
 	void createAssociations();
 	
@@ -219,8 +219,8 @@ class LLVOAvatarDictionary : public LLSingleton<LLVOAvatarDictionary>
 	// Given a texture entry, determine which wearable type owns it.
 	static LLWearableType::EType 		getTEWearableType(ETextureIndex index);
 
-}; // End LLVOAvatarDictionary
+}; // End LLAvatarAppearanceDictionary
 
-} // End namespace LLVOAvatarDefines
+} // End namespace LLAvatarAppearanceDefines
 
-#endif //LL_VO_AVATARDEFINES_H
+#endif //LL_AVATARAPPEARANCE_DEFINES_H
diff --git a/indra/llappearance/lltexlayer.cpp b/indra/llappearance/lltexlayer.cpp
index 6522976be1f..bf2fd1e30d0 100644
--- a/indra/llappearance/lltexlayer.cpp
+++ b/indra/llappearance/lltexlayer.cpp
@@ -44,7 +44,7 @@
 
 //#include "../tools/imdebug/imdebug.h"
 
-using namespace LLVOAvatarDefines;
+using namespace LLAvatarAppearanceDefines;
 
 static const S32 BAKE_UPLOAD_ATTEMPTS = 7;
 static const F32 BAKE_UPLOAD_RETRY_DELAY = 2.f; // actual delay grows by power of 2 each attempt
@@ -183,7 +183,7 @@ BOOL LLTexLayerSet::sHasCaches = FALSE;
 LLTexLayerSet::LLTexLayerSet(LLAvatarAppearance* const appearance) :
 	mAvatarAppearance( appearance ),
 	mIsVisible( TRUE ),
-	mBakedTexIndex(LLVOAvatarDefines::BAKED_HEAD),
+	mBakedTexIndex(LLAvatarAppearanceDefines::BAKED_HEAD),
 	mInfo( NULL )
 {
 }
@@ -567,11 +567,11 @@ BOOL LLTexLayerInfo::parseXml(LLXmlTreeNode* node)
 			/* if ("upper_shirt" == local_texture_name)
 				mLocalTexture = TEX_UPPER_SHIRT; */
 			mLocalTexture = TEX_NUM_INDICES;
-			for (LLVOAvatarDictionary::Textures::const_iterator iter = LLVOAvatarDictionary::getInstance()->getTextures().begin();
-				 iter != LLVOAvatarDictionary::getInstance()->getTextures().end();
+			for (LLAvatarAppearanceDictionary::Textures::const_iterator iter = LLAvatarAppearanceDictionary::getInstance()->getTextures().begin();
+				 iter != LLAvatarAppearanceDictionary::getInstance()->getTextures().end();
 				 iter++)
 			{
-				const LLVOAvatarDictionary::TextureEntry *texture_dict = iter->second;
+				const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = iter->second;
 				if (local_texture_name == texture_dict->mName)
 			{
 					mLocalTexture = iter->first;
@@ -1450,7 +1450,7 @@ U32 LLTexLayerTemplate::updateWearableCache() const
 		//this isn't a cloneable layer 
 		return 0;
 	}
-	LLWearableType::EType wearable_type = LLVOAvatarDictionary::getTEWearableType((ETextureIndex)te);
+	LLWearableType::EType wearable_type = LLAvatarAppearanceDictionary::getTEWearableType((ETextureIndex)te);
 	U32 num_wearables = getAvatarAppearance()->getWearableCount(wearable_type);
 	U32 added = 0;
 	for (U32 i = 0; i < num_wearables; i++)
@@ -1617,7 +1617,7 @@ LLTexLayerInterface*  LLTexLayerSet::findLayerByName(const std::string& name)
 	return NULL;
 }
 
-void LLTexLayerSet::cloneTemplates(LLLocalTextureObject *lto, LLVOAvatarDefines::ETextureIndex tex_index, LLWearable *wearable)
+void LLTexLayerSet::cloneTemplates(LLLocalTextureObject *lto, LLAvatarAppearanceDefines::ETextureIndex tex_index, LLWearable *wearable)
 {
 	// initialize all texlayers with this texture type for this LTO
 	for( LLTexLayerSet::layer_list_t::iterator iter = mLayerList.begin(); iter != mLayerList.end(); iter++ )
diff --git a/indra/llappearance/lltexlayer.h b/indra/llappearance/lltexlayer.h
index 5ee08e67ec9..5a413e929f8 100644
--- a/indra/llappearance/lltexlayer.h
+++ b/indra/llappearance/lltexlayer.h
@@ -30,7 +30,7 @@
 #include <deque>
 #include "lltexture.h"
 #include "llframetimer.h"
-#include "llvoavatardefines.h"
+#include "llavatarappearancedefines.h"
 #include "lltexlayerparams.h"
 
 class LLAvatarAppearance;
@@ -195,12 +195,12 @@ class LLTexLayerSet
 	void						invalidateMorphMasks();
 	void						deleteCaches();
 	LLTexLayerInterface*		findLayerByName(const std::string& name);
-	void						cloneTemplates(LLLocalTextureObject *lto, LLVOAvatarDefines::ETextureIndex tex_index, LLWearable* wearable);
+	void						cloneTemplates(LLLocalTextureObject *lto, LLAvatarAppearanceDefines::ETextureIndex tex_index, LLWearable* wearable);
 	
 	LLAvatarAppearance*			getAvatarAppearance()	const		{ return mAvatarAppearance; }
 	const std::string			getBodyRegionName() const;
-	LLVOAvatarDefines::EBakedTextureIndex getBakedTexIndex() { return mBakedTexIndex; }
-	void						setBakedTexIndex(LLVOAvatarDefines::EBakedTextureIndex index) { mBakedTexIndex = index; }
+	LLAvatarAppearanceDefines::EBakedTextureIndex getBakedTexIndex() { return mBakedTexIndex; }
+	void						setBakedTexIndex(LLAvatarAppearanceDefines::EBakedTextureIndex index) { mBakedTexIndex = index; }
 	BOOL						isVisible() const 			{ return mIsVisible; }
 
 	static BOOL					sHasCaches;
@@ -212,7 +212,7 @@ class LLTexLayerSet
 	LLAvatarAppearance*	const	mAvatarAppearance; // note: backlink only; don't make this an LLPointer.
 	BOOL						mIsVisible;
 
-	LLVOAvatarDefines::EBakedTextureIndex mBakedTexIndex;
+	LLAvatarAppearanceDefines::EBakedTextureIndex mBakedTexIndex;
 	const LLTexLayerSetInfo* 	mInfo;
 };
 
diff --git a/indra/llappearance/llwearable.cpp b/indra/llappearance/llwearable.cpp
index 77f1f27cb07..ea14c6320fd 100644
--- a/indra/llappearance/llwearable.cpp
+++ b/indra/llappearance/llwearable.cpp
@@ -31,10 +31,10 @@
 #include "lltexlayer.h"
 #include "lltexturemanagerbridge.h"
 #include "llvisualparam.h"
-#include "llvoavatardefines.h"
+#include "llavatarappearancedefines.h"
 #include "llwearable.h"
 
-using namespace LLVOAvatarDefines;
+using namespace LLAvatarAppearanceDefines;
 
 // static
 S32 LLWearable::sCurrentDefinitionVersion = 1;
@@ -420,7 +420,7 @@ LLColor4 LLWearable::getClothesColor(S32 te) const
 {
 	LLColor4 color;
 	U32 param_name[3];
-	if( LLAvatarAppearance::teToColorParams( (LLVOAvatarDefines::ETextureIndex)te, param_name ) )
+	if( LLAvatarAppearance::teToColorParams( (LLAvatarAppearanceDefines::ETextureIndex)te, param_name ) )
 	{
 		for( U8 index = 0; index < 3; index++ )
 		{
@@ -433,7 +433,7 @@ LLColor4 LLWearable::getClothesColor(S32 te) const
 void LLWearable::setClothesColor( S32 te, const LLColor4& new_color, BOOL upload_bake )
 {
 	U32 param_name[3];
-	if( LLAvatarAppearance::teToColorParams( (LLVOAvatarDefines::ETextureIndex)te, param_name ) )
+	if( LLAvatarAppearance::teToColorParams( (LLAvatarAppearanceDefines::ETextureIndex)te, param_name ) )
 	{
 		for( U8 index = 0; index < 3; index++ )
 		{
diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index 2379c239697..4e05836bca2 100755
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -92,7 +92,7 @@
 #include "llworldmap.h"
 #include "stringize.h"
 
-using namespace LLVOAvatarDefines;
+using namespace LLAvatarAppearanceDefines;
 
 extern LLMenuBarGL* gMenuBarView;
 
@@ -3654,7 +3654,7 @@ void LLAgent::processAgentCachedTextureResponse(LLMessageSystem *mesgsys, void *
 
 		if ((S32)texture_index < TEX_NUM_INDICES )
 		{	
-			const LLVOAvatarDictionary::TextureEntry *texture_entry = LLVOAvatarDictionary::instance().getTexture((ETextureIndex)texture_index);
+			const LLAvatarAppearanceDictionary::TextureEntry *texture_entry = LLAvatarAppearanceDictionary::instance().getTexture((ETextureIndex)texture_index);
 			if (texture_entry)
 			{
 				EBakedTextureIndex baked_index = texture_entry->mBakedTextureIndex;
@@ -4303,7 +4303,7 @@ void LLAgent::sendAgentSetAppearance()
 
 	for(U8 baked_index = 0; baked_index < BAKED_NUM_INDICES; baked_index++ )
 	{
-		const ETextureIndex texture_index = LLVOAvatarDictionary::bakedToLocalTextureIndex((EBakedTextureIndex)baked_index);
+		const ETextureIndex texture_index = LLAvatarAppearanceDictionary::bakedToLocalTextureIndex((EBakedTextureIndex)baked_index);
 
 		// if we're not wearing a skirt, we don't need the texture to be baked
 		if (texture_index == TEX_SKIRT_BAKED && !gAgentAvatarp->isWearingWearableType(LLWearableType::WT_SKIRT))
@@ -4326,7 +4326,7 @@ void LLAgent::sendAgentSetAppearance()
 		for (U8 baked_index = 0; baked_index < BAKED_NUM_INDICES; baked_index++)
 		{
 			BOOL generate_valid_hash = TRUE;
-			if (isAgentAvatarValid() && !gAgentAvatarp->isBakedTextureFinal((LLVOAvatarDefines::EBakedTextureIndex)baked_index))
+			if (isAgentAvatarValid() && !gAgentAvatarp->isBakedTextureFinal((LLAvatarAppearanceDefines::EBakedTextureIndex)baked_index))
 			{
 				generate_valid_hash = FALSE;
 				LL_DEBUGS("Avatar") << gAgentAvatarp->avString() << "Not caching baked texture upload for " << (U32)baked_index << " due to being uploaded at low resolution." << LL_ENDL;
@@ -4335,7 +4335,7 @@ void LLAgent::sendAgentSetAppearance()
 			const LLUUID hash = gAgentWearables.computeBakedTextureHash((EBakedTextureIndex) baked_index, generate_valid_hash);
 			if (hash.notNull())
 			{
-				ETextureIndex texture_index = LLVOAvatarDictionary::bakedToLocalTextureIndex((EBakedTextureIndex) baked_index);
+				ETextureIndex texture_index = LLAvatarAppearanceDictionary::bakedToLocalTextureIndex((EBakedTextureIndex) baked_index);
 				msg->nextBlockFast(_PREHASH_WearableData);
 				msg->addUUIDFast(_PREHASH_CacheID, hash);
 				msg->addU8Fast(_PREHASH_TextureIndex, (U8)texture_index);
diff --git a/indra/newview/llagent.h b/indra/newview/llagent.h
index 99904e118c1..f784262e907 100644
--- a/indra/newview/llagent.h
+++ b/indra/newview/llagent.h
@@ -33,7 +33,7 @@
 #include "llagentdata.h" 			// gAgentID, gAgentSessionID
 #include "llcharacter.h"
 #include "llcoordframe.h"			// for mFrameAgent
-#include "llvoavatardefines.h"
+#include "llavatarappearancedefines.h"
 
 #include <boost/function.hpp>
 #include <boost/shared_ptr.hpp>
@@ -901,7 +901,7 @@ class LLAgentQueryManager
 	S32				mNumPendingQueries;
 	S32				mWearablesCacheQueryID;
 	U32				mUpdateSerialNum;
-	S32		    	mActiveCacheQueries[LLVOAvatarDefines::BAKED_NUM_INDICES];
+	S32		    	mActiveCacheQueries[LLAvatarAppearanceDefines::BAKED_NUM_INDICES];
 };
 
 extern LLAgentQueryManager gAgentQueryManager;
diff --git a/indra/newview/llagentcamera.cpp b/indra/newview/llagentcamera.cpp
index a544909e661..e1ef0d53995 100644
--- a/indra/newview/llagentcamera.cpp
+++ b/indra/newview/llagentcamera.cpp
@@ -49,7 +49,7 @@
 #include "llwindow.h"
 #include "llworld.h"
 
-using namespace LLVOAvatarDefines;
+using namespace LLAvatarAppearanceDefines;
 
 extern LLMenuBarGL* gMenuBarView;
 
diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp
index e4f02b9f0bf..2202d653804 100755
--- a/indra/newview/llagentwearables.cpp
+++ b/indra/newview/llagentwearables.cpp
@@ -56,7 +56,7 @@ LLAgentWearables gAgentWearables;
 
 BOOL LLAgentWearables::mInitialWearablesUpdateReceived = FALSE;
 
-using namespace LLVOAvatarDefines;
+using namespace LLAvatarAppearanceDefines;
 
 ///////////////////////////////////////////////////////////////////////////////
 
@@ -903,7 +903,7 @@ U32 LLAgentWearables::getWearableCount(const LLWearableType::EType type) const
 
 U32 LLAgentWearables::getWearableCount(const U32 tex_index) const
 {
-	const LLWearableType::EType wearable_type = LLVOAvatarDictionary::getTEWearableType((LLVOAvatarDefines::ETextureIndex)tex_index);
+	const LLWearableType::EType wearable_type = LLAvatarAppearanceDictionary::getTEWearableType((LLAvatarAppearanceDefines::ETextureIndex)tex_index);
 	return getWearableCount(wearable_type);
 }
 
@@ -1093,7 +1093,7 @@ void LLAgentWearables::recoverMissingWearableDone()
 	}
 }
 
-void LLAgentWearables::addLocalTextureObject(const LLWearableType::EType wearable_type, const LLVOAvatarDefines::ETextureIndex texture_type, U32 wearable_index)
+void LLAgentWearables::addLocalTextureObject(const LLWearableType::EType wearable_type, const LLAvatarAppearanceDefines::ETextureIndex texture_type, U32 wearable_index)
 {
 	LLViewerWearable* wearable = getWearable((LLWearableType::EType)wearable_type, wearable_index);
 	if (!wearable)
@@ -1626,7 +1626,7 @@ void LLAgentWearables::queryWearableCache()
 			num_queries++;
 			// *NOTE: make sure at least one request gets packed
 
-			ETextureIndex te_index = LLVOAvatarDictionary::bakedToLocalTextureIndex((EBakedTextureIndex)baked_index);
+			ETextureIndex te_index = LLAvatarAppearanceDictionary::bakedToLocalTextureIndex((EBakedTextureIndex)baked_index);
 
 			//llinfos << "Requesting texture for hash " << hash << " in baked texture slot " << baked_index << llendl;
 			gMessageSystem->nextBlockFast(_PREHASH_WearableData);
@@ -1652,13 +1652,13 @@ void LLAgentWearables::queryWearableCache()
 	}
 }
 
-LLUUID LLAgentWearables::computeBakedTextureHash(LLVOAvatarDefines::EBakedTextureIndex baked_index,
+LLUUID LLAgentWearables::computeBakedTextureHash(LLAvatarAppearanceDefines::EBakedTextureIndex baked_index,
 												 BOOL generate_valid_hash) // Set to false if you want to upload the baked texture w/o putting it in the cache
 {
 	LLUUID hash_id;
 	bool hash_computed = false;
 	LLMD5 hash;
-	const LLVOAvatarDictionary::BakedEntry *baked_dict = LLVOAvatarDictionary::getInstance()->getBakedTexture(baked_index);
+	const LLAvatarAppearanceDictionary::BakedEntry *baked_dict = LLAvatarAppearanceDictionary::getInstance()->getBakedTexture(baked_index);
 
 	for (U8 i=0; i < baked_dict->mWearables.size(); i++)
 	{
diff --git a/indra/newview/llagentwearables.h b/indra/newview/llagentwearables.h
index 3df552544ba..423e23018eb 100755
--- a/indra/newview/llagentwearables.h
+++ b/indra/newview/llagentwearables.h
@@ -36,7 +36,7 @@
 // newview
 #include "llinventorymodel.h"
 #include "llviewerinventory.h"
-#include "llvoavatardefines.h"
+#include "llavatarappearancedefines.h"
 
 class LLInventoryItem;
 class LLVOAvatarSelf;
@@ -122,7 +122,7 @@ class LLAgentWearables : public LLInitClass<LLAgentWearables>
 	void			setWearableItem(LLInventoryItem* new_item, LLViewerWearable* wearable, bool do_append = false);
 	void			setWearableOutfit(const LLInventoryItem::item_array_t& items, const LLDynamicArray< LLViewerWearable* >& wearables, BOOL remove);
 	void			setWearableName(const LLUUID& item_id, const std::string& new_name);
-	void			addLocalTextureObject(const LLWearableType::EType wearable_type, const LLVOAvatarDefines::ETextureIndex texture_type, U32 wearable_index);
+	void			addLocalTextureObject(const LLWearableType::EType wearable_type, const LLAvatarAppearanceDefines::ETextureIndex texture_type, U32 wearable_index);
 	U32				getWearableIndex(const LLViewerWearable *wearable) const;
 
 protected:
@@ -171,7 +171,7 @@ class LLAgentWearables : public LLInitClass<LLAgentWearables>
 public:
 	// Processes the initial wearables update message (if necessary, since the outfit folder makes it redundant)
 	static void		processAgentInitialWearablesUpdate(LLMessageSystem* mesgsys, void** user_data);
-	LLUUID			computeBakedTextureHash(LLVOAvatarDefines::EBakedTextureIndex baked_index,
+	LLUUID			computeBakedTextureHash(LLAvatarAppearanceDefines::EBakedTextureIndex baked_index,
 											BOOL generate_valid_hash = TRUE);
 
 protected:
diff --git a/indra/newview/llappearance.h b/indra/newview/llappearance.h
index a28b77b1fcc..05dfac4e420 100644
--- a/indra/newview/llappearance.h
+++ b/indra/newview/llappearance.h
@@ -38,14 +38,14 @@ class LLAppearance
 	void	addParam( S32 id, F32 value )				{ mParamMap[id] = value; }
 	F32		getParam( S32 id, F32 defval )				{ return get_if_there(mParamMap, id, defval ); }
 
-	void	addTexture( S32 te, const LLUUID& uuid )	{ if( te < LLVOAvatarDefines::TEX_NUM_INDICES ) mTextures[te] = uuid; }
-	const LLUUID& getTexture( S32 te )					{ return ( te < LLVOAvatarDefines::TEX_NUM_INDICES ) ? mTextures[te] : LLUUID::null; }
+	void	addTexture( S32 te, const LLUUID& uuid )	{ if( te < LLAvatarAppearanceDefines::TEX_NUM_INDICES ) mTextures[te] = uuid; }
+	const LLUUID& getTexture( S32 te )					{ return ( te < LLAvatarAppearanceDefines::TEX_NUM_INDICES ) ? mTextures[te] : LLUUID::null; }
 	
-	void	clear()										{ mParamMap.clear(); for( S32 i=0; i<LLVOAvatarDefines::TEX_NUM_INDICES; i++ ) mTextures[i].setNull(); }
+	void	clear()										{ mParamMap.clear(); for( S32 i=0; i<LLAvatarAppearanceDefines::TEX_NUM_INDICES; i++ ) mTextures[i].setNull(); }
 
 	typedef std::map<S32, F32> param_map_t;
 	param_map_t mParamMap;
-	LLUUID	mTextures[LLVOAvatarDefines::TEX_NUM_INDICES];
+	LLUUID	mTextures[LLAvatarAppearanceDefines::TEX_NUM_INDICES];
 };
 
 #endif  // LL_LLAPPEARANCE_H
diff --git a/indra/newview/llavatariconctrl.cpp b/indra/newview/llavatariconctrl.cpp
index d2acd32713c..76f10e2d56c 100755
--- a/indra/newview/llavatariconctrl.cpp
+++ b/indra/newview/llavatariconctrl.cpp
@@ -38,7 +38,7 @@
 #include "llagentdata.h"
 #include "llimfloater.h"
 #include "llviewertexture.h"
-#include "llvoavatardefines.h"
+#include "llavatarappearancedefines.h"
 
 // library includes
 #include "llavatarnamecache.h"
diff --git a/indra/newview/llfloateravatartextures.cpp b/indra/newview/llfloateravatartextures.cpp
index b26b302ea6e..68bdf9a8d68 100644
--- a/indra/newview/llfloateravatartextures.cpp
+++ b/indra/newview/llfloateravatartextures.cpp
@@ -38,7 +38,7 @@
 #include "llviewerobjectlist.h"
 #include "llvoavatarself.h"
 
-using namespace LLVOAvatarDefines;
+using namespace LLAvatarAppearanceDefines;
 
 LLFloaterAvatarTextures::LLFloaterAvatarTextures(const LLSD& id)
   : LLFloater(id),
@@ -54,7 +54,7 @@ BOOL LLFloaterAvatarTextures::postBuild()
 {
 	for (U32 i=0; i < TEX_NUM_INDICES; i++)
 	{
-		const std::string tex_name = LLVOAvatarDictionary::getInstance()->getTexture(ETextureIndex(i))->mName;
+		const std::string tex_name = LLAvatarAppearanceDictionary::getInstance()->getTexture(ETextureIndex(i))->mName;
 		mTextures[i] = getChild<LLTextureCtrl>(tex_name);
 	}
 	mTitle = getTitle();
@@ -76,7 +76,7 @@ static void update_texture_ctrl(LLVOAvatar* avatarp,
 								 ETextureIndex te)
 {
 	LLUUID id = IMG_DEFAULT_AVATAR;
-	const LLVOAvatarDictionary::TextureEntry* tex_entry = LLVOAvatarDictionary::getInstance()->getTexture(te);
+	const LLAvatarAppearanceDictionary::TextureEntry* tex_entry = LLAvatarAppearanceDictionary::getInstance()->getTexture(te);
 	if (tex_entry->mIsLocalTexture)
 	{
 		if (avatarp->isSelf())
@@ -164,14 +164,14 @@ void LLFloaterAvatarTextures::onClickDump(void* data)
 			const LLTextureEntry* te = avatarp->getTE(i);
 			if (!te) continue;
 
-			const LLVOAvatarDictionary::TextureEntry* tex_entry = LLVOAvatarDictionary::getInstance()->getTexture((ETextureIndex)(i));
+			const LLAvatarAppearanceDictionary::TextureEntry* tex_entry = LLAvatarAppearanceDictionary::getInstance()->getTexture((ETextureIndex)(i));
 			if (!tex_entry)
 				continue;
 
 			if (LLVOAvatar::isIndexLocalTexture((ETextureIndex)i))
 			{
 				LLUUID id = IMG_DEFAULT_AVATAR;
-				LLWearableType::EType wearable_type = LLVOAvatarDictionary::getInstance()->getTEWearableType((ETextureIndex)i);
+				LLWearableType::EType wearable_type = LLAvatarAppearanceDictionary::getInstance()->getTEWearableType((ETextureIndex)i);
 				if (avatarp->isSelf())
 				{
 					LLViewerWearable *wearable = gAgentWearables.getWearable(wearable_type, 0);
diff --git a/indra/newview/llfloateravatartextures.h b/indra/newview/llfloateravatartextures.h
index 85ff545855e..02474a10e15 100644
--- a/indra/newview/llfloateravatartextures.h
+++ b/indra/newview/llfloateravatartextures.h
@@ -30,7 +30,7 @@
 #include "llfloater.h"
 #include "lluuid.h"
 #include "llstring.h"
-#include "llvoavatardefines.h"
+#include "llavatarappearancedefines.h"
 
 class LLTextureCtrl;
 
@@ -51,7 +51,7 @@ class LLFloaterAvatarTextures : public LLFloater
 private:
 	LLUUID	mID;
 	std::string mTitle;
-	LLTextureCtrl* mTextures[LLVOAvatarDefines::TEX_NUM_INDICES];
+	LLTextureCtrl* mTextures[LLAvatarAppearanceDefines::TEX_NUM_INDICES];
 };
 
 #endif
diff --git a/indra/newview/lllocalbitmaps.cpp b/indra/newview/lllocalbitmaps.cpp
index 097c7513861..fce4c29870a 100644
--- a/indra/newview/lllocalbitmaps.cpp
+++ b/indra/newview/lllocalbitmaps.cpp
@@ -495,11 +495,11 @@ void LLLocalBitmap::updateUserLayers(LLUUID old_id, LLUUID new_id, LLWearableTyp
 				if (lto && lto->getID() == old_id)
 				{
 					U32 local_texlayer_index = 0; /* can't keep that as static const, gives errors, so i'm leaving this var here */
-					LLVOAvatarDefines::EBakedTextureIndex baked_texind =
+					LLAvatarAppearanceDefines::EBakedTextureIndex baked_texind =
 						lto->getTexLayer(local_texlayer_index)->getTexLayerSet()->getBakedTexIndex();
 				
-					LLVOAvatarDefines::ETextureIndex reg_texind = getTexIndex(type, baked_texind);
-					if (reg_texind != LLVOAvatarDefines::TEX_NUM_INDICES)
+					LLAvatarAppearanceDefines::ETextureIndex reg_texind = getTexIndex(type, baked_texind);
+					if (reg_texind != LLAvatarAppearanceDefines::TEX_NUM_INDICES)
 					{
 						U32 index = gAgentWearables.getWearableIndex(wearable);
 						gAgentAvatarp->setLocalTexture(reg_texind, gTextureList.getImage(new_id), FALSE, index);
@@ -515,10 +515,10 @@ void LLLocalBitmap::updateUserLayers(LLUUID old_id, LLUUID new_id, LLWearableTyp
 	}
 }
 
-LLVOAvatarDefines::ETextureIndex LLLocalBitmap::getTexIndex(
-	LLWearableType::EType type, LLVOAvatarDefines::EBakedTextureIndex baked_texind)
+LLAvatarAppearanceDefines::ETextureIndex LLLocalBitmap::getTexIndex(
+	LLWearableType::EType type, LLAvatarAppearanceDefines::EBakedTextureIndex baked_texind)
 {
-	LLVOAvatarDefines::ETextureIndex result = LLVOAvatarDefines::TEX_NUM_INDICES; // using as a default/fail return.
+	LLAvatarAppearanceDefines::ETextureIndex result = LLAvatarAppearanceDefines::TEX_NUM_INDICES; // using as a default/fail return.
 
 	switch(type)
 	{
@@ -526,32 +526,32 @@ LLVOAvatarDefines::ETextureIndex LLLocalBitmap::getTexIndex(
 		{
 			switch(baked_texind)
 			{
-				case LLVOAvatarDefines::BAKED_EYES:
+				case LLAvatarAppearanceDefines::BAKED_EYES:
 				{
-					result = LLVOAvatarDefines::TEX_EYES_ALPHA;
+					result = LLAvatarAppearanceDefines::TEX_EYES_ALPHA;
 					break;
 				}
 
-				case LLVOAvatarDefines::BAKED_HAIR:
+				case LLAvatarAppearanceDefines::BAKED_HAIR:
 				{
-					result = LLVOAvatarDefines::TEX_HAIR_ALPHA;
+					result = LLAvatarAppearanceDefines::TEX_HAIR_ALPHA;
 					break;
 				}
 
-				case LLVOAvatarDefines::BAKED_HEAD:
+				case LLAvatarAppearanceDefines::BAKED_HEAD:
 				{
-					result = LLVOAvatarDefines::TEX_HEAD_ALPHA;
+					result = LLAvatarAppearanceDefines::TEX_HEAD_ALPHA;
 					break;
 				}
 
-				case LLVOAvatarDefines::BAKED_LOWER:
+				case LLAvatarAppearanceDefines::BAKED_LOWER:
 				{
-					result = LLVOAvatarDefines::TEX_LOWER_ALPHA;
+					result = LLAvatarAppearanceDefines::TEX_LOWER_ALPHA;
 					break;
 				}
-				case LLVOAvatarDefines::BAKED_UPPER:
+				case LLAvatarAppearanceDefines::BAKED_UPPER:
 				{
-					result = LLVOAvatarDefines::TEX_UPPER_ALPHA;
+					result = LLAvatarAppearanceDefines::TEX_UPPER_ALPHA;
 					break;
 				}
 
@@ -567,9 +567,9 @@ LLVOAvatarDefines::ETextureIndex LLLocalBitmap::getTexIndex(
 
 		case LLWearableType::WT_EYES:
 		{
-			if (baked_texind == LLVOAvatarDefines::BAKED_EYES)
+			if (baked_texind == LLAvatarAppearanceDefines::BAKED_EYES)
 			{
-				result = LLVOAvatarDefines::TEX_EYES_IRIS;
+				result = LLAvatarAppearanceDefines::TEX_EYES_IRIS;
 			}
 
 			break;
@@ -577,9 +577,9 @@ LLVOAvatarDefines::ETextureIndex LLLocalBitmap::getTexIndex(
 
 		case LLWearableType::WT_GLOVES:
 		{
-			if (baked_texind == LLVOAvatarDefines::BAKED_UPPER)
+			if (baked_texind == LLAvatarAppearanceDefines::BAKED_UPPER)
 			{
-				result = LLVOAvatarDefines::TEX_UPPER_GLOVES;
+				result = LLAvatarAppearanceDefines::TEX_UPPER_GLOVES;
 			}
 
 			break;
@@ -587,13 +587,13 @@ LLVOAvatarDefines::ETextureIndex LLLocalBitmap::getTexIndex(
 
 		case LLWearableType::WT_JACKET:
 		{
-			if (baked_texind == LLVOAvatarDefines::BAKED_LOWER)
+			if (baked_texind == LLAvatarAppearanceDefines::BAKED_LOWER)
 			{
-				result = LLVOAvatarDefines::TEX_LOWER_JACKET;
+				result = LLAvatarAppearanceDefines::TEX_LOWER_JACKET;
 			}
-			else if (baked_texind == LLVOAvatarDefines::BAKED_UPPER)
+			else if (baked_texind == LLAvatarAppearanceDefines::BAKED_UPPER)
 			{
-				result = LLVOAvatarDefines::TEX_UPPER_JACKET;
+				result = LLAvatarAppearanceDefines::TEX_UPPER_JACKET;
 			}
 
 			break;
@@ -601,9 +601,9 @@ LLVOAvatarDefines::ETextureIndex LLLocalBitmap::getTexIndex(
 
 		case LLWearableType::WT_PANTS:
 		{
-			if (baked_texind == LLVOAvatarDefines::BAKED_LOWER)
+			if (baked_texind == LLAvatarAppearanceDefines::BAKED_LOWER)
 			{
-				result = LLVOAvatarDefines::TEX_LOWER_PANTS;
+				result = LLAvatarAppearanceDefines::TEX_LOWER_PANTS;
 			}
 
 			break;
@@ -611,9 +611,9 @@ LLVOAvatarDefines::ETextureIndex LLLocalBitmap::getTexIndex(
 
 		case LLWearableType::WT_SHIRT:
 		{
-			if (baked_texind == LLVOAvatarDefines::BAKED_UPPER)
+			if (baked_texind == LLAvatarAppearanceDefines::BAKED_UPPER)
 			{
-				result = LLVOAvatarDefines::TEX_UPPER_SHIRT;
+				result = LLAvatarAppearanceDefines::TEX_UPPER_SHIRT;
 			}
 
 			break;
@@ -621,9 +621,9 @@ LLVOAvatarDefines::ETextureIndex LLLocalBitmap::getTexIndex(
 
 		case LLWearableType::WT_SHOES:
 		{
-			if (baked_texind == LLVOAvatarDefines::BAKED_LOWER)
+			if (baked_texind == LLAvatarAppearanceDefines::BAKED_LOWER)
 			{
-				result = LLVOAvatarDefines::TEX_LOWER_SHOES;
+				result = LLAvatarAppearanceDefines::TEX_LOWER_SHOES;
 			}
 
 			break;
@@ -633,20 +633,20 @@ LLVOAvatarDefines::ETextureIndex LLLocalBitmap::getTexIndex(
 		{
 			switch(baked_texind)
 			{
-				case LLVOAvatarDefines::BAKED_HEAD:
+				case LLAvatarAppearanceDefines::BAKED_HEAD:
 				{
-					result = LLVOAvatarDefines::TEX_HEAD_BODYPAINT;
+					result = LLAvatarAppearanceDefines::TEX_HEAD_BODYPAINT;
 					break;
 				}
 
-				case LLVOAvatarDefines::BAKED_LOWER:
+				case LLAvatarAppearanceDefines::BAKED_LOWER:
 				{
-					result = LLVOAvatarDefines::TEX_LOWER_BODYPAINT;
+					result = LLAvatarAppearanceDefines::TEX_LOWER_BODYPAINT;
 					break;
 				}
-				case LLVOAvatarDefines::BAKED_UPPER:
+				case LLAvatarAppearanceDefines::BAKED_UPPER:
 				{
-					result = LLVOAvatarDefines::TEX_UPPER_BODYPAINT;
+					result = LLAvatarAppearanceDefines::TEX_UPPER_BODYPAINT;
 					break;
 				}
 
@@ -661,9 +661,9 @@ LLVOAvatarDefines::ETextureIndex LLLocalBitmap::getTexIndex(
 
 		case LLWearableType::WT_SKIRT:
 		{
-			if (baked_texind == LLVOAvatarDefines::BAKED_SKIRT)
+			if (baked_texind == LLAvatarAppearanceDefines::BAKED_SKIRT)
 			{
-				result = LLVOAvatarDefines::TEX_SKIRT;
+				result = LLAvatarAppearanceDefines::TEX_SKIRT;
 			}
 
 			break;
@@ -671,9 +671,9 @@ LLVOAvatarDefines::ETextureIndex LLLocalBitmap::getTexIndex(
 
 		case LLWearableType::WT_SOCKS:
 		{
-			if (baked_texind == LLVOAvatarDefines::BAKED_LOWER)
+			if (baked_texind == LLAvatarAppearanceDefines::BAKED_LOWER)
 			{
-				result = LLVOAvatarDefines::TEX_LOWER_SOCKS;
+				result = LLAvatarAppearanceDefines::TEX_LOWER_SOCKS;
 			}
 
 			break;
@@ -683,20 +683,20 @@ LLVOAvatarDefines::ETextureIndex LLLocalBitmap::getTexIndex(
 		{
 			switch(baked_texind)
 			{
-				case LLVOAvatarDefines::BAKED_HEAD:
+				case LLAvatarAppearanceDefines::BAKED_HEAD:
 				{
-					result = LLVOAvatarDefines::TEX_HEAD_TATTOO;
+					result = LLAvatarAppearanceDefines::TEX_HEAD_TATTOO;
 					break;
 				}
 
-				case LLVOAvatarDefines::BAKED_LOWER:
+				case LLAvatarAppearanceDefines::BAKED_LOWER:
 				{
-					result = LLVOAvatarDefines::TEX_LOWER_TATTOO;
+					result = LLAvatarAppearanceDefines::TEX_LOWER_TATTOO;
 					break;
 				}
-				case LLVOAvatarDefines::BAKED_UPPER:
+				case LLAvatarAppearanceDefines::BAKED_UPPER:
 				{
-					result = LLVOAvatarDefines::TEX_UPPER_TATTOO;
+					result = LLAvatarAppearanceDefines::TEX_UPPER_TATTOO;
 					break;
 				}
 
@@ -711,9 +711,9 @@ LLVOAvatarDefines::ETextureIndex LLLocalBitmap::getTexIndex(
 
 		case LLWearableType::WT_UNDERPANTS:
 		{
-			if (baked_texind == LLVOAvatarDefines::BAKED_LOWER)
+			if (baked_texind == LLAvatarAppearanceDefines::BAKED_LOWER)
 			{
-				result = LLVOAvatarDefines::TEX_LOWER_UNDERPANTS;
+				result = LLAvatarAppearanceDefines::TEX_LOWER_UNDERPANTS;
 			}
 
 			break;
@@ -721,9 +721,9 @@ LLVOAvatarDefines::ETextureIndex LLLocalBitmap::getTexIndex(
 
 		case LLWearableType::WT_UNDERSHIRT:
 		{
-			if (baked_texind == LLVOAvatarDefines::BAKED_UPPER)
+			if (baked_texind == LLAvatarAppearanceDefines::BAKED_UPPER)
 			{
-				result = LLVOAvatarDefines::TEX_UPPER_UNDERSHIRT;
+				result = LLAvatarAppearanceDefines::TEX_UPPER_UNDERSHIRT;
 			}
 
 			break;
diff --git a/indra/newview/lllocalbitmaps.h b/indra/newview/lllocalbitmaps.h
index df031de3cb3..ca12fe20457 100644
--- a/indra/newview/lllocalbitmaps.h
+++ b/indra/newview/lllocalbitmaps.h
@@ -30,7 +30,7 @@
 
 #include "lleventtimer.h"
 #include "llwearabletype.h"
-#include "llvoavatardefines.h"
+#include "llavatarappearancedefines.h"
 
 class LLScrollListCtrl;
 class LLViewerObject;
@@ -64,7 +64,7 @@ class LLLocalBitmap
 		void updateUserPrims(LLUUID old_id, LLUUID new_id);
 		void updateUserSculpts(LLUUID old_id, LLUUID new_id);
 		void updateUserLayers(LLUUID old_id, LLUUID new_id, LLWearableType::EType type);
-		LLVOAvatarDefines::ETextureIndex getTexIndex(LLWearableType::EType type, LLVOAvatarDefines::EBakedTextureIndex baked_texind);
+		LLAvatarAppearanceDefines::ETextureIndex getTexIndex(LLWearableType::EType type, LLAvatarAppearanceDefines::EBakedTextureIndex baked_texind);
 
 	private: /* private enums */
 		enum ELinkStatus
diff --git a/indra/newview/llpaneleditwearable.cpp b/indra/newview/llpaneleditwearable.cpp
index 44b56afb1ad..225996b5cee 100644
--- a/indra/newview/llpaneleditwearable.cpp
+++ b/indra/newview/llpaneleditwearable.cpp
@@ -104,7 +104,7 @@ enum ESubpart {
         SUBPART_PHYSICS_ADVANCED,
  };
 
-using namespace LLVOAvatarDefines;
+using namespace LLAvatarAppearanceDefines;
 
 typedef std::vector<ESubpart> subpart_vec_t;
 
@@ -762,11 +762,11 @@ BOOL LLPanelEditWearable::postBuild()
 
         mWearablePtr = NULL;
 
-        configureAlphaCheckbox(LLVOAvatarDefines::TEX_LOWER_ALPHA, "lower alpha texture invisible");
-        configureAlphaCheckbox(LLVOAvatarDefines::TEX_UPPER_ALPHA, "upper alpha texture invisible");
-        configureAlphaCheckbox(LLVOAvatarDefines::TEX_HEAD_ALPHA, "head alpha texture invisible");
-        configureAlphaCheckbox(LLVOAvatarDefines::TEX_EYES_ALPHA, "eye alpha texture invisible");
-        configureAlphaCheckbox(LLVOAvatarDefines::TEX_HAIR_ALPHA, "hair alpha texture invisible");
+        configureAlphaCheckbox(LLAvatarAppearanceDefines::TEX_LOWER_ALPHA, "lower alpha texture invisible");
+        configureAlphaCheckbox(LLAvatarAppearanceDefines::TEX_UPPER_ALPHA, "upper alpha texture invisible");
+        configureAlphaCheckbox(LLAvatarAppearanceDefines::TEX_HEAD_ALPHA, "head alpha texture invisible");
+        configureAlphaCheckbox(LLAvatarAppearanceDefines::TEX_EYES_ALPHA, "eye alpha texture invisible");
+        configureAlphaCheckbox(LLAvatarAppearanceDefines::TEX_HAIR_ALPHA, "hair alpha texture invisible");
 
         // configure tab expanded callbacks
         for (U32 type_index = 0; type_index < (U32)LLWearableType::WT_COUNT; ++type_index)
@@ -1505,7 +1505,7 @@ void LLPanelEditWearable::updateVerbs()
         }
 }
 
-void LLPanelEditWearable::configureAlphaCheckbox(LLVOAvatarDefines::ETextureIndex te, const std::string& name)
+void LLPanelEditWearable::configureAlphaCheckbox(LLAvatarAppearanceDefines::ETextureIndex te, const std::string& name)
 {
         LLCheckBoxCtrl* checkbox = mPanelAlpha->getChild<LLCheckBoxCtrl>(name);
         checkbox->setCommitCallback(boost::bind(&LLPanelEditWearable::onInvisibilityCommit, this, checkbox, te));
@@ -1513,7 +1513,7 @@ void LLPanelEditWearable::configureAlphaCheckbox(LLVOAvatarDefines::ETextureInde
         mAlphaCheckbox2Index[name] = te;
 }
 
-void LLPanelEditWearable::onInvisibilityCommit(LLCheckBoxCtrl* checkbox_ctrl, LLVOAvatarDefines::ETextureIndex te)
+void LLPanelEditWearable::onInvisibilityCommit(LLCheckBoxCtrl* checkbox_ctrl, LLAvatarAppearanceDefines::ETextureIndex te)
 {
         if (!checkbox_ctrl) return;
         if (!getWearable()) return;
@@ -1557,7 +1557,7 @@ void LLPanelEditWearable::updateAlphaCheckboxes()
         for(string_texture_index_map_t::iterator iter = mAlphaCheckbox2Index.begin();
                 iter != mAlphaCheckbox2Index.end(); ++iter )
         {
-                LLVOAvatarDefines::ETextureIndex te = (LLVOAvatarDefines::ETextureIndex)iter->second;
+                LLAvatarAppearanceDefines::ETextureIndex te = (LLAvatarAppearanceDefines::ETextureIndex)iter->second;
                 LLCheckBoxCtrl* ctrl = mPanelAlpha->getChild<LLCheckBoxCtrl>(iter->first);
                 if (ctrl)
                 {
@@ -1575,7 +1575,7 @@ void LLPanelEditWearable::initPreviousAlphaTextures()
         initPreviousAlphaTextureEntry(TEX_LOWER_ALPHA);
 }
 
-void LLPanelEditWearable::initPreviousAlphaTextureEntry(LLVOAvatarDefines::ETextureIndex te)
+void LLPanelEditWearable::initPreviousAlphaTextureEntry(LLAvatarAppearanceDefines::ETextureIndex te)
 {
         LLLocalTextureObject *lto = getWearable()->getLocalTextureObject(te);
         if (lto)
diff --git a/indra/newview/llpaneleditwearable.h b/indra/newview/llpaneleditwearable.h
index 85e43c8ebdd..309d512e239 100644
--- a/indra/newview/llpaneleditwearable.h
+++ b/indra/newview/llpaneleditwearable.h
@@ -30,7 +30,7 @@
 #include "llpanel.h"
 #include "llscrollingpanellist.h"
 #include "llmodaldialog.h"
-#include "llvoavatardefines.h"
+#include "llavatarappearancedefines.h"
 #include "llwearabletype.h"
 
 class LLAccordionCtrl;
@@ -95,11 +95,11 @@ class LLPanelEditWearable : public LLPanel
 	void				updateTypeSpecificControls(LLWearableType::EType type);
 
 	//alpha mask checkboxes
-	void configureAlphaCheckbox(LLVOAvatarDefines::ETextureIndex te, const std::string& name);
-	void onInvisibilityCommit(LLCheckBoxCtrl* checkbox_ctrl, LLVOAvatarDefines::ETextureIndex te);
+	void configureAlphaCheckbox(LLAvatarAppearanceDefines::ETextureIndex te, const std::string& name);
+	void onInvisibilityCommit(LLCheckBoxCtrl* checkbox_ctrl, LLAvatarAppearanceDefines::ETextureIndex te);
 	void updateAlphaCheckboxes();
 	void initPreviousAlphaTextures();
-	void initPreviousAlphaTextureEntry(LLVOAvatarDefines::ETextureIndex te);
+	void initPreviousAlphaTextureEntry(LLAvatarAppearanceDefines::ETextureIndex te);
 
 	// callback for HeightUnits parameter.
 	bool changeHeightUnits(const LLSD& new_value);
@@ -165,10 +165,10 @@ class LLPanelEditWearable : public LLPanel
 	LLPanel *mPanelTattoo;
 	LLPanel *mPanelPhysics;
 
-	typedef std::map<std::string, LLVOAvatarDefines::ETextureIndex> string_texture_index_map_t;
+	typedef std::map<std::string, LLAvatarAppearanceDefines::ETextureIndex> string_texture_index_map_t;
 	string_texture_index_map_t mAlphaCheckbox2Index;
 
-	typedef std::map<LLVOAvatarDefines::ETextureIndex, LLUUID> s32_uuid_map_t;
+	typedef std::map<LLAvatarAppearanceDefines::ETextureIndex, LLUUID> s32_uuid_map_t;
 	s32_uuid_map_t mPreviousAlphaTexture;
 };
 
diff --git a/indra/newview/lltextureview.cpp b/indra/newview/lltextureview.cpp
index 4611107bc29..070009fe9c2 100755
--- a/indra/newview/lltextureview.cpp
+++ b/indra/newview/lltextureview.cpp
@@ -418,11 +418,11 @@ void LLAvatarTexBar::draw()
 	LLColor4 color;
 	
 	U32 line_num = 1;
-	for (LLVOAvatarDefines::LLVOAvatarDictionary::BakedTextures::const_iterator baked_iter = LLVOAvatarDefines::LLVOAvatarDictionary::getInstance()->getBakedTextures().begin();
-		 baked_iter != LLVOAvatarDefines::LLVOAvatarDictionary::getInstance()->getBakedTextures().end();
+	for (LLAvatarAppearanceDefines::LLAvatarAppearanceDictionary::BakedTextures::const_iterator baked_iter = LLAvatarAppearanceDefines::LLAvatarAppearanceDictionary::getInstance()->getBakedTextures().begin();
+		 baked_iter != LLAvatarAppearanceDefines::LLAvatarAppearanceDictionary::getInstance()->getBakedTextures().end();
 		 ++baked_iter)
 	{
-		const LLVOAvatarDefines::EBakedTextureIndex baked_index = baked_iter->first;
+		const LLAvatarAppearanceDefines::EBakedTextureIndex baked_index = baked_iter->first;
 		const LLViewerTexLayerSet *layerset = avatarp->debugGetLayerSet(baked_index);
 		if (!layerset) continue;
 		const LLTexLayerSetBuffer *layerset_buffer = layerset->getComposite();
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index 01a54509ef0..2fc6de9d4db 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -122,7 +122,7 @@
 #include "llpathfindingmanager.h"
 #include "boost/unordered_map.hpp"
 
-using namespace LLVOAvatarDefines;
+using namespace LLAvatarAppearanceDefines;
 
 typedef LLPointer<LLViewerObject> LLViewerObjectPtr;
 
@@ -7387,7 +7387,7 @@ void handle_grab_baked_texture(void* data)
 	if(folder_id.notNull())
 	{
 		std::string name;
-		name = "Baked " + LLVOAvatarDictionary::getInstance()->getBakedTexture(baked_tex_index)->mNameCapitalized + " Texture";
+		name = "Baked " + LLAvatarAppearanceDictionary::getInstance()->getBakedTexture(baked_tex_index)->mNameCapitalized + " Texture";
 
 		LLUUID item_id;
 		item_id.generate();
diff --git a/indra/newview/llviewertexlayer.cpp b/indra/newview/llviewertexlayer.cpp
index 3a3cae4047c..051aa41ed15 100644
--- a/indra/newview/llviewertexlayer.cpp
+++ b/indra/newview/llviewertexlayer.cpp
@@ -212,7 +212,7 @@ BOOL LLTexLayerSetBuffer::needsRender()
 	}
 
 	// Don't render if we are trying to create a shirt texture but aren't wearing a skirt.
-	if (gAgentAvatarp->getBakedTE(mTexLayerSet) == LLVOAvatarDefines::TEX_SKIRT_BAKED && 
+	if (gAgentAvatarp->getBakedTE(mTexLayerSet) == LLAvatarAppearanceDefines::TEX_SKIRT_BAKED && 
 		!gAgentAvatarp->isWearingWearableType(LLWearableType::WT_SKIRT))
 	{
 		cancelUpload();
@@ -627,7 +627,7 @@ void LLTexLayerSetBuffer::onTextureUploadComplete(const LLUUID& uuid,
 			if (result >= 0)
 			{
 				layerset_buffer->mUploadPending = FALSE; // Allows sending of AgentSetAppearance later
-				LLVOAvatarDefines::ETextureIndex baked_te = gAgentAvatarp->getBakedTE(layerset_buffer->mTexLayerSet);
+				LLAvatarAppearanceDefines::ETextureIndex baked_te = gAgentAvatarp->getBakedTE(layerset_buffer->mTexLayerSet);
 				// Update baked texture info with the new UUID
 				U64 now = LLFrameTimer::getTotalTime();		// Record starting time
 				llinfos << "Baked" << resolution << "texture upload for " << name << " took " << (S32)((now - baked_upload_data->mStartTime) / 1000) << " ms" << llendl;
diff --git a/indra/newview/llviewerwearable.cpp b/indra/newview/llviewerwearable.cpp
index 2b6649a7ec9..0cd3ded3719 100644
--- a/indra/newview/llviewerwearable.cpp
+++ b/indra/newview/llviewerwearable.cpp
@@ -35,11 +35,11 @@
 #include "lltextureentry.h"
 #include "llviewertexlayer.h"
 #include "llvoavatarself.h"
-#include "llvoavatardefines.h"
+#include "llavatarappearancedefines.h"
 #include "llviewerwearable.h"
 #include "llviewercontrol.h"
 
-using namespace LLVOAvatarDefines;
+using namespace LLAvatarAppearanceDefines;
 
 // support class - remove for 2.1 (hackity hack hack)
 class LLOverrideBakedTextureUpdate
@@ -47,7 +47,7 @@ class LLOverrideBakedTextureUpdate
 public:
 	LLOverrideBakedTextureUpdate(bool temp_state)
 	{
-		U32 num_bakes = (U32) LLVOAvatarDefines::BAKED_NUM_INDICES;
+		U32 num_bakes = (U32) LLAvatarAppearanceDefines::BAKED_NUM_INDICES;
 		for( U32 index = 0; index < num_bakes; ++index )
 		{
 			composite_enabled[index] = gAgentAvatarp->isCompositeUpdateEnabled(index);
@@ -57,14 +57,14 @@ class LLOverrideBakedTextureUpdate
 
 	~LLOverrideBakedTextureUpdate()
 	{
-		U32 num_bakes = (U32)LLVOAvatarDefines::BAKED_NUM_INDICES;		
+		U32 num_bakes = (U32)LLAvatarAppearanceDefines::BAKED_NUM_INDICES;		
 		for( U32 index = 0; index < num_bakes; ++index )
 		{
 			gAgentAvatarp->setCompositeUpdatesEnabled(index, composite_enabled[index]);
 		}
 	}
 private:
-	bool composite_enabled[LLVOAvatarDefines::BAKED_NUM_INDICES];
+	bool composite_enabled[LLAvatarAppearanceDefines::BAKED_NUM_INDICES];
 };
 
 // Private local functions
@@ -175,7 +175,7 @@ LLWearable::EImportResult LLViewerWearable::importFile( LLFILE* file )
 		LLViewerFetchedTexture* image = LLViewerTextureManager::getFetchedTexture( textureid );
 		if(gSavedSettings.getBOOL("DebugAvatarLocalTexLoadedTime"))
 		{
-			image->setLoadedCallback(LLVOAvatarSelf::debugOnTimingLocalTexLoaded,0,TRUE,FALSE, new LLVOAvatarSelf::LLAvatarTexData(textureid, (LLVOAvatarDefines::ETextureIndex)te), NULL);
+			image->setLoadedCallback(LLVOAvatarSelf::debugOnTimingLocalTexLoaded,0,TRUE,FALSE, new LLVOAvatarSelf::LLAvatarTexData(textureid, (LLAvatarAppearanceDefines::ETextureIndex)te), NULL);
 		}
 		mTEMap[te] = new LLLocalTextureObject(image, textureid);
 		mSavedTEMap[te] = new LLLocalTextureObject(image, textureid);
@@ -230,7 +230,7 @@ BOOL LLViewerWearable::isOldVersion() const
 	S32 te_count = 0;
 	for( S32 te = 0; te < TEX_NUM_INDICES; te++ )
 	{
-		if (LLVOAvatarDictionary::getTEWearableType((ETextureIndex) te) == mType)
+		if (LLAvatarAppearanceDictionary::getTEWearableType((ETextureIndex) te) == mType)
 		{
 			te_count++;
 			if( !is_in_map(mTEMap, te ) )
@@ -282,7 +282,7 @@ BOOL LLViewerWearable::isDirty() const
 
 	for( S32 te = 0; te < TEX_NUM_INDICES; te++ )
 	{
-		if (LLVOAvatarDictionary::getTEWearableType((ETextureIndex) te) == mType)
+		if (LLAvatarAppearanceDictionary::getTEWearableType((ETextureIndex) te) == mType)
 		{
 			te_map_t::const_iterator current_iter = mTEMap.find(te);
 			if(current_iter != mTEMap.end())
@@ -328,7 +328,7 @@ void LLViewerWearable::setTexturesToDefaults()
 {
 	for( S32 te = 0; te < TEX_NUM_INDICES; te++ )
 	{
-		if (LLVOAvatarDictionary::getTEWearableType((ETextureIndex) te) == mType)
+		if (LLAvatarAppearanceDictionary::getTEWearableType((ETextureIndex) te) == mType)
 		{
 			LLUUID id = getDefaultTextureImageID((ETextureIndex) te);
 			LLViewerFetchedTexture * image = LLViewerTextureManager::getFetchedTexture( id );
@@ -352,7 +352,7 @@ void LLViewerWearable::setTexturesToDefaults()
 //static
 const LLUUID LLViewerWearable::getDefaultTextureImageID(ETextureIndex index)
 {
-	const LLVOAvatarDictionary::TextureEntry *texture_dict = LLVOAvatarDictionary::getInstance()->getTexture(index);
+	const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = LLAvatarAppearanceDictionary::getInstance()->getTexture(index);
 	const std::string &default_image_name = texture_dict->mDefaultImageName;
 	if (default_image_name == "")
 	{
@@ -389,7 +389,7 @@ void LLViewerWearable::writeToAvatar()
 	// Pull texture entries
 	for( S32 te = 0; te < TEX_NUM_INDICES; te++ )
 	{
-		if (LLVOAvatarDictionary::getTEWearableType((ETextureIndex) te) == mType)
+		if (LLAvatarAppearanceDictionary::getTEWearableType((ETextureIndex) te) == mType)
 		{
 			te_map_t::const_iterator iter = mTEMap.find(te);
 			LLUUID image_id;
@@ -492,7 +492,7 @@ void LLViewerWearable::copyDataFrom(const LLViewerWearable* src)
 	// Deep copy of mTEMap (copies only those tes that are current, filling in defaults where needed)
 	for (S32 te = 0; te < TEX_NUM_INDICES; te++)
 	{
-		if (LLVOAvatarDictionary::getTEWearableType((ETextureIndex) te) == mType)
+		if (LLAvatarAppearanceDictionary::getTEWearableType((ETextureIndex) te) == mType)
 		{
 			te_map_t::const_iterator iter = src->mTEMap.find(te);
 			LLUUID image_id;
@@ -678,7 +678,7 @@ void LLViewerWearable::syncImages(te_map_t &src, te_map_t &dst)
 	// Deep copy of src (copies only those tes that are current, filling in defaults where needed)
 	for( S32 te = 0; te < TEX_NUM_INDICES; te++ )
 	{
-		if (LLVOAvatarDictionary::getTEWearableType((ETextureIndex) te) == mType)
+		if (LLAvatarAppearanceDictionary::getTEWearableType((ETextureIndex) te) == mType)
 		{
 			te_map_t::const_iterator iter = src.find(te);
 			LLUUID image_id;
diff --git a/indra/newview/llviewerwearable.h b/indra/newview/llviewerwearable.h
index a921f82e7d1..ccc26000f22 100644
--- a/indra/newview/llviewerwearable.h
+++ b/indra/newview/llviewerwearable.h
@@ -28,7 +28,7 @@
 #define LL_VIEWER_WEARABLE_H
 
 #include "llwearable.h"
-#include "llvoavatardefines.h"
+#include "llavatarappearancedefines.h"
 
 class LLViewerWearable : public LLWearable
 {
@@ -68,7 +68,7 @@ class LLViewerWearable : public LLWearable
 	void				setParamsToDefaults();
 	void				setTexturesToDefaults();
 
-	static const LLUUID			getDefaultTextureImageID(LLVOAvatarDefines::ETextureIndex index);
+	static const LLUUID			getDefaultTextureImageID(LLAvatarAppearanceDefines::ETextureIndex index);
 
 
 	void				saveNewAsset() const;
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index e3d8f9135e5..56ded53b5d1 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -118,7 +118,7 @@ extern F32 ANIM_SPEED_MIN;
 
 // #define OUTPUT_BREAST_DATA
 
-using namespace LLVOAvatarDefines;
+using namespace LLAvatarAppearanceDefines;
 
 //-----------------------------------------------------------------------------
 // Global constants
@@ -597,7 +597,7 @@ LLXmlTree LLVOAvatar::sXMLTree;
 LLXmlTree LLVOAvatar::sSkeletonXMLTree;
 LLVOAvatarSkeletonInfo* LLVOAvatar::sAvatarSkeletonInfo = NULL;
 LLVOAvatar::LLVOAvatarXmlInfo* LLVOAvatar::sAvatarXmlInfo = NULL;
-LLVOAvatarDictionary *LLVOAvatar::sAvatarDictionary = NULL;
+LLAvatarAppearanceDictionary *LLVOAvatar::sAvatarDictionary = NULL;
 S32 LLVOAvatar::sFreezeCounter = 0;
 U32 LLVOAvatar::sMaxVisible = 12;
 F32 LLVOAvatar::sRenderDistance = 256.f;
@@ -711,7 +711,7 @@ LLVOAvatar::LLVOAvatar(const LLUUID& id,
 		mBakedTextureDatas[i].mIsLoaded = false;
 		mBakedTextureDatas[i].mIsUsed = false;
 		mBakedTextureDatas[i].mMaskTexName = 0;
-		mBakedTextureDatas[i].mTextureIndex = LLVOAvatarDictionary::bakedToLocalTextureIndex((EBakedTextureIndex)i);
+		mBakedTextureDatas[i].mTextureIndex = LLAvatarAppearanceDictionary::bakedToLocalTextureIndex((EBakedTextureIndex)i);
 	}
 
 	mDirtyMesh = 2;	// Dirty geometry, need to regenerate.
@@ -1073,15 +1073,15 @@ void LLVOAvatar::dumpBakedStatus()
 		{
 			llcont << " Unbaked (";
 			
-			for (LLVOAvatarDictionary::BakedTextures::const_iterator iter = LLVOAvatarDictionary::getInstance()->getBakedTextures().begin();
-				 iter != LLVOAvatarDictionary::getInstance()->getBakedTextures().end();
+			for (LLAvatarAppearanceDictionary::BakedTextures::const_iterator iter = LLAvatarAppearanceDictionary::getInstance()->getBakedTextures().begin();
+				 iter != LLAvatarAppearanceDictionary::getInstance()->getBakedTextures().end();
 				 ++iter)
 			{
-				const LLVOAvatarDictionary::BakedEntry *baked_dict = iter->second;
+				const LLAvatarAppearanceDictionary::BakedEntry *baked_dict = iter->second;
 				const ETextureIndex index = baked_dict->mTextureIndex;
 				if (!inst->isTextureDefined(index))
 				{
-					llcont << " " << LLVOAvatarDictionary::getInstance()->getTexture(index)->mName;
+					llcont << " " << LLAvatarAppearanceDictionary::getInstance()->getTexture(index)->mName;
 				}
 			}
 			llcont << " ) " << inst->getUnbakedPixelAreaRank();
@@ -1282,12 +1282,12 @@ void LLVOAvatar::initInstance(void)
 	//-------------------------------------------------------------------------
 	mRoot.setName( "mRoot" );
 	
-	for (LLVOAvatarDictionary::Meshes::const_iterator iter = LLVOAvatarDictionary::getInstance()->getMeshes().begin();
-		 iter != LLVOAvatarDictionary::getInstance()->getMeshes().end();
+	for (LLAvatarAppearanceDictionary::Meshes::const_iterator iter = LLAvatarAppearanceDictionary::getInstance()->getMeshes().begin();
+		 iter != LLAvatarAppearanceDictionary::getInstance()->getMeshes().end();
 		 ++iter)
 	{
 		const EMeshIndex mesh_index = iter->first;
-		const LLVOAvatarDictionary::MeshEntry *mesh_dict = iter->second;
+		const LLAvatarAppearanceDictionary::MeshEntry *mesh_dict = iter->second;
 		LLViewerJoint* joint = new LLViewerJoint();
 		joint->setName(mesh_dict->mName);
 		joint->setMeshID(mesh_index);
@@ -1328,12 +1328,12 @@ void LLVOAvatar::initInstance(void)
 	//-------------------------------------------------------------------------
 	// associate baked textures with meshes
 	//-------------------------------------------------------------------------
-	for (LLVOAvatarDictionary::Meshes::const_iterator iter = LLVOAvatarDictionary::getInstance()->getMeshes().begin();
-		 iter != LLVOAvatarDictionary::getInstance()->getMeshes().end();
+	for (LLAvatarAppearanceDictionary::Meshes::const_iterator iter = LLAvatarAppearanceDictionary::getInstance()->getMeshes().begin();
+		 iter != LLAvatarAppearanceDictionary::getInstance()->getMeshes().end();
 		 ++iter)
 	{
 		const EMeshIndex mesh_index = iter->first;
-		const LLVOAvatarDictionary::MeshEntry *mesh_dict = iter->second;
+		const LLAvatarAppearanceDictionary::MeshEntry *mesh_dict = iter->second;
 		const EBakedTextureIndex baked_texture_index = mesh_dict->mBakedID;
 		// Skip it if there's no associated baked texture.
 		if (baked_texture_index == BAKED_NUM_INDICES) continue;
@@ -4565,7 +4565,7 @@ void LLVOAvatar::updateTextures()
 	mHasGrey = FALSE; // debug
 	for (U32 texture_index = 0; texture_index < getNumTEs(); texture_index++)
 	{
-		LLWearableType::EType wearable_type = LLVOAvatarDictionary::getTEWearableType((ETextureIndex)texture_index);
+		LLWearableType::EType wearable_type = LLAvatarAppearanceDictionary::getTEWearableType((ETextureIndex)texture_index);
 		U32 num_wearables = gAgentWearables.getWearableCount(wearable_type);
 		const LLTextureEntry *te = getTE(texture_index);
 		const F32 texel_area_ratio = fabs(te->mScaleS * te->mScaleT);
@@ -4575,7 +4575,7 @@ void LLVOAvatar::updateTextures()
 			imagep = LLViewerTextureManager::staticCastToFetchedTexture(getImage(texture_index, wearable_index), TRUE);
 			if (imagep)
 			{
-				const LLVOAvatarDictionary::TextureEntry *texture_dict = LLVOAvatarDictionary::getInstance()->getTexture((ETextureIndex)texture_index);
+				const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = LLAvatarAppearanceDictionary::getInstance()->getTexture((ETextureIndex)texture_index);
 				const EBakedTextureIndex baked_index = texture_dict->mBakedTextureIndex;
 				if (texture_dict->mIsLocalTexture)
 				{
@@ -4736,7 +4736,7 @@ const std::string LLVOAvatar::getImageURL(const U8 te, const LLUUID &uuid)
 	std::string url = "";
 	if (mUseServerBakes && !gSavedSettings.getString("AgentAppearanceServiceURL").empty())
 	{
-		const LLVOAvatarDictionary::TextureEntry* texture_entry = LLVOAvatarDictionary::getInstance()->getTexture((ETextureIndex)te);
+		const LLAvatarAppearanceDictionary::TextureEntry* texture_entry = LLAvatarAppearanceDictionary::getInstance()->getTexture((ETextureIndex)te);
 		if (texture_entry != NULL)
 		{
 			url = gSavedSettings.getString("AgentAppearanceServiceURL") + "texture/" + getID().asString() + "/" + texture_entry->mDefaultImageName + "/" + uuid.asString();
@@ -5515,7 +5515,7 @@ BOOL LLVOAvatar::loadAvatar()
 	{
 		LLVOAvatarXmlInfo::LLVOAvatarMorphInfo *info = *iter;
 
-		EBakedTextureIndex baked = LLVOAvatarDictionary::findBakedByRegionName(info->mRegion); 
+		EBakedTextureIndex baked = LLAvatarAppearanceDictionary::findBakedByRegionName(info->mRegion); 
 		if (baked != BAKED_NUM_INDICES)
 		{
 			LLPolyMorphTarget *morph_param;
@@ -5723,12 +5723,12 @@ BOOL LLVOAvatar::loadMeshNodes()
 			switch(lod)
 			  case 0:
 				mesh = &mHairMesh0; */
-		for (LLVOAvatarDictionary::Meshes::const_iterator mesh_iter = LLVOAvatarDictionary::getInstance()->getMeshes().begin();
-			 mesh_iter != LLVOAvatarDictionary::getInstance()->getMeshes().end();
+		for (LLAvatarAppearanceDictionary::Meshes::const_iterator mesh_iter = LLAvatarAppearanceDictionary::getInstance()->getMeshes().begin();
+			 mesh_iter != LLAvatarAppearanceDictionary::getInstance()->getMeshes().end();
 			 ++mesh_iter)
 		{
 			const EMeshIndex mesh_index = mesh_iter->first;
-			const LLVOAvatarDictionary::MeshEntry *mesh_dict = mesh_iter->second;
+			const LLAvatarAppearanceDictionary::MeshEntry *mesh_dict = mesh_iter->second;
 			if (type.compare(mesh_dict->mName) == 0)
 			{
 				mesh_id = mesh_index;
@@ -6815,12 +6815,12 @@ void LLVOAvatar::updateMeshTextures()
 	} 
 	
 	
-	for (LLVOAvatarDictionary::BakedTextures::const_iterator baked_iter = LLVOAvatarDictionary::getInstance()->getBakedTextures().begin();
-		 baked_iter != LLVOAvatarDictionary::getInstance()->getBakedTextures().end();
+	for (LLAvatarAppearanceDictionary::BakedTextures::const_iterator baked_iter = LLAvatarAppearanceDictionary::getInstance()->getBakedTextures().begin();
+		 baked_iter != LLAvatarAppearanceDictionary::getInstance()->getBakedTextures().end();
 		 ++baked_iter)
 	{
 		const EBakedTextureIndex baked_index = baked_iter->first;
-		const LLVOAvatarDictionary::BakedEntry *baked_dict = baked_iter->second;
+		const LLAvatarAppearanceDictionary::BakedEntry *baked_dict = baked_iter->second;
 		
 		for (texture_vec_t::const_iterator local_tex_iter = baked_dict->mLocalTextures.begin();
 			 local_tex_iter != baked_dict->mLocalTextures.end();
@@ -6848,7 +6848,7 @@ void LLVOAvatar::setLocalTexture( ETextureIndex type, LLViewerTexture* in_tex, B
 }
 
 //virtual 
-void LLVOAvatar::setBakedReady(LLVOAvatarDefines::ETextureIndex type, BOOL baked_version_exists, U32 index)
+void LLVOAvatar::setBakedReady(LLAvatarAppearanceDefines::ETextureIndex type, BOOL baked_version_exists, U32 index)
 {
 	// invalid for anyone but self
 	llassert(0);
@@ -6894,7 +6894,7 @@ void LLVOAvatar::addMaskedMorph(EBakedTextureIndex index, LLPolyMorphTarget* mor
 }
 
 // returns TRUE if morph masks are present and not valid for a given baked texture, FALSE otherwise
-BOOL LLVOAvatar::morphMaskNeedsUpdate(LLVOAvatarDefines::EBakedTextureIndex index)
+BOOL LLVOAvatar::morphMaskNeedsUpdate(LLAvatarAppearanceDefines::EBakedTextureIndex index)
 {
 	if (index >= BAKED_NUM_INDICES)
 	{
@@ -6920,7 +6920,7 @@ BOOL LLVOAvatar::morphMaskNeedsUpdate(LLVOAvatarDefines::EBakedTextureIndex inde
 	return FALSE;
 }
 
-void LLVOAvatar::applyMorphMask(U8* tex_data, S32 width, S32 height, S32 num_components, LLVOAvatarDefines::EBakedTextureIndex index)
+void LLVOAvatar::applyMorphMask(U8* tex_data, S32 width, S32 height, S32 num_components, LLAvatarAppearanceDefines::EBakedTextureIndex index)
 {
 	if (index >= BAKED_NUM_INDICES)
 	{
@@ -6959,7 +6959,7 @@ void LLVOAvatar::releaseComponentTextures()
 
 	for (U8 baked_index = 0; baked_index < BAKED_NUM_INDICES; baked_index++)
 	{
-		const LLVOAvatarDictionary::BakedEntry * bakedDicEntry = LLVOAvatarDictionary::getInstance()->getBakedTexture((EBakedTextureIndex)baked_index);
+		const LLAvatarAppearanceDictionary::BakedEntry * bakedDicEntry = LLAvatarAppearanceDictionary::getInstance()->getBakedTexture((EBakedTextureIndex)baked_index);
 		// skip if this is a skirt and av is not wearing one, or if we don't have a baked texture UUID
 		if (!isTextureDefined(bakedDicEntry->mTextureIndex)
 			&& ( (baked_index != BAKED_SKIRT) || isWearingWearableType(LLWearableType::WT_SKIRT) ))
@@ -6978,11 +6978,11 @@ void LLVOAvatar::releaseComponentTextures()
 void LLVOAvatar::dumpAvatarTEs( const std::string& context ) const
 {	
 	LL_DEBUGS("Avatar") << avString() << (isSelf() ? "Self: " : "Other: ") << context << LL_ENDL;
-	for (LLVOAvatarDictionary::Textures::const_iterator iter = LLVOAvatarDictionary::getInstance()->getTextures().begin();
-		 iter != LLVOAvatarDictionary::getInstance()->getTextures().end();
+	for (LLAvatarAppearanceDictionary::Textures::const_iterator iter = LLAvatarAppearanceDictionary::getInstance()->getTextures().begin();
+		 iter != LLAvatarAppearanceDictionary::getInstance()->getTextures().end();
 		 ++iter)
 	{
-		const LLVOAvatarDictionary::TextureEntry *texture_dict = iter->second;
+		const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = iter->second;
 		// TODO: MULTI-WEARABLE: handle multiple textures for self
 		const LLViewerTexture* te_image = getImage(iter->first,0);
 		if( !te_image )
@@ -7027,11 +7027,11 @@ BOOL LLVOAvatar::isWearingWearableType(LLWearableType::EType type) const
 	/* switch(type)
 		case LLWearableType::WT_SHIRT:
 			indicator_te = TEX_UPPER_SHIRT; */
-	for (LLVOAvatarDictionary::Textures::const_iterator tex_iter = LLVOAvatarDictionary::getInstance()->getTextures().begin();
-		 tex_iter != LLVOAvatarDictionary::getInstance()->getTextures().end();
+	for (LLAvatarAppearanceDictionary::Textures::const_iterator tex_iter = LLAvatarAppearanceDictionary::getInstance()->getTextures().begin();
+		 tex_iter != LLAvatarAppearanceDictionary::getInstance()->getTextures().end();
 		 ++tex_iter)
 	{
-		const LLVOAvatarDictionary::TextureEntry *texture_dict = tex_iter->second;
+		const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = tex_iter->second;
 		if (texture_dict->mWearableType == type)
 		{
 			// If you're checking another avatar's clothing, you don't have component textures.
@@ -7042,7 +7042,7 @@ BOOL LLVOAvatar::isWearingWearableType(LLWearableType::EType type) const
 			if (texture_dict->mIsUsedByBakedTexture)
 			{
 				const EBakedTextureIndex baked_index = texture_dict->mBakedTextureIndex;
-				return isTextureDefined(LLVOAvatarDictionary::getInstance()->getBakedTexture(baked_index)->mTextureIndex);
+				return isTextureDefined(LLAvatarAppearanceDictionary::getInstance()->getBakedTexture(baked_index)->mTextureIndex);
 			}
 			return FALSE;
 		}
@@ -7495,12 +7495,12 @@ void LLVOAvatar::onBakedTextureMasksLoaded( BOOL success, LLViewerFetchedTexture
 					 self->mBakedTextureDatas[BAKED_HEAD].mTexLayerSet->applyMorphMask(aux_src->getData(), aux_src->getWidth(), aux_src->getHeight(), 1);
 					 maskData->mLastDiscardLevel = discard_level; */
 			BOOL found_texture_id = false;
-			for (LLVOAvatarDictionary::Textures::const_iterator iter = LLVOAvatarDictionary::getInstance()->getTextures().begin();
-				 iter != LLVOAvatarDictionary::getInstance()->getTextures().end();
+			for (LLAvatarAppearanceDictionary::Textures::const_iterator iter = LLAvatarAppearanceDictionary::getInstance()->getTextures().begin();
+				 iter != LLAvatarAppearanceDictionary::getInstance()->getTextures().end();
 				 ++iter)
 			{
 
-				const LLVOAvatarDictionary::TextureEntry *texture_dict = iter->second;
+				const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = iter->second;
 				if (texture_dict->mIsUsedByBakedTexture)
 				{
 					const ETextureIndex texture_index = iter->first;
@@ -7622,7 +7622,7 @@ void LLVOAvatar::useBakedTexture( const LLUUID& id )
 			{
 				//mBakedTextureDatas[i].mTexLayerSet->destroyComposite();
 			}
-			const LLVOAvatarDictionary::BakedEntry *baked_dict = LLVOAvatarDictionary::getInstance()->getBakedTexture((EBakedTextureIndex)i);
+			const LLAvatarAppearanceDictionary::BakedEntry *baked_dict = LLAvatarAppearanceDictionary::getInstance()->getBakedTexture((EBakedTextureIndex)i);
 			for (texture_vec_t::const_iterator local_tex_iter = baked_dict->mLocalTextures.begin();
 				 local_tex_iter != baked_dict->mLocalTextures.end();
 				 ++local_tex_iter)
@@ -7684,7 +7684,7 @@ void LLVOAvatar::dumpArchetypeXML( void* )
 
 		for (U8 te = 0; te < TEX_NUM_INDICES; te++)
 		{
-			if (LLVOAvatarDictionary::getTEWearableType((ETextureIndex)te) == type)
+			if (LLAvatarAppearanceDictionary::getTEWearableType((ETextureIndex)te) == type)
 			{
 				// MULTIPLE_WEARABLES: extend to multiple wearables?
 				LLViewerTexture* te_image = ((LLVOAvatar *)(gAgentAvatarp))->getImage((ETextureIndex)te, 0);
@@ -8491,7 +8491,7 @@ void LLVOAvatar::idleUpdateRenderCost()
 
 	for (U8 baked_index = 0; baked_index < BAKED_NUM_INDICES; baked_index++)
 	{
-		const LLVOAvatarDictionary::BakedEntry *baked_dict = LLVOAvatarDictionary::getInstance()->getBakedTexture((EBakedTextureIndex)baked_index);
+		const LLAvatarAppearanceDictionary::BakedEntry *baked_dict = LLAvatarAppearanceDictionary::getInstance()->getBakedTexture((EBakedTextureIndex)baked_index);
 		ETextureIndex tex_index = baked_dict->mTextureIndex;
 		if ((tex_index != TEX_SKIRT_BAKED) || (isWearingWearableType(LLWearableType::WT_SKIRT)))
 		{
@@ -8571,11 +8571,11 @@ void LLVOAvatar::idleUpdateRenderCost()
 		}
 
 		// print any avatar textures we didn't already know about
-		for (LLVOAvatarDictionary::Textures::const_iterator iter = LLVOAvatarDictionary::getInstance()->getTextures().begin();
-			 iter != LLVOAvatarDictionary::getInstance()->getTextures().end();
+		for (LLAvatarAppearanceDictionary::Textures::const_iterator iter = LLAvatarAppearanceDictionary::getInstance()->getTextures().begin();
+			 iter != LLAvatarAppearanceDictionary::getInstance()->getTextures().end();
 			 ++iter)
 		{
-			const LLVOAvatarDictionary::TextureEntry *texture_dict = iter->second;
+			const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = iter->second;
 			// TODO: MULTI-WEARABLE: handle multiple textures for self
 			const LLViewerTexture* te_image = getImage(iter->first,0);
 			if (!te_image)
@@ -8604,26 +8604,26 @@ void LLVOAvatar::idleUpdateRenderCost()
 BOOL LLVOAvatar::isIndexLocalTexture(ETextureIndex index)
 {
 	if (index < 0 || index >= TEX_NUM_INDICES) return false;
-	return LLVOAvatarDictionary::getInstance()->getTexture(index)->mIsLocalTexture;
+	return LLAvatarAppearanceDictionary::getInstance()->getTexture(index)->mIsLocalTexture;
 }
 
 // static
 BOOL LLVOAvatar::isIndexBakedTexture(ETextureIndex index)
 {
 	if (index < 0 || index >= TEX_NUM_INDICES) return false;
-	return LLVOAvatarDictionary::getInstance()->getTexture(index)->mIsBakedTexture;
+	return LLAvatarAppearanceDictionary::getInstance()->getTexture(index)->mIsBakedTexture;
 }
 
 const std::string LLVOAvatar::getBakedStatusForPrintout() const
 {
 	std::string line;
 
-	for (LLVOAvatarDictionary::Textures::const_iterator iter = LLVOAvatarDictionary::getInstance()->getTextures().begin();
-		 iter != LLVOAvatarDictionary::getInstance()->getTextures().end();
+	for (LLAvatarAppearanceDictionary::Textures::const_iterator iter = LLAvatarAppearanceDictionary::getInstance()->getTextures().begin();
+		 iter != LLAvatarAppearanceDictionary::getInstance()->getTextures().end();
 		 ++iter)
 	{
 		const ETextureIndex index = iter->first;
-		const LLVOAvatarDictionary::TextureEntry *texture_dict = iter->second;
+		const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = iter->second;
 		if (texture_dict->mIsBakedTexture)
 		{
 			line += texture_dict->mName;
@@ -8655,7 +8655,7 @@ F32 calc_bouncy_animation(F32 x)
 }
 
 //virtual
-BOOL LLVOAvatar::isTextureDefined(LLVOAvatarDefines::ETextureIndex te, U32 index ) const
+BOOL LLVOAvatar::isTextureDefined(LLAvatarAppearanceDefines::ETextureIndex te, U32 index ) const
 {
 	if (isIndexLocalTexture(te)) 
 	{
@@ -8667,7 +8667,7 @@ BOOL LLVOAvatar::isTextureDefined(LLVOAvatarDefines::ETextureIndex te, U32 index
 }
 
 //virtual
-BOOL LLVOAvatar::isTextureVisible(LLVOAvatarDefines::ETextureIndex type, U32 index) const
+BOOL LLVOAvatar::isTextureVisible(LLAvatarAppearanceDefines::ETextureIndex type, U32 index) const
 {
 	if (isIndexLocalTexture(type))
 	{
@@ -8683,7 +8683,7 @@ BOOL LLVOAvatar::isTextureVisible(LLVOAvatarDefines::ETextureIndex type, U32 ind
 }
 
 //virtual
-BOOL LLVOAvatar::isTextureVisible(LLVOAvatarDefines::ETextureIndex type, LLViewerWearable *wearable) const
+BOOL LLVOAvatar::isTextureVisible(LLAvatarAppearanceDefines::ETextureIndex type, LLViewerWearable *wearable) const
 {
 	// non-self avatars don't have wearables
 	return FALSE;
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
index 512522803ae..644ea22b535 100755
--- a/indra/newview/llvoavatar.h
+++ b/indra/newview/llvoavatar.h
@@ -45,7 +45,7 @@
 #include "llviewerjointmesh.h"
 #include "llviewerjointattachment.h"
 #include "llrendertarget.h"
-#include "llvoavatardefines.h"
+#include "llavatarappearancedefines.h"
 #include "lltexglobalcolor.h"
 #include "lldriverparam.h"
 #include "material_codes.h"		// LL_MCODE_END
@@ -472,9 +472,9 @@ class LLVOAvatar :
 	// Morph masks
 	//--------------------------------------------------------------------
 public:
-	BOOL 		morphMaskNeedsUpdate(LLVOAvatarDefines::EBakedTextureIndex index = LLVOAvatarDefines::BAKED_NUM_INDICES);
-	void 		addMaskedMorph(LLVOAvatarDefines::EBakedTextureIndex index, LLPolyMorphTarget* morph_target, BOOL invert, std::string layer);
-	virtual void	applyMorphMask(U8* tex_data, S32 width, S32 height, S32 num_components, LLVOAvatarDefines::EBakedTextureIndex index = LLVOAvatarDefines::BAKED_NUM_INDICES);
+	BOOL 		morphMaskNeedsUpdate(LLAvatarAppearanceDefines::EBakedTextureIndex index = LLAvatarAppearanceDefines::BAKED_NUM_INDICES);
+	void 		addMaskedMorph(LLAvatarAppearanceDefines::EBakedTextureIndex index, LLPolyMorphTarget* morph_target, BOOL invert, std::string layer);
+	virtual void	applyMorphMask(U8* tex_data, S32 width, S32 height, S32 num_components, LLAvatarAppearanceDefines::EBakedTextureIndex index = LLAvatarAppearanceDefines::BAKED_NUM_INDICES);
 
 	
 	//--------------------------------------------------------------------
@@ -582,9 +582,9 @@ class LLVOAvatar :
 	// Loading status
 	//--------------------------------------------------------------------
 public:
-	virtual BOOL    isTextureDefined(LLVOAvatarDefines::ETextureIndex type, U32 index = 0) const;
-	virtual BOOL	isTextureVisible(LLVOAvatarDefines::ETextureIndex type, U32 index = 0) const;
-	virtual BOOL	isTextureVisible(LLVOAvatarDefines::ETextureIndex type, LLViewerWearable *wearable) const;
+	virtual BOOL    isTextureDefined(LLAvatarAppearanceDefines::ETextureIndex type, U32 index = 0) const;
+	virtual BOOL	isTextureVisible(LLAvatarAppearanceDefines::ETextureIndex type, U32 index = 0) const;
+	virtual BOOL	isTextureVisible(LLAvatarAppearanceDefines::ETextureIndex type, LLViewerWearable *wearable) const;
 
 	BOOL			isFullyBaked();
 	static BOOL		areAllNearbyInstancesBaked(S32& grey_avatars);
@@ -610,7 +610,7 @@ class LLVOAvatar :
 		LLViewerTexLayerSet* 				mTexLayerSet; // Only exists for self
 		bool								mIsLoaded;
 		bool								mIsUsed;
-		LLVOAvatarDefines::ETextureIndex 	mTextureIndex;
+		LLAvatarAppearanceDefines::ETextureIndex 	mTextureIndex;
 		U32									mMaskTexName;
 		// Stores pointers to the joint meshes that this baked texture deals with
 		std::vector< LLViewerJointMesh * > 	mMeshes;  // std::vector<LLViewerJointMesh> mJoints[i]->mMeshParts
@@ -624,10 +624,10 @@ class LLVOAvatar :
 	// Local Textures
 	//--------------------------------------------------------------------
 protected:
-	virtual void	setLocalTexture(LLVOAvatarDefines::ETextureIndex type, LLViewerTexture* tex, BOOL baked_version_exits, U32 index = 0);
-	virtual void	addLocalTextureStats(LLVOAvatarDefines::ETextureIndex type, LLViewerFetchedTexture* imagep, F32 texel_area_ratio, BOOL rendered, BOOL covered_by_baked, U32 index = 0);
+	virtual void	setLocalTexture(LLAvatarAppearanceDefines::ETextureIndex type, LLViewerTexture* tex, BOOL baked_version_exits, U32 index = 0);
+	virtual void	addLocalTextureStats(LLAvatarAppearanceDefines::ETextureIndex type, LLViewerFetchedTexture* imagep, F32 texel_area_ratio, BOOL rendered, BOOL covered_by_baked, U32 index = 0);
 	// MULTI-WEARABLE: make self-only?
-	virtual void	setBakedReady(LLVOAvatarDefines::ETextureIndex type, BOOL baked_version_exists, U32 index = 0);
+	virtual void	setBakedReady(LLAvatarAppearanceDefines::ETextureIndex type, BOOL baked_version_exists, U32 index = 0);
 
 	//--------------------------------------------------------------------
 	// Texture accessors
@@ -662,11 +662,11 @@ class LLVOAvatar :
 	// Static texture/mesh/baked dictionary
 	//--------------------------------------------------------------------
 public:
-	static BOOL 	isIndexLocalTexture(LLVOAvatarDefines::ETextureIndex i);
-	static BOOL 	isIndexBakedTexture(LLVOAvatarDefines::ETextureIndex i);
+	static BOOL 	isIndexLocalTexture(LLAvatarAppearanceDefines::ETextureIndex i);
+	static BOOL 	isIndexBakedTexture(LLAvatarAppearanceDefines::ETextureIndex i);
 private:
-	static const LLVOAvatarDefines::LLVOAvatarDictionary *getDictionary() { return sAvatarDictionary; }
-	static LLVOAvatarDefines::LLVOAvatarDictionary* sAvatarDictionary;
+	static const LLAvatarAppearanceDefines::LLAvatarAppearanceDictionary *getDictionary() { return sAvatarDictionary; }
+	static LLAvatarAppearanceDefines::LLAvatarAppearanceDictionary* sAvatarDictionary;
 	static LLVOAvatarSkeletonInfo* 					sAvatarSkeletonInfo;
 	static LLVOAvatarXmlInfo* 						sAvatarXmlInfo;
 
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index 0fcf43a501e..b300cfc71ce 100755
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -112,7 +112,7 @@ void selfStopAllPhases()
 	}
 }
 
-using namespace LLVOAvatarDefines;
+using namespace LLAvatarAppearanceDefines;
 
 /*********************************************************************************
  **                                                                             **
@@ -190,7 +190,7 @@ void LLVOAvatarSelf::initInstance()
 	llinfos << "Self avatar object created. Starting timer." << llendl;
 	mDebugSelfLoadTimer.reset();
 	// clear all times to -1 for debugging
-	for (U32 i =0; i < LLVOAvatarDefines::TEX_NUM_INDICES; ++i)
+	for (U32 i =0; i < LLAvatarAppearanceDefines::TEX_NUM_INDICES; ++i)
 	{
 		for (U32 j = 0; j <= MAX_DISCARD_LEVEL; ++j)
 		{
@@ -198,7 +198,7 @@ void LLVOAvatarSelf::initInstance()
 		}
 	}
 
-	for (U32 i =0; i < LLVOAvatarDefines::BAKED_NUM_INDICES; ++i)
+	for (U32 i =0; i < LLAvatarAppearanceDefines::BAKED_NUM_INDICES; ++i)
 	{
 		mDebugBakedTextureTimes[i][0] = -1.0f;
 		mDebugBakedTextureTimes[i][1] = -1.0f;
@@ -609,11 +609,11 @@ BOOL LLVOAvatarSelf::loadLayersets()
 
 		// scan baked textures and associate the layerset with the appropriate one
 		EBakedTextureIndex baked_index = BAKED_NUM_INDICES;
-		for (LLVOAvatarDictionary::BakedTextures::const_iterator baked_iter = LLVOAvatarDictionary::getInstance()->getBakedTextures().begin();
-			 baked_iter != LLVOAvatarDictionary::getInstance()->getBakedTextures().end();
+		for (LLAvatarAppearanceDictionary::BakedTextures::const_iterator baked_iter = LLAvatarAppearanceDictionary::getInstance()->getBakedTextures().begin();
+			 baked_iter != LLAvatarAppearanceDictionary::getInstance()->getBakedTextures().end();
 			 ++baked_iter)
 		{
-			const LLVOAvatarDictionary::BakedEntry *baked_dict = baked_iter->second;
+			const LLAvatarAppearanceDictionary::BakedEntry *baked_dict = baked_iter->second;
 			if (layer_set->isBodyRegion(baked_dict->mName))
 			{
 				baked_index = baked_iter->first;
@@ -819,7 +819,7 @@ U32  LLVOAvatarSelf::processUpdateMessage(LLMessageSystem *mesgsys,
 		// need to trigger a few operations to get the avatar to use the new bakes
 		for (U32 i = 0; i < mBakedTextureDatas.size(); i++)
 		{
-			const LLVOAvatarDefines::ETextureIndex te = mBakedTextureDatas[i].mTextureIndex;
+			const LLAvatarAppearanceDefines::ETextureIndex te = mBakedTextureDatas[i].mTextureIndex;
 			LLUUID texture_id = getTEImage(te)->getID();
 			setNewBakedTexture(te, texture_id);
 			mInitialBakeIDs[i] = texture_id;
@@ -1074,16 +1074,16 @@ void LLVOAvatarSelf::updateAttachmentVisibility(U32 camera_mode)
 //-----------------------------------------------------------------------------
 void LLVOAvatarSelf::wearableUpdated( LLWearableType::EType type, BOOL upload_result )
 {
-	for (LLVOAvatarDictionary::BakedTextures::const_iterator baked_iter = LLVOAvatarDictionary::getInstance()->getBakedTextures().begin();
-		 baked_iter != LLVOAvatarDictionary::getInstance()->getBakedTextures().end();
+	for (LLAvatarAppearanceDictionary::BakedTextures::const_iterator baked_iter = LLAvatarAppearanceDictionary::getInstance()->getBakedTextures().begin();
+		 baked_iter != LLAvatarAppearanceDictionary::getInstance()->getBakedTextures().end();
 		 ++baked_iter)
 	{
-		const LLVOAvatarDictionary::BakedEntry *baked_dict = baked_iter->second;
-		const LLVOAvatarDefines::EBakedTextureIndex index = baked_iter->first;
+		const LLAvatarAppearanceDictionary::BakedEntry *baked_dict = baked_iter->second;
+		const LLAvatarAppearanceDefines::EBakedTextureIndex index = baked_iter->first;
 
 		if (baked_dict)
 		{
-			for (LLVOAvatarDefines::wearables_vec_t::const_iterator type_iter = baked_dict->mWearables.begin();
+			for (LLAvatarAppearanceDefines::wearables_vec_t::const_iterator type_iter = baked_dict->mWearables.begin();
 				type_iter != baked_dict->mWearables.end();
 				 ++type_iter)
 			{
@@ -1306,9 +1306,9 @@ BOOL LLVOAvatarSelf::detachAttachmentIntoInventory(const LLUUID &item_id)
 	return FALSE;
 }
 
-U32 LLVOAvatarSelf::getNumWearables(LLVOAvatarDefines::ETextureIndex i) const
+U32 LLVOAvatarSelf::getNumWearables(LLAvatarAppearanceDefines::ETextureIndex i) const
 {
-	LLWearableType::EType type = LLVOAvatarDictionary::getInstance()->getTEWearableType(i);
+	LLWearableType::EType type = LLAvatarAppearanceDictionary::getInstance()->getTEWearableType(i);
 	return gAgentWearables.getWearableCount(type);
 }
 
@@ -1381,7 +1381,7 @@ BOOL LLVOAvatarSelf::getLocalTextureGL(ETextureIndex type, LLViewerTexture** tex
 	return TRUE;
 }
 
-LLViewerFetchedTexture* LLVOAvatarSelf::getLocalTextureGL(LLVOAvatarDefines::ETextureIndex type, U32 index) const
+LLViewerFetchedTexture* LLVOAvatarSelf::getLocalTextureGL(LLAvatarAppearanceDefines::ETextureIndex type, U32 index) const
 {
 	if (!isIndexLocalTexture(type))
 	{
@@ -1422,21 +1422,21 @@ BOOL LLVOAvatarSelf::isLocalTextureDataAvailable(const LLViewerTexLayerSet* laye
 {
 	/* if (layerset == mBakedTextureDatas[BAKED_HEAD].mTexLayerSet)
 	   return getLocalDiscardLevel(TEX_HEAD_BODYPAINT) >= 0; */
-	for (LLVOAvatarDictionary::BakedTextures::const_iterator baked_iter = LLVOAvatarDictionary::getInstance()->getBakedTextures().begin();
-		 baked_iter != LLVOAvatarDictionary::getInstance()->getBakedTextures().end();
+	for (LLAvatarAppearanceDictionary::BakedTextures::const_iterator baked_iter = LLAvatarAppearanceDictionary::getInstance()->getBakedTextures().begin();
+		 baked_iter != LLAvatarAppearanceDictionary::getInstance()->getBakedTextures().end();
 		 ++baked_iter)
 	{
 		const EBakedTextureIndex baked_index = baked_iter->first;
 		if (layerset == mBakedTextureDatas[baked_index].mTexLayerSet)
 		{
 			BOOL ret = true;
-			const LLVOAvatarDictionary::BakedEntry *baked_dict = baked_iter->second;
+			const LLAvatarAppearanceDictionary::BakedEntry *baked_dict = baked_iter->second;
 			for (texture_vec_t::const_iterator local_tex_iter = baked_dict->mLocalTextures.begin();
 				 local_tex_iter != baked_dict->mLocalTextures.end();
 				 ++local_tex_iter)
 			{
 				const ETextureIndex tex_index = *local_tex_iter;
-				const LLWearableType::EType wearable_type = LLVOAvatarDictionary::getTEWearableType(tex_index);
+				const LLWearableType::EType wearable_type = LLAvatarAppearanceDictionary::getTEWearableType(tex_index);
 				const U32 wearable_count = gAgentWearables.getWearableCount(wearable_type);
 				for (U32 wearable_index = 0; wearable_index < wearable_count; wearable_index++)
 				{
@@ -1465,13 +1465,13 @@ BOOL LLVOAvatarSelf::isLocalTextureDataFinal(const LLViewerTexLayerSet* layerset
 	{
 		if (layerset == mBakedTextureDatas[i].mTexLayerSet)
 		{
-			const LLVOAvatarDictionary::BakedEntry *baked_dict = LLVOAvatarDictionary::getInstance()->getBakedTexture((EBakedTextureIndex)i);
+			const LLAvatarAppearanceDictionary::BakedEntry *baked_dict = LLAvatarAppearanceDictionary::getInstance()->getBakedTexture((EBakedTextureIndex)i);
 			for (texture_vec_t::const_iterator local_tex_iter = baked_dict->mLocalTextures.begin();
 				 local_tex_iter != baked_dict->mLocalTextures.end();
 				 ++local_tex_iter)
 			{
 				const ETextureIndex tex_index = *local_tex_iter;
-				const LLWearableType::EType wearable_type = LLVOAvatarDictionary::getTEWearableType(tex_index);
+				const LLWearableType::EType wearable_type = LLAvatarAppearanceDictionary::getTEWearableType(tex_index);
 				const U32 wearable_count = gAgentWearables.getWearableCount(wearable_type);
 				for (U32 wearable_index = 0; wearable_index < wearable_count; wearable_index++)
 				{
@@ -1495,13 +1495,13 @@ BOOL LLVOAvatarSelf::isAllLocalTextureDataFinal() const
 
 	for (U32 i = 0; i < mBakedTextureDatas.size(); i++)
 	{
-		const LLVOAvatarDictionary::BakedEntry *baked_dict = LLVOAvatarDictionary::getInstance()->getBakedTexture((EBakedTextureIndex)i);
+		const LLAvatarAppearanceDictionary::BakedEntry *baked_dict = LLAvatarAppearanceDictionary::getInstance()->getBakedTexture((EBakedTextureIndex)i);
 		for (texture_vec_t::const_iterator local_tex_iter = baked_dict->mLocalTextures.begin();
 			 local_tex_iter != baked_dict->mLocalTextures.end();
 			 ++local_tex_iter)
 		{
 			const ETextureIndex tex_index = *local_tex_iter;
-			const LLWearableType::EType wearable_type = LLVOAvatarDictionary::getTEWearableType(tex_index);
+			const LLWearableType::EType wearable_type = LLAvatarAppearanceDictionary::getTEWearableType(tex_index);
 			const U32 wearable_count = gAgentWearables.getWearableCount(wearable_type);
 			for (U32 wearable_index = 0; wearable_index < wearable_count; wearable_index++)
 			{
@@ -1515,7 +1515,7 @@ BOOL LLVOAvatarSelf::isAllLocalTextureDataFinal() const
 	return TRUE;
 }
 
-BOOL LLVOAvatarSelf::isBakedTextureFinal(const LLVOAvatarDefines::EBakedTextureIndex index) const
+BOOL LLVOAvatarSelf::isBakedTextureFinal(const LLAvatarAppearanceDefines::EBakedTextureIndex index) const
 {
 	const LLViewerTexLayerSet *layerset = mBakedTextureDatas[index].mTexLayerSet;
 	if (!layerset) return FALSE;
@@ -1524,13 +1524,13 @@ BOOL LLVOAvatarSelf::isBakedTextureFinal(const LLVOAvatarDefines::EBakedTextureI
 	return !layerset_buffer->uploadNeeded();
 }
 
-BOOL LLVOAvatarSelf::isTextureDefined(LLVOAvatarDefines::ETextureIndex type, U32 index) const
+BOOL LLVOAvatarSelf::isTextureDefined(LLAvatarAppearanceDefines::ETextureIndex type, U32 index) const
 {
 	LLUUID id;
 	BOOL isDefined = TRUE;
 	if (isIndexLocalTexture(type))
 	{
-		const LLWearableType::EType wearable_type = LLVOAvatarDictionary::getTEWearableType(type);
+		const LLWearableType::EType wearable_type = LLAvatarAppearanceDictionary::getTEWearableType(type);
 		const U32 wearable_count = gAgentWearables.getWearableCount(wearable_type);
 		if (index >= wearable_count)
 		{
@@ -1557,7 +1557,7 @@ BOOL LLVOAvatarSelf::isTextureDefined(LLVOAvatarDefines::ETextureIndex type, U32
 }
 
 //virtual
-BOOL LLVOAvatarSelf::isTextureVisible(LLVOAvatarDefines::ETextureIndex type, U32 index) const
+BOOL LLVOAvatarSelf::isTextureVisible(LLAvatarAppearanceDefines::ETextureIndex type, U32 index) const
 {
 	if (isIndexBakedTexture(type))
 	{
@@ -1570,7 +1570,7 @@ BOOL LLVOAvatarSelf::isTextureVisible(LLVOAvatarDefines::ETextureIndex type, U32
 }
 
 //virtual
-BOOL LLVOAvatarSelf::isTextureVisible(LLVOAvatarDefines::ETextureIndex type, LLViewerWearable *wearable) const
+BOOL LLVOAvatarSelf::isTextureVisible(LLAvatarAppearanceDefines::ETextureIndex type, LLViewerWearable *wearable) const
 {
 	if (isIndexBakedTexture(type))
 	{
@@ -1593,7 +1593,7 @@ void LLVOAvatarSelf::requestLayerSetUploads()
 	}
 }
 
-void LLVOAvatarSelf::requestLayerSetUpload(LLVOAvatarDefines::EBakedTextureIndex i)
+void LLVOAvatarSelf::requestLayerSetUpload(LLAvatarAppearanceDefines::EBakedTextureIndex i)
 {
 	ETextureIndex tex_index = mBakedTextureDatas[i].mTextureIndex;
 	const BOOL layer_baked = isTextureDefined(tex_index, gAgentWearables.getWearableCount(tex_index));
@@ -1779,7 +1779,7 @@ void LLVOAvatarSelf::setLocalTexture(ETextureIndex type, LLViewerTexture* src_te
 			llerrs << "Tried to set local texture with invalid type: (" << (U32) type << ", " << index << ")" << llendl;
 			return;
 		}
-		LLWearableType::EType wearable_type = LLVOAvatarDictionary::getInstance()->getTEWearableType(type);
+		LLWearableType::EType wearable_type = LLAvatarAppearanceDictionary::getInstance()->getTEWearableType(type);
 		if (!gAgentWearables.getWearable(wearable_type,index))
 		{
 			// no wearable is loaded, cannot set the texture.
@@ -1839,7 +1839,7 @@ void LLVOAvatarSelf::setLocalTexture(ETextureIndex type, LLViewerTexture* src_te
 	setBakedReady(type,baked_version_ready,index);
 }
 //virtual
-void LLVOAvatarSelf::setBakedReady(LLVOAvatarDefines::ETextureIndex type, BOOL baked_version_exists, U32 index)
+void LLVOAvatarSelf::setBakedReady(LLAvatarAppearanceDefines::ETextureIndex type, BOOL baked_version_exists, U32 index)
 {
 	if (!isIndexLocalTexture(type)) return;
 	LLLocalTextureObject *local_tex_obj = getLocalTextureObject(type,index);
@@ -1858,16 +1858,16 @@ void LLVOAvatarSelf::dumpLocalTextures() const
 	/* ETextureIndex baked_equiv[] = {
 	   TEX_UPPER_BAKED,
 	   if (isTextureDefined(baked_equiv[i])) */
-	for (LLVOAvatarDictionary::Textures::const_iterator iter = LLVOAvatarDictionary::getInstance()->getTextures().begin();
-		 iter != LLVOAvatarDictionary::getInstance()->getTextures().end();
+	for (LLAvatarAppearanceDictionary::Textures::const_iterator iter = LLAvatarAppearanceDictionary::getInstance()->getTextures().begin();
+		 iter != LLAvatarAppearanceDictionary::getInstance()->getTextures().end();
 		 ++iter)
 	{
-		const LLVOAvatarDictionary::TextureEntry *texture_dict = iter->second;
+		const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = iter->second;
 		if (!texture_dict->mIsLocalTexture || !texture_dict->mIsUsedByBakedTexture)
 			continue;
 
 		const EBakedTextureIndex baked_index = texture_dict->mBakedTextureIndex;
-		const ETextureIndex baked_equiv = LLVOAvatarDictionary::getInstance()->getBakedTexture(baked_index)->mTextureIndex;
+		const ETextureIndex baked_equiv = LLAvatarAppearanceDictionary::getInstance()->getBakedTexture(baked_index)->mTextureIndex;
 
 		const std::string &name = texture_dict->mName;
 		const LLLocalTextureObject *local_tex_obj = getLocalTextureObject(iter->first, 0);
@@ -2071,21 +2071,21 @@ const std::string LLVOAvatarSelf::debugDumpLocalTextureDataInfo(const LLViewerTe
 
 	/* if (layerset == mBakedTextureDatas[BAKED_HEAD].mTexLayerSet)
 	   return getLocalDiscardLevel(TEX_HEAD_BODYPAINT) >= 0; */
-	for (LLVOAvatarDictionary::BakedTextures::const_iterator baked_iter = LLVOAvatarDictionary::getInstance()->getBakedTextures().begin();
-		 baked_iter != LLVOAvatarDictionary::getInstance()->getBakedTextures().end();
+	for (LLAvatarAppearanceDictionary::BakedTextures::const_iterator baked_iter = LLAvatarAppearanceDictionary::getInstance()->getBakedTextures().begin();
+		 baked_iter != LLAvatarAppearanceDictionary::getInstance()->getBakedTextures().end();
 		 ++baked_iter)
 	{
 		const EBakedTextureIndex baked_index = baked_iter->first;
 		if (layerset == mBakedTextureDatas[baked_index].mTexLayerSet)
 		{
-			const LLVOAvatarDictionary::BakedEntry *baked_dict = baked_iter->second;
+			const LLAvatarAppearanceDictionary::BakedEntry *baked_dict = baked_iter->second;
 			text += llformat("%d-%s ( ",baked_index, baked_dict->mName.c_str());
 			for (texture_vec_t::const_iterator local_tex_iter = baked_dict->mLocalTextures.begin();
 				 local_tex_iter != baked_dict->mLocalTextures.end();
 				 ++local_tex_iter)
 			{
 				const ETextureIndex tex_index = *local_tex_iter;
-				const LLWearableType::EType wearable_type = LLVOAvatarDictionary::getTEWearableType(tex_index);
+				const LLWearableType::EType wearable_type = LLAvatarAppearanceDictionary::getTEWearableType(tex_index);
 				const U32 wearable_count = gAgentWearables.getWearableCount(wearable_type);
 				if (wearable_count > 0)
 				{
@@ -2112,14 +2112,14 @@ const std::string LLVOAvatarSelf::debugDumpAllLocalTextureDataInfo() const
 
 	for (U32 i = 0; i < mBakedTextureDatas.size(); i++)
 	{
-		const LLVOAvatarDictionary::BakedEntry *baked_dict = LLVOAvatarDictionary::getInstance()->getBakedTexture((EBakedTextureIndex)i);
+		const LLAvatarAppearanceDictionary::BakedEntry *baked_dict = LLAvatarAppearanceDictionary::getInstance()->getBakedTexture((EBakedTextureIndex)i);
 		BOOL is_texture_final = TRUE;
 		for (texture_vec_t::const_iterator local_tex_iter = baked_dict->mLocalTextures.begin();
 			 local_tex_iter != baked_dict->mLocalTextures.end();
 			 ++local_tex_iter)
 		{
 			const ETextureIndex tex_index = *local_tex_iter;
-			const LLWearableType::EType wearable_type = LLVOAvatarDictionary::getTEWearableType(tex_index);
+			const LLWearableType::EType wearable_type = LLAvatarAppearanceDictionary::getTEWearableType(tex_index);
 			const U32 wearable_count = gAgentWearables.getWearableCount(wearable_type);
 			for (U32 wearable_index = 0; wearable_index < wearable_count; wearable_index++)
 			{
@@ -2243,7 +2243,7 @@ const LLUUID& LLVOAvatarSelf::grabBakedTexture(EBakedTextureIndex baked_index) c
 {
 	if (canGrabBakedTexture(baked_index))
 	{
-		ETextureIndex tex_index = LLVOAvatarDictionary::bakedToLocalTextureIndex(baked_index);
+		ETextureIndex tex_index = LLAvatarAppearanceDictionary::bakedToLocalTextureIndex(baked_index);
 		if (tex_index == TEX_NUM_INDICES)
 		{
 			return LLUUID::null;
@@ -2255,7 +2255,7 @@ const LLUUID& LLVOAvatarSelf::grabBakedTexture(EBakedTextureIndex baked_index) c
 
 BOOL LLVOAvatarSelf::canGrabBakedTexture(EBakedTextureIndex baked_index) const
 {
-	ETextureIndex tex_index = LLVOAvatarDictionary::bakedToLocalTextureIndex(baked_index);
+	ETextureIndex tex_index = LLAvatarAppearanceDictionary::bakedToLocalTextureIndex(baked_index);
 	if (tex_index == TEX_NUM_INDICES)
 	{
 		return FALSE;
@@ -2274,13 +2274,13 @@ BOOL LLVOAvatarSelf::canGrabBakedTexture(EBakedTextureIndex baked_index) const
 	// baked texture.  We don't want people copying people's
 	// work via baked textures.
 
-	const LLVOAvatarDictionary::BakedEntry *baked_dict = LLVOAvatarDictionary::getInstance()->getBakedTexture(baked_index);
+	const LLAvatarAppearanceDictionary::BakedEntry *baked_dict = LLAvatarAppearanceDictionary::getInstance()->getBakedTexture(baked_index);
 	for (texture_vec_t::const_iterator iter = baked_dict->mLocalTextures.begin();
 		 iter != baked_dict->mLocalTextures.end();
 		 ++iter)
 	{
 		const ETextureIndex t_index = (*iter);
-		LLWearableType::EType wearable_type = LLVOAvatarDictionary::getTEWearableType(t_index);
+		LLWearableType::EType wearable_type = LLAvatarAppearanceDictionary::getTEWearableType(t_index);
 		U32 count = gAgentWearables.getWearableCount(wearable_type);
 		lldebugs << "Checking index " << (U32) t_index << " count: " << count << llendl;
 		
@@ -2358,9 +2358,9 @@ void LLVOAvatarSelf::addLocalTextureStats( ETextureIndex type, LLViewerFetchedTe
 	}
 }
 
-LLLocalTextureObject* LLVOAvatarSelf::getLocalTextureObject(LLVOAvatarDefines::ETextureIndex i, U32 wearable_index) const
+LLLocalTextureObject* LLVOAvatarSelf::getLocalTextureObject(LLAvatarAppearanceDefines::ETextureIndex i, U32 wearable_index) const
 {
-	LLWearableType::EType type = LLVOAvatarDictionary::getInstance()->getTEWearableType(i);
+	LLWearableType::EType type = LLAvatarAppearanceDictionary::getInstance()->getTEWearableType(i);
 	LLViewerWearable* wearable = gAgentWearables.getWearable(type, wearable_index);
 	if (wearable)
 	{
@@ -2388,9 +2388,9 @@ ETextureIndex LLVOAvatarSelf::getBakedTE( const LLViewerTexLayerSet* layerset )
 }
 
 
-void LLVOAvatarSelf::setNewBakedTexture(LLVOAvatarDefines::EBakedTextureIndex i, const LLUUID &uuid)
+void LLVOAvatarSelf::setNewBakedTexture(LLAvatarAppearanceDefines::EBakedTextureIndex i, const LLUUID &uuid)
 {
-	ETextureIndex index = LLVOAvatarDictionary::bakedToLocalTextureIndex(i);
+	ETextureIndex index = LLAvatarAppearanceDictionary::bakedToLocalTextureIndex(i);
 	setNewBakedTexture(index, uuid);
 }
 
@@ -2412,7 +2412,7 @@ void LLVOAvatarSelf::setNewBakedTexture( ETextureIndex te, const LLUUID& uuid )
 	/* switch(te)
 		case TEX_HEAD_BAKED:
 			llinfos << "New baked texture: HEAD" << llendl; */
-	const LLVOAvatarDictionary::TextureEntry *texture_dict = LLVOAvatarDictionary::getInstance()->getTexture(te);
+	const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = LLAvatarAppearanceDictionary::getInstance()->getTexture(te);
 	if (texture_dict->mIsBakedTexture)
 	{
 		debugBakedTextureUpload(texture_dict->mBakedTextureIndex, TRUE); // FALSE for start of upload, TRUE for finish.
@@ -2477,7 +2477,7 @@ void LLVOAvatarSelf::outputRezDiagnostics() const
 	LL_DEBUGS("Avatar") << "\t Time from avatar creation to de-cloud: " << (S32)mDebugTimeAvatarVisible << llendl;
 	LL_DEBUGS("Avatar") << "\t Time from avatar creation to de-cloud for others: " << (S32)final_time << llendl;
 	LL_DEBUGS("Avatar") << "\t Load time for each texture: " << llendl;
-	for (U32 i = 0; i < LLVOAvatarDefines::TEX_NUM_INDICES; ++i)
+	for (U32 i = 0; i < LLAvatarAppearanceDefines::TEX_NUM_INDICES; ++i)
 	{
 		std::stringstream out;
 		out << "\t\t (" << i << ") ";
@@ -2505,16 +2505,16 @@ void LLVOAvatarSelf::outputRezDiagnostics() const
 		}
 	}
 	LL_DEBUGS("Avatar") << "\t Time points for each upload (start / finish)" << llendl;
-	for (U32 i = 0; i < LLVOAvatarDefines::BAKED_NUM_INDICES; ++i)
+	for (U32 i = 0; i < LLAvatarAppearanceDefines::BAKED_NUM_INDICES; ++i)
 	{
 		LL_DEBUGS("Avatar") << "\t\t (" << i << ") \t" << (S32)mDebugBakedTextureTimes[i][0] << " / " << (S32)mDebugBakedTextureTimes[i][1] << llendl;
 	}
 
-	for (LLVOAvatarDefines::LLVOAvatarDictionary::BakedTextures::const_iterator baked_iter = LLVOAvatarDefines::LLVOAvatarDictionary::getInstance()->getBakedTextures().begin();
-		 baked_iter != LLVOAvatarDefines::LLVOAvatarDictionary::getInstance()->getBakedTextures().end();
+	for (LLAvatarAppearanceDefines::LLAvatarAppearanceDictionary::BakedTextures::const_iterator baked_iter = LLAvatarAppearanceDefines::LLAvatarAppearanceDictionary::getInstance()->getBakedTextures().begin();
+		 baked_iter != LLAvatarAppearanceDefines::LLAvatarAppearanceDictionary::getInstance()->getBakedTextures().end();
 		 ++baked_iter)
 	{
-		const LLVOAvatarDefines::EBakedTextureIndex baked_index = baked_iter->first;
+		const LLAvatarAppearanceDefines::EBakedTextureIndex baked_index = baked_iter->first;
 		const LLViewerTexLayerSet *layerset = debugGetLayerSet(baked_index);
 		if (!layerset) continue;
 		const LLTexLayerSetBuffer *layerset_buffer = layerset->getComposite();
@@ -2583,12 +2583,12 @@ void LLVOAvatarSelf::processRebakeAvatarTextures(LLMessageSystem* msg, void**)
 	/* ETextureIndex baked_texture_indices[BAKED_NUM_INDICES] =
 			TEX_HEAD_BAKED,
 			TEX_UPPER_BAKED, */
-	for (LLVOAvatarDictionary::Textures::const_iterator iter = LLVOAvatarDictionary::getInstance()->getTextures().begin();
-		 iter != LLVOAvatarDictionary::getInstance()->getTextures().end();
+	for (LLAvatarAppearanceDictionary::Textures::const_iterator iter = LLAvatarAppearanceDictionary::getInstance()->getTextures().begin();
+		 iter != LLAvatarAppearanceDictionary::getInstance()->getTextures().end();
 		 ++iter)
 	{
 		const ETextureIndex index = iter->first;
-		const LLVOAvatarDictionary::TextureEntry *texture_dict = iter->second;
+		const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = iter->second;
 		if (texture_dict->mIsBakedTexture)
 		{
 			if (texture_id == gAgentAvatarp->getTEImage(index)->getID())
@@ -2657,7 +2657,7 @@ void LLVOAvatarSelf::requestLayerSetUpdate(ETextureIndex index )
 		case LOCTEX_UPPER_SHIRT:
 			if( mUpperBodyLayerSet )
 				mUpperBodyLayerSet->requestUpdate(); */
-	const LLVOAvatarDictionary::TextureEntry *texture_dict = LLVOAvatarDictionary::getInstance()->getTexture(index);
+	const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = LLAvatarAppearanceDictionary::getInstance()->getTexture(index);
 	if (!texture_dict->mIsLocalTexture || !texture_dict->mIsUsedByBakedTexture)
 		return;
 	const EBakedTextureIndex baked_index = texture_dict->mBakedTextureIndex;
@@ -2673,7 +2673,7 @@ LLViewerTexLayerSet* LLVOAvatarSelf::getLayerSet(ETextureIndex index) const
 		case TEX_HEAD_BAKED:
 		case TEX_HEAD_BODYPAINT:
 			return mHeadLayerSet; */
-	const LLVOAvatarDictionary::TextureEntry *texture_dict = LLVOAvatarDictionary::getInstance()->getTexture(index);
+	const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = LLAvatarAppearanceDictionary::getInstance()->getTexture(index);
 	if (texture_dict->mIsUsedByBakedTexture)
 	{
 		const EBakedTextureIndex baked_index = texture_dict->mBakedTextureIndex;
@@ -2747,12 +2747,12 @@ bool LLVOAvatarSelf::sendAppearanceMessage(LLMessageSystem *mesgsys) const
 {
 	LLUUID texture_id[TEX_NUM_INDICES];
 	// pack away current TEs to make sure we don't send them out
-	for (LLVOAvatarDictionary::Textures::const_iterator iter = LLVOAvatarDictionary::getInstance()->getTextures().begin();
-		 iter != LLVOAvatarDictionary::getInstance()->getTextures().end();
+	for (LLAvatarAppearanceDictionary::Textures::const_iterator iter = LLAvatarAppearanceDictionary::getInstance()->getTextures().begin();
+		 iter != LLAvatarAppearanceDictionary::getInstance()->getTextures().end();
 		 ++iter)
 	{
 		const ETextureIndex index = iter->first;
-		const LLVOAvatarDictionary::TextureEntry *texture_dict = iter->second;
+		const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = iter->second;
 		if (!texture_dict->mIsBakedTexture)
 		{
 			LLTextureEntry* entry = getTE((U8) index);
@@ -2764,12 +2764,12 @@ bool LLVOAvatarSelf::sendAppearanceMessage(LLMessageSystem *mesgsys) const
 	bool success = packTEMessage(mesgsys);
 
 	// unpack TEs to make sure we don't re-trigger a bake
-	for (LLVOAvatarDictionary::Textures::const_iterator iter = LLVOAvatarDictionary::getInstance()->getTextures().begin();
-		 iter != LLVOAvatarDictionary::getInstance()->getTextures().end();
+	for (LLAvatarAppearanceDictionary::Textures::const_iterator iter = LLAvatarAppearanceDictionary::getInstance()->getTextures().begin();
+		 iter != LLAvatarAppearanceDictionary::getInstance()->getTextures().end();
 		 ++iter)
 	{
 		const ETextureIndex index = iter->first;
-		const LLVOAvatarDictionary::TextureEntry *texture_dict = iter->second;
+		const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = iter->second;
 		if (!texture_dict->mIsBakedTexture)
 		{
 			LLTextureEntry* entry = getTE((U8) index);
diff --git a/indra/newview/llvoavatarself.h b/indra/newview/llvoavatarself.h
index 26662e8a25f..d4bde1f61f3 100755
--- a/indra/newview/llvoavatarself.h
+++ b/indra/newview/llvoavatarself.h
@@ -195,32 +195,32 @@ class LLVOAvatarSelf :
 	//--------------------------------------------------------------------
 public:
 	/*virtual*/ bool	hasPendingBakedUploads() const;
-	S32					getLocalDiscardLevel(LLVOAvatarDefines::ETextureIndex type, U32 index) const;
+	S32					getLocalDiscardLevel(LLAvatarAppearanceDefines::ETextureIndex type, U32 index) const;
 	bool				areTexturesCurrent() const;
 	BOOL				isLocalTextureDataAvailable(const LLViewerTexLayerSet* layerset) const;
 	BOOL				isLocalTextureDataFinal(const LLViewerTexLayerSet* layerset) const;
-	BOOL				isBakedTextureFinal(const LLVOAvatarDefines::EBakedTextureIndex index) const;
+	BOOL				isBakedTextureFinal(const LLAvatarAppearanceDefines::EBakedTextureIndex index) const;
 	// If you want to check all textures of a given type, pass gAgentWearables.getWearableCount() for index
-	/*virtual*/ BOOL    isTextureDefined(LLVOAvatarDefines::ETextureIndex type, U32 index) const;
-	/*virtual*/ BOOL	isTextureVisible(LLVOAvatarDefines::ETextureIndex type, U32 index = 0) const;
-	/*virtual*/ BOOL	isTextureVisible(LLVOAvatarDefines::ETextureIndex type, LLViewerWearable *wearable) const;
+	/*virtual*/ BOOL    isTextureDefined(LLAvatarAppearanceDefines::ETextureIndex type, U32 index) const;
+	/*virtual*/ BOOL	isTextureVisible(LLAvatarAppearanceDefines::ETextureIndex type, U32 index = 0) const;
+	/*virtual*/ BOOL	isTextureVisible(LLAvatarAppearanceDefines::ETextureIndex type, LLViewerWearable *wearable) const;
 
 
 	//--------------------------------------------------------------------
 	// Local Textures
 	//--------------------------------------------------------------------
 public:
-	BOOL				getLocalTextureGL(LLVOAvatarDefines::ETextureIndex type, LLViewerTexture** image_gl_pp, U32 index) const;
-	LLViewerFetchedTexture*	getLocalTextureGL(LLVOAvatarDefines::ETextureIndex type, U32 index) const;
-	const LLUUID&		getLocalTextureID(LLVOAvatarDefines::ETextureIndex type, U32 index) const;
+	BOOL				getLocalTextureGL(LLAvatarAppearanceDefines::ETextureIndex type, LLViewerTexture** image_gl_pp, U32 index) const;
+	LLViewerFetchedTexture*	getLocalTextureGL(LLAvatarAppearanceDefines::ETextureIndex type, U32 index) const;
+	const LLUUID&		getLocalTextureID(LLAvatarAppearanceDefines::ETextureIndex type, U32 index) const;
 	void				setLocalTextureTE(U8 te, LLViewerTexture* image, U32 index);
-	/*virtual*/ void	setLocalTexture(LLVOAvatarDefines::ETextureIndex type, LLViewerTexture* tex, BOOL baked_version_exits, U32 index);
+	/*virtual*/ void	setLocalTexture(LLAvatarAppearanceDefines::ETextureIndex type, LLViewerTexture* tex, BOOL baked_version_exits, U32 index);
 protected:
-	/*virtual*/ void	setBakedReady(LLVOAvatarDefines::ETextureIndex type, BOOL baked_version_exists, U32 index);
+	/*virtual*/ void	setBakedReady(LLAvatarAppearanceDefines::ETextureIndex type, BOOL baked_version_exists, U32 index);
 	void				localTextureLoaded(BOOL succcess, LLViewerFetchedTexture *src_vi, LLImageRaw* src, LLImageRaw* aux_src, S32 discard_level, BOOL final, void* userdata);
 	void				getLocalTextureByteCount(S32* gl_byte_count) const;
-	/*virtual*/ void	addLocalTextureStats(LLVOAvatarDefines::ETextureIndex i, LLViewerFetchedTexture* imagep, F32 texel_area_ratio, BOOL rendered, BOOL covered_by_baked, U32 index);
-	LLLocalTextureObject* getLocalTextureObject(LLVOAvatarDefines::ETextureIndex i, U32 index) const;
+	/*virtual*/ void	addLocalTextureStats(LLAvatarAppearanceDefines::ETextureIndex i, LLViewerFetchedTexture* imagep, F32 texel_area_ratio, BOOL rendered, BOOL covered_by_baked, U32 index);
+	LLLocalTextureObject* getLocalTextureObject(LLAvatarAppearanceDefines::ETextureIndex i, U32 index) const;
 
 private:
 	static void			onLocalTextureLoaded(BOOL succcess, LLViewerFetchedTexture *src_vi, LLImageRaw* src, LLImageRaw* aux_src, S32 discard_level, BOOL final, void* userdata);
@@ -233,10 +233,10 @@ class LLVOAvatarSelf :
 	// Baked textures
 	//--------------------------------------------------------------------
 public:
-	LLVOAvatarDefines::ETextureIndex getBakedTE(const LLViewerTexLayerSet* layerset ) const;
-	void				setNewBakedTexture(LLVOAvatarDefines::EBakedTextureIndex i, const LLUUID &uuid);
-	void				setNewBakedTexture(LLVOAvatarDefines::ETextureIndex i, const LLUUID& uuid);
-	void				setCachedBakedTexture(LLVOAvatarDefines::ETextureIndex i, const LLUUID& uuid);
+	LLAvatarAppearanceDefines::ETextureIndex getBakedTE(const LLViewerTexLayerSet* layerset ) const;
+	void				setNewBakedTexture(LLAvatarAppearanceDefines::EBakedTextureIndex i, const LLUUID &uuid);
+	void				setNewBakedTexture(LLAvatarAppearanceDefines::ETextureIndex i, const LLUUID& uuid);
+	void				setCachedBakedTexture(LLAvatarAppearanceDefines::ETextureIndex i, const LLUUID& uuid);
 	void				forceBakeAllTextures(bool slam_for_debug = false);
 	static void			processRebakeAvatarTextures(LLMessageSystem* msg, void**);
 protected:
@@ -247,10 +247,10 @@ class LLVOAvatarSelf :
 	//--------------------------------------------------------------------
 public:
 	void 				requestLayerSetUploads();
-	void				requestLayerSetUpload(LLVOAvatarDefines::EBakedTextureIndex i);
-	void				requestLayerSetUpdate(LLVOAvatarDefines::ETextureIndex i);
-	LLViewerTexLayerSet*	getLayerSet(LLVOAvatarDefines::ETextureIndex index) const;
-	LLViewerTexLayerSet*	getLayerSet(LLVOAvatarDefines::EBakedTextureIndex baked_index) const;
+	void				requestLayerSetUpload(LLAvatarAppearanceDefines::EBakedTextureIndex i);
+	void				requestLayerSetUpdate(LLAvatarAppearanceDefines::ETextureIndex i);
+	LLViewerTexLayerSet*	getLayerSet(LLAvatarAppearanceDefines::ETextureIndex index) const;
+	LLViewerTexLayerSet*	getLayerSet(LLAvatarAppearanceDefines::EBakedTextureIndex baked_index) const;
 	
 	//--------------------------------------------------------------------
 	// Composites
@@ -264,8 +264,8 @@ class LLVOAvatarSelf :
 	void				setupComposites();
 	void				updateComposites();
 
-	const LLUUID&		grabBakedTexture(LLVOAvatarDefines::EBakedTextureIndex baked_index) const;
-	BOOL				canGrabBakedTexture(LLVOAvatarDefines::EBakedTextureIndex baked_index) const;
+	const LLUUID&		grabBakedTexture(LLAvatarAppearanceDefines::EBakedTextureIndex baked_index) const;
+	BOOL				canGrabBakedTexture(LLAvatarAppearanceDefines::EBakedTextureIndex baked_index) const;
 
 
 	//--------------------------------------------------------------------
@@ -302,7 +302,7 @@ class LLVOAvatarSelf :
 	/*virtual*/ BOOL	isWearingWearableType(LLWearableType::EType type) const;
 	void				wearableUpdated(LLWearableType::EType type, BOOL upload_result);
 protected:
-	U32 getNumWearables(LLVOAvatarDefines::ETextureIndex i) const;
+	U32 getNumWearables(LLAvatarAppearanceDefines::ETextureIndex i) const;
 
 	//--------------------------------------------------------------------
 	// Attachments
@@ -371,24 +371,24 @@ class LLVOAvatarSelf :
 public:	
 	struct LLAvatarTexData
 	{
-		LLAvatarTexData(const LLUUID& id, LLVOAvatarDefines::ETextureIndex index) : 
+		LLAvatarTexData(const LLUUID& id, LLAvatarAppearanceDefines::ETextureIndex index) : 
 			mAvatarID(id), 
 			mIndex(index) 
 		{}
 		LLUUID			mAvatarID;
-		LLVOAvatarDefines::ETextureIndex	mIndex;
+		LLAvatarAppearanceDefines::ETextureIndex	mIndex;
 	};
 	void 					debugWearablesLoaded() { mDebugTimeWearablesLoaded = mDebugSelfLoadTimer.getElapsedTimeF32(); }
 	void 					debugAvatarVisible() { mDebugTimeAvatarVisible = mDebugSelfLoadTimer.getElapsedTimeF32(); }
 	void 					outputRezDiagnostics() const;
 	void					outputRezTiming(const std::string& msg) const;
 	void					reportAvatarRezTime() const;
-	void 					debugBakedTextureUpload(LLVOAvatarDefines::EBakedTextureIndex index, BOOL finished);
+	void 					debugBakedTextureUpload(LLAvatarAppearanceDefines::EBakedTextureIndex index, BOOL finished);
 	static void				debugOnTimingLocalTexLoaded(BOOL success, LLViewerFetchedTexture *src_vi, LLImageRaw* src, LLImageRaw* aux_src, S32 discard_level, BOOL final, void* userdata);
 
 	BOOL					isAllLocalTextureDataFinal() const;
 
-	const LLViewerTexLayerSet*	debugGetLayerSet(LLVOAvatarDefines::EBakedTextureIndex index) const { return mBakedTextureDatas[index].mTexLayerSet; }
+	const LLViewerTexLayerSet*	debugGetLayerSet(LLAvatarAppearanceDefines::EBakedTextureIndex index) const { return mBakedTextureDatas[index].mTexLayerSet; }
 	const std::string		debugDumpLocalTextureDataInfo(const LLViewerTexLayerSet* layerset) const; // Lists out state of this particular baked texture layer
 	const std::string		debugDumpAllLocalTextureDataInfo() const; // Lists out which baked textures are at highest LOD
 	LLSD					metricsData();
@@ -397,8 +397,8 @@ class LLVOAvatarSelf :
 	LLFrameTimer    		mDebugSelfLoadTimer;
 	F32						mDebugTimeWearablesLoaded;
 	F32 					mDebugTimeAvatarVisible;
-	F32 					mDebugTextureLoadTimes[LLVOAvatarDefines::TEX_NUM_INDICES][MAX_DISCARD_LEVEL+1]; // load time for each texture at each discard level
-	F32 					mDebugBakedTextureTimes[LLVOAvatarDefines::BAKED_NUM_INDICES][2]; // time to start upload and finish upload of each baked texture
+	F32 					mDebugTextureLoadTimes[LLAvatarAppearanceDefines::TEX_NUM_INDICES][MAX_DISCARD_LEVEL+1]; // load time for each texture at each discard level
+	F32 					mDebugBakedTextureTimes[LLAvatarAppearanceDefines::BAKED_NUM_INDICES][2]; // time to start upload and finish upload of each baked texture
 	void					debugTimingLocalTexLoaded(BOOL success, LLViewerFetchedTexture *src_vi, LLImageRaw* src, LLImageRaw* aux_src, S32 discard_level, BOOL final, void* userdata);
 
 /**                    Diagnostics
-- 
GitLab


From 7b4385420edf3f431ddc4a7042bbc9623ffedd34 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Tue, 4 Sep 2012 04:24:47 +0000
Subject: [PATCH 050/436] More clean-up to closer match original file order. 
 For llavatarappearance diffs

---
 indra/llappearance/llavatarappearance.h    | 95 +++++++++++++++-------
 indra/llappearance/llinventoryicon.cpp     |  1 -
 indra/llappearance/lltexglobalcolor.cpp    |  2 -
 indra/llappearance/llviewervisualparam.cpp |  1 -
 indra/llappearance/llwearabletype.cpp      |  1 -
 indra/newview/lltexturefetch.cpp           |  3 +-
 indra/newview/llvoavatar.h                 |  1 -
 indra/newview/llwearablelist.cpp           |  4 +-
 8 files changed, 71 insertions(+), 37 deletions(-)

diff --git a/indra/llappearance/llavatarappearance.h b/indra/llappearance/llavatarappearance.h
index 0ab3960e643..e882868e919 100644
--- a/indra/llappearance/llavatarappearance.h
+++ b/indra/llappearance/llavatarappearance.h
@@ -31,8 +31,8 @@
 #include "llframetimer.h"
 #include "llavatarappearancedefines.h"
 
-class LLTexGlobalColor;
 class LLTexLayerSet;
+class LLTexGlobalColor;
 
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 // LLAvatarAppearance
@@ -43,27 +43,36 @@ class LLAvatarAppearance : public LLCharacter
 {
 	LOG_CLASS(LLAvatarAppearance);
 
+/********************************************************************************
+ **                                                                            **
+ **                    INITIALIZATION
+ **/
+
 public:
 	LLAvatarAppearance();
 
-	//--------------------------------------------------------------------
-	// Clothing colors (convenience functions to access visual parameters)
-	//--------------------------------------------------------------------
-public:
-	void			setClothesColor(LLAvatarAppearanceDefines::ETextureIndex te, const LLColor4& new_color, BOOL upload_bake);
-	LLColor4		getClothesColor(LLAvatarAppearanceDefines::ETextureIndex te);
-	static BOOL		teToColorParams(LLAvatarAppearanceDefines::ETextureIndex te, U32 *param_name);
+/**                    Initialization
+ **                                                                            **
+ *******************************************************************************/
 
-	//--------------------------------------------------------------------
-	// Global colors
-	//--------------------------------------------------------------------
+/********************************************************************************
+ **                                                                            **
+ **                    STATE
+ **/
 public:
-	LLColor4		getGlobalColor(const std::string& color_name ) const;
-	virtual void	onGlobalColorChanged(const LLTexGlobalColor* global_color, BOOL upload_bake) = 0;
-protected:
-	LLTexGlobalColor* mTexSkinColor;
-	LLTexGlobalColor* mTexHairColor;
-	LLTexGlobalColor* mTexEyeColor;
+	virtual bool 	isSelf() const { return false; } // True if this avatar is for this viewer's agent
+	virtual BOOL	isUsingBakedTextures() const = 0;
+	
+/**                    State
+ **                                                                            **
+ *******************************************************************************/
+
+
+/********************************************************************************
+ **                                                                            **
+ **                    RENDERING
+ **/
+	BOOL		mIsDummy; // for special views
 
 	//--------------------------------------------------------------------
 	// Morph masks
@@ -71,6 +80,10 @@ class LLAvatarAppearance : public LLCharacter
 public:
 	virtual void	applyMorphMask(U8* tex_data, S32 width, S32 height, S32 num_components, LLAvatarAppearanceDefines::EBakedTextureIndex index = LLAvatarAppearanceDefines::BAKED_NUM_INDICES) = 0;
 
+/**                    Rendering
+ **                                                                            **
+ *******************************************************************************/
+
 	//--------------------------------------------------------------------
 	// Composites
 	//--------------------------------------------------------------------
@@ -81,39 +94,65 @@ class LLAvatarAppearance : public LLCharacter
  **                                                                            **
  **                    MESHES
  **/
+
+public:
+	virtual void	updateMeshTextures() = 0;
 	virtual void	dirtyMesh() = 0; // Dirty the avatar mesh
+protected:
 	virtual void	dirtyMesh(S32 priority) = 0; // Dirty the avatar mesh, with priority
 
-/********************************************************************************
+/**                    Meshes
  **                                                                            **
- **                    RENDERING
- **/
-	BOOL		mIsDummy; // for special views
+ *******************************************************************************/
 
 /********************************************************************************
  **                                                                            **
- **                    STATE
+ **                    APPEARANCE
  **/
+
+	//--------------------------------------------------------------------
+	// Clothing colors (convenience functions to access visual parameters)
+	//--------------------------------------------------------------------
 public:
-	virtual bool 	isSelf() const { return false; } // True if this avatar is for this viewer's agent
-	virtual BOOL	isUsingBakedTextures() const = 0;
+	void			setClothesColor(LLAvatarAppearanceDefines::ETextureIndex te, const LLColor4& new_color, BOOL upload_bake);
+	LLColor4		getClothesColor(LLAvatarAppearanceDefines::ETextureIndex te);
+	static BOOL		teToColorParams(LLAvatarAppearanceDefines::ETextureIndex te, U32 *param_name);
+
+	//--------------------------------------------------------------------
+	// Global colors
+	//--------------------------------------------------------------------
+public:
+	LLColor4		getGlobalColor(const std::string& color_name ) const;
+	virtual void	onGlobalColorChanged(const LLTexGlobalColor* global_color, BOOL upload_bake) = 0;
+protected:
+	LLTexGlobalColor* mTexSkinColor;
+	LLTexGlobalColor* mTexHairColor;
+	LLTexGlobalColor* mTexEyeColor;
+
+	//--------------------------------------------------------------------
+	// Visibility
+	//--------------------------------------------------------------------
+public:
+	static LLColor4 getDummyColor();
+/**                    Appearance
+ **                                                                            **
+ *******************************************************************************/
 
 /********************************************************************************
  **                                                                            **
  **                    WEARABLES
  **/
+
 public:
+	virtual BOOL			isWearingWearableType(LLWearableType::EType type ) const = 0;
+
 	virtual U32				getWearableCount(const LLWearableType::EType type) const = 0;
 	virtual U32				getWearableCount(const U32 tex_index) const = 0;
 
 	virtual LLWearable*			getWearable(const LLWearableType::EType type, U32 index /*= 0*/) = 0;
 	virtual const LLWearable* 	getWearable(const LLWearableType::EType type, U32 index /*= 0*/) const = 0;
 
-	virtual BOOL			isWearingWearableType(LLWearableType::EType type ) const = 0;
 
-public:
-	static LLColor4 getDummyColor();
-	virtual void	updateMeshTextures() = 0;
 };
 
 #endif // LL_AVATAR_APPEARANCE_H
diff --git a/indra/llappearance/llinventoryicon.cpp b/indra/llappearance/llinventoryicon.cpp
index 62261058ef3..371f60353b6 100644
--- a/indra/llappearance/llinventoryicon.cpp
+++ b/indra/llappearance/llinventoryicon.cpp
@@ -24,7 +24,6 @@
  * $/LicenseInfo$
  */
 
-//#include "llviewerprecompiledheaders.h"
 #include "linden_common.h"
 #include "llinventoryicon.h"
 
diff --git a/indra/llappearance/lltexglobalcolor.cpp b/indra/llappearance/lltexglobalcolor.cpp
index d9c6150fc61..f38b9821042 100644
--- a/indra/llappearance/lltexglobalcolor.cpp
+++ b/indra/llappearance/lltexglobalcolor.cpp
@@ -25,10 +25,8 @@
  */
 
 #include "linden_common.h"
-
 #include "llavatarappearance.h"
 #include "lltexlayer.h"
-//#include "llwearable.h"
 #include "lltexglobalcolor.h"
 
 class LLWearable;
diff --git a/indra/llappearance/llviewervisualparam.cpp b/indra/llappearance/llviewervisualparam.cpp
index e1ddeeeff00..a6792d09747 100644
--- a/indra/llappearance/llviewervisualparam.cpp
+++ b/indra/llappearance/llviewervisualparam.cpp
@@ -27,7 +27,6 @@
 //-----------------------------------------------------------------------------
 // Header Files
 //-----------------------------------------------------------------------------
-//#include "llviewerprecompiledheaders.h"
 #include "linden_common.h"
 
 #include "llviewervisualparam.h"
diff --git a/indra/llappearance/llwearabletype.cpp b/indra/llappearance/llwearabletype.cpp
index 009a3b631a8..c72a0965fe7 100644
--- a/indra/llappearance/llwearabletype.cpp
+++ b/indra/llappearance/llwearabletype.cpp
@@ -25,7 +25,6 @@
  */
 
 #include "linden_common.h"
- 
 #include "llwearabletype.h"
 #include "llinventoryicon.h"
 #include "lltrans.h"
diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp
index 7adf5212c28..16baefac4f7 100644
--- a/indra/newview/lltexturefetch.cpp
+++ b/indra/newview/lltexturefetch.cpp
@@ -973,7 +973,8 @@ bool LLTextureFetchWorker::doWork(S32 param)
 			}
 			else if(!mUrl.empty() && mCanUseHTTP)
 			{
-				if (!(mUrl.compare(0, 7, "http://") == 0))
+				if (!(mUrl.compare(0, 7, "http://") == 0) &&
+				    !(mUrl.compare(0, 8, "https://") == 0))
 				{
 					// *TODO:?remove this warning
 					llwarns << "Unknown URL Type: " << mUrl << llendl;
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
index 644ea22b535..d54d06a6a72 100755
--- a/indra/newview/llvoavatar.h
+++ b/indra/newview/llvoavatar.h
@@ -454,7 +454,6 @@ class LLVOAvatar :
 	static void	deleteCachedImages(bool clearAll=true);
 	static void	destroyGL();
 	static void	restoreGL();
-	BOOL		mIsDummy; // for special views
 	S32			mSpecialRenderMode; // special lighting
 	U32			mAttachmentGeometryBytes; //number of bytes in attached geometry
 	F32			mAttachmentSurfaceArea; //estimated surface area of attachments
diff --git a/indra/newview/llwearablelist.cpp b/indra/newview/llwearablelist.cpp
index 9f04fbecf09..6c4790ad77f 100644
--- a/indra/newview/llwearablelist.cpp
+++ b/indra/newview/llwearablelist.cpp
@@ -112,8 +112,8 @@ void LLWearableList::processGetAssetReply( const char* filename, const LLAssetID
 		else
 		{
 			wearable = new LLViewerWearable(uuid);
-			bool res = wearable->importFile( fp );
-			if (!res)
+			LLWearable::EImportResult result = wearable->importFile( fp );
+			if (LLWearable::SUCCESS != result)
 			{
 				if (wearable->getType() == LLWearableType::WT_COUNT)
 				{
-- 
GitLab


From 204be2ba5261d794f8264e004b65725450bf1be9 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Tue, 4 Sep 2012 15:18:15 +0000
Subject: [PATCH 051/436] Split LLTexLayerSetBuffer into llappearance portion,
 and viewer-specific LLViewerTexLayerSetBuffer

---
 indra/llappearance/lltexlayer.cpp         | 109 +++++++++
 indra/llappearance/lltexlayer.h           |  37 +++
 indra/llrender/lltexture.h                |   2 +-
 indra/newview/llassetuploadresponders.cpp |   8 +-
 indra/newview/lldynamictexture.h          |   4 +-
 indra/newview/lltextureview.cpp           |   2 +-
 indra/newview/llviewerjointmesh.cpp       |   2 +-
 indra/newview/llviewerstats.cpp           |   2 +-
 indra/newview/llviewertexlayer.cpp        | 260 +++++++++-------------
 indra/newview/llviewertexlayer.h          |  58 ++---
 indra/newview/llvoavatar.cpp              |   2 +-
 indra/newview/llvoavatarself.cpp          |   6 +-
 12 files changed, 295 insertions(+), 197 deletions(-)

diff --git a/indra/llappearance/lltexlayer.cpp b/indra/llappearance/lltexlayer.cpp
index bf2fd1e30d0..0d3219c4e06 100644
--- a/indra/llappearance/lltexlayer.cpp
+++ b/indra/llappearance/lltexlayer.cpp
@@ -40,6 +40,7 @@
 #include "lltexturemanagerbridge.h"
 #include "llui.h"
 #include "llwearable.h"
+#include "llvertexbuffer.h"
 #include "llviewervisualparam.h"
 
 //#include "../tools/imdebug/imdebug.h"
@@ -89,6 +90,92 @@ class LLTexLayerInfo
 	param_alpha_info_list_t		mParamAlphaInfoList;
 };
 
+//-----------------------------------------------------------------------------
+// LLTexLayerSetBuffer
+// The composite image that a LLViewerTexLayerSet writes to.  Each LLViewerTexLayerSet has one.
+//-----------------------------------------------------------------------------
+
+LLTexLayerSetBuffer::LLTexLayerSetBuffer(LLTexLayerSet* const owner) :
+	mTexLayerSet(owner)
+{
+}
+
+LLTexLayerSetBuffer::~LLTexLayerSetBuffer()
+{
+}
+
+void LLTexLayerSetBuffer::pushProjection() const
+{
+	gGL.matrixMode(LLRender::MM_PROJECTION);
+	gGL.pushMatrix();
+	gGL.loadIdentity();
+	gGL.ortho(0.0f, getCompositeWidth(), 0.0f, getCompositeHeight(), -1.0f, 1.0f);
+
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
+	gGL.pushMatrix();
+	gGL.loadIdentity();
+}
+
+void LLTexLayerSetBuffer::popProjection() const
+{
+	gGL.matrixMode(LLRender::MM_PROJECTION);
+	gGL.popMatrix();
+
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
+	gGL.popMatrix();
+}
+
+// virtual
+void LLTexLayerSetBuffer::preRenderTexLayerSet()
+{
+	// Set up an ortho projection
+	pushProjection();
+}
+
+// virtual
+void LLTexLayerSetBuffer::postRenderTexLayerSet(BOOL success)
+{
+	popProjection();
+}
+
+BOOL LLTexLayerSetBuffer::renderTexLayerSet()
+{
+	// Default color mask for tex layer render
+	gGL.setColorMask(true, true);
+
+	BOOL success = TRUE;
+	
+	bool use_shaders = LLGLSLShader::sNoFixedFunction;
+
+	if (use_shaders)
+	{
+		gAlphaMaskProgram.bind();
+		gAlphaMaskProgram.setMinimumAlpha(0.004f);
+	}
+
+	LLVertexBuffer::unbind();
+
+	// Composite the color data
+	LLGLSUIDefault gls_ui;
+	success &= mTexLayerSet->render( getCompositeOriginX(), getCompositeOriginY(), 
+									 getCompositeWidth(), getCompositeHeight() );
+	gGL.flush();
+
+	midRenderTexLayerSet(success);
+
+	if (use_shaders)
+	{
+		gAlphaMaskProgram.unbind();
+	}
+
+	LLVertexBuffer::unbind();
+	
+	// reset GL state
+	gGL.setColorMask(true, true);
+	gGL.setSceneBlendType(LLRender::BT_ALPHA);
+
+	return success;
+}
 
 //-----------------------------------------------------------------------------
 // LLTexLayerSetInfo
@@ -381,6 +468,28 @@ const std::string LLTexLayerSet::getBodyRegionName() const
 }
 
 
+void LLTexLayerSet::destroyComposite()
+{
+	if( mComposite )
+	{
+		mComposite = NULL;
+	}
+}
+
+LLTexLayerSetBuffer* LLTexLayerSet::getComposite()
+{
+	if (!mComposite)
+	{
+		createComposite();
+	}
+	return mComposite;
+}
+
+const LLTexLayerSetBuffer* LLTexLayerSet::getComposite() const
+{
+	return mComposite;
+}
+
 void LLTexLayerSet::renderAlphaMaskTextures(S32 x, S32 y, S32 width, S32 height, bool forceClear)
 {
 	const LLTexLayerSetInfo *info = getInfo();
diff --git a/indra/llappearance/lltexlayer.h b/indra/llappearance/lltexlayer.h
index 5a413e929f8..4f2ee5b0450 100644
--- a/indra/llappearance/lltexlayer.h
+++ b/indra/llappearance/lltexlayer.h
@@ -40,6 +40,7 @@ class LLXmlTreeNode;
 class LLTexLayerSet;
 class LLTexLayerSetInfo;
 class LLTexLayerInfo;
+class LLTexLayerSetBuffer;
 class LLWearable;
 class LLViewerVisualParam;
 
@@ -178,10 +179,16 @@ class LLTexLayer : public LLTexLayerInterface
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 class LLTexLayerSet
 {
+	friend class LLTexLayerSetBuffer;
 public:
 	LLTexLayerSet(LLAvatarAppearance* const appearance);
 	virtual ~LLTexLayerSet();
 
+	LLTexLayerSetBuffer*		getComposite();
+	const LLTexLayerSetBuffer* 	getComposite() const; // Do not create one if it doesn't exist.
+	virtual void				createComposite() = 0;
+	void						destroyComposite();
+
 	const LLTexLayerSetInfo* 	getInfo() const 			{ return mInfo; }
 	BOOL						setInfo(const LLTexLayerSetInfo *info); // This sets mInfo and calls initialization functions
 
@@ -199,6 +206,7 @@ class LLTexLayerSet
 	
 	LLAvatarAppearance*			getAvatarAppearance()	const		{ return mAvatarAppearance; }
 	const std::string			getBodyRegionName() const;
+	BOOL						hasComposite() const 		{ return (mComposite.notNull()); }
 	LLAvatarAppearanceDefines::EBakedTextureIndex getBakedTexIndex() { return mBakedTexIndex; }
 	void						setBakedTexIndex(LLAvatarAppearanceDefines::EBakedTextureIndex index) { mBakedTexIndex = index; }
 	BOOL						isVisible() const 			{ return mIsVisible; }
@@ -209,6 +217,7 @@ class LLTexLayerSet
 	typedef std::vector<LLTexLayerInterface *> layer_list_t;
 	layer_list_t				mLayerList;
 	layer_list_t				mMaskLayerList;
+	LLPointer<LLTexLayerSetBuffer>	mComposite;
 	LLAvatarAppearance*	const	mAvatarAppearance; // note: backlink only; don't make this an LLPointer.
 	BOOL						mIsVisible;
 
@@ -241,6 +250,34 @@ class LLTexLayerSetInfo
 	layer_info_list_t		mLayerInfoList;
 };
 
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// LLTexLayerSetBuffer
+//
+// The composite image that a LLTexLayerSet writes to.  Each LLTexLayerSet has one.
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+class LLTexLayerSetBuffer : public virtual LLRefCount
+{
+	LOG_CLASS(LLTexLayerSetBuffer);
+
+public:
+	LLTexLayerSetBuffer(LLTexLayerSet* const owner);
+	virtual ~LLTexLayerSetBuffer();
+
+protected:
+	void					pushProjection() const;
+	void					popProjection() const;
+	virtual void			preRenderTexLayerSet();
+	virtual void			midRenderTexLayerSet(BOOL success) {}
+	virtual void			postRenderTexLayerSet(BOOL success);
+	virtual S32				getCompositeOriginX() const = 0;
+	virtual S32				getCompositeOriginY() const = 0;
+	virtual S32				getCompositeWidth() const = 0;
+	virtual S32				getCompositeHeight() const = 0;
+	BOOL					renderTexLayerSet();
+
+	LLTexLayerSet* const	mTexLayerSet;
+};
+
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 // LLTexLayerStaticImageList
 //
diff --git a/indra/llrender/lltexture.h b/indra/llrender/lltexture.h
index a23aa725208..40245968d19 100644
--- a/indra/llrender/lltexture.h
+++ b/indra/llrender/lltexture.h
@@ -43,7 +43,7 @@ class LLImageRaw ;
 //this is an abstract class as the parent for the class LLViewerTexture
 //through the following virtual functions, the class LLViewerTexture can be reached from /llrender.
 //
-class LLTexture : public LLRefCount
+class LLTexture : public virtual LLRefCount
 {
 	friend class LLTexUnit ;
 	friend class LLFontGL ;
diff --git a/indra/newview/llassetuploadresponders.cpp b/indra/newview/llassetuploadresponders.cpp
index 35e44d73d47..7c423af3c8a 100644
--- a/indra/newview/llassetuploadresponders.cpp
+++ b/indra/newview/llassetuploadresponders.cpp
@@ -456,7 +456,7 @@ LLSendTexLayerResponder::LLSendTexLayerResponder(const LLSD& post_data,
 
 LLSendTexLayerResponder::~LLSendTexLayerResponder()
 {
-	// mBakedUploadData is normally deleted by calls to LLTexLayerSetBuffer::onTextureUploadComplete() below
+	// mBakedUploadData is normally deleted by calls to LLViewerTexLayerSetBuffer::onTextureUploadComplete() below
 	if (mBakedUploadData)
 	{	// ...but delete it in the case where uploadComplete() is never called
 		delete mBakedUploadData;
@@ -477,12 +477,12 @@ void LLSendTexLayerResponder::uploadComplete(const LLSD& content)
 	if (result == "complete"
 		&& mBakedUploadData != NULL)
 	{	// Invoke 
-		LLTexLayerSetBuffer::onTextureUploadComplete(new_id, (void*) mBakedUploadData, 0, LL_EXSTAT_NONE);
+		LLViewerTexLayerSetBuffer::onTextureUploadComplete(new_id, (void*) mBakedUploadData, 0, LL_EXSTAT_NONE);
 		mBakedUploadData = NULL;	// deleted in onTextureUploadComplete()
 	}
 	else
 	{	// Invoke the original callback with an error result
-		LLTexLayerSetBuffer::onTextureUploadComplete(new_id, (void*) mBakedUploadData, -1, LL_EXSTAT_NONE);
+		LLViewerTexLayerSetBuffer::onTextureUploadComplete(new_id, (void*) mBakedUploadData, -1, LL_EXSTAT_NONE);
 		mBakedUploadData = NULL;	// deleted in onTextureUploadComplete()
 	}
 }
@@ -492,7 +492,7 @@ void LLSendTexLayerResponder::error(U32 statusNum, const std::string& reason)
 	llinfos << "status: " << statusNum << " reason: " << reason << llendl;
 	
 	// Invoke the original callback with an error result
-	LLTexLayerSetBuffer::onTextureUploadComplete(LLUUID(), (void*) mBakedUploadData, -1, LL_EXSTAT_NONE);
+	LLViewerTexLayerSetBuffer::onTextureUploadComplete(LLUUID(), (void*) mBakedUploadData, -1, LL_EXSTAT_NONE);
 	mBakedUploadData = NULL;	// deleted in onTextureUploadComplete()
 }
 
diff --git a/indra/newview/lldynamictexture.h b/indra/newview/lldynamictexture.h
index c51e7d1e1a7..d287ae6eeba 100644
--- a/indra/newview/lldynamictexture.h
+++ b/indra/newview/lldynamictexture.h
@@ -72,8 +72,8 @@ class LLViewerDynamicTexture : public LLViewerTexture
 	
 	/*virtual*/ S8 getType() const ;
 
-	S32			getOriginX()	{ return mOrigin.mX; }
-	S32			getOriginY()	{ return mOrigin.mY; }
+	S32			getOriginX() const	{ return mOrigin.mX; }
+	S32			getOriginY() const	{ return mOrigin.mY; }
 	
 	S32			getSize()		{ return mFullWidth * mFullHeight * mComponents; }
 
diff --git a/indra/newview/lltextureview.cpp b/indra/newview/lltextureview.cpp
index 070009fe9c2..03529b92465 100755
--- a/indra/newview/lltextureview.cpp
+++ b/indra/newview/lltextureview.cpp
@@ -425,7 +425,7 @@ void LLAvatarTexBar::draw()
 		const LLAvatarAppearanceDefines::EBakedTextureIndex baked_index = baked_iter->first;
 		const LLViewerTexLayerSet *layerset = avatarp->debugGetLayerSet(baked_index);
 		if (!layerset) continue;
-		const LLTexLayerSetBuffer *layerset_buffer = layerset->getComposite();
+		const LLViewerTexLayerSetBuffer *layerset_buffer = layerset->getViewerComposite();
 		if (!layerset_buffer) continue;
 
 		LLColor4 text_color = LLColor4::white;
diff --git a/indra/newview/llviewerjointmesh.cpp b/indra/newview/llviewerjointmesh.cpp
index 79800c1df31..3532fac1bc0 100755
--- a/indra/newview/llviewerjointmesh.cpp
+++ b/indra/newview/llviewerjointmesh.cpp
@@ -562,7 +562,7 @@ U32 LLViewerJointMesh::drawShape( F32 pixelArea, BOOL first_pass, BOOL is_dummy)
 	{
 		if(	mLayerSet->hasComposite() )
 		{
-			gGL.getTexUnit(diffuse_channel)->bind(mLayerSet->getComposite());
+			gGL.getTexUnit(diffuse_channel)->bind(mLayerSet->getViewerComposite());
 		}
 		else
 		{
diff --git a/indra/newview/llviewerstats.cpp b/indra/newview/llviewerstats.cpp
index f049130f3a0..961c7082cfa 100755
--- a/indra/newview/llviewerstats.cpp
+++ b/indra/newview/llviewerstats.cpp
@@ -519,7 +519,7 @@ void output_statistics(void*)
 	llinfos << "Avatar Memory (partly overlaps with above stats):" << llendl;
 	LLTexLayerStaticImageList::getInstance()->dumpByteCount();
 	LLVOAvatarSelf::dumpScratchTextureByteCount();
-	LLTexLayerSetBuffer::dumpTotalByteCount();
+	LLViewerTexLayerSetBuffer::dumpTotalByteCount();
 	LLVOAvatarSelf::dumpTotalLocalTextureByteCount();
 	LLTexLayerParamAlpha::dumpCacheByteCount();
 	LLVOAvatar::dumpBakedStatus();
diff --git a/indra/newview/llviewertexlayer.cpp b/indra/newview/llviewertexlayer.cpp
index 051aa41ed15..69457ab1db2 100644
--- a/indra/newview/llviewertexlayer.cpp
+++ b/indra/newview/llviewertexlayer.cpp
@@ -63,33 +63,33 @@ LLBakedUploadData::LLBakedUploadData(const LLVOAvatarSelf* avatar,
 }
 
 //-----------------------------------------------------------------------------
-// LLTexLayerSetBuffer
+// LLViewerTexLayerSetBuffer
 // The composite image that a LLViewerTexLayerSet writes to.  Each LLViewerTexLayerSet has one.
 //-----------------------------------------------------------------------------
 
 // static
-S32 LLTexLayerSetBuffer::sGLByteCount = 0;
+S32 LLViewerTexLayerSetBuffer::sGLByteCount = 0;
 
-LLTexLayerSetBuffer::LLTexLayerSetBuffer(LLViewerTexLayerSet* const owner, 
+LLViewerTexLayerSetBuffer::LLViewerTexLayerSetBuffer(LLTexLayerSet* const owner, 
 										 S32 width, S32 height) :
 	// ORDER_LAST => must render these after the hints are created.
+	LLTexLayerSetBuffer(owner),
 	LLViewerDynamicTexture( width, height, 4, LLViewerDynamicTexture::ORDER_LAST, TRUE ), 
 	mUploadPending(FALSE), // Not used for any logic here, just to sync sending of updates
 	mNeedsUpload(FALSE),
 	mNumLowresUploads(0),
 	mUploadFailCount(0),
 	mNeedsUpdate(TRUE),
-	mNumLowresUpdates(0),
-	mTexLayerSet(owner)
+	mNumLowresUpdates(0)
 {
-	LLTexLayerSetBuffer::sGLByteCount += getSize();
+	LLViewerTexLayerSetBuffer::sGLByteCount += getSize();
 	mNeedsUploadTimer.start();
 	mNeedsUpdateTimer.start();
 }
 
-LLTexLayerSetBuffer::~LLTexLayerSetBuffer()
+LLViewerTexLayerSetBuffer::~LLViewerTexLayerSetBuffer()
 {
-	LLTexLayerSetBuffer::sGLByteCount -= getSize();
+	LLViewerTexLayerSetBuffer::sGLByteCount -= getSize();
 	destroyGLTexture();
 	for( S32 order = 0; order < ORDER_COUNT; order++ )
 	{
@@ -98,30 +98,30 @@ LLTexLayerSetBuffer::~LLTexLayerSetBuffer()
 }
 
 //virtual 
-S8 LLTexLayerSetBuffer::getType() const 
+S8 LLViewerTexLayerSetBuffer::getType() const 
 {
 	return LLViewerDynamicTexture::LL_TEX_LAYER_SET_BUFFER ;
 }
 
 //virtual 
-void LLTexLayerSetBuffer::restoreGLTexture() 
+void LLViewerTexLayerSetBuffer::restoreGLTexture() 
 {	
 	LLViewerDynamicTexture::restoreGLTexture() ;
 }
 
 //virtual 
-void LLTexLayerSetBuffer::destroyGLTexture() 
+void LLViewerTexLayerSetBuffer::destroyGLTexture() 
 {
 	LLViewerDynamicTexture::destroyGLTexture() ;
 }
 
 // static
-void LLTexLayerSetBuffer::dumpTotalByteCount()
+void LLViewerTexLayerSetBuffer::dumpTotalByteCount()
 {
-	llinfos << "Composite System GL Buffers: " << (LLTexLayerSetBuffer::sGLByteCount/1024) << "KB" << llendl;
+	llinfos << "Composite System GL Buffers: " << (LLViewerTexLayerSetBuffer::sGLByteCount/1024) << "KB" << llendl;
 }
 
-void LLTexLayerSetBuffer::requestUpdate()
+void LLViewerTexLayerSetBuffer::requestUpdate()
 {
 	restartUpdateTimer();
 	mNeedsUpdate = TRUE;
@@ -131,7 +131,7 @@ void LLTexLayerSetBuffer::requestUpdate()
 	mUploadID.setNull();
 }
 
-void LLTexLayerSetBuffer::requestUpload()
+void LLViewerTexLayerSetBuffer::requestUpload()
 {
 	conditionalRestartUploadTimer();
 	mNeedsUpload = TRUE;
@@ -139,7 +139,7 @@ void LLTexLayerSetBuffer::requestUpload()
 	mUploadPending = TRUE;
 }
 
-void LLTexLayerSetBuffer::conditionalRestartUploadTimer()
+void LLViewerTexLayerSetBuffer::conditionalRestartUploadTimer()
 {
 	// If we requested a new upload but haven't even uploaded
 	// a low res version of our last upload request, then
@@ -155,13 +155,13 @@ void LLTexLayerSetBuffer::conditionalRestartUploadTimer()
 	}
 }
 
-void LLTexLayerSetBuffer::restartUpdateTimer()
+void LLViewerTexLayerSetBuffer::restartUpdateTimer()
 {
 	mNeedsUpdateTimer.reset();
 	mNeedsUpdateTimer.start();
 }
 
-void LLTexLayerSetBuffer::cancelUpload()
+void LLViewerTexLayerSetBuffer::cancelUpload()
 {
 	mNeedsUpload = FALSE;
 	mUploadPending = FALSE;
@@ -169,29 +169,8 @@ void LLTexLayerSetBuffer::cancelUpload()
 	mUploadRetryTimer.reset();
 }
 
-void LLTexLayerSetBuffer::pushProjection() const
-{
-	gGL.matrixMode(LLRender::MM_PROJECTION);
-	gGL.pushMatrix();
-	gGL.loadIdentity();
-	gGL.ortho(0.0f, mFullWidth, 0.0f, mFullHeight, -1.0f, 1.0f);
-
-	gGL.matrixMode(LLRender::MM_MODELVIEW);
-	gGL.pushMatrix();
-	gGL.loadIdentity();
-}
-
-void LLTexLayerSetBuffer::popProjection() const
-{
-	gGL.matrixMode(LLRender::MM_PROJECTION);
-	gGL.popMatrix();
-
-	gGL.matrixMode(LLRender::MM_MODELVIEW);
-	gGL.popMatrix();
-}
-
 // virtual
-BOOL LLTexLayerSetBuffer::needsRender()
+BOOL LLViewerTexLayerSetBuffer::needsRender()
 {
 	llassert(mTexLayerSet->getAvatarAppearance() == gAgentAvatarp);
 	if (!isAgentAvatarValid()) return FALSE;
@@ -212,7 +191,7 @@ BOOL LLTexLayerSetBuffer::needsRender()
 	}
 
 	// Don't render if we are trying to create a shirt texture but aren't wearing a skirt.
-	if (gAgentAvatarp->getBakedTE(mTexLayerSet) == LLAvatarAppearanceDefines::TEX_SKIRT_BAKED && 
+	if (gAgentAvatarp->getBakedTE(getViewerTexLayerSet()) == LLAvatarAppearanceDefines::TEX_SKIRT_BAKED && 
 		!gAgentAvatarp->isWearingWearableType(LLWearableType::WT_SKIRT))
 	{
 		cancelUpload();
@@ -220,51 +199,36 @@ BOOL LLTexLayerSetBuffer::needsRender()
 	}
 
 	// Render if we have at least minimal level of detail for each local texture.
-	return mTexLayerSet->isLocalTextureDataAvailable();
+	return getViewerTexLayerSet()->isLocalTextureDataAvailable();
 }
 
-void LLTexLayerSetBuffer::preRender(BOOL clear_depth)
+// virtual
+void LLViewerTexLayerSetBuffer::preRenderTexLayerSet()
 {
-	// Set up an ortho projection
-	pushProjection();
+	LLTexLayerSetBuffer::preRenderTexLayerSet();
 	
 	// keep depth buffer, we don't need to clear it
 	LLViewerDynamicTexture::preRender(FALSE);
 }
 
-void LLTexLayerSetBuffer::postRender(BOOL success)
+// virtual
+void LLViewerTexLayerSetBuffer::postRenderTexLayerSet(BOOL success)
 {
-	popProjection();
+	// *TODO: Old logic does not check success before setGLTextureCreated
+	// we have valid texture data now
+	mGLTexturep->setGLTextureCreated(true);
 
+	LLTexLayerSetBuffer::postRenderTexLayerSet(success);
 	LLViewerDynamicTexture::postRender(success);
 }
 
-BOOL LLTexLayerSetBuffer::render()
+// virtual
+void LLViewerTexLayerSetBuffer::midRenderTexLayerSet(BOOL success)
 {
-	// Default color mask for tex layer render
-	gGL.setColorMask(true, true);
-
 	// do we need to upload, and do we have sufficient data to create an uploadable composite?
 	// TODO: When do we upload the texture if gAgent.mNumPendingQueries is non-zero?
 	const BOOL upload_now = mNeedsUpload && isReadyToUpload();
 	const BOOL update_now = mNeedsUpdate && isReadyToUpdate();
-	
-	BOOL success = TRUE;
-	
-	bool use_shaders = LLGLSLShader::sNoFixedFunction;
-
-	if (use_shaders)
-	{
-		gAlphaMaskProgram.bind();
-		gAlphaMaskProgram.setMinimumAlpha(0.004f);
-	}
-
-	LLVertexBuffer::unbind();
-
-	// Composite the color data
-	LLGLSUIDefault gls_ui;
-	success &= mTexLayerSet->render( mOrigin.mX, mOrigin.mY, mFullWidth, mFullHeight );
-	gGL.flush();
 
 	if(upload_now)
 	{
@@ -275,9 +239,10 @@ BOOL LLTexLayerSetBuffer::render()
 		}
 		else
 		{
-			if (mTexLayerSet->isVisible())
+			LLViewerTexLayerSet* layer_set = getViewerTexLayerSet();
+			if (layer_set->isVisible())
 			{
-				mTexLayerSet->getAvatar()->debugBakedTextureUpload(mTexLayerSet->getBakedTexIndex(), FALSE); // FALSE for start of upload, TRUE for finish.
+				layer_set->getAvatar()->debugBakedTextureUpload(layer_set->getBakedTexIndex(), FALSE); // FALSE for start of upload, TRUE for finish.
 				doUpload();
 			}
 			else
@@ -285,7 +250,7 @@ BOOL LLTexLayerSetBuffer::render()
 				mUploadPending = FALSE;
 				mNeedsUpload = FALSE;
 				mNeedsUploadTimer.pause();
-				mTexLayerSet->getAvatar()->setNewBakedTexture(mTexLayerSet->getBakedTexIndex(),IMG_INVISIBLE);
+				layer_set->getAvatar()->setNewBakedTexture(layer_set->getBakedTexIndex(),IMG_INVISIBLE);
 			}
 		}
 	}
@@ -294,51 +259,35 @@ BOOL LLTexLayerSetBuffer::render()
 	{
 		doUpdate();
 	}
-
-	if (use_shaders)
-	{
-		gAlphaMaskProgram.unbind();
-	}
-
-	LLVertexBuffer::unbind();
-	
-	// reset GL state
-	gGL.setColorMask(true, true);
-	gGL.setSceneBlendType(LLRender::BT_ALPHA);
-
-	// we have valid texture data now
-	mGLTexturep->setGLTextureCreated(true);
-
-	return success;
 }
 
-BOOL LLTexLayerSetBuffer::isInitialized(void) const
+BOOL LLViewerTexLayerSetBuffer::isInitialized(void) const
 {
 	return mGLTexturep.notNull() && mGLTexturep->isGLTextureCreated();
 }
 
-BOOL LLTexLayerSetBuffer::uploadPending() const
+BOOL LLViewerTexLayerSetBuffer::uploadPending() const
 {
 	return mUploadPending;
 }
 
-BOOL LLTexLayerSetBuffer::uploadNeeded() const
+BOOL LLViewerTexLayerSetBuffer::uploadNeeded() const
 {
 	return mNeedsUpload;
 }
 
-BOOL LLTexLayerSetBuffer::uploadInProgress() const
+BOOL LLViewerTexLayerSetBuffer::uploadInProgress() const
 {
 	return !mUploadID.isNull();
 }
 
-BOOL LLTexLayerSetBuffer::isReadyToUpload() const
+BOOL LLViewerTexLayerSetBuffer::isReadyToUpload() const
 {
 	if (!gAgentQueryManager.hasNoPendingQueries()) return FALSE; // Can't upload if there are pending queries.
 	if (isAgentAvatarValid() && !gAgentAvatarp->isUsingBakedTextures()) return FALSE; // Don't upload if avatar is using composites.
 
 	BOOL ready = FALSE;
-	if (mTexLayerSet->isLocalTextureDataFinal())
+	if (getViewerTexLayerSet()->isLocalTextureDataFinal())
 	{
 		// If we requested an upload and have the final LOD ready, upload (or wait a while if this is a retry)
 		if (mUploadFailCount == 0)
@@ -363,7 +312,7 @@ BOOL LLTexLayerSetBuffer::isReadyToUpload() const
 
 			// If we hit our timeout and have textures available at even lower resolution, then upload.
 			const BOOL is_upload_textures_timeout = mNeedsUploadTimer.getElapsedTimeF32() >= texture_timeout_threshold;
-			const BOOL has_lower_lod = mTexLayerSet->isLocalTextureDataAvailable();
+			const BOOL has_lower_lod = getViewerTexLayerSet()->isLocalTextureDataAvailable();
 			ready = has_lower_lod && is_upload_textures_timeout;
 		}
 	}
@@ -371,10 +320,10 @@ BOOL LLTexLayerSetBuffer::isReadyToUpload() const
 	return ready;
 }
 
-BOOL LLTexLayerSetBuffer::isReadyToUpdate() const
+BOOL LLViewerTexLayerSetBuffer::isReadyToUpdate() const
 {
 	// If we requested an update and have the final LOD ready, then update.
-	if (mTexLayerSet->isLocalTextureDataFinal()) return TRUE;
+	if (getViewerTexLayerSet()->isLocalTextureDataFinal()) return TRUE;
 
 	// If we haven't done an update yet, then just do one now regardless of state of textures.
 	if (mNumLowresUpdates == 0) return TRUE;
@@ -386,14 +335,14 @@ BOOL LLTexLayerSetBuffer::isReadyToUpdate() const
 	{
 		// If we hit our timeout and have textures available at even lower resolution, then update.
 		const BOOL is_update_textures_timeout = mNeedsUpdateTimer.getElapsedTimeF32() >= texture_timeout;
-		const BOOL has_lower_lod = mTexLayerSet->isLocalTextureDataAvailable();
+		const BOOL has_lower_lod = getViewerTexLayerSet()->isLocalTextureDataAvailable();
 		if (has_lower_lod && is_update_textures_timeout) return TRUE; 
 	}
 
 	return FALSE;
 }
 
-BOOL LLTexLayerSetBuffer::requestUpdateImmediate()
+BOOL LLViewerTexLayerSetBuffer::requestUpdateImmediate()
 {
 	mNeedsUpdate = TRUE;
 	BOOL result = FALSE;
@@ -410,14 +359,15 @@ BOOL LLTexLayerSetBuffer::requestUpdateImmediate()
 
 // Create the baked texture, send it out to the server, then wait for it to come
 // back so we can switch to using it.
-void LLTexLayerSetBuffer::doUpload()
+void LLViewerTexLayerSetBuffer::doUpload()
 {
-	llinfos << "Uploading baked " << mTexLayerSet->getBodyRegionName() << llendl;
+	LLViewerTexLayerSet* layer_set = getViewerTexLayerSet();
+	llinfos << "Uploading baked " << layer_set->getBodyRegionName() << llendl;
 	LLViewerStats::getInstance()->incStat(LLViewerStats::ST_TEX_BAKES);
 
 	// Don't need caches since we're baked now.  (note: we won't *really* be baked 
 	// until this image is sent to the server and the Avatar Appearance message is received.)
-	mTexLayerSet->deleteCaches();
+	layer_set->deleteCaches();
 
 	// Get the COLOR information from our texture
 	U8* baked_color_data = new U8[ mFullWidth * mFullHeight * 4 ];
@@ -428,7 +378,7 @@ void LLTexLayerSetBuffer::doUpload()
 	LLGLSUIDefault gls_ui;
 	LLPointer<LLImageRaw> baked_mask_image = new LLImageRaw(mFullWidth, mFullHeight, 1 );
 	U8* baked_mask_data = baked_mask_image->getData(); 
-	mTexLayerSet->gatherMorphMaskAlpha(baked_mask_data, mFullWidth, mFullHeight);
+	layer_set->gatherMorphMaskAlpha(baked_mask_data, mFullWidth, mFullHeight);
 
 
 	// Create the baked image from our color and mask information
@@ -475,10 +425,10 @@ void LLTexLayerSetBuffer::doUpload()
 			
 			if (valid)
 			{
-				const bool highest_lod = mTexLayerSet->isLocalTextureDataFinal();
+				const bool highest_lod = layer_set->isLocalTextureDataFinal();
 				// Baked_upload_data is owned by the responder and deleted after the request completes.
 				LLBakedUploadData* baked_upload_data = new LLBakedUploadData(gAgentAvatarp, 
-																			 this->mTexLayerSet, 
+																			 layer_set, 
 																			 asset_id,
 																			 highest_lod);
 				// upload ID is used to avoid overlaps, e.g. when the user rapidly makes two changes outside of Face Edit.
@@ -491,7 +441,7 @@ void LLTexLayerSetBuffer::doUpload()
 					&& (mUploadFailCount < (BAKE_UPLOAD_ATTEMPTS - 1))) // Try last ditch attempt via asset store if cap upload is failing.
 				{
 					LLSD body = LLSD::emptyMap();
-					// The responder will call LLTexLayerSetBuffer::onTextureUploadComplete()
+					// The responder will call LLViewerTexLayerSetBuffer::onTextureUploadComplete()
 					LLHTTPClient::post(url, body, new LLSendTexLayerResponder(body, mUploadID, LLAssetType::AT_TEXTURE, baked_upload_data));
 					llinfos << "Baked texture upload via capability of " << mUploadID << " to " << url << llendl;
 				} 
@@ -499,7 +449,7 @@ void LLTexLayerSetBuffer::doUpload()
 				{
 					gAssetStorage->storeAssetData(tid,
 												  LLAssetType::AT_TEXTURE,
-												  LLTexLayerSetBuffer::onTextureUploadComplete,
+												  LLViewerTexLayerSetBuffer::onTextureUploadComplete,
 												  baked_upload_data,
 												  TRUE,		// temp_file
 												  TRUE,		// is_priority
@@ -527,12 +477,12 @@ void LLTexLayerSetBuffer::doUpload()
 				{
 					const std::string lod_str = highest_lod ? "HighRes" : "LowRes";
 					LLSD args;
-					args["EXISTENCE"] = llformat("%d",(U32)mTexLayerSet->getAvatar()->debugGetExistenceTimeElapsedF32());
+					args["EXISTENCE"] = llformat("%d",(U32)layer_set->getAvatar()->debugGetExistenceTimeElapsedF32());
 					args["TIME"] = llformat("%d",(U32)mNeedsUploadTimer.getElapsedTimeF32());
-					args["BODYREGION"] = mTexLayerSet->getBodyRegionName();
+					args["BODYREGION"] = layer_set->getBodyRegionName();
 					args["RESOLUTION"] = lod_str;
 					LLNotificationsUtil::add("AvatarRezSelfBakedTextureUploadNotification",args);
-					LL_DEBUGS("Avatar") << self_av_string() << "Uploading [ name: " << mTexLayerSet->getBodyRegionName() << " res:" << lod_str << " time:" << (U32)mNeedsUploadTimer.getElapsedTimeF32() << " ]" << LL_ENDL;
+					LL_DEBUGS("Avatar") << self_av_string() << "Uploading [ name: " << layer_set->getBodyRegionName() << " res:" << lod_str << " time:" << (U32)mNeedsUploadTimer.getElapsedTimeF32() << " ]" << LL_ENDL;
 				}
 			}
 			else
@@ -557,9 +507,10 @@ void LLTexLayerSetBuffer::doUpload()
 
 // Mostly bookkeeping; don't need to actually "do" anything since
 // render() will actually do the update.
-void LLTexLayerSetBuffer::doUpdate()
+void LLViewerTexLayerSetBuffer::doUpdate()
 {
-	const BOOL highest_lod = mTexLayerSet->isLocalTextureDataFinal();
+	LLViewerTexLayerSet* layer_set = getViewerTexLayerSet();
+	const BOOL highest_lod = layer_set->isLocalTextureDataFinal();
 	if (highest_lod)
 	{
 		mNeedsUpdate = FALSE;
@@ -573,25 +524,25 @@ void LLTexLayerSetBuffer::doUpdate()
 
 	// need to switch to using this layerset if this is the first update
 	// after getting the lowest LOD
-	mTexLayerSet->getAvatar()->updateMeshTextures();
+	layer_set->getAvatar()->updateMeshTextures();
 	
 	// Print out notification that we updated this texture.
 	if (gSavedSettings.getBOOL("DebugAvatarRezTime"))
 	{
-		const BOOL highest_lod = mTexLayerSet->isLocalTextureDataFinal();
+		const BOOL highest_lod = layer_set->isLocalTextureDataFinal();
 		const std::string lod_str = highest_lod ? "HighRes" : "LowRes";
 		LLSD args;
-		args["EXISTENCE"] = llformat("%d",(U32)mTexLayerSet->getAvatar()->debugGetExistenceTimeElapsedF32());
+		args["EXISTENCE"] = llformat("%d",(U32)layer_set->getAvatar()->debugGetExistenceTimeElapsedF32());
 		args["TIME"] = llformat("%d",(U32)mNeedsUpdateTimer.getElapsedTimeF32());
-		args["BODYREGION"] = mTexLayerSet->getBodyRegionName();
+		args["BODYREGION"] = layer_set->getBodyRegionName();
 		args["RESOLUTION"] = lod_str;
 		LLNotificationsUtil::add("AvatarRezSelfBakedTextureUpdateNotification",args);
-		LL_DEBUGS("Avatar") << self_av_string() << "Locally updating [ name: " << mTexLayerSet->getBodyRegionName() << " res:" << lod_str << " time:" << (U32)mNeedsUpdateTimer.getElapsedTimeF32() << " ]" << LL_ENDL;
+		LL_DEBUGS("Avatar") << self_av_string() << "Locally updating [ name: " << layer_set->getBodyRegionName() << " res:" << lod_str << " time:" << (U32)mNeedsUpdateTimer.getElapsedTimeF32() << " ]" << LL_ENDL;
 	}
 }
 
 // static
-void LLTexLayerSetBuffer::onTextureUploadComplete(const LLUUID& uuid,
+void LLViewerTexLayerSetBuffer::onTextureUploadComplete(const LLUUID& uuid,
 												  void* userdata,
 												  S32 result,
 												  LLExtStat ext_status) // StoreAssetData callback (not fixed)
@@ -603,7 +554,7 @@ void LLTexLayerSetBuffer::onTextureUploadComplete(const LLUUID& uuid,
 		(baked_upload_data->mAvatar == gAgentAvatarp) && // Sanity check: only the user's avatar should be uploading textures.
 		(baked_upload_data->mTexLayerSet->hasComposite()))
 	{
-		LLTexLayerSetBuffer* layerset_buffer = baked_upload_data->mTexLayerSet->getComposite();
+		LLViewerTexLayerSetBuffer* layerset_buffer = baked_upload_data->mTexLayerSet->getViewerComposite();
 		S32 failures = layerset_buffer->mUploadFailCount;
 		layerset_buffer->mUploadFailCount = 0;
 
@@ -627,7 +578,7 @@ void LLTexLayerSetBuffer::onTextureUploadComplete(const LLUUID& uuid,
 			if (result >= 0)
 			{
 				layerset_buffer->mUploadPending = FALSE; // Allows sending of AgentSetAppearance later
-				LLAvatarAppearanceDefines::ETextureIndex baked_te = gAgentAvatarp->getBakedTE(layerset_buffer->mTexLayerSet);
+				LLAvatarAppearanceDefines::ETextureIndex baked_te = gAgentAvatarp->getBakedTE(layerset_buffer->getViewerTexLayerSet());
 				// Update baked texture info with the new UUID
 				U64 now = LLFrameTimer::getTotalTime();		// Record starting time
 				llinfos << "Baked" << resolution << "texture upload for " << name << " took " << (S32)((now - baked_upload_data->mStartTime) / 1000) << " ms" << llendl;
@@ -673,7 +624,6 @@ void LLTexLayerSetBuffer::onTextureUploadComplete(const LLUUID& uuid,
 
 LLViewerTexLayerSet::LLViewerTexLayerSet(LLAvatarAppearance* const appearance) :
 	LLTexLayerSet(appearance),
-	mComposite( NULL ),
 	mUpdatesEnabled( FALSE )
 {
 }
@@ -704,24 +654,31 @@ void LLViewerTexLayerSet::requestUpdate()
 	if( mUpdatesEnabled )
 	{
 		createComposite();
-		mComposite->requestUpdate(); 
+		getViewerComposite()->requestUpdate(); 
 	}
 }
 
 void LLViewerTexLayerSet::requestUpload()
 {
 	createComposite();
-	mComposite->requestUpload();
+	getViewerComposite()->requestUpload();
 }
 
 void LLViewerTexLayerSet::cancelUpload()
 {
 	if(mComposite)
 	{
-		mComposite->cancelUpload();
+		getViewerComposite()->cancelUpload();
 	}
 }
 
+void LLViewerTexLayerSet::updateComposite()
+{
+	createComposite();
+	getViewerComposite()->requestUpdateImmediate();
+}
+
+// virtual
 void LLViewerTexLayerSet::createComposite()
 {
 	if(!mComposite)
@@ -733,15 +690,7 @@ void LLViewerTexLayerSet::createComposite()
 		{
 			llerrs << "composites should not be created for non-self avatars!" << llendl;
 		}
-		mComposite = new LLTexLayerSetBuffer( this, width, height );
-	}
-}
-
-void LLViewerTexLayerSet::destroyComposite()
-{
-	if( mComposite )
-	{
-		mComposite = NULL;
+		mComposite = new LLViewerTexLayerSetBuffer( this, width, height );
 	}
 }
 
@@ -751,26 +700,6 @@ void LLViewerTexLayerSet::setUpdatesEnabled( BOOL b )
 }
 
 
-void LLViewerTexLayerSet::updateComposite()
-{
-	createComposite();
-	mComposite->requestUpdateImmediate();
-}
-
-LLTexLayerSetBuffer* LLViewerTexLayerSet::getComposite()
-{
-	if (!mComposite)
-	{
-		createComposite();
-	}
-	return mComposite;
-}
-
-const LLTexLayerSetBuffer* LLViewerTexLayerSet::getComposite() const
-{
-	return mComposite;
-}
-
 void LLViewerTexLayerSet::gatherMorphMaskAlpha(U8 *data, S32 width, S32 height)
 {
 	memset(data, 255, width * height);
@@ -778,29 +707,44 @@ void LLViewerTexLayerSet::gatherMorphMaskAlpha(U8 *data, S32 width, S32 height)
 	for( layer_list_t::iterator iter = mLayerList.begin(); iter != mLayerList.end(); iter++ )
 	{
 		LLTexLayerInterface* layer = *iter;
-		layer->gatherAlphaMasks(data, mComposite->getOriginX(),mComposite->getOriginY(), width, height);
+		layer->gatherAlphaMasks(data, getViewerComposite()->getOriginX(),
+								getViewerComposite()->getOriginY(), width, height);
 	}
 	
 	// Set alpha back to that of our alpha masks.
-	renderAlphaMaskTextures(mComposite->getOriginX(), mComposite->getOriginY(), width, height, true);
+	renderAlphaMaskTextures(getViewerComposite()->getOriginX(), 
+							getViewerComposite()->getOriginY(), width, height, true);
 }
 
-
-LLVOAvatarSelf* LLViewerTexLayerSet::getAvatar() const
+LLVOAvatarSelf* LLViewerTexLayerSet::getAvatar()
 {
 	return dynamic_cast<LLVOAvatarSelf*> (mAvatarAppearance);
 }
 
+const LLVOAvatarSelf* LLViewerTexLayerSet::getAvatar() const
+{
+	return dynamic_cast<const LLVOAvatarSelf*> (mAvatarAppearance);
+}
+
+LLViewerTexLayerSetBuffer* LLViewerTexLayerSet::getViewerComposite()
+{
+	return dynamic_cast<LLViewerTexLayerSetBuffer*> (getComposite());
+}
+
+const LLViewerTexLayerSetBuffer* LLViewerTexLayerSet::getViewerComposite() const
+{
+	return dynamic_cast<const LLViewerTexLayerSetBuffer*> (getComposite());
+}
 
 
-const std::string LLTexLayerSetBuffer::dumpTextureInfo() const
+const std::string LLViewerTexLayerSetBuffer::dumpTextureInfo() const
 {
 	if (!isAgentAvatarValid()) return "";
 
 	const BOOL is_high_res = !mNeedsUpload;
 	const U32 num_low_res = mNumLowresUploads;
 	const U32 upload_time = (U32)mNeedsUploadTimer.getElapsedTimeF32();
-	const std::string local_texture_info = gAgentAvatarp->debugDumpLocalTextureDataInfo(mTexLayerSet);
+	const std::string local_texture_info = gAgentAvatarp->debugDumpLocalTextureDataInfo(getViewerTexLayerSet());
 
 	std::string status 				= "CREATING ";
 	if (!uploadNeeded()) status 	= "DONE     ";
diff --git a/indra/newview/llviewertexlayer.h b/indra/newview/llviewertexlayer.h
index 125bf82adff..6788214f3af 100644
--- a/indra/newview/llviewertexlayer.h
+++ b/indra/newview/llviewertexlayer.h
@@ -31,7 +31,7 @@
 #include "lltexlayer.h"
 
 class LLVOAvatarSelf;
-class LLTexLayerSetBuffer;
+class LLViewerTexLayerSetBuffer;
 
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 // LLViewerTexLayerSet
@@ -41,46 +41,43 @@ class LLTexLayerSetBuffer;
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 class LLViewerTexLayerSet : public LLTexLayerSet
 {
-	friend class LLTexLayerSetBuffer;
 public:
 	LLViewerTexLayerSet(LLAvatarAppearance* const appearance);
 	virtual ~LLViewerTexLayerSet();
 
-	LLTexLayerSetBuffer*		getComposite();
-	const LLTexLayerSetBuffer* 	getComposite() const; // Do not create one if it doesn't exist.
 	virtual void				requestUpdate();
 	void						requestUpload();
 	void						cancelUpload();
-	void						updateComposite();
 	BOOL						isLocalTextureDataAvailable() const;
 	BOOL						isLocalTextureDataFinal() const;
-	void						createComposite();
-	void						destroyComposite();
+	void						updateComposite();
+	/*virtual*/void				createComposite();
 	void						setUpdatesEnabled(BOOL b);
 	BOOL						getUpdatesEnabled()	const 	{ return mUpdatesEnabled; }
 	void						gatherMorphMaskAlpha(U8 *data, S32 width, S32 height);
 
-	LLVOAvatarSelf*				getAvatar()	const;
-	BOOL						hasComposite() const 		{ return (mComposite.notNull()); }
+	LLVOAvatarSelf*				getAvatar();
+	const LLVOAvatarSelf*		getAvatar()	const;
+	LLViewerTexLayerSetBuffer*	getViewerComposite();
+	const LLViewerTexLayerSetBuffer*	getViewerComposite() const;
 
 private:
-	LLPointer<LLTexLayerSetBuffer>	mComposite;
 	BOOL						mUpdatesEnabled;
 
 };
 
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-// LLTexLayerSetBuffer
+// LLViewerTexLayerSetBuffer
 //
-// The composite image that a LLViewerTexLayerSet writes to.  Each LLTexLayerSet has one.
+// The composite image that a LLViewerTexLayerSet writes to.  Each LLViewerTexLayerSet has one.
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-class LLTexLayerSetBuffer : public LLViewerDynamicTexture
+class LLViewerTexLayerSetBuffer : public LLTexLayerSetBuffer, public LLViewerDynamicTexture
 {
-	LOG_CLASS(LLTexLayerSetBuffer);
+	LOG_CLASS(LLViewerTexLayerSetBuffer);
 
 public:
-	LLTexLayerSetBuffer(LLViewerTexLayerSet* const owner, S32 width, S32 height);
-	virtual ~LLTexLayerSetBuffer();
+	LLViewerTexLayerSetBuffer(LLTexLayerSet* const owner, S32 width, S32 height);
+	virtual ~LLViewerTexLayerSetBuffer();
 
 public:
 	/*virtual*/ S8          getType() const;
@@ -89,23 +86,34 @@ class LLTexLayerSetBuffer : public LLViewerDynamicTexture
 	const std::string		dumpTextureInfo() const;
 	virtual void 			restoreGLTexture();
 	virtual void 			destroyGLTexture();
-protected:
-	void					pushProjection() const;
-	void					popProjection() const;
 private:
-	LLViewerTexLayerSet* const	mTexLayerSet;
+	LLViewerTexLayerSet*	getViewerTexLayerSet() 
+		{ return dynamic_cast<LLViewerTexLayerSet*> (mTexLayerSet); }
+	const LLViewerTexLayerSet*	getViewerTexLayerSet() const
+		{ return dynamic_cast<const LLViewerTexLayerSet*> (mTexLayerSet); }
 	static S32				sGLByteCount;
 
 	//--------------------------------------------------------------------
-	// Render
+	// Tex Layer Render
+	//--------------------------------------------------------------------
+	virtual void			preRenderTexLayerSet();
+	virtual void			midRenderTexLayerSet(BOOL success);
+	virtual void			postRenderTexLayerSet(BOOL success);
+	virtual S32				getCompositeOriginX() const { return getOriginX(); }
+	virtual S32				getCompositeOriginY() const { return getOriginY(); }
+	virtual S32				getCompositeWidth() const { return getFullWidth(); }
+	virtual S32				getCompositeHeight() const { return getFullHeight(); }
+
+	//--------------------------------------------------------------------
+	// Dynamic Texture Interface
 	//--------------------------------------------------------------------
 public:
 	/*virtual*/ BOOL		needsRender();
 protected:
-	BOOL					render(S32 x, S32 y, S32 width, S32 height);
-	virtual void			preRender(BOOL clear_depth);
-	virtual void			postRender(BOOL success);
-	virtual BOOL			render();	
+	// Pass these along for tex layer rendering.
+	virtual void			preRender(BOOL clear_depth) { preRenderTexLayerSet(); }
+	virtual void			postRender(BOOL success) { postRenderTexLayerSet(success); }
+	virtual BOOL			render() { return renderTexLayerSet(); }
 	
 	//--------------------------------------------------------------------
 	// Uploads
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 56ded53b5d1..4e17884e0e4 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -6722,7 +6722,7 @@ void LLVOAvatar::updateMeshTextures()
 			// use the last-known good baked texture until it finish the first
 			// render of the new layerset.
 			const BOOL layerset_invalid = mBakedTextureDatas[i].mTexLayerSet 
-										  && ( !mBakedTextureDatas[i].mTexLayerSet->getComposite()->isInitialized()
+										  && ( !mBakedTextureDatas[i].mTexLayerSet->getViewerComposite()->isInitialized()
 										  || !mBakedTextureDatas[i].mTexLayerSet->isLocalTextureDataAvailable() );
 			use_lkg_baked_layer[i] = (!is_layer_baked[i] 
 									  && (mBakedTextureDatas[i].mLastTextureIndex != IMG_DEFAULT_AVATAR) 
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index ec37e6f301a..e836a5e4a8f 100755
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -1519,7 +1519,7 @@ BOOL LLVOAvatarSelf::isBakedTextureFinal(const LLAvatarAppearanceDefines::EBaked
 {
 	const LLViewerTexLayerSet *layerset = mBakedTextureDatas[index].mTexLayerSet;
 	if (!layerset) return FALSE;
-	const LLTexLayerSetBuffer *layerset_buffer = layerset->getComposite();
+	const LLViewerTexLayerSetBuffer *layerset_buffer = layerset->getViewerComposite();
 	if (!layerset_buffer) return FALSE;
 	return !layerset_buffer->uploadNeeded();
 }
@@ -1614,7 +1614,7 @@ bool LLVOAvatarSelf::hasPendingBakedUploads() const
 	for (U32 i = 0; i < mBakedTextureDatas.size(); i++)
 	{
 		LLViewerTexLayerSet* layerset = mBakedTextureDatas[i].mTexLayerSet;
-		if (layerset && layerset->getComposite() && layerset->getComposite()->uploadPending())
+		if (layerset && layerset->getViewerComposite() && layerset->getViewerComposite()->uploadPending())
 		{
 			return true;
 		}
@@ -2517,7 +2517,7 @@ void LLVOAvatarSelf::outputRezDiagnostics() const
 		const LLAvatarAppearanceDefines::EBakedTextureIndex baked_index = baked_iter->first;
 		const LLViewerTexLayerSet *layerset = debugGetLayerSet(baked_index);
 		if (!layerset) continue;
-		const LLTexLayerSetBuffer *layerset_buffer = layerset->getComposite();
+		const LLViewerTexLayerSetBuffer *layerset_buffer = layerset->getViewerComposite();
 		if (!layerset_buffer) continue;
 		LL_DEBUGS("Avatar") << layerset_buffer->dumpTextureInfo() << llendl;
 	}
-- 
GitLab


From 1f6e20c5bbfd4495e6493facd2363fd133fe7fcd Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Tue, 4 Sep 2012 17:43:08 +0000
Subject: [PATCH 052/436] Split gl-specific LLViewerTexture implementation into
 llrender/LLGLViewerTexture

---
 indra/llappearance/lllocaltextureobject.cpp |   8 +-
 indra/llappearance/lllocaltextureobject.h   |  10 +-
 indra/llappearance/lltexlayer.cpp           |  24 +-
 indra/llappearance/lltexlayer.h             |   6 +-
 indra/llappearance/lltexlayerparams.cpp     |   2 +-
 indra/llappearance/lltexlayerparams.h       |   4 +-
 indra/llappearance/lltexturemanagerbridge.h |   8 +-
 indra/llrender/CMakeLists.txt               |   2 +
 indra/llrender/llgltexture.cpp              | 396 ++++++++++++++++++++
 indra/llrender/llgltexture.h                | 196 ++++++++++
 indra/llrender/lltexture.h                  |  53 +--
 indra/newview/llcolorswatch.cpp             |   2 +-
 indra/newview/lldrawpoolbump.cpp            |   4 +-
 indra/newview/lldrawpoolterrain.cpp         |   8 +-
 indra/newview/lldrawpoolwater.cpp           |   4 +-
 indra/newview/lldynamictexture.cpp          |   2 +-
 indra/newview/llface.cpp                    |   4 +-
 indra/newview/llfloatermodelpreview.cpp     |   2 +-
 indra/newview/llfloaterreporter.cpp         |   4 +-
 indra/newview/llfloaterscriptdebug.cpp      |   2 +-
 indra/newview/lllocalbitmaps.cpp            |   2 +-
 indra/newview/llpreviewtexture.cpp          |   6 +-
 indra/newview/llselectmgr.cpp               |   6 +-
 indra/newview/llspatialpartition.cpp        |   4 +-
 indra/newview/lltexturectrl.cpp             |   6 +-
 indra/newview/lltextureview.cpp             |   2 +-
 indra/newview/llviewerobject.cpp            |  10 +-
 indra/newview/llviewerstats.cpp             |   2 +-
 indra/newview/llviewertexture.cpp           | 390 ++-----------------
 indra/newview/llviewertexture.h             | 103 +----
 indra/newview/llviewertexturelist.cpp       |  20 +-
 indra/newview/llviewertexturelist.h         |  14 +-
 indra/newview/llviewerwearable.cpp          |   2 +-
 indra/newview/llviewerwindow.cpp            |   4 +-
 indra/newview/llvlcomposition.cpp           |   6 +-
 indra/newview/llvoavatar.cpp                |   6 +-
 indra/newview/llvoavatar.h                  |   4 +-
 indra/newview/llvoavatarself.h              |   4 +-
 indra/newview/llvograss.cpp                 |   2 +-
 indra/newview/llvoicevisualizer.cpp         |   2 +-
 indra/newview/llvosky.cpp                   |  10 +-
 indra/newview/llvotree.cpp                  |   2 +-
 indra/newview/llvovolume.cpp                |  10 +-
 indra/newview/llworldmap.cpp                |   6 +-
 indra/newview/llworldmipmap.cpp             |  16 +-
 indra/newview/tests/llworldmap_test.cpp     |   6 +-
 indra/newview/tests/llworldmipmap_test.cpp  |   4 +-
 47 files changed, 759 insertions(+), 631 deletions(-)
 create mode 100644 indra/llrender/llgltexture.cpp
 create mode 100644 indra/llrender/llgltexture.h

diff --git a/indra/llappearance/lllocaltextureobject.cpp b/indra/llappearance/lllocaltextureobject.cpp
index 0e77444f491..7e36a067974 100644
--- a/indra/llappearance/lllocaltextureobject.cpp
+++ b/indra/llappearance/lllocaltextureobject.cpp
@@ -30,7 +30,7 @@
 #include "llimage.h"
 #include "llrender.h"
 #include "lltexlayer.h"
-#include "lltexture.h"
+#include "llgltexture.h"
 #include "lluuid.h"
 #include "llwearable.h"
 
@@ -42,7 +42,7 @@ LLLocalTextureObject::LLLocalTextureObject() :
 	mImage = NULL;
 }
 
-LLLocalTextureObject::LLLocalTextureObject(LLTexture* image, const LLUUID& id) :
+LLLocalTextureObject::LLLocalTextureObject(LLGLTexture* image, const LLUUID& id) :
 	mIsBakedReady(FALSE),
 	mDiscard(MAX_DISCARD_LEVEL+1)
 {
@@ -78,7 +78,7 @@ LLLocalTextureObject::~LLLocalTextureObject()
 {
 }
 
-LLTexture* LLLocalTextureObject::getImage() const
+LLGLTexture* LLLocalTextureObject::getImage() const
 {
 	return mImage;
 }
@@ -127,7 +127,7 @@ BOOL LLLocalTextureObject::getBakedReady() const
 	return mIsBakedReady;
 }
 
-void LLLocalTextureObject::setImage(LLTexture* new_image)
+void LLLocalTextureObject::setImage(LLGLTexture* new_image)
 {
 	mImage = new_image;
 }
diff --git a/indra/llappearance/lllocaltextureobject.h b/indra/llappearance/lllocaltextureobject.h
index 8f868eb4127..6f14448cca4 100644
--- a/indra/llappearance/lllocaltextureobject.h
+++ b/indra/llappearance/lllocaltextureobject.h
@@ -30,7 +30,7 @@
 #include <boost/shared_ptr.hpp>
 
 #include "llpointer.h"
-#include "lltexture.h"
+#include "llgltexture.h"
 
 class LLUUID;
 class LLTexLayer;
@@ -44,11 +44,11 @@ class LLLocalTextureObject
 {
 public:
 	LLLocalTextureObject();
-	LLLocalTextureObject(LLTexture* image, const LLUUID& id);
+	LLLocalTextureObject(LLGLTexture* image, const LLUUID& id);
 	LLLocalTextureObject(const LLLocalTextureObject& lto);
 	~LLLocalTextureObject();
 
-	LLTexture* getImage() const;
+	LLGLTexture* getImage() const;
 	LLTexLayer* getTexLayer(U32 index) const;
 	LLTexLayer* getTexLayer(const std::string &name);
 	U32 		getNumTexLayers() const;
@@ -56,7 +56,7 @@ class LLLocalTextureObject
 	S32			getDiscard() const;
 	BOOL		getBakedReady() const;
 
-	void setImage(LLTexture* new_image);
+	void setImage(LLGLTexture* new_image);
 	BOOL setTexLayer(LLTexLayer *new_tex_layer, U32 index);
 	BOOL addTexLayer(LLTexLayer *new_tex_layer, LLWearable *wearable);
 	BOOL addTexLayer(LLTexLayerTemplate *new_tex_layer, LLWearable *wearable);
@@ -70,7 +70,7 @@ class LLLocalTextureObject
 
 private:
 
-	LLPointer<LLTexture>			mImage;
+	LLPointer<LLGLTexture>			mImage;
 	// NOTE: LLLocalTextureObject should be the exclusive owner of mTexEntry and mTexLayer
 	// using shared pointers here only for smart assignment & cleanup
 	// do NOT create new shared pointers to these objects, or keep pointers to them around
diff --git a/indra/llappearance/lltexlayer.cpp b/indra/llappearance/lltexlayer.cpp
index 0d3219c4e06..a741a83af73 100644
--- a/indra/llappearance/lltexlayer.cpp
+++ b/indra/llappearance/lltexlayer.cpp
@@ -504,7 +504,7 @@ void LLTexLayerSet::renderAlphaMaskTextures(S32 x, S32 y, S32 width, S32 height,
 	{
 		gGL.flush();
 		{
-			LLTexture* tex = LLTexLayerStaticImageList::getInstance()->getTexture(info->mStaticAlphaFileName, TRUE);
+			LLGLTexture* tex = LLTexLayerStaticImageList::getInstance()->getTexture(info->mStaticAlphaFileName, TRUE);
 			if( tex )
 			{
 				LLGLSUIDefault gls_ui;
@@ -1087,7 +1087,7 @@ BOOL LLTexLayer::render(S32 x, S32 y, S32 width, S32 height)
 	if( (getInfo()->mLocalTexture != -1) && !getInfo()->mUseLocalTextureAlphaOnly )
 	{
 		{
-			LLTexture* tex = NULL;
+			LLGLTexture* tex = NULL;
 			if (mLocalTextureObject && mLocalTextureObject->getImage())
 			{
 				tex = mLocalTextureObject->getImage();
@@ -1137,7 +1137,7 @@ BOOL LLTexLayer::render(S32 x, S32 y, S32 width, S32 height)
 	if( !getInfo()->mStaticImageFileName.empty() )
 	{
 		{
-			LLTexture* tex = LLTexLayerStaticImageList::getInstance()->getTexture(getInfo()->mStaticImageFileName, getInfo()->mStaticImageIsMask);
+			LLGLTexture* tex = LLTexLayerStaticImageList::getInstance()->getTexture(getInfo()->mStaticImageFileName, getInfo()->mStaticImageIsMask);
 			if( tex )
 			{
 				gGL.getTexUnit(0)->bind(tex, TRUE);
@@ -1259,7 +1259,7 @@ BOOL LLTexLayer::blendAlphaTexture(S32 x, S32 y, S32 width, S32 height)
 
 	if( !getInfo()->mStaticImageFileName.empty() )
 	{
-		LLTexture* tex = LLTexLayerStaticImageList::getInstance()->getTexture( getInfo()->mStaticImageFileName, getInfo()->mStaticImageIsMask );
+		LLGLTexture* tex = LLTexLayerStaticImageList::getInstance()->getTexture( getInfo()->mStaticImageFileName, getInfo()->mStaticImageIsMask );
 		if( tex )
 		{
 			LLGLSNoAlphaTest gls_no_alpha_test;
@@ -1284,7 +1284,7 @@ BOOL LLTexLayer::blendAlphaTexture(S32 x, S32 y, S32 width, S32 height)
 	{
 		if (getInfo()->mLocalTexture >=0 && getInfo()->mLocalTexture < TEX_NUM_INDICES)
 		{
-			LLTexture* tex = mLocalTextureObject->getImage();
+			LLGLTexture* tex = mLocalTextureObject->getImage();
 			if (tex)
 			{
 				LLGLSNoAlphaTest gls_no_alpha_test;
@@ -1358,7 +1358,7 @@ BOOL LLTexLayer::renderMorphMasks(S32 x, S32 y, S32 width, S32 height, const LLC
 	// Accumulate the alpha component of the texture
 	if( getInfo()->mLocalTexture != -1 )
 	{
-		LLTexture* tex = mLocalTextureObject->getImage();
+		LLGLTexture* tex = mLocalTextureObject->getImage();
 		if( tex && (tex->getComponents() == 4) )
 		{
 			LLGLSNoAlphaTest gls_no_alpha_test;
@@ -1376,7 +1376,7 @@ BOOL LLTexLayer::renderMorphMasks(S32 x, S32 y, S32 width, S32 height, const LLC
 
 	if( !getInfo()->mStaticImageFileName.empty() )
 	{
-		LLTexture* tex = LLTexLayerStaticImageList::getInstance()->getTexture(getInfo()->mStaticImageFileName, getInfo()->mStaticImageIsMask);
+		LLGLTexture* tex = LLTexLayerStaticImageList::getInstance()->getTexture(getInfo()->mStaticImageFileName, getInfo()->mStaticImageIsMask);
 		if( tex )
 		{
 			if(	(tex->getComponents() == 4) ||
@@ -1493,7 +1493,7 @@ LLUUID LLTexLayer::getUUID() const
 	LLUUID uuid;
 	if( getInfo()->mLocalTexture != -1 )
 	{
-			LLTexture* tex = mLocalTextureObject->getImage();
+			LLGLTexture* tex = mLocalTextureObject->getImage();
 			if (tex)
 			{
 				uuid = mLocalTextureObject->getID();
@@ -1501,7 +1501,7 @@ LLUUID LLTexLayer::getUUID() const
 	}
 	if( !getInfo()->mStaticImageFileName.empty() )
 	{
-			LLTexture* tex = LLTexLayerStaticImageList::getInstance()->getTexture(getInfo()->mStaticImageFileName, getInfo()->mStaticImageIsMask);
+			LLGLTexture* tex = LLTexLayerStaticImageList::getInstance()->getTexture(getInfo()->mStaticImageFileName, getInfo()->mStaticImageIsMask);
 			if( tex )
 			{
 				uuid = tex->getID();
@@ -1821,9 +1821,9 @@ LLImageTGA* LLTexLayerStaticImageList::getImageTGA(const std::string& file_name)
 
 // Returns a GL Image (without a backing ImageRaw) that contains the decoded data from a tga file named file_name.
 // Caches the result to speed identical subsequent requests.
-LLTexture* LLTexLayerStaticImageList::getTexture(const std::string& file_name, BOOL is_mask)
+LLGLTexture* LLTexLayerStaticImageList::getTexture(const std::string& file_name, BOOL is_mask)
 {
-	LLPointer<LLTexture> tex;
+	LLPointer<LLGLTexture> tex;
 	const char *namekey = mImageNames.addString(file_name);
 
 	texture_map_t::const_iterator iter = mStaticImageList.find(namekey);
@@ -1844,7 +1844,7 @@ LLTexture* LLTexLayerStaticImageList::getTexture(const std::string& file_name, B
 				// that once an image is a mask it's always a mask.
 				tex->setExplicitFormat( GL_ALPHA8, GL_ALPHA );
 			}
-			tex->createGLTexture(0, image_raw, 0, TRUE, LLTexture::LOCAL);
+			tex->createGLTexture(0, image_raw, 0, TRUE, LLGLTexture::LOCAL);
 
 			gGL.getTexUnit(0)->bind(tex);
 			tex->setAddressMode(LLTexUnit::TAM_CLAMP);
diff --git a/indra/llappearance/lltexlayer.h b/indra/llappearance/lltexlayer.h
index 4f2ee5b0450..e9e17647638 100644
--- a/indra/llappearance/lltexlayer.h
+++ b/indra/llappearance/lltexlayer.h
@@ -28,7 +28,7 @@
 #define LL_LLTEXLAYER_H
 
 #include <deque>
-#include "lltexture.h"
+#include "llgltexture.h"
 #include "llframetimer.h"
 #include "llavatarappearancedefines.h"
 #include "lltexlayerparams.h"
@@ -287,7 +287,7 @@ class LLTexLayerStaticImageList : public LLSingleton<LLTexLayerStaticImageList>
 public:
 	LLTexLayerStaticImageList();
 	~LLTexLayerStaticImageList();
-	LLTexture*			getTexture(const std::string& file_name, BOOL is_mask);
+	LLGLTexture*		getTexture(const std::string& file_name, BOOL is_mask);
 	LLImageTGA*			getImageTGA(const std::string& file_name);
 	void				deleteCachedImages();
 	void				dumpByteCount() const;
@@ -295,7 +295,7 @@ class LLTexLayerStaticImageList : public LLSingleton<LLTexLayerStaticImageList>
 	BOOL				loadImageRaw(const std::string& file_name, LLImageRaw* image_raw);
 private:
 	LLStringTable 		mImageNames;
-	typedef std::map<const char*, LLPointer<LLTexture> > texture_map_t;
+	typedef std::map<const char*, LLPointer<LLGLTexture> > texture_map_t;
 	texture_map_t 		mStaticImageList;
 	typedef std::map<const char*, LLPointer<LLImageTGA> > image_tga_map_t;
 	image_tga_map_t 	mStaticImageListTGA;
diff --git a/indra/llappearance/lltexlayerparams.cpp b/indra/llappearance/lltexlayerparams.cpp
index 4f0456f315b..06001c6b15f 100644
--- a/indra/llappearance/lltexlayerparams.cpp
+++ b/indra/llappearance/lltexlayerparams.cpp
@@ -97,7 +97,7 @@ void LLTexLayerParamAlpha::getCacheByteCount(S32* gl_bytes)
 		 iter != sInstances.end(); iter++)
 	{
 		LLTexLayerParamAlpha* instance = *iter;
-		LLTexture* tex = instance->mCachedProcessedTexture;
+		LLGLTexture* tex = instance->mCachedProcessedTexture;
 		if (tex)
 		{
 			S32 bytes = (S32)tex->getWidth() * tex->getHeight() * tex->getComponents();
diff --git a/indra/llappearance/lltexlayerparams.h b/indra/llappearance/lltexlayerparams.h
index dbffd157515..1974a4f7acb 100644
--- a/indra/llappearance/lltexlayerparams.h
+++ b/indra/llappearance/lltexlayerparams.h
@@ -36,7 +36,7 @@ class LLImageRaw;
 class LLImageTGA;
 class LLTexLayer;
 class LLTexLayerInterface;
-class LLTexture;
+class LLGLTexture;
 class LLWearable;
 
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -91,7 +91,7 @@ class LLTexLayerParamAlpha : public LLTexLayerParam
 	BOOL					getMultiplyBlend() const;
 
 private:
-	LLPointer<LLTexture>	mCachedProcessedTexture;
+	LLPointer<LLGLTexture>	mCachedProcessedTexture;
 	LLPointer<LLImageTGA>	mStaticImageTGA;
 	LLPointer<LLImageRaw>	mStaticImageRaw;
 	BOOL					mNeedsCreateTexture;
diff --git a/indra/llappearance/lltexturemanagerbridge.h b/indra/llappearance/lltexturemanagerbridge.h
index 20f5d0fd3c8..99c01755d4d 100644
--- a/indra/llappearance/lltexturemanagerbridge.h
+++ b/indra/llappearance/lltexturemanagerbridge.h
@@ -28,15 +28,15 @@
 #define LL_TEXTUREMANAGERBRIDGE_H
 
 #include "llpointer.h"
-#include "lltexture.h"
+#include "llgltexture.h"
 
 // Abstract bridge interface
 class LLTextureManagerBridge
 {
 public:
-	virtual LLPointer<LLTexture> getLocalTexture(BOOL usemipmaps = TRUE, BOOL generate_gl_tex = TRUE) = 0;
-	virtual LLPointer<LLTexture> getLocalTexture(const U32 width, const U32 height, const U8 components, BOOL usemipmaps, BOOL generate_gl_tex = TRUE) = 0;
-	virtual LLTexture* getFetchedTexture(const LLUUID &image_id) = 0;
+	virtual LLPointer<LLGLTexture> getLocalTexture(BOOL usemipmaps = TRUE, BOOL generate_gl_tex = TRUE) = 0;
+	virtual LLPointer<LLGLTexture> getLocalTexture(const U32 width, const U32 height, const U8 components, BOOL usemipmaps, BOOL generate_gl_tex = TRUE) = 0;
+	virtual LLGLTexture* getFetchedTexture(const LLUUID &image_id) = 0;
 };
 
 extern LLTextureManagerBridge* gTextureManagerBridgep;
diff --git a/indra/llrender/CMakeLists.txt b/indra/llrender/CMakeLists.txt
index 516af933165..4609401ccf0 100644
--- a/indra/llrender/CMakeLists.txt
+++ b/indra/llrender/CMakeLists.txt
@@ -34,6 +34,7 @@ set(llrender_SOURCE_FILES
     llfontregistry.cpp
     llgldbg.cpp
     llglslshader.cpp
+    llgltexture.cpp
     llimagegl.cpp
     llpostprocess.cpp
     llrendernavprim.cpp
@@ -56,6 +57,7 @@ set(llrender_HEADER_FILES
     llglheaders.h
     llglslshader.h
     llglstates.h
+    llgltexture.h
     llgltypes.h
     llimagegl.h
     llpostprocess.h
diff --git a/indra/llrender/llgltexture.cpp b/indra/llrender/llgltexture.cpp
new file mode 100644
index 00000000000..d06ed5e57bf
--- /dev/null
+++ b/indra/llrender/llgltexture.cpp
@@ -0,0 +1,396 @@
+/** 
+ * @file llgltexture.cpp
+ * @brief Opengl texture implementation
+ *
+ * $LicenseInfo:firstyear=2000&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+#include "linden_common.h"
+#include "llgltexture.h"
+
+
+// static
+S32 LLGLTexture::getTotalNumOfCategories() 
+{
+	return MAX_GL_IMAGE_CATEGORY - (BOOST_HIGH - BOOST_SCULPTED) + 2 ;
+}
+
+// static
+//index starts from zero.
+S32 LLGLTexture::getIndexFromCategory(S32 category) 
+{
+	return (category < BOOST_HIGH) ? category : category - (BOOST_HIGH - BOOST_SCULPTED) + 1 ;
+}
+
+//static 
+S32 LLGLTexture::getCategoryFromIndex(S32 index)
+{
+	return (index < BOOST_HIGH) ? index : index + (BOOST_HIGH - BOOST_SCULPTED) - 1 ;
+}
+
+LLGLTexture::LLGLTexture(BOOL usemipmaps)
+{
+	init();
+	mUseMipMaps = usemipmaps;
+}
+
+LLGLTexture::LLGLTexture(const U32 width, const U32 height, const U8 components, BOOL usemipmaps)
+{
+	init();
+	mFullWidth = width ;
+	mFullHeight = height ;
+	mUseMipMaps = usemipmaps;
+	mComponents = components ;
+	setTexelsPerImage();
+}
+
+LLGLTexture::LLGLTexture(const LLImageRaw* raw, BOOL usemipmaps)
+{
+	init();
+	mUseMipMaps = usemipmaps ;
+	// Create an empty image of the specified size and width
+	mGLTexturep = new LLImageGL(raw, usemipmaps) ;
+}
+
+LLGLTexture::~LLGLTexture()
+{
+	cleanup();
+}
+
+void LLGLTexture::init()
+{
+	mBoostLevel = LLGLTexture::BOOST_NONE;
+
+	mFullWidth = 0;
+	mFullHeight = 0;
+	mTexelsPerImage = 0 ;
+	mUseMipMaps = FALSE ;
+	mComponents = 0 ;
+
+	mTextureState = NO_DELETE ;
+	mDontDiscard = FALSE;
+	mNeedsGLTexture = FALSE ;
+}
+
+void LLGLTexture::cleanup()
+{
+	if(mGLTexturep)
+	{
+		mGLTexturep->cleanup();
+	}
+}
+
+// virtual
+void LLGLTexture::dump()
+{
+	if(mGLTexturep)
+	{
+		mGLTexturep->dump();
+	}
+}
+
+void LLGLTexture::setBoostLevel(S32 level)
+{
+	if(mBoostLevel != level)
+	{
+		mBoostLevel = level ;
+		if(mBoostLevel != LLGLTexture::BOOST_NONE)
+		{
+			setNoDelete() ;		
+		}
+	}
+}
+
+void LLGLTexture::forceActive()
+{
+	mTextureState = ACTIVE ; 
+}
+
+void LLGLTexture::setActive() 
+{ 
+	if(mTextureState != NO_DELETE)
+	{
+		mTextureState = ACTIVE ; 
+	}
+}
+
+//set the texture to stay in memory
+void LLGLTexture::setNoDelete() 
+{ 
+	mTextureState = NO_DELETE ;
+}
+
+void LLGLTexture::generateGLTexture() 
+{	
+	if(mGLTexturep.isNull())
+	{
+		mGLTexturep = new LLImageGL(mFullWidth, mFullHeight, mComponents, mUseMipMaps) ;
+	}
+}
+
+LLImageGL* LLGLTexture::getGLTexture() const
+{
+	llassert(mGLTexturep.notNull()) ;
+
+	return mGLTexturep ;
+}
+
+BOOL LLGLTexture::createGLTexture() 
+{
+	if(mGLTexturep.isNull())
+	{
+		generateGLTexture() ;
+	}
+
+	return mGLTexturep->createGLTexture() ;
+}
+
+BOOL LLGLTexture::createGLTexture(S32 discard_level, const LLImageRaw* imageraw, S32 usename, BOOL to_create, S32 category)
+{
+	llassert(mGLTexturep.notNull()) ;	
+
+	BOOL ret = mGLTexturep->createGLTexture(discard_level, imageraw, usename, to_create, category) ;
+
+	if(ret)
+	{
+		mFullWidth = mGLTexturep->getCurrentWidth() ;
+		mFullHeight = mGLTexturep->getCurrentHeight() ; 
+		mComponents = mGLTexturep->getComponents() ;	
+		setTexelsPerImage();
+	}
+
+	return ret ;
+}
+
+void LLGLTexture::setExplicitFormat(LLGLint internal_format, LLGLenum primary_format, LLGLenum type_format, BOOL swap_bytes)
+{
+	llassert(mGLTexturep.notNull()) ;
+	
+	mGLTexturep->setExplicitFormat(internal_format, primary_format, type_format, swap_bytes) ;
+}
+void LLGLTexture::setAddressMode(LLTexUnit::eTextureAddressMode mode)
+{
+	llassert(mGLTexturep.notNull()) ;
+	mGLTexturep->setAddressMode(mode) ;
+}
+void LLGLTexture::setFilteringOption(LLTexUnit::eTextureFilterOptions option)
+{
+	llassert(mGLTexturep.notNull()) ;
+	mGLTexturep->setFilteringOption(option) ;
+}
+
+//virtual
+S32	LLGLTexture::getWidth(S32 discard_level) const
+{
+	llassert(mGLTexturep.notNull()) ;
+	return mGLTexturep->getWidth(discard_level) ;
+}
+
+//virtual
+S32	LLGLTexture::getHeight(S32 discard_level) const
+{
+	llassert(mGLTexturep.notNull()) ;
+	return mGLTexturep->getHeight(discard_level) ;
+}
+
+S32 LLGLTexture::getMaxDiscardLevel() const
+{
+	llassert(mGLTexturep.notNull()) ;
+	return mGLTexturep->getMaxDiscardLevel() ;
+}
+S32 LLGLTexture::getDiscardLevel() const
+{
+	llassert(mGLTexturep.notNull()) ;
+	return mGLTexturep->getDiscardLevel() ;
+}
+S8  LLGLTexture::getComponents() const 
+{ 
+	llassert(mGLTexturep.notNull()) ;
+	
+	return mGLTexturep->getComponents() ;
+}
+
+LLGLuint LLGLTexture::getTexName() const 
+{ 
+	llassert(mGLTexturep.notNull()) ;
+
+	return mGLTexturep->getTexName() ; 
+}
+
+BOOL LLGLTexture::hasGLTexture() const 
+{
+	if(mGLTexturep.notNull())
+	{
+		return mGLTexturep->getHasGLTexture() ;
+	}
+	return FALSE ;
+}
+
+BOOL LLGLTexture::getBoundRecently() const
+{
+	if(mGLTexturep.notNull())
+	{
+		return mGLTexturep->getBoundRecently() ;
+	}
+	return FALSE ;
+}
+
+LLTexUnit::eTextureType LLGLTexture::getTarget(void) const
+{
+	llassert(mGLTexturep.notNull()) ;
+	return mGLTexturep->getTarget() ;
+}
+
+BOOL LLGLTexture::setSubImage(const LLImageRaw* imageraw, S32 x_pos, S32 y_pos, S32 width, S32 height)
+{
+	llassert(mGLTexturep.notNull()) ;
+
+	return mGLTexturep->setSubImage(imageraw, x_pos, y_pos, width, height) ;
+}
+
+BOOL LLGLTexture::setSubImage(const U8* datap, S32 data_width, S32 data_height, S32 x_pos, S32 y_pos, S32 width, S32 height)
+{
+	llassert(mGLTexturep.notNull()) ;
+
+	return mGLTexturep->setSubImage(datap, data_width, data_height, x_pos, y_pos, width, height) ;
+}
+
+void LLGLTexture::setGLTextureCreated (bool initialized)
+{
+	llassert(mGLTexturep.notNull()) ;
+
+	mGLTexturep->setGLTextureCreated (initialized) ;
+}
+
+void  LLGLTexture::setCategory(S32 category) 
+{
+	llassert(mGLTexturep.notNull()) ;
+
+	mGLTexturep->setCategory(category) ;
+}
+
+LLTexUnit::eTextureAddressMode LLGLTexture::getAddressMode(void) const
+{
+	llassert(mGLTexturep.notNull()) ;
+
+	return mGLTexturep->getAddressMode() ;
+}
+
+S32 LLGLTexture::getTextureMemory() const
+{
+	llassert(mGLTexturep.notNull()) ;
+
+	return mGLTexturep->mTextureMemory ;
+}
+
+LLGLenum LLGLTexture::getPrimaryFormat() const
+{
+	llassert(mGLTexturep.notNull()) ;
+
+	return mGLTexturep->getPrimaryFormat() ;
+}
+
+BOOL LLGLTexture::getIsAlphaMask() const
+{
+	llassert(mGLTexturep.notNull()) ;
+
+	return mGLTexturep->getIsAlphaMask() ;
+}
+
+BOOL LLGLTexture::getMask(const LLVector2 &tc)
+{
+	llassert(mGLTexturep.notNull()) ;
+
+	return mGLTexturep->getMask(tc) ;
+}
+
+F32 LLGLTexture::getTimePassedSinceLastBound()
+{
+	llassert(mGLTexturep.notNull()) ;
+
+	return mGLTexturep->getTimePassedSinceLastBound() ;
+}
+BOOL LLGLTexture::getMissed() const 
+{
+	llassert(mGLTexturep.notNull()) ;
+
+	return mGLTexturep->getMissed() ;
+}
+
+BOOL LLGLTexture::isJustBound() const
+{
+	llassert(mGLTexturep.notNull()) ;
+
+	return mGLTexturep->isJustBound() ;
+}
+
+void LLGLTexture::forceUpdateBindStats(void) const
+{
+	llassert(mGLTexturep.notNull()) ;
+
+	return mGLTexturep->forceUpdateBindStats() ;
+}
+
+U32 LLGLTexture::getTexelsInAtlas() const
+{
+	llassert(mGLTexturep.notNull()) ;
+
+	return mGLTexturep->getTexelsInAtlas() ;
+}
+
+U32 LLGLTexture::getTexelsInGLTexture() const
+{
+	llassert(mGLTexturep.notNull()) ;
+
+	return mGLTexturep->getTexelsInGLTexture() ;
+}
+
+BOOL LLGLTexture::isGLTextureCreated() const
+{
+	llassert(mGLTexturep.notNull()) ;
+
+	return mGLTexturep->isGLTextureCreated() ;
+}
+
+S32  LLGLTexture::getDiscardLevelInAtlas() const
+{
+	llassert(mGLTexturep.notNull()) ;
+
+	return mGLTexturep->getDiscardLevelInAtlas() ;
+}
+
+void LLGLTexture::destroyGLTexture() 
+{
+	if(mGLTexturep.notNull() && mGLTexturep->getHasGLTexture())
+	{
+		mGLTexturep->destroyGLTexture() ;
+		mTextureState = DELETED ;
+	}
+}
+
+void LLGLTexture::setTexelsPerImage()
+{
+	S32 fullwidth = llmin(mFullWidth,(S32)MAX_IMAGE_SIZE_DEFAULT);
+	S32 fullheight = llmin(mFullHeight,(S32)MAX_IMAGE_SIZE_DEFAULT);
+	mTexelsPerImage = (F32)fullwidth * fullheight;
+}
+
+
diff --git a/indra/llrender/llgltexture.h b/indra/llrender/llgltexture.h
new file mode 100644
index 00000000000..a02946d37f7
--- /dev/null
+++ b/indra/llrender/llgltexture.h
@@ -0,0 +1,196 @@
+/** 
+ * @file llglviewertexture.h
+ * @brief Object for managing opengl textures
+ *
+ * $LicenseInfo:firstyear=2012&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+
+#ifndef LL_GL_TEXTURE_H
+#define LL_GL_TEXTURE_H
+
+#include "lltexture.h"
+#include "llgl.h"
+
+class LLImageRaw;
+
+//
+//this the parent for the class LLViewerTexture
+//through the following virtual functions, the class LLViewerTexture can be reached from /llrender.
+//
+class LLGLTexture : public LLTexture
+{
+public:
+	enum
+	{
+		MAX_IMAGE_SIZE_DEFAULT = 1024,
+		INVALID_DISCARD_LEVEL = 0x7fff
+	};
+
+	enum EBoostLevel
+	{
+		BOOST_NONE 			= 0,
+		BOOST_AVATAR_BAKED	,
+		BOOST_AVATAR		,
+		BOOST_CLOUDS		,
+		BOOST_SCULPTED      ,
+		
+		BOOST_HIGH 			= 10,
+		BOOST_BUMP          ,
+		BOOST_TERRAIN		, // has to be high priority for minimap / low detail
+		BOOST_SELECTED		,		
+		BOOST_AVATAR_BAKED_SELF	,
+		BOOST_AVATAR_SELF	, // needed for baking avatar
+		BOOST_SUPER_HIGH    , //textures higher than this need to be downloaded at the required resolution without delay.
+		BOOST_HUD			,
+		BOOST_ICON			,
+		BOOST_UI			,
+		BOOST_PREVIEW		,
+		BOOST_MAP			,
+		BOOST_MAP_VISIBLE	,		
+		BOOST_MAX_LEVEL,
+
+		//other texture Categories
+		LOCAL = BOOST_MAX_LEVEL,
+		AVATAR_SCRATCH_TEX,
+		DYNAMIC_TEX,
+		MEDIA,
+		ATLAS,
+		OTHER,
+		MAX_GL_IMAGE_CATEGORY
+	};
+
+	static S32 getTotalNumOfCategories() ;
+	static S32 getIndexFromCategory(S32 category) ;
+	static S32 getCategoryFromIndex(S32 index) ;
+
+protected:
+	virtual ~LLGLTexture();
+	LOG_CLASS(LLGLTexture);
+
+public:
+	LLGLTexture(BOOL usemipmaps = TRUE);
+	LLGLTexture(const LLImageRaw* raw, BOOL usemipmaps) ;
+	LLGLTexture(const U32 width, const U32 height, const U8 components, BOOL usemipmaps) ;
+
+	virtual void dump();	// debug info to llinfos
+
+	void setBoostLevel(S32 level);
+	S32  getBoostLevel() { return mBoostLevel; }
+
+	S32 getFullWidth() const { return mFullWidth; }
+	S32 getFullHeight() const { return mFullHeight; }	
+
+	void generateGLTexture() ;
+	void destroyGLTexture() ;
+
+	virtual const LLUUID& getID() const = 0;
+
+	//---------------------------------------------------------------------------------------------
+	//functions to access LLImageGL
+	//---------------------------------------------------------------------------------------------
+	/*virtual*/S32	       getWidth(S32 discard_level = -1) const;
+	/*virtual*/S32	       getHeight(S32 discard_level = -1) const;
+
+	BOOL       hasGLTexture() const ;
+	LLGLuint   getTexName() const ;		
+	BOOL       createGLTexture() ;
+	BOOL       createGLTexture(S32 discard_level, const LLImageRaw* imageraw, S32 usename = 0, BOOL to_create = TRUE, S32 category = LLGLTexture::OTHER);
+
+	void       setFilteringOption(LLTexUnit::eTextureFilterOptions option);
+	void       setExplicitFormat(LLGLint internal_format, LLGLenum primary_format, LLGLenum type_format = 0, BOOL swap_bytes = FALSE);
+	void       setAddressMode(LLTexUnit::eTextureAddressMode mode);
+	BOOL       setSubImage(const LLImageRaw* imageraw, S32 x_pos, S32 y_pos, S32 width, S32 height);
+	BOOL       setSubImage(const U8* datap, S32 data_width, S32 data_height, S32 x_pos, S32 y_pos, S32 width, S32 height);
+	void       setGLTextureCreated (bool initialized);
+	void       setCategory(S32 category) ;
+
+	LLTexUnit::eTextureAddressMode getAddressMode(void) const ;
+	S32        getMaxDiscardLevel() const;
+	S32        getDiscardLevel() const;
+	S8         getComponents() const;
+	BOOL       getBoundRecently() const;
+	S32        getTextureMemory() const ;
+	LLGLenum   getPrimaryFormat() const;
+	BOOL       getIsAlphaMask() const ;
+	LLTexUnit::eTextureType getTarget(void) const ;
+	BOOL       getMask(const LLVector2 &tc);
+	F32        getTimePassedSinceLastBound();
+	BOOL       getMissed() const ;
+	BOOL       isJustBound()const ;
+	void       forceUpdateBindStats(void) const;
+
+	U32        getTexelsInAtlas() const ;
+	U32        getTexelsInGLTexture() const ;
+	BOOL       isGLTextureCreated() const ;
+	S32        getDiscardLevelInAtlas() const ;
+	//---------------------------------------------------------------------------------------------
+	//end of functions to access LLImageGL
+	//---------------------------------------------------------------------------------------------
+
+	//-----------------
+	/*virtual*/ void setActive() ;
+	void forceActive() ;
+	void setNoDelete() ;
+	void dontDiscard() { mDontDiscard = 1; mTextureState = NO_DELETE; }
+	BOOL getDontDiscard() const { return mDontDiscard; }
+	//-----------------	
+
+private:
+	void cleanup();
+	void init();
+
+protected:
+	void setTexelsPerImage();
+
+	//note: do not make this function public.
+	/*virtual*/ LLImageGL* getGLTexture() const ;
+
+protected:
+	S32 mBoostLevel;				// enum describing priority level
+	S32 mFullWidth;
+	S32 mFullHeight;
+	BOOL mUseMipMaps;
+	S8  mComponents;
+	F32 mTexelsPerImage;			// Texels per image.
+	mutable S8  mNeedsGLTexture;
+
+	//GL texture
+	LLPointer<LLImageGL> mGLTexturep ;
+	S8 mDontDiscard;			// Keep full res version of this image (for UI, etc)
+
+protected:
+	typedef enum 
+	{
+		DELETED = 0,         //removed from memory
+		DELETION_CANDIDATE,  //ready to be removed from memory
+		INACTIVE,            //not be used for the last certain period (i.e., 30 seconds).
+		ACTIVE,              //just being used, can become inactive if not being used for a certain time (10 seconds).
+		NO_DELETE = 99       //stay in memory, can not be removed.
+	} LLGLTextureState;
+	LLGLTextureState  mTextureState ;
+
+
+};
+
+#endif // LL_GL_TEXTURE_H
+
diff --git a/indra/llrender/lltexture.h b/indra/llrender/lltexture.h
index 40245968d19..2f9eb9b6424 100644
--- a/indra/llrender/lltexture.h
+++ b/indra/llrender/lltexture.h
@@ -32,18 +32,15 @@
 #ifndef LL_TEXTURE_H
 #define LL_TEXTURE_H
 
-#include "llgltypes.h"
 #include "llrefcount.h"
-#include "llrender.h"
-
+class LLImageGL ;
+class LLTexUnit ;
 class LLFontGL ;
-class LLImageRaw ;
 
 //
-//this is an abstract class as the parent for the class LLViewerTexture
-//through the following virtual functions, the class LLViewerTexture can be reached from /llrender.
+//this is an abstract class as the parent for the class LLGLTexture
 //
-class LLTexture : public virtual LLRefCount
+class LLTexture : public LLRefCount
 {
 	friend class LLTexUnit ;
 	friend class LLFontGL ;
@@ -54,41 +51,8 @@ class LLTexture : public virtual LLRefCount
 public:
 	LLTexture(){}
 
-	enum EBoostLevel
-	{
-		BOOST_NONE 			= 0,
-		BOOST_AVATAR_BAKED	,
-		BOOST_AVATAR		,
-		BOOST_CLOUDS		,
-		BOOST_SCULPTED      ,
-		
-		BOOST_HIGH 			= 10,
-		BOOST_BUMP          ,
-		BOOST_TERRAIN		, // has to be high priority for minimap / low detail
-		BOOST_SELECTED		,		
-		BOOST_AVATAR_BAKED_SELF	,
-		BOOST_AVATAR_SELF	, // needed for baking avatar
-		BOOST_SUPER_HIGH    , //textures higher than this need to be downloaded at the required resolution without delay.
-		BOOST_HUD			,
-		BOOST_ICON			,
-		BOOST_UI			,
-		BOOST_PREVIEW		,
-		BOOST_MAP			,
-		BOOST_MAP_VISIBLE	,		
-		BOOST_MAX_LEVEL,
-
-		//other texture Categories
-		LOCAL = BOOST_MAX_LEVEL,
-		AVATAR_SCRATCH_TEX,
-		DYNAMIC_TEX,
-		MEDIA,
-		ATLAS,
-		OTHER,
-		MAX_GL_IMAGE_CATEGORY
-	};
-
 	//
-	//interfaces to access LLViewerTexture
+	//interfaces to access LLGLTexture
 	//
 	virtual S8         getType() const = 0 ;
 	virtual void       setKnownDrawSize(S32 width, S32 height) = 0 ;
@@ -97,13 +61,6 @@ class LLTexture : public virtual LLRefCount
 	virtual void       setActive() = 0 ;
 	virtual S32	       getWidth(S32 discard_level = -1) const = 0 ;
 	virtual S32	       getHeight(S32 discard_level = -1) const = 0 ;
-	virtual BOOL       hasGLTexture() const  = 0;
-	virtual BOOL       createGLTexture(S32 discard_level, const LLImageRaw* imageraw, S32 usename = 0, BOOL to_create = TRUE, S32 category = LLTexture::OTHER) = 0;
-	virtual void       setExplicitFormat(LLGLint internal_format, LLGLenum primary_format, LLGLenum type_format = 0, BOOL swap_bytes = FALSE) = 0;
-	virtual void       setAddressMode(LLTexUnit::eTextureAddressMode mode) = 0;
-	virtual LLTexUnit::eTextureAddressMode getAddressMode(void) const = 0;
-	virtual S8         getComponents() const = 0;
-	virtual            const LLUUID& getID() const = 0;
 
 private:
 	//note: do not make this function public.
diff --git a/indra/newview/llcolorswatch.cpp b/indra/newview/llcolorswatch.cpp
index 5b942f283af..87fd47cb2c6 100644
--- a/indra/newview/llcolorswatch.cpp
+++ b/indra/newview/llcolorswatch.cpp
@@ -242,7 +242,7 @@ void LLColorSwatchCtrl::draw()
 		if (!mFallbackImageName.empty())
 		{
 			LLPointer<LLViewerFetchedTexture> fallback_image = LLViewerTextureManager::getFetchedTextureFromFile(mFallbackImageName, TRUE, 
-				LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
+				LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
 			if( fallback_image->getComponents() == 4 )
 			{	
 				gl_rect_2d_checkerboard( interior );
diff --git a/indra/newview/lldrawpoolbump.cpp b/indra/newview/lldrawpoolbump.cpp
index a264eae3026..74633e4e420 100644
--- a/indra/newview/lldrawpoolbump.cpp
+++ b/indra/newview/lldrawpoolbump.cpp
@@ -153,7 +153,7 @@ void LLStandardBumpmap::addstandard()
 		gStandardBumpmapList[LLStandardBumpmap::sStandardBumpmapCount].mLabel = label;
 		gStandardBumpmapList[LLStandardBumpmap::sStandardBumpmapCount].mImage = 
 			LLViewerTextureManager::getFetchedTexture(LLUUID(bump_image_id));	
-		gStandardBumpmapList[LLStandardBumpmap::sStandardBumpmapCount].mImage->setBoostLevel(LLViewerTexture::BOOST_BUMP) ;
+		gStandardBumpmapList[LLStandardBumpmap::sStandardBumpmapCount].mImage->setBoostLevel(LLGLTexture::BOOST_BUMP) ;
 		gStandardBumpmapList[LLStandardBumpmap::sStandardBumpmapCount].mImage->setLoadedCallback(LLBumpImageList::onSourceStandardLoaded, 0, TRUE, FALSE, NULL, NULL );
 		gStandardBumpmapList[LLStandardBumpmap::sStandardBumpmapCount].mImage->forceToSaveRawImage(0) ;
 		LLStandardBumpmap::sStandardBumpmapCount++;
@@ -1075,7 +1075,7 @@ LLViewerTexture* LLBumpImageList::getBrightnessDarknessImage(LLViewerFetchedText
 			src_image->getHeight() != bump->getHeight())// ||
 			//(LLPipeline::sRenderDeferred && bump->getComponents() != 4))
 		{
-			src_image->setBoostLevel(LLViewerTexture::BOOST_BUMP) ;
+			src_image->setBoostLevel(LLGLTexture::BOOST_BUMP) ;
 			src_image->setLoadedCallback( callback_func, 0, TRUE, FALSE, new LLUUID(src_image->getID()), NULL );
 			src_image->forceToSaveRawImage(0) ;
 		}
diff --git a/indra/newview/lldrawpoolterrain.cpp b/indra/newview/lldrawpoolterrain.cpp
index 9bc32fddbdb..809f34bdffd 100644
--- a/indra/newview/lldrawpoolterrain.cpp
+++ b/indra/newview/lldrawpoolterrain.cpp
@@ -69,7 +69,7 @@ LLDrawPoolTerrain::LLDrawPoolTerrain(LLViewerTexture *texturep) :
 	sDetailScale = 1.f/gSavedSettings.getF32("RenderTerrainScale");
 	sDetailMode = gSavedSettings.getS32("RenderTerrainDetail");
 	mAlphaRampImagep = LLViewerTextureManager::getFetchedTextureFromFile("alpha_gradient.tga", 
-													TRUE, LLViewerTexture::BOOST_UI, 
+													TRUE, LLGLTexture::BOOST_UI, 
 													LLViewerTexture::FETCHED_TEXTURE,
 													format, int_format,
 													LLUUID("e97cf410-8e61-7005-ec06-629eba4cd1fb"));
@@ -78,7 +78,7 @@ LLDrawPoolTerrain::LLDrawPoolTerrain(LLViewerTexture *texturep) :
 	mAlphaRampImagep->setAddressMode(LLTexUnit::TAM_CLAMP);
 
 	m2DAlphaRampImagep = LLViewerTextureManager::getFetchedTextureFromFile("alpha_gradient_2d.j2c", 
-													TRUE, LLViewerTexture::BOOST_UI, 
+													TRUE, LLGLTexture::BOOST_UI, 
 													LLViewerTexture::FETCHED_TEXTURE,
 													format, int_format,
 													LLUUID("38b86f85-2575-52a9-a531-23108d8da837"));
@@ -86,7 +86,7 @@ LLDrawPoolTerrain::LLDrawPoolTerrain(LLViewerTexture *texturep) :
 	//gGL.getTexUnit(0)->bind(m2DAlphaRampImagep.get());
 	m2DAlphaRampImagep->setAddressMode(LLTexUnit::TAM_CLAMP);
 	
-	mTexturep->setBoostLevel(LLViewerTexture::BOOST_TERRAIN);
+	mTexturep->setBoostLevel(LLGLTexture::BOOST_TERRAIN);
 	
 	//gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
 }
@@ -170,7 +170,7 @@ void LLDrawPoolTerrain::render(S32 pass)
 	LLVLComposition *compp = regionp->getComposition();
 	for (S32 i = 0; i < 4; i++)
 	{
-		compp->mDetailTextures[i]->setBoostLevel(LLViewerTexture::BOOST_TERRAIN);
+		compp->mDetailTextures[i]->setBoostLevel(LLGLTexture::BOOST_TERRAIN);
 		compp->mDetailTextures[i]->addTextureStats(1024.f*1024.f); // assume large pixel area
 	}
 
diff --git a/indra/newview/lldrawpoolwater.cpp b/indra/newview/lldrawpoolwater.cpp
index 4f6eaa5a5b7..26890bd75f7 100644
--- a/indra/newview/lldrawpoolwater.cpp
+++ b/indra/newview/lldrawpoolwater.cpp
@@ -66,11 +66,11 @@ LLVector3 LLDrawPoolWater::sLightDir;
 LLDrawPoolWater::LLDrawPoolWater() :
 	LLFacePool(POOL_WATER)
 {
-	mHBTex[0] = LLViewerTextureManager::getFetchedTexture(gSunTextureID, TRUE, LLViewerTexture::BOOST_UI);
+	mHBTex[0] = LLViewerTextureManager::getFetchedTexture(gSunTextureID, TRUE, LLGLTexture::BOOST_UI);
 	gGL.getTexUnit(0)->bind(mHBTex[0]) ;
 	mHBTex[0]->setAddressMode(LLTexUnit::TAM_CLAMP);
 
-	mHBTex[1] = LLViewerTextureManager::getFetchedTexture(gMoonTextureID, TRUE, LLViewerTexture::BOOST_UI);
+	mHBTex[1] = LLViewerTextureManager::getFetchedTexture(gMoonTextureID, TRUE, LLGLTexture::BOOST_UI);
 	gGL.getTexUnit(0)->bind(mHBTex[1]);
 	mHBTex[1]->setAddressMode(LLTexUnit::TAM_CLAMP);
 
diff --git a/indra/newview/lldynamictexture.cpp b/indra/newview/lldynamictexture.cpp
index fa42b157a72..29ad4f34d25 100755
--- a/indra/newview/lldynamictexture.cpp
+++ b/indra/newview/lldynamictexture.cpp
@@ -107,7 +107,7 @@ void LLViewerDynamicTexture::generateGLTexture(LLGLint internal_format, LLGLenum
 	{
 		setExplicitFormat(internal_format, primary_format, type_format, swap_bytes);
 	}
-	createGLTexture(0, raw_image, 0, TRUE, LLViewerTexture::DYNAMIC_TEX);
+	createGLTexture(0, raw_image, 0, TRUE, LLGLTexture::DYNAMIC_TEX);
 	setAddressMode((mClamp) ? LLTexUnit::TAM_CLAMP : LLTexUnit::TAM_WRAP);
 	mGLTexturep->setGLTextureCreated(false);
 }
diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp
index 4a0c94df33f..947ab84eec9 100644
--- a/indra/newview/llface.cpp
+++ b/indra/newview/llface.cpp
@@ -560,8 +560,8 @@ void LLFace::renderSelected(LLViewerTexture *imagep, const LLColor4& color)
 /* removed in lieu of raycast uv detection
 void LLFace::renderSelectedUV()
 {
-	LLViewerTexture* red_blue_imagep = LLViewerTextureManager::getFetchedTextureFromFile("uv_test1.j2c", TRUE, LLViewerTexture::BOOST_UI);
-	LLViewerTexture* green_imagep = LLViewerTextureManager::getFetchedTextureFromFile("uv_test2.tga", TRUE, LLViewerTexture::BOOST_UI);
+	LLViewerTexture* red_blue_imagep = LLViewerTextureManager::getFetchedTextureFromFile("uv_test1.j2c", TRUE, LLGLTexture::BOOST_UI);
+	LLViewerTexture* green_imagep = LLViewerTextureManager::getFetchedTextureFromFile("uv_test2.tga", TRUE, LLGLTexture::BOOST_UI);
 
 	LLGLSUVSelect object_select;
 
diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp
index a071f338bac..dbab15dc9e9 100755
--- a/indra/newview/llfloatermodelpreview.cpp
+++ b/indra/newview/llfloatermodelpreview.cpp
@@ -2488,7 +2488,7 @@ void LLModelLoader::loadTextures()
 				if(!material.mDiffuseMapFilename.empty())
 				{
 					material.mDiffuseMap = 
-						LLViewerTextureManager::getFetchedTextureFromUrl("file://" + material.mDiffuseMapFilename, TRUE, LLViewerTexture::BOOST_PREVIEW);
+						LLViewerTextureManager::getFetchedTextureFromUrl("file://" + material.mDiffuseMapFilename, TRUE, LLGLTexture::BOOST_PREVIEW);
 					material.mDiffuseMap->setLoadedCallback(LLModelPreview::textureLoadedCallback, 0, TRUE, FALSE, mPreview, NULL, FALSE);
 					material.mDiffuseMap->forceToSaveRawImage(0, F32_MAX);
 					mNumOfFetchingTextures++ ;
diff --git a/indra/newview/llfloaterreporter.cpp b/indra/newview/llfloaterreporter.cpp
index 479bdd5ff70..da773e90ec5 100644
--- a/indra/newview/llfloaterreporter.cpp
+++ b/indra/newview/llfloaterreporter.cpp
@@ -765,8 +765,8 @@ void LLFloaterReporter::takeScreenshot()
 
 	// store in the image list so it doesn't try to fetch from the server
 	LLPointer<LLViewerFetchedTexture> image_in_list = 
-		LLViewerTextureManager::getFetchedTexture(mResourceDatap->mAssetInfo.mUuid, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::FETCHED_TEXTURE);
-	image_in_list->createGLTexture(0, raw, 0, TRUE, LLViewerTexture::OTHER);
+		LLViewerTextureManager::getFetchedTexture(mResourceDatap->mAssetInfo.mUuid, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::FETCHED_TEXTURE);
+	image_in_list->createGLTexture(0, raw, 0, TRUE, LLGLTexture::OTHER);
 	
 	// the texture picker then uses that texture
 	LLTexturePicker* texture = getChild<LLTextureCtrl>("screenshot");
diff --git a/indra/newview/llfloaterscriptdebug.cpp b/indra/newview/llfloaterscriptdebug.cpp
index b691db1049f..c987dbb4fb8 100644
--- a/indra/newview/llfloaterscriptdebug.cpp
+++ b/indra/newview/llfloaterscriptdebug.cpp
@@ -105,7 +105,7 @@ void LLFloaterScriptDebug::addScriptLine(const std::string &utf8mesg, const std:
 
 	if (objectp)
 	{
-		objectp->setIcon(LLViewerTextureManager::getFetchedTextureFromFile("script_error.j2c", TRUE, LLViewerTexture::BOOST_UI));
+		objectp->setIcon(LLViewerTextureManager::getFetchedTextureFromFile("script_error.j2c", TRUE, LLGLTexture::BOOST_UI));
 		floater_label = llformat("%s(%.0f, %.0f, %.0f)",
 						user_name.c_str(),
 						objectp->getPositionRegion().mV[VX],
diff --git a/indra/newview/lllocalbitmaps.cpp b/indra/newview/lllocalbitmaps.cpp
index fce4c29870a..3a199135b60 100644
--- a/indra/newview/lllocalbitmaps.cpp
+++ b/indra/newview/lllocalbitmaps.cpp
@@ -440,7 +440,7 @@ void LLLocalBitmap::updateUserPrims(LLUUID old_id, LLUUID new_id)
 					if (face && face->getTexture() && face->getTexture()->getID() == old_id)
 					{
 						object->setTEImage(face_iter, LLViewerTextureManager::getFetchedTexture
-							(new_id, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE));
+							(new_id, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE));
 
 						update_obj = true;
 					}
diff --git a/indra/newview/llpreviewtexture.cpp b/indra/newview/llpreviewtexture.cpp
index 3ff5a05d81e..3784208e372 100644
--- a/indra/newview/llpreviewtexture.cpp
+++ b/indra/newview/llpreviewtexture.cpp
@@ -70,7 +70,7 @@ LLPreviewTexture::LLPreviewTexture(const LLSD& key)
 	  mAspectRatio(0.f),
 	  mPreviewToSave(FALSE),
 	  mImage(NULL),
-	  mImageOldBoostLevel(LLViewerTexture::BOOST_NONE)
+	  mImageOldBoostLevel(LLGLTexture::BOOST_NONE)
 {
 	updateImageID();
 	if (key.has("save_as"))
@@ -468,9 +468,9 @@ void LLPreviewTexture::onAspectRatioCommit(LLUICtrl* ctrl, void* userdata)
 
 void LLPreviewTexture::loadAsset()
 {
-	mImage = LLViewerTextureManager::getFetchedTexture(mImageID, MIPMAP_TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
+	mImage = LLViewerTextureManager::getFetchedTexture(mImageID, MIPMAP_TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
 	mImageOldBoostLevel = mImage->getBoostLevel();
-	mImage->setBoostLevel(LLViewerTexture::BOOST_PREVIEW);
+	mImage->setBoostLevel(LLGLTexture::BOOST_PREVIEW);
 	mImage->forceToSaveRawImage(0) ;
 	mAssetStatus = PREVIEW_ASSET_LOADING;
 	mUpdateDimensions = TRUE;
diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp
index c3c37141ed4..24e272c7400 100644
--- a/indra/newview/llselectmgr.cpp
+++ b/indra/newview/llselectmgr.cpp
@@ -1608,7 +1608,7 @@ void LLSelectMgr::selectionSetImage(const LLUUID& imageid)
 				// Texture picker defaults aren't inventory items
 				// * Don't need to worry about permissions for them
 				// * Can just apply the texture and be done with it.
-				objectp->setTEImage(te, LLViewerTextureManager::getFetchedTexture(mImageID, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE));
+				objectp->setTEImage(te, LLViewerTextureManager::getFetchedTexture(mImageID, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE));
 			}
 			return true;
 		}
@@ -1774,7 +1774,7 @@ BOOL LLSelectMgr::selectionRevertTextures()
 					}
 					else
 					{
-						object->setTEImage(te, LLViewerTextureManager::getFetchedTexture(id, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE));
+						object->setTEImage(te, LLViewerTextureManager::getFetchedTexture(id, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE));
 					}
 				}
 			}
@@ -5198,7 +5198,7 @@ void LLSelectMgr::updateSilhouettes()
 
 	if (!mSilhouetteImagep)
 	{
-		mSilhouetteImagep = LLViewerTextureManager::getFetchedTextureFromFile("silhouette.j2c", TRUE, LLViewerTexture::BOOST_UI);
+		mSilhouetteImagep = LLViewerTextureManager::getFetchedTextureFromFile("silhouette.j2c", TRUE, LLGLTexture::BOOST_UI);
 	}
 
 	mHighlightedObjects->cleanupNodes();
diff --git a/indra/newview/llspatialpartition.cpp b/indra/newview/llspatialpartition.cpp
index 06c87e57fc7..c804898cc3f 100644
--- a/indra/newview/llspatialpartition.cpp
+++ b/indra/newview/llspatialpartition.cpp
@@ -3574,9 +3574,9 @@ void renderTexturePriority(LLDrawable* drawable)
 		drawBox(center, size);
 		
 		/*S32 boost = imagep->getBoostLevel();
-		if (boost>LLViewerTexture::BOOST_NONE)
+		if (boost>LLGLTexture::BOOST_NONE)
 		{
-			F32 t = (F32) boost / (F32) (LLViewerTexture::BOOST_MAX_LEVEL-1);
+			F32 t = (F32) boost / (F32) (LLGLTexture::BOOST_MAX_LEVEL-1);
 			LLVector4 col = lerp(boost_cold, boost_hot, t);
 			LLGLEnable blend_on(GL_BLEND);
 			gGL.blendFunc(GL_SRC_ALPHA, GL_ONE);
diff --git a/indra/newview/lltexturectrl.cpp b/indra/newview/lltexturectrl.cpp
index ec36cf48c2f..3dc506d2654 100644
--- a/indra/newview/lltexturectrl.cpp
+++ b/indra/newview/lltexturectrl.cpp
@@ -571,7 +571,7 @@ void LLFloaterTexturePicker::draw()
 		if(mImageAssetID.notNull())
 		{
 			mTexturep = LLViewerTextureManager::getFetchedTexture(mImageAssetID, MIPMAP_YES);
-			mTexturep->setBoostLevel(LLViewerTexture::BOOST_PREVIEW);
+			mTexturep->setBoostLevel(LLGLTexture::BOOST_PREVIEW);
 		}
 
 		if (mTentativeLabel)
@@ -1456,9 +1456,9 @@ void LLTextureCtrl::draw()
 	}
 	else if (!mImageAssetID.isNull())
 	{
-		LLPointer<LLViewerFetchedTexture> texture = LLViewerTextureManager::getFetchedTexture(mImageAssetID, MIPMAP_YES,LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
+		LLPointer<LLViewerFetchedTexture> texture = LLViewerTextureManager::getFetchedTexture(mImageAssetID, MIPMAP_YES,LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
 		
-		texture->setBoostLevel(LLViewerTexture::BOOST_PREVIEW);
+		texture->setBoostLevel(LLGLTexture::BOOST_PREVIEW);
 		texture->forceToSaveRawImage(0) ;
 
 		mTexturep = texture;
diff --git a/indra/newview/lltextureview.cpp b/indra/newview/lltextureview.cpp
index 03529b92465..e9615e26134 100755
--- a/indra/newview/lltextureview.cpp
+++ b/indra/newview/lltextureview.cpp
@@ -170,7 +170,7 @@ void LLTextureBar::draw()
 	{
 		color = LLColor4::green4;
 	}
-	else if (mImagep->getBoostLevel() > LLViewerTexture::BOOST_NONE)
+	else if (mImagep->getBoostLevel() > LLGLTexture::BOOST_NONE)
 	{
 		color = LLColor4::magenta;
 	}
diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp
index 0bf039224cf..3bb7de74e16 100644
--- a/indra/newview/llviewerobject.cpp
+++ b/indra/newview/llviewerobject.cpp
@@ -3290,14 +3290,14 @@ void LLViewerObject::boostTexturePriority(BOOL boost_children /* = TRUE */)
 	S32 tex_count = getNumTEs();
 	for (i = 0; i < tex_count; i++)
 	{
- 		getTEImage(i)->setBoostLevel(LLViewerTexture::BOOST_SELECTED);
+ 		getTEImage(i)->setBoostLevel(LLGLTexture::BOOST_SELECTED);
 	}
 
 	if (isSculpted() && !isMesh())
 	{
 		LLSculptParams *sculpt_params = (LLSculptParams *)getParameterEntry(LLNetworkData::PARAMS_SCULPT);
 		LLUUID sculpt_id = sculpt_params->getSculptTexture();
-		LLViewerTextureManager::getFetchedTexture(sculpt_id, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE)->setBoostLevel(LLViewerTexture::BOOST_SELECTED);
+		LLViewerTextureManager::getFetchedTexture(sculpt_id, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE)->setBoostLevel(LLGLTexture::BOOST_SELECTED);
 	}
 	
 	if (boost_children)
@@ -4044,7 +4044,7 @@ void LLViewerObject::setTE(const U8 te, const LLTextureEntry &texture_entry)
 //	if (mDrawable.notNull() && mDrawable->isVisible())
 //	{
 		const LLUUID& image_id = getTE(te)->getID();
-		mTEImages[te] = LLViewerTextureManager::getFetchedTexture(image_id, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
+		mTEImages[te] = LLViewerTextureManager::getFetchedTexture(image_id, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
 //	}
 }
 
@@ -4070,7 +4070,7 @@ S32 LLViewerObject::setTETextureCore(const U8 te, const LLUUID& uuid, const std:
 		uuid == LLUUID::null)
 	{
 		retval = LLPrimitive::setTETexture(te, uuid);
-		mTEImages[te] = LLViewerTextureManager::getFetchedTextureFromUrl  (url, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE, 0, 0, uuid);
+		mTEImages[te] = LLViewerTextureManager::getFetchedTextureFromUrl  (url, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE, 0, 0, uuid);
 		setChanged(TEXTURE);
 		if (mDrawable.notNull())
 		{
@@ -4087,7 +4087,7 @@ S32 LLViewerObject::setTETextureCore(const U8 te, const LLUUID& uuid, LLHost hos
 		uuid == LLUUID::null)
 	{
 		retval = LLPrimitive::setTETexture(te, uuid);
-		mTEImages[te] = LLViewerTextureManager::getFetchedTexture(uuid, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE, 0, 0, host);
+		mTEImages[te] = LLViewerTextureManager::getFetchedTexture(uuid, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE, 0, 0, host);
 		setChanged(TEXTURE);
 		if (mDrawable.notNull())
 		{
diff --git a/indra/newview/llviewerstats.cpp b/indra/newview/llviewerstats.cpp
index 961c7082cfa..635cda4e274 100755
--- a/indra/newview/llviewerstats.cpp
+++ b/indra/newview/llviewerstats.cpp
@@ -564,7 +564,7 @@ F32		gWorstLandCompression = 0.f, gWorstWaterCompression = 0.f;
 U32		gTotalWorldBytes = 0, gTotalObjectBytes = 0, gTotalTextureBytes = 0, gSimPingCount = 0;
 U32		gObjectBits = 0;
 F32		gAvgSimPing = 0.f;
-U32     gTotalTextureBytesPerBoostLevel[LLViewerTexture::MAX_GL_IMAGE_CATEGORY] = {0};
+U32     gTotalTextureBytesPerBoostLevel[LLGLTexture::MAX_GL_IMAGE_CATEGORY] = {0};
 
 extern U32  gVisCompared;
 extern U32  gVisTested;
diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp
index c362269b81f..a73ce1d1151 100644
--- a/indra/newview/llviewertexture.cpp
+++ b/indra/newview/llviewertexture.cpp
@@ -233,7 +233,7 @@ LLPointer<LLViewerTexture> LLViewerTextureManager::getLocalTexture(BOOL usemipma
 	if(generate_gl_tex)
 	{
 		tex->generateGLTexture() ;
-		tex->setCategory(LLViewerTexture::LOCAL) ;
+		tex->setCategory(LLGLTexture::LOCAL) ;
 	}
 	return tex ;
 }
@@ -243,14 +243,14 @@ LLPointer<LLViewerTexture> LLViewerTextureManager::getLocalTexture(const LLUUID&
 	if(generate_gl_tex)
 	{
 		tex->generateGLTexture() ;
-		tex->setCategory(LLViewerTexture::LOCAL) ;
+		tex->setCategory(LLGLTexture::LOCAL) ;
 	}
 	return tex ;
 }
 LLPointer<LLViewerTexture> LLViewerTextureManager::getLocalTexture(const LLImageRaw* raw, BOOL usemipmaps) 
 {
 	LLPointer<LLViewerTexture> tex = new LLViewerTexture(raw, usemipmaps) ;
-	tex->setCategory(LLViewerTexture::LOCAL) ;
+	tex->setCategory(LLGLTexture::LOCAL) ;
 	return tex ;
 }
 LLPointer<LLViewerTexture> LLViewerTextureManager::getLocalTexture(const U32 width, const U32 height, const U8 components, BOOL usemipmaps, BOOL generate_gl_tex) 
@@ -259,7 +259,7 @@ LLPointer<LLViewerTexture> LLViewerTextureManager::getLocalTexture(const U32 wid
 	if(generate_gl_tex)
 	{
 		tex->generateGLTexture() ;
-		tex->setCategory(LLViewerTexture::LOCAL) ;
+		tex->setCategory(LLGLTexture::LOCAL) ;
 	}
 	return tex ;
 }
@@ -309,17 +309,17 @@ LLViewerFetchedTexture* LLViewerTextureManager::getFetchedTextureFromHost(const
 // Create a bridge to the viewer texture manager.
 class LLViewerTextureManagerBridge : public LLTextureManagerBridge
 {
-	/*virtual*/ LLPointer<LLTexture> getLocalTexture(BOOL usemipmaps = TRUE, BOOL generate_gl_tex = TRUE)
+	/*virtual*/ LLPointer<LLGLTexture> getLocalTexture(BOOL usemipmaps = TRUE, BOOL generate_gl_tex = TRUE)
 	{
 		return LLViewerTextureManager::getLocalTexture(usemipmaps, generate_gl_tex);
 	}
 
-	/*virtual*/ LLPointer<LLTexture> getLocalTexture(const U32 width, const U32 height, const U8 components, BOOL usemipmaps, BOOL generate_gl_tex = TRUE)
+	/*virtual*/ LLPointer<LLGLTexture> getLocalTexture(const U32 width, const U32 height, const U8 components, BOOL usemipmaps, BOOL generate_gl_tex = TRUE)
 	{
 		return LLViewerTextureManager::getLocalTexture(width, height, components, usemipmaps, generate_gl_tex);
 	}
 
-	/*virtual*/ LLTexture* getFetchedTexture(const LLUUID &image_id)
+	/*virtual*/ LLGLTexture* getFetchedTexture(const LLUUID &image_id)
 	{
 		return LLViewerTextureManager::getFetchedTexture(image_id);
 	}
@@ -371,12 +371,12 @@ void LLViewerTextureManager::init()
 	imagep->setCachedRawImage(0, image_raw) ;
 	image_raw = NULL;
 #else
- 	LLViewerFetchedTexture::sDefaultImagep = LLViewerTextureManager::getFetchedTexture(IMG_DEFAULT, TRUE, LLViewerTexture::BOOST_UI);
+ 	LLViewerFetchedTexture::sDefaultImagep = LLViewerTextureManager::getFetchedTexture(IMG_DEFAULT, TRUE, LLGLTexture::BOOST_UI);
 #endif
 	LLViewerFetchedTexture::sDefaultImagep->dontDiscard();
-	LLViewerFetchedTexture::sDefaultImagep->setCategory(LLViewerTexture::OTHER) ;
+	LLViewerFetchedTexture::sDefaultImagep->setCategory(LLGLTexture::OTHER) ;
 
- 	LLViewerFetchedTexture::sSmokeImagep = LLViewerTextureManager::getFetchedTexture(IMG_SMOKE, TRUE, LLViewerTexture::BOOST_UI);
+ 	LLViewerFetchedTexture::sSmokeImagep = LLViewerTextureManager::getFetchedTexture(IMG_SMOKE, TRUE, LLGLTexture::BOOST_UI);
 	LLViewerFetchedTexture::sSmokeImagep->setNoDelete() ;
 
 	image_raw = new LLImageRaw(32,32,3);
@@ -442,25 +442,6 @@ void LLViewerTexture::initClass()
 	}
 }
 
-// static
-S32 LLViewerTexture::getTotalNumOfCategories() 
-{
-	return MAX_GL_IMAGE_CATEGORY - (BOOST_HIGH - BOOST_SCULPTED) + 2 ;
-}
-
-// static
-//index starts from zero.
-S32 LLViewerTexture::getIndexFromCategory(S32 category) 
-{
-	return (category < BOOST_HIGH) ? category : category - (BOOST_HIGH - BOOST_SCULPTED) + 1 ;
-}
-
-//static 
-S32 LLViewerTexture::getCategoryFromIndex(S32 index)
-{
-	return (index < BOOST_HIGH) ? index : index + (BOOST_HIGH - BOOST_SCULPTED) - 1 ;
-}
-
 // tuning params
 const F32 discard_bias_delta = .25f;
 const F32 discard_delta_time = 0.5f;
@@ -597,45 +578,38 @@ void LLViewerTexture::updateClass(const F32 velocity, const F32 angular_velocity
 //-------------------------------------------------------------------------------------------
 const U32 LLViewerTexture::sCurrentFileVersion = 1;
 
-LLViewerTexture::LLViewerTexture(BOOL usemipmaps)
+LLViewerTexture::LLViewerTexture(BOOL usemipmaps) :
+	LLGLTexture(usemipmaps)
 {
 	init(true);
-	mUseMipMaps = usemipmaps ;
 
 	mID.generate();
 	sImageCount++;
 }
 
-LLViewerTexture::LLViewerTexture(const LLUUID& id, BOOL usemipmaps)
-	: mID(id)
+LLViewerTexture::LLViewerTexture(const LLUUID& id, BOOL usemipmaps) :
+	LLGLTexture(usemipmaps),
+	mID(id)
 {
 	init(true);
-	mUseMipMaps = usemipmaps ;
 	
 	sImageCount++;
 }
 
-LLViewerTexture::LLViewerTexture(const U32 width, const U32 height, const U8 components, BOOL usemipmaps) 
+LLViewerTexture::LLViewerTexture(const U32 width, const U32 height, const U8 components, BOOL usemipmaps)  :
+	LLGLTexture(width, height, components, usemipmaps)
 {
 	init(true);
 
-	mFullWidth = width ;
-	mFullHeight = height ;
-	mUseMipMaps = usemipmaps ;
-	mComponents = components ;
-	setTexelsPerImage();
-
 	mID.generate();
 	sImageCount++;
 }
 
-LLViewerTexture::LLViewerTexture(const LLImageRaw* raw, BOOL usemipmaps)	
+LLViewerTexture::LLViewerTexture(const LLImageRaw* raw, BOOL usemipmaps) :
+	LLGLTexture(raw, usemipmaps)
 {
 	init(true);
-	mUseMipMaps = usemipmaps ;
-	mGLTexturep = new LLImageGL(raw, usemipmaps) ;
 	
-	// Create an empty image of the specified size and width
 	mID.generate();
 	sImageCount++;
 }
@@ -646,20 +620,10 @@ LLViewerTexture::~LLViewerTexture()
 	sImageCount--;
 }
 
+// virtual
 void LLViewerTexture::init(bool firstinit)
 {
-	mBoostLevel = LLViewerTexture::BOOST_NONE;
-
-	mFullWidth = 0;
-	mFullHeight = 0;
-	mTexelsPerImage = 0 ;
-	mUseMipMaps = FALSE ;
-	mComponents = 0 ;
-
-	mTextureState = NO_DELETE ;
-	mDontDiscard = FALSE;
 	mMaxVirtualSize = 0.f;
-	mNeedsGLTexture = FALSE ;
 	mMaxVirtualSizeResetInterval = 1;
 	mMaxVirtualSizeResetCounter = mMaxVirtualSizeResetInterval ;
 	mAdditionalDecodePriority = 0.f ;	
@@ -680,38 +644,18 @@ void LLViewerTexture::cleanup()
 {
 	mFaceList.clear() ;
 	mVolumeList.clear();
-	if(mGLTexturep)
-	{
-		mGLTexturep->cleanup();
-	}
 }
 
 // virtual
 void LLViewerTexture::dump()
 {
-	if(mGLTexturep)
-	{
-		mGLTexturep->dump();
-	}
+	LLGLTexture::dump();
 
 	llinfos << "LLViewerTexture"
 			<< " mID " << mID
 			<< llendl;
 }
 
-void LLViewerTexture::setBoostLevel(S32 level)
-{
-	if(mBoostLevel != level)
-	{
-		mBoostLevel = level ;
-		if(mBoostLevel != LLViewerTexture::BOOST_NONE)
-		{
-			setNoDelete() ;		
-		}
-	}
-}
-
-
 bool LLViewerTexture::bindDefaultImage(S32 stage) 
 {
 	if (stage < 0) return false;
@@ -904,294 +848,18 @@ void LLViewerTexture::reorganizeVolumeList()
 	mVolumeList.erase(mVolumeList.begin() + mNumVolumes, mVolumeList.end());
 }
 
-
-
 //virtual
 void LLViewerTexture::switchToCachedImage()
 {
 	//nothing here.
 }
 
-void LLViewerTexture::forceActive()
-{
-	mTextureState = ACTIVE ; 
-}
-
-void LLViewerTexture::setActive() 
-{ 
-	if(mTextureState != NO_DELETE)
-	{
-		mTextureState = ACTIVE ; 
-	}
-}
-
-//set the texture to stay in memory
-void LLViewerTexture::setNoDelete() 
-{ 
-	mTextureState = NO_DELETE ;
-}
-
-void LLViewerTexture::generateGLTexture() 
-{	
-	if(mGLTexturep.isNull())
-	{
-		mGLTexturep = new LLImageGL(mFullWidth, mFullHeight, mComponents, mUseMipMaps) ;
-	}
-}
-
-LLImageGL* LLViewerTexture::getGLTexture() const
-{
-	llassert(mGLTexturep.notNull()) ;
-
-	return mGLTexturep ;
-}
-
-BOOL LLViewerTexture::createGLTexture() 
-{
-	if(mGLTexturep.isNull())
-	{
-		generateGLTexture() ;
-	}
-
-	return mGLTexturep->createGLTexture() ;
-}
-
-BOOL LLViewerTexture::createGLTexture(S32 discard_level, const LLImageRaw* imageraw, S32 usename, BOOL to_create, S32 category)
-{
-	llassert(mGLTexturep.notNull()) ;	
-
-	BOOL ret = mGLTexturep->createGLTexture(discard_level, imageraw, usename, to_create, category) ;
-
-	if(ret)
-	{
-		mFullWidth = mGLTexturep->getCurrentWidth() ;
-		mFullHeight = mGLTexturep->getCurrentHeight() ; 
-		mComponents = mGLTexturep->getComponents() ;	
-		setTexelsPerImage();
-	}
-
-	return ret ;
-}
-
 //virtual
 void LLViewerTexture::setCachedRawImage(S32 discard_level, LLImageRaw* imageraw)
 {
 	//nothing here.
 }
 
-void LLViewerTexture::setExplicitFormat(LLGLint internal_format, LLGLenum primary_format, LLGLenum type_format, BOOL swap_bytes)
-{
-	llassert(mGLTexturep.notNull()) ;
-	
-	mGLTexturep->setExplicitFormat(internal_format, primary_format, type_format, swap_bytes) ;
-}
-void LLViewerTexture::setAddressMode(LLTexUnit::eTextureAddressMode mode)
-{
-	llassert(mGLTexturep.notNull()) ;
-	mGLTexturep->setAddressMode(mode) ;
-}
-void LLViewerTexture::setFilteringOption(LLTexUnit::eTextureFilterOptions option)
-{
-	llassert(mGLTexturep.notNull()) ;
-	mGLTexturep->setFilteringOption(option) ;
-}
-
-//virtual
-S32	LLViewerTexture::getWidth(S32 discard_level) const
-{
-	llassert(mGLTexturep.notNull()) ;
-	return mGLTexturep->getWidth(discard_level) ;
-}
-
-//virtual
-S32	LLViewerTexture::getHeight(S32 discard_level) const
-{
-	llassert(mGLTexturep.notNull()) ;
-	return mGLTexturep->getHeight(discard_level) ;
-}
-
-S32 LLViewerTexture::getMaxDiscardLevel() const
-{
-	llassert(mGLTexturep.notNull()) ;
-	return mGLTexturep->getMaxDiscardLevel() ;
-}
-S32 LLViewerTexture::getDiscardLevel() const
-{
-	llassert(mGLTexturep.notNull()) ;
-	return mGLTexturep->getDiscardLevel() ;
-}
-S8  LLViewerTexture::getComponents() const 
-{ 
-	llassert(mGLTexturep.notNull()) ;
-	
-	return mGLTexturep->getComponents() ;
-}
-
-LLGLuint LLViewerTexture::getTexName() const 
-{ 
-	llassert(mGLTexturep.notNull()) ;
-
-	return mGLTexturep->getTexName() ; 
-}
-
-BOOL LLViewerTexture::hasGLTexture() const 
-{
-	if(mGLTexturep.notNull())
-	{
-		return mGLTexturep->getHasGLTexture() ;
-	}
-	return FALSE ;
-}
-
-BOOL LLViewerTexture::getBoundRecently() const
-{
-	if(mGLTexturep.notNull())
-	{
-		return mGLTexturep->getBoundRecently() ;
-	}
-	return FALSE ;
-}
-
-LLTexUnit::eTextureType LLViewerTexture::getTarget(void) const
-{
-	llassert(mGLTexturep.notNull()) ;
-	return mGLTexturep->getTarget() ;
-}
-
-BOOL LLViewerTexture::setSubImage(const LLImageRaw* imageraw, S32 x_pos, S32 y_pos, S32 width, S32 height)
-{
-	llassert(mGLTexturep.notNull()) ;
-
-	return mGLTexturep->setSubImage(imageraw, x_pos, y_pos, width, height) ;
-}
-
-BOOL LLViewerTexture::setSubImage(const U8* datap, S32 data_width, S32 data_height, S32 x_pos, S32 y_pos, S32 width, S32 height)
-{
-	llassert(mGLTexturep.notNull()) ;
-
-	return mGLTexturep->setSubImage(datap, data_width, data_height, x_pos, y_pos, width, height) ;
-}
-
-void LLViewerTexture::setGLTextureCreated (bool initialized)
-{
-	llassert(mGLTexturep.notNull()) ;
-
-	mGLTexturep->setGLTextureCreated (initialized) ;
-}
-
-void  LLViewerTexture::setCategory(S32 category) 
-{
-	llassert(mGLTexturep.notNull()) ;
-
-	mGLTexturep->setCategory(category) ;
-}
-
-LLTexUnit::eTextureAddressMode LLViewerTexture::getAddressMode(void) const
-{
-	llassert(mGLTexturep.notNull()) ;
-
-	return mGLTexturep->getAddressMode() ;
-}
-
-S32 LLViewerTexture::getTextureMemory() const
-{
-	llassert(mGLTexturep.notNull()) ;
-
-	return mGLTexturep->mTextureMemory ;
-}
-
-LLGLenum LLViewerTexture::getPrimaryFormat() const
-{
-	llassert(mGLTexturep.notNull()) ;
-
-	return mGLTexturep->getPrimaryFormat() ;
-}
-
-BOOL LLViewerTexture::getIsAlphaMask() const
-{
-	llassert(mGLTexturep.notNull()) ;
-
-	return mGLTexturep->getIsAlphaMask() ;
-}
-
-BOOL LLViewerTexture::getMask(const LLVector2 &tc)
-{
-	llassert(mGLTexturep.notNull()) ;
-
-	return mGLTexturep->getMask(tc) ;
-}
-
-F32 LLViewerTexture::getTimePassedSinceLastBound()
-{
-	llassert(mGLTexturep.notNull()) ;
-
-	return mGLTexturep->getTimePassedSinceLastBound() ;
-}
-BOOL LLViewerTexture::getMissed() const 
-{
-	llassert(mGLTexturep.notNull()) ;
-
-	return mGLTexturep->getMissed() ;
-}
-
-BOOL LLViewerTexture::isJustBound() const
-{
-	llassert(mGLTexturep.notNull()) ;
-
-	return mGLTexturep->isJustBound() ;
-}
-
-void LLViewerTexture::forceUpdateBindStats(void) const
-{
-	llassert(mGLTexturep.notNull()) ;
-
-	return mGLTexturep->forceUpdateBindStats() ;
-}
-
-U32 LLViewerTexture::getTexelsInAtlas() const
-{
-	llassert(mGLTexturep.notNull()) ;
-
-	return mGLTexturep->getTexelsInAtlas() ;
-}
-
-U32 LLViewerTexture::getTexelsInGLTexture() const
-{
-	llassert(mGLTexturep.notNull()) ;
-
-	return mGLTexturep->getTexelsInGLTexture() ;
-}
-
-BOOL LLViewerTexture::isGLTextureCreated() const
-{
-	llassert(mGLTexturep.notNull()) ;
-
-	return mGLTexturep->isGLTextureCreated() ;
-}
-
-S32  LLViewerTexture::getDiscardLevelInAtlas() const
-{
-	llassert(mGLTexturep.notNull()) ;
-
-	return mGLTexturep->getDiscardLevelInAtlas() ;
-}
-
-void LLViewerTexture::destroyGLTexture() 
-{
-	if(mGLTexturep.notNull() && mGLTexturep->getHasGLTexture())
-	{
-		mGLTexturep->destroyGLTexture() ;
-		mTextureState = DELETED ;	
-	}	
-}
-
-void LLViewerTexture::setTexelsPerImage()
-{
-	S32 fullwidth = llmin(mFullWidth,(S32)MAX_IMAGE_SIZE_DEFAULT);
-	S32 fullheight = llmin(mFullHeight,(S32)MAX_IMAGE_SIZE_DEFAULT);
-	mTexelsPerImage = (F32)fullwidth * fullheight;
-}
-
 BOOL LLViewerTexture::isLargeImage()
 {
 	return  (S32)mTexelsPerImage > LLViewerTexture::sMinLargeImageSize ;
@@ -1775,7 +1443,7 @@ F32 LLViewerFetchedTexture::calcDecodePriority()
 		// Don't decode anything we don't need
 		priority = -4.0f;
 	}
-	else if ((mBoostLevel == LLViewerTexture::BOOST_UI || mBoostLevel == LLViewerTexture::BOOST_ICON) && !have_all_data)
+	else if ((mBoostLevel == LLGLTexture::BOOST_UI || mBoostLevel == LLGLTexture::BOOST_ICON) && !have_all_data)
 	{
 		priority = 1.f;
 	}
@@ -2161,7 +1829,7 @@ bool LLViewerFetchedTexture::updateFetch()
 		// Load the texture progressively: we try not to rush to the desired discard too fast.
 		// If the camera is not moving, we do not tweak the discard level notch by notch but go to the desired discard with larger boosted steps
 		// This mitigates the "textures stay blurry" problem when loading while not killing the texture memory while moving around
-		S32 delta_level = (mBoostLevel > LLViewerTexture::BOOST_NONE) ? 2 : 1 ; 
+		S32 delta_level = (mBoostLevel > LLGLTexture::BOOST_NONE) ? 2 : 1 ; 
 		if (current_discard < 0)
 		{
 			desired_discard = llmax(desired_discard, getMaxDiscardLevel() - delta_level);
@@ -2412,7 +2080,7 @@ void LLViewerFetchedTexture::deleteCallbackEntry(const LLLoadedCallbackEntry::so
 			destroySavedRawImage() ;
 		}
 	}
-	else if(needsToSaveRawImage() && mBoostLevel != LLViewerTexture::BOOST_PREVIEW)
+	else if(needsToSaveRawImage() && mBoostLevel != LLGLTexture::BOOST_PREVIEW)
 	{
 		if(desired_raw_discard != INVALID_DISCARD_LEVEL)
 		{
@@ -2870,7 +2538,7 @@ void LLViewerFetchedTexture::setCachedRawImage()
 		S32 h = mRawImage->getHeight() ;
 
 		S32 max_size = MAX_CACHED_RAW_IMAGE_AREA ;
-		if(LLViewerTexture::BOOST_TERRAIN == mBoostLevel)
+		if(LLGLTexture::BOOST_TERRAIN == mBoostLevel)
 		{
 			max_size = MAX_CACHED_RAW_TERRAIN_IMAGE_AREA ;
 		}		
@@ -3243,7 +2911,7 @@ void LLViewerLODTexture::processTextureStats()
 		if (mFullWidth > MAX_IMAGE_SIZE_DEFAULT || mFullHeight > MAX_IMAGE_SIZE_DEFAULT)
 			mDesiredDiscardLevel = 1; // MAX_IMAGE_SIZE_DEFAULT = 1024 and max size ever is 2048
 	}
-	else if (mBoostLevel < LLViewerTexture::BOOST_HIGH && mMaxVirtualSize <= 10.f)
+	else if (mBoostLevel < LLGLTexture::BOOST_HIGH && mMaxVirtualSize <= 10.f)
 	{
 		// If the image has not been significantly visible in a while, we don't want it
 		mDesiredDiscardLevel = llmin(mMinDesiredDiscardLevel, (S8)(MAX_DISCARD_LEVEL + 1));
@@ -3293,7 +2961,7 @@ void LLViewerLODTexture::processTextureStats()
 				mCalculatedDiscardLevel = discard_level;
 			}
 		}
-		if (mBoostLevel < LLViewerTexture::BOOST_SCULPTED)
+		if (mBoostLevel < LLGLTexture::BOOST_SCULPTED)
 		{
 			discard_level += sDesiredDiscardBias;
 			discard_level *= sDesiredDiscardScale; // scale
@@ -3319,7 +2987,7 @@ void LLViewerLODTexture::processTextureStats()
 		//
 
 		S32 current_discard = getDiscardLevel();
-		if (sDesiredDiscardBias > 0.0f && mBoostLevel < LLViewerTexture::BOOST_SCULPTED && current_discard >= 0)
+		if (sDesiredDiscardBias > 0.0f && mBoostLevel < LLGLTexture::BOOST_SCULPTED && current_discard >= 0)
 		{
 			if(desired_discard_bias_max <= sDesiredDiscardBias && !mForceToSaveRawImage)
 			{
@@ -3462,7 +3130,7 @@ LLViewerMediaTexture::LLViewerMediaTexture(const LLUUID& id, BOOL usemipmaps, LL
 
 	setMediaImpl() ;
 
-	setCategory(LLViewerTexture::MEDIA) ;
+	setCategory(LLGLTexture::MEDIA) ;
 	
 	LLViewerTexture* tex = gTextureList.findImage(mID) ;
 	if(tex) //this media is a parcel media for tex.
diff --git a/indra/newview/llviewertexture.h b/indra/newview/llviewertexture.h
index 4b92a2bf8a2..d180d7fa999 100755
--- a/indra/newview/llviewertexture.h
+++ b/indra/newview/llviewertexture.h
@@ -27,7 +27,7 @@
 #ifndef LL_LLVIEWERTEXTURE_H					
 #define LL_LLVIEWERTEXTURE_H
 
-#include "lltexture.h"
+#include "llgltexture.h"
 #include "lltimer.h"
 #include "llframetimer.h"
 #include "llhost.h"
@@ -88,14 +88,9 @@ class LLLoadedCallbackEntry
 
 class LLTextureBar;
 
-class LLViewerTexture : public LLTexture
+class LLViewerTexture : public LLGLTexture
 {
 public:
-	enum
-	{
-		MAX_IMAGE_SIZE_DEFAULT = 1024,
-		INVALID_DISCARD_LEVEL = 0x7fff
-	};
 	enum
 	{
 		LOCAL_TEXTURE,		
@@ -107,10 +102,6 @@ class LLViewerTexture : public LLTexture
 		INVALID_TEXTURE_TYPE
 	};
 
-	static S32 getTotalNumOfCategories() ;
-	static S32 getIndexFromCategory(S32 category) ;
-	static S32 getCategoryFromIndex(S32 index) ;
-
 	typedef std::vector<LLFace*> ll_face_list_t;
 	typedef std::vector<LLVOVolume*> ll_volume_list_t;
 
@@ -137,9 +128,6 @@ class LLViewerTexture : public LLTexture
 	
 	/*virtual*/ const LLUUID& getID() const { return mID; }
 	
-	void setBoostLevel(S32 level);
-	S32  getBoostLevel() { return mBoostLevel; }
-
 	void addTextureStats(F32 virtual_size, BOOL needs_gltexture = TRUE) const;
 	void resetTextureStats();	
 	void setMaxVirtualSizeResetInterval(S32 interval)const {mMaxVirtualSizeResetInterval = interval;}
@@ -149,8 +137,6 @@ class LLViewerTexture : public LLTexture
 
 	LLFrameTimer* getLastReferencedTimer() {return &mLastReferencedTimer ;}
 	
-	S32 getFullWidth() const { return mFullWidth; }
-	S32 getFullHeight() const { return mFullHeight; }	
 	/*virtual*/ void setKnownDrawSize(S32 width, S32 height);
 
 	virtual void addFace(LLFace* facep) ;
@@ -163,60 +149,8 @@ class LLViewerTexture : public LLTexture
 	S32 getNumVolumes() const;
 	const ll_volume_list_t* getVolumeList() const { return &mVolumeList; }
 
-	void generateGLTexture() ;
-	void destroyGLTexture() ;
-	
-	//---------------------------------------------------------------------------------------------
-	//functions to access LLImageGL
-	//---------------------------------------------------------------------------------------------
-	/*virtual*/S32	       getWidth(S32 discard_level = -1) const;
-	/*virtual*/S32	       getHeight(S32 discard_level = -1) const;
 	
-	/*virtual*/BOOL       hasGLTexture() const ;
-	LLGLuint   getTexName() const ;		
-	BOOL       createGLTexture() ;
-	/*virtual*/ BOOL       createGLTexture(S32 discard_level, const LLImageRaw* imageraw, S32 usename = 0, BOOL to_create = TRUE, S32 category = LLTexture::OTHER);
 	virtual void setCachedRawImage(S32 discard_level, LLImageRaw* imageraw) ;
-
-	void       setFilteringOption(LLTexUnit::eTextureFilterOptions option);
-	/*virtual*/ void setExplicitFormat(LLGLint internal_format, LLGLenum primary_format, LLGLenum type_format = 0, BOOL swap_bytes = FALSE);
-	/*virtual*/ void setAddressMode(LLTexUnit::eTextureAddressMode mode);
-	BOOL       setSubImage(const LLImageRaw* imageraw, S32 x_pos, S32 y_pos, S32 width, S32 height);
-	BOOL       setSubImage(const U8* datap, S32 data_width, S32 data_height, S32 x_pos, S32 y_pos, S32 width, S32 height);
-	void       setGLTextureCreated (bool initialized);
-	void       setCategory(S32 category) ;
-
-	/*virtual*/ LLTexUnit::eTextureAddressMode getAddressMode(void) const ;
-	S32        getMaxDiscardLevel() const;
-	S32        getDiscardLevel() const;
-	/*virtual*/ S8 getComponents() const;
-	BOOL       getBoundRecently() const;
-	S32        getTextureMemory() const ;
-	LLGLenum   getPrimaryFormat() const;
-	BOOL       getIsAlphaMask() const ;
-	LLTexUnit::eTextureType getTarget(void) const ;
-	BOOL       getMask(const LLVector2 &tc);
-	F32        getTimePassedSinceLastBound();
-	BOOL       getMissed() const ;
-	BOOL       isJustBound()const ;
-	void       forceUpdateBindStats(void) const;
-
-	U32        getTexelsInAtlas() const ;
-	U32        getTexelsInGLTexture() const ;
-	BOOL       isGLTextureCreated() const ;
-	S32        getDiscardLevelInAtlas() const ;
-	//---------------------------------------------------------------------------------------------
-	//end of functions to access LLImageGL
-	//---------------------------------------------------------------------------------------------
-
-	//-----------------
-	/*virtual*/ void setActive() ;
-	void forceActive() ;
-	void setNoDelete() ;
-	void dontDiscard() { mDontDiscard = 1; mTextureState = NO_DELETE; }
-	BOOL getDontDiscard() const { return mDontDiscard; }
-	//-----------------	
-	
 	BOOL isLargeImage() ;	
 	
 	void setParcelMedia(LLViewerMediaTexture* media) {mParcelMedia = media;}
@@ -229,35 +163,21 @@ class LLViewerTexture : public LLTexture
 	void init(bool firstinit) ;	
 	void reorganizeFaceList() ;
 	void reorganizeVolumeList() ;
-	void setTexelsPerImage();
 private:
 	friend class LLBumpImageList;
 	friend class LLUIImageList;
 
-	//note: do not make this function public.
-	/*virtual*/ LLImageGL* getGLTexture() const ;
 	virtual void switchToCachedImage();
 	
 	static bool isMemoryForTextureLow() ;
 protected:
 	LLUUID mID;
-	S32 mBoostLevel;				// enum describing priority level
-	S32 mFullWidth;
-	S32 mFullHeight;
-	BOOL  mUseMipMaps ;
-	S8  mComponents;
-	F32 mTexelsPerImage;			// Texels per image.
-	mutable S8  mNeedsGLTexture;
 	mutable F32 mMaxVirtualSize;	// The largest virtual size of the image, in pixels - how much data to we need?	
 	mutable S32  mMaxVirtualSizeResetCounter ;
 	mutable S32  mMaxVirtualSizeResetInterval;
 	mutable F32 mAdditionalDecodePriority;  // priority add to mDecodePriority.
 	LLFrameTimer mLastReferencedTimer;	
 
-	//GL texture
-	LLPointer<LLImageGL> mGLTexturep ;
-	S8 mDontDiscard;			// Keep full res version of this image (for UI, etc)
-
 	ll_face_list_t    mFaceList ; //reverse pointer pointing to the faces using this image as texture
 	U32               mNumFaces ;
 	LLFrameTimer      mLastFaceListUpdateTimer ;
@@ -269,17 +189,6 @@ class LLViewerTexture : public LLTexture
 	//do not use LLPointer here.
 	LLViewerMediaTexture* mParcelMedia ;
 
-protected:
-	typedef enum 
-	{
-		DELETED = 0,         //removed from memory
-		DELETION_CANDIDATE,  //ready to be removed from memory
-		INACTIVE,            //not be used for the last certain period (i.e., 30 seconds).
-		ACTIVE,              //just being used, can become inactive if not being used for a certain time (10 seconds).
-		NO_DELETE = 99       //stay in memory, can not be removed.
-	} LLGLTextureState;
-	LLGLTextureState  mTextureState ;
-
 	static F32 sTexelPixelRatio;
 public:
 	static const U32 sCurrentFileVersion;	
@@ -475,7 +384,7 @@ class LLViewerFetchedTexture : public LLViewerTexture
 	S32 getCurrentDiscardLevelForFetching() ;
 
 private:
-	void init(bool firstinit) ;
+	void init(bool firstinit) ;	
 	void cleanup() ;
 
 	void saveRawImage() ;
@@ -698,7 +607,7 @@ class LLViewerTextureManager
 
 	static LLViewerFetchedTexture* getFetchedTexture(const LLUUID &image_id,									 
 									 BOOL usemipmap = TRUE,
-									 LLViewerTexture::EBoostLevel boost_priority = LLViewerTexture::BOOST_NONE,		// Get the requested level immediately upon creation.
+									 LLViewerTexture::EBoostLevel boost_priority = LLGLTexture::BOOST_NONE,		// Get the requested level immediately upon creation.
 									 S8 texture_type = LLViewerTexture::FETCHED_TEXTURE,
 									 LLGLint internal_format = 0,
 									 LLGLenum primary_format = 0,
@@ -707,7 +616,7 @@ class LLViewerTextureManager
 	
 	static LLViewerFetchedTexture* getFetchedTextureFromFile(const std::string& filename,									 
 									 BOOL usemipmap = TRUE,
-									 LLViewerTexture::EBoostLevel boost_priority = LLViewerTexture::BOOST_NONE,
+									 LLViewerTexture::EBoostLevel boost_priority = LLGLTexture::BOOST_NONE,
 									 S8 texture_type = LLViewerTexture::FETCHED_TEXTURE,
 									 LLGLint internal_format = 0,
 									 LLGLenum primary_format = 0,
@@ -716,7 +625,7 @@ class LLViewerTextureManager
 
 	static LLViewerFetchedTexture* getFetchedTextureFromUrl(const std::string& url,									 
 									 BOOL usemipmap = TRUE,
-									 LLViewerTexture::EBoostLevel boost_priority = LLViewerTexture::BOOST_NONE,
+									 LLViewerTexture::EBoostLevel boost_priority = LLGLTexture::BOOST_NONE,
 									 S8 texture_type = LLViewerTexture::FETCHED_TEXTURE,
 									 LLGLint internal_format = 0,
 									 LLGLenum primary_format = 0,
diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp
index e4669cde345..b89247ec6f9 100644
--- a/indra/newview/llviewertexturelist.cpp
+++ b/indra/newview/llviewertexturelist.cpp
@@ -198,7 +198,7 @@ void LLViewerTextureList::doPrefetchImages()
 
 		if(LLViewerTexture::FETCHED_TEXTURE == texture_type || LLViewerTexture::LOD_TEXTURE == texture_type)
 		{
-			LLViewerFetchedTexture* image = LLViewerTextureManager::getFetchedTexture(uuid, MIPMAP_TRUE, LLViewerTexture::BOOST_NONE, texture_type);
+			LLViewerFetchedTexture* image = LLViewerTextureManager::getFetchedTexture(uuid, MIPMAP_TRUE, LLGLTexture::BOOST_NONE, texture_type);
 			if (image)
 			{
 				image->addTextureStats((F32)pixel_area);
@@ -339,7 +339,7 @@ LLViewerFetchedTexture* LLViewerTextureList::getImageFromFile(const std::string&
 	if (full_path.empty())
 	{
 		llwarns << "Failed to find local image file: " << filename << llendl;
-		return LLViewerTextureManager::getFetchedTexture(IMG_DEFAULT, TRUE, LLViewerTexture::BOOST_UI);
+		return LLViewerTextureManager::getFetchedTexture(IMG_DEFAULT, TRUE, LLGLTexture::BOOST_UI);
 	}
 
 	std::string url = "file://" + full_path;
@@ -430,7 +430,7 @@ LLViewerFetchedTexture* LLViewerTextureList::getImage(const LLUUID &image_id,
 	
 	if ((&image_id == NULL) || image_id.isNull())
 	{
-		return (LLViewerTextureManager::getFetchedTexture(IMG_DEFAULT, TRUE, LLViewerTexture::BOOST_UI));
+		return (LLViewerTextureManager::getFetchedTexture(IMG_DEFAULT, TRUE, LLGLTexture::BOOST_UI));
 	}
 	
 	LLPointer<LLViewerFetchedTexture> imagep = findImage(image_id);
@@ -1361,7 +1361,7 @@ void LLViewerTextureList::receiveImageHeader(LLMessageSystem *msg, void **user_d
 	U8 *data = new U8[data_size];
 	msg->getBinaryDataFast(_PREHASH_ImageData, _PREHASH_Data, data, data_size);
 	
-	LLViewerFetchedTexture *image = LLViewerTextureManager::getFetchedTexture(id, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
+	LLViewerFetchedTexture *image = LLViewerTextureManager::getFetchedTexture(id, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
 	if (!image)
 	{
 		delete [] data;
@@ -1434,7 +1434,7 @@ void LLViewerTextureList::receiveImagePacket(LLMessageSystem *msg, void **user_d
 	U8 *data = new U8[data_size];
 	msg->getBinaryDataFast(_PREHASH_ImageData, _PREHASH_Data, data, data_size);
 	
-	LLViewerFetchedTexture *image = LLViewerTextureManager::getFetchedTexture(id, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
+	LLViewerFetchedTexture *image = LLViewerTextureManager::getFetchedTexture(id, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
 	if (!image)
 	{
 		delete [] data;
@@ -1534,9 +1534,9 @@ LLUIImagePtr LLUIImageList::getUIImage(const std::string& image_name, S32 priori
 LLUIImagePtr LLUIImageList::loadUIImageByName(const std::string& name, const std::string& filename,
 											  BOOL use_mips, const LLRect& scale_rect, const LLRect& clip_rect, LLViewerTexture::EBoostLevel boost_priority )
 {
-	if (boost_priority == LLViewerTexture::BOOST_NONE)
+	if (boost_priority == LLGLTexture::BOOST_NONE)
 	{
-		boost_priority = LLViewerTexture::BOOST_UI;
+		boost_priority = LLGLTexture::BOOST_UI;
 	}
 	LLViewerFetchedTexture* imagep = LLViewerTextureManager::getFetchedTextureFromFile(filename, MIPMAP_NO, boost_priority);
 	return loadUIImage(imagep, name, use_mips, scale_rect, clip_rect);
@@ -1545,9 +1545,9 @@ LLUIImagePtr LLUIImageList::loadUIImageByName(const std::string& name, const std
 LLUIImagePtr LLUIImageList::loadUIImageByID(const LLUUID& id,
 											BOOL use_mips, const LLRect& scale_rect, const LLRect& clip_rect, LLViewerTexture::EBoostLevel boost_priority)
 {
-	if (boost_priority == LLViewerTexture::BOOST_NONE)
+	if (boost_priority == LLGLTexture::BOOST_NONE)
 	{
-		boost_priority = LLViewerTexture::BOOST_UI;
+		boost_priority = LLGLTexture::BOOST_UI;
 	}
 	LLViewerFetchedTexture* imagep = LLViewerTextureManager::getFetchedTexture(id, MIPMAP_NO, boost_priority);
 	return loadUIImage(imagep, id.asString(), use_mips, scale_rect, clip_rect);
@@ -1572,7 +1572,7 @@ LLUIImagePtr LLUIImageList::loadUIImage(LLViewerFetchedTexture* imagep, const st
 	//Note:
 	//Some other textures such as ICON also through this flow to be fetched.
 	//But only UI textures need to set this callback.
-	if(imagep->getBoostLevel() == LLViewerTexture::BOOST_UI)
+	if(imagep->getBoostLevel() == LLGLTexture::BOOST_UI)
 	{
 		LLUIImageLoadData* datap = new LLUIImageLoadData;
 		datap->mImageName = name;
diff --git a/indra/newview/llviewertexturelist.h b/indra/newview/llviewertexturelist.h
index 3dda973d3fa..05c7c35f7cf 100644
--- a/indra/newview/llviewertexturelist.h
+++ b/indra/newview/llviewertexturelist.h
@@ -131,7 +131,7 @@ class LLViewerTextureList
 
 	LLViewerFetchedTexture * getImage(const LLUUID &image_id,									 
 									 BOOL usemipmap = TRUE,
-									 LLViewerTexture::EBoostLevel boost_priority = LLViewerTexture::BOOST_NONE,		// Get the requested level immediately upon creation.
+									 LLViewerTexture::EBoostLevel boost_priority = LLGLTexture::BOOST_NONE,		// Get the requested level immediately upon creation.
 									 S8 texture_type = LLViewerTexture::FETCHED_TEXTURE,
 									 LLGLint internal_format = 0,
 									 LLGLenum primary_format = 0,
@@ -140,7 +140,7 @@ class LLViewerTextureList
 	
 	LLViewerFetchedTexture * getImageFromFile(const std::string& filename,									 
 									 BOOL usemipmap = TRUE,
-									 LLViewerTexture::EBoostLevel boost_priority = LLViewerTexture::BOOST_NONE,		// Get the requested level immediately upon creation.
+									 LLViewerTexture::EBoostLevel boost_priority = LLGLTexture::BOOST_NONE,		// Get the requested level immediately upon creation.
 									 S8 texture_type = LLViewerTexture::FETCHED_TEXTURE,
 									 LLGLint internal_format = 0,
 									 LLGLenum primary_format = 0,
@@ -149,7 +149,7 @@ class LLViewerTextureList
 	
 	LLViewerFetchedTexture* getImageFromUrl(const std::string& url,
 									 BOOL usemipmap = TRUE,
-									 LLViewerTexture::EBoostLevel boost_priority = LLViewerTexture::BOOST_NONE,		// Get the requested level immediately upon creation.
+									 LLViewerTexture::EBoostLevel boost_priority = LLGLTexture::BOOST_NONE,		// Get the requested level immediately upon creation.
 									 S8 texture_type = LLViewerTexture::FETCHED_TEXTURE,
 									 LLGLint internal_format = 0,
 									 LLGLenum primary_format = 0,
@@ -158,7 +158,7 @@ class LLViewerTextureList
 
 	LLViewerFetchedTexture* createImage(const LLUUID &image_id,
 									 BOOL usemipmap = TRUE,
-									 LLViewerTexture::EBoostLevel boost_priority = LLViewerTexture::BOOST_NONE,		// Get the requested level immediately upon creation.
+									 LLViewerTexture::EBoostLevel boost_priority = LLGLTexture::BOOST_NONE,		// Get the requested level immediately upon creation.
 									 S8 texture_type = LLViewerTexture::FETCHED_TEXTURE,
 									 LLGLint internal_format = 0,
 									 LLGLenum primary_format = 0,
@@ -168,7 +168,7 @@ class LLViewerTextureList
 	// Request image from a specific host, used for baked avatar textures.
 	// Implemented in header in case someone changes default params above. JC
 	LLViewerFetchedTexture* getImageFromHost(const LLUUID& image_id, LLHost host)
-	{ return getImage(image_id, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE, 0, 0, host); }	
+	{ return getImage(image_id, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE, 0, 0, host); }	
 
 public:
 	typedef std::set<LLPointer<LLViewerFetchedTexture> > image_list_t;	
@@ -233,11 +233,11 @@ class LLUIImageList : public LLImageProviderInterface, public LLSingleton<LLUIIm
 	LLPointer<LLUIImage> loadUIImageByName(const std::string& name, const std::string& filename,
 		                           BOOL use_mips = FALSE, const LLRect& scale_rect = LLRect::null, 
 								   const LLRect& clip_rect = LLRect::null,
-		                           LLViewerTexture::EBoostLevel boost_priority = LLViewerTexture::BOOST_UI);
+		                           LLViewerTexture::EBoostLevel boost_priority = LLGLTexture::BOOST_UI);
 	LLPointer<LLUIImage> loadUIImageByID(const LLUUID& id,
 								 BOOL use_mips = FALSE, const LLRect& scale_rect = LLRect::null, 
 								 const LLRect& clip_rect = LLRect::null,
-								 LLViewerTexture::EBoostLevel boost_priority = LLViewerTexture::BOOST_UI);
+								 LLViewerTexture::EBoostLevel boost_priority = LLGLTexture::BOOST_UI);
 
 	LLPointer<LLUIImage> loadUIImage(LLViewerFetchedTexture* imagep, const std::string& name, BOOL use_mips = FALSE, const LLRect& scale_rect = LLRect::null, const LLRect& clip_rect = LLRect::null);
 
diff --git a/indra/newview/llviewerwearable.cpp b/indra/newview/llviewerwearable.cpp
index 0cd3ded3719..34f24ef3302 100644
--- a/indra/newview/llviewerwearable.cpp
+++ b/indra/newview/llviewerwearable.cpp
@@ -401,7 +401,7 @@ void LLViewerWearable::writeToAvatar()
 			{	
 				image_id = getDefaultTextureImageID((ETextureIndex) te);
 			}
-			LLViewerTexture* image = LLViewerTextureManager::getFetchedTexture( image_id, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE );
+			LLViewerTexture* image = LLViewerTextureManager::getFetchedTexture( image_id, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE );
 			// MULTI-WEARABLE: assume index 0 will be used when writing to avatar. TODO: eliminate the need for this.
 			gAgentAvatarp->setLocalTextureTE(te, image, 0);
 		}
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 4aabbd6bb69..d5ca01931f1 100755
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -729,7 +729,7 @@ class LLDebugText
 		if(log_texture_traffic)
 		{	
 			U32 old_y = ypos ;
-			for(S32 i = LLViewerTexture::BOOST_NONE; i < LLViewerTexture::MAX_GL_IMAGE_CATEGORY; i++)
+			for(S32 i = LLGLTexture::BOOST_NONE; i < LLGLTexture::MAX_GL_IMAGE_CATEGORY; i++)
 			{
 				if(gTotalTextureBytesPerBoostLevel[i] > 0)
 				{
@@ -1678,7 +1678,7 @@ LLViewerWindow::LLViewerWindow(const Params& p)
 		
 	// Init the image list.  Must happen after GL is initialized and before the images that
 	// LLViewerWindow needs are requested.
-	LLImageGL::initClass(LLViewerTexture::MAX_GL_IMAGE_CATEGORY) ;
+	LLImageGL::initClass(LLGLTexture::MAX_GL_IMAGE_CATEGORY) ;
 	gTextureList.init();
 	LLViewerTextureManager::init() ;
 	gBumpImageList.init();
diff --git a/indra/newview/llvlcomposition.cpp b/indra/newview/llvlcomposition.cpp
index ec932501e5e..e90a2470d47 100644
--- a/indra/newview/llvlcomposition.cpp
+++ b/indra/newview/llvlcomposition.cpp
@@ -223,7 +223,7 @@ BOOL LLVLComposition::generateComposition()
 	{
 		if (mDetailTextures[i]->getDiscardLevel() < 0)
 		{
-			mDetailTextures[i]->setBoostLevel(LLViewerTexture::BOOST_TERRAIN); // in case we are at low detail
+			mDetailTextures[i]->setBoostLevel(LLGLTexture::BOOST_TERRAIN); // in case we are at low detail
 			mDetailTextures[i]->addTextureStats(BASE_SIZE*BASE_SIZE);
 			return FALSE;
 		}
@@ -240,7 +240,7 @@ BOOL LLVLComposition::generateComposition()
 				ddiscard++;
 				min_dim /= 2;
 			}
-			mDetailTextures[i]->setBoostLevel(LLViewerTexture::BOOST_TERRAIN); // in case we are at low detail
+			mDetailTextures[i]->setBoostLevel(LLGLTexture::BOOST_TERRAIN); // in case we are at low detail
 			mDetailTextures[i]->setMinDiscardLevel(ddiscard);
 			return FALSE;
 		}
@@ -463,7 +463,7 @@ BOOL LLVLComposition::generateTexture(const F32 x, const F32 y,
 	for (S32 i = 0; i < 4; i++)
 	{
 		// Un-boost detatil textures (will get re-boosted if rendering in high detail)
-		mDetailTextures[i]->setBoostLevel(LLViewerTexture::BOOST_NONE);
+		mDetailTextures[i]->setBoostLevel(LLGLTexture::BOOST_NONE);
 		mDetailTextures[i]->setMinDiscardLevel(MAX_DISCARD_LEVEL + 1);
 	}
 	
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 4e17884e0e4..b86c5d5e8f0 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -4698,7 +4698,7 @@ void LLVOAvatar::addBakedTextureStats( LLViewerFetchedTexture* imagep, F32 pixel
 	imagep->addTextureStats(pixel_area / texel_area_ratio);
 	imagep->setBoostLevel(boost_level);
 	
-	if(boost_level != LLViewerTexture::BOOST_AVATAR_BAKED_SELF)
+	if(boost_level != LLGLTexture::BOOST_AVATAR_BAKED_SELF)
 	{
 		imagep->setAdditionalDecodePriority(ADDITIONAL_PRI) ;
 	}
@@ -6748,7 +6748,7 @@ void LLVOAvatar::updateMeshTextures()
 			const std::string url = getImageURL(i, mBakedTextureDatas[i].mLastTextureIndex);
 			if (!url.empty())
 			{
-				baked_img = LLViewerTextureManager::getFetchedTextureFromUrl(url, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE, 0, 0, mBakedTextureDatas[i].mLastTextureIndex);
+				baked_img = LLViewerTextureManager::getFetchedTextureFromUrl(url, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE, 0, 0, mBakedTextureDatas[i].mLastTextureIndex);
 			}
 			else
 			{
@@ -7289,7 +7289,7 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 			&& baked_index != BAKED_SKIRT)
 		{
 			setTEImage(mBakedTextureDatas[baked_index].mTextureIndex, 
-				LLViewerTextureManager::getFetchedTexture(mBakedTextureDatas[baked_index].mLastTextureIndex, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE));
+				LLViewerTextureManager::getFetchedTexture(mBakedTextureDatas[baked_index].mLastTextureIndex, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE));
 		}
 	}
 
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
index d54d06a6a72..b8999728b3d 100755
--- a/indra/newview/llvoavatar.h
+++ b/indra/newview/llvoavatar.h
@@ -563,8 +563,8 @@ class LLVOAvatar :
 	// Constants
 	//--------------------------------------------------------------------
 public:
-	virtual LLViewerTexture::EBoostLevel 	getAvatarBoostLevel() const { return LLViewerTexture::BOOST_AVATAR; }
-	virtual LLViewerTexture::EBoostLevel 	getAvatarBakedBoostLevel() const { return LLViewerTexture::BOOST_AVATAR_BAKED; }
+	virtual LLViewerTexture::EBoostLevel 	getAvatarBoostLevel() const { return LLGLTexture::BOOST_AVATAR; }
+	virtual LLViewerTexture::EBoostLevel 	getAvatarBakedBoostLevel() const { return LLGLTexture::BOOST_AVATAR_BAKED; }
 	virtual S32 						getTexImageSize() const;
 	virtual S32 						getTexImageArea() const { return getTexImageSize()*getTexImageSize(); }
 
diff --git a/indra/newview/llvoavatarself.h b/indra/newview/llvoavatarself.h
index d4bde1f61f3..12886d2d36e 100755
--- a/indra/newview/llvoavatarself.h
+++ b/indra/newview/llvoavatarself.h
@@ -177,8 +177,8 @@ class LLVOAvatarSelf :
 	// LLVOAvatar Constants
 	//--------------------------------------------------------------------
 public:
-	/*virtual*/ LLViewerTexture::EBoostLevel 	getAvatarBoostLevel() const { return LLViewerTexture::BOOST_AVATAR_SELF; }
-	/*virtual*/ LLViewerTexture::EBoostLevel 	getAvatarBakedBoostLevel() const { return LLViewerTexture::BOOST_AVATAR_BAKED_SELF; }
+	/*virtual*/ LLViewerTexture::EBoostLevel 	getAvatarBoostLevel() const { return LLGLTexture::BOOST_AVATAR_SELF; }
+	/*virtual*/ LLViewerTexture::EBoostLevel 	getAvatarBakedBoostLevel() const { return LLGLTexture::BOOST_AVATAR_BAKED_SELF; }
 	/*virtual*/ S32 						getTexImageSize() const { return LLVOAvatar::getTexImageSize()*4; }
 
 /**                    Rendering
diff --git a/indra/newview/llvograss.cpp b/indra/newview/llvograss.cpp
index 566c33c0afc..479e871e94a 100644
--- a/indra/newview/llvograss.cpp
+++ b/indra/newview/llvograss.cpp
@@ -102,7 +102,7 @@ void LLVOGrass::updateSpecies()
 		SpeciesMap::const_iterator it = sSpeciesTable.begin();
 		mSpecies = (*it).first;
 	}
-	setTEImage(0, LLViewerTextureManager::getFetchedTexture(sSpeciesTable[mSpecies]->mTextureID, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE));
+	setTEImage(0, LLViewerTextureManager::getFetchedTexture(sSpeciesTable[mSpecies]->mTextureID, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE));
 }
 
 
diff --git a/indra/newview/llvoicevisualizer.cpp b/indra/newview/llvoicevisualizer.cpp
index 47060720e75..315e618132a 100644
--- a/indra/newview/llvoicevisualizer.cpp
+++ b/indra/newview/llvoicevisualizer.cpp
@@ -136,7 +136,7 @@ LLVoiceVisualizer::LLVoiceVisualizer( const U8 type )
 	for (int i=0; i<NUM_VOICE_SYMBOL_WAVES; i++)
 	{
 		mSoundSymbol.mWaveFadeOutStartTime	[i] = mCurrentTime;
-		mSoundSymbol.mTexture				[i] = LLViewerTextureManager::getFetchedTextureFromFile(sound_level_img[i], FALSE, LLViewerTexture::BOOST_UI);
+		mSoundSymbol.mTexture				[i] = LLViewerTextureManager::getFetchedTextureFromFile(sound_level_img[i], FALSE, LLGLTexture::BOOST_UI);
 		mSoundSymbol.mWaveActive			[i] = false;
 		mSoundSymbol.mWaveOpacity			[i] = 1.0f;
 		mSoundSymbol.mWaveExpansion			[i] = 1.0f;
diff --git a/indra/newview/llvosky.cpp b/indra/newview/llvosky.cpp
index 31358df85fc..bf09e6550d4 100644
--- a/indra/newview/llvosky.cpp
+++ b/indra/newview/llvosky.cpp
@@ -298,7 +298,7 @@ void LLSkyTex::create(const F32 brightness)
 
 void LLSkyTex::createGLImage(S32 which)
 {	
-	mTexture[which]->createGLTexture(0, mImageRaw[which], 0, TRUE, LLViewerTexture::LOCAL);
+	mTexture[which]->createGLTexture(0, mImageRaw[which], 0, TRUE, LLGLTexture::LOCAL);
 	mTexture[which]->setAddressMode(LLTexUnit::TAM_CLAMP);
 }
 
@@ -384,9 +384,9 @@ LLVOSky::LLVOSky(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp)
 	mSun.setIntensity(SUN_INTENSITY);
 	mMoon.setIntensity(0.1f * SUN_INTENSITY);
 
-	mSunTexturep = LLViewerTextureManager::getFetchedTexture(gSunTextureID, TRUE, LLViewerTexture::BOOST_UI);
+	mSunTexturep = LLViewerTextureManager::getFetchedTexture(gSunTextureID, TRUE, LLGLTexture::BOOST_UI);
 	mSunTexturep->setAddressMode(LLTexUnit::TAM_CLAMP);
-	mMoonTexturep = LLViewerTextureManager::getFetchedTexture(gMoonTextureID, TRUE, LLViewerTexture::BOOST_UI);
+	mMoonTexturep = LLViewerTextureManager::getFetchedTexture(gMoonTextureID, TRUE, LLGLTexture::BOOST_UI);
 	mMoonTexturep->setAddressMode(LLTexUnit::TAM_CLAMP);
 	mBloomTexturep = LLViewerTextureManager::getFetchedTexture(IMG_BLOOM1);
 	mBloomTexturep->setNoDelete() ;
@@ -478,9 +478,9 @@ void LLVOSky::restoreGL()
 	{
 		mSkyTex[i].restoreGL();
 	}
-	mSunTexturep = LLViewerTextureManager::getFetchedTexture(gSunTextureID, TRUE, LLViewerTexture::BOOST_UI);
+	mSunTexturep = LLViewerTextureManager::getFetchedTexture(gSunTextureID, TRUE, LLGLTexture::BOOST_UI);
 	mSunTexturep->setAddressMode(LLTexUnit::TAM_CLAMP);
-	mMoonTexturep = LLViewerTextureManager::getFetchedTexture(gMoonTextureID, TRUE, LLViewerTexture::BOOST_UI);
+	mMoonTexturep = LLViewerTextureManager::getFetchedTexture(gMoonTextureID, TRUE, LLGLTexture::BOOST_UI);
 	mMoonTexturep->setAddressMode(LLTexUnit::TAM_CLAMP);
 	mBloomTexturep = LLViewerTextureManager::getFetchedTexture(IMG_BLOOM1);
 	mBloomTexturep->setNoDelete() ;
diff --git a/indra/newview/llvotree.cpp b/indra/newview/llvotree.cpp
index 6687ce432fa..68bb40d7276 100644
--- a/indra/newview/llvotree.cpp
+++ b/indra/newview/llvotree.cpp
@@ -316,7 +316,7 @@ U32 LLVOTree::processUpdateMessage(LLMessageSystem *mesgsys,
 	//  Load Species-Specific data 
 	//
 	static const S32 MAX_TREE_TEXTURE_VIRTURE_SIZE_RESET_INTERVAL = 32 ; //frames.
-	mTreeImagep = LLViewerTextureManager::getFetchedTexture(sSpeciesTable[mSpecies]->mTextureID, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
+	mTreeImagep = LLViewerTextureManager::getFetchedTexture(sSpeciesTable[mSpecies]->mTextureID, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
 	mTreeImagep->setMaxVirtualSizeResetInterval(MAX_TREE_TEXTURE_VIRTURE_SIZE_RESET_INTERVAL); //allow to wait for at most 16 frames to reset virtual size.
 
 	mBranchLength = sSpeciesTable[mSpecies]->mBranchLength;
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
index b43bdb69f8b..7fab1cf9b7b 100644
--- a/indra/newview/llvovolume.cpp
+++ b/indra/newview/llvovolume.cpp
@@ -747,7 +747,7 @@ void LLVOVolume::updateTextureVirtualSize(bool forced)
 		{
 			F32 area = (F32) camera->getScreenPixelArea();
 			vsize = area;
-			imagep->setBoostLevel(LLViewerTexture::BOOST_HUD);
+			imagep->setBoostLevel(LLGLTexture::BOOST_HUD);
  			face->setPixelArea(area); // treat as full screen
 			face->setVirtualSize(vsize);
 		}
@@ -803,7 +803,7 @@ void LLVOVolume::updateTextureVirtualSize(bool forced)
 		if (mSculptTexture.notNull())
 		{
 			mSculptTexture->setBoostLevel(llmax((S32)mSculptTexture->getBoostLevel(),
-												(S32)LLViewerTexture::BOOST_SCULPTED));
+												(S32)LLGLTexture::BOOST_SCULPTED));
 			mSculptTexture->setForSculpt() ;
 			
 			if(!mSculptTexture->isCachedRawImageReady())
@@ -1006,7 +1006,7 @@ BOOL LLVOVolume::setVolume(const LLVolumeParams &params_in, const S32 detail, bo
 	
 	if (is404)
 	{
-		setIcon(LLViewerTextureManager::getFetchedTextureFromFile("icons/Inv_Mesh.png", TRUE, LLViewerTexture::BOOST_UI));
+		setIcon(LLViewerTextureManager::getFetchedTextureFromFile("icons/Inv_Mesh.png", TRUE, LLGLTexture::BOOST_UI));
 		//render prim proxy when mesh loading attempts give up
 		volume_params.setSculptID(LLUUID::null, LL_SCULPT_TYPE_NONE);
 
@@ -1090,7 +1090,7 @@ void LLVOVolume::updateSculptTexture()
 		LLUUID id =  sculpt_params->getSculptTexture();
 		if (id.notNull())
 		{
-			mSculptTexture = LLViewerTextureManager::getFetchedTexture(id, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
+			mSculptTexture = LLViewerTextureManager::getFetchedTexture(id, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
 		}
 	}
 	else
@@ -2698,7 +2698,7 @@ void LLVOVolume::updateSpotLightPriority()
 	if (mLightTexture.notNull())
 	{
 		mLightTexture->addTextureStats(mSpotLightPriority);
-		mLightTexture->setBoostLevel(LLViewerTexture::BOOST_CLOUDS);
+		mLightTexture->setBoostLevel(LLGLTexture::BOOST_CLOUDS);
 	}
 }
 
diff --git a/indra/newview/llworldmap.cpp b/indra/newview/llworldmap.cpp
index cb24e96d5bc..4d52f23ddb5 100644
--- a/indra/newview/llworldmap.cpp
+++ b/indra/newview/llworldmap.cpp
@@ -78,7 +78,7 @@ void LLSimInfo::setLandForSaleImage (LLUUID image_id)
 	// Fetch the image
 	if (mMapImageID.notNull())
 	{
-		mOverlayImage = LLViewerTextureManager::getFetchedTexture(mMapImageID, MIPMAP_TRUE, LLViewerTexture::BOOST_MAP, LLViewerTexture::LOD_TEXTURE);
+		mOverlayImage = LLViewerTextureManager::getFetchedTexture(mMapImageID, MIPMAP_TRUE, LLGLTexture::BOOST_MAP, LLViewerTexture::LOD_TEXTURE);
 		mOverlayImage->setAddressMode(LLTexUnit::TAM_CLAMP);
 	}
 	else
@@ -92,13 +92,13 @@ LLPointer<LLViewerFetchedTexture> LLSimInfo::getLandForSaleImage ()
 	if (mOverlayImage.isNull() && mMapImageID.notNull())
 	{
 		// Fetch the image if it hasn't been done yet (unlikely but...)
-		mOverlayImage = LLViewerTextureManager::getFetchedTexture(mMapImageID, MIPMAP_TRUE, LLViewerTexture::BOOST_MAP, LLViewerTexture::LOD_TEXTURE);
+		mOverlayImage = LLViewerTextureManager::getFetchedTexture(mMapImageID, MIPMAP_TRUE, LLGLTexture::BOOST_MAP, LLViewerTexture::LOD_TEXTURE);
 		mOverlayImage->setAddressMode(LLTexUnit::TAM_CLAMP);
 	}
 	if (!mOverlayImage.isNull())
 	{
 		// Boost the fetch level when we try to access that image
-		mOverlayImage->setBoostLevel(LLViewerTexture::BOOST_MAP);
+		mOverlayImage->setBoostLevel(LLGLTexture::BOOST_MAP);
 	}
 	return mOverlayImage;
 }
diff --git a/indra/newview/llworldmipmap.cpp b/indra/newview/llworldmipmap.cpp
index 74ed844376e..c9d2a24a4ee 100644
--- a/indra/newview/llworldmipmap.cpp
+++ b/indra/newview/llworldmipmap.cpp
@@ -74,21 +74,21 @@ void LLWorldMipmap::equalizeBoostLevels()
 		{
 			LLPointer<LLViewerFetchedTexture> img = iter->second;
 			S32 current_boost_level = img->getBoostLevel();
-			if (current_boost_level == LLViewerTexture::BOOST_MAP_VISIBLE)
+			if (current_boost_level == LLGLTexture::BOOST_MAP_VISIBLE)
 			{
 				// If level was BOOST_MAP_VISIBLE, the tile has been used in the last draw so keep it high
-				img->setBoostLevel(LLViewerTexture::BOOST_MAP);
+				img->setBoostLevel(LLGLTexture::BOOST_MAP);
 			}
 			else
 			{
 				// If level was BOOST_MAP only (or anything else...), the tile wasn't used in the last draw 
 				// so we drop its boost level to BOOST_NONE.
-				img->setBoostLevel(LLViewerTexture::BOOST_NONE);
+				img->setBoostLevel(LLGLTexture::BOOST_NONE);
 			}
 #if DEBUG_TILES_STAT
 			// Increment some stats if compile option on
 			nb_tiles++;
-			if (current_boost_level == LLViewerTexture::BOOST_MAP_VISIBLE)
+			if (current_boost_level == LLGLTexture::BOOST_MAP_VISIBLE)
 			{
 				nb_visible++;
 			}
@@ -115,7 +115,7 @@ void LLWorldMipmap::dropBoostLevels()
 		for (sublevel_tiles_t::iterator iter = level_mipmap.begin(); iter != level_mipmap.end(); iter++)
 		{
 			LLPointer<LLViewerFetchedTexture> img = iter->second;
-			img->setBoostLevel(LLViewerTexture::BOOST_NONE);
+			img->setBoostLevel(LLGLTexture::BOOST_NONE);
 		}
 	}
 }
@@ -172,7 +172,7 @@ LLPointer<LLViewerFetchedTexture> LLWorldMipmap::getObjectsTile(U32 grid_x, U32
 		// Boost the tile level so to mark it's in use *if* load on
 		if (load)
 		{
-			img->setBoostLevel(LLViewerTexture::BOOST_MAP_VISIBLE);
+			img->setBoostLevel(LLGLTexture::BOOST_MAP_VISIBLE);
 		}
 		return img;
 	}
@@ -189,8 +189,8 @@ LLPointer<LLViewerFetchedTexture> LLWorldMipmap::loadObjectsTile(U32 grid_x, U32
 	// END DEBUG
 	//LL_INFOS("World Map") << "LLWorldMipmap::loadObjectsTile(), URL = " << imageurl << LL_ENDL;
 
-	LLPointer<LLViewerFetchedTexture> img = LLViewerTextureManager::getFetchedTextureFromUrl(imageurl, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
-	img->setBoostLevel(LLViewerTexture::BOOST_MAP);
+	LLPointer<LLViewerFetchedTexture> img = LLViewerTextureManager::getFetchedTextureFromUrl(imageurl, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
+	img->setBoostLevel(LLGLTexture::BOOST_MAP);
 
 	// Return the smart pointer
 	return img;
diff --git a/indra/newview/tests/llworldmap_test.cpp b/indra/newview/tests/llworldmap_test.cpp
index acc6e814bc7..3c68890c36e 100644
--- a/indra/newview/tests/llworldmap_test.cpp
+++ b/indra/newview/tests/llworldmap_test.cpp
@@ -47,9 +47,9 @@
 // * A simulator for a class can be implemented here. Please comment and document thoroughly.
 
 // Stub image calls
-void LLViewerTexture::setBoostLevel(S32 ) { }
-void LLViewerTexture::setAddressMode(LLTexUnit::eTextureAddressMode ) { }
-LLViewerFetchedTexture* LLViewerTextureManager::getFetchedTexture(const LLUUID&, BOOL, LLViewerTexture::EBoostLevel, S8,
+void LLGLTexture::setBoostLevel(S32 ) { }
+void LLGLTexture::setAddressMode(LLTexUnit::eTextureAddressMode ) { }
+LLViewerFetchedTexture* LLViewerTextureManager::getFetchedTexture(const LLUUID&, BOOL, LLGLTexture::EBoostLevel, S8,
 																  LLGLint, LLGLenum, LLHost ) { return NULL; }
 
 // Stub related map calls
diff --git a/indra/newview/tests/llworldmipmap_test.cpp b/indra/newview/tests/llworldmipmap_test.cpp
index e7ef0177608..22ebf28f557 100644
--- a/indra/newview/tests/llworldmipmap_test.cpp
+++ b/indra/newview/tests/llworldmipmap_test.cpp
@@ -42,8 +42,8 @@
 // * Do not make any assumption as to how those classes or methods work (i.e. don't copy/paste code)
 // * A simulator for a class can be implemented here. Please comment and document thoroughly.
 
-void LLViewerTexture::setBoostLevel(S32 ) { }
-LLViewerFetchedTexture* LLViewerTextureManager::getFetchedTextureFromUrl(const std::string&, BOOL, LLViewerTexture::EBoostLevel, S8, 
+void LLGLTexture::setBoostLevel(S32 ) { }
+LLViewerFetchedTexture* LLViewerTextureManager::getFetchedTextureFromUrl(const std::string&, BOOL, LLGLTexture::EBoostLevel, S8, 
 																		 LLGLint, LLGLenum, const LLUUID& ) { return NULL; }
 
 LLControlGroup::LLControlGroup(const std::string& name) : LLInstanceTracker<LLControlGroup, std::string>(name) { }
-- 
GitLab


From 0f519ca167071e06e326dfc0494768f978e2328e Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Tue, 4 Sep 2012 17:47:16 +0000
Subject: [PATCH 053/436] Set virtual inheritance on LLTexture -> LLRefCount

---
 indra/llrender/lltexture.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/llrender/lltexture.h b/indra/llrender/lltexture.h
index 2f9eb9b6424..093bac20d14 100644
--- a/indra/llrender/lltexture.h
+++ b/indra/llrender/lltexture.h
@@ -40,7 +40,7 @@ class LLFontGL ;
 //
 //this is an abstract class as the parent for the class LLGLTexture
 //
-class LLTexture : public LLRefCount
+class LLTexture : public virtual LLRefCount
 {
 	friend class LLTexUnit ;
 	friend class LLFontGL ;
-- 
GitLab


From 41301004e13bec1c74f444f42372a3a6609cb305 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Tue, 4 Sep 2012 22:49:26 +0000
Subject: [PATCH 054/436] Cleanup actions from code review of llappearance with
 nyx

---
 indra/cmake/CMakeLists.txt                | 1 -
 indra/cmake/Viewer.cmake                  | 7 -------
 indra/llappearance/CMakeLists.txt         | 1 -
 indra/llappearance/llavatarappearance.cpp | 9 +++++++++
 indra/llappearance/llavatarappearance.h   | 3 ++-
 indra/llappearance/lltexlayer.h           | 2 +-
 indra/llcharacter/CMakeLists.txt          | 1 -
 indra/llrender/llgltexture.h              | 4 ++--
 indra/newview/lldriverparam.cpp           | 4 ++--
 indra/newview/lltexturefetch.cpp          | 6 ------
 indra/newview/llviewertexlayer.cpp        | 7 ++++---
 indra/newview/llviewertexlayer.h          | 2 +-
 indra/newview/llviewertexture.h           | 1 -
 indra/newview/llvoavatar.h                | 5 ++---
 14 files changed, 23 insertions(+), 30 deletions(-)
 delete mode 100644 indra/cmake/Viewer.cmake

diff --git a/indra/cmake/CMakeLists.txt b/indra/cmake/CMakeLists.txt
index 875b5be1526..5935eeb1920 100644
--- a/indra/cmake/CMakeLists.txt
+++ b/indra/cmake/CMakeLists.txt
@@ -78,7 +78,6 @@ set(cmake_SOURCE_FILES
     Tut.cmake
     UI.cmake
     UnixInstall.cmake
-    Viewer.cmake
     Variables.cmake
     XmlRpcEpi.cmake
     ZLIB.cmake
diff --git a/indra/cmake/Viewer.cmake b/indra/cmake/Viewer.cmake
deleted file mode 100644
index 771bb0ed7ae..00000000000
--- a/indra/cmake/Viewer.cmake
+++ /dev/null
@@ -1,7 +0,0 @@
-# -*- cmake -*-
-
-set(VIEWER_INCLUDE_DIRS
-    ${LIBS_OPEN_DIR}/newview
-    )
-
-set(VIEWER_LIBRARIES viewer)
diff --git a/indra/llappearance/CMakeLists.txt b/indra/llappearance/CMakeLists.txt
index f77c7e6440d..0206f76546a 100644
--- a/indra/llappearance/CMakeLists.txt
+++ b/indra/llappearance/CMakeLists.txt
@@ -4,7 +4,6 @@ project(llappearance)
 
 include(00-Common)
 include(LLCommon)
-include(Viewer)
 include(LLAudio)
 include(LLCharacter)
 include(LLCommon)
diff --git a/indra/llappearance/llavatarappearance.cpp b/indra/llappearance/llavatarappearance.cpp
index 2cc38ae2ab8..75b9c1ffa5d 100644
--- a/indra/llappearance/llavatarappearance.cpp
+++ b/indra/llappearance/llavatarappearance.cpp
@@ -27,6 +27,7 @@
 #include "linden_common.h"
 
 #include "llavatarappearance.h"
+#include "lldeleteutils.h"
 #include "lltexglobalcolor.h"
 
 const LLColor4 DUMMY_COLOR = LLColor4(0.5,0.5,0.5,1.0);
@@ -40,6 +41,14 @@ LLAvatarAppearance::LLAvatarAppearance() :
 {
 }
 
+// virtual
+LLAvatarAppearance::~LLAvatarAppearance()
+{
+	deleteAndClear(mTexSkinColor);
+	deleteAndClear(mTexHairColor);
+	deleteAndClear(mTexEyeColor);
+}
+
 using namespace LLAvatarAppearanceDefines;
 
 //static
diff --git a/indra/llappearance/llavatarappearance.h b/indra/llappearance/llavatarappearance.h
index e882868e919..0e746b3b9dc 100644
--- a/indra/llappearance/llavatarappearance.h
+++ b/indra/llappearance/llavatarappearance.h
@@ -28,7 +28,7 @@
 #define LL_AVATAR_APPEARANCE_H
 
 #include "llcharacter.h"
-#include "llframetimer.h"
+//#include "llframetimer.h"
 #include "llavatarappearancedefines.h"
 
 class LLTexLayerSet;
@@ -50,6 +50,7 @@ class LLAvatarAppearance : public LLCharacter
 
 public:
 	LLAvatarAppearance();
+	virtual ~LLAvatarAppearance();
 
 /**                    Initialization
  **                                                                            **
diff --git a/indra/llappearance/lltexlayer.h b/indra/llappearance/lltexlayer.h
index e9e17647638..e6c2ece64ae 100644
--- a/indra/llappearance/lltexlayer.h
+++ b/indra/llappearance/lltexlayer.h
@@ -29,7 +29,7 @@
 
 #include <deque>
 #include "llgltexture.h"
-#include "llframetimer.h"
+//#include "llframetimer.h"
 #include "llavatarappearancedefines.h"
 #include "lltexlayerparams.h"
 
diff --git a/indra/llcharacter/CMakeLists.txt b/indra/llcharacter/CMakeLists.txt
index e9704d56359..a1712699eb2 100644
--- a/indra/llcharacter/CMakeLists.txt
+++ b/indra/llcharacter/CMakeLists.txt
@@ -15,7 +15,6 @@ include_directories(
     ${LLMESSAGE_INCLUDE_DIRS}
     ${LLVFS_INCLUDE_DIRS}
     ${LLXML_INCLUDE_DIRS}
-    ${LLAPPEARANCE_INCLUDE_DIRS}
     )
 
 set(llcharacter_SOURCE_FILES
diff --git a/indra/llrender/llgltexture.h b/indra/llrender/llgltexture.h
index a02946d37f7..b1efe77519c 100644
--- a/indra/llrender/llgltexture.h
+++ b/indra/llrender/llgltexture.h
@@ -94,6 +94,8 @@ class LLGLTexture : public LLTexture
 
 	virtual void dump();	// debug info to llinfos
 
+	virtual const LLUUID& getID() const = 0;
+
 	void setBoostLevel(S32 level);
 	S32  getBoostLevel() { return mBoostLevel; }
 
@@ -103,8 +105,6 @@ class LLGLTexture : public LLTexture
 	void generateGLTexture() ;
 	void destroyGLTexture() ;
 
-	virtual const LLUUID& getID() const = 0;
-
 	//---------------------------------------------------------------------------------------------
 	//functions to access LLImageGL
 	//---------------------------------------------------------------------------------------------
diff --git a/indra/newview/lldriverparam.cpp b/indra/newview/lldriverparam.cpp
index 0ae9acd1afd..5abf72d51f4 100644
--- a/indra/newview/lldriverparam.cpp
+++ b/indra/newview/lldriverparam.cpp
@@ -629,9 +629,9 @@ void LLDriverParam::setDrivenWeight(LLDrivenEntry *driven, F32 driven_weight, bo
 		driven->mParam->getCrossWearable())
 	{
 		LLViewerWearable* wearable = dynamic_cast<LLViewerWearable*> (mWearablep);
-		if (!wearable->isOnTop())
+		if (wearable->isOnTop())
 		{
-			use_self = false;
+			use_self = true;
 		}
 	}
 
diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp
index 16baefac4f7..db08c16f15b 100644
--- a/indra/newview/lltexturefetch.cpp
+++ b/indra/newview/lltexturefetch.cpp
@@ -973,12 +973,6 @@ bool LLTextureFetchWorker::doWork(S32 param)
 			}
 			else if(!mUrl.empty() && mCanUseHTTP)
 			{
-				if (!(mUrl.compare(0, 7, "http://") == 0) &&
-				    !(mUrl.compare(0, 8, "https://") == 0))
-				{
-					// *TODO:?remove this warning
-					llwarns << "Unknown URL Type: " << mUrl << llendl;
-				}
 				setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority);
 				mState = SEND_HTTP_REQ;
 			}
diff --git a/indra/newview/llviewertexlayer.cpp b/indra/newview/llviewertexlayer.cpp
index 69457ab1db2..f516562c2fd 100644
--- a/indra/newview/llviewertexlayer.cpp
+++ b/indra/newview/llviewertexlayer.cpp
@@ -214,9 +214,6 @@ void LLViewerTexLayerSetBuffer::preRenderTexLayerSet()
 // virtual
 void LLViewerTexLayerSetBuffer::postRenderTexLayerSet(BOOL success)
 {
-	// *TODO: Old logic does not check success before setGLTextureCreated
-	// we have valid texture data now
-	mGLTexturep->setGLTextureCreated(true);
 
 	LLTexLayerSetBuffer::postRenderTexLayerSet(success);
 	LLViewerDynamicTexture::postRender(success);
@@ -259,6 +256,10 @@ void LLViewerTexLayerSetBuffer::midRenderTexLayerSet(BOOL success)
 	{
 		doUpdate();
 	}
+
+	// *TODO: Old logic does not check success before setGLTextureCreated
+	// we have valid texture data now
+	mGLTexturep->setGLTextureCreated(true);
 }
 
 BOOL LLViewerTexLayerSetBuffer::isInitialized(void) const
diff --git a/indra/newview/llviewertexlayer.h b/indra/newview/llviewertexlayer.h
index 6788214f3af..95c339a5b00 100644
--- a/indra/newview/llviewertexlayer.h
+++ b/indra/newview/llviewertexlayer.h
@@ -45,7 +45,7 @@ class LLViewerTexLayerSet : public LLTexLayerSet
 	LLViewerTexLayerSet(LLAvatarAppearance* const appearance);
 	virtual ~LLViewerTexLayerSet();
 
-	virtual void				requestUpdate();
+	/*virtual*/void				requestUpdate();
 	void						requestUpload();
 	void						cancelUpload();
 	BOOL						isLocalTextureDataAvailable() const;
diff --git a/indra/newview/llviewertexture.h b/indra/newview/llviewertexture.h
index d180d7fa999..254a0cf92f9 100755
--- a/indra/newview/llviewertexture.h
+++ b/indra/newview/llviewertexture.h
@@ -637,7 +637,6 @@ class LLViewerTextureManager
 	static void init() ;
 	static void cleanup() ;
 };
-
 //
 //this class is used for test/debug only
 //it tracks the activities of the texture pipeline
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
index b8999728b3d..5f780da145e 100755
--- a/indra/newview/llvoavatar.h
+++ b/indra/newview/llvoavatar.h
@@ -473,14 +473,14 @@ class LLVOAvatar :
 public:
 	BOOL 		morphMaskNeedsUpdate(LLAvatarAppearanceDefines::EBakedTextureIndex index = LLAvatarAppearanceDefines::BAKED_NUM_INDICES);
 	void 		addMaskedMorph(LLAvatarAppearanceDefines::EBakedTextureIndex index, LLPolyMorphTarget* morph_target, BOOL invert, std::string layer);
-	virtual void	applyMorphMask(U8* tex_data, S32 width, S32 height, S32 num_components, LLAvatarAppearanceDefines::EBakedTextureIndex index = LLAvatarAppearanceDefines::BAKED_NUM_INDICES);
+	/*virtual*/void applyMorphMask(U8* tex_data, S32 width, S32 height, S32 num_components, LLAvatarAppearanceDefines::EBakedTextureIndex index = LLAvatarAppearanceDefines::BAKED_NUM_INDICES);
 
 	
 	//--------------------------------------------------------------------
 	// Global colors
 	//--------------------------------------------------------------------
 public:
-	virtual void	onGlobalColorChanged(const LLTexGlobalColor* global_color, BOOL upload_bake);
+	/*virtual*/void onGlobalColorChanged(const LLTexGlobalColor* global_color, BOOL upload_bake);
 
 	//--------------------------------------------------------------------
 	// Visibility
@@ -1039,7 +1039,6 @@ class LLVOAvatar :
 	void 			debugAvatarRezTime(std::string notification_name, std::string comment = "");
 	F32				debugGetExistenceTimeElapsedF32() const { return mDebugExistenceTimer.getElapsedTimeF32(); }
 
-
 protected:
 	LLFrameTimer	mRuthDebugTimer; // For tracking how long it takes for av to rez
 	LLFrameTimer	mDebugExistenceTimer; // Debugging for how long the avatar has been in memory.
-- 
GitLab


From b146490e1b46799ccb35e156b4751eddea3a23ce Mon Sep 17 00:00:00 2001
From: "Nyx (Neal Orman)" <nyx@lindenlab.com>
Date: Wed, 5 Sep 2012 17:46:11 -0400
Subject: [PATCH 055/436] SH-3264 Worked to move over mBakedTextureDatas from
 LLVOAvatar to LLAvatarAppearance.

Appear to have been able to move over the parts that are common to both the backend and the viewer
into LLAvatarAppearance.
---
 indra/llappearance/llavatarappearance.cpp |  38 ++++++
 indra/llappearance/llavatarappearance.h   |  39 ++++++
 indra/newview/llvoavatar.cpp              | 139 ++++++++++++----------
 indra/newview/llvoavatar.h                |  38 +-----
 indra/newview/llvoavatarself.cpp          |  57 +++++----
 indra/newview/llvoavatarself.h            |   2 +-
 6 files changed, 190 insertions(+), 123 deletions(-)

diff --git a/indra/llappearance/llavatarappearance.cpp b/indra/llappearance/llavatarappearance.cpp
index 75b9c1ffa5d..81a1d3965cd 100644
--- a/indra/llappearance/llavatarappearance.cpp
+++ b/indra/llappearance/llavatarappearance.cpp
@@ -26,7 +26,10 @@
 
 #include "linden_common.h"
 
+
 #include "llavatarappearance.h"
+#include "llavatarappearancedefines.h"
+#include "imageids.h"
 #include "lldeleteutils.h"
 #include "lltexglobalcolor.h"
 
@@ -39,6 +42,16 @@ LLAvatarAppearance::LLAvatarAppearance() :
 	mTexEyeColor( NULL ),
 	mIsDummy(FALSE)
 {
+	mBakedTextureDatas.resize(LLAvatarAppearanceDefines::BAKED_NUM_INDICES);
+	for (U32 i = 0; i < mBakedTextureDatas.size(); i++ )
+	{
+		mBakedTextureDatas[i].mLastTextureIndex = IMG_DEFAULT_AVATAR;
+		mBakedTextureDatas[i].mTexLayerSet = NULL;
+		mBakedTextureDatas[i].mIsLoaded = false;
+		mBakedTextureDatas[i].mIsUsed = false;
+		mBakedTextureDatas[i].mMaskTexName = 0;
+		mBakedTextureDatas[i].mTextureIndex = LLAvatarAppearanceDefines::LLAvatarAppearanceDictionary::bakedToLocalTextureIndex((LLAvatarAppearanceDefines::EBakedTextureIndex)i);
+	}
 }
 
 // virtual
@@ -47,10 +60,35 @@ LLAvatarAppearance::~LLAvatarAppearance()
 	deleteAndClear(mTexSkinColor);
 	deleteAndClear(mTexHairColor);
 	deleteAndClear(mTexEyeColor);
+
+	for (U32 i = 0; i < mBakedTextureDatas.size(); i++)
+	{
+		deleteAndClear(mBakedTextureDatas[i].mTexLayerSet);
+		mBakedTextureDatas[i].mMeshes.clear();
+
+		for (morph_list_t::iterator iter2 = mBakedTextureDatas[i].mMaskedMorphs.begin();
+			 iter2 != mBakedTextureDatas[i].mMaskedMorphs.end(); iter2++)
+		{
+			LLMaskedMorph* masked_morph = (*iter2);
+			delete masked_morph;
+		}
+	}
 }
 
 using namespace LLAvatarAppearanceDefines;
 
+
+// adds a morph mask to the appropriate baked texture structure
+void LLAvatarAppearance::addMaskedMorph(EBakedTextureIndex index, LLVisualParam* morph_target, BOOL invert, std::string layer)
+{
+	if (index < BAKED_NUM_INDICES)
+	{
+		LLMaskedMorph *morph = new LLMaskedMorph(morph_target, invert, layer);
+		mBakedTextureDatas[index].mMaskedMorphs.push_front(morph);
+	}
+}
+
+
 //static
 BOOL LLAvatarAppearance::teToColorParams( ETextureIndex te, U32 *param_name )
 {
diff --git a/indra/llappearance/llavatarappearance.h b/indra/llappearance/llavatarappearance.h
index 0e746b3b9dc..9bff6b111e3 100644
--- a/indra/llappearance/llavatarappearance.h
+++ b/indra/llappearance/llavatarappearance.h
@@ -30,6 +30,7 @@
 #include "llcharacter.h"
 //#include "llframetimer.h"
 #include "llavatarappearancedefines.h"
+#include "lljoint.h"
 
 class LLTexLayerSet;
 class LLTexGlobalColor;
@@ -79,6 +80,7 @@ class LLAvatarAppearance : public LLCharacter
 	// Morph masks
 	//--------------------------------------------------------------------
 public:
+	void 	addMaskedMorph(LLAvatarAppearanceDefines::EBakedTextureIndex index, LLVisualParam* morph_target, BOOL invert, std::string layer);
 	virtual void	applyMorphMask(U8* tex_data, S32 width, S32 height, S32 num_components, LLAvatarAppearanceDefines::EBakedTextureIndex index = LLAvatarAppearanceDefines::BAKED_NUM_INDICES) = 0;
 
 /**                    Rendering
@@ -153,6 +155,43 @@ class LLAvatarAppearance : public LLCharacter
 	virtual LLWearable*			getWearable(const LLWearableType::EType type, U32 index /*= 0*/) = 0;
 	virtual const LLWearable* 	getWearable(const LLWearableType::EType type, U32 index /*= 0*/) const = 0;
 
+/********************************************************************************
+ **                                                                            **
+ **                    BAKED TEXTURES
+ **/
+protected:
+	struct LLMaskedMorph;
+	typedef std::deque<LLMaskedMorph *> 	morph_list_t;
+	struct BakedTextureData
+	{
+		LLUUID								mLastTextureIndex;
+		LLTexLayerSet*		 				mTexLayerSet; // Only exists for self
+		bool								mIsLoaded;
+		bool								mIsUsed;
+		LLAvatarAppearanceDefines::ETextureIndex 	mTextureIndex;
+		U32									mMaskTexName;
+		// Stores pointers to the joint meshes that this baked texture deals with
+		std::vector< LLJoint* > 	mMeshes;  // std::vector<LLViewerJointMesh> mJoints[i]->mMeshParts
+		morph_list_t						mMaskedMorphs;
+	};
+	typedef std::vector<BakedTextureData> 	bakedtexturedata_vec_t;
+	bakedtexturedata_vec_t 					mBakedTextureDatas;
+
+
+/********************************************************************************
+ **                                                                            **
+ **                    SUPPORT CLASSES
+ **/
+
+	class LLMaskedMorph
+	{
+	public:
+		LLMaskedMorph(LLVisualParam *morph_target, BOOL invert, std::string layer);
+
+		LLVisualParam	*mMorphTarget;
+		BOOL				mInvert;
+		std::string			mLayer;
+	};
 
 };
 
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index b86c5d5e8f0..ce0b65ca89c 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -703,17 +703,6 @@ LLVOAvatar::LLVOAvatar(const LLUUID& id,
 
 	mPelvisp = NULL;
 
-	mBakedTextureDatas.resize(BAKED_NUM_INDICES);
-	for (U32 i = 0; i < mBakedTextureDatas.size(); i++ )
-	{
-		mBakedTextureDatas[i].mLastTextureIndex = IMG_DEFAULT_AVATAR;
-		mBakedTextureDatas[i].mTexLayerSet = NULL;
-		mBakedTextureDatas[i].mIsLoaded = false;
-		mBakedTextureDatas[i].mIsUsed = false;
-		mBakedTextureDatas[i].mMaskTexName = 0;
-		mBakedTextureDatas[i].mTextureIndex = LLAvatarAppearanceDictionary::bakedToLocalTextureIndex((EBakedTextureIndex)i);
-	}
-
 	mDirtyMesh = 2;	// Dirty geometry, need to regenerate.
 	mMeshTexturesDirty = FALSE;
 	mHeadp = NULL;
@@ -821,19 +810,6 @@ LLVOAvatar::~LLVOAvatar()
 
 	mNumJoints = 0;
 
-	for (U32 i = 0; i < mBakedTextureDatas.size(); i++)
-	{
-		deleteAndClear(mBakedTextureDatas[i].mTexLayerSet);
-		mBakedTextureDatas[i].mMeshes.clear();
-
-		for (morph_list_t::iterator iter2 = mBakedTextureDatas[i].mMaskedMorphs.begin();
-			 iter2 != mBakedTextureDatas[i].mMaskedMorphs.end(); iter2++)
-		{
-			LLMaskedMorph* masked_morph = (*iter2);
-			delete masked_morph;
-		}
-	}
-
 	std::for_each(mAttachmentPoints.begin(), mAttachmentPoints.end(), DeletePairedPointer());
 	mAttachmentPoints.clear();
 
@@ -1102,7 +1078,7 @@ void LLVOAvatar::restoreGL()
 	gAgentAvatarp->setCompositeUpdatesEnabled(TRUE);
 	for (U32 i = 0; i < gAgentAvatarp->mBakedTextureDatas.size(); i++)
 	{
-		gAgentAvatarp->invalidateComposite(gAgentAvatarp->mBakedTextureDatas[i].mTexLayerSet, FALSE);
+		gAgentAvatarp->invalidateComposite(gAgentAvatarp->getTexLayerSet(i), FALSE);
 	}
 	gAgentAvatarp->updateMeshTextures();
 }
@@ -5518,9 +5494,9 @@ BOOL LLVOAvatar::loadAvatar()
 		EBakedTextureIndex baked = LLAvatarAppearanceDictionary::findBakedByRegionName(info->mRegion); 
 		if (baked != BAKED_NUM_INDICES)
 		{
-			LLPolyMorphTarget *morph_param;
+			LLVisualParam* morph_param;
 			const std::string *name = &info->mName;
-			morph_param = (LLPolyMorphTarget *)(getVisualParam(name->c_str()));
+			morph_param = getVisualParam(name->c_str());
 			if (morph_param)
 			{
 				BOOL invert = info->mInvert;
@@ -6504,7 +6480,11 @@ void LLVOAvatar::onGlobalColorChanged(const LLTexGlobalColor* global_color, BOOL
 			LLColor4 color = mTexHairColor->getColor();
 			for (U32 i = 0; i < mBakedTextureDatas[BAKED_HAIR].mMeshes.size(); i++)
 			{
-				mBakedTextureDatas[BAKED_HAIR].mMeshes[i]->setColor( color.mV[VX], color.mV[VY], color.mV[VZ], color.mV[VW] );
+				LLViewerJointMesh* mesh = dynamic_cast<LLViewerJointMesh*>(mBakedTextureDatas[BAKED_HAIR].mMeshes[i]);
+				if (mesh)
+				{
+					mesh->setColor( color.mV[VX], color.mV[VY], color.mV[VZ], color.mV[VW] );
+				}
 			}
 		}
 	} 
@@ -6721,15 +6701,16 @@ void LLVOAvatar::updateMeshTextures()
 			// When an avatar is changing clothes and not in Appearance mode,
 			// use the last-known good baked texture until it finish the first
 			// render of the new layerset.
-			const BOOL layerset_invalid = mBakedTextureDatas[i].mTexLayerSet 
-										  && ( !mBakedTextureDatas[i].mTexLayerSet->getViewerComposite()->isInitialized()
-										  || !mBakedTextureDatas[i].mTexLayerSet->isLocalTextureDataAvailable() );
+			LLViewerTexLayerSet* layerset = getTexLayerSet(i);
+			const BOOL layerset_invalid = layerset
+										  && ( !layerset->getViewerComposite()->isInitialized()
+										  || !layerset->isLocalTextureDataAvailable() );
 			use_lkg_baked_layer[i] = (!is_layer_baked[i] 
 									  && (mBakedTextureDatas[i].mLastTextureIndex != IMG_DEFAULT_AVATAR) 
 									  && layerset_invalid);
 			if (use_lkg_baked_layer[i])
 			{
-				mBakedTextureDatas[i].mTexLayerSet->setUpdatesEnabled(TRUE);
+				layerset->setUpdatesEnabled(TRUE);
 			}
 		}
 		else
@@ -6742,6 +6723,7 @@ void LLVOAvatar::updateMeshTextures()
 	
 	for (U32 i=0; i < mBakedTextureDatas.size(); i++)
 	{
+		LLViewerTexLayerSet* layerset = getTexLayerSet(i);
 		if (use_lkg_baked_layer[i] && !mUseLocalAppearance )
 		{
 			LLViewerFetchedTexture* baked_img;
@@ -6765,7 +6747,11 @@ void LLVOAvatar::updateMeshTextures()
 			mBakedTextureDatas[i].mIsUsed = TRUE;
 			for (U32 k=0; k < mBakedTextureDatas[i].mMeshes.size(); k++)
 			{
-				mBakedTextureDatas[i].mMeshes[k]->setTexture( baked_img );
+				LLViewerJointMesh* mesh = dynamic_cast<LLViewerJointMesh*>(mBakedTextureDatas[i].mMeshes[k]);
+				if (mesh)
+				{
+					mesh->setTexture( baked_img );
+				}
 			}
 		}
 		else if (!mUseLocalAppearance && is_layer_baked[i])
@@ -6788,14 +6774,18 @@ void LLVOAvatar::updateMeshTextures()
 					src_callback_list, paused );
 			}
 		}
-		else if (mBakedTextureDatas[i].mTexLayerSet && mUseLocalAppearance) 
+		else if (layerset && mUseLocalAppearance) 
 		{
-			mBakedTextureDatas[i].mTexLayerSet->createComposite();
-			mBakedTextureDatas[i].mTexLayerSet->setUpdatesEnabled( TRUE );
+			layerset->createComposite();
+			layerset->setUpdatesEnabled( TRUE );
 			mBakedTextureDatas[i].mIsUsed = FALSE;
 			for (U32 k=0; k < mBakedTextureDatas[i].mMeshes.size(); k++)
 			{
-				mBakedTextureDatas[i].mMeshes[k]->setLayerSet( mBakedTextureDatas[i].mTexLayerSet );
+				LLViewerJointMesh* mesh = dynamic_cast<LLViewerJointMesh*>(mBakedTextureDatas[i].mMeshes[k]);
+				if (mesh)
+				{
+					mesh->setLayerSet( layerset );
+				}
 			}
 		}
 	}
@@ -6809,8 +6799,12 @@ void LLVOAvatar::updateMeshTextures()
 		LLViewerTexture* hair_img = getImage( TEX_HAIR, 0 );
 		for (U32 i = 0; i < mBakedTextureDatas[BAKED_HAIR].mMeshes.size(); i++)
 		{
-			mBakedTextureDatas[BAKED_HAIR].mMeshes[i]->setColor( color.mV[VX], color.mV[VY], color.mV[VZ], color.mV[VW] );
-			mBakedTextureDatas[BAKED_HAIR].mMeshes[i]->setTexture( hair_img );
+			LLViewerJointMesh* mesh = dynamic_cast<LLViewerJointMesh*>(mBakedTextureDatas[BAKED_HAIR].mMeshes[i]);
+			if (mesh)
+			{
+				mesh->setColor( color.mV[VX], color.mV[VY], color.mV[VZ], color.mV[VW] );
+				mesh->setTexture( hair_img );
+			}
 		}
 	} 
 	
@@ -6883,16 +6877,28 @@ void LLVOAvatar::clearChat()
 	mChats.clear();
 }
 
-// adds a morph mask to the appropriate baked texture structure
-void LLVOAvatar::addMaskedMorph(EBakedTextureIndex index, LLPolyMorphTarget* morph_target, BOOL invert, std::string layer)
+
+void LLVOAvatar::applyMorphMask(U8* tex_data, S32 width, S32 height, S32 num_components, LLAvatarAppearanceDefines::EBakedTextureIndex index)
 {
-	if (index < BAKED_NUM_INDICES)
+	if (index >= BAKED_NUM_INDICES)
 	{
-		LLMaskedMorph *morph = new LLMaskedMorph(morph_target, invert, layer);
-		mBakedTextureDatas[index].mMaskedMorphs.push_front(morph);
+		llwarns << "invalid baked texture index passed to applyMorphMask" << llendl;
+		return;
+	}
+
+	for (morph_list_t::const_iterator iter = mBakedTextureDatas[index].mMaskedMorphs.begin();
+		 iter != mBakedTextureDatas[index].mMaskedMorphs.end(); ++iter)
+	{
+		const LLMaskedMorph* maskedMorph = (*iter);
+		LLPolyMorphTarget* morph_target = dynamic_cast<LLPolyMorphTarget*>(maskedMorph->mMorphTarget);
+		if (morph_target)
+		{
+			morph_target->applyMask(tex_data, width, height, num_components, maskedMorph->mInvert);
+		}
 	}
 }
 
+
 // returns TRUE if morph masks are present and not valid for a given baked texture, FALSE otherwise
 BOOL LLVOAvatar::morphMaskNeedsUpdate(LLAvatarAppearanceDefines::EBakedTextureIndex index)
 {
@@ -6905,7 +6911,7 @@ BOOL LLVOAvatar::morphMaskNeedsUpdate(LLAvatarAppearanceDefines::EBakedTextureIn
 	{
 		if (isSelf())
 		{
-			LLViewerTexLayerSet *layer_set = mBakedTextureDatas[index].mTexLayerSet;
+			LLViewerTexLayerSet *layer_set = getTexLayerSet(index);
 			if (layer_set)
 			{
 				return !layer_set->isMorphValid();
@@ -6920,23 +6926,6 @@ BOOL LLVOAvatar::morphMaskNeedsUpdate(LLAvatarAppearanceDefines::EBakedTextureIn
 	return FALSE;
 }
 
-void LLVOAvatar::applyMorphMask(U8* tex_data, S32 width, S32 height, S32 num_components, LLAvatarAppearanceDefines::EBakedTextureIndex index)
-{
-	if (index >= BAKED_NUM_INDICES)
-	{
-		llwarns << "invalid baked texture index passed to applyMorphMask" << llendl;
-		return;
-	}
-
-	for (morph_list_t::const_iterator iter = mBakedTextureDatas[index].mMaskedMorphs.begin();
-		 iter != mBakedTextureDatas[index].mMaskedMorphs.end(); ++iter)
-	{
-		const LLMaskedMorph* maskedMorph = (*iter);
-		maskedMorph->mMorphTarget->applyMask(tex_data, width, height, num_components, maskedMorph->mInvert);
-	}
-}
-
-
 //-----------------------------------------------------------------------------
 // releaseComponentTextures()
 // release any component texture UUIDs for which we have a baked texture
@@ -7616,7 +7605,11 @@ void LLVOAvatar::useBakedTexture( const LLUUID& id )
 			mBakedTextureDatas[i].mIsUsed = true;
 			for (U32 k = 0; k < mBakedTextureDatas[i].mMeshes.size(); k++)
 			{
-				mBakedTextureDatas[i].mMeshes[k]->setTexture( image_baked );
+				LLViewerJointMesh* mesh = dynamic_cast<LLViewerJointMesh*>(mBakedTextureDatas[i].mMeshes[k]);
+				if (mesh)
+				{
+					mesh->setTexture( image_baked );
+				}
 			}
 			if (mBakedTextureDatas[i].mTexLayerSet)
 			{
@@ -7637,7 +7630,11 @@ void LLVOAvatar::useBakedTexture( const LLUUID& id )
 			{
 				for (U32 i = 0; i < mBakedTextureDatas[BAKED_HAIR].mMeshes.size(); i++)
 				{
-					mBakedTextureDatas[BAKED_HAIR].mMeshes[i]->setColor( 1.f, 1.f, 1.f, 1.f );
+					LLViewerJointMesh* mesh = dynamic_cast<LLViewerJointMesh*>(mBakedTextureDatas[BAKED_HAIR].mMeshes[i]);
+					if (mesh)
+					{
+						mesh->setColor( 1.f, 1.f, 1.f, 1.f );
+					}
 				}
 			}
 		}
@@ -8689,3 +8686,17 @@ BOOL LLVOAvatar::isTextureVisible(LLAvatarAppearanceDefines::ETextureIndex type,
 	return FALSE;
 }
 
+//virtual 
+LLAvatarAppearance::LLMaskedMorph::LLMaskedMorph(LLVisualParam *morph_target, BOOL invert, std::string layer) :
+			mMorphTarget(morph_target), 
+			mInvert(invert),
+			mLayer(layer)
+{
+	LLPolyMorphTarget *target = dynamic_cast<LLPolyMorphTarget*>(morph_target);
+	if (target)
+	{
+		target->addPendingMorphMask();
+	}
+}
+
+
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
index 5f780da145e..91ea19fbd39 100755
--- a/indra/newview/llvoavatar.h
+++ b/indra/newview/llvoavatar.h
@@ -48,6 +48,7 @@
 #include "llavatarappearancedefines.h"
 #include "lltexglobalcolor.h"
 #include "lldriverparam.h"
+#include "llviewertexlayer.h"
 #include "material_codes.h"		// LL_MCODE_END
 #include "llviewerstats.h"
 
@@ -63,7 +64,6 @@ extern const LLUUID ANIM_AGENT_PELVIS_FIX;
 extern const LLUUID ANIM_AGENT_TARGET;
 extern const LLUUID ANIM_AGENT_WALK_ADJUST;
 
-class LLViewerTexLayerSet;
 class LLViewerWearable;
 class LLVoiceVisualizer;
 class LLHUDNameTag;
@@ -87,7 +87,6 @@ class LLVOAvatar :
 	friend class LLVOAvatarSelf;
 protected:
 	struct LLVOAvatarXmlInfo;
-	struct LLMaskedMorph;
 
 /********************************************************************************
  **                                                                            **
@@ -471,9 +470,8 @@ class LLVOAvatar :
 	// Morph masks
 	//--------------------------------------------------------------------
 public:
+	/*virtual*/ void	applyMorphMask(U8* tex_data, S32 width, S32 height, S32 num_components, LLAvatarAppearanceDefines::EBakedTextureIndex index = LLAvatarAppearanceDefines::BAKED_NUM_INDICES);
 	BOOL 		morphMaskNeedsUpdate(LLAvatarAppearanceDefines::EBakedTextureIndex index = LLAvatarAppearanceDefines::BAKED_NUM_INDICES);
-	void 		addMaskedMorph(LLAvatarAppearanceDefines::EBakedTextureIndex index, LLPolyMorphTarget* morph_target, BOOL invert, std::string layer);
-	/*virtual*/void applyMorphMask(U8* tex_data, S32 width, S32 height, S32 num_components, LLAvatarAppearanceDefines::EBakedTextureIndex index = LLAvatarAppearanceDefines::BAKED_NUM_INDICES);
 
 	
 	//--------------------------------------------------------------------
@@ -601,22 +599,9 @@ class LLVOAvatar :
 	static void		onBakedTextureLoaded(BOOL success, LLViewerFetchedTexture *src_vi, LLImageRaw* src, LLImageRaw* aux_src, S32 discard_level, BOOL final, void* userdata);
 	virtual void	removeMissingBakedTextures();
 	void			useBakedTexture(const LLUUID& id);
+	LLViewerTexLayerSet*  getTexLayerSet(const U32 index) const { return dynamic_cast<LLViewerTexLayerSet*>(mBakedTextureDatas[index].mTexLayerSet);	}
+
 
-	typedef std::deque<LLMaskedMorph *> 	morph_list_t;
-	struct BakedTextureData
-	{
-		LLUUID								mLastTextureIndex;
-		LLViewerTexLayerSet* 				mTexLayerSet; // Only exists for self
-		bool								mIsLoaded;
-		bool								mIsUsed;
-		LLAvatarAppearanceDefines::ETextureIndex 	mTextureIndex;
-		U32									mMaskTexName;
-		// Stores pointers to the joint meshes that this baked texture deals with
-		std::vector< LLViewerJointMesh * > 	mMeshes;  // std::vector<LLViewerJointMesh> mJoints[i]->mMeshParts
-		morph_list_t						mMaskedMorphs;
-	};
-	typedef std::vector<BakedTextureData> 	bakedtexturedata_vec_t;
-	bakedtexturedata_vec_t 					mBakedTextureDatas;
 	LLLoadedCallbackEntry::source_callback_list_t mCallbackTextureList ; 
 	BOOL mLoadedCallbacksPaused;
 	//--------------------------------------------------------------------
@@ -1139,21 +1124,6 @@ class LLVOAvatar :
 		morph_info_list_t	mMorphMaskInfoList;
 	};
 
-	struct LLMaskedMorph
-	{
-		LLMaskedMorph(LLPolyMorphTarget *morph_target, BOOL invert, std::string layer) :
-			mMorphTarget(morph_target), 
-			mInvert(invert),
-			mLayer(layer)
-		{
-			morph_target->addPendingMorphMask();
-		}
-	
-		LLPolyMorphTarget	*mMorphTarget;
-		BOOL				mInvert;
-		std::string			mLayer;
-	};
-
 /**                    Support classes
  **                                                                            **
  *******************************************************************************/
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index e836a5e4a8f..945e134d21c 100755
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -883,8 +883,9 @@ void LLVOAvatarSelf::removeMissingBakedTextures()
 	{
 		for (U32 i = 0; i < mBakedTextureDatas.size(); i++)
 		{
-			mBakedTextureDatas[i].mTexLayerSet->setUpdatesEnabled(TRUE);
-			invalidateComposite(mBakedTextureDatas[i].mTexLayerSet, FALSE);
+			LLViewerTexLayerSet *layerset = getTexLayerSet(i);
+			layerset->setUpdatesEnabled(TRUE);
+			invalidateComposite(layerset, FALSE);
 		}
 		updateMeshTextures();
 		if (getRegion() && !getRegion()->getCentralBakeVersion())
@@ -1090,10 +1091,11 @@ void LLVOAvatarSelf::wearableUpdated( LLWearableType::EType type, BOOL upload_re
 				const LLWearableType::EType comp_type = *type_iter;
 				if (comp_type == type)
 				{
-					if (mBakedTextureDatas[index].mTexLayerSet)
+					LLViewerTexLayerSet *layerset = getLayerSet(index);
+					if (layerset)
 					{
-						mBakedTextureDatas[index].mTexLayerSet->setUpdatesEnabled(true);
-						invalidateComposite(mBakedTextureDatas[index].mTexLayerSet, upload_result);
+						layerset->setUpdatesEnabled(true);
+						invalidateComposite(layerset, upload_result);
 					}
 					break;
 				}
@@ -1517,7 +1519,7 @@ BOOL LLVOAvatarSelf::isAllLocalTextureDataFinal() const
 
 BOOL LLVOAvatarSelf::isBakedTextureFinal(const LLAvatarAppearanceDefines::EBakedTextureIndex index) const
 {
-	const LLViewerTexLayerSet *layerset = mBakedTextureDatas[index].mTexLayerSet;
+	const LLViewerTexLayerSet *layerset = getLayerSet(index);
 	if (!layerset) return FALSE;
 	const LLViewerTexLayerSetBuffer *layerset_buffer = layerset->getViewerComposite();
 	if (!layerset_buffer) return FALSE;
@@ -1597,9 +1599,10 @@ void LLVOAvatarSelf::requestLayerSetUpload(LLAvatarAppearanceDefines::EBakedText
 {
 	ETextureIndex tex_index = mBakedTextureDatas[i].mTextureIndex;
 	const BOOL layer_baked = isTextureDefined(tex_index, gAgentWearables.getWearableCount(tex_index));
-	if (!layer_baked && mBakedTextureDatas[i].mTexLayerSet)
+	LLViewerTexLayerSet *layerset = getLayerSet(i);
+	if (!layer_baked && layerset)
 	{
-		mBakedTextureDatas[i].mTexLayerSet->requestUpload();
+		layerset->requestUpload();
 	}
 }
 
@@ -1613,7 +1616,7 @@ bool LLVOAvatarSelf::hasPendingBakedUploads() const
 {
 	for (U32 i = 0; i < mBakedTextureDatas.size(); i++)
 	{
-		LLViewerTexLayerSet* layerset = mBakedTextureDatas[i].mTexLayerSet;
+		LLViewerTexLayerSet* layerset = getTexLayerSet(i);
 		if (layerset && layerset->getViewerComposite() && layerset->getViewerComposite()->uploadPending())
 		{
 			return true;
@@ -1648,7 +1651,8 @@ void LLVOAvatarSelf::invalidateAll()
 {
 	for (U32 i = 0; i < mBakedTextureDatas.size(); i++)
 	{
-		invalidateComposite(mBakedTextureDatas[i].mTexLayerSet, TRUE);
+		LLViewerTexLayerSet *layerset = getTexLayerSet(i);
+		invalidateComposite(layerset, TRUE);
 	}
 	//mDebugSelfLoadTimer.reset();
 }
@@ -1666,17 +1670,19 @@ void LLVOAvatarSelf::setCompositeUpdatesEnabled( bool b )
 
 void LLVOAvatarSelf::setCompositeUpdatesEnabled(U32 index, bool b)
 {
-	if (mBakedTextureDatas[index].mTexLayerSet )
+	LLViewerTexLayerSet *layerset = getTexLayerSet(index);
+	if (layerset )
 	{
-		mBakedTextureDatas[index].mTexLayerSet->setUpdatesEnabled( b );
+		layerset->setUpdatesEnabled( b );
 	}
 }
 
 bool LLVOAvatarSelf::isCompositeUpdateEnabled(U32 index)
 {
-	if (mBakedTextureDatas[index].mTexLayerSet)
+	LLViewerTexLayerSet *layerset = getTexLayerSet(index);
+	if (layerset)
 	{
-		return mBakedTextureDatas[index].mTexLayerSet->getUpdatesEnabled();
+		return layerset->getUpdatesEnabled();
 	}
 	return false;
 }
@@ -1687,9 +1693,10 @@ void LLVOAvatarSelf::setupComposites()
 	{
 		ETextureIndex tex_index = mBakedTextureDatas[i].mTextureIndex;
 		BOOL layer_baked = isTextureDefined(tex_index, gAgentWearables.getWearableCount(tex_index));
-		if (mBakedTextureDatas[i].mTexLayerSet)
+		LLViewerTexLayerSet *layerset = getTexLayerSet(i);
+		if (layerset)
 		{
-			mBakedTextureDatas[i].mTexLayerSet->setUpdatesEnabled(!layer_baked);
+			layerset->setUpdatesEnabled(!layer_baked);
 		}
 	}
 }
@@ -1698,10 +1705,11 @@ void LLVOAvatarSelf::updateComposites()
 {
 	for (U32 i = 0; i < mBakedTextureDatas.size(); i++)
 	{
-		if (mBakedTextureDatas[i].mTexLayerSet 
+		LLViewerTexLayerSet *layerset = getTexLayerSet(i);
+		if (layerset 
 			&& ((i != BAKED_SKIRT) || isWearingWearableType(LLWearableType::WT_SKIRT)))
 		{
-			mBakedTextureDatas[i].mTexLayerSet->updateComposite();
+			layerset->updateComposite();
 		}
 	}
 }
@@ -1985,14 +1993,14 @@ BOOL LLVOAvatarSelf::getIsCloud() const
 
 	if (!mPreviousFullyLoaded)
 	{
-		if (!isLocalTextureDataAvailable(mBakedTextureDatas[BAKED_LOWER].mTexLayerSet) &&
+		if (!isLocalTextureDataAvailable(getLayerSet(BAKED_LOWER)) &&
 			(!isTextureDefined(TEX_LOWER_BAKED, 0)))
 		{
 			lldebugs << "Lower textures not baked" << llendl;
 			return TRUE;
 		}
 
-		if (!isLocalTextureDataAvailable(mBakedTextureDatas[BAKED_UPPER].mTexLayerSet) &&
+		if (!isLocalTextureDataAvailable(getLayerSet(BAKED_UPPER)) &&
 			(!isTextureDefined(TEX_UPPER_BAKED, 0)))
 		{
 			lldebugs << "Upper textures not baked" << llendl;
@@ -2550,7 +2558,8 @@ void LLVOAvatarSelf::setCachedBakedTexture( ETextureIndex te, const LLUUID& uuid
 				mHeadLayerSet->cancelUpload(); */
 	for (U32 i = 0; i < mBakedTextureDatas.size(); i++)
 	{
-		if ( mBakedTextureDatas[i].mTextureIndex == te && mBakedTextureDatas[i].mTexLayerSet)
+		LLViewerTexLayerSet *layerset = getTexLayerSet(i);
+		if ( mBakedTextureDatas[i].mTextureIndex == te && layerset)
 		{
 			if (mInitialBakeIDs[i] != LLUUID::null)
 			{
@@ -2564,7 +2573,7 @@ void LLVOAvatarSelf::setCachedBakedTexture( ETextureIndex te, const LLUUID& uuid
 				}
 				mInitialBakeIDs[i] = LLUUID::null;
 			}
-			mBakedTextureDatas[i].mTexLayerSet->cancelUpload();
+			layerset->cancelUpload();
 		}
 	}
 }
@@ -2677,7 +2686,7 @@ LLViewerTexLayerSet* LLVOAvatarSelf::getLayerSet(ETextureIndex index) const
 	if (texture_dict->mIsUsedByBakedTexture)
 	{
 		const EBakedTextureIndex baked_index = texture_dict->mBakedTextureIndex;
-		return mBakedTextureDatas[baked_index].mTexLayerSet;
+		return getLayerSet(baked_index);
 	}
 	return NULL;
 }
@@ -2690,7 +2699,7 @@ LLViewerTexLayerSet* LLVOAvatarSelf::getLayerSet(EBakedTextureIndex baked_index)
                        return mHeadLayerSet; */
        if (baked_index >= 0 && baked_index < BAKED_NUM_INDICES)
        {
-                       return mBakedTextureDatas[baked_index].mTexLayerSet;
+                       return  getTexLayerSet(baked_index);
        }
        return NULL;
 }
diff --git a/indra/newview/llvoavatarself.h b/indra/newview/llvoavatarself.h
index 12886d2d36e..7fcab020e69 100755
--- a/indra/newview/llvoavatarself.h
+++ b/indra/newview/llvoavatarself.h
@@ -388,7 +388,7 @@ class LLVOAvatarSelf :
 
 	BOOL					isAllLocalTextureDataFinal() const;
 
-	const LLViewerTexLayerSet*	debugGetLayerSet(LLAvatarAppearanceDefines::EBakedTextureIndex index) const { return mBakedTextureDatas[index].mTexLayerSet; }
+	const LLViewerTexLayerSet*	debugGetLayerSet(LLAvatarAppearanceDefines::EBakedTextureIndex index) const { return (LLViewerTexLayerSet*)(mBakedTextureDatas[index].mTexLayerSet); }
 	const std::string		debugDumpLocalTextureDataInfo(const LLViewerTexLayerSet* layerset) const; // Lists out state of this particular baked texture layer
 	const std::string		debugDumpAllLocalTextureDataInfo() const; // Lists out which baked textures are at highest LOD
 	LLSD					metricsData();
-- 
GitLab


From 201d9853f9d57efab9b819ff07745141a5265e98 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Wed, 5 Sep 2012 18:25:51 -0400
Subject: [PATCH 056/436] Debug display for baked vs. composite status, via
 setting DebugAvatarCompositeBaked

---
 indra/newview/app_settings/settings.xml | 11 +++++++++++
 indra/newview/llviewerjointmesh.cpp     |  5 +++++
 indra/newview/llviewerjointmesh.h       |  1 +
 indra/newview/llvoavatar.cpp            | 20 ++++++++++++++++----
 4 files changed, 33 insertions(+), 4 deletions(-)

diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 69986af83be..674685f3bc2 100755
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -1948,6 +1948,17 @@
     <string>Boolean</string>
     <key>Value</key>
     <integer>1</integer>
+  </map>
+  <key>DebugAvatarCompositeBaked</key>
+  <map>
+    <key>Comment</key>
+    <string>Colorize avatar meshes based on baked/composite state.</string>
+    <key>Persist</key>
+    <integer>1</integer>
+    <key>Type</key>
+    <string>Boolean</string>
+    <key>Value</key>
+    <integer>0</integer>
   </map>
     <key>DebugBeaconLineWidth</key>
     <map>
diff --git a/indra/newview/llviewerjointmesh.cpp b/indra/newview/llviewerjointmesh.cpp
index 5d1aa870a31..c3f8f42a2ac 100755
--- a/indra/newview/llviewerjointmesh.cpp
+++ b/indra/newview/llviewerjointmesh.cpp
@@ -219,6 +219,11 @@ void LLViewerJointMesh::setColor( F32 red, F32 green, F32 blue, F32 alpha )
 	mColor[3] = alpha;
 }
 
+void LLViewerJointMesh::setColor( const LLColor4& color )
+{
+	mColor = color;
+}
+
 
 //--------------------------------------------------------------------
 // LLViewerJointMesh::getTexture()
diff --git a/indra/newview/llviewerjointmesh.h b/indra/newview/llviewerjointmesh.h
index dd5dae1dc1e..630981b4a0b 100755
--- a/indra/newview/llviewerjointmesh.h
+++ b/indra/newview/llviewerjointmesh.h
@@ -99,6 +99,7 @@ class LLViewerJointMesh : public LLViewerJoint
 
 	// Sets the shape color
 	void setColor( F32 red, F32 green, F32 blue, F32 alpha );
+	void setColor( const LLColor4& color );
 
 	// Sets the shininess
 	void setSpecular( const LLColor4& color, F32 shiny ) { /*mSpecular = color;*/ mShiny = shiny; };
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 4894f21e676..d92caf1edb6 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -5763,7 +5763,7 @@ BOOL LLVOAvatar::loadMeshNodes()
 
 		// If this isn't set to white (1.0), avatars will *ALWAYS* be darker than their surroundings.
 		// Do not touch!!!
-		mesh->setColor( 1.0f, 1.0f, 1.0f, 1.0f );
+		mesh->setColor( LLColor4::white );
 
 		LLPolyMesh *poly_mesh = NULL;
 
@@ -6503,7 +6503,7 @@ void LLVOAvatar::onGlobalColorChanged(const LLTexGlobalColor* global_color, BOOL
 			LLColor4 color = mTexHairColor->getColor();
 			for (U32 i = 0; i < mBakedTextureDatas[BAKED_HAIR].mMeshes.size(); i++)
 			{
-				mBakedTextureDatas[BAKED_HAIR].mMeshes[i]->setColor( color.mV[VX], color.mV[VY], color.mV[VZ], color.mV[VW] );
+				mBakedTextureDatas[BAKED_HAIR].mMeshes[i]->setColor( color );
 			}
 		}
 	} 
@@ -6764,6 +6764,10 @@ void LLVOAvatar::updateMeshTextures()
 			for (U32 k=0; k < mBakedTextureDatas[i].mMeshes.size(); k++)
 			{
 				mBakedTextureDatas[i].mMeshes[k]->setTexture( baked_img );
+				if (gSavedSettings.getBOOL("DebugAvatarCompositeBaked"))
+				{
+					mBakedTextureDatas[i].mMeshes[k]->setColor(LLColor4::red);
+				}
 			}
 		}
 		else if (!mUseLocalAppearance && is_layer_baked[i])
@@ -6794,6 +6798,10 @@ void LLVOAvatar::updateMeshTextures()
 			for (U32 k=0; k < mBakedTextureDatas[i].mMeshes.size(); k++)
 			{
 				mBakedTextureDatas[i].mMeshes[k]->setLayerSet( mBakedTextureDatas[i].mTexLayerSet );
+				if (gSavedSettings.getBOOL("DebugAvatarCompositeBaked"))
+				{
+					mBakedTextureDatas[i].mMeshes[k]->setColor( LLColor4::yellow );
+				}
 			}
 		}
 	}
@@ -6807,7 +6815,7 @@ void LLVOAvatar::updateMeshTextures()
 		LLViewerTexture* hair_img = getImage( TEX_HAIR, 0 );
 		for (U32 i = 0; i < mBakedTextureDatas[BAKED_HAIR].mMeshes.size(); i++)
 		{
-			mBakedTextureDatas[BAKED_HAIR].mMeshes[i]->setColor( color.mV[VX], color.mV[VY], color.mV[VZ], color.mV[VW] );
+			mBakedTextureDatas[BAKED_HAIR].mMeshes[i]->setColor( color );
 			mBakedTextureDatas[BAKED_HAIR].mMeshes[i]->setTexture( hair_img );
 		}
 	} 
@@ -7721,6 +7729,10 @@ void LLVOAvatar::useBakedTexture( const LLUUID& id )
 			for (U32 k = 0; k < mBakedTextureDatas[i].mMeshes.size(); k++)
 			{
 				mBakedTextureDatas[i].mMeshes[k]->setTexture( image_baked );
+				if (gSavedSettings.getBOOL("DebugAvatarCompositeBaked"))
+				{
+					mBakedTextureDatas[i].mMeshes[k]->setColor( LLColor4::green );
+				}
 			}
 			if (mBakedTextureDatas[i].mTexLayerSet)
 			{
@@ -7741,7 +7753,7 @@ void LLVOAvatar::useBakedTexture( const LLUUID& id )
 			{
 				for (U32 i = 0; i < mBakedTextureDatas[BAKED_HAIR].mMeshes.size(); i++)
 				{
-					mBakedTextureDatas[BAKED_HAIR].mMeshes[i]->setColor( 1.f, 1.f, 1.f, 1.f );
+					mBakedTextureDatas[BAKED_HAIR].mMeshes[i]->setColor( LLColor4::white );
 				}
 			}
 		}
-- 
GitLab


From 85d0bcc0630bfbf8b50be3a47a113c4f8d6ec9df Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Thu, 6 Sep 2012 02:53:55 +0000
Subject: [PATCH 057/436] Extracted mWearableDatas from LLAgentWearables into
 llappearance/LLWearableData.  Moved LLDriverParam into llappearance

---
 indra/llappearance/CMakeLists.txt             |   4 +
 indra/llappearance/llavatarappearance.cpp     |  60 ++-
 indra/llappearance/llavatarappearance.h       |  21 +-
 .../lldriverparam.cpp                         | 121 +++---
 .../{newview => llappearance}/lldriverparam.h |  23 +-
 indra/llappearance/lltexlayer.cpp             |   5 +-
 indra/llappearance/llwearable.h               |   7 +
 indra/llappearance/llwearabledata.cpp         | 353 +++++++++++++++++
 indra/llappearance/llwearabledata.h           | 108 ++++++
 indra/llcharacter/llcharacter.cpp             |   2 +-
 indra/llcharacter/llcharacter.h               |   2 +-
 indra/newview/CMakeLists.txt                  |   2 -
 indra/newview/llagentwearables.cpp            | 360 +++++-------------
 indra/newview/llagentwearables.h              |  34 +-
 indra/newview/llfloateravatartextures.cpp     |   4 +-
 indra/newview/lllocalbitmaps.cpp              |   2 +-
 indra/newview/llpaneleditwearable.cpp         |   2 +-
 indra/newview/llphysicsmotion.cpp             |  12 +-
 indra/newview/llsidepanelappearance.cpp       |   2 +-
 indra/newview/llviewerwearable.cpp            |  35 +-
 indra/newview/llviewerwearable.h              |   8 +-
 indra/newview/llvoavatar.cpp                  |  68 +---
 indra/newview/llvoavatar.h                    |  14 -
 indra/newview/llvoavatarself.cpp              |  30 +-
 indra/newview/llvoavatarself.h                |   5 +-
 25 files changed, 747 insertions(+), 537 deletions(-)
 rename indra/{newview => llappearance}/lldriverparam.cpp (89%)
 rename indra/{newview => llappearance}/lldriverparam.h (87%)
 create mode 100644 indra/llappearance/llwearabledata.cpp
 create mode 100644 indra/llappearance/llwearabledata.h

diff --git a/indra/llappearance/CMakeLists.txt b/indra/llappearance/CMakeLists.txt
index 0206f76546a..41da8984579 100644
--- a/indra/llappearance/CMakeLists.txt
+++ b/indra/llappearance/CMakeLists.txt
@@ -42,6 +42,7 @@ include_directories(
 
 set(llappearance_SOURCE_FILES
     llavatarappearance.cpp
+    lldriverparam.cpp
     llinventoryicon.cpp
     lllocaltextureobject.cpp
     lltexglobalcolor.cpp
@@ -49,6 +50,7 @@ set(llappearance_SOURCE_FILES
     lltexlayerparams.cpp
     lltexturemanagerbridge.cpp
     llwearable.cpp
+    llwearabledata.cpp
     llwearabletype.cpp
     llviewervisualparam.cpp
     llavatarappearancedefines.cpp
@@ -58,6 +60,7 @@ set(llappearance_HEADER_FILES
     CMakeLists.txt
 
     llavatarappearance.h
+    lldriverparam.h
     llinventoryicon.h
     lljointpickname.h
     lllocaltextureobject.h
@@ -66,6 +69,7 @@ set(llappearance_HEADER_FILES
     lltexlayerparams.h
     lltexturemanagerbridge.h
     llwearable.h
+    llwearabledata.h
     llwearabletype.h
     llviewervisualparam.h
     llavatarappearancedefines.h
diff --git a/indra/llappearance/llavatarappearance.cpp b/indra/llappearance/llavatarappearance.cpp
index 75b9c1ffa5d..0f0942d8dcc 100644
--- a/indra/llappearance/llavatarappearance.cpp
+++ b/indra/llappearance/llavatarappearance.cpp
@@ -29,16 +29,19 @@
 #include "llavatarappearance.h"
 #include "lldeleteutils.h"
 #include "lltexglobalcolor.h"
+#include "llwearabledata.h"
 
 const LLColor4 DUMMY_COLOR = LLColor4(0.5,0.5,0.5,1.0);
 
-LLAvatarAppearance::LLAvatarAppearance() :
+LLAvatarAppearance::LLAvatarAppearance(LLWearableData* wearable_data) :
 	LLCharacter(),
+	mIsDummy(FALSE),
 	mTexSkinColor( NULL ),
 	mTexHairColor( NULL ),
 	mTexEyeColor( NULL ),
-	mIsDummy(FALSE)
+	mWearableData(wearable_data)
 {
+	llassert(mWearableData);
 }
 
 // virtual
@@ -51,6 +54,17 @@ LLAvatarAppearance::~LLAvatarAppearance()
 
 using namespace LLAvatarAppearanceDefines;
 
+// virtual
+BOOL LLAvatarAppearance::isValid() const
+{
+	// This should only be called on ourself.
+	if (!isSelf())
+	{
+		llerrs << "Called LLAvatarAppearance::isValid() on when isSelf() == false" << llendl;
+	}
+	return TRUE;
+}
+
 //static
 BOOL LLAvatarAppearance::teToColorParams( ETextureIndex te, U32 *param_name )
 {
@@ -178,5 +192,47 @@ LLColor4 LLAvatarAppearance::getGlobalColor( const std::string& color_name ) con
 	}
 }
 
+// Unlike most wearable functions, this works for both self and other.
+// virtual
+BOOL LLAvatarAppearance::isWearingWearableType(LLWearableType::EType type) const
+{
+	if (mIsDummy) return TRUE;
+
+	switch(type)
+	{
+		case LLWearableType::WT_SHAPE:
+		case LLWearableType::WT_SKIN:
+		case LLWearableType::WT_HAIR:
+		case LLWearableType::WT_EYES:
+			return TRUE;  // everyone has all bodyparts
+		default:
+			break; // Do nothing
+	}
+
+	/* switch(type)
+		case LLWearableType::WT_SHIRT:
+			indicator_te = TEX_UPPER_SHIRT; */
+	for (LLAvatarAppearanceDictionary::Textures::const_iterator tex_iter = LLAvatarAppearanceDictionary::getInstance()->getTextures().begin();
+		 tex_iter != LLAvatarAppearanceDictionary::getInstance()->getTextures().end();
+		 ++tex_iter)
+	{
+		const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = tex_iter->second;
+		if (texture_dict->mWearableType == type)
+		{
+			// If you're checking another avatar's clothing, you don't have component textures.
+			// Thus, you must check to see if the corresponding baked texture is defined.
+			// NOTE: this is a poor substitute if you actually want to know about individual pieces of clothing
+			// this works for detecting a skirt (most important), but is ineffective at any piece of clothing that
+			// gets baked into a texture that always exists (upper or lower).
+			if (texture_dict->mIsUsedByBakedTexture)
+			{
+				const EBakedTextureIndex baked_index = texture_dict->mBakedTextureIndex;
+				return isTextureDefined(LLAvatarAppearanceDictionary::getInstance()->getBakedTexture(baked_index)->mTextureIndex);
+			}
+			return FALSE;
+		}
+	}
+	return FALSE;
+}
 
 
diff --git a/indra/llappearance/llavatarappearance.h b/indra/llappearance/llavatarappearance.h
index 0e746b3b9dc..2209ede927c 100644
--- a/indra/llappearance/llavatarappearance.h
+++ b/indra/llappearance/llavatarappearance.h
@@ -33,6 +33,7 @@
 
 class LLTexLayerSet;
 class LLTexGlobalColor;
+class LLWearableData;
 
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 // LLAvatarAppearance
@@ -47,9 +48,12 @@ class LLAvatarAppearance : public LLCharacter
  **                                                                            **
  **                    INITIALIZATION
  **/
+private:
+	// Hide default constructor.
+	LLAvatarAppearance() {}
 
 public:
-	LLAvatarAppearance();
+	LLAvatarAppearance(LLWearableData* wearable_data);
 	virtual ~LLAvatarAppearance();
 
 /**                    Initialization
@@ -62,6 +66,7 @@ class LLAvatarAppearance : public LLCharacter
  **/
 public:
 	virtual bool 	isSelf() const { return false; } // True if this avatar is for this viewer's agent
+	virtual BOOL	isValid() const;
 	virtual BOOL	isUsingBakedTextures() const = 0;
 	
 /**                    State
@@ -145,15 +150,13 @@ class LLAvatarAppearance : public LLCharacter
  **/
 
 public:
-	virtual BOOL			isWearingWearableType(LLWearableType::EType type ) const = 0;
-
-	virtual U32				getWearableCount(const LLWearableType::EType type) const = 0;
-	virtual U32				getWearableCount(const U32 tex_index) const = 0;
-
-	virtual LLWearable*			getWearable(const LLWearableType::EType type, U32 index /*= 0*/) = 0;
-	virtual const LLWearable* 	getWearable(const LLWearableType::EType type, U32 index /*= 0*/) const = 0;
-
+	LLWearableData*			getWearableData() { return mWearableData; }
+	const LLWearableData*	getWearableData() const { return mWearableData; }
+	virtual BOOL isTextureDefined(LLAvatarAppearanceDefines::ETextureIndex te, U32 index = 0 ) const = 0;
+	virtual BOOL			isWearingWearableType(LLWearableType::EType type ) const;
 
+private:
+	LLWearableData* mWearableData;
 };
 
 #endif // LL_AVATAR_APPEARANCE_H
diff --git a/indra/newview/lldriverparam.cpp b/indra/llappearance/lldriverparam.cpp
similarity index 89%
rename from indra/newview/lldriverparam.cpp
rename to indra/llappearance/lldriverparam.cpp
index 5abf72d51f4..1092b525d06 100644
--- a/indra/newview/lldriverparam.cpp
+++ b/indra/llappearance/lldriverparam.cpp
@@ -24,22 +24,20 @@
  * $/LicenseInfo$
  */
 
-#include "llviewerprecompiledheaders.h"
+#include "linden_common.h"
 
 #include "lldriverparam.h"
 
-#include "llfasttimer.h"
-#include "llvoavatar.h"
-#include "llvoavatarself.h"
-#include "llagent.h"
-#include "llviewerwearable.h"
-#include "llagentwearables.h"
+#include "llavatarappearance.h"
+#include "llwearable.h"
+#include "llwearabledata.h"
 
 //-----------------------------------------------------------------------------
 // LLDriverParamInfo
 //-----------------------------------------------------------------------------
 
-LLDriverParamInfo::LLDriverParamInfo()
+LLDriverParamInfo::LLDriverParamInfo() :
+	mDriverParam(NULL)
 {
 }
 
@@ -112,12 +110,14 @@ void LLDriverParamInfo::toStream(std::ostream &out)
 
 	out << std::endl;
 
-	if(isAgentAvatarValid())
+	if(mDriverParam && mDriverParam->getAvatarAppearance()->isSelf() &&
+		mDriverParam->getAvatarAppearance()->isValid())
 	{
 		for (entry_info_list_t::iterator iter = mDrivenInfoList.begin(); iter != mDrivenInfoList.end(); iter++)
 		{
 			LLDrivenEntryInfo driven = *iter;
-			LLViewerVisualParam *param = (LLViewerVisualParam*)gAgentAvatarp->getVisualParam(driven.mDrivenID);
+			LLViewerVisualParam *param = 
+				(LLViewerVisualParam*)mDriverParam->getAvatarAppearance()->getVisualParam(driven.mDrivenID);
 			if (param)
 			{
 				param->getInfo()->toStream(out);
@@ -139,7 +139,9 @@ void LLDriverParamInfo::toStream(std::ostream &out)
 			}
 			else
 			{
-				llwarns << "could not get parameter " << driven.mDrivenID << " from avatar " << gAgentAvatarp.get() << " for driver parameter " << getID() << llendl;
+				llwarns << "could not get parameter " << driven.mDrivenID << " from avatar " 
+						<< mDriverParam->getAvatarAppearance() 
+						<< " for driver parameter " << getID() << llendl;
 			}
 			out << std::endl;
 		}
@@ -150,19 +152,16 @@ void LLDriverParamInfo::toStream(std::ostream &out)
 // LLDriverParam
 //-----------------------------------------------------------------------------
 
-LLDriverParam::LLDriverParam(LLVOAvatar *avatarp) : 
+LLDriverParam::LLDriverParam(LLAvatarAppearance *appearance, LLWearable* wearable /* = NULL */) :
 	mCurrentDistortionParam( NULL ), 
-	mAvatarp(avatarp), 
-	mWearablep(NULL)
-{
-	mDefaultVec.clear();
-}
-
-LLDriverParam::LLDriverParam(LLWearable *wearablep) : 
-	mCurrentDistortionParam( NULL ), 
-	mAvatarp(NULL), 
-	mWearablep(wearablep)
+	mAvatarAppearance(appearance), 
+	mWearablep(wearable)
 {
+	llassert(mAvatarAppearance);
+	if (mWearablep)
+	{
+		llassert(mAvatarAppearance->isSelf());
+	}
 	mDefaultVec.clear();
 }
 
@@ -177,67 +176,21 @@ BOOL LLDriverParam::setInfo(LLDriverParamInfo *info)
 		return FALSE;
 	mInfo = info;
 	mID = info->mID;
+	info->mDriverParam = this;
 
 	setWeight(getDefaultWeight(), FALSE );
 
 	return TRUE;
 }
 
-void LLDriverParam::setWearable(LLWearable *wearablep)
-{
-	if (wearablep)
-	{
-		mWearablep = wearablep;
-		mAvatarp = NULL;
-	}
-}
-
-void LLDriverParam::setAvatar(LLVOAvatar *avatarp)
-{
-	if (avatarp)
-	{
-		mWearablep = NULL;
-		mAvatarp = avatarp;
-	}
-}
-
 /*virtual*/ LLViewerVisualParam* LLDriverParam::cloneParam(LLWearable* wearable) const
 {
-	LLDriverParam *new_param;
-	if (wearable)
-	{
-		new_param = new LLDriverParam(wearable);
-	}
-	else
-	{
-		if (mWearablep)
-		{
-			new_param = new LLDriverParam(mWearablep);
-		}
-		else
-		{
-			new_param = new LLDriverParam(mAvatarp);
-		}
-	}
+	llassert(wearable);
+	LLDriverParam *new_param = new LLDriverParam(mAvatarAppearance, wearable);
 	*new_param = *this;
 	return new_param;
 }
 
-#if 0 // obsolete
-BOOL LLDriverParam::parseData(LLXmlTreeNode* node)
-{
-	LLDriverParamInfo* info = new LLDriverParamInfo;
-
-	info->parseXml(node);
-	if (!setInfo(info))
-	{
-		delete info;
-		return FALSE;
-	}
-	return TRUE;
-}
-#endif
-
 void LLDriverParam::setWeight(F32 weight, BOOL upload_bake)
 {
 	F32 min_weight = getMinWeight();
@@ -456,6 +409,20 @@ const LLVector4a*	LLDriverParam::getNextDistortion(U32 *index, LLPolyMesh **poly
 	return v;
 };
 
+S32 LLDriverParam::getDrivenParamsCount() const
+{
+	return mDriven.size();
+}
+
+const LLViewerVisualParam* LLDriverParam::getDrivenParam(S32 index) const
+{
+	if (0 > index || index >= mDriven.size())
+	{
+		return NULL;
+	}
+	return mDriven[index].mParam;
+}
+
 //-----------------------------------------------------------------------------
 // setAnimationTarget()
 //-----------------------------------------------------------------------------
@@ -555,7 +522,7 @@ void LLDriverParam::updateCrossDrivenParams(LLWearableType::EType driven_type)
 		// Thus this wearable needs to get updates from the driver wearable.
 		// The call to setVisualParamWeight seems redundant, but is necessary
 		// as the number of driven wearables has changed since the last update. -Nyx
-		LLWearable *wearable = gAgentWearables.getTopWearable(driver_type);
+		LLWearable *wearable = mAvatarAppearance->getWearableData()->getTopWearable(driver_type);
 		if (wearable)
 		{
 			wearable->setVisualParamWeight(mID, wearable->getVisualParamWeight(mID), false);
@@ -624,12 +591,12 @@ F32 LLDriverParam::getDrivenWeight(const LLDrivenEntry* driven, F32 input_weight
 void LLDriverParam::setDrivenWeight(LLDrivenEntry *driven, F32 driven_weight, bool upload_bake)
 {
 	bool use_self = false;
-	if(isAgentAvatarValid() &&
-		mWearablep && 
+	if(mWearablep &&
+		mAvatarAppearance->isValid() &&
 		driven->mParam->getCrossWearable())
 	{
-		LLViewerWearable* wearable = dynamic_cast<LLViewerWearable*> (mWearablep);
-		if (wearable->isOnTop())
+		LLWearable* wearable = dynamic_cast<LLWearable*> (mWearablep);
+		if (mAvatarAppearance->getWearableData()->isOnTop(wearable))
 		{
 			use_self = true;
 		}
@@ -638,7 +605,7 @@ void LLDriverParam::setDrivenWeight(LLDrivenEntry *driven, F32 driven_weight, bo
 	if (use_self)
 	{
 		// call setWeight through LLVOAvatarSelf so other wearables can be updated with the correct values
-		gAgentAvatarp->setVisualParamWeight( (LLVisualParam*)driven->mParam, driven_weight, upload_bake );
+		mAvatarAppearance->setVisualParamWeight( (LLVisualParam*)driven->mParam, driven_weight, upload_bake );
 	}
 	else
 	{
diff --git a/indra/newview/lldriverparam.h b/indra/llappearance/lldriverparam.h
similarity index 87%
rename from indra/newview/lldriverparam.h
rename to indra/llappearance/lldriverparam.h
index 7a4d711d4e8..30e71daad95 100644
--- a/indra/newview/lldriverparam.h
+++ b/indra/llappearance/lldriverparam.h
@@ -30,8 +30,8 @@
 #include "llviewervisualparam.h"
 #include "llwearabletype.h"
 
-class LLPhysicsMotion;
-class LLVOAvatar;
+class LLAvatarAppearance;
+class LLDriverParam;
 class LLWearable;
 
 //-----------------------------------------------------------------------------
@@ -71,16 +71,18 @@ class LLDriverParamInfo : public LLViewerVisualParamInfo
 protected:
 	typedef std::deque<LLDrivenEntryInfo> entry_info_list_t;
 	entry_info_list_t mDrivenInfoList;
+	LLDriverParam* mDriverParam; // backpointer
 };
 
 //-----------------------------------------------------------------------------
 
 class LLDriverParam : public LLViewerVisualParam
 {
-	friend class LLPhysicsMotion; // physics motion needs to access driven params directly.
+private:
+	// Hide the default constructor.  Force construction with LLAvatarAppearance.
+	LLDriverParam() {}
 public:
-	LLDriverParam(LLVOAvatar *avatarp);
-	LLDriverParam(LLWearable *wearablep);
+	LLDriverParam(LLAvatarAppearance *appearance, LLWearable* wearable = NULL);
 	~LLDriverParam();
 
 	// Special: These functions are overridden by child classes
@@ -88,14 +90,14 @@ class LLDriverParam : public LLViewerVisualParam
 	//   This sets mInfo and calls initialization functions
 	BOOL					setInfo(LLDriverParamInfo *info);
 
-	void					setWearable(LLWearable *wearablep);
-	void					setAvatar(LLVOAvatar *avatarp);
+	LLAvatarAppearance* getAvatarAppearance() { return mAvatarAppearance; }
+	const LLAvatarAppearance* getAvatarAppearance() const { return mAvatarAppearance; }
+
 	void					updateCrossDrivenParams(LLWearableType::EType driven_type);
 
 	/*virtual*/ LLViewerVisualParam* cloneParam(LLWearable* wearable) const;
 
 	// LLVisualParam Virtual functions
-	///*virtual*/ BOOL				parseData(LLXmlTreeNode* node);
 	/*virtual*/ void				apply( ESex sex ) {} // apply is called separately for each driven param.
 	/*virtual*/ void				setWeight(F32 weight, BOOL upload_bake);
 	/*virtual*/ void				setAnimationTarget( F32 target_value, BOOL upload_bake );
@@ -111,6 +113,9 @@ class LLDriverParam : public LLViewerVisualParam
 	/*virtual*/ const LLVector4a*	getFirstDistortion(U32 *index, LLPolyMesh **poly_mesh);
 	/*virtual*/ const LLVector4a*	getNextDistortion(U32 *index, LLPolyMesh **poly_mesh);
 
+	S32								getDrivenParamsCount() const;
+	const LLViewerVisualParam*		getDrivenParam(S32 index) const;
+
 protected:
 	F32 getDrivenWeight(const LLDrivenEntry* driven, F32 input_weight);
 	void setDrivenWeight(LLDrivenEntry *driven, F32 driven_weight, bool upload_bake);
@@ -121,7 +126,7 @@ class LLDriverParam : public LLViewerVisualParam
 	entry_list_t mDriven;
 	LLViewerVisualParam* mCurrentDistortionParam;
 	// Backlink only; don't make this an LLPointer.
-	LLVOAvatar* mAvatarp;
+	LLAvatarAppearance* mAvatarAppearance;
 	LLWearable* mWearablep;
 };
 
diff --git a/indra/llappearance/lltexlayer.cpp b/indra/llappearance/lltexlayer.cpp
index a741a83af73..9b70f737a08 100644
--- a/indra/llappearance/lltexlayer.cpp
+++ b/indra/llappearance/lltexlayer.cpp
@@ -40,6 +40,7 @@
 #include "lltexturemanagerbridge.h"
 #include "llui.h"
 #include "llwearable.h"
+#include "llwearabledata.h"
 #include "llvertexbuffer.h"
 #include "llviewervisualparam.h"
 
@@ -1560,11 +1561,11 @@ U32 LLTexLayerTemplate::updateWearableCache() const
 		return 0;
 	}
 	LLWearableType::EType wearable_type = LLAvatarAppearanceDictionary::getTEWearableType((ETextureIndex)te);
-	U32 num_wearables = getAvatarAppearance()->getWearableCount(wearable_type);
+	U32 num_wearables = getAvatarAppearance()->getWearableData()->getWearableCount(wearable_type);
 	U32 added = 0;
 	for (U32 i = 0; i < num_wearables; i++)
 	{
-		LLWearable*  wearable = getAvatarAppearance()->getWearable(wearable_type, i);
+		LLWearable*  wearable = getAvatarAppearance()->getWearableData()->getWearable(wearable_type, i);
 		if (!wearable)
 		{
 			continue;
diff --git a/indra/llappearance/llwearable.h b/indra/llappearance/llwearable.h
index 8a99debac86..e1cd26bdef9 100644
--- a/indra/llappearance/llwearable.h
+++ b/indra/llappearance/llwearable.h
@@ -33,6 +33,7 @@
 #include "llwearabletype.h"
 #include "lllocaltextureobject.h"
 
+class LLMD5;
 class LLVisualParam;
 class LLTexGlobalColorInfo;
 class LLTexGlobalColor;
@@ -98,6 +99,12 @@ class LLWearable
 	typedef std::map<S32, LLUUID> texture_id_map_t;
 	const texture_id_map_t& getTextureIDMap() const { return mTextureIDMap; }
 
+	// Something happened that requires the wearable to be updated (e.g. worn/unworn).
+	virtual void		setUpdated() const = 0;
+
+	// Update the baked texture hash.
+	virtual void		addToBakedTextureHash(LLMD5& hash) const = 0;
+
 protected:
 	virtual void 	createVisualParams() = 0;
 
diff --git a/indra/llappearance/llwearabledata.cpp b/indra/llappearance/llwearabledata.cpp
new file mode 100644
index 00000000000..d70bbf286a0
--- /dev/null
+++ b/indra/llappearance/llwearabledata.cpp
@@ -0,0 +1,353 @@
+/** 
+ * @file llwearabledata.cpp
+ * @brief LLWearableData class implementation
+ *
+ * $LicenseInfo:firstyear=2012&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+#include "linden_common.h"
+
+#include "llwearabledata.h"
+
+#include "llavatarappearance.h"
+#include "llavatarappearancedefines.h"
+#include "lldriverparam.h"
+#include "llmd5.h"
+
+LLWearableData::LLWearableData() :
+	mAvatarAppearance(NULL)
+{
+}
+
+// virtual
+LLWearableData::~LLWearableData()
+{
+}
+
+using namespace LLAvatarAppearanceDefines;
+
+LLWearable* LLWearableData::getWearable(const LLWearableType::EType type, U32 index)
+{
+	wearableentry_map_t::iterator wearable_iter = mWearableDatas.find(type);
+	if (wearable_iter == mWearableDatas.end())
+	{
+		return NULL;
+	}
+	wearableentry_vec_t& wearable_vec = wearable_iter->second;
+	if (index>=wearable_vec.size())
+	{
+		return NULL;
+	}
+	else
+	{
+		return wearable_vec[index];
+	}
+}
+
+void LLWearableData::setWearable(const LLWearableType::EType type, U32 index, LLWearable *wearable)
+{
+	LLWearable *old_wearable = getWearable(type,index);
+	if (!old_wearable)
+	{
+		pushWearable(type,wearable);
+		return;
+	}
+	
+	wearableentry_map_t::iterator wearable_iter = mWearableDatas.find(type);
+	if (wearable_iter == mWearableDatas.end())
+	{
+		llwarns << "invalid type, type " << type << " index " << index << llendl; 
+		return;
+	}
+	wearableentry_vec_t& wearable_vec = wearable_iter->second;
+	if (index>=wearable_vec.size())
+	{
+		llwarns << "invalid index, type " << type << " index " << index << llendl; 
+	}
+	else
+	{
+		wearable_vec[index] = wearable;
+		old_wearable->setUpdated();
+		const BOOL removed = FALSE;
+		wearableUpdated(wearable, removed);
+	}
+}
+
+U32 LLWearableData::pushWearable(const LLWearableType::EType type, 
+								   LLWearable *wearable,
+								   bool trigger_updated /* = true */)
+{
+	if (wearable == NULL)
+	{
+		// no null wearables please!
+		llwarns << "Null wearable sent for type " << type << llendl;
+		return MAX_CLOTHING_PER_TYPE;
+	}
+	if (type < LLWearableType::WT_COUNT || mWearableDatas[type].size() < MAX_CLOTHING_PER_TYPE)
+	{
+		mWearableDatas[type].push_back(wearable);
+		if (trigger_updated)
+		{
+			const BOOL removed = FALSE;
+			wearableUpdated(wearable, removed);
+		}
+		return mWearableDatas[type].size()-1;
+	}
+	return MAX_CLOTHING_PER_TYPE;
+}
+
+// virtual
+void LLWearableData::wearableUpdated(LLWearable *wearable, BOOL removed)
+{
+	wearable->setUpdated();
+	if (!removed)
+	{
+		pullCrossWearableValues(wearable->getType());
+	}
+}
+
+void LLWearableData::popWearable(LLWearable *wearable)
+{
+	if (wearable == NULL)
+	{
+		// nothing to do here. move along.
+		return;
+	}
+
+	U32 index = getWearableIndex(wearable);
+	const LLWearableType::EType type = wearable->getType();
+
+	if (index < MAX_CLOTHING_PER_TYPE && index < getWearableCount(type))
+	{
+		popWearable(type, index);
+	}
+}
+
+void LLWearableData::popWearable(const LLWearableType::EType type, U32 index)
+{
+	LLWearable *wearable = getWearable(type, index);
+	if (wearable)
+	{
+		mWearableDatas[type].erase(mWearableDatas[type].begin() + index);
+		const BOOL removed = TRUE;
+		wearableUpdated(wearable, removed);
+	}
+}
+
+void LLWearableData::clearWearableType(const LLWearableType::EType type)
+{
+	wearableentry_map_t::iterator wearable_iter = mWearableDatas.find(type);
+	if (wearable_iter == mWearableDatas.end())
+	{
+		return;
+	}
+	wearableentry_vec_t& wearable_vec = wearable_iter->second;
+	wearable_vec.clear();
+}
+
+bool LLWearableData::swapWearables(const LLWearableType::EType type, U32 index_a, U32 index_b)
+{
+	wearableentry_map_t::iterator wearable_iter = mWearableDatas.find(type);
+	if (wearable_iter == mWearableDatas.end())
+	{
+		return false;
+	}
+
+	wearableentry_vec_t& wearable_vec = wearable_iter->second;
+	if (0 > index_a || index_a >= wearable_vec.size()) return false;
+	if (0 > index_b || index_b >= wearable_vec.size()) return false;
+
+	LLWearable* wearable = wearable_vec[index_a];
+	wearable_vec[index_a] = wearable_vec[index_b];
+	wearable_vec[index_b] = wearable;
+	return true;
+}
+
+void LLWearableData::pullCrossWearableValues(const LLWearableType::EType type)
+{
+	llassert(mAvatarAppearance);
+	// scan through all of the avatar's visual parameters
+	for (LLViewerVisualParam* param = (LLViewerVisualParam*) mAvatarAppearance->getFirstVisualParam(); 
+		 param;
+		 param = (LLViewerVisualParam*) mAvatarAppearance->getNextVisualParam())
+	{
+		if( param )
+		{
+			LLDriverParam *driver_param = dynamic_cast<LLDriverParam*>(param);
+			if(driver_param)
+			{
+				// parameter is a driver parameter, have it update its cross-driven params
+				driver_param->updateCrossDrivenParams(type);
+			}
+		}
+	}
+}
+
+
+U32	LLWearableData::getWearableIndex(const LLWearable *wearable) const
+{
+	if (wearable == NULL)
+	{
+		return MAX_CLOTHING_PER_TYPE;
+	}
+
+	const LLWearableType::EType type = wearable->getType();
+	wearableentry_map_t::const_iterator wearable_iter = mWearableDatas.find(type);
+	if (wearable_iter == mWearableDatas.end())
+	{
+		llwarns << "tried to get wearable index with an invalid type!" << llendl;
+		return MAX_CLOTHING_PER_TYPE;
+	}
+	const wearableentry_vec_t& wearable_vec = wearable_iter->second;
+	for(U32 index = 0; index < wearable_vec.size(); index++)
+	{
+		if (wearable_vec[index] == wearable)
+		{
+			return index;
+		}
+	}
+
+	return MAX_CLOTHING_PER_TYPE;
+}
+
+BOOL LLWearableData::isOnTop(LLWearable* wearable) const
+{
+	if (!wearable) return FALSE;
+	const LLWearableType::EType type = wearable->getType();
+	return ( getTopWearable(type) == wearable );
+}
+
+const LLWearable* LLWearableData::getWearable(const LLWearableType::EType type, U32 index) const
+{
+	wearableentry_map_t::const_iterator wearable_iter = mWearableDatas.find(type);
+	if (wearable_iter == mWearableDatas.end())
+	{
+		return NULL;
+	}
+	const wearableentry_vec_t& wearable_vec = wearable_iter->second;
+	if (index>=wearable_vec.size())
+	{
+		return NULL;
+	}
+	else
+	{
+		return wearable_vec[index];
+	}
+}
+
+LLWearable* LLWearableData::getTopWearable(const LLWearableType::EType type)
+{
+	U32 count = getWearableCount(type);
+	if ( count == 0)
+	{
+		return NULL;
+	}
+
+	return getWearable(type, count-1);
+}
+
+const LLWearable* LLWearableData::getTopWearable(const LLWearableType::EType type) const
+{
+	U32 count = getWearableCount(type);
+	if ( count == 0)
+	{
+		return NULL;
+	}
+
+	return getWearable(type, count-1);
+}
+
+LLWearable* LLWearableData::getBottomWearable(const LLWearableType::EType type)
+{
+	if (getWearableCount(type) == 0)
+	{
+		return NULL;
+	}
+
+	return getWearable(type, 0);
+}
+
+const LLWearable* LLWearableData::getBottomWearable(const LLWearableType::EType type) const
+{
+	if (getWearableCount(type) == 0)
+	{
+		return NULL;
+	}
+
+	return getWearable(type, 0);
+}
+
+U32 LLWearableData::getWearableCount(const LLWearableType::EType type) const
+{
+	wearableentry_map_t::const_iterator wearable_iter = mWearableDatas.find(type);
+	if (wearable_iter == mWearableDatas.end())
+	{
+		return 0;
+	}
+	const wearableentry_vec_t& wearable_vec = wearable_iter->second;
+	return wearable_vec.size();
+}
+
+U32 LLWearableData::getWearableCount(const U32 tex_index) const
+{
+	const LLWearableType::EType wearable_type = LLAvatarAppearanceDictionary::getTEWearableType((LLAvatarAppearanceDefines::ETextureIndex)tex_index);
+	return getWearableCount(wearable_type);
+}
+
+LLUUID LLWearableData::computeBakedTextureHash(LLAvatarAppearanceDefines::EBakedTextureIndex baked_index,
+												 BOOL generate_valid_hash) // Set to false if you want to upload the baked texture w/o putting it in the cache
+{
+	LLUUID hash_id;
+	bool hash_computed = false;
+	LLMD5 hash;
+	const LLAvatarAppearanceDictionary::BakedEntry *baked_dict = LLAvatarAppearanceDictionary::getInstance()->getBakedTexture(baked_index);
+
+	for (U8 i=0; i < baked_dict->mWearables.size(); i++)
+	{
+		const LLWearableType::EType baked_type = baked_dict->mWearables[i];
+		const U32 num_wearables = getWearableCount(baked_type);
+		for (U32 index = 0; index < num_wearables; ++index)
+		{
+			const LLWearable* wearable = getWearable(baked_type,index);
+			if (wearable)
+			{
+				wearable->addToBakedTextureHash(hash);
+				hash_computed = true;
+			}
+		}
+	}
+	if (hash_computed)
+	{
+		hash.update((const unsigned char*)baked_dict->mWearablesHashID.mData, UUID_BYTES);
+
+		if (!generate_valid_hash)
+		{
+			invalidateBakedTextureHash(hash);
+		}
+		hash.finalize();
+		hash.raw_digest(hash_id.mData);
+	}
+
+	return hash_id;
+}
+
+
diff --git a/indra/llappearance/llwearabledata.h b/indra/llappearance/llwearabledata.h
new file mode 100644
index 00000000000..2931424131f
--- /dev/null
+++ b/indra/llappearance/llwearabledata.h
@@ -0,0 +1,108 @@
+/** 
+ * @file llwearabledata.h
+ * @brief LLWearableData class header file
+ *
+ * $LicenseInfo:firstyear=20012license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_WEARABLEDATA_H
+#define LL_WEARABLEDATA_H
+
+#include "llavatarappearancedefines.h"
+#include "llerror.h"
+
+class LLAvatarAppearance;
+
+class LLWearableData
+{
+	// *TODO: Figure out why this is causing compile error.
+	//LOG_CLASS(LLWearableData);
+
+	//--------------------------------------------------------------------
+	// Constructors / destructors / Initializers
+	//--------------------------------------------------------------------
+public:
+	LLWearableData();
+	virtual ~LLWearableData();
+
+	void setAvatarAppearance(LLAvatarAppearance* appearance) { mAvatarAppearance = appearance; }
+
+protected:
+	//--------------------------------------------------------------------
+	// Accessors
+	//--------------------------------------------------------------------
+public:
+	LLWearable*			getWearable(const LLWearableType::EType type, U32 index /*= 0*/); 
+	const LLWearable* 	getWearable(const LLWearableType::EType type, U32 index /*= 0*/) const;
+	LLWearable*			getTopWearable(const LLWearableType::EType type);
+	const LLWearable*	getTopWearable(const LLWearableType::EType type) const;
+	LLWearable*			getBottomWearable(const LLWearableType::EType type);
+	const LLWearable*	getBottomWearable(const LLWearableType::EType type) const;
+	U32				getWearableCount(const LLWearableType::EType type) const;
+	U32				getWearableCount(const U32 tex_index) const;
+	U32				getWearableIndex(const LLWearable *wearable) const;
+
+	BOOL			isOnTop(LLWearable* wearable) const;
+
+	static const U32 MAX_CLOTHING_PER_TYPE = 5; 
+
+	//--------------------------------------------------------------------
+	// Setters
+	//--------------------------------------------------------------------
+protected:
+	// Low-level data structure setter - public access is via setWearableItem, etc.
+	void 			setWearable(const LLWearableType::EType type, U32 index, LLWearable *wearable);
+	U32 			pushWearable(const LLWearableType::EType type, LLWearable *wearable, 
+								 bool trigger_updated = true);
+	virtual void	wearableUpdated(LLWearable *wearable, BOOL removed);
+	void 			popWearable(LLWearable *wearable);
+	void			popWearable(const LLWearableType::EType type, U32 index);
+	void			clearWearableType(const LLWearableType::EType type);
+	bool			swapWearables(const LLWearableType::EType type, U32 index_a, U32 index_b);
+
+private:
+	void			pullCrossWearableValues(const LLWearableType::EType type);
+
+	//--------------------------------------------------------------------
+	// Server Communication
+	//--------------------------------------------------------------------
+public:
+	LLUUID			computeBakedTextureHash(LLAvatarAppearanceDefines::EBakedTextureIndex baked_index,
+											BOOL generate_valid_hash = TRUE);
+protected:
+	virtual void	invalidateBakedTextureHash(LLMD5& hash) const {}
+
+	//--------------------------------------------------------------------
+	// Member variables
+	//--------------------------------------------------------------------
+private:
+	LLAvatarAppearance* mAvatarAppearance;
+	typedef std::vector<LLWearable*> wearableentry_vec_t; // all wearables of a certain type (EG all shirts)
+	typedef std::map<LLWearableType::EType, wearableentry_vec_t> wearableentry_map_t;	// wearable "categories" arranged by wearable type
+	wearableentry_map_t mWearableDatas;
+
+};
+
+
+
+#endif // LL_WEARABLEDATA_H
+
diff --git a/indra/llcharacter/llcharacter.cpp b/indra/llcharacter/llcharacter.cpp
index 0a6a8f9fa6b..85cf1cd3f5e 100644
--- a/indra/llcharacter/llcharacter.cpp
+++ b/indra/llcharacter/llcharacter.cpp
@@ -286,7 +286,7 @@ void LLCharacter::removeAnimationData(std::string name)
 //-----------------------------------------------------------------------------
 // setVisualParamWeight()
 //-----------------------------------------------------------------------------
-BOOL LLCharacter::setVisualParamWeight(LLVisualParam* which_param, F32 weight, BOOL upload_bake)
+BOOL LLCharacter::setVisualParamWeight(const LLVisualParam* which_param, F32 weight, BOOL upload_bake)
 {
 	S32 index = which_param->getID();
 	visual_param_index_map_t::iterator index_iter = mVisualParamIndexMap.find(index);
diff --git a/indra/llcharacter/llcharacter.h b/indra/llcharacter/llcharacter.h
index 3ebb2bffb04..2f2b2405b65 100644
--- a/indra/llcharacter/llcharacter.h
+++ b/indra/llcharacter/llcharacter.h
@@ -197,7 +197,7 @@ class LLCharacter
 	void addVisualParam(LLVisualParam *param);
 	void addSharedVisualParam(LLVisualParam *param);
 
-	virtual BOOL setVisualParamWeight(LLVisualParam *which_param, F32 weight, BOOL upload_bake = FALSE );
+	virtual BOOL setVisualParamWeight(const LLVisualParam *which_param, F32 weight, BOOL upload_bake = FALSE );
 	virtual BOOL setVisualParamWeight(const char* param_name, F32 weight, BOOL upload_bake = FALSE );
 	virtual BOOL setVisualParamWeight(S32 index, F32 weight, BOOL upload_bake = FALSE );
 
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 214071fa672..21b1512e582 100755
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -158,7 +158,6 @@ set(viewer_SOURCE_FILES
     lldrawpooltree.cpp
     lldrawpoolwater.cpp
     lldrawpoolwlsky.cpp
-    lldriverparam.cpp
     lldynamictexture.cpp
     llemote.cpp
     llenvmanager.cpp
@@ -728,7 +727,6 @@ set(viewer_HEADER_FILES
     lldrawpooltree.h
     lldrawpoolwater.h
     lldrawpoolwlsky.h
-    lldriverparam.h
     lldynamictexture.h
     llemote.h
     llenvmanager.h
diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp
index 08238e1aea7..40cedc1b350 100755
--- a/indra/newview/llagentwearables.cpp
+++ b/indra/newview/llagentwearables.cpp
@@ -119,7 +119,7 @@ void LLAgentWearables::dump()
 		llinfos << "Type: " << i << " count " << count << llendl;
 		for (U32 j=0; j<count; j++)
 		{
-			LLViewerWearable* wearable = getWearable((LLWearableType::EType)i,j);
+			LLViewerWearable* wearable = getViewerWearable((LLWearableType::EType)i,j);
 			if (wearable == NULL)
 			{
 				llinfos << "    " << j << " NULL wearable" << llendl;
@@ -159,6 +159,7 @@ struct LLAgentDumper
 };
 
 LLAgentWearables::LLAgentWearables() :
+	LLWearableData(),
 	mWearablesLoaded(FALSE)
 ,	mCOFChangeInProgress(false)
 {
@@ -182,12 +183,11 @@ void LLAgentWearables::initClass()
 }
 
 void LLAgentWearables::setAvatarObject(LLVOAvatarSelf *avatar)
-{ 
-	if (avatar)
-	{
-		avatar->outputRezTiming("Sending wearables request");
-		sendAgentWearablesRequest();
-	}
+{
+	llassert(avatar);
+	avatar->outputRezTiming("Sending wearables request");
+	sendAgentWearablesRequest();
+	setAvatarAppearance(avatar);
 }
 
 // wearables
@@ -312,7 +312,7 @@ void LLAgentWearables::sendAgentWearablesUpdate()
 	{
 		for (U32 index=0; index < getWearableCount((LLWearableType::EType)type); ++index)
 		{
-			LLViewerWearable* wearable = getWearable((LLWearableType::EType)type,index);
+			LLViewerWearable* wearable = getViewerWearable((LLWearableType::EType)type,index);
 			if (wearable)
 			{
 				if (wearable->getItemID().isNull())
@@ -354,7 +354,7 @@ void LLAgentWearables::sendAgentWearablesUpdate()
 		U8 type_u8 = (U8)type;
 		gMessageSystem->addU8Fast(_PREHASH_WearableType, type_u8);
 
-		LLViewerWearable* wearable = getWearable((LLWearableType::EType)type, 0);
+		LLViewerWearable* wearable = getViewerWearable((LLWearableType::EType)type, 0);
 		if (wearable)
 		{
 			//llinfos << "Sending wearable " << wearable->getName() << llendl;
@@ -382,7 +382,7 @@ void LLAgentWearables::sendAgentWearablesUpdate()
 void LLAgentWearables::saveWearable(const LLWearableType::EType type, const U32 index, BOOL send_update,
 									const std::string new_name)
 {
-	LLViewerWearable* old_wearable = getWearable(type, index);
+	LLViewerWearable* old_wearable = getViewerWearable(type, index);
 	if(!old_wearable) return;
 	bool name_changed = !new_name.empty() && (new_name != old_wearable->getName());
 	if (name_changed || old_wearable->isDirty() || old_wearable->isOldVersion())
@@ -465,7 +465,7 @@ void LLAgentWearables::saveWearableAs(const LLWearableType::EType type,
 		llwarns << "LLAgent::saveWearableAs() not copyable." << llendl;
 		return;
 	}
-	LLViewerWearable* old_wearable = getWearable(type, index);
+	LLViewerWearable* old_wearable = getViewerWearable(type, index);
 	if (!old_wearable)
 	{
 		llwarns << "LLAgent::saveWearableAs() no old wearable." << llendl;
@@ -518,7 +518,7 @@ void LLAgentWearables::saveWearableAs(const LLWearableType::EType type,
 
 void LLAgentWearables::revertWearable(const LLWearableType::EType type, const U32 index)
 {
-	LLViewerWearable* wearable = getWearable(type, index);
+	LLViewerWearable* wearable = getViewerWearable(type, index);
 	llassert(wearable);
 	if (wearable)
 	{
@@ -553,7 +553,7 @@ void LLAgentWearables::setWearableName(const LLUUID& item_id, const std::string&
 			LLUUID curr_item_id = getWearableItemID((LLWearableType::EType)i,j);
 			if (curr_item_id == item_id)
 			{
-				LLViewerWearable* old_wearable = getWearable((LLWearableType::EType)i,j);
+				LLViewerWearable* old_wearable = getViewerWearable((LLWearableType::EType)i,j);
 				llassert(old_wearable);
 				if (!old_wearable) continue;
 
@@ -647,7 +647,7 @@ const LLViewerWearable* LLAgentWearables::getWearableFromItemID(const LLUUID& it
 	{
 		for (U32 j=0; j < getWearableCount((LLWearableType::EType)i); j++)
 		{
-			const LLViewerWearable * curr_wearable = getWearable((LLWearableType::EType)i, j);
+			const LLViewerWearable * curr_wearable = getViewerWearable((LLWearableType::EType)i, j);
 			if (curr_wearable && (curr_wearable->getItemID() == base_item_id))
 			{
 				return curr_wearable;
@@ -664,7 +664,7 @@ LLViewerWearable* LLAgentWearables::getWearableFromItemID(const LLUUID& item_id)
 	{
 		for (U32 j=0; j < getWearableCount((LLWearableType::EType)i); j++)
 		{
-			LLViewerWearable * curr_wearable = getWearable((LLWearableType::EType)i, j);
+			LLViewerWearable * curr_wearable = getViewerWearable((LLWearableType::EType)i, j);
 			if (curr_wearable && (curr_wearable->getItemID() == base_item_id))
 			{
 				return curr_wearable;
@@ -680,7 +680,7 @@ LLViewerWearable*	LLAgentWearables::getWearableFromAssetID(const LLUUID& asset_i
 	{
 		for (U32 j=0; j < getWearableCount((LLWearableType::EType)i); j++)
 		{
-			LLViewerWearable * curr_wearable = getWearable((LLWearableType::EType)i, j);
+			LLViewerWearable * curr_wearable = getViewerWearable((LLWearableType::EType)i, j);
 			if (curr_wearable && (curr_wearable->getAssetID() == asset_id))
 			{
 				return curr_wearable;
@@ -699,215 +699,55 @@ void LLAgentWearables::sendAgentWearablesRequest()
 	gAgent.sendReliableMessage();
 }
 
-// static
-BOOL LLAgentWearables::selfHasWearable(LLWearableType::EType type)
+LLViewerWearable* LLAgentWearables::getViewerWearable(const LLWearableType::EType type, U32 index /*= 0*/)
 {
-	return (gAgentWearables.getWearableCount(type) > 0);
+	return dynamic_cast<LLViewerWearable*> (getWearable(type, index));
 }
 
-LLViewerWearable* LLAgentWearables::getWearable(const LLWearableType::EType type, U32 index)
+const LLViewerWearable* LLAgentWearables::getViewerWearable(const LLWearableType::EType type, U32 index /*= 0*/) const
 {
-	wearableentry_map_t::iterator wearable_iter = mWearableDatas.find(type);
-	if (wearable_iter == mWearableDatas.end())
-	{
-		return NULL;
-	}
-	wearableentry_vec_t& wearable_vec = wearable_iter->second;
-	if (index>=wearable_vec.size())
-	{
-		return NULL;
-	}
-	else
-	{
-		return wearable_vec[index];
-	}
+	return dynamic_cast<const LLViewerWearable*> (getWearable(type, index));
 }
 
-void LLAgentWearables::setWearable(const LLWearableType::EType type, U32 index, LLViewerWearable *wearable)
-{
-
-	LLViewerWearable *old_wearable = getWearable(type,index);
-	if (!old_wearable)
-	{
-		pushWearable(type,wearable);
-		return;
-	}
-	
-	wearableentry_map_t::iterator wearable_iter = mWearableDatas.find(type);
-	if (wearable_iter == mWearableDatas.end())
-	{
-		llwarns << "invalid type, type " << type << " index " << index << llendl; 
-		return;
-	}
-	wearableentry_vec_t& wearable_vec = wearable_iter->second;
-	if (index>=wearable_vec.size())
-	{
-		llwarns << "invalid index, type " << type << " index " << index << llendl; 
-	}
-	else
-	{
-		wearable_vec[index] = wearable;
-		old_wearable->setLabelUpdated();
-		wearableUpdated(wearable);
-		checkWearableAgainstInventory(wearable);
-	}
-}
-
-U32 LLAgentWearables::pushWearable(const LLWearableType::EType type, LLViewerWearable *wearable)
-{
-	if (wearable == NULL)
-	{
-		// no null wearables please!
-		llwarns << "Null wearable sent for type " << type << llendl;
-		return MAX_CLOTHING_PER_TYPE;
-	}
-	if (type < LLWearableType::WT_COUNT || mWearableDatas[type].size() < MAX_CLOTHING_PER_TYPE)
-	{
-		mWearableDatas[type].push_back(wearable);
-		wearableUpdated(wearable);
-		checkWearableAgainstInventory(wearable);
-		return mWearableDatas[type].size()-1;
-	}
-	return MAX_CLOTHING_PER_TYPE;
-}
-
-void LLAgentWearables::wearableUpdated(LLViewerWearable *wearable)
+// static
+BOOL LLAgentWearables::selfHasWearable(LLWearableType::EType type)
 {
-	gAgentAvatarp->wearableUpdated(wearable->getType(), FALSE);
-	wearable->refreshName();
-	wearable->setLabelUpdated();
-
-	wearable->pullCrossWearableValues();
-
-	// Hack pt 2. If the wearable we just loaded has definition version 24,
-	// then force a re-save of this wearable after slamming the version number to 22.
-	// This number was incorrectly incremented for internal builds before release, and
-	// this fix will ensure that the affected wearables are re-saved with the right version number.
-	// the versions themselves are compatible. This code can be removed before release.
-	if( wearable->getDefinitionVersion() == 24 )
-	{
-		wearable->setDefinitionVersion(22);
-		U32 index = getWearableIndex(wearable);
-		llinfos << "forcing werable type " << wearable->getType() << " to version 22 from 24" << llendl;
-		saveWearable(wearable->getType(),index,TRUE);
-	}
-
+	return (gAgentWearables.getWearableCount(type) > 0);
 }
 
-void LLAgentWearables::popWearable(LLViewerWearable *wearable)
+// virtual
+void LLAgentWearables::wearableUpdated(LLWearable *wearable, BOOL removed)
 {
-	if (wearable == NULL)
-	{
-		// nothing to do here. move along.
-		return;
-	}
-
-	U32 index = getWearableIndex(wearable);
-	LLWearableType::EType type = wearable->getType();
-
-	if (index < MAX_CLOTHING_PER_TYPE && index < getWearableCount(type))
+	if (isAgentAvatarValid())
 	{
-		popWearable(type, index);
+		const BOOL upload_result = removed;
+		gAgentAvatarp->wearableUpdated(wearable->getType(), upload_result);
 	}
-}
 
-void LLAgentWearables::popWearable(const LLWearableType::EType type, U32 index)
-{
-	LLViewerWearable *wearable = getWearable(type, index);
-	if (wearable)
-	{
-		mWearableDatas[type].erase(mWearableDatas[type].begin() + index);
-		if (isAgentAvatarValid())
-		{
-		gAgentAvatarp->wearableUpdated(wearable->getType(), TRUE);
-		}
-		wearable->setLabelUpdated();
-	}
-}
+	LLWearableData::wearableUpdated(wearable, removed);
 
-U32	LLAgentWearables::getWearableIndex(const LLViewerWearable *wearable) const
-{
-	if (wearable == NULL)
+	if (!removed)
 	{
-		return MAX_CLOTHING_PER_TYPE;
-	}
+		LLViewerWearable* viewer_wearable = dynamic_cast<LLViewerWearable*>(wearable);
+		viewer_wearable->refreshName();
 
-	const LLWearableType::EType type = wearable->getType();
-	wearableentry_map_t::const_iterator wearable_iter = mWearableDatas.find(type);
-	if (wearable_iter == mWearableDatas.end())
-	{
-		llwarns << "tried to get wearable index with an invalid type!" << llendl;
-		return MAX_CLOTHING_PER_TYPE;
-	}
-	const wearableentry_vec_t& wearable_vec = wearable_iter->second;
-	for(U32 index = 0; index < wearable_vec.size(); index++)
-	{
-		if (wearable_vec[index] == wearable)
+		// Hack pt 2. If the wearable we just loaded has definition version 24,
+		// then force a re-save of this wearable after slamming the version number to 22.
+		// This number was incorrectly incremented for internal builds before release, and
+		// this fix will ensure that the affected wearables are re-saved with the right version number.
+		// the versions themselves are compatible. This code can be removed before release.
+		if( wearable->getDefinitionVersion() == 24 )
 		{
-			return index;
+			wearable->setDefinitionVersion(22);
+			U32 index = getWearableIndex(wearable);
+			llinfos << "forcing wearable type " << wearable->getType() << " to version 22 from 24" << llendl;
+			saveWearable(wearable->getType(),index,TRUE);
 		}
-	}
-
-	return MAX_CLOTHING_PER_TYPE;
-}
 
-const LLViewerWearable* LLAgentWearables::getWearable(const LLWearableType::EType type, U32 index) const
-{
-	wearableentry_map_t::const_iterator wearable_iter = mWearableDatas.find(type);
-	if (wearable_iter == mWearableDatas.end())
-	{
-		return NULL;
-	}
-	const wearableentry_vec_t& wearable_vec = wearable_iter->second;
-	if (index>=wearable_vec.size())
-	{
-		return NULL;
-	}
-	else
-	{
-		return wearable_vec[index];
+		checkWearableAgainstInventory(viewer_wearable);
 	}
 }
 
-LLViewerWearable* LLAgentWearables::getTopWearable(const LLWearableType::EType type)
-{
-	U32 count = getWearableCount(type);
-	if ( count == 0)
-	{
-		return NULL;
-	}
-
-	return getWearable(type, count-1);
-}
-
-LLViewerWearable* LLAgentWearables::getBottomWearable(const LLWearableType::EType type)
-{
-	if (getWearableCount(type) == 0)
-	{
-		return NULL;
-	}
-
-	return getWearable(type, 0);
-}
-
-U32 LLAgentWearables::getWearableCount(const LLWearableType::EType type) const
-{
-	wearableentry_map_t::const_iterator wearable_iter = mWearableDatas.find(type);
-	if (wearable_iter == mWearableDatas.end())
-	{
-		return 0;
-	}
-	const wearableentry_vec_t& wearable_vec = wearable_iter->second;
-	return wearable_vec.size();
-}
-
-U32 LLAgentWearables::getWearableCount(const U32 tex_index) const
-{
-	const LLWearableType::EType wearable_type = LLAvatarAppearanceDictionary::getTEWearableType((LLAvatarAppearanceDefines::ETextureIndex)tex_index);
-	return getWearableCount(wearable_type);
-}
-
-
 BOOL LLAgentWearables::itemUpdatePending(const LLUUID& item_id) const
 {
 	return mItemsAwaitingWearableUpdate.find(item_id) != mItemsAwaitingWearableUpdate.end();
@@ -920,7 +760,7 @@ U32 LLAgentWearables::itemUpdatePendingCount() const
 
 const LLUUID LLAgentWearables::getWearableItemID(LLWearableType::EType type, U32 index) const
 {
-	const LLViewerWearable *wearable = getWearable(type,index);
+	const LLViewerWearable *wearable = getViewerWearable(type,index);
 	if (wearable)
 		return wearable->getItemID();
 	else
@@ -929,7 +769,7 @@ const LLUUID LLAgentWearables::getWearableItemID(LLWearableType::EType type, U32
 
 const LLUUID LLAgentWearables::getWearableAssetID(LLWearableType::EType type, U32 index) const
 {
-	const LLViewerWearable *wearable = getWearable(type,index);
+	const LLViewerWearable *wearable = getViewerWearable(type,index);
 	if (wearable)
 		return wearable->getAssetID();
 	else
@@ -1095,7 +935,7 @@ void LLAgentWearables::recoverMissingWearableDone()
 
 void LLAgentWearables::addLocalTextureObject(const LLWearableType::EType wearable_type, const LLAvatarAppearanceDefines::ETextureIndex texture_type, U32 wearable_index)
 {
-	LLViewerWearable* wearable = getWearable((LLWearableType::EType)wearable_type, wearable_index);
+	LLViewerWearable* wearable = getViewerWearable((LLWearableType::EType)wearable_type, wearable_index);
 	if (!wearable)
 	{
 		llerrs << "Tried to add local texture object to invalid wearable with type " << wearable_type << " and index " << wearable_index << llendl;
@@ -1305,7 +1145,7 @@ void LLAgentWearables::removeWearable(const LLWearableType::EType type, bool do_
 	}
 	else
 	{
-		LLViewerWearable* old_wearable = getWearable(type,index);
+		LLViewerWearable* old_wearable = getViewerWearable(type,index);
 		
 		if (old_wearable)
 		{
@@ -1360,10 +1200,10 @@ void LLAgentWearables::removeWearableFinal(const LLWearableType::EType type, boo
 	//LLAgentDumper dumper("removeWearable");
 	if (do_remove_all)
 	{
-		S32 max_entry = mWearableDatas[type].size()-1;
+		S32 max_entry = getWearableCount(type)-1;
 		for (S32 i=max_entry; i>=0; i--)
 		{
-			LLViewerWearable* old_wearable = getWearable(type,i);
+			LLViewerWearable* old_wearable = getViewerWearable(type,i);
 			//queryWearableCache(); // moved below
 			if (old_wearable)
 			{
@@ -1371,11 +1211,11 @@ void LLAgentWearables::removeWearableFinal(const LLWearableType::EType type, boo
 				old_wearable->removeFromAvatar(TRUE);
 			}
 		}
-		mWearableDatas[type].clear();
+		clearWearableType(type);
 	}
 	else
 	{
-		LLViewerWearable* old_wearable = getWearable(type, index);
+		LLViewerWearable* old_wearable = getViewerWearable(type, index);
 		//queryWearableCache(); // moved below
 
 		if (old_wearable)
@@ -1439,8 +1279,8 @@ void LLAgentWearables::setWearableOutfit(const LLInventoryItem::item_array_t& it
 			{
 				pushWearable(type,new_wearable);
 			}
-			wearableUpdated(new_wearable);
-			checkWearableAgainstInventory(new_wearable);
+			const BOOL removed = FALSE;
+			wearableUpdated(new_wearable, removed);
 		}
 	}
 
@@ -1491,7 +1331,7 @@ void LLAgentWearables::setWearableItem(LLInventoryItem* new_item, LLViewerWearab
 	{
 		// Remove old wearable, if any
 		// MULTI_WEARABLE: hardwired to 0
-		LLViewerWearable* old_wearable = getWearable(type,0);
+		LLViewerWearable* old_wearable = getViewerWearable(type,0);
 		if (old_wearable)
 		{
 			const LLUUID& old_item_id = old_wearable->getItemID();
@@ -1560,9 +1400,10 @@ void LLAgentWearables::setWearableFinal(LLInventoryItem* new_item, LLViewerWeara
 	if (do_append && getWearableItemID(type,0).notNull())
 	{
 		new_wearable->setItemID(new_item->getUUID());
-		mWearableDatas[type].push_back(new_wearable);
+		const bool trigger_updated = false;
+		pushWearable(type, new_wearable, trigger_updated);
 		llinfos << "Added additional wearable for type " << type
-				<< " size is now " << mWearableDatas[type].size() << llendl;
+				<< " size is now " << getWearableCount(type) << llendl;
 		checkWearableAgainstInventory(new_wearable);
 	}
 	else
@@ -1570,7 +1411,7 @@ void LLAgentWearables::setWearableFinal(LLInventoryItem* new_item, LLViewerWeara
 		// Replace the old wearable with a new one.
 		llassert(new_item->getAssetUUID() == new_wearable->getAssetID());
 
-		LLViewerWearable *old_wearable = getWearable(type,0);
+		LLViewerWearable *old_wearable = getViewerWearable(type,0);
 		LLUUID old_item_id;
 		if (old_wearable)
 		{
@@ -1585,7 +1426,7 @@ void LLAgentWearables::setWearableFinal(LLInventoryItem* new_item, LLViewerWeara
 			gInventory.notifyObservers();
 		}
 		llinfos << "Replaced current element 0 for type " << type
-				<< " size is now " << mWearableDatas[type].size() << llendl;
+				<< " size is now " << getWearableCount(type) << llendl;
 	}
 
 	//llinfos << "LLVOAvatar::setWearableItem()" << llendl;
@@ -1652,46 +1493,14 @@ void LLAgentWearables::queryWearableCache()
 	}
 }
 
-LLUUID LLAgentWearables::computeBakedTextureHash(LLAvatarAppearanceDefines::EBakedTextureIndex baked_index,
-												 BOOL generate_valid_hash) // Set to false if you want to upload the baked texture w/o putting it in the cache
+// virtual
+void LLAgentWearables::invalidateBakedTextureHash(LLMD5& hash) const
 {
-	LLUUID hash_id;
-	bool hash_computed = false;
-	LLMD5 hash;
-	const LLAvatarAppearanceDictionary::BakedEntry *baked_dict = LLAvatarAppearanceDictionary::getInstance()->getBakedTexture(baked_index);
-
-	for (U8 i=0; i < baked_dict->mWearables.size(); i++)
-	{
-		const LLWearableType::EType baked_type = baked_dict->mWearables[i];
-		const U32 num_wearables = getWearableCount(baked_type);
-		for (U32 index = 0; index < num_wearables; ++index)
-		{
-			const LLViewerWearable* wearable = getWearable(baked_type,index);
-			if (wearable)
-			{
-				LLUUID asset_id = wearable->getAssetID();
-				hash.update((const unsigned char*)asset_id.mData, UUID_BYTES);
-				hash_computed = true;
-			}
-		}
-	}
-	if (hash_computed)
+	// Add some garbage into the hash so that it becomes invalid.
+	if (isAgentAvatarValid())
 	{
-		hash.update((const unsigned char*)baked_dict->mWearablesHashID.mData, UUID_BYTES);
-
-		// Add some garbage into the hash so that it becomes invalid.
-		if (!generate_valid_hash)
-		{
-			if (isAgentAvatarValid())
-			{
-				hash.update((const unsigned char*)gAgentAvatarp->getID().mData, UUID_BYTES);
-			}
-		}
-		hash.finalize();
-		hash.raw_digest(hash_id.mData);
+		hash.update((const unsigned char*)gAgentAvatarp->getID().mData, UUID_BYTES);
 	}
-
-	return hash_id;
 }
 
 // User has picked "remove from avatar" from a menu.
@@ -1875,13 +1684,13 @@ void LLAgentWearables::checkWearablesLoaded() const
 
 // Returns false if the given wearable is already topmost/bottommost
 // (depending on closer_to_body parameter).
-bool LLAgentWearables::canMoveWearable(const LLUUID& item_id, bool closer_to_body)
+bool LLAgentWearables::canMoveWearable(const LLUUID& item_id, bool closer_to_body) const
 {
-	const LLViewerWearable* wearable = getWearableFromItemID(item_id);
+	const LLWearable* wearable = getWearableFromItemID(item_id);
 	if (!wearable) return false;
 
 	LLWearableType::EType wtype = wearable->getType();
-	const LLViewerWearable* marginal_wearable = closer_to_body ? getBottomWearable(wtype) : getTopWearable(wtype);
+	const LLWearable* marginal_wearable = closer_to_body ? getBottomWearable(wtype) : getTopWearable(wtype);
 	if (!marginal_wearable) return false;
 
 	return wearable != marginal_wearable;
@@ -1918,7 +1727,7 @@ void LLAgentWearables::animateAllWearableParams(F32 delta, BOOL upload_bake)
 	{
 		for (S32 count = 0; count < (S32)getWearableCount((LLWearableType::EType)type); ++count)
 		{
-			LLViewerWearable *wearable = getWearable((LLWearableType::EType)type,count);
+			LLViewerWearable *wearable = getViewerWearable((LLWearableType::EType)type,count);
 			llassert(wearable);
 			if (wearable)
 			{
@@ -1933,28 +1742,39 @@ bool LLAgentWearables::moveWearable(const LLViewerInventoryItem* item, bool clos
 	if (!item) return false;
 	if (!item->isWearableType()) return false;
 
-	wearableentry_map_t::iterator wearable_iter = mWearableDatas.find(item->getWearableType());
-	if (wearable_iter == mWearableDatas.end()) return false;
-
-	wearableentry_vec_t& wearable_vec = wearable_iter->second;
-	if (wearable_vec.empty()) return false;
+	LLWearableType::EType type = item->getWearableType();
+	U32 wearable_count = getWearableCount(type);
+	if (0 == wearable_count) return false;
 
 	const LLUUID& asset_id = item->getAssetUUID();
 
 	//nowhere to move if the wearable is already on any boundary (closest to the body/furthest from the body)
-	if (closer_to_body && asset_id == wearable_vec.front()->getAssetID()) return false;
-	if (!closer_to_body && asset_id == wearable_vec.back()->getAssetID()) return false;
+	if (closer_to_body)
+	{
+		LLViewerWearable* bottom_wearable = dynamic_cast<LLViewerWearable*>( getBottomWearable(type) );
+		if (bottom_wearable->getAssetID() == asset_id)
+		{
+			return false;
+		}
+	}
+	else // !closer_to_body
+	{
+		LLViewerWearable* top_wearable = dynamic_cast<LLViewerWearable*>( getTopWearable(type) );
+		if (top_wearable->getAssetID() == asset_id)
+		{
+			return false;
+		}
+	}
 
-	for (U32 i = 0; i < wearable_vec.size(); ++i)
+	for (U32 i = 0; i < wearable_count; ++i)
 	{
-		LLViewerWearable* wearable = wearable_vec[i];
+		LLViewerWearable* wearable = getViewerWearable(type, i);
 		if (!wearable) continue;
 		if (wearable->getAssetID() != asset_id) continue;
 		
 		//swapping wearables
 		U32 swap_i = closer_to_body ? i-1 : i+1;
-		wearable_vec[i] = wearable_vec[swap_i];
-		wearable_vec[swap_i] = wearable;
+		swapWearables(type, i, swap_i);
 		return true;
 	}
 
diff --git a/indra/newview/llagentwearables.h b/indra/newview/llagentwearables.h
index 41995dd55bb..a60fbc969bf 100755
--- a/indra/newview/llagentwearables.h
+++ b/indra/newview/llagentwearables.h
@@ -37,6 +37,7 @@
 #include "llinventorymodel.h"
 #include "llviewerinventory.h"
 #include "llavatarappearancedefines.h"
+#include "llwearabledata.h"
 
 class LLInventoryItem;
 class LLVOAvatarSelf;
@@ -44,7 +45,7 @@ class LLViewerWearable;
 class LLInitialWearablesFetch;
 class LLViewerObject;
 
-class LLAgentWearables : public LLInitClass<LLAgentWearables>
+class LLAgentWearables : public LLInitClass<LLAgentWearables>, public LLWearableData
 {
 	//--------------------------------------------------------------------
 	// Constructors / destructors / Initializers
@@ -78,7 +79,7 @@ class LLAgentWearables : public LLInitClass<LLAgentWearables>
 	bool			isCOFChangeInProgress() const { return mCOFChangeInProgress; }
 	void			updateWearablesLoaded();
 	void			checkWearablesLoaded() const;
-	bool			canMoveWearable(const LLUUID& item_id, bool closer_to_body);
+	bool			canMoveWearable(const LLUUID& item_id, bool closer_to_body) const;
 	
 	// Note: False for shape, skin, eyes, and hair, unless you have MORE than 1.
 	bool			canWearableBeRemoved(const LLViewerWearable* wearable) const;
@@ -94,36 +95,22 @@ class LLAgentWearables : public LLInitClass<LLAgentWearables>
 	const LLViewerWearable*	getWearableFromItemID(const LLUUID& item_id) const;
 	LLViewerWearable*	getWearableFromItemID(const LLUUID& item_id);
 	LLViewerWearable*	getWearableFromAssetID(const LLUUID& asset_id);
+	LLViewerWearable*		getViewerWearable(const LLWearableType::EType type, U32 index /*= 0*/); 
+	const LLViewerWearable*	getViewerWearable(const LLWearableType::EType type, U32 index /*= 0*/) const;
 	LLInventoryItem*	getWearableInventoryItem(LLWearableType::EType type, U32 index /*= 0*/);
 	static BOOL			selfHasWearable(LLWearableType::EType type);
-	LLViewerWearable*			getWearable(const LLWearableType::EType type, U32 index /*= 0*/); 
-	const LLViewerWearable* 	getWearable(const LLWearableType::EType type, U32 index /*= 0*/) const;
-	LLViewerWearable*		getTopWearable(const LLWearableType::EType type);
-	LLViewerWearable*		getBottomWearable(const LLWearableType::EType type);
-	U32				getWearableCount(const LLWearableType::EType type) const;
-	U32				getWearableCount(const U32 tex_index) const;
-
-	static const U32 MAX_CLOTHING_PER_TYPE = 5; 
-
 
 	//--------------------------------------------------------------------
 	// Setters
 	//--------------------------------------------------------------------
-
 private:
-	// Low-level data structure setter - public access is via setWearableItem, etc.
-	void 			setWearable(const LLWearableType::EType type, U32 index, LLViewerWearable *wearable);
-	U32 			pushWearable(const LLWearableType::EType type, LLViewerWearable *wearable);
-	void			wearableUpdated(LLViewerWearable *wearable);
-	void 			popWearable(LLViewerWearable *wearable);
-	void			popWearable(const LLWearableType::EType type, U32 index);
-	
+	/*virtual*/void	wearableUpdated(LLWearable *wearable, BOOL removed);
 public:
 	void			setWearableItem(LLInventoryItem* new_item, LLViewerWearable* wearable, bool do_append = false);
 	void			setWearableOutfit(const LLInventoryItem::item_array_t& items, const LLDynamicArray< LLViewerWearable* >& wearables, BOOL remove);
 	void			setWearableName(const LLUUID& item_id, const std::string& new_name);
+	// *TODO: Move this into llappearance/LLWearableData ?
 	void			addLocalTextureObject(const LLWearableType::EType wearable_type, const LLAvatarAppearanceDefines::ETextureIndex texture_type, U32 wearable_index);
-	U32				getWearableIndex(const LLViewerWearable *wearable) const;
 
 protected:
 	void			setWearableFinal(LLInventoryItem* new_item, LLViewerWearable* new_wearable, bool do_append = false);
@@ -171,10 +158,9 @@ class LLAgentWearables : public LLInitClass<LLAgentWearables>
 public:
 	// Processes the initial wearables update message (if necessary, since the outfit folder makes it redundant)
 	static void		processAgentInitialWearablesUpdate(LLMessageSystem* mesgsys, void** user_data);
-	LLUUID			computeBakedTextureHash(LLAvatarAppearanceDefines::EBakedTextureIndex baked_index,
-											BOOL generate_valid_hash = TRUE);
 
 protected:
+	/*virtual*/ void	invalidateBakedTextureHash(LLMD5& hash) const;
 	void			sendAgentWearablesUpdate();
 	void			sendAgentWearablesRequest();
 	void			queryWearableCache();
@@ -243,10 +229,6 @@ class LLAgentWearables : public LLInitClass<LLAgentWearables>
 	// Member variables
 	//--------------------------------------------------------------------
 private:
-	typedef std::vector<LLViewerWearable*> wearableentry_vec_t; // all wearables of a certain type (EG all shirts)
-	typedef std::map<LLWearableType::EType, wearableentry_vec_t> wearableentry_map_t;	// wearable "categories" arranged by wearable type
-	wearableentry_map_t mWearableDatas;
-
 	static BOOL		mInitialWearablesUpdateReceived;
 	BOOL			mWearablesLoaded;
 	std::set<LLUUID>	mItemsAwaitingWearableUpdate;
diff --git a/indra/newview/llfloateravatartextures.cpp b/indra/newview/llfloateravatartextures.cpp
index 68bdf9a8d68..048837acfec 100644
--- a/indra/newview/llfloateravatartextures.cpp
+++ b/indra/newview/llfloateravatartextures.cpp
@@ -82,7 +82,7 @@ static void update_texture_ctrl(LLVOAvatar* avatarp,
 		if (avatarp->isSelf())
 		{
 			const LLWearableType::EType wearable_type = tex_entry->mWearableType;
-			LLViewerWearable *wearable = gAgentWearables.getWearable(wearable_type, 0);
+			LLViewerWearable *wearable = gAgentWearables.getViewerWearable(wearable_type, 0);
 			if (wearable)
 			{
 				LLLocalTextureObject *lto = wearable->getLocalTextureObject(te);
@@ -174,7 +174,7 @@ void LLFloaterAvatarTextures::onClickDump(void* data)
 				LLWearableType::EType wearable_type = LLAvatarAppearanceDictionary::getInstance()->getTEWearableType((ETextureIndex)i);
 				if (avatarp->isSelf())
 				{
-					LLViewerWearable *wearable = gAgentWearables.getWearable(wearable_type, 0);
+					LLViewerWearable *wearable = gAgentWearables.getViewerWearable(wearable_type, 0);
 					if (wearable)
 					{
 						LLLocalTextureObject *lto = wearable->getLocalTextureObject(i);
diff --git a/indra/newview/lllocalbitmaps.cpp b/indra/newview/lllocalbitmaps.cpp
index 3a199135b60..834172f58f2 100644
--- a/indra/newview/lllocalbitmaps.cpp
+++ b/indra/newview/lllocalbitmaps.cpp
@@ -483,7 +483,7 @@ void LLLocalBitmap::updateUserLayers(LLUUID old_id, LLUUID new_id, LLWearableTyp
 	U32 count = gAgentWearables.getWearableCount(type);
 	for(U32 wearable_iter = 0; wearable_iter < count; wearable_iter++)
 	{
-		LLViewerWearable* wearable = gAgentWearables.getWearable(type, wearable_iter);
+		LLViewerWearable* wearable = gAgentWearables.getViewerWearable(type, wearable_iter);
 		if (wearable)
 		{
 			std::vector<LLLocalTextureObject*> texture_list = wearable->getLocalTextureListSeq();
diff --git a/indra/newview/llpaneleditwearable.cpp b/indra/newview/llpaneleditwearable.cpp
index 9aadca1d806..43bb1f57e0a 100644
--- a/indra/newview/llpaneleditwearable.cpp
+++ b/indra/newview/llpaneleditwearable.cpp
@@ -922,7 +922,7 @@ void LLPanelEditWearable::onCommitSexChange()
         }
 
         bool is_new_sex_male = (gSavedSettings.getU32("AvatarSex") ? SEX_MALE : SEX_FEMALE) == SEX_MALE;
-        LLViewerWearable*     wearable = gAgentWearables.getWearable(type, index);
+        LLViewerWearable*     wearable = gAgentWearables.getViewerWearable(type, index);
         if (wearable)
         {
                 wearable->setVisualParamWeight(param->getID(), is_new_sex_male, FALSE);
diff --git a/indra/newview/llphysicsmotion.cpp b/indra/newview/llphysicsmotion.cpp
index cb6989c9dde..ded7d660220 100644
--- a/indra/newview/llphysicsmotion.cpp
+++ b/indra/newview/llphysicsmotion.cpp
@@ -166,7 +166,7 @@ class LLPhysicsMotion
 		}
 
         
-        void setParamValue(LLViewerVisualParam *param,
+        void setParamValue(const LLViewerVisualParam *param,
                            const F32 new_value_local,
                                                    F32 behavior_maxeffect);
 
@@ -673,12 +673,10 @@ BOOL LLPhysicsMotion::onUpdate(F32 time)
 								 0,
 								 FALSE);
 			}
-			for (LLDriverParam::entry_list_t::iterator iter = driver_param->mDriven.begin();
-			     iter != driver_param->mDriven.end();
-			     ++iter)
+			S32 num_driven = driver_param->getDrivenParamsCount();
+			for (S32 i = 0; i < num_driven; ++i)
 			{
-				LLDrivenEntry &entry = (*iter);
-				LLViewerVisualParam *driven_param = entry.mParam;
+				const LLViewerVisualParam *driven_param = driver_param->getDrivenParam(i);
 				setParamValue(driven_param,position_new_local_clamped, behavior_maxeffect);
 			}
 		}
@@ -758,7 +756,7 @@ BOOL LLPhysicsMotion::onUpdate(F32 time)
 }
 
 // Range of new_value_local is assumed to be [0 , 1] normalized.
-void LLPhysicsMotion::setParamValue(LLViewerVisualParam *param,
+void LLPhysicsMotion::setParamValue(const LLViewerVisualParam *param,
                                     F32 new_value_normalized,
 				    F32 behavior_maxeffect)
 {
diff --git a/indra/newview/llsidepanelappearance.cpp b/indra/newview/llsidepanelappearance.cpp
index 6a692209e97..8c4a05b1160 100644
--- a/indra/newview/llsidepanelappearance.cpp
+++ b/indra/newview/llsidepanelappearance.cpp
@@ -389,7 +389,7 @@ void LLSidepanelAppearance::toggleWearableEditPanel(BOOL visible, LLViewerWearab
 
 	if (!wearable)
 	{
-		wearable = gAgentWearables.getWearable(LLWearableType::WT_SHAPE, 0);
+		wearable = gAgentWearables.getViewerWearable(LLWearableType::WT_SHAPE, 0);
 	}
 	if (!wearable)
 	{
diff --git a/indra/newview/llviewerwearable.cpp b/indra/newview/llviewerwearable.cpp
index 34f24ef3302..eb3a212eae0 100644
--- a/indra/newview/llviewerwearable.cpp
+++ b/indra/newview/llviewerwearable.cpp
@@ -632,11 +632,6 @@ void LLViewerWearable::revertValues()
 	}
 }
 
-BOOL LLViewerWearable::isOnTop() const
-{ 
-	return (this == gAgentWearables.getTopWearable(mType));
-}
-
 void LLViewerWearable::createLayers(S32 te)
 {
 	LLViewerTexLayerSet *layer_set = gAgentAvatarp->getLayerSet((ETextureIndex)te);
@@ -736,27 +731,8 @@ void LLViewerWearable::destroyTextures()
 	mSavedTEMap.clear();
 }
 
-void LLViewerWearable::pullCrossWearableValues()
-{
-	// scan through all of the avatar's visual parameters
-	for (LLViewerVisualParam* param = (LLViewerVisualParam*) gAgentAvatarp->getFirstVisualParam(); 
-		 param;
-		 param = (LLViewerVisualParam*) gAgentAvatarp->getNextVisualParam())
-	{
-		if( param )
-		{
-			LLDriverParam *driver_param = dynamic_cast<LLDriverParam*>(param);
-			if(driver_param)
-			{
-				// parameter is a driver parameter, have it update its 
-				driver_param->updateCrossDrivenParams(getType());
-			}
-		}
-	}
-}
-
-
-void LLViewerWearable::setLabelUpdated() const
+// virtual
+void LLViewerWearable::setUpdated() const
 { 
 	gInventory.addChangedMask(LLInventoryObserver::LABEL, getItemID());
 }
@@ -771,6 +747,13 @@ void LLViewerWearable::refreshName()
 	}
 }
 
+// virtual
+void LLViewerWearable::addToBakedTextureHash(LLMD5& hash) const
+{
+	LLUUID asset_id = getAssetID();
+	hash.update((const unsigned char*)asset_id.mData, UUID_BYTES);
+}
+
 struct LLWearableSaveData
 {
 	LLWearableType::EType mType;
diff --git a/indra/newview/llviewerwearable.h b/indra/newview/llviewerwearable.h
index ccc26000f22..b3c1e3c3baf 100644
--- a/indra/newview/llviewerwearable.h
+++ b/indra/newview/llviewerwearable.h
@@ -86,17 +86,17 @@ class LLViewerWearable : public LLWearable
 
 	void				revertValues();
 	void				saveValues();
-	void				pullCrossWearableValues();		
-
-	BOOL				isOnTop() const;
 
 	// Something happened that requires the wearable's label to be updated (e.g. worn/unworn).
-	void				setLabelUpdated() const;
+	/*virtual*/void		setUpdated() const;
 
 	// the wearable was worn. make sure the name of the wearable object matches the LLViewerInventoryItem,
 	// not the wearable asset itself.
 	void				refreshName();
 
+	// Update the baked texture hash.
+	/*virtual*/void		addToBakedTextureHash(LLMD5& hash) const;
+
 protected:
 	typedef std::map<S32, LLLocalTextureObject*> te_map_t;
 
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index b86c5d5e8f0..2309ea34883 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -644,7 +644,7 @@ static F32 calc_bouncy_animation(F32 x);
 LLVOAvatar::LLVOAvatar(const LLUUID& id,
 					   const LLPCode pcode,
 					   LLViewerRegion* regionp) :
-	LLAvatarAppearance(),
+	LLAvatarAppearance(&gAgentWearables),
 	LLViewerObject(id, pcode, regionp),
 	mSpecialRenderMode(0),
 	mAttachmentGeometryBytes(0),
@@ -5860,30 +5860,6 @@ void LLVOAvatar::updateVisualParams()
 	updateHeadOffset();
 }
 
-// virtual
-U32 LLVOAvatar::getWearableCount(const LLWearableType::EType type) const
-{
-	return gAgentWearables.getWearableCount(type);
-}
-
-// virtual
-U32 LLVOAvatar::getWearableCount(const U32 tex_index) const
-{
-	return gAgentWearables.getWearableCount(tex_index);
-}
-
-// virtual
-LLWearable* LLVOAvatar::getWearable(const LLWearableType::EType type, U32 index /*= 0*/)
-{
-	return gAgentWearables.getWearable(type, index);
-}
-
-// virtual
-const LLWearable* LLVOAvatar::getWearable(const LLWearableType::EType type, U32 index /*= 0*/) const
-{
-	return gAgentWearables.getWearable(type, index);
-}
-
 //-----------------------------------------------------------------------------
 // isActive()
 //-----------------------------------------------------------------------------
@@ -7008,48 +6984,6 @@ void LLVOAvatar::dumpAvatarTEs( const std::string& context ) const
 	}
 }
 
-// Unlike most wearable functions, this works for both self and other.
-BOOL LLVOAvatar::isWearingWearableType(LLWearableType::EType type) const
-{
-	if (mIsDummy) return TRUE;
-
-	switch(type)
-	{
-		case LLWearableType::WT_SHAPE:
-		case LLWearableType::WT_SKIN:
-		case LLWearableType::WT_HAIR:
-		case LLWearableType::WT_EYES:
-			return TRUE;  // everyone has all bodyparts
-		default:
-			break; // Do nothing
-	}
-
-	/* switch(type)
-		case LLWearableType::WT_SHIRT:
-			indicator_te = TEX_UPPER_SHIRT; */
-	for (LLAvatarAppearanceDictionary::Textures::const_iterator tex_iter = LLAvatarAppearanceDictionary::getInstance()->getTextures().begin();
-		 tex_iter != LLAvatarAppearanceDictionary::getInstance()->getTextures().end();
-		 ++tex_iter)
-	{
-		const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = tex_iter->second;
-		if (texture_dict->mWearableType == type)
-		{
-			// If you're checking another avatar's clothing, you don't have component textures.
-			// Thus, you must check to see if the corresponding baked texture is defined.
-			// NOTE: this is a poor substitute if you actually want to know about individual pieces of clothing
-			// this works for detecting a skirt (most important), but is ineffective at any piece of clothing that
-			// gets baked into a texture that always exists (upper or lower).
-			if (texture_dict->mIsUsedByBakedTexture)
-			{
-				const EBakedTextureIndex baked_index = texture_dict->mBakedTextureIndex;
-				return isTextureDefined(LLAvatarAppearanceDictionary::getInstance()->getBakedTexture(baked_index)->mTextureIndex);
-			}
-			return FALSE;
-		}
-	}
-	return FALSE;
-}
-
 //-----------------------------------------------------------------------------
 // clampAttachmentPositions()
 //-----------------------------------------------------------------------------
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
index 5f780da145e..54719d2671a 100755
--- a/indra/newview/llvoavatar.h
+++ b/indra/newview/llvoavatar.h
@@ -227,17 +227,6 @@ class LLVOAvatar :
 	/*virtual*/BOOL	isUsingBakedTextures() const { return mUseServerBakes; } // e.g. false if in appearance edit mode		
 	bool isBuilt() const { return mIsBuilt; }
 
-/********************************************************************************
- **                                                                            **
- **                    WEARABLES
- **/
-public:
-	/*virtual*/ U32				getWearableCount(const LLWearableType::EType type) const;
-	/*virtual*/ U32				getWearableCount(const U32 tex_index) const;
-
-	/*virtual*/ LLWearable*			getWearable(const LLWearableType::EType type, U32 index /*= 0*/);
-	/*virtual*/ const LLWearable* 	getWearable(const LLWearableType::EType type, U32 index /*= 0*/) const;
-
 private: //aligned members
 	LL_ALIGN_16(LLVector4a	mImpostorExtents[2]);
 
@@ -755,9 +744,6 @@ class LLVOAvatar :
  **                    WEARABLES
  **/
 
-public:
-	virtual BOOL			isWearingWearableType(LLWearableType::EType type ) const;
-	
 	//--------------------------------------------------------------------
 	// Attachments
 	//--------------------------------------------------------------------
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index e836a5e4a8f..c1984fa738d 100755
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -74,9 +74,7 @@ LLPointer<LLVOAvatarSelf> gAgentAvatarp = NULL;
 
 BOOL isAgentAvatarValid()
 {
-	return (gAgentAvatarp.notNull() &&
-			(gAgentAvatarp->getRegion() != NULL) &&
-			(!gAgentAvatarp->isDead()));
+	return (gAgentAvatarp.notNull() && gAgentAvatarp->isValid());
 }
 
 void selfStartPhase(const std::string& phase_name)
@@ -669,10 +667,16 @@ BOOL LLVOAvatarSelf::updateCharacter(LLAgent &agent)
 	return LLVOAvatar::updateCharacter(agent);
 }
 
+// virtual
+BOOL LLVOAvatarSelf::isValid() const
+{
+	return ((getRegion() != NULL) && !isDead());
+}
+
 // virtual
 void LLVOAvatarSelf::idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time)
 {
-	if (isAgentAvatarValid())
+	if (isValid())
 	{
 		LLVOAvatar::idleUpdate(agent, world, time);
 		idleUpdateTractorBeam();
@@ -695,7 +699,7 @@ void LLVOAvatarSelf::resetJointPositions( void )
 	return LLVOAvatar::resetJointPositions();
 }
 // virtual
-BOOL LLVOAvatarSelf::setVisualParamWeight(LLVisualParam *which_param, F32 weight, BOOL upload_bake )
+BOOL LLVOAvatarSelf::setVisualParamWeight(const LLVisualParam *which_param, F32 weight, BOOL upload_bake )
 {
 	if (!which_param)
 	{
@@ -723,7 +727,7 @@ BOOL LLVOAvatarSelf::setVisualParamWeight(S32 index, F32 weight, BOOL upload_bak
 	return setParamWeight(param,weight,upload_bake);
 }
 
-BOOL LLVOAvatarSelf::setParamWeight(LLViewerVisualParam *param, F32 weight, BOOL upload_bake )
+BOOL LLVOAvatarSelf::setParamWeight(const LLViewerVisualParam *param, F32 weight, BOOL upload_bake )
 {
 	if (!param)
 	{
@@ -736,7 +740,7 @@ BOOL LLVOAvatarSelf::setParamWeight(LLViewerVisualParam *param, F32 weight, BOOL
 		U32 size = gAgentWearables.getWearableCount(type);
 		for (U32 count = 0; count < size; ++count)
 		{
-			LLViewerWearable *wearable = gAgentWearables.getWearable(type,count);
+			LLViewerWearable *wearable = gAgentWearables.getViewerWearable(type,count);
 			if (wearable)
 			{
 				wearable->setVisualParamWeight(param->getID(), weight, upload_bake);
@@ -762,7 +766,7 @@ void LLVOAvatarSelf::idleUpdateAppearanceAnimation()
 	// apply wearable visual params to avatar
 	for (U32 type = 0; type < LLWearableType::WT_COUNT; type++)
 	{
-		LLViewerWearable *wearable = gAgentWearables.getTopWearable((LLWearableType::EType)type);
+		LLWearable *wearable = gAgentWearables.getTopWearable((LLWearableType::EType)type);
 		if (wearable)
 		{
 			wearable->writeToAvatar();
@@ -1257,7 +1261,7 @@ BOOL LLVOAvatarSelf::detachObject(LLViewerObject *viewer_object)
 		// Make sure the inventory is in sync with the avatar.
 
 		// Update COF contents, don't trigger appearance update.
-		if (!isAgentAvatarValid())
+		if (!isValid())
 		{
 			llinfos << "removeItemLinks skipped, avatar is under destruction" << llendl;
 		}
@@ -1780,7 +1784,7 @@ void LLVOAvatarSelf::setLocalTexture(ETextureIndex type, LLViewerTexture* src_te
 			return;
 		}
 		LLWearableType::EType wearable_type = LLAvatarAppearanceDictionary::getInstance()->getTEWearableType(type);
-		if (!gAgentWearables.getWearable(wearable_type,index))
+		if (!gAgentWearables.getViewerWearable(wearable_type,index))
 		{
 			// no wearable is loaded, cannot set the texture.
 			return;
@@ -1796,7 +1800,7 @@ void LLVOAvatarSelf::setLocalTexture(ETextureIndex type, LLViewerTexture* src_te
 		LLViewerTexLayerSet *layer_set = getLayerSet(type);
 		if (layer_set)
 		{
-			layer_set->cloneTemplates(local_tex_obj, type, gAgentWearables.getWearable(wearable_type,index));
+			layer_set->cloneTemplates(local_tex_obj, type, gAgentWearables.getViewerWearable(wearable_type,index));
 		}
 
 	}
@@ -2286,7 +2290,7 @@ BOOL LLVOAvatarSelf::canGrabBakedTexture(EBakedTextureIndex baked_index) const
 		
 		for (U32 wearable_index = 0; wearable_index < count; ++wearable_index)
 		{
-			LLViewerWearable *wearable = gAgentWearables.getWearable(wearable_type, wearable_index);
+			LLViewerWearable *wearable = gAgentWearables.getViewerWearable(wearable_type, wearable_index);
 			if (wearable)
 			{
 				const LLLocalTextureObject *texture = wearable->getLocalTextureObject((S32)t_index);
@@ -2361,7 +2365,7 @@ void LLVOAvatarSelf::addLocalTextureStats( ETextureIndex type, LLViewerFetchedTe
 LLLocalTextureObject* LLVOAvatarSelf::getLocalTextureObject(LLAvatarAppearanceDefines::ETextureIndex i, U32 wearable_index) const
 {
 	LLWearableType::EType type = LLAvatarAppearanceDictionary::getInstance()->getTEWearableType(i);
-	LLViewerWearable* wearable = gAgentWearables.getWearable(type, wearable_index);
+	LLViewerWearable* wearable = gAgentWearables.getViewerWearable(type, wearable_index);
 	if (wearable)
 	{
 		return wearable->getLocalTextureObject(i);
diff --git a/indra/newview/llvoavatarself.h b/indra/newview/llvoavatarself.h
index 12886d2d36e..2fe960cd1ed 100755
--- a/indra/newview/llvoavatarself.h
+++ b/indra/newview/llvoavatarself.h
@@ -97,7 +97,7 @@ class LLVOAvatarSelf :
 	
 				void		resetJointPositions( void );
 	
-	/*virtual*/ BOOL setVisualParamWeight(LLVisualParam *which_param, F32 weight, BOOL upload_bake = FALSE );
+	/*virtual*/ BOOL setVisualParamWeight(const LLVisualParam *which_param, F32 weight, BOOL upload_bake = FALSE );
 	/*virtual*/ BOOL setVisualParamWeight(const char* param_name, F32 weight, BOOL upload_bake = FALSE );
 	/*virtual*/ BOOL setVisualParamWeight(S32 index, F32 weight, BOOL upload_bake = FALSE );
 	/*virtual*/ void updateVisualParams();
@@ -111,7 +111,7 @@ class LLVOAvatarSelf :
 
 private:
 	// helper function. Passed in param is assumed to be in avatar's parameter list.
-	BOOL setParamWeight(LLViewerVisualParam *param, F32 weight, BOOL upload_bake = FALSE );
+	BOOL setParamWeight(const LLViewerVisualParam *param, F32 weight, BOOL upload_bake = FALSE );
 
 
 
@@ -131,6 +131,7 @@ class LLVOAvatarSelf :
 
 public:
 	/*virtual*/ bool 	isSelf() const { return true; }
+	/*virtual*/ BOOL	isValid() const;
 
 	//--------------------------------------------------------------------
 	// Updates
-- 
GitLab


From 3990180c5951e68a1ecabc538be1560e0eeffaec Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Thu, 6 Sep 2012 22:08:33 +0000
Subject: [PATCH 058/436] Adding appearance utility package

---
 .hgignore                                     |  5 ++
 debian/changelog                              |  6 ++
 debian/control                                |  8 ++
 debian/rules                                  | 75 +++++++++++++++----
 .../secondlife-appearance-utility.substvars   |  1 +
 indra/CMakeLists.txt                          |  1 +
 indra/appearance_utility/CMakeLists.txt       | 54 +++++++++++++
 .../appearance_utility/appearance_utility.cpp | 37 +++++++++
 indra/appearance_utility/wrapper.sh           | 25 +++++++
 9 files changed, 197 insertions(+), 15 deletions(-)
 create mode 100644 debian/secondlife-appearance-utility.substvars
 create mode 100644 indra/appearance_utility/CMakeLists.txt
 create mode 100644 indra/appearance_utility/appearance_utility.cpp
 create mode 100755 indra/appearance_utility/wrapper.sh

diff --git a/.hgignore b/.hgignore
index b180d920034..06d31e2f88e 100644
--- a/.hgignore
+++ b/.hgignore
@@ -50,6 +50,11 @@ indra/web/doc/asset-upload/plugins/verify-texture
 installed.xml
 libraries
 tarfile_tmp
+debian/secondlife-viewer*
+debian/secondlife-appearance-utility*
+debian/files
+build-stamp
+configure-stamp
 ^indra/lib/python/mulib.*
 ^web/locale.*
 ^web/secondlife.com.*
diff --git a/debian/changelog b/debian/changelog
index ce54b54c6f1..b3df2fcab39 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+secondlife-viewer (0.4) unstable; urgency=low
+
+  * Adding appearance utility package
+
+ -- Don Kjer <don@lindenlab.com>  Thu, 06 Sep 2012 19:32:55 +0000
+
 secondlife-viewer (0.3) unstable; urgency=low
 
   * Initial debian configuration
diff --git a/debian/control b/debian/control
index 50b9ed9a264..9ebd71df656 100644
--- a/debian/control
+++ b/debian/control
@@ -14,3 +14,11 @@ Depends: ${shlibs:Depends}, ${misc:Depends},
 Description: Second Life Viewer
  Second Life is an online virtual world developed by Linden Lab.
  
+Package: secondlife-appearance-utility
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends},
+ ia32-libs,
+ ia32-libs-gtk
+Description: Second Life Appearance Utility
+ Utility for manipulating Second Life avatar appearance.
+
diff --git a/debian/rules b/debian/rules
index c41f02d4fbd..10301bf7d32 100755
--- a/debian/rules
+++ b/debian/rules
@@ -9,11 +9,19 @@
 # Uncomment this to turn on verbose mode.
 #export DH_VERBOSE=1
 
-SRCDIR=build-linux-i686/newview/packaged
-DESTDIR=$(CURDIR)/debian/secondlife-viewer
-BASEDIR=opt/linden/viewer
+BASEDIR=opt/linden
+
+VIEWER_PKG=secondlife-viewer
+VIEWER_PACKAGEDIR=build-linux-i686/newview/packaged
+VIEWER_DESTDIR=$(CURDIR)/debian/$(VIEWER_PKG)
 VIEWER_VERSION:=$(shell dpkg-parsechangelog | grep ^Version | sed 's/^Version: //')
-INSTALLDIR:=$(BASEDIR)/SecondLife-i686-$(VIEWER_VERSION)
+VIEWER_INSTALLDIR:=$(BASEDIR)/viewer/SecondLife-i686-$(VIEWER_VERSION)
+
+UTILITY_PKG=secondlife-appearance-utility
+UTILITY_SRCDIR=indra/appearance_utility
+UTILITY_PACKAGEDIR=build-linux-i686/appearance_utility
+UTILITY_DESTDIR=$(CURDIR)/debian/$(UTILITY_PKG)
+UTILITY_INSTALLDIR:=$(BASEDIR)/utilities
 
 configure: configure-stamp
 configure-stamp:
@@ -50,24 +58,61 @@ install: build
 	dh_installdirs
 
 	# Add here commands to install the package into debian/secondlife-viewer.
-	for file in $$(find $(SRCDIR) -type f -o -type l | sed 's~$(SRCDIR)/~~'); do \
+	for file in $$(find $(VIEWER_PACKAGEDIR) -type f -o -type l | sed 's~$(VIEWER_PACKAGEDIR)/~~'); do \
+		# create containing directory \
+		install -v -m 755 -o root -g root -d "$$(dirname "$(VIEWER_DESTDIR)/$(VIEWER_INSTALLDIR)/$$file")"; \
+		PERM=644; \
+		if [ -x "$(VIEWER_PACKAGEDIR)/$$file" ]; then \
+			PERM=755; \
+		fi; \
+		if [ -L "$(VIEWER_PACKAGEDIR)/$$file" ]; then \
+			REAL="$$( readlink -f $(VIEWER_PACKAGEDIR)/$$file )"; \
+			RELATIVE="$$( echo $$REAL | sed 's~$(CURDIR)/$(VIEWER_PACKAGEDIR)/~~' )"; \
+			echo dh_link -p $(VIEWER_PKG) "$(VIEWER_INSTALLDIR)/$$RELATIVE" "$(VIEWER_INSTALLDIR)/$$file" ; \
+			dh_link -p $(VIEWER_PKG) "$(VIEWER_INSTALLDIR)/$$RELATIVE" "$(VIEWER_INSTALLDIR)/$$file" ; \
+		else \
+			install -v -m $$PERM -o root -g root "$(VIEWER_PACKAGEDIR)/$$file" "$(VIEWER_DESTDIR)/$(VIEWER_INSTALLDIR)/$$file"; \
+		fi; \
+	done
+	dh_link -p $(VIEWER_PKG) /$(VIEWER_INSTALLDIR)/secondlife /usr/bin/secondlife
+	dh_link -p $(VIEWER_PKG) $(BASEDIR)/viewer/SecondLife-i686-$(VIEWER_VERSION) $(BASEDIR)/viewer/SecondLife
+
+	# Add here commands to install the package into debian/secondlife-appearance-utility
+	# create containing directory
+	install -v -m 755 -o root -g root -d "$(UTILITY_DESTDIR)/$(UTILITY_INSTALLDIR)"
+	# install utility wrapper
+	install -v -m 755 -o root -g root "$(UTILITY_SRCDIR)/wrapper.sh" "$(UTILITY_DESTDIR)/$(UTILITY_INSTALLDIR)/wrapper.sh"
+	# install appearance-utility
+	install -v -m 755 -o root -g root "$(UTILITY_PACKAGEDIR)/appearance-utility-bin" "$(UTILITY_DESTDIR)/$(UTILITY_INSTALLDIR)/appearance-utility-bin"
+	dh_link -p $(UTILITY_PKG) $(UTILITY_INSTALLDIR)/wrapper.sh $(UTILITY_INSTALLDIR)/appearance-utility
+	# install xml/image resources from viewer package
+	for file in $$(find $(VIEWER_PACKAGEDIR)/character -name "avatar_*.xml" -o -name "*.tga" | sed 's~$(VIEWER_PACKAGEDIR)/~~'); do \
+		# create containing directory \
+		install -v -m 755 -o root -g root -d "$$(dirname "$(UTILITY_DESTDIR)/$(UTILITY_INSTALLDIR)/$$file")"; \
+		PERM=644; \
+		if [ -x "$(VIEWER_PACKAGEDIR)/$$file" ]; then \
+			PERM=755; \
+		fi; \
+		install -v -m $$PERM -o root -g root "$(VIEWER_PACKAGEDIR)/$$file" "$(UTILITY_DESTDIR)/$(UTILITY_INSTALLDIR)/$$file"; \
+	done
+	# install viewer libraries
+	for file in $$(find $(VIEWER_PACKAGEDIR)/lib -type f -o -type l | sed 's~$(VIEWER_PACKAGEDIR)/~~'); do \
 		# create containing directory \
-		install -v -m 755 -o root -g root -d "$$(dirname "$(DESTDIR)/$(INSTALLDIR)/$$file")"; \
+		install -v -m 755 -o root -g root -d "$$(dirname "$(UTILITY_DESTDIR)/$(UTILITY_INSTALLDIR)/$$file")"; \
 		PERM=644; \
-		if [ -x "$(SRCDIR)/$$file" ]; then \
+		if [ -x "$(VIEWER_PACKAGEDIR)/$$file" ]; then \
 			PERM=755; \
 		fi; \
-		if [ -L "$(SRCDIR)/$$file" ]; then \
-			REAL="$$( readlink -f $(SRCDIR)/$$file )"; \
-			RELATIVE="$$( echo $$REAL | sed 's~$(CURDIR)/$(SRCDIR)/~~' )"; \
-			echo dh_link "$(INSTALLDIR)/$$RELATIVE" "$(INSTALLDIR)/$$file" ; \
-			dh_link "$(INSTALLDIR)/$$RELATIVE" "$(INSTALLDIR)/$$file" ; \
+		if [ -L "$(VIEWER_PACKAGEDIR)/$$file" ]; then \
+			REAL="$$( readlink -f $(VIEWER_PACKAGEDIR)/$$file )"; \
+			RELATIVE="$$( echo $$REAL | sed 's~$(CURDIR)/$(VIEWER_PACKAGEDIR)/~~' )"; \
+			echo dh_link -p $(UTILITY_PKG) "$(UTILITY_INSTALLDIR)/$$RELATIVE" "$(UTILITY_INSTALLDIR)/$$file" ; \
+			dh_link -p $(UTILITY_PKG) "$(UTILITY_INSTALLDIR)/$$RELATIVE" "$(UTILITY_INSTALLDIR)/$$file" ; \
 		else \
-			install -v -m $$PERM -o root -g root "$(SRCDIR)/$$file" "$(DESTDIR)/$(INSTALLDIR)/$$file"; \
+			install -v -m $$PERM -o root -g root "$(VIEWER_PACKAGEDIR)/$$file" "$(UTILITY_DESTDIR)/$(UTILITY_INSTALLDIR)/$$file"; \
 		fi; \
 	done
-	dh_link /$(INSTALLDIR)/secondlife /usr/bin/secondlife
-	dh_link $(BASEDIR)/SecondLife-i686-$(VIEWER_VERSION) $(BASEDIR)/SecondLife
+	dh_link -p $(UTILITY_PKG) /$(UTILITY_INSTALLDIR)/appearance-utility /usr/bin/appearance-utility
 
 
 # Build architecture-independent files here.
diff --git a/debian/secondlife-appearance-utility.substvars b/debian/secondlife-appearance-utility.substvars
new file mode 100644
index 00000000000..abd3ebebc30
--- /dev/null
+++ b/debian/secondlife-appearance-utility.substvars
@@ -0,0 +1 @@
+misc:Depends=
diff --git a/indra/CMakeLists.txt b/indra/CMakeLists.txt
index 078b17bf53f..4e209ff75af 100644
--- a/indra/CMakeLists.txt
+++ b/indra/CMakeLists.txt
@@ -83,6 +83,7 @@ if (VIEWER)
   if (LINUX)
     add_subdirectory(${VIEWER_PREFIX}linux_crash_logger)
     add_subdirectory(${VIEWER_PREFIX}linux_updater)
+    add_subdirectory(${VIEWER_PREFIX}appearance_utility)
     add_dependencies(viewer linux-crash-logger-strip-target linux-updater)
   elseif (DARWIN)
     add_subdirectory(${VIEWER_PREFIX}mac_crash_logger)
diff --git a/indra/appearance_utility/CMakeLists.txt b/indra/appearance_utility/CMakeLists.txt
new file mode 100644
index 00000000000..c38f811b44a
--- /dev/null
+++ b/indra/appearance_utility/CMakeLists.txt
@@ -0,0 +1,54 @@
+# -*- cmake -*-
+
+project(appearance_utility)
+
+include(00-Common)
+include(CURL)
+include(CARes)
+include(OpenSSL)
+include(UI)
+include(LLAppearance)
+include(LLCommon)
+include(LLVFS)
+include(LLXML)
+include(LLUI)
+include(Linking)
+
+include_directories(
+    ${LLCOMMON_INCLUDE_DIRS}
+    ${LLVFS_INCLUDE_DIRS}
+    ${LLXML_INCLUDE_DIRS}
+    ${LLUI_INCLUDE_DIRS}
+    ${CURL_INCLUDE_DIRS}
+    ${CARES_INCLUDE_DIRS}
+    ${OPENSSL_INCLUDE_DIRS}
+    ${UI_INCLUDE_DIRS}
+    ${LLAPPEARANCE_INCLUDE_DIRS}
+    )
+
+set(appearance_utility_SOURCE_FILES appearance_utility.cpp)
+
+set(appearance_utility_HEADER_FILES CMakeLists.txt)
+
+set_source_files_properties(${appearance_utility_HEADER_FILES}
+                            PROPERTIES HEADER_FILES_ONLY TRUE)
+
+list(APPEND appearance_utility_SOURCE_FILES ${appearance_utility_HEADER_FILES})
+
+add_executable(appearance-utility-bin ${appearance_utility_SOURCE_FILES})
+
+target_link_libraries(appearance-utility-bin
+    ${CURL_LIBRARIES}
+    ${CARES_LIBRARIES}
+    ${OPENSSL_LIBRARIES}
+    ${CRYPTO_LIBRARIES}
+    ${UI_LIBRARIES}
+    ${LLAPPEARANCE_LIBRARIES}
+    ${LLXML_LIBRARIES}
+    ${LLUI_LIBRARIES}
+    ${LLVFS_LIBRARIES}
+    ${LLCOMMON_LIBRARIES}
+    )
+
+add_custom_target(appearance-utility-bin-target ALL
+                  DEPENDS appearance-utility-bin)
diff --git a/indra/appearance_utility/appearance_utility.cpp b/indra/appearance_utility/appearance_utility.cpp
new file mode 100644
index 00000000000..62b1cfd2375
--- /dev/null
+++ b/indra/appearance_utility/appearance_utility.cpp
@@ -0,0 +1,37 @@
+/**
+ * @file appearance_utility.cpp
+ * @author Don Kjer <don@lindenlab.com>, Nyx Linden
+ * @brief Utility for processing avatar appearance without a full viewer implementation.
+ *
+ * $LicenseInfo:firstyear=2012&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2012, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+#include "linden_common.h"
+#include "llerrorcontrol.h"
+
+int main(int argc, char** argv)
+{
+	printf("Test app\n");
+	return 0;
+}
+
+
diff --git a/indra/appearance_utility/wrapper.sh b/indra/appearance_utility/wrapper.sh
new file mode 100755
index 00000000000..87d2179a137
--- /dev/null
+++ b/indra/appearance_utility/wrapper.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+
+# Simple wrapper for secondlife utilities.
+
+## - Avoids an often-buggy X feature that doesn't really benefit us anyway.
+export SDL_VIDEO_X11_DGAMOUSE=0
+
+## - Works around a problem with misconfigured 64-bit systems not finding GL
+export LIBGL_DRIVERS_PATH="${LIBGL_DRIVERS_PATH}":/usr/lib64/dri:/usr/lib32/dri:/usr/lib/dri
+
+## - The 'scim' GTK IM module widely crashes the viewer.  Avoid it.
+if [ "$GTK_IM_MODULE" = "scim" ]; then
+    export GTK_IM_MODULE=xim
+fi
+
+EXECUTABLE="$(basename "$0")-bin"
+SCRIPTSRC="$(readlink -f "$0" || echo "$0")"
+RUN_PATH="$(dirname "${SCRIPTSRC}" || echo .)"
+cd "${RUN_PATH}"
+
+export LD_LIBRARY_PATH="$PWD/lib:${LD_LIBRARY_PATH}"
+
+# Run the program.
+"./$EXECUTABLE" "$@"
+exit $?
-- 
GitLab


From 2b2fd9e97526d10b0b4d34154cc0a46f957acba7 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Fri, 7 Sep 2012 17:48:09 -0400
Subject: [PATCH 059/436] enhanced XML archetype dumping, added to per-avatar
 menus

---
 indra/newview/llviewermenu.cpp                |  9 ++++-
 indra/newview/llvoavatar.cpp                  | 37 ++++++++++++++++---
 indra/newview/llvoavatar.h                    |  6 ++-
 .../default/xui/en/menu_attachment_other.xml  |  8 ++++
 .../default/xui/en/menu_attachment_self.xml   |  8 ++++
 .../default/xui/en/menu_avatar_other.xml      |  8 ++++
 .../skins/default/xui/en/menu_avatar_self.xml | 16 ++++++++
 .../xui/en/menu_inspect_avatar_gear.xml       |  8 ++++
 .../default/xui/en/menu_inspect_self_gear.xml |  8 ++++
 9 files changed, 99 insertions(+), 9 deletions(-)
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_attachment_other.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_attachment_self.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_avatar_other.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_avatar_self.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_inspect_self_gear.xml

diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index 3c0136c258c..9c748c7f865 100755
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -1600,7 +1600,14 @@ class LLAdvancedAppearanceToXML : public view_listener_t
 {
 	bool handleEvent(const LLSD& userdata)
 	{
-		LLVOAvatar::dumpArchetypeXML(NULL);
+		std::string emptyname;
+		LLVOAvatar* avatar =
+			find_avatar_from_object( LLSelectMgr::getInstance()->getSelection()->getPrimaryObject() );
+		if (!avatar)
+		{
+			avatar = gAgentAvatarp;
+		}
+		avatar->dumpArchetypeXML(emptyname);
 		return true;
 	}
 };
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index d92caf1edb6..39ad8fc8d6f 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -36,6 +36,7 @@
 
 #include <stdio.h>
 #include <ctype.h>
+#include <sstream>
 
 #include "llaudioengine.h"
 #include "noise.h"
@@ -7762,11 +7763,35 @@ void LLVOAvatar::useBakedTexture( const LLUUID& id )
 	dirtyMesh();
 }
 
-// static
-void LLVOAvatar::dumpArchetypeXML( void* )
+void LLVOAvatar::dumpArchetypeXML(const std::string& filename )
 {
+	std::string outfilename(filename);
+	if (outfilename.empty())
+	{
+		std::string fullname = getFullname();
+		if (!fullname.empty())
+		{
+			typedef std::map<std::string,S32> file_num_type;
+			static  file_num_type file_nums;
+			file_num_type::iterator it = file_nums.find(fullname);
+			S32 num = 0;
+			if (it != file_nums.end())
+			{
+				num = it->second;
+			}
+			std::ostringstream temp;
+			temp << std::setw(4) << std::setfill('0') << num;
+			file_nums[fullname] = num+1;
+			outfilename = fullname + " " + temp.str() + ".xml";
+		}
+	}
+	if (outfilename.empty())
+	{
+		outfilename = std::string("new archetype.xml");
+	}
+	
 	LLAPRFile outfile;
-	outfile.open(gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS,"new archetype.xml"), LL_APR_WB );
+	outfile.open(gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS,outfilename), LL_APR_WB );
 	apr_file_t* file = outfile.getFileHandle();
 	if (!file)
 	{
@@ -7782,12 +7807,12 @@ void LLVOAvatar::dumpArchetypeXML( void* )
 	apr_file_printf( file, "\n\t<archetype name=\"???\">\n" );
 
 	// only body parts, not clothing.
-	for (S32 type = LLWearableType::WT_SHAPE; type <= LLWearableType::WT_EYES; type++)
+	for (S32 type = LLWearableType::WT_SHAPE; type <= LLWearableType::WT_COUNT; type++)
 	{
 		const std::string& wearable_name = LLWearableType::getTypeName((LLWearableType::EType)type);
 		apr_file_printf( file, "\n\t\t<!-- wearable: %s -->\n", wearable_name.c_str() );
 
-		for (LLVisualParam* param = gAgentAvatarp->getFirstVisualParam(); param; param = gAgentAvatarp->getNextVisualParam())
+		for (LLVisualParam* param = getFirstVisualParam(); param; param = getNextVisualParam())
 		{
 			LLViewerVisualParam* viewer_param = (LLViewerVisualParam*)param;
 			if( (viewer_param->getWearableType() == type) && 
@@ -7803,7 +7828,7 @@ void LLVOAvatar::dumpArchetypeXML( void* )
 			if (LLVOAvatarDictionary::getTEWearableType((ETextureIndex)te) == type)
 			{
 				// MULTIPLE_WEARABLES: extend to multiple wearables?
-				LLViewerTexture* te_image = ((LLVOAvatar *)(gAgentAvatarp))->getImage((ETextureIndex)te, 0);
+				LLViewerTexture* te_image = getImage((ETextureIndex)te, 0);
 				if( te_image )
 				{
 					std::string uuid_str;
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
index 3f65dec11c4..5ec20099717 100755
--- a/indra/newview/llvoavatar.h
+++ b/indra/newview/llvoavatar.h
@@ -710,7 +710,9 @@ class LLVOAvatar :
 	//--------------------------------------------------------------------
 public:
 	BOOL			getIsAppearanceAnimating() const { return mAppearanceAnimating; }
-	BOOL			isUsingBakedTextures() const { return mUseServerBakes; } // e.g. false if in appearance edit mode		
+	BOOL			isUsingBakedTextures() const { return mUseServerBakes; } // e.g. false if in appearance edit mode	
+	BOOL			isUsingLocalAppearance() const { return mUseLocalAppearance; }
+
 private:
 	BOOL			mAppearanceAnimating;
 	LLFrameTimer	mAppearanceMorphTimer;
@@ -1014,7 +1016,7 @@ class LLVOAvatar :
 	// General
 	//--------------------------------------------------------------------
 public:
-	static void			dumpArchetypeXML(void*);
+	void				dumpArchetypeXML(const std::string& filename);
 	static void			dumpBakedStatus();
 	const std::string 	getBakedStatusForPrintout() const;
 	void				dumpAvatarTEs(const std::string& context) const;
diff --git a/indra/newview/skins/default/xui/en/menu_attachment_other.xml b/indra/newview/skins/default/xui/en/menu_attachment_other.xml
old mode 100644
new mode 100755
index b46b62ec4d1..6f922730977
--- a/indra/newview/skins/default/xui/en/menu_attachment_other.xml
+++ b/indra/newview/skins/default/xui/en/menu_attachment_other.xml
@@ -79,6 +79,14 @@
             <menu_item_call.on_visible
              function="IsGodCustomerService"/>
         </menu_item_call>
+    <menu_item_call
+		 label="Dump XML"
+         name="Dump XML">
+            <menu_item_call.on_click
+             function="Advanced.AppearanceToXML" />
+            <menu_item_call.on_visible
+             function="IsGodCustomerService"/>
+    </menu_item_call>
 	    <menu_item_call
          label="Zoom In"
           name="Zoom In">
diff --git a/indra/newview/skins/default/xui/en/menu_attachment_self.xml b/indra/newview/skins/default/xui/en/menu_attachment_self.xml
old mode 100644
new mode 100755
index b8128da3586..84e26268bdc
--- a/indra/newview/skins/default/xui/en/menu_attachment_self.xml
+++ b/indra/newview/skins/default/xui/en/menu_attachment_self.xml
@@ -123,6 +123,14 @@ name="Edit Outfit">
     <menu_item_call.on_visible
      function="IsGodCustomerService"/>
   </menu_item_call>
+    <menu_item_call
+		 label="Dump XML"
+         name="Dump XML">
+            <menu_item_call.on_click
+             function="Advanced.AppearanceToXML" />
+            <menu_item_call.on_visible
+             function="IsGodCustomerService"/>
+    </menu_item_call>
   <menu_item_separator
   layout="topleft" />
   <menu_item_call
diff --git a/indra/newview/skins/default/xui/en/menu_avatar_other.xml b/indra/newview/skins/default/xui/en/menu_avatar_other.xml
old mode 100644
new mode 100755
index 276b5f106f7..1c39984625c
--- a/indra/newview/skins/default/xui/en/menu_avatar_other.xml
+++ b/indra/newview/skins/default/xui/en/menu_avatar_other.xml
@@ -79,6 +79,14 @@
             <menu_item_call.on_visible
              function="IsGodCustomerService"/>
         </menu_item_call>
+    <menu_item_call
+		 label="Dump XML"
+         name="Dump XML">
+            <menu_item_call.on_click
+             function="Advanced.AppearanceToXML" />
+            <menu_item_call.on_visible
+             function="IsGodCustomerService"/>
+    </menu_item_call>
 	    <menu_item_call
          label="Zoom In"
           name="Zoom In">
diff --git a/indra/newview/skins/default/xui/en/menu_avatar_self.xml b/indra/newview/skins/default/xui/en/menu_avatar_self.xml
old mode 100644
new mode 100755
index d9bdfece383..0e79b0fee36
--- a/indra/newview/skins/default/xui/en/menu_avatar_self.xml
+++ b/indra/newview/skins/default/xui/en/menu_avatar_self.xml
@@ -261,4 +261,20 @@
             <menu_item_call.on_visible
              function="IsGodCustomerService"/>
     </menu_item_call>
+    <menu_item_call
+		 label="Dump XML"
+         name="Dump XML">
+            <menu_item_call.on_click
+             function="Advanced.AppearanceToXML" />
+            <menu_item_call.on_visible
+             function="IsGodCustomerService"/>
+    </menu_item_call>
+    <menu_item_call
+		 label="Dump XML"
+         name="Dump XML">
+            <menu_item_call.on_click
+             function="Advanced.AppearanceToXML" />
+            <menu_item_call.on_visible
+             function="IsGodCustomerService"/>
+    </menu_item_call>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml
old mode 100644
new mode 100755
index 76b188220dd..4fdfb2281bb
--- a/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml
+++ b/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml
@@ -112,6 +112,14 @@
     <menu_item_call.on_visible
      function="IsGodCustomerService"/>
   </menu_item_call>
+    <menu_item_call
+		 label="Dump XML"
+         name="Dump XML">
+            <menu_item_call.on_click
+             function="Advanced.AppearanceToXML" />
+            <menu_item_call.on_visible
+             function="IsGodCustomerService"/>
+    </menu_item_call>
   <menu_item_call
    label="Find On Map"
    name="find_on_map">
diff --git a/indra/newview/skins/default/xui/en/menu_inspect_self_gear.xml b/indra/newview/skins/default/xui/en/menu_inspect_self_gear.xml
old mode 100644
new mode 100755
index 5e7b16ed4a2..f935f0f312a
--- a/indra/newview/skins/default/xui/en/menu_inspect_self_gear.xml
+++ b/indra/newview/skins/default/xui/en/menu_inspect_self_gear.xml
@@ -249,4 +249,12 @@
     <menu_item_call.on_visible
      function="IsGodCustomerService"/>
   </menu_item_call>
+    <menu_item_call
+		 label="Dump XML"
+         name="Dump XML">
+            <menu_item_call.on_click
+             function="Advanced.AppearanceToXML" />
+            <menu_item_call.on_visible
+             function="IsGodCustomerService"/>
+    </menu_item_call>
 </toggleable_menu>
-- 
GitLab


From 5f8b94094877730082340dc21ff0162b6177a427 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Sat, 8 Sep 2012 01:10:00 +0000
Subject: [PATCH 060/436] Fleshing out appearance-utility standalone app. 
 Added input/output processing, argument parsing, and general error handling.

---
 .../appearance_utility/appearance_utility.cpp | 396 +++++++++++++++++-
 1 file changed, 394 insertions(+), 2 deletions(-)

diff --git a/indra/appearance_utility/appearance_utility.cpp b/indra/appearance_utility/appearance_utility.cpp
index 62b1cfd2375..130bca84a89 100644
--- a/indra/appearance_utility/appearance_utility.cpp
+++ b/indra/appearance_utility/appearance_utility.cpp
@@ -25,13 +25,405 @@
  * $/LicenseInfo$
  */
 
+#include <iostream>
+#include <sstream>
+#include <string>
+
 #include "linden_common.h"
+
+#include "llapp.h"
+#include "llapr.h"
 #include "llerrorcontrol.h"
+#include "llsd.h"
+#include "llsdserialize.h"
+#include "llsdutil.h"
+
+enum EResult
+{
+	RV_SUCCESS = 0,
+	RV_UNKNOWN_ERROR,
+	RV_BAD_ARGUMENTS,
+	RV_UNABLE_OPEN,
+	RV_UNABLE_TO_PARSE,
+};
+
+static const std::string MESSAGE_RV_UNKNOWN("Unknown error.");
+static const std::string MESSAGE_RV_ARGUMENTS 
+("Invalid arguments: ");
+static const std::string MESSAGE_RV_UNABLE_OPEN("Unable to open file: ");
+static const std::string MESSAGE_RV_UNABLE_TO_PARSE("Unable to parse input LLSD.");
+
+static const apr_getopt_option_t APPEARANCE_UTILITY_OPTIONS[] =
+{
+	{"tbd", 't', 0, "Extract dump information from a mesh asset."},
+	{"output", 'o', 1, "The output file to write to.  Default is stdout"},
+	{"agent-id", 'a', 1, "The agent-id of the user."},
+	{"grid", 'g', 1, "The grid."},
+	{"help", 'h', 0, "Print the help message."},
+	{0, 0, 0, 0}
+};
+
+const std::string NOTHING_EXTRA("");
+
+/**
+ * Helper to return the standard error based on the return value.
+ */
+LLSD spit_error(EResult rv, const std::string& extra = NOTHING_EXTRA);
+
+/**
+ * Helper to generate an error output based on code and message.
+ */
+LLSD spit_error(const std::string& key, const std::string& message);
+
+
+
+LLSD spit_error(EResult value, const std::string& extra)
+{
+	LLSD rv;
+	switch(value)
+	{
+	case RV_UNKNOWN_ERROR:
+		rv = spit_error("unknown", MESSAGE_RV_UNKNOWN);
+	case RV_BAD_ARGUMENTS:
+		rv = spit_error("arguments", MESSAGE_RV_ARGUMENTS + extra);
+		break;
+	case RV_UNABLE_OPEN:
+		rv = spit_error("file", MESSAGE_RV_UNABLE_OPEN + extra);
+		break;
+	case RV_UNABLE_TO_PARSE:
+		rv = spit_error("input", MESSAGE_RV_UNABLE_TO_PARSE);
+		break;
+	default:
+		rv = spit_error("arguments", "Invalid arguments to spit_error");
+		break;
+	}
+	return rv;
+}
+
+LLSD spit_error(const std::string& key, const std::string& message)
+{
+	LLSD rv;
+	rv["success"] = false;
+	rv["error"]["key"] = key;
+	rv["error"]["message"] = message;
+	return rv;
+}
+
+
+std::string usage(const char* command)
+{
+	std::ostringstream ostr;
+	ostr << "Utilities for processing agent appearance data."
+		<< std::endl << std::endl
+		<< "Usage:" << std::endl
+		<< "\t" << command << " [options] filename" << std::endl << std::endl
+		<< "Will read from stdin if filename is set to '-'." << std::endl << std::endl
+		<< "Options:" << std::endl;
+	const apr_getopt_option_t* option = &APPEARANCE_UTILITY_OPTIONS[0];
+	while(option->name)
+	{
+		ostr << "\t--" << option->name << "\t\t"
+			<< option->description << std::endl;
+		++option;
+	}
+	ostr << std::endl << "Return Values:" << std::endl
+		<< "\t0\t\tSuccess." << std::endl
+		<< "\t1\t\tUnknown error." << std::endl
+		<< "\t2\t\tBad arguments." << std::endl
+		<< "\t3\t\tUnable to open file. Possibly wrong filename"
+		<< " or bad permissions." << std::endl
+		<< "\t4\t\tUnable to parse input LLSD." << std::endl
+		<< std::endl
+		<< "Output:" << std::endl
+		<< "If a non-zero status code is returned, additional error information"
+		<< " will be returned on stderr." << std::endl
+		<< "* This will be in the form of an LLSD document." << std::endl
+		<< "* Check ['error']['message'] to get a human readable message." << std::endl
+		<< "If a zero status code is returned, processed output will be written"
+		<< " to the file specified by --out (or stdout, if not specified)." << std::endl
+		<< std::endl
+		<< std::endl;
+	return ostr.str();
+}
+
+EResult process_tbd(LLSD& input, std::ostream& output, LLSD& error_llsd)
+{
+	EResult rv = RV_SUCCESS;
+
+	LLSD result;
+	result["success"] = true;
+	result["input"] = input;
+	output << LLSDOStreamer<LLSDXMLFormatter>(result);
+
+	return rv;
+}
+
+/**
+ * @brief Called by main() to ensure proper cleanup. Basically main().
+ */
+EResult process_command(int argc, char** argv, LLSD& error_llsd)
+{
+	EResult rv = RV_SUCCESS;
+
+	////// BEGIN OPTION PARSING //////
+	// Check for '-' as last option, since apr doesn't seem to like that.
+	bool read_stdin = false;
+	bool write_stdout = true;
+	if (std::string(argv[argc-1]) == "-")
+	{
+		read_stdin = true;
+		argc--;
+	}
+
+	apr_status_t apr_err;
+	const char* opt_arg = NULL;
+	int opt_id = 0;
+	apr_getopt_t* os = NULL;
+	if(APR_SUCCESS != apr_getopt_init(&os, gAPRPoolp, argc, argv))
+	{
+		std::cerr << "Unable to initialize apr" << std::endl;
+		rv = RV_UNKNOWN_ERROR;
+		error_llsd = spit_error(rv);
+		return rv;
+	}
+
+	bool tbd = false;
+	LLUUID agent_id;
+	std::string output_filename;
+	std::string grid;
+	while(true)
+	{
+		apr_err = apr_getopt_long(os, APPEARANCE_UTILITY_OPTIONS, &opt_id, &opt_arg);
+		if(APR_STATUS_IS_EOF(apr_err)) break;
+		if(apr_err)
+		{
+			char buf[MAX_STRING];		/* Flawfinder: ignore */
+			std::cerr << "Error parsing options: "
+				<< apr_strerror(apr_err, buf, MAX_STRING) << std::endl;
+			std::cerr << usage(os->argv[0]) <<  std::endl;
+			rv = RV_BAD_ARGUMENTS;
+			error_llsd = spit_error(rv, buf);
+			return rv;
+		}
+		switch (opt_id)
+		{
+		case 't':
+			tbd = true;
+			break;
+		case 'o':
+			output_filename.assign(opt_arg);
+			write_stdout=false;
+			break;
+		case 'a':
+			agent_id.set(opt_arg);
+			if (agent_id.isNull())
+			{
+				const char* INVALID_AGENT_ID="agent-id must be a valid uuid.";
+				std::cerr << "Incorrect arguments. " << INVALID_AGENT_ID
+					<< std::endl << usage(argv[0]) <<  std::endl;
+				rv = RV_BAD_ARGUMENTS;
+				error_llsd = spit_error(rv, INVALID_AGENT_ID);
+				return rv;
+			}
+			break;
+		case 'g':
+			grid = opt_arg;
+			break;
+		case 'h':
+			std::cout << usage(os->argv[0]);
+			return RV_SUCCESS;
+		default:
+			std::cerr << usage(os->argv[0]);
+			rv = RV_BAD_ARGUMENTS;
+			error_llsd = spit_error(rv, "Unknown option.");
+			return rv;
+		}
+	}
+	////// END OPTION PARSING //////
+
+	/////  BEGIN ARGUMENT VALIDATION /////
+	std::string input_filename;
+
+	// Make sure we don't have more than one command specified.
+	if (!tbd)
+	{
+		const char* INVALID_MODE="Must specify mode. (tbd)";
+		std::cerr << "Incorrect arguments. " << INVALID_MODE
+				  << std::endl;
+		std::cerr << usage(os->argv[0]);
+		rv = RV_BAD_ARGUMENTS;
+		error_llsd = spit_error(rv, INVALID_MODE);
+		return rv;
+	}
+
+	// *TODO: Add debug mode(s).  Skip this in debug mode.
+	LLError::setDefaultLevel(LLError::LEVEL_WARN);
+
+	if (!read_stdin)
+	{
+		bool valid_input_filename = false;
+		// Try to grab the input filename.
+		if (os->argv && os->argv[os->ind])
+		{
+			input_filename.assign(os->argv[os->ind]);
+			if (! input_filename.empty() )
+			{
+				valid_input_filename = true;
+			}
+		}
+		if (!valid_input_filename)
+		{
+			const char* INVALID_FILENAME="Must specify input file.";
+			std::cerr << "Incorrect arguments. " << INVALID_FILENAME
+				<< std::endl << usage(os->argv[0]) <<  std::endl;
+			rv = RV_BAD_ARGUMENTS;
+			error_llsd = spit_error(rv, INVALID_FILENAME);
+			return rv;
+		}
+	}
+
+	/////  END ARGUMENT VALIDATION /////
+
+	/////  BEGIN OPEN INPUT FILE ////
+	std::ifstream input_file;
+	std::stringstream data;
+	std::istream* input = NULL;
+
+	if (read_stdin)
+	{
+		// Read unformated data from stdin in to memory.
+		const S32 BUFFER_SIZE = BUFSIZ;
+		char buffer[BUFFER_SIZE];
+		while (true)
+		{
+			std::cin.read(buffer, BUFFER_SIZE);
+			// Check if anything out of the ordinary happened.
+			if (!std::cin)
+			{
+				// See if something 'really bad' happened, or if we just
+				// used up all of our buffer.
+				if (std::cin.bad())
+				{
+					std::cerr << "Problem reading standard input." << std::endl;
+					rv = RV_UNKNOWN_ERROR;
+					error_llsd = spit_error(rv);
+					return rv;
+				}
+				else
+				{
+					// Output normally.
+					data.write(buffer, std::cin.gcount());
+					if (std::cin.eof()) break;
+
+					// Clear this problem.  We have handled it.
+					std::cin.clear();
+				}
+			}
+			else
+			{
+				data.write(buffer, std::cin.gcount());
+				if (std::cin.eof()) break;
+			}
+		}
+		input = &data;
+	}
+	else
+	{
+		// Make sure we can open the input file.
+		input_file.open( input_filename.c_str(), std::fstream::in );
+		if ( input_file.fail())
+		{
+			std::cerr << "Couldn't open input file '" << input_filename << "'." << std::endl;
+			rv = RV_UNABLE_OPEN;
+			error_llsd = spit_error(rv, input_filename);
+			return rv;
+		}
+		input = &input_file;
+	}
+	/////  END OPEN INPUT FILE ////
+
+	/////  BEGIN OPEN OUTPUT FILE ////
+	std::fstream output_file;
+	std::ostream* output = NULL;
+
+	// Make sure we can open the output file.
+	if (write_stdout)
+	{
+		output = &std::cout;
+	}
+	else
+	{
+		output_file.open( output_filename.c_str(), std::fstream::out );
+		if ( output_file.fail() )
+		{
+			std::cerr << "Couldn't open output file '" << output_filename << "'." << std::endl;
+			rv = RV_UNABLE_OPEN;
+			error_llsd = spit_error(rv, output_filename);
+			if (!read_stdin) input_file.close();
+			return rv;
+		}
+		output = &output_file;
+	}
+	/////  END OPEN OUTPUT FILE ////
+
+	/////  BEGIN INPUT PARSING ////
+	LLSD input_llsd;
+	LLSDSerialize::fromXML( input_llsd, *input );
+	if (input_llsd.isUndefined())
+	{
+		rv = RV_UNABLE_TO_PARSE;
+		error_llsd = spit_error(rv);
+		return rv;
+	}
+
+	/////  END INPUT PARSING ////
+
+	if (tbd)
+	{
+		rv = process_tbd(input_llsd, *output, error_llsd);
+	}
+
+	if (!write_stdout) output_file.close();
+	if (!read_stdin) input_file.close();
+
+	return rv;
+}
+
+class LLAppAppearanceUtility : public LLApp
+{
+public:
+	LLAppAppearanceUtility() {}
+	virtual ~LLAppAppearanceUtility() {}
+	/*virtual*/ bool init();
+	/*virtual*/ bool cleanup();
+	/*virtual*/ bool mainLoop() { return true;}
+};
+
+bool LLAppAppearanceUtility::init()
+{
+	return true;
+}
+
+bool LLAppAppearanceUtility::cleanup()
+{
+	return true;
+}
 
 int main(int argc, char** argv)
 {
-	printf("Test app\n");
-	return 0;
+	ll_init_apr();
+	LLAppAppearanceUtility* app = new LLAppAppearanceUtility();
+	app->init();
+	LLSD error_llsd;
+	EResult rv = process_command(argc, argv, error_llsd);
+	if (RV_SUCCESS != rv)
+	{
+		std::cerr << LLSDOStreamer<LLSDXMLFormatter>(error_llsd);
+	}
+	app->cleanup();
+	delete app;
+	ll_cleanup_apr();
+	return (int) rv;
 }
 
 
-- 
GitLab


From 77b33d9623c08152932282048fe847d79fcf43cd Mon Sep 17 00:00:00 2001
From: "Nyx (Neal Orman)" <nyx@lindenlab.com>
Date: Fri, 7 Sep 2012 23:17:34 -0400
Subject: [PATCH 061/436] SH-3264 Porting over the XML loading of the avatar
 structure to llappearance

Moved over the necessary classes to llappearance to support the loading of the
avatar's structure & params from file.
---
 indra/llappearance/CMakeLists.txt             |   10 +
 indra/llappearance/llavatarappearance.cpp     | 1421 ++++++++++++++-
 indra/llappearance/llavatarappearance.h       |  207 ++-
 indra/llappearance/llavatarjoint.cpp          |  261 +++
 indra/llappearance/llavatarjoint.h            |  127 ++
 indra/llappearance/llavatarjointmesh.cpp      |  359 ++++
 indra/llappearance/llavatarjointmesh.h        |  140 ++
 .../{newview => llappearance}/llpolymesh.cpp  |  257 +--
 indra/{newview => llappearance}/llpolymesh.h  |   83 +-
 indra/llappearance/llpolymorph.cpp            |  748 ++++++++
 indra/llappearance/llpolymorph.h              |  182 ++
 .../llappearance/llpolyskeletaldistortion.cpp |  293 ++++
 indra/llappearance/llpolyskeletaldistortion.h |  119 ++
 indra/newview/CMakeLists.txt                  |    4 -
 indra/newview/llagentcamera.cpp               |   10 +-
 indra/newview/llfloaterbvhpreview.cpp         |    4 +-
 indra/newview/llfloaterimagepreview.cpp       |    8 +-
 indra/newview/llhudeffectlookat.cpp           |    2 +-
 indra/newview/llpolymorph.h                   |    6 +-
 indra/newview/llspatialpartition.cpp          |    2 +-
 indra/newview/llstartup.cpp                   |    3 +
 indra/newview/llviewerjoint.cpp               |  121 +-
 indra/newview/llviewerjoint.h                 |   20 +-
 indra/newview/llviewerjointmesh.cpp           |  283 +--
 indra/newview/llviewerjointmesh.h             |   86 +-
 indra/newview/llviewerwindow.cpp              |    2 +-
 indra/newview/llvoavatar.cpp                  | 1548 ++---------------
 indra/newview/llvoavatar.h                    |  172 +-
 indra/newview/llvoavatarself.cpp              |    6 +-
 indra/newview/llvoavatarself.h                |    2 +-
 30 files changed, 4059 insertions(+), 2427 deletions(-)
 create mode 100644 indra/llappearance/llavatarjoint.cpp
 create mode 100644 indra/llappearance/llavatarjoint.h
 create mode 100755 indra/llappearance/llavatarjointmesh.cpp
 create mode 100755 indra/llappearance/llavatarjointmesh.h
 rename indra/{newview => llappearance}/llpolymesh.cpp (81%)
 rename indra/{newview => llappearance}/llpolymesh.h (76%)
 create mode 100644 indra/llappearance/llpolymorph.cpp
 create mode 100644 indra/llappearance/llpolymorph.h
 create mode 100644 indra/llappearance/llpolyskeletaldistortion.cpp
 create mode 100644 indra/llappearance/llpolyskeletaldistortion.h

diff --git a/indra/llappearance/CMakeLists.txt b/indra/llappearance/CMakeLists.txt
index 41da8984579..c5a855a5058 100644
--- a/indra/llappearance/CMakeLists.txt
+++ b/indra/llappearance/CMakeLists.txt
@@ -42,9 +42,14 @@ include_directories(
 
 set(llappearance_SOURCE_FILES
     llavatarappearance.cpp
+    llavatarjoint.cpp
+    llavatarjointmesh.cpp
     lldriverparam.cpp
     llinventoryicon.cpp
     lllocaltextureobject.cpp
+    llpolyskeletaldistortion.cpp
+    llpolymesh.cpp
+    llpolymorph.cpp
     lltexglobalcolor.cpp
     lltexlayer.cpp
     lltexlayerparams.cpp
@@ -60,10 +65,15 @@ set(llappearance_HEADER_FILES
     CMakeLists.txt
 
     llavatarappearance.h
+    llavatarjoint.h
+    llavatarjointmesh.h
     lldriverparam.h
     llinventoryicon.h
     lljointpickname.h
     lllocaltextureobject.h
+    llpolyskeletaldistortion.h
+    llpolymesh.h
+    llpolymorph.h
     lltexglobalcolor.h
     lltexlayer.h
     lltexlayerparams.h
diff --git a/indra/llappearance/llavatarappearance.cpp b/indra/llappearance/llavatarappearance.cpp
index 2c03f8ba027..406e6153e0c 100644
--- a/indra/llappearance/llavatarappearance.cpp
+++ b/indra/llappearance/llavatarappearance.cpp
@@ -29,19 +29,128 @@
 
 #include "llavatarappearance.h"
 #include "llavatarappearancedefines.h"
+#include "llavatarjointmesh.h"
 #include "imageids.h"
+#include "lldir.h"
 #include "lldeleteutils.h"
+#include "llpolymorph.h"
+#include "llpolymesh.h"
+#include "llpolyskeletaldistortion.h"
 #include "lltexglobalcolor.h"
 #include "llwearabledata.h"
 
+//-----------------------------------------------------------------------------
+// Constants
+//-----------------------------------------------------------------------------
+
+const std::string AVATAR_DEFAULT_CHAR = "avatar";
 const LLColor4 DUMMY_COLOR = LLColor4(0.5,0.5,0.5,1.0);
 
+/*********************************************************************************
+ **                                                                             **
+ ** Begin private LLAvatarAppearance Support classes
+ **
+ **/
+
+//------------------------------------------------------------------------
+// LLAvatarBoneInfo
+// Trans/Scale/Rot etc. info about each avatar bone.  Used by LLVOAvatarSkeleton.
+//------------------------------------------------------------------------
+class LLAvatarBoneInfo
+{
+	friend class LLAvatarAppearance;
+	friend class LLAvatarSkeletonInfo;
+public:
+	LLAvatarBoneInfo() : mIsJoint(FALSE) {}
+	~LLAvatarBoneInfo()
+	{
+		std::for_each(mChildList.begin(), mChildList.end(), DeletePointer());
+	}
+	BOOL parseXml(LLXmlTreeNode* node);
+	
+private:
+	std::string mName;
+	BOOL mIsJoint;
+	LLVector3 mPos;
+	LLVector3 mRot;
+	LLVector3 mScale;
+	LLVector3 mPivot;
+	typedef std::vector<LLAvatarBoneInfo*> child_list_t;
+	child_list_t mChildList;
+};
+
+//------------------------------------------------------------------------
+// LLAvatarSkeletonInfo
+// Overall avatar skeleton
+//------------------------------------------------------------------------
+class LLAvatarSkeletonInfo
+{
+	friend class LLAvatarAppearance;
+public:
+	LLAvatarSkeletonInfo() :
+		mNumBones(0), mNumCollisionVolumes(0) {}
+	~LLAvatarSkeletonInfo()
+	{
+		std::for_each(mBoneInfoList.begin(), mBoneInfoList.end(), DeletePointer());
+	}
+	BOOL parseXml(LLXmlTreeNode* node);
+	S32 getNumBones() const { return mNumBones; }
+	S32 getNumCollisionVolumes() const { return mNumCollisionVolumes; }
+	
+private:
+	S32 mNumBones;
+	S32 mNumCollisionVolumes;
+	typedef std::vector<LLAvatarBoneInfo*> bone_info_list_t;
+	bone_info_list_t mBoneInfoList;
+};
+
+//-----------------------------------------------------------------------------
+// LLAvatarXmlInfo
+//-----------------------------------------------------------------------------
+
+LLAvatarAppearance::LLAvatarXmlInfo::LLAvatarXmlInfo()
+	: mTexSkinColorInfo(0), mTexHairColorInfo(0), mTexEyeColorInfo(0)
+{
+}
+
+LLAvatarAppearance::LLAvatarXmlInfo::~LLAvatarXmlInfo()
+{
+	std::for_each(mMeshInfoList.begin(), mMeshInfoList.end(), DeletePointer());
+	std::for_each(mSkeletalDistortionInfoList.begin(), mSkeletalDistortionInfoList.end(), DeletePointer());		
+	std::for_each(mAttachmentInfoList.begin(), mAttachmentInfoList.end(), DeletePointer());
+	deleteAndClear(mTexSkinColorInfo);
+	deleteAndClear(mTexHairColorInfo);
+	deleteAndClear(mTexEyeColorInfo);
+	std::for_each(mLayerInfoList.begin(), mLayerInfoList.end(), DeletePointer());		
+	std::for_each(mDriverInfoList.begin(), mDriverInfoList.end(), DeletePointer());
+	std::for_each(mMorphMaskInfoList.begin(), mMorphMaskInfoList.end(), DeletePointer());
+}
+
+
+/**
+ **
+ ** End LLAvatarAppearance Support classes
+ **                                                                             **
+ *********************************************************************************/
+
+//-----------------------------------------------------------------------------
+// Static Data
+//-----------------------------------------------------------------------------
+LLXmlTree LLAvatarAppearance::sXMLTree;
+LLXmlTree LLAvatarAppearance::sSkeletonXMLTree;
+LLAvatarSkeletonInfo* LLAvatarAppearance::sAvatarSkeletonInfo = NULL;
+LLAvatarAppearance::LLAvatarXmlInfo* LLAvatarAppearance::sAvatarXmlInfo = NULL;
+
+
 LLAvatarAppearance::LLAvatarAppearance(LLWearableData* wearable_data) :
 	LLCharacter(),
 	mIsDummy(FALSE),
 	mTexSkinColor( NULL ),
 	mTexHairColor( NULL ),
 	mTexEyeColor( NULL ),
+	mPelvisToFoot(0.f),
+	mHeadOffset(),
+
 	mWearableData(wearable_data)
 {
 	llassert(mWearableData);
@@ -55,30 +164,824 @@ LLAvatarAppearance::LLAvatarAppearance(LLWearableData* wearable_data) :
 		mBakedTextureDatas[i].mMaskTexName = 0;
 		mBakedTextureDatas[i].mTextureIndex = LLAvatarAppearanceDefines::LLAvatarAppearanceDictionary::bakedToLocalTextureIndex((LLAvatarAppearanceDefines::EBakedTextureIndex)i);
 	}
+
+	mIsBuilt = FALSE;
+
+	mNumJoints = 0;
+	mSkeleton = NULL;
+
+	mNumCollisionVolumes = 0;
+	mCollisionVolumes = NULL;
+
+	mRoot = new LLAvatarJoint();
+
+}
+
+// virtual
+LLAvatarAppearance::~LLAvatarAppearance()
+{
+	deleteAndClear(mTexSkinColor);
+	deleteAndClear(mTexHairColor);
+	deleteAndClear(mTexEyeColor);
+
+	for (U32 i = 0; i < mBakedTextureDatas.size(); i++)
+	{
+		deleteAndClear(mBakedTextureDatas[i].mTexLayerSet);
+		mBakedTextureDatas[i].mMeshes.clear();
+
+		for (morph_list_t::iterator iter2 = mBakedTextureDatas[i].mMaskedMorphs.begin();
+			 iter2 != mBakedTextureDatas[i].mMaskedMorphs.end(); iter2++)
+		{
+			LLMaskedMorph* masked_morph = (*iter2);
+			delete masked_morph;
+		}
+	}
+
+	mRoot->removeAllChildren();
+	mJointMap.clear();
+
+	deleteAndClearArray(mSkeleton);
+	deleteAndClearArray(mCollisionVolumes);
+
+	mNumJoints = 0;
+
+	deleteAndClear(mTexSkinColor);
+	deleteAndClear(mTexHairColor);
+	deleteAndClear(mTexEyeColor);
+
+	std::for_each(mMeshes.begin(), mMeshes.end(), DeletePairedPointer());
+	mMeshes.clear();
+
+	for (std::vector<LLAvatarJoint*>::iterator jointIter = mMeshLOD.begin();
+		 jointIter != mMeshLOD.end(); 
+		 ++jointIter)
+	{
+		LLAvatarJoint* joint = (LLAvatarJoint *) *jointIter;
+		std::for_each(joint->mMeshParts.begin(), joint->mMeshParts.end(), DeletePointer());
+		joint->mMeshParts.clear();
+	}
+	std::for_each(mMeshLOD.begin(), mMeshLOD.end(), DeletePointer());
+	mMeshLOD.clear();
+}
+
+//static
+void LLAvatarAppearance::initClass()
+{
+	std::string xmlFile;
+
+	xmlFile = gDirUtilp->getExpandedFilename(LL_PATH_CHARACTER,AVATAR_DEFAULT_CHAR) + "_lad.xml";
+	BOOL success = sXMLTree.parseFile( xmlFile, FALSE );
+	if (!success)
+	{
+		llerrs << "Problem reading avatar configuration file:" << xmlFile << llendl;
+	}
+
+	// now sanity check xml file
+	LLXmlTreeNode* root = sXMLTree.getRoot();
+	if (!root) 
+	{
+		llerrs << "No root node found in avatar configuration file: " << xmlFile << llendl;
+		return;
+	}
+
+	//-------------------------------------------------------------------------
+	// <linden_avatar version="1.0"> (root)
+	//-------------------------------------------------------------------------
+	if( !root->hasName( "linden_avatar" ) )
+	{
+		llerrs << "Invalid avatar file header: " << xmlFile << llendl;
+	}
+	
+	std::string version;
+	static LLStdStringHandle version_string = LLXmlTree::addAttributeString("version");
+	if( !root->getFastAttributeString( version_string, version ) || (version != "1.0") )
+	{
+		llerrs << "Invalid avatar file version: " << version << " in file: " << xmlFile << llendl;
+	}
+
+	S32 wearable_def_version = 1;
+	static LLStdStringHandle wearable_definition_version_string = LLXmlTree::addAttributeString("wearable_definition_version");
+	root->getFastAttributeS32( wearable_definition_version_string, wearable_def_version );
+	LLWearable::setCurrentDefinitionVersion( wearable_def_version );
+
+	std::string mesh_file_name;
+
+	LLXmlTreeNode* skeleton_node = root->getChildByName( "skeleton" );
+	if (!skeleton_node)
+	{
+		llerrs << "No skeleton in avatar configuration file: " << xmlFile << llendl;
+		return;
+	}
+	
+	std::string skeleton_file_name;
+	static LLStdStringHandle file_name_string = LLXmlTree::addAttributeString("file_name");
+	if (!skeleton_node->getFastAttributeString(file_name_string, skeleton_file_name))
+	{
+		llerrs << "No file name in skeleton node in avatar config file: " << xmlFile << llendl;
+	}
+	
+	std::string skeleton_path;
+	skeleton_path = gDirUtilp->getExpandedFilename(LL_PATH_CHARACTER,skeleton_file_name);
+	if (!parseSkeletonFile(skeleton_path))
+	{
+		llerrs << "Error parsing skeleton file: " << skeleton_path << llendl;
+	}
+
+	// Process XML data
+
+	// avatar_skeleton.xml
+	if (sAvatarSkeletonInfo)
+	{ //this can happen if a login attempt failed
+		delete sAvatarSkeletonInfo;
+	}
+	sAvatarSkeletonInfo = new LLAvatarSkeletonInfo;
+	if (!sAvatarSkeletonInfo->parseXml(sSkeletonXMLTree.getRoot()))
+	{
+		llerrs << "Error parsing skeleton XML file: " << skeleton_path << llendl;
+	}
+	// parse avatar_lad.xml
+	if (sAvatarXmlInfo)
+	{ //this can happen if a login attempt failed
+		deleteAndClear(sAvatarXmlInfo);
+	}
+	sAvatarXmlInfo = new LLAvatarXmlInfo;
+	if (!sAvatarXmlInfo->parseXmlSkeletonNode(root))
+	{
+		llerrs << "Error parsing skeleton node in avatar XML file: " << skeleton_path << llendl;
+	}
+	if (!sAvatarXmlInfo->parseXmlMeshNodes(root))
+	{
+		llerrs << "Error parsing skeleton node in avatar XML file: " << skeleton_path << llendl;
+	}
+	if (!sAvatarXmlInfo->parseXmlColorNodes(root))
+	{
+		llerrs << "Error parsing skeleton node in avatar XML file: " << skeleton_path << llendl;
+	}
+	if (!sAvatarXmlInfo->parseXmlLayerNodes(root))
+	{
+		llerrs << "Error parsing skeleton node in avatar XML file: " << skeleton_path << llendl;
+	}
+	if (!sAvatarXmlInfo->parseXmlDriverNodes(root))
+	{
+		llerrs << "Error parsing skeleton node in avatar XML file: " << skeleton_path << llendl;
+	}
+	if (!sAvatarXmlInfo->parseXmlMorphNodes(root))
+	{
+		llerrs << "Error parsing skeleton node in avatar XML file: " << skeleton_path << llendl;
+	}
+}
+
+using namespace LLAvatarAppearanceDefines;
+
+//------------------------------------------------------------------------
+// The viewer can only suggest a good size for the agent,
+// the simulator will keep it inside a reasonable range.
+void LLAvatarAppearance::computeBodySize() 
+{
+	LLVector3 pelvis_scale = mPelvisp->getScale();
+
+	// some of the joints have not been cached
+	LLVector3 skull = mSkullp->getPosition();
+	LLVector3 skull_scale = mSkullp->getScale();
+
+	LLVector3 neck = mNeckp->getPosition();
+	LLVector3 neck_scale = mNeckp->getScale();
+
+	LLVector3 chest = mChestp->getPosition();
+	LLVector3 chest_scale = mChestp->getScale();
+
+	// the rest of the joints have been cached
+	LLVector3 head = mHeadp->getPosition();
+	LLVector3 head_scale = mHeadp->getScale();
+
+	LLVector3 torso = mTorsop->getPosition();
+	LLVector3 torso_scale = mTorsop->getScale();
+
+	LLVector3 hip = mHipLeftp->getPosition();
+	LLVector3 hip_scale = mHipLeftp->getScale();
+
+	LLVector3 knee = mKneeLeftp->getPosition();
+	LLVector3 knee_scale = mKneeLeftp->getScale();
+
+	LLVector3 ankle = mAnkleLeftp->getPosition();
+	LLVector3 ankle_scale = mAnkleLeftp->getScale();
+
+	LLVector3 foot  = mFootLeftp->getPosition();
+
+	mPelvisToFoot = hip.mV[VZ] * pelvis_scale.mV[VZ] -
+				 	knee.mV[VZ] * hip_scale.mV[VZ] -
+				 	ankle.mV[VZ] * knee_scale.mV[VZ] -
+				 	foot.mV[VZ] * ankle_scale.mV[VZ];
+
+	LLVector3 new_body_size;
+	new_body_size.mV[VZ] = mPelvisToFoot +
+					   // the sqrt(2) correction below is an approximate
+					   // correction to get to the top of the head
+					   F_SQRT2 * (skull.mV[VZ] * head_scale.mV[VZ]) + 
+					   head.mV[VZ] * neck_scale.mV[VZ] + 
+					   neck.mV[VZ] * chest_scale.mV[VZ] + 
+					   chest.mV[VZ] * torso_scale.mV[VZ] + 
+					   torso.mV[VZ] * pelvis_scale.mV[VZ]; 
+
+	// TODO -- measure the real depth and width
+	new_body_size.mV[VX] = DEFAULT_AGENT_DEPTH;
+	new_body_size.mV[VY] = DEFAULT_AGENT_WIDTH;
+
+	if (new_body_size != mBodySize)
+	{
+		mBodySize = new_body_size;
+		bodySizeChanged();
+	}
+}
+
+//-----------------------------------------------------------------------------
+// parseSkeletonFile()
+//-----------------------------------------------------------------------------
+BOOL LLAvatarAppearance::parseSkeletonFile(const std::string& filename)
+{
+	LLMemType mt(LLMemType::MTYPE_AVATAR);
+	
+	//-------------------------------------------------------------------------
+	// parse the file
+	//-------------------------------------------------------------------------
+	BOOL parsesuccess = sSkeletonXMLTree.parseFile( filename, FALSE );
+
+	if (!parsesuccess)
+	{
+		llerrs << "Can't parse skeleton file: " << filename << llendl;
+		return FALSE;
+	}
+
+	// now sanity check xml file
+	LLXmlTreeNode* root = sSkeletonXMLTree.getRoot();
+	if (!root) 
+	{
+		llerrs << "No root node found in avatar skeleton file: " << filename << llendl;
+		return FALSE;
+	}
+
+	if( !root->hasName( "linden_skeleton" ) )
+	{
+		llerrs << "Invalid avatar skeleton file header: " << filename << llendl;
+		return FALSE;
+	}
+
+	std::string version;
+	static LLStdStringHandle version_string = LLXmlTree::addAttributeString("version");
+	if( !root->getFastAttributeString( version_string, version ) || (version != "1.0") )
+	{
+		llerrs << "Invalid avatar skeleton file version: " << version << " in file: " << filename << llendl;
+		return FALSE;
+	}
+
+	return TRUE;
+}
+
+//-----------------------------------------------------------------------------
+// setupBone()
+//-----------------------------------------------------------------------------
+BOOL LLAvatarAppearance::setupBone(const LLAvatarBoneInfo* info, LLJoint* parent, S32 &volume_num, S32 &joint_num)
+{
+	LLMemType mt(LLMemType::MTYPE_AVATAR);
+	
+	LLJoint* joint = NULL;
+
+	if (info->mIsJoint)
+	{
+		joint = getCharacterJoint(joint_num);
+		if (!joint)
+		{
+			llwarns << "Too many bones" << llendl;
+			return FALSE;
+		}
+		joint->setName( info->mName );
+	}
+	else // collision volume
+	{
+		if (volume_num >= (S32)mNumCollisionVolumes)
+		{
+			llwarns << "Too many bones" << llendl;
+			return FALSE;
+		}
+		joint = (&mCollisionVolumes[volume_num]);
+		joint->setName( info->mName );
+	}
+
+	// add to parent
+	if (parent)
+	{
+		parent->addChild( joint );
+	}
+
+	joint->setPosition(info->mPos);
+	joint->setRotation(mayaQ(info->mRot.mV[VX], info->mRot.mV[VY],
+							 info->mRot.mV[VZ], LLQuaternion::XYZ));
+	joint->setScale(info->mScale);
+
+	joint->setDefaultFromCurrentXform();
+	
+	if (info->mIsJoint)
+	{
+		joint->setSkinOffset( info->mPivot );
+		joint_num++;
+	}
+	else // collision volume
+	{
+		volume_num++;
+	}
+
+	// setup children
+	LLAvatarBoneInfo::child_list_t::const_iterator iter;
+	for (iter = info->mChildList.begin(); iter != info->mChildList.end(); ++iter)
+	{
+		LLAvatarBoneInfo *child_info = *iter;
+		if (!setupBone(child_info, joint, volume_num, joint_num))
+		{
+			return FALSE;
+		}
+	}
+
+	return TRUE;
+}
+
+//-----------------------------------------------------------------------------
+// buildSkeleton()
+//-----------------------------------------------------------------------------
+BOOL LLAvatarAppearance::buildSkeleton(const LLAvatarSkeletonInfo *info)
+{
+	LLMemType mt(LLMemType::MTYPE_AVATAR);
+	
+	//-------------------------------------------------------------------------
+	// allocate joints
+	//-------------------------------------------------------------------------
+	if (!allocateCharacterJoints(info->mNumBones))
+	{
+		llerrs << "Can't allocate " << info->mNumBones << " joints" << llendl;
+		return FALSE;
+	}
+	
+	//-------------------------------------------------------------------------
+	// allocate volumes
+	//-------------------------------------------------------------------------
+	if (info->mNumCollisionVolumes)
+	{
+		if (!allocateCollisionVolumes(info->mNumCollisionVolumes))
+		{
+			llerrs << "Can't allocate " << info->mNumCollisionVolumes << " collision volumes" << llendl;
+			return FALSE;
+		}
+	}
+
+	S32 current_joint_num = 0;
+	S32 current_volume_num = 0;
+	LLAvatarSkeletonInfo::bone_info_list_t::const_iterator iter;
+	for (iter = info->mBoneInfoList.begin(); iter != info->mBoneInfoList.end(); ++iter)
+	{
+		LLAvatarBoneInfo *info = *iter;
+		if (!setupBone(info, NULL, current_volume_num, current_joint_num))
+		{
+			llerrs << "Error parsing bone in skeleton file" << llendl;
+			return FALSE;
+		}
+	}
+
+	return TRUE;
+}
+
+//-----------------------------------------------------------------------------
+// LLAvatarAppearance::buildCharacter()
+// Deferred initialization and rebuild of the avatar.
+//-----------------------------------------------------------------------------
+void LLAvatarAppearance::buildCharacter()
+{
+	LLMemType mt(LLMemType::MTYPE_AVATAR);
+	
+	//-------------------------------------------------------------------------
+	// remove all references to our existing skeleton
+	// so we can rebuild it
+	//-------------------------------------------------------------------------
+	flushAllMotions();
+
+	//-------------------------------------------------------------------------
+	// remove all of mRoot's children
+	//-------------------------------------------------------------------------
+	mRoot->removeAllChildren();
+	mJointMap.clear();
+	mIsBuilt = FALSE;
+
+	//-------------------------------------------------------------------------
+	// (re)load our skeleton and meshes
+	//-------------------------------------------------------------------------
+	LLTimer timer;
+
+	BOOL status = loadAvatar();
+	stop_glerror();
+
+// 	gPrintMessagesThisFrame = TRUE;
+	lldebugs << "Avatar load took " << timer.getElapsedTimeF32() << " seconds." << llendl;
+
+	if (!status)
+	{
+		if (isSelf())
+		{
+			llerrs << "Unable to load user's avatar" << llendl;
+		}
+		else
+		{
+			llwarns << "Unable to load other's avatar" << llendl;
+		}
+		return;
+	}
+
+	//-------------------------------------------------------------------------
+	// initialize "well known" joint pointers
+	//-------------------------------------------------------------------------
+	mPelvisp		= mRoot->findJoint("mPelvis");
+	mTorsop			= mRoot->findJoint("mTorso");
+	mChestp			= mRoot->findJoint("mChest");
+	mNeckp			= mRoot->findJoint("mNeck");
+	mHeadp			= mRoot->findJoint("mHead");
+	mSkullp			= mRoot->findJoint("mSkull");
+	mHipLeftp		= mRoot->findJoint("mHipLeft");
+	mHipRightp		= mRoot->findJoint("mHipRight");
+	mKneeLeftp		= mRoot->findJoint("mKneeLeft");
+	mKneeRightp		= mRoot->findJoint("mKneeRight");
+	mAnkleLeftp		= mRoot->findJoint("mAnkleLeft");
+	mAnkleRightp	= mRoot->findJoint("mAnkleRight");
+	mFootLeftp		= mRoot->findJoint("mFootLeft");
+	mFootRightp		= mRoot->findJoint("mFootRight");
+	mWristLeftp		= mRoot->findJoint("mWristLeft");
+	mWristRightp	= mRoot->findJoint("mWristRight");
+	mEyeLeftp		= mRoot->findJoint("mEyeLeft");
+	mEyeRightp		= mRoot->findJoint("mEyeRight");
+
+	//-------------------------------------------------------------------------
+	// Make sure "well known" pointers exist
+	//-------------------------------------------------------------------------
+	if (!(mPelvisp && 
+		  mTorsop &&
+		  mChestp &&
+		  mNeckp &&
+		  mHeadp &&
+		  mSkullp &&
+		  mHipLeftp &&
+		  mHipRightp &&
+		  mKneeLeftp &&
+		  mKneeRightp &&
+		  mAnkleLeftp &&
+		  mAnkleRightp &&
+		  mFootLeftp &&
+		  mFootRightp &&
+		  mWristLeftp &&
+		  mWristRightp &&
+		  mEyeLeftp &&
+		  mEyeRightp))
+	{
+		llerrs << "Failed to create avatar." << llendl;
+		return;
+	}
+
+	//-------------------------------------------------------------------------
+	// initialize the pelvis
+	//-------------------------------------------------------------------------
+	mPelvisp->setPosition( LLVector3(0.0f, 0.0f, 0.0f) );
+
+	mIsBuilt = TRUE;
+	stop_glerror();
+
+}
+
+BOOL LLAvatarAppearance::loadAvatar()
+{
+// 	LLFastTimer t(FTM_LOAD_AVATAR);
+	
+	// avatar_skeleton.xml
+	if( !buildSkeleton(sAvatarSkeletonInfo) )
+	{
+		llwarns << "avatar file: buildSkeleton() failed" << llendl;
+		return FALSE;
+	}
+
+	// avatar_lad.xml : <skeleton>
+	if( !loadSkeletonNode() )
+	{
+		llwarns << "avatar file: loadNodeSkeleton() failed" << llendl;
+		return FALSE;
+	}
+	
+	// avatar_lad.xml : <mesh>
+	if( !loadMeshNodes() )
+	{
+		llwarns << "avatar file: loadNodeMesh() failed" << llendl;
+		return FALSE;
+	}
+	
+	// avatar_lad.xml : <global_color>
+	if( sAvatarXmlInfo->mTexSkinColorInfo )
+	{
+		mTexSkinColor = new LLTexGlobalColor( this );
+		if( !mTexSkinColor->setInfo( sAvatarXmlInfo->mTexSkinColorInfo ) )
+		{
+			llwarns << "avatar file: mTexSkinColor->setInfo() failed" << llendl;
+			return FALSE;
+		}
+	}
+	else
+	{
+		llwarns << "<global_color> name=\"skin_color\" not found" << llendl;
+		return FALSE;
+	}
+	if( sAvatarXmlInfo->mTexHairColorInfo )
+	{
+		mTexHairColor = new LLTexGlobalColor( this );
+		if( !mTexHairColor->setInfo( sAvatarXmlInfo->mTexHairColorInfo ) )
+		{
+			llwarns << "avatar file: mTexHairColor->setInfo() failed" << llendl;
+			return FALSE;
+		}
+	}
+	else
+	{
+		llwarns << "<global_color> name=\"hair_color\" not found" << llendl;
+		return FALSE;
+	}
+	if( sAvatarXmlInfo->mTexEyeColorInfo )
+	{
+		mTexEyeColor = new LLTexGlobalColor( this );
+		if( !mTexEyeColor->setInfo( sAvatarXmlInfo->mTexEyeColorInfo ) )
+		{
+			llwarns << "avatar file: mTexEyeColor->setInfo() failed" << llendl;
+			return FALSE;
+		}
+	}
+	else
+	{
+		llwarns << "<global_color> name=\"eye_color\" not found" << llendl;
+		return FALSE;
+	}
+	
+	// avatar_lad.xml : <layer_set>
+	if (sAvatarXmlInfo->mLayerInfoList.empty())
+	{
+		llwarns << "avatar file: missing <layer_set> node" << llendl;
+		return FALSE;
+	}
+
+	if (sAvatarXmlInfo->mMorphMaskInfoList.empty())
+	{
+		llwarns << "avatar file: missing <morph_masks> node" << llendl;
+		return FALSE;
+	}
+
+	// avatar_lad.xml : <morph_masks>
+	for (LLAvatarXmlInfo::morph_info_list_t::iterator iter = sAvatarXmlInfo->mMorphMaskInfoList.begin();
+		 iter != sAvatarXmlInfo->mMorphMaskInfoList.end();
+		 ++iter)
+	{
+		LLAvatarXmlInfo::LLAvatarMorphInfo *info = *iter;
+
+		EBakedTextureIndex baked = LLAvatarAppearanceDictionary::findBakedByRegionName(info->mRegion); 
+		if (baked != BAKED_NUM_INDICES)
+		{
+			LLVisualParam* morph_param;
+			const std::string *name = &info->mName;
+			morph_param = getVisualParam(name->c_str());
+			if (morph_param)
+			{
+				BOOL invert = info->mInvert;
+				addMaskedMorph(baked, morph_param, invert, info->mLayer);
+			}
+		}
+
+	}
+
+	loadLayersets();	
+	
+	// avatar_lad.xml : <driver_parameters>
+	for (LLAvatarXmlInfo::driver_info_list_t::iterator iter = sAvatarXmlInfo->mDriverInfoList.begin();
+		 iter != sAvatarXmlInfo->mDriverInfoList.end(); 
+		 ++iter)
+	{
+		LLDriverParamInfo *info = *iter;
+		LLDriverParam* driver_param = new LLDriverParam( this );
+		if (driver_param->setInfo(info))
+		{
+			addVisualParam( driver_param );
+			LLVisualParam*(LLAvatarAppearance::*avatar_function)(S32)const = &LLAvatarAppearance::getVisualParam; 
+			if( !driver_param->linkDrivenParams(boost::bind(avatar_function,(LLAvatarAppearance*)this,_1 ), false))
+			{
+				llwarns << "could not link driven params for avatar " << getID().asString() << " param id: " << driver_param->getID() << llendl;
+				continue;
+			}
+		}
+		else
+		{
+			delete driver_param;
+			llwarns << "avatar file: driver_param->parseData() failed" << llendl;
+			return FALSE;
+		}
+	}
+
+	
+	return TRUE;
+}
+
+//-----------------------------------------------------------------------------
+// loadSkeletonNode(): loads <skeleton> node from XML tree
+//-----------------------------------------------------------------------------
+BOOL LLAvatarAppearance::loadSkeletonNode ()
+{
+	mRoot->addChild( &mSkeleton[0] );
+
+	mRoot->addChild(mMeshLOD[MESH_ID_HEAD]);
+	mRoot->addChild(mMeshLOD[MESH_ID_EYELASH]);
+	mRoot->addChild(mMeshLOD[MESH_ID_UPPER_BODY]);
+	mRoot->addChild(mMeshLOD[MESH_ID_LOWER_BODY]);
+	mRoot->addChild(mMeshLOD[MESH_ID_SKIRT]);
+	mRoot->addChild(mMeshLOD[MESH_ID_HEAD]);
+
+	LLAvatarJoint *skull = (LLAvatarJoint*)mRoot->findJoint("mSkull");
+	if (skull)
+	{
+		skull->addChild(mMeshLOD[MESH_ID_HAIR] );
+	}
+
+	LLAvatarJoint *eyeL = (LLAvatarJoint*)mRoot->findJoint("mEyeLeft");
+	if (eyeL)
+	{
+		eyeL->addChild( mMeshLOD[MESH_ID_EYEBALL_LEFT] );
+	}
+
+	LLAvatarJoint *eyeR = (LLAvatarJoint*)mRoot->findJoint("mEyeRight");
+	if (eyeR)
+	{
+		eyeR->addChild( mMeshLOD[MESH_ID_EYEBALL_RIGHT] );
+	}
+
+	// SKELETAL DISTORTIONS
+	{
+		LLAvatarXmlInfo::skeletal_distortion_info_list_t::iterator iter;
+		for (iter = sAvatarXmlInfo->mSkeletalDistortionInfoList.begin();
+			 iter != sAvatarXmlInfo->mSkeletalDistortionInfoList.end(); 
+			 ++iter)
+		{
+			LLPolySkeletalDistortionInfo *info = (LLPolySkeletalDistortionInfo*)*iter;
+			LLPolySkeletalDistortion *param = new LLPolySkeletalDistortion(this);
+			if (!param->setInfo(info))
+			{
+				delete param;
+				return FALSE;
+			}
+			else
+			{
+				addVisualParam(param);
+			}				
+		}
+	}
+
+
+	return TRUE;
 }
 
-// virtual
-LLAvatarAppearance::~LLAvatarAppearance()
+//-----------------------------------------------------------------------------
+// loadMeshNodes(): loads <mesh> nodes from XML tree
+//-----------------------------------------------------------------------------
+BOOL LLAvatarAppearance::loadMeshNodes()
 {
-	deleteAndClear(mTexSkinColor);
-	deleteAndClear(mTexHairColor);
-	deleteAndClear(mTexEyeColor);
-
-	for (U32 i = 0; i < mBakedTextureDatas.size(); i++)
+	for (LLAvatarXmlInfo::mesh_info_list_t::const_iterator meshinfo_iter = sAvatarXmlInfo->mMeshInfoList.begin();
+		 meshinfo_iter != sAvatarXmlInfo->mMeshInfoList.end(); 
+		 ++meshinfo_iter)
 	{
-		deleteAndClear(mBakedTextureDatas[i].mTexLayerSet);
-		mBakedTextureDatas[i].mMeshes.clear();
+		const LLAvatarXmlInfo::LLAvatarMeshInfo *info = *meshinfo_iter;
+		const std::string &type = info->mType;
+		S32 lod = info->mLOD;
 
-		for (morph_list_t::iterator iter2 = mBakedTextureDatas[i].mMaskedMorphs.begin();
-			 iter2 != mBakedTextureDatas[i].mMaskedMorphs.end(); iter2++)
+		LLAvatarJointMesh* mesh = NULL;
+		U8 mesh_id = 0;
+		BOOL found_mesh_id = FALSE;
+
+		/* if (type == "hairMesh")
+			switch(lod)
+			  case 0:
+				mesh = &mHairMesh0; */
+		for (LLAvatarAppearanceDictionary::Meshes::const_iterator mesh_iter = LLAvatarAppearanceDictionary::getInstance()->getMeshes().begin();
+			 mesh_iter != LLAvatarAppearanceDictionary::getInstance()->getMeshes().end();
+			 ++mesh_iter)
 		{
-			LLMaskedMorph* masked_morph = (*iter2);
-			delete masked_morph;
+			const EMeshIndex mesh_index = mesh_iter->first;
+			const LLAvatarAppearanceDictionary::MeshEntry *mesh_dict = mesh_iter->second;
+			if (type.compare(mesh_dict->mName) == 0)
+			{
+				mesh_id = mesh_index;
+				found_mesh_id = TRUE;
+				break;
+			}
+		}
+
+		if (found_mesh_id)
+		{
+			if (lod < (S32)mMeshLOD[mesh_id]->mMeshParts.size())
+			{
+				mesh = mMeshLOD[mesh_id]->mMeshParts[lod];
+			}
+			else
+			{
+				llwarns << "Avatar file: <mesh> has invalid lod setting " << lod << llendl;
+				return FALSE;
+			}
+		}
+		else 
+		{
+			llwarns << "Ignoring unrecognized mesh type: " << type << llendl;
+			return FALSE;
+		}
+
+		//	llinfos << "Parsing mesh data for " << type << "..." << llendl;
+
+		// If this isn't set to white (1.0), avatars will *ALWAYS* be darker than their surroundings.
+		// Do not touch!!!
+		mesh->setColor( 1.0f, 1.0f, 1.0f, 1.0f );
+
+		LLPolyMesh *poly_mesh = NULL;
+
+		if (!info->mReferenceMeshName.empty())
+		{
+			polymesh_map_t::const_iterator polymesh_iter = mMeshes.find(info->mReferenceMeshName);
+			if (polymesh_iter != mMeshes.end())
+			{
+				poly_mesh = LLPolyMesh::getMesh(info->mMeshFileName, polymesh_iter->second);
+				poly_mesh->setAvatar(this);
+			}
+			else
+			{
+				// This should never happen
+				LL_WARNS("Avatar") << "Could not find avatar mesh: " << info->mReferenceMeshName << LL_ENDL;
+			}
+		}
+		else
+		{
+			poly_mesh = LLPolyMesh::getMesh(info->mMeshFileName);
+			poly_mesh->setAvatar(this);
+		}
+
+		if( !poly_mesh )
+		{
+			llwarns << "Failed to load mesh of type " << type << llendl;
+			return FALSE;
+		}
+
+		// Multimap insert
+		mMeshes.insert(std::make_pair(info->mMeshFileName, poly_mesh));
+	
+		mesh->setMesh( poly_mesh );
+		mesh->setLOD( info->mMinPixelArea );
+
+		for (LLAvatarXmlInfo::LLAvatarMeshInfo::morph_info_list_t::const_iterator xmlinfo_iter = info->mPolyMorphTargetInfoList.begin();
+			 xmlinfo_iter != info->mPolyMorphTargetInfoList.end(); 
+			 ++xmlinfo_iter)
+		{
+			const LLAvatarXmlInfo::LLAvatarMeshInfo::morph_info_pair_t *info_pair = &(*xmlinfo_iter);
+			LLPolyMorphTarget *param = new LLPolyMorphTarget(mesh->getMesh());
+			if (!param->setInfo((LLPolyMorphTargetInfo*)info_pair->first))
+			{
+				delete param;
+				return FALSE;
+			}
+			else
+			{
+				if (info_pair->second)
+				{
+					addSharedVisualParam(param);
+				}
+				else
+				{
+					addVisualParam(param);
+				}
+			}				
 		}
 	}
+
+	return TRUE;
 }
 
-using namespace LLAvatarAppearanceDefines;
+//-----------------------------------------------------------------------------
+// loadLayerSets()
+//-----------------------------------------------------------------------------
+BOOL LLAvatarAppearance::loadLayersets()
+{
+	BOOL success = TRUE;
+	for (LLAvatarXmlInfo::layer_info_list_t::const_iterator layerset_iter = sAvatarXmlInfo->mLayerInfoList.begin();
+		 layerset_iter != sAvatarXmlInfo->mLayerInfoList.end(); 
+		 ++layerset_iter)
+	{
+		// Construct a layerset for each one specified in avatar_lad.xml and initialize it as such.
+		LLTexLayerSetInfo *layerset_info = *layerset_iter;
+		layerset_info->createVisualParams(this);
+	}
+	return success;
+}
+
+
 
 // virtual
 BOOL LLAvatarAppearance::isValid() const
@@ -273,4 +1176,494 @@ BOOL LLAvatarAppearance::isWearingWearableType(LLWearableType::EType type) const
 	return FALSE;
 }
 
+//-----------------------------------------------------------------------------
+// allocateCollisionVolumes()
+//-----------------------------------------------------------------------------
+BOOL LLAvatarAppearance::allocateCollisionVolumes( U32 num )
+{
+	deleteAndClearArray(mCollisionVolumes);
+	mNumCollisionVolumes = 0;
+
+	mCollisionVolumes = new LLAvatarJointCollisionVolume[num];
+	if (!mCollisionVolumes)
+	{
+		return FALSE;
+	}
+
+	mNumCollisionVolumes = num;
+	return TRUE;
+}
+
+//-----------------------------------------------------------------------------
+// LLAvatarBoneInfo::parseXml()
+//-----------------------------------------------------------------------------
+BOOL LLAvatarBoneInfo::parseXml(LLXmlTreeNode* node)
+{
+	if (node->hasName("bone"))
+	{
+		mIsJoint = TRUE;
+		static LLStdStringHandle name_string = LLXmlTree::addAttributeString("name");
+		if (!node->getFastAttributeString(name_string, mName))
+		{
+			llwarns << "Bone without name" << llendl;
+			return FALSE;
+		}
+	}
+	else if (node->hasName("collision_volume"))
+	{
+		mIsJoint = FALSE;
+		static LLStdStringHandle name_string = LLXmlTree::addAttributeString("name");
+		if (!node->getFastAttributeString(name_string, mName))
+		{
+			mName = "Collision Volume";
+		}
+	}
+	else
+	{
+		llwarns << "Invalid node " << node->getName() << llendl;
+		return FALSE;
+	}
+
+	static LLStdStringHandle pos_string = LLXmlTree::addAttributeString("pos");
+	if (!node->getFastAttributeVector3(pos_string, mPos))
+	{
+		llwarns << "Bone without position" << llendl;
+		return FALSE;
+	}
+
+	static LLStdStringHandle rot_string = LLXmlTree::addAttributeString("rot");
+	if (!node->getFastAttributeVector3(rot_string, mRot))
+	{
+		llwarns << "Bone without rotation" << llendl;
+		return FALSE;
+	}
+	
+	static LLStdStringHandle scale_string = LLXmlTree::addAttributeString("scale");
+	if (!node->getFastAttributeVector3(scale_string, mScale))
+	{
+		llwarns << "Bone without scale" << llendl;
+		return FALSE;
+	}
+
+	if (mIsJoint)
+	{
+		static LLStdStringHandle pivot_string = LLXmlTree::addAttributeString("pivot");
+		if (!node->getFastAttributeVector3(pivot_string, mPivot))
+		{
+			llwarns << "Bone without pivot" << llendl;
+			return FALSE;
+		}
+	}
+
+	// parse children
+	LLXmlTreeNode* child;
+	for( child = node->getFirstChild(); child; child = node->getNextChild() )
+	{
+		LLAvatarBoneInfo *child_info = new LLAvatarBoneInfo;
+		if (!child_info->parseXml(child))
+		{
+			delete child_info;
+			return FALSE;
+		}
+		mChildList.push_back(child_info);
+	}
+	return TRUE;
+}
+
+//-----------------------------------------------------------------------------
+// LLAvatarSkeletonInfo::parseXml()
+//-----------------------------------------------------------------------------
+BOOL LLAvatarSkeletonInfo::parseXml(LLXmlTreeNode* node)
+{
+	static LLStdStringHandle num_bones_string = LLXmlTree::addAttributeString("num_bones");
+	if (!node->getFastAttributeS32(num_bones_string, mNumBones))
+	{
+		llwarns << "Couldn't find number of bones." << llendl;
+		return FALSE;
+	}
+
+	static LLStdStringHandle num_collision_volumes_string = LLXmlTree::addAttributeString("num_collision_volumes");
+	node->getFastAttributeS32(num_collision_volumes_string, mNumCollisionVolumes);
+
+	LLXmlTreeNode* child;
+	for( child = node->getFirstChild(); child; child = node->getNextChild() )
+	{
+		LLAvatarBoneInfo *info = new LLAvatarBoneInfo;
+		if (!info->parseXml(child))
+		{
+			delete info;
+			llwarns << "Error parsing bone in skeleton file" << llendl;
+			return FALSE;
+		}
+		mBoneInfoList.push_back(info);
+	}
+	return TRUE;
+}
+
+
+//-----------------------------------------------------------------------------
+// parseXmlSkeletonNode(): parses <skeleton> nodes from XML tree
+//-----------------------------------------------------------------------------
+BOOL LLAvatarAppearance::LLAvatarXmlInfo::parseXmlSkeletonNode(LLXmlTreeNode* root)
+{
+	LLXmlTreeNode* node = root->getChildByName( "skeleton" );
+	if( !node )
+	{
+		llwarns << "avatar file: missing <skeleton>" << llendl;
+		return FALSE;
+	}
+
+	LLXmlTreeNode* child;
+
+	// SKELETON DISTORTIONS
+	for (child = node->getChildByName( "param" );
+		 child;
+		 child = node->getNextNamedChild())
+	{
+		if (!child->getChildByName("param_skeleton"))
+		{
+			if (child->getChildByName("param_morph"))
+			{
+				llwarns << "Can't specify morph param in skeleton definition." << llendl;
+			}
+			else
+			{
+				llwarns << "Unknown param type." << llendl;
+			}
+			continue;
+		}
+		
+		LLPolySkeletalDistortionInfo *info = new LLPolySkeletalDistortionInfo;
+		if (!info->parseXml(child))
+		{
+			delete info;
+			return FALSE;
+		}
+
+		mSkeletalDistortionInfoList.push_back(info);
+	}
+
+	// ATTACHMENT POINTS
+	for (child = node->getChildByName( "attachment_point" );
+		 child;
+		 child = node->getNextNamedChild())
+	{
+		LLAvatarAttachmentInfo* info = new LLAvatarAttachmentInfo();
+
+		static LLStdStringHandle name_string = LLXmlTree::addAttributeString("name");
+		if (!child->getFastAttributeString(name_string, info->mName))
+		{
+			llwarns << "No name supplied for attachment point." << llendl;
+			delete info;
+			continue;
+		}
+
+		static LLStdStringHandle joint_string = LLXmlTree::addAttributeString("joint");
+		if (!child->getFastAttributeString(joint_string, info->mJointName))
+		{
+			llwarns << "No bone declared in attachment point " << info->mName << llendl;
+			delete info;
+			continue;
+		}
+
+		static LLStdStringHandle position_string = LLXmlTree::addAttributeString("position");
+		if (child->getFastAttributeVector3(position_string, info->mPosition))
+		{
+			info->mHasPosition = TRUE;
+		}
+
+		static LLStdStringHandle rotation_string = LLXmlTree::addAttributeString("rotation");
+		if (child->getFastAttributeVector3(rotation_string, info->mRotationEuler))
+		{
+			info->mHasRotation = TRUE;
+		}
+		 static LLStdStringHandle group_string = LLXmlTree::addAttributeString("group");
+		if (child->getFastAttributeS32(group_string, info->mGroup))
+		{
+			if (info->mGroup == -1)
+				info->mGroup = -1111; // -1 = none parsed, < -1 = bad value
+		}
+
+		static LLStdStringHandle id_string = LLXmlTree::addAttributeString("id");
+		if (!child->getFastAttributeS32(id_string, info->mAttachmentID))
+		{
+			llwarns << "No id supplied for attachment point " << info->mName << llendl;
+			delete info;
+			continue;
+		}
+
+		static LLStdStringHandle slot_string = LLXmlTree::addAttributeString("pie_slice");
+		child->getFastAttributeS32(slot_string, info->mPieMenuSlice);
+			
+		static LLStdStringHandle visible_in_first_person_string = LLXmlTree::addAttributeString("visible_in_first_person");
+		child->getFastAttributeBOOL(visible_in_first_person_string, info->mVisibleFirstPerson);
+
+		static LLStdStringHandle hud_attachment_string = LLXmlTree::addAttributeString("hud");
+		child->getFastAttributeBOOL(hud_attachment_string, info->mIsHUDAttachment);
+
+		mAttachmentInfoList.push_back(info);
+	}
+
+	return TRUE;
+}
+
+//-----------------------------------------------------------------------------
+// parseXmlMeshNodes(): parses <mesh> nodes from XML tree
+//-----------------------------------------------------------------------------
+BOOL LLAvatarAppearance::LLAvatarXmlInfo::parseXmlMeshNodes(LLXmlTreeNode* root)
+{
+	for (LLXmlTreeNode* node = root->getChildByName( "mesh" );
+		 node;
+		 node = root->getNextNamedChild())
+	{
+		LLAvatarMeshInfo *info = new LLAvatarMeshInfo;
+
+		// attribute: type
+		static LLStdStringHandle type_string = LLXmlTree::addAttributeString("type");
+		if( !node->getFastAttributeString( type_string, info->mType ) )
+		{
+			llwarns << "Avatar file: <mesh> is missing type attribute.  Ignoring element. " << llendl;
+			delete info;
+			return FALSE;  // Ignore this element
+		}
+		
+		static LLStdStringHandle lod_string = LLXmlTree::addAttributeString("lod");
+		if (!node->getFastAttributeS32( lod_string, info->mLOD ))
+		{
+			llwarns << "Avatar file: <mesh> is missing lod attribute.  Ignoring element. " << llendl;
+			delete info;
+			return FALSE;  // Ignore this element
+		}
+
+		static LLStdStringHandle file_name_string = LLXmlTree::addAttributeString("file_name");
+		if( !node->getFastAttributeString( file_name_string, info->mMeshFileName ) )
+		{
+			llwarns << "Avatar file: <mesh> is missing file_name attribute.  Ignoring: " << info->mType << llendl;
+			delete info;
+			return FALSE;  // Ignore this element
+		}
+
+		static LLStdStringHandle reference_string = LLXmlTree::addAttributeString("reference");
+		node->getFastAttributeString( reference_string, info->mReferenceMeshName );
+		
+		// attribute: min_pixel_area
+		static LLStdStringHandle min_pixel_area_string = LLXmlTree::addAttributeString("min_pixel_area");
+		static LLStdStringHandle min_pixel_width_string = LLXmlTree::addAttributeString("min_pixel_width");
+		if (!node->getFastAttributeF32( min_pixel_area_string, info->mMinPixelArea ))
+		{
+			F32 min_pixel_area = 0.1f;
+			if (node->getFastAttributeF32( min_pixel_width_string, min_pixel_area ))
+			{
+				// this is square root of pixel area (sensible to use linear space in defining lods)
+				min_pixel_area = min_pixel_area * min_pixel_area;
+			}
+			info->mMinPixelArea = min_pixel_area;
+		}
+		
+		// Parse visual params for this node only if we haven't already
+		for (LLXmlTreeNode* child = node->getChildByName( "param" );
+			 child;
+			 child = node->getNextNamedChild())
+		{
+			if (!child->getChildByName("param_morph"))
+			{
+				if (child->getChildByName("param_skeleton"))
+				{
+					llwarns << "Can't specify skeleton param in a mesh definition." << llendl;
+				}
+				else
+				{
+					llwarns << "Unknown param type." << llendl;
+				}
+				continue;
+			}
+
+			LLPolyMorphTargetInfo *morphinfo = new LLPolyMorphTargetInfo();
+			if (!morphinfo->parseXml(child))
+			{
+				delete morphinfo;
+				delete info;
+				return -1;
+			}
+			BOOL shared = FALSE;
+			static LLStdStringHandle shared_string = LLXmlTree::addAttributeString("shared");
+			child->getFastAttributeBOOL(shared_string, shared);
+
+			info->mPolyMorphTargetInfoList.push_back(LLAvatarMeshInfo::morph_info_pair_t(morphinfo, shared));
+		}
+
+		mMeshInfoList.push_back(info);
+	}
+	return TRUE;
+}
+
+//-----------------------------------------------------------------------------
+// parseXmlColorNodes(): parses <global_color> nodes from XML tree
+//-----------------------------------------------------------------------------
+BOOL LLAvatarAppearance::LLAvatarXmlInfo::parseXmlColorNodes(LLXmlTreeNode* root)
+{
+	for (LLXmlTreeNode* color_node = root->getChildByName( "global_color" );
+		 color_node;
+		 color_node = root->getNextNamedChild())
+	{
+		std::string global_color_name;
+		static LLStdStringHandle name_string = LLXmlTree::addAttributeString("name");
+		if (color_node->getFastAttributeString( name_string, global_color_name ) )
+		{
+			if( global_color_name == "skin_color" )
+			{
+				if (mTexSkinColorInfo)
+				{
+					llwarns << "avatar file: multiple instances of skin_color" << llendl;
+					return FALSE;
+				}
+				mTexSkinColorInfo = new LLTexGlobalColorInfo;
+				if( !mTexSkinColorInfo->parseXml( color_node ) )
+				{
+					deleteAndClear(mTexSkinColorInfo);
+					llwarns << "avatar file: mTexSkinColor->parseXml() failed" << llendl;
+					return FALSE;
+				}
+			}
+			else if( global_color_name == "hair_color" )
+			{
+				if (mTexHairColorInfo)
+				{
+					llwarns << "avatar file: multiple instances of hair_color" << llendl;
+					return FALSE;
+				}
+				mTexHairColorInfo = new LLTexGlobalColorInfo;
+				if( !mTexHairColorInfo->parseXml( color_node ) )
+				{
+					deleteAndClear(mTexHairColorInfo);
+					llwarns << "avatar file: mTexHairColor->parseXml() failed" << llendl;
+					return FALSE;
+				}
+			}
+			else if( global_color_name == "eye_color" )
+			{
+				if (mTexEyeColorInfo)
+				{
+					llwarns << "avatar file: multiple instances of eye_color" << llendl;
+					return FALSE;
+				}
+				mTexEyeColorInfo = new LLTexGlobalColorInfo;
+				if( !mTexEyeColorInfo->parseXml( color_node ) )
+				{
+					llwarns << "avatar file: mTexEyeColor->parseXml() failed" << llendl;
+					return FALSE;
+				}
+			}
+		}
+	}
+	return TRUE;
+}
+
+//-----------------------------------------------------------------------------
+// parseXmlLayerNodes(): parses <layer_set> nodes from XML tree
+//-----------------------------------------------------------------------------
+BOOL LLAvatarAppearance::LLAvatarXmlInfo::parseXmlLayerNodes(LLXmlTreeNode* root)
+{
+	for (LLXmlTreeNode* layer_node = root->getChildByName( "layer_set" );
+		 layer_node;
+		 layer_node = root->getNextNamedChild())
+	{
+		LLTexLayerSetInfo* layer_info = new LLTexLayerSetInfo();
+		if( layer_info->parseXml( layer_node ) )
+		{
+			mLayerInfoList.push_back(layer_info);
+		}
+		else
+		{
+			delete layer_info;
+			llwarns << "avatar file: layer_set->parseXml() failed" << llendl;
+			return FALSE;
+		}
+	}
+	return TRUE;
+}
+
+//-----------------------------------------------------------------------------
+// parseXmlDriverNodes(): parses <driver_parameters> nodes from XML tree
+//-----------------------------------------------------------------------------
+BOOL LLAvatarAppearance::LLAvatarXmlInfo::parseXmlDriverNodes(LLXmlTreeNode* root)
+{
+	LLXmlTreeNode* driver = root->getChildByName( "driver_parameters" );
+	if( driver )
+	{
+		for (LLXmlTreeNode* grand_child = driver->getChildByName( "param" );
+			 grand_child;
+			 grand_child = driver->getNextNamedChild())
+		{
+			if( grand_child->getChildByName( "param_driver" ) )
+			{
+				LLDriverParamInfo* driver_info = new LLDriverParamInfo();
+				if( driver_info->parseXml( grand_child ) )
+				{
+					mDriverInfoList.push_back(driver_info);
+				}
+				else
+				{
+					delete driver_info;
+					llwarns << "avatar file: driver_param->parseXml() failed" << llendl;
+					return FALSE;
+				}
+			}
+		}
+	}
+	return TRUE;
+}
+
+//-----------------------------------------------------------------------------
+// parseXmlDriverNodes(): parses <driver_parameters> nodes from XML tree
+//-----------------------------------------------------------------------------
+BOOL LLAvatarAppearance::LLAvatarXmlInfo::parseXmlMorphNodes(LLXmlTreeNode* root)
+{
+	LLXmlTreeNode* masks = root->getChildByName( "morph_masks" );
+	if( !masks )
+	{
+		return FALSE;
+	}
+
+	for (LLXmlTreeNode* grand_child = masks->getChildByName( "mask" );
+		 grand_child;
+		 grand_child = masks->getNextNamedChild())
+	{
+		LLAvatarMorphInfo* info = new LLAvatarMorphInfo();
+
+		static LLStdStringHandle name_string = LLXmlTree::addAttributeString("morph_name");
+		if (!grand_child->getFastAttributeString(name_string, info->mName))
+		{
+			llwarns << "No name supplied for morph mask." << llendl;
+			delete info;
+			continue;
+		}
+
+		static LLStdStringHandle region_string = LLXmlTree::addAttributeString("body_region");
+		if (!grand_child->getFastAttributeString(region_string, info->mRegion))
+		{
+			llwarns << "No region supplied for morph mask." << llendl;
+			delete info;
+			continue;
+		}
+
+		static LLStdStringHandle layer_string = LLXmlTree::addAttributeString("layer");
+		if (!grand_child->getFastAttributeString(layer_string, info->mLayer))
+		{
+			llwarns << "No layer supplied for morph mask." << llendl;
+			delete info;
+			continue;
+		}
+
+		// optional parameter. don't throw a warning if not present.
+		static LLStdStringHandle invert_string = LLXmlTree::addAttributeString("invert");
+		grand_child->getFastAttributeBOOL(invert_string, info->mInvert);
+
+		mMorphMaskInfoList.push_back(info);
+	}
+
+	return TRUE;
+}
+
+
 
diff --git a/indra/llappearance/llavatarappearance.h b/indra/llappearance/llavatarappearance.h
index b2ab6b069fa..38a54d904d7 100644
--- a/indra/llappearance/llavatarappearance.h
+++ b/indra/llappearance/llavatarappearance.h
@@ -30,11 +30,17 @@
 #include "llcharacter.h"
 //#include "llframetimer.h"
 #include "llavatarappearancedefines.h"
-#include "lljoint.h"
+#include "llavatarjoint.h"
+#include "lldriverparam.h"
+#include "lltexlayer.h"
+#include "llviewervisualparam.h"
+#include "llxmltree.h"
 
 class LLTexLayerSet;
 class LLTexGlobalColor;
 class LLWearableData;
+class LLAvatarBoneInfo;
+class LLAvatarSkeletonInfo;
 
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 // LLAvatarAppearance
@@ -45,6 +51,9 @@ class LLAvatarAppearance : public LLCharacter
 {
 	LOG_CLASS(LLAvatarAppearance);
 
+protected:
+	struct LLAvatarXmlInfo;
+
 /********************************************************************************
  **                                                                            **
  **                    INITIALIZATION
@@ -57,6 +66,12 @@ class LLAvatarAppearance : public LLCharacter
 	LLAvatarAppearance(LLWearableData* wearable_data);
 	virtual ~LLAvatarAppearance();
 
+	static void initClass(); // initializes static members
+	virtual BOOL		loadSkeletonNode();
+	virtual BOOL		loadMeshNodes();
+	virtual BOOL		loadLayersets();
+
+
 /**                    Initialization
  **                                                                            **
  *******************************************************************************/
@@ -69,16 +84,94 @@ class LLAvatarAppearance : public LLCharacter
 	virtual bool 	isSelf() const { return false; } // True if this avatar is for this viewer's agent
 	virtual BOOL	isValid() const;
 	virtual BOOL	isUsingBakedTextures() const = 0;
+
+	bool isBuilt() const { return mIsBuilt; }
+
 	
 /**                    State
  **                                                                            **
  *******************************************************************************/
 
+/********************************************************************************
+ **                                                                            **
+ **                    SKELETON
+ **/
+
+public:
+	F32					getPelvisToFoot() const { return mPelvisToFoot; }
+
+	LLVector3			mHeadOffset; // current head position
+	LLAvatarJoint		*mRoot;
+
+	typedef std::map<std::string, LLJoint*> joint_map_t;
+	joint_map_t			mJointMap;
+
+protected:
+	static BOOL			parseSkeletonFile(const std::string& filename);
+	virtual void		buildCharacter();
+	virtual BOOL		loadAvatar();
+	virtual void		bodySizeChanged() = 0;
+	void 				computeBodySize();
+
+	BOOL				setupBone(const LLAvatarBoneInfo* info, LLJoint* parent, S32 &current_volume_num, S32 &current_joint_num);
+	BOOL				buildSkeleton(const LLAvatarSkeletonInfo *info);
+protected:
+	BOOL				mIsBuilt; // state of deferred character building
+	S32					mNumJoints;
+	LLJoint*			mSkeleton;
+	
+	//--------------------------------------------------------------------
+	// Pelvis height adjustment members.
+	//--------------------------------------------------------------------
+public:
+	LLVector3			mBodySize;
+protected:
+	F32					mPelvisToFoot;
+
+	//--------------------------------------------------------------------
+	// Cached pointers to well known joints
+	//--------------------------------------------------------------------
+public:
+	LLJoint* 		mPelvisp;
+	LLJoint* 		mTorsop;
+	LLJoint* 		mChestp;
+	LLJoint* 		mNeckp;
+	LLJoint* 		mHeadp;
+	LLJoint* 		mSkullp;
+	LLJoint* 		mEyeLeftp;
+	LLJoint* 		mEyeRightp;
+	LLJoint* 		mHipLeftp;
+	LLJoint* 		mHipRightp;
+	LLJoint* 		mKneeLeftp;
+	LLJoint* 		mKneeRightp;
+	LLJoint* 		mAnkleLeftp;
+	LLJoint* 		mAnkleRightp;
+	LLJoint* 		mFootLeftp;
+	LLJoint* 		mFootRightp;
+	LLJoint* 		mWristLeftp;
+	LLJoint* 		mWristRightp;
+
+	//--------------------------------------------------------------------
+	// XML parse tree
+	//--------------------------------------------------------------------
+protected:
+	static LLXmlTree 	sXMLTree; // avatar config file
+	static LLXmlTree 	sSkeletonXMLTree; // avatar skeleton file
+
+	static LLAvatarSkeletonInfo* 					sAvatarSkeletonInfo;
+	static LLAvatarXmlInfo* 						sAvatarXmlInfo;
+
+
+/**                    Skeleton
+ **                                                                            **
+ *******************************************************************************/
+
 
 /********************************************************************************
  **                                                                            **
  **                    RENDERING
  **/
+public:
 	BOOL		mIsDummy; // for special views
 
 	//--------------------------------------------------------------------
@@ -109,6 +202,11 @@ class LLAvatarAppearance : public LLCharacter
 protected:
 	virtual void	dirtyMesh(S32 priority) = 0; // Dirty the avatar mesh, with priority
 
+protected:
+	typedef std::multimap<std::string, LLPolyMesh*> polymesh_map_t;
+	polymesh_map_t 									mMeshes;
+	std::vector<LLAvatarJoint *> 					mMeshLOD;
+
 /**                    Meshes
  **                                                                            **
  *******************************************************************************/
@@ -182,12 +280,115 @@ class LLAvatarAppearance : public LLCharacter
 	typedef std::vector<BakedTextureData> 	bakedtexturedata_vec_t;
 	bakedtexturedata_vec_t 					mBakedTextureDatas;
 
+/********************************************************************************
+ **                                                                            **
+ **                    PHYSICS
+ **/
+
+	//--------------------------------------------------------------------
+	// Collision volumes
+	//--------------------------------------------------------------------
+public:
+  	S32			mNumCollisionVolumes;
+	LLAvatarJointCollisionVolume* mCollisionVolumes;
+protected:
+	BOOL		allocateCollisionVolumes(U32 num);
+
+/**                    Physics
+ **                                                                            **
+ *******************************************************************************/
 
 /********************************************************************************
  **                                                                            **
  **                    SUPPORT CLASSES
  **/
 
+	struct LLAvatarXmlInfo
+	{
+		LLAvatarXmlInfo();
+		~LLAvatarXmlInfo();
+
+		BOOL 	parseXmlSkeletonNode(LLXmlTreeNode* root);
+		BOOL 	parseXmlMeshNodes(LLXmlTreeNode* root);
+		BOOL 	parseXmlColorNodes(LLXmlTreeNode* root);
+		BOOL 	parseXmlLayerNodes(LLXmlTreeNode* root);
+		BOOL 	parseXmlDriverNodes(LLXmlTreeNode* root);
+		BOOL	parseXmlMorphNodes(LLXmlTreeNode* root);
+
+		struct LLAvatarMeshInfo
+		{
+			typedef std::pair<LLViewerVisualParamInfo*,BOOL> morph_info_pair_t; // LLPolyMorphTargetInfo stored here
+			typedef std::vector<morph_info_pair_t> morph_info_list_t;
+
+			LLAvatarMeshInfo() : mLOD(0), mMinPixelArea(.1f) {}
+			~LLAvatarMeshInfo()
+			{
+				morph_info_list_t::iterator iter;
+				for (iter = mPolyMorphTargetInfoList.begin(); iter != mPolyMorphTargetInfoList.end(); iter++)
+				{
+					delete iter->first;
+				}
+				mPolyMorphTargetInfoList.clear();
+			}
+
+			std::string mType;
+			S32			mLOD;
+			std::string	mMeshFileName;
+			std::string	mReferenceMeshName;
+			F32			mMinPixelArea;
+			morph_info_list_t mPolyMorphTargetInfoList;
+		};
+		typedef std::vector<LLAvatarMeshInfo*> mesh_info_list_t;
+		mesh_info_list_t mMeshInfoList;
+
+		typedef std::vector<LLViewerVisualParamInfo*> skeletal_distortion_info_list_t; // LLPolySkeletalDistortionInfo stored here
+		skeletal_distortion_info_list_t mSkeletalDistortionInfoList;
+
+		struct LLAvatarAttachmentInfo
+		{
+			LLAvatarAttachmentInfo()
+				: mGroup(-1), mAttachmentID(-1), mPieMenuSlice(-1), mVisibleFirstPerson(FALSE),
+				  mIsHUDAttachment(FALSE), mHasPosition(FALSE), mHasRotation(FALSE) {}
+			std::string mName;
+			std::string mJointName;
+			LLVector3 mPosition;
+			LLVector3 mRotationEuler;
+			S32 mGroup;
+			S32 mAttachmentID;
+			S32 mPieMenuSlice;
+			BOOL mVisibleFirstPerson;
+			BOOL mIsHUDAttachment;
+			BOOL mHasPosition;
+			BOOL mHasRotation;
+		};
+		typedef std::vector<LLAvatarAttachmentInfo*> attachment_info_list_t;
+		attachment_info_list_t mAttachmentInfoList;
+
+		LLTexGlobalColorInfo *mTexSkinColorInfo;
+		LLTexGlobalColorInfo *mTexHairColorInfo;
+		LLTexGlobalColorInfo *mTexEyeColorInfo;
+
+		typedef std::vector<LLTexLayerSetInfo*> layer_info_list_t;
+		layer_info_list_t mLayerInfoList;
+
+		typedef std::vector<LLDriverParamInfo*> driver_info_list_t;
+		driver_info_list_t mDriverInfoList;
+
+		struct LLAvatarMorphInfo
+		{
+			LLAvatarMorphInfo()
+				: mInvert(FALSE) {}
+			std::string mName;
+			std::string mRegion;
+			std::string mLayer;
+			BOOL mInvert;
+		};
+
+		typedef std::vector<LLAvatarMorphInfo*> morph_info_list_t;
+		morph_info_list_t	mMorphMaskInfoList;
+	};
+
+
 	class LLMaskedMorph
 	{
 	public:
@@ -197,7 +398,9 @@ class LLAvatarAppearance : public LLCharacter
 		BOOL				mInvert;
 		std::string			mLayer;
 	};
-
+/**                    Support Classes
+ **                                                                            **
+ *******************************************************************************/
 };
 
 #endif // LL_AVATAR_APPEARANCE_H
diff --git a/indra/llappearance/llavatarjoint.cpp b/indra/llappearance/llavatarjoint.cpp
new file mode 100644
index 00000000000..809a261633f
--- /dev/null
+++ b/indra/llappearance/llavatarjoint.cpp
@@ -0,0 +1,261 @@
+/** 
+ * @file llavatarjoint.cpp
+ * @brief Implementation of LLAvatarJoint class
+ *
+ * $LicenseInfo:firstyear=2001&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+//-----------------------------------------------------------------------------
+// Header Files
+//-----------------------------------------------------------------------------
+#include "llavatarjoint.h"
+
+#include "llgl.h"
+#include "llrender.h"
+#include "llmath.h"
+#include "llglheaders.h"
+#include "llrendersphere.h"
+#include "llavatarappearance.h"
+//#include "pipeline.h"
+
+#define DEFAULT_LOD 0.0f
+
+const S32 MIN_PIXEL_AREA_3PASS_HAIR = 64*64;
+
+//-----------------------------------------------------------------------------
+// Static Data
+//-----------------------------------------------------------------------------
+BOOL					LLAvatarJoint::sDisableLOD = FALSE;
+
+//-----------------------------------------------------------------------------
+// LLAvatarJoint()
+// Class Constructor
+//-----------------------------------------------------------------------------
+LLAvatarJoint::LLAvatarJoint()
+	:       LLJoint()
+{
+	init();
+}
+
+
+//-----------------------------------------------------------------------------
+// LLAvatarJoint()
+// Class Constructor
+//-----------------------------------------------------------------------------
+LLAvatarJoint::LLAvatarJoint(const std::string &name, LLJoint *parent)
+	:	LLJoint(name, parent)
+{
+	init();
+}
+
+
+void LLAvatarJoint::init()
+{
+	mValid = FALSE;
+	mComponents = SC_JOINT | SC_BONE | SC_AXES;
+	mMinPixelArea = DEFAULT_LOD;
+	mPickName = PN_DEFAULT;
+	mVisible = TRUE;
+	mMeshID = 0;
+}
+
+
+//-----------------------------------------------------------------------------
+// ~LLAvatarJoint()
+// Class Destructor
+//-----------------------------------------------------------------------------
+LLAvatarJoint::~LLAvatarJoint()
+{
+}
+
+
+//--------------------------------------------------------------------
+// setValid()
+//--------------------------------------------------------------------
+void LLAvatarJoint::setValid( BOOL valid, BOOL recursive )
+{
+	//----------------------------------------------------------------
+	// set visibility for this joint
+	//----------------------------------------------------------------
+	mValid = valid;
+	
+	//----------------------------------------------------------------
+	// set visibility for children
+	//----------------------------------------------------------------
+	if (recursive)
+	{
+		for (child_list_t::iterator iter = mChildren.begin();
+			 iter != mChildren.end(); ++iter)
+		{
+			LLAvatarJoint* joint = (LLAvatarJoint*)(*iter);
+			joint->setValid(valid, TRUE);
+		}
+	}
+
+}
+
+//--------------------------------------------------------------------
+// isTransparent()
+//--------------------------------------------------------------------
+BOOL LLAvatarJoint::isTransparent()
+{
+	return FALSE;
+}
+
+//--------------------------------------------------------------------
+// setSkeletonComponents()
+//--------------------------------------------------------------------
+void LLAvatarJoint::setSkeletonComponents( U32 comp, BOOL recursive )
+{
+	mComponents = comp;
+	if (recursive)
+	{
+		for (child_list_t::iterator iter = mChildren.begin();
+			 iter != mChildren.end(); ++iter)
+		{
+			LLAvatarJoint* joint = (LLAvatarJoint*)(*iter);
+			joint->setSkeletonComponents(comp, recursive);
+		}
+	}
+}
+
+void LLAvatarJoint::setVisible(BOOL visible, BOOL recursive)
+{
+	mVisible = visible;
+
+	if (recursive)
+	{
+		for (child_list_t::iterator iter = mChildren.begin();
+			 iter != mChildren.end(); ++iter)
+		{
+			LLAvatarJoint* joint = (LLAvatarJoint*)(*iter);
+			joint->setVisible(visible, recursive);
+		}
+	}
+}
+
+
+void LLAvatarJoint::setMeshesToChildren()
+{
+	removeAllChildren();
+	for (std::vector<LLAvatarJointMesh*>::iterator iter = mMeshParts.begin();
+		iter != mMeshParts.end(); iter++)
+	{
+		addChild((LLAvatarJoint*) *iter);
+	}
+}
+//-----------------------------------------------------------------------------
+// LLAvatarJointCollisionVolume()
+//-----------------------------------------------------------------------------
+
+LLAvatarJointCollisionVolume::LLAvatarJointCollisionVolume()
+{
+	mUpdateXform = FALSE;
+}
+
+LLAvatarJointCollisionVolume::LLAvatarJointCollisionVolume(const std::string &name, LLJoint *parent) : LLAvatarJoint(name, parent)
+{
+	
+}
+
+LLVector3 LLAvatarJointCollisionVolume::getVolumePos(LLVector3 &offset)
+{
+	mUpdateXform = TRUE;
+	
+	LLVector3 result = offset;
+	result.scaleVec(getScale());
+	result.rotVec(getWorldRotation());
+	result += getWorldPosition();
+
+	return result;
+}
+
+void LLAvatarJointCollisionVolume::renderCollision()
+{
+	updateWorldMatrix();
+	
+	gGL.pushMatrix();
+	gGL.multMatrix( &mXform.getWorldMatrix().mMatrix[0][0] );
+
+	gGL.diffuseColor3f( 0.f, 0.f, 1.f );
+	
+	gGL.begin(LLRender::LINES);
+	
+	LLVector3 v[] = 
+	{
+		LLVector3(1,0,0),
+		LLVector3(-1,0,0),
+		LLVector3(0,1,0),
+		LLVector3(0,-1,0),
+
+		LLVector3(0,0,-1),
+		LLVector3(0,0,1),
+	};
+
+	//sides
+	gGL.vertex3fv(v[0].mV); 
+	gGL.vertex3fv(v[2].mV);
+
+	gGL.vertex3fv(v[0].mV); 
+	gGL.vertex3fv(v[3].mV);
+
+	gGL.vertex3fv(v[1].mV); 
+	gGL.vertex3fv(v[2].mV);
+
+	gGL.vertex3fv(v[1].mV); 
+	gGL.vertex3fv(v[3].mV);
+
+
+	//top
+	gGL.vertex3fv(v[0].mV); 
+	gGL.vertex3fv(v[4].mV);
+
+	gGL.vertex3fv(v[1].mV); 
+	gGL.vertex3fv(v[4].mV);
+
+	gGL.vertex3fv(v[2].mV); 
+	gGL.vertex3fv(v[4].mV);
+
+	gGL.vertex3fv(v[3].mV); 
+	gGL.vertex3fv(v[4].mV);
+
+
+	//bottom
+	gGL.vertex3fv(v[0].mV); 
+	gGL.vertex3fv(v[5].mV);
+
+	gGL.vertex3fv(v[1].mV); 
+	gGL.vertex3fv(v[5].mV);
+
+	gGL.vertex3fv(v[2].mV); 
+	gGL.vertex3fv(v[5].mV);
+
+	gGL.vertex3fv(v[3].mV); 
+	gGL.vertex3fv(v[5].mV);
+
+	gGL.end();
+
+	gGL.popMatrix();
+}
+
+
+// End
diff --git a/indra/llappearance/llavatarjoint.h b/indra/llappearance/llavatarjoint.h
new file mode 100644
index 00000000000..cbfc1b73eac
--- /dev/null
+++ b/indra/llappearance/llavatarjoint.h
@@ -0,0 +1,127 @@
+/** 
+ * @file llavatarjoint.h
+ * @brief Implementation of LLAvatarJoint class
+ *
+ * $LicenseInfo:firstyear=2001&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LLAVATARJOINT_H
+#define LL_LLAVATARJOINT_H
+
+//-----------------------------------------------------------------------------
+// Header Files
+//-----------------------------------------------------------------------------
+#include "lljoint.h"
+#include "lljointpickname.h"
+
+class LLFace;
+class LLAvatarJointMesh;
+
+//-----------------------------------------------------------------------------
+// class LLViewerJoint
+//-----------------------------------------------------------------------------
+class LLAvatarJoint :
+	public LLJoint
+{
+public:
+	LLAvatarJoint();
+	LLAvatarJoint(const std::string &name, LLJoint *parent = NULL);
+	virtual ~LLAvatarJoint();
+
+	// Gets the validity of this joint
+	BOOL getValid() { return mValid; }
+
+	// Sets the validity of this joint
+	virtual void setValid( BOOL valid, BOOL recursive=FALSE );
+
+	// Returns true if this object is transparent.
+	// This is used to determine in which order to draw objects.
+	virtual BOOL isTransparent();
+
+	// Returns true if this object should inherit scale modifiers from its immediate parent
+	virtual BOOL inheritScale() { return FALSE; }
+
+
+	enum Components
+	{
+		SC_BONE		= 1,
+		SC_JOINT	= 2,
+		SC_AXES		= 4
+	};
+
+	// Selects which skeleton components to draw
+	void setSkeletonComponents( U32 comp, BOOL recursive = TRUE );
+
+	// Returns which skeleton components are enables for drawing
+	U32 getSkeletonComponents() { return mComponents; }
+
+	// Sets the level of detail for this node as a minimum
+	// pixel area threshold.  If the current pixel area for this
+	// object is less than the specified threshold, the node is
+	// not traversed.  In addition, if a value is specified (not
+	// default of 0.0), and the pixel area is larger than the
+	// specified minimum, the node is rendered, but no other siblings
+	// of this node under the same parent will be.
+	F32 getLOD() { return mMinPixelArea; }
+	void setLOD( F32 pixelArea ) { mMinPixelArea = pixelArea; }
+	
+	void setPickName(LLJointPickName name) { mPickName = name; }
+	LLJointPickName getPickName() { return mPickName; }
+
+	void setVisible( BOOL visible, BOOL recursive );
+
+	// Takes meshes in mMeshParts and sets each one as a child joint
+	void setMeshesToChildren();
+
+public:
+	static BOOL	sDisableLOD;
+	std::vector<LLAvatarJointMesh*> mMeshParts; //LLViewerJointMesh*
+	void setMeshID( S32 id ) {mMeshID = id;}
+
+protected:
+	void init();
+
+	BOOL		mValid;
+	U32			mComponents;
+	F32			mMinPixelArea;
+	LLJointPickName	mPickName;
+	BOOL		mVisible;
+	S32			mMeshID;
+};
+
+class LLAvatarJointCollisionVolume : public LLAvatarJoint
+{
+public:
+	LLAvatarJointCollisionVolume();
+	LLAvatarJointCollisionVolume(const std::string &name, LLJoint *parent = NULL);
+	virtual ~LLAvatarJointCollisionVolume() {};
+
+	virtual BOOL inheritScale() { return TRUE; }
+
+	void renderCollision();
+
+	LLVector3 getVolumePos(LLVector3 &offset);
+};
+
+#endif // LL_LLAVATARJOINT_H
+
+
diff --git a/indra/llappearance/llavatarjointmesh.cpp b/indra/llappearance/llavatarjointmesh.cpp
new file mode 100755
index 00000000000..92c213126a6
--- /dev/null
+++ b/indra/llappearance/llavatarjointmesh.cpp
@@ -0,0 +1,359 @@
+/** 
+ * @file LLAvatarJointMesh.cpp
+ * @brief Implementation of LLAvatarJointMesh class
+ *
+ * $LicenseInfo:firstyear=2001&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+//-----------------------------------------------------------------------------
+// Header Files
+//-----------------------------------------------------------------------------
+#include "linden_common.h"
+#include "imageids.h"
+#include "llfasttimer.h"
+#include "llrender.h"
+
+#include "llavatarjointmesh.h"
+#include "llavatarappearance.h"
+//#include "llapr.h"
+//#include "llbox.h"
+//#include "lldrawable.h"
+//#include "lldrawpoolavatar.h"
+//#include "lldrawpoolbump.h"
+//#include "lldynamictexture.h"
+//#include "llface.h"
+//#include "llgldbg.h"
+//#include "llglheaders.h"
+#include "lltexlayer.h"
+//#include "llviewercamera.h"
+//#include "llviewercontrol.h"
+//#include "llviewertexturelist.h"
+//#include "llsky.h"
+//#include "pipeline.h"
+//#include "llviewershadermgr.h"
+#include "llmath.h"
+#include "v4math.h"
+#include "m3math.h"
+#include "m4math.h"
+#include "llmatrix4a.h"
+
+
+//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
+// LLAvatarJointMesh::LLSkinJoint
+//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
+
+//-----------------------------------------------------------------------------
+// LLSkinJoint
+//-----------------------------------------------------------------------------
+LLSkinJoint::LLSkinJoint()
+{
+	mJoint       = NULL;
+}
+
+//-----------------------------------------------------------------------------
+// ~LLSkinJoint
+//-----------------------------------------------------------------------------
+LLSkinJoint::~LLSkinJoint()
+{
+	mJoint = NULL;
+}
+
+
+//-----------------------------------------------------------------------------
+// LLSkinJoint::setupSkinJoint()
+//-----------------------------------------------------------------------------
+BOOL LLSkinJoint::setupSkinJoint( LLAvatarJoint *joint)
+{
+	// find the named joint
+	mJoint = joint;
+	if ( !mJoint )
+	{
+		llinfos << "Can't find joint" << llendl;
+	}
+
+	// compute the inverse root skin matrix
+	mRootToJointSkinOffset.clearVec();
+
+	LLVector3 rootSkinOffset;
+	while (joint)
+	{
+		rootSkinOffset += joint->getSkinOffset();
+		joint = (LLAvatarJoint*)joint->getParent();
+	}
+
+	mRootToJointSkinOffset = -rootSkinOffset;
+	mRootToParentJointSkinOffset = mRootToJointSkinOffset;
+	mRootToParentJointSkinOffset += mJoint->getSkinOffset();
+
+	return TRUE;
+}
+
+
+//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
+// LLAvatarJointMesh
+//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
+
+BOOL LLAvatarJointMesh::sPipelineRender = FALSE;
+EAvatarRenderPass LLAvatarJointMesh::sRenderPass = AVATAR_RENDER_PASS_SINGLE;
+U32 LLAvatarJointMesh::sClothingMaskImageName = 0;
+LLColor4 LLAvatarJointMesh::sClothingInnerColor;
+
+//-----------------------------------------------------------------------------
+// LLAvatarJointMesh()
+//-----------------------------------------------------------------------------
+LLAvatarJointMesh::LLAvatarJointMesh()
+	:
+	mTexture( NULL ),
+	mLayerSet( NULL ),
+	mTestImageName( 0 ),
+	mFaceIndexCount(0),
+	mIsTransparent(FALSE)
+{
+
+	mColor[0] = 1.0f;
+	mColor[1] = 1.0f;
+	mColor[2] = 1.0f;
+	mColor[3] = 1.0f;
+	mShiny = 0.0f;
+	mCullBackFaces = TRUE;
+
+	mMesh = NULL;
+
+	mNumSkinJoints = 0;
+	mSkinJoints = NULL;
+
+	mFace = NULL;
+
+	mMeshID = 0;
+	mUpdateXform = FALSE;
+
+	mValid = FALSE;
+}
+
+
+//-----------------------------------------------------------------------------
+// ~LLAvatarJointMesh()
+// Class Destructor
+//-----------------------------------------------------------------------------
+LLAvatarJointMesh::~LLAvatarJointMesh()
+{
+	mMesh = NULL;
+	mTexture = NULL;
+	freeSkinData();
+}
+
+
+//-----------------------------------------------------------------------------
+// LLAvatarJointMesh::allocateSkinData()
+//-----------------------------------------------------------------------------
+BOOL LLAvatarJointMesh::allocateSkinData( U32 numSkinJoints )
+{
+	mSkinJoints = new LLSkinJoint[ numSkinJoints ];
+	mNumSkinJoints = numSkinJoints;
+	return TRUE;
+}
+
+//-----------------------------------------------------------------------------
+// LLAvatarJointMesh::freeSkinData()
+//-----------------------------------------------------------------------------
+void LLAvatarJointMesh::freeSkinData()
+{
+	mNumSkinJoints = 0;
+	delete [] mSkinJoints;
+	mSkinJoints = NULL;
+}
+
+//--------------------------------------------------------------------
+// LLAvatarJointMesh::getColor()
+//--------------------------------------------------------------------
+void LLAvatarJointMesh::getColor( F32 *red, F32 *green, F32 *blue, F32 *alpha )
+{
+	*red   = mColor[0];
+	*green = mColor[1];
+	*blue  = mColor[2];
+	*alpha = mColor[3];
+}
+
+//--------------------------------------------------------------------
+// LLAvatarJointMesh::setColor()
+//--------------------------------------------------------------------
+void LLAvatarJointMesh::setColor( F32 red, F32 green, F32 blue, F32 alpha )
+{
+	mColor[0] = red;
+	mColor[1] = green;
+	mColor[2] = blue;
+	mColor[3] = alpha;
+}
+
+
+//--------------------------------------------------------------------
+// LLAvatarJointMesh::getTexture()
+//--------------------------------------------------------------------
+//LLViewerTexture *LLAvatarJointMesh::getTexture()
+//{
+//	return mTexture;
+//}
+
+//--------------------------------------------------------------------
+// LLAvatarJointMesh::setTexture()
+//--------------------------------------------------------------------
+void LLAvatarJointMesh::setTexture( LLGLTexture *texture )
+{
+	mTexture = texture;
+
+	// texture and dynamic_texture are mutually exclusive
+	if( texture )
+	{
+		mLayerSet = NULL;
+		//texture->bindTexture(0);
+		//texture->setClamp(TRUE, TRUE);
+	}
+}
+
+//--------------------------------------------------------------------
+// LLAvatarJointMesh::setLayerSet()
+// Sets the shape texture (takes precedence over normal texture)
+//--------------------------------------------------------------------
+void LLAvatarJointMesh::setLayerSet( LLTexLayerSet* layer_set )
+{
+	mLayerSet = layer_set;
+	
+	// texture and dynamic_texture are mutually exclusive
+	if( layer_set )
+	{
+		mTexture = NULL;
+	}
+}
+
+
+
+//--------------------------------------------------------------------
+// LLAvatarJointMesh::getMesh()
+//--------------------------------------------------------------------
+LLPolyMesh *LLAvatarJointMesh::getMesh()
+{
+	return mMesh;
+}
+
+//-----------------------------------------------------------------------------
+// LLAvatarJointMesh::setMesh()
+//-----------------------------------------------------------------------------
+void LLAvatarJointMesh::setMesh( LLPolyMesh *mesh )
+{
+	// set the mesh pointer
+	mMesh = mesh;
+
+	// release any existing skin joints
+	freeSkinData();
+
+	if ( mMesh == NULL )
+	{
+		return;
+	}
+
+	// acquire the transform from the mesh object
+	setPosition( mMesh->getPosition() );
+	setRotation( mMesh->getRotation() );
+	setScale( mMesh->getScale() );
+
+	// create skin joints if necessary
+	if ( mMesh->hasWeights() && !mMesh->isLOD())
+	{
+		U32 numJointNames = mMesh->getNumJointNames();
+		
+		allocateSkinData( numJointNames );
+		std::string *jointNames = mMesh->getJointNames();
+
+		U32 jn;
+		for (jn = 0; jn < numJointNames; jn++)
+		{
+			//llinfos << "Setting up joint " << jointNames[jn] << llendl;
+			LLAvatarJoint* joint = (LLAvatarJoint*)(getRoot()->findJoint(jointNames[jn]) );
+			mSkinJoints[jn].setupSkinJoint( joint );
+		}
+	}
+
+	// setup joint array
+	if (!mMesh->isLOD())
+	{
+		setupJoint((LLAvatarJoint*)getRoot());
+	}
+
+//	llinfos << "joint render entries: " << mMesh->mJointRenderData.count() << llendl;
+}
+
+//-----------------------------------------------------------------------------
+// setupJoint()
+//-----------------------------------------------------------------------------
+void LLAvatarJointMesh::setupJoint(LLAvatarJoint* current_joint)
+{
+//	llinfos << "Mesh: " << getName() << llendl;
+
+//	S32 joint_count = 0;
+	U32 sj;
+	for (sj=0; sj<mNumSkinJoints; sj++)
+	{
+		LLSkinJoint &js = mSkinJoints[sj];
+
+		if (js.mJoint != current_joint)
+		{
+			continue;
+		}
+
+		// we've found a skinjoint for this joint..
+
+		// is the last joint in the array our parent?
+		if(mMesh->mJointRenderData.count() && mMesh->mJointRenderData[mMesh->mJointRenderData.count() - 1]->mWorldMatrix == &current_joint->getParent()->getWorldMatrix())
+		{
+			// ...then just add ourselves
+			LLAvatarJoint* jointp = js.mJoint;
+			mMesh->mJointRenderData.put(new LLJointRenderData(&jointp->getWorldMatrix(), &js));
+//			llinfos << "joint " << joint_count << js.mJoint->getName() << llendl;
+//			joint_count++;
+		}
+		// otherwise add our parent and ourselves
+		else
+		{
+			mMesh->mJointRenderData.put(new LLJointRenderData(&current_joint->getParent()->getWorldMatrix(), NULL));
+//			llinfos << "joint " << joint_count << current_joint->getParent()->getName() << llendl;
+//			joint_count++;
+			mMesh->mJointRenderData.put(new LLJointRenderData(&current_joint->getWorldMatrix(), &js));
+//			llinfos << "joint " << joint_count << current_joint->getName() << llendl;
+//			joint_count++;
+		}
+	}
+
+	// depth-first traversal
+	for (LLJoint::child_list_t::iterator iter = current_joint->mChildren.begin();
+		 iter != current_joint->mChildren.end(); ++iter)
+	{
+		LLAvatarJoint* child_joint = (LLAvatarJoint*)(*iter);
+		setupJoint(child_joint);
+	}
+}
+
+
+// End
diff --git a/indra/llappearance/llavatarjointmesh.h b/indra/llappearance/llavatarjointmesh.h
new file mode 100755
index 00000000000..dcd202bdafb
--- /dev/null
+++ b/indra/llappearance/llavatarjointmesh.h
@@ -0,0 +1,140 @@
+/** 
+ * @file llavatarjointmesh.h
+ * @brief Implementation of LLAvatarJointMesh class
+ *
+ * $LicenseInfo:firstyear=2001&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LLAVATARJOINTMESH_H
+#define LL_LLAVATARJOINTMESH_H
+
+#include "llavatarjoint.h"
+#include "llgltexture.h"
+#include "llpolymesh.h"
+#include "v4color.h"
+
+class LLDrawable;
+class LLFace;
+class LLCharacter;
+class LLTexLayerSet;
+
+typedef enum e_avatar_render_pass
+{
+	AVATAR_RENDER_PASS_SINGLE,
+	AVATAR_RENDER_PASS_CLOTHING_INNER,
+	AVATAR_RENDER_PASS_CLOTHING_OUTER
+} EAvatarRenderPass;
+
+class LLSkinJoint
+{
+public:
+	LLSkinJoint();
+	~LLSkinJoint();
+	BOOL setupSkinJoint( LLAvatarJoint *joint);
+
+	LLAvatarJoint	*mJoint;
+	LLVector3		mRootToJointSkinOffset;
+	LLVector3		mRootToParentJointSkinOffset;
+};
+
+//-----------------------------------------------------------------------------
+// class LLViewerJointMesh
+//-----------------------------------------------------------------------------
+class LLAvatarJointMesh : public LLAvatarJoint
+{
+	friend class LLAvatarAppearance;
+protected:
+	LLColor4					mColor;			// color value
+// 	LLColor4					mSpecular;		// specular color (always white for now)
+	F32							mShiny;			// shiny value
+	LLPointer<LLGLTexture>		mTexture;		// ptr to a global texture
+	LLTexLayerSet*				mLayerSet;		// ptr to a layer set owned by the avatar
+	U32 						mTestImageName;		// handle to a temporary texture for previewing uploads
+	LLPolyMesh*					mMesh;			// ptr to a global polymesh
+	BOOL						mCullBackFaces;	// true by default
+	LLFace*						mFace;			// ptr to a face w/ AGP copy of mesh
+
+	U32							mFaceIndexCount;
+	BOOL						mIsTransparent;
+
+	U32							mNumSkinJoints;
+	LLSkinJoint*				mSkinJoints;
+	S32							mMeshID;
+
+public:
+	static BOOL					sPipelineRender;
+	//RN: this is here for testing purposes
+	static U32					sClothingMaskImageName;
+	static EAvatarRenderPass	sRenderPass;
+	static LLColor4				sClothingInnerColor;
+
+public:
+	// Constructor
+	LLAvatarJointMesh();
+
+	// Destructor
+	virtual ~LLAvatarJointMesh();
+
+	// Gets the shape color
+	void getColor( F32 *red, F32 *green, F32 *blue, F32 *alpha );
+
+	// Sets the shape color
+	void setColor( F32 red, F32 green, F32 blue, F32 alpha );
+
+	// Sets the shininess
+	void setSpecular( const LLColor4& color, F32 shiny ) { /*mSpecular = color;*/ mShiny = shiny; };
+
+	// Sets the shape texture
+	void setTexture( LLGLTexture *texture );
+
+	void setTestTexture( U32 name ) { mTestImageName = name; }
+
+	// Sets layer set responsible for a dynamic shape texture (takes precedence over normal texture)
+	void setLayerSet( LLTexLayerSet* layer_set );
+
+	// Gets the poly mesh
+	LLPolyMesh *getMesh();
+
+	// Sets the poly mesh
+	void setMesh( LLPolyMesh *mesh );
+
+	// Sets up joint matrix data for rendering
+	void setupJoint(LLAvatarJoint* current_joint);
+
+	// Render time method to upload batches of joint matrices
+	void uploadJointMatrices();
+
+	// Sets ID for picking
+	void setMeshID( S32 id ) {mMeshID = id;}
+
+	// Gets ID for picking
+	S32 getMeshID() { return mMeshID; }	
+
+private:
+	// Allocate skin data
+	BOOL allocateSkinData( U32 numSkinJoints );
+
+	// Free skin data
+	void freeSkinData();
+};
+
+#endif // LL_LLAVATARJOINTMESH_H
diff --git a/indra/newview/llpolymesh.cpp b/indra/llappearance/llpolymesh.cpp
similarity index 81%
rename from indra/newview/llpolymesh.cpp
rename to indra/llappearance/llpolymesh.cpp
index 70f3b5335e2..b1370ab1e37 100644
--- a/indra/newview/llpolymesh.cpp
+++ b/indra/llappearance/llpolymesh.cpp
@@ -27,25 +27,24 @@
 //-----------------------------------------------------------------------------
 // Header Files
 //-----------------------------------------------------------------------------
-#include "llviewerprecompiledheaders.h"
-
+#include "linden_common.h"
+#include "llpolymesh.h"
 #include "llfasttimer.h"
 #include "llmemory.h"
 
-#include "llviewercontrol.h"
+//#include "llviewercontrol.h"
 #include "llxmltree.h"
-#include "llvoavatar.h"
+#include "llavatarappearance.h"
 #include "llwearable.h"
 #include "lldir.h"
 #include "llvolume.h"
 #include "llendianswizzle.h"
 
-#include "llpolymesh.h"
 
 #define HEADER_ASCII "Linden Mesh 1.0"
 #define HEADER_BINARY "Linden Binary Mesh 1.0"
 
-extern LLControlGroup gSavedSettings;                           // read only
+//extern LLControlGroup gSavedSettings;                           // read only
 
 LLPolyMorphData *clone_morph_param_duplicate(const LLPolyMorphData *src_data,
 					     const std::string &name);
@@ -1048,250 +1047,4 @@ F32*    LLPolyMesh::getWritableWeights() const
         return mSharedData->mWeights;
 }
 
-//-----------------------------------------------------------------------------
-// LLPolySkeletalDistortionInfo()
-//-----------------------------------------------------------------------------
-LLPolySkeletalDistortionInfo::LLPolySkeletalDistortionInfo()
-{
-}
-
-BOOL LLPolySkeletalDistortionInfo::parseXml(LLXmlTreeNode* node)
-{
-        llassert( node->hasName( "param" ) && node->getChildByName( "param_skeleton" ) );
-        
-        if (!LLViewerVisualParamInfo::parseXml(node))
-                return FALSE;
-
-        LLXmlTreeNode* skeletalParam = node->getChildByName("param_skeleton");
-
-        if (NULL == skeletalParam)
-        {
-                llwarns << "Failed to getChildByName(\"param_skeleton\")"
-                        << llendl;
-                return FALSE;
-        }
-
-        for( LLXmlTreeNode* bone = skeletalParam->getFirstChild(); bone; bone = skeletalParam->getNextChild() )
-        {
-                if (bone->hasName("bone"))
-                {
-                        std::string name;
-                        LLVector3 scale;
-                        LLVector3 pos;
-                        BOOL haspos = FALSE;
-                        
-                        static LLStdStringHandle name_string = LLXmlTree::addAttributeString("name");
-                        if (!bone->getFastAttributeString(name_string, name))
-                        {
-                                llwarns << "No bone name specified for skeletal param." << llendl;
-                                continue;
-                        }
-
-                        static LLStdStringHandle scale_string = LLXmlTree::addAttributeString("scale");
-                        if (!bone->getFastAttributeVector3(scale_string, scale))
-                        {
-                                llwarns << "No scale specified for bone " << name << "." << llendl;
-                                continue;
-                        }
-
-                        // optional offset deformation (translation)
-                        static LLStdStringHandle offset_string = LLXmlTree::addAttributeString("offset");
-                        if (bone->getFastAttributeVector3(offset_string, pos))
-                        {
-                                haspos = TRUE;
-                        }
-                        mBoneInfoList.push_back(LLPolySkeletalBoneInfo(name, scale, pos, haspos));
-                }
-                else
-                {
-                        llwarns << "Unrecognized element " << bone->getName() << " in skeletal distortion" << llendl;
-                        continue;
-                }
-        }
-        return TRUE;
-}
-
-//-----------------------------------------------------------------------------
-// LLPolySkeletalDistortion()
-//-----------------------------------------------------------------------------
-LLPolySkeletalDistortion::LLPolySkeletalDistortion(LLVOAvatar *avatarp)
-{
-        mAvatar = avatarp;
-        mDefaultVec.splat(0.001f);
-}
-
-//-----------------------------------------------------------------------------
-// ~LLPolySkeletalDistortion()
-//-----------------------------------------------------------------------------
-LLPolySkeletalDistortion::~LLPolySkeletalDistortion()
-{
-}
-
-BOOL LLPolySkeletalDistortion::setInfo(LLPolySkeletalDistortionInfo *info)
-{
-        llassert(mInfo == NULL);
-        if (info->mID < 0)
-                return FALSE;
-        mInfo = info;
-        mID = info->mID;
-        setWeight(getDefaultWeight(), FALSE );
-
-        LLPolySkeletalDistortionInfo::bone_info_list_t::iterator iter;
-        for (iter = getInfo()->mBoneInfoList.begin(); iter != getInfo()->mBoneInfoList.end(); iter++)
-        {
-                LLPolySkeletalBoneInfo *bone_info = &(*iter);
-                LLJoint* joint = mAvatar->getJoint(bone_info->mBoneName);
-                if (!joint)
-                {
-                        llwarns << "Joint " << bone_info->mBoneName << " not found." << llendl;
-                        continue;
-                }
-
-                if (mJointScales.find(joint) != mJointScales.end())
-                {
-                        llwarns << "Scale deformation already supplied for joint " << joint->getName() << "." << llendl;
-                }
-
-                // store it
-                mJointScales[joint] = bone_info->mScaleDeformation;
-
-                // apply to children that need to inherit it
-                for (LLJoint::child_list_t::iterator iter = joint->mChildren.begin();
-                     iter != joint->mChildren.end(); ++iter)
-                {
-                        LLViewerJoint* child_joint = (LLViewerJoint*)(*iter);
-                        if (child_joint->inheritScale())
-                        {
-                                LLVector3 childDeformation = LLVector3(child_joint->getScale());
-                                childDeformation.scaleVec(bone_info->mScaleDeformation);
-                                mJointScales[child_joint] = childDeformation;
-                        }
-                }
-
-                if (bone_info->mHasPositionDeformation)
-                {
-                        if (mJointOffsets.find(joint) != mJointOffsets.end())
-                        {
-                                llwarns << "Offset deformation already supplied for joint " << joint->getName() << "." << llendl;
-                        }
-                        mJointOffsets[joint] = bone_info->mPositionDeformation;
-                }
-        }
-        return TRUE;
-}
-
-/*virtual*/ LLViewerVisualParam* LLPolySkeletalDistortion::cloneParam(LLWearable* wearable) const
-{
-        LLPolySkeletalDistortion *new_param = new LLPolySkeletalDistortion(mAvatar);
-        *new_param = *this;
-        return new_param;
-}
-
-//-----------------------------------------------------------------------------
-// apply()
-//-----------------------------------------------------------------------------
-static LLFastTimer::DeclareTimer FTM_POLYSKELETAL_DISTORTION_APPLY("Skeletal Distortion");
-
-void LLPolySkeletalDistortion::apply( ESex avatar_sex )
-{
-	LLFastTimer t(FTM_POLYSKELETAL_DISTORTION_APPLY);
-
-        F32 effective_weight = ( getSex() & avatar_sex ) ? mCurWeight : getDefaultWeight();
-
-        LLJoint* joint;
-        joint_vec_map_t::iterator iter;
-
-        for (iter = mJointScales.begin();
-             iter != mJointScales.end();
-             iter++)
-        {
-                joint = iter->first;
-                LLVector3 newScale = joint->getScale();
-                LLVector3 scaleDelta = iter->second;
-                newScale = newScale + (effective_weight * scaleDelta) - (mLastWeight * scaleDelta);
-                joint->setScale(newScale);
-        }
-
-        for (iter = mJointOffsets.begin();
-             iter != mJointOffsets.end();
-             iter++)
-        {
-                joint = iter->first;
-                LLVector3 newPosition = joint->getPosition();
-                LLVector3 positionDelta = iter->second;
-                newPosition = newPosition + (effective_weight * positionDelta) - (mLastWeight * positionDelta);
-                joint->setPosition(newPosition);
-        }
-
-        if (mLastWeight != mCurWeight && !mIsAnimating)
-        {
-                mAvatar->setSkeletonSerialNum(mAvatar->getSkeletonSerialNum() + 1);
-        }
-        mLastWeight = mCurWeight;
-}
-
-
-LLPolyMorphData *clone_morph_param_duplicate(const LLPolyMorphData *src_data,
-					     const std::string &name)
-{
-        LLPolyMorphData* cloned_morph_data = new LLPolyMorphData(*src_data);
-        cloned_morph_data->mName = name;
-        for (U32 v=0; v < cloned_morph_data->mNumIndices; v++)
-        {
-                cloned_morph_data->mCoords[v] = src_data->mCoords[v];
-                cloned_morph_data->mNormals[v] = src_data->mNormals[v];
-                cloned_morph_data->mBinormals[v] = src_data->mBinormals[v];
-        }
-        return cloned_morph_data;
-}
-
-LLPolyMorphData *clone_morph_param_direction(const LLPolyMorphData *src_data,
-					     const LLVector3 &direction,
-					     const std::string &name)
-{
-        LLPolyMorphData* cloned_morph_data = new LLPolyMorphData(*src_data);
-        cloned_morph_data->mName = name;
-		LLVector4a dir;
-		dir.load3(direction.mV);
-
-        for (U32 v=0; v < cloned_morph_data->mNumIndices; v++)
-        {
-                cloned_morph_data->mCoords[v] = dir;
-                cloned_morph_data->mNormals[v].clear();
-                cloned_morph_data->mBinormals[v].clear();
-        }
-        return cloned_morph_data;
-}
-
-LLPolyMorphData *clone_morph_param_cleavage(const LLPolyMorphData *src_data,
-                                            F32 scale,
-                                            const std::string &name)
-{
-        LLPolyMorphData* cloned_morph_data = new LLPolyMorphData(*src_data);
-        cloned_morph_data->mName = name;
-
-		LLVector4a sc;
-		sc.splat(scale);
-
-		LLVector4a nsc;
-		nsc.set(scale, -scale, scale, scale);
-
-        for (U32 v=0; v < cloned_morph_data->mNumIndices; v++)
-        {
-            if (cloned_morph_data->mCoords[v][1] < 0)
-            {
-                cloned_morph_data->mCoords[v].setMul(src_data->mCoords[v],nsc);
-				cloned_morph_data->mNormals[v].setMul(src_data->mNormals[v],nsc);
-				cloned_morph_data->mBinormals[v].setMul(src_data->mBinormals[v],nsc);
-			}
-			else
-			{
-				cloned_morph_data->mCoords[v].setMul(src_data->mCoords[v],sc);
-				cloned_morph_data->mNormals[v].setMul(src_data->mNormals[v], sc);
-				cloned_morph_data->mBinormals[v].setMul(src_data->mBinormals[v],sc);
-			}
-        }
-        return cloned_morph_data;
-}
-
 // End
diff --git a/indra/newview/llpolymesh.h b/indra/llappearance/llpolymesh.h
similarity index 76%
rename from indra/newview/llpolymesh.h
rename to indra/llappearance/llpolymesh.h
index ffb11a3f7ea..ef1dfb1adb2 100644
--- a/indra/newview/llpolymesh.h
+++ b/indra/llappearance/llpolymesh.h
@@ -24,8 +24,8 @@
  * $/LicenseInfo$
  */
 
-#ifndef LL_LLPOLYMESH_H
-#define LL_LLPOLYMESH_H
+#ifndef LL_LLPOLYMESHINTERFACE_H
+#define LL_LLPOLYMESHINTERFACE_H
 
 #include <string>
 #include <map>
@@ -39,7 +39,7 @@
 //#include "lldarray.h"
 
 class LLSkinJoint;
-class LLVOAvatar;
+class LLAvatarAppearance;
 class LLWearable;
 
 //#define USE_STRIPS	// Use tri-strips for rendering.
@@ -319,8 +319,8 @@ class LLPolyMesh
 
 	BOOL	isLOD() { return mSharedData && mSharedData->isLOD(); }
 
-	void setAvatar(LLVOAvatar* avatarp) { mAvatarp = avatarp; }
-	LLVOAvatar* getAvatar() { return mAvatarp; }
+	void setAvatar(LLAvatarAppearance* avatarp) { mAvatarp = avatarp; }
+	LLAvatarAppearance* getAvatar() { return mAvatarp; }
 
 	LLDynamicArray<LLJointRenderData*>	mJointRenderData;
 
@@ -362,77 +362,8 @@ class LLPolyMesh
 	static LLPolyMeshSharedDataTable sGlobalSharedMeshList;
 
 	// Backlink only; don't make this an LLPointer.
-	LLVOAvatar* mAvatarp;
+	LLAvatarAppearance* mAvatarp;
 };
 
-//-----------------------------------------------------------------------------
-// LLPolySkeletalDeformationInfo
-// Shared information for LLPolySkeletalDeformations
-//-----------------------------------------------------------------------------
-struct LLPolySkeletalBoneInfo
-{
-	LLPolySkeletalBoneInfo(std::string &name, LLVector3 &scale, LLVector3 &pos, BOOL haspos)
-		: mBoneName(name),
-		  mScaleDeformation(scale),
-		  mPositionDeformation(pos),
-		  mHasPositionDeformation(haspos) {}
-	std::string mBoneName;
-	LLVector3 mScaleDeformation;
-	LLVector3 mPositionDeformation;
-	BOOL mHasPositionDeformation;
-};
-
-class LLPolySkeletalDistortionInfo : public LLViewerVisualParamInfo
-{
-	friend class LLPolySkeletalDistortion;
-public:
-	LLPolySkeletalDistortionInfo();
-	/*virtual*/ ~LLPolySkeletalDistortionInfo() {};
-	
-	/*virtual*/ BOOL parseXml(LLXmlTreeNode* node);
-
-protected:
-	typedef std::vector<LLPolySkeletalBoneInfo> bone_info_list_t;
-	bone_info_list_t mBoneInfoList;
-};
-
-//-----------------------------------------------------------------------------
-// LLPolySkeletalDeformation
-// A set of joint scale data for deforming the avatar mesh
-//-----------------------------------------------------------------------------
-class LLPolySkeletalDistortion : public LLViewerVisualParam
-{
-public:
-	LLPolySkeletalDistortion(LLVOAvatar *avatarp);
-	~LLPolySkeletalDistortion();
-
-	// Special: These functions are overridden by child classes
-	LLPolySkeletalDistortionInfo*	getInfo() const { return (LLPolySkeletalDistortionInfo*)mInfo; }
-	//   This sets mInfo and calls initialization functions
-	BOOL							setInfo(LLPolySkeletalDistortionInfo *info);
-
-	/*virtual*/ LLViewerVisualParam* cloneParam(LLWearable* wearable) const;
-
-	// LLVisualParam Virtual functions
-	///*virtual*/ BOOL				parseData(LLXmlTreeNode* node);
-	/*virtual*/ void				apply( ESex sex );
-	
-	// LLViewerVisualParam Virtual functions
-	/*virtual*/ F32					getTotalDistortion() { return 0.1f; }
-	/*virtual*/ const LLVector4a&	getAvgDistortion()	{ return mDefaultVec; }
-	/*virtual*/ F32					getMaxDistortion() { return 0.1f; }
-	/*virtual*/ LLVector4a			getVertexDistortion(S32 index, LLPolyMesh *poly_mesh){return LLVector4a(0.001f, 0.001f, 0.001f);}
-	/*virtual*/ const LLVector4a*	getFirstDistortion(U32 *index, LLPolyMesh **poly_mesh){index = 0; poly_mesh = NULL; return &mDefaultVec;};
-	/*virtual*/ const LLVector4a*	getNextDistortion(U32 *index, LLPolyMesh **poly_mesh){index = 0; poly_mesh = NULL; return NULL;};
-
-protected:
-	typedef std::map<LLJoint*, LLVector3> joint_vec_map_t;
-	joint_vec_map_t mJointScales;
-	joint_vec_map_t mJointOffsets;
-	LLVector4a	mDefaultVec;
-	// Backlink only; don't make this an LLPointer.
-	LLVOAvatar *mAvatar;
-};
-
-#endif // LL_LLPOLYMESH_H
+#endif // LL_LLPOLYMESHINTERFACE_H
 
diff --git a/indra/llappearance/llpolymorph.cpp b/indra/llappearance/llpolymorph.cpp
new file mode 100644
index 00000000000..aa680894ff1
--- /dev/null
+++ b/indra/llappearance/llpolymorph.cpp
@@ -0,0 +1,748 @@
+/** 
+ * @file llpolymorph.cpp
+ * @brief Implementation of LLPolyMesh class
+ *
+ * $LicenseInfo:firstyear=2001&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+//-----------------------------------------------------------------------------
+// Header Files
+//-----------------------------------------------------------------------------
+
+#include "llpolymorph.h"
+#include "llavatarappearance.h"
+#include "llavatarjoint.h"
+#include "llwearable.h"
+#include "llxmltree.h"
+#include "llendianswizzle.h"
+#include "llpolymesh.h"
+
+//#include "../tools/imdebug/imdebug.h"
+
+const F32 NORMAL_SOFTEN_FACTOR = 0.65f;
+
+//-----------------------------------------------------------------------------
+// LLPolyMorphData()
+//-----------------------------------------------------------------------------
+LLPolyMorphData::LLPolyMorphData(const std::string& morph_name)
+	: mName(morph_name)
+{
+	mNumIndices = 0;
+	mCurrentIndex = 0;
+	mTotalDistortion = 0.f;
+	mAvgDistortion.clear();
+	mMaxDistortion = 0.f;
+	mVertexIndices = NULL;
+	mCoords = NULL;
+	mNormals = NULL;
+	mBinormals = NULL;
+	mTexCoords = NULL;
+
+	mMesh = NULL;
+}
+
+LLPolyMorphData::LLPolyMorphData(const LLPolyMorphData &rhs) :
+	mName(rhs.mName),
+	mNumIndices(rhs.mNumIndices),
+	mTotalDistortion(rhs.mTotalDistortion),
+	mAvgDistortion(rhs.mAvgDistortion),
+	mMaxDistortion(rhs.mMaxDistortion),
+	mVertexIndices(NULL),
+	mCoords(NULL),
+	mNormals(NULL),
+	mBinormals(NULL),
+	mTexCoords(NULL)
+{
+	const S32 numVertices = mNumIndices;
+
+	mCoords = new LLVector4a[numVertices];
+	mNormals = new LLVector4a[numVertices];
+	mBinormals = new LLVector4a[numVertices];
+	mTexCoords = new LLVector2[numVertices];
+	mVertexIndices = new U32[numVertices];
+	
+	for (S32 v=0; v < numVertices; v++)
+	{
+		mCoords[v] = rhs.mCoords[v];
+		mNormals[v] = rhs.mNormals[v];
+		mBinormals[v] = rhs.mBinormals[v];
+		mTexCoords[v] = rhs.mTexCoords[v];
+		mVertexIndices[v] = rhs.mVertexIndices[v];
+	}
+}
+
+
+//-----------------------------------------------------------------------------
+// ~LLPolyMorphData()
+//-----------------------------------------------------------------------------
+LLPolyMorphData::~LLPolyMorphData()
+{
+	delete [] mVertexIndices;
+	delete [] mCoords;
+	delete [] mNormals;
+	delete [] mBinormals;
+	delete [] mTexCoords;
+}
+
+//-----------------------------------------------------------------------------
+// loadBinary()
+//-----------------------------------------------------------------------------
+BOOL LLPolyMorphData::loadBinary(LLFILE *fp, LLPolyMeshSharedData *mesh)
+{
+	S32 numVertices;
+	S32 numRead;
+
+	numRead = fread(&numVertices, sizeof(S32), 1, fp);
+	llendianswizzle(&numVertices, sizeof(S32), 1);
+	if (numRead != 1)
+	{
+		llwarns << "Can't read number of morph target vertices" << llendl;
+		return FALSE;
+	}
+
+	//-------------------------------------------------------------------------
+	// allocate vertices
+	//-------------------------------------------------------------------------
+	mCoords = new LLVector4a[numVertices];
+	mNormals = new LLVector4a[numVertices];
+	mBinormals = new LLVector4a[numVertices];
+	mTexCoords = new LLVector2[numVertices];
+	// Actually, we are allocating more space than we need for the skiplist
+	mVertexIndices = new U32[numVertices];
+	mNumIndices = 0;
+	mTotalDistortion = 0.f;
+	mMaxDistortion = 0.f;
+	mAvgDistortion.clear();
+	mMesh = mesh;
+
+	//-------------------------------------------------------------------------
+	// read vertices
+	//-------------------------------------------------------------------------
+	for(S32 v = 0; v < numVertices; v++)
+	{
+		numRead = fread(&mVertexIndices[v], sizeof(U32), 1, fp);
+		llendianswizzle(&mVertexIndices[v], sizeof(U32), 1);
+		if (numRead != 1)
+		{
+			llwarns << "Can't read morph target vertex number" << llendl;
+			return FALSE;
+		}
+
+		if (mVertexIndices[v] > 10000)
+		{
+			llerrs << "Bad morph index: " << mVertexIndices[v] << llendl;
+		}
+
+
+		numRead = fread(&mCoords[v], sizeof(F32), 3, fp);
+		llendianswizzle(&mCoords[v], sizeof(F32), 3);
+		if (numRead != 3)
+		{
+			llwarns << "Can't read morph target vertex coordinates" << llendl;
+			return FALSE;
+		}
+
+		F32 magnitude = mCoords[v].getLength3().getF32();
+		
+		mTotalDistortion += magnitude;
+		LLVector4a t;
+		t.setAbs(mCoords[v]);
+		mAvgDistortion.add(t);
+		
+		if (magnitude > mMaxDistortion)
+		{
+			mMaxDistortion = magnitude;
+		}
+
+		numRead = fread(&mNormals[v], sizeof(F32), 3, fp);
+		llendianswizzle(&mNormals[v], sizeof(F32), 3);
+		if (numRead != 3)
+		{
+			llwarns << "Can't read morph target normal" << llendl;
+			return FALSE;
+		}
+
+		numRead = fread(&mBinormals[v], sizeof(F32), 3, fp);
+		llendianswizzle(&mBinormals[v], sizeof(F32), 3);
+		if (numRead != 3)
+		{
+			llwarns << "Can't read morph target binormal" << llendl;
+			return FALSE;
+		}
+
+
+		numRead = fread(&mTexCoords[v].mV, sizeof(F32), 2, fp);
+		llendianswizzle(&mTexCoords[v].mV, sizeof(F32), 2);
+		if (numRead != 2)
+		{
+			llwarns << "Can't read morph target uv" << llendl;
+			return FALSE;
+		}
+
+		mNumIndices++;
+	}
+
+	mAvgDistortion.mul(1.f/(F32)mNumIndices);
+	mAvgDistortion.normalize3fast();
+
+	return TRUE;
+}
+
+//-----------------------------------------------------------------------------
+// LLPolyMorphTargetInfo()
+//-----------------------------------------------------------------------------
+LLPolyMorphTargetInfo::LLPolyMorphTargetInfo()
+	: mIsClothingMorph(FALSE)
+{
+}
+
+BOOL LLPolyMorphTargetInfo::parseXml(LLXmlTreeNode* node)
+{
+	llassert( node->hasName( "param" ) && node->getChildByName( "param_morph" ) );
+
+	if (!LLViewerVisualParamInfo::parseXml(node))
+		return FALSE;
+
+	// Get mixed-case name
+	static LLStdStringHandle name_string = LLXmlTree::addAttributeString("name");
+	if( !node->getFastAttributeString( name_string, mMorphName ) )
+	{
+		llwarns << "Avatar file: <param> is missing name attribute" << llendl;
+		return FALSE;  // Continue, ignoring this tag
+	}
+
+	static LLStdStringHandle clothing_morph_string = LLXmlTree::addAttributeString("clothing_morph");
+	node->getFastAttributeBOOL(clothing_morph_string, mIsClothingMorph);
+
+	LLXmlTreeNode *paramNode = node->getChildByName("param_morph");
+
+        if (NULL == paramNode)
+        {
+                llwarns << "Failed to getChildByName(\"param_morph\")"
+                        << llendl;
+                return FALSE;
+        }
+
+	for (LLXmlTreeNode* child_node = paramNode->getFirstChild();
+		 child_node;
+		 child_node = paramNode->getNextChild())
+	{
+		static LLStdStringHandle name_string = LLXmlTree::addAttributeString("name");
+		if (child_node->hasName("volume_morph"))
+		{
+			std::string volume_name;
+			if (child_node->getFastAttributeString(name_string, volume_name))
+			{
+				LLVector3 scale;
+				static LLStdStringHandle scale_string = LLXmlTree::addAttributeString("scale");
+				child_node->getFastAttributeVector3(scale_string, scale);
+				
+				LLVector3 pos;
+				static LLStdStringHandle pos_string = LLXmlTree::addAttributeString("pos");
+				child_node->getFastAttributeVector3(pos_string, pos);
+
+				mVolumeInfoList.push_back(LLPolyVolumeMorphInfo(volume_name,scale,pos));
+			}
+		}
+	}
+	
+	return TRUE;
+}
+
+//-----------------------------------------------------------------------------
+// LLPolyMorphTarget()
+//-----------------------------------------------------------------------------
+LLPolyMorphTarget::LLPolyMorphTarget(LLPolyMesh *poly_mesh)
+	: mMorphData(NULL), mMesh(poly_mesh),
+	  mVertMask(NULL),
+	  mLastSex(SEX_FEMALE),
+	  mNumMorphMasksPending(0)
+{
+}
+
+//-----------------------------------------------------------------------------
+// ~LLPolyMorphTarget()
+//-----------------------------------------------------------------------------
+LLPolyMorphTarget::~LLPolyMorphTarget()
+{
+	if (mVertMask)
+	{
+		delete mVertMask;
+	}
+}
+
+//-----------------------------------------------------------------------------
+// setInfo()
+//-----------------------------------------------------------------------------
+BOOL LLPolyMorphTarget::setInfo(LLPolyMorphTargetInfo* info)
+{
+	llassert(mInfo == NULL);
+	if (info->mID < 0)
+		return FALSE;
+	mInfo = info;
+	mID = info->mID;
+	setWeight(getDefaultWeight(), FALSE );
+
+	LLAvatarAppearance* avatarp = mMesh->getAvatar();
+	LLPolyMorphTargetInfo::volume_info_list_t::iterator iter;
+	for (iter = getInfo()->mVolumeInfoList.begin(); iter != getInfo()->mVolumeInfoList.end(); iter++)
+	{
+		LLPolyVolumeMorphInfo *volume_info = &(*iter);
+		for (S32 i = 0; i < avatarp->mNumCollisionVolumes; i++)
+		{
+			if (avatarp->mCollisionVolumes[i].getName() == volume_info->mName)
+			{
+				mVolumeMorphs.push_back(LLPolyVolumeMorph(&avatarp->mCollisionVolumes[i],
+														  volume_info->mScale,
+														  volume_info->mPos));
+				break;
+			}
+		}
+	}
+
+	std::string morph_param_name = getInfo()->mMorphName;
+	
+	mMorphData = mMesh->getMorphData(morph_param_name);
+	if (!mMorphData)
+	{
+		const std::string driven_tag = "_Driven";
+		U32 pos = morph_param_name.find(driven_tag);
+		if (pos > 0)
+		{
+			morph_param_name = morph_param_name.substr(0,pos);
+			mMorphData = mMesh->getMorphData(morph_param_name);
+		}
+	}
+	if (!mMorphData)
+	{
+		llwarns << "No morph target named " << morph_param_name << " found in mesh." << llendl;
+		return FALSE;  // Continue, ignoring this tag
+	}
+	return TRUE;
+}
+
+/*virtual*/ LLViewerVisualParam* LLPolyMorphTarget::cloneParam(LLWearable* wearable) const
+{
+	LLPolyMorphTarget *new_param = new LLPolyMorphTarget(mMesh);
+	*new_param = *this;
+	return new_param;
+}
+
+#if 0 // obsolete
+//-----------------------------------------------------------------------------
+// parseData()
+//-----------------------------------------------------------------------------
+BOOL LLPolyMorphTarget::parseData(LLXmlTreeNode* node)
+{
+	LLPolyMorphTargetInfo* info = new LLPolyMorphTargetInfo;
+
+	info->parseXml(node);
+	if (!setInfo(info))
+	{
+		delete info;
+		return FALSE;
+	}
+	return TRUE;
+}
+#endif
+
+//-----------------------------------------------------------------------------
+// getVertexDistortion()
+//-----------------------------------------------------------------------------
+LLVector4a LLPolyMorphTarget::getVertexDistortion(S32 requested_index, LLPolyMesh *mesh)
+{
+	if (!mMorphData || mMesh != mesh) return LLVector4a::getZero();
+
+	for(U32 index = 0; index < mMorphData->mNumIndices; index++)
+	{
+		if (mMorphData->mVertexIndices[index] == (U32)requested_index)
+		{
+			return mMorphData->mCoords[index];
+		}
+	}
+
+	return LLVector4a::getZero();
+}
+
+//-----------------------------------------------------------------------------
+// getFirstDistortion()
+//-----------------------------------------------------------------------------
+const LLVector4a *LLPolyMorphTarget::getFirstDistortion(U32 *index, LLPolyMesh **poly_mesh)
+{
+	if (!mMorphData) return &LLVector4a::getZero();
+
+	LLVector4a* resultVec;
+	mMorphData->mCurrentIndex = 0;
+	if (mMorphData->mNumIndices)
+	{
+		resultVec = &mMorphData->mCoords[mMorphData->mCurrentIndex];
+		if (index != NULL)
+		{
+			*index = mMorphData->mVertexIndices[mMorphData->mCurrentIndex];
+		}
+		if (poly_mesh != NULL)
+		{
+			*poly_mesh = mMesh;
+		}
+
+		return resultVec;
+	}
+	return NULL;
+}
+
+//-----------------------------------------------------------------------------
+// getNextDistortion()
+//-----------------------------------------------------------------------------
+const LLVector4a *LLPolyMorphTarget::getNextDistortion(U32 *index, LLPolyMesh **poly_mesh)
+{
+	if (!mMorphData) return &LLVector4a::getZero();
+
+	LLVector4a* resultVec;
+	mMorphData->mCurrentIndex++;
+	if (mMorphData->mCurrentIndex < mMorphData->mNumIndices)
+	{
+		resultVec = &mMorphData->mCoords[mMorphData->mCurrentIndex];
+		if (index != NULL)
+		{
+			*index = mMorphData->mVertexIndices[mMorphData->mCurrentIndex];
+		}
+		if (poly_mesh != NULL)
+		{
+			*poly_mesh = mMesh;
+		}
+		return resultVec;
+	}
+	return NULL;
+}
+
+//-----------------------------------------------------------------------------
+// getTotalDistortion()
+//-----------------------------------------------------------------------------
+F32	LLPolyMorphTarget::getTotalDistortion() 
+{ 
+	if (mMorphData) 
+	{
+		return mMorphData->mTotalDistortion; 
+	}
+	else 
+	{
+		return 0.f;
+	}
+}
+
+//-----------------------------------------------------------------------------
+// getAvgDistortion()
+//-----------------------------------------------------------------------------
+const LLVector4a& LLPolyMorphTarget::getAvgDistortion()	
+{
+	if (mMorphData) 
+	{
+		return mMorphData->mAvgDistortion; 
+	}
+	else 
+	{
+		return LLVector4a::getZero();
+	}
+}
+
+//-----------------------------------------------------------------------------
+// getMaxDistortion()
+//-----------------------------------------------------------------------------
+F32	LLPolyMorphTarget::getMaxDistortion() 
+{
+	if (mMorphData) 
+	{
+		return mMorphData->mMaxDistortion; 
+	}
+	else
+	{
+		return 0.f;
+	}
+}
+
+//-----------------------------------------------------------------------------
+// apply()
+//-----------------------------------------------------------------------------
+static LLFastTimer::DeclareTimer FTM_APPLY_MORPH_TARGET("Apply Morph");
+
+void LLPolyMorphTarget::apply( ESex avatar_sex )
+{
+	if (!mMorphData || mNumMorphMasksPending > 0)
+	{
+		return;
+	}
+
+	LLFastTimer t(FTM_APPLY_MORPH_TARGET);
+
+	mLastSex = avatar_sex;
+
+	// Check for NaN condition (NaN is detected if a variable doesn't equal itself.
+	if (mCurWeight != mCurWeight)
+	{
+		mCurWeight = 0.0;
+	}
+	if (mLastWeight != mLastWeight)
+	{
+		mLastWeight = mCurWeight+.001;
+	}
+
+	// perform differential update of morph
+	F32 delta_weight = ( getSex() & avatar_sex ) ? (mCurWeight - mLastWeight) : (getDefaultWeight() - mLastWeight);
+	// store last weight
+	mLastWeight += delta_weight;
+
+	if (delta_weight != 0.f)
+	{
+		llassert(!mMesh->isLOD());
+		LLVector4a *coords = mMesh->getWritableCoords();
+
+		LLVector4a *scaled_normals = mMesh->getScaledNormals();
+		LLVector4a *normals = mMesh->getWritableNormals();
+
+		LLVector4a *scaled_binormals = mMesh->getScaledBinormals();
+		LLVector4a *binormals = mMesh->getWritableBinormals();
+
+		LLVector4a *clothing_weights = mMesh->getWritableClothingWeights();
+		LLVector2 *tex_coords = mMesh->getWritableTexCoords();
+
+		F32 *maskWeightArray = (mVertMask) ? mVertMask->getMorphMaskWeights() : NULL;
+
+		for(U32 vert_index_morph = 0; vert_index_morph < mMorphData->mNumIndices; vert_index_morph++)
+		{
+			S32 vert_index_mesh = mMorphData->mVertexIndices[vert_index_morph];
+
+			F32 maskWeight = 1.f;
+			if (maskWeightArray)
+			{
+				maskWeight = maskWeightArray[vert_index_morph];
+			}
+
+
+			LLVector4a pos = mMorphData->mCoords[vert_index_morph];
+			pos.mul(delta_weight*maskWeight);
+			coords[vert_index_mesh].add(pos);
+
+			if (getInfo()->mIsClothingMorph && clothing_weights)
+			{
+				LLVector4a clothing_offset = mMorphData->mCoords[vert_index_morph];
+				clothing_offset.mul(delta_weight * maskWeight);
+				LLVector4a* clothing_weight = &clothing_weights[vert_index_mesh];
+				clothing_weight->add(clothing_offset);
+				clothing_weight->getF32ptr()[VW] = maskWeight;
+			}
+
+			// calculate new normals based on half angles
+			LLVector4a norm = mMorphData->mNormals[vert_index_morph];
+			norm.mul(delta_weight*maskWeight*NORMAL_SOFTEN_FACTOR);
+			scaled_normals[vert_index_mesh].add(norm);
+			norm = scaled_normals[vert_index_mesh];
+			norm.normalize3fast();
+			normals[vert_index_mesh] = norm;
+
+			// calculate new binormals
+			LLVector4a binorm = mMorphData->mBinormals[vert_index_morph];
+			binorm.mul(delta_weight*maskWeight*NORMAL_SOFTEN_FACTOR);
+			scaled_binormals[vert_index_mesh].add(binorm);
+			LLVector4a tangent;
+			tangent.setCross3(scaled_binormals[vert_index_mesh], norm);
+			LLVector4a& normalized_binormal = binormals[vert_index_mesh];
+			normalized_binormal.setCross3(norm, tangent); 
+			normalized_binormal.normalize3fast();
+			
+			tex_coords[vert_index_mesh] += mMorphData->mTexCoords[vert_index_morph] * delta_weight * maskWeight;
+		}
+
+		// now apply volume changes
+		for( volume_list_t::iterator iter = mVolumeMorphs.begin(); iter != mVolumeMorphs.end(); iter++ )
+		{
+			LLPolyVolumeMorph* volume_morph = &(*iter);
+			LLVector3 scale_delta = volume_morph->mScale * delta_weight;
+			LLVector3 pos_delta = volume_morph->mPos * delta_weight;
+			
+			volume_morph->mVolume->setScale(volume_morph->mVolume->getScale() + scale_delta);
+			volume_morph->mVolume->setPosition(volume_morph->mVolume->getPosition() + pos_delta);
+		}
+	}
+
+	if (mNext)
+	{
+		mNext->apply(avatar_sex);
+	}
+}
+
+//-----------------------------------------------------------------------------
+// applyMask()
+//-----------------------------------------------------------------------------
+void	LLPolyMorphTarget::applyMask(U8 *maskTextureData, S32 width, S32 height, S32 num_components, BOOL invert)
+{
+	LLVector4a *clothing_weights = getInfo()->mIsClothingMorph ? mMesh->getWritableClothingWeights() : NULL;
+
+	if (!mVertMask)
+	{
+		mVertMask = new LLPolyVertexMask(mMorphData);
+		mNumMorphMasksPending--;
+	}
+	else
+	{
+		// remove effect of previous mask
+		F32 *maskWeights = (mVertMask) ? mVertMask->getMorphMaskWeights() : NULL;
+
+		if (maskWeights)
+		{
+			LLVector4a *coords = mMesh->getWritableCoords();
+			LLVector4a *scaled_normals = mMesh->getScaledNormals();
+			LLVector4a *scaled_binormals = mMesh->getScaledBinormals();
+			LLVector2 *tex_coords = mMesh->getWritableTexCoords();
+
+			LLVector4Logical clothing_mask;
+			clothing_mask.clear();
+			clothing_mask.setElement<0>();
+			clothing_mask.setElement<1>();
+			clothing_mask.setElement<2>();
+
+
+			for(U32 vert = 0; vert < mMorphData->mNumIndices; vert++)
+			{
+				F32 lastMaskWeight = mLastWeight * maskWeights[vert];
+				S32 out_vert = mMorphData->mVertexIndices[vert];
+
+				// remove effect of existing masked morph
+				LLVector4a t;
+				t = mMorphData->mCoords[vert];
+				t.mul(lastMaskWeight);
+				coords[out_vert].sub(t);
+
+				t = mMorphData->mNormals[vert];
+				t.mul(lastMaskWeight*NORMAL_SOFTEN_FACTOR);
+				scaled_normals[out_vert].sub(t);
+
+				t = mMorphData->mBinormals[vert];
+				t.mul(lastMaskWeight*NORMAL_SOFTEN_FACTOR);
+				scaled_binormals[out_vert].sub(t);
+
+				tex_coords[out_vert] -= mMorphData->mTexCoords[vert] * lastMaskWeight;
+
+				if (clothing_weights)
+				{
+					LLVector4a clothing_offset = mMorphData->mCoords[vert];
+					clothing_offset.mul(lastMaskWeight);
+					LLVector4a* clothing_weight = &clothing_weights[out_vert];
+					LLVector4a t;
+					t.setSub(*clothing_weight, clothing_offset);
+					clothing_weight->setSelectWithMask(clothing_mask, t, *clothing_weight);
+				}
+			}
+		}
+	}
+
+	// set last weight to 0, since we've removed the effect of this morph
+	mLastWeight = 0.f;
+
+	mVertMask->generateMask(maskTextureData, width, height, num_components, invert, clothing_weights);
+
+	apply(mLastSex);
+}
+
+
+//-----------------------------------------------------------------------------
+// LLPolyVertexMask()
+//-----------------------------------------------------------------------------
+LLPolyVertexMask::LLPolyVertexMask(LLPolyMorphData* morph_data)
+{
+	mWeights = new F32[morph_data->mNumIndices];
+	mMorphData = morph_data;
+	mWeightsGenerated = FALSE;
+}
+
+//-----------------------------------------------------------------------------
+// ~LLPolyVertexMask()
+//-----------------------------------------------------------------------------
+LLPolyVertexMask::~LLPolyVertexMask()
+{
+	delete[] mWeights;
+}
+
+//-----------------------------------------------------------------------------
+// generateMask()
+//-----------------------------------------------------------------------------
+void LLPolyVertexMask::generateMask(U8 *maskTextureData, S32 width, S32 height, S32 num_components, BOOL invert, LLVector4a *clothing_weights)
+{
+// RN debug output that uses Image Debugger (http://www.cs.unc.edu/~baxter/projects/imdebug/)
+//	BOOL debugImg = FALSE; 
+//	if (debugImg)
+//	{
+//		if (invert)
+//		{
+//			imdebug("lum rbga=rgba b=8 w=%d h=%d *-1 %p", width, height, maskTextureData);
+//		}
+//		else
+//		{
+//			imdebug("lum rbga=rgba b=8 w=%d h=%d %p", width, height, maskTextureData);
+//		}
+//	}
+	for (U32 index = 0; index < mMorphData->mNumIndices; index++)
+	{
+		S32 vertIndex = mMorphData->mVertexIndices[index];
+		const S32 *sharedVertIndex = mMorphData->mMesh->getSharedVert(vertIndex);
+		LLVector2 uvCoords;
+
+		if (sharedVertIndex)
+		{
+			uvCoords = mMorphData->mMesh->getUVs(*sharedVertIndex);
+		}
+		else
+		{
+			uvCoords = mMorphData->mMesh->getUVs(vertIndex);
+		}
+		U32 s = llclamp((U32)(uvCoords.mV[VX] * (F32)(width - 1)), (U32)0, (U32)width - 1);
+		U32 t = llclamp((U32)(uvCoords.mV[VY] * (F32)(height - 1)), (U32)0, (U32)height - 1);
+		
+		mWeights[index] = ((F32) maskTextureData[((t * width + s) * num_components) + (num_components - 1)]) / 255.f;
+		
+		if (invert) 
+		{
+			mWeights[index] = 1.f - mWeights[index];
+		}
+
+		// now apply step function
+		// mWeights[index] = mWeights[index] > 0.95f ? 1.f : 0.f;
+
+		if (clothing_weights)
+		{
+			clothing_weights[vertIndex].getF32ptr()[VW] = mWeights[index];
+		}
+	}
+	mWeightsGenerated = TRUE;
+}
+
+//-----------------------------------------------------------------------------
+// getMaskForMorphIndex()
+//-----------------------------------------------------------------------------
+F32* LLPolyVertexMask::getMorphMaskWeights()
+{
+	if (!mWeightsGenerated)
+	{
+		return NULL;
+	}
+	
+	return mWeights;
+}
diff --git a/indra/llappearance/llpolymorph.h b/indra/llappearance/llpolymorph.h
new file mode 100644
index 00000000000..d6cf9e52ca7
--- /dev/null
+++ b/indra/llappearance/llpolymorph.h
@@ -0,0 +1,182 @@
+/** 
+ * @file llpolymorph.h
+ * @brief Implementation of LLPolyMesh class
+ *
+ * $LicenseInfo:firstyear=2001&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LLPOLYMORPH_H
+#define LL_LLPOLYMORPH_H
+
+#include <string>
+#include <vector>
+
+#include "llviewervisualparam.h"
+
+class LLAvatarJointCollisionVolume;
+class LLPolyMeshSharedData;
+class LLVector2;
+class LLAvatarJointCollisionVolume;
+class LLWearable;
+
+//-----------------------------------------------------------------------------
+// LLPolyMorphData()
+//-----------------------------------------------------------------------------
+class LLPolyMorphData
+{
+public:
+	LLPolyMorphData(const std::string& morph_name);
+	~LLPolyMorphData();
+	LLPolyMorphData(const LLPolyMorphData &rhs);
+
+	BOOL			loadBinary(LLFILE* fp, LLPolyMeshSharedData *mesh);
+	const std::string& getName() { return mName; }
+
+public:
+	std::string			mName;
+
+	// morphology
+	U32					mNumIndices;
+	U32*				mVertexIndices;
+	U32					mCurrentIndex;
+	LLVector4a*			mCoords;
+	LLVector4a*			mNormals;
+	LLVector4a*			mBinormals;
+	LLVector2*			mTexCoords;
+
+	F32					mTotalDistortion;	// vertex distortion summed over entire morph
+	F32					mMaxDistortion;		// maximum single vertex distortion in a given morph
+	LLVector4a			mAvgDistortion;		// average vertex distortion, to infer directionality of the morph
+	LLPolyMeshSharedData*	mMesh;
+};
+
+//-----------------------------------------------------------------------------
+// LLPolyVertexMask()
+//-----------------------------------------------------------------------------
+class LLPolyVertexMask
+{
+public:
+	LLPolyVertexMask(LLPolyMorphData* morph_data);
+	~LLPolyVertexMask();
+
+	void generateMask(U8 *maskData, S32 width, S32 height, S32 num_components, BOOL invert, LLVector4a *clothing_weights);
+	F32* getMorphMaskWeights();
+
+
+protected:
+	F32*		mWeights;
+	LLPolyMorphData *mMorphData;
+	BOOL			mWeightsGenerated;
+
+};
+
+//-----------------------------------------------------------------------------
+// LLPolyMorphTarget Data structs
+//-----------------------------------------------------------------------------
+struct LLPolyVolumeMorphInfo
+{
+	LLPolyVolumeMorphInfo(std::string &name, LLVector3 &scale, LLVector3 &pos)
+		: mName(name), mScale(scale), mPos(pos) {};
+
+	std::string						mName;
+	LLVector3						mScale;
+	LLVector3						mPos;
+};
+
+struct LLPolyVolumeMorph
+{
+	LLPolyVolumeMorph(LLAvatarJointCollisionVolume* volume, LLVector3 scale, LLVector3 pos)
+		: mVolume(volume), mScale(scale), mPos(pos) {};
+
+	LLAvatarJointCollisionVolume*	mVolume;
+	LLVector3						mScale;
+	LLVector3						mPos;
+};
+
+//-----------------------------------------------------------------------------
+// LLPolyMorphTargetInfo
+// Shared information for LLPolyMorphTargets
+//-----------------------------------------------------------------------------
+class LLPolyMorphTargetInfo : public LLViewerVisualParamInfo
+{
+	friend class LLPolyMorphTarget;
+public:
+	LLPolyMorphTargetInfo();
+	/*virtual*/ ~LLPolyMorphTargetInfo() {};
+	
+	/*virtual*/ BOOL parseXml(LLXmlTreeNode* node);
+
+protected:
+	std::string		mMorphName;
+	BOOL			mIsClothingMorph;
+	typedef std::vector<LLPolyVolumeMorphInfo> volume_info_list_t;
+	volume_info_list_t mVolumeInfoList;	
+};
+
+//-----------------------------------------------------------------------------
+// LLPolyMorphTarget
+// A set of vertex data associated with morph target.
+// These morph targets must be topologically consistent with a given Polymesh
+// (share face sets)
+//-----------------------------------------------------------------------------
+class LLPolyMorphTarget : public LLViewerVisualParam
+{
+public:
+	LLPolyMorphTarget(LLPolyMesh *poly_mesh);
+	~LLPolyMorphTarget();
+
+	// Special: These functions are overridden by child classes
+	LLPolyMorphTargetInfo*	getInfo() const { return (LLPolyMorphTargetInfo*)mInfo; }
+	//   This sets mInfo and calls initialization functions
+	BOOL					setInfo(LLPolyMorphTargetInfo *info);
+
+	/*virtual*/ LLViewerVisualParam* cloneParam(LLWearable* wearable) const;
+
+	// LLVisualParam Virtual functions
+	///*virtual*/ BOOL				parseData(LLXmlTreeNode* node);
+	/*virtual*/ void				apply( ESex sex );
+	
+	// LLViewerVisualParam Virtual functions
+	/*virtual*/ F32					getTotalDistortion();
+	/*virtual*/ const LLVector4a&	getAvgDistortion();
+	/*virtual*/ F32					getMaxDistortion();
+	/*virtual*/ LLVector4a			getVertexDistortion(S32 index, LLPolyMesh *poly_mesh);
+	/*virtual*/ const LLVector4a*	getFirstDistortion(U32 *index, LLPolyMesh **poly_mesh);
+	/*virtual*/ const LLVector4a*	getNextDistortion(U32 *index, LLPolyMesh **poly_mesh);
+
+	void	applyMask(U8 *maskData, S32 width, S32 height, S32 num_components, BOOL invert);
+	void	addPendingMorphMask() { mNumMorphMasksPending++; }
+
+protected:
+	LLPolyMorphData*				mMorphData;
+	LLPolyMesh*						mMesh;
+	LLPolyVertexMask *				mVertMask;
+	ESex							mLastSex;
+	// number of morph masks that haven't been generated, must be 0 before this morph is applied
+	BOOL							mNumMorphMasksPending;	
+
+	typedef std::vector<LLPolyVolumeMorph> volume_list_t;
+	volume_list_t 					mVolumeMorphs;
+
+};
+
+#endif // LL_LLPOLYMORPH_H
diff --git a/indra/llappearance/llpolyskeletaldistortion.cpp b/indra/llappearance/llpolyskeletaldistortion.cpp
new file mode 100644
index 00000000000..4ba16691c28
--- /dev/null
+++ b/indra/llappearance/llpolyskeletaldistortion.cpp
@@ -0,0 +1,293 @@
+/** 
+ * @file llpolyskeletaldistortion.cpp
+ * @brief Implementation of LLPolySkeletalDistortion classes
+ *
+ * $LicenseInfo:firstyear=2001&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+//-----------------------------------------------------------------------------
+// Header Files
+//-----------------------------------------------------------------------------
+#include "llpreprocessor.h"
+#include "llerrorlegacy.h"
+//#include "llcommon.h"
+//#include "llmemory.h"
+#include "llavatarappearance.h"
+#include "llavatarjoint.h"
+#include "llpolymorph.h"
+//#include "llviewercontrol.h"
+//#include "llxmltree.h"
+//#include "llvoavatar.h"
+#include "llwearable.h"
+//#include "lldir.h"
+//#include "llvolume.h"
+//#include "llendianswizzle.h"
+
+#include "llpolyskeletaldistortion.h"
+
+//-----------------------------------------------------------------------------
+// LLPolySkeletalDistortionInfo()
+//-----------------------------------------------------------------------------
+LLPolySkeletalDistortionInfo::LLPolySkeletalDistortionInfo()
+{
+}
+
+BOOL LLPolySkeletalDistortionInfo::parseXml(LLXmlTreeNode* node)
+{
+        llassert( node->hasName( "param" ) && node->getChildByName( "param_skeleton" ) );
+        
+        if (!LLViewerVisualParamInfo::parseXml(node))
+                return FALSE;
+
+        LLXmlTreeNode* skeletalParam = node->getChildByName("param_skeleton");
+
+        if (NULL == skeletalParam)
+        {
+                llwarns << "Failed to getChildByName(\"param_skeleton\")"
+                        << llendl;
+                return FALSE;
+        }
+
+        for( LLXmlTreeNode* bone = skeletalParam->getFirstChild(); bone; bone = skeletalParam->getNextChild() )
+        {
+                if (bone->hasName("bone"))
+                {
+                        std::string name;
+                        LLVector3 scale;
+                        LLVector3 pos;
+                        BOOL haspos = FALSE;
+                        
+                        static LLStdStringHandle name_string = LLXmlTree::addAttributeString("name");
+                        if (!bone->getFastAttributeString(name_string, name))
+                        {
+                                llwarns << "No bone name specified for skeletal param." << llendl;
+                                continue;
+                        }
+
+                        static LLStdStringHandle scale_string = LLXmlTree::addAttributeString("scale");
+                        if (!bone->getFastAttributeVector3(scale_string, scale))
+                        {
+                                llwarns << "No scale specified for bone " << name << "." << llendl;
+                                continue;
+                        }
+
+                        // optional offset deformation (translation)
+                        static LLStdStringHandle offset_string = LLXmlTree::addAttributeString("offset");
+                        if (bone->getFastAttributeVector3(offset_string, pos))
+                        {
+                                haspos = TRUE;
+                        }
+                        mBoneInfoList.push_back(LLPolySkeletalBoneInfo(name, scale, pos, haspos));
+                }
+                else
+                {
+                        llwarns << "Unrecognized element " << bone->getName() << " in skeletal distortion" << llendl;
+                        continue;
+                }
+        }
+        return TRUE;
+}
+
+//-----------------------------------------------------------------------------
+// LLPolySkeletalDistortion()
+//-----------------------------------------------------------------------------
+LLPolySkeletalDistortion::LLPolySkeletalDistortion(LLAvatarAppearance *avatarp)
+{
+        mAvatar = avatarp;
+        mDefaultVec.splat(0.001f);
+}
+
+//-----------------------------------------------------------------------------
+// ~LLPolySkeletalDistortion()
+//-----------------------------------------------------------------------------
+LLPolySkeletalDistortion::~LLPolySkeletalDistortion()
+{
+}
+
+BOOL LLPolySkeletalDistortion::setInfo(LLPolySkeletalDistortionInfo *info)
+{
+        llassert(mInfo == NULL);
+        if (info->mID < 0)
+                return FALSE;
+        mInfo = info;
+        mID = info->mID;
+        setWeight(getDefaultWeight(), FALSE );
+
+        LLPolySkeletalDistortionInfo::bone_info_list_t::iterator iter;
+        for (iter = getInfo()->mBoneInfoList.begin(); iter != getInfo()->mBoneInfoList.end(); iter++)
+        {
+                LLPolySkeletalBoneInfo *bone_info = &(*iter);
+                LLJoint* joint = mAvatar->getJoint(bone_info->mBoneName);
+                if (!joint)
+                {
+                        llwarns << "Joint " << bone_info->mBoneName << " not found." << llendl;
+                        continue;
+                }
+
+                if (mJointScales.find(joint) != mJointScales.end())
+                {
+                        llwarns << "Scale deformation already supplied for joint " << joint->getName() << "." << llendl;
+                }
+
+                // store it
+                mJointScales[joint] = bone_info->mScaleDeformation;
+
+                // apply to children that need to inherit it
+                for (LLJoint::child_list_t::iterator iter = joint->mChildren.begin();
+                     iter != joint->mChildren.end(); ++iter)
+                {
+                        LLAvatarJoint* child_joint = (LLAvatarJoint*)(*iter);
+                        if (child_joint->inheritScale())
+                        {
+                                LLVector3 childDeformation = LLVector3(child_joint->getScale());
+                                childDeformation.scaleVec(bone_info->mScaleDeformation);
+                                mJointScales[child_joint] = childDeformation;
+                        }
+                }
+
+                if (bone_info->mHasPositionDeformation)
+                {
+                        if (mJointOffsets.find(joint) != mJointOffsets.end())
+                        {
+                                llwarns << "Offset deformation already supplied for joint " << joint->getName() << "." << llendl;
+                        }
+                        mJointOffsets[joint] = bone_info->mPositionDeformation;
+                }
+        }
+        return TRUE;
+}
+
+/*virtual*/ LLViewerVisualParam* LLPolySkeletalDistortion::cloneParam(LLWearable* wearable) const
+{
+        LLPolySkeletalDistortion *new_param = new LLPolySkeletalDistortion(mAvatar);
+        *new_param = *this;
+        return new_param;
+}
+
+//-----------------------------------------------------------------------------
+// apply()
+//-----------------------------------------------------------------------------
+static LLFastTimer::DeclareTimer FTM_POLYSKELETAL_DISTORTION_APPLY("Skeletal Distortion");
+
+void LLPolySkeletalDistortion::apply( ESex avatar_sex )
+{
+	LLFastTimer t(FTM_POLYSKELETAL_DISTORTION_APPLY);
+
+        F32 effective_weight = ( getSex() & avatar_sex ) ? mCurWeight : getDefaultWeight();
+
+        LLJoint* joint;
+        joint_vec_map_t::iterator iter;
+
+        for (iter = mJointScales.begin();
+             iter != mJointScales.end();
+             iter++)
+        {
+                joint = iter->first;
+                LLVector3 newScale = joint->getScale();
+                LLVector3 scaleDelta = iter->second;
+                newScale = newScale + (effective_weight * scaleDelta) - (mLastWeight * scaleDelta);
+                joint->setScale(newScale);
+        }
+
+        for (iter = mJointOffsets.begin();
+             iter != mJointOffsets.end();
+             iter++)
+        {
+                joint = iter->first;
+                LLVector3 newPosition = joint->getPosition();
+                LLVector3 positionDelta = iter->second;
+                newPosition = newPosition + (effective_weight * positionDelta) - (mLastWeight * positionDelta);
+                joint->setPosition(newPosition);
+        }
+
+        if (mLastWeight != mCurWeight && !mIsAnimating)
+        {
+                mAvatar->setSkeletonSerialNum(mAvatar->getSkeletonSerialNum() + 1);
+        }
+        mLastWeight = mCurWeight;
+}
+
+
+LLPolyMorphData *clone_morph_param_duplicate(const LLPolyMorphData *src_data,
+					     const std::string &name)
+{
+        LLPolyMorphData* cloned_morph_data = new LLPolyMorphData(*src_data);
+        cloned_morph_data->mName = name;
+        for (U32 v=0; v < cloned_morph_data->mNumIndices; v++)
+        {
+                cloned_morph_data->mCoords[v] = src_data->mCoords[v];
+                cloned_morph_data->mNormals[v] = src_data->mNormals[v];
+                cloned_morph_data->mBinormals[v] = src_data->mBinormals[v];
+        }
+        return cloned_morph_data;
+}
+
+LLPolyMorphData *clone_morph_param_direction(const LLPolyMorphData *src_data,
+					     const LLVector3 &direction,
+					     const std::string &name)
+{
+        LLPolyMorphData* cloned_morph_data = new LLPolyMorphData(*src_data);
+        cloned_morph_data->mName = name;
+		LLVector4a dir;
+		dir.load3(direction.mV);
+
+        for (U32 v=0; v < cloned_morph_data->mNumIndices; v++)
+        {
+                cloned_morph_data->mCoords[v] = dir;
+                cloned_morph_data->mNormals[v].clear();
+                cloned_morph_data->mBinormals[v].clear();
+        }
+        return cloned_morph_data;
+}
+
+LLPolyMorphData *clone_morph_param_cleavage(const LLPolyMorphData *src_data,
+                                            F32 scale,
+                                            const std::string &name)
+{
+        LLPolyMorphData* cloned_morph_data = new LLPolyMorphData(*src_data);
+        cloned_morph_data->mName = name;
+
+		LLVector4a sc;
+		sc.splat(scale);
+
+		LLVector4a nsc;
+		nsc.set(scale, -scale, scale, scale);
+
+        for (U32 v=0; v < cloned_morph_data->mNumIndices; v++)
+        {
+            if (cloned_morph_data->mCoords[v][1] < 0)
+            {
+                cloned_morph_data->mCoords[v].setMul(src_data->mCoords[v],nsc);
+				cloned_morph_data->mNormals[v].setMul(src_data->mNormals[v],nsc);
+				cloned_morph_data->mBinormals[v].setMul(src_data->mBinormals[v],nsc);
+			}
+			else
+			{
+				cloned_morph_data->mCoords[v].setMul(src_data->mCoords[v],sc);
+				cloned_morph_data->mNormals[v].setMul(src_data->mNormals[v], sc);
+				cloned_morph_data->mBinormals[v].setMul(src_data->mBinormals[v],sc);
+			}
+        }
+        return cloned_morph_data;
+}
+
+// End
diff --git a/indra/llappearance/llpolyskeletaldistortion.h b/indra/llappearance/llpolyskeletaldistortion.h
new file mode 100644
index 00000000000..040cf841ea3
--- /dev/null
+++ b/indra/llappearance/llpolyskeletaldistortion.h
@@ -0,0 +1,119 @@
+/** 
+ * @file llpolyskeletaldistortion.h
+ * @brief Implementation of LLPolyMesh class
+ *
+ * $LicenseInfo:firstyear=2001&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LLPOLYSKELETALDISTORTION_H
+#define LL_LLPOLYSKELETALDISTORTION_H
+
+#include "llcommon.h"
+
+#include <string>
+#include <map>
+#include "llstl.h"
+
+#include "v3math.h"
+#include "v2math.h"
+#include "llquaternion.h"
+//#include "llpolymorph.h"
+#include "lljoint.h"
+#include "llviewervisualparam.h"
+//#include "lldarray.h"
+
+//class LLSkinJoint;
+class LLAvatarAppearance;
+
+//#define USE_STRIPS	// Use tri-strips for rendering.
+
+//-----------------------------------------------------------------------------
+// LLPolySkeletalDeformationInfo
+// Shared information for LLPolySkeletalDeformations
+//-----------------------------------------------------------------------------
+struct LLPolySkeletalBoneInfo
+{
+	LLPolySkeletalBoneInfo(std::string &name, LLVector3 &scale, LLVector3 &pos, BOOL haspos)
+		: mBoneName(name),
+		  mScaleDeformation(scale),
+		  mPositionDeformation(pos),
+		  mHasPositionDeformation(haspos) {}
+	std::string mBoneName;
+	LLVector3 mScaleDeformation;
+	LLVector3 mPositionDeformation;
+	BOOL mHasPositionDeformation;
+};
+
+class LLPolySkeletalDistortionInfo : public LLViewerVisualParamInfo
+{
+	friend class LLPolySkeletalDistortion;
+public:
+	LLPolySkeletalDistortionInfo();
+	/*virtual*/ ~LLPolySkeletalDistortionInfo() {};
+	
+	/*virtual*/ BOOL parseXml(LLXmlTreeNode* node);
+
+protected:
+	typedef std::vector<LLPolySkeletalBoneInfo> bone_info_list_t;
+	bone_info_list_t mBoneInfoList;
+};
+
+//-----------------------------------------------------------------------------
+// LLPolySkeletalDeformation
+// A set of joint scale data for deforming the avatar mesh
+//-----------------------------------------------------------------------------
+class LLPolySkeletalDistortion : public LLViewerVisualParam
+{
+public:
+	LLPolySkeletalDistortion(LLAvatarAppearance *avatarp);
+	~LLPolySkeletalDistortion();
+
+	// Special: These functions are overridden by child classes
+	LLPolySkeletalDistortionInfo*	getInfo() const { return (LLPolySkeletalDistortionInfo*)mInfo; }
+	//   This sets mInfo and calls initialization functions
+	BOOL							setInfo(LLPolySkeletalDistortionInfo *info);
+
+	/*virtual*/ LLViewerVisualParam* cloneParam(LLWearable* wearable) const;
+
+	// LLVisualParam Virtual functions
+	///*virtual*/ BOOL				parseData(LLXmlTreeNode* node);
+	/*virtual*/ void				apply( ESex sex );
+	
+	// LLViewerVisualParam Virtual functions
+	/*virtual*/ F32					getTotalDistortion() { return 0.1f; }
+	/*virtual*/ const LLVector4a&	getAvgDistortion()	{ return mDefaultVec; }
+	/*virtual*/ F32					getMaxDistortion() { return 0.1f; }
+	/*virtual*/ LLVector4a			getVertexDistortion(S32 index, LLPolyMesh *poly_mesh){return LLVector4a(0.001f, 0.001f, 0.001f);}
+	/*virtual*/ const LLVector4a*	getFirstDistortion(U32 *index, LLPolyMesh **poly_mesh){index = 0; poly_mesh = NULL; return &mDefaultVec;};
+	/*virtual*/ const LLVector4a*	getNextDistortion(U32 *index, LLPolyMesh **poly_mesh){index = 0; poly_mesh = NULL; return NULL;};
+
+protected:
+	typedef std::map<LLJoint*, LLVector3> joint_vec_map_t;
+	joint_vec_map_t mJointScales;
+	joint_vec_map_t mJointOffsets;
+	LLVector4a	mDefaultVec;
+	// Backlink only; don't make this an LLPointer.
+	LLAvatarAppearance *mAvatar;
+};
+
+#endif // LL_LLPOLYSKELETALDISTORTION_H
+
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 21b1512e582..7942e815aec 100755
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -443,8 +443,6 @@ set(viewer_SOURCE_FILES
     llplacesinventorybridge.cpp
     llplacesinventorypanel.cpp
     llpopupview.cpp
-    llpolymesh.cpp
-    llpolymorph.cpp
     llpostcard.cpp
     llpreview.cpp
     llpreviewanim.cpp
@@ -1000,8 +998,6 @@ set(viewer_HEADER_FILES
     llpipelinelistener.h
     llplacesinventorybridge.h
     llplacesinventorypanel.h
-    llpolymesh.h
-    llpolymorph.h
     llpopupview.h
     llpostcard.h
     llpreview.h
diff --git a/indra/newview/llagentcamera.cpp b/indra/newview/llagentcamera.cpp
index e1ef0d53995..7f4d33753da 100644
--- a/indra/newview/llagentcamera.cpp
+++ b/indra/newview/llagentcamera.cpp
@@ -1078,8 +1078,8 @@ void LLAgentCamera::updateLookAt(const S32 mouse_x, const S32 mouse_y)
 
 	if (!isAgentAvatarValid()) return;
 
-	LLQuaternion av_inv_rot = ~gAgentAvatarp->mRoot.getWorldRotation();
-	LLVector3 root_at = LLVector3::x_axis * gAgentAvatarp->mRoot.getWorldRotation();
+	LLQuaternion av_inv_rot = ~gAgentAvatarp->mRoot->getWorldRotation();
+	LLVector3 root_at = LLVector3::x_axis * gAgentAvatarp->mRoot->getWorldRotation();
 
 	if 	((gViewerWindow->getMouseVelocityStat()->getCurrent() < 0.01f) &&
 		 (root_at * last_at_axis > 0.95f))
@@ -1432,7 +1432,7 @@ void LLAgentCamera::updateCamera()
 			LLVector3(0.08f, 0.f, 0.05f) * gAgentAvatarp->mHeadp->getWorldRotation() + 
 			LLVector3(0.1f, 0.f, 0.f) * gAgentAvatarp->mPelvisp->getWorldRotation();
 		LLVector3 diff = mCameraPositionAgent - head_pos;
-		diff = diff * ~gAgentAvatarp->mRoot.getWorldRotation();
+		diff = diff * ~gAgentAvatarp->mRoot->getWorldRotation();
 
 		LLJoint* torso_joint = gAgentAvatarp->mTorsop;
 		LLJoint* chest_joint = gAgentAvatarp->mChestp;
@@ -1456,7 +1456,7 @@ void LLAgentCamera::updateCamera()
 
 		gAgentAvatarp->mPelvisp->setPosition(gAgentAvatarp->mPelvisp->getPosition() + diff);
 
-		gAgentAvatarp->mRoot.updateWorldMatrixChildren();
+		gAgentAvatarp->mRoot->updateWorldMatrixChildren();
 
 		for (LLVOAvatar::attachment_map_t::iterator iter = gAgentAvatarp->mAttachmentPoints.begin(); 
 			 iter != gAgentAvatarp->mAttachmentPoints.end(); )
@@ -1684,7 +1684,7 @@ LLVector3d LLAgentCamera::calcCameraPositionTargetGlobal(BOOL *hit_limit)
 	F32			camera_land_height;
 	LLVector3d	frame_center_global = !isAgentAvatarValid() ? 
 		gAgent.getPositionGlobal() :
-		gAgent.getPosGlobalFromAgent(gAgentAvatarp->mRoot.getWorldPosition());
+		gAgent.getPosGlobalFromAgent(gAgentAvatarp->mRoot->getWorldPosition());
 	
 	BOOL		isConstrained = FALSE;
 	LLVector3d	head_offset;
diff --git a/indra/newview/llfloaterbvhpreview.cpp b/indra/newview/llfloaterbvhpreview.cpp
index fa0ad20fdb0..ce67c6c65d0 100644
--- a/indra/newview/llfloaterbvhpreview.cpp
+++ b/indra/newview/llfloaterbvhpreview.cpp
@@ -1097,12 +1097,12 @@ BOOL	LLPreviewAnimation::render()
 
 	gGL.flush();
 
-	LLVector3 target_pos = avatarp->mRoot.getWorldPosition();
+	LLVector3 target_pos = avatarp->mRoot->getWorldPosition();
 
 	LLQuaternion camera_rot = LLQuaternion(mCameraPitch, LLVector3::y_axis) * 
 		LLQuaternion(mCameraYaw, LLVector3::z_axis);
 
-	LLQuaternion av_rot = avatarp->mRoot.getWorldRotation() * camera_rot;
+	LLQuaternion av_rot = avatarp->mRoot->getWorldRotation() * camera_rot;
 	LLViewerCamera::getInstance()->setOriginAndLookAt(
 		target_pos + ((LLVector3(mCameraDistance, 0.f, 0.f) + mCameraOffset) * av_rot),		// camera
 		LLVector3::z_axis,																	// up
diff --git a/indra/newview/llfloaterimagepreview.cpp b/indra/newview/llfloaterimagepreview.cpp
index 6b2492d9275..887cd2f4b0d 100644
--- a/indra/newview/llfloaterimagepreview.cpp
+++ b/indra/newview/llfloaterimagepreview.cpp
@@ -593,7 +593,7 @@ S8 LLImagePreviewAvatar::getType() const
 
 void LLImagePreviewAvatar::setPreviewTarget(const std::string& joint_name, const std::string& mesh_name, LLImageRaw* imagep, F32 distance, BOOL male) 
 { 
-	mTargetJoint = mDummyAvatar->mRoot.findJoint(joint_name);
+	mTargetJoint = mDummyAvatar->mRoot->findJoint(joint_name);
 	// clear out existing test mesh
 	if (mTargetMesh)
 	{
@@ -612,9 +612,9 @@ void LLImagePreviewAvatar::setPreviewTarget(const std::string& joint_name, const
 		mDummyAvatar->updateVisualParams();
 		mDummyAvatar->updateGeometry(mDummyAvatar->mDrawable);
 	}
-	mDummyAvatar->mRoot.setVisible(FALSE, TRUE);
+	mDummyAvatar->mRoot->setVisible(FALSE, TRUE);
 
-	mTargetMesh = (LLViewerJointMesh*)mDummyAvatar->mRoot.findJoint(mesh_name);
+	mTargetMesh = (LLViewerJointMesh*)mDummyAvatar->mRoot->findJoint(mesh_name);
 	mTargetMesh->setTestTexture(mTextureName);
 	mTargetMesh->setVisible(TRUE, FALSE);
 	mCameraDistance = distance;
@@ -631,7 +631,7 @@ void LLImagePreviewAvatar::clearPreviewTexture(const std::string& mesh_name)
 {
 	if (mDummyAvatar)
 	{
-		LLViewerJointMesh *mesh = (LLViewerJointMesh*)mDummyAvatar->mRoot.findJoint(mesh_name);
+		LLViewerJointMesh *mesh = (LLViewerJointMesh*)mDummyAvatar->mRoot->findJoint(mesh_name);
 		// clear out existing test mesh
 		if (mesh)
 		{
diff --git a/indra/newview/llhudeffectlookat.cpp b/indra/newview/llhudeffectlookat.cpp
index bc3b220dc09..9dde65ceb6b 100644
--- a/indra/newview/llhudeffectlookat.cpp
+++ b/indra/newview/llhudeffectlookat.cpp
@@ -636,7 +636,7 @@ bool LLHUDEffectLookAt::calcTargetPosition()
 			}
 			else
 			{
-				target_rot = target_av->mRoot.getWorldRotation();
+				target_rot = target_av->mRoot->getWorldRotation();
 			}
 		}
 		else // target obj is not an avatar
diff --git a/indra/newview/llpolymorph.h b/indra/newview/llpolymorph.h
index 46e23b7792a..28d7755d4d2 100644
--- a/indra/newview/llpolymorph.h
+++ b/indra/newview/llpolymorph.h
@@ -35,7 +35,7 @@
 class LLPolyMeshSharedData;
 class LLVOAvatar;
 class LLVector2;
-class LLViewerJointCollisionVolume;
+class LLAvatarJointCollisionVolume;
 class LLWearable;
 
 //-----------------------------------------------------------------------------
@@ -104,10 +104,10 @@ struct LLPolyVolumeMorphInfo
 
 struct LLPolyVolumeMorph
 {
-	LLPolyVolumeMorph(LLViewerJointCollisionVolume* volume, LLVector3 scale, LLVector3 pos)
+	LLPolyVolumeMorph(LLAvatarJointCollisionVolume* volume, LLVector3 scale, LLVector3 pos)
 		: mVolume(volume), mScale(scale), mPos(pos) {};
 
-	LLViewerJointCollisionVolume*	mVolume;
+	LLAvatarJointCollisionVolume*	mVolume;
 	LLVector3						mScale;
 	LLVector3						mPos;
 };
diff --git a/indra/newview/llspatialpartition.cpp b/indra/newview/llspatialpartition.cpp
index c804898cc3f..fadaaf45417 100644
--- a/indra/newview/llspatialpartition.cpp
+++ b/indra/newview/llspatialpartition.cpp
@@ -4028,7 +4028,7 @@ void renderAgentTarget(LLVOAvatar* avatar)
 	{
 		renderCrossHairs(avatar->getPositionAgent(), 0.2f, LLColor4(1, 0, 0, 0.8f));
 		renderCrossHairs(avatar->mDrawable->getPositionAgent(), 0.2f, LLColor4(1, 0, 0, 0.8f));
-		renderCrossHairs(avatar->mRoot.getWorldPosition(), 0.2f, LLColor4(1, 1, 1, 0.8f));
+		renderCrossHairs(avatar->mRoot->getWorldPosition(), 0.2f, LLColor4(1, 1, 1, 0.8f));
 		renderCrossHairs(avatar->mPelvisp->getWorldPosition(), 0.2f, LLColor4(0, 0, 1, 0.8f));
 	}
 }
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index 6782e3ef8a7..ab06b1f5aa3 100755
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -1247,6 +1247,9 @@ bool idle_startup()
 		LLPostProcess::initClass();
 		display_startup();
 
+		LLAvatarAppearance::initClass();
+		display_startup();
+
 		LLViewerObject::initVOClasses();
 		display_startup();
 
diff --git a/indra/newview/llviewerjoint.cpp b/indra/newview/llviewerjoint.cpp
index a907f102f87..bb45cf89fc3 100644
--- a/indra/newview/llviewerjoint.cpp
+++ b/indra/newview/llviewerjoint.cpp
@@ -53,7 +53,7 @@ BOOL					LLViewerJoint::sDisableLOD = FALSE;
 // Class Constructor
 //-----------------------------------------------------------------------------
 LLViewerJoint::LLViewerJoint()
-	:       LLJoint()
+	:       LLAvatarJoint()
 {
 	init();
 }
@@ -64,7 +64,7 @@ LLViewerJoint::LLViewerJoint()
 // Class Constructor
 //-----------------------------------------------------------------------------
 LLViewerJoint::LLViewerJoint(const std::string &name, LLJoint *parent)
-	:	LLJoint(name, parent)
+	:	LLAvatarJoint(name, parent)
 {
 	init();
 }
@@ -90,31 +90,6 @@ LLViewerJoint::~LLViewerJoint()
 }
 
 
-//--------------------------------------------------------------------
-// setValid()
-//--------------------------------------------------------------------
-void LLViewerJoint::setValid( BOOL valid, BOOL recursive )
-{
-	//----------------------------------------------------------------
-	// set visibility for this joint
-	//----------------------------------------------------------------
-	mValid = valid;
-	
-	//----------------------------------------------------------------
-	// set visibility for children
-	//----------------------------------------------------------------
-	if (recursive)
-	{
-		for (child_list_t::iterator iter = mChildren.begin();
-			 iter != mChildren.end(); ++iter)
-		{
-			LLViewerJoint* joint = (LLViewerJoint*)(*iter);
-			joint->setValid(valid, TRUE);
-		}
-	}
-
-}
-
 //--------------------------------------------------------------------
 // renderSkeleton()
 // DEBUG (UNUSED)
@@ -522,98 +497,6 @@ void LLViewerJoint::setMeshesToChildren()
 		addChild((LLViewerJointMesh *) *iter);
 	}
 }
-//-----------------------------------------------------------------------------
-// LLViewerJointCollisionVolume()
-//-----------------------------------------------------------------------------
-
-LLViewerJointCollisionVolume::LLViewerJointCollisionVolume()
-{
-	mUpdateXform = FALSE;
-}
 
-LLViewerJointCollisionVolume::LLViewerJointCollisionVolume(const std::string &name, LLJoint *parent) : LLViewerJoint(name, parent)
-{
-	
-}
-
-void LLViewerJointCollisionVolume::renderCollision()
-{
-	updateWorldMatrix();
-	
-	gGL.pushMatrix();
-	gGL.multMatrix( &mXform.getWorldMatrix().mMatrix[0][0] );
-
-	gGL.diffuseColor3f( 0.f, 0.f, 1.f );
-	
-	gGL.begin(LLRender::LINES);
-	
-	LLVector3 v[] = 
-	{
-		LLVector3(1,0,0),
-		LLVector3(-1,0,0),
-		LLVector3(0,1,0),
-		LLVector3(0,-1,0),
-
-		LLVector3(0,0,-1),
-		LLVector3(0,0,1),
-	};
-
-	//sides
-	gGL.vertex3fv(v[0].mV); 
-	gGL.vertex3fv(v[2].mV);
-
-	gGL.vertex3fv(v[0].mV); 
-	gGL.vertex3fv(v[3].mV);
-
-	gGL.vertex3fv(v[1].mV); 
-	gGL.vertex3fv(v[2].mV);
-
-	gGL.vertex3fv(v[1].mV); 
-	gGL.vertex3fv(v[3].mV);
-
-
-	//top
-	gGL.vertex3fv(v[0].mV); 
-	gGL.vertex3fv(v[4].mV);
-
-	gGL.vertex3fv(v[1].mV); 
-	gGL.vertex3fv(v[4].mV);
-
-	gGL.vertex3fv(v[2].mV); 
-	gGL.vertex3fv(v[4].mV);
-
-	gGL.vertex3fv(v[3].mV); 
-	gGL.vertex3fv(v[4].mV);
-
-
-	//bottom
-	gGL.vertex3fv(v[0].mV); 
-	gGL.vertex3fv(v[5].mV);
-
-	gGL.vertex3fv(v[1].mV); 
-	gGL.vertex3fv(v[5].mV);
-
-	gGL.vertex3fv(v[2].mV); 
-	gGL.vertex3fv(v[5].mV);
-
-	gGL.vertex3fv(v[3].mV); 
-	gGL.vertex3fv(v[5].mV);
-
-	gGL.end();
-
-	gGL.popMatrix();
-}
-
-LLVector3 LLViewerJointCollisionVolume::getVolumePos(LLVector3 &offset)
-{
-	mUpdateXform = TRUE;
-	
-	LLVector3 result = offset;
-	result.scaleVec(getScale());
-	result.rotVec(getWorldRotation());
-	result += getWorldPosition();
-
-	return result;
-}
 
 // End
diff --git a/indra/newview/llviewerjoint.h b/indra/newview/llviewerjoint.h
index 531c0f765cb..37c80dafeb3 100644
--- a/indra/newview/llviewerjoint.h
+++ b/indra/newview/llviewerjoint.h
@@ -30,7 +30,7 @@
 //-----------------------------------------------------------------------------
 // Header Files
 //-----------------------------------------------------------------------------
-#include "lljoint.h"
+#include "llavatarjoint.h"
 #include "lljointpickname.h"
 
 class LLFace;
@@ -40,7 +40,7 @@ class LLViewerJointMesh;
 // class LLViewerJoint
 //-----------------------------------------------------------------------------
 class LLViewerJoint :
-	public LLJoint
+	public LLAvatarJoint
 {
 public:
 	LLViewerJoint();
@@ -50,9 +50,6 @@ class LLViewerJoint :
 	// Gets the validity of this joint
 	BOOL getValid() { return mValid; }
 
-	// Sets the validity of this joint
-	virtual void setValid( BOOL valid, BOOL recursive=FALSE );
-
 	// Primarily for debugging and character setup
 	// Derived classes may add text/graphic output.
 	// Draw skeleton graphic for debugging and character setup
@@ -134,19 +131,6 @@ class LLViewerJoint :
 	S32			mMeshID;
 };
 
-class LLViewerJointCollisionVolume : public LLViewerJoint
-{
-public:
-	LLViewerJointCollisionVolume();
-	LLViewerJointCollisionVolume(const std::string &name, LLJoint *parent = NULL);
-	virtual ~LLViewerJointCollisionVolume() {};
-
-	virtual BOOL inheritScale() { return TRUE; }
-
-	void renderCollision();
-	LLVector3 getVolumePos(LLVector3 &offset);
-};
-
 #endif // LL_LLVIEWERJOINT_H
 
 
diff --git a/indra/newview/llviewerjointmesh.cpp b/indra/newview/llviewerjointmesh.cpp
index 3532fac1bc0..8d479ab0bf0 100755
--- a/indra/newview/llviewerjointmesh.cpp
+++ b/indra/newview/llviewerjointmesh.cpp
@@ -67,101 +67,20 @@ static const U32 sRenderMask = LLVertexBuffer::MAP_VERTEX |
 							   LLVertexBuffer::MAP_NORMAL |
 							   LLVertexBuffer::MAP_TEXCOORD0;
 
-
-//-----------------------------------------------------------------------------
-//-----------------------------------------------------------------------------
-// LLViewerJointMesh::LLSkinJoint
-//-----------------------------------------------------------------------------
-//-----------------------------------------------------------------------------
-
-//-----------------------------------------------------------------------------
-// LLSkinJoint
-//-----------------------------------------------------------------------------
-LLSkinJoint::LLSkinJoint()
-{
-	mJoint       = NULL;
-}
-
-//-----------------------------------------------------------------------------
-// ~LLSkinJoint
-//-----------------------------------------------------------------------------
-LLSkinJoint::~LLSkinJoint()
-{
-	mJoint = NULL;
-}
-
-
-//-----------------------------------------------------------------------------
-// LLSkinJoint::setupSkinJoint()
-//-----------------------------------------------------------------------------
-BOOL LLSkinJoint::setupSkinJoint( LLViewerJoint *joint)
-{
-	// find the named joint
-	mJoint = joint;
-	if ( !mJoint )
-	{
-		llinfos << "Can't find joint" << llendl;
-	}
-
-	// compute the inverse root skin matrix
-	mRootToJointSkinOffset.clearVec();
-
-	LLVector3 rootSkinOffset;
-	while (joint)
-	{
-		rootSkinOffset += joint->getSkinOffset();
-		joint = (LLViewerJoint*)joint->getParent();
-	}
-
-	mRootToJointSkinOffset = -rootSkinOffset;
-	mRootToParentJointSkinOffset = mRootToJointSkinOffset;
-	mRootToParentJointSkinOffset += mJoint->getSkinOffset();
-
-	return TRUE;
-}
-
-
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 // LLViewerJointMesh
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 
-BOOL LLViewerJointMesh::sPipelineRender = FALSE;
-EAvatarRenderPass LLViewerJointMesh::sRenderPass = AVATAR_RENDER_PASS_SINGLE;
-U32 LLViewerJointMesh::sClothingMaskImageName = 0;
-LLColor4 LLViewerJointMesh::sClothingInnerColor;
 
 //-----------------------------------------------------------------------------
 // LLViewerJointMesh()
 //-----------------------------------------------------------------------------
 LLViewerJointMesh::LLViewerJointMesh()
 	:
-	mTexture( NULL ),
-	mLayerSet( NULL ),
-	mTestImageName( 0 ),
-	mFaceIndexCount(0),
-	mIsTransparent(FALSE)
+	LLAvatarJointMesh()
 {
-
-	mColor[0] = 1.0f;
-	mColor[1] = 1.0f;
-	mColor[2] = 1.0f;
-	mColor[3] = 1.0f;
-	mShiny = 0.0f;
-	mCullBackFaces = TRUE;
-
-	mMesh = NULL;
-
-	mNumSkinJoints = 0;
-	mSkinJoints = NULL;
-
-	mFace = NULL;
-
-	mMeshID = 0;
-	mUpdateXform = FALSE;
-
-	mValid = FALSE;
 }
 
 
@@ -171,199 +90,6 @@ LLViewerJointMesh::LLViewerJointMesh()
 //-----------------------------------------------------------------------------
 LLViewerJointMesh::~LLViewerJointMesh()
 {
-	mMesh = NULL;
-	mTexture = NULL;
-	freeSkinData();
-}
-
-
-//-----------------------------------------------------------------------------
-// LLViewerJointMesh::allocateSkinData()
-//-----------------------------------------------------------------------------
-BOOL LLViewerJointMesh::allocateSkinData( U32 numSkinJoints )
-{
-	mSkinJoints = new LLSkinJoint[ numSkinJoints ];
-	mNumSkinJoints = numSkinJoints;
-	return TRUE;
-}
-
-//-----------------------------------------------------------------------------
-// LLViewerJointMesh::freeSkinData()
-//-----------------------------------------------------------------------------
-void LLViewerJointMesh::freeSkinData()
-{
-	mNumSkinJoints = 0;
-	delete [] mSkinJoints;
-	mSkinJoints = NULL;
-}
-
-//--------------------------------------------------------------------
-// LLViewerJointMesh::getColor()
-//--------------------------------------------------------------------
-void LLViewerJointMesh::getColor( F32 *red, F32 *green, F32 *blue, F32 *alpha )
-{
-	*red   = mColor[0];
-	*green = mColor[1];
-	*blue  = mColor[2];
-	*alpha = mColor[3];
-}
-
-//--------------------------------------------------------------------
-// LLViewerJointMesh::setColor()
-//--------------------------------------------------------------------
-void LLViewerJointMesh::setColor( F32 red, F32 green, F32 blue, F32 alpha )
-{
-	mColor[0] = red;
-	mColor[1] = green;
-	mColor[2] = blue;
-	mColor[3] = alpha;
-}
-
-
-//--------------------------------------------------------------------
-// LLViewerJointMesh::getTexture()
-//--------------------------------------------------------------------
-//LLViewerTexture *LLViewerJointMesh::getTexture()
-//{
-//	return mTexture;
-//}
-
-//--------------------------------------------------------------------
-// LLViewerJointMesh::setTexture()
-//--------------------------------------------------------------------
-void LLViewerJointMesh::setTexture( LLViewerTexture *texture )
-{
-	mTexture = texture;
-
-	// texture and dynamic_texture are mutually exclusive
-	if( texture )
-	{
-		mLayerSet = NULL;
-		//texture->bindTexture(0);
-		//texture->setClamp(TRUE, TRUE);
-	}
-}
-
-//--------------------------------------------------------------------
-// LLViewerJointMesh::setLayerSet()
-// Sets the shape texture (takes precedence over normal texture)
-//--------------------------------------------------------------------
-void LLViewerJointMesh::setLayerSet( LLViewerTexLayerSet* layer_set )
-{
-	mLayerSet = layer_set;
-	
-	// texture and dynamic_texture are mutually exclusive
-	if( layer_set )
-	{
-		mTexture = NULL;
-	}
-}
-
-
-
-//--------------------------------------------------------------------
-// LLViewerJointMesh::getMesh()
-//--------------------------------------------------------------------
-LLPolyMesh *LLViewerJointMesh::getMesh()
-{
-	return mMesh;
-}
-
-//-----------------------------------------------------------------------------
-// LLViewerJointMesh::setMesh()
-//-----------------------------------------------------------------------------
-void LLViewerJointMesh::setMesh( LLPolyMesh *mesh )
-{
-	// set the mesh pointer
-	mMesh = mesh;
-
-	// release any existing skin joints
-	freeSkinData();
-
-	if ( mMesh == NULL )
-	{
-		return;
-	}
-
-	// acquire the transform from the mesh object
-	setPosition( mMesh->getPosition() );
-	setRotation( mMesh->getRotation() );
-	setScale( mMesh->getScale() );
-
-	// create skin joints if necessary
-	if ( mMesh->hasWeights() && !mMesh->isLOD())
-	{
-		U32 numJointNames = mMesh->getNumJointNames();
-		
-		allocateSkinData( numJointNames );
-		std::string *jointNames = mMesh->getJointNames();
-
-		U32 jn;
-		for (jn = 0; jn < numJointNames; jn++)
-		{
-			//llinfos << "Setting up joint " << jointNames[jn] << llendl;
-			LLViewerJoint* joint = (LLViewerJoint*)(getRoot()->findJoint(jointNames[jn]) );
-			mSkinJoints[jn].setupSkinJoint( joint );
-		}
-	}
-
-	// setup joint array
-	if (!mMesh->isLOD())
-	{
-		setupJoint((LLViewerJoint*)getRoot());
-	}
-
-//	llinfos << "joint render entries: " << mMesh->mJointRenderData.count() << llendl;
-}
-
-//-----------------------------------------------------------------------------
-// setupJoint()
-//-----------------------------------------------------------------------------
-void LLViewerJointMesh::setupJoint(LLViewerJoint* current_joint)
-{
-//	llinfos << "Mesh: " << getName() << llendl;
-
-//	S32 joint_count = 0;
-	U32 sj;
-	for (sj=0; sj<mNumSkinJoints; sj++)
-	{
-		LLSkinJoint &js = mSkinJoints[sj];
-
-		if (js.mJoint != current_joint)
-		{
-			continue;
-		}
-
-		// we've found a skinjoint for this joint..
-
-		// is the last joint in the array our parent?
-		if(mMesh->mJointRenderData.count() && mMesh->mJointRenderData[mMesh->mJointRenderData.count() - 1]->mWorldMatrix == &current_joint->getParent()->getWorldMatrix())
-		{
-			// ...then just add ourselves
-			LLViewerJoint* jointp = js.mJoint;
-			mMesh->mJointRenderData.put(new LLJointRenderData(&jointp->getWorldMatrix(), &js));
-//			llinfos << "joint " << joint_count << js.mJoint->getName() << llendl;
-//			joint_count++;
-		}
-		// otherwise add our parent and ourselves
-		else
-		{
-			mMesh->mJointRenderData.put(new LLJointRenderData(&current_joint->getParent()->getWorldMatrix(), NULL));
-//			llinfos << "joint " << joint_count << current_joint->getParent()->getName() << llendl;
-//			joint_count++;
-			mMesh->mJointRenderData.put(new LLJointRenderData(&current_joint->getWorldMatrix(), &js));
-//			llinfos << "joint " << joint_count << current_joint->getName() << llendl;
-//			joint_count++;
-		}
-	}
-
-	// depth-first traversal
-	for (LLJoint::child_list_t::iterator iter = current_joint->mChildren.begin();
-		 iter != current_joint->mChildren.end(); ++iter)
-	{
-		LLViewerJoint* child_joint = (LLViewerJoint*)(*iter);
-		setupJoint(child_joint);
-	}
 }
 
 const S32 NUM_AXES = 3;
@@ -544,6 +270,7 @@ U32 LLViewerJointMesh::drawShape( F32 pixelArea, BOOL first_pass, BOOL is_dummy)
 	llassert( !(mTexture.notNull() && mLayerSet) );  // mutually exclusive
 
 	LLTexUnit::eTextureAddressMode old_mode = LLTexUnit::TAM_WRAP;
+	LLViewerTexLayerSet *layerset = dynamic_cast<LLViewerTexLayerSet*>(mLayerSet);
 	if (mTestImageName)
 	{
 		gGL.getTexUnit(diffuse_channel)->bindManual(LLTexUnit::TT_TEXTURE, mTestImageName);
@@ -558,11 +285,11 @@ U32 LLViewerJointMesh::drawShape( F32 pixelArea, BOOL first_pass, BOOL is_dummy)
 			gGL.getTexUnit(diffuse_channel)->setTextureColorBlend(LLTexUnit::TBO_LERP_TEX_ALPHA, LLTexUnit::TBS_TEX_COLOR, LLTexUnit::TBS_PREV_COLOR);
 		}
 	}
-	else if( !is_dummy && mLayerSet )
+	else if( !is_dummy && layerset )
 	{
-		if(	mLayerSet->hasComposite() )
+		if(	layerset->hasComposite() )
 		{
-			gGL.getTexUnit(diffuse_channel)->bind(mLayerSet->getViewerComposite());
+			gGL.getTexUnit(diffuse_channel)->bind(layerset->getViewerComposite());
 		}
 		else
 		{
diff --git a/indra/newview/llviewerjointmesh.h b/indra/newview/llviewerjointmesh.h
index ff6bed4f0f9..039175830f4 100755
--- a/indra/newview/llviewerjointmesh.h
+++ b/indra/newview/llviewerjointmesh.h
@@ -29,6 +29,7 @@
 
 #include "llviewerjoint.h"
 #include "llviewertexture.h"
+#include "llavatarjointmesh.h"
 #include "llpolymesh.h"
 #include "v4color.h"
 
@@ -37,56 +38,12 @@ class LLFace;
 class LLCharacter;
 class LLViewerTexLayerSet;
 
-typedef enum e_avatar_render_pass
-{
-	AVATAR_RENDER_PASS_SINGLE,
-	AVATAR_RENDER_PASS_CLOTHING_INNER,
-	AVATAR_RENDER_PASS_CLOTHING_OUTER
-} EAvatarRenderPass;
-
-class LLSkinJoint
-{
-public:
-	LLSkinJoint();
-	~LLSkinJoint();
-	BOOL setupSkinJoint( LLViewerJoint *joint);
-
-	LLViewerJoint	*mJoint;
-	LLVector3		mRootToJointSkinOffset;
-	LLVector3		mRootToParentJointSkinOffset;
-};
-
 //-----------------------------------------------------------------------------
 // class LLViewerJointMesh
 //-----------------------------------------------------------------------------
-class LLViewerJointMesh : public LLViewerJoint
+class LLViewerJointMesh : public LLAvatarJointMesh
 {
 	friend class LLVOAvatar;
-protected:
-	LLColor4					mColor;			// color value
-// 	LLColor4					mSpecular;		// specular color (always white for now)
-	F32							mShiny;			// shiny value
-	LLPointer<LLViewerTexture>	mTexture;		// ptr to a global texture
-	LLViewerTexLayerSet*		mLayerSet;		// ptr to a layer set owned by the avatar
-	U32 						mTestImageName;		// handle to a temporary texture for previewing uploads
-	LLPolyMesh*					mMesh;			// ptr to a global polymesh
-	BOOL						mCullBackFaces;	// true by default
-	LLFace*						mFace;			// ptr to a face w/ AGP copy of mesh
-
-	U32							mFaceIndexCount;
-	BOOL						mIsTransparent;
-
-	U32							mNumSkinJoints;
-	LLSkinJoint*				mSkinJoints;
-	S32							mMeshID;
-
-public:
-	static BOOL					sPipelineRender;
-	//RN: this is here for testing purposes
-	static U32					sClothingMaskImageName;
-	static EAvatarRenderPass	sRenderPass;
-	static LLColor4				sClothingInnerColor;
-
 public:
 	// Constructor
 	LLViewerJointMesh();
@@ -94,41 +51,9 @@ class LLViewerJointMesh : public LLViewerJoint
 	// Destructor
 	virtual ~LLViewerJointMesh();
 
-	// Gets the shape color
-	void getColor( F32 *red, F32 *green, F32 *blue, F32 *alpha );
-
-	// Sets the shape color
-	void setColor( F32 red, F32 green, F32 blue, F32 alpha );
-
-	// Sets the shininess
-	void setSpecular( const LLColor4& color, F32 shiny ) { /*mSpecular = color;*/ mShiny = shiny; };
-
-	// Sets the shape texture
-	void setTexture( LLViewerTexture *texture );
-
-	void setTestTexture( U32 name ) { mTestImageName = name; }
-
-	// Sets layer set responsible for a dynamic shape texture (takes precedence over normal texture)
-	void setLayerSet( LLViewerTexLayerSet* layer_set );
-
-	// Gets the poly mesh
-	LLPolyMesh *getMesh();
-
-	// Sets the poly mesh
-	void setMesh( LLPolyMesh *mesh );
-
-	// Sets up joint matrix data for rendering
-	void setupJoint(LLViewerJoint* current_joint);
-
 	// Render time method to upload batches of joint matrices
 	void uploadJointMatrices();
 
-	// Sets ID for picking
-	void setMeshID( S32 id ) {mMeshID = id;}
-
-	// Gets ID for picking
-	S32 getMeshID() { return mMeshID; }	
-
 	// overloaded from base class
 	/*virtual*/ void drawBone();
 	/*virtual*/ BOOL isTransparent();
@@ -148,13 +73,6 @@ class LLViewerJointMesh : public LLViewerJoint
 
 	//copy mesh into given face's vertex buffer, applying current animation pose
 	static void updateGeometry(LLFace* face, LLPolyMesh* mesh);
-
-private:
-	// Allocate skin data
-	BOOL allocateSkinData( U32 numSkinJoints );
-
-	// Free skin data
-	void freeSkinData();
 };
 
 #endif // LL_LLVIEWERJOINTMESH_H
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index d5ca01931f1..8fc5a3f277f 100755
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -382,7 +382,7 @@ class LLDebugText
 
 			if (isAgentAvatarValid())
 			{
-				tvector = gAgent.getPosGlobalFromAgent(gAgentAvatarp->mRoot.getWorldPosition());
+				tvector = gAgent.getPosGlobalFromAgent(gAgentAvatarp->mRoot->getWorldPosition());
 				agent_root_center_text = llformat("AgentRootCenter %f %f %f",
 												  (F32)(tvector.mdV[VX]), (F32)(tvector.mdV[VY]), (F32)(tvector.mdV[VZ]));
 			}
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index f6cac6d2d6a..f0f469e9599 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -139,7 +139,6 @@ const LLUUID ANIM_AGENT_PHYSICS_MOTION = LLUUID("7360e029-3cb8-ebc4-863e-212df44
 //-----------------------------------------------------------------------------
 // Constants
 //-----------------------------------------------------------------------------
-const std::string AVATAR_DEFAULT_CHAR = "avatar";
 
 const S32 MIN_PIXEL_AREA_FOR_COMPOSITE = 1024;
 const F32 SHADOW_OFFSET_AMT = 0.03f;
@@ -220,58 +219,6 @@ struct LLTextureMaskData
  **
  **/
 
-//------------------------------------------------------------------------
-// LLVOBoneInfo
-// Trans/Scale/Rot etc. info about each avatar bone.  Used by LLVOAvatarSkeleton.
-//------------------------------------------------------------------------
-class LLVOAvatarBoneInfo
-{
-	friend class LLVOAvatar;
-	friend class LLVOAvatarSkeletonInfo;
-public:
-	LLVOAvatarBoneInfo() : mIsJoint(FALSE) {}
-	~LLVOAvatarBoneInfo()
-	{
-		std::for_each(mChildList.begin(), mChildList.end(), DeletePointer());
-	}
-	BOOL parseXml(LLXmlTreeNode* node);
-	
-private:
-	std::string mName;
-	BOOL mIsJoint;
-	LLVector3 mPos;
-	LLVector3 mRot;
-	LLVector3 mScale;
-	LLVector3 mPivot;
-	typedef std::vector<LLVOAvatarBoneInfo*> child_list_t;
-	child_list_t mChildList;
-};
-
-//------------------------------------------------------------------------
-// LLVOAvatarSkeletonInfo
-// Overall avatar skeleton
-//------------------------------------------------------------------------
-class LLVOAvatarSkeletonInfo
-{
-	friend class LLVOAvatar;
-public:
-	LLVOAvatarSkeletonInfo() :
-		mNumBones(0), mNumCollisionVolumes(0) {}
-	~LLVOAvatarSkeletonInfo()
-	{
-		std::for_each(mBoneInfoList.begin(), mBoneInfoList.end(), DeletePointer());
-	}
-	BOOL parseXml(LLXmlTreeNode* node);
-	S32 getNumBones() const { return mNumBones; }
-	S32 getNumCollisionVolumes() const { return mNumCollisionVolumes; }
-	
-private:
-	S32 mNumBones;
-	S32 mNumCollisionVolumes;
-	typedef std::vector<LLVOAvatarBoneInfo*> bone_info_list_t;
-	bone_info_list_t mBoneInfoList;
-};
-
 //-----------------------------------------------------------------------------
 // class LLBodyNoiseMotion
 //-----------------------------------------------------------------------------
@@ -593,10 +540,6 @@ class LLPelvisFixMotion :
 //-----------------------------------------------------------------------------
 // Static Data
 //-----------------------------------------------------------------------------
-LLXmlTree LLVOAvatar::sXMLTree;
-LLXmlTree LLVOAvatar::sSkeletonXMLTree;
-LLVOAvatarSkeletonInfo* LLVOAvatar::sAvatarSkeletonInfo = NULL;
-LLVOAvatar::LLVOAvatarXmlInfo* LLVOAvatar::sAvatarXmlInfo = NULL;
 LLAvatarAppearanceDictionary *LLVOAvatar::sAvatarDictionary = NULL;
 S32 LLVOAvatar::sFreezeCounter = 0;
 U32 LLVOAvatar::sMaxVisible = 12;
@@ -650,9 +593,7 @@ LLVOAvatar::LLVOAvatar(const LLUUID& id,
 	mAttachmentGeometryBytes(0),
 	mAttachmentSurfaceArea(0.f),
 	mTurning(FALSE),
-	mPelvisToFoot(0.f),
 	mLastSkeletonSerialNum( 0 ),
-	mHeadOffset(),
 	mIsSitting(FALSE),
 	mTimeVisible(),
 	mTyping(FALSE),
@@ -707,13 +648,6 @@ LLVOAvatar::LLVOAvatar(const LLUUID& id,
 	mMeshTexturesDirty = FALSE;
 	mHeadp = NULL;
 
-	mIsBuilt = FALSE;
-
-	mNumJoints = 0;
-	mSkeleton = NULL;
-
-	mNumCollisionVolumes = 0;
-	mCollisionVolumes = NULL;
 
 	// set up animation variables
 	mSpeed = 0.f;
@@ -802,35 +736,9 @@ LLVOAvatar::~LLVOAvatar()
 
 	lldebugs << "LLVOAvatar Destructor (0x" << this << ") id:" << mID << llendl;
 
-	mRoot.removeAllChildren();
-	mJointMap.clear();
-
-	deleteAndClearArray(mSkeleton);
-	deleteAndClearArray(mCollisionVolumes);
-
-	mNumJoints = 0;
-
 	std::for_each(mAttachmentPoints.begin(), mAttachmentPoints.end(), DeletePairedPointer());
 	mAttachmentPoints.clear();
 
-	deleteAndClear(mTexSkinColor);
-	deleteAndClear(mTexHairColor);
-	deleteAndClear(mTexEyeColor);
-
-	std::for_each(mMeshes.begin(), mMeshes.end(), DeletePairedPointer());
-	mMeshes.clear();
-
-	for (std::vector<LLViewerJoint*>::iterator jointIter = mMeshLOD.begin();
-		 jointIter != mMeshLOD.end(); 
-		 ++jointIter)
-	{
-		LLViewerJoint* joint = (LLViewerJoint *) *jointIter;
-		std::for_each(joint->mMeshParts.begin(), joint->mMeshParts.end(), DeletePointer());
-		joint->mMeshParts.clear();
-	}
-	std::for_each(mMeshLOD.begin(), mMeshLOD.end(), DeletePointer());
-	mMeshLOD.clear();
-	
 	mDead = TRUE;
 	
 	mAnimationSources.clear();
@@ -1127,109 +1035,6 @@ void LLVOAvatar::deleteCachedImages(bool clearAll)
 //------------------------------------------------------------------------
 void LLVOAvatar::initClass()
 { 
-	std::string xmlFile;
-
-	xmlFile = gDirUtilp->getExpandedFilename(LL_PATH_CHARACTER,AVATAR_DEFAULT_CHAR) + "_lad.xml";
-	BOOL success = sXMLTree.parseFile( xmlFile, FALSE );
-	if (!success)
-	{
-		llerrs << "Problem reading avatar configuration file:" << xmlFile << llendl;
-	}
-
-	// now sanity check xml file
-	LLXmlTreeNode* root = sXMLTree.getRoot();
-	if (!root) 
-	{
-		llerrs << "No root node found in avatar configuration file: " << xmlFile << llendl;
-		return;
-	}
-
-	//-------------------------------------------------------------------------
-	// <linden_avatar version="1.0"> (root)
-	//-------------------------------------------------------------------------
-	if( !root->hasName( "linden_avatar" ) )
-	{
-		llerrs << "Invalid avatar file header: " << xmlFile << llendl;
-	}
-	
-	std::string version;
-	static LLStdStringHandle version_string = LLXmlTree::addAttributeString("version");
-	if( !root->getFastAttributeString( version_string, version ) || (version != "1.0") )
-	{
-		llerrs << "Invalid avatar file version: " << version << " in file: " << xmlFile << llendl;
-	}
-
-	S32 wearable_def_version = 1;
-	static LLStdStringHandle wearable_definition_version_string = LLXmlTree::addAttributeString("wearable_definition_version");
-	root->getFastAttributeS32( wearable_definition_version_string, wearable_def_version );
-	LLWearable::setCurrentDefinitionVersion( wearable_def_version );
-
-	std::string mesh_file_name;
-
-	LLXmlTreeNode* skeleton_node = root->getChildByName( "skeleton" );
-	if (!skeleton_node)
-	{
-		llerrs << "No skeleton in avatar configuration file: " << xmlFile << llendl;
-		return;
-	}
-	
-	std::string skeleton_file_name;
-	static LLStdStringHandle file_name_string = LLXmlTree::addAttributeString("file_name");
-	if (!skeleton_node->getFastAttributeString(file_name_string, skeleton_file_name))
-	{
-		llerrs << "No file name in skeleton node in avatar config file: " << xmlFile << llendl;
-	}
-	
-	std::string skeleton_path;
-	skeleton_path = gDirUtilp->getExpandedFilename(LL_PATH_CHARACTER,skeleton_file_name);
-	if (!parseSkeletonFile(skeleton_path))
-	{
-		llerrs << "Error parsing skeleton file: " << skeleton_path << llendl;
-	}
-
-	// Process XML data
-
-	// avatar_skeleton.xml
-	if (sAvatarSkeletonInfo)
-	{ //this can happen if a login attempt failed
-		delete sAvatarSkeletonInfo;
-	}
-	sAvatarSkeletonInfo = new LLVOAvatarSkeletonInfo;
-	if (!sAvatarSkeletonInfo->parseXml(sSkeletonXMLTree.getRoot()))
-	{
-		llerrs << "Error parsing skeleton XML file: " << skeleton_path << llendl;
-	}
-	// parse avatar_lad.xml
-	if (sAvatarXmlInfo)
-	{ //this can happen if a login attempt failed
-		deleteAndClear(sAvatarXmlInfo);
-	}
-	sAvatarXmlInfo = new LLVOAvatarXmlInfo;
-	if (!sAvatarXmlInfo->parseXmlSkeletonNode(root))
-	{
-		llerrs << "Error parsing skeleton node in avatar XML file: " << skeleton_path << llendl;
-	}
-	if (!sAvatarXmlInfo->parseXmlMeshNodes(root))
-	{
-		llerrs << "Error parsing skeleton node in avatar XML file: " << skeleton_path << llendl;
-	}
-	if (!sAvatarXmlInfo->parseXmlColorNodes(root))
-	{
-		llerrs << "Error parsing skeleton node in avatar XML file: " << skeleton_path << llendl;
-	}
-	if (!sAvatarXmlInfo->parseXmlLayerNodes(root))
-	{
-		llerrs << "Error parsing skeleton node in avatar XML file: " << skeleton_path << llendl;
-	}
-	if (!sAvatarXmlInfo->parseXmlDriverNodes(root))
-	{
-		llerrs << "Error parsing skeleton node in avatar XML file: " << skeleton_path << llendl;
-	}
-	if (!sAvatarXmlInfo->parseXmlMorphNodes(root))
-	{
-		llerrs << "Error parsing skeleton node in avatar XML file: " << skeleton_path << llendl;
-	}
-
 	gAnimLibrary.animStateSetString(ANIM_AGENT_BODY_NOISE,"body_noise");
 	gAnimLibrary.animStateSetString(ANIM_AGENT_BREATHE_ROT,"breathe_rot");
 	gAnimLibrary.animStateSetString(ANIM_AGENT_PHYSICS_MOTION,"physics_motion");
@@ -1256,7 +1061,12 @@ void LLVOAvatar::initInstance(void)
 	//-------------------------------------------------------------------------
 	// initialize joint, mesh and shape members
 	//-------------------------------------------------------------------------
-	mRoot.setName( "mRoot" );
+	if (mRoot)
+	{
+		delete mRoot;
+	}
+	mRoot = new LLViewerJoint();
+	mRoot->setName( "mRoot" );
 	
 	for (LLAvatarAppearanceDictionary::Meshes::const_iterator iter = LLAvatarAppearanceDictionary::getInstance()->getMeshes().begin();
 		 iter != LLAvatarAppearanceDictionary::getInstance()->getMeshes().end();
@@ -1314,7 +1124,7 @@ void LLVOAvatar::initInstance(void)
 		// Skip it if there's no associated baked texture.
 		if (baked_texture_index == BAKED_NUM_INDICES) continue;
 		
-		for (std::vector<LLViewerJointMesh* >::iterator iter = mMeshLOD[mesh_index]->mMeshParts.begin();
+		for (std::vector<LLAvatarJointMesh* >::iterator iter = mMeshLOD[mesh_index]->mMeshParts.begin();
 			 iter != mMeshLOD[mesh_index]->mMeshParts.end(); 
 			 ++iter)
 		{
@@ -1707,160 +1517,6 @@ LLViewerObject* LLVOAvatar::lineSegmentIntersectRiggedAttachments(const LLVector
 	return hit;
 }
 
-//-----------------------------------------------------------------------------
-// parseSkeletonFile()
-//-----------------------------------------------------------------------------
-BOOL LLVOAvatar::parseSkeletonFile(const std::string& filename)
-{
-	LLMemType mt(LLMemType::MTYPE_AVATAR);
-	
-	//-------------------------------------------------------------------------
-	// parse the file
-	//-------------------------------------------------------------------------
-	BOOL parsesuccess = sSkeletonXMLTree.parseFile( filename, FALSE );
-
-	if (!parsesuccess)
-	{
-		llerrs << "Can't parse skeleton file: " << filename << llendl;
-		return FALSE;
-	}
-
-	// now sanity check xml file
-	LLXmlTreeNode* root = sSkeletonXMLTree.getRoot();
-	if (!root) 
-	{
-		llerrs << "No root node found in avatar skeleton file: " << filename << llendl;
-		return FALSE;
-	}
-
-	if( !root->hasName( "linden_skeleton" ) )
-	{
-		llerrs << "Invalid avatar skeleton file header: " << filename << llendl;
-		return FALSE;
-	}
-
-	std::string version;
-	static LLStdStringHandle version_string = LLXmlTree::addAttributeString("version");
-	if( !root->getFastAttributeString( version_string, version ) || (version != "1.0") )
-	{
-		llerrs << "Invalid avatar skeleton file version: " << version << " in file: " << filename << llendl;
-		return FALSE;
-	}
-
-	return TRUE;
-}
-
-//-----------------------------------------------------------------------------
-// setupBone()
-//-----------------------------------------------------------------------------
-BOOL LLVOAvatar::setupBone(const LLVOAvatarBoneInfo* info, LLViewerJoint* parent, S32 &volume_num, S32 &joint_num)
-{
-	LLMemType mt(LLMemType::MTYPE_AVATAR);
-	
-	LLViewerJoint* joint = NULL;
-
-	if (info->mIsJoint)
-	{
-		joint = (LLViewerJoint*)getCharacterJoint(joint_num);
-		if (!joint)
-		{
-			llwarns << "Too many bones" << llendl;
-			return FALSE;
-		}
-		joint->setName( info->mName );
-	}
-	else // collision volume
-	{
-		if (volume_num >= (S32)mNumCollisionVolumes)
-		{
-			llwarns << "Too many bones" << llendl;
-			return FALSE;
-		}
-		joint = (LLViewerJoint*)(&mCollisionVolumes[volume_num]);
-		joint->setName( info->mName );
-	}
-
-	// add to parent
-	if (parent)
-	{
-		parent->addChild( joint );
-	}
-
-	joint->setPosition(info->mPos);
-	joint->setRotation(mayaQ(info->mRot.mV[VX], info->mRot.mV[VY],
-							 info->mRot.mV[VZ], LLQuaternion::XYZ));
-	joint->setScale(info->mScale);
-
-	joint->setDefaultFromCurrentXform();
-	
-	if (info->mIsJoint)
-	{
-		joint->setSkinOffset( info->mPivot );
-		joint_num++;
-	}
-	else // collision volume
-	{
-		volume_num++;
-	}
-
-	// setup children
-	LLVOAvatarBoneInfo::child_list_t::const_iterator iter;
-	for (iter = info->mChildList.begin(); iter != info->mChildList.end(); ++iter)
-	{
-		LLVOAvatarBoneInfo *child_info = *iter;
-		if (!setupBone(child_info, joint, volume_num, joint_num))
-		{
-			return FALSE;
-		}
-	}
-
-	return TRUE;
-}
-
-//-----------------------------------------------------------------------------
-// buildSkeleton()
-//-----------------------------------------------------------------------------
-BOOL LLVOAvatar::buildSkeleton(const LLVOAvatarSkeletonInfo *info)
-{
-	LLMemType mt(LLMemType::MTYPE_AVATAR);
-	
-	//-------------------------------------------------------------------------
-	// allocate joints
-	//-------------------------------------------------------------------------
-	if (!allocateCharacterJoints(info->mNumBones))
-	{
-		llerrs << "Can't allocate " << info->mNumBones << " joints" << llendl;
-		return FALSE;
-	}
-	
-	//-------------------------------------------------------------------------
-	// allocate volumes
-	//-------------------------------------------------------------------------
-	if (info->mNumCollisionVolumes)
-	{
-		if (!allocateCollisionVolumes(info->mNumCollisionVolumes))
-		{
-			llerrs << "Can't allocate " << info->mNumCollisionVolumes << " collision volumes" << llendl;
-			return FALSE;
-		}
-	}
-
-	S32 current_joint_num = 0;
-	S32 current_volume_num = 0;
-	LLVOAvatarSkeletonInfo::bone_info_list_t::const_iterator iter;
-	for (iter = info->mBoneInfoList.begin(); iter != info->mBoneInfoList.end(); ++iter)
-	{
-		LLVOAvatarBoneInfo *info = *iter;
-		if (!setupBone(info, NULL, current_volume_num, current_joint_num))
-		{
-			llerrs << "Error parsing bone in skeleton file" << llendl;
-			return FALSE;
-		}
-	}
-
-	return TRUE;
-}
-
 LLVOAvatar* LLVOAvatar::asAvatar()
 {
 	return this;
@@ -1892,27 +1548,13 @@ void LLVOAvatar::startDefaultMotions()
 // LLVOAvatar::buildCharacter()
 // Deferred initialization and rebuild of the avatar.
 //-----------------------------------------------------------------------------
+// virtual
 void LLVOAvatar::buildCharacter()
 {
-	LLMemType mt(LLMemType::MTYPE_AVATAR);
-	
-	//-------------------------------------------------------------------------
-	// remove all references to our existing skeleton
-	// so we can rebuild it
-	//-------------------------------------------------------------------------
-	flushAllMotions();
-
-	//-------------------------------------------------------------------------
-	// remove all of mRoot's children
-	//-------------------------------------------------------------------------
-	mRoot.removeAllChildren();
-	mJointMap.clear();
-	mIsBuilt = FALSE;
-
 	//-------------------------------------------------------------------------
 	// clear mesh data
 	//-------------------------------------------------------------------------
-	for (std::vector<LLViewerJoint*>::iterator jointIter = mMeshLOD.begin();
+	for (std::vector<LLAvatarJoint*>::iterator jointIter = mMeshLOD.begin();
 		 jointIter != mMeshLOD.end(); ++jointIter)
 	{
 		LLViewerJoint* joint = (LLViewerJoint*) *jointIter;
@@ -1924,83 +1566,8 @@ void LLVOAvatar::buildCharacter()
 		}
 	}
 
-	//-------------------------------------------------------------------------
-	// (re)load our skeleton and meshes
-	//-------------------------------------------------------------------------
-	LLTimer timer;
-
-	BOOL status = loadAvatar();
-	stop_glerror();
-
-// 	gPrintMessagesThisFrame = TRUE;
-	lldebugs << "Avatar load took " << timer.getElapsedTimeF32() << " seconds." << llendl;
-
-	if (!status)
-	{
-		if (isSelf())
-		{
-			llerrs << "Unable to load user's avatar" << llendl;
-		}
-		else
-		{
-			llwarns << "Unable to load other's avatar" << llendl;
-		}
-		return;
-	}
-
-	//-------------------------------------------------------------------------
-	// initialize "well known" joint pointers
-	//-------------------------------------------------------------------------
-	mPelvisp		= (LLViewerJoint*)mRoot.findJoint("mPelvis");
-	mTorsop			= (LLViewerJoint*)mRoot.findJoint("mTorso");
-	mChestp			= (LLViewerJoint*)mRoot.findJoint("mChest");
-	mNeckp			= (LLViewerJoint*)mRoot.findJoint("mNeck");
-	mHeadp			= (LLViewerJoint*)mRoot.findJoint("mHead");
-	mSkullp			= (LLViewerJoint*)mRoot.findJoint("mSkull");
-	mHipLeftp		= (LLViewerJoint*)mRoot.findJoint("mHipLeft");
-	mHipRightp		= (LLViewerJoint*)mRoot.findJoint("mHipRight");
-	mKneeLeftp		= (LLViewerJoint*)mRoot.findJoint("mKneeLeft");
-	mKneeRightp		= (LLViewerJoint*)mRoot.findJoint("mKneeRight");
-	mAnkleLeftp		= (LLViewerJoint*)mRoot.findJoint("mAnkleLeft");
-	mAnkleRightp	= (LLViewerJoint*)mRoot.findJoint("mAnkleRight");
-	mFootLeftp		= (LLViewerJoint*)mRoot.findJoint("mFootLeft");
-	mFootRightp		= (LLViewerJoint*)mRoot.findJoint("mFootRight");
-	mWristLeftp		= (LLViewerJoint*)mRoot.findJoint("mWristLeft");
-	mWristRightp	= (LLViewerJoint*)mRoot.findJoint("mWristRight");
-	mEyeLeftp		= (LLViewerJoint*)mRoot.findJoint("mEyeLeft");
-	mEyeRightp		= (LLViewerJoint*)mRoot.findJoint("mEyeRight");
-
-	//-------------------------------------------------------------------------
-	// Make sure "well known" pointers exist
-	//-------------------------------------------------------------------------
-	if (!(mPelvisp && 
-		  mTorsop &&
-		  mChestp &&
-		  mNeckp &&
-		  mHeadp &&
-		  mSkullp &&
-		  mHipLeftp &&
-		  mHipRightp &&
-		  mKneeLeftp &&
-		  mKneeRightp &&
-		  mAnkleLeftp &&
-		  mAnkleRightp &&
-		  mFootLeftp &&
-		  mFootRightp &&
-		  mWristLeftp &&
-		  mWristRightp &&
-		  mEyeLeftp &&
-		  mEyeRightp))
-	{
-		llerrs << "Failed to create avatar." << llendl;
-		return;
-	}
+	LLAvatarAppearance::buildCharacter();
 
-	//-------------------------------------------------------------------------
-	// initialize the pelvis
-	//-------------------------------------------------------------------------
-	mPelvisp->setPosition( LLVector3(0.0f, 0.0f, 0.0f) );
-	
 	//-------------------------------------------------------------------------
 	// set head offset from pelvis
 	//-------------------------------------------------------------------------
@@ -2033,9 +1600,6 @@ void LLVOAvatar::buildCharacter()
 	//-------------------------------------------------------------------------
 	processAnimationStateChanges();
 
-	mIsBuilt = TRUE;
-	stop_glerror();
-
 	mMeshValid = TRUE;
 }
 
@@ -2055,7 +1619,7 @@ void LLVOAvatar::releaseMeshData()
 	//llinfos << "Releasing" << llendl;
 
 	// cleanup mesh data
-	for (std::vector<LLViewerJoint*>::iterator iter = mMeshLOD.begin();
+	for (std::vector<LLAvatarJoint*>::iterator iter = mMeshLOD.begin();
 		 iter != mMeshLOD.end(); 
 		 ++iter)
 	{
@@ -2149,7 +1713,11 @@ void LLVOAvatar::updateMeshData()
 				last_v_num = num_vertices ;
 				last_i_num = num_indices ;
 
-				mMeshLOD[part_index++]->updateFaceSizes(num_vertices, num_indices, mAdjustedPixelArea);
+				LLViewerJoint* part_mesh = getViewerJoint(part_index++);
+				if (part_mesh)
+				{
+					part_mesh->updateFaceSizes(num_vertices, num_indices, mAdjustedPixelArea);
+				}
 			}
 			if(num_vertices < 1)//skip empty meshes
 			{
@@ -2223,7 +1791,11 @@ void LLVOAvatar::updateMeshData()
 					rigid = true;
 				}
 				
-				mMeshLOD[k]->updateFaceData(facep, mAdjustedPixelArea, k == MESH_ID_HAIR, terse_update && !rigid);
+				LLViewerJoint* mesh = getViewerJoint(k);
+				if (mesh)
+				{
+					mesh->updateFaceData(facep, mAdjustedPixelArea, k == MESH_ID_HAIR, terse_update && !rigid);
+				}
 			}
 
 			stop_glerror();
@@ -2243,72 +1815,6 @@ void LLVOAvatar::updateMeshData()
 
 //------------------------------------------------------------------------
 
-//------------------------------------------------------------------------
-// The viewer can only suggest a good size for the agent,
-// the simulator will keep it inside a reasonable range.
-void LLVOAvatar::computeBodySize() 
-{
-	LLVector3 pelvis_scale = mPelvisp->getScale();
-
-	// some of the joints have not been cached
-	LLVector3 skull = mSkullp->getPosition();
-	LLVector3 skull_scale = mSkullp->getScale();
-
-	LLVector3 neck = mNeckp->getPosition();
-	LLVector3 neck_scale = mNeckp->getScale();
-
-	LLVector3 chest = mChestp->getPosition();
-	LLVector3 chest_scale = mChestp->getScale();
-
-	// the rest of the joints have been cached
-	LLVector3 head = mHeadp->getPosition();
-	LLVector3 head_scale = mHeadp->getScale();
-
-	LLVector3 torso = mTorsop->getPosition();
-	LLVector3 torso_scale = mTorsop->getScale();
-
-	LLVector3 hip = mHipLeftp->getPosition();
-	LLVector3 hip_scale = mHipLeftp->getScale();
-
-	LLVector3 knee = mKneeLeftp->getPosition();
-	LLVector3 knee_scale = mKneeLeftp->getScale();
-
-	LLVector3 ankle = mAnkleLeftp->getPosition();
-	LLVector3 ankle_scale = mAnkleLeftp->getScale();
-
-	LLVector3 foot  = mFootLeftp->getPosition();
-
-	mPelvisToFoot = hip.mV[VZ] * pelvis_scale.mV[VZ] -
-				 	knee.mV[VZ] * hip_scale.mV[VZ] -
-				 	ankle.mV[VZ] * knee_scale.mV[VZ] -
-				 	foot.mV[VZ] * ankle_scale.mV[VZ];
-
-	LLVector3 new_body_size;
-	new_body_size.mV[VZ] = mPelvisToFoot +
-					   // the sqrt(2) correction below is an approximate
-					   // correction to get to the top of the head
-					   F_SQRT2 * (skull.mV[VZ] * head_scale.mV[VZ]) + 
-					   head.mV[VZ] * neck_scale.mV[VZ] + 
-					   neck.mV[VZ] * chest_scale.mV[VZ] + 
-					   chest.mV[VZ] * torso_scale.mV[VZ] + 
-					   torso.mV[VZ] * pelvis_scale.mV[VZ]; 
-
-	// TODO -- measure the real depth and width
-	new_body_size.mV[VX] = DEFAULT_AGENT_DEPTH;
-	new_body_size.mV[VY] = DEFAULT_AGENT_WIDTH;
-
-	if (new_body_size != mBodySize)
-	{
-		mBodySize = new_body_size;
-
-		if (isSelf() && !LLAppearanceMgr::instance().isInUpdateAppearanceFromCOF())
-		{	// notify simulator of change in size
-			// but not if we are in the middle of updating appearance
-			gAgent.sendAgentSetAppearance();
-		}
-	}
-}
-
 //------------------------------------------------------------------------
 // LLVOAvatar::processUpdateMessage()
 //------------------------------------------------------------------------
@@ -2478,7 +1984,7 @@ void LLVOAvatar::idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time)
 	
 	// animate the character
 	// store off last frame's root position to be consistent with camera position
-	LLVector3 root_pos_last = mRoot.getWorldPosition();
+	LLVector3 root_pos_last = mRoot->getWorldPosition();
 	BOOL detailed_update = updateCharacter(agent);
 
 	static LLUICachedControl<bool> visualizers_in_calls("ShowVoiceVisualizersInCalls", false);
@@ -2597,11 +2103,11 @@ void LLVOAvatar::idleUpdateVoiceVisualizer(bool voice_enabled)
 		if ( mIsSitting )
 		{
 			LLVector3 headOffset = LLVector3( 0.0f, 0.0f, mHeadOffset.mV[2] );
-			mVoiceVisualizer->setVoiceSourceWorldPosition( mRoot.getWorldPosition() + headOffset );
+			mVoiceVisualizer->setVoiceSourceWorldPosition( mRoot->getWorldPosition() + headOffset );
 		}
 		else 
 		{
-			LLVector3 tagPos = mRoot.getWorldPosition();
+			LLVector3 tagPos = mRoot->getWorldPosition();
 			tagPos[VZ] -= mPelvisToFoot;
 			tagPos[VZ] += ( mBodySize[VZ] + 0.125f );
 			mVoiceVisualizer->setVoiceSourceWorldPosition( tagPos );
@@ -3338,7 +2844,7 @@ void LLVOAvatar::invalidateNameTags()
 // Compute name tag position during idle update
 LLVector3 LLVOAvatar::idleUpdateNameTagPosition(const LLVector3& root_pos_last)
 {
-	LLQuaternion root_rot = mRoot.getWorldRotation();
+	LLQuaternion root_rot = mRoot->getWorldRotation();
 	LLVector3 pixel_right_vec;
 	LLVector3 pixel_up_vec;
 	LLViewerCamera::getInstance()->getPixelVectors(root_pos_last, pixel_up_vec, pixel_right_vec);
@@ -3352,7 +2858,7 @@ LLVector3 LLVOAvatar::idleUpdateNameTagPosition(const LLVector3& root_pos_last)
 	local_camera_up.scaleVec(mBodySize * 0.5f);
 	local_camera_at.scaleVec(mBodySize * 0.5f);
 
-	LLVector3 name_position = mRoot.getWorldPosition();
+	LLVector3 name_position = mRoot->getWorldPosition();
 	name_position[VZ] -= mPelvisToFoot;
 	name_position[VZ] += (mBodySize[VZ]* 0.55f);
 	name_position += (local_camera_up * root_rot) - (projected_vec(local_camera_at * root_rot, camera_to_av));	
@@ -3417,13 +2923,13 @@ void LLVOAvatar::idleUpdateBelowWater()
 void LLVOAvatar::slamPosition()
 {
 	gAgent.setPositionAgent(getPositionAgent());
-	mRoot.setWorldPosition(getPositionAgent()); // teleport
+	mRoot->setWorldPosition(getPositionAgent()); // teleport
 	setChanged(TRANSLATED);
 	if (mDrawable.notNull())
 	{
 		gPipeline.updateMoveNormalAsync(mDrawable);
 	}
-	mRoot.updateWorldMatrixChildren();
+	mRoot->updateWorldMatrixChildren();
 }
 
 bool LLVOAvatar::isVisuallyMuted() const
@@ -3600,8 +3106,8 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent)
 			throttle = FALSE;
 
 			// put the pelvis at slaved position/mRotation
-			mRoot.setWorldPosition( getPositionAgent() ); // first frame
-			mRoot.setWorldRotation( getRotation() );
+			mRoot->setWorldPosition( getPositionAgent() ); // first frame
+			mRoot->setWorldRotation( getRotation() );
 		}
 	
 		//--------------------------------------------------------------------
@@ -3644,10 +3150,10 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent)
 		
 		LLVector3 newPosition = gAgent.getPosAgentFromGlobal(root_pos);
 
-		if (newPosition != mRoot.getXform()->getWorldPosition())
+		if (newPosition != mRoot->getXform()->getWorldPosition())
 		{		
-			mRoot.touch();
-			mRoot.setWorldPosition( newPosition ); // regular update				
+			mRoot->touch();
+			mRoot->setWorldPosition( newPosition ); // regular update				
 		}
 
 
@@ -3708,7 +3214,7 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent)
 				
 			}
 
-			LLQuaternion root_rotation = mRoot.getWorldMatrix().quaternion();
+			LLQuaternion root_rotation = mRoot->getWorldMatrix().quaternion();
 			F32 root_roll, root_pitch, root_yaw;
 			root_rotation.getEulerAngles(&root_roll, &root_pitch, &root_yaw);
 
@@ -3717,7 +3223,7 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent)
 			// and head turn.  Once in motion, it must conform however.
 			BOOL self_in_mouselook = isSelf() && gAgentCamera.cameraMouselook();
 
-			LLVector3 pelvisDir( mRoot.getWorldMatrix().getFwdRow4().mV );
+			LLVector3 pelvisDir( mRoot->getWorldMatrix().getFwdRow4().mV );
 
 			static LLCachedControl<F32> s_pelvis_rot_threshold_slow(gSavedSettings, "AvatarRotateThresholdSlow");
 			static LLCachedControl<F32> s_pelvis_rot_threshold_fast(gSavedSettings, "AvatarRotateThresholdFast");
@@ -3803,14 +3309,14 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent)
 
 			F32 u = llclamp((deltaTime / pelvis_lag_time), 0.0f, 1.0f);	
 
-			mRoot.setWorldRotation( slerp(u, mRoot.getWorldRotation(), wQv) );
+			mRoot->setWorldRotation( slerp(u, mRoot->getWorldRotation(), wQv) );
 			
 		}
 	}
 	else if (mDrawable.notNull())
 	{
-		mRoot.setPosition(mDrawable->getPosition());
-		mRoot.setRotation(mDrawable->getRotation());
+		mRoot->setPosition(mDrawable->getPosition());
+		mRoot->setRotation(mDrawable->getRotation());
 	}
 	
 	//-------------------------------------------------------------------------
@@ -3910,7 +3416,7 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent)
 		}
 	}
 
-	mRoot.updateWorldMatrixChildren();
+	mRoot->updateWorldMatrixChildren();
 
 	if (!mDebugText.size() && mText.notNull())
 	{
@@ -3934,7 +3440,7 @@ void LLVOAvatar::updateHeadOffset()
 {
 	// since we only care about Z, just grab one of the eyes
 	LLVector3 midEyePt = mEyeLeftp->getWorldPosition();
-	midEyePt -= mDrawable.notNull() ? mDrawable->getWorldPosition() : mRoot.getWorldPosition();
+	midEyePt -= mDrawable.notNull() ? mDrawable->getWorldPosition() : mRoot->getWorldPosition();
 	midEyePt.mV[VZ] = llmax(-mPelvisToFoot + LLViewerCamera::getInstance()->getNear(), midEyePt.mV[VZ]);
 
 	if (mDrawable.notNull())
@@ -3972,8 +3478,8 @@ void LLVOAvatar::setPelvisOffset( bool hasOffset, const LLVector3& offsetAmount,
 void LLVOAvatar::postPelvisSetRecalc( void )
 {	
 	computeBodySize(); 
-	mRoot.touch();
-	mRoot.updateWorldMatrixChildren();	
+	mRoot->touch();
+	mRoot->updateWorldMatrixChildren();	
 	dirtyMesh();
 	updateHeadOffset();
 }
@@ -4207,19 +3713,44 @@ U32 LLVOAvatar::renderSkinned(EAvatarRenderPass pass)
 		if (mNeedsSkin)
 		{
 			//generate animated mesh
-			mMeshLOD[MESH_ID_LOWER_BODY]->updateJointGeometry();
-			mMeshLOD[MESH_ID_UPPER_BODY]->updateJointGeometry();
+			LLViewerJoint* lower_mesh = getViewerJoint(MESH_ID_LOWER_BODY);
+			LLViewerJoint* upper_mesh = getViewerJoint(MESH_ID_UPPER_BODY);
+			LLViewerJoint* skirt_mesh = getViewerJoint(MESH_ID_SKIRT);
+			LLViewerJoint* eyelash_mesh = getViewerJoint(MESH_ID_EYELASH);
+			LLViewerJoint* head_mesh = getViewerJoint(MESH_ID_HEAD);
+			LLViewerJoint* hair_mesh = getViewerJoint(MESH_ID_HAIR);
+
+			if(upper_mesh)
+			{
+				upper_mesh->updateJointGeometry();
+			}
+			if (lower_mesh)
+			{
+				lower_mesh->updateJointGeometry();
+			}
 
 			if( isWearingWearableType( LLWearableType::WT_SKIRT ) )
 			{
-				mMeshLOD[MESH_ID_SKIRT]->updateJointGeometry();
+				if(skirt_mesh)
+				{
+					skirt_mesh->updateJointGeometry();
+				}
 			}
 
 			if (!isSelf() || gAgent.needsRenderHead() || LLPipeline::sShadowRender)
 			{
-				mMeshLOD[MESH_ID_EYELASH]->updateJointGeometry();
-				mMeshLOD[MESH_ID_HEAD]->updateJointGeometry();
-				mMeshLOD[MESH_ID_HAIR]->updateJointGeometry();
+				if(eyelash_mesh)
+				{
+					eyelash_mesh->updateJointGeometry();
+				}
+				if(head_mesh)
+				{
+					head_mesh->updateJointGeometry();
+				}
+				if(hair_mesh)
+				{
+					hair_mesh->updateJointGeometry();
+				}
 			}
 			mNeedsSkin = FALSE;
 			mLastSkinTime = gFrameTimeSeconds;
@@ -4336,19 +3867,31 @@ U32 LLVOAvatar::renderSkinned(EAvatarRenderPass pass)
 			{
 				if (isTextureVisible(TEX_HEAD_BAKED) || mIsDummy)
 				{
-					num_indices += mMeshLOD[MESH_ID_HEAD]->render(mAdjustedPixelArea, TRUE, mIsDummy);
+					LLViewerJoint* head_mesh = getViewerJoint(MESH_ID_HEAD);
+					if (head_mesh)
+					{
+						num_indices += head_mesh->render(mAdjustedPixelArea, TRUE, mIsDummy);
+					}
 					first_pass = FALSE;
 				}
 			}
 			if (isTextureVisible(TEX_UPPER_BAKED) || mIsDummy)
 			{
-				num_indices += mMeshLOD[MESH_ID_UPPER_BODY]->render(mAdjustedPixelArea, first_pass, mIsDummy);
+				LLViewerJoint* upper_mesh = getViewerJoint(MESH_ID_UPPER_BODY);
+				if (upper_mesh)
+				{
+					num_indices += upper_mesh->render(mAdjustedPixelArea, first_pass, mIsDummy);
+				}
 				first_pass = FALSE;
 			}
 			
 			if (isTextureVisible(TEX_LOWER_BAKED) || mIsDummy)
 			{
-				num_indices += mMeshLOD[MESH_ID_LOWER_BODY]->render(mAdjustedPixelArea, first_pass, mIsDummy);
+				LLViewerJoint* lower_mesh = getViewerJoint(MESH_ID_LOWER_BODY);
+				if (lower_mesh)
+				{
+					num_indices += lower_mesh->render(mAdjustedPixelArea, first_pass, mIsDummy);
+				}
 				first_pass = FALSE;
 			}
 		}
@@ -4381,7 +3924,11 @@ U32 LLVOAvatar::renderTransparent(BOOL first_pass)
 	if( isWearingWearableType( LLWearableType::WT_SKIRT ) && (mIsDummy || isTextureVisible(TEX_SKIRT_BAKED)) )
 	{
 		gGL.setAlphaRejectSettings(LLRender::CF_GREATER, 0.25f);
-		num_indices += mMeshLOD[MESH_ID_SKIRT]->render(mAdjustedPixelArea, FALSE);
+		LLViewerJoint* skirt_mesh = getViewerJoint(MESH_ID_SKIRT);
+		if (skirt_mesh)
+		{
+			num_indices += skirt_mesh->render(mAdjustedPixelArea, FALSE);
+		}
 		first_pass = FALSE;
 		gGL.setAlphaRejectSettings(LLRender::CF_DEFAULT);
 	}
@@ -4395,14 +3942,22 @@ U32 LLVOAvatar::renderTransparent(BOOL first_pass)
 		
 		if (isTextureVisible(TEX_HEAD_BAKED))
 		{
-			num_indices += mMeshLOD[MESH_ID_EYELASH]->render(mAdjustedPixelArea, first_pass, mIsDummy);
+			LLViewerJoint* eyelash_mesh = getViewerJoint(MESH_ID_EYELASH);
+			if (eyelash_mesh)
+			{
+				num_indices += eyelash_mesh->render(mAdjustedPixelArea, first_pass, mIsDummy);
+			}
 			first_pass = FALSE;
 		}
 		// Can't test for baked hair being defined, since that won't always be the case (not all viewers send baked hair)
 		// TODO: 1.25 will be able to switch this logic back to calling isTextureVisible();
 		if (getImage(TEX_HAIR_BAKED, 0)->getID() != IMG_INVISIBLE || LLDrawPoolAlpha::sShowDebugAlpha)
 		{
-			num_indices += mMeshLOD[MESH_ID_HAIR]->render(mAdjustedPixelArea, first_pass, mIsDummy);
+			LLViewerJoint* hair_mesh = getViewerJoint(MESH_ID_HAIR);
+			if (hair_mesh)
+			{
+				num_indices += hair_mesh->render(mAdjustedPixelArea, first_pass, mIsDummy);
+			}
 			first_pass = FALSE;
 		}
 		if (LLPipeline::sImpostorRender)
@@ -4446,8 +4001,16 @@ U32 LLVOAvatar::renderRigid()
 
 	if (isTextureVisible(TEX_EYES_BAKED)  || mIsDummy)
 	{
-		num_indices += mMeshLOD[MESH_ID_EYEBALL_LEFT]->render(mAdjustedPixelArea, TRUE, mIsDummy);
-		num_indices += mMeshLOD[MESH_ID_EYEBALL_RIGHT]->render(mAdjustedPixelArea, TRUE, mIsDummy);
+		LLViewerJoint* eyeball_left = getViewerJoint(MESH_ID_EYEBALL_LEFT);
+		LLViewerJoint* eyeball_right = getViewerJoint(MESH_ID_EYEBALL_RIGHT);
+		if (eyeball_left)
+		{
+			num_indices += eyeball_left->render(mAdjustedPixelArea, TRUE, mIsDummy);
+		}
+		if(eyeball_right)
+		{
+			num_indices += eyeball_right->render(mAdjustedPixelArea, TRUE, mIsDummy);
+		}
 	}
 
 	if (should_alpha_mask && !LLGLSLShader::sNoFixedFunction)
@@ -5139,7 +4702,7 @@ LLJoint *LLVOAvatar::getJoint( const std::string &name )
 
 	if (iter == mJointMap.end() || iter->second == NULL)
 	{ //search for joint and cache found joint in lookup table
-		jointp = mRoot.findJoint(name);
+		jointp = mRoot->findJoint(name);
 		mJointMap[name] = jointp;
 	}
 	else
@@ -5168,7 +4731,7 @@ void LLVOAvatar::resetJointPositions( void )
 //-----------------------------------------------------------------------------
 void LLVOAvatar::resetSpecificJointPosition( const std::string& name )
 {
-	LLJoint* pJoint = mRoot.findJoint( name );
+	LLJoint* pJoint = mRoot->findJoint( name );
 	
 	if ( pJoint  && pJoint->doesJointNeedToBeReset() )
 	{
@@ -5356,23 +4919,6 @@ BOOL LLVOAvatar::allocateCharacterJoints( U32 num )
 	return TRUE;
 }
 
-//-----------------------------------------------------------------------------
-// allocateCollisionVolumes()
-//-----------------------------------------------------------------------------
-BOOL LLVOAvatar::allocateCollisionVolumes( U32 num )
-{
-	deleteAndClearArray(mCollisionVolumes);
-	mNumCollisionVolumes = 0;
-
-	mCollisionVolumes = new LLViewerJointCollisionVolume[num];
-	if (!mCollisionVolumes)
-	{
-		return FALSE;
-	}
-
-	mNumCollisionVolumes = num;
-	return TRUE;
-}
 
 
 //-----------------------------------------------------------------------------
@@ -5397,154 +4943,14 @@ void LLVOAvatar::requestStopMotion( LLMotion* motion )
 	// Only agent avatars should handle the stop motion notifications.
 }
 
-//-----------------------------------------------------------------------------
-// loadAvatar()
-//-----------------------------------------------------------------------------
-static LLFastTimer::DeclareTimer FTM_LOAD_AVATAR("Load Avatar");
-
-BOOL LLVOAvatar::loadAvatar()
-{
-// 	LLFastTimer t(FTM_LOAD_AVATAR);
-	
-	// avatar_skeleton.xml
-	if( !buildSkeleton(sAvatarSkeletonInfo) )
-	{
-		llwarns << "avatar file: buildSkeleton() failed" << llendl;
-		return FALSE;
-	}
-
-	// avatar_lad.xml : <skeleton>
-	if( !loadSkeletonNode() )
-	{
-		llwarns << "avatar file: loadNodeSkeleton() failed" << llendl;
-		return FALSE;
-	}
-	
-	// avatar_lad.xml : <mesh>
-	if( !loadMeshNodes() )
-	{
-		llwarns << "avatar file: loadNodeMesh() failed" << llendl;
-		return FALSE;
-	}
-	
-	// avatar_lad.xml : <global_color>
-	if( sAvatarXmlInfo->mTexSkinColorInfo )
-	{
-		mTexSkinColor = new LLTexGlobalColor( this );
-		if( !mTexSkinColor->setInfo( sAvatarXmlInfo->mTexSkinColorInfo ) )
-		{
-			llwarns << "avatar file: mTexSkinColor->setInfo() failed" << llendl;
-			return FALSE;
-		}
-	}
-	else
-	{
-		llwarns << "<global_color> name=\"skin_color\" not found" << llendl;
-		return FALSE;
-	}
-	if( sAvatarXmlInfo->mTexHairColorInfo )
-	{
-		mTexHairColor = new LLTexGlobalColor( this );
-		if( !mTexHairColor->setInfo( sAvatarXmlInfo->mTexHairColorInfo ) )
-		{
-			llwarns << "avatar file: mTexHairColor->setInfo() failed" << llendl;
-			return FALSE;
-		}
-	}
-	else
-	{
-		llwarns << "<global_color> name=\"hair_color\" not found" << llendl;
-		return FALSE;
-	}
-	if( sAvatarXmlInfo->mTexEyeColorInfo )
-	{
-		mTexEyeColor = new LLTexGlobalColor( this );
-		if( !mTexEyeColor->setInfo( sAvatarXmlInfo->mTexEyeColorInfo ) )
-		{
-			llwarns << "avatar file: mTexEyeColor->setInfo() failed" << llendl;
-			return FALSE;
-		}
-	}
-	else
-	{
-		llwarns << "<global_color> name=\"eye_color\" not found" << llendl;
-		return FALSE;
-	}
-	
-	// avatar_lad.xml : <layer_set>
-	if (sAvatarXmlInfo->mLayerInfoList.empty())
-	{
-		llwarns << "avatar file: missing <layer_set> node" << llendl;
-		return FALSE;
-	}
-
-	if (sAvatarXmlInfo->mMorphMaskInfoList.empty())
-	{
-		llwarns << "avatar file: missing <morph_masks> node" << llendl;
-		return FALSE;
-	}
-
-	// avatar_lad.xml : <morph_masks>
-	for (LLVOAvatarXmlInfo::morph_info_list_t::iterator iter = sAvatarXmlInfo->mMorphMaskInfoList.begin();
-		 iter != sAvatarXmlInfo->mMorphMaskInfoList.end();
-		 ++iter)
-	{
-		LLVOAvatarXmlInfo::LLVOAvatarMorphInfo *info = *iter;
-
-		EBakedTextureIndex baked = LLAvatarAppearanceDictionary::findBakedByRegionName(info->mRegion); 
-		if (baked != BAKED_NUM_INDICES)
-		{
-			LLVisualParam* morph_param;
-			const std::string *name = &info->mName;
-			morph_param = getVisualParam(name->c_str());
-			if (morph_param)
-			{
-				BOOL invert = info->mInvert;
-				addMaskedMorph(baked, morph_param, invert, info->mLayer);
-			}
-		}
-
-	}
-
-	loadLayersets();	
-	
-	// avatar_lad.xml : <driver_parameters>
-	for (LLVOAvatarXmlInfo::driver_info_list_t::iterator iter = sAvatarXmlInfo->mDriverInfoList.begin();
-		 iter != sAvatarXmlInfo->mDriverInfoList.end(); 
-		 ++iter)
-	{
-		LLDriverParamInfo *info = *iter;
-		LLDriverParam* driver_param = new LLDriverParam( this );
-		if (driver_param->setInfo(info))
-		{
-			addVisualParam( driver_param );
-			LLVisualParam*(LLVOAvatar::*avatar_function)(S32)const = &LLVOAvatar::getVisualParam; 
-			if( !driver_param->linkDrivenParams(boost::bind(avatar_function,(LLVOAvatar*)this,_1 ), false))
-			{
-				llwarns << "could not link driven params for avatar " << this->getFullname() << " id: " << driver_param->getID() << llendl;
-				continue;
-			}
-		}
-		else
-		{
-			delete driver_param;
-			llwarns << "avatar file: driver_param->parseData() failed" << llendl;
-			return FALSE;
-		}
-	}
-
-	
-	return TRUE;
-}
-
 //-----------------------------------------------------------------------------
 // loadSkeletonNode(): loads <skeleton> node from XML tree
 //-----------------------------------------------------------------------------
+//virtual
 BOOL LLVOAvatar::loadSkeletonNode ()
 {
-	mRoot.addChild( &mSkeleton[0] );
-
-	for (std::vector<LLViewerJoint *>::iterator iter = mMeshLOD.begin();
+	// make meshes children before calling parent version of the function
+	for (std::vector<LLAvatarJoint *>::iterator iter = mMeshLOD.begin();
 		 iter != mMeshLOD.end(); 
 		 ++iter)
 	{
@@ -5553,60 +4959,19 @@ BOOL LLVOAvatar::loadSkeletonNode ()
 		joint->setMeshesToChildren();
 	}
 
-	mRoot.addChild(mMeshLOD[MESH_ID_HEAD]);
-	mRoot.addChild(mMeshLOD[MESH_ID_EYELASH]);
-	mRoot.addChild(mMeshLOD[MESH_ID_UPPER_BODY]);
-	mRoot.addChild(mMeshLOD[MESH_ID_LOWER_BODY]);
-	mRoot.addChild(mMeshLOD[MESH_ID_SKIRT]);
-	mRoot.addChild(mMeshLOD[MESH_ID_HEAD]);
-
-	LLViewerJoint *skull = (LLViewerJoint*)mRoot.findJoint("mSkull");
-	if (skull)
-	{
-		skull->addChild(mMeshLOD[MESH_ID_HAIR] );
-	}
-
-	LLViewerJoint *eyeL = (LLViewerJoint*)mRoot.findJoint("mEyeLeft");
-	if (eyeL)
+	if (!LLAvatarAppearance::loadSkeletonNode())
 	{
-		eyeL->addChild( mMeshLOD[MESH_ID_EYEBALL_LEFT] );
-	}
-
-	LLViewerJoint *eyeR = (LLViewerJoint*)mRoot.findJoint("mEyeRight");
-	if (eyeR)
-	{
-		eyeR->addChild( mMeshLOD[MESH_ID_EYEBALL_RIGHT] );
+		return FALSE;
 	}
 
-	// SKELETAL DISTORTIONS
-	{
-		LLVOAvatarXmlInfo::skeletal_distortion_info_list_t::iterator iter;
-		for (iter = sAvatarXmlInfo->mSkeletalDistortionInfoList.begin();
-			 iter != sAvatarXmlInfo->mSkeletalDistortionInfoList.end(); 
-			 ++iter)
-		{
-			LLPolySkeletalDistortionInfo *info = *iter;
-			LLPolySkeletalDistortion *param = new LLPolySkeletalDistortion(this);
-			if (!param->setInfo(info))
-			{
-				delete param;
-				return FALSE;
-			}
-			else
-			{
-				addVisualParam(param);
-			}				
-		}
-	}
-	
 	// ATTACHMENTS
 	{
-		LLVOAvatarXmlInfo::attachment_info_list_t::iterator iter;
+		LLAvatarXmlInfo::attachment_info_list_t::iterator iter;
 		for (iter = sAvatarXmlInfo->mAttachmentInfoList.begin();
 			 iter != sAvatarXmlInfo->mAttachmentInfoList.end(); 
 			 ++iter)
 		{
-			LLVOAvatarXmlInfo::LLVOAvatarAttachmentInfo *info = *iter;
+			LLAvatarXmlInfo::LLAvatarAttachmentInfo *info = *iter;
 			if (!isSelf() && info->mJointName == "mScreen")
 			{ //don't process screen joint for other avatars
 				continue;
@@ -5678,144 +5043,6 @@ BOOL LLVOAvatar::loadSkeletonNode ()
 	return TRUE;
 }
 
-//-----------------------------------------------------------------------------
-// loadMeshNodes(): loads <mesh> nodes from XML tree
-//-----------------------------------------------------------------------------
-BOOL LLVOAvatar::loadMeshNodes()
-{
-	for (LLVOAvatarXmlInfo::mesh_info_list_t::const_iterator meshinfo_iter = sAvatarXmlInfo->mMeshInfoList.begin();
-		 meshinfo_iter != sAvatarXmlInfo->mMeshInfoList.end(); 
-		 ++meshinfo_iter)
-	{
-		const LLVOAvatarXmlInfo::LLVOAvatarMeshInfo *info = *meshinfo_iter;
-		const std::string &type = info->mType;
-		S32 lod = info->mLOD;
-
-		LLViewerJointMesh* mesh = NULL;
-		U8 mesh_id = 0;
-		BOOL found_mesh_id = FALSE;
-
-		/* if (type == "hairMesh")
-			switch(lod)
-			  case 0:
-				mesh = &mHairMesh0; */
-		for (LLAvatarAppearanceDictionary::Meshes::const_iterator mesh_iter = LLAvatarAppearanceDictionary::getInstance()->getMeshes().begin();
-			 mesh_iter != LLAvatarAppearanceDictionary::getInstance()->getMeshes().end();
-			 ++mesh_iter)
-		{
-			const EMeshIndex mesh_index = mesh_iter->first;
-			const LLAvatarAppearanceDictionary::MeshEntry *mesh_dict = mesh_iter->second;
-			if (type.compare(mesh_dict->mName) == 0)
-			{
-				mesh_id = mesh_index;
-				found_mesh_id = TRUE;
-				break;
-			}
-		}
-
-		if (found_mesh_id)
-		{
-			if (lod < (S32)mMeshLOD[mesh_id]->mMeshParts.size())
-			{
-				mesh = mMeshLOD[mesh_id]->mMeshParts[lod];
-			}
-			else
-			{
-				llwarns << "Avatar file: <mesh> has invalid lod setting " << lod << llendl;
-				return FALSE;
-			}
-		}
-		else 
-		{
-			llwarns << "Ignoring unrecognized mesh type: " << type << llendl;
-			return FALSE;
-		}
-
-		//	llinfos << "Parsing mesh data for " << type << "..." << llendl;
-
-		// If this isn't set to white (1.0), avatars will *ALWAYS* be darker than their surroundings.
-		// Do not touch!!!
-		mesh->setColor( 1.0f, 1.0f, 1.0f, 1.0f );
-
-		LLPolyMesh *poly_mesh = NULL;
-
-		if (!info->mReferenceMeshName.empty())
-		{
-			polymesh_map_t::const_iterator polymesh_iter = mMeshes.find(info->mReferenceMeshName);
-			if (polymesh_iter != mMeshes.end())
-			{
-				poly_mesh = LLPolyMesh::getMesh(info->mMeshFileName, polymesh_iter->second);
-				poly_mesh->setAvatar(this);
-			}
-			else
-			{
-				// This should never happen
-				LL_WARNS("Avatar") << "Could not find avatar mesh: " << info->mReferenceMeshName << LL_ENDL;
-			}
-		}
-		else
-		{
-			poly_mesh = LLPolyMesh::getMesh(info->mMeshFileName);
-			poly_mesh->setAvatar(this);
-		}
-
-		if( !poly_mesh )
-		{
-			llwarns << "Failed to load mesh of type " << type << llendl;
-			return FALSE;
-		}
-
-		// Multimap insert
-		mMeshes.insert(std::make_pair(info->mMeshFileName, poly_mesh));
-	
-		mesh->setMesh( poly_mesh );
-		mesh->setLOD( info->mMinPixelArea );
-
-		for (LLVOAvatarXmlInfo::LLVOAvatarMeshInfo::morph_info_list_t::const_iterator xmlinfo_iter = info->mPolyMorphTargetInfoList.begin();
-			 xmlinfo_iter != info->mPolyMorphTargetInfoList.end(); 
-			 ++xmlinfo_iter)
-		{
-			const LLVOAvatarXmlInfo::LLVOAvatarMeshInfo::morph_info_pair_t *info_pair = &(*xmlinfo_iter);
-			LLPolyMorphTarget *param = new LLPolyMorphTarget(mesh->getMesh());
-			if (!param->setInfo(info_pair->first))
-			{
-				delete param;
-				return FALSE;
-			}
-			else
-			{
-				if (info_pair->second)
-				{
-					addSharedVisualParam(param);
-				}
-				else
-				{
-					addVisualParam(param);
-				}
-			}				
-		}
-	}
-
-	return TRUE;
-}
-
-//-----------------------------------------------------------------------------
-// loadLayerSets()
-//-----------------------------------------------------------------------------
-BOOL LLVOAvatar::loadLayersets()
-{
-	BOOL success = TRUE;
-	for (LLVOAvatarXmlInfo::layer_info_list_t::const_iterator layerset_iter = sAvatarXmlInfo->mLayerInfoList.begin();
-		 layerset_iter != sAvatarXmlInfo->mLayerInfoList.end(); 
-		 ++layerset_iter)
-	{
-		// Construct a layerset for each one specified in avatar_lad.xml and initialize it as such.
-		LLTexLayerSetInfo *layerset_info = *layerset_iter;
-		layerset_info->createVisualParams(this);
-	}
-	return success;
-}
-
 //-----------------------------------------------------------------------------
 // updateVisualParams()
 //-----------------------------------------------------------------------------
@@ -5829,7 +5056,7 @@ void LLVOAvatar::updateVisualParams()
 	{
 		computeBodySize();
 		mLastSkeletonSerialNum = mSkeletonSerialNum;
-		mRoot.updateWorldMatrixChildren();
+		mRoot->updateWorldMatrixChildren();
 	}
 
 	dirtyMesh();
@@ -5919,7 +5146,12 @@ BOOL LLVOAvatar::updateJointLODs()
 		}
 
 		// now select meshes to render based on adjusted pixel area
-		BOOL res = mRoot.updateLOD(mAdjustedPixelArea, TRUE);
+		LLViewerJoint* root = dynamic_cast<LLViewerJoint*>(mRoot);
+		BOOL res = FALSE;
+		if (root)
+		{
+			res = root->updateLOD(mAdjustedPixelArea, TRUE);
+		}
  		if (res)
 		{
 			sNumLODChangesThisFrame++;
@@ -6009,6 +5241,15 @@ void LLVOAvatar::dirtyMesh(S32 priority)
 {
 	mDirtyMesh = llmax(mDirtyMesh, priority);
 }
+
+//-----------------------------------------------------------------------------
+// getViewerJoint()
+//-----------------------------------------------------------------------------
+LLViewerJoint*	LLVOAvatar::getViewerJoint(S32 idx)
+{
+	return dynamic_cast<LLViewerJoint*>(mMeshLOD[idx]);
+}
+
 //-----------------------------------------------------------------------------
 // hideSkirt()
 //-----------------------------------------------------------------------------
@@ -6322,9 +5563,9 @@ void LLVOAvatar::sitOnObject(LLViewerObject *sit_object)
 	// Notice that removing sitDown() from here causes avatars sitting on
 	// objects to be not rendered for new arrivals. See EXT-6835 and EXT-1655.
 	sitDown(TRUE);
-	mRoot.getXform()->setParent(&sit_object->mDrawable->mXform); // LLVOAvatar::sitOnObject
-	mRoot.setPosition(getPosition());
-	mRoot.updateWorldMatrixChildren();
+	mRoot->getXform()->setParent(&sit_object->mDrawable->mXform); // LLVOAvatar::sitOnObject
+	mRoot->setPosition(getPosition());
+	mRoot->updateWorldMatrixChildren();
 
 	stopMotion(ANIM_AGENT_BODY_NOISE);
 
@@ -6370,10 +5611,10 @@ void LLVOAvatar::getOffObject()
 
 	sitDown(FALSE);
 
-	mRoot.getXform()->setParent(NULL); // LLVOAvatar::getOffObject
-	mRoot.setPosition(cur_position_world);
-	mRoot.setRotation(cur_rotation_world);
-	mRoot.getXform()->update();
+	mRoot->getXform()->setParent(NULL); // LLVOAvatar::getOffObject
+	mRoot->setPosition(cur_position_world);
+	mRoot->setRotation(cur_rotation_world);
+	mRoot->getXform()->update();
 
 	startMotion(ANIM_AGENT_BODY_NOISE);
 
@@ -7752,501 +6993,20 @@ void LLVOAvatar::startAppearanceAnimation()
 	}
 }
 
-// virtual
-void LLVOAvatar::removeMissingBakedTextures()
-{	
-}
-
-//-----------------------------------------------------------------------------
-// LLVOAvatarXmlInfo
-//-----------------------------------------------------------------------------
-
-LLVOAvatar::LLVOAvatarXmlInfo::LLVOAvatarXmlInfo()
-	: mTexSkinColorInfo(0), mTexHairColorInfo(0), mTexEyeColorInfo(0)
-{
-}
-
-LLVOAvatar::LLVOAvatarXmlInfo::~LLVOAvatarXmlInfo()
-{
-	std::for_each(mMeshInfoList.begin(), mMeshInfoList.end(), DeletePointer());
-	std::for_each(mSkeletalDistortionInfoList.begin(), mSkeletalDistortionInfoList.end(), DeletePointer());		
-	std::for_each(mAttachmentInfoList.begin(), mAttachmentInfoList.end(), DeletePointer());
-	deleteAndClear(mTexSkinColorInfo);
-	deleteAndClear(mTexHairColorInfo);
-	deleteAndClear(mTexEyeColorInfo);
-	std::for_each(mLayerInfoList.begin(), mLayerInfoList.end(), DeletePointer());		
-	std::for_each(mDriverInfoList.begin(), mDriverInfoList.end(), DeletePointer());
-	std::for_each(mMorphMaskInfoList.begin(), mMorphMaskInfoList.end(), DeletePointer());
-}
-
-//-----------------------------------------------------------------------------
-// LLVOAvatarBoneInfo::parseXml()
-//-----------------------------------------------------------------------------
-BOOL LLVOAvatarBoneInfo::parseXml(LLXmlTreeNode* node)
-{
-	if (node->hasName("bone"))
-	{
-		mIsJoint = TRUE;
-		static LLStdStringHandle name_string = LLXmlTree::addAttributeString("name");
-		if (!node->getFastAttributeString(name_string, mName))
-		{
-			llwarns << "Bone without name" << llendl;
-			return FALSE;
-		}
-	}
-	else if (node->hasName("collision_volume"))
-	{
-		mIsJoint = FALSE;
-		static LLStdStringHandle name_string = LLXmlTree::addAttributeString("name");
-		if (!node->getFastAttributeString(name_string, mName))
-		{
-			mName = "Collision Volume";
-		}
-	}
-	else
-	{
-		llwarns << "Invalid node " << node->getName() << llendl;
-		return FALSE;
-	}
-
-	static LLStdStringHandle pos_string = LLXmlTree::addAttributeString("pos");
-	if (!node->getFastAttributeVector3(pos_string, mPos))
-	{
-		llwarns << "Bone without position" << llendl;
-		return FALSE;
-	}
-
-	static LLStdStringHandle rot_string = LLXmlTree::addAttributeString("rot");
-	if (!node->getFastAttributeVector3(rot_string, mRot))
-	{
-		llwarns << "Bone without rotation" << llendl;
-		return FALSE;
-	}
-	
-	static LLStdStringHandle scale_string = LLXmlTree::addAttributeString("scale");
-	if (!node->getFastAttributeVector3(scale_string, mScale))
-	{
-		llwarns << "Bone without scale" << llendl;
-		return FALSE;
-	}
-
-	if (mIsJoint)
-	{
-		static LLStdStringHandle pivot_string = LLXmlTree::addAttributeString("pivot");
-		if (!node->getFastAttributeVector3(pivot_string, mPivot))
-		{
-			llwarns << "Bone without pivot" << llendl;
-			return FALSE;
-		}
-	}
-
-	// parse children
-	LLXmlTreeNode* child;
-	for( child = node->getFirstChild(); child; child = node->getNextChild() )
-	{
-		LLVOAvatarBoneInfo *child_info = new LLVOAvatarBoneInfo;
-		if (!child_info->parseXml(child))
-		{
-			delete child_info;
-			return FALSE;
-		}
-		mChildList.push_back(child_info);
-	}
-	return TRUE;
-}
-
-//-----------------------------------------------------------------------------
-// LLVOAvatarSkeletonInfo::parseXml()
-//-----------------------------------------------------------------------------
-BOOL LLVOAvatarSkeletonInfo::parseXml(LLXmlTreeNode* node)
-{
-	static LLStdStringHandle num_bones_string = LLXmlTree::addAttributeString("num_bones");
-	if (!node->getFastAttributeS32(num_bones_string, mNumBones))
-	{
-		llwarns << "Couldn't find number of bones." << llendl;
-		return FALSE;
-	}
-
-	static LLStdStringHandle num_collision_volumes_string = LLXmlTree::addAttributeString("num_collision_volumes");
-	node->getFastAttributeS32(num_collision_volumes_string, mNumCollisionVolumes);
-
-	LLXmlTreeNode* child;
-	for( child = node->getFirstChild(); child; child = node->getNextChild() )
-	{
-		LLVOAvatarBoneInfo *info = new LLVOAvatarBoneInfo;
-		if (!info->parseXml(child))
-		{
-			delete info;
-			llwarns << "Error parsing bone in skeleton file" << llendl;
-			return FALSE;
-		}
-		mBoneInfoList.push_back(info);
-	}
-	return TRUE;
-}
-
-//-----------------------------------------------------------------------------
-// parseXmlSkeletonNode(): parses <skeleton> nodes from XML tree
-//-----------------------------------------------------------------------------
-BOOL LLVOAvatar::LLVOAvatarXmlInfo::parseXmlSkeletonNode(LLXmlTreeNode* root)
-{
-	LLXmlTreeNode* node = root->getChildByName( "skeleton" );
-	if( !node )
-	{
-		llwarns << "avatar file: missing <skeleton>" << llendl;
-		return FALSE;
-	}
-
-	LLXmlTreeNode* child;
-
-	// SKELETON DISTORTIONS
-	for (child = node->getChildByName( "param" );
-		 child;
-		 child = node->getNextNamedChild())
-	{
-		if (!child->getChildByName("param_skeleton"))
-		{
-			if (child->getChildByName("param_morph"))
-			{
-				llwarns << "Can't specify morph param in skeleton definition." << llendl;
-			}
-			else
-			{
-				llwarns << "Unknown param type." << llendl;
-			}
-			continue;
-		}
-		
-		LLPolySkeletalDistortionInfo *info = new LLPolySkeletalDistortionInfo;
-		if (!info->parseXml(child))
-		{
-			delete info;
-			return FALSE;
-		}
-
-		mSkeletalDistortionInfoList.push_back(info);
-	}
-
-	// ATTACHMENT POINTS
-	for (child = node->getChildByName( "attachment_point" );
-		 child;
-		 child = node->getNextNamedChild())
-	{
-		LLVOAvatarAttachmentInfo* info = new LLVOAvatarAttachmentInfo();
-
-		static LLStdStringHandle name_string = LLXmlTree::addAttributeString("name");
-		if (!child->getFastAttributeString(name_string, info->mName))
-		{
-			llwarns << "No name supplied for attachment point." << llendl;
-			delete info;
-			continue;
-		}
-
-		static LLStdStringHandle joint_string = LLXmlTree::addAttributeString("joint");
-		if (!child->getFastAttributeString(joint_string, info->mJointName))
-		{
-			llwarns << "No bone declared in attachment point " << info->mName << llendl;
-			delete info;
-			continue;
-		}
-
-		static LLStdStringHandle position_string = LLXmlTree::addAttributeString("position");
-		if (child->getFastAttributeVector3(position_string, info->mPosition))
-		{
-			info->mHasPosition = TRUE;
-		}
-
-		static LLStdStringHandle rotation_string = LLXmlTree::addAttributeString("rotation");
-		if (child->getFastAttributeVector3(rotation_string, info->mRotationEuler))
-		{
-			info->mHasRotation = TRUE;
-		}
-		 static LLStdStringHandle group_string = LLXmlTree::addAttributeString("group");
-		if (child->getFastAttributeS32(group_string, info->mGroup))
-		{
-			if (info->mGroup == -1)
-				info->mGroup = -1111; // -1 = none parsed, < -1 = bad value
-		}
-
-		static LLStdStringHandle id_string = LLXmlTree::addAttributeString("id");
-		if (!child->getFastAttributeS32(id_string, info->mAttachmentID))
-		{
-			llwarns << "No id supplied for attachment point " << info->mName << llendl;
-			delete info;
-			continue;
-		}
-
-		static LLStdStringHandle slot_string = LLXmlTree::addAttributeString("pie_slice");
-		child->getFastAttributeS32(slot_string, info->mPieMenuSlice);
-			
-		static LLStdStringHandle visible_in_first_person_string = LLXmlTree::addAttributeString("visible_in_first_person");
-		child->getFastAttributeBOOL(visible_in_first_person_string, info->mVisibleFirstPerson);
-
-		static LLStdStringHandle hud_attachment_string = LLXmlTree::addAttributeString("hud");
-		child->getFastAttributeBOOL(hud_attachment_string, info->mIsHUDAttachment);
-
-		mAttachmentInfoList.push_back(info);
-	}
-
-	return TRUE;
-}
-
-//-----------------------------------------------------------------------------
-// parseXmlMeshNodes(): parses <mesh> nodes from XML tree
-//-----------------------------------------------------------------------------
-BOOL LLVOAvatar::LLVOAvatarXmlInfo::parseXmlMeshNodes(LLXmlTreeNode* root)
-{
-	for (LLXmlTreeNode* node = root->getChildByName( "mesh" );
-		 node;
-		 node = root->getNextNamedChild())
-	{
-		LLVOAvatarMeshInfo *info = new LLVOAvatarMeshInfo;
-
-		// attribute: type
-		static LLStdStringHandle type_string = LLXmlTree::addAttributeString("type");
-		if( !node->getFastAttributeString( type_string, info->mType ) )
-		{
-			llwarns << "Avatar file: <mesh> is missing type attribute.  Ignoring element. " << llendl;
-			delete info;
-			return FALSE;  // Ignore this element
-		}
-		
-		static LLStdStringHandle lod_string = LLXmlTree::addAttributeString("lod");
-		if (!node->getFastAttributeS32( lod_string, info->mLOD ))
-		{
-			llwarns << "Avatar file: <mesh> is missing lod attribute.  Ignoring element. " << llendl;
-			delete info;
-			return FALSE;  // Ignore this element
-		}
-
-		static LLStdStringHandle file_name_string = LLXmlTree::addAttributeString("file_name");
-		if( !node->getFastAttributeString( file_name_string, info->mMeshFileName ) )
-		{
-			llwarns << "Avatar file: <mesh> is missing file_name attribute.  Ignoring: " << info->mType << llendl;
-			delete info;
-			return FALSE;  // Ignore this element
-		}
-
-		static LLStdStringHandle reference_string = LLXmlTree::addAttributeString("reference");
-		node->getFastAttributeString( reference_string, info->mReferenceMeshName );
-		
-		// attribute: min_pixel_area
-		static LLStdStringHandle min_pixel_area_string = LLXmlTree::addAttributeString("min_pixel_area");
-		static LLStdStringHandle min_pixel_width_string = LLXmlTree::addAttributeString("min_pixel_width");
-		if (!node->getFastAttributeF32( min_pixel_area_string, info->mMinPixelArea ))
-		{
-			F32 min_pixel_area = 0.1f;
-			if (node->getFastAttributeF32( min_pixel_width_string, min_pixel_area ))
-			{
-				// this is square root of pixel area (sensible to use linear space in defining lods)
-				min_pixel_area = min_pixel_area * min_pixel_area;
-			}
-			info->mMinPixelArea = min_pixel_area;
-		}
-		
-		// Parse visual params for this node only if we haven't already
-		for (LLXmlTreeNode* child = node->getChildByName( "param" );
-			 child;
-			 child = node->getNextNamedChild())
-		{
-			if (!child->getChildByName("param_morph"))
-			{
-				if (child->getChildByName("param_skeleton"))
-				{
-					llwarns << "Can't specify skeleton param in a mesh definition." << llendl;
-				}
-				else
-				{
-					llwarns << "Unknown param type." << llendl;
-				}
-				continue;
-			}
-
-			LLPolyMorphTargetInfo *morphinfo = new LLPolyMorphTargetInfo();
-			if (!morphinfo->parseXml(child))
-			{
-				delete morphinfo;
-				delete info;
-				return -1;
-			}
-			BOOL shared = FALSE;
-			static LLStdStringHandle shared_string = LLXmlTree::addAttributeString("shared");
-			child->getFastAttributeBOOL(shared_string, shared);
-
-			info->mPolyMorphTargetInfoList.push_back(LLVOAvatarMeshInfo::morph_info_pair_t(morphinfo, shared));
-		}
-
-		mMeshInfoList.push_back(info);
-	}
-	return TRUE;
-}
-
-//-----------------------------------------------------------------------------
-// parseXmlColorNodes(): parses <global_color> nodes from XML tree
-//-----------------------------------------------------------------------------
-BOOL LLVOAvatar::LLVOAvatarXmlInfo::parseXmlColorNodes(LLXmlTreeNode* root)
-{
-	for (LLXmlTreeNode* color_node = root->getChildByName( "global_color" );
-		 color_node;
-		 color_node = root->getNextNamedChild())
-	{
-		std::string global_color_name;
-		static LLStdStringHandle name_string = LLXmlTree::addAttributeString("name");
-		if (color_node->getFastAttributeString( name_string, global_color_name ) )
-		{
-			if( global_color_name == "skin_color" )
-			{
-				if (mTexSkinColorInfo)
-				{
-					llwarns << "avatar file: multiple instances of skin_color" << llendl;
-					return FALSE;
-				}
-				mTexSkinColorInfo = new LLTexGlobalColorInfo;
-				if( !mTexSkinColorInfo->parseXml( color_node ) )
-				{
-					deleteAndClear(mTexSkinColorInfo);
-					llwarns << "avatar file: mTexSkinColor->parseXml() failed" << llendl;
-					return FALSE;
-				}
-			}
-			else if( global_color_name == "hair_color" )
-			{
-				if (mTexHairColorInfo)
-				{
-					llwarns << "avatar file: multiple instances of hair_color" << llendl;
-					return FALSE;
-				}
-				mTexHairColorInfo = new LLTexGlobalColorInfo;
-				if( !mTexHairColorInfo->parseXml( color_node ) )
-				{
-					deleteAndClear(mTexHairColorInfo);
-					llwarns << "avatar file: mTexHairColor->parseXml() failed" << llendl;
-					return FALSE;
-				}
-			}
-			else if( global_color_name == "eye_color" )
-			{
-				if (mTexEyeColorInfo)
-				{
-					llwarns << "avatar file: multiple instances of eye_color" << llendl;
-					return FALSE;
-				}
-				mTexEyeColorInfo = new LLTexGlobalColorInfo;
-				if( !mTexEyeColorInfo->parseXml( color_node ) )
-				{
-					llwarns << "avatar file: mTexEyeColor->parseXml() failed" << llendl;
-					return FALSE;
-				}
-			}
-		}
-	}
-	return TRUE;
-}
-
-//-----------------------------------------------------------------------------
-// parseXmlLayerNodes(): parses <layer_set> nodes from XML tree
-//-----------------------------------------------------------------------------
-BOOL LLVOAvatar::LLVOAvatarXmlInfo::parseXmlLayerNodes(LLXmlTreeNode* root)
+//virtual
+void LLVOAvatar::bodySizeChanged()
 {
-	for (LLXmlTreeNode* layer_node = root->getChildByName( "layer_set" );
-		 layer_node;
-		 layer_node = root->getNextNamedChild())
-	{
-		LLTexLayerSetInfo* layer_info = new LLTexLayerSetInfo();
-		if( layer_info->parseXml( layer_node ) )
-		{
-			mLayerInfoList.push_back(layer_info);
-		}
-		else
-		{
-			delete layer_info;
-			llwarns << "avatar file: layer_set->parseXml() failed" << llendl;
-			return FALSE;
-		}
+	if (isSelf() && !LLAppearanceMgr::instance().isInUpdateAppearanceFromCOF())
+	{	// notify simulator of change in size
+		// but not if we are in the middle of updating appearance
+		gAgent.sendAgentSetAppearance();
 	}
-	return TRUE;
 }
 
-//-----------------------------------------------------------------------------
-// parseXmlDriverNodes(): parses <driver_parameters> nodes from XML tree
-//-----------------------------------------------------------------------------
-BOOL LLVOAvatar::LLVOAvatarXmlInfo::parseXmlDriverNodes(LLXmlTreeNode* root)
-{
-	LLXmlTreeNode* driver = root->getChildByName( "driver_parameters" );
-	if( driver )
-	{
-		for (LLXmlTreeNode* grand_child = driver->getChildByName( "param" );
-			 grand_child;
-			 grand_child = driver->getNextNamedChild())
-		{
-			if( grand_child->getChildByName( "param_driver" ) )
-			{
-				LLDriverParamInfo* driver_info = new LLDriverParamInfo();
-				if( driver_info->parseXml( grand_child ) )
-				{
-					mDriverInfoList.push_back(driver_info);
-				}
-				else
-				{
-					delete driver_info;
-					llwarns << "avatar file: driver_param->parseXml() failed" << llendl;
-					return FALSE;
-				}
-			}
-		}
-	}
-	return TRUE;
-}
 
-//-----------------------------------------------------------------------------
-// parseXmlDriverNodes(): parses <driver_parameters> nodes from XML tree
-//-----------------------------------------------------------------------------
-BOOL LLVOAvatar::LLVOAvatarXmlInfo::parseXmlMorphNodes(LLXmlTreeNode* root)
-{
-	LLXmlTreeNode* masks = root->getChildByName( "morph_masks" );
-	if( !masks )
-	{
-		return FALSE;
-	}
-
-	for (LLXmlTreeNode* grand_child = masks->getChildByName( "mask" );
-		 grand_child;
-		 grand_child = masks->getNextNamedChild())
-	{
-		LLVOAvatarMorphInfo* info = new LLVOAvatarMorphInfo();
-
-		static LLStdStringHandle name_string = LLXmlTree::addAttributeString("morph_name");
-		if (!grand_child->getFastAttributeString(name_string, info->mName))
-		{
-			llwarns << "No name supplied for morph mask." << llendl;
-			delete info;
-			continue;
-		}
-
-		static LLStdStringHandle region_string = LLXmlTree::addAttributeString("body_region");
-		if (!grand_child->getFastAttributeString(region_string, info->mRegion))
-		{
-			llwarns << "No region supplied for morph mask." << llendl;
-			delete info;
-			continue;
-		}
-
-		static LLStdStringHandle layer_string = LLXmlTree::addAttributeString("layer");
-		if (!grand_child->getFastAttributeString(layer_string, info->mLayer))
-		{
-			llwarns << "No layer supplied for morph mask." << llendl;
-			delete info;
-			continue;
-		}
-
-		// optional parameter. don't throw a warning if not present.
-		static LLStdStringHandle invert_string = LLXmlTree::addAttributeString("invert");
-		grand_child->getFastAttributeBOOL(invert_string, info->mInvert);
-
-		mMorphMaskInfoList.push_back(info);
-	}
-
-	return TRUE;
+// virtual
+void LLVOAvatar::removeMissingBakedTextures()
+{	
 }
 
 //virtual
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
index dd8663f4dce..bda09b044d6 100755
--- a/indra/newview/llvoavatar.h
+++ b/indra/newview/llvoavatar.h
@@ -69,8 +69,7 @@ class LLVoiceVisualizer;
 class LLHUDNameTag;
 class LLHUDEffectSpiral;
 class LLTexGlobalColor;
-class LLVOAvatarBoneInfo;
-class LLVOAvatarSkeletonInfo;
+class LLViewerJoint;
 
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 // LLVOAvatar
@@ -85,8 +84,6 @@ class LLVOAvatar :
 
 public:
 	friend class LLVOAvatarSelf;
-protected:
-	struct LLVOAvatarXmlInfo;
 
 /********************************************************************************
  **                                                                            **
@@ -111,9 +108,6 @@ class LLVOAvatar :
 	virtual void 		initInstance(); // Called after construction to initialize the class.
 protected:
 	virtual				~LLVOAvatar();
-	BOOL				loadSkeletonNode();
-	BOOL				loadMeshNodes();
-	virtual BOOL		loadLayersets();
 
 /**                    Initialization
  **                                                                            **
@@ -190,7 +184,7 @@ class LLVOAvatar :
 	void					dumpAnimationState();
 
 	virtual LLJoint*		getJoint(const std::string &name);
-	virtual LLJoint*     	getRootJoint() { return &mRoot; }
+	virtual LLJoint*     	getRootJoint() { return mRoot; }
 	
 	void					resetJointPositions( void );
 	void					resetJointPositionsToDefault( void );
@@ -224,7 +218,6 @@ class LLVOAvatar :
 public:
 	virtual bool 	isSelf() const { return false; } // True if this avatar is for this viewer's agent
 	/*virtual*/BOOL	isUsingBakedTextures() const { return mUseServerBakes; } // e.g. false if in appearance edit mode		
-	bool isBuilt() const { return mIsBuilt; }
 
 private: //aligned members
 	LL_ALIGN_16(LLVector4a	mImpostorExtents[2]);
@@ -343,7 +336,6 @@ class LLVOAvatar :
 /**                    State
  **                                                                            **
  *******************************************************************************/
-
 /********************************************************************************
  **                                                                            **
  **                    SKELETON
@@ -351,74 +343,22 @@ class LLVOAvatar :
 
 public:
 	void				updateHeadOffset();
-	F32					getPelvisToFoot() const { return mPelvisToFoot; }
 	void				setPelvisOffset( bool hasOffset, const LLVector3& translation, F32 offset ) ;
 	bool				hasPelvisOffset( void ) { return mHasPelvisOffset; }
 	void				postPelvisSetRecalc( void );
 	void				setPelvisOffset( F32 pelvixFixupAmount );
 
+	/*virtual*/ BOOL	loadSkeletonNode();
+	/*virtual*/ void	buildCharacter();
+
 	bool				mHasPelvisOffset;
 	LLVector3			mPelvisOffset;
 	F32					mLastPelvisToFoot;
 	F32					mPelvisFixup;
 	F32					mLastPelvisFixup;
 
-	LLVector3			mHeadOffset; // current head position
-	LLViewerJoint		mRoot;
-
-	typedef std::map<std::string, LLJoint*> joint_map_t;
-	joint_map_t			mJointMap;
-
-protected:
-	static BOOL			parseSkeletonFile(const std::string& filename);
-	void				buildCharacter();
-	virtual BOOL		loadAvatar();
-
-	BOOL				setupBone(const LLVOAvatarBoneInfo* info, LLViewerJoint* parent, S32 &current_volume_num, S32 &current_joint_num);
-	BOOL				buildSkeleton(const LLVOAvatarSkeletonInfo *info);
-private:
-	BOOL				mIsBuilt; // state of deferred character building
-	S32					mNumJoints;
-	LLViewerJoint*		mSkeleton;
-	
-	//--------------------------------------------------------------------
-	// Pelvis height adjustment members.
-	//--------------------------------------------------------------------
-public:
-	LLVector3			mBodySize;
 	S32					mLastSkeletonSerialNum;
-private:
-	F32					mPelvisToFoot;
 
-	//--------------------------------------------------------------------
-	// Cached pointers to well known joints
-	//--------------------------------------------------------------------
-public:
-	LLViewerJoint* 		mPelvisp;
-	LLViewerJoint* 		mTorsop;
-	LLViewerJoint* 		mChestp;
-	LLViewerJoint* 		mNeckp;
-	LLViewerJoint* 		mHeadp;
-	LLViewerJoint* 		mSkullp;
-	LLViewerJoint* 		mEyeLeftp;
-	LLViewerJoint* 		mEyeRightp;
-	LLViewerJoint* 		mHipLeftp;
-	LLViewerJoint* 		mHipRightp;
-	LLViewerJoint* 		mKneeLeftp;
-	LLViewerJoint* 		mKneeRightp;
-	LLViewerJoint* 		mAnkleLeftp;
-	LLViewerJoint* 		mAnkleRightp;
-	LLViewerJoint* 		mFootLeftp;
-	LLViewerJoint* 		mFootRightp;
-	LLViewerJoint* 		mWristLeftp;
-	LLViewerJoint* 		mWristRightp;
-
-	//--------------------------------------------------------------------
-	// XML parse tree
-	//--------------------------------------------------------------------
-private:
-	static LLXmlTree 	sXMLTree; // avatar config file
-	static LLXmlTree 	sSkeletonXMLTree; // avatar skeleton file
 
 /**                    Skeleton
  **                                                                            **
@@ -640,8 +580,6 @@ class LLVOAvatar :
 private:
 	static const LLAvatarAppearanceDefines::LLAvatarAppearanceDictionary *getDictionary() { return sAvatarDictionary; }
 	static LLAvatarAppearanceDefines::LLAvatarAppearanceDictionary* sAvatarDictionary;
-	static LLVOAvatarSkeletonInfo* 					sAvatarSkeletonInfo;
-	static LLVOAvatarXmlInfo* 						sAvatarXmlInfo;
 
 	//--------------------------------------------------------------------
 	// Messaging
@@ -671,13 +609,10 @@ class LLVOAvatar :
 	virtual void restoreMeshData();
 private:
 	virtual void	dirtyMesh(S32 priority); // Dirty the avatar mesh, with priority
+	LLViewerJoint*	getViewerJoint(S32 idx);
 	S32 			mDirtyMesh; // 0 -- not dirty, 1 -- morphed, 2 -- LOD
 	BOOL			mMeshTexturesDirty;
 
-	typedef std::multimap<std::string, LLPolyMesh*> polymesh_map_t;
-	polymesh_map_t 									mMeshes;
-	std::vector<LLViewerJoint *> 					mMeshLOD;
-
 	//--------------------------------------------------------------------
 	// Destroy invisible mesh
 	//--------------------------------------------------------------------
@@ -698,6 +633,7 @@ class LLVOAvatar :
 	void 			processAvatarAppearance(LLMessageSystem* mesgsys);
 	void 			hideSkirt();
 	void			startAppearanceAnimation();
+	/*virtual*/ void bodySizeChanged();
 	
 	//--------------------------------------------------------------------
 	// Appearance morphing
@@ -839,15 +775,6 @@ class LLVOAvatar :
 	BOOL 		mTurning; // controls hysteresis on avatar rotation
 	F32			mSpeed; // misc. animation repeated state
 
-	//--------------------------------------------------------------------
-	// Collision volumes
-	//--------------------------------------------------------------------
-public:
-  	S32			mNumCollisionVolumes;
-	LLViewerJointCollisionVolume* mCollisionVolumes;
-protected:
-	BOOL		allocateCollisionVolumes(U32 num);
-
 	//--------------------------------------------------------------------
 	// Dimensions
 	//--------------------------------------------------------------------
@@ -858,7 +785,6 @@ class LLVOAvatar :
 	void 		resolveRayCollisionAgent(const LLVector3d start_pt, const LLVector3d end_pt, LLVector3d &out_pos, LLVector3 &out_norm);
 	void 		slamPosition(); // Slam position to transmitted position (for teleport);
 protected:
-	void 		computeBodySize();
 
 	//--------------------------------------------------------------------
 	// Material being stepped on
@@ -1025,90 +951,6 @@ class LLVOAvatar :
 
 protected: // Shared with LLVOAvatarSelf
 
-	struct LLVOAvatarXmlInfo
-	{
-		LLVOAvatarXmlInfo();
-		~LLVOAvatarXmlInfo();
-
-		BOOL 	parseXmlSkeletonNode(LLXmlTreeNode* root);
-		BOOL 	parseXmlMeshNodes(LLXmlTreeNode* root);
-		BOOL 	parseXmlColorNodes(LLXmlTreeNode* root);
-		BOOL 	parseXmlLayerNodes(LLXmlTreeNode* root);
-		BOOL 	parseXmlDriverNodes(LLXmlTreeNode* root);
-		BOOL	parseXmlMorphNodes(LLXmlTreeNode* root);
-
-		struct LLVOAvatarMeshInfo
-		{
-			typedef std::pair<LLPolyMorphTargetInfo*,BOOL> morph_info_pair_t;
-			typedef std::vector<morph_info_pair_t> morph_info_list_t;
-
-			LLVOAvatarMeshInfo() : mLOD(0), mMinPixelArea(.1f) {}
-			~LLVOAvatarMeshInfo()
-			{
-				morph_info_list_t::iterator iter;
-				for (iter = mPolyMorphTargetInfoList.begin(); iter != mPolyMorphTargetInfoList.end(); iter++)
-				{
-					delete iter->first;
-				}
-				mPolyMorphTargetInfoList.clear();
-			}
-
-			std::string mType;
-			S32			mLOD;
-			std::string	mMeshFileName;
-			std::string	mReferenceMeshName;
-			F32			mMinPixelArea;
-			morph_info_list_t mPolyMorphTargetInfoList;
-		};
-		typedef std::vector<LLVOAvatarMeshInfo*> mesh_info_list_t;
-		mesh_info_list_t mMeshInfoList;
-
-		typedef std::vector<LLPolySkeletalDistortionInfo*> skeletal_distortion_info_list_t;
-		skeletal_distortion_info_list_t mSkeletalDistortionInfoList;
-	
-		struct LLVOAvatarAttachmentInfo
-		{
-			LLVOAvatarAttachmentInfo()
-				: mGroup(-1), mAttachmentID(-1), mPieMenuSlice(-1), mVisibleFirstPerson(FALSE),
-				  mIsHUDAttachment(FALSE), mHasPosition(FALSE), mHasRotation(FALSE) {}
-			std::string mName;
-			std::string mJointName;
-			LLVector3 mPosition;
-			LLVector3 mRotationEuler;
-			S32 mGroup;
-			S32 mAttachmentID;
-			S32 mPieMenuSlice;
-			BOOL mVisibleFirstPerson;
-			BOOL mIsHUDAttachment;
-			BOOL mHasPosition;
-			BOOL mHasRotation;
-		};
-		typedef std::vector<LLVOAvatarAttachmentInfo*> attachment_info_list_t;
-		attachment_info_list_t mAttachmentInfoList;
-	
-		LLTexGlobalColorInfo *mTexSkinColorInfo;
-		LLTexGlobalColorInfo *mTexHairColorInfo;
-		LLTexGlobalColorInfo *mTexEyeColorInfo;
-
-		typedef std::vector<LLTexLayerSetInfo*> layer_info_list_t;
-		layer_info_list_t mLayerInfoList;
-
-		typedef std::vector<LLDriverParamInfo*> driver_info_list_t;
-		driver_info_list_t mDriverInfoList;
-
-		struct LLVOAvatarMorphInfo
-		{
-			LLVOAvatarMorphInfo()
-				: mInvert(FALSE) {}
-			std::string mName;
-			std::string mRegion;
-			std::string mLayer;
-			BOOL mInvert;
-		};
-
-		typedef std::vector<LLVOAvatarMorphInfo*> morph_info_list_t;
-		morph_info_list_t	mMorphMaskInfoList;
-	};
 
 /**                    Support classes
  **                                                                            **
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index fc523470416..f832a126bd4 100755
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -255,7 +255,7 @@ BOOL LLVOAvatarSelf::loadAvatarSelf()
 	return success;
 }
 
-BOOL LLVOAvatarSelf::buildSkeletonSelf(const LLVOAvatarSkeletonInfo *info)
+BOOL LLVOAvatarSelf::buildSkeletonSelf(const LLAvatarSkeletonInfo *info)
 {
 	LLMemType mt(LLMemType::MTYPE_AVATAR);
 
@@ -589,7 +589,7 @@ LLVOAvatarSelf::~LLVOAvatarSelf()
 BOOL LLVOAvatarSelf::loadLayersets()
 {
 	BOOL success = TRUE;
-	for (LLVOAvatarXmlInfo::layer_info_list_t::const_iterator iter = sAvatarXmlInfo->mLayerInfoList.begin();
+	for (LLAvatarXmlInfo::layer_info_list_t::const_iterator iter = sAvatarXmlInfo->mLayerInfoList.begin();
 		 iter != sAvatarXmlInfo->mLayerInfoList.end(); 
 		 ++iter)
 	{
@@ -952,7 +952,7 @@ void LLVOAvatarSelf::updateRegion(LLViewerRegion *regionp)
 void LLVOAvatarSelf::idleUpdateTractorBeam()
 {
 	// This is only done for yourself (maybe it should be in the agent?)
-	if (!needsRenderBeam() || !mIsBuilt)
+	if (!needsRenderBeam() || !isBuilt())
 	{
 		mBeam = NULL;
 	}
diff --git a/indra/newview/llvoavatarself.h b/indra/newview/llvoavatarself.h
index 75c2743ab04..bdc1ccf1332 100755
--- a/indra/newview/llvoavatarself.h
+++ b/indra/newview/llvoavatarself.h
@@ -67,7 +67,7 @@ class LLVOAvatarSelf :
 protected:
 	/*virtual*/ BOOL		loadAvatar();
 	BOOL					loadAvatarSelf();
-	BOOL					buildSkeletonSelf(const LLVOAvatarSkeletonInfo *info);
+	BOOL					buildSkeletonSelf(const LLAvatarSkeletonInfo *info);
 	BOOL					buildMenus();
 	/*virtual*/ BOOL		loadLayersets();
 
-- 
GitLab


From cf7eb79fa7eadd6d76890d2a3f9da905de8f4691 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Sat, 8 Sep 2012 04:39:11 +0000
Subject: [PATCH 062/436] Removed most llappearance -> llui dependencies
 (LLTrans remains).  Moved LLInventoryIcon::EIconName into LLInventoryType. 
 Moved LLInventoryIcon back to newview.  Moved LLUI gl_* functions into
 llrender.

---
 indra/appearance_utility/CMakeLists.txt       |    3 +
 .../appearance_utility/appearance_utility.cpp |    4 +
 indra/llappearance/CMakeLists.txt             |    2 -
 indra/llappearance/lltexlayer.cpp             |    2 +-
 indra/llappearance/lltexlayer.h               |    2 +-
 indra/llappearance/lltexlayerparams.cpp       |    2 +-
 indra/llappearance/llviewervisualparam.cpp    |    1 -
 indra/llappearance/llwearabletype.cpp         |   46 +-
 indra/llappearance/llwearabletype.h           |    4 +-
 indra/llinventory/llinventorytype.h           |   47 +
 indra/llrender/CMakeLists.txt                 |    4 +
 indra/llrender/llrender2dutils.cpp            | 1621 +++++++++++++++++
 indra/llrender/llrender2dutils.h              |  164 ++
 indra/{llui => llrender}/lluiimage.cpp        |    4 +-
 indra/{llui => llrender}/lluiimage.h          |    0
 indra/llui/CMakeLists.txt                     |    2 -
 indra/llui/llcombobox.cpp                     |    2 +-
 indra/llui/lllineeditor.cpp                   |    6 +-
 indra/llui/lllocalcliprect.cpp                |    8 +-
 indra/llui/lltextbase.cpp                     |    4 +-
 indra/llui/lltexteditor.cpp                   |    2 +-
 indra/llui/llui.cpp                           | 1579 +---------------
 indra/llui/llui.h                             |  131 +-
 indra/llui/tests/llurlentry_test.cpp          |    2 +-
 indra/llui/tests/llurlmatch_test.cpp          |    2 +-
 indra/newview/CMakeLists.txt                  |    2 +
 indra/newview/llappviewer.cpp                 |    2 +-
 indra/newview/llfloaterbuycontents.cpp        |    1 +
 indra/newview/llglsandbox.cpp                 |    8 +-
 indra/newview/llinventorybridge.cpp           |    3 +-
 .../llinventoryicon.cpp                       |  120 +-
 .../llinventoryicon.h                         |   52 +-
 indra/newview/llinventorylistitem.cpp         |    1 +
 indra/newview/llmediactrl.cpp                 |   18 +-
 indra/newview/llpanelgroupnotices.cpp         |    1 +
 indra/newview/llpanelobjectinventory.cpp      |    1 +
 indra/newview/lltoastgroupnotifypanel.cpp     |    1 +
 indra/newview/llviewerdisplay.cpp             |   10 +-
 indra/newview/llviewerwindow.cpp              |   12 +-
 indra/newview/llwearableitemslist.cpp         |    1 +
 indra/newview/llworldmapview.cpp              |    2 +-
 41 files changed, 2013 insertions(+), 1866 deletions(-)
 create mode 100644 indra/llrender/llrender2dutils.cpp
 create mode 100644 indra/llrender/llrender2dutils.h
 rename indra/{llui => llrender}/lluiimage.cpp (98%)
 rename indra/{llui => llrender}/lluiimage.h (100%)
 rename indra/{llappearance => newview}/llinventoryicon.cpp (52%)
 rename indra/{llappearance => newview}/llinventoryicon.h (62%)

diff --git a/indra/appearance_utility/CMakeLists.txt b/indra/appearance_utility/CMakeLists.txt
index c38f811b44a..d860dae4df8 100644
--- a/indra/appearance_utility/CMakeLists.txt
+++ b/indra/appearance_utility/CMakeLists.txt
@@ -9,6 +9,7 @@ include(OpenSSL)
 include(UI)
 include(LLAppearance)
 include(LLCommon)
+include(LLInventory)
 include(LLVFS)
 include(LLXML)
 include(LLUI)
@@ -19,6 +20,7 @@ include_directories(
     ${LLVFS_INCLUDE_DIRS}
     ${LLXML_INCLUDE_DIRS}
     ${LLUI_INCLUDE_DIRS}
+    ${LLINVENTORY_INCLUDE_DIRS}
     ${CURL_INCLUDE_DIRS}
     ${CARES_INCLUDE_DIRS}
     ${OPENSSL_INCLUDE_DIRS}
@@ -44,6 +46,7 @@ target_link_libraries(appearance-utility-bin
     ${CRYPTO_LIBRARIES}
     ${UI_LIBRARIES}
     ${LLAPPEARANCE_LIBRARIES}
+    ${LLINVENTORY_LIBRARIES}
     ${LLXML_LIBRARIES}
     ${LLUI_LIBRARIES}
     ${LLVFS_LIBRARIES}
diff --git a/indra/appearance_utility/appearance_utility.cpp b/indra/appearance_utility/appearance_utility.cpp
index 130bca84a89..c7f8703e286 100644
--- a/indra/appearance_utility/appearance_utility.cpp
+++ b/indra/appearance_utility/appearance_utility.cpp
@@ -38,6 +38,8 @@
 #include "llsdserialize.h"
 #include "llsdutil.h"
 
+//#include "llwearabledata.h"
+
 enum EResult
 {
 	RV_SUCCESS = 0,
@@ -150,6 +152,8 @@ EResult process_tbd(LLSD& input, std::ostream& output, LLSD& error_llsd)
 {
 	EResult rv = RV_SUCCESS;
 
+	//LLWearableData wearable_data;
+
 	LLSD result;
 	result["success"] = true;
 	result["input"] = input;
diff --git a/indra/llappearance/CMakeLists.txt b/indra/llappearance/CMakeLists.txt
index 41da8984579..717efb2f8b0 100644
--- a/indra/llappearance/CMakeLists.txt
+++ b/indra/llappearance/CMakeLists.txt
@@ -43,7 +43,6 @@ include_directories(
 set(llappearance_SOURCE_FILES
     llavatarappearance.cpp
     lldriverparam.cpp
-    llinventoryicon.cpp
     lllocaltextureobject.cpp
     lltexglobalcolor.cpp
     lltexlayer.cpp
@@ -61,7 +60,6 @@ set(llappearance_HEADER_FILES
 
     llavatarappearance.h
     lldriverparam.h
-    llinventoryicon.h
     lljointpickname.h
     lllocaltextureobject.h
     lltexglobalcolor.h
diff --git a/indra/llappearance/lltexlayer.cpp b/indra/llappearance/lltexlayer.cpp
index 9b70f737a08..1325267dc23 100644
--- a/indra/llappearance/lltexlayer.cpp
+++ b/indra/llappearance/lltexlayer.cpp
@@ -38,7 +38,7 @@
 #include "llvfs.h"
 #include "lltexlayerparams.h"
 #include "lltexturemanagerbridge.h"
-#include "llui.h"
+#include "llrender2dutils.h"
 #include "llwearable.h"
 #include "llwearabledata.h"
 #include "llvertexbuffer.h"
diff --git a/indra/llappearance/lltexlayer.h b/indra/llappearance/lltexlayer.h
index e6c2ece64ae..0d7fad349cb 100644
--- a/indra/llappearance/lltexlayer.h
+++ b/indra/llappearance/lltexlayer.h
@@ -28,8 +28,8 @@
 #define LL_LLTEXLAYER_H
 
 #include <deque>
+#include "llglslshader.h"
 #include "llgltexture.h"
-//#include "llframetimer.h"
 #include "llavatarappearancedefines.h"
 #include "lltexlayerparams.h"
 
diff --git a/indra/llappearance/lltexlayerparams.cpp b/indra/llappearance/lltexlayerparams.cpp
index 06001c6b15f..82c92b5a5ea 100644
--- a/indra/llappearance/lltexlayerparams.cpp
+++ b/indra/llappearance/lltexlayerparams.cpp
@@ -33,8 +33,8 @@
 #include "llquantize.h"
 #include "lltexlayer.h"
 #include "lltexturemanagerbridge.h"
+#include "llrender2dutils.h"
 #include "llwearable.h"
-#include "llui.h"
 
 //-----------------------------------------------------------------------------
 // LLTexLayerParam
diff --git a/indra/llappearance/llviewervisualparam.cpp b/indra/llappearance/llviewervisualparam.cpp
index a6792d09747..cc81bcf118a 100644
--- a/indra/llappearance/llviewervisualparam.cpp
+++ b/indra/llappearance/llviewervisualparam.cpp
@@ -31,7 +31,6 @@
 
 #include "llviewervisualparam.h"
 #include "llxmltree.h"
-#include "llui.h"
 #include "llwearable.h"
 
 //-----------------------------------------------------------------------------
diff --git a/indra/llappearance/llwearabletype.cpp b/indra/llappearance/llwearabletype.cpp
index c72a0965fe7..3a8e1b8be3f 100644
--- a/indra/llappearance/llwearabletype.cpp
+++ b/indra/llappearance/llwearabletype.cpp
@@ -26,15 +26,15 @@
 
 #include "linden_common.h"
 #include "llwearabletype.h"
-#include "llinventoryicon.h"
-#include "lltrans.h"
+#include "llinventorytype.h"
+#include "llui/lltrans.h"
 
 struct WearableEntry : public LLDictionaryEntry
 {
 	WearableEntry(const std::string &name,
 				  const std::string& default_new_name,
 				  LLAssetType::EType assetType,
-				  LLInventoryIcon::EIconName iconName,
+				  LLInventoryType::EIconName iconName,
 				  BOOL disable_camera_switch = FALSE,
 				  BOOL allow_multiwear = TRUE) :
 		LLDictionaryEntry(name),
@@ -50,7 +50,7 @@ struct WearableEntry : public LLDictionaryEntry
 	const LLAssetType::EType mAssetType;
 	const std::string mLabel;
 	const std::string mDefaultNewName; //keep mLabel for backward compatibility
-	LLInventoryIcon::EIconName mIconName;
+	LLInventoryType::EIconName mIconName;
 	BOOL mDisableCameraSwitch;
 	BOOL mAllowMultiwear;
 };
@@ -64,26 +64,26 @@ class LLWearableDictionary : public LLSingleton<LLWearableDictionary>,
 
 LLWearableDictionary::LLWearableDictionary()
 {
-	addEntry(LLWearableType::WT_SHAPE,        new WearableEntry("shape",       "New Shape",			LLAssetType::AT_BODYPART, 	LLInventoryIcon::ICONNAME_BODYPART_SHAPE, FALSE, FALSE));
-	addEntry(LLWearableType::WT_SKIN,         new WearableEntry("skin",        "New Skin",			LLAssetType::AT_BODYPART, 	LLInventoryIcon::ICONNAME_BODYPART_SKIN, FALSE, FALSE));
-	addEntry(LLWearableType::WT_HAIR,         new WearableEntry("hair",        "New Hair",			LLAssetType::AT_BODYPART, 	LLInventoryIcon::ICONNAME_BODYPART_HAIR, FALSE, FALSE));
-	addEntry(LLWearableType::WT_EYES,         new WearableEntry("eyes",        "New Eyes",			LLAssetType::AT_BODYPART, 	LLInventoryIcon::ICONNAME_BODYPART_EYES, FALSE, FALSE));
-	addEntry(LLWearableType::WT_SHIRT,        new WearableEntry("shirt",       "New Shirt",			LLAssetType::AT_CLOTHING, 	LLInventoryIcon::ICONNAME_CLOTHING_SHIRT, FALSE, TRUE));
-	addEntry(LLWearableType::WT_PANTS,        new WearableEntry("pants",       "New Pants",			LLAssetType::AT_CLOTHING, 	LLInventoryIcon::ICONNAME_CLOTHING_PANTS, FALSE, TRUE));
-	addEntry(LLWearableType::WT_SHOES,        new WearableEntry("shoes",       "New Shoes",			LLAssetType::AT_CLOTHING, 	LLInventoryIcon::ICONNAME_CLOTHING_SHOES, FALSE, TRUE));
-	addEntry(LLWearableType::WT_SOCKS,        new WearableEntry("socks",       "New Socks",			LLAssetType::AT_CLOTHING, 	LLInventoryIcon::ICONNAME_CLOTHING_SOCKS, FALSE, TRUE));
-	addEntry(LLWearableType::WT_JACKET,       new WearableEntry("jacket",      "New Jacket",		LLAssetType::AT_CLOTHING, 	LLInventoryIcon::ICONNAME_CLOTHING_JACKET, FALSE, TRUE));
-	addEntry(LLWearableType::WT_GLOVES,       new WearableEntry("gloves",      "New Gloves",		LLAssetType::AT_CLOTHING, 	LLInventoryIcon::ICONNAME_CLOTHING_GLOVES, FALSE, TRUE));
-	addEntry(LLWearableType::WT_UNDERSHIRT,   new WearableEntry("undershirt",  "New Undershirt",	LLAssetType::AT_CLOTHING, 	LLInventoryIcon::ICONNAME_CLOTHING_UNDERSHIRT, FALSE, TRUE));
-	addEntry(LLWearableType::WT_UNDERPANTS,   new WearableEntry("underpants",  "New Underpants",	LLAssetType::AT_CLOTHING, 	LLInventoryIcon::ICONNAME_CLOTHING_UNDERPANTS, FALSE, TRUE));
-	addEntry(LLWearableType::WT_SKIRT,        new WearableEntry("skirt",       "New Skirt",			LLAssetType::AT_CLOTHING, 	LLInventoryIcon::ICONNAME_CLOTHING_SKIRT, FALSE, TRUE));
-	addEntry(LLWearableType::WT_ALPHA,        new WearableEntry("alpha",       "New Alpha",			LLAssetType::AT_CLOTHING, 	LLInventoryIcon::ICONNAME_CLOTHING_ALPHA, FALSE, TRUE));
-	addEntry(LLWearableType::WT_TATTOO,       new WearableEntry("tattoo",      "New Tattoo",		LLAssetType::AT_CLOTHING, 	LLInventoryIcon::ICONNAME_CLOTHING_TATTOO, FALSE, TRUE));
+	addEntry(LLWearableType::WT_SHAPE,        new WearableEntry("shape",       "New Shape",			LLAssetType::AT_BODYPART, 	LLInventoryType::ICONNAME_BODYPART_SHAPE, FALSE, FALSE));
+	addEntry(LLWearableType::WT_SKIN,         new WearableEntry("skin",        "New Skin",			LLAssetType::AT_BODYPART, 	LLInventoryType::ICONNAME_BODYPART_SKIN, FALSE, FALSE));
+	addEntry(LLWearableType::WT_HAIR,         new WearableEntry("hair",        "New Hair",			LLAssetType::AT_BODYPART, 	LLInventoryType::ICONNAME_BODYPART_HAIR, FALSE, FALSE));
+	addEntry(LLWearableType::WT_EYES,         new WearableEntry("eyes",        "New Eyes",			LLAssetType::AT_BODYPART, 	LLInventoryType::ICONNAME_BODYPART_EYES, FALSE, FALSE));
+	addEntry(LLWearableType::WT_SHIRT,        new WearableEntry("shirt",       "New Shirt",			LLAssetType::AT_CLOTHING, 	LLInventoryType::ICONNAME_CLOTHING_SHIRT, FALSE, TRUE));
+	addEntry(LLWearableType::WT_PANTS,        new WearableEntry("pants",       "New Pants",			LLAssetType::AT_CLOTHING, 	LLInventoryType::ICONNAME_CLOTHING_PANTS, FALSE, TRUE));
+	addEntry(LLWearableType::WT_SHOES,        new WearableEntry("shoes",       "New Shoes",			LLAssetType::AT_CLOTHING, 	LLInventoryType::ICONNAME_CLOTHING_SHOES, FALSE, TRUE));
+	addEntry(LLWearableType::WT_SOCKS,        new WearableEntry("socks",       "New Socks",			LLAssetType::AT_CLOTHING, 	LLInventoryType::ICONNAME_CLOTHING_SOCKS, FALSE, TRUE));
+	addEntry(LLWearableType::WT_JACKET,       new WearableEntry("jacket",      "New Jacket",		LLAssetType::AT_CLOTHING, 	LLInventoryType::ICONNAME_CLOTHING_JACKET, FALSE, TRUE));
+	addEntry(LLWearableType::WT_GLOVES,       new WearableEntry("gloves",      "New Gloves",		LLAssetType::AT_CLOTHING, 	LLInventoryType::ICONNAME_CLOTHING_GLOVES, FALSE, TRUE));
+	addEntry(LLWearableType::WT_UNDERSHIRT,   new WearableEntry("undershirt",  "New Undershirt",	LLAssetType::AT_CLOTHING, 	LLInventoryType::ICONNAME_CLOTHING_UNDERSHIRT, FALSE, TRUE));
+	addEntry(LLWearableType::WT_UNDERPANTS,   new WearableEntry("underpants",  "New Underpants",	LLAssetType::AT_CLOTHING, 	LLInventoryType::ICONNAME_CLOTHING_UNDERPANTS, FALSE, TRUE));
+	addEntry(LLWearableType::WT_SKIRT,        new WearableEntry("skirt",       "New Skirt",			LLAssetType::AT_CLOTHING, 	LLInventoryType::ICONNAME_CLOTHING_SKIRT, FALSE, TRUE));
+	addEntry(LLWearableType::WT_ALPHA,        new WearableEntry("alpha",       "New Alpha",			LLAssetType::AT_CLOTHING, 	LLInventoryType::ICONNAME_CLOTHING_ALPHA, FALSE, TRUE));
+	addEntry(LLWearableType::WT_TATTOO,       new WearableEntry("tattoo",      "New Tattoo",		LLAssetType::AT_CLOTHING, 	LLInventoryType::ICONNAME_CLOTHING_TATTOO, FALSE, TRUE));
 
-	addEntry(LLWearableType::WT_PHYSICS,      new WearableEntry("physics",     "New Physics",		LLAssetType::AT_CLOTHING, 	LLInventoryIcon::ICONNAME_CLOTHING_PHYSICS, TRUE, TRUE));
+	addEntry(LLWearableType::WT_PHYSICS,      new WearableEntry("physics",     "New Physics",		LLAssetType::AT_CLOTHING, 	LLInventoryType::ICONNAME_CLOTHING_PHYSICS, TRUE, TRUE));
 
-	addEntry(LLWearableType::WT_INVALID,      new WearableEntry("invalid",     "Invalid Wearable", 	LLAssetType::AT_NONE, 		LLInventoryIcon::ICONNAME_NONE, FALSE, FALSE));
-	addEntry(LLWearableType::WT_NONE,      	  new WearableEntry("none",        "Invalid Wearable", 	LLAssetType::AT_NONE, 		LLInventoryIcon::ICONNAME_NONE, FALSE, FALSE));
+	addEntry(LLWearableType::WT_INVALID,      new WearableEntry("invalid",     "Invalid Wearable", 	LLAssetType::AT_NONE, 		LLInventoryType::ICONNAME_NONE, FALSE, FALSE));
+	addEntry(LLWearableType::WT_NONE,      	  new WearableEntry("none",        "Invalid Wearable", 	LLAssetType::AT_NONE, 		LLInventoryType::ICONNAME_NONE, FALSE, FALSE));
 }
 
 // static
@@ -131,7 +131,7 @@ LLAssetType::EType LLWearableType::getAssetType(LLWearableType::EType type)
 }
 
 // static 
-LLInventoryIcon::EIconName LLWearableType::getIconName(LLWearableType::EType type)
+LLInventoryType::EIconName LLWearableType::getIconName(LLWearableType::EType type)
 {
 	const LLWearableDictionary *dict = LLWearableDictionary::getInstance();
 	const WearableEntry *entry = dict->lookup(type);
diff --git a/indra/llappearance/llwearabletype.h b/indra/llappearance/llwearabletype.h
index d633b4807ec..78008c27ea2 100644
--- a/indra/llappearance/llwearabletype.h
+++ b/indra/llappearance/llwearabletype.h
@@ -29,7 +29,7 @@
 
 #include "llassettype.h"
 #include "lldictionary.h"
-#include "llinventoryicon.h"
+#include "llinventorytype.h"
 #include "llsingleton.h"
 
 class LLWearableType
@@ -64,7 +64,7 @@ class LLWearableType
 	static const std::string& 			getTypeLabel(EType type);
 	static LLAssetType::EType 			getAssetType(EType type);
 	static EType 						typeNameToType(const std::string& type_name);
-	static LLInventoryIcon::EIconName 	getIconName(EType type);
+	static LLInventoryType::EIconName 	getIconName(EType type);
 	static BOOL 						getDisableCameraSwitch(EType type);
 	static BOOL 						getAllowMultiwear(EType type);
 
diff --git a/indra/llinventory/llinventorytype.h b/indra/llinventory/llinventorytype.h
index 4d1e0db0401..078b7739328 100644
--- a/indra/llinventory/llinventorytype.h
+++ b/indra/llinventory/llinventorytype.h
@@ -68,6 +68,53 @@ class LLInventoryType
 		IT_NONE = -1
 	};
 
+	enum EIconName
+	{
+		ICONNAME_TEXTURE,
+		ICONNAME_SOUND,
+		ICONNAME_CALLINGCARD_ONLINE,
+		ICONNAME_CALLINGCARD_OFFLINE,
+		ICONNAME_LANDMARK,
+		ICONNAME_LANDMARK_VISITED,
+		ICONNAME_SCRIPT,
+		ICONNAME_CLOTHING,
+		ICONNAME_OBJECT,
+		ICONNAME_OBJECT_MULTI,
+		ICONNAME_NOTECARD,
+		ICONNAME_BODYPART,
+		ICONNAME_SNAPSHOT,
+		
+		ICONNAME_BODYPART_SHAPE,
+		ICONNAME_BODYPART_SKIN,
+		ICONNAME_BODYPART_HAIR,
+		ICONNAME_BODYPART_EYES,
+		ICONNAME_CLOTHING_SHIRT,
+		ICONNAME_CLOTHING_PANTS,
+		ICONNAME_CLOTHING_SHOES,
+		ICONNAME_CLOTHING_SOCKS,
+		ICONNAME_CLOTHING_JACKET,
+		ICONNAME_CLOTHING_GLOVES,
+		ICONNAME_CLOTHING_UNDERSHIRT,
+		ICONNAME_CLOTHING_UNDERPANTS,
+		ICONNAME_CLOTHING_SKIRT,
+		ICONNAME_CLOTHING_ALPHA,
+		ICONNAME_CLOTHING_TATTOO,
+
+		ICONNAME_ANIMATION,
+		ICONNAME_GESTURE,
+
+		ICONNAME_CLOTHING_PHYSICS,
+		
+		ICONNAME_LINKITEM,
+		ICONNAME_LINKFOLDER,
+		ICONNAME_MESH,
+
+		ICONNAME_INVALID,
+		ICONNAME_COUNT,
+		ICONNAME_NONE = -1
+	};
+
+
 	// machine transation between type and strings
 	static EType lookup(const std::string& name);
 	static const std::string &lookup(EType type);
diff --git a/indra/llrender/CMakeLists.txt b/indra/llrender/CMakeLists.txt
index 4609401ccf0..3418ce2dfa7 100644
--- a/indra/llrender/CMakeLists.txt
+++ b/indra/llrender/CMakeLists.txt
@@ -37,10 +37,12 @@ set(llrender_SOURCE_FILES
     llgltexture.cpp
     llimagegl.cpp
     llpostprocess.cpp
+    llrender2dutils.cpp
     llrendernavprim.cpp
     llrendersphere.cpp
     llshadermgr.cpp
     lltexture.cpp
+    lluiimage.cpp
     llvertexbuffer.cpp
     )
     
@@ -62,10 +64,12 @@ set(llrender_HEADER_FILES
     llimagegl.h
     llpostprocess.h
     llrender.h
+    llrender2dutils.h
     llrendernavprim.h
     llrendersphere.h
     llshadermgr.h
     lltexture.h
+    lluiimage.h
     llvertexbuffer.h
     )
 
diff --git a/indra/llrender/llrender2dutils.cpp b/indra/llrender/llrender2dutils.cpp
new file mode 100644
index 00000000000..b2679176bea
--- /dev/null
+++ b/indra/llrender/llrender2dutils.cpp
@@ -0,0 +1,1621 @@
+/** 
+ * @file llrender2dutils.cpp
+ * @brief GL function implementations for immediate-mode gl drawing.
+ *
+ * $LicenseInfo:firstyear=2001&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+#include "linden_common.h"
+
+// Linden library includes
+#include "v2math.h"
+#include "m3math.h"
+#include "v4color.h"
+#include "llfontgl.h"
+#include "llrender.h"
+#include "llrect.h"
+#include "llgl.h"
+#include "lltexture.h"
+
+// Project includes
+#include "llrender2dutils.h"
+#include "lluiimage.h"
+
+
+//
+// Globals
+//
+const LLColor4 UI_VERTEX_COLOR(1.f, 1.f, 1.f, 1.f);
+/*static*/ LLVector2		LLRender2D::sGLScaleFactor(1.f, 1.f);
+/*static*/ LLImageProviderInterface* LLRender2D::sImageProvider = NULL;
+
+//
+// Functions
+//
+
+BOOL ui_point_in_rect(S32 x, S32 y, S32 left, S32 top, S32 right, S32 bottom)
+{
+	if (x < left || right < x) return FALSE;
+	if (y < bottom || top < y) return FALSE;
+	return TRUE;
+}
+
+
+// Puts GL into 2D drawing mode by turning off lighting, setting to an
+// orthographic projection, etc.
+void gl_state_for_2d(S32 width, S32 height)
+{
+	stop_glerror();
+	F32 window_width = (F32) width;//gViewerWindow->getWindowWidth();
+	F32 window_height = (F32) height;//gViewerWindow->getWindowHeight();
+
+	gGL.matrixMode(LLRender::MM_PROJECTION);
+	gGL.loadIdentity();
+	gGL.ortho(0.0f, llmax(window_width, 1.f), 0.0f, llmax(window_height,1.f), -1.0f, 1.0f);
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
+	gGL.loadIdentity();
+	stop_glerror();
+}
+
+
+void gl_draw_x(const LLRect& rect, const LLColor4& color)
+{
+	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
+
+	gGL.color4fv( color.mV );
+
+	gGL.begin( LLRender::LINES );
+		gGL.vertex2i( rect.mLeft,		rect.mTop );
+		gGL.vertex2i( rect.mRight,	rect.mBottom );
+		gGL.vertex2i( rect.mLeft,		rect.mBottom );
+		gGL.vertex2i( rect.mRight,	rect.mTop );
+	gGL.end();
+}
+
+
+void gl_rect_2d_offset_local( S32 left, S32 top, S32 right, S32 bottom, const LLColor4 &color, S32 pixel_offset, BOOL filled)
+{
+	gGL.color4fv(color.mV);
+	gl_rect_2d_offset_local(left, top, right, bottom, pixel_offset, filled);
+}
+
+void gl_rect_2d_offset_local( S32 left, S32 top, S32 right, S32 bottom, S32 pixel_offset, BOOL filled)
+{
+	gGL.pushUIMatrix();
+	left += LLFontGL::sCurOrigin.mX;
+	right += LLFontGL::sCurOrigin.mX;
+	bottom += LLFontGL::sCurOrigin.mY;
+	top += LLFontGL::sCurOrigin.mY;
+
+	gGL.loadUIIdentity();
+	gl_rect_2d(llfloor((F32)left * LLRender2D::sGLScaleFactor.mV[VX]) - pixel_offset,
+				llfloor((F32)top * LLRender2D::sGLScaleFactor.mV[VY]) + pixel_offset,
+				llfloor((F32)right * LLRender2D::sGLScaleFactor.mV[VX]) + pixel_offset,
+				llfloor((F32)bottom * LLRender2D::sGLScaleFactor.mV[VY]) - pixel_offset,
+				filled);
+	gGL.popUIMatrix();
+}
+
+
+void gl_rect_2d(S32 left, S32 top, S32 right, S32 bottom, BOOL filled )
+{
+	stop_glerror();
+	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
+
+	// Counterclockwise quad will face the viewer
+	if( filled )
+	{ 
+		gGL.begin( LLRender::QUADS );
+			gGL.vertex2i(left, top);
+			gGL.vertex2i(left, bottom);
+			gGL.vertex2i(right, bottom);
+			gGL.vertex2i(right, top);
+		gGL.end();
+	}
+	else
+	{
+		if( gGLManager.mATIOffsetVerticalLines )
+		{
+			// Work around bug in ATI driver: vertical lines are offset by (-1,-1)
+			gGL.begin( LLRender::LINES );
+
+				// Verticals 
+				gGL.vertex2i(left + 1, top);
+				gGL.vertex2i(left + 1, bottom);
+
+				gGL.vertex2i(right, bottom);
+				gGL.vertex2i(right, top);
+
+				// Horizontals
+				top--;
+				right--;
+				gGL.vertex2i(left, bottom);
+				gGL.vertex2i(right, bottom);
+
+				gGL.vertex2i(left, top);
+				gGL.vertex2i(right, top);
+			gGL.end();
+		}
+		else
+		{
+			top--;
+			right--;
+			gGL.begin( LLRender::LINE_STRIP );
+				gGL.vertex2i(left, top);
+				gGL.vertex2i(left, bottom);
+				gGL.vertex2i(right, bottom);
+				gGL.vertex2i(right, top);
+				gGL.vertex2i(left, top);
+			gGL.end();
+		}
+	}
+	stop_glerror();
+}
+
+void gl_rect_2d(S32 left, S32 top, S32 right, S32 bottom, const LLColor4 &color, BOOL filled )
+{
+	gGL.color4fv( color.mV );
+	gl_rect_2d( left, top, right, bottom, filled );
+}
+
+
+void gl_rect_2d( const LLRect& rect, const LLColor4& color, BOOL filled )
+{
+	gGL.color4fv( color.mV );
+	gl_rect_2d( rect.mLeft, rect.mTop, rect.mRight, rect.mBottom, filled );
+}
+
+// Given a rectangle on the screen, draws a drop shadow _outside_
+// the right and bottom edges of it.  Along the right it has width "lines"
+// and along the bottom it has height "lines".
+void gl_drop_shadow(S32 left, S32 top, S32 right, S32 bottom, const LLColor4 &start_color, S32 lines)
+{
+	stop_glerror();
+	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
+	
+	// HACK: Overlap with the rectangle by a single pixel.
+	right--;
+	bottom++;
+	lines++;
+
+	LLColor4 end_color = start_color;
+	end_color.mV[VALPHA] = 0.f;
+
+	gGL.begin(LLRender::QUADS);
+
+	// Right edge, CCW faces screen
+	gGL.color4fv(start_color.mV);
+	gGL.vertex2i(right,		top-lines);
+	gGL.vertex2i(right,		bottom);
+	gGL.color4fv(end_color.mV);
+	gGL.vertex2i(right+lines, bottom);
+	gGL.vertex2i(right+lines, top-lines);
+
+	// Bottom edge, CCW faces screen
+	gGL.color4fv(start_color.mV);
+	gGL.vertex2i(right,		bottom);
+	gGL.vertex2i(left+lines,	bottom);
+	gGL.color4fv(end_color.mV);
+	gGL.vertex2i(left+lines,	bottom-lines);
+	gGL.vertex2i(right,		bottom-lines);
+
+	// bottom left Corner
+	gGL.color4fv(start_color.mV);
+	gGL.vertex2i(left+lines,	bottom);
+	gGL.color4fv(end_color.mV);
+	gGL.vertex2i(left,		bottom);
+	// make the bottom left corner not sharp
+	gGL.vertex2i(left+1,		bottom-lines+1);
+	gGL.vertex2i(left+lines,	bottom-lines);
+
+	// bottom right corner
+	gGL.color4fv(start_color.mV);
+	gGL.vertex2i(right,		bottom);
+	gGL.color4fv(end_color.mV);
+	gGL.vertex2i(right,		bottom-lines);
+	// make the rightmost corner not sharp
+	gGL.vertex2i(right+lines-1,	bottom-lines+1);
+	gGL.vertex2i(right+lines,	bottom);
+
+	// top right corner
+	gGL.color4fv(start_color.mV);
+	gGL.vertex2i( right,			top-lines );
+	gGL.color4fv(end_color.mV);
+	gGL.vertex2i( right+lines,	top-lines );
+	// make the corner not sharp
+	gGL.vertex2i( right+lines-1,	top-1 );
+	gGL.vertex2i( right,			top );
+
+	gGL.end();
+	stop_glerror();
+}
+
+void gl_line_2d(S32 x1, S32 y1, S32 x2, S32 y2 )
+{
+	// Work around bug in ATI driver: vertical lines are offset by (-1,-1)
+	if( (x1 == x2) && gGLManager.mATIOffsetVerticalLines )
+	{
+		x1++;
+		x2++;
+		y1++;
+		y2++;
+	}
+
+	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
+	
+	gGL.begin(LLRender::LINES);
+		gGL.vertex2i(x1, y1);
+		gGL.vertex2i(x2, y2);
+	gGL.end();
+}
+
+void gl_line_2d(S32 x1, S32 y1, S32 x2, S32 y2, const LLColor4 &color )
+{
+	// Work around bug in ATI driver: vertical lines are offset by (-1,-1)
+	if( (x1 == x2) && gGLManager.mATIOffsetVerticalLines )
+	{
+		x1++;
+		x2++;
+		y1++;
+		y2++;
+	}
+
+	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
+
+	gGL.color4fv( color.mV );
+
+	gGL.begin(LLRender::LINES);
+		gGL.vertex2i(x1, y1);
+		gGL.vertex2i(x2, y2);
+	gGL.end();
+}
+
+void gl_triangle_2d(S32 x1, S32 y1, S32 x2, S32 y2, S32 x3, S32 y3, const LLColor4& color, BOOL filled)
+{
+	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
+
+	gGL.color4fv(color.mV);
+
+	if (filled)
+	{
+		gGL.begin(LLRender::TRIANGLES);
+	}
+	else
+	{
+		gGL.begin(LLRender::LINE_LOOP);
+	}
+	gGL.vertex2i(x1, y1);
+	gGL.vertex2i(x2, y2);
+	gGL.vertex2i(x3, y3);
+	gGL.end();
+}
+
+void gl_corners_2d(S32 left, S32 top, S32 right, S32 bottom, S32 length, F32 max_frac)
+{
+	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
+
+	length = llmin((S32)(max_frac*(right - left)), length);
+	length = llmin((S32)(max_frac*(top - bottom)), length);
+	gGL.begin(LLRender::LINES);
+	gGL.vertex2i(left, top);
+	gGL.vertex2i(left + length, top);
+	
+	gGL.vertex2i(left, top);
+	gGL.vertex2i(left, top - length);
+
+	gGL.vertex2i(left, bottom);
+	gGL.vertex2i(left + length, bottom);
+	
+	gGL.vertex2i(left, bottom);
+	gGL.vertex2i(left, bottom + length);
+
+	gGL.vertex2i(right, top);
+	gGL.vertex2i(right - length, top);
+
+	gGL.vertex2i(right, top);
+	gGL.vertex2i(right, top - length);
+
+	gGL.vertex2i(right, bottom);
+	gGL.vertex2i(right - length, bottom);
+
+	gGL.vertex2i(right, bottom);
+	gGL.vertex2i(right, bottom + length);
+	gGL.end();
+}
+
+
+void gl_draw_image( S32 x, S32 y, LLTexture* image, const LLColor4& color, const LLRectf& uv_rect )
+{
+	if (NULL == image)
+	{
+		llwarns << "image == NULL; aborting function" << llendl;
+		return;
+	}
+	gl_draw_scaled_rotated_image( x, y, image->getWidth(0), image->getHeight(0), 0.f, image, color, uv_rect );
+}
+
+void gl_draw_scaled_image(S32 x, S32 y, S32 width, S32 height, LLTexture* image, const LLColor4& color, const LLRectf& uv_rect)
+{
+	if (NULL == image)
+	{
+		llwarns << "image == NULL; aborting function" << llendl;
+		return;
+	}
+	gl_draw_scaled_rotated_image( x, y, width, height, 0.f, image, color, uv_rect );
+}
+
+void gl_draw_scaled_image_with_border(S32 x, S32 y, S32 border_width, S32 border_height, S32 width, S32 height, LLTexture* image, const LLColor4& color, BOOL solid_color, const LLRectf& uv_rect)
+{
+	if (NULL == image)
+	{
+		llwarns << "image == NULL; aborting function" << llendl;
+		return;
+	}
+
+	// scale screen size of borders down
+	F32 border_width_fraction = (F32)border_width / (F32)image->getWidth(0);
+	F32 border_height_fraction = (F32)border_height / (F32)image->getHeight(0);
+
+	LLRectf scale_rect(border_width_fraction, 1.f - border_height_fraction, 1.f - border_width_fraction, border_height_fraction);
+	gl_draw_scaled_image_with_border(x, y, width, height, image, color, solid_color, uv_rect, scale_rect);
+}
+
+void gl_draw_scaled_image_with_border(S32 x, S32 y, S32 width, S32 height, LLTexture* image, const LLColor4& color, BOOL solid_color, const LLRectf& uv_outer_rect, const LLRectf& center_rect)
+{
+	stop_glerror();
+
+	if (NULL == image)
+	{
+		llwarns << "image == NULL; aborting function" << llendl;
+		return;
+	}
+
+	// add in offset of current image to current UI translation
+	const LLVector3 ui_scale = gGL.getUIScale();
+	const LLVector3 ui_translation = (gGL.getUITranslation() + LLVector3(x, y, 0.f)).scaledVec(ui_scale);
+
+	F32 uv_width = uv_outer_rect.getWidth();
+	F32 uv_height = uv_outer_rect.getHeight();
+
+	// shrink scaling region to be proportional to clipped image region
+	LLRectf uv_center_rect(
+		uv_outer_rect.mLeft + (center_rect.mLeft * uv_width),
+		uv_outer_rect.mBottom + (center_rect.mTop * uv_height),
+		uv_outer_rect.mLeft + (center_rect.mRight * uv_width),
+		uv_outer_rect.mBottom + (center_rect.mBottom * uv_height));
+
+	F32 image_width = image->getWidth(0);
+	F32 image_height = image->getHeight(0);
+
+	S32 image_natural_width = llround(image_width * uv_width);
+	S32 image_natural_height = llround(image_height * uv_height);
+
+	LLRectf draw_center_rect(	uv_center_rect.mLeft * image_width,
+								uv_center_rect.mTop * image_height,
+								uv_center_rect.mRight * image_width,
+								uv_center_rect.mBottom * image_height);
+
+	{	// scale fixed region of image to drawn region
+		draw_center_rect.mRight += width - image_natural_width;
+		draw_center_rect.mTop += height - image_natural_height;
+
+		F32 border_shrink_width = llmax(0.f, draw_center_rect.mLeft - draw_center_rect.mRight);
+		F32 border_shrink_height = llmax(0.f, draw_center_rect.mBottom - draw_center_rect.mTop);
+
+		F32 shrink_width_ratio = center_rect.getWidth() == 1.f ? 0.f : border_shrink_width / ((F32)image_natural_width * (1.f - center_rect.getWidth()));
+		F32 shrink_height_ratio = center_rect.getHeight() == 1.f ? 0.f : border_shrink_height / ((F32)image_natural_height * (1.f - center_rect.getHeight()));
+
+		F32 shrink_scale = 1.f - llmax(shrink_width_ratio, shrink_height_ratio);
+
+		draw_center_rect.mLeft = llround(ui_translation.mV[VX] + (F32)draw_center_rect.mLeft * shrink_scale * ui_scale.mV[VX]);
+		draw_center_rect.mTop = llround(ui_translation.mV[VY] + lerp((F32)height, (F32)draw_center_rect.mTop, shrink_scale) * ui_scale.mV[VY]);
+		draw_center_rect.mRight = llround(ui_translation.mV[VX] + lerp((F32)width, (F32)draw_center_rect.mRight, shrink_scale) * ui_scale.mV[VX]);
+		draw_center_rect.mBottom = llround(ui_translation.mV[VY] + (F32)draw_center_rect.mBottom * shrink_scale * ui_scale.mV[VY]);
+	}
+
+	LLRectf draw_outer_rect(ui_translation.mV[VX], 
+							ui_translation.mV[VY] + height * ui_scale.mV[VY], 
+							ui_translation.mV[VX] + width * ui_scale.mV[VX], 
+							ui_translation.mV[VY]);
+
+	LLGLSUIDefault gls_ui;
+	
+	if (solid_color)
+	{
+		if (LLGLSLShader::sNoFixedFunction)
+		{
+			gSolidColorProgram.bind();
+		}
+		else
+		{
+			gGL.getTexUnit(0)->setTextureColorBlend(LLTexUnit::TBO_REPLACE, LLTexUnit::TBS_PREV_COLOR);
+			gGL.getTexUnit(0)->setTextureAlphaBlend(LLTexUnit::TBO_MULT, LLTexUnit::TBS_TEX_ALPHA, LLTexUnit::TBS_VERT_ALPHA);
+		}
+	}
+
+	gGL.getTexUnit(0)->bind(image, true);
+
+	gGL.color4fv(color.mV);
+	
+	const S32 NUM_VERTICES = 9 * 4; // 9 quads
+	LLVector2 uv[NUM_VERTICES];
+	LLVector3 pos[NUM_VERTICES];
+
+	S32 index = 0;
+
+	gGL.begin(LLRender::QUADS);
+	{
+		// draw bottom left
+		uv[index] = LLVector2(uv_outer_rect.mLeft, uv_outer_rect.mBottom);
+		pos[index] = LLVector3(draw_outer_rect.mLeft, draw_outer_rect.mBottom, 0.f);
+		index++;
+
+		uv[index] = LLVector2(uv_center_rect.mLeft, uv_outer_rect.mBottom);
+		pos[index] = LLVector3(draw_center_rect.mLeft, draw_outer_rect.mBottom, 0.f);
+		index++;
+
+		uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mBottom);
+		pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mBottom, 0.f);
+		index++;
+
+		uv[index] = LLVector2(uv_outer_rect.mLeft, uv_center_rect.mBottom);
+		pos[index] = LLVector3(draw_outer_rect.mLeft, draw_center_rect.mBottom, 0.f);
+		index++;
+
+		// draw bottom middle
+		uv[index] = LLVector2(uv_center_rect.mLeft, uv_outer_rect.mBottom);
+		pos[index] = LLVector3(draw_center_rect.mLeft, draw_outer_rect.mBottom, 0.f);
+		index++;
+
+		uv[index] = LLVector2(uv_center_rect.mRight, uv_outer_rect.mBottom);
+		pos[index] = LLVector3(draw_center_rect.mRight, draw_outer_rect.mBottom, 0.f);
+		index++;
+
+		uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mBottom);
+		pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mBottom, 0.f);
+		index++;
+
+		uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mBottom);
+		pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mBottom, 0.f);
+		index++;
+
+		// draw bottom right
+		uv[index] = LLVector2(uv_center_rect.mRight, uv_outer_rect.mBottom);
+		pos[index] = LLVector3(draw_center_rect.mRight, draw_outer_rect.mBottom, 0.f);
+		index++;
+
+		uv[index] = LLVector2(uv_outer_rect.mRight, uv_outer_rect.mBottom);
+		pos[index] = LLVector3(draw_outer_rect.mRight, draw_outer_rect.mBottom, 0.f);
+		index++;
+
+		uv[index] = LLVector2(uv_outer_rect.mRight, uv_center_rect.mBottom);
+		pos[index] = LLVector3(draw_outer_rect.mRight, draw_center_rect.mBottom, 0.f);
+		index++;
+
+		uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mBottom);
+		pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mBottom, 0.f);
+		index++;
+
+		// draw left 
+		uv[index] = LLVector2(uv_outer_rect.mLeft, uv_center_rect.mBottom);
+		pos[index] = LLVector3(draw_outer_rect.mLeft, draw_center_rect.mBottom, 0.f);
+		index++;
+
+		uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mBottom);
+		pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mBottom, 0.f);
+		index++;
+
+		uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mTop);
+		pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mTop, 0.f);
+		index++;
+
+		uv[index] = LLVector2(uv_outer_rect.mLeft, uv_center_rect.mTop);
+		pos[index] = LLVector3(draw_outer_rect.mLeft, draw_center_rect.mTop, 0.f);
+		index++;
+
+		// draw middle
+		uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mBottom);
+		pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mBottom, 0.f);
+		index++;
+
+		uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mBottom);
+		pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mBottom, 0.f);
+		index++;
+
+		uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mTop);
+		pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mTop, 0.f);
+		index++;
+
+		uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mTop);
+		pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mTop, 0.f);
+		index++;
+
+		// draw right 
+		uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mBottom);
+		pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mBottom, 0.f);
+		index++;
+
+		uv[index] = LLVector2(uv_outer_rect.mRight, uv_center_rect.mBottom);
+		pos[index] = LLVector3(draw_outer_rect.mRight, draw_center_rect.mBottom, 0.f);
+		index++;
+
+		uv[index] = LLVector2(uv_outer_rect.mRight, uv_center_rect.mTop);
+		pos[index] = LLVector3(draw_outer_rect.mRight, draw_center_rect.mTop, 0.f);
+		index++;
+
+		uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mTop);
+		pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mTop, 0.f);
+		index++;
+
+		// draw top left
+		uv[index] = LLVector2(uv_outer_rect.mLeft, uv_center_rect.mTop);
+		pos[index] = LLVector3(draw_outer_rect.mLeft, draw_center_rect.mTop, 0.f);
+		index++;
+
+		uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mTop);
+		pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mTop, 0.f);
+		index++;
+
+		uv[index] = LLVector2(uv_center_rect.mLeft, uv_outer_rect.mTop);
+		pos[index] = LLVector3(draw_center_rect.mLeft, draw_outer_rect.mTop, 0.f);
+		index++;
+
+		uv[index] = LLVector2(uv_outer_rect.mLeft, uv_outer_rect.mTop);
+		pos[index] = LLVector3(draw_outer_rect.mLeft, draw_outer_rect.mTop, 0.f);
+		index++;
+
+		// draw top middle
+		uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mTop);
+		pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mTop, 0.f);
+		index++;
+
+		uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mTop);
+		pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mTop, 0.f);
+		index++;
+
+		uv[index] = LLVector2(uv_center_rect.mRight, uv_outer_rect.mTop);
+		pos[index] = LLVector3(draw_center_rect.mRight, draw_outer_rect.mTop, 0.f);
+		index++;
+
+		uv[index] = LLVector2(uv_center_rect.mLeft, uv_outer_rect.mTop);
+		pos[index] = LLVector3(draw_center_rect.mLeft, draw_outer_rect.mTop, 0.f);
+		index++;
+
+		// draw top right
+		uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mTop);
+		pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mTop, 0.f);
+		index++;
+
+		uv[index] = LLVector2(uv_outer_rect.mRight, uv_center_rect.mTop);
+		pos[index] = LLVector3(draw_outer_rect.mRight, draw_center_rect.mTop, 0.f);
+		index++;
+
+		uv[index] = LLVector2(uv_outer_rect.mRight, uv_outer_rect.mTop);
+		pos[index] = LLVector3(draw_outer_rect.mRight, draw_outer_rect.mTop, 0.f);
+		index++;
+
+		uv[index] = LLVector2(uv_center_rect.mRight, uv_outer_rect.mTop);
+		pos[index] = LLVector3(draw_center_rect.mRight, draw_outer_rect.mTop, 0.f);
+		index++;
+
+		gGL.vertexBatchPreTransformed(pos, uv, NUM_VERTICES);
+	}
+	gGL.end();
+
+	if (solid_color)
+	{
+		if (LLGLSLShader::sNoFixedFunction)
+		{
+			gUIProgram.bind();
+		}
+		else
+		{
+			gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
+		}
+	}
+}
+
+void gl_draw_rotated_image(S32 x, S32 y, F32 degrees, LLTexture* image, const LLColor4& color, const LLRectf& uv_rect)
+{
+	gl_draw_scaled_rotated_image( x, y, image->getWidth(0), image->getHeight(0), degrees, image, color, uv_rect );
+}
+
+void gl_draw_scaled_rotated_image(S32 x, S32 y, S32 width, S32 height, F32 degrees, LLTexture* image, const LLColor4& color, const LLRectf& uv_rect)
+{
+	if (NULL == image)
+	{
+		llwarns << "image == NULL; aborting function" << llendl;
+		return;
+	}
+
+	LLGLSUIDefault gls_ui;
+
+
+	gGL.getTexUnit(0)->bind(image, true);
+
+	gGL.color4fv(color.mV);
+
+	if (degrees == 0.f)
+	{
+		const S32 NUM_VERTICES = 4; // 9 quads
+		LLVector2 uv[NUM_VERTICES];
+		LLVector3 pos[NUM_VERTICES];
+
+		gGL.begin(LLRender::QUADS);
+		{
+			LLVector3 ui_scale = gGL.getUIScale();
+			LLVector3 ui_translation = gGL.getUITranslation();
+			ui_translation.mV[VX] += x;
+			ui_translation.mV[VY] += y;
+			ui_translation.scaleVec(ui_scale);
+			S32 index = 0;
+			S32 scaled_width = llround(width * ui_scale.mV[VX]);
+			S32 scaled_height = llround(height * ui_scale.mV[VY]);
+
+			uv[index] = LLVector2(uv_rect.mRight, uv_rect.mTop);
+			pos[index] = LLVector3(ui_translation.mV[VX] + scaled_width, ui_translation.mV[VY] + scaled_height, 0.f);
+			index++;
+
+			uv[index] = LLVector2(uv_rect.mLeft, uv_rect.mTop);
+			pos[index] = LLVector3(ui_translation.mV[VX], ui_translation.mV[VY] + scaled_height, 0.f);
+			index++;
+
+			uv[index] = LLVector2(uv_rect.mLeft, uv_rect.mBottom);
+			pos[index] = LLVector3(ui_translation.mV[VX], ui_translation.mV[VY], 0.f);
+			index++;
+
+			uv[index] = LLVector2(uv_rect.mRight, uv_rect.mBottom);
+			pos[index] = LLVector3(ui_translation.mV[VX] + scaled_width, ui_translation.mV[VY], 0.f);
+			index++;
+
+			gGL.vertexBatchPreTransformed(pos, uv, NUM_VERTICES);
+		}
+		gGL.end();
+	}
+	else
+	{
+		gGL.pushUIMatrix();
+		gGL.translateUI((F32)x, (F32)y, 0.f);
+	
+		F32 offset_x = F32(width/2);
+		F32 offset_y = F32(height/2);
+
+		gGL.translateUI(offset_x, offset_y, 0.f);
+
+		LLMatrix3 quat(0.f, 0.f, degrees*DEG_TO_RAD);
+		
+		gGL.getTexUnit(0)->bind(image, true);
+
+		gGL.color4fv(color.mV);
+		
+		gGL.begin(LLRender::QUADS);
+		{
+			LLVector3 v;
+
+			v = LLVector3(offset_x, offset_y, 0.f) * quat;
+			gGL.texCoord2f(uv_rect.mRight, uv_rect.mTop);
+			gGL.vertex2f(v.mV[0], v.mV[1] );
+
+			v = LLVector3(-offset_x, offset_y, 0.f) * quat;
+			gGL.texCoord2f(uv_rect.mLeft, uv_rect.mTop);
+			gGL.vertex2f(v.mV[0], v.mV[1] );
+
+			v = LLVector3(-offset_x, -offset_y, 0.f) * quat;
+			gGL.texCoord2f(uv_rect.mLeft, uv_rect.mBottom);
+			gGL.vertex2f(v.mV[0], v.mV[1] );
+
+			v = LLVector3(offset_x, -offset_y, 0.f) * quat;
+			gGL.texCoord2f(uv_rect.mRight, uv_rect.mBottom);
+			gGL.vertex2f(v.mV[0], v.mV[1] );
+		}
+		gGL.end();
+		gGL.popUIMatrix();
+	}
+}
+
+
+void gl_stippled_line_3d( const LLVector3& start, const LLVector3& end, const LLColor4& color, F32 phase )
+{
+	phase = fmod(phase, 1.f);
+
+	S32 shift = S32(phase * 4.f) % 4;
+
+	// Stippled line
+	LLGLEnable stipple(GL_LINE_STIPPLE);
+	
+	gGL.color4f(color.mV[VRED], color.mV[VGREEN], color.mV[VBLUE], color.mV[VALPHA]);
+
+	gGL.flush();
+	glLineWidth(2.5f);
+
+	if (!LLGLSLShader::sNoFixedFunction)
+	{
+		glLineStipple(2, 0x3333 << shift);
+	}
+
+	gGL.begin(LLRender::LINES);
+	{
+		gGL.vertex3fv( start.mV );
+		gGL.vertex3fv( end.mV );
+	}
+	gGL.end();
+
+	LLRender2D::setLineWidth(1.f);
+}
+
+void gl_arc_2d(F32 center_x, F32 center_y, F32 radius, S32 steps, BOOL filled, F32 start_angle, F32 end_angle)
+{
+	if (end_angle < start_angle)
+	{
+		end_angle += F_TWO_PI;
+	}
+
+	gGL.pushUIMatrix();
+	{
+		gGL.translateUI(center_x, center_y, 0.f);
+
+		// Inexact, but reasonably fast.
+		F32 delta = (end_angle - start_angle) / steps;
+		F32 sin_delta = sin( delta );
+		F32 cos_delta = cos( delta );
+		F32 x = cosf(start_angle) * radius;
+		F32 y = sinf(start_angle) * radius;
+
+		if (filled)
+		{
+			gGL.begin(LLRender::TRIANGLE_FAN);
+			gGL.vertex2f(0.f, 0.f);
+			// make sure circle is complete
+			steps += 1;
+		}
+		else
+		{
+			gGL.begin(LLRender::LINE_STRIP);
+		}
+
+		while( steps-- )
+		{
+			// Successive rotations
+			gGL.vertex2f( x, y );
+			F32 x_new = x * cos_delta - y * sin_delta;
+			y = x * sin_delta +  y * cos_delta;
+			x = x_new;
+		}
+		gGL.end();
+	}
+	gGL.popUIMatrix();
+}
+
+void gl_circle_2d(F32 center_x, F32 center_y, F32 radius, S32 steps, BOOL filled)
+{
+	gGL.pushUIMatrix();
+	{
+		gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
+		gGL.translateUI(center_x, center_y, 0.f);
+
+		// Inexact, but reasonably fast.
+		F32 delta = F_TWO_PI / steps;
+		F32 sin_delta = sin( delta );
+		F32 cos_delta = cos( delta );
+		F32 x = radius;
+		F32 y = 0.f;
+
+		if (filled)
+		{
+			gGL.begin(LLRender::TRIANGLE_FAN);
+			gGL.vertex2f(0.f, 0.f);
+			// make sure circle is complete
+			steps += 1;
+		}
+		else
+		{
+			gGL.begin(LLRender::LINE_LOOP);
+		}
+
+		while( steps-- )
+		{
+			// Successive rotations
+			gGL.vertex2f( x, y );
+			F32 x_new = x * cos_delta - y * sin_delta;
+			y = x * sin_delta +  y * cos_delta;
+			x = x_new;
+		}
+		gGL.end();
+	}
+	gGL.popUIMatrix();
+}
+
+// Renders a ring with sides (tube shape)
+void gl_deep_circle( F32 radius, F32 depth, S32 steps )
+{
+	F32 x = radius;
+	F32 y = 0.f;
+	F32 angle_delta = F_TWO_PI / (F32)steps;
+	gGL.begin( LLRender::TRIANGLE_STRIP  );
+	{
+		S32 step = steps + 1; // An extra step to close the circle.
+		while( step-- )
+		{
+			gGL.vertex3f( x, y, depth );
+			gGL.vertex3f( x, y, 0.f );
+
+			F32 x_new = x * cosf(angle_delta) - y * sinf(angle_delta);
+			y = x * sinf(angle_delta) +  y * cosf(angle_delta);
+			x = x_new;
+		}
+	}
+	gGL.end();
+}
+
+void gl_ring( F32 radius, F32 width, const LLColor4& center_color, const LLColor4& side_color, S32 steps, BOOL render_center )
+{
+	gGL.pushUIMatrix();
+	{
+		gGL.translateUI(0.f, 0.f, -width / 2);
+		if( render_center )
+		{
+			gGL.color4fv(center_color.mV);
+			gGL.diffuseColor4fv(center_color.mV);
+			gl_deep_circle( radius, width, steps );
+		}
+		else
+		{
+			gGL.diffuseColor4fv(side_color.mV);
+			gl_washer_2d(radius, radius - width, steps, side_color, side_color);
+			gGL.translateUI(0.f, 0.f, width);
+			gl_washer_2d(radius - width, radius, steps, side_color, side_color);
+		}
+	}
+	gGL.popUIMatrix();
+}
+
+// Draw gray and white checkerboard with black border
+void gl_rect_2d_checkerboard(const LLRect& rect, GLfloat alpha)
+{
+	if (!LLGLSLShader::sNoFixedFunction)
+	{ 
+		// Initialize the first time this is called.
+		const S32 PIXELS = 32;
+		static GLubyte checkerboard[PIXELS * PIXELS];
+		static BOOL first = TRUE;
+		if( first )
+		{
+			for( S32 i = 0; i < PIXELS; i++ )
+			{
+				for( S32 j = 0; j < PIXELS; j++ )
+				{
+					checkerboard[i * PIXELS + j] = ((i & 1) ^ (j & 1)) * 0xFF;
+				}
+			}
+			first = FALSE;
+		}
+	
+		gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
+
+		// ...white squares
+		gGL.color4f( 1.f, 1.f, 1.f, alpha );
+		gl_rect_2d(rect);
+
+		// ...gray squares
+		gGL.color4f( .7f, .7f, .7f, alpha );
+		gGL.flush();
+
+		glPolygonStipple( checkerboard );
+
+		LLGLEnable polygon_stipple(GL_POLYGON_STIPPLE);
+		gl_rect_2d(rect);
+	}
+	else
+	{ //polygon stipple is deprecated, use "Checker" texture
+		LLPointer<LLUIImage> img = LLRender2D::getUIImage("Checker");
+		gGL.getTexUnit(0)->bind(img->getImage());
+		gGL.getTexUnit(0)->setTextureAddressMode(LLTexUnit::TAM_WRAP);
+		gGL.getTexUnit(0)->setTextureFilteringOption(LLTexUnit::TFO_POINT);
+
+		LLColor4 color(1.f, 1.f, 1.f, alpha);
+		LLRectf uv_rect(0, 0, rect.getWidth()/32.f, rect.getHeight()/32.f);
+
+		gl_draw_scaled_image(rect.mLeft, rect.mBottom, rect.getWidth(), rect.getHeight(),
+			img->getImage(), color, uv_rect);
+	}
+	
+	gGL.flush();
+}
+
+
+// Draws the area between two concentric circles, like
+// a doughnut or washer.
+void gl_washer_2d(F32 outer_radius, F32 inner_radius, S32 steps, const LLColor4& inner_color, const LLColor4& outer_color)
+{
+	const F32 DELTA = F_TWO_PI / steps;
+	const F32 SIN_DELTA = sin( DELTA );
+	const F32 COS_DELTA = cos( DELTA );
+
+	F32 x1 = outer_radius;
+	F32 y1 = 0.f;
+	F32 x2 = inner_radius;
+	F32 y2 = 0.f;
+
+	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
+
+	gGL.begin( LLRender::TRIANGLE_STRIP  );
+	{
+		steps += 1; // An extra step to close the circle.
+		while( steps-- )
+		{
+			gGL.color4fv(outer_color.mV);
+			gGL.vertex2f( x1, y1 );
+			gGL.color4fv(inner_color.mV);
+			gGL.vertex2f( x2, y2 );
+
+			F32 x1_new = x1 * COS_DELTA - y1 * SIN_DELTA;
+			y1 = x1 * SIN_DELTA +  y1 * COS_DELTA;
+			x1 = x1_new;
+
+			F32 x2_new = x2 * COS_DELTA - y2 * SIN_DELTA;
+			y2 = x2 * SIN_DELTA +  y2 * COS_DELTA;
+			x2 = x2_new;
+		}
+	}
+	gGL.end();
+}
+
+// Draws the area between two concentric circles, like
+// a doughnut or washer.
+void gl_washer_segment_2d(F32 outer_radius, F32 inner_radius, F32 start_radians, F32 end_radians, S32 steps, const LLColor4& inner_color, const LLColor4& outer_color)
+{
+	const F32 DELTA = (end_radians - start_radians) / steps;
+	const F32 SIN_DELTA = sin( DELTA );
+	const F32 COS_DELTA = cos( DELTA );
+
+	F32 x1 = outer_radius * cos( start_radians );
+	F32 y1 = outer_radius * sin( start_radians );
+	F32 x2 = inner_radius * cos( start_radians );
+	F32 y2 = inner_radius * sin( start_radians );
+
+	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
+	gGL.begin( LLRender::TRIANGLE_STRIP  );
+	{
+		steps += 1; // An extra step to close the circle.
+		while( steps-- )
+		{
+			gGL.color4fv(outer_color.mV);
+			gGL.vertex2f( x1, y1 );
+			gGL.color4fv(inner_color.mV);
+			gGL.vertex2f( x2, y2 );
+
+			F32 x1_new = x1 * COS_DELTA - y1 * SIN_DELTA;
+			y1 = x1 * SIN_DELTA +  y1 * COS_DELTA;
+			x1 = x1_new;
+
+			F32 x2_new = x2 * COS_DELTA - y2 * SIN_DELTA;
+			y2 = x2 * SIN_DELTA +  y2 * COS_DELTA;
+			x2 = x2_new;
+		}
+	}
+	gGL.end();
+}
+
+void gl_rect_2d_simple_tex( S32 width, S32 height )
+{
+	gGL.begin( LLRender::QUADS );
+
+		gGL.texCoord2f(1.f, 1.f);
+		gGL.vertex2i(width, height);
+
+		gGL.texCoord2f(0.f, 1.f);
+		gGL.vertex2i(0, height);
+
+		gGL.texCoord2f(0.f, 0.f);
+		gGL.vertex2i(0, 0);
+
+		gGL.texCoord2f(1.f, 0.f);
+		gGL.vertex2i(width, 0);
+	
+	gGL.end();
+}
+
+void gl_rect_2d_simple( S32 width, S32 height )
+{
+	gGL.begin( LLRender::QUADS );
+		gGL.vertex2i(width, height);
+		gGL.vertex2i(0, height);
+		gGL.vertex2i(0, 0);
+		gGL.vertex2i(width, 0);
+	gGL.end();
+}
+
+void gl_segmented_rect_2d_tex(const S32 left, 
+							  const S32 top, 
+							  const S32 right, 
+							  const S32 bottom, 
+							  const S32 texture_width, 
+							  const S32 texture_height, 
+							  const S32 border_size, 
+							  const U32 edges)
+{
+	S32 width = llabs(right - left);
+	S32 height = llabs(top - bottom);
+
+	gGL.pushUIMatrix();
+
+	gGL.translateUI((F32)left, (F32)bottom, 0.f);
+	LLVector2 border_uv_scale((F32)border_size / (F32)texture_width, (F32)border_size / (F32)texture_height);
+
+	if (border_uv_scale.mV[VX] > 0.5f)
+	{
+		border_uv_scale *= 0.5f / border_uv_scale.mV[VX];
+	}
+	if (border_uv_scale.mV[VY] > 0.5f)
+	{
+		border_uv_scale *= 0.5f / border_uv_scale.mV[VY];
+	}
+
+	F32 border_scale = llmin((F32)border_size, (F32)width * 0.5f, (F32)height * 0.5f);
+	LLVector2 border_width_left = ((edges & (~(U32)ROUNDED_RECT_RIGHT)) != 0) ? LLVector2(border_scale, 0.f) : LLVector2::zero;
+	LLVector2 border_width_right = ((edges & (~(U32)ROUNDED_RECT_LEFT)) != 0) ? LLVector2(border_scale, 0.f) : LLVector2::zero;
+	LLVector2 border_height_bottom = ((edges & (~(U32)ROUNDED_RECT_TOP)) != 0) ? LLVector2(0.f, border_scale) : LLVector2::zero;
+	LLVector2 border_height_top = ((edges & (~(U32)ROUNDED_RECT_BOTTOM)) != 0) ? LLVector2(0.f, border_scale) : LLVector2::zero;
+	LLVector2 width_vec((F32)width, 0.f);
+	LLVector2 height_vec(0.f, (F32)height);
+
+	gGL.begin(LLRender::QUADS);
+	{
+		// draw bottom left
+		gGL.texCoord2f(0.f, 0.f);
+		gGL.vertex2f(0.f, 0.f);
+
+		gGL.texCoord2f(border_uv_scale.mV[VX], 0.f);
+		gGL.vertex2fv(border_width_left.mV);
+
+		gGL.texCoord2f(border_uv_scale.mV[VX], border_uv_scale.mV[VY]);
+		gGL.vertex2fv((border_width_left + border_height_bottom).mV);
+
+		gGL.texCoord2f(0.f, border_uv_scale.mV[VY]);
+		gGL.vertex2fv(border_height_bottom.mV);
+
+		// draw bottom middle
+		gGL.texCoord2f(border_uv_scale.mV[VX], 0.f);
+		gGL.vertex2fv(border_width_left.mV);
+
+		gGL.texCoord2f(1.f - border_uv_scale.mV[VX], 0.f);
+		gGL.vertex2fv((width_vec - border_width_right).mV);
+
+		gGL.texCoord2f(1.f - border_uv_scale.mV[VX], border_uv_scale.mV[VY]);
+		gGL.vertex2fv((width_vec - border_width_right + border_height_bottom).mV);
+
+		gGL.texCoord2f(border_uv_scale.mV[VX], border_uv_scale.mV[VY]);
+		gGL.vertex2fv((border_width_left + border_height_bottom).mV);
+
+		// draw bottom right
+		gGL.texCoord2f(1.f - border_uv_scale.mV[VX], 0.f);
+		gGL.vertex2fv((width_vec - border_width_right).mV);
+
+		gGL.texCoord2f(1.f, 0.f);
+		gGL.vertex2fv(width_vec.mV);
+
+		gGL.texCoord2f(1.f, border_uv_scale.mV[VY]);
+		gGL.vertex2fv((width_vec + border_height_bottom).mV);
+
+		gGL.texCoord2f(1.f - border_uv_scale.mV[VX], border_uv_scale.mV[VY]);
+		gGL.vertex2fv((width_vec - border_width_right + border_height_bottom).mV);
+
+		// draw left 
+		gGL.texCoord2f(0.f, border_uv_scale.mV[VY]);
+		gGL.vertex2fv(border_height_bottom.mV);
+
+		gGL.texCoord2f(border_uv_scale.mV[VX], border_uv_scale.mV[VY]);
+		gGL.vertex2fv((border_width_left + border_height_bottom).mV);
+
+		gGL.texCoord2f(border_uv_scale.mV[VX], 1.f - border_uv_scale.mV[VY]);
+		gGL.vertex2fv((border_width_left + height_vec - border_height_top).mV);
+
+		gGL.texCoord2f(0.f, 1.f - border_uv_scale.mV[VY]);
+		gGL.vertex2fv((height_vec - border_height_top).mV);
+
+		// draw middle
+		gGL.texCoord2f(border_uv_scale.mV[VX], border_uv_scale.mV[VY]);
+		gGL.vertex2fv((border_width_left + border_height_bottom).mV);
+
+		gGL.texCoord2f(1.f - border_uv_scale.mV[VX], border_uv_scale.mV[VY]);
+		gGL.vertex2fv((width_vec - border_width_right + border_height_bottom).mV);
+
+		gGL.texCoord2f(1.f - border_uv_scale.mV[VX], 1.f - border_uv_scale.mV[VY]);
+		gGL.vertex2fv((width_vec - border_width_right + height_vec - border_height_top).mV);
+
+		gGL.texCoord2f(border_uv_scale.mV[VX], 1.f - border_uv_scale.mV[VY]);
+		gGL.vertex2fv((border_width_left + height_vec - border_height_top).mV);
+
+		// draw right 
+		gGL.texCoord2f(1.f - border_uv_scale.mV[VX], border_uv_scale.mV[VY]);
+		gGL.vertex2fv((width_vec - border_width_right + border_height_bottom).mV);
+
+		gGL.texCoord2f(1.f, border_uv_scale.mV[VY]);
+		gGL.vertex2fv((width_vec + border_height_bottom).mV);
+
+		gGL.texCoord2f(1.f, 1.f - border_uv_scale.mV[VY]);
+		gGL.vertex2fv((width_vec + height_vec - border_height_top).mV);
+
+		gGL.texCoord2f(1.f - border_uv_scale.mV[VX], 1.f - border_uv_scale.mV[VY]);
+		gGL.vertex2fv((width_vec - border_width_right + height_vec - border_height_top).mV);
+
+		// draw top left
+		gGL.texCoord2f(0.f, 1.f - border_uv_scale.mV[VY]);
+		gGL.vertex2fv((height_vec - border_height_top).mV);
+
+		gGL.texCoord2f(border_uv_scale.mV[VX], 1.f - border_uv_scale.mV[VY]);
+		gGL.vertex2fv((border_width_left + height_vec - border_height_top).mV);
+
+		gGL.texCoord2f(border_uv_scale.mV[VX], 1.f);
+		gGL.vertex2fv((border_width_left + height_vec).mV);
+
+		gGL.texCoord2f(0.f, 1.f);
+		gGL.vertex2fv((height_vec).mV);
+
+		// draw top middle
+		gGL.texCoord2f(border_uv_scale.mV[VX], 1.f - border_uv_scale.mV[VY]);
+		gGL.vertex2fv((border_width_left + height_vec - border_height_top).mV);
+
+		gGL.texCoord2f(1.f - border_uv_scale.mV[VX], 1.f - border_uv_scale.mV[VY]);
+		gGL.vertex2fv((width_vec - border_width_right + height_vec - border_height_top).mV);
+
+		gGL.texCoord2f(1.f - border_uv_scale.mV[VX], 1.f);
+		gGL.vertex2fv((width_vec - border_width_right + height_vec).mV);
+
+		gGL.texCoord2f(border_uv_scale.mV[VX], 1.f);
+		gGL.vertex2fv((border_width_left + height_vec).mV);
+
+		// draw top right
+		gGL.texCoord2f(1.f - border_uv_scale.mV[VX], 1.f - border_uv_scale.mV[VY]);
+		gGL.vertex2fv((width_vec - border_width_right + height_vec - border_height_top).mV);
+
+		gGL.texCoord2f(1.f, 1.f - border_uv_scale.mV[VY]);
+		gGL.vertex2fv((width_vec + height_vec - border_height_top).mV);
+
+		gGL.texCoord2f(1.f, 1.f);
+		gGL.vertex2fv((width_vec + height_vec).mV);
+
+		gGL.texCoord2f(1.f - border_uv_scale.mV[VX], 1.f);
+		gGL.vertex2fv((width_vec - border_width_right + height_vec).mV);
+	}
+	gGL.end();
+
+	gGL.popUIMatrix();
+}
+
+//FIXME: rewrite to use scissor?
+void gl_segmented_rect_2d_fragment_tex(const S32 left, 
+									   const S32 top, 
+									   const S32 right, 
+									   const S32 bottom, 
+									   const S32 texture_width, 
+									   const S32 texture_height, 
+									   const S32 border_size, 
+									   const F32 start_fragment, 
+									   const F32 end_fragment, 
+									   const U32 edges)
+{
+	S32 width = llabs(right - left);
+	S32 height = llabs(top - bottom);
+
+	gGL.pushUIMatrix();
+
+	gGL.translateUI((F32)left, (F32)bottom, 0.f);
+	LLVector2 border_uv_scale((F32)border_size / (F32)texture_width, (F32)border_size / (F32)texture_height);
+
+	if (border_uv_scale.mV[VX] > 0.5f)
+	{
+		border_uv_scale *= 0.5f / border_uv_scale.mV[VX];
+	}
+	if (border_uv_scale.mV[VY] > 0.5f)
+	{
+		border_uv_scale *= 0.5f / border_uv_scale.mV[VY];
+	}
+
+	F32 border_scale = llmin((F32)border_size, (F32)width * 0.5f, (F32)height * 0.5f);
+	LLVector2 border_width_left = ((edges & (~(U32)ROUNDED_RECT_RIGHT)) != 0) ? LLVector2(border_scale, 0.f) : LLVector2::zero;
+	LLVector2 border_width_right = ((edges & (~(U32)ROUNDED_RECT_LEFT)) != 0) ? LLVector2(border_scale, 0.f) : LLVector2::zero;
+	LLVector2 border_height_bottom = ((edges & (~(U32)ROUNDED_RECT_TOP)) != 0) ? LLVector2(0.f, border_scale) : LLVector2::zero;
+	LLVector2 border_height_top = ((edges & (~(U32)ROUNDED_RECT_BOTTOM)) != 0) ? LLVector2(0.f, border_scale) : LLVector2::zero;
+	LLVector2 width_vec((F32)width, 0.f);
+	LLVector2 height_vec(0.f, (F32)height);
+
+	F32 middle_start = border_scale / (F32)width;
+	F32 middle_end = 1.f - middle_start;
+
+	F32 u_min;
+	F32 u_max;
+	LLVector2 x_min;
+	LLVector2 x_max;
+
+	gGL.begin(LLRender::QUADS);
+	{
+		if (start_fragment < middle_start)
+		{
+			u_min = (start_fragment / middle_start) * border_uv_scale.mV[VX];
+			u_max = llmin(end_fragment / middle_start, 1.f) * border_uv_scale.mV[VX];
+			x_min = (start_fragment / middle_start) * border_width_left;
+			x_max = llmin(end_fragment / middle_start, 1.f) * border_width_left;
+
+			// draw bottom left
+			gGL.texCoord2f(u_min, 0.f);
+			gGL.vertex2fv(x_min.mV);
+
+			gGL.texCoord2f(border_uv_scale.mV[VX], 0.f);
+			gGL.vertex2fv(x_max.mV);
+
+			gGL.texCoord2f(u_max, border_uv_scale.mV[VY]);
+			gGL.vertex2fv((x_max + border_height_bottom).mV);
+
+			gGL.texCoord2f(u_min, border_uv_scale.mV[VY]);
+			gGL.vertex2fv((x_min + border_height_bottom).mV);
+
+			// draw left 
+			gGL.texCoord2f(u_min, border_uv_scale.mV[VY]);
+			gGL.vertex2fv((x_min + border_height_bottom).mV);
+
+			gGL.texCoord2f(u_max, border_uv_scale.mV[VY]);
+			gGL.vertex2fv((x_max + border_height_bottom).mV);
+
+			gGL.texCoord2f(u_max, 1.f - border_uv_scale.mV[VY]);
+			gGL.vertex2fv((x_max + height_vec - border_height_top).mV);
+
+			gGL.texCoord2f(u_min, 1.f - border_uv_scale.mV[VY]);
+			gGL.vertex2fv((x_min + height_vec - border_height_top).mV);
+			
+			// draw top left
+			gGL.texCoord2f(u_min, 1.f - border_uv_scale.mV[VY]);
+			gGL.vertex2fv((x_min + height_vec - border_height_top).mV);
+
+			gGL.texCoord2f(u_max, 1.f - border_uv_scale.mV[VY]);
+			gGL.vertex2fv((x_max + height_vec - border_height_top).mV);
+
+			gGL.texCoord2f(u_max, 1.f);
+			gGL.vertex2fv((x_max + height_vec).mV);
+
+			gGL.texCoord2f(u_min, 1.f);
+			gGL.vertex2fv((x_min + height_vec).mV);
+		}
+
+		if (end_fragment > middle_start || start_fragment < middle_end)
+		{
+			x_min = border_width_left + ((llclamp(start_fragment, middle_start, middle_end) - middle_start)) * width_vec;
+			x_max = border_width_left + ((llclamp(end_fragment, middle_start, middle_end) - middle_start)) * width_vec;
+
+			// draw bottom middle
+			gGL.texCoord2f(border_uv_scale.mV[VX], 0.f);
+			gGL.vertex2fv(x_min.mV);
+
+			gGL.texCoord2f(1.f - border_uv_scale.mV[VX], 0.f);
+			gGL.vertex2fv((x_max).mV);
+
+			gGL.texCoord2f(1.f - border_uv_scale.mV[VX], border_uv_scale.mV[VY]);
+			gGL.vertex2fv((x_max + border_height_bottom).mV);
+
+			gGL.texCoord2f(border_uv_scale.mV[VX], border_uv_scale.mV[VY]);
+			gGL.vertex2fv((x_min + border_height_bottom).mV);
+
+			// draw middle
+			gGL.texCoord2f(border_uv_scale.mV[VX], border_uv_scale.mV[VY]);
+			gGL.vertex2fv((x_min + border_height_bottom).mV);
+
+			gGL.texCoord2f(1.f - border_uv_scale.mV[VX], border_uv_scale.mV[VY]);
+			gGL.vertex2fv((x_max + border_height_bottom).mV);
+
+			gGL.texCoord2f(1.f - border_uv_scale.mV[VX], 1.f - border_uv_scale.mV[VY]);
+			gGL.vertex2fv((x_max + height_vec - border_height_top).mV);
+
+			gGL.texCoord2f(border_uv_scale.mV[VX], 1.f - border_uv_scale.mV[VY]);
+			gGL.vertex2fv((x_min + height_vec - border_height_top).mV);
+
+			// draw top middle
+			gGL.texCoord2f(border_uv_scale.mV[VX], 1.f - border_uv_scale.mV[VY]);
+			gGL.vertex2fv((x_min + height_vec - border_height_top).mV);
+
+			gGL.texCoord2f(1.f - border_uv_scale.mV[VX], 1.f - border_uv_scale.mV[VY]);
+			gGL.vertex2fv((x_max + height_vec - border_height_top).mV);
+
+			gGL.texCoord2f(1.f - border_uv_scale.mV[VX], 1.f);
+			gGL.vertex2fv((x_max + height_vec).mV);
+
+			gGL.texCoord2f(border_uv_scale.mV[VX], 1.f);
+			gGL.vertex2fv((x_min + height_vec).mV);
+		}
+
+		if (end_fragment > middle_end)
+		{
+			u_min = (1.f - llmax(0.f, ((start_fragment - middle_end) / middle_start))) * border_uv_scale.mV[VX];
+			u_max = (1.f - ((end_fragment - middle_end) / middle_start)) * border_uv_scale.mV[VX];
+			x_min = width_vec - ((1.f - llmax(0.f, ((start_fragment - middle_end) / middle_start))) * border_width_right);
+			x_max = width_vec - ((1.f - ((end_fragment - middle_end) / middle_start)) * border_width_right);
+
+			// draw bottom right
+			gGL.texCoord2f(u_min, 0.f);
+			gGL.vertex2fv((x_min).mV);
+
+			gGL.texCoord2f(u_max, 0.f);
+			gGL.vertex2fv(x_max.mV);
+
+			gGL.texCoord2f(u_max, border_uv_scale.mV[VY]);
+			gGL.vertex2fv((x_max + border_height_bottom).mV);
+
+			gGL.texCoord2f(u_min, border_uv_scale.mV[VY]);
+			gGL.vertex2fv((x_min + border_height_bottom).mV);
+
+			// draw right 
+			gGL.texCoord2f(u_min, border_uv_scale.mV[VY]);
+			gGL.vertex2fv((x_min + border_height_bottom).mV);
+
+			gGL.texCoord2f(u_max, border_uv_scale.mV[VY]);
+			gGL.vertex2fv((x_max + border_height_bottom).mV);
+
+			gGL.texCoord2f(u_max, 1.f - border_uv_scale.mV[VY]);
+			gGL.vertex2fv((x_max + height_vec - border_height_top).mV);
+
+			gGL.texCoord2f(u_min, 1.f - border_uv_scale.mV[VY]);
+			gGL.vertex2fv((x_min + height_vec - border_height_top).mV);
+
+			// draw top right
+			gGL.texCoord2f(u_min, 1.f - border_uv_scale.mV[VY]);
+			gGL.vertex2fv((x_min + height_vec - border_height_top).mV);
+
+			gGL.texCoord2f(u_max, 1.f - border_uv_scale.mV[VY]);
+			gGL.vertex2fv((x_max + height_vec - border_height_top).mV);
+
+			gGL.texCoord2f(u_max, 1.f);
+			gGL.vertex2fv((x_max + height_vec).mV);
+
+			gGL.texCoord2f(u_min, 1.f);
+			gGL.vertex2fv((x_min + height_vec).mV);
+		}
+	}
+	gGL.end();
+
+	gGL.popUIMatrix();
+}
+
+void gl_segmented_rect_3d_tex(const LLVector2& border_scale, const LLVector3& border_width, 
+							  const LLVector3& border_height, const LLVector3& width_vec, const LLVector3& height_vec,
+							  const U32 edges)
+{
+	LLVector3 left_border_width = ((edges & (~(U32)ROUNDED_RECT_RIGHT)) != 0) ? border_width : LLVector3::zero;
+	LLVector3 right_border_width = ((edges & (~(U32)ROUNDED_RECT_LEFT)) != 0) ? border_width : LLVector3::zero;
+
+	LLVector3 top_border_height = ((edges & (~(U32)ROUNDED_RECT_BOTTOM)) != 0) ? border_height : LLVector3::zero;
+	LLVector3 bottom_border_height = ((edges & (~(U32)ROUNDED_RECT_TOP)) != 0) ? border_height : LLVector3::zero;
+
+
+	gGL.begin(LLRender::QUADS);
+	{
+		// draw bottom left
+		gGL.texCoord2f(0.f, 0.f);
+		gGL.vertex3f(0.f, 0.f, 0.f);
+
+		gGL.texCoord2f(border_scale.mV[VX], 0.f);
+		gGL.vertex3fv(left_border_width.mV);
+
+		gGL.texCoord2f(border_scale.mV[VX], border_scale.mV[VY]);
+		gGL.vertex3fv((left_border_width + bottom_border_height).mV);
+
+		gGL.texCoord2f(0.f, border_scale.mV[VY]);
+		gGL.vertex3fv(bottom_border_height.mV);
+
+		// draw bottom middle
+		gGL.texCoord2f(border_scale.mV[VX], 0.f);
+		gGL.vertex3fv(left_border_width.mV);
+
+		gGL.texCoord2f(1.f - border_scale.mV[VX], 0.f);
+		gGL.vertex3fv((width_vec - right_border_width).mV);
+
+		gGL.texCoord2f(1.f - border_scale.mV[VX], border_scale.mV[VY]);
+		gGL.vertex3fv((width_vec - right_border_width + bottom_border_height).mV);
+
+		gGL.texCoord2f(border_scale.mV[VX], border_scale.mV[VY]);
+		gGL.vertex3fv((left_border_width + bottom_border_height).mV);
+
+		// draw bottom right
+		gGL.texCoord2f(1.f - border_scale.mV[VX], 0.f);
+		gGL.vertex3fv((width_vec - right_border_width).mV);
+
+		gGL.texCoord2f(1.f, 0.f);
+		gGL.vertex3fv(width_vec.mV);
+
+		gGL.texCoord2f(1.f, border_scale.mV[VY]);
+		gGL.vertex3fv((width_vec + bottom_border_height).mV);
+
+		gGL.texCoord2f(1.f - border_scale.mV[VX], border_scale.mV[VY]);
+		gGL.vertex3fv((width_vec - right_border_width + bottom_border_height).mV);
+
+		// draw left 
+		gGL.texCoord2f(0.f, border_scale.mV[VY]);
+		gGL.vertex3fv(bottom_border_height.mV);
+
+		gGL.texCoord2f(border_scale.mV[VX], border_scale.mV[VY]);
+		gGL.vertex3fv((left_border_width + bottom_border_height).mV);
+
+		gGL.texCoord2f(border_scale.mV[VX], 1.f - border_scale.mV[VY]);
+		gGL.vertex3fv((left_border_width + height_vec - top_border_height).mV);
+
+		gGL.texCoord2f(0.f, 1.f - border_scale.mV[VY]);
+		gGL.vertex3fv((height_vec - top_border_height).mV);
+
+		// draw middle
+		gGL.texCoord2f(border_scale.mV[VX], border_scale.mV[VY]);
+		gGL.vertex3fv((left_border_width + bottom_border_height).mV);
+
+		gGL.texCoord2f(1.f - border_scale.mV[VX], border_scale.mV[VY]);
+		gGL.vertex3fv((width_vec - right_border_width + bottom_border_height).mV);
+
+		gGL.texCoord2f(1.f - border_scale.mV[VX], 1.f - border_scale.mV[VY]);
+		gGL.vertex3fv((width_vec - right_border_width + height_vec - top_border_height).mV);
+
+		gGL.texCoord2f(border_scale.mV[VX], 1.f - border_scale.mV[VY]);
+		gGL.vertex3fv((left_border_width + height_vec - top_border_height).mV);
+
+		// draw right 
+		gGL.texCoord2f(1.f - border_scale.mV[VX], border_scale.mV[VY]);
+		gGL.vertex3fv((width_vec - right_border_width + bottom_border_height).mV);
+
+		gGL.texCoord2f(1.f, border_scale.mV[VY]);
+		gGL.vertex3fv((width_vec + bottom_border_height).mV);
+
+		gGL.texCoord2f(1.f, 1.f - border_scale.mV[VY]);
+		gGL.vertex3fv((width_vec + height_vec - top_border_height).mV);
+
+		gGL.texCoord2f(1.f - border_scale.mV[VX], 1.f - border_scale.mV[VY]);
+		gGL.vertex3fv((width_vec - right_border_width + height_vec - top_border_height).mV);
+
+		// draw top left
+		gGL.texCoord2f(0.f, 1.f - border_scale.mV[VY]);
+		gGL.vertex3fv((height_vec - top_border_height).mV);
+
+		gGL.texCoord2f(border_scale.mV[VX], 1.f - border_scale.mV[VY]);
+		gGL.vertex3fv((left_border_width + height_vec - top_border_height).mV);
+
+		gGL.texCoord2f(border_scale.mV[VX], 1.f);
+		gGL.vertex3fv((left_border_width + height_vec).mV);
+
+		gGL.texCoord2f(0.f, 1.f);
+		gGL.vertex3fv((height_vec).mV);
+
+		// draw top middle
+		gGL.texCoord2f(border_scale.mV[VX], 1.f - border_scale.mV[VY]);
+		gGL.vertex3fv((left_border_width + height_vec - top_border_height).mV);
+
+		gGL.texCoord2f(1.f - border_scale.mV[VX], 1.f - border_scale.mV[VY]);
+		gGL.vertex3fv((width_vec - right_border_width + height_vec - top_border_height).mV);
+
+		gGL.texCoord2f(1.f - border_scale.mV[VX], 1.f);
+		gGL.vertex3fv((width_vec - right_border_width + height_vec).mV);
+
+		gGL.texCoord2f(border_scale.mV[VX], 1.f);
+		gGL.vertex3fv((left_border_width + height_vec).mV);
+
+		// draw top right
+		gGL.texCoord2f(1.f - border_scale.mV[VX], 1.f - border_scale.mV[VY]);
+		gGL.vertex3fv((width_vec - right_border_width + height_vec - top_border_height).mV);
+
+		gGL.texCoord2f(1.f, 1.f - border_scale.mV[VY]);
+		gGL.vertex3fv((width_vec + height_vec - top_border_height).mV);
+
+		gGL.texCoord2f(1.f, 1.f);
+		gGL.vertex3fv((width_vec + height_vec).mV);
+
+		gGL.texCoord2f(1.f - border_scale.mV[VX], 1.f);
+		gGL.vertex3fv((width_vec - right_border_width + height_vec).mV);
+	}
+	gGL.end();
+
+}
+
+void gl_segmented_rect_3d_tex_top(const LLVector2& border_scale, const LLVector3& border_width, const LLVector3& border_height, const LLVector3& width_vec, const LLVector3& height_vec)
+{
+	gl_segmented_rect_3d_tex(border_scale, border_width, border_height, width_vec, height_vec, ROUNDED_RECT_TOP);
+}
+
+// static
+void LLRender2D::initClass(LLImageProviderInterface* image_provider,
+						   const LLVector2* scale_factor)
+{
+	sGLScaleFactor = (scale_factor == NULL) ? LLVector2(1.f, 1.f) : *scale_factor;
+	sImageProvider = image_provider;
+}
+
+// static
+void LLRender2D::cleanupClass()
+{
+	if(sImageProvider)
+	{
+		sImageProvider->cleanUp();
+	}
+}
+
+
+//static
+void LLRender2D::translate(F32 x, F32 y, F32 z)
+{
+	gGL.translateUI(x,y,z);
+	LLFontGL::sCurOrigin.mX += (S32) x;
+	LLFontGL::sCurOrigin.mY += (S32) y;
+	LLFontGL::sCurDepth += z;
+}
+
+//static
+void LLRender2D::pushMatrix()
+{
+	gGL.pushUIMatrix();
+	LLFontGL::sOriginStack.push_back(std::make_pair(LLFontGL::sCurOrigin, LLFontGL::sCurDepth));
+}
+
+//static
+void LLRender2D::popMatrix()
+{
+	gGL.popUIMatrix();
+	LLFontGL::sCurOrigin = LLFontGL::sOriginStack.back().first;
+	LLFontGL::sCurDepth = LLFontGL::sOriginStack.back().second;
+	LLFontGL::sOriginStack.pop_back();
+}
+
+//static 
+void LLRender2D::loadIdentity()
+{
+	gGL.loadUIIdentity(); 
+	LLFontGL::sCurOrigin.mX = 0;
+	LLFontGL::sCurOrigin.mY = 0;
+	LLFontGL::sCurDepth = 0.f;
+}
+
+//static
+void LLRender2D::setScaleFactor(const LLVector2 &scale_factor)
+{
+	sGLScaleFactor = scale_factor;
+}
+
+//static
+void LLRender2D::setLineWidth(F32 width)
+{
+	gGL.flush();
+	glLineWidth(width * lerp(sGLScaleFactor.mV[VX], sGLScaleFactor.mV[VY], 0.5f));
+}
+
+//static
+LLPointer<LLUIImage> LLRender2D::getUIImageByID(const LLUUID& image_id, S32 priority)
+{
+	if (sImageProvider)
+	{
+		return sImageProvider->getUIImageByID(image_id, priority);
+	}
+	else
+	{
+		return NULL;
+	}
+}
+
+//static 
+LLPointer<LLUIImage> LLRender2D::getUIImage(const std::string& name, S32 priority)
+{
+	if (!name.empty() && sImageProvider)
+		return sImageProvider->getUIImage(name, priority);
+	else
+		return NULL;
+}
+
diff --git a/indra/llrender/llrender2dutils.h b/indra/llrender/llrender2dutils.h
new file mode 100644
index 00000000000..4ea2d06d99d
--- /dev/null
+++ b/indra/llrender/llrender2dutils.h
@@ -0,0 +1,164 @@
+/** 
+ * @file llrender2dutils.h
+ * @brief GL function declarations for immediate-mode gl drawing.
+ *
+ * $LicenseInfo:firstyear=2012&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+// All immediate-mode gl drawing should happen here.
+
+
+#ifndef LL_RENDER2DUTILS_H
+#define LL_RENDER2DUTILS_H
+
+#include "llpointer.h"		// LLPointer<>
+#include "llrect.h"
+#include "llglslshader.h"
+
+class LLColor4; 
+class LLVector3;
+class LLVector2;
+class LLUIImage;
+class LLUUID;
+
+extern const LLColor4 UI_VERTEX_COLOR;
+
+BOOL ui_point_in_rect(S32 x, S32 y, S32 left, S32 top, S32 right, S32 bottom);
+void gl_state_for_2d(S32 width, S32 height);
+
+void gl_line_2d(S32 x1, S32 y1, S32 x2, S32 y2);
+void gl_line_2d(S32 x1, S32 y1, S32 x2, S32 y2, const LLColor4 &color );
+void gl_triangle_2d(S32 x1, S32 y1, S32 x2, S32 y2, S32 x3, S32 y3, const LLColor4& color, BOOL filled);
+void gl_rect_2d_simple( S32 width, S32 height );
+
+void gl_draw_x(const LLRect& rect, const LLColor4& color);
+
+void gl_rect_2d(S32 left, S32 top, S32 right, S32 bottom, BOOL filled = TRUE );
+void gl_rect_2d(S32 left, S32 top, S32 right, S32 bottom, const LLColor4 &color, BOOL filled = TRUE );
+void gl_rect_2d_offset_local( S32 left, S32 top, S32 right, S32 bottom, const LLColor4 &color, S32 pixel_offset = 0, BOOL filled = TRUE );
+void gl_rect_2d_offset_local( S32 left, S32 top, S32 right, S32 bottom, S32 pixel_offset = 0, BOOL filled = TRUE );
+void gl_rect_2d(const LLRect& rect, BOOL filled = TRUE );
+void gl_rect_2d(const LLRect& rect, const LLColor4& color, BOOL filled = TRUE );
+void gl_rect_2d_checkerboard(const LLRect& rect, GLfloat alpha = 1.0f);
+
+void gl_drop_shadow(S32 left, S32 top, S32 right, S32 bottom, const LLColor4 &start_color, S32 lines);
+
+void gl_circle_2d(F32 x, F32 y, F32 radius, S32 steps, BOOL filled);
+void gl_arc_2d(F32 center_x, F32 center_y, F32 radius, S32 steps, BOOL filled, F32 start_angle, F32 end_angle);
+void gl_deep_circle( F32 radius, F32 depth );
+void gl_ring( F32 radius, F32 width, const LLColor4& center_color, const LLColor4& side_color, S32 steps, BOOL render_center );
+void gl_corners_2d(S32 left, S32 top, S32 right, S32 bottom, S32 length, F32 max_frac);
+void gl_washer_2d(F32 outer_radius, F32 inner_radius, S32 steps, const LLColor4& inner_color, const LLColor4& outer_color);
+void gl_washer_segment_2d(F32 outer_radius, F32 inner_radius, F32 start_radians, F32 end_radians, S32 steps, const LLColor4& inner_color, const LLColor4& outer_color);
+
+void gl_draw_image(S32 x, S32 y, LLTexture* image, const LLColor4& color = UI_VERTEX_COLOR, const LLRectf& uv_rect = LLRectf(0.f, 1.f, 1.f, 0.f));
+void gl_draw_scaled_image(S32 x, S32 y, S32 width, S32 height, LLTexture* image, const LLColor4& color = UI_VERTEX_COLOR, const LLRectf& uv_rect = LLRectf(0.f, 1.f, 1.f, 0.f));
+void gl_draw_rotated_image(S32 x, S32 y, F32 degrees, LLTexture* image, const LLColor4& color = UI_VERTEX_COLOR, const LLRectf& uv_rect = LLRectf(0.f, 1.f, 1.f, 0.f));
+void gl_draw_scaled_rotated_image(S32 x, S32 y, S32 width, S32 height, F32 degrees,LLTexture* image, const LLColor4& color = UI_VERTEX_COLOR, const LLRectf& uv_rect = LLRectf(0.f, 1.f, 1.f, 0.f));
+void gl_draw_scaled_image_with_border(S32 x, S32 y, S32 border_width, S32 border_height, S32 width, S32 height, LLTexture* image, const LLColor4 &color, BOOL solid_color = FALSE, const LLRectf& uv_rect = LLRectf(0.f, 1.f, 1.f, 0.f));
+void gl_draw_scaled_image_with_border(S32 x, S32 y, S32 width, S32 height, LLTexture* image, const LLColor4 &color, BOOL solid_color = FALSE, const LLRectf& uv_rect = LLRectf(0.f, 1.f, 1.f, 0.f), const LLRectf& scale_rect = LLRectf(0.f, 1.f, 1.f, 0.f));
+
+void gl_stippled_line_3d( const LLVector3& start, const LLVector3& end, const LLColor4& color, F32 phase = 0.f ); 
+
+void gl_rect_2d_simple_tex( S32 width, S32 height );
+
+// segmented rectangles
+
+/*
+   TL |______TOP_________| TR 
+     /|                  |\  
+   _/_|__________________|_\_
+   L| |    MIDDLE        | |R
+   _|_|__________________|_|_
+    \ |    BOTTOM        | /  
+   BL\|__________________|/ BR
+      |                  |    
+*/
+
+typedef enum e_rounded_edge
+{
+	ROUNDED_RECT_LEFT	= 0x1, 
+	ROUNDED_RECT_TOP	= 0x2, 
+	ROUNDED_RECT_RIGHT	= 0x4, 
+	ROUNDED_RECT_BOTTOM	= 0x8,
+	ROUNDED_RECT_ALL	= 0xf
+}ERoundedEdge;
+
+
+void gl_segmented_rect_2d_tex(const S32 left, const S32 top, const S32 right, const S32 bottom, const S32 texture_width, const S32 texture_height, const S32 border_size, const U32 edges = ROUNDED_RECT_ALL);
+void gl_segmented_rect_2d_fragment_tex(const S32 left, const S32 top, const S32 right, const S32 bottom, const S32 texture_width, const S32 texture_height, const S32 border_size, const F32 start_fragment, const F32 end_fragment, const U32 edges = ROUNDED_RECT_ALL);
+void gl_segmented_rect_3d_tex(const LLVector2& border_scale, const LLVector3& border_width, const LLVector3& border_height, const LLVector3& width_vec, const LLVector3& height_vec, U32 edges = ROUNDED_RECT_ALL);
+void gl_segmented_rect_3d_tex_top(const LLVector2& border_scale, const LLVector3& border_width, const LLVector3& border_height, const LLVector3& width_vec, const LLVector3& height_vec);
+
+inline void gl_rect_2d( const LLRect& rect, BOOL filled )
+{
+	gl_rect_2d( rect.mLeft, rect.mTop, rect.mRight, rect.mBottom, filled );
+}
+
+inline void gl_rect_2d_offset_local( const LLRect& rect, S32 pixel_offset, BOOL filled)
+{
+	gl_rect_2d_offset_local( rect.mLeft, rect.mTop, rect.mRight, rect.mBottom, pixel_offset, filled );
+}
+
+class LLImageProviderInterface;
+
+class LLRender2D
+{
+	LOG_CLASS(LLRender2D);
+public:
+	static void initClass(LLImageProviderInterface* image_provider,
+						  const LLVector2* scale_factor);
+	static void cleanupClass();
+
+	static void pushMatrix();
+	static void popMatrix();
+	static void loadIdentity();
+	static void translate(F32 x, F32 y, F32 z = 0.0f);
+
+	static void setLineWidth(F32 width);
+	static void setScaleFactor(const LLVector2& scale_factor);
+
+	static LLPointer<LLUIImage> getUIImageByID(const LLUUID& image_id, S32 priority = 0);
+	static LLPointer<LLUIImage> getUIImage(const std::string& name, S32 priority = 0);
+
+	static LLVector2		sGLScaleFactor;
+private:
+	static LLImageProviderInterface* sImageProvider;
+};
+
+class LLImageProviderInterface
+{
+protected:
+	LLImageProviderInterface() {};
+	virtual ~LLImageProviderInterface() {};
+public:
+	virtual LLPointer<LLUIImage> getUIImage(const std::string& name, S32 priority) = 0;
+	virtual LLPointer<LLUIImage> getUIImageByID(const LLUUID& id, S32 priority) = 0;
+	virtual void cleanUp() = 0;
+};
+
+
+extern LLGLSLShader gSolidColorProgram;
+extern LLGLSLShader gUIProgram;
+
+#endif // LL_RENDER2DUTILS_H
+
diff --git a/indra/llui/lluiimage.cpp b/indra/llrender/lluiimage.cpp
similarity index 98%
rename from indra/llui/lluiimage.cpp
rename to indra/llrender/lluiimage.cpp
index 1d9ce29ba98..a632e7ed2fa 100644
--- a/indra/llui/lluiimage.cpp
+++ b/indra/llrender/lluiimage.cpp
@@ -31,7 +31,7 @@
 
 // Project includes
 #include "lluiimage.h"
-#include "llui.h"
+#include "llrender2dutils.h"
 
 LLUIImage::LLUIImage(const std::string& name, LLPointer<LLTexture> image)
 :	mName(name),
@@ -165,7 +165,7 @@ namespace LLInitParam
 			return;
 		}
 
-		LLUIImage* imagep =  LLUI::getUIImage(name());
+		LLUIImage* imagep =  LLRender2D::getUIImage(name());
 		if (imagep)
 		{
 			updateValue(imagep);
diff --git a/indra/llui/lluiimage.h b/indra/llrender/lluiimage.h
similarity index 100%
rename from indra/llui/lluiimage.h
rename to indra/llrender/lluiimage.h
diff --git a/indra/llui/CMakeLists.txt b/indra/llui/CMakeLists.txt
index d92b6aa1c07..4d4b8edc37d 100644
--- a/indra/llui/CMakeLists.txt
+++ b/indra/llui/CMakeLists.txt
@@ -109,7 +109,6 @@ set(llui_SOURCE_FILES
     lluicolortable.cpp
     lluictrl.cpp
     lluictrlfactory.cpp
-    lluiimage.cpp
     lluistring.cpp
     llundo.cpp
     llurlaction.cpp
@@ -219,7 +218,6 @@ set(llui_HEADER_FILES
     lluifwd.h
     llui.h
     lluicolor.h
-    lluiimage.h
     lluistring.h
     llundo.h
     llurlaction.h
diff --git a/indra/llui/llcombobox.cpp b/indra/llui/llcombobox.cpp
index 806d2ef3f65..16e79b211d2 100644
--- a/indra/llui/llcombobox.cpp
+++ b/indra/llui/llcombobox.cpp
@@ -551,7 +551,7 @@ void LLComboBox::showList()
 	LLCoordWindow window_size;
 	getWindow()->getSize(&window_size);
 	//HACK: shouldn't have to know about scale here
-	mList->fitContents( 192, llfloor((F32)window_size.mY / LLUI::sGLScaleFactor.mV[VY]) - 50 );
+	mList->fitContents( 192, llfloor((F32)window_size.mY / LLUI::getScaleFactor().mV[VY]) - 50 );
 
 	// Make sure that we can see the whole list
 	LLRect root_view_local;
diff --git a/indra/llui/lllineeditor.cpp b/indra/llui/lllineeditor.cpp
index 48d49af5881..d1e67a7d6ba 100644
--- a/indra/llui/lllineeditor.cpp
+++ b/indra/llui/lllineeditor.cpp
@@ -2022,8 +2022,8 @@ void LLLineEditor::draw()
 				LLRect screen_pos = calcScreenRect();
 				LLCoordGL ime_pos( screen_pos.mLeft + pixels_after_scroll, screen_pos.mTop - lineeditor_v_pad );
 
-				ime_pos.mX = (S32) (ime_pos.mX * LLUI::sGLScaleFactor.mV[VX]);
-				ime_pos.mY = (S32) (ime_pos.mY * LLUI::sGLScaleFactor.mV[VY]);
+				ime_pos.mX = (S32) (ime_pos.mX * LLUI::getScaleFactor().mV[VX]);
+				ime_pos.mY = (S32) (ime_pos.mY * LLUI::getScaleFactor().mV[VY]);
 				getWindow()->setLanguageTextInput( ime_pos );
 			}
 		}
@@ -2570,7 +2570,7 @@ void LLLineEditor::markAsPreedit(S32 position, S32 length)
 
 S32 LLLineEditor::getPreeditFontSize() const
 {
-	return llround(mGLFont->getLineHeight() * LLUI::sGLScaleFactor.mV[VY]);
+	return llround(mGLFont->getLineHeight() * LLUI::getScaleFactor().mV[VY]);
 }
 
 void LLLineEditor::setReplaceNewlinesWithSpaces(BOOL replace)
diff --git a/indra/llui/lllocalcliprect.cpp b/indra/llui/lllocalcliprect.cpp
index 68413012194..f3a526faeb3 100644
--- a/indra/llui/lllocalcliprect.cpp
+++ b/indra/llui/lllocalcliprect.cpp
@@ -88,10 +88,10 @@ void LLScreenClipRect::updateScissorRegion()
 	LLRect rect = sClipRectStack.top();
 	stop_glerror();
 	S32 x,y,w,h;
-	x = llfloor(rect.mLeft * LLUI::sGLScaleFactor.mV[VX]);
-	y = llfloor(rect.mBottom * LLUI::sGLScaleFactor.mV[VY]);
-	w = llmax(0, llceil(rect.getWidth() * LLUI::sGLScaleFactor.mV[VX])) + 1;
-	h = llmax(0, llceil(rect.getHeight() * LLUI::sGLScaleFactor.mV[VY])) + 1;
+	x = llfloor(rect.mLeft * LLUI::getScaleFactor().mV[VX]);
+	y = llfloor(rect.mBottom * LLUI::getScaleFactor().mV[VY]);
+	w = llmax(0, llceil(rect.getWidth() * LLUI::getScaleFactor().mV[VX])) + 1;
+	h = llmax(0, llceil(rect.getHeight() * LLUI::getScaleFactor().mV[VY])) + 1;
 	glScissor( x,y,w,h );
 	stop_glerror();
 }
diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp
index 3815eec447e..abe74c3f203 100644
--- a/indra/llui/lltextbase.cpp
+++ b/indra/llui/lltextbase.cpp
@@ -513,8 +513,8 @@ void LLTextBase::drawCursor()
 			LLRect screen_pos = calcScreenRect();
 			LLCoordGL ime_pos( screen_pos.mLeft + llfloor(cursor_rect.mLeft), screen_pos.mBottom + llfloor(cursor_rect.mTop) );
 
-			ime_pos.mX = (S32) (ime_pos.mX * LLUI::sGLScaleFactor.mV[VX]);
-			ime_pos.mY = (S32) (ime_pos.mY * LLUI::sGLScaleFactor.mV[VY]);
+			ime_pos.mX = (S32) (ime_pos.mX * LLUI::getScaleFactor().mV[VX]);
+			ime_pos.mY = (S32) (ime_pos.mY * LLUI::getScaleFactor().mV[VY]);
 			getWindow()->setLanguageTextInput( ime_pos );
 		}
 	}
diff --git a/indra/llui/lltexteditor.cpp b/indra/llui/lltexteditor.cpp
index 144b6960a1b..1b22f87823d 100644
--- a/indra/llui/lltexteditor.cpp
+++ b/indra/llui/lltexteditor.cpp
@@ -2843,7 +2843,7 @@ void LLTextEditor::markAsPreedit(S32 position, S32 length)
 
 S32 LLTextEditor::getPreeditFontSize() const
 {
-	return llround((F32)mDefaultFont->getLineHeight() * LLUI::sGLScaleFactor.mV[VY]);
+	return llround((F32)mDefaultFont->getLineHeight() * LLUI::getScaleFactor().mV[VY]);
 }
 
 BOOL LLTextEditor::isDirty() const
diff --git a/indra/llui/llui.cpp b/indra/llui/llui.cpp
index 87bf518aa17..d5fdd1d0642 100644
--- a/indra/llui/llui.cpp
+++ b/indra/llui/llui.cpp
@@ -39,6 +39,7 @@
 #include "llrect.h"
 #include "lldir.h"
 #include "llgl.h"
+#include "llsd.h"
 
 // Project includes
 #include "llcommandmanager.h"
@@ -69,15 +70,12 @@
 //
 // Globals
 //
-const LLColor4 UI_VERTEX_COLOR(1.f, 1.f, 1.f, 1.f);
 
 // Language for UI construction
 std::map<std::string, std::string> gTranslation;
 std::list<std::string> gUntranslated;
 /*static*/ LLUI::settings_map_t LLUI::sSettingGroups;
-/*static*/ LLImageProviderInterface* LLUI::sImageProvider = NULL;
 /*static*/ LLUIAudioCallback LLUI::sAudioCallback = NULL;
-/*static*/ LLVector2		LLUI::sGLScaleFactor(1.f, 1.f);
 /*static*/ LLWindow*		LLUI::sWindow = NULL;
 /*static*/ LLView*			LLUI::sRootView = NULL;
 /*static*/ BOOL                         LLUI::sDirty = FALSE;
@@ -137,1492 +135,13 @@ void make_ui_sound(const char* namep)
 	}
 }
 
-BOOL ui_point_in_rect(S32 x, S32 y, S32 left, S32 top, S32 right, S32 bottom)
-{
-	if (x < left || right < x) return FALSE;
-	if (y < bottom || top < y) return FALSE;
-	return TRUE;
-}
-
-
-// Puts GL into 2D drawing mode by turning off lighting, setting to an
-// orthographic projection, etc.
-void gl_state_for_2d(S32 width, S32 height)
-{
-	stop_glerror();
-	F32 window_width = (F32) width;//gViewerWindow->getWindowWidth();
-	F32 window_height = (F32) height;//gViewerWindow->getWindowHeight();
-
-	gGL.matrixMode(LLRender::MM_PROJECTION);
-	gGL.loadIdentity();
-	gGL.ortho(0.0f, llmax(window_width, 1.f), 0.0f, llmax(window_height,1.f), -1.0f, 1.0f);
-	gGL.matrixMode(LLRender::MM_MODELVIEW);
-	gGL.loadIdentity();
-	stop_glerror();
-}
-
-
-void gl_draw_x(const LLRect& rect, const LLColor4& color)
-{
-	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
-
-	gGL.color4fv( color.mV );
-
-	gGL.begin( LLRender::LINES );
-		gGL.vertex2i( rect.mLeft,		rect.mTop );
-		gGL.vertex2i( rect.mRight,	rect.mBottom );
-		gGL.vertex2i( rect.mLeft,		rect.mBottom );
-		gGL.vertex2i( rect.mRight,	rect.mTop );
-	gGL.end();
-}
-
-
-void gl_rect_2d_offset_local( S32 left, S32 top, S32 right, S32 bottom, const LLColor4 &color, S32 pixel_offset, BOOL filled)
-{
-	gGL.color4fv(color.mV);
-	gl_rect_2d_offset_local(left, top, right, bottom, pixel_offset, filled);
-}
-
-void gl_rect_2d_offset_local( S32 left, S32 top, S32 right, S32 bottom, S32 pixel_offset, BOOL filled)
-{
-	gGL.pushUIMatrix();
-	left += LLFontGL::sCurOrigin.mX;
-	right += LLFontGL::sCurOrigin.mX;
-	bottom += LLFontGL::sCurOrigin.mY;
-	top += LLFontGL::sCurOrigin.mY;
-
-	gGL.loadUIIdentity();
-	gl_rect_2d(llfloor((F32)left * LLUI::sGLScaleFactor.mV[VX]) - pixel_offset,
-				llfloor((F32)top * LLUI::sGLScaleFactor.mV[VY]) + pixel_offset,
-				llfloor((F32)right * LLUI::sGLScaleFactor.mV[VX]) + pixel_offset,
-				llfloor((F32)bottom * LLUI::sGLScaleFactor.mV[VY]) - pixel_offset,
-				filled);
-	gGL.popUIMatrix();
-}
-
-
-void gl_rect_2d(S32 left, S32 top, S32 right, S32 bottom, BOOL filled )
-{
-	stop_glerror();
-	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
-
-	// Counterclockwise quad will face the viewer
-	if( filled )
-	{ 
-		gGL.begin( LLRender::QUADS );
-			gGL.vertex2i(left, top);
-			gGL.vertex2i(left, bottom);
-			gGL.vertex2i(right, bottom);
-			gGL.vertex2i(right, top);
-		gGL.end();
-	}
-	else
-	{
-		if( gGLManager.mATIOffsetVerticalLines )
-		{
-			// Work around bug in ATI driver: vertical lines are offset by (-1,-1)
-			gGL.begin( LLRender::LINES );
-
-				// Verticals 
-				gGL.vertex2i(left + 1, top);
-				gGL.vertex2i(left + 1, bottom);
-
-				gGL.vertex2i(right, bottom);
-				gGL.vertex2i(right, top);
-
-				// Horizontals
-				top--;
-				right--;
-				gGL.vertex2i(left, bottom);
-				gGL.vertex2i(right, bottom);
-
-				gGL.vertex2i(left, top);
-				gGL.vertex2i(right, top);
-			gGL.end();
-		}
-		else
-		{
-			top--;
-			right--;
-			gGL.begin( LLRender::LINE_STRIP );
-				gGL.vertex2i(left, top);
-				gGL.vertex2i(left, bottom);
-				gGL.vertex2i(right, bottom);
-				gGL.vertex2i(right, top);
-				gGL.vertex2i(left, top);
-			gGL.end();
-		}
-	}
-	stop_glerror();
-}
-
-void gl_rect_2d(S32 left, S32 top, S32 right, S32 bottom, const LLColor4 &color, BOOL filled )
-{
-	gGL.color4fv( color.mV );
-	gl_rect_2d( left, top, right, bottom, filled );
-}
-
-
-void gl_rect_2d( const LLRect& rect, const LLColor4& color, BOOL filled )
-{
-	gGL.color4fv( color.mV );
-	gl_rect_2d( rect.mLeft, rect.mTop, rect.mRight, rect.mBottom, filled );
-}
-
-// Given a rectangle on the screen, draws a drop shadow _outside_
-// the right and bottom edges of it.  Along the right it has width "lines"
-// and along the bottom it has height "lines".
-void gl_drop_shadow(S32 left, S32 top, S32 right, S32 bottom, const LLColor4 &start_color, S32 lines)
-{
-	stop_glerror();
-	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
-	
-	// HACK: Overlap with the rectangle by a single pixel.
-	right--;
-	bottom++;
-	lines++;
-
-	LLColor4 end_color = start_color;
-	end_color.mV[VALPHA] = 0.f;
-
-	gGL.begin(LLRender::QUADS);
-
-	// Right edge, CCW faces screen
-	gGL.color4fv(start_color.mV);
-	gGL.vertex2i(right,		top-lines);
-	gGL.vertex2i(right,		bottom);
-	gGL.color4fv(end_color.mV);
-	gGL.vertex2i(right+lines, bottom);
-	gGL.vertex2i(right+lines, top-lines);
-
-	// Bottom edge, CCW faces screen
-	gGL.color4fv(start_color.mV);
-	gGL.vertex2i(right,		bottom);
-	gGL.vertex2i(left+lines,	bottom);
-	gGL.color4fv(end_color.mV);
-	gGL.vertex2i(left+lines,	bottom-lines);
-	gGL.vertex2i(right,		bottom-lines);
-
-	// bottom left Corner
-	gGL.color4fv(start_color.mV);
-	gGL.vertex2i(left+lines,	bottom);
-	gGL.color4fv(end_color.mV);
-	gGL.vertex2i(left,		bottom);
-	// make the bottom left corner not sharp
-	gGL.vertex2i(left+1,		bottom-lines+1);
-	gGL.vertex2i(left+lines,	bottom-lines);
-
-	// bottom right corner
-	gGL.color4fv(start_color.mV);
-	gGL.vertex2i(right,		bottom);
-	gGL.color4fv(end_color.mV);
-	gGL.vertex2i(right,		bottom-lines);
-	// make the rightmost corner not sharp
-	gGL.vertex2i(right+lines-1,	bottom-lines+1);
-	gGL.vertex2i(right+lines,	bottom);
-
-	// top right corner
-	gGL.color4fv(start_color.mV);
-	gGL.vertex2i( right,			top-lines );
-	gGL.color4fv(end_color.mV);
-	gGL.vertex2i( right+lines,	top-lines );
-	// make the corner not sharp
-	gGL.vertex2i( right+lines-1,	top-1 );
-	gGL.vertex2i( right,			top );
-
-	gGL.end();
-	stop_glerror();
-}
-
-void gl_line_2d(S32 x1, S32 y1, S32 x2, S32 y2 )
-{
-	// Work around bug in ATI driver: vertical lines are offset by (-1,-1)
-	if( (x1 == x2) && gGLManager.mATIOffsetVerticalLines )
-	{
-		x1++;
-		x2++;
-		y1++;
-		y2++;
-	}
-
-	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
-	
-	gGL.begin(LLRender::LINES);
-		gGL.vertex2i(x1, y1);
-		gGL.vertex2i(x2, y2);
-	gGL.end();
-}
-
-void gl_line_2d(S32 x1, S32 y1, S32 x2, S32 y2, const LLColor4 &color )
-{
-	// Work around bug in ATI driver: vertical lines are offset by (-1,-1)
-	if( (x1 == x2) && gGLManager.mATIOffsetVerticalLines )
-	{
-		x1++;
-		x2++;
-		y1++;
-		y2++;
-	}
-
-	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
-
-	gGL.color4fv( color.mV );
-
-	gGL.begin(LLRender::LINES);
-		gGL.vertex2i(x1, y1);
-		gGL.vertex2i(x2, y2);
-	gGL.end();
-}
-
-void gl_triangle_2d(S32 x1, S32 y1, S32 x2, S32 y2, S32 x3, S32 y3, const LLColor4& color, BOOL filled)
-{
-	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
-
-	gGL.color4fv(color.mV);
-
-	if (filled)
-	{
-		gGL.begin(LLRender::TRIANGLES);
-	}
-	else
-	{
-		gGL.begin(LLRender::LINE_LOOP);
-	}
-	gGL.vertex2i(x1, y1);
-	gGL.vertex2i(x2, y2);
-	gGL.vertex2i(x3, y3);
-	gGL.end();
-}
-
-void gl_corners_2d(S32 left, S32 top, S32 right, S32 bottom, S32 length, F32 max_frac)
-{
-	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
-
-	length = llmin((S32)(max_frac*(right - left)), length);
-	length = llmin((S32)(max_frac*(top - bottom)), length);
-	gGL.begin(LLRender::LINES);
-	gGL.vertex2i(left, top);
-	gGL.vertex2i(left + length, top);
-	
-	gGL.vertex2i(left, top);
-	gGL.vertex2i(left, top - length);
-
-	gGL.vertex2i(left, bottom);
-	gGL.vertex2i(left + length, bottom);
-	
-	gGL.vertex2i(left, bottom);
-	gGL.vertex2i(left, bottom + length);
-
-	gGL.vertex2i(right, top);
-	gGL.vertex2i(right - length, top);
-
-	gGL.vertex2i(right, top);
-	gGL.vertex2i(right, top - length);
-
-	gGL.vertex2i(right, bottom);
-	gGL.vertex2i(right - length, bottom);
-
-	gGL.vertex2i(right, bottom);
-	gGL.vertex2i(right, bottom + length);
-	gGL.end();
-}
-
-
-void gl_draw_image( S32 x, S32 y, LLTexture* image, const LLColor4& color, const LLRectf& uv_rect )
-{
-	if (NULL == image)
-	{
-		llwarns << "image == NULL; aborting function" << llendl;
-		return;
-	}
-	gl_draw_scaled_rotated_image( x, y, image->getWidth(0), image->getHeight(0), 0.f, image, color, uv_rect );
-}
-
-void gl_draw_scaled_image(S32 x, S32 y, S32 width, S32 height, LLTexture* image, const LLColor4& color, const LLRectf& uv_rect)
-{
-	if (NULL == image)
-	{
-		llwarns << "image == NULL; aborting function" << llendl;
-		return;
-	}
-	gl_draw_scaled_rotated_image( x, y, width, height, 0.f, image, color, uv_rect );
-}
-
-void gl_draw_scaled_image_with_border(S32 x, S32 y, S32 border_width, S32 border_height, S32 width, S32 height, LLTexture* image, const LLColor4& color, BOOL solid_color, const LLRectf& uv_rect)
-{
-	if (NULL == image)
-	{
-		llwarns << "image == NULL; aborting function" << llendl;
-		return;
-	}
-
-	// scale screen size of borders down
-	F32 border_width_fraction = (F32)border_width / (F32)image->getWidth(0);
-	F32 border_height_fraction = (F32)border_height / (F32)image->getHeight(0);
-
-	LLRectf scale_rect(border_width_fraction, 1.f - border_height_fraction, 1.f - border_width_fraction, border_height_fraction);
-	gl_draw_scaled_image_with_border(x, y, width, height, image, color, solid_color, uv_rect, scale_rect);
-}
-
-void gl_draw_scaled_image_with_border(S32 x, S32 y, S32 width, S32 height, LLTexture* image, const LLColor4& color, BOOL solid_color, const LLRectf& uv_outer_rect, const LLRectf& center_rect)
-{
-	stop_glerror();
-
-	if (NULL == image)
-	{
-		llwarns << "image == NULL; aborting function" << llendl;
-		return;
-	}
-
-	// add in offset of current image to current UI translation
-	const LLVector3 ui_scale = gGL.getUIScale();
-	const LLVector3 ui_translation = (gGL.getUITranslation() + LLVector3(x, y, 0.f)).scaledVec(ui_scale);
-
-	F32 uv_width = uv_outer_rect.getWidth();
-	F32 uv_height = uv_outer_rect.getHeight();
-
-	// shrink scaling region to be proportional to clipped image region
-	LLRectf uv_center_rect(
-		uv_outer_rect.mLeft + (center_rect.mLeft * uv_width),
-		uv_outer_rect.mBottom + (center_rect.mTop * uv_height),
-		uv_outer_rect.mLeft + (center_rect.mRight * uv_width),
-		uv_outer_rect.mBottom + (center_rect.mBottom * uv_height));
-
-	F32 image_width = image->getWidth(0);
-	F32 image_height = image->getHeight(0);
-
-	S32 image_natural_width = llround(image_width * uv_width);
-	S32 image_natural_height = llround(image_height * uv_height);
-
-	LLRectf draw_center_rect(	uv_center_rect.mLeft * image_width,
-								uv_center_rect.mTop * image_height,
-								uv_center_rect.mRight * image_width,
-								uv_center_rect.mBottom * image_height);
-
-	{	// scale fixed region of image to drawn region
-		draw_center_rect.mRight += width - image_natural_width;
-		draw_center_rect.mTop += height - image_natural_height;
-
-		F32 border_shrink_width = llmax(0.f, draw_center_rect.mLeft - draw_center_rect.mRight);
-		F32 border_shrink_height = llmax(0.f, draw_center_rect.mBottom - draw_center_rect.mTop);
-
-		F32 shrink_width_ratio = center_rect.getWidth() == 1.f ? 0.f : border_shrink_width / ((F32)image_natural_width * (1.f - center_rect.getWidth()));
-		F32 shrink_height_ratio = center_rect.getHeight() == 1.f ? 0.f : border_shrink_height / ((F32)image_natural_height * (1.f - center_rect.getHeight()));
-
-		F32 shrink_scale = 1.f - llmax(shrink_width_ratio, shrink_height_ratio);
-
-		draw_center_rect.mLeft = llround(ui_translation.mV[VX] + (F32)draw_center_rect.mLeft * shrink_scale * ui_scale.mV[VX]);
-		draw_center_rect.mTop = llround(ui_translation.mV[VY] + lerp((F32)height, (F32)draw_center_rect.mTop, shrink_scale) * ui_scale.mV[VY]);
-		draw_center_rect.mRight = llround(ui_translation.mV[VX] + lerp((F32)width, (F32)draw_center_rect.mRight, shrink_scale) * ui_scale.mV[VX]);
-		draw_center_rect.mBottom = llround(ui_translation.mV[VY] + (F32)draw_center_rect.mBottom * shrink_scale * ui_scale.mV[VY]);
-	}
-
-	LLRectf draw_outer_rect(ui_translation.mV[VX], 
-							ui_translation.mV[VY] + height * ui_scale.mV[VY], 
-							ui_translation.mV[VX] + width * ui_scale.mV[VX], 
-							ui_translation.mV[VY]);
-
-	LLGLSUIDefault gls_ui;
-	
-	if (solid_color)
-	{
-		if (LLGLSLShader::sNoFixedFunction)
-		{
-			gSolidColorProgram.bind();
-		}
-		else
-		{
-			gGL.getTexUnit(0)->setTextureColorBlend(LLTexUnit::TBO_REPLACE, LLTexUnit::TBS_PREV_COLOR);
-			gGL.getTexUnit(0)->setTextureAlphaBlend(LLTexUnit::TBO_MULT, LLTexUnit::TBS_TEX_ALPHA, LLTexUnit::TBS_VERT_ALPHA);
-		}
-	}
-
-	gGL.getTexUnit(0)->bind(image, true);
-
-	gGL.color4fv(color.mV);
-	
-	const S32 NUM_VERTICES = 9 * 4; // 9 quads
-	LLVector2 uv[NUM_VERTICES];
-	LLVector3 pos[NUM_VERTICES];
-
-	S32 index = 0;
-
-	gGL.begin(LLRender::QUADS);
-	{
-		// draw bottom left
-		uv[index] = LLVector2(uv_outer_rect.mLeft, uv_outer_rect.mBottom);
-		pos[index] = LLVector3(draw_outer_rect.mLeft, draw_outer_rect.mBottom, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_center_rect.mLeft, uv_outer_rect.mBottom);
-		pos[index] = LLVector3(draw_center_rect.mLeft, draw_outer_rect.mBottom, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mBottom);
-		pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mBottom, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_outer_rect.mLeft, uv_center_rect.mBottom);
-		pos[index] = LLVector3(draw_outer_rect.mLeft, draw_center_rect.mBottom, 0.f);
-		index++;
-
-		// draw bottom middle
-		uv[index] = LLVector2(uv_center_rect.mLeft, uv_outer_rect.mBottom);
-		pos[index] = LLVector3(draw_center_rect.mLeft, draw_outer_rect.mBottom, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_center_rect.mRight, uv_outer_rect.mBottom);
-		pos[index] = LLVector3(draw_center_rect.mRight, draw_outer_rect.mBottom, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mBottom);
-		pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mBottom, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mBottom);
-		pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mBottom, 0.f);
-		index++;
-
-		// draw bottom right
-		uv[index] = LLVector2(uv_center_rect.mRight, uv_outer_rect.mBottom);
-		pos[index] = LLVector3(draw_center_rect.mRight, draw_outer_rect.mBottom, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_outer_rect.mRight, uv_outer_rect.mBottom);
-		pos[index] = LLVector3(draw_outer_rect.mRight, draw_outer_rect.mBottom, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_outer_rect.mRight, uv_center_rect.mBottom);
-		pos[index] = LLVector3(draw_outer_rect.mRight, draw_center_rect.mBottom, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mBottom);
-		pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mBottom, 0.f);
-		index++;
-
-		// draw left 
-		uv[index] = LLVector2(uv_outer_rect.mLeft, uv_center_rect.mBottom);
-		pos[index] = LLVector3(draw_outer_rect.mLeft, draw_center_rect.mBottom, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mBottom);
-		pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mBottom, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mTop);
-		pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mTop, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_outer_rect.mLeft, uv_center_rect.mTop);
-		pos[index] = LLVector3(draw_outer_rect.mLeft, draw_center_rect.mTop, 0.f);
-		index++;
-
-		// draw middle
-		uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mBottom);
-		pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mBottom, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mBottom);
-		pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mBottom, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mTop);
-		pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mTop, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mTop);
-		pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mTop, 0.f);
-		index++;
-
-		// draw right 
-		uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mBottom);
-		pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mBottom, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_outer_rect.mRight, uv_center_rect.mBottom);
-		pos[index] = LLVector3(draw_outer_rect.mRight, draw_center_rect.mBottom, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_outer_rect.mRight, uv_center_rect.mTop);
-		pos[index] = LLVector3(draw_outer_rect.mRight, draw_center_rect.mTop, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mTop);
-		pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mTop, 0.f);
-		index++;
-
-		// draw top left
-		uv[index] = LLVector2(uv_outer_rect.mLeft, uv_center_rect.mTop);
-		pos[index] = LLVector3(draw_outer_rect.mLeft, draw_center_rect.mTop, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mTop);
-		pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mTop, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_center_rect.mLeft, uv_outer_rect.mTop);
-		pos[index] = LLVector3(draw_center_rect.mLeft, draw_outer_rect.mTop, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_outer_rect.mLeft, uv_outer_rect.mTop);
-		pos[index] = LLVector3(draw_outer_rect.mLeft, draw_outer_rect.mTop, 0.f);
-		index++;
-
-		// draw top middle
-		uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mTop);
-		pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mTop, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mTop);
-		pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mTop, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_center_rect.mRight, uv_outer_rect.mTop);
-		pos[index] = LLVector3(draw_center_rect.mRight, draw_outer_rect.mTop, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_center_rect.mLeft, uv_outer_rect.mTop);
-		pos[index] = LLVector3(draw_center_rect.mLeft, draw_outer_rect.mTop, 0.f);
-		index++;
-
-		// draw top right
-		uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mTop);
-		pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mTop, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_outer_rect.mRight, uv_center_rect.mTop);
-		pos[index] = LLVector3(draw_outer_rect.mRight, draw_center_rect.mTop, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_outer_rect.mRight, uv_outer_rect.mTop);
-		pos[index] = LLVector3(draw_outer_rect.mRight, draw_outer_rect.mTop, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_center_rect.mRight, uv_outer_rect.mTop);
-		pos[index] = LLVector3(draw_center_rect.mRight, draw_outer_rect.mTop, 0.f);
-		index++;
-
-		gGL.vertexBatchPreTransformed(pos, uv, NUM_VERTICES);
-	}
-	gGL.end();
-
-	if (solid_color)
-	{
-		if (LLGLSLShader::sNoFixedFunction)
-		{
-			gUIProgram.bind();
-		}
-		else
-		{
-			gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
-		}
-	}
-}
-
-void gl_draw_rotated_image(S32 x, S32 y, F32 degrees, LLTexture* image, const LLColor4& color, const LLRectf& uv_rect)
-{
-	gl_draw_scaled_rotated_image( x, y, image->getWidth(0), image->getHeight(0), degrees, image, color, uv_rect );
-}
-
-void gl_draw_scaled_rotated_image(S32 x, S32 y, S32 width, S32 height, F32 degrees, LLTexture* image, const LLColor4& color, const LLRectf& uv_rect)
-{
-	if (NULL == image)
-	{
-		llwarns << "image == NULL; aborting function" << llendl;
-		return;
-	}
-
-	LLGLSUIDefault gls_ui;
-
-
-	gGL.getTexUnit(0)->bind(image, true);
-
-	gGL.color4fv(color.mV);
-
-	if (degrees == 0.f)
-	{
-		const S32 NUM_VERTICES = 4; // 9 quads
-		LLVector2 uv[NUM_VERTICES];
-		LLVector3 pos[NUM_VERTICES];
-
-		gGL.begin(LLRender::QUADS);
-		{
-			LLVector3 ui_scale = gGL.getUIScale();
-			LLVector3 ui_translation = gGL.getUITranslation();
-			ui_translation.mV[VX] += x;
-			ui_translation.mV[VY] += y;
-			ui_translation.scaleVec(ui_scale);
-			S32 index = 0;
-			S32 scaled_width = llround(width * ui_scale.mV[VX]);
-			S32 scaled_height = llround(height * ui_scale.mV[VY]);
-
-			uv[index] = LLVector2(uv_rect.mRight, uv_rect.mTop);
-			pos[index] = LLVector3(ui_translation.mV[VX] + scaled_width, ui_translation.mV[VY] + scaled_height, 0.f);
-			index++;
-
-			uv[index] = LLVector2(uv_rect.mLeft, uv_rect.mTop);
-			pos[index] = LLVector3(ui_translation.mV[VX], ui_translation.mV[VY] + scaled_height, 0.f);
-			index++;
-
-			uv[index] = LLVector2(uv_rect.mLeft, uv_rect.mBottom);
-			pos[index] = LLVector3(ui_translation.mV[VX], ui_translation.mV[VY], 0.f);
-			index++;
-
-			uv[index] = LLVector2(uv_rect.mRight, uv_rect.mBottom);
-			pos[index] = LLVector3(ui_translation.mV[VX] + scaled_width, ui_translation.mV[VY], 0.f);
-			index++;
-
-			gGL.vertexBatchPreTransformed(pos, uv, NUM_VERTICES);
-		}
-		gGL.end();
-	}
-	else
-	{
-		gGL.pushUIMatrix();
-		gGL.translateUI((F32)x, (F32)y, 0.f);
-	
-		F32 offset_x = F32(width/2);
-		F32 offset_y = F32(height/2);
-
-		gGL.translateUI(offset_x, offset_y, 0.f);
-
-		LLMatrix3 quat(0.f, 0.f, degrees*DEG_TO_RAD);
-		
-		gGL.getTexUnit(0)->bind(image, true);
-
-		gGL.color4fv(color.mV);
-		
-		gGL.begin(LLRender::QUADS);
-		{
-			LLVector3 v;
-
-			v = LLVector3(offset_x, offset_y, 0.f) * quat;
-			gGL.texCoord2f(uv_rect.mRight, uv_rect.mTop);
-			gGL.vertex2f(v.mV[0], v.mV[1] );
-
-			v = LLVector3(-offset_x, offset_y, 0.f) * quat;
-			gGL.texCoord2f(uv_rect.mLeft, uv_rect.mTop);
-			gGL.vertex2f(v.mV[0], v.mV[1] );
-
-			v = LLVector3(-offset_x, -offset_y, 0.f) * quat;
-			gGL.texCoord2f(uv_rect.mLeft, uv_rect.mBottom);
-			gGL.vertex2f(v.mV[0], v.mV[1] );
-
-			v = LLVector3(offset_x, -offset_y, 0.f) * quat;
-			gGL.texCoord2f(uv_rect.mRight, uv_rect.mBottom);
-			gGL.vertex2f(v.mV[0], v.mV[1] );
-		}
-		gGL.end();
-		gGL.popUIMatrix();
-	}
-}
-
-
-void gl_stippled_line_3d( const LLVector3& start, const LLVector3& end, const LLColor4& color, F32 phase )
-{
-	phase = fmod(phase, 1.f);
-
-	S32 shift = S32(phase * 4.f) % 4;
-
-	// Stippled line
-	LLGLEnable stipple(GL_LINE_STIPPLE);
-	
-	gGL.color4f(color.mV[VRED], color.mV[VGREEN], color.mV[VBLUE], color.mV[VALPHA]);
-
-	gGL.flush();
-	glLineWidth(2.5f);
-
-	if (!LLGLSLShader::sNoFixedFunction)
-	{
-		glLineStipple(2, 0x3333 << shift);
-	}
-
-	gGL.begin(LLRender::LINES);
-	{
-		gGL.vertex3fv( start.mV );
-		gGL.vertex3fv( end.mV );
-	}
-	gGL.end();
-
-	LLUI::setLineWidth(1.f);
-}
-
-void gl_arc_2d(F32 center_x, F32 center_y, F32 radius, S32 steps, BOOL filled, F32 start_angle, F32 end_angle)
-{
-	if (end_angle < start_angle)
-	{
-		end_angle += F_TWO_PI;
-	}
-
-	gGL.pushUIMatrix();
-	{
-		gGL.translateUI(center_x, center_y, 0.f);
-
-		// Inexact, but reasonably fast.
-		F32 delta = (end_angle - start_angle) / steps;
-		F32 sin_delta = sin( delta );
-		F32 cos_delta = cos( delta );
-		F32 x = cosf(start_angle) * radius;
-		F32 y = sinf(start_angle) * radius;
-
-		if (filled)
-		{
-			gGL.begin(LLRender::TRIANGLE_FAN);
-			gGL.vertex2f(0.f, 0.f);
-			// make sure circle is complete
-			steps += 1;
-		}
-		else
-		{
-			gGL.begin(LLRender::LINE_STRIP);
-		}
-
-		while( steps-- )
-		{
-			// Successive rotations
-			gGL.vertex2f( x, y );
-			F32 x_new = x * cos_delta - y * sin_delta;
-			y = x * sin_delta +  y * cos_delta;
-			x = x_new;
-		}
-		gGL.end();
-	}
-	gGL.popUIMatrix();
-}
-
-void gl_circle_2d(F32 center_x, F32 center_y, F32 radius, S32 steps, BOOL filled)
-{
-	gGL.pushUIMatrix();
-	{
-		gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
-		gGL.translateUI(center_x, center_y, 0.f);
-
-		// Inexact, but reasonably fast.
-		F32 delta = F_TWO_PI / steps;
-		F32 sin_delta = sin( delta );
-		F32 cos_delta = cos( delta );
-		F32 x = radius;
-		F32 y = 0.f;
-
-		if (filled)
-		{
-			gGL.begin(LLRender::TRIANGLE_FAN);
-			gGL.vertex2f(0.f, 0.f);
-			// make sure circle is complete
-			steps += 1;
-		}
-		else
-		{
-			gGL.begin(LLRender::LINE_LOOP);
-		}
-
-		while( steps-- )
-		{
-			// Successive rotations
-			gGL.vertex2f( x, y );
-			F32 x_new = x * cos_delta - y * sin_delta;
-			y = x * sin_delta +  y * cos_delta;
-			x = x_new;
-		}
-		gGL.end();
-	}
-	gGL.popUIMatrix();
-}
-
-// Renders a ring with sides (tube shape)
-void gl_deep_circle( F32 radius, F32 depth, S32 steps )
-{
-	F32 x = radius;
-	F32 y = 0.f;
-	F32 angle_delta = F_TWO_PI / (F32)steps;
-	gGL.begin( LLRender::TRIANGLE_STRIP  );
-	{
-		S32 step = steps + 1; // An extra step to close the circle.
-		while( step-- )
-		{
-			gGL.vertex3f( x, y, depth );
-			gGL.vertex3f( x, y, 0.f );
-
-			F32 x_new = x * cosf(angle_delta) - y * sinf(angle_delta);
-			y = x * sinf(angle_delta) +  y * cosf(angle_delta);
-			x = x_new;
-		}
-	}
-	gGL.end();
-}
-
-void gl_ring( F32 radius, F32 width, const LLColor4& center_color, const LLColor4& side_color, S32 steps, BOOL render_center )
-{
-	gGL.pushUIMatrix();
-	{
-		gGL.translateUI(0.f, 0.f, -width / 2);
-		if( render_center )
-		{
-			gGL.color4fv(center_color.mV);
-			gGL.diffuseColor4fv(center_color.mV);
-			gl_deep_circle( radius, width, steps );
-		}
-		else
-		{
-			gGL.diffuseColor4fv(side_color.mV);
-			gl_washer_2d(radius, radius - width, steps, side_color, side_color);
-			gGL.translateUI(0.f, 0.f, width);
-			gl_washer_2d(radius - width, radius, steps, side_color, side_color);
-		}
-	}
-	gGL.popUIMatrix();
-}
-
-// Draw gray and white checkerboard with black border
-void gl_rect_2d_checkerboard(const LLRect& rect, GLfloat alpha)
-{
-	if (!LLGLSLShader::sNoFixedFunction)
-	{ 
-		// Initialize the first time this is called.
-		const S32 PIXELS = 32;
-		static GLubyte checkerboard[PIXELS * PIXELS];
-		static BOOL first = TRUE;
-		if( first )
-		{
-			for( S32 i = 0; i < PIXELS; i++ )
-			{
-				for( S32 j = 0; j < PIXELS; j++ )
-				{
-					checkerboard[i * PIXELS + j] = ((i & 1) ^ (j & 1)) * 0xFF;
-				}
-			}
-			first = FALSE;
-		}
-	
-		gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
-
-		// ...white squares
-		gGL.color4f( 1.f, 1.f, 1.f, alpha );
-		gl_rect_2d(rect);
-
-		// ...gray squares
-		gGL.color4f( .7f, .7f, .7f, alpha );
-		gGL.flush();
-
-		glPolygonStipple( checkerboard );
-
-		LLGLEnable polygon_stipple(GL_POLYGON_STIPPLE);
-		gl_rect_2d(rect);
-	}
-	else
-	{ //polygon stipple is deprecated, use "Checker" texture
-		LLPointer<LLUIImage> img = LLUI::getUIImage("Checker");
-		gGL.getTexUnit(0)->bind(img->getImage());
-		gGL.getTexUnit(0)->setTextureAddressMode(LLTexUnit::TAM_WRAP);
-		gGL.getTexUnit(0)->setTextureFilteringOption(LLTexUnit::TFO_POINT);
-
-		LLColor4 color(1.f, 1.f, 1.f, alpha);
-		LLRectf uv_rect(0, 0, rect.getWidth()/32.f, rect.getHeight()/32.f);
-
-		gl_draw_scaled_image(rect.mLeft, rect.mBottom, rect.getWidth(), rect.getHeight(),
-			img->getImage(), color, uv_rect);
-	}
-	
-	gGL.flush();
-}
-
-
-// Draws the area between two concentric circles, like
-// a doughnut or washer.
-void gl_washer_2d(F32 outer_radius, F32 inner_radius, S32 steps, const LLColor4& inner_color, const LLColor4& outer_color)
-{
-	const F32 DELTA = F_TWO_PI / steps;
-	const F32 SIN_DELTA = sin( DELTA );
-	const F32 COS_DELTA = cos( DELTA );
-
-	F32 x1 = outer_radius;
-	F32 y1 = 0.f;
-	F32 x2 = inner_radius;
-	F32 y2 = 0.f;
-
-	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
-
-	gGL.begin( LLRender::TRIANGLE_STRIP  );
-	{
-		steps += 1; // An extra step to close the circle.
-		while( steps-- )
-		{
-			gGL.color4fv(outer_color.mV);
-			gGL.vertex2f( x1, y1 );
-			gGL.color4fv(inner_color.mV);
-			gGL.vertex2f( x2, y2 );
-
-			F32 x1_new = x1 * COS_DELTA - y1 * SIN_DELTA;
-			y1 = x1 * SIN_DELTA +  y1 * COS_DELTA;
-			x1 = x1_new;
-
-			F32 x2_new = x2 * COS_DELTA - y2 * SIN_DELTA;
-			y2 = x2 * SIN_DELTA +  y2 * COS_DELTA;
-			x2 = x2_new;
-		}
-	}
-	gGL.end();
-}
-
-// Draws the area between two concentric circles, like
-// a doughnut or washer.
-void gl_washer_segment_2d(F32 outer_radius, F32 inner_radius, F32 start_radians, F32 end_radians, S32 steps, const LLColor4& inner_color, const LLColor4& outer_color)
-{
-	const F32 DELTA = (end_radians - start_radians) / steps;
-	const F32 SIN_DELTA = sin( DELTA );
-	const F32 COS_DELTA = cos( DELTA );
-
-	F32 x1 = outer_radius * cos( start_radians );
-	F32 y1 = outer_radius * sin( start_radians );
-	F32 x2 = inner_radius * cos( start_radians );
-	F32 y2 = inner_radius * sin( start_radians );
-
-	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
-	gGL.begin( LLRender::TRIANGLE_STRIP  );
-	{
-		steps += 1; // An extra step to close the circle.
-		while( steps-- )
-		{
-			gGL.color4fv(outer_color.mV);
-			gGL.vertex2f( x1, y1 );
-			gGL.color4fv(inner_color.mV);
-			gGL.vertex2f( x2, y2 );
-
-			F32 x1_new = x1 * COS_DELTA - y1 * SIN_DELTA;
-			y1 = x1 * SIN_DELTA +  y1 * COS_DELTA;
-			x1 = x1_new;
-
-			F32 x2_new = x2 * COS_DELTA - y2 * SIN_DELTA;
-			y2 = x2 * SIN_DELTA +  y2 * COS_DELTA;
-			x2 = x2_new;
-		}
-	}
-	gGL.end();
-}
-
-void gl_rect_2d_simple_tex( S32 width, S32 height )
-{
-	gGL.begin( LLRender::QUADS );
-
-		gGL.texCoord2f(1.f, 1.f);
-		gGL.vertex2i(width, height);
-
-		gGL.texCoord2f(0.f, 1.f);
-		gGL.vertex2i(0, height);
-
-		gGL.texCoord2f(0.f, 0.f);
-		gGL.vertex2i(0, 0);
-
-		gGL.texCoord2f(1.f, 0.f);
-		gGL.vertex2i(width, 0);
-	
-	gGL.end();
-}
-
-void gl_rect_2d_simple( S32 width, S32 height )
-{
-	gGL.begin( LLRender::QUADS );
-		gGL.vertex2i(width, height);
-		gGL.vertex2i(0, height);
-		gGL.vertex2i(0, 0);
-		gGL.vertex2i(width, 0);
-	gGL.end();
-}
-
-void gl_segmented_rect_2d_tex(const S32 left, 
-							  const S32 top, 
-							  const S32 right, 
-							  const S32 bottom, 
-							  const S32 texture_width, 
-							  const S32 texture_height, 
-							  const S32 border_size, 
-							  const U32 edges)
-{
-	S32 width = llabs(right - left);
-	S32 height = llabs(top - bottom);
-
-	gGL.pushUIMatrix();
-
-	gGL.translateUI((F32)left, (F32)bottom, 0.f);
-	LLVector2 border_uv_scale((F32)border_size / (F32)texture_width, (F32)border_size / (F32)texture_height);
-
-	if (border_uv_scale.mV[VX] > 0.5f)
-	{
-		border_uv_scale *= 0.5f / border_uv_scale.mV[VX];
-	}
-	if (border_uv_scale.mV[VY] > 0.5f)
-	{
-		border_uv_scale *= 0.5f / border_uv_scale.mV[VY];
-	}
-
-	F32 border_scale = llmin((F32)border_size, (F32)width * 0.5f, (F32)height * 0.5f);
-	LLVector2 border_width_left = ((edges & (~(U32)ROUNDED_RECT_RIGHT)) != 0) ? LLVector2(border_scale, 0.f) : LLVector2::zero;
-	LLVector2 border_width_right = ((edges & (~(U32)ROUNDED_RECT_LEFT)) != 0) ? LLVector2(border_scale, 0.f) : LLVector2::zero;
-	LLVector2 border_height_bottom = ((edges & (~(U32)ROUNDED_RECT_TOP)) != 0) ? LLVector2(0.f, border_scale) : LLVector2::zero;
-	LLVector2 border_height_top = ((edges & (~(U32)ROUNDED_RECT_BOTTOM)) != 0) ? LLVector2(0.f, border_scale) : LLVector2::zero;
-	LLVector2 width_vec((F32)width, 0.f);
-	LLVector2 height_vec(0.f, (F32)height);
-
-	gGL.begin(LLRender::QUADS);
-	{
-		// draw bottom left
-		gGL.texCoord2f(0.f, 0.f);
-		gGL.vertex2f(0.f, 0.f);
-
-		gGL.texCoord2f(border_uv_scale.mV[VX], 0.f);
-		gGL.vertex2fv(border_width_left.mV);
-
-		gGL.texCoord2f(border_uv_scale.mV[VX], border_uv_scale.mV[VY]);
-		gGL.vertex2fv((border_width_left + border_height_bottom).mV);
-
-		gGL.texCoord2f(0.f, border_uv_scale.mV[VY]);
-		gGL.vertex2fv(border_height_bottom.mV);
-
-		// draw bottom middle
-		gGL.texCoord2f(border_uv_scale.mV[VX], 0.f);
-		gGL.vertex2fv(border_width_left.mV);
-
-		gGL.texCoord2f(1.f - border_uv_scale.mV[VX], 0.f);
-		gGL.vertex2fv((width_vec - border_width_right).mV);
-
-		gGL.texCoord2f(1.f - border_uv_scale.mV[VX], border_uv_scale.mV[VY]);
-		gGL.vertex2fv((width_vec - border_width_right + border_height_bottom).mV);
-
-		gGL.texCoord2f(border_uv_scale.mV[VX], border_uv_scale.mV[VY]);
-		gGL.vertex2fv((border_width_left + border_height_bottom).mV);
-
-		// draw bottom right
-		gGL.texCoord2f(1.f - border_uv_scale.mV[VX], 0.f);
-		gGL.vertex2fv((width_vec - border_width_right).mV);
-
-		gGL.texCoord2f(1.f, 0.f);
-		gGL.vertex2fv(width_vec.mV);
-
-		gGL.texCoord2f(1.f, border_uv_scale.mV[VY]);
-		gGL.vertex2fv((width_vec + border_height_bottom).mV);
-
-		gGL.texCoord2f(1.f - border_uv_scale.mV[VX], border_uv_scale.mV[VY]);
-		gGL.vertex2fv((width_vec - border_width_right + border_height_bottom).mV);
-
-		// draw left 
-		gGL.texCoord2f(0.f, border_uv_scale.mV[VY]);
-		gGL.vertex2fv(border_height_bottom.mV);
-
-		gGL.texCoord2f(border_uv_scale.mV[VX], border_uv_scale.mV[VY]);
-		gGL.vertex2fv((border_width_left + border_height_bottom).mV);
-
-		gGL.texCoord2f(border_uv_scale.mV[VX], 1.f - border_uv_scale.mV[VY]);
-		gGL.vertex2fv((border_width_left + height_vec - border_height_top).mV);
-
-		gGL.texCoord2f(0.f, 1.f - border_uv_scale.mV[VY]);
-		gGL.vertex2fv((height_vec - border_height_top).mV);
-
-		// draw middle
-		gGL.texCoord2f(border_uv_scale.mV[VX], border_uv_scale.mV[VY]);
-		gGL.vertex2fv((border_width_left + border_height_bottom).mV);
-
-		gGL.texCoord2f(1.f - border_uv_scale.mV[VX], border_uv_scale.mV[VY]);
-		gGL.vertex2fv((width_vec - border_width_right + border_height_bottom).mV);
-
-		gGL.texCoord2f(1.f - border_uv_scale.mV[VX], 1.f - border_uv_scale.mV[VY]);
-		gGL.vertex2fv((width_vec - border_width_right + height_vec - border_height_top).mV);
-
-		gGL.texCoord2f(border_uv_scale.mV[VX], 1.f - border_uv_scale.mV[VY]);
-		gGL.vertex2fv((border_width_left + height_vec - border_height_top).mV);
-
-		// draw right 
-		gGL.texCoord2f(1.f - border_uv_scale.mV[VX], border_uv_scale.mV[VY]);
-		gGL.vertex2fv((width_vec - border_width_right + border_height_bottom).mV);
-
-		gGL.texCoord2f(1.f, border_uv_scale.mV[VY]);
-		gGL.vertex2fv((width_vec + border_height_bottom).mV);
-
-		gGL.texCoord2f(1.f, 1.f - border_uv_scale.mV[VY]);
-		gGL.vertex2fv((width_vec + height_vec - border_height_top).mV);
-
-		gGL.texCoord2f(1.f - border_uv_scale.mV[VX], 1.f - border_uv_scale.mV[VY]);
-		gGL.vertex2fv((width_vec - border_width_right + height_vec - border_height_top).mV);
-
-		// draw top left
-		gGL.texCoord2f(0.f, 1.f - border_uv_scale.mV[VY]);
-		gGL.vertex2fv((height_vec - border_height_top).mV);
-
-		gGL.texCoord2f(border_uv_scale.mV[VX], 1.f - border_uv_scale.mV[VY]);
-		gGL.vertex2fv((border_width_left + height_vec - border_height_top).mV);
-
-		gGL.texCoord2f(border_uv_scale.mV[VX], 1.f);
-		gGL.vertex2fv((border_width_left + height_vec).mV);
-
-		gGL.texCoord2f(0.f, 1.f);
-		gGL.vertex2fv((height_vec).mV);
-
-		// draw top middle
-		gGL.texCoord2f(border_uv_scale.mV[VX], 1.f - border_uv_scale.mV[VY]);
-		gGL.vertex2fv((border_width_left + height_vec - border_height_top).mV);
-
-		gGL.texCoord2f(1.f - border_uv_scale.mV[VX], 1.f - border_uv_scale.mV[VY]);
-		gGL.vertex2fv((width_vec - border_width_right + height_vec - border_height_top).mV);
-
-		gGL.texCoord2f(1.f - border_uv_scale.mV[VX], 1.f);
-		gGL.vertex2fv((width_vec - border_width_right + height_vec).mV);
-
-		gGL.texCoord2f(border_uv_scale.mV[VX], 1.f);
-		gGL.vertex2fv((border_width_left + height_vec).mV);
-
-		// draw top right
-		gGL.texCoord2f(1.f - border_uv_scale.mV[VX], 1.f - border_uv_scale.mV[VY]);
-		gGL.vertex2fv((width_vec - border_width_right + height_vec - border_height_top).mV);
-
-		gGL.texCoord2f(1.f, 1.f - border_uv_scale.mV[VY]);
-		gGL.vertex2fv((width_vec + height_vec - border_height_top).mV);
-
-		gGL.texCoord2f(1.f, 1.f);
-		gGL.vertex2fv((width_vec + height_vec).mV);
-
-		gGL.texCoord2f(1.f - border_uv_scale.mV[VX], 1.f);
-		gGL.vertex2fv((width_vec - border_width_right + height_vec).mV);
-	}
-	gGL.end();
-
-	gGL.popUIMatrix();
-}
-
-//FIXME: rewrite to use scissor?
-void gl_segmented_rect_2d_fragment_tex(const S32 left, 
-									   const S32 top, 
-									   const S32 right, 
-									   const S32 bottom, 
-									   const S32 texture_width, 
-									   const S32 texture_height, 
-									   const S32 border_size, 
-									   const F32 start_fragment, 
-									   const F32 end_fragment, 
-									   const U32 edges)
-{
-	S32 width = llabs(right - left);
-	S32 height = llabs(top - bottom);
-
-	gGL.pushUIMatrix();
-
-	gGL.translateUI((F32)left, (F32)bottom, 0.f);
-	LLVector2 border_uv_scale((F32)border_size / (F32)texture_width, (F32)border_size / (F32)texture_height);
-
-	if (border_uv_scale.mV[VX] > 0.5f)
-	{
-		border_uv_scale *= 0.5f / border_uv_scale.mV[VX];
-	}
-	if (border_uv_scale.mV[VY] > 0.5f)
-	{
-		border_uv_scale *= 0.5f / border_uv_scale.mV[VY];
-	}
-
-	F32 border_scale = llmin((F32)border_size, (F32)width * 0.5f, (F32)height * 0.5f);
-	LLVector2 border_width_left = ((edges & (~(U32)ROUNDED_RECT_RIGHT)) != 0) ? LLVector2(border_scale, 0.f) : LLVector2::zero;
-	LLVector2 border_width_right = ((edges & (~(U32)ROUNDED_RECT_LEFT)) != 0) ? LLVector2(border_scale, 0.f) : LLVector2::zero;
-	LLVector2 border_height_bottom = ((edges & (~(U32)ROUNDED_RECT_TOP)) != 0) ? LLVector2(0.f, border_scale) : LLVector2::zero;
-	LLVector2 border_height_top = ((edges & (~(U32)ROUNDED_RECT_BOTTOM)) != 0) ? LLVector2(0.f, border_scale) : LLVector2::zero;
-	LLVector2 width_vec((F32)width, 0.f);
-	LLVector2 height_vec(0.f, (F32)height);
-
-	F32 middle_start = border_scale / (F32)width;
-	F32 middle_end = 1.f - middle_start;
-
-	F32 u_min;
-	F32 u_max;
-	LLVector2 x_min;
-	LLVector2 x_max;
-
-	gGL.begin(LLRender::QUADS);
-	{
-		if (start_fragment < middle_start)
-		{
-			u_min = (start_fragment / middle_start) * border_uv_scale.mV[VX];
-			u_max = llmin(end_fragment / middle_start, 1.f) * border_uv_scale.mV[VX];
-			x_min = (start_fragment / middle_start) * border_width_left;
-			x_max = llmin(end_fragment / middle_start, 1.f) * border_width_left;
-
-			// draw bottom left
-			gGL.texCoord2f(u_min, 0.f);
-			gGL.vertex2fv(x_min.mV);
-
-			gGL.texCoord2f(border_uv_scale.mV[VX], 0.f);
-			gGL.vertex2fv(x_max.mV);
-
-			gGL.texCoord2f(u_max, border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_max + border_height_bottom).mV);
-
-			gGL.texCoord2f(u_min, border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_min + border_height_bottom).mV);
-
-			// draw left 
-			gGL.texCoord2f(u_min, border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_min + border_height_bottom).mV);
-
-			gGL.texCoord2f(u_max, border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_max + border_height_bottom).mV);
-
-			gGL.texCoord2f(u_max, 1.f - border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_max + height_vec - border_height_top).mV);
-
-			gGL.texCoord2f(u_min, 1.f - border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_min + height_vec - border_height_top).mV);
-			
-			// draw top left
-			gGL.texCoord2f(u_min, 1.f - border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_min + height_vec - border_height_top).mV);
-
-			gGL.texCoord2f(u_max, 1.f - border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_max + height_vec - border_height_top).mV);
-
-			gGL.texCoord2f(u_max, 1.f);
-			gGL.vertex2fv((x_max + height_vec).mV);
-
-			gGL.texCoord2f(u_min, 1.f);
-			gGL.vertex2fv((x_min + height_vec).mV);
-		}
-
-		if (end_fragment > middle_start || start_fragment < middle_end)
-		{
-			x_min = border_width_left + ((llclamp(start_fragment, middle_start, middle_end) - middle_start)) * width_vec;
-			x_max = border_width_left + ((llclamp(end_fragment, middle_start, middle_end) - middle_start)) * width_vec;
-
-			// draw bottom middle
-			gGL.texCoord2f(border_uv_scale.mV[VX], 0.f);
-			gGL.vertex2fv(x_min.mV);
-
-			gGL.texCoord2f(1.f - border_uv_scale.mV[VX], 0.f);
-			gGL.vertex2fv((x_max).mV);
-
-			gGL.texCoord2f(1.f - border_uv_scale.mV[VX], border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_max + border_height_bottom).mV);
-
-			gGL.texCoord2f(border_uv_scale.mV[VX], border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_min + border_height_bottom).mV);
-
-			// draw middle
-			gGL.texCoord2f(border_uv_scale.mV[VX], border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_min + border_height_bottom).mV);
-
-			gGL.texCoord2f(1.f - border_uv_scale.mV[VX], border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_max + border_height_bottom).mV);
-
-			gGL.texCoord2f(1.f - border_uv_scale.mV[VX], 1.f - border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_max + height_vec - border_height_top).mV);
-
-			gGL.texCoord2f(border_uv_scale.mV[VX], 1.f - border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_min + height_vec - border_height_top).mV);
-
-			// draw top middle
-			gGL.texCoord2f(border_uv_scale.mV[VX], 1.f - border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_min + height_vec - border_height_top).mV);
-
-			gGL.texCoord2f(1.f - border_uv_scale.mV[VX], 1.f - border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_max + height_vec - border_height_top).mV);
-
-			gGL.texCoord2f(1.f - border_uv_scale.mV[VX], 1.f);
-			gGL.vertex2fv((x_max + height_vec).mV);
-
-			gGL.texCoord2f(border_uv_scale.mV[VX], 1.f);
-			gGL.vertex2fv((x_min + height_vec).mV);
-		}
-
-		if (end_fragment > middle_end)
-		{
-			u_min = (1.f - llmax(0.f, ((start_fragment - middle_end) / middle_start))) * border_uv_scale.mV[VX];
-			u_max = (1.f - ((end_fragment - middle_end) / middle_start)) * border_uv_scale.mV[VX];
-			x_min = width_vec - ((1.f - llmax(0.f, ((start_fragment - middle_end) / middle_start))) * border_width_right);
-			x_max = width_vec - ((1.f - ((end_fragment - middle_end) / middle_start)) * border_width_right);
-
-			// draw bottom right
-			gGL.texCoord2f(u_min, 0.f);
-			gGL.vertex2fv((x_min).mV);
-
-			gGL.texCoord2f(u_max, 0.f);
-			gGL.vertex2fv(x_max.mV);
-
-			gGL.texCoord2f(u_max, border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_max + border_height_bottom).mV);
-
-			gGL.texCoord2f(u_min, border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_min + border_height_bottom).mV);
-
-			// draw right 
-			gGL.texCoord2f(u_min, border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_min + border_height_bottom).mV);
-
-			gGL.texCoord2f(u_max, border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_max + border_height_bottom).mV);
-
-			gGL.texCoord2f(u_max, 1.f - border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_max + height_vec - border_height_top).mV);
-
-			gGL.texCoord2f(u_min, 1.f - border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_min + height_vec - border_height_top).mV);
-
-			// draw top right
-			gGL.texCoord2f(u_min, 1.f - border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_min + height_vec - border_height_top).mV);
-
-			gGL.texCoord2f(u_max, 1.f - border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_max + height_vec - border_height_top).mV);
-
-			gGL.texCoord2f(u_max, 1.f);
-			gGL.vertex2fv((x_max + height_vec).mV);
-
-			gGL.texCoord2f(u_min, 1.f);
-			gGL.vertex2fv((x_min + height_vec).mV);
-		}
-	}
-	gGL.end();
-
-	gGL.popUIMatrix();
-}
-
-void gl_segmented_rect_3d_tex(const LLVector2& border_scale, const LLVector3& border_width, 
-							  const LLVector3& border_height, const LLVector3& width_vec, const LLVector3& height_vec,
-							  const U32 edges)
-{
-	LLVector3 left_border_width = ((edges & (~(U32)ROUNDED_RECT_RIGHT)) != 0) ? border_width : LLVector3::zero;
-	LLVector3 right_border_width = ((edges & (~(U32)ROUNDED_RECT_LEFT)) != 0) ? border_width : LLVector3::zero;
-
-	LLVector3 top_border_height = ((edges & (~(U32)ROUNDED_RECT_BOTTOM)) != 0) ? border_height : LLVector3::zero;
-	LLVector3 bottom_border_height = ((edges & (~(U32)ROUNDED_RECT_TOP)) != 0) ? border_height : LLVector3::zero;
-
-
-	gGL.begin(LLRender::QUADS);
-	{
-		// draw bottom left
-		gGL.texCoord2f(0.f, 0.f);
-		gGL.vertex3f(0.f, 0.f, 0.f);
-
-		gGL.texCoord2f(border_scale.mV[VX], 0.f);
-		gGL.vertex3fv(left_border_width.mV);
-
-		gGL.texCoord2f(border_scale.mV[VX], border_scale.mV[VY]);
-		gGL.vertex3fv((left_border_width + bottom_border_height).mV);
-
-		gGL.texCoord2f(0.f, border_scale.mV[VY]);
-		gGL.vertex3fv(bottom_border_height.mV);
-
-		// draw bottom middle
-		gGL.texCoord2f(border_scale.mV[VX], 0.f);
-		gGL.vertex3fv(left_border_width.mV);
-
-		gGL.texCoord2f(1.f - border_scale.mV[VX], 0.f);
-		gGL.vertex3fv((width_vec - right_border_width).mV);
-
-		gGL.texCoord2f(1.f - border_scale.mV[VX], border_scale.mV[VY]);
-		gGL.vertex3fv((width_vec - right_border_width + bottom_border_height).mV);
-
-		gGL.texCoord2f(border_scale.mV[VX], border_scale.mV[VY]);
-		gGL.vertex3fv((left_border_width + bottom_border_height).mV);
-
-		// draw bottom right
-		gGL.texCoord2f(1.f - border_scale.mV[VX], 0.f);
-		gGL.vertex3fv((width_vec - right_border_width).mV);
-
-		gGL.texCoord2f(1.f, 0.f);
-		gGL.vertex3fv(width_vec.mV);
-
-		gGL.texCoord2f(1.f, border_scale.mV[VY]);
-		gGL.vertex3fv((width_vec + bottom_border_height).mV);
-
-		gGL.texCoord2f(1.f - border_scale.mV[VX], border_scale.mV[VY]);
-		gGL.vertex3fv((width_vec - right_border_width + bottom_border_height).mV);
-
-		// draw left 
-		gGL.texCoord2f(0.f, border_scale.mV[VY]);
-		gGL.vertex3fv(bottom_border_height.mV);
-
-		gGL.texCoord2f(border_scale.mV[VX], border_scale.mV[VY]);
-		gGL.vertex3fv((left_border_width + bottom_border_height).mV);
-
-		gGL.texCoord2f(border_scale.mV[VX], 1.f - border_scale.mV[VY]);
-		gGL.vertex3fv((left_border_width + height_vec - top_border_height).mV);
-
-		gGL.texCoord2f(0.f, 1.f - border_scale.mV[VY]);
-		gGL.vertex3fv((height_vec - top_border_height).mV);
-
-		// draw middle
-		gGL.texCoord2f(border_scale.mV[VX], border_scale.mV[VY]);
-		gGL.vertex3fv((left_border_width + bottom_border_height).mV);
-
-		gGL.texCoord2f(1.f - border_scale.mV[VX], border_scale.mV[VY]);
-		gGL.vertex3fv((width_vec - right_border_width + bottom_border_height).mV);
-
-		gGL.texCoord2f(1.f - border_scale.mV[VX], 1.f - border_scale.mV[VY]);
-		gGL.vertex3fv((width_vec - right_border_width + height_vec - top_border_height).mV);
-
-		gGL.texCoord2f(border_scale.mV[VX], 1.f - border_scale.mV[VY]);
-		gGL.vertex3fv((left_border_width + height_vec - top_border_height).mV);
-
-		// draw right 
-		gGL.texCoord2f(1.f - border_scale.mV[VX], border_scale.mV[VY]);
-		gGL.vertex3fv((width_vec - right_border_width + bottom_border_height).mV);
-
-		gGL.texCoord2f(1.f, border_scale.mV[VY]);
-		gGL.vertex3fv((width_vec + bottom_border_height).mV);
-
-		gGL.texCoord2f(1.f, 1.f - border_scale.mV[VY]);
-		gGL.vertex3fv((width_vec + height_vec - top_border_height).mV);
-
-		gGL.texCoord2f(1.f - border_scale.mV[VX], 1.f - border_scale.mV[VY]);
-		gGL.vertex3fv((width_vec - right_border_width + height_vec - top_border_height).mV);
-
-		// draw top left
-		gGL.texCoord2f(0.f, 1.f - border_scale.mV[VY]);
-		gGL.vertex3fv((height_vec - top_border_height).mV);
-
-		gGL.texCoord2f(border_scale.mV[VX], 1.f - border_scale.mV[VY]);
-		gGL.vertex3fv((left_border_width + height_vec - top_border_height).mV);
-
-		gGL.texCoord2f(border_scale.mV[VX], 1.f);
-		gGL.vertex3fv((left_border_width + height_vec).mV);
-
-		gGL.texCoord2f(0.f, 1.f);
-		gGL.vertex3fv((height_vec).mV);
-
-		// draw top middle
-		gGL.texCoord2f(border_scale.mV[VX], 1.f - border_scale.mV[VY]);
-		gGL.vertex3fv((left_border_width + height_vec - top_border_height).mV);
-
-		gGL.texCoord2f(1.f - border_scale.mV[VX], 1.f - border_scale.mV[VY]);
-		gGL.vertex3fv((width_vec - right_border_width + height_vec - top_border_height).mV);
-
-		gGL.texCoord2f(1.f - border_scale.mV[VX], 1.f);
-		gGL.vertex3fv((width_vec - right_border_width + height_vec).mV);
-
-		gGL.texCoord2f(border_scale.mV[VX], 1.f);
-		gGL.vertex3fv((left_border_width + height_vec).mV);
-
-		// draw top right
-		gGL.texCoord2f(1.f - border_scale.mV[VX], 1.f - border_scale.mV[VY]);
-		gGL.vertex3fv((width_vec - right_border_width + height_vec - top_border_height).mV);
-
-		gGL.texCoord2f(1.f, 1.f - border_scale.mV[VY]);
-		gGL.vertex3fv((width_vec + height_vec - top_border_height).mV);
-
-		gGL.texCoord2f(1.f, 1.f);
-		gGL.vertex3fv((width_vec + height_vec).mV);
-
-		gGL.texCoord2f(1.f - border_scale.mV[VX], 1.f);
-		gGL.vertex3fv((width_vec - right_border_width + height_vec).mV);
-	}
-	gGL.end();
-
-}
-
-void gl_segmented_rect_3d_tex_top(const LLVector2& border_scale, const LLVector3& border_width, const LLVector3& border_height, const LLVector3& width_vec, const LLVector3& height_vec)
-{
-	gl_segmented_rect_3d_tex(border_scale, border_width, border_height, width_vec, height_vec, ROUNDED_RECT_TOP);
-}
-
 void LLUI::initClass(const settings_map_t& settings,
 					 LLImageProviderInterface* image_provider,
 					 LLUIAudioCallback audio_callback,
 					 const LLVector2* scale_factor,
 					 const std::string& language)
 {
+	LLRender2D::initClass(image_provider, scale_factor);
 	sSettingGroups = settings;
 
 	if ((get_ptr_in_map(sSettingGroups, std::string("config")) == NULL) ||
@@ -1632,9 +151,7 @@ void LLUI::initClass(const settings_map_t& settings,
 		llerrs << "Failure to initialize configuration groups" << llendl;
 	}
 
-	sImageProvider = image_provider;
 	sAudioCallback = audio_callback;
-	sGLScaleFactor = (scale_factor == NULL) ? LLVector2(1.f, 1.f) : *scale_factor;
 	sWindow = NULL; // set later in startup
 	LLFontGL::sShadowColor = LLUIColorTable::instance().getColor("ColorDropShadow");
 
@@ -1668,10 +185,7 @@ void LLUI::initClass(const settings_map_t& settings,
 
 void LLUI::cleanupClass()
 {
-	if(sImageProvider)
-	{
-	sImageProvider->cleanUp();
-}
+	LLRender2D::cleanupClass();
 }
 
 void LLUI::setPopupFuncs(const add_popup_t& add_popup, const remove_popup_t& remove_popup,  const clear_popups_t& clear_popups)
@@ -1695,60 +209,12 @@ void LLUI::dirtyRect(LLRect rect)
 	}		
 }
  
-
-//static
-void LLUI::translate(F32 x, F32 y, F32 z)
-{
-	gGL.translateUI(x,y,z);
-	LLFontGL::sCurOrigin.mX += (S32) x;
-	LLFontGL::sCurOrigin.mY += (S32) y;
-	LLFontGL::sCurDepth += z;
-}
-
-//static
-void LLUI::pushMatrix()
-{
-	gGL.pushUIMatrix();
-	LLFontGL::sOriginStack.push_back(std::make_pair(LLFontGL::sCurOrigin, LLFontGL::sCurDepth));
-}
-
-//static
-void LLUI::popMatrix()
-{
-	gGL.popUIMatrix();
-	LLFontGL::sCurOrigin = LLFontGL::sOriginStack.back().first;
-	LLFontGL::sCurDepth = LLFontGL::sOriginStack.back().second;
-	LLFontGL::sOriginStack.pop_back();
-}
-
-//static 
-void LLUI::loadIdentity()
-{
-	gGL.loadUIIdentity(); 
-	LLFontGL::sCurOrigin.mX = 0;
-	LLFontGL::sCurOrigin.mY = 0;
-	LLFontGL::sCurDepth = 0.f;
-}
-
-//static
-void LLUI::setScaleFactor(const LLVector2 &scale_factor)
-{
-	sGLScaleFactor = scale_factor;
-}
-
-//static
-void LLUI::setLineWidth(F32 width)
-{
-	gGL.flush();
-	glLineWidth(width * lerp(sGLScaleFactor.mV[VX], sGLScaleFactor.mV[VY], 0.5f));
-}
-
 //static 
 void LLUI::setMousePositionScreen(S32 x, S32 y)
 {
 	S32 screen_x, screen_y;
-	screen_x = llround((F32)x * sGLScaleFactor.mV[VX]);
-	screen_y = llround((F32)y * sGLScaleFactor.mV[VY]);
+	screen_x = llround((F32)x * getScaleFactor().mV[VX]);
+	screen_y = llround((F32)y * getScaleFactor().mV[VY]);
 	
 	LLView::getWindow()->setCursorPosition(LLCoordGL(screen_x, screen_y).convert());
 }
@@ -1759,8 +225,8 @@ void LLUI::getMousePositionScreen(S32 *x, S32 *y)
 	LLCoordWindow cursor_pos_window;
 	getWindow()->getCursorPosition(&cursor_pos_window);
 	LLCoordGL cursor_pos_gl(cursor_pos_window.convert());
-	*x = llround((F32)cursor_pos_gl.mX / sGLScaleFactor.mV[VX]);
-	*y = llround((F32)cursor_pos_gl.mY / sGLScaleFactor.mV[VX]);
+	*x = llround((F32)cursor_pos_gl.mX / getScaleFactor().mV[VX]);
+	*y = llround((F32)cursor_pos_gl.mY / getScaleFactor().mV[VX]);
 }
 
 //static 
@@ -1925,21 +391,21 @@ LLVector2 LLUI::getWindowSize()
 	LLCoordWindow window_rect;
 	sWindow->getSize(&window_rect);
 
-	return LLVector2(window_rect.mX / sGLScaleFactor.mV[VX], window_rect.mY / sGLScaleFactor.mV[VY]);
+	return LLVector2(window_rect.mX / getScaleFactor().mV[VX], window_rect.mY / getScaleFactor().mV[VY]);
 }
 
 //static
 void LLUI::screenPointToGL(S32 screen_x, S32 screen_y, S32 *gl_x, S32 *gl_y)
 {
-	*gl_x = llround((F32)screen_x * sGLScaleFactor.mV[VX]);
-	*gl_y = llround((F32)screen_y * sGLScaleFactor.mV[VY]);
+	*gl_x = llround((F32)screen_x * getScaleFactor().mV[VX]);
+	*gl_y = llround((F32)screen_y * getScaleFactor().mV[VY]);
 }
 
 //static
 void LLUI::glPointToScreen(S32 gl_x, S32 gl_y, S32 *screen_x, S32 *screen_y)
 {
-	*screen_x = llround((F32)gl_x / sGLScaleFactor.mV[VX]);
-	*screen_y = llround((F32)gl_y / sGLScaleFactor.mV[VY]);
+	*screen_x = llround((F32)gl_x / getScaleFactor().mV[VX]);
+	*screen_y = llround((F32)gl_y / getScaleFactor().mV[VY]);
 }
 
 //static
@@ -1956,27 +422,6 @@ void LLUI::glRectToScreen(const LLRect& gl, LLRect *screen)
 	glPointToScreen(gl.mRight, gl.mBottom, &screen->mRight, &screen->mBottom);
 }
 
-//static
-LLPointer<LLUIImage> LLUI::getUIImageByID(const LLUUID& image_id, S32 priority)
-{
-	if (sImageProvider)
-	{
-		return sImageProvider->getUIImageByID(image_id, priority);
-	}
-	else
-	{
-		return NULL;
-	}
-}
-
-//static 
-LLPointer<LLUIImage> LLUI::getUIImage(const std::string& name, S32 priority)
-{
-	if (!name.empty() && sImageProvider)
-		return sImageProvider->getUIImage(name, priority);
-	else
-		return NULL;
-}
 
 LLControlGroup& LLUI::getControlControlGroup (const std::string& controlname)
 {
diff --git a/indra/llui/llui.h b/indra/llui/llui.h
index 28e84fa4441..a38ae9a5603 100644
--- a/indra/llui/llui.h
+++ b/indra/llui/llui.h
@@ -1,6 +1,6 @@
 /** 
  * @file llui.h
- * @brief GL function declarations and other general static UI services.
+ * @brief General static UI services.
  *
  * $LicenseInfo:firstyear=2001&license=viewerlgpl$
  * Second Life Viewer Source Code
@@ -24,122 +24,37 @@
  * $/LicenseInfo$
  */
 
-// All immediate-mode gl drawing should happen here.
 
 #ifndef LL_LLUI_H
 #define LL_LLUI_H
 
-#include "llpointer.h"		// LLPointer<>
 #include "llrect.h"
 #include "llcontrol.h"
 #include "llcoord.h"
-#include "llglslshader.h"
+#include "v2math.h"
 #include "llinitparam.h"
 #include "llregistry.h"
+#include "llrender2dutils.h"
+#include "llpointer.h"
 #include "lluicolor.h"
 #include "lluicolortable.h"
+#include "lluiimage.h"
 #include <boost/signals2.hpp>
 #include "lllazyvalue.h"
 #include "llframetimer.h"
 #include <limits>
 
-// LLUIFactory
-#include "llsd.h"
-
 // for initparam specialization
 #include "llfontgl.h"
 
 
-class LLColor4; 
-class LLVector3;
-class LLVector2;
-class LLUIImage;
 class LLUUID;
 class LLWindow;
 class LLView;
 class LLHelp;
 
-// UI colors
-extern const LLColor4 UI_VERTEX_COLOR;
 void make_ui_sound(const char* name);
 
-BOOL ui_point_in_rect(S32 x, S32 y, S32 left, S32 top, S32 right, S32 bottom);
-void gl_state_for_2d(S32 width, S32 height);
-
-void gl_line_2d(S32 x1, S32 y1, S32 x2, S32 y2);
-void gl_line_2d(S32 x1, S32 y1, S32 x2, S32 y2, const LLColor4 &color );
-void gl_triangle_2d(S32 x1, S32 y1, S32 x2, S32 y2, S32 x3, S32 y3, const LLColor4& color, BOOL filled);
-void gl_rect_2d_simple( S32 width, S32 height );
-
-void gl_draw_x(const LLRect& rect, const LLColor4& color);
-
-void gl_rect_2d(S32 left, S32 top, S32 right, S32 bottom, BOOL filled = TRUE );
-void gl_rect_2d(S32 left, S32 top, S32 right, S32 bottom, const LLColor4 &color, BOOL filled = TRUE );
-void gl_rect_2d_offset_local( S32 left, S32 top, S32 right, S32 bottom, const LLColor4 &color, S32 pixel_offset = 0, BOOL filled = TRUE );
-void gl_rect_2d_offset_local( S32 left, S32 top, S32 right, S32 bottom, S32 pixel_offset = 0, BOOL filled = TRUE );
-void gl_rect_2d(const LLRect& rect, BOOL filled = TRUE );
-void gl_rect_2d(const LLRect& rect, const LLColor4& color, BOOL filled = TRUE );
-void gl_rect_2d_checkerboard(const LLRect& rect, GLfloat alpha = 1.0f);
-
-void gl_drop_shadow(S32 left, S32 top, S32 right, S32 bottom, const LLColor4 &start_color, S32 lines);
-
-void gl_circle_2d(F32 x, F32 y, F32 radius, S32 steps, BOOL filled);
-void gl_arc_2d(F32 center_x, F32 center_y, F32 radius, S32 steps, BOOL filled, F32 start_angle, F32 end_angle);
-void gl_deep_circle( F32 radius, F32 depth );
-void gl_ring( F32 radius, F32 width, const LLColor4& center_color, const LLColor4& side_color, S32 steps, BOOL render_center );
-void gl_corners_2d(S32 left, S32 top, S32 right, S32 bottom, S32 length, F32 max_frac);
-void gl_washer_2d(F32 outer_radius, F32 inner_radius, S32 steps, const LLColor4& inner_color, const LLColor4& outer_color);
-void gl_washer_segment_2d(F32 outer_radius, F32 inner_radius, F32 start_radians, F32 end_radians, S32 steps, const LLColor4& inner_color, const LLColor4& outer_color);
-
-void gl_draw_image(S32 x, S32 y, LLTexture* image, const LLColor4& color = UI_VERTEX_COLOR, const LLRectf& uv_rect = LLRectf(0.f, 1.f, 1.f, 0.f));
-void gl_draw_scaled_image(S32 x, S32 y, S32 width, S32 height, LLTexture* image, const LLColor4& color = UI_VERTEX_COLOR, const LLRectf& uv_rect = LLRectf(0.f, 1.f, 1.f, 0.f));
-void gl_draw_rotated_image(S32 x, S32 y, F32 degrees, LLTexture* image, const LLColor4& color = UI_VERTEX_COLOR, const LLRectf& uv_rect = LLRectf(0.f, 1.f, 1.f, 0.f));
-void gl_draw_scaled_rotated_image(S32 x, S32 y, S32 width, S32 height, F32 degrees,LLTexture* image, const LLColor4& color = UI_VERTEX_COLOR, const LLRectf& uv_rect = LLRectf(0.f, 1.f, 1.f, 0.f));
-void gl_draw_scaled_image_with_border(S32 x, S32 y, S32 border_width, S32 border_height, S32 width, S32 height, LLTexture* image, const LLColor4 &color, BOOL solid_color = FALSE, const LLRectf& uv_rect = LLRectf(0.f, 1.f, 1.f, 0.f));
-void gl_draw_scaled_image_with_border(S32 x, S32 y, S32 width, S32 height, LLTexture* image, const LLColor4 &color, BOOL solid_color = FALSE, const LLRectf& uv_rect = LLRectf(0.f, 1.f, 1.f, 0.f), const LLRectf& scale_rect = LLRectf(0.f, 1.f, 1.f, 0.f));
-
-void gl_stippled_line_3d( const LLVector3& start, const LLVector3& end, const LLColor4& color, F32 phase = 0.f ); 
-
-void gl_rect_2d_simple_tex( S32 width, S32 height );
-
-// segmented rectangles
-
-/*
-   TL |______TOP_________| TR 
-     /|                  |\  
-   _/_|__________________|_\_
-   L| |    MIDDLE        | |R
-   _|_|__________________|_|_
-    \ |    BOTTOM        | /  
-   BL\|__________________|/ BR
-      |                  |    
-*/
-
-typedef enum e_rounded_edge
-{
-	ROUNDED_RECT_LEFT	= 0x1, 
-	ROUNDED_RECT_TOP	= 0x2, 
-	ROUNDED_RECT_RIGHT	= 0x4, 
-	ROUNDED_RECT_BOTTOM	= 0x8,
-	ROUNDED_RECT_ALL	= 0xf
-}ERoundedEdge;
-
-
-void gl_segmented_rect_2d_tex(const S32 left, const S32 top, const S32 right, const S32 bottom, const S32 texture_width, const S32 texture_height, const S32 border_size, const U32 edges = ROUNDED_RECT_ALL);
-void gl_segmented_rect_2d_fragment_tex(const S32 left, const S32 top, const S32 right, const S32 bottom, const S32 texture_width, const S32 texture_height, const S32 border_size, const F32 start_fragment, const F32 end_fragment, const U32 edges = ROUNDED_RECT_ALL);
-void gl_segmented_rect_3d_tex(const LLVector2& border_scale, const LLVector3& border_width, const LLVector3& border_height, const LLVector3& width_vec, const LLVector3& height_vec, U32 edges = ROUNDED_RECT_ALL);
-void gl_segmented_rect_3d_tex_top(const LLVector2& border_scale, const LLVector3& border_width, const LLVector3& border_height, const LLVector3& width_vec, const LLVector3& height_vec);
-
-inline void gl_rect_2d( const LLRect& rect, BOOL filled )
-{
-	gl_rect_2d( rect.mLeft, rect.mTop, rect.mRight, rect.mBottom, filled );
-}
-
-inline void gl_rect_2d_offset_local( const LLRect& rect, S32 pixel_offset, BOOL filled)
-{
-	gl_rect_2d_offset_local( rect.mLeft, rect.mTop, rect.mRight, rect.mBottom, pixel_offset, filled );
-}
-
 class LLImageProviderInterface;
 
 typedef	void (*LLUIAudioCallback)(const LLUUID& uuid);
@@ -280,10 +195,10 @@ class LLUI
 	static void cleanupClass();
 	static void setPopupFuncs(const add_popup_t& add_popup, const remove_popup_t&, const clear_popups_t& );
 
-	static void pushMatrix();
-	static void popMatrix();
-	static void loadIdentity();
-	static void translate(F32 x, F32 y, F32 z = 0.0f);
+	static void pushMatrix() { LLRender2D::pushMatrix(); }
+	static void popMatrix() { LLRender2D::popMatrix(); }
+	static void loadIdentity() { LLRender2D::loadIdentity(); }
+	static void translate(F32 x, F32 y, F32 z = 0.0f) { LLRender2D::translate(x, y, z); }
 
 	static LLRect	sDirtyRect;
 	static BOOL		sDirty;
@@ -333,10 +248,13 @@ class LLUI
 	static void getMousePositionScreen(S32 *x, S32 *y);
 	static void setMousePositionLocal(const LLView* viewp, S32 x, S32 y);
 	static void getMousePositionLocal(const LLView* viewp, S32 *x, S32 *y);
-	static void setScaleFactor(const LLVector2& scale_factor);
-	static void setLineWidth(F32 width);
-	static LLPointer<LLUIImage> getUIImageByID(const LLUUID& image_id, S32 priority = 0);
-	static LLPointer<LLUIImage> getUIImage(const std::string& name, S32 priority = 0);
+	static LLVector2& getScaleFactor() { return LLRender2D::sGLScaleFactor; }
+	static void setScaleFactor(const LLVector2& scale_factor) { LLRender2D::setScaleFactor(scale_factor); }
+	static void setLineWidth(F32 width) { LLRender2D::setLineWidth(width); }
+	static LLPointer<LLUIImage> getUIImageByID(const LLUUID& image_id, S32 priority = 0)
+		{ return LLRender2D::getUIImageByID(image_id, priority); }
+	static LLPointer<LLUIImage> getUIImage(const std::string& name, S32 priority = 0)
+		{ return LLRender2D::getUIImage(name, priority); }
 	static LLVector2 getWindowSize();
 	static void screenPointToGL(S32 screen_x, S32 screen_y, S32 *gl_x, S32 *gl_y);
 	static void glPointToScreen(S32 gl_x, S32 gl_y, S32 *screen_x, S32 *screen_y);
@@ -365,12 +283,10 @@ class LLUI
 	//
 	static settings_map_t sSettingGroups;
 	static LLUIAudioCallback sAudioCallback;
-	static LLVector2		sGLScaleFactor;
 	static LLWindow*		sWindow;
 	static LLView*			sRootView;
 	static LLHelp*			sHelpImpl;
 private:
-	static LLImageProviderInterface* sImageProvider;
 	static std::vector<std::string> sXUIPaths;
 	static LLFrameTimer		sMouseIdleTimer;
 	static add_popup_t		sAddPopupFunc;
@@ -381,18 +297,6 @@ class LLUI
 
 // Moved LLLocalClipRect to lllocalcliprect.h
 
-//RN: maybe this needs to moved elsewhere?
-class LLImageProviderInterface
-{
-protected:
-	LLImageProviderInterface() {};
-	virtual ~LLImageProviderInterface() {};
-public:
-	virtual LLPointer<LLUIImage> getUIImage(const std::string& name, S32 priority) = 0;
-	virtual LLPointer<LLUIImage> getUIImageByID(const LLUUID& id, S32 priority) = 0;
-	virtual void cleanUp() = 0;
-};
-
 class LLCallbackRegistry
 {
 public:
@@ -603,7 +507,4 @@ namespace LLInitParam
 	};
 }
 
-extern LLGLSLShader gSolidColorProgram;
-extern LLGLSLShader gUIProgram;
-
 #endif
diff --git a/indra/llui/tests/llurlentry_test.cpp b/indra/llui/tests/llurlentry_test.cpp
index 8f0a48018fb..6c51024d2ca 100644
--- a/indra/llui/tests/llurlentry_test.cpp
+++ b/indra/llui/tests/llurlentry_test.cpp
@@ -31,7 +31,7 @@
 #include "llurlentry_stub.cpp"
 #include "lltut.h"
 #include "../lluicolortable.h"
-#include "../lluiimage.h"
+#include "lluiimage.h"
 
 #include <boost/regex.hpp>
 
diff --git a/indra/llui/tests/llurlmatch_test.cpp b/indra/llui/tests/llurlmatch_test.cpp
index 963473c92ab..88a2cfb1e05 100644
--- a/indra/llui/tests/llurlmatch_test.cpp
+++ b/indra/llui/tests/llurlmatch_test.cpp
@@ -28,7 +28,7 @@
 #include "linden_common.h"
 
 #include "../llurlmatch.h"
-#include "../lluiimage.h"
+#include "lluiimage.h"
 #include "lltut.h"
 
 // link seams
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 21b1512e582..a17a3b11ec2 100755
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -304,6 +304,7 @@ set(viewer_SOURCE_FILES
     llinventorybridge.cpp
     llinventoryfilter.cpp
     llinventoryfunctions.cpp
+    llinventoryicon.cpp
     llinventoryitemslist.cpp
     llinventorylistitem.cpp
     llinventorymodel.cpp
@@ -872,6 +873,7 @@ set(viewer_HEADER_FILES
     llinventorybridge.h
     llinventoryfilter.h
     llinventoryfunctions.h
+    llinventoryicon.h
     llinventoryitemslist.h
     llinventorylistitem.h
     llinventorymodel.h
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index 6ca77ba4dd5..fbf15ff5ce4 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -771,7 +771,7 @@ bool LLAppViewer::init()
 	LLUI::initClass(settings_map,
 		LLUIImageList::getInstance(),
 		ui_audio_callback,
-		&LLUI::sGLScaleFactor);
+		&LLUI::getScaleFactor());
 	LL_INFOS("InitInfo") << "UI initialized." << LL_ENDL ;
 
 	// Setup paths and LLTrans after LLUI::initClass has been called.
diff --git a/indra/newview/llfloaterbuycontents.cpp b/indra/newview/llfloaterbuycontents.cpp
index 809d344d016..df802f0a0e2 100644
--- a/indra/newview/llfloaterbuycontents.cpp
+++ b/indra/newview/llfloaterbuycontents.cpp
@@ -40,6 +40,7 @@
 #include "llcheckboxctrl.h"
 #include "llinventorydefines.h"
 #include "llinventoryfunctions.h"
+#include "llinventoryicon.h"
 #include "llinventorymodel.h"	// for gInventory
 #include "llfirstuse.h"
 #include "llfloaterreg.h"
diff --git a/indra/newview/llglsandbox.cpp b/indra/newview/llglsandbox.cpp
index 1208c9378e9..60fa53f491c 100644
--- a/indra/newview/llglsandbox.cpp
+++ b/indra/newview/llglsandbox.cpp
@@ -79,10 +79,10 @@ void LLToolSelectRect::handleRectangleSelection(S32 x, S32 y, MASK mask)
 	S32 top =	llmax(y, mDragStartY);
 	S32 bottom =llmin(y, mDragStartY);
 
-	left = llround((F32) left * LLUI::sGLScaleFactor.mV[VX]);
-	right = llround((F32) right * LLUI::sGLScaleFactor.mV[VX]);
-	top = llround((F32) top * LLUI::sGLScaleFactor.mV[VY]);
-	bottom = llround((F32) bottom * LLUI::sGLScaleFactor.mV[VY]);
+	left = llround((F32) left * LLUI::getScaleFactor().mV[VX]);
+	right = llround((F32) right * LLUI::getScaleFactor().mV[VX]);
+	top = llround((F32) top * LLUI::getScaleFactor().mV[VY]);
+	bottom = llround((F32) bottom * LLUI::getScaleFactor().mV[VY]);
 
 	F32 old_far_plane = LLViewerCamera::getInstance()->getFar();
 	F32 old_near_plane = LLViewerCamera::getInstance()->getNear();
diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp
index dc6147898a3..4834d8dd705 100755
--- a/indra/newview/llinventorybridge.cpp
+++ b/indra/newview/llinventorybridge.cpp
@@ -50,6 +50,7 @@
 #include "llclipboard.h"
 #include "llinventorydefines.h"
 #include "llinventoryfunctions.h"
+#include "llinventoryicon.h"
 #include "llinventorymodel.h"
 #include "llinventorymodelbackgroundfetch.h"
 #include "llinventorypanel.h"
@@ -1510,7 +1511,7 @@ LLUIImagePtr LLItemBridge::getIcon() const
 										mIsLink);
 	}
 	
-	return LLInventoryIcon::getIcon(LLInventoryIcon::ICONNAME_OBJECT);
+	return LLInventoryIcon::getIcon(LLInventoryType::ICONNAME_OBJECT);
 }
 
 PermissionMask LLItemBridge::getPermissionMask() const
diff --git a/indra/llappearance/llinventoryicon.cpp b/indra/newview/llinventoryicon.cpp
similarity index 52%
rename from indra/llappearance/llinventoryicon.cpp
rename to indra/newview/llinventoryicon.cpp
index 371f60353b6..14efc25fb96 100644
--- a/indra/llappearance/llinventoryicon.cpp
+++ b/indra/newview/llinventoryicon.cpp
@@ -41,7 +41,7 @@ struct IconEntry : public LLDictionaryEntry
 };
 
 class LLIconDictionary : public LLSingleton<LLIconDictionary>,
-						 public LLDictionary<LLInventoryIcon::EIconName, IconEntry>
+						 public LLDictionary<LLInventoryType::EIconName, IconEntry>
 {
 public:
 	LLIconDictionary();
@@ -49,48 +49,48 @@ class LLIconDictionary : public LLSingleton<LLIconDictionary>,
 
 LLIconDictionary::LLIconDictionary()
 {
-	addEntry(LLInventoryIcon::ICONNAME_TEXTURE, 				new IconEntry("Inv_Texture"));
-	addEntry(LLInventoryIcon::ICONNAME_SOUND, 					new IconEntry("Inv_Sound"));
-	addEntry(LLInventoryIcon::ICONNAME_CALLINGCARD_ONLINE, 		new IconEntry("Inv_CallingCard"));
-	addEntry(LLInventoryIcon::ICONNAME_CALLINGCARD_OFFLINE, 	new IconEntry("Inv_CallingCard"));
-	addEntry(LLInventoryIcon::ICONNAME_LANDMARK, 				new IconEntry("Inv_Landmark"));
-	addEntry(LLInventoryIcon::ICONNAME_LANDMARK_VISITED, 		new IconEntry("Inv_Landmark"));
-	addEntry(LLInventoryIcon::ICONNAME_SCRIPT, 					new IconEntry("Inv_Script"));
-	addEntry(LLInventoryIcon::ICONNAME_CLOTHING, 				new IconEntry("Inv_Clothing"));
-	addEntry(LLInventoryIcon::ICONNAME_OBJECT, 					new IconEntry("Inv_Object"));
-	addEntry(LLInventoryIcon::ICONNAME_OBJECT_MULTI, 			new IconEntry("Inv_Object_Multi"));
-	addEntry(LLInventoryIcon::ICONNAME_NOTECARD, 				new IconEntry("Inv_Notecard"));
-	addEntry(LLInventoryIcon::ICONNAME_BODYPART, 				new IconEntry("Inv_Skin"));
-	addEntry(LLInventoryIcon::ICONNAME_SNAPSHOT, 				new IconEntry("Inv_Snapshot"));
-
-	addEntry(LLInventoryIcon::ICONNAME_BODYPART_SHAPE, 			new IconEntry("Inv_BodyShape"));
-	addEntry(LLInventoryIcon::ICONNAME_BODYPART_SKIN, 			new IconEntry("Inv_Skin"));
-	addEntry(LLInventoryIcon::ICONNAME_BODYPART_HAIR, 			new IconEntry("Inv_Hair"));
-	addEntry(LLInventoryIcon::ICONNAME_BODYPART_EYES, 			new IconEntry("Inv_Eye"));
-
-	addEntry(LLInventoryIcon::ICONNAME_CLOTHING_SHIRT, 			new IconEntry("Inv_Shirt"));
-	addEntry(LLInventoryIcon::ICONNAME_CLOTHING_PANTS, 			new IconEntry("Inv_Pants"));
-	addEntry(LLInventoryIcon::ICONNAME_CLOTHING_SHOES, 			new IconEntry("Inv_Shoe"));
-	addEntry(LLInventoryIcon::ICONNAME_CLOTHING_SOCKS, 			new IconEntry("Inv_Socks"));
-	addEntry(LLInventoryIcon::ICONNAME_CLOTHING_JACKET, 		new IconEntry("Inv_Jacket"));
-	addEntry(LLInventoryIcon::ICONNAME_CLOTHING_GLOVES, 		new IconEntry("Inv_Gloves"));
-	addEntry(LLInventoryIcon::ICONNAME_CLOTHING_UNDERSHIRT, 	new IconEntry("Inv_Undershirt"));
-	addEntry(LLInventoryIcon::ICONNAME_CLOTHING_UNDERPANTS, 	new IconEntry("Inv_Underpants"));
-	addEntry(LLInventoryIcon::ICONNAME_CLOTHING_SKIRT, 			new IconEntry("Inv_Skirt"));
-	addEntry(LLInventoryIcon::ICONNAME_CLOTHING_ALPHA, 			new IconEntry("Inv_Alpha"));
-	addEntry(LLInventoryIcon::ICONNAME_CLOTHING_TATTOO, 		new IconEntry("Inv_Tattoo"));
-	addEntry(LLInventoryIcon::ICONNAME_ANIMATION, 				new IconEntry("Inv_Animation"));
-	addEntry(LLInventoryIcon::ICONNAME_GESTURE, 				new IconEntry("Inv_Gesture"));
-
-	addEntry(LLInventoryIcon::ICONNAME_CLOTHING_PHYSICS, 		new IconEntry("Inv_Physics"));
-
-	addEntry(LLInventoryIcon::ICONNAME_LINKITEM, 				new IconEntry("Inv_LinkItem"));
-	addEntry(LLInventoryIcon::ICONNAME_LINKFOLDER, 				new IconEntry("Inv_LinkFolder"));
-	addEntry(LLInventoryIcon::ICONNAME_MESH,	 				new IconEntry("Inv_Mesh"));
-
-	addEntry(LLInventoryIcon::ICONNAME_INVALID, 				new IconEntry("Inv_Invalid"));
-
-	addEntry(LLInventoryIcon::ICONNAME_NONE, 					new IconEntry("NONE"));
+	addEntry(LLInventoryType::ICONNAME_TEXTURE, 				new IconEntry("Inv_Texture"));
+	addEntry(LLInventoryType::ICONNAME_SOUND, 					new IconEntry("Inv_Sound"));
+	addEntry(LLInventoryType::ICONNAME_CALLINGCARD_ONLINE, 		new IconEntry("Inv_CallingCard"));
+	addEntry(LLInventoryType::ICONNAME_CALLINGCARD_OFFLINE, 	new IconEntry("Inv_CallingCard"));
+	addEntry(LLInventoryType::ICONNAME_LANDMARK, 				new IconEntry("Inv_Landmark"));
+	addEntry(LLInventoryType::ICONNAME_LANDMARK_VISITED, 		new IconEntry("Inv_Landmark"));
+	addEntry(LLInventoryType::ICONNAME_SCRIPT, 					new IconEntry("Inv_Script"));
+	addEntry(LLInventoryType::ICONNAME_CLOTHING, 				new IconEntry("Inv_Clothing"));
+	addEntry(LLInventoryType::ICONNAME_OBJECT, 					new IconEntry("Inv_Object"));
+	addEntry(LLInventoryType::ICONNAME_OBJECT_MULTI, 			new IconEntry("Inv_Object_Multi"));
+	addEntry(LLInventoryType::ICONNAME_NOTECARD, 				new IconEntry("Inv_Notecard"));
+	addEntry(LLInventoryType::ICONNAME_BODYPART, 				new IconEntry("Inv_Skin"));
+	addEntry(LLInventoryType::ICONNAME_SNAPSHOT, 				new IconEntry("Inv_Snapshot"));
+
+	addEntry(LLInventoryType::ICONNAME_BODYPART_SHAPE, 			new IconEntry("Inv_BodyShape"));
+	addEntry(LLInventoryType::ICONNAME_BODYPART_SKIN, 			new IconEntry("Inv_Skin"));
+	addEntry(LLInventoryType::ICONNAME_BODYPART_HAIR, 			new IconEntry("Inv_Hair"));
+	addEntry(LLInventoryType::ICONNAME_BODYPART_EYES, 			new IconEntry("Inv_Eye"));
+
+	addEntry(LLInventoryType::ICONNAME_CLOTHING_SHIRT, 			new IconEntry("Inv_Shirt"));
+	addEntry(LLInventoryType::ICONNAME_CLOTHING_PANTS, 			new IconEntry("Inv_Pants"));
+	addEntry(LLInventoryType::ICONNAME_CLOTHING_SHOES, 			new IconEntry("Inv_Shoe"));
+	addEntry(LLInventoryType::ICONNAME_CLOTHING_SOCKS, 			new IconEntry("Inv_Socks"));
+	addEntry(LLInventoryType::ICONNAME_CLOTHING_JACKET, 		new IconEntry("Inv_Jacket"));
+	addEntry(LLInventoryType::ICONNAME_CLOTHING_GLOVES, 		new IconEntry("Inv_Gloves"));
+	addEntry(LLInventoryType::ICONNAME_CLOTHING_UNDERSHIRT, 	new IconEntry("Inv_Undershirt"));
+	addEntry(LLInventoryType::ICONNAME_CLOTHING_UNDERPANTS, 	new IconEntry("Inv_Underpants"));
+	addEntry(LLInventoryType::ICONNAME_CLOTHING_SKIRT, 			new IconEntry("Inv_Skirt"));
+	addEntry(LLInventoryType::ICONNAME_CLOTHING_ALPHA, 			new IconEntry("Inv_Alpha"));
+	addEntry(LLInventoryType::ICONNAME_CLOTHING_TATTOO, 		new IconEntry("Inv_Tattoo"));
+	addEntry(LLInventoryType::ICONNAME_ANIMATION, 				new IconEntry("Inv_Animation"));
+	addEntry(LLInventoryType::ICONNAME_GESTURE, 				new IconEntry("Inv_Gesture"));
+
+	addEntry(LLInventoryType::ICONNAME_CLOTHING_PHYSICS, 		new IconEntry("Inv_Physics"));
+
+	addEntry(LLInventoryType::ICONNAME_LINKITEM, 				new IconEntry("Inv_LinkItem"));
+	addEntry(LLInventoryType::ICONNAME_LINKFOLDER, 				new IconEntry("Inv_LinkFolder"));
+	addEntry(LLInventoryType::ICONNAME_MESH,	 				new IconEntry("Inv_Mesh"));
+
+	addEntry(LLInventoryType::ICONNAME_INVALID, 				new IconEntry("Inv_Invalid"));
+
+	addEntry(LLInventoryType::ICONNAME_NONE, 					new IconEntry("NONE"));
 }
 
 LLUIImagePtr LLInventoryIcon::getIcon(LLAssetType::EType asset_type,
@@ -102,7 +102,7 @@ LLUIImagePtr LLInventoryIcon::getIcon(LLAssetType::EType asset_type,
 	return LLUI::getUIImage(icon_name);
 }
 
-LLUIImagePtr LLInventoryIcon::getIcon(EIconName idx)
+LLUIImagePtr LLInventoryIcon::getIcon(LLInventoryType::EIconName idx)
 {
 	return LLUI::getUIImage(getIconName(idx));
 }
@@ -112,56 +112,56 @@ const std::string& LLInventoryIcon::getIconName(LLAssetType::EType asset_type,
 												U32 misc_flag,
 												BOOL item_is_multi)
 {
-	EIconName idx = ICONNAME_OBJECT;
+	LLInventoryType::EIconName idx = LLInventoryType::ICONNAME_OBJECT;
 	if (item_is_multi)
 	{
-		idx = ICONNAME_OBJECT_MULTI;
+		idx = LLInventoryType::ICONNAME_OBJECT_MULTI;
 		return getIconName(idx);
 	}
 	
 	switch(asset_type)
 	{
 		case LLAssetType::AT_TEXTURE:
-			idx = (inventory_type == LLInventoryType::IT_SNAPSHOT) ? ICONNAME_SNAPSHOT : ICONNAME_TEXTURE;
+			idx = (inventory_type == LLInventoryType::IT_SNAPSHOT) ? LLInventoryType::ICONNAME_SNAPSHOT : LLInventoryType::ICONNAME_TEXTURE;
 			break;
 		case LLAssetType::AT_SOUND:
-			idx = ICONNAME_SOUND;
+			idx = LLInventoryType::ICONNAME_SOUND;
 			break;
 		case LLAssetType::AT_CALLINGCARD:
-			idx = (misc_flag != 0) ? ICONNAME_CALLINGCARD_ONLINE : ICONNAME_CALLINGCARD_OFFLINE;
+			idx = (misc_flag != 0) ? LLInventoryType::ICONNAME_CALLINGCARD_ONLINE : LLInventoryType::ICONNAME_CALLINGCARD_OFFLINE;
 			break;
 		case LLAssetType::AT_LANDMARK:
-			idx = (misc_flag != 0) ? ICONNAME_LANDMARK_VISITED : ICONNAME_LANDMARK;
+			idx = (misc_flag != 0) ? LLInventoryType::ICONNAME_LANDMARK_VISITED : LLInventoryType::ICONNAME_LANDMARK;
 			break;
 		case LLAssetType::AT_SCRIPT:
 		case LLAssetType::AT_LSL_TEXT:
 		case LLAssetType::AT_LSL_BYTECODE:
-			idx = ICONNAME_SCRIPT;
+			idx = LLInventoryType::ICONNAME_SCRIPT;
 			break;
 		case LLAssetType::AT_CLOTHING:
 		case LLAssetType::AT_BODYPART:
 			idx = assignWearableIcon(misc_flag);
 			break;
 		case LLAssetType::AT_NOTECARD:
-			idx = ICONNAME_NOTECARD;
+			idx = LLInventoryType::ICONNAME_NOTECARD;
 			break;
 		case LLAssetType::AT_ANIMATION:
-			idx = ICONNAME_ANIMATION;
+			idx = LLInventoryType::ICONNAME_ANIMATION;
 			break;
 		case LLAssetType::AT_GESTURE:
-			idx = ICONNAME_GESTURE;
+			idx = LLInventoryType::ICONNAME_GESTURE;
 			break;
 		case LLAssetType::AT_LINK:
-			idx = ICONNAME_LINKITEM;
+			idx = LLInventoryType::ICONNAME_LINKITEM;
 			break;
 		case LLAssetType::AT_LINK_FOLDER:
-			idx = ICONNAME_LINKFOLDER;
+			idx = LLInventoryType::ICONNAME_LINKFOLDER;
 			break;
 		case LLAssetType::AT_OBJECT:
-			idx = ICONNAME_OBJECT;
+			idx = LLInventoryType::ICONNAME_OBJECT;
 			break;
 		case LLAssetType::AT_MESH:
-			idx = ICONNAME_MESH;
+			idx = LLInventoryType::ICONNAME_MESH;
 		default:
 			break;
 	}
@@ -170,13 +170,13 @@ const std::string& LLInventoryIcon::getIconName(LLAssetType::EType asset_type,
 }
 
 
-const std::string& LLInventoryIcon::getIconName(EIconName idx)
+const std::string& LLInventoryIcon::getIconName(LLInventoryType::EIconName idx)
 {
 	const IconEntry *entry = LLIconDictionary::instance().lookup(idx);
 	return entry->mName;
 }
 
-LLInventoryIcon::EIconName LLInventoryIcon::assignWearableIcon(U32 misc_flag)
+LLInventoryType::EIconName LLInventoryIcon::assignWearableIcon(U32 misc_flag)
 {
 	const LLWearableType::EType wearable_type = LLWearableType::EType(LLInventoryItemFlags::II_FLAGS_WEARABLES_MASK & misc_flag);
 	return LLWearableType::getIconName(wearable_type);
diff --git a/indra/llappearance/llinventoryicon.h b/indra/newview/llinventoryicon.h
similarity index 62%
rename from indra/llappearance/llinventoryicon.h
rename to indra/newview/llinventoryicon.h
index c7e2998a20f..659448143da 100644
--- a/indra/llappearance/llinventoryicon.h
+++ b/indra/newview/llinventoryicon.h
@@ -35,66 +35,20 @@
 class LLInventoryIcon
 {
 public:
-	enum EIconName
-	{
-		ICONNAME_TEXTURE,
-		ICONNAME_SOUND,
-		ICONNAME_CALLINGCARD_ONLINE,
-		ICONNAME_CALLINGCARD_OFFLINE,
-		ICONNAME_LANDMARK,
-		ICONNAME_LANDMARK_VISITED,
-		ICONNAME_SCRIPT,
-		ICONNAME_CLOTHING,
-		ICONNAME_OBJECT,
-		ICONNAME_OBJECT_MULTI,
-		ICONNAME_NOTECARD,
-		ICONNAME_BODYPART,
-		ICONNAME_SNAPSHOT,
-		
-		ICONNAME_BODYPART_SHAPE,
-		ICONNAME_BODYPART_SKIN,
-		ICONNAME_BODYPART_HAIR,
-		ICONNAME_BODYPART_EYES,
-		ICONNAME_CLOTHING_SHIRT,
-		ICONNAME_CLOTHING_PANTS,
-		ICONNAME_CLOTHING_SHOES,
-		ICONNAME_CLOTHING_SOCKS,
-		ICONNAME_CLOTHING_JACKET,
-		ICONNAME_CLOTHING_GLOVES,
-		ICONNAME_CLOTHING_UNDERSHIRT,
-		ICONNAME_CLOTHING_UNDERPANTS,
-		ICONNAME_CLOTHING_SKIRT,
-		ICONNAME_CLOTHING_ALPHA,
-		ICONNAME_CLOTHING_TATTOO,
-
-		ICONNAME_ANIMATION,
-		ICONNAME_GESTURE,
-
-		ICONNAME_CLOTHING_PHYSICS,
-		
-		ICONNAME_LINKITEM,
-		ICONNAME_LINKFOLDER,
-		ICONNAME_MESH,
-
-		ICONNAME_INVALID,
-		ICONNAME_COUNT,
-		ICONNAME_NONE = -1
-	};
-
 	static const std::string& getIconName(LLAssetType::EType asset_type,
 										  LLInventoryType::EType inventory_type = LLInventoryType::IT_NONE,
 										  U32 misc_flag = 0, // different meanings depending on item type
 										  BOOL item_is_multi = FALSE);
-	static const std::string& getIconName(EIconName idx);
+	static const std::string& getIconName(LLInventoryType::EIconName idx);
 
 	static LLUIImagePtr getIcon(LLAssetType::EType asset_type,
 								LLInventoryType::EType inventory_type = LLInventoryType::IT_NONE,
 								U32 misc_flag = 0, // different meanings depending on item type
 								BOOL item_is_multi = FALSE);
-	static LLUIImagePtr getIcon(EIconName idx);
+	static LLUIImagePtr getIcon(LLInventoryType::EIconName idx);
 
 protected:
-	static EIconName assignWearableIcon(U32 misc_flag);
+	static LLInventoryType::EIconName assignWearableIcon(U32 misc_flag);
 };
 #endif // LL_LLINVENTORYICON_H
 
diff --git a/indra/newview/llinventorylistitem.cpp b/indra/newview/llinventorylistitem.cpp
index 3e0849a7957..26041767fd4 100644
--- a/indra/newview/llinventorylistitem.cpp
+++ b/indra/newview/llinventorylistitem.cpp
@@ -37,6 +37,7 @@
 #include "lltextutil.h"
 
 // newview
+#include "llinventoryicon.h"
 #include "llinventorymodel.h"
 #include "llviewerinventory.h"
 
diff --git a/indra/newview/llmediactrl.cpp b/indra/newview/llmediactrl.cpp
index 7650fe92296..04744ab34ca 100644
--- a/indra/newview/llmediactrl.cpp
+++ b/indra/newview/llmediactrl.cpp
@@ -119,8 +119,8 @@ LLMediaCtrl::LLMediaCtrl( const Params& p) :
 
 	if(!getDecoupleTextureSize())
 	{
-		S32 screen_width = llround((F32)getRect().getWidth() * LLUI::sGLScaleFactor.mV[VX]);
-		S32 screen_height = llround((F32)getRect().getHeight() * LLUI::sGLScaleFactor.mV[VY]);
+		S32 screen_width = llround((F32)getRect().getWidth() * LLUI::getScaleFactor().mV[VX]);
+		S32 screen_height = llround((F32)getRect().getHeight() * LLUI::getScaleFactor().mV[VY]);
 			
 		setTextureSize(screen_width, screen_height);
 	}
@@ -469,8 +469,8 @@ void LLMediaCtrl::reshape( S32 width, S32 height, BOOL called_from_parent )
 {
 	if(!getDecoupleTextureSize())
 	{
-		S32 screen_width = llround((F32)width * LLUI::sGLScaleFactor.mV[VX]);
-		S32 screen_height = llround((F32)height * LLUI::sGLScaleFactor.mV[VY]);
+		S32 screen_width = llround((F32)width * LLUI::getScaleFactor().mV[VX]);
+		S32 screen_height = llround((F32)height * LLUI::getScaleFactor().mV[VY]);
 
 		// when floater is minimized, these sizes are negative
 		if ( screen_height > 0 && screen_width > 0 )
@@ -687,7 +687,7 @@ bool LLMediaCtrl::ensureMediaSourceExists()
 			mMediaSource->addObserver( this );
 			mMediaSource->setBackgroundColor( getBackgroundColor() );
 			mMediaSource->setTrustedBrowser(mTrusted);
-			mMediaSource->setPageZoomFactor( LLUI::sGLScaleFactor.mV[ VX ] );
+			mMediaSource->setPageZoomFactor( LLUI::getScaleFactor().mV[ VX ] );
 
 			if(mClearCache)
 			{
@@ -770,7 +770,7 @@ void LLMediaCtrl::draw()
 	{
 		gGL.pushUIMatrix();
 		{
-			mMediaSource->setPageZoomFactor( LLUI::sGLScaleFactor.mV[ VX ] );
+			mMediaSource->setPageZoomFactor( LLUI::getScaleFactor().mV[ VX ] );
 
 			// scale texture to fit the space using texture coords
 			gGL.getTexUnit(0)->bind(media_texture);
@@ -884,14 +884,14 @@ void LLMediaCtrl::convertInputCoords(S32& x, S32& y)
 		coords_opengl = mMediaSource->getMediaPlugin()->getTextureCoordsOpenGL();
 	}
 	
-	x = llround((F32)x * LLUI::sGLScaleFactor.mV[VX]);
+	x = llround((F32)x * LLUI::getScaleFactor().mV[VX]);
 	if ( ! coords_opengl )
 	{
-		y = llround((F32)(y) * LLUI::sGLScaleFactor.mV[VY]);
+		y = llround((F32)(y) * LLUI::getScaleFactor().mV[VY]);
 	}
 	else
 	{
-		y = llround((F32)(getRect().getHeight() - y) * LLUI::sGLScaleFactor.mV[VY]);
+		y = llround((F32)(getRect().getHeight() - y) * LLUI::getScaleFactor().mV[VY]);
 	};
 }
 
diff --git a/indra/newview/llpanelgroupnotices.cpp b/indra/newview/llpanelgroupnotices.cpp
index 31c0e3d01a7..9a3ea0774bc 100644
--- a/indra/newview/llpanelgroupnotices.cpp
+++ b/indra/newview/llpanelgroupnotices.cpp
@@ -35,6 +35,7 @@
 #include "llviewerinventory.h"
 #include "llinventorydefines.h"
 #include "llinventoryfunctions.h"
+#include "llinventoryicon.h"
 #include "llinventorymodel.h"
 #include "llfloaterinventory.h"
 #include "llagent.h"
diff --git a/indra/newview/llpanelobjectinventory.cpp b/indra/newview/llpanelobjectinventory.cpp
index 1ca24f30316..7c3425d71b9 100644
--- a/indra/newview/llpanelobjectinventory.cpp
+++ b/indra/newview/llpanelobjectinventory.cpp
@@ -47,6 +47,7 @@
 #include "llfolderview.h"
 #include "llinventorybridge.h"
 #include "llinventorydefines.h"
+#include "llinventoryicon.h"
 #include "llinventoryfilter.h"
 #include "llinventoryfunctions.h"
 #include "llpreviewanim.h"
diff --git a/indra/newview/lltoastgroupnotifypanel.cpp b/indra/newview/lltoastgroupnotifypanel.cpp
index 75178a6ef8a..64be5408bed 100644
--- a/indra/newview/lltoastgroupnotifypanel.cpp
+++ b/indra/newview/lltoastgroupnotifypanel.cpp
@@ -33,6 +33,7 @@
 #include "llbutton.h"
 #include "lliconctrl.h"
 #include "llinventoryfunctions.h"
+#include "llinventoryicon.h"
 #include "llnotifications.h"
 #include "llviewertexteditor.h"
 
diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp
index 3b486efd7e0..cc697f8510e 100644
--- a/indra/newview/llviewerdisplay.cpp
+++ b/indra/newview/llviewerdisplay.cpp
@@ -1440,7 +1440,7 @@ void render_ui_2d()
 		gGL.pushMatrix();
 		S32 half_width = (gViewerWindow->getWorldViewWidthScaled() / 2);
 		S32 half_height = (gViewerWindow->getWorldViewHeightScaled() / 2);
-		gGL.scalef(LLUI::sGLScaleFactor.mV[0], LLUI::sGLScaleFactor.mV[1], 1.f);
+		gGL.scalef(LLUI::getScaleFactor().mV[0], LLUI::getScaleFactor().mV[1], 1.f);
 		gGL.translatef((F32)half_width, (F32)half_height, 0.f);
 		F32 zoom = gAgentCamera.mHUDCurZoom;
 		gGL.scalef(zoom,zoom,1.f);
@@ -1478,10 +1478,10 @@ void render_ui_2d()
 				LLUI::sDirtyRect = last_rect;
 				last_rect = t_rect;
 			
-				last_rect.mLeft = LLRect::tCoordType(last_rect.mLeft / LLUI::sGLScaleFactor.mV[0]);
-				last_rect.mRight = LLRect::tCoordType(last_rect.mRight / LLUI::sGLScaleFactor.mV[0]);
-				last_rect.mTop = LLRect::tCoordType(last_rect.mTop / LLUI::sGLScaleFactor.mV[1]);
-				last_rect.mBottom = LLRect::tCoordType(last_rect.mBottom / LLUI::sGLScaleFactor.mV[1]);
+				last_rect.mLeft = LLRect::tCoordType(last_rect.mLeft / LLUI::getScaleFactor().mV[0]);
+				last_rect.mRight = LLRect::tCoordType(last_rect.mRight / LLUI::getScaleFactor().mV[0]);
+				last_rect.mTop = LLRect::tCoordType(last_rect.mTop / LLUI::getScaleFactor().mV[1]);
+				last_rect.mBottom = LLRect::tCoordType(last_rect.mBottom / LLUI::getScaleFactor().mV[1]);
 
 				LLRect clip_rect(last_rect);
 				
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index d5ca01931f1..dd29260f701 100755
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -2140,7 +2140,7 @@ void LLViewerWindow::reshape(S32 width, S32 height)
 
 		calcDisplayScale();
 	
-		BOOL display_scale_changed = mDisplayScale != LLUI::sGLScaleFactor;
+		BOOL display_scale_changed = mDisplayScale != LLUI::getScaleFactor();
 		LLUI::setScaleFactor(mDisplayScale);
 
 		// update our window rectangle
@@ -2346,7 +2346,7 @@ void LLViewerWindow::draw()
 		// scale view by UI global scale factor and aspect ratio correction factor
 		gGL.scaleUI(mDisplayScale.mV[VX], mDisplayScale.mV[VY], 1.f);
 
-		LLVector2 old_scale_factor = LLUI::sGLScaleFactor;
+		LLVector2 old_scale_factor = LLUI::getScaleFactor();
 		// apply camera zoom transform (for high res screenshots)
 		F32 zoom_factor = LLViewerCamera::getInstance()->getZoomFactor();
 		S16 sub_region = LLViewerCamera::getInstance()->getZoomSubRegion();
@@ -2360,7 +2360,7 @@ void LLViewerWindow::draw()
 						(F32)getWindowHeightScaled() * -(F32)pos_y, 
 						0.f);
 			gGL.scalef(zoom_factor, zoom_factor, 1.f);
-			LLUI::sGLScaleFactor *= zoom_factor;
+			LLUI::getScaleFactor() *= zoom_factor;
 		}
 
 		// Draw tool specific overlay on world
@@ -2408,7 +2408,7 @@ void LLViewerWindow::draw()
 				LLFontGL::HCENTER, LLFontGL::TOP);
 		}
 
-		LLUI::sGLScaleFactor = old_scale_factor;
+		LLUI::setScaleFactor(old_scale_factor);
 	}
 	LLUI::popMatrix();
 	gGL.popMatrix();
@@ -3208,8 +3208,8 @@ void LLViewerWindow::updateLayout()
 
 void LLViewerWindow::updateMouseDelta()
 {
-	S32 dx = lltrunc((F32) (mCurrentMousePoint.mX - mLastMousePoint.mX) * LLUI::sGLScaleFactor.mV[VX]);
-	S32 dy = lltrunc((F32) (mCurrentMousePoint.mY - mLastMousePoint.mY) * LLUI::sGLScaleFactor.mV[VY]);
+	S32 dx = lltrunc((F32) (mCurrentMousePoint.mX - mLastMousePoint.mX) * LLUI::getScaleFactor().mV[VX]);
+	S32 dy = lltrunc((F32) (mCurrentMousePoint.mY - mLastMousePoint.mY) * LLUI::getScaleFactor().mV[VY]);
 
 	//RN: fix for asynchronous notification of mouse leaving window not working
 	LLCoordWindow mouse_pos;
diff --git a/indra/newview/llwearableitemslist.cpp b/indra/newview/llwearableitemslist.cpp
index c7e92156432..c196d70617d 100755
--- a/indra/newview/llwearableitemslist.cpp
+++ b/indra/newview/llwearableitemslist.cpp
@@ -34,6 +34,7 @@
 #include "llagentwearables.h"
 #include "llappearancemgr.h"
 #include "llinventoryfunctions.h"
+#include "llinventoryicon.h"
 #include "lltransutil.h"
 #include "llviewerattachmenu.h"
 #include "llvoavatarself.h"
diff --git a/indra/newview/llworldmapview.cpp b/indra/newview/llworldmapview.cpp
index a3ccf87cfc9..428be8efb96 100644
--- a/indra/newview/llworldmapview.cpp
+++ b/indra/newview/llworldmapview.cpp
@@ -421,7 +421,7 @@ void LLWorldMapView::draw()
 			{
 				// Inform the fetch mechanism of the size we need
 				S32 draw_size = llround(sMapScale);
-				overlayimage->setKnownDrawSize(llround(draw_size * LLUI::sGLScaleFactor.mV[VX]), llround(draw_size * LLUI::sGLScaleFactor.mV[VY]));
+				overlayimage->setKnownDrawSize(llround(draw_size * LLUI::getScaleFactor().mV[VX]), llround(draw_size * LLUI::getScaleFactor().mV[VY]));
 				// Draw something whenever we have enough info
 				if (overlayimage->hasGLTexture())
 				{
-- 
GitLab


From b77e2eff481512667c35bc99946fb62eca1be169 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Sat, 8 Sep 2012 06:20:19 +0000
Subject: [PATCH 063/436] Fixed #include typo

---
 indra/llappearance/llwearabletype.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/llappearance/llwearabletype.cpp b/indra/llappearance/llwearabletype.cpp
index 3a8e1b8be3f..aa0afe348a7 100644
--- a/indra/llappearance/llwearabletype.cpp
+++ b/indra/llappearance/llwearabletype.cpp
@@ -27,7 +27,7 @@
 #include "linden_common.h"
 #include "llwearabletype.h"
 #include "llinventorytype.h"
-#include "llui/lltrans.h"
+#include "lltrans.h"
 
 struct WearableEntry : public LLDictionaryEntry
 {
-- 
GitLab


From e1580128ab2a42ecd4019ef35069f9e939dc4ff2 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Sun, 9 Sep 2012 12:12:19 +0000
Subject: [PATCH 064/436] Fixed crashes on login.  Moved most of the remaining
 character/skeleton generation code into llappearance.   Moved non-rendering
 related LLViewerJoint functionality into LLAvatarJoint.

---
 indra/llappearance/llavatarappearance.cpp     | 245 ++++++++++--
 indra/llappearance/llavatarappearance.h       |  27 +-
 .../llavatarappearancedefines.cpp             |   4 +-
 .../llappearance/llavatarappearancedefines.h  |  10 +-
 indra/llappearance/llavatarjoint.cpp          | 120 ++++--
 indra/llappearance/llavatarjoint.h            |  24 +-
 indra/llappearance/llavatarjointmesh.cpp      |  10 +
 indra/llappearance/llavatarjointmesh.h        |  12 +-
 indra/llappearance/lljointpickname.h          |   3 +
 indra/llcharacter/llcharacter.h               |   7 -
 indra/llcharacter/lljoint.cpp                 |  30 +-
 indra/llcharacter/lljoint.h                   |   8 +-
 indra/llcharacter/tests/lljoint_test.cpp      |   6 +-
 indra/newview/llfloaterimagepreview.cpp       |   4 +-
 indra/newview/llviewerjoint.cpp               | 356 +-----------------
 indra/newview/llviewerjoint.h                 |  76 +---
 indra/newview/llviewerjointmesh.cpp           |  15 -
 indra/newview/llviewerjointmesh.h             |   7 +-
 indra/newview/llvoavatar.cpp                  | 246 ++++--------
 indra/newview/llvoavatar.h                    |   7 +-
 indra/newview/llvoavatarself.cpp              |  66 ----
 indra/newview/llvoavatarself.h                |   1 -
 22 files changed, 508 insertions(+), 776 deletions(-)

diff --git a/indra/llappearance/llavatarappearance.cpp b/indra/llappearance/llavatarappearance.cpp
index 406e6153e0c..e2dfa2fb74e 100644
--- a/indra/llappearance/llavatarappearance.cpp
+++ b/indra/llappearance/llavatarappearance.cpp
@@ -24,8 +24,13 @@
  * $/LicenseInfo$
  */
 
-#include "linden_common.h"
+#if LL_MSVC
+// disable warning about boost::lexical_cast returning uninitialized data
+// when it fails to parse the string
+#pragma warning (disable:4701)
+#endif
 
+#include "linden_common.h"
 
 #include "llavatarappearance.h"
 #include "llavatarappearancedefines.h"
@@ -36,9 +41,20 @@
 #include "llpolymorph.h"
 #include "llpolymesh.h"
 #include "llpolyskeletaldistortion.h"
+#include "llstl.h"
 #include "lltexglobalcolor.h"
 #include "llwearabledata.h"
 
+
+#if LL_MSVC
+// disable boost::lexical_cast warning
+#pragma warning (disable:4702)
+#endif
+
+#include <boost/lexical_cast.hpp>
+
+using namespace LLAvatarAppearanceDefines;
+
 //-----------------------------------------------------------------------------
 // Constants
 //-----------------------------------------------------------------------------
@@ -153,7 +169,9 @@ LLAvatarAppearance::LLAvatarAppearance(LLWearableData* wearable_data) :
 
 	mWearableData(wearable_data)
 {
-	llassert(mWearableData);
+	LLMemType mt(LLMemType::MTYPE_AVATAR);
+
+	llassert_always(mWearableData);
 	mBakedTextureDatas.resize(LLAvatarAppearanceDefines::BAKED_NUM_INDICES);
 	for (U32 i = 0; i < mBakedTextureDatas.size(); i++ )
 	{
@@ -167,13 +185,85 @@ LLAvatarAppearance::LLAvatarAppearance(LLWearableData* wearable_data) :
 
 	mIsBuilt = FALSE;
 
-	mNumJoints = 0;
-	mSkeleton = NULL;
-
 	mNumCollisionVolumes = 0;
 	mCollisionVolumes = NULL;
+}
+
+// virtual
+void LLAvatarAppearance::initInstance()
+{
+	//-------------------------------------------------------------------------
+	// initialize joint, mesh and shape members
+	//-------------------------------------------------------------------------
+	mRoot = createAvatarJoint();
+	mRoot->setName( "mRoot" );
+
+	for (LLAvatarAppearanceDictionary::MeshEntries::const_iterator iter = LLAvatarAppearanceDictionary::getInstance()->getMeshEntries().begin();
+		 iter != LLAvatarAppearanceDictionary::getInstance()->getMeshEntries().end();
+		 ++iter)
+	{
+		const EMeshIndex mesh_index = iter->first;
+		const LLAvatarAppearanceDictionary::MeshEntry *mesh_dict = iter->second;
+		LLAvatarJoint* joint = createAvatarJoint();
+		joint->setName(mesh_dict->mName);
+		joint->setMeshID(mesh_index);
+		mMeshLOD.push_back(joint);
+		
+		/* mHairLOD.setName("mHairLOD");
+		   mHairMesh0.setName("mHairMesh0");
+		   mHairMesh0.setMeshID(MESH_ID_HAIR);
+		   mHairMesh1.setName("mHairMesh1"); */
+		for (U32 lod = 0; lod < mesh_dict->mLOD; lod++)
+		{
+			LLAvatarJointMesh* mesh = createAvatarJointMesh();
+			std::string mesh_name = "m" + mesh_dict->mName + boost::lexical_cast<std::string>(lod);
+			// We pre-pended an m - need to capitalize first character for camelCase
+			mesh_name[1] = toupper(mesh_name[1]);
+			mesh->setName(mesh_name);
+			mesh->setMeshID(mesh_index);
+			mesh->setPickName(mesh_dict->mPickName);
+			mesh->setIsTransparent(FALSE);
+			switch((int)mesh_index)
+			{
+				case MESH_ID_HAIR:
+					mesh->setIsTransparent(TRUE);
+					break;
+				case MESH_ID_SKIRT:
+					mesh->setIsTransparent(TRUE);
+					break;
+				case MESH_ID_EYEBALL_LEFT:
+				case MESH_ID_EYEBALL_RIGHT:
+					mesh->setSpecular( LLColor4( 1.0f, 1.0f, 1.0f, 1.0f ), 1.f );
+					break;
+			}
+			
+			joint->mMeshParts.push_back(mesh);
+		}
+	}
 
-	mRoot = new LLAvatarJoint();
+	//-------------------------------------------------------------------------
+	// associate baked textures with meshes
+	//-------------------------------------------------------------------------
+	for (LLAvatarAppearanceDictionary::MeshEntries::const_iterator iter = LLAvatarAppearanceDictionary::getInstance()->getMeshEntries().begin();
+		 iter != LLAvatarAppearanceDictionary::getInstance()->getMeshEntries().end();
+		 ++iter)
+	{
+		const EMeshIndex mesh_index = iter->first;
+		const LLAvatarAppearanceDictionary::MeshEntry *mesh_dict = iter->second;
+		const EBakedTextureIndex baked_texture_index = mesh_dict->mBakedID;
+		// Skip it if there's no associated baked texture.
+		if (baked_texture_index == BAKED_NUM_INDICES) continue;
+		
+		for (avatar_joint_mesh_list_t::iterator iter = mMeshLOD[mesh_index]->mMeshParts.begin();
+			 iter != mMeshLOD[mesh_index]->mMeshParts.end(); 
+			 ++iter)
+		{
+			LLAvatarJointMesh* mesh = (*iter);
+			mBakedTextureDatas[(int)baked_texture_index].mJointMeshes.push_back(mesh);
+		}
+	}
+
+	buildCharacter();
 
 }
 
@@ -187,7 +277,7 @@ LLAvatarAppearance::~LLAvatarAppearance()
 	for (U32 i = 0; i < mBakedTextureDatas.size(); i++)
 	{
 		deleteAndClear(mBakedTextureDatas[i].mTexLayerSet);
-		mBakedTextureDatas[i].mMeshes.clear();
+		mBakedTextureDatas[i].mJointMeshes.clear();
 
 		for (morph_list_t::iterator iter2 = mBakedTextureDatas[i].mMaskedMorphs.begin();
 			 iter2 != mBakedTextureDatas[i].mMaskedMorphs.end(); iter2++)
@@ -200,23 +290,21 @@ LLAvatarAppearance::~LLAvatarAppearance()
 	mRoot->removeAllChildren();
 	mJointMap.clear();
 
-	deleteAndClearArray(mSkeleton);
+	clearSkeleton();
 	deleteAndClearArray(mCollisionVolumes);
 
-	mNumJoints = 0;
-
 	deleteAndClear(mTexSkinColor);
 	deleteAndClear(mTexHairColor);
 	deleteAndClear(mTexEyeColor);
 
-	std::for_each(mMeshes.begin(), mMeshes.end(), DeletePairedPointer());
-	mMeshes.clear();
+	std::for_each(mPolyMeshes.begin(), mPolyMeshes.end(), DeletePairedPointer());
+	mPolyMeshes.clear();
 
-	for (std::vector<LLAvatarJoint*>::iterator jointIter = mMeshLOD.begin();
+	for (avatar_joint_list_t::iterator jointIter = mMeshLOD.begin();
 		 jointIter != mMeshLOD.end(); 
 		 ++jointIter)
 	{
-		LLAvatarJoint* joint = (LLAvatarJoint *) *jointIter;
+		LLAvatarJoint* joint = *jointIter;
 		std::for_each(joint->mMeshParts.begin(), joint->mMeshParts.end(), DeletePointer());
 		joint->mMeshParts.clear();
 	}
@@ -504,6 +592,22 @@ BOOL LLAvatarAppearance::setupBone(const LLAvatarBoneInfo* info, LLJoint* parent
 	return TRUE;
 }
 
+//-----------------------------------------------------------------------------
+// allocateCharacterJoints()
+//-----------------------------------------------------------------------------
+BOOL LLAvatarAppearance::allocateCharacterJoints( U32 num )
+{
+	clearSkeleton();
+
+	for(S32 joint_num = 0; joint_num < (S32)num; joint_num++)
+	{
+		mSkeleton.push_back(createAvatarJoint(joint_num));
+	}
+
+	return TRUE;
+}
+
+
 //-----------------------------------------------------------------------------
 // buildSkeleton()
 //-----------------------------------------------------------------------------
@@ -548,6 +652,15 @@ BOOL LLAvatarAppearance::buildSkeleton(const LLAvatarSkeletonInfo *info)
 	return TRUE;
 }
 
+//-----------------------------------------------------------------------------
+// clearSkeleton()
+//-----------------------------------------------------------------------------
+void LLAvatarAppearance::clearSkeleton()
+{
+	std::for_each(mSkeleton.begin(), mSkeleton.end(), DeletePointer());
+	mSkeleton.clear();
+}
+
 //-----------------------------------------------------------------------------
 // LLAvatarAppearance::buildCharacter()
 // Deferred initialization and rebuild of the avatar.
@@ -569,6 +682,21 @@ void LLAvatarAppearance::buildCharacter()
 	mJointMap.clear();
 	mIsBuilt = FALSE;
 
+	//-------------------------------------------------------------------------
+	// clear mesh data
+	//-------------------------------------------------------------------------
+	for (avatar_joint_list_t::iterator jointIter = mMeshLOD.begin();
+		 jointIter != mMeshLOD.end(); ++jointIter)
+	{
+		LLAvatarJoint* joint = *jointIter;
+		for (avatar_joint_mesh_list_t::iterator meshIter = joint->mMeshParts.begin();
+			 meshIter != joint->mMeshParts.end(); ++meshIter)
+		{
+			LLAvatarJointMesh * mesh = *meshIter;
+			mesh->setMesh(NULL);
+		}
+	}
+
 	//-------------------------------------------------------------------------
 	// (re)load our skeleton and meshes
 	//-------------------------------------------------------------------------
@@ -755,7 +883,7 @@ BOOL LLAvatarAppearance::loadAvatar()
 
 	}
 
-	loadLayersets();	
+	loadLayersets();
 	
 	// avatar_lad.xml : <driver_parameters>
 	for (LLAvatarXmlInfo::driver_info_list_t::iterator iter = sAvatarXmlInfo->mDriverInfoList.begin();
@@ -791,7 +919,17 @@ BOOL LLAvatarAppearance::loadAvatar()
 //-----------------------------------------------------------------------------
 BOOL LLAvatarAppearance::loadSkeletonNode ()
 {
-	mRoot->addChild( &mSkeleton[0] );
+	mRoot->addChild( mSkeleton[0] );
+
+	// make meshes children before calling parent version of the function
+	for (avatar_joint_list_t::iterator iter = mMeshLOD.begin();
+		 iter != mMeshLOD.end(); 
+		 ++iter)
+	{
+		LLAvatarJoint *joint = *iter;
+		joint->mUpdateXform = FALSE;
+		joint->setMeshesToChildren();
+	}
 
 	mRoot->addChild(mMeshLOD[MESH_ID_HEAD]);
 	mRoot->addChild(mMeshLOD[MESH_ID_EYELASH]);
@@ -864,8 +1002,8 @@ BOOL LLAvatarAppearance::loadMeshNodes()
 			switch(lod)
 			  case 0:
 				mesh = &mHairMesh0; */
-		for (LLAvatarAppearanceDictionary::Meshes::const_iterator mesh_iter = LLAvatarAppearanceDictionary::getInstance()->getMeshes().begin();
-			 mesh_iter != LLAvatarAppearanceDictionary::getInstance()->getMeshes().end();
+		for (LLAvatarAppearanceDictionary::MeshEntries::const_iterator mesh_iter = LLAvatarAppearanceDictionary::getInstance()->getMeshEntries().begin();
+			 mesh_iter != LLAvatarAppearanceDictionary::getInstance()->getMeshEntries().end();
 			 ++mesh_iter)
 		{
 			const EMeshIndex mesh_index = mesh_iter->first;
@@ -906,8 +1044,8 @@ BOOL LLAvatarAppearance::loadMeshNodes()
 
 		if (!info->mReferenceMeshName.empty())
 		{
-			polymesh_map_t::const_iterator polymesh_iter = mMeshes.find(info->mReferenceMeshName);
-			if (polymesh_iter != mMeshes.end())
+			polymesh_map_t::const_iterator polymesh_iter = mPolyMeshes.find(info->mReferenceMeshName);
+			if (polymesh_iter != mPolyMeshes.end())
 			{
 				poly_mesh = LLPolyMesh::getMesh(info->mMeshFileName, polymesh_iter->second);
 				poly_mesh->setAvatar(this);
@@ -931,7 +1069,7 @@ BOOL LLAvatarAppearance::loadMeshNodes()
 		}
 
 		// Multimap insert
-		mMeshes.insert(std::make_pair(info->mMeshFileName, poly_mesh));
+		mPolyMeshes.insert(std::make_pair(info->mMeshFileName, poly_mesh));
 	
 		mesh->setMesh( poly_mesh );
 		mesh->setLOD( info->mMinPixelArea );
@@ -974,15 +1112,72 @@ BOOL LLAvatarAppearance::loadLayersets()
 		 layerset_iter != sAvatarXmlInfo->mLayerInfoList.end(); 
 		 ++layerset_iter)
 	{
-		// Construct a layerset for each one specified in avatar_lad.xml and initialize it as such.
 		LLTexLayerSetInfo *layerset_info = *layerset_iter;
-		layerset_info->createVisualParams(this);
+		if (isSelf())
+		{
+			// Construct a layerset for each one specified in avatar_lad.xml and initialize it as such.
+			LLTexLayerSet* layer_set = createTexLayerSet();
+			
+			if (!layer_set->setInfo(layerset_info))
+			{
+				stop_glerror();
+				delete layer_set;
+				llwarns << "avatar file: layer_set->setInfo() failed" << llendl;
+				return FALSE;
+			}
+
+			// scan baked textures and associate the layerset with the appropriate one
+			EBakedTextureIndex baked_index = BAKED_NUM_INDICES;
+			for (LLAvatarAppearanceDictionary::BakedTextures::const_iterator baked_iter = LLAvatarAppearanceDictionary::getInstance()->getBakedTextures().begin();
+				 baked_iter != LLAvatarAppearanceDictionary::getInstance()->getBakedTextures().end();
+				 ++baked_iter)
+			{
+				const LLAvatarAppearanceDictionary::BakedEntry *baked_dict = baked_iter->second;
+				if (layer_set->isBodyRegion(baked_dict->mName))
+				{
+					baked_index = baked_iter->first;
+					// ensure both structures are aware of each other
+					mBakedTextureDatas[baked_index].mTexLayerSet = layer_set;
+					layer_set->setBakedTexIndex(baked_index);
+					break;
+				}
+			}
+			// if no baked texture was found, warn and cleanup
+			if (baked_index == BAKED_NUM_INDICES)
+			{
+				llwarns << "<layer_set> has invalid body_region attribute" << llendl;
+				delete layer_set;
+				return FALSE;
+			}
+
+			// scan morph masks and let any affected layers know they have an associated morph
+			for (LLAvatarAppearance::morph_list_t::const_iterator morph_iter = mBakedTextureDatas[baked_index].mMaskedMorphs.begin();
+				morph_iter != mBakedTextureDatas[baked_index].mMaskedMorphs.end();
+				 ++morph_iter)
+			{
+				LLMaskedMorph *morph = *morph_iter;
+				LLTexLayerInterface* layer = layer_set->findLayerByName(morph->mLayer);
+				if (layer)
+				{
+					layer->setHasMorph(TRUE);
+				}
+				else
+				{
+					llwarns << "Could not find layer named " << morph->mLayer << " to set morph flag" << llendl;
+					success = FALSE;
+				}
+			}
+		}
+		else // !isSelf()
+		{
+			// Construct a layerset for each one specified in avatar_lad.xml and initialize it as such.
+			LLTexLayerSetInfo *layerset_info = *layerset_iter;
+			layerset_info->createVisualParams(this);
+		}
 	}
 	return success;
 }
 
-
-
 // virtual
 BOOL LLAvatarAppearance::isValid() const
 {
diff --git a/indra/llappearance/llavatarappearance.h b/indra/llappearance/llavatarappearance.h
index 38a54d904d7..96dd81be778 100644
--- a/indra/llappearance/llavatarappearance.h
+++ b/indra/llappearance/llavatarappearance.h
@@ -28,9 +28,8 @@
 #define LL_AVATAR_APPEARANCE_H
 
 #include "llcharacter.h"
-//#include "llframetimer.h"
 #include "llavatarappearancedefines.h"
-#include "llavatarjoint.h"
+#include "llavatarjointmesh.h"
 #include "lldriverparam.h"
 #include "lltexlayer.h"
 #include "llviewervisualparam.h"
@@ -67,9 +66,10 @@ class LLAvatarAppearance : public LLCharacter
 	virtual ~LLAvatarAppearance();
 
 	static void initClass(); // initializes static members
+	virtual void 		initInstance(); // Called after construction to initialize the instance.
 	virtual BOOL		loadSkeletonNode();
-	virtual BOOL		loadMeshNodes();
-	virtual BOOL		loadLayersets();
+	BOOL				loadMeshNodes();
+	BOOL				loadLayersets();
 
 
 /**                    Initialization
@@ -97,8 +97,13 @@ class LLAvatarAppearance : public LLCharacter
  **                    SKELETON
  **/
 
+protected:
+	virtual LLAvatarJoint*	createAvatarJoint() = 0;
+	virtual LLAvatarJoint*	createAvatarJoint(S32 joint_num) = 0;
+	virtual LLAvatarJointMesh*	createAvatarJointMesh() = 0;
 public:
 	F32					getPelvisToFoot() const { return mPelvisToFoot; }
+	/*virtual*/ LLJoint*	getRootJoint() { return mRoot; }
 
 	LLVector3			mHeadOffset; // current head position
 	LLAvatarJoint		*mRoot;
@@ -114,11 +119,13 @@ class LLAvatarAppearance : public LLCharacter
 	void 				computeBodySize();
 
 	BOOL				setupBone(const LLAvatarBoneInfo* info, LLJoint* parent, S32 &current_volume_num, S32 &current_joint_num);
+	BOOL				allocateCharacterJoints(U32 num);
 	BOOL				buildSkeleton(const LLAvatarSkeletonInfo *info);
 protected:
+	void				clearSkeleton();
 	BOOL				mIsBuilt; // state of deferred character building
-	S32					mNumJoints;
-	LLJoint*			mSkeleton;
+	typedef std::vector<LLAvatarJoint*> avatar_joint_list_t;
+	avatar_joint_list_t	mSkeleton;
 	
 	//--------------------------------------------------------------------
 	// Pelvis height adjustment members.
@@ -204,8 +211,8 @@ class LLAvatarAppearance : public LLCharacter
 
 protected:
 	typedef std::multimap<std::string, LLPolyMesh*> polymesh_map_t;
-	polymesh_map_t 									mMeshes;
-	std::vector<LLAvatarJoint *> 					mMeshLOD;
+	polymesh_map_t 									mPolyMeshes;
+	avatar_joint_list_t								mMeshLOD;
 
 /**                    Meshes
  **                                                                            **
@@ -262,6 +269,8 @@ class LLAvatarAppearance : public LLCharacter
  **                                                                            **
  **                    BAKED TEXTURES
  **/
+protected:
+	virtual LLTexLayerSet*	createTexLayerSet() = 0;
 protected:
 	struct LLMaskedMorph;
 	typedef std::deque<LLMaskedMorph *> 	morph_list_t;
@@ -274,7 +283,7 @@ class LLAvatarAppearance : public LLCharacter
 		LLAvatarAppearanceDefines::ETextureIndex 	mTextureIndex;
 		U32									mMaskTexName;
 		// Stores pointers to the joint meshes that this baked texture deals with
-		std::vector< LLJoint* > 	mMeshes;  // std::vector<LLViewerJointMesh> mJoints[i]->mMeshParts
+		avatar_joint_mesh_list_t			mJointMeshes;
 		morph_list_t						mMaskedMorphs;
 	};
 	typedef std::vector<BakedTextureData> 	bakedtexturedata_vec_t;
diff --git a/indra/llappearance/llavatarappearancedefines.cpp b/indra/llappearance/llavatarappearancedefines.cpp
index 2c3cf781c18..0416309fc76 100644
--- a/indra/llappearance/llavatarappearancedefines.cpp
+++ b/indra/llappearance/llavatarappearancedefines.cpp
@@ -109,9 +109,9 @@ LLAvatarAppearanceDictionary::BakedTextures::BakedTextures()
 											  2, LLWearableType::WT_HAIR, LLWearableType::WT_ALPHA));
 }
 
-LLAvatarAppearanceDictionary::Meshes::Meshes()
+LLAvatarAppearanceDictionary::MeshEntries::MeshEntries()
 {
-	// Meshes
+	// MeshEntries
 	addEntry(MESH_ID_HAIR,             new MeshEntry(BAKED_HAIR,  "hairMesh",         6, PN_4));
 	addEntry(MESH_ID_HEAD,             new MeshEntry(BAKED_HEAD,  "headMesh",         5, PN_5));
 	addEntry(MESH_ID_EYELASH,          new MeshEntry(BAKED_HEAD,  "eyelashMesh",      1, PN_0)); // no baked mesh associated currently
diff --git a/indra/llappearance/llavatarappearancedefines.h b/indra/llappearance/llavatarappearancedefines.h
index c5285ddc023..e7c94104cc5 100644
--- a/indra/llappearance/llavatarappearancedefines.h
+++ b/indra/llappearance/llavatarappearancedefines.h
@@ -174,12 +174,12 @@ class LLAvatarAppearanceDictionary : public LLSingleton<LLAvatarAppearanceDictio
 		const LLJointPickName 	mPickName;
 	};
 
-	struct Meshes : public LLDictionary<EMeshIndex, MeshEntry>
+	struct MeshEntries : public LLDictionary<EMeshIndex, MeshEntry>
 	{
-		Meshes();
-	} mMeshes;
-	const MeshEntry*		getMesh(EMeshIndex index) const { return mMeshes.lookup(index); }
-	const Meshes&			getMeshes() const { return mMeshes; }
+		MeshEntries();
+	} mMeshEntries;
+	const MeshEntry*		getMeshEntry(EMeshIndex index) const { return mMeshEntries.lookup(index); }
+	const MeshEntries&		getMeshEntries() const { return mMeshEntries; }
 
 	//--------------------------------------------------------------------
 	// Baked Textures
diff --git a/indra/llappearance/llavatarjoint.cpp b/indra/llappearance/llavatarjoint.cpp
index 809a261633f..eb450485c73 100644
--- a/indra/llappearance/llavatarjoint.cpp
+++ b/indra/llappearance/llavatarjoint.cpp
@@ -33,13 +33,9 @@
 #include "llrender.h"
 #include "llmath.h"
 #include "llglheaders.h"
-#include "llrendersphere.h"
 #include "llavatarappearance.h"
-//#include "pipeline.h"
 
-#define DEFAULT_LOD 0.0f
-
-const S32 MIN_PIXEL_AREA_3PASS_HAIR = 64*64;
+const F32 DEFAULT_AVATAR_JOINT_LOD = 0.0f;
 
 //-----------------------------------------------------------------------------
 // Static Data
@@ -48,21 +44,22 @@ BOOL					LLAvatarJoint::sDisableLOD = FALSE;
 
 //-----------------------------------------------------------------------------
 // LLAvatarJoint()
-// Class Constructor
+// Class Constructors
 //-----------------------------------------------------------------------------
-LLAvatarJoint::LLAvatarJoint()
-	:       LLJoint()
+LLAvatarJoint::LLAvatarJoint() :
+	LLJoint()
 {
 	init();
 }
 
+LLAvatarJoint::LLAvatarJoint(const std::string &name, LLJoint *parent) :
+	LLJoint(name, parent)
+{
+	init();
+}
 
-//-----------------------------------------------------------------------------
-// LLAvatarJoint()
-// Class Constructor
-//-----------------------------------------------------------------------------
-LLAvatarJoint::LLAvatarJoint(const std::string &name, LLJoint *parent)
-	:	LLJoint(name, parent)
+LLAvatarJoint::LLAvatarJoint(S32 joint_num) :
+	LLJoint(joint_num)
 {
 	init();
 }
@@ -72,7 +69,7 @@ void LLAvatarJoint::init()
 {
 	mValid = FALSE;
 	mComponents = SC_JOINT | SC_BONE | SC_AXES;
-	mMinPixelArea = DEFAULT_LOD;
+	mMinPixelArea = DEFAULT_AVATAR_JOINT_LOD;
 	mPickName = PN_DEFAULT;
 	mVisible = TRUE;
 	mMeshID = 0;
@@ -113,14 +110,6 @@ void LLAvatarJoint::setValid( BOOL valid, BOOL recursive )
 
 }
 
-//--------------------------------------------------------------------
-// isTransparent()
-//--------------------------------------------------------------------
-BOOL LLAvatarJoint::isTransparent()
-{
-	return FALSE;
-}
-
 //--------------------------------------------------------------------
 // setSkeletonComponents()
 //--------------------------------------------------------------------
@@ -132,7 +121,7 @@ void LLAvatarJoint::setSkeletonComponents( U32 comp, BOOL recursive )
 		for (child_list_t::iterator iter = mChildren.begin();
 			 iter != mChildren.end(); ++iter)
 		{
-			LLAvatarJoint* joint = (LLAvatarJoint*)(*iter);
+			LLAvatarJoint* joint = dynamic_cast<LLAvatarJoint*>(*iter);
 			joint->setSkeletonComponents(comp, recursive);
 		}
 	}
@@ -153,14 +142,87 @@ void LLAvatarJoint::setVisible(BOOL visible, BOOL recursive)
 	}
 }
 
+void LLAvatarJoint::updateFaceSizes(U32 &num_vertices, U32& num_indices, F32 pixel_area)
+{
+	for (child_list_t::iterator iter = mChildren.begin();
+		 iter != mChildren.end(); ++iter)
+	{
+		LLAvatarJoint* joint = dynamic_cast<LLAvatarJoint*>(*iter);
+		joint->updateFaceSizes(num_vertices, num_indices, pixel_area);
+	}
+}
+
+void LLAvatarJoint::updateFaceData(LLFace *face, F32 pixel_area, BOOL damp_wind, bool terse_update)
+{
+	for (child_list_t::iterator iter = mChildren.begin();
+		 iter != mChildren.end(); ++iter)
+	{
+		LLAvatarJoint* joint = dynamic_cast<LLAvatarJoint*>(*iter);
+		joint->updateFaceData(face, pixel_area, damp_wind, terse_update);
+	}
+}
+
+void LLAvatarJoint::updateJointGeometry()
+{
+	for (child_list_t::iterator iter = mChildren.begin();
+		 iter != mChildren.end(); ++iter)
+	{
+		LLAvatarJoint* joint = dynamic_cast<LLAvatarJoint*>(*iter);
+		joint->updateJointGeometry();
+	}
+}
+
+
+BOOL LLAvatarJoint::updateLOD(F32 pixel_area, BOOL activate)
+{
+	BOOL lod_changed = FALSE;
+	BOOL found_lod = FALSE;
+
+	for (child_list_t::iterator iter = mChildren.begin();
+		 iter != mChildren.end(); ++iter)
+	{
+		LLAvatarJoint* joint = dynamic_cast<LLAvatarJoint*>(*iter);
+		F32 jointLOD = joint->getLOD();
+		
+		if (found_lod || jointLOD == DEFAULT_AVATAR_JOINT_LOD)
+		{
+			// we've already found a joint to enable, so enable the rest as alternatives
+			lod_changed |= joint->updateLOD(pixel_area, TRUE);
+		}
+		else
+		{
+			if (pixel_area >= jointLOD || sDisableLOD)
+			{
+				lod_changed |= joint->updateLOD(pixel_area, TRUE);
+				found_lod = TRUE;
+			}
+			else
+			{
+				lod_changed |= joint->updateLOD(pixel_area, FALSE);
+			}
+		}
+	}
+	return lod_changed;
+}
+
+void LLAvatarJoint::dump()
+{
+	for (child_list_t::iterator iter = mChildren.begin();
+		 iter != mChildren.end(); ++iter)
+	{
+		LLAvatarJoint* joint = dynamic_cast<LLAvatarJoint*>(*iter);
+		joint->dump();
+	}
+}
+
 
 void LLAvatarJoint::setMeshesToChildren()
 {
 	removeAllChildren();
-	for (std::vector<LLAvatarJointMesh*>::iterator iter = mMeshParts.begin();
+	for (avatar_joint_mesh_list_t::iterator iter = mMeshParts.begin();
 		iter != mMeshParts.end(); iter++)
 	{
-		addChild((LLAvatarJoint*) *iter);
+		addChild((*iter));
 	}
 }
 //-----------------------------------------------------------------------------
@@ -172,9 +234,11 @@ LLAvatarJointCollisionVolume::LLAvatarJointCollisionVolume()
 	mUpdateXform = FALSE;
 }
 
-LLAvatarJointCollisionVolume::LLAvatarJointCollisionVolume(const std::string &name, LLJoint *parent) : LLAvatarJoint(name, parent)
+/*virtual*/
+U32 LLAvatarJointCollisionVolume::render( F32 pixelArea, BOOL first_pass, BOOL is_dummy )
 {
-	
+	llerrs << "Cannot call render() on LLAvatarJointCollisionVolume" << llendl;
+	return 0;
 }
 
 LLVector3 LLAvatarJointCollisionVolume::getVolumePos(LLVector3 &offset)
diff --git a/indra/llappearance/llavatarjoint.h b/indra/llappearance/llavatarjoint.h
index cbfc1b73eac..1dfbd374564 100644
--- a/indra/llappearance/llavatarjoint.h
+++ b/indra/llappearance/llavatarjoint.h
@@ -36,6 +36,8 @@
 class LLFace;
 class LLAvatarJointMesh;
 
+extern const F32 DEFAULT_AVATAR_JOINT_LOD;
+
 //-----------------------------------------------------------------------------
 // class LLViewerJoint
 //-----------------------------------------------------------------------------
@@ -44,6 +46,8 @@ class LLAvatarJoint :
 {
 public:
 	LLAvatarJoint();
+	LLAvatarJoint(S32 joint_num);
+	// *TODO: Only used for LLVOAvatarSelf::mScreenp.  *DOES NOT INITIALIZE mResetAfterRestoreOldXform*
 	LLAvatarJoint(const std::string &name, LLJoint *parent = NULL);
 	virtual ~LLAvatarJoint();
 
@@ -55,12 +59,11 @@ class LLAvatarJoint :
 
 	// Returns true if this object is transparent.
 	// This is used to determine in which order to draw objects.
-	virtual BOOL isTransparent();
+	virtual BOOL isTransparent() { return FALSE; }
 
 	// Returns true if this object should inherit scale modifiers from its immediate parent
 	virtual BOOL inheritScale() { return FALSE; }
 
-
 	enum Components
 	{
 		SC_BONE		= 1,
@@ -83,7 +86,7 @@ class LLAvatarJoint :
 	// of this node under the same parent will be.
 	F32 getLOD() { return mMinPixelArea; }
 	void setLOD( F32 pixelArea ) { mMinPixelArea = pixelArea; }
-	
+
 	void setPickName(LLJointPickName name) { mPickName = name; }
 	LLJointPickName getPickName() { return mPickName; }
 
@@ -92,9 +95,18 @@ class LLAvatarJoint :
 	// Takes meshes in mMeshParts and sets each one as a child joint
 	void setMeshesToChildren();
 
+	// LLViewerJoint interface
+	virtual U32 render( F32 pixelArea, BOOL first_pass = TRUE, BOOL is_dummy = FALSE ) = 0;
+	virtual void updateFaceSizes(U32 &num_vertices, U32& num_indices, F32 pixel_area);
+	virtual void updateFaceData(LLFace *face, F32 pixel_area, BOOL damp_wind = FALSE, bool terse_update = false);
+	virtual BOOL updateLOD(F32 pixel_area, BOOL activate);
+	virtual void updateJointGeometry();
+	virtual void dump();
+	
+
 public:
 	static BOOL	sDisableLOD;
-	std::vector<LLAvatarJointMesh*> mMeshParts; //LLViewerJointMesh*
+	avatar_joint_mesh_list_t mMeshParts; //LLViewerJointMesh*
 	void setMeshID( S32 id ) {mMeshID = id;}
 
 protected:
@@ -112,10 +124,10 @@ class LLAvatarJointCollisionVolume : public LLAvatarJoint
 {
 public:
 	LLAvatarJointCollisionVolume();
-	LLAvatarJointCollisionVolume(const std::string &name, LLJoint *parent = NULL);
 	virtual ~LLAvatarJointCollisionVolume() {};
 
-	virtual BOOL inheritScale() { return TRUE; }
+	/*virtual*/ BOOL inheritScale() { return TRUE; }
+	/*virtual*/ U32 render( F32 pixelArea, BOOL first_pass = TRUE, BOOL is_dummy = FALSE );
 
 	void renderCollision();
 
diff --git a/indra/llappearance/llavatarjointmesh.cpp b/indra/llappearance/llavatarjointmesh.cpp
index 92c213126a6..d39587defea 100755
--- a/indra/llappearance/llavatarjointmesh.cpp
+++ b/indra/llappearance/llavatarjointmesh.cpp
@@ -233,6 +233,12 @@ void LLAvatarJointMesh::setTexture( LLGLTexture *texture )
 	}
 }
 
+
+BOOL LLAvatarJointMesh::hasGLTexture() const
+{
+	return mTexture.notNull() && mTexture->hasGLTexture();
+}
+
 //--------------------------------------------------------------------
 // LLAvatarJointMesh::setLayerSet()
 // Sets the shape texture (takes precedence over normal texture)
@@ -248,6 +254,10 @@ void LLAvatarJointMesh::setLayerSet( LLTexLayerSet* layer_set )
 	}
 }
 
+BOOL LLAvatarJointMesh::hasComposite() const
+{
+	return (mLayerSet && mLayerSet->hasComposite());
+}
 
 
 //--------------------------------------------------------------------
diff --git a/indra/llappearance/llavatarjointmesh.h b/indra/llappearance/llavatarjointmesh.h
index dcd202bdafb..4b56a168ac1 100755
--- a/indra/llappearance/llavatarjointmesh.h
+++ b/indra/llappearance/llavatarjointmesh.h
@@ -59,9 +59,8 @@ class LLSkinJoint
 //-----------------------------------------------------------------------------
 // class LLViewerJointMesh
 //-----------------------------------------------------------------------------
-class LLAvatarJointMesh : public LLAvatarJoint
+class LLAvatarJointMesh : public virtual LLAvatarJoint
 {
-	friend class LLAvatarAppearance;
 protected:
 	LLColor4					mColor;			// color value
 // 	LLColor4					mSpecular;		// specular color (always white for now)
@@ -94,6 +93,9 @@ class LLAvatarJointMesh : public LLAvatarJoint
 	// Destructor
 	virtual ~LLAvatarJointMesh();
 
+	// overloaded from base class
+	/*virtual*/ BOOL isTransparent() { return mIsTransparent; }
+
 	// Gets the shape color
 	void getColor( F32 *red, F32 *green, F32 *blue, F32 *alpha );
 
@@ -106,11 +108,15 @@ class LLAvatarJointMesh : public LLAvatarJoint
 	// Sets the shape texture
 	void setTexture( LLGLTexture *texture );
 
+	BOOL hasGLTexture() const;
+
 	void setTestTexture( U32 name ) { mTestImageName = name; }
 
 	// Sets layer set responsible for a dynamic shape texture (takes precedence over normal texture)
 	void setLayerSet( LLTexLayerSet* layer_set );
 
+	BOOL hasComposite() const;
+
 	// Gets the poly mesh
 	LLPolyMesh *getMesh();
 
@@ -129,6 +135,8 @@ class LLAvatarJointMesh : public LLAvatarJoint
 	// Gets ID for picking
 	S32 getMeshID() { return mMeshID; }	
 
+	void setIsTransparent(BOOL is_transparent) { mIsTransparent = is_transparent; }
+
 private:
 	// Allocate skin data
 	BOOL allocateSkinData( U32 numSkinJoints );
diff --git a/indra/llappearance/lljointpickname.h b/indra/llappearance/lljointpickname.h
index 17181520e3e..1d41a761fc3 100644
--- a/indra/llappearance/lljointpickname.h
+++ b/indra/llappearance/lljointpickname.h
@@ -28,6 +28,7 @@
 #ifndef LL_LLJOINTPICKNAME_H
 #define LL_LLJOINTPICKNAME_H
 
+class LLAvatarJointMesh;
 
 // Sets the OpenGL selection stack name that is pushed and popped
 // with this joint state.  The default value indicates that no name
@@ -43,4 +44,6 @@ enum LLJointPickName
 	PN_5 = 5
 };
 
+typedef std::vector<LLAvatarJointMesh*> avatar_joint_mesh_list_t;
+
 #endif // LL_LLJOINTPICKNAME_H
diff --git a/indra/llcharacter/llcharacter.h b/indra/llcharacter/llcharacter.h
index 2f2b2405b65..5740dbce772 100644
--- a/indra/llcharacter/llcharacter.h
+++ b/indra/llcharacter/llcharacter.h
@@ -93,13 +93,6 @@ class LLCharacter
 	// get the height & normal of the ground under a point
 	virtual void getGround(const LLVector3 &inPos, LLVector3 &outPos, LLVector3 &outNorm) = 0;
 
-	// allocate an array of joints for the character skeleton
-	// this must be overloaded to support joint subclasses,
-	// and is called implicitly from buildSkeleton().
-	// Note this must handle reallocation as it will be called
-	// each time buildSkeleton() is called.
-	virtual BOOL allocateCharacterJoints( U32 num ) = 0;
-
 	// skeleton joint accessor to support joint subclasses
 	virtual LLJoint *getCharacterJoint( U32 i ) = 0;
 
diff --git a/indra/llcharacter/lljoint.cpp b/indra/llcharacter/lljoint.cpp
index 19907933cb4..09a7c11a22d 100644
--- a/indra/llcharacter/lljoint.cpp
+++ b/indra/llcharacter/lljoint.cpp
@@ -40,7 +40,9 @@ S32 LLJoint::sNumTouches = 0;
 // LLJoint()
 // Class Constructor
 //-----------------------------------------------------------------------------
-LLJoint::LLJoint()
+
+
+void LLJoint::init()
 {
 	mName = "unnamed";
 	mParent = NULL;
@@ -48,7 +50,20 @@ LLJoint::LLJoint()
 	mXform.setScale(LLVector3(1.0f, 1.0f, 1.0f));
 	mDirtyFlags = MATRIX_DIRTY | ROTATION_DIRTY | POSITION_DIRTY;
 	mUpdateXform = TRUE;
-	mJointNum = -1;
+}
+
+LLJoint::LLJoint() :
+	mJointNum(-1)
+{
+	init();
+	touch();
+	mResetAfterRestoreOldXform = false;
+}
+
+LLJoint::LLJoint(S32 joint_num) :
+	mJointNum(joint_num)
+{
+	init();
 	touch();
 	mResetAfterRestoreOldXform = false;
 }
@@ -58,15 +73,12 @@ LLJoint::LLJoint()
 // LLJoint()
 // Class Constructor
 //-----------------------------------------------------------------------------
-LLJoint::LLJoint(const std::string &name, LLJoint *parent)
+LLJoint::LLJoint(const std::string &name, LLJoint *parent) :
+	mJointNum(0)
 {
-	mName = "unnamed";
-	mParent = NULL;
-	mXform.setScaleChildOffset(TRUE);
-	mXform.setScale(LLVector3(1.0f, 1.0f, 1.0f));
-	mDirtyFlags = MATRIX_DIRTY | ROTATION_DIRTY | POSITION_DIRTY;
+	init();
 	mUpdateXform = FALSE;
-	mJointNum = 0;
+	// *TODO: mResetAfterRestoreOldXform is not initialized!!!
 
 	setName(name);
 	if (parent)
diff --git a/indra/llcharacter/lljoint.h b/indra/llcharacter/lljoint.h
index dc3c58cf645..2b1e2005c62 100644
--- a/indra/llcharacter/lljoint.h
+++ b/indra/llcharacter/lljoint.h
@@ -105,10 +105,15 @@ class LLJoint
 
 public:
 	LLJoint();
+	LLJoint(S32 joint_num);
+	// *TODO: Only used for LLVOAvatarSelf::mScreenp.  *DOES NOT INITIALIZE mResetAfterRestoreOldXform*
 	LLJoint( const std::string &name, LLJoint *parent=NULL );
-
 	virtual ~LLJoint();
 
+private:
+	void init();
+
+public:
 	// set name and parent
 	void setup( const std::string &name, LLJoint *parent=NULL );
 
@@ -178,7 +183,6 @@ class LLJoint
 	virtual BOOL isAnimatable() const { return TRUE; }
 
 	S32 getJointNum() const { return mJointNum; }
-	void setJointNum(S32 joint_num) { mJointNum = joint_num; }
 	
 	void restoreOldXform( void );
 	void restoreToDefaultXform( void );
diff --git a/indra/llcharacter/tests/lljoint_test.cpp b/indra/llcharacter/tests/lljoint_test.cpp
index e92aa832d66..da151808f21 100644
--- a/indra/llcharacter/tests/lljoint_test.cpp
+++ b/indra/llcharacter/tests/lljoint_test.cpp
@@ -150,11 +150,11 @@ namespace tut
 	template<> template<>
 	void lljoint_object::test<11>()
 	{
-		LLJoint lljoint("parent");
 		S32 joint_num = 12;
-		lljoint.setJointNum(joint_num);
+		LLJoint lljoint(joint_num);
+		lljoint.setName("parent");
 		S32 jointNum = 	lljoint.getJointNum();
-		ensure("setJointNum()/getJointNum failed ", (jointNum == joint_num));
+		ensure("getJointNum failed ", (jointNum == joint_num));
 	}
 
 	template<> template<>
diff --git a/indra/newview/llfloaterimagepreview.cpp b/indra/newview/llfloaterimagepreview.cpp
index 887cd2f4b0d..3b472a28625 100644
--- a/indra/newview/llfloaterimagepreview.cpp
+++ b/indra/newview/llfloaterimagepreview.cpp
@@ -614,7 +614,7 @@ void LLImagePreviewAvatar::setPreviewTarget(const std::string& joint_name, const
 	}
 	mDummyAvatar->mRoot->setVisible(FALSE, TRUE);
 
-	mTargetMesh = (LLViewerJointMesh*)mDummyAvatar->mRoot->findJoint(mesh_name);
+	mTargetMesh = dynamic_cast<LLViewerJointMesh*>(mDummyAvatar->mRoot->findJoint(mesh_name));
 	mTargetMesh->setTestTexture(mTextureName);
 	mTargetMesh->setVisible(TRUE, FALSE);
 	mCameraDistance = distance;
@@ -631,7 +631,7 @@ void LLImagePreviewAvatar::clearPreviewTexture(const std::string& mesh_name)
 {
 	if (mDummyAvatar)
 	{
-		LLViewerJointMesh *mesh = (LLViewerJointMesh*)mDummyAvatar->mRoot->findJoint(mesh_name);
+		LLViewerJointMesh *mesh = dynamic_cast<LLViewerJointMesh*>(mDummyAvatar->mRoot->findJoint(mesh_name));
 		// clear out existing test mesh
 		if (mesh)
 		{
diff --git a/indra/newview/llviewerjoint.cpp b/indra/newview/llviewerjoint.cpp
index bb45cf89fc3..e46299f9d2d 100644
--- a/indra/newview/llviewerjoint.cpp
+++ b/indra/newview/llviewerjoint.cpp
@@ -35,50 +35,26 @@
 #include "llrender.h"
 #include "llmath.h"
 #include "llglheaders.h"
-#include "llrendersphere.h"
 #include "llvoavatar.h"
 #include "pipeline.h"
 
-#define DEFAULT_LOD 0.0f
-
-const S32 MIN_PIXEL_AREA_3PASS_HAIR = 64*64;
-
-//-----------------------------------------------------------------------------
-// Static Data
-//-----------------------------------------------------------------------------
-BOOL					LLViewerJoint::sDisableLOD = FALSE;
+static const S32 MIN_PIXEL_AREA_3PASS_HAIR = 64*64;
 
 //-----------------------------------------------------------------------------
 // LLViewerJoint()
-// Class Constructor
+// Class Constructors
 //-----------------------------------------------------------------------------
-LLViewerJoint::LLViewerJoint()
-	:       LLAvatarJoint()
-{
-	init();
-}
+LLViewerJoint::LLViewerJoint() :
+	LLAvatarJoint()
+{ }
 
+LLViewerJoint::LLViewerJoint(const std::string &name, LLJoint *parent) :
+	LLAvatarJoint(name, parent)
+{ }
 
-//-----------------------------------------------------------------------------
-// LLViewerJoint()
-// Class Constructor
-//-----------------------------------------------------------------------------
-LLViewerJoint::LLViewerJoint(const std::string &name, LLJoint *parent)
-	:	LLAvatarJoint(name, parent)
-{
-	init();
-}
-
-
-void LLViewerJoint::init()
-{
-	mValid = FALSE;
-	mComponents = SC_JOINT | SC_BONE | SC_AXES;
-	mMinPixelArea = DEFAULT_LOD;
-	mPickName = PN_DEFAULT;
-	mVisible = TRUE;
-	mMeshID = 0;
-}
+LLViewerJoint::LLViewerJoint(S32 joint_num) :
+	LLAvatarJoint(joint_num)
+{ }
 
 
 //-----------------------------------------------------------------------------
@@ -89,129 +65,6 @@ LLViewerJoint::~LLViewerJoint()
 {
 }
 
-
-//--------------------------------------------------------------------
-// renderSkeleton()
-// DEBUG (UNUSED)
-//--------------------------------------------------------------------
-// void LLViewerJoint::renderSkeleton(BOOL recursive)
-// {
-// 	F32 nc = 0.57735f;
-
-// 	//----------------------------------------------------------------
-// 	// push matrix stack
-// 	//----------------------------------------------------------------
-// 	gGL.pushMatrix();
-
-// 	//----------------------------------------------------------------
-// 	// render the bone to my parent
-// 	//----------------------------------------------------------------
-// 	if (mComponents & SC_BONE)
-// 	{
-// 		drawBone();
-// 	}
-
-// 	//----------------------------------------------------------------
-// 	// offset to joint position and 
-// 	// rotate to our orientation
-// 	//----------------------------------------------------------------
-// 	gGL.loadIdentity();
-// 	gGL.multMatrix( &getWorldMatrix().mMatrix[0][0] );
-
-// 	//----------------------------------------------------------------
-// 	// render joint axes
-// 	//----------------------------------------------------------------
-// 	if (mComponents & SC_AXES)
-// 	{
-// 		gGL.begin(LLRender::LINES);
-// 		gGL.color3f( 1.0f, 0.0f, 0.0f );
-// 		gGL.vertex3f( 0.0f,            0.0f, 0.0f );
-// 		gGL.vertex3f( 0.1f, 0.0f, 0.0f );
-
-// 		gGL.color3f( 0.0f, 1.0f, 0.0f );
-// 		gGL.vertex3f( 0.0f, 0.0f,            0.0f );
-// 		gGL.vertex3f( 0.0f, 0.1f, 0.0f );
-
-// 		gGL.color3f( 0.0f, 0.0f, 1.0f );
-// 		gGL.vertex3f( 0.0f, 0.0f, 0.0f );
-// 		gGL.vertex3f( 0.0f, 0.0f, 0.1f );
-// 		gGL.end();
-// 	}
-
-// 	//----------------------------------------------------------------
-// 	// render the joint graphic
-// 	//----------------------------------------------------------------
-// 	if (mComponents & SC_JOINT)
-// 	{
-// 		gGL.color3f( 1.0f, 1.0f, 0.0f );
-
-// 		gGL.begin(LLRender::TRIANGLES);
-
-// 		// joint top half
-// 		glNormal3f(nc, nc, nc);
-// 		gGL.vertex3f(0.0f,             0.0f, 0.05f);
-// 		gGL.vertex3f(0.05f,       0.0f,       0.0f);
-// 		gGL.vertex3f(0.0f,       0.05f,       0.0f);
-
-// 		glNormal3f(-nc, nc, nc);
-// 		gGL.vertex3f(0.0f,             0.0f, 0.05f);
-// 		gGL.vertex3f(0.0f,       0.05f,       0.0f);
-// 		gGL.vertex3f(-0.05f,      0.0f,       0.0f);
-		
-// 		glNormal3f(-nc, -nc, nc);
-// 		gGL.vertex3f(0.0f,             0.0f, 0.05f);
-// 		gGL.vertex3f(-0.05f,      0.0f,      0.0f);
-// 		gGL.vertex3f(0.0f,      -0.05f,      0.0f);
-
-// 		glNormal3f(nc, -nc, nc);
-// 		gGL.vertex3f(0.0f,              0.0f, 0.05f);
-// 		gGL.vertex3f(0.0f,       -0.05f,       0.0f);
-// 		gGL.vertex3f(0.05f,        0.0f,       0.0f);
-		
-// 		// joint bottom half
-// 		glNormal3f(nc, nc, -nc);
-// 		gGL.vertex3f(0.0f,             0.0f, -0.05f);
-// 		gGL.vertex3f(0.0f,       0.05f,        0.0f);
-// 		gGL.vertex3f(0.05f,       0.0f,        0.0f);
-
-// 		glNormal3f(-nc, nc, -nc);
-// 		gGL.vertex3f(0.0f,             0.0f, -0.05f);
-// 		gGL.vertex3f(-0.05f,      0.0f,        0.0f);
-// 		gGL.vertex3f(0.0f,       0.05f,        0.0f);
-		
-// 		glNormal3f(-nc, -nc, -nc);
-// 		gGL.vertex3f(0.0f,              0.0f, -0.05f);
-// 		gGL.vertex3f(0.0f,       -0.05f,        0.0f);
-// 		gGL.vertex3f(-0.05f,       0.0f,        0.0f);
-
-// 		glNormal3f(nc, -nc, -nc);
-// 		gGL.vertex3f(0.0f,             0.0f,  -0.05f);
-// 		gGL.vertex3f(0.05f,       0.0f,         0.0f);
-// 		gGL.vertex3f(0.0f,      -0.05f,         0.0f);
-		
-// 		gGL.end();
-// 	}
-
-// 	//----------------------------------------------------------------
-// 	// render children
-// 	//----------------------------------------------------------------
-// 	if (recursive)
-// 	{
-// 		for (child_list_t::iterator iter = mChildren.begin();
-// 			 iter != mChildren.end(); ++iter)
-// 		{
-// 			LLViewerJoint* joint = (LLViewerJoint*)(*iter);
-// 			joint->renderSkeleton();
-// 		}
-// 	}
-
-// 	//----------------------------------------------------------------
-// 	// pop matrix stack
-// 	//----------------------------------------------------------------
-// 	gGL.popMatrix();
-// }
-
-
 //--------------------------------------------------------------------
 // render()
 //--------------------------------------------------------------------
@@ -292,13 +145,13 @@ U32 LLViewerJoint::render( F32 pixelArea, BOOL first_pass, BOOL is_dummy )
 	for (child_list_t::iterator iter = mChildren.begin();
 		 iter != mChildren.end(); ++iter)
 	{
-		LLViewerJoint* joint = (LLViewerJoint*)(*iter);
+		LLAvatarJoint* joint = dynamic_cast<LLAvatarJoint*>(*iter);
 		F32 jointLOD = joint->getLOD();
 		if (pixelArea >= jointLOD || sDisableLOD)
 		{
 			triangle_count += joint->render( pixelArea, TRUE, is_dummy );
 
-			if (jointLOD != DEFAULT_LOD)
+			if (jointLOD != DEFAULT_AVATAR_JOINT_LOD)
 			{
 				break;
 			}
@@ -308,72 +161,6 @@ U32 LLViewerJoint::render( F32 pixelArea, BOOL first_pass, BOOL is_dummy )
 	return triangle_count;
 }
 
-
-//--------------------------------------------------------------------
-// drawBone()
-// DEBUG (UNUSED)
-//--------------------------------------------------------------------
-// void LLViewerJoint::drawBone()
-// {
-// 	if ( mParent == NULL )
-// 		return;
-
-// 	F32 boneSize = 0.02f;
-
-// 	// rotate to point to child (bone direction)
-// 	gGL.pushMatrix();
-
-// 	LLVector3 boneX = getPosition();
-// 	F32 length = boneX.normVec();
-
-// 	LLVector3 boneZ(1.0f, 0.0f, 1.0f);
-	
-// 	LLVector3 boneY = boneZ % boneX;
-// 	boneY.normVec();
-
-// 	boneZ = boneX % boneY;
-
-// 	LLMatrix4 rotateMat;
-// 	rotateMat.setFwdRow( boneX );
-// 	rotateMat.setLeftRow( boneY );
-// 	rotateMat.setUpRow( boneZ );
-// 	gGL.multMatrix( &rotateMat.mMatrix[0][0] );
-
-// 	// render the bone
-// 	gGL.color3f( 0.5f, 0.5f, 0.0f );
-
-// 	gGL.begin(LLRender::TRIANGLES);
-
-// 	gGL.vertex3f( length,     0.0f,       0.0f);
-// 	gGL.vertex3f( 0.0f,       boneSize,  0.0f);
-// 	gGL.vertex3f( 0.0f,       0.0f,       boneSize);
-
-// 	gGL.vertex3f( length,     0.0f,        0.0f);
-// 	gGL.vertex3f( 0.0f,       0.0f,        -boneSize);
-// 	gGL.vertex3f( 0.0f,       boneSize,   0.0f);
-
-// 	gGL.vertex3f( length,     0.0f,        0.0f);
-// 	gGL.vertex3f( 0.0f,       -boneSize,  0.0f);
-// 	gGL.vertex3f( 0.0f,       0.0f,        -boneSize);
-
-// 	gGL.vertex3f( length,     0.0f,        0.0f);
-// 	gGL.vertex3f( 0.0f,       0.0f,        boneSize);
-// 	gGL.vertex3f( 0.0f,       -boneSize,  0.0f);
-
-// 	gGL.end();
-
-// 	// restore matrix
-// 	gGL.popMatrix();
-// }
-
-//--------------------------------------------------------------------
-// isTransparent()
-//--------------------------------------------------------------------
-BOOL LLViewerJoint::isTransparent()
-{
-	return FALSE;
-}
-
 //--------------------------------------------------------------------
 // drawShape()
 //--------------------------------------------------------------------
@@ -382,121 +169,4 @@ U32 LLViewerJoint::drawShape( F32 pixelArea, BOOL first_pass, BOOL is_dummy )
 	return 0;
 }
 
-//--------------------------------------------------------------------
-// setSkeletonComponents()
-//--------------------------------------------------------------------
-void LLViewerJoint::setSkeletonComponents( U32 comp, BOOL recursive )
-{
-	mComponents = comp;
-	if (recursive)
-	{
-		for (child_list_t::iterator iter = mChildren.begin();
-			 iter != mChildren.end(); ++iter)
-		{
-			LLViewerJoint* joint = (LLViewerJoint*)(*iter);
-			joint->setSkeletonComponents(comp, recursive);
-		}
-	}
-}
-
-void LLViewerJoint::updateFaceSizes(U32 &num_vertices, U32& num_indices, F32 pixel_area)
-{
-	for (child_list_t::iterator iter = mChildren.begin();
-		 iter != mChildren.end(); ++iter)
-	{
-		LLViewerJoint* joint = (LLViewerJoint*)(*iter);
-		joint->updateFaceSizes(num_vertices, num_indices, pixel_area);
-	}
-}
-
-void LLViewerJoint::updateFaceData(LLFace *face, F32 pixel_area, BOOL damp_wind, bool terse_update)
-{
-	for (child_list_t::iterator iter = mChildren.begin();
-		 iter != mChildren.end(); ++iter)
-	{
-		LLViewerJoint* joint = (LLViewerJoint*)(*iter);
-		joint->updateFaceData(face, pixel_area, damp_wind, terse_update);
-	}
-}
-
-void LLViewerJoint::updateJointGeometry()
-{
-	for (child_list_t::iterator iter = mChildren.begin();
-		 iter != mChildren.end(); ++iter)
-	{
-		LLViewerJoint* joint = (LLViewerJoint*)(*iter);
-		joint->updateJointGeometry();
-	}
-}
-
-
-BOOL LLViewerJoint::updateLOD(F32 pixel_area, BOOL activate)
-{
-	BOOL lod_changed = FALSE;
-	BOOL found_lod = FALSE;
-
-	for (child_list_t::iterator iter = mChildren.begin();
-		 iter != mChildren.end(); ++iter)
-	{
-		LLViewerJoint* joint = (LLViewerJoint*)(*iter);
-		F32 jointLOD = joint->getLOD();
-		
-		if (found_lod || jointLOD == DEFAULT_LOD)
-		{
-			// we've already found a joint to enable, so enable the rest as alternatives
-			lod_changed |= joint->updateLOD(pixel_area, TRUE);
-		}
-		else
-		{
-			if (pixel_area >= jointLOD || sDisableLOD)
-			{
-				lod_changed |= joint->updateLOD(pixel_area, TRUE);
-				found_lod = TRUE;
-			}
-			else
-			{
-				lod_changed |= joint->updateLOD(pixel_area, FALSE);
-			}
-		}
-	}
-	return lod_changed;
-}
-
-void LLViewerJoint::dump()
-{
-	for (child_list_t::iterator iter = mChildren.begin();
-		 iter != mChildren.end(); ++iter)
-	{
-		LLViewerJoint* joint = (LLViewerJoint*)(*iter);
-		joint->dump();
-	}
-}
-
-void LLViewerJoint::setVisible(BOOL visible, BOOL recursive)
-{
-	mVisible = visible;
-
-	if (recursive)
-	{
-		for (child_list_t::iterator iter = mChildren.begin();
-			 iter != mChildren.end(); ++iter)
-		{
-			LLViewerJoint* joint = (LLViewerJoint*)(*iter);
-			joint->setVisible(visible, recursive);
-		}
-	}
-}
-
-
-void LLViewerJoint::setMeshesToChildren()
-{
-	removeAllChildren();
-	for (std::vector<LLViewerJointMesh*>::iterator iter = mMeshParts.begin();
-		iter != mMeshParts.end(); iter++)
-	{
-		addChild((LLViewerJointMesh *) *iter);
-	}
-}
-
-
 // End
diff --git a/indra/newview/llviewerjoint.h b/indra/newview/llviewerjoint.h
index 37c80dafeb3..fd262b6e804 100644
--- a/indra/newview/llviewerjoint.h
+++ b/indra/newview/llviewerjoint.h
@@ -40,95 +40,25 @@ class LLViewerJointMesh;
 // class LLViewerJoint
 //-----------------------------------------------------------------------------
 class LLViewerJoint :
-	public LLAvatarJoint
+	public virtual LLAvatarJoint
 {
 public:
 	LLViewerJoint();
+	LLViewerJoint(S32 joint_num);
+	// *TODO: Only used for LLVOAvatarSelf::mScreenp.  *DOES NOT INITIALIZE mResetAfterRestoreOldXform*
 	LLViewerJoint(const std::string &name, LLJoint *parent = NULL);
 	virtual ~LLViewerJoint();
 
-	// Gets the validity of this joint
-	BOOL getValid() { return mValid; }
-
-	// Primarily for debugging and character setup
-	// Derived classes may add text/graphic output.
-	// Draw skeleton graphic for debugging and character setup
- 	void renderSkeleton(BOOL recursive=TRUE); // debug only (unused)
-
-	// Draws a bone graphic to the parent joint.
-	// Derived classes may add text/graphic output.
-	// Called by renderSkeleton().
- 	void drawBone(); // debug only (unused)
-
 	// Render character hierarchy.
 	// Traverses the entire joint hierarchy, setting up
 	// transforms and calling the drawShape().
 	// Derived classes may add text/graphic output.
 	virtual U32 render( F32 pixelArea, BOOL first_pass = TRUE, BOOL is_dummy = FALSE );	// Returns triangle count
 
-	// Returns true if this object is transparent.
-	// This is used to determine in which order to draw objects.
-	virtual BOOL isTransparent();
-
-	// Returns true if this object should inherit scale modifiers from its immediate parent
-	virtual BOOL inheritScale() { return FALSE; }
-
 	// Draws the shape attached to a joint.
 	// Called by render().
 	virtual U32 drawShape( F32 pixelArea, BOOL first_pass = TRUE, BOOL is_dummy = FALSE );
 	virtual void drawNormals() {}
-
-	enum Components
-	{
-		SC_BONE		= 1,
-		SC_JOINT	= 2,
-		SC_AXES		= 4
-	};
-
-	// Selects which skeleton components to draw
-	void setSkeletonComponents( U32 comp, BOOL recursive = TRUE );
-
-	// Returns which skeleton components are enables for drawing
-	U32 getSkeletonComponents() { return mComponents; }
-
-	// Sets the level of detail for this node as a minimum
-	// pixel area threshold.  If the current pixel area for this
-	// object is less than the specified threshold, the node is
-	// not traversed.  In addition, if a value is specified (not
-	// default of 0.0), and the pixel area is larger than the
-	// specified minimum, the node is rendered, but no other siblings
-	// of this node under the same parent will be.
-	F32 getLOD() { return mMinPixelArea; }
-	void setLOD( F32 pixelArea ) { mMinPixelArea = pixelArea; }
-	
-	void setPickName(LLJointPickName name) { mPickName = name; }
-	LLJointPickName getPickName() { return mPickName; }
-
-	virtual void updateFaceSizes(U32 &num_vertices, U32& num_indices, F32 pixel_area);
-	virtual void updateFaceData(LLFace *face, F32 pixel_area, BOOL damp_wind = FALSE, bool terse_update = false);
-	virtual BOOL updateLOD(F32 pixel_area, BOOL activate);
-	virtual void updateJointGeometry();
-	virtual void dump();
-
-	void setVisible( BOOL visible, BOOL recursive );
-
-	// Takes meshes in mMeshParts and sets each one as a child joint
-	void setMeshesToChildren();
-
-public:
-	static BOOL	sDisableLOD;
-	std::vector<LLViewerJointMesh*> mMeshParts;
-	void setMeshID( S32 id ) {mMeshID = id;}
-
-protected:
-	void init();
-
-	BOOL		mValid;
-	U32			mComponents;
-	F32			mMinPixelArea;
-	LLJointPickName	mPickName;
-	BOOL		mVisible;
-	S32			mMeshID;
 };
 
 #endif // LL_LLVIEWERJOINT_H
diff --git a/indra/newview/llviewerjointmesh.cpp b/indra/newview/llviewerjointmesh.cpp
index 8d479ab0bf0..64454a03d1a 100755
--- a/indra/newview/llviewerjointmesh.cpp
+++ b/indra/newview/llviewerjointmesh.cpp
@@ -200,21 +200,6 @@ void LLViewerJointMesh::uploadJointMatrices()
 	}
 }
 
-//--------------------------------------------------------------------
-// LLViewerJointMesh::drawBone()
-//--------------------------------------------------------------------
-void LLViewerJointMesh::drawBone()
-{
-}
-
-//--------------------------------------------------------------------
-// LLViewerJointMesh::isTransparent()
-//--------------------------------------------------------------------
-BOOL LLViewerJointMesh::isTransparent()
-{
-	return mIsTransparent;
-}
-
 //--------------------------------------------------------------------
 // DrawElementsBLEND and utility code
 //--------------------------------------------------------------------
diff --git a/indra/newview/llviewerjointmesh.h b/indra/newview/llviewerjointmesh.h
index 039175830f4..64887152a6e 100755
--- a/indra/newview/llviewerjointmesh.h
+++ b/indra/newview/llviewerjointmesh.h
@@ -41,9 +41,8 @@ class LLViewerTexLayerSet;
 //-----------------------------------------------------------------------------
 // class LLViewerJointMesh
 //-----------------------------------------------------------------------------
-class LLViewerJointMesh : public LLAvatarJointMesh
+class LLViewerJointMesh : public LLAvatarJointMesh, public LLViewerJoint
 {
-	friend class LLVOAvatar;
 public:
 	// Constructor
 	LLViewerJointMesh();
@@ -55,8 +54,6 @@ class LLViewerJointMesh : public LLAvatarJointMesh
 	void uploadJointMatrices();
 
 	// overloaded from base class
-	/*virtual*/ void drawBone();
-	/*virtual*/ BOOL isTransparent();
 	/*virtual*/ U32 drawShape( F32 pixelArea, BOOL first_pass, BOOL is_dummy );
 
 	/*virtual*/ void updateFaceSizes(U32 &num_vertices, U32& num_indices, F32 pixel_area);
@@ -65,8 +62,6 @@ class LLViewerJointMesh : public LLAvatarJointMesh
 	/*virtual*/ void updateJointGeometry();
 	/*virtual*/ void dump();
 
-	void setIsTransparent(BOOL is_transparent) { mIsTransparent = is_transparent; }
-
 	/*virtual*/ BOOL isAnimatable() const { return FALSE; }
 	
 private:
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index f0f469e9599..081f1d62ca8 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -24,12 +24,6 @@
  * $/LicenseInfo$
  */
 
-#if LL_MSVC
-// disable warning about boost::lexical_cast returning uninitialized data
-// when it fails to parse the string
-#pragma warning (disable:4701)
-#endif
-
 #include "llviewerprecompiledheaders.h"
 
 #include "llvoavatar.h"
@@ -109,12 +103,6 @@ extern F32 SPEED_ADJUST_MAX_SEC;
 extern F32 ANIM_SPEED_MAX;
 extern F32 ANIM_SPEED_MIN;
 
-#if LL_MSVC
-// disable boost::lexical_cast warning
-#pragma warning (disable:4702)
-#endif
-
-#include <boost/lexical_cast.hpp>
 
 // #define OUTPUT_BREAST_DATA
 
@@ -783,7 +771,7 @@ BOOL LLVOAvatar::isFullyTextured() const
 {
 	for (S32 i = 0; i < mMeshLOD.size(); i++)
 	{
-		LLViewerJoint* joint = (LLViewerJoint*) mMeshLOD[i];
+		LLAvatarJoint* joint = mMeshLOD[i];
 		if (i==MESH_ID_SKIRT && !isWearingWearableType(LLWearableType::WT_SKIRT))
 		{
 			continue; // don't care about skirt textures if we're not wearing one.
@@ -792,19 +780,19 @@ BOOL LLVOAvatar::isFullyTextured() const
 		{
 			continue; // nonexistent LOD OK.
 		}
-		std::vector<LLViewerJointMesh*>::iterator meshIter = joint->mMeshParts.begin();
+		avatar_joint_mesh_list_t::iterator meshIter = joint->mMeshParts.begin();
 		if (meshIter != joint->mMeshParts.end())
 		{
-			LLViewerJointMesh *mesh = (LLViewerJointMesh *) *meshIter;
+			LLAvatarJointMesh *mesh = (*meshIter);
 			if (!mesh)
 			{
 				continue; // nonexistent mesh OK
 			}
-			if (mesh->mTexture.notNull() && mesh->mTexture->hasGLTexture())
+			if (mesh->hasGLTexture())
 			{
 				continue; // Mesh exists and has a baked texture.
 			}
-			if (mesh->mLayerSet && mesh->mLayerSet->hasComposite())
+			if (mesh->hasComposite())
 			{
 				continue; // Mesh exists and has a composite texture.
 			}
@@ -1056,84 +1044,9 @@ void LLVOAvatar::cleanupClass()
 	sXMLTree.cleanup();
 }
 
+// virtual
 void LLVOAvatar::initInstance(void)
 {
-	//-------------------------------------------------------------------------
-	// initialize joint, mesh and shape members
-	//-------------------------------------------------------------------------
-	if (mRoot)
-	{
-		delete mRoot;
-	}
-	mRoot = new LLViewerJoint();
-	mRoot->setName( "mRoot" );
-	
-	for (LLAvatarAppearanceDictionary::Meshes::const_iterator iter = LLAvatarAppearanceDictionary::getInstance()->getMeshes().begin();
-		 iter != LLAvatarAppearanceDictionary::getInstance()->getMeshes().end();
-		 ++iter)
-	{
-		const EMeshIndex mesh_index = iter->first;
-		const LLAvatarAppearanceDictionary::MeshEntry *mesh_dict = iter->second;
-		LLViewerJoint* joint = new LLViewerJoint();
-		joint->setName(mesh_dict->mName);
-		joint->setMeshID(mesh_index);
-		mMeshLOD.push_back(joint);
-		
-		/* mHairLOD.setName("mHairLOD");
-		   mHairMesh0.setName("mHairMesh0");
-		   mHairMesh0.setMeshID(MESH_ID_HAIR);
-		   mHairMesh1.setName("mHairMesh1"); */
-		for (U32 lod = 0; lod < mesh_dict->mLOD; lod++)
-		{
-			LLViewerJointMesh* mesh = new LLViewerJointMesh();
-			std::string mesh_name = "m" + mesh_dict->mName + boost::lexical_cast<std::string>(lod);
-			// We pre-pended an m - need to capitalize first character for camelCase
-			mesh_name[1] = toupper(mesh_name[1]);
-			mesh->setName(mesh_name);
-			mesh->setMeshID(mesh_index);
-			mesh->setPickName(mesh_dict->mPickName);
-			mesh->setIsTransparent(FALSE);
-			switch((int)mesh_index)
-			{
-				case MESH_ID_HAIR:
-					mesh->setIsTransparent(TRUE);
-					break;
-				case MESH_ID_SKIRT:
-					mesh->setIsTransparent(TRUE);
-					break;
-				case MESH_ID_EYEBALL_LEFT:
-				case MESH_ID_EYEBALL_RIGHT:
-					mesh->setSpecular( LLColor4( 1.0f, 1.0f, 1.0f, 1.0f ), 1.f );
-					break;
-			}
-			
-			joint->mMeshParts.push_back(mesh);
-		}
-	}
-	
-	//-------------------------------------------------------------------------
-	// associate baked textures with meshes
-	//-------------------------------------------------------------------------
-	for (LLAvatarAppearanceDictionary::Meshes::const_iterator iter = LLAvatarAppearanceDictionary::getInstance()->getMeshes().begin();
-		 iter != LLAvatarAppearanceDictionary::getInstance()->getMeshes().end();
-		 ++iter)
-	{
-		const EMeshIndex mesh_index = iter->first;
-		const LLAvatarAppearanceDictionary::MeshEntry *mesh_dict = iter->second;
-		const EBakedTextureIndex baked_texture_index = mesh_dict->mBakedID;
-		// Skip it if there's no associated baked texture.
-		if (baked_texture_index == BAKED_NUM_INDICES) continue;
-		
-		for (std::vector<LLAvatarJointMesh* >::iterator iter = mMeshLOD[mesh_index]->mMeshParts.begin();
-			 iter != mMeshLOD[mesh_index]->mMeshParts.end(); 
-			 ++iter)
-		{
-			LLViewerJointMesh* mesh = (LLViewerJointMesh*) *iter;
-			mBakedTextureDatas[(int)baked_texture_index].mMeshes.push_back(mesh);
-		}
-	}
-	
-	
 	//-------------------------------------------------------------------------
 	// register motions
 	//-------------------------------------------------------------------------
@@ -1192,10 +1105,9 @@ void LLVOAvatar::initInstance(void)
 		registerMotion( ANIM_AGENT_SIT_FEMALE,				LLKeyframeMotion::create );
 		registerMotion( ANIM_AGENT_TARGET,					LLTargetingMotion::create );
 		registerMotion( ANIM_AGENT_WALK_ADJUST,				LLWalkAdjustMotion::create );
-		
 	}
-	
-	buildCharacter();
+
+	LLAvatarAppearance::initInstance();
 	
 	// preload specific motions here
 	createMotion( ANIM_AGENT_CUSTOMIZE);
@@ -1204,7 +1116,30 @@ void LLVOAvatar::initInstance(void)
 	//VTPause();  // VTune
 	
 	mVoiceVisualizer->setVoiceEnabled( LLVoiceClient::getInstance()->getVoiceEnabled( mID ) );
+}
+
+// virtual
+LLAvatarJoint* LLVOAvatar::createAvatarJoint()
+{
+	return new LLViewerJoint();
+}
 
+// virtual
+LLAvatarJoint* LLVOAvatar::createAvatarJoint(S32 joint_num)
+{
+	return new LLViewerJoint(joint_num);
+}
+
+// virtual
+LLAvatarJointMesh* LLVOAvatar::createAvatarJointMesh()
+{
+	return new LLViewerJointMesh();
+}
+
+// virtual
+LLTexLayerSet* LLVOAvatar::createTexLayerSet()
+{
+	return new LLViewerTexLayerSet(this);
 }
 
 const LLVector3 LLVOAvatar::getRenderPosition() const
@@ -1279,7 +1214,7 @@ void LLVOAvatar::getSpatialExtents(LLVector4a& newMin, LLVector4a& newMax)
 	float max_attachment_span = get_default_max_prim_scale() * 5.0f;
 	
 	//stretch bounding box by joint positions
-	for (polymesh_map_t::iterator i = mMeshes.begin(); i != mMeshes.end(); ++i)
+	for (polymesh_map_t::iterator i = mPolyMeshes.begin(); i != mPolyMeshes.end(); ++i)
 	{
 		LLPolyMesh* mesh = i->second;
 		for (S32 joint_num = 0; joint_num < mesh->mJointRenderData.count(); joint_num++)
@@ -1551,23 +1486,11 @@ void LLVOAvatar::startDefaultMotions()
 // virtual
 void LLVOAvatar::buildCharacter()
 {
-	//-------------------------------------------------------------------------
-	// clear mesh data
-	//-------------------------------------------------------------------------
-	for (std::vector<LLAvatarJoint*>::iterator jointIter = mMeshLOD.begin();
-		 jointIter != mMeshLOD.end(); ++jointIter)
-	{
-		LLViewerJoint* joint = (LLViewerJoint*) *jointIter;
-		for (std::vector<LLViewerJointMesh*>::iterator meshIter = joint->mMeshParts.begin();
-			 meshIter != joint->mMeshParts.end(); ++meshIter)
-		{
-			LLViewerJointMesh * mesh = (LLViewerJointMesh *) *meshIter;
-			mesh->setMesh(NULL);
-		}
-	}
-
 	LLAvatarAppearance::buildCharacter();
 
+	// Not done building yet; more to do.
+	mIsBuilt = FALSE;
+
 	//-------------------------------------------------------------------------
 	// set head offset from pelvis
 	//-------------------------------------------------------------------------
@@ -1600,6 +1523,9 @@ void LLVOAvatar::buildCharacter()
 	//-------------------------------------------------------------------------
 	processAnimationStateChanges();
 
+	mIsBuilt = TRUE;
+	stop_glerror();
+
 	mMeshValid = TRUE;
 }
 
@@ -1619,11 +1545,11 @@ void LLVOAvatar::releaseMeshData()
 	//llinfos << "Releasing" << llendl;
 
 	// cleanup mesh data
-	for (std::vector<LLAvatarJoint*>::iterator iter = mMeshLOD.begin();
+	for (avatar_joint_list_t::iterator iter = mMeshLOD.begin();
 		 iter != mMeshLOD.end(); 
 		 ++iter)
 	{
-		LLViewerJoint* joint = (LLViewerJoint*) *iter;
+		LLAvatarJoint* joint = (*iter);
 		joint->setValid(FALSE, TRUE);
 	}
 
@@ -4718,10 +4644,12 @@ LLJoint *LLVOAvatar::getJoint( const std::string &name )
 //-----------------------------------------------------------------------------
 void LLVOAvatar::resetJointPositions( void )
 {
-	for(S32 i = 0; i < (S32)mNumJoints; ++i)
+	avatar_joint_list_t::iterator iter = mSkeleton.begin();
+	avatar_joint_list_t::iterator end  = mSkeleton.end();
+	for (; iter != end; ++iter)
 	{
-		mSkeleton[i].restoreOldXform();
-		mSkeleton[i].setId( LLUUID::null );
+		(*iter)->restoreOldXform();
+		(*iter)->setId( LLUUID::null );
 	}
 	mHasPelvisOffset = false;
 	mPelvisFixup	 = mLastPelvisFixup;
@@ -4753,16 +4681,17 @@ void LLVOAvatar::resetSpecificJointPosition( const std::string& name )
 //-----------------------------------------------------------------------------
 void LLVOAvatar::resetJointPositionsToDefault( void )
 {
-
 	//Subsequent joints are relative to pelvis
-	for( S32 i = 0; i < (S32)mNumJoints; ++i )
+	avatar_joint_list_t::iterator iter = mSkeleton.begin();
+	avatar_joint_list_t::iterator end  = mSkeleton.end();
+	for (; iter != end; ++iter)
 	{
-		LLJoint* pJoint = (LLJoint*)&mSkeleton[i];
+		LLJoint* pJoint = (*iter);
 		if ( pJoint->doesJointNeedToBeReset() )
 		{
-
 			pJoint->setId( LLUUID::null );
 			//restore joints to default positions, however skip over the pelvis
+			// *TODO: How does this pointer check skip over pelvis?
 			if ( pJoint )
 			{
 				pJoint->restoreOldXform();
@@ -4895,43 +4824,18 @@ LLVector3	LLVOAvatar::getPosAgentFromGlobal(const LLVector3d &position)
 	return gAgent.getPosAgentFromGlobal(position);
 }
 
-//-----------------------------------------------------------------------------
-// allocateCharacterJoints()
-//-----------------------------------------------------------------------------
-BOOL LLVOAvatar::allocateCharacterJoints( U32 num )
-{
-	deleteAndClearArray(mSkeleton);
-	mNumJoints = 0;
-
-	mSkeleton = new LLViewerJoint[num];
-	
-	for(S32 joint_num = 0; joint_num < (S32)num; joint_num++)
-	{
-		mSkeleton[joint_num].setJointNum(joint_num);
-	}
-
-	if (!mSkeleton)
-	{
-		return FALSE;
-	}
-
-	mNumJoints = num;
-	return TRUE;
-}
-
-
 
 //-----------------------------------------------------------------------------
 // getCharacterJoint()
 //-----------------------------------------------------------------------------
 LLJoint *LLVOAvatar::getCharacterJoint( U32 num )
 {
-	if ((S32)num >= mNumJoints 
+	if ((S32)num >= mSkeleton.size()
 	    || (S32)num < 0)
 	{
 		return NULL;
 	}
-	return (LLJoint*)&mSkeleton[num];
+	return mSkeleton[num];
 }
 
 //-----------------------------------------------------------------------------
@@ -4949,16 +4853,6 @@ void LLVOAvatar::requestStopMotion( LLMotion* motion )
 //virtual
 BOOL LLVOAvatar::loadSkeletonNode ()
 {
-	// make meshes children before calling parent version of the function
-	for (std::vector<LLAvatarJoint *>::iterator iter = mMeshLOD.begin();
-		 iter != mMeshLOD.end(); 
-		 ++iter)
-	{
-		LLViewerJoint *joint = (LLViewerJoint *) *iter;
-		joint->mUpdateXform = FALSE;
-		joint->setMeshesToChildren();
-	}
-
 	if (!LLAvatarAppearance::loadSkeletonNode())
 	{
 		return FALSE;
@@ -5695,9 +5589,11 @@ void LLVOAvatar::onGlobalColorChanged(const LLTexGlobalColor* global_color, BOOL
 		if (!isTextureDefined(mBakedTextureDatas[BAKED_HAIR].mTextureIndex))
 		{
 			LLColor4 color = mTexHairColor->getColor();
-			for (U32 i = 0; i < mBakedTextureDatas[BAKED_HAIR].mMeshes.size(); i++)
+			avatar_joint_mesh_list_t::iterator iter = mBakedTextureDatas[BAKED_HAIR].mJointMeshes.begin();
+			avatar_joint_mesh_list_t::iterator end  = mBakedTextureDatas[BAKED_HAIR].mJointMeshes.end();
+			for (; iter != end; ++iter)
 			{
-				LLViewerJointMesh* mesh = dynamic_cast<LLViewerJointMesh*>(mBakedTextureDatas[BAKED_HAIR].mMeshes[i]);
+				LLAvatarJointMesh* mesh = (*iter);
 				if (mesh)
 				{
 					mesh->setColor( color.mV[VX], color.mV[VY], color.mV[VZ], color.mV[VW] );
@@ -5962,9 +5858,11 @@ void LLVOAvatar::updateMeshTextures()
 			}
 
 			mBakedTextureDatas[i].mIsUsed = TRUE;
-			for (U32 k=0; k < mBakedTextureDatas[i].mMeshes.size(); k++)
+			avatar_joint_mesh_list_t::iterator iter = mBakedTextureDatas[i].mJointMeshes.begin();
+			avatar_joint_mesh_list_t::iterator end  = mBakedTextureDatas[i].mJointMeshes.end();
+			for (; iter != end; ++iter)
 			{
-				LLViewerJointMesh* mesh = dynamic_cast<LLViewerJointMesh*>(mBakedTextureDatas[i].mMeshes[k]);
+				LLAvatarJointMesh* mesh = (*iter);
 				if (mesh)
 				{
 					mesh->setTexture( baked_img );
@@ -5996,9 +5894,11 @@ void LLVOAvatar::updateMeshTextures()
 			layerset->createComposite();
 			layerset->setUpdatesEnabled( TRUE );
 			mBakedTextureDatas[i].mIsUsed = FALSE;
-			for (U32 k=0; k < mBakedTextureDatas[i].mMeshes.size(); k++)
+			avatar_joint_mesh_list_t::iterator iter = mBakedTextureDatas[i].mJointMeshes.begin();
+			avatar_joint_mesh_list_t::iterator end  = mBakedTextureDatas[i].mJointMeshes.end();
+			for (; iter != end; ++iter)
 			{
-				LLViewerJointMesh* mesh = dynamic_cast<LLViewerJointMesh*>(mBakedTextureDatas[i].mMeshes[k]);
+				LLAvatarJointMesh* mesh = (*iter);
 				if (mesh)
 				{
 					mesh->setLayerSet( layerset );
@@ -6014,9 +5914,11 @@ void LLVOAvatar::updateMeshTextures()
 	{
 		const LLColor4 color = mTexHairColor ? mTexHairColor->getColor() : LLColor4(1,1,1,1);
 		LLViewerTexture* hair_img = getImage( TEX_HAIR, 0 );
-		for (U32 i = 0; i < mBakedTextureDatas[BAKED_HAIR].mMeshes.size(); i++)
+		avatar_joint_mesh_list_t::iterator iter = mBakedTextureDatas[BAKED_HAIR].mJointMeshes.begin();
+		avatar_joint_mesh_list_t::iterator end  = mBakedTextureDatas[BAKED_HAIR].mJointMeshes.end();
+		for (; iter != end; ++iter)
 		{
-			LLViewerJointMesh* mesh = dynamic_cast<LLViewerJointMesh*>(mBakedTextureDatas[BAKED_HAIR].mMeshes[i]);
+			LLAvatarJointMesh* mesh = (*iter);
 			if (mesh)
 			{
 				mesh->setColor( color.mV[VX], color.mV[VY], color.mV[VZ], color.mV[VW] );
@@ -6778,9 +6680,11 @@ void LLVOAvatar::useBakedTexture( const LLUUID& id )
 			mBakedTextureDatas[i].mIsLoaded = true;
 			mBakedTextureDatas[i].mLastTextureIndex = id;
 			mBakedTextureDatas[i].mIsUsed = true;
-			for (U32 k = 0; k < mBakedTextureDatas[i].mMeshes.size(); k++)
+			avatar_joint_mesh_list_t::iterator iter = mBakedTextureDatas[i].mJointMeshes.begin();
+			avatar_joint_mesh_list_t::iterator end  = mBakedTextureDatas[i].mJointMeshes.end();
+			for (; iter != end; ++iter)
 			{
-				LLViewerJointMesh* mesh = dynamic_cast<LLViewerJointMesh*>(mBakedTextureDatas[i].mMeshes[k]);
+				LLAvatarJointMesh* mesh = (*iter);
 				if (mesh)
 				{
 					mesh->setTexture( image_baked );
@@ -6803,9 +6707,11 @@ void LLVOAvatar::useBakedTexture( const LLUUID& id )
 			// This is paired with similar code in updateMeshTextures that sets hair mesh color.
 			if (i == BAKED_HAIR)
 			{
-				for (U32 i = 0; i < mBakedTextureDatas[BAKED_HAIR].mMeshes.size(); i++)
+				avatar_joint_mesh_list_t::iterator iter = mBakedTextureDatas[i].mJointMeshes.begin();
+				avatar_joint_mesh_list_t::iterator end  = mBakedTextureDatas[i].mJointMeshes.end();
+				for (; iter != end; ++iter)
 				{
-					LLViewerJointMesh* mesh = dynamic_cast<LLViewerJointMesh*>(mBakedTextureDatas[BAKED_HAIR].mMeshes[i]);
+					LLAvatarJointMesh* mesh = (*iter);
 					if (mesh)
 					{
 						mesh->setColor( 1.f, 1.f, 1.f, 1.f );
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
index bda09b044d6..cc94c2a3eb4 100755
--- a/indra/newview/llvoavatar.h
+++ b/indra/newview/llvoavatar.h
@@ -172,7 +172,6 @@ class LLVOAvatar :
 	virtual LLVector3    	getCharacterVelocity();
 	virtual LLVector3    	getCharacterAngularVelocity();
 	virtual LLJoint*		getCharacterJoint(U32 num);
-	virtual BOOL			allocateCharacterJoints(U32 num);
 
 	virtual LLUUID			remapMotionID(const LLUUID& id);
 	virtual BOOL			startMotion(const LLUUID& id, F32 time_offset = 0.f);
@@ -184,7 +183,6 @@ class LLVOAvatar :
 	void					dumpAnimationState();
 
 	virtual LLJoint*		getJoint(const std::string &name);
-	virtual LLJoint*     	getRootJoint() { return mRoot; }
 	
 	void					resetJointPositions( void );
 	void					resetJointPositionsToDefault( void );
@@ -341,6 +339,10 @@ class LLVOAvatar :
  **                    SKELETON
  **/
 
+protected:
+	/*virtual*/ LLAvatarJoint*	createAvatarJoint(); // Returns LLViewerJoint
+	/*virtual*/ LLAvatarJoint*	createAvatarJoint(S32 joint_num); // Returns LLViewerJoint
+	/*virtual*/ LLAvatarJointMesh*	createAvatarJointMesh(); // Returns LLViewerJointMesh
 public:
 	void				updateHeadOffset();
 	void				setPelvisOffset( bool hasOffset, const LLVector3& translation, F32 offset ) ;
@@ -521,6 +523,7 @@ class LLVOAvatar :
 	// Baked textures
 	//--------------------------------------------------------------------
 public:
+	/*virtual*/ LLTexLayerSet*	createTexLayerSet(); // Return LLViewerTexLayerSet
 	void			releaseComponentTextures(); // ! BACKWARDS COMPATIBILITY !
 protected:
 	static void		onBakedTextureMasksLoaded(BOOL success, LLViewerFetchedTexture *src_vi, LLImageRaw* src, LLImageRaw* aux_src, S32 discard_level, BOOL final, void* userdata);
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index f832a126bd4..96fd41739f9 100755
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -249,8 +249,6 @@ BOOL LLVOAvatarSelf::loadAvatarSelf()
 		llwarns << "avatar file: buildSkeleton() failed" << llendl;
 		return FALSE;
 	}
-	// TODO: make loadLayersets() called only by self.
-	//success &= loadLayersets();
 
 	return success;
 }
@@ -585,70 +583,6 @@ LLVOAvatarSelf::~LLVOAvatarSelf()
  **                                                                             **
  *********************************************************************************/
 
-//virtual
-BOOL LLVOAvatarSelf::loadLayersets()
-{
-	BOOL success = TRUE;
-	for (LLAvatarXmlInfo::layer_info_list_t::const_iterator iter = sAvatarXmlInfo->mLayerInfoList.begin();
-		 iter != sAvatarXmlInfo->mLayerInfoList.end(); 
-		 ++iter)
-	{
-		// Construct a layerset for each one specified in avatar_lad.xml and initialize it as such.
-		const LLTexLayerSetInfo *info = *iter;
-		LLViewerTexLayerSet* layer_set = new LLViewerTexLayerSet( this );
-		
-		if (!layer_set->setInfo(info))
-		{
-			stop_glerror();
-			delete layer_set;
-			llwarns << "avatar file: layer_set->parseData() failed" << llendl;
-			return FALSE;
-		}
-
-		// scan baked textures and associate the layerset with the appropriate one
-		EBakedTextureIndex baked_index = BAKED_NUM_INDICES;
-		for (LLAvatarAppearanceDictionary::BakedTextures::const_iterator baked_iter = LLAvatarAppearanceDictionary::getInstance()->getBakedTextures().begin();
-			 baked_iter != LLAvatarAppearanceDictionary::getInstance()->getBakedTextures().end();
-			 ++baked_iter)
-		{
-			const LLAvatarAppearanceDictionary::BakedEntry *baked_dict = baked_iter->second;
-			if (layer_set->isBodyRegion(baked_dict->mName))
-			{
-				baked_index = baked_iter->first;
-				// ensure both structures are aware of each other
-				mBakedTextureDatas[baked_index].mTexLayerSet = layer_set;
-				layer_set->setBakedTexIndex(baked_index);
-				break;
-			}
-		}
-		// if no baked texture was found, warn and cleanup
-		if (baked_index == BAKED_NUM_INDICES)
-		{
-			llwarns << "<layer_set> has invalid body_region attribute" << llendl;
-			delete layer_set;
-			return FALSE;
-		}
-
-		// scan morph masks and let any affected layers know they have an associated morph
-		for (LLVOAvatar::morph_list_t::const_iterator morph_iter = mBakedTextureDatas[baked_index].mMaskedMorphs.begin();
-			morph_iter != mBakedTextureDatas[baked_index].mMaskedMorphs.end();
-			 ++morph_iter)
-		{
-			LLMaskedMorph *morph = *morph_iter;
-			LLTexLayerInterface* layer = layer_set->findLayerByName(morph->mLayer);
-			if (layer)
-			{
-				layer->setHasMorph(TRUE);
-			}
-			else
-			{
-				llwarns << "Could not find layer named " << morph->mLayer << " to set morph flag" << llendl;
-				success = FALSE;
-			}
-		}
-	}
-	return success;
-}
 // virtual
 BOOL LLVOAvatarSelf::updateCharacter(LLAgent &agent)
 {
diff --git a/indra/newview/llvoavatarself.h b/indra/newview/llvoavatarself.h
index bdc1ccf1332..907564f8e16 100755
--- a/indra/newview/llvoavatarself.h
+++ b/indra/newview/llvoavatarself.h
@@ -69,7 +69,6 @@ class LLVOAvatarSelf :
 	BOOL					loadAvatarSelf();
 	BOOL					buildSkeletonSelf(const LLAvatarSkeletonInfo *info);
 	BOOL					buildMenus();
-	/*virtual*/ BOOL		loadLayersets();
 
 /**                    Initialization
  **                                                                            **
-- 
GitLab


From 6504894be60134a66c938ffba64b57ea198c7264 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Mon, 10 Sep 2012 11:17:27 -0400
Subject: [PATCH 065/436] more baked texture debugging under
 DebugAvatarCompositeBaked

---
 indra/newview/llvoavatar.cpp | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index d92caf1edb6..3b98a55360e 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -6804,6 +6804,16 @@ void LLVOAvatar::updateMeshTextures()
 				}
 			}
 		}
+		else
+		{
+			for (U32 k=0; k < mBakedTextureDatas[i].mMeshes.size(); k++)
+			{
+				if (gSavedSettings.getBOOL("DebugAvatarCompositeBaked"))
+				{
+					mBakedTextureDatas[i].mMeshes[k]->setColor( LLColor4::blue );
+				}
+			}
+		}
 	}
 
 	// set texture and color of hair manually if we are not using a baked image.
-- 
GitLab


From d3cdc92039349ba44cc62c616a8a040236ea696d Mon Sep 17 00:00:00 2001
From: "Nyx (Neal Orman)" <nyx@lindenlab.com>
Date: Mon, 10 Sep 2012 11:34:17 -0400
Subject: [PATCH 066/436] BUILDFIX WIN fixing windows build error

converted a struct to a class, cleaning up a forward declaration that caused windows build issues.
---
 indra/llappearance/llavatarappearance.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/llappearance/llavatarappearance.h b/indra/llappearance/llavatarappearance.h
index 96dd81be778..6eab9b9d1f0 100644
--- a/indra/llappearance/llavatarappearance.h
+++ b/indra/llappearance/llavatarappearance.h
@@ -272,7 +272,7 @@ class LLAvatarAppearance : public LLCharacter
 protected:
 	virtual LLTexLayerSet*	createTexLayerSet() = 0;
 protected:
-	struct LLMaskedMorph;
+	class LLMaskedMorph;
 	typedef std::deque<LLMaskedMorph *> 	morph_list_t;
 	struct BakedTextureData
 	{
-- 
GitLab


From fc84d684500c2216aa270bffef865ee265927535 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Mon, 10 Sep 2012 18:46:52 -0400
Subject: [PATCH 067/436] dumpArchetypeXML tweaks, appearance debugging

---
 indra/newview/llvoavatar.cpp     | 41 ++++++++++++++++----------------
 indra/newview/llvoavatar.h       |  2 +-
 indra/newview/llvoavatarself.cpp |  1 +
 indra/newview/llwearable.cpp     |  6 +++++
 4 files changed, 28 insertions(+), 22 deletions(-)
 mode change 100644 => 100755 indra/newview/llwearable.cpp

diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index e03c0c3dad9..61816c1771c 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -7337,6 +7337,7 @@ bool LLVOAvatar::visualParamWeightsAreDefault()
 //-----------------------------------------------------------------------------
 void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 {
+	dumpArchetypeXML("process_start");
 	if (gSavedSettings.getBOOL("BlockAvatarAppearanceMessages"))
 	{
 		llwarns << "Blocking AvatarAppearance message" << llendl;
@@ -7773,32 +7774,30 @@ void LLVOAvatar::useBakedTexture( const LLUUID& id )
 	dirtyMesh();
 }
 
-void LLVOAvatar::dumpArchetypeXML(const std::string& filename )
+void LLVOAvatar::dumpArchetypeXML(const std::string& prefix )
 {
-	std::string outfilename(filename);
-	if (outfilename.empty())
+	std::string outprefix(prefix);
+	if (outprefix.empty())
 	{
-		std::string fullname = getFullname();
-		if (!fullname.empty())
-		{
-			typedef std::map<std::string,S32> file_num_type;
-			static  file_num_type file_nums;
-			file_num_type::iterator it = file_nums.find(fullname);
-			S32 num = 0;
-			if (it != file_nums.end())
-			{
-				num = it->second;
-			}
-			std::ostringstream temp;
-			temp << std::setw(4) << std::setfill('0') << num;
-			file_nums[fullname] = num+1;
-			outfilename = fullname + " " + temp.str() + ".xml";
-		}
+		outprefix = getFullname();
+	}
+	if (outprefix.empty())
+	{
+		outprefix = std::string("new_archetype");
 	}
-	if (outfilename.empty())
+	typedef std::map<std::string,S32> file_num_type;
+	static  file_num_type file_nums;
+	file_num_type::iterator it = file_nums.find(outprefix);
+	S32 num = 0;
+	if (it != file_nums.end())
 	{
-		outfilename = std::string("new archetype.xml");
+		num = it->second;
 	}
+	std::ostringstream temp;
+	temp << std::setw(4) << std::setfill('0') << num;
+	file_nums[outprefix] = num+1;
+	std::string outfilename = outprefix + " " + temp.str() + ".xml";
+	std::replace(outfilename.begin(),outfilename.end(),' ','_');
 	
 	LLAPRFile outfile;
 	outfile.open(gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS,outfilename), LL_APR_WB );
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
index 5ec20099717..62c8e680693 100755
--- a/indra/newview/llvoavatar.h
+++ b/indra/newview/llvoavatar.h
@@ -1016,7 +1016,7 @@ class LLVOAvatar :
 	// General
 	//--------------------------------------------------------------------
 public:
-	void				dumpArchetypeXML(const std::string& filename);
+	void				dumpArchetypeXML(const std::string& prefix);
 	static void			dumpBakedStatus();
 	const std::string 	getBakedStatusForPrintout() const;
 	void				dumpAvatarTEs(const std::string& context) const;
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index 6c8cbc37f76..87910556958 100755
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -2706,6 +2706,7 @@ void LLVOAvatarSelf::onCustomizeStart(bool disable_camera_switch)
 			gAgentCamera.changeCameraToCustomizeAvatar();
 		}
 
+		gAgentAvatarp->clearVisualParamWeights();
 		gAgentAvatarp->invalidateAll();
 		gAgentAvatarp->updateMeshTextures();
 	}
diff --git a/indra/newview/llwearable.cpp b/indra/newview/llwearable.cpp
old mode 100644
new mode 100755
index 402504933cd..3f07d6877c7
--- a/indra/newview/llwearable.cpp
+++ b/indra/newview/llwearable.cpp
@@ -619,6 +619,12 @@ void LLWearable::setTexturesToDefaults()
 void LLWearable::writeToAvatar()
 {
 	if (!isAgentAvatarValid()) return;
+#if 0
+	if (!gAgentAvatarp->isUsingLocalAppearance())
+	{
+		return;
+	}
+#endif
 
 	ESex old_sex = gAgentAvatarp->getSex();
 
-- 
GitLab


From f1d6052e36ed6d817faedf9b32cb9d889395cd88 Mon Sep 17 00:00:00 2001
From: "Nyx (Neal Orman)" <nyx@lindenlab.com>
Date: Tue, 11 Sep 2012 11:59:45 -0400
Subject: [PATCH 068/436] SH-3264 Moved over a few more items to llappearance

moved over:
isWearingWearableType
wearable::writeToAvatar
wearable::mTEMap (stores LocalTextureObject*)
more from wearable::import/export
wearable::createVisualParams, etc
---
 indra/llappearance/llavatarappearance.cpp   |  45 +-
 indra/llappearance/llavatarappearance.h     |   4 +
 indra/llappearance/lltexlayer.cpp           |   2 +-
 indra/llappearance/llwearable.cpp           | 138 +++-
 indra/llappearance/llwearable.h             |  18 +-
 indra/newview/llagentwearables.cpp          |   6 +-
 indra/newview/llappearancemgr.cpp           |   3 +-
 indra/newview/llpolymorph.cpp               | 747 --------------------
 indra/newview/llpolymorph.h                 | 182 -----
 indra/newview/llscrollingpanelparam.cpp     |   6 +-
 indra/newview/llscrollingpanelparambase.cpp |   2 +-
 indra/newview/llviewerwearable.cpp          | 116 +--
 indra/newview/llviewerwearable.h            |  14 +-
 indra/newview/llvoavatar.cpp                |  47 ++
 indra/newview/llvoavatar.h                  |   1 +
 indra/newview/llvoavatarself.cpp            |  33 +-
 indra/newview/llvoavatarself.h              |   6 +-
 indra/newview/llwearablelist.cpp            |  20 +-
 indra/newview/llwearablelist.h              |   3 +-
 19 files changed, 253 insertions(+), 1140 deletions(-)
 delete mode 100644 indra/newview/llpolymorph.cpp
 delete mode 100644 indra/newview/llpolymorph.h

diff --git a/indra/llappearance/llavatarappearance.cpp b/indra/llappearance/llavatarappearance.cpp
index e2dfa2fb74e..7d37f5f5093 100644
--- a/indra/llappearance/llavatarappearance.cpp
+++ b/indra/llappearance/llavatarappearance.cpp
@@ -1332,43 +1332,16 @@ LLColor4 LLAvatarAppearance::getGlobalColor( const std::string& color_name ) con
 // virtual
 BOOL LLAvatarAppearance::isWearingWearableType(LLWearableType::EType type) const
 {
-	if (mIsDummy) return TRUE;
-
-	switch(type)
-	{
-		case LLWearableType::WT_SHAPE:
-		case LLWearableType::WT_SKIN:
-		case LLWearableType::WT_HAIR:
-		case LLWearableType::WT_EYES:
-			return TRUE;  // everyone has all bodyparts
-		default:
-			break; // Do nothing
-	}
+	return mWearableData->getWearableCount(type) > 0;
+}
 
-	/* switch(type)
-		case LLWearableType::WT_SHIRT:
-			indicator_te = TEX_UPPER_SHIRT; */
-	for (LLAvatarAppearanceDictionary::Textures::const_iterator tex_iter = LLAvatarAppearanceDictionary::getInstance()->getTextures().begin();
-		 tex_iter != LLAvatarAppearanceDictionary::getInstance()->getTextures().end();
-		 ++tex_iter)
-	{
-		const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = tex_iter->second;
-		if (texture_dict->mWearableType == type)
-		{
-			// If you're checking another avatar's clothing, you don't have component textures.
-			// Thus, you must check to see if the corresponding baked texture is defined.
-			// NOTE: this is a poor substitute if you actually want to know about individual pieces of clothing
-			// this works for detecting a skirt (most important), but is ineffective at any piece of clothing that
-			// gets baked into a texture that always exists (upper or lower).
-			if (texture_dict->mIsUsedByBakedTexture)
-			{
-				const EBakedTextureIndex baked_index = texture_dict->mBakedTextureIndex;
-				return isTextureDefined(LLAvatarAppearanceDictionary::getInstance()->getBakedTexture(baked_index)->mTextureIndex);
-			}
-			return FALSE;
-		}
-	}
-	return FALSE;
+LLTexLayerSet* LLAvatarAppearance::getAvatarLayerSet(EBakedTextureIndex baked_index) const
+{
+	/* switch(index)
+		case TEX_HEAD_BAKED:
+		case TEX_HEAD_BODYPAINT:
+			return mHeadLayerSet; */
+	return mBakedTextureDatas[baked_index].mTexLayerSet;
 }
 
 //-----------------------------------------------------------------------------
diff --git a/indra/llappearance/llavatarappearance.h b/indra/llappearance/llavatarappearance.h
index 6eab9b9d1f0..b512fd4eda2 100644
--- a/indra/llappearance/llavatarappearance.h
+++ b/indra/llappearance/llavatarappearance.h
@@ -269,8 +269,12 @@ class LLAvatarAppearance : public LLCharacter
  **                                                                            **
  **                    BAKED TEXTURES
  **/
+public:
+	LLTexLayerSet*		getAvatarLayerSet(LLAvatarAppearanceDefines::EBakedTextureIndex baked_index) const;
+
 protected:
 	virtual LLTexLayerSet*	createTexLayerSet() = 0;
+
 protected:
 	class LLMaskedMorph;
 	typedef std::deque<LLMaskedMorph *> 	morph_list_t;
diff --git a/indra/llappearance/lltexlayer.cpp b/indra/llappearance/lltexlayer.cpp
index 1325267dc23..e90efac36bc 100644
--- a/indra/llappearance/lltexlayer.cpp
+++ b/indra/llappearance/lltexlayer.cpp
@@ -1620,7 +1620,7 @@ LLTexLayer* LLTexLayerTemplate::getLayer(U32 i) const
 		}
 		if (layer)
 		{
-			wearable->writeToAvatar();
+			wearable->writeToAvatar(mAvatarAppearance);
 			layer->setLTO(lto);
 			success &= layer->render(x,y,width,height);
 		}
diff --git a/indra/llappearance/llwearable.cpp b/indra/llappearance/llwearable.cpp
index ea14c6320fd..9e73a6669a1 100644
--- a/indra/llappearance/llwearable.cpp
+++ b/indra/llappearance/llwearable.cpp
@@ -123,27 +123,80 @@ BOOL LLWearable::exportFile(LLFILE* file) const
 	}
 
 	// texture entries
-	S32 num_textures = mTextureIDMap.size();
+	S32 num_textures = mTEMap.size();
 	if( fprintf( file, "textures %d\n", num_textures ) < 0 )
 	{
-		return FALSE;
+			return FALSE;
 	}
-	
-	for (texture_id_map_t::const_iterator iter = mTextureIDMap.begin(); iter != mTextureIDMap.end(); ++iter)
+
+	for (te_map_t::const_iterator iter = mTEMap.begin(); iter != mTEMap.end(); ++iter)
 	{
-		S32 te = iter->first;
-		const LLUUID& image_id = iter->second;
-		if( fprintf( file, "%d %s\n", te, image_id.asString().c_str()) < 0 )
+			S32 te = iter->first;
+			const LLUUID& image_id = iter->second->getID();
+			if( fprintf( file, "%d %s\n", te, image_id.asString().c_str()) < 0 )
+			{
+					return FALSE;
+			}
+	}
+	return TRUE;
+}
+
+void LLWearable::createVisualParams(LLAvatarAppearance *avatarp)
+{
+	for (LLViewerVisualParam* param = (LLViewerVisualParam*) avatarp->getFirstVisualParam(); 
+		 param;
+		 param = (LLViewerVisualParam*) avatarp->getNextVisualParam())
+	{
+		if (param->getWearableType() == mType)
 		{
-			return FALSE;
+			addVisualParam(param->cloneParam(this));
+		}
+	}
+
+	// resync driver parameters to point to the newly cloned driven parameters
+	for (visual_param_index_map_t::iterator param_iter = mVisualParamIndexMap.begin(); 
+		 param_iter != mVisualParamIndexMap.end(); 
+		 ++param_iter)
+	{
+		LLVisualParam* param = param_iter->second;
+		LLVisualParam*(LLWearable::*wearable_function)(S32)const = &LLWearable::getVisualParam; 
+		// need this line to disambiguate between versions of LLCharacter::getVisualParam()
+		LLVisualParam*(LLAvatarAppearance::*param_function)(S32)const = &LLAvatarAppearance::getVisualParam; 
+		param->resetDrivenParams();
+		if(!param->linkDrivenParams(boost::bind(wearable_function,(LLWearable*)this, _1), false))
+		{
+			if( !param->linkDrivenParams(boost::bind(param_function,avatarp,_1 ), true))
+			{
+				llwarns << "could not link driven params for wearable " << getName() << " id: " << param->getID() << llendl;
+				continue;
+			}
 		}
 	}
-	return TRUE;
 }
 
+void LLWearable::createLayers(S32 te, LLAvatarAppearance *avatarp)
+{
+	LLTexLayerSet *layer_set = NULL;
+	const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = LLAvatarAppearanceDictionary::getInstance()->getTexture((ETextureIndex)te);
+	if (texture_dict->mIsUsedByBakedTexture)
+	{
+		const EBakedTextureIndex baked_index = texture_dict->mBakedTextureIndex;
+		
+		 layer_set = avatarp->getAvatarLayerSet(baked_index);
+	}
+
+	if (layer_set)
+	{
+		   layer_set->cloneTemplates(mTEMap[te], (ETextureIndex)te, this);
+	}
+	else
+	{
+		   llerrs << "could not find layerset for LTO in wearable!" << llendl;
+	}
+}
 
 // virtual
-LLWearable::EImportResult LLWearable::importFile( LLFILE* file )
+LLWearable::EImportResult LLWearable::importFile( LLFILE* file, LLAvatarAppearance* avatarp )
 {
 	// *NOTE: changing the type or size of this buffer will require
 	// changes in the fscanf() code below. You would be better off
@@ -158,6 +211,11 @@ LLWearable::EImportResult LLWearable::importFile( LLFILE* file )
 		return LLWearable::BAD_HEADER;
 	}
 
+	if(!avatarp)
+	{
+		return LLWearable::FAILURE;
+	}
+
 
 	// Temporary hack to allow wearables with definition version 24 to still load.
 	// This should only affect lindens and NDA'd testers who have saved wearables in 2.0
@@ -265,7 +323,7 @@ LLWearable::EImportResult LLWearable::importFile( LLFILE* file )
 	}
 	if( 0 <= type && type < LLWearableType::WT_COUNT )
 	{
-		setType((LLWearableType::EType)type);
+		setType((LLWearableType::EType)type, avatarp);
 	}
 	else
 	{
@@ -313,37 +371,49 @@ LLWearable::EImportResult LLWearable::importFile( LLFILE* file )
 	}
 
 	// textures
-	mTextureIDMap.clear();
 	for( i = 0; i < num_textures; i++ )
 	{
 		S32 te = 0;
-		fields_read = fscanf(	/* Flawfinder: ignore */
-			file,
-			"%d %2047s\n",
-			&te, text_buffer);
+		fields_read = fscanf(   /* Flawfinder: ignore */
+				file,
+				"%d %2047s\n",
+				&te, text_buffer);
 		if( fields_read != 2 )
 		{
-			llwarns << "Bad Wearable asset: bad texture, #" << i << llendl;
-			return LLWearable::FAILURE;
+				llwarns << "Bad Wearable asset: bad texture, #" << i << llendl;
+				return LLWearable::FAILURE;
 		}
-
+	
 		if( !LLUUID::validate( text_buffer ) )
 		{
-			llwarns << "Bad Wearable asset: bad texture uuid: " << text_buffer << llendl;
-			return LLWearable::FAILURE;
+				llwarns << "Bad Wearable asset: bad texture uuid: " << text_buffer << llendl;
+				return LLWearable::FAILURE;
 		}
 		LLUUID id = LLUUID(text_buffer);
-		mTextureIDMap[te] = id;
+		LLGLTexture* image = gTextureManagerBridgep->getFetchedTexture( id );
+		if( mTEMap.find(te) != mTEMap.end() )
+		{
+				delete mTEMap[te];
+		}
+		if( mSavedTEMap.find(te) != mSavedTEMap.end() )
+		{
+				delete mSavedTEMap[te];
+		}
+	
+		LLUUID textureid(text_buffer);
+		mTEMap[te] = new LLLocalTextureObject(image, textureid);
+		mSavedTEMap[te] = new LLLocalTextureObject(image, textureid);
+		createLayers(te, avatarp);
 	}
 
 	return LLWearable::SUCCESS;
 }
 
 
-void LLWearable::setType(LLWearableType::EType type) 
+void LLWearable::setType(LLWearableType::EType type, LLAvatarAppearance *avatarp) 
 { 
 	mType = type; 
-	createVisualParams();
+	createVisualParams(avatarp);
 }
 
 
@@ -442,6 +512,26 @@ void LLWearable::setClothesColor( S32 te, const LLColor4& new_color, BOOL upload
 	}
 }
 
+void LLWearable::writeToAvatar(LLAvatarAppearance* avatarp)
+{
+	if (!avatarp) return;
+
+	// Pull params
+	for( LLVisualParam* param = avatarp->getFirstVisualParam(); param; param = avatarp->getNextVisualParam() )
+	{
+		// cross-wearable parameters are not authoritative, as they are driven by a different wearable. So don't copy the values to the
+		// avatar object if cross wearable. Cross wearable params get their values from the avatar, they shouldn't write the other way.
+		if( (((LLViewerVisualParam*)param)->getWearableType() == mType) && (!((LLViewerVisualParam*)param)->getCrossWearable()) )
+		{
+			S32 param_id = param->getID();
+			F32 weight = getVisualParamWeight(param_id);
+
+			avatarp->setVisualParamWeight( param_id, weight, FALSE );
+		}
+	}
+}
+
+
 std::string terse_F32_to_string(F32 f)
 {
 	std::string r = llformat("%.2f", f);
diff --git a/indra/llappearance/llwearable.h b/indra/llappearance/llwearable.h
index e1cd26bdef9..b8bbf82a6e0 100644
--- a/indra/llappearance/llwearable.h
+++ b/indra/llappearance/llwearable.h
@@ -37,6 +37,7 @@ class LLMD5;
 class LLVisualParam;
 class LLTexGlobalColorInfo;
 class LLTexGlobalColor;
+class LLAvatarAppearance;
 
 // Abstract class.
 class LLWearable
@@ -52,7 +53,7 @@ class LLWearable
 	//--------------------------------------------------------------------
 public:
 	LLWearableType::EType		getType() const	{ return mType; }
-	void						setType(LLWearableType::EType type);
+	void						setType(LLWearableType::EType type, LLAvatarAppearance *avatarp);
 	const std::string&			getName() const	{ return mName; }
 	void						setName(const std::string& name) { mName = name; }
 	const std::string&			getDescription() const { return mDescription; }
@@ -70,7 +71,7 @@ class LLWearable
 public:
 	typedef std::vector<LLVisualParam*> visual_param_vec_t;
 
-	virtual void	writeToAvatar() = 0;
+	virtual void	writeToAvatar(LLAvatarAppearance* avatarp);
 
 	enum EImportResult
 	{
@@ -79,7 +80,7 @@ class LLWearable
 		BAD_HEADER
 	};
 	virtual BOOL				exportFile(LLFILE* file) const;
-	virtual EImportResult		importFile(LLFILE* file);
+	virtual EImportResult		importFile(LLFILE* file, LLAvatarAppearance* avatarp);
 
 
 
@@ -96,9 +97,6 @@ class LLWearable
 	LLColor4			getClothesColor(S32 te) const;
 	void 				setClothesColor( S32 te, const LLColor4& new_color, BOOL upload_bake );
 
-	typedef std::map<S32, LLUUID> texture_id_map_t;
-	const texture_id_map_t& getTextureIDMap() const { return mTextureIDMap; }
-
 	// Something happened that requires the wearable to be updated (e.g. worn/unworn).
 	virtual void		setUpdated() const = 0;
 
@@ -106,7 +104,8 @@ class LLWearable
 	virtual void		addToBakedTextureHash(LLMD5& hash) const = 0;
 
 protected:
-	virtual void 	createVisualParams() = 0;
+	void			 	createVisualParams(LLAvatarAppearance *avatarp);
+	void 				createLayers(S32 te, LLAvatarAppearance *avatarp);
 
 	static S32			sCurrentDefinitionVersion;	// Depends on the current state of the avatar_lad.xml.
 	S32					mDefinitionVersion;			// Depends on the state of the avatar_lad.xml when this asset was created.
@@ -122,8 +121,9 @@ class LLWearable
 	typedef std::map<S32, LLVisualParam *>    visual_param_index_map_t;
 	visual_param_index_map_t mVisualParamIndexMap;
 
-	// *TODO: Lazy mutable.  Find a better way?
-	mutable texture_id_map_t mTextureIDMap;
+	typedef std::map<S32, LLLocalTextureObject*> te_map_t;
+	te_map_t mTEMap;				// maps TE to LocalTextureObject
+	te_map_t mSavedTEMap;			// last saved version of TEMap
 };
 
 #endif  // LL_LLWEARABLE_H
diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp
index 40cedc1b350..e2304e6db98 100755
--- a/indra/newview/llagentwearables.cpp
+++ b/indra/newview/llagentwearables.cpp
@@ -898,7 +898,7 @@ void LLAgentWearables::recoverMissingWearable(const LLWearableType::EType type,
 	// Try to recover by replacing missing wearable with a new one.
 	LLNotificationsUtil::add("ReplacedMissingWearable");
 	lldebugs << "Wearable " << LLWearableType::getTypeLabel(type) << " could not be downloaded.  Replaced inventory item with default wearable." << llendl;
-	LLViewerWearable* new_wearable = LLWearableList::instance().createNewWearable(type);
+	LLViewerWearable* new_wearable = LLWearableList::instance().createNewWearable(type, gAgentAvatarp);
 
 	setWearable(type,index,new_wearable);
 	//new_wearable->writeToAvatar(TRUE);
@@ -1048,7 +1048,7 @@ void LLAgentWearables::createStandardWearables()
 		if (create[i])
 		{
 			llassert(getWearableCount((LLWearableType::EType)i) == 0);
-			LLViewerWearable* wearable = LLWearableList::instance().createNewWearable((LLWearableType::EType)i);
+			LLViewerWearable* wearable = LLWearableList::instance().createNewWearable((LLWearableType::EType)i, gAgentAvatarp);
 			((OnWearableItemCreatedCB*)(&(*cb)))->addPendingWearable(wearable);
 			// no need to update here...
 			LLUUID category_id = LLUUID::null;
@@ -1786,7 +1786,7 @@ void LLAgentWearables::createWearable(LLWearableType::EType type, bool wear, con
 {
 	if (type == LLWearableType::WT_INVALID || type == LLWearableType::WT_NONE) return;
 
-	LLViewerWearable* wearable = LLWearableList::instance().createNewWearable(type);
+	LLViewerWearable* wearable = LLWearableList::instance().createNewWearable(type, gAgentAvatarp);
 	LLAssetType::EType asset_type = wearable->getAssetType();
 	LLInventoryType::EType inv_type = LLInventoryType::IT_WEARABLE;
 	LLPointer<LLInventoryCallback> cb = wear ? new LLWearAndEditCallback : NULL;
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 5717ebaf026..1e4e00d77da 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -665,7 +665,7 @@ void LLWearableHoldingPattern::recoverMissingWearable(LLWearableType::EType type
 	LLNotificationsUtil::add("ReplacedMissingWearable");
 	lldebugs << "Wearable " << LLWearableType::getTypeLabel(type)
 			 << " could not be downloaded.  Replaced inventory item with default wearable." << llendl;
-	LLViewerWearable* wearable = LLWearableList::instance().createNewWearable(type);
+	LLViewerWearable* wearable = LLWearableList::instance().createNewWearable(type, gAgentAvatarp);
 
 	// Add a new one in the lost and found folder.
 	const LLUUID lost_and_found_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_LOST_AND_FOUND);
@@ -1841,6 +1841,7 @@ void LLAppearanceMgr::updateAppearanceFromCOF(bool update_base_outfit_ordering)
 		// Fetch the wearables about to be worn.
 		LLWearableList::instance().getAsset(found.mAssetID,
 											found.mName,
+											gAgentAvatarp,
 											found.mAssetType,
 											onWearableAssetFetch,
 											(void*)holder);
diff --git a/indra/newview/llpolymorph.cpp b/indra/newview/llpolymorph.cpp
deleted file mode 100644
index d25d1420ee0..00000000000
--- a/indra/newview/llpolymorph.cpp
+++ /dev/null
@@ -1,747 +0,0 @@
-/** 
- * @file llpolymorph.cpp
- * @brief Implementation of LLPolyMesh class
- *
- * $LicenseInfo:firstyear=2001&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- * 
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- * 
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- * 
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
- * $/LicenseInfo$
- */
-
-//-----------------------------------------------------------------------------
-// Header Files
-//-----------------------------------------------------------------------------
-#include "llviewerprecompiledheaders.h"
-
-#include "llpolymorph.h"
-#include "llvoavatar.h"
-#include "llwearable.h"
-#include "llxmltree.h"
-#include "llendianswizzle.h"
-
-//#include "../tools/imdebug/imdebug.h"
-
-const F32 NORMAL_SOFTEN_FACTOR = 0.65f;
-
-//-----------------------------------------------------------------------------
-// LLPolyMorphData()
-//-----------------------------------------------------------------------------
-LLPolyMorphData::LLPolyMorphData(const std::string& morph_name)
-	: mName(morph_name)
-{
-	mNumIndices = 0;
-	mCurrentIndex = 0;
-	mTotalDistortion = 0.f;
-	mAvgDistortion.clear();
-	mMaxDistortion = 0.f;
-	mVertexIndices = NULL;
-	mCoords = NULL;
-	mNormals = NULL;
-	mBinormals = NULL;
-	mTexCoords = NULL;
-
-	mMesh = NULL;
-}
-
-LLPolyMorphData::LLPolyMorphData(const LLPolyMorphData &rhs) :
-	mName(rhs.mName),
-	mNumIndices(rhs.mNumIndices),
-	mTotalDistortion(rhs.mTotalDistortion),
-	mAvgDistortion(rhs.mAvgDistortion),
-	mMaxDistortion(rhs.mMaxDistortion),
-	mVertexIndices(NULL),
-	mCoords(NULL),
-	mNormals(NULL),
-	mBinormals(NULL),
-	mTexCoords(NULL)
-{
-	const S32 numVertices = mNumIndices;
-
-	mCoords = new LLVector4a[numVertices];
-	mNormals = new LLVector4a[numVertices];
-	mBinormals = new LLVector4a[numVertices];
-	mTexCoords = new LLVector2[numVertices];
-	mVertexIndices = new U32[numVertices];
-	
-	for (S32 v=0; v < numVertices; v++)
-	{
-		mCoords[v] = rhs.mCoords[v];
-		mNormals[v] = rhs.mNormals[v];
-		mBinormals[v] = rhs.mBinormals[v];
-		mTexCoords[v] = rhs.mTexCoords[v];
-		mVertexIndices[v] = rhs.mVertexIndices[v];
-	}
-}
-
-
-//-----------------------------------------------------------------------------
-// ~LLPolyMorphData()
-//-----------------------------------------------------------------------------
-LLPolyMorphData::~LLPolyMorphData()
-{
-	delete [] mVertexIndices;
-	delete [] mCoords;
-	delete [] mNormals;
-	delete [] mBinormals;
-	delete [] mTexCoords;
-}
-
-//-----------------------------------------------------------------------------
-// loadBinary()
-//-----------------------------------------------------------------------------
-BOOL LLPolyMorphData::loadBinary(LLFILE *fp, LLPolyMeshSharedData *mesh)
-{
-	S32 numVertices;
-	S32 numRead;
-
-	numRead = fread(&numVertices, sizeof(S32), 1, fp);
-	llendianswizzle(&numVertices, sizeof(S32), 1);
-	if (numRead != 1)
-	{
-		llwarns << "Can't read number of morph target vertices" << llendl;
-		return FALSE;
-	}
-
-	//-------------------------------------------------------------------------
-	// allocate vertices
-	//-------------------------------------------------------------------------
-	mCoords = new LLVector4a[numVertices];
-	mNormals = new LLVector4a[numVertices];
-	mBinormals = new LLVector4a[numVertices];
-	mTexCoords = new LLVector2[numVertices];
-	// Actually, we are allocating more space than we need for the skiplist
-	mVertexIndices = new U32[numVertices];
-	mNumIndices = 0;
-	mTotalDistortion = 0.f;
-	mMaxDistortion = 0.f;
-	mAvgDistortion.clear();
-	mMesh = mesh;
-
-	//-------------------------------------------------------------------------
-	// read vertices
-	//-------------------------------------------------------------------------
-	for(S32 v = 0; v < numVertices; v++)
-	{
-		numRead = fread(&mVertexIndices[v], sizeof(U32), 1, fp);
-		llendianswizzle(&mVertexIndices[v], sizeof(U32), 1);
-		if (numRead != 1)
-		{
-			llwarns << "Can't read morph target vertex number" << llendl;
-			return FALSE;
-		}
-
-		if (mVertexIndices[v] > 10000)
-		{
-			llerrs << "Bad morph index: " << mVertexIndices[v] << llendl;
-		}
-
-
-		numRead = fread(&mCoords[v], sizeof(F32), 3, fp);
-		llendianswizzle(&mCoords[v], sizeof(F32), 3);
-		if (numRead != 3)
-		{
-			llwarns << "Can't read morph target vertex coordinates" << llendl;
-			return FALSE;
-		}
-
-		F32 magnitude = mCoords[v].getLength3().getF32();
-		
-		mTotalDistortion += magnitude;
-		LLVector4a t;
-		t.setAbs(mCoords[v]);
-		mAvgDistortion.add(t);
-		
-		if (magnitude > mMaxDistortion)
-		{
-			mMaxDistortion = magnitude;
-		}
-
-		numRead = fread(&mNormals[v], sizeof(F32), 3, fp);
-		llendianswizzle(&mNormals[v], sizeof(F32), 3);
-		if (numRead != 3)
-		{
-			llwarns << "Can't read morph target normal" << llendl;
-			return FALSE;
-		}
-
-		numRead = fread(&mBinormals[v], sizeof(F32), 3, fp);
-		llendianswizzle(&mBinormals[v], sizeof(F32), 3);
-		if (numRead != 3)
-		{
-			llwarns << "Can't read morph target binormal" << llendl;
-			return FALSE;
-		}
-
-
-		numRead = fread(&mTexCoords[v].mV, sizeof(F32), 2, fp);
-		llendianswizzle(&mTexCoords[v].mV, sizeof(F32), 2);
-		if (numRead != 2)
-		{
-			llwarns << "Can't read morph target uv" << llendl;
-			return FALSE;
-		}
-
-		mNumIndices++;
-	}
-
-	mAvgDistortion.mul(1.f/(F32)mNumIndices);
-	mAvgDistortion.normalize3fast();
-
-	return TRUE;
-}
-
-//-----------------------------------------------------------------------------
-// LLPolyMorphTargetInfo()
-//-----------------------------------------------------------------------------
-LLPolyMorphTargetInfo::LLPolyMorphTargetInfo()
-	: mIsClothingMorph(FALSE)
-{
-}
-
-BOOL LLPolyMorphTargetInfo::parseXml(LLXmlTreeNode* node)
-{
-	llassert( node->hasName( "param" ) && node->getChildByName( "param_morph" ) );
-
-	if (!LLViewerVisualParamInfo::parseXml(node))
-		return FALSE;
-
-	// Get mixed-case name
-	static LLStdStringHandle name_string = LLXmlTree::addAttributeString("name");
-	if( !node->getFastAttributeString( name_string, mMorphName ) )
-	{
-		llwarns << "Avatar file: <param> is missing name attribute" << llendl;
-		return FALSE;  // Continue, ignoring this tag
-	}
-
-	static LLStdStringHandle clothing_morph_string = LLXmlTree::addAttributeString("clothing_morph");
-	node->getFastAttributeBOOL(clothing_morph_string, mIsClothingMorph);
-
-	LLXmlTreeNode *paramNode = node->getChildByName("param_morph");
-
-        if (NULL == paramNode)
-        {
-                llwarns << "Failed to getChildByName(\"param_morph\")"
-                        << llendl;
-                return FALSE;
-        }
-
-	for (LLXmlTreeNode* child_node = paramNode->getFirstChild();
-		 child_node;
-		 child_node = paramNode->getNextChild())
-	{
-		static LLStdStringHandle name_string = LLXmlTree::addAttributeString("name");
-		if (child_node->hasName("volume_morph"))
-		{
-			std::string volume_name;
-			if (child_node->getFastAttributeString(name_string, volume_name))
-			{
-				LLVector3 scale;
-				static LLStdStringHandle scale_string = LLXmlTree::addAttributeString("scale");
-				child_node->getFastAttributeVector3(scale_string, scale);
-				
-				LLVector3 pos;
-				static LLStdStringHandle pos_string = LLXmlTree::addAttributeString("pos");
-				child_node->getFastAttributeVector3(pos_string, pos);
-
-				mVolumeInfoList.push_back(LLPolyVolumeMorphInfo(volume_name,scale,pos));
-			}
-		}
-	}
-	
-	return TRUE;
-}
-
-//-----------------------------------------------------------------------------
-// LLPolyMorphTarget()
-//-----------------------------------------------------------------------------
-LLPolyMorphTarget::LLPolyMorphTarget(LLPolyMesh *poly_mesh)
-	: mMorphData(NULL), mMesh(poly_mesh),
-	  mVertMask(NULL),
-	  mLastSex(SEX_FEMALE),
-	  mNumMorphMasksPending(0)
-{
-}
-
-//-----------------------------------------------------------------------------
-// ~LLPolyMorphTarget()
-//-----------------------------------------------------------------------------
-LLPolyMorphTarget::~LLPolyMorphTarget()
-{
-	if (mVertMask)
-	{
-		delete mVertMask;
-	}
-}
-
-//-----------------------------------------------------------------------------
-// setInfo()
-//-----------------------------------------------------------------------------
-BOOL LLPolyMorphTarget::setInfo(LLPolyMorphTargetInfo* info)
-{
-	llassert(mInfo == NULL);
-	if (info->mID < 0)
-		return FALSE;
-	mInfo = info;
-	mID = info->mID;
-	setWeight(getDefaultWeight(), FALSE );
-
-	LLVOAvatar* avatarp = mMesh->getAvatar();
-	LLPolyMorphTargetInfo::volume_info_list_t::iterator iter;
-	for (iter = getInfo()->mVolumeInfoList.begin(); iter != getInfo()->mVolumeInfoList.end(); iter++)
-	{
-		LLPolyVolumeMorphInfo *volume_info = &(*iter);
-		for (S32 i = 0; i < avatarp->mNumCollisionVolumes; i++)
-		{
-			if (avatarp->mCollisionVolumes[i].getName() == volume_info->mName)
-			{
-				mVolumeMorphs.push_back(LLPolyVolumeMorph(&avatarp->mCollisionVolumes[i],
-														  volume_info->mScale,
-														  volume_info->mPos));
-				break;
-			}
-		}
-	}
-
-	std::string morph_param_name = getInfo()->mMorphName;
-	
-	mMorphData = mMesh->getMorphData(morph_param_name);
-	if (!mMorphData)
-	{
-		const std::string driven_tag = "_Driven";
-		U32 pos = morph_param_name.find(driven_tag);
-		if (pos > 0)
-		{
-			morph_param_name = morph_param_name.substr(0,pos);
-			mMorphData = mMesh->getMorphData(morph_param_name);
-		}
-	}
-	if (!mMorphData)
-	{
-		llwarns << "No morph target named " << morph_param_name << " found in mesh." << llendl;
-		return FALSE;  // Continue, ignoring this tag
-	}
-	return TRUE;
-}
-
-/*virtual*/ LLViewerVisualParam* LLPolyMorphTarget::cloneParam(LLWearable* wearable) const
-{
-	LLPolyMorphTarget *new_param = new LLPolyMorphTarget(mMesh);
-	*new_param = *this;
-	return new_param;
-}
-
-#if 0 // obsolete
-//-----------------------------------------------------------------------------
-// parseData()
-//-----------------------------------------------------------------------------
-BOOL LLPolyMorphTarget::parseData(LLXmlTreeNode* node)
-{
-	LLPolyMorphTargetInfo* info = new LLPolyMorphTargetInfo;
-
-	info->parseXml(node);
-	if (!setInfo(info))
-	{
-		delete info;
-		return FALSE;
-	}
-	return TRUE;
-}
-#endif
-
-//-----------------------------------------------------------------------------
-// getVertexDistortion()
-//-----------------------------------------------------------------------------
-LLVector4a LLPolyMorphTarget::getVertexDistortion(S32 requested_index, LLPolyMesh *mesh)
-{
-	if (!mMorphData || mMesh != mesh) return LLVector4a::getZero();
-
-	for(U32 index = 0; index < mMorphData->mNumIndices; index++)
-	{
-		if (mMorphData->mVertexIndices[index] == (U32)requested_index)
-		{
-			return mMorphData->mCoords[index];
-		}
-	}
-
-	return LLVector4a::getZero();
-}
-
-//-----------------------------------------------------------------------------
-// getFirstDistortion()
-//-----------------------------------------------------------------------------
-const LLVector4a *LLPolyMorphTarget::getFirstDistortion(U32 *index, LLPolyMesh **poly_mesh)
-{
-	if (!mMorphData) return &LLVector4a::getZero();
-
-	LLVector4a* resultVec;
-	mMorphData->mCurrentIndex = 0;
-	if (mMorphData->mNumIndices)
-	{
-		resultVec = &mMorphData->mCoords[mMorphData->mCurrentIndex];
-		if (index != NULL)
-		{
-			*index = mMorphData->mVertexIndices[mMorphData->mCurrentIndex];
-		}
-		if (poly_mesh != NULL)
-		{
-			*poly_mesh = mMesh;
-		}
-
-		return resultVec;
-	}
-	return NULL;
-}
-
-//-----------------------------------------------------------------------------
-// getNextDistortion()
-//-----------------------------------------------------------------------------
-const LLVector4a *LLPolyMorphTarget::getNextDistortion(U32 *index, LLPolyMesh **poly_mesh)
-{
-	if (!mMorphData) return &LLVector4a::getZero();
-
-	LLVector4a* resultVec;
-	mMorphData->mCurrentIndex++;
-	if (mMorphData->mCurrentIndex < mMorphData->mNumIndices)
-	{
-		resultVec = &mMorphData->mCoords[mMorphData->mCurrentIndex];
-		if (index != NULL)
-		{
-			*index = mMorphData->mVertexIndices[mMorphData->mCurrentIndex];
-		}
-		if (poly_mesh != NULL)
-		{
-			*poly_mesh = mMesh;
-		}
-		return resultVec;
-	}
-	return NULL;
-}
-
-//-----------------------------------------------------------------------------
-// getTotalDistortion()
-//-----------------------------------------------------------------------------
-F32	LLPolyMorphTarget::getTotalDistortion() 
-{ 
-	if (mMorphData) 
-	{
-		return mMorphData->mTotalDistortion; 
-	}
-	else 
-	{
-		return 0.f;
-	}
-}
-
-//-----------------------------------------------------------------------------
-// getAvgDistortion()
-//-----------------------------------------------------------------------------
-const LLVector4a& LLPolyMorphTarget::getAvgDistortion()	
-{
-	if (mMorphData) 
-	{
-		return mMorphData->mAvgDistortion; 
-	}
-	else 
-	{
-		return LLVector4a::getZero();
-	}
-}
-
-//-----------------------------------------------------------------------------
-// getMaxDistortion()
-//-----------------------------------------------------------------------------
-F32	LLPolyMorphTarget::getMaxDistortion() 
-{
-	if (mMorphData) 
-	{
-		return mMorphData->mMaxDistortion; 
-	}
-	else
-	{
-		return 0.f;
-	}
-}
-
-//-----------------------------------------------------------------------------
-// apply()
-//-----------------------------------------------------------------------------
-static LLFastTimer::DeclareTimer FTM_APPLY_MORPH_TARGET("Apply Morph");
-
-void LLPolyMorphTarget::apply( ESex avatar_sex )
-{
-	if (!mMorphData || mNumMorphMasksPending > 0)
-	{
-		return;
-	}
-
-	LLFastTimer t(FTM_APPLY_MORPH_TARGET);
-
-	mLastSex = avatar_sex;
-
-	// Check for NaN condition (NaN is detected if a variable doesn't equal itself.
-	if (mCurWeight != mCurWeight)
-	{
-		mCurWeight = 0.0;
-	}
-	if (mLastWeight != mLastWeight)
-	{
-		mLastWeight = mCurWeight+.001;
-	}
-
-	// perform differential update of morph
-	F32 delta_weight = ( getSex() & avatar_sex ) ? (mCurWeight - mLastWeight) : (getDefaultWeight() - mLastWeight);
-	// store last weight
-	mLastWeight += delta_weight;
-
-	if (delta_weight != 0.f)
-	{
-		llassert(!mMesh->isLOD());
-		LLVector4a *coords = mMesh->getWritableCoords();
-
-		LLVector4a *scaled_normals = mMesh->getScaledNormals();
-		LLVector4a *normals = mMesh->getWritableNormals();
-
-		LLVector4a *scaled_binormals = mMesh->getScaledBinormals();
-		LLVector4a *binormals = mMesh->getWritableBinormals();
-
-		LLVector4a *clothing_weights = mMesh->getWritableClothingWeights();
-		LLVector2 *tex_coords = mMesh->getWritableTexCoords();
-
-		F32 *maskWeightArray = (mVertMask) ? mVertMask->getMorphMaskWeights() : NULL;
-
-		for(U32 vert_index_morph = 0; vert_index_morph < mMorphData->mNumIndices; vert_index_morph++)
-		{
-			S32 vert_index_mesh = mMorphData->mVertexIndices[vert_index_morph];
-
-			F32 maskWeight = 1.f;
-			if (maskWeightArray)
-			{
-				maskWeight = maskWeightArray[vert_index_morph];
-			}
-
-
-			LLVector4a pos = mMorphData->mCoords[vert_index_morph];
-			pos.mul(delta_weight*maskWeight);
-			coords[vert_index_mesh].add(pos);
-
-			if (getInfo()->mIsClothingMorph && clothing_weights)
-			{
-				LLVector4a clothing_offset = mMorphData->mCoords[vert_index_morph];
-				clothing_offset.mul(delta_weight * maskWeight);
-				LLVector4a* clothing_weight = &clothing_weights[vert_index_mesh];
-				clothing_weight->add(clothing_offset);
-				clothing_weight->getF32ptr()[VW] = maskWeight;
-			}
-
-			// calculate new normals based on half angles
-			LLVector4a norm = mMorphData->mNormals[vert_index_morph];
-			norm.mul(delta_weight*maskWeight*NORMAL_SOFTEN_FACTOR);
-			scaled_normals[vert_index_mesh].add(norm);
-			norm = scaled_normals[vert_index_mesh];
-			norm.normalize3fast();
-			normals[vert_index_mesh] = norm;
-
-			// calculate new binormals
-			LLVector4a binorm = mMorphData->mBinormals[vert_index_morph];
-			binorm.mul(delta_weight*maskWeight*NORMAL_SOFTEN_FACTOR);
-			scaled_binormals[vert_index_mesh].add(binorm);
-			LLVector4a tangent;
-			tangent.setCross3(scaled_binormals[vert_index_mesh], norm);
-			LLVector4a& normalized_binormal = binormals[vert_index_mesh];
-			normalized_binormal.setCross3(norm, tangent); 
-			normalized_binormal.normalize3fast();
-			
-			tex_coords[vert_index_mesh] += mMorphData->mTexCoords[vert_index_morph] * delta_weight * maskWeight;
-		}
-
-		// now apply volume changes
-		for( volume_list_t::iterator iter = mVolumeMorphs.begin(); iter != mVolumeMorphs.end(); iter++ )
-		{
-			LLPolyVolumeMorph* volume_morph = &(*iter);
-			LLVector3 scale_delta = volume_morph->mScale * delta_weight;
-			LLVector3 pos_delta = volume_morph->mPos * delta_weight;
-			
-			volume_morph->mVolume->setScale(volume_morph->mVolume->getScale() + scale_delta);
-			volume_morph->mVolume->setPosition(volume_morph->mVolume->getPosition() + pos_delta);
-		}
-	}
-
-	if (mNext)
-	{
-		mNext->apply(avatar_sex);
-	}
-}
-
-//-----------------------------------------------------------------------------
-// applyMask()
-//-----------------------------------------------------------------------------
-void	LLPolyMorphTarget::applyMask(U8 *maskTextureData, S32 width, S32 height, S32 num_components, BOOL invert)
-{
-	LLVector4a *clothing_weights = getInfo()->mIsClothingMorph ? mMesh->getWritableClothingWeights() : NULL;
-
-	if (!mVertMask)
-	{
-		mVertMask = new LLPolyVertexMask(mMorphData);
-		mNumMorphMasksPending--;
-	}
-	else
-	{
-		// remove effect of previous mask
-		F32 *maskWeights = (mVertMask) ? mVertMask->getMorphMaskWeights() : NULL;
-
-		if (maskWeights)
-		{
-			LLVector4a *coords = mMesh->getWritableCoords();
-			LLVector4a *scaled_normals = mMesh->getScaledNormals();
-			LLVector4a *scaled_binormals = mMesh->getScaledBinormals();
-			LLVector2 *tex_coords = mMesh->getWritableTexCoords();
-
-			LLVector4Logical clothing_mask;
-			clothing_mask.clear();
-			clothing_mask.setElement<0>();
-			clothing_mask.setElement<1>();
-			clothing_mask.setElement<2>();
-
-
-			for(U32 vert = 0; vert < mMorphData->mNumIndices; vert++)
-			{
-				F32 lastMaskWeight = mLastWeight * maskWeights[vert];
-				S32 out_vert = mMorphData->mVertexIndices[vert];
-
-				// remove effect of existing masked morph
-				LLVector4a t;
-				t = mMorphData->mCoords[vert];
-				t.mul(lastMaskWeight);
-				coords[out_vert].sub(t);
-
-				t = mMorphData->mNormals[vert];
-				t.mul(lastMaskWeight*NORMAL_SOFTEN_FACTOR);
-				scaled_normals[out_vert].sub(t);
-
-				t = mMorphData->mBinormals[vert];
-				t.mul(lastMaskWeight*NORMAL_SOFTEN_FACTOR);
-				scaled_binormals[out_vert].sub(t);
-
-				tex_coords[out_vert] -= mMorphData->mTexCoords[vert] * lastMaskWeight;
-
-				if (clothing_weights)
-				{
-					LLVector4a clothing_offset = mMorphData->mCoords[vert];
-					clothing_offset.mul(lastMaskWeight);
-					LLVector4a* clothing_weight = &clothing_weights[out_vert];
-					LLVector4a t;
-					t.setSub(*clothing_weight, clothing_offset);
-					clothing_weight->setSelectWithMask(clothing_mask, t, *clothing_weight);
-				}
-			}
-		}
-	}
-
-	// set last weight to 0, since we've removed the effect of this morph
-	mLastWeight = 0.f;
-
-	mVertMask->generateMask(maskTextureData, width, height, num_components, invert, clothing_weights);
-
-	apply(mLastSex);
-}
-
-
-//-----------------------------------------------------------------------------
-// LLPolyVertexMask()
-//-----------------------------------------------------------------------------
-LLPolyVertexMask::LLPolyVertexMask(LLPolyMorphData* morph_data)
-{
-	mWeights = new F32[morph_data->mNumIndices];
-	mMorphData = morph_data;
-	mWeightsGenerated = FALSE;
-}
-
-//-----------------------------------------------------------------------------
-// ~LLPolyVertexMask()
-//-----------------------------------------------------------------------------
-LLPolyVertexMask::~LLPolyVertexMask()
-{
-	delete[] mWeights;
-}
-
-//-----------------------------------------------------------------------------
-// generateMask()
-//-----------------------------------------------------------------------------
-void LLPolyVertexMask::generateMask(U8 *maskTextureData, S32 width, S32 height, S32 num_components, BOOL invert, LLVector4a *clothing_weights)
-{
-// RN debug output that uses Image Debugger (http://www.cs.unc.edu/~baxter/projects/imdebug/)
-//	BOOL debugImg = FALSE; 
-//	if (debugImg)
-//	{
-//		if (invert)
-//		{
-//			imdebug("lum rbga=rgba b=8 w=%d h=%d *-1 %p", width, height, maskTextureData);
-//		}
-//		else
-//		{
-//			imdebug("lum rbga=rgba b=8 w=%d h=%d %p", width, height, maskTextureData);
-//		}
-//	}
-	for (U32 index = 0; index < mMorphData->mNumIndices; index++)
-	{
-		S32 vertIndex = mMorphData->mVertexIndices[index];
-		const S32 *sharedVertIndex = mMorphData->mMesh->getSharedVert(vertIndex);
-		LLVector2 uvCoords;
-
-		if (sharedVertIndex)
-		{
-			uvCoords = mMorphData->mMesh->getUVs(*sharedVertIndex);
-		}
-		else
-		{
-			uvCoords = mMorphData->mMesh->getUVs(vertIndex);
-		}
-		U32 s = llclamp((U32)(uvCoords.mV[VX] * (F32)(width - 1)), (U32)0, (U32)width - 1);
-		U32 t = llclamp((U32)(uvCoords.mV[VY] * (F32)(height - 1)), (U32)0, (U32)height - 1);
-		
-		mWeights[index] = ((F32) maskTextureData[((t * width + s) * num_components) + (num_components - 1)]) / 255.f;
-		
-		if (invert) 
-		{
-			mWeights[index] = 1.f - mWeights[index];
-		}
-
-		// now apply step function
-		// mWeights[index] = mWeights[index] > 0.95f ? 1.f : 0.f;
-
-		if (clothing_weights)
-		{
-			clothing_weights[vertIndex].getF32ptr()[VW] = mWeights[index];
-		}
-	}
-	mWeightsGenerated = TRUE;
-}
-
-//-----------------------------------------------------------------------------
-// getMaskForMorphIndex()
-//-----------------------------------------------------------------------------
-F32* LLPolyVertexMask::getMorphMaskWeights()
-{
-	if (!mWeightsGenerated)
-	{
-		return NULL;
-	}
-	
-	return mWeights;
-}
diff --git a/indra/newview/llpolymorph.h b/indra/newview/llpolymorph.h
deleted file mode 100644
index 28d7755d4d2..00000000000
--- a/indra/newview/llpolymorph.h
+++ /dev/null
@@ -1,182 +0,0 @@
-/** 
- * @file llpolymorph.h
- * @brief Implementation of LLPolyMesh class
- *
- * $LicenseInfo:firstyear=2001&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- * 
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- * 
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- * 
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
- * $/LicenseInfo$
- */
-
-#ifndef LL_LLPOLYMORPH_H
-#define LL_LLPOLYMORPH_H
-
-#include <string>
-#include <vector>
-
-#include "llviewervisualparam.h"
-
-class LLPolyMeshSharedData;
-class LLVOAvatar;
-class LLVector2;
-class LLAvatarJointCollisionVolume;
-class LLWearable;
-
-//-----------------------------------------------------------------------------
-// LLPolyMorphData()
-//-----------------------------------------------------------------------------
-class LLPolyMorphData
-{
-public:
-	LLPolyMorphData(const std::string& morph_name);
-	~LLPolyMorphData();
-	LLPolyMorphData(const LLPolyMorphData &rhs);
-
-	BOOL			loadBinary(LLFILE* fp, LLPolyMeshSharedData *mesh);
-	const std::string& getName() { return mName; }
-
-public:
-	std::string			mName;
-
-	// morphology
-	U32					mNumIndices;
-	U32*				mVertexIndices;
-	U32					mCurrentIndex;
-	LLVector4a*			mCoords;
-	LLVector4a*			mNormals;
-	LLVector4a*			mBinormals;
-	LLVector2*			mTexCoords;
-
-	F32					mTotalDistortion;	// vertex distortion summed over entire morph
-	F32					mMaxDistortion;		// maximum single vertex distortion in a given morph
-	LLVector4a			mAvgDistortion;		// average vertex distortion, to infer directionality of the morph
-	LLPolyMeshSharedData*	mMesh;
-};
-
-//-----------------------------------------------------------------------------
-// LLPolyVertexMask()
-//-----------------------------------------------------------------------------
-class LLPolyVertexMask
-{
-public:
-	LLPolyVertexMask(LLPolyMorphData* morph_data);
-	~LLPolyVertexMask();
-
-	void generateMask(U8 *maskData, S32 width, S32 height, S32 num_components, BOOL invert, LLVector4a *clothing_weights);
-	F32* getMorphMaskWeights();
-
-
-protected:
-	F32*		mWeights;
-	LLPolyMorphData *mMorphData;
-	BOOL			mWeightsGenerated;
-
-};
-
-//-----------------------------------------------------------------------------
-// LLPolyMorphTarget Data structs
-//-----------------------------------------------------------------------------
-struct LLPolyVolumeMorphInfo
-{
-	LLPolyVolumeMorphInfo(std::string &name, LLVector3 &scale, LLVector3 &pos)
-		: mName(name), mScale(scale), mPos(pos) {};
-
-	std::string						mName;
-	LLVector3						mScale;
-	LLVector3						mPos;
-};
-
-struct LLPolyVolumeMorph
-{
-	LLPolyVolumeMorph(LLAvatarJointCollisionVolume* volume, LLVector3 scale, LLVector3 pos)
-		: mVolume(volume), mScale(scale), mPos(pos) {};
-
-	LLAvatarJointCollisionVolume*	mVolume;
-	LLVector3						mScale;
-	LLVector3						mPos;
-};
-
-//-----------------------------------------------------------------------------
-// LLPolyMorphTargetInfo
-// Shared information for LLPolyMorphTargets
-//-----------------------------------------------------------------------------
-class LLPolyMorphTargetInfo : public LLViewerVisualParamInfo
-{
-	friend class LLPolyMorphTarget;
-public:
-	LLPolyMorphTargetInfo();
-	/*virtual*/ ~LLPolyMorphTargetInfo() {};
-	
-	/*virtual*/ BOOL parseXml(LLXmlTreeNode* node);
-
-protected:
-	std::string		mMorphName;
-	BOOL			mIsClothingMorph;
-	typedef std::vector<LLPolyVolumeMorphInfo> volume_info_list_t;
-	volume_info_list_t mVolumeInfoList;	
-};
-
-//-----------------------------------------------------------------------------
-// LLPolyMorphTarget
-// A set of vertex data associated with morph target.
-// These morph targets must be topologically consistent with a given Polymesh
-// (share face sets)
-//-----------------------------------------------------------------------------
-class LLPolyMorphTarget : public LLViewerVisualParam
-{
-public:
-	LLPolyMorphTarget(LLPolyMesh *poly_mesh);
-	~LLPolyMorphTarget();
-
-	// Special: These functions are overridden by child classes
-	LLPolyMorphTargetInfo*	getInfo() const { return (LLPolyMorphTargetInfo*)mInfo; }
-	//   This sets mInfo and calls initialization functions
-	BOOL					setInfo(LLPolyMorphTargetInfo *info);
-
-	/*virtual*/ LLViewerVisualParam* cloneParam(LLWearable* wearable) const;
-
-	// LLVisualParam Virtual functions
-	///*virtual*/ BOOL				parseData(LLXmlTreeNode* node);
-	/*virtual*/ void				apply( ESex sex );
-	
-	// LLViewerVisualParam Virtual functions
-	/*virtual*/ F32					getTotalDistortion();
-	/*virtual*/ const LLVector4a&	getAvgDistortion();
-	/*virtual*/ F32					getMaxDistortion();
-	/*virtual*/ LLVector4a			getVertexDistortion(S32 index, LLPolyMesh *poly_mesh);
-	/*virtual*/ const LLVector4a*	getFirstDistortion(U32 *index, LLPolyMesh **poly_mesh);
-	/*virtual*/ const LLVector4a*	getNextDistortion(U32 *index, LLPolyMesh **poly_mesh);
-
-	void	applyMask(U8 *maskData, S32 width, S32 height, S32 num_components, BOOL invert);
-	void	addPendingMorphMask() { mNumMorphMasksPending++; }
-
-protected:
-	LLPolyMorphData*				mMorphData;
-	LLPolyMesh*						mMesh;
-	LLPolyVertexMask *				mVertMask;
-	ESex							mLastSex;
-	// number of morph masks that haven't been generated, must be 0 before this morph is applied
-	BOOL							mNumMorphMasksPending;	
-
-	typedef std::vector<LLPolyVolumeMorph> volume_list_t;
-	volume_list_t 					mVolumeMorphs;
-
-};
-
-#endif // LL_LLPOLYMORPH_H
diff --git a/indra/newview/llscrollingpanelparam.cpp b/indra/newview/llscrollingpanelparam.cpp
index 05b82ba967e..a7e24b86b13 100644
--- a/indra/newview/llscrollingpanelparam.cpp
+++ b/indra/newview/llscrollingpanelparam.cpp
@@ -267,7 +267,7 @@ void LLScrollingPanelParam::onHintHeldDown( LLVisualParamHint* hint )
 				&& new_percent < slider->getMaxValue())
 			{
 				mWearable->setVisualParamWeight( hint->getVisualParam()->getID(), new_weight, FALSE);
-				mWearable->writeToAvatar();
+				mWearable->writeToAvatar(gAgentAvatarp);
 				gAgentAvatarp->updateVisualParams();
 
 				slider->setValue( weightToPercent( new_weight ) );
@@ -300,7 +300,7 @@ void LLScrollingPanelParam::onHintMinMouseUp( void* userdata )
 				&& new_percent < slider->getMaxValue())
 			{
 				self->mWearable->setVisualParamWeight(hint->getVisualParam()->getID(), new_weight, FALSE);
-				self->mWearable->writeToAvatar();
+				self->mWearable->writeToAvatar(gAgentAvatarp);
 				slider->setValue( self->weightToPercent( new_weight ) );
 			}
 		}
@@ -334,7 +334,7 @@ void LLScrollingPanelParam::onHintMaxMouseUp( void* userdata )
 					&& new_percent < slider->getMaxValue())
 				{
 					self->mWearable->setVisualParamWeight(hint->getVisualParam()->getID(), new_weight, FALSE);
-					self->mWearable->writeToAvatar();
+					self->mWearable->writeToAvatar(gAgentAvatarp);
 					slider->setValue( self->weightToPercent( new_weight ) );
 				}
 			}
diff --git a/indra/newview/llscrollingpanelparambase.cpp b/indra/newview/llscrollingpanelparambase.cpp
index 62e3039d2fe..8e083ddb6c8 100644
--- a/indra/newview/llscrollingpanelparambase.cpp
+++ b/indra/newview/llscrollingpanelparambase.cpp
@@ -94,7 +94,7 @@ void LLScrollingPanelParamBase::onSliderMoved(LLUICtrl* ctrl, void* userdata)
 	if (current_weight != new_weight )
 	{
 		self->mWearable->setVisualParamWeight( param->getID(), new_weight, FALSE );
-		self->mWearable->writeToAvatar();
+		self->mWearable->writeToAvatar(gAgentAvatarp);
 		gAgentAvatarp->updateVisualParams();
 	}
 }
diff --git a/indra/newview/llviewerwearable.cpp b/indra/newview/llviewerwearable.cpp
index eb3a212eae0..8fe3aff0b01 100644
--- a/indra/newview/llviewerwearable.cpp
+++ b/indra/newview/llviewerwearable.cpp
@@ -90,60 +90,13 @@ LLViewerWearable::~LLViewerWearable()
 }
 
 // virtual
-BOOL LLViewerWearable::exportFile(LLFILE* file) const
-{
-	mTextureIDMap.clear();
-	for (te_map_t::const_iterator iter = mTEMap.begin(); iter != mTEMap.end(); ++iter)
-	{
-		S32 te = iter->first;
-		const LLUUID& image_id = iter->second->getID();
-		mTextureIDMap[te] = image_id;
-	}
-	return LLWearable::exportFile(file);
-}
-
-
-void LLViewerWearable::createVisualParams()
-{
-	for (LLViewerVisualParam* param = (LLViewerVisualParam*) gAgentAvatarp->getFirstVisualParam(); 
-		 param;
-		 param = (LLViewerVisualParam*) gAgentAvatarp->getNextVisualParam())
-	{
-		if (param->getWearableType() == mType)
-		{
-			addVisualParam(param->cloneParam(this));
-		}
-	}
-
-	// resync driver parameters to point to the newly cloned driven parameters
-	for (visual_param_index_map_t::iterator param_iter = mVisualParamIndexMap.begin(); 
-		 param_iter != mVisualParamIndexMap.end(); 
-		 ++param_iter)
-	{
-		LLVisualParam* param = param_iter->second;
-		LLVisualParam*(LLWearable::*wearable_function)(S32)const = &LLWearable::getVisualParam; 
-		// need this line to disambiguate between versions of LLCharacter::getVisualParam()
-		LLVisualParam*(LLAvatarAppearance::*param_function)(S32)const = &LLAvatarAppearance::getVisualParam; 
-		param->resetDrivenParams();
-		if(!param->linkDrivenParams(boost::bind(wearable_function,(LLWearable*)this, _1), false))
-		{
-			if( !param->linkDrivenParams(boost::bind(param_function,gAgentAvatarp.get(),_1 ), true))
-			{
-				llwarns << "could not link driven params for wearable " << getName() << " id: " << param->getID() << llendl;
-				continue;
-			}
-		}
-	}
-}
-
-// virtual
-LLWearable::EImportResult LLViewerWearable::importFile( LLFILE* file )
+LLWearable::EImportResult LLViewerWearable::importFile( LLFILE* file, LLAvatarAppearance* avatarp )
 {
 	// suppress texlayerset updates while wearables are being imported. Layersets will be updated
 	// when the wearables are "worn", not loaded. Note state will be restored when this object is destroyed.
 	LLOverrideBakedTextureUpdate stop_bakes(false);
 
-	LLWearable::EImportResult result = LLWearable::importFile(file);
+	LLWearable::EImportResult result = LLWearable::importFile(file, avatarp);
 	if (LLWearable::FAILURE == result) return result;
 	if (LLWearable::BAD_HEADER == result)
 	{
@@ -157,19 +110,16 @@ LLWearable::EImportResult LLViewerWearable::importFile( LLFILE* file )
 	LLStringUtil::truncate(mName, DB_INV_ITEM_NAME_STR_LEN );
 	LLStringUtil::truncate(mDescription, DB_INV_ITEM_DESC_STR_LEN );
 
-	texture_id_map_t::const_iterator iter = mTextureIDMap.begin();
-	texture_id_map_t::const_iterator end = mTextureIDMap.end();
+	te_map_t::const_iterator iter = mTEMap.begin();
+	te_map_t::const_iterator end = mTEMap.end();
 	for (; iter != end; ++iter)
 	{
 		S32 te = iter->first;
-		const LLUUID& textureid = iter->second;
-		if( mTEMap.find(te) != mTEMap.end() )
-		{
-			delete mTEMap[te];
-		}
-		if( mSavedTEMap.find(te) != mSavedTEMap.end() )
+		LLLocalTextureObject* lto = iter->second;
+		LLUUID textureid = LLUUID::null;
+		if (lto)
 		{
-			delete mSavedTEMap[te];
+			textureid = lto->getID();
 		}
 
 		LLViewerFetchedTexture* image = LLViewerTextureManager::getFetchedTexture( textureid );
@@ -177,9 +127,6 @@ LLWearable::EImportResult LLViewerWearable::importFile( LLFILE* file )
 		{
 			image->setLoadedCallback(LLVOAvatarSelf::debugOnTimingLocalTexLoaded,0,TRUE,FALSE, new LLVOAvatarSelf::LLAvatarTexData(textureid, (LLAvatarAppearanceDefines::ETextureIndex)te), NULL);
 		}
-		mTEMap[te] = new LLLocalTextureObject(image, textureid);
-		mSavedTEMap[te] = new LLLocalTextureObject(image, textureid);
-		createLayers(te);
 	}
 
 	// copy all saved param values to working params
@@ -335,7 +282,7 @@ void LLViewerWearable::setTexturesToDefaults()
 			if( mTEMap.find(te) == mTEMap.end() )
 			{
 				mTEMap[te] = new LLLocalTextureObject(image, id);
-				createLayers(te);
+				createLayers(te, gAgentAvatarp);
 			}
 			else
 			{
@@ -366,25 +313,17 @@ const LLUUID LLViewerWearable::getDefaultTextureImageID(ETextureIndex index)
 
 
 // Updates the user's avatar's appearance
-void LLViewerWearable::writeToAvatar()
+//virtual
+void LLViewerWearable::writeToAvatar(LLAvatarAppearance *avatarp)
 {
-	if (!isAgentAvatarValid()) return;
+	LLVOAvatarSelf* viewer_avatar = dynamic_cast<LLVOAvatarSelf*>(avatarp);
 
-	ESex old_sex = gAgentAvatarp->getSex();
+	if (!avatarp || !viewer_avatar) return;
 
-	// Pull params
-	for( LLVisualParam* param = gAgentAvatarp->getFirstVisualParam(); param; param = gAgentAvatarp->getNextVisualParam() )
-	{
-		// cross-wearable parameters are not authoritative, as they are driven by a different wearable. So don't copy the values to the
-		// avatar object if cross wearable. Cross wearable params get their values from the avatar, they shouldn't write the other way.
-		if( (((LLViewerVisualParam*)param)->getWearableType() == mType) && (!((LLViewerVisualParam*)param)->getCrossWearable()) )
-		{
-			S32 param_id = param->getID();
-			F32 weight = getVisualParamWeight(param_id);
+	ESex old_sex = avatarp->getSex();
+
+	LLWearable::writeToAvatar(avatarp);
 
-			gAgentAvatarp->setVisualParamWeight( param_id, weight, FALSE );
-		}
-	}
 
 	// Pull texture entries
 	for( S32 te = 0; te < TEX_NUM_INDICES; te++ )
@@ -403,14 +342,14 @@ void LLViewerWearable::writeToAvatar()
 			}
 			LLViewerTexture* image = LLViewerTextureManager::getFetchedTexture( image_id, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE );
 			// MULTI-WEARABLE: assume index 0 will be used when writing to avatar. TODO: eliminate the need for this.
-			gAgentAvatarp->setLocalTextureTE(te, image, 0);
+			viewer_avatar->setLocalTextureTE(te, image, 0);
 		}
 	}
 
-	ESex new_sex = gAgentAvatarp->getSex();
+	ESex new_sex = avatarp->getSex();
 	if( old_sex != new_sex )
 	{
-		gAgentAvatarp->updateSexDependentLayerSets( FALSE );
+		viewer_avatar->updateSexDependentLayerSets( FALSE );
 	}	
 	
 //	if( upload_bake )
@@ -472,7 +411,7 @@ void LLViewerWearable::copyDataFrom(const LLViewerWearable* src)
 	mPermissions = src->mPermissions;
 	mSaleInfo = src->mSaleInfo;
 
-	setType(src->mType);
+	setType(src->mType, gAgentAvatarp);
 
 	mSavedVisualParamMap.clear();
 	// Deep copy of mVisualParamMap (copies only those params that are current, filling in defaults where needed)
@@ -513,7 +452,7 @@ void LLViewerWearable::copyDataFrom(const LLViewerWearable* src)
 				mTEMap[te] = new LLLocalTextureObject(image, image_id);
 				mSavedTEMap[te] = new LLLocalTextureObject(image, image_id);
 			}
-			createLayers(te);
+			createLayers(te, gAgentAvatarp);
 		}
 	}
 
@@ -632,19 +571,6 @@ void LLViewerWearable::revertValues()
 	}
 }
 
-void LLViewerWearable::createLayers(S32 te)
-{
-	LLViewerTexLayerSet *layer_set = gAgentAvatarp->getLayerSet((ETextureIndex)te);
-	if (layer_set)
-	{
-		layer_set->cloneTemplates(mTEMap[te], (ETextureIndex)te, this);
-	}
-	else
-	{
-		llerrs << "could not find layerset for LTO in wearable!" << llendl;
-	}
-}
-
 void LLViewerWearable::saveValues()
 {
 	//update saved settings so wearable is no longer dirty
diff --git a/indra/newview/llviewerwearable.h b/indra/newview/llviewerwearable.h
index b3c1e3c3baf..d8412b1c65c 100644
--- a/indra/newview/llviewerwearable.h
+++ b/indra/newview/llviewerwearable.h
@@ -30,6 +30,8 @@
 #include "llwearable.h"
 #include "llavatarappearancedefines.h"
 
+class LLVOAvatar;
+
 class LLViewerWearable : public LLWearable
 {
 	friend class LLWearableList;
@@ -58,12 +60,11 @@ class LLViewerWearable : public LLWearable
 	BOOL				isDirty() const;
 	BOOL				isOldVersion() const;
 
-	/*virtual*/ void	writeToAvatar();
+	/*virtual*/ void	writeToAvatar(LLAvatarAppearance *avatarp);
 	void				removeFromAvatar( BOOL upload_bake )	{ LLViewerWearable::removeFromAvatar( mType, upload_bake ); }
 	static void			removeFromAvatar( LLWearableType::EType type, BOOL upload_bake ); 
 
-	/*virtual*/ BOOL	exportFile(LLFILE* file) const;
-	/*virtual*/ EImportResult	importFile(LLFILE* file);
+	/*virtual*/ EImportResult	importFile(LLFILE* file, LLAvatarAppearance* avatarp);
 	
 	void				setParamsToDefaults();
 	void				setTexturesToDefaults();
@@ -98,18 +99,11 @@ class LLViewerWearable : public LLWearable
 	/*virtual*/void		addToBakedTextureHash(LLMD5& hash) const;
 
 protected:
-	typedef std::map<S32, LLLocalTextureObject*> te_map_t;
-
-	void 				createLayers(S32 te);
-	/*virtual*/void 	createVisualParams();
-
 	void				syncImages(te_map_t &src, te_map_t &dst);
 	void				destroyTextures();	
 	LLAssetID			mAssetID;
 	LLTransactionID		mTransactionID;
 
-	te_map_t mTEMap;				// maps TE to LocalTextureObject
-	te_map_t mSavedTEMap;			// last saved version of TEMap
 	LLUUID				mItemID;  // ID of the inventory item in the agent's inventory	
 };
 
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 081f1d62ca8..7772ae25a1c 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -5560,6 +5560,53 @@ S32 LLVOAvatar::getAttachmentCount()
 	return count;
 }
 
+BOOL LLVOAvatar::isWearingWearableType(LLWearableType::EType type) const
+{
+	if (mIsDummy) return TRUE;
+
+	if (isSelf())
+	{
+		return LLAvatarAppearance::isWearingWearableType(type);
+	}
+
+	switch(type)
+	{
+		case LLWearableType::WT_SHAPE:
+		case LLWearableType::WT_SKIN:
+		case LLWearableType::WT_HAIR:
+		case LLWearableType::WT_EYES:
+			return TRUE;  // everyone has all bodyparts
+		default:
+			break; // Do nothing
+	}
+
+	/* switch(type)
+		case LLWearableType::WT_SHIRT:
+			indicator_te = TEX_UPPER_SHIRT; */
+	for (LLAvatarAppearanceDictionary::Textures::const_iterator tex_iter = LLAvatarAppearanceDictionary::getInstance()->getTextures().begin();
+		 tex_iter != LLAvatarAppearanceDictionary::getInstance()->getTextures().end();
+		 ++tex_iter)
+	{
+		const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = tex_iter->second;
+		if (texture_dict->mWearableType == type)
+		{
+			// If you're checking another avatar's clothing, you don't have component textures.
+			// Thus, you must check to see if the corresponding baked texture is defined.
+			// NOTE: this is a poor substitute if you actually want to know about individual pieces of clothing
+			// this works for detecting a skirt (most important), but is ineffective at any piece of clothing that
+			// gets baked into a texture that always exists (upper or lower).
+			if (texture_dict->mIsUsedByBakedTexture)
+			{
+				const EBakedTextureIndex baked_index = texture_dict->mBakedTextureIndex;
+				return isTextureDefined(LLAvatarAppearanceDictionary::getInstance()->getBakedTexture(baked_index)->mTextureIndex);
+			}
+			return FALSE;
+		}
+	}
+	return FALSE;
+}
+
+
 
 // virtual
 void LLVOAvatar::invalidateComposite( LLTexLayerSet* layerset, BOOL upload_result )
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
index cc94c2a3eb4..9b59e5f0eb4 100755
--- a/indra/newview/llvoavatar.h
+++ b/indra/newview/llvoavatar.h
@@ -677,6 +677,7 @@ class LLVOAvatar :
 	virtual BOOL 		detachObject(LLViewerObject *viewer_object);
 	void				cleanupAttachedMesh( LLViewerObject* pVO );
 	static LLVOAvatar*  findAvatarFromAttachment(LLViewerObject* obj);
+	/*virtual*/ BOOL	isWearingWearableType(LLWearableType::EType type ) const;
 protected:
 	LLViewerJointAttachment* getTargetAttachmentPoint(LLViewerObject* viewer_object);
 	void 				lazyAttach();
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index 96fd41739f9..d0ccde09e80 100755
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -703,7 +703,7 @@ void LLVOAvatarSelf::idleUpdateAppearanceAnimation()
 		LLWearable *wearable = gAgentWearables.getTopWearable((LLWearableType::EType)type);
 		if (wearable)
 		{
-			wearable->writeToAvatar();
+			wearable->writeToAvatar(this);
 		}
 	}
 
@@ -1001,11 +1001,6 @@ void LLVOAvatarSelf::updateAttachmentVisibility(U32 camera_mode)
 	}
 }
 
-/*virtual*/ BOOL LLVOAvatarSelf::isWearingWearableType(LLWearableType::EType type ) const
-{
-	return gAgentWearables.getWearableCount(type) > 0;
-}
-
 //-----------------------------------------------------------------------------
 // updatedWearable( LLWearableType::EType type )
 // forces an update to any baked textures relevant to type.
@@ -2616,17 +2611,17 @@ void LLVOAvatarSelf::requestLayerSetUpdate(ETextureIndex index )
 
 LLViewerTexLayerSet* LLVOAvatarSelf::getLayerSet(ETextureIndex index) const
 {
-	/* switch(index)
-		case TEX_HEAD_BAKED:
-		case TEX_HEAD_BODYPAINT:
-			return mHeadLayerSet; */
-	const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = LLAvatarAppearanceDictionary::getInstance()->getTexture(index);
-	if (texture_dict->mIsUsedByBakedTexture)
-	{
-		const EBakedTextureIndex baked_index = texture_dict->mBakedTextureIndex;
-		return getLayerSet(baked_index);
-	}
-	return NULL;
+       /* switch(index)
+               case TEX_HEAD_BAKED:
+               case TEX_HEAD_BODYPAINT:
+                       return mHeadLayerSet; */
+       const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = LLAvatarAppearanceDictionary::getInstance()->getTexture(index);
+       if (texture_dict->mIsUsedByBakedTexture)
+       {
+               const EBakedTextureIndex baked_index = texture_dict->mBakedTextureIndex;
+               return getLayerSet(baked_index);
+       }
+       return NULL;
 }
 
 LLViewerTexLayerSet* LLVOAvatarSelf::getLayerSet(EBakedTextureIndex baked_index) const
@@ -2637,12 +2632,14 @@ LLViewerTexLayerSet* LLVOAvatarSelf::getLayerSet(EBakedTextureIndex baked_index)
                        return mHeadLayerSet; */
        if (baked_index >= 0 && baked_index < BAKED_NUM_INDICES)
        {
-                       return  getTexLayerSet(baked_index);
+		   return  getTexLayerSet(baked_index);
        }
        return NULL;
 }
 
 
+
+
 // static
 void LLVOAvatarSelf::onCustomizeStart(bool disable_camera_switch)
 {
diff --git a/indra/newview/llvoavatarself.h b/indra/newview/llvoavatarself.h
index 907564f8e16..395874ee625 100755
--- a/indra/newview/llvoavatarself.h
+++ b/indra/newview/llvoavatarself.h
@@ -249,8 +249,9 @@ class LLVOAvatarSelf :
 	void 				requestLayerSetUploads();
 	void				requestLayerSetUpload(LLAvatarAppearanceDefines::EBakedTextureIndex i);
 	void				requestLayerSetUpdate(LLAvatarAppearanceDefines::ETextureIndex i);
-	LLViewerTexLayerSet*	getLayerSet(LLAvatarAppearanceDefines::ETextureIndex index) const;
-	LLViewerTexLayerSet*	getLayerSet(LLAvatarAppearanceDefines::EBakedTextureIndex baked_index) const;
+	LLViewerTexLayerSet* getLayerSet(LLAvatarAppearanceDefines::EBakedTextureIndex baked_index) const;
+	LLViewerTexLayerSet* getLayerSet(LLAvatarAppearanceDefines::ETextureIndex index) const;
+
 	
 	//--------------------------------------------------------------------
 	// Composites
@@ -299,7 +300,6 @@ class LLVOAvatarSelf :
  **/
 
 public:
-	/*virtual*/ BOOL	isWearingWearableType(LLWearableType::EType type) const;
 	void				wearableUpdated(LLWearableType::EType type, BOOL upload_result);
 protected:
 	U32 getNumWearables(LLAvatarAppearanceDefines::ETextureIndex i) const;
diff --git a/indra/newview/llwearablelist.cpp b/indra/newview/llwearablelist.cpp
index 6c4790ad77f..50beaaec3fa 100644
--- a/indra/newview/llwearablelist.cpp
+++ b/indra/newview/llwearablelist.cpp
@@ -42,13 +42,15 @@ struct LLWearableArrivedData
 {
 	LLWearableArrivedData(LLAssetType::EType asset_type,
 		const std::string& wearable_name,
+		LLAvatarAppearance* avatarp,
 		void(*asset_arrived_callback)(LLViewerWearable*, void* userdata),
 						  void* userdata) :
 		mAssetType( asset_type ),
 		mCallback( asset_arrived_callback ), 
 		mUserdata( userdata ),
 		mName( wearable_name ),
-		mRetries(0)
+		mRetries(0),
+		mAvatarp(avatarp)
 		{}
 
 	LLAssetType::EType mAssetType;
@@ -56,6 +58,7 @@ struct LLWearableArrivedData
 	void*	mUserdata;
 	std::string mName;
 	S32	mRetries;
+	LLAvatarAppearance *mAvatarp;
 };
 
 ////////////////////////////////////////////////////////////////////////////
@@ -72,7 +75,7 @@ void LLWearableList::cleanup()
 	mList.clear();
 }
 
-void LLWearableList::getAsset(const LLAssetID& assetID, const std::string& wearable_name, LLAssetType::EType asset_type, void(*asset_arrived_callback)(LLViewerWearable*, void* userdata), void* userdata)
+void LLWearableList::getAsset(const LLAssetID& assetID, const std::string& wearable_name, LLAvatarAppearance* avatarp, LLAssetType::EType asset_type, void(*asset_arrived_callback)(LLViewerWearable*, void* userdata), void* userdata)
 {
 	llassert( (asset_type == LLAssetType::AT_CLOTHING) || (asset_type == LLAssetType::AT_BODYPART) );
 	LLViewerWearable* instance = get_if_there(mList, assetID, (LLViewerWearable*)NULL );
@@ -85,7 +88,7 @@ void LLWearableList::getAsset(const LLAssetID& assetID, const std::string& weara
 		gAssetStorage->getAssetData(assetID,
 			asset_type,
 			LLWearableList::processGetAssetReply,
-			(void*)new LLWearableArrivedData( asset_type, wearable_name, asset_arrived_callback, userdata ),
+			(void*)new LLWearableArrivedData( asset_type, wearable_name, avatarp, asset_arrived_callback, userdata ),
 			TRUE);
 	}
 }
@@ -96,11 +99,16 @@ void LLWearableList::processGetAssetReply( const char* filename, const LLAssetID
 	BOOL isNewWearable = FALSE;
 	LLWearableArrivedData* data = (LLWearableArrivedData*) userdata;
 	LLViewerWearable* wearable = NULL; // NULL indicates failure
+	LLAvatarAppearance *avatarp = data->mAvatarp;
 	
 	if( !filename )
 	{
 		LL_WARNS("Wearable") << "Bad Wearable Asset: missing file." << LL_ENDL;
 	}
+	else if(!avatarp)
+	{
+		LL_WARNS("Wearable") << "Bad asset request: missing avatar pointer." << LL_ENDL;
+	}
 	else if (status >= 0)
 	{
 		// read the file
@@ -112,7 +120,7 @@ void LLWearableList::processGetAssetReply( const char* filename, const LLAssetID
 		else
 		{
 			wearable = new LLViewerWearable(uuid);
-			LLWearable::EImportResult result = wearable->importFile( fp );
+			LLWearable::EImportResult result = wearable->importFile( fp, avatarp );
 			if (LLWearable::SUCCESS != result)
 			{
 				if (wearable->getType() == LLWearableType::WT_COUNT)
@@ -222,12 +230,12 @@ LLViewerWearable* LLWearableList::createCopy(const LLViewerWearable* old_wearabl
 	return wearable;
 }
 
-LLViewerWearable* LLWearableList::createNewWearable( LLWearableType::EType type )
+LLViewerWearable* LLWearableList::createNewWearable( LLWearableType::EType type, LLAvatarAppearance *avatarp )
 {
 	lldebugs << "LLWearableList::createNewWearable()" << llendl;
 
 	LLViewerWearable *wearable = generateNewWearable();
-	wearable->setType( type );
+	wearable->setType( type, avatarp );
 	
 	std::string name = LLTrans::getString( LLWearableType::getTypeDefaultNewName(wearable->getType()) );
 	wearable->setName( name );
diff --git a/indra/newview/llwearablelist.h b/indra/newview/llwearablelist.h
index 0f3078facff..d6f0fd09a6d 100644
--- a/indra/newview/llwearablelist.h
+++ b/indra/newview/llwearablelist.h
@@ -50,12 +50,13 @@ class LLWearableList : public LLSingleton<LLWearableList>
 
 	void				getAsset(const LLAssetID& assetID,
 								 const std::string& wearable_name,
+								 LLAvatarAppearance *avatarp,
 								 LLAssetType::EType asset_type,
 								 void(*asset_arrived_callback)(LLViewerWearable*, void* userdata),
 								 void* userdata);
 
 	LLViewerWearable*			createCopy(const LLViewerWearable* old_wearable, const std::string& new_name = std::string());
-	LLViewerWearable*			createNewWearable(LLWearableType::EType type);
+	LLViewerWearable*			createNewWearable(LLWearableType::EType type, LLAvatarAppearance *avatarp);
 	
 	// Callback
 	static void	 	    processGetAssetReply(const char* filename, const LLAssetID& assetID, void* user_data, S32 status, LLExtStat ext_status);
-- 
GitLab


From b4866775a2acc98ebcb3986d7779eea479028ff9 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Tue, 11 Sep 2012 20:57:04 -0400
Subject: [PATCH 069/436] Dump XML tweaks, suppress wearable updates when bakes
 should dominate

---
 indra/newview/llviewermenu.cpp                         |  9 +++++++++
 indra/newview/llvoavatar.cpp                           |  5 +++++
 indra/newview/llwearable.cpp                           |  2 +-
 .../skins/default/xui/en/menu_attachment_other.xml     |  2 +-
 .../skins/default/xui/en/menu_attachment_self.xml      |  2 +-
 .../newview/skins/default/xui/en/menu_avatar_other.xml |  2 +-
 .../newview/skins/default/xui/en/menu_avatar_self.xml  | 10 +---------
 .../skins/default/xui/en/menu_inspect_avatar_gear.xml  |  2 +-
 .../skins/default/xui/en/menu_inspect_self_gear.xml    |  2 +-
 9 files changed, 21 insertions(+), 15 deletions(-)

diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index 9c748c7f865..e3e05ef80da 100755
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -1596,6 +1596,14 @@ class LLAdvancedEnableGrabBakedTexture : public view_listener_t
 ///////////////////////
 
 
+class LLAdvancedEnableAppearanceToXML : public view_listener_t
+{
+	bool handleEvent(const LLSD& userdata)
+	{
+		return gSavedSettings.getBOOL("DebugAvatarCompositeBaked");
+	}
+};
+
 class LLAdvancedAppearanceToXML : public view_listener_t
 {
 	bool handleEvent(const LLSD& userdata)
@@ -8459,6 +8467,7 @@ void initialize_menus()
 
 	// Advanced > Character > Character Tests
 	view_listener_t::addMenu(new LLAdvancedAppearanceToXML(), "Advanced.AppearanceToXML");
+	view_listener_t::addMenu(new LLAdvancedEnableAppearanceToXML(), "Advanced.EnableAppearanceToXML");
 	view_listener_t::addMenu(new LLAdvancedToggleCharacterGeometry(), "Advanced.ToggleCharacterGeometry");
 
 	view_listener_t::addMenu(new LLAdvancedTestMale(), "Advanced.TestMale");
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 61816c1771c..96e59dd9ebc 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -7361,7 +7361,9 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 //			llinfos << "processAvatarAppearance end  " << mID << llendl;
 			return;
 		}
+		clearVisualParamWeights();
 	}
+	dumpArchetypeXML("process_post_clear");
 
 	ESex old_sex = getSex();
 
@@ -7481,6 +7483,8 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 			}
 		}
 
+		dumpArchetypeXML("process_post_set_weights");
+
 		const S32 expected_tweakable_count = getVisualParamCountInGroup(VISUAL_PARAM_GROUP_TWEAKABLE); // don't worry about VISUAL_PARAM_GROUP_TWEAKABLE_NO_TRANSMIT
 		if (num_blocks != expected_tweakable_count)
 		{
@@ -7545,6 +7549,7 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 
 	updateMeshTextures();
 
+	dumpArchetypeXML("process_end");
 //	llinfos << "processAvatarAppearance end " << mID << llendl;
 }
 
diff --git a/indra/newview/llwearable.cpp b/indra/newview/llwearable.cpp
index 3f07d6877c7..b924a4471d0 100755
--- a/indra/newview/llwearable.cpp
+++ b/indra/newview/llwearable.cpp
@@ -619,7 +619,7 @@ void LLWearable::setTexturesToDefaults()
 void LLWearable::writeToAvatar()
 {
 	if (!isAgentAvatarValid()) return;
-#if 0
+#if 1
 	if (!gAgentAvatarp->isUsingLocalAppearance())
 	{
 		return;
diff --git a/indra/newview/skins/default/xui/en/menu_attachment_other.xml b/indra/newview/skins/default/xui/en/menu_attachment_other.xml
index 6f922730977..46ba4bd29d2 100755
--- a/indra/newview/skins/default/xui/en/menu_attachment_other.xml
+++ b/indra/newview/skins/default/xui/en/menu_attachment_other.xml
@@ -85,7 +85,7 @@
             <menu_item_call.on_click
              function="Advanced.AppearanceToXML" />
             <menu_item_call.on_visible
-             function="IsGodCustomerService"/>
+             function="Advanced.EnableAppearanceToXML"/>
     </menu_item_call>
 	    <menu_item_call
          label="Zoom In"
diff --git a/indra/newview/skins/default/xui/en/menu_attachment_self.xml b/indra/newview/skins/default/xui/en/menu_attachment_self.xml
index 84e26268bdc..28e032ce5f0 100755
--- a/indra/newview/skins/default/xui/en/menu_attachment_self.xml
+++ b/indra/newview/skins/default/xui/en/menu_attachment_self.xml
@@ -129,7 +129,7 @@ name="Edit Outfit">
             <menu_item_call.on_click
              function="Advanced.AppearanceToXML" />
             <menu_item_call.on_visible
-             function="IsGodCustomerService"/>
+             function="Advanced.EnableAppearanceToXML"/>
     </menu_item_call>
   <menu_item_separator
   layout="topleft" />
diff --git a/indra/newview/skins/default/xui/en/menu_avatar_other.xml b/indra/newview/skins/default/xui/en/menu_avatar_other.xml
index 1c39984625c..e7c2b80da27 100755
--- a/indra/newview/skins/default/xui/en/menu_avatar_other.xml
+++ b/indra/newview/skins/default/xui/en/menu_avatar_other.xml
@@ -85,7 +85,7 @@
             <menu_item_call.on_click
              function="Advanced.AppearanceToXML" />
             <menu_item_call.on_visible
-             function="IsGodCustomerService"/>
+             function="Advanced.EnableAppearanceToXML"/>
     </menu_item_call>
 	    <menu_item_call
          label="Zoom In"
diff --git a/indra/newview/skins/default/xui/en/menu_avatar_self.xml b/indra/newview/skins/default/xui/en/menu_avatar_self.xml
index 0e79b0fee36..c1ff026a74e 100755
--- a/indra/newview/skins/default/xui/en/menu_avatar_self.xml
+++ b/indra/newview/skins/default/xui/en/menu_avatar_self.xml
@@ -267,14 +267,6 @@
             <menu_item_call.on_click
              function="Advanced.AppearanceToXML" />
             <menu_item_call.on_visible
-             function="IsGodCustomerService"/>
-    </menu_item_call>
-    <menu_item_call
-		 label="Dump XML"
-         name="Dump XML">
-            <menu_item_call.on_click
-             function="Advanced.AppearanceToXML" />
-            <menu_item_call.on_visible
-             function="IsGodCustomerService"/>
+             function="Advanced.EnableAppearanceToXML"/>
     </menu_item_call>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml
index 4fdfb2281bb..354ddc31099 100755
--- a/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml
+++ b/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml
@@ -118,7 +118,7 @@
             <menu_item_call.on_click
              function="Advanced.AppearanceToXML" />
             <menu_item_call.on_visible
-             function="IsGodCustomerService"/>
+             function="Advanced.EnableAppearanceToXML"/>
     </menu_item_call>
   <menu_item_call
    label="Find On Map"
diff --git a/indra/newview/skins/default/xui/en/menu_inspect_self_gear.xml b/indra/newview/skins/default/xui/en/menu_inspect_self_gear.xml
index f935f0f312a..84815caca97 100755
--- a/indra/newview/skins/default/xui/en/menu_inspect_self_gear.xml
+++ b/indra/newview/skins/default/xui/en/menu_inspect_self_gear.xml
@@ -255,6 +255,6 @@
             <menu_item_call.on_click
              function="Advanced.AppearanceToXML" />
             <menu_item_call.on_visible
-             function="IsGodCustomerService"/>
+             function="Advanced.EnableAppearanceToXML"/>
     </menu_item_call>
 </toggleable_menu>
-- 
GitLab


From c34329fa4c8cc5adbad15d8e8f00296c71016a02 Mon Sep 17 00:00:00 2001
From: Nyx Linden <nyx@lindenlab.com>
Date: Wed, 12 Sep 2012 21:35:25 +0000
Subject: [PATCH 070/436] SH-3347 create demo of back end texture baking
 service

First link of the back-end service with some LLAppearance code.
---
 indra/appearance_utility/CMakeLists.txt       |  28 ++-
 .../appearance_utility/appearance_utility.cpp |   4 +-
 .../appearance_utility/llbakingshadermgr.cpp  | 226 ++++++++++++++++++
 indra/appearance_utility/llbakingshadermgr.h  | 137 +++++++++++
 indra/llappearance/llavatarappearance.cpp     |  13 +
 indra/llvfs/CMakeLists.txt                    |   1 +
 indra/newview/llvoavatar.cpp                  |  12 -
 7 files changed, 397 insertions(+), 24 deletions(-)
 create mode 100644 indra/appearance_utility/llbakingshadermgr.cpp
 create mode 100644 indra/appearance_utility/llbakingshadermgr.h

diff --git a/indra/appearance_utility/CMakeLists.txt b/indra/appearance_utility/CMakeLists.txt
index d860dae4df8..efca51bd9fe 100644
--- a/indra/appearance_utility/CMakeLists.txt
+++ b/indra/appearance_utility/CMakeLists.txt
@@ -8,8 +8,13 @@ include(CARes)
 include(OpenSSL)
 include(UI)
 include(LLAppearance)
+include(LLCharacter)
 include(LLCommon)
+include(LLImage)
 include(LLInventory)
+include(LLMath)
+include(LLKDU)
+include(LLRender)
 include(LLVFS)
 include(LLXML)
 include(LLUI)
@@ -20,7 +25,12 @@ include_directories(
     ${LLVFS_INCLUDE_DIRS}
     ${LLXML_INCLUDE_DIRS}
     ${LLUI_INCLUDE_DIRS}
+    ${LLCHARACTER_INCLUDE_DIRS}
+    ${LLKDU_INCLUDE_DIRS}
+    ${LLIMAGE_INCLUDE_DIRS}
+    ${LLMATH_INCLUDE_DIRS}
     ${LLINVENTORY_INCLUDE_DIRS}
+    ${LLRENDER_INCLUDE_DIRS}
     ${CURL_INCLUDE_DIRS}
     ${CARES_INCLUDE_DIRS}
     ${OPENSSL_INCLUDE_DIRS}
@@ -28,9 +38,9 @@ include_directories(
     ${LLAPPEARANCE_INCLUDE_DIRS}
     )
 
-set(appearance_utility_SOURCE_FILES appearance_utility.cpp)
+set(appearance_utility_SOURCE_FILES appearance_utility.cpp llbakingshadermgr.cpp)
 
-set(appearance_utility_HEADER_FILES CMakeLists.txt)
+set(appearance_utility_HEADER_FILES CMakeLists.txt llbakingshadermgr.h)
 
 set_source_files_properties(${appearance_utility_HEADER_FILES}
                             PROPERTIES HEADER_FILES_ONLY TRUE)
@@ -40,17 +50,15 @@ list(APPEND appearance_utility_SOURCE_FILES ${appearance_utility_HEADER_FILES})
 add_executable(appearance-utility-bin ${appearance_utility_SOURCE_FILES})
 
 target_link_libraries(appearance-utility-bin
-    ${CURL_LIBRARIES}
-    ${CARES_LIBRARIES}
-    ${OPENSSL_LIBRARIES}
-    ${CRYPTO_LIBRARIES}
-    ${UI_LIBRARIES}
     ${LLAPPEARANCE_LIBRARIES}
-    ${LLINVENTORY_LIBRARIES}
-    ${LLXML_LIBRARIES}
+    ${LLCHARACTER_LIBRARIES}
+    ${LLRENDER_LIBRARIES}
     ${LLUI_LIBRARIES}
-    ${LLVFS_LIBRARIES}
+    ${UI_LIBRARIES}
+    ${LLIMAGE_LIBRARIES}
     ${LLCOMMON_LIBRARIES}
+    ${LLKDU_LIBRARIES}
+    ${KDU_LIBRARY}
     )
 
 add_custom_target(appearance-utility-bin-target ALL
diff --git a/indra/appearance_utility/appearance_utility.cpp b/indra/appearance_utility/appearance_utility.cpp
index c7f8703e286..26f1778ac7b 100644
--- a/indra/appearance_utility/appearance_utility.cpp
+++ b/indra/appearance_utility/appearance_utility.cpp
@@ -38,7 +38,7 @@
 #include "llsdserialize.h"
 #include "llsdutil.h"
 
-//#include "llwearabledata.h"
+#include "llwearabledata.h"
 
 enum EResult
 {
@@ -152,7 +152,7 @@ EResult process_tbd(LLSD& input, std::ostream& output, LLSD& error_llsd)
 {
 	EResult rv = RV_SUCCESS;
 
-	//LLWearableData wearable_data;
+	LLWearableData wearable_data;
 
 	LLSD result;
 	result["success"] = true;
diff --git a/indra/appearance_utility/llbakingshadermgr.cpp b/indra/appearance_utility/llbakingshadermgr.cpp
new file mode 100644
index 00000000000..a858fc760fa
--- /dev/null
+++ b/indra/appearance_utility/llbakingshadermgr.cpp
@@ -0,0 +1,226 @@
+
+/** 
+ * @file LLBakingShaderMgr.cpp
+ * @brief Viewer shader manager implementation.
+ *
+ * $LicenseInfo:firstyear=2005&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+
+#include "linden_common.h"
+
+#include "llbakingshadermgr.h"
+
+#include "lldir.h"
+#include "llfile.h"
+#include "llrender.h"
+#include "llvertexbuffer.h"
+
+#if LL_DARWIN
+#include "OpenGL/OpenGL.h"
+#endif
+
+#ifdef LL_RELEASE_FOR_DOWNLOAD
+#define UNIFORM_ERRS LL_WARNS_ONCE("Shader")
+#else
+#define UNIFORM_ERRS LL_ERRS("Shader")
+#endif
+
+// Lots of STL stuff in here, using namespace std to keep things more readable
+using std::vector;
+using std::pair;
+using std::make_pair;
+using std::string;
+
+BOOL				LLBakingShaderMgr::sInitialized = FALSE;
+bool				LLBakingShaderMgr::sSkipReload = false;
+
+//utility shaders
+LLGLSLShader	gAlphaMaskProgram;
+
+
+LLBakingShaderMgr::LLBakingShaderMgr() :
+	mVertexShaderLevel(SHADER_COUNT, 0),
+	mMaxAvatarShaderLevel(0)
+{	
+}
+
+LLBakingShaderMgr::~LLBakingShaderMgr()
+{
+	mVertexShaderLevel.clear();
+	mShaderList.clear();
+}
+
+// static
+LLBakingShaderMgr * LLBakingShaderMgr::instance()
+{
+	if(NULL == sInstance)
+	{
+		sInstance = new LLBakingShaderMgr();
+	}
+
+	return static_cast<LLBakingShaderMgr*>(sInstance);
+}
+
+void LLBakingShaderMgr::initAttribsAndUniforms(void)
+{
+	if (mReservedAttribs.empty())
+	{
+		LLShaderMgr::initAttribsAndUniforms();
+	}	
+}
+	
+
+//============================================================================
+// Set Levels
+
+S32 LLBakingShaderMgr::getVertexShaderLevel(S32 type)
+{
+	return mVertexShaderLevel[type];
+}
+
+//============================================================================
+// Shader Management
+
+void LLBakingShaderMgr::setShaders()
+{
+	//setShaders might be called redundantly by gSavedSettings, so return on reentrance
+	static bool reentrance = false;
+	
+	if (!sInitialized || reentrance || sSkipReload)
+	{
+		return;
+	}
+
+	LLGLSLShader::sIndexedTextureChannels = llmax(gGLManager.mNumTextureImageUnits, 1);
+
+	//NEVER use more than 16 texture channels (work around for prevalent driver bug)
+	LLGLSLShader::sIndexedTextureChannels = llmin(LLGLSLShader::sIndexedTextureChannels, 16);
+
+	if (gGLManager.mGLSLVersionMajor < 1 ||
+		(gGLManager.mGLSLVersionMajor == 1 && gGLManager.mGLSLVersionMinor <= 20))
+	{ //NEVER use indexed texture rendering when GLSL version is 1.20 or earlier
+		LLGLSLShader::sIndexedTextureChannels = 1;
+	}
+
+	reentrance = true;
+
+	//setup preprocessor definitions
+	LLShaderMgr::instance()->mDefinitions["NUM_TEX_UNITS"] = llformat("%d", gGLManager.mNumTextureImageUnits);
+	
+	// Make sure the compiled shader map is cleared before we recompile shaders.
+	mShaderObjects.clear();
+	
+	initAttribsAndUniforms();
+
+	// Shaders
+	LL_INFOS("ShaderLoading") << "\n~~~~~~~~~~~~~~~~~~\n Loading Shaders:\n~~~~~~~~~~~~~~~~~~" << LL_ENDL;
+	LL_INFOS("ShaderLoading") << llformat("Using GLSL %d.%d", gGLManager.mGLSLVersionMajor, gGLManager.mGLSLVersionMinor) << llendl;
+
+	for (S32 i = 0; i < SHADER_COUNT; i++)
+	{
+		mVertexShaderLevel[i] = 0;
+	}
+	mMaxAvatarShaderLevel = 0;
+
+	LLGLSLShader::sNoFixedFunction = false;
+	LLVertexBuffer::unbind();
+	if (gGLManager.mGLSLVersionMajor > 1 || gGLManager.mGLSLVersionMinor >= 10)
+	{
+		//using shaders, disable fixed function
+		LLGLSLShader::sNoFixedFunction = true;
+
+		//gPipeline.mVertexShadersEnabled = TRUE;
+		//gPipeline.mVertexShadersLoaded = 1;
+
+		loadShadersInterface();
+	}
+	else
+	{
+		LLGLSLShader::sNoFixedFunction = false;
+		//gPipeline.mVertexShadersEnabled = FALSE;
+		//gPipeline.mVertexShadersLoaded = 0;
+		mVertexShaderLevel[SHADER_LIGHTING] = 0;
+		mVertexShaderLevel[SHADER_INTERFACE] = 0;
+		mVertexShaderLevel[SHADER_ENVIRONMENT] = 0;
+		mVertexShaderLevel[SHADER_WATER] = 0;
+		mVertexShaderLevel[SHADER_OBJECT] = 0;
+		mVertexShaderLevel[SHADER_EFFECT] = 0;
+		mVertexShaderLevel[SHADER_WINDLIGHT] = 0;
+		mVertexShaderLevel[SHADER_AVATAR] = 0;
+	}
+	
+	//gPipeline.createGLBuffers();
+
+	reentrance = false;
+}
+
+void LLBakingShaderMgr::unloadShaders()
+{
+	gAlphaMaskProgram.unload();
+
+	mVertexShaderLevel[SHADER_INTERFACE] = 0;
+
+	//gPipeline.mVertexShadersLoaded = 0;
+}
+
+BOOL LLBakingShaderMgr::loadShadersInterface()
+{
+	BOOL success = TRUE;
+
+	if (success)
+	{
+		gAlphaMaskProgram.mName = "Alpha Mask Shader";
+		gAlphaMaskProgram.mShaderFiles.clear();
+		gAlphaMaskProgram.mShaderFiles.push_back(make_pair("interface/alphamaskV.glsl", GL_VERTEX_SHADER_ARB));
+		gAlphaMaskProgram.mShaderFiles.push_back(make_pair("interface/alphamaskF.glsl", GL_FRAGMENT_SHADER_ARB));
+		gAlphaMaskProgram.mShaderLevel = mVertexShaderLevel[SHADER_INTERFACE];
+		success = gAlphaMaskProgram.createShader(NULL, NULL);
+	}
+
+	if( !success )
+	{
+		mVertexShaderLevel[SHADER_INTERFACE] = 0;
+		return FALSE;
+	}
+	
+	return TRUE;
+}
+
+std::string LLBakingShaderMgr::getShaderDirPrefix(void)
+{
+	return gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "shaders/class");
+}
+
+void LLBakingShaderMgr::updateShaderUniforms(LLGLSLShader * shader)
+{
+}
+
+LLBakingShaderMgr::shader_iter LLBakingShaderMgr::beginShaders() const
+{
+	return mShaderList.begin();
+}
+
+LLBakingShaderMgr::shader_iter LLBakingShaderMgr::endShaders() const
+{
+	return mShaderList.end();
+}
diff --git a/indra/appearance_utility/llbakingshadermgr.h b/indra/appearance_utility/llbakingshadermgr.h
new file mode 100644
index 00000000000..d2376829234
--- /dev/null
+++ b/indra/appearance_utility/llbakingshadermgr.h
@@ -0,0 +1,137 @@
+/** 
+ * @file llbakingshadermgr.h
+ * @brief Texture Baking Shader Manager
+ *
+ * $LicenseInfo:firstyear=2001&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_BAKING_SHADER_MGR_H
+#define LL_BAKING_SHADER_MGR_H
+
+#include "llshadermgr.h"
+
+class LLBakingShaderMgr: public LLShaderMgr
+{
+public:
+	static BOOL sInitialized;
+	static bool sSkipReload;
+
+	LLBakingShaderMgr();
+	/* virtual */ ~LLBakingShaderMgr();
+
+	// singleton pattern implementation
+	static LLBakingShaderMgr * instance();
+
+	void initAttribsAndUniforms(void);
+	void setShaders();
+	void unloadShaders();
+	S32 getVertexShaderLevel(S32 type);
+	BOOL loadShadersInterface();
+
+	std::vector<S32> mVertexShaderLevel;
+	S32	mMaxAvatarShaderLevel;
+
+	enum EShaderClass
+	{
+		SHADER_LIGHTING,
+		SHADER_OBJECT,
+		SHADER_AVATAR,
+		SHADER_ENVIRONMENT,
+		SHADER_INTERFACE,
+		SHADER_EFFECT,
+		SHADER_WINDLIGHT,
+		SHADER_WATER,
+		SHADER_DEFERRED,
+		SHADER_TRANSFORM,
+		SHADER_COUNT
+	};
+
+	// simple model of forward iterator
+	// http://www.sgi.com/tech/stl/ForwardIterator.html
+	class shader_iter
+	{
+	private:
+		friend bool operator == (shader_iter const & a, shader_iter const & b);
+		friend bool operator != (shader_iter const & a, shader_iter const & b);
+
+		typedef std::vector<LLGLSLShader *>::const_iterator base_iter_t;
+	public:
+		shader_iter()
+		{
+		}
+
+		shader_iter(base_iter_t iter) : mIter(iter)
+		{
+		}
+
+		LLGLSLShader & operator * () const
+		{
+			return **mIter;
+		}
+
+		LLGLSLShader * operator -> () const
+		{
+			return *mIter;
+		}
+
+		shader_iter & operator++ ()
+		{
+			++mIter;
+			return *this;
+		}
+
+		shader_iter operator++ (int)
+		{
+			return mIter++;
+		}
+
+	private:
+		base_iter_t mIter;
+	};
+
+	shader_iter beginShaders() const;
+	shader_iter endShaders() const;
+
+	/* virtual */ std::string getShaderDirPrefix(void);
+
+	/* virtual */ void updateShaderUniforms(LLGLSLShader * shader);
+
+private:
+	
+	// the list of shaders we need to propagate parameters to.
+	std::vector<LLGLSLShader *> mShaderList;
+
+}; //LLBakingShaderMgr
+
+inline bool operator == (LLBakingShaderMgr::shader_iter const & a, LLBakingShaderMgr::shader_iter const & b)
+{
+	return a.mIter == b.mIter;
+}
+
+inline bool operator != (LLBakingShaderMgr::shader_iter const & a, LLBakingShaderMgr::shader_iter const & b)
+{
+	return a.mIter != b.mIter;
+}
+
+extern LLVector4			gShinyOrigin;
+
+#endif // LL_BAKING_SHADER_MGR_H
diff --git a/indra/llappearance/llavatarappearance.cpp b/indra/llappearance/llavatarappearance.cpp
index 7d37f5f5093..ed8ff1e69ee 100644
--- a/indra/llappearance/llavatarappearance.cpp
+++ b/indra/llappearance/llavatarappearance.cpp
@@ -1833,5 +1833,18 @@ BOOL LLAvatarAppearance::LLAvatarXmlInfo::parseXmlMorphNodes(LLXmlTreeNode* root
 	return TRUE;
 }
 
+//virtual 
+LLAvatarAppearance::LLMaskedMorph::LLMaskedMorph(LLVisualParam *morph_target, BOOL invert, std::string layer) :
+			mMorphTarget(morph_target), 
+			mInvert(invert),
+			mLayer(layer)
+{
+	LLPolyMorphTarget *target = dynamic_cast<LLPolyMorphTarget*>(morph_target);
+	if (target)
+	{
+		target->addPendingMorphMask();
+	}
+}
+
 
 
diff --git a/indra/llvfs/CMakeLists.txt b/indra/llvfs/CMakeLists.txt
index a819d128617..261d666548b 100644
--- a/indra/llvfs/CMakeLists.txt
+++ b/indra/llvfs/CMakeLists.txt
@@ -69,6 +69,7 @@ set(vfs_BOOST_LIBRARIES
 
 target_link_libraries(llvfs
     ${vfs_BOOST_LIBRARIES}
+    ${LLCOMMON_LIBRARIES}
     )
 
 if (DARWIN)
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 7772ae25a1c..8ac39fe5ef1 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -7333,17 +7333,5 @@ BOOL LLVOAvatar::isTextureVisible(LLAvatarAppearanceDefines::ETextureIndex type,
 	return FALSE;
 }
 
-//virtual 
-LLAvatarAppearance::LLMaskedMorph::LLMaskedMorph(LLVisualParam *morph_target, BOOL invert, std::string layer) :
-			mMorphTarget(morph_target), 
-			mInvert(invert),
-			mLayer(layer)
-{
-	LLPolyMorphTarget *target = dynamic_cast<LLPolyMorphTarget*>(morph_target);
-	if (target)
-	{
-		target->addPendingMorphMask();
-	}
-}
 
 
-- 
GitLab


From 7ff613a7f1833d8b4edfa78894cae57e887bd7af Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Wed, 12 Sep 2012 21:58:21 +0000
Subject: [PATCH 071/436] Fix for link errors on linux

---
 indra/appearance_utility/CMakeLists.txt | 1 -
 indra/llvfs/CMakeLists.txt              | 1 -
 2 files changed, 2 deletions(-)

diff --git a/indra/appearance_utility/CMakeLists.txt b/indra/appearance_utility/CMakeLists.txt
index efca51bd9fe..3c6d30b124b 100644
--- a/indra/appearance_utility/CMakeLists.txt
+++ b/indra/appearance_utility/CMakeLists.txt
@@ -56,7 +56,6 @@ target_link_libraries(appearance-utility-bin
     ${LLUI_LIBRARIES}
     ${UI_LIBRARIES}
     ${LLIMAGE_LIBRARIES}
-    ${LLCOMMON_LIBRARIES}
     ${LLKDU_LIBRARIES}
     ${KDU_LIBRARY}
     )
diff --git a/indra/llvfs/CMakeLists.txt b/indra/llvfs/CMakeLists.txt
index 261d666548b..a819d128617 100644
--- a/indra/llvfs/CMakeLists.txt
+++ b/indra/llvfs/CMakeLists.txt
@@ -69,7 +69,6 @@ set(vfs_BOOST_LIBRARIES
 
 target_link_libraries(llvfs
     ${vfs_BOOST_LIBRARIES}
-    ${LLCOMMON_LIBRARIES}
     )
 
 if (DARWIN)
-- 
GitLab


From da1a303fc33b098f133cb72a8bac9d8e886d65df Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Thu, 13 Sep 2012 02:09:21 +0000
Subject: [PATCH 072/436] Moved most of the appearance utility application
 level logic into LLAppAppearanceUtility.  Added LLBakingProcess class for
 adding new process modes.  Create a couple concrete classes for llappearance
 base classes.

---
 indra/appearance_utility/CMakeLists.txt       |  21 +-
 .../appearance_utility/appearance_utility.cpp | 403 +----------------
 .../llappappearanceutility.cpp                | 418 ++++++++++++++++++
 .../llappappearanceutility.h                  |  97 ++++
 indra/appearance_utility/llbakingavatar.cpp   |  61 +++
 indra/appearance_utility/llbakingavatar.h     |  76 ++++
 indra/appearance_utility/llbakingjoint.cpp    |  54 +++
 indra/appearance_utility/llbakingjoint.h      |  44 ++
 .../appearance_utility/llbakingjointmesh.cpp  |  43 ++
 indra/appearance_utility/llbakingjointmesh.h  |  43 ++
 indra/appearance_utility/llbakingprocess.h    |  55 +++
 indra/appearance_utility/llbakingshadermgr.h  |   4 +-
 indra/appearance_utility/llprocessparams.cpp  |  51 +++
 indra/appearance_utility/llprocessparams.h    |  42 ++
 indra/llappearance/llavatarjointmesh.h        |   2 +-
 indra/newview/llviewerjointmesh.h             |   2 +-
 16 files changed, 1025 insertions(+), 391 deletions(-)
 create mode 100644 indra/appearance_utility/llappappearanceutility.cpp
 create mode 100644 indra/appearance_utility/llappappearanceutility.h
 create mode 100644 indra/appearance_utility/llbakingavatar.cpp
 create mode 100644 indra/appearance_utility/llbakingavatar.h
 create mode 100644 indra/appearance_utility/llbakingjoint.cpp
 create mode 100644 indra/appearance_utility/llbakingjoint.h
 create mode 100644 indra/appearance_utility/llbakingjointmesh.cpp
 create mode 100644 indra/appearance_utility/llbakingjointmesh.h
 create mode 100644 indra/appearance_utility/llbakingprocess.h
 create mode 100644 indra/appearance_utility/llprocessparams.cpp
 create mode 100644 indra/appearance_utility/llprocessparams.h

diff --git a/indra/appearance_utility/CMakeLists.txt b/indra/appearance_utility/CMakeLists.txt
index 3c6d30b124b..dfd552ddc6a 100644
--- a/indra/appearance_utility/CMakeLists.txt
+++ b/indra/appearance_utility/CMakeLists.txt
@@ -38,9 +38,26 @@ include_directories(
     ${LLAPPEARANCE_INCLUDE_DIRS}
     )
 
-set(appearance_utility_SOURCE_FILES appearance_utility.cpp llbakingshadermgr.cpp)
+set(appearance_utility_SOURCE_FILES
+    appearance_utility.cpp
+    llappappearanceutility.cpp
+    llbakingavatar.cpp
+    llbakingjoint.cpp
+    llbakingjointmesh.cpp
+    llbakingshadermgr.cpp
+    llprocessparams.cpp
+    )
 
-set(appearance_utility_HEADER_FILES CMakeLists.txt llbakingshadermgr.h)
+set(appearance_utility_HEADER_FILES
+    CMakeLists.txt
+    llappappearanceutility.h
+    llbakingavatar.h
+    llbakingjoint.h
+    llbakingjointmesh.h
+    llbakingprocess.h
+    llbakingshadermgr.h
+    llprocessparams.h
+    )
 
 set_source_files_properties(${appearance_utility_HEADER_FILES}
                             PROPERTIES HEADER_FILES_ONLY TRUE)
diff --git a/indra/appearance_utility/appearance_utility.cpp b/indra/appearance_utility/appearance_utility.cpp
index 26f1778ac7b..098c3550ded 100644
--- a/indra/appearance_utility/appearance_utility.cpp
+++ b/indra/appearance_utility/appearance_utility.cpp
@@ -25,408 +25,41 @@
  * $/LicenseInfo$
  */
 
-#include <iostream>
-#include <sstream>
-#include <string>
-
+// linden includes
 #include "linden_common.h"
-
-#include "llapp.h"
 #include "llapr.h"
-#include "llerrorcontrol.h"
-#include "llsd.h"
-#include "llsdserialize.h"
-#include "llsdutil.h"
-
-#include "llwearabledata.h"
-
-enum EResult
-{
-	RV_SUCCESS = 0,
-	RV_UNKNOWN_ERROR,
-	RV_BAD_ARGUMENTS,
-	RV_UNABLE_OPEN,
-	RV_UNABLE_TO_PARSE,
-};
-
-static const std::string MESSAGE_RV_UNKNOWN("Unknown error.");
-static const std::string MESSAGE_RV_ARGUMENTS 
-("Invalid arguments: ");
-static const std::string MESSAGE_RV_UNABLE_OPEN("Unable to open file: ");
-static const std::string MESSAGE_RV_UNABLE_TO_PARSE("Unable to parse input LLSD.");
-
-static const apr_getopt_option_t APPEARANCE_UTILITY_OPTIONS[] =
-{
-	{"tbd", 't', 0, "Extract dump information from a mesh asset."},
-	{"output", 'o', 1, "The output file to write to.  Default is stdout"},
-	{"agent-id", 'a', 1, "The agent-id of the user."},
-	{"grid", 'g', 1, "The grid."},
-	{"help", 'h', 0, "Print the help message."},
-	{0, 0, 0, 0}
-};
-
-const std::string NOTHING_EXTRA("");
-
-/**
- * Helper to return the standard error based on the return value.
- */
-LLSD spit_error(EResult rv, const std::string& extra = NOTHING_EXTRA);
-
-/**
- * Helper to generate an error output based on code and message.
- */
-LLSD spit_error(const std::string& key, const std::string& message);
-
-
-
-LLSD spit_error(EResult value, const std::string& extra)
-{
-	LLSD rv;
-	switch(value)
-	{
-	case RV_UNKNOWN_ERROR:
-		rv = spit_error("unknown", MESSAGE_RV_UNKNOWN);
-	case RV_BAD_ARGUMENTS:
-		rv = spit_error("arguments", MESSAGE_RV_ARGUMENTS + extra);
-		break;
-	case RV_UNABLE_OPEN:
-		rv = spit_error("file", MESSAGE_RV_UNABLE_OPEN + extra);
-		break;
-	case RV_UNABLE_TO_PARSE:
-		rv = spit_error("input", MESSAGE_RV_UNABLE_TO_PARSE);
-		break;
-	default:
-		rv = spit_error("arguments", "Invalid arguments to spit_error");
-		break;
-	}
-	return rv;
-}
-
-LLSD spit_error(const std::string& key, const std::string& message)
-{
-	LLSD rv;
-	rv["success"] = false;
-	rv["error"]["key"] = key;
-	rv["error"]["message"] = message;
-	return rv;
-}
-
 
-std::string usage(const char* command)
-{
-	std::ostringstream ostr;
-	ostr << "Utilities for processing agent appearance data."
-		<< std::endl << std::endl
-		<< "Usage:" << std::endl
-		<< "\t" << command << " [options] filename" << std::endl << std::endl
-		<< "Will read from stdin if filename is set to '-'." << std::endl << std::endl
-		<< "Options:" << std::endl;
-	const apr_getopt_option_t* option = &APPEARANCE_UTILITY_OPTIONS[0];
-	while(option->name)
-	{
-		ostr << "\t--" << option->name << "\t\t"
-			<< option->description << std::endl;
-		++option;
-	}
-	ostr << std::endl << "Return Values:" << std::endl
-		<< "\t0\t\tSuccess." << std::endl
-		<< "\t1\t\tUnknown error." << std::endl
-		<< "\t2\t\tBad arguments." << std::endl
-		<< "\t3\t\tUnable to open file. Possibly wrong filename"
-		<< " or bad permissions." << std::endl
-		<< "\t4\t\tUnable to parse input LLSD." << std::endl
-		<< std::endl
-		<< "Output:" << std::endl
-		<< "If a non-zero status code is returned, additional error information"
-		<< " will be returned on stderr." << std::endl
-		<< "* This will be in the form of an LLSD document." << std::endl
-		<< "* Check ['error']['message'] to get a human readable message." << std::endl
-		<< "If a zero status code is returned, processed output will be written"
-		<< " to the file specified by --out (or stdout, if not specified)." << std::endl
-		<< std::endl
-		<< std::endl;
-	return ostr.str();
-}
+// project includes
+#include "llappappearanceutility.h"
 
-EResult process_tbd(LLSD& input, std::ostream& output, LLSD& error_llsd)
+int main(int argc, char** argv)
 {
-	EResult rv = RV_SUCCESS;
-
-	LLWearableData wearable_data;
-
-	LLSD result;
-	result["success"] = true;
-	result["input"] = input;
-	output << LLSDOStreamer<LLSDXMLFormatter>(result);
-
-	return rv;
-}
+	// Create an application instance.
+	ll_init_apr();
+	LLAppAppearanceUtility* app = new LLAppAppearanceUtility(argc, argv);
 
-/**
- * @brief Called by main() to ensure proper cleanup. Basically main().
- */
-EResult process_command(int argc, char** argv, LLSD& error_llsd)
-{
+	// Assume success, unless exception is thrown.
 	EResult rv = RV_SUCCESS;
-
-	////// BEGIN OPTION PARSING //////
-	// Check for '-' as last option, since apr doesn't seem to like that.
-	bool read_stdin = false;
-	bool write_stdout = true;
-	if (std::string(argv[argc-1]) == "-")
+	try
 	{
-		read_stdin = true;
-		argc--;
-	}
-
-	apr_status_t apr_err;
-	const char* opt_arg = NULL;
-	int opt_id = 0;
-	apr_getopt_t* os = NULL;
-	if(APR_SUCCESS != apr_getopt_init(&os, gAPRPoolp, argc, argv))
-	{
-		std::cerr << "Unable to initialize apr" << std::endl;
-		rv = RV_UNKNOWN_ERROR;
-		error_llsd = spit_error(rv);
-		return rv;
-	}
-
-	bool tbd = false;
-	LLUUID agent_id;
-	std::string output_filename;
-	std::string grid;
-	while(true)
-	{
-		apr_err = apr_getopt_long(os, APPEARANCE_UTILITY_OPTIONS, &opt_id, &opt_arg);
-		if(APR_STATUS_IS_EOF(apr_err)) break;
-		if(apr_err)
-		{
-			char buf[MAX_STRING];		/* Flawfinder: ignore */
-			std::cerr << "Error parsing options: "
-				<< apr_strerror(apr_err, buf, MAX_STRING) << std::endl;
-			std::cerr << usage(os->argv[0]) <<  std::endl;
-			rv = RV_BAD_ARGUMENTS;
-			error_llsd = spit_error(rv, buf);
-			return rv;
-		}
-		switch (opt_id)
+		// Process command line and initialize system.
+		if (app->init())
 		{
-		case 't':
-			tbd = true;
-			break;
-		case 'o':
-			output_filename.assign(opt_arg);
-			write_stdout=false;
-			break;
-		case 'a':
-			agent_id.set(opt_arg);
-			if (agent_id.isNull())
-			{
-				const char* INVALID_AGENT_ID="agent-id must be a valid uuid.";
-				std::cerr << "Incorrect arguments. " << INVALID_AGENT_ID
-					<< std::endl << usage(argv[0]) <<  std::endl;
-				rv = RV_BAD_ARGUMENTS;
-				error_llsd = spit_error(rv, INVALID_AGENT_ID);
-				return rv;
-			}
-			break;
-		case 'g':
-			grid = opt_arg;
-			break;
-		case 'h':
-			std::cout << usage(os->argv[0]);
-			return RV_SUCCESS;
-		default:
-			std::cerr << usage(os->argv[0]);
-			rv = RV_BAD_ARGUMENTS;
-			error_llsd = spit_error(rv, "Unknown option.");
-			return rv;
+			// Run process.
+			app->mainLoop();
 		}
 	}
-	////// END OPTION PARSING //////
-
-	/////  BEGIN ARGUMENT VALIDATION /////
-	std::string input_filename;
-
-	// Make sure we don't have more than one command specified.
-	if (!tbd)
+	catch (LLAppException& e)
 	{
-		const char* INVALID_MODE="Must specify mode. (tbd)";
-		std::cerr << "Incorrect arguments. " << INVALID_MODE
-				  << std::endl;
-		std::cerr << usage(os->argv[0]);
-		rv = RV_BAD_ARGUMENTS;
-		error_llsd = spit_error(rv, INVALID_MODE);
-		return rv;
+		// Deal with errors.
+		rv = e.getStatusCode();
 	}
 
-	// *TODO: Add debug mode(s).  Skip this in debug mode.
-	LLError::setDefaultLevel(LLError::LEVEL_WARN);
-
-	if (!read_stdin)
-	{
-		bool valid_input_filename = false;
-		// Try to grab the input filename.
-		if (os->argv && os->argv[os->ind])
-		{
-			input_filename.assign(os->argv[os->ind]);
-			if (! input_filename.empty() )
-			{
-				valid_input_filename = true;
-			}
-		}
-		if (!valid_input_filename)
-		{
-			const char* INVALID_FILENAME="Must specify input file.";
-			std::cerr << "Incorrect arguments. " << INVALID_FILENAME
-				<< std::endl << usage(os->argv[0]) <<  std::endl;
-			rv = RV_BAD_ARGUMENTS;
-			error_llsd = spit_error(rv, INVALID_FILENAME);
-			return rv;
-		}
-	}
-
-	/////  END ARGUMENT VALIDATION /////
-
-	/////  BEGIN OPEN INPUT FILE ////
-	std::ifstream input_file;
-	std::stringstream data;
-	std::istream* input = NULL;
-
-	if (read_stdin)
-	{
-		// Read unformated data from stdin in to memory.
-		const S32 BUFFER_SIZE = BUFSIZ;
-		char buffer[BUFFER_SIZE];
-		while (true)
-		{
-			std::cin.read(buffer, BUFFER_SIZE);
-			// Check if anything out of the ordinary happened.
-			if (!std::cin)
-			{
-				// See if something 'really bad' happened, or if we just
-				// used up all of our buffer.
-				if (std::cin.bad())
-				{
-					std::cerr << "Problem reading standard input." << std::endl;
-					rv = RV_UNKNOWN_ERROR;
-					error_llsd = spit_error(rv);
-					return rv;
-				}
-				else
-				{
-					// Output normally.
-					data.write(buffer, std::cin.gcount());
-					if (std::cin.eof()) break;
-
-					// Clear this problem.  We have handled it.
-					std::cin.clear();
-				}
-			}
-			else
-			{
-				data.write(buffer, std::cin.gcount());
-				if (std::cin.eof()) break;
-			}
-		}
-		input = &data;
-	}
-	else
-	{
-		// Make sure we can open the input file.
-		input_file.open( input_filename.c_str(), std::fstream::in );
-		if ( input_file.fail())
-		{
-			std::cerr << "Couldn't open input file '" << input_filename << "'." << std::endl;
-			rv = RV_UNABLE_OPEN;
-			error_llsd = spit_error(rv, input_filename);
-			return rv;
-		}
-		input = &input_file;
-	}
-	/////  END OPEN INPUT FILE ////
-
-	/////  BEGIN OPEN OUTPUT FILE ////
-	std::fstream output_file;
-	std::ostream* output = NULL;
-
-	// Make sure we can open the output file.
-	if (write_stdout)
-	{
-		output = &std::cout;
-	}
-	else
-	{
-		output_file.open( output_filename.c_str(), std::fstream::out );
-		if ( output_file.fail() )
-		{
-			std::cerr << "Couldn't open output file '" << output_filename << "'." << std::endl;
-			rv = RV_UNABLE_OPEN;
-			error_llsd = spit_error(rv, output_filename);
-			if (!read_stdin) input_file.close();
-			return rv;
-		}
-		output = &output_file;
-	}
-	/////  END OPEN OUTPUT FILE ////
-
-	/////  BEGIN INPUT PARSING ////
-	LLSD input_llsd;
-	LLSDSerialize::fromXML( input_llsd, *input );
-	if (input_llsd.isUndefined())
-	{
-		rv = RV_UNABLE_TO_PARSE;
-		error_llsd = spit_error(rv);
-		return rv;
-	}
-
-	/////  END INPUT PARSING ////
-
-	if (tbd)
-	{
-		rv = process_tbd(input_llsd, *output, error_llsd);
-	}
-
-	if (!write_stdout) output_file.close();
-	if (!read_stdin) input_file.close();
-
-	return rv;
-}
-
-class LLAppAppearanceUtility : public LLApp
-{
-public:
-	LLAppAppearanceUtility() {}
-	virtual ~LLAppAppearanceUtility() {}
-	/*virtual*/ bool init();
-	/*virtual*/ bool cleanup();
-	/*virtual*/ bool mainLoop() { return true;}
-};
-
-bool LLAppAppearanceUtility::init()
-{
-	return true;
-}
-
-bool LLAppAppearanceUtility::cleanup()
-{
-	return true;
-}
-
-int main(int argc, char** argv)
-{
-	ll_init_apr();
-	LLAppAppearanceUtility* app = new LLAppAppearanceUtility();
-	app->init();
-	LLSD error_llsd;
-	EResult rv = process_command(argc, argv, error_llsd);
-	if (RV_SUCCESS != rv)
-	{
-		std::cerr << LLSDOStreamer<LLSDXMLFormatter>(error_llsd);
-	}
+	// Clean up application instance.
 	app->cleanup();
 	delete app;
 	ll_cleanup_apr();
+
 	return (int) rv;
 }
 
diff --git a/indra/appearance_utility/llappappearanceutility.cpp b/indra/appearance_utility/llappappearanceutility.cpp
new file mode 100644
index 00000000000..b49e9548306
--- /dev/null
+++ b/indra/appearance_utility/llappappearanceutility.cpp
@@ -0,0 +1,418 @@
+/** 
+ * @file llappappearanceutility.cpp
+ * @brief Implementation of LLAppAppearanceUtility class.
+ *
+ * $LicenseInfo:firstyear=2012&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2012, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+#include <iostream>
+#include <sstream>
+#include <string>
+
+// linden includes
+#include "linden_common.h"
+
+#include "llapr.h"
+#include "llerrorcontrol.h"
+#include "llsd.h"
+#include "llsdserialize.h"
+#include "llsdutil.h"
+
+// project includes
+#include "llappappearanceutility.h"
+#include "llbakingprocess.h"
+#include "llprocessparams.h"
+
+const std::string NOTHING_EXTRA("");
+
+////////////////////////////////////////////
+// LLAppException
+////////////////////////////////////////////
+
+static const std::string MESSAGE_RV_UNKNOWN("Unknown error.");
+static const std::string MESSAGE_RV_ARGUMENTS 
+("Invalid arguments: ");
+static const std::string MESSAGE_RV_UNABLE_OPEN("Unable to open file: ");
+static const std::string MESSAGE_RV_UNABLE_TO_PARSE("Unable to parse input LLSD.");
+static const std::string MESSAGE_DUPLICATE_MODES = "Cannot specify more than one process mode.";
+
+
+LLAppException::LLAppException(EResult status_code, const std::string& extra) :
+	mStatusCode(status_code)
+{
+	switch(status_code)
+	{
+	case RV_UNKNOWN_ERROR:
+		printErrorLLSD("unknown", MESSAGE_RV_UNKNOWN);
+	case RV_BAD_ARGUMENTS:
+		printErrorLLSD("arguments", MESSAGE_RV_ARGUMENTS + extra);
+		break;
+	case RV_UNABLE_OPEN:
+		printErrorLLSD("file", MESSAGE_RV_UNABLE_OPEN + extra);
+		break;
+	case RV_UNABLE_TO_PARSE:
+		printErrorLLSD("input", MESSAGE_RV_UNABLE_TO_PARSE);
+		break;
+	default:
+		printErrorLLSD("arguments", "Unknown exception.");
+		break;
+	}
+}
+
+void LLAppException::printErrorLLSD(const std::string& key, const std::string& message)
+{
+	LLSD error_llsd;
+	error_llsd["success"] = false;
+	error_llsd["error"]["key"] = key;
+	error_llsd["error"]["message"] = message;
+
+	std::cerr << LLSDOStreamer<LLSDXMLFormatter>(error_llsd);
+}
+
+
+
+////////////////////////////////////////////
+// LLAppAppearanceUtility
+////////////////////////////////////////////
+
+///////// Option Parsing /////////
+
+// Simple usage command.
+class LLProcessUsage : public LLBakingProcess
+{
+public:
+	LLProcessUsage(LLAppAppearanceUtility* app) :
+		LLBakingProcess(app) {}
+	/*virtual*/ void process(LLSD& input, std::ostream& output)
+	{
+		mApp->usage(output);
+	}
+};
+
+
+static const apr_getopt_option_t APPEARANCE_UTILITY_OPTIONS[] =
+{
+	{"params", 'p', 0, "Generate appearance parameters for an agent."},
+	{"output", 'o', 1, "The output file to write to.  Default is stdout"},
+	{"agent-id", 'a', 1, "The agent-id of the user."},
+	//{"grid", 'g', 1, "The grid."},
+	{"help", 'h', 0, "Print the help message."},
+	{0, 0, 0, 0}
+};
+
+void LLAppAppearanceUtility::usage(std::ostream& ostr)
+{
+	ostr << "Utilities for processing agent appearance data."
+		<< std::endl << std::endl
+		<< "Usage:" << std::endl
+		<< "\t" << mAppName << " [options] filename" << std::endl << std::endl
+		<< "Will read from stdin if filename is set to '-'." << std::endl << std::endl
+		<< "Options:" << std::endl;
+	const apr_getopt_option_t* option = &APPEARANCE_UTILITY_OPTIONS[0];
+	while(option->name)
+	{
+		ostr << "\t--" << option->name << "\t\t"
+			<< option->description << std::endl;
+		++option;
+	}
+	ostr << std::endl << "Return Values:" << std::endl
+		<< "\t0\t\tSuccess." << std::endl
+		<< "\t1\t\tUnknown error." << std::endl
+		<< "\t2\t\tBad arguments." << std::endl
+		<< "\t3\t\tUnable to open file. Possibly wrong filename"
+		<< " or bad permissions." << std::endl
+		<< "\t4\t\tUnable to parse input LLSD." << std::endl
+		<< std::endl
+		<< "Output:" << std::endl
+		<< "If a non-zero status code is returned, additional error information"
+		<< " will be returned on stderr." << std::endl
+		<< "* This will be in the form of an LLSD document." << std::endl
+		<< "* Check ['error']['message'] to get a human readable message." << std::endl
+		<< "If a zero status code is returned, processed output will be written"
+		<< " to the file specified by --out (or stdout, if not specified)." << std::endl
+		<< std::endl
+		<< std::endl;
+}
+
+
+/////// LLApp Interface ////////
+
+LLAppAppearanceUtility::LLAppAppearanceUtility(int argc, char** argv) :
+	LLApp(),
+	mArgc(argc),
+	mArgv(argv),
+	mProcess(NULL),
+	mInput(NULL),
+	mOutput(NULL),
+	mAppName(argv[0])
+{
+}
+
+// virtual
+LLAppAppearanceUtility::~LLAppAppearanceUtility()
+{
+}
+
+void LLAppAppearanceUtility::verifyNoProcess()
+{
+	if (mProcess)
+	{
+		std::cerr << "Invalid arguments. " << MESSAGE_DUPLICATE_MODES << std::endl;
+		usage(std::cerr);
+		throw LLAppException(RV_BAD_ARGUMENTS, MESSAGE_DUPLICATE_MODES);
+	}
+}
+
+void LLAppAppearanceUtility::parseArguments()
+{
+	////// BEGIN OPTION PARSING //////
+	// Check for '-' as last option, since apr doesn't seem to like that.
+	if (std::string(mArgv[mArgc-1]) == "-")
+	{
+		mInputFilename.assign("-");
+		mArgc--;
+	}
+
+	apr_status_t apr_err;
+	const char* opt_arg = NULL;
+	int opt_id = 0;
+	apr_getopt_t* os = NULL;
+	if(APR_SUCCESS != apr_getopt_init(&os, gAPRPoolp, mArgc, mArgv))
+	{
+		std::cerr << "Unable to initialize apr" << std::endl;
+		throw LLAppException(RV_UNKNOWN_ERROR);
+	}
+
+	//std::string grid;
+	while(true)
+	{
+		apr_err = apr_getopt_long(os, APPEARANCE_UTILITY_OPTIONS, &opt_id, &opt_arg);
+		if(APR_STATUS_IS_EOF(apr_err)) break;
+		if(apr_err)
+		{
+			char buf[MAX_STRING];		/* Flawfinder: ignore */
+			std::cerr << "Error parsing options: "
+				<< apr_strerror(apr_err, buf, MAX_STRING) << std::endl;
+			usage(std::cerr);
+			throw LLAppException(RV_BAD_ARGUMENTS, buf);
+		}
+		switch (opt_id)
+		{
+		case 'h':
+			verifyNoProcess();
+			mProcess = new LLProcessUsage(this);
+			break;
+		case 'p':
+			verifyNoProcess();
+			mProcess = new LLProcessParams(this);
+			break;
+		case 'o':
+			mOutputFilename.assign(opt_arg);
+			break;
+		case 'a':
+			mAgentID.set(opt_arg);
+			if (mAgentID.isNull())
+			{
+				const char* INVALID_AGENT_ID="agent-id must be a valid uuid.";
+				std::cerr << "Invalid arguments. " << INVALID_AGENT_ID << std::endl;
+				usage(std::cerr);
+				throw LLAppException(RV_BAD_ARGUMENTS, INVALID_AGENT_ID);
+			}
+			break;
+		//case 'g':
+		//	grid = opt_arg;
+		//	break;
+		default:
+			usage(std::cerr);
+			throw LLAppException(RV_BAD_ARGUMENTS, "Unknown option.");
+		}
+	}
+
+	if ("-" != mInputFilename)
+	{
+		bool valid_input_filename = false;
+		// Try to grab the input filename.
+		if (os->argv && os->argv[os->ind])
+		{
+			mInputFilename.assign(os->argv[os->ind]);
+			if (! mInputFilename.empty() )
+			{
+				valid_input_filename = true;
+			}
+		}
+		if (!valid_input_filename)
+		{
+			const char* INVALID_FILENAME="Must specify input file.";
+			std::cerr << "Invalid arguments. " << INVALID_FILENAME << std::endl;
+			usage(std::cerr);
+			throw LLAppException(RV_BAD_ARGUMENTS, INVALID_FILENAME);
+		}
+	}
+
+	////// END OPTION PARSING //////
+}
+
+void LLAppAppearanceUtility::validateArguments()
+{
+	/////  BEGIN ARGUMENT VALIDATION /////
+
+	// Make sure we have a command specified.
+	if (!mProcess)
+	{
+		const char* INVALID_MODE="No process mode specified.";
+		std::cerr << "Invalid arguments. " << INVALID_MODE
+				  << std::endl;
+		usage(std::cerr);
+		throw LLAppException(RV_BAD_ARGUMENTS, INVALID_MODE);
+	}
+
+	/////  END ARGUMENT VALIDATION /////
+}
+
+void LLAppAppearanceUtility::initializeIO()
+{
+	/////  BEGIN OPEN INPUT FILE ////
+
+	if ( "-" == mInputFilename )
+	{
+		// Read unformated data from stdin in to memory.
+		std::stringstream* data = new std::stringstream();
+		const S32 BUFFER_SIZE = BUFSIZ;
+		char buffer[BUFFER_SIZE];
+		while (true)
+		{
+			std::cin.read(buffer, BUFFER_SIZE);
+			// Check if anything out of the ordinary happened.
+			if (!std::cin)
+			{
+				// See if something 'really bad' happened, or if we just
+				// used up all of our buffer.
+				if (std::cin.bad())
+				{
+					std::cerr << "Problem reading standard input." << std::endl;
+					delete data;
+					throw (RV_UNKNOWN_ERROR);
+				}
+				else
+				{
+					// Output normally.
+					data->write(buffer, std::cin.gcount());
+					if (std::cin.eof()) break;
+
+					// Clear this problem.  We have handled it.
+					std::cin.clear();
+				}
+			}
+			else
+			{
+				data->write(buffer, std::cin.gcount());
+				if (std::cin.eof()) break;
+			}
+		}
+		mInput = data;
+	}
+	else
+	{
+		// Make sure we can open the input file.
+		std::ifstream* input_file = new std::ifstream();
+		input_file->open( mInputFilename.c_str(), std::fstream::in );
+		if ( input_file->fail())
+		{
+			std::cerr << "Couldn't open input file '" << mInputFilename << "'." << std::endl;
+			delete input_file;
+			throw LLAppException(RV_UNABLE_OPEN, mInputFilename);
+		}
+		mInput = input_file;
+	}
+	/////  END OPEN INPUT FILE ////
+
+	/////  BEGIN OPEN OUTPUT FILE ////
+
+	if ("" == mOutputFilename)
+	{
+		mOutput = &std::cout;
+	}
+	else
+	{
+		// Make sure we can open the output file.
+		std::fstream* output_file = new std::fstream();
+		output_file->open( mOutputFilename.c_str(), std::fstream::out );
+		if ( output_file->fail() )
+		{
+			std::cerr << "Couldn't open output file '" << mOutputFilename << "'." << std::endl;
+			delete output_file;
+			throw LLAppException(RV_UNABLE_OPEN, mOutputFilename);
+		}
+		mOutput = output_file;
+	}
+	/////  END OPEN OUTPUT FILE ////
+
+	/////  BEGIN INPUT PARSING ////
+	LLSDSerialize::fromXML( mInputData, *mInput );
+	if (mInputData.isUndefined())
+	{
+		throw LLAppException(RV_UNABLE_TO_PARSE);
+	}
+	/////  END INPUT PARSING ////
+}
+
+bool LLAppAppearanceUtility::init()
+{
+	parseArguments();
+
+	// *TODO: Add debug mode(s).  Skip this in debug mode.
+	LLError::setDefaultLevel(LLError::LEVEL_WARN);
+
+	validateArguments();
+	initializeIO();
+	return true;
+}
+
+bool LLAppAppearanceUtility::cleanup()
+{
+	if (mProcess)
+	{
+		delete mProcess;
+		mProcess = NULL;
+	}
+	if ("-" != mInputFilename && mInput)
+	{
+		static_cast<std::ifstream*>(mInput)->close();
+	}
+	if ("" != mOutputFilename && mOutput)
+	{
+		static_cast<std::ofstream*>(mOutput)->close();
+		delete mOutput;
+		mOutput = NULL;
+	}
+	delete mInput;
+	mInput = NULL;
+	return true;
+}
+
+bool LLAppAppearanceUtility::mainLoop()
+{
+	// This isn't really a loop, for this application.  We just execute the requested command.
+	mProcess->process(mInputData, *mOutput);
+	return true;
+}
+
diff --git a/indra/appearance_utility/llappappearanceutility.h b/indra/appearance_utility/llappappearanceutility.h
new file mode 100644
index 00000000000..2a5b8232ebc
--- /dev/null
+++ b/indra/appearance_utility/llappappearanceutility.h
@@ -0,0 +1,97 @@
+/** 
+ * @file llappappearanceutility.h
+ * @brief Declaration of LLAppAppearanceUtility class.
+ *
+ * $LicenseInfo:firstyear=2012&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2012, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LLAPPAPPEARANCEUTILITY_H
+#define LL_LLAPPAPPEARANCEUTILITY_H
+
+#include <exception>
+
+#include "llapp.h"
+
+enum EResult
+{
+	RV_SUCCESS = 0,
+	RV_UNKNOWN_ERROR,
+	RV_BAD_ARGUMENTS,
+	RV_UNABLE_OPEN,
+	RV_UNABLE_TO_PARSE,
+};
+
+extern const std::string NOTHING_EXTRA;
+
+class LLAppAppearanceUtility;
+class LLBakingProcess;
+
+// Translate error status into error messages.
+class LLAppException : public std::exception
+{
+public:
+	LLAppException(EResult status_code, const std::string& extra = NOTHING_EXTRA);
+	EResult getStatusCode() { return mStatusCode; }
+
+private:
+	void printErrorLLSD(const std::string& key, const std::string& message);
+	EResult mStatusCode;
+};
+
+
+class LLAppAppearanceUtility : public LLApp
+{
+public:
+	LLAppAppearanceUtility(int argc, char** argv);
+	virtual ~LLAppAppearanceUtility();
+
+	// LLApp interface.
+	/*virtual*/ bool init();
+	/*virtual*/ bool cleanup();
+	/*virtual*/ bool mainLoop();
+
+private:
+	// Option parsing.
+	void verifyNoProcess();
+	void parseArguments();
+	void validateArguments();
+	void initializeIO();
+public:
+	void usage(std::ostream& ostr);
+
+
+private:
+	int mArgc;
+	char** mArgv;
+	LLBakingProcess* mProcess;
+	std::istream* mInput;
+	std::ostream* mOutput;
+	std::string mAppName;
+	std::string mInputFilename;
+	std::string mOutputFilename;
+	LLUUID mAgentID;
+	LLSD mInputData;
+};
+
+
+#endif /* LL_LLAPPAPPEARANCEUTILITY_H */
+
diff --git a/indra/appearance_utility/llbakingavatar.cpp b/indra/appearance_utility/llbakingavatar.cpp
new file mode 100644
index 00000000000..bb15a2bf3d6
--- /dev/null
+++ b/indra/appearance_utility/llbakingavatar.cpp
@@ -0,0 +1,61 @@
+/** 
+ * @File llbakingavatar.cpp
+ * @brief Implementation of LLBakingAvatar class which is a derivation of LLAvatarAppearance
+ *
+ * $LicenseInfo:firstyear=2012&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2012, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+#include "linden_common.h"
+
+#include "llbakingavatar.h"
+#include "llbakingjoint.h"
+#include "llbakingjointmesh.h"
+
+LLBakingAvatar::LLBakingAvatar(LLWearableData* wearable_data) :
+	LLAvatarAppearance(wearable_data)
+{
+}
+
+// virtual
+LLBakingAvatar::~LLBakingAvatar()
+{
+}
+
+// virtual
+LLAvatarJoint* LLBakingAvatar::createAvatarJoint()
+{
+	return new LLBakingJoint();
+}
+
+// virtual
+LLAvatarJoint* LLBakingAvatar::createAvatarJoint(S32 joint_num)
+{
+	return new LLBakingJoint(joint_num);
+}
+
+// virtual
+LLAvatarJointMesh* LLBakingAvatar::createAvatarJointMesh()
+{
+	return new LLBakingJointMesh();
+}
+
+
diff --git a/indra/appearance_utility/llbakingavatar.h b/indra/appearance_utility/llbakingavatar.h
new file mode 100644
index 00000000000..53eac8162ea
--- /dev/null
+++ b/indra/appearance_utility/llbakingavatar.h
@@ -0,0 +1,76 @@
+/**
+ * @file llbakingavatar.h
+ * @brief Declaration of LLBakingAvatar class which is a derivation of LLAvatarAppearance
+ *
+ * $LicenseInfo:firstyear=2012&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2012, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LLBAKINGAVATAR_H
+#define LL_LLBAKINGAVATAR_H
+
+#include "llavatarappearance.h"
+
+class LLBakingAvatar : public LLAvatarAppearance
+{
+	LOG_CLASS(LLBakingAvatar);
+
+/********************************************************************************
+ **                                                                            **
+ **                    INITIALIZATION
+ **/
+public:
+	LLBakingAvatar(LLWearableData* wearable_data);
+	virtual ~LLBakingAvatar();
+
+	static void initClass(); // initializes static members
+
+/**                    Initialization
+ **                                                                            **
+ *******************************************************************************/
+
+/********************************************************************************
+ **                                                                            **
+ **                    STATE
+ **/
+public:
+	virtual bool 	isSelf() const { return true; }
+	virtual BOOL	isValid() const { return TRUE; }
+	virtual BOOL	isUsingBakedTextures() const { return TRUE; }
+
+/**                    State
+ **                                                                            **
+ *******************************************************************************/
+
+/********************************************************************************
+ **                                                                            **
+ **                    SKELETON
+ **/
+
+protected:
+	virtual LLAvatarJoint*	createAvatarJoint();
+	virtual LLAvatarJoint*	createAvatarJoint(S32 joint_num);
+	virtual LLAvatarJointMesh*	createAvatarJointMesh();
+
+};
+
+#endif /* LL_LLBAKINGAVATAR_H */
+
diff --git a/indra/appearance_utility/llbakingjoint.cpp b/indra/appearance_utility/llbakingjoint.cpp
new file mode 100644
index 00000000000..96f7b686b2c
--- /dev/null
+++ b/indra/appearance_utility/llbakingjoint.cpp
@@ -0,0 +1,54 @@
+/** 
+ * @file llbakingjoint.cpp
+ * @brief Implementation of LLBakingJoint class
+ *
+ * $LicenseInfo:firstyear=2012&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2012, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+
+#include "linden_common.h"
+
+#include "llbakingjoint.h"
+
+
+LLBakingJoint::LLBakingJoint() :
+	LLAvatarJoint()
+{
+}
+
+LLBakingJoint::LLBakingJoint(S32 joint_num) :
+	LLAvatarJoint(joint_num)
+{
+}
+
+// virtual
+LLBakingJoint::~LLBakingJoint()
+{
+}
+
+// virtual
+U32 LLBakingJoint::render( F32 pixelArea, BOOL first_pass, BOOL is_dummy)
+{
+	llerrs << "LLBakingJoint::render() should never be called!" << llendl;
+	return 0;
+}
+
diff --git a/indra/appearance_utility/llbakingjoint.h b/indra/appearance_utility/llbakingjoint.h
new file mode 100644
index 00000000000..5247eb7510a
--- /dev/null
+++ b/indra/appearance_utility/llbakingjoint.h
@@ -0,0 +1,44 @@
+/** 
+ * @file llbakingjoint.h
+ * @brief Implementation of LLBakingJoint class
+ *
+ * $LicenseInfo:firstyear=2012&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2012, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LLBAKINGJOINT_H
+#define LL_LLBAKINGJOINT_H
+
+#include "llavatarjoint.h"
+
+class LLBakingJoint : public virtual LLAvatarJoint
+{
+public:
+	LLBakingJoint();
+	LLBakingJoint(S32 joint_num);
+	virtual ~LLBakingJoint();
+
+	// LLViewerJoint interface
+	virtual U32 render( F32 pixelArea, BOOL first_pass = TRUE, BOOL is_dummy = FALSE );
+};
+
+#endif /* LL_LLBAKINGJOINT_H */
+
diff --git a/indra/appearance_utility/llbakingjointmesh.cpp b/indra/appearance_utility/llbakingjointmesh.cpp
new file mode 100644
index 00000000000..877317deb85
--- /dev/null
+++ b/indra/appearance_utility/llbakingjointmesh.cpp
@@ -0,0 +1,43 @@
+/** 
+ * @file llbakingjointmesh.cpp
+ * @brief Implementation of LLBakingJointMesh class
+ *
+ * $LicenseInfo:firstyear=2012&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2012, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+
+#include "linden_common.h"
+
+#include "llbakingjointmesh.h"
+
+
+LLBakingJointMesh::LLBakingJointMesh() :
+	LLAvatarJointMesh()
+{
+}
+
+// virtual
+LLBakingJointMesh::~LLBakingJointMesh()
+{
+}
+
+
diff --git a/indra/appearance_utility/llbakingjointmesh.h b/indra/appearance_utility/llbakingjointmesh.h
new file mode 100644
index 00000000000..6252f6cee33
--- /dev/null
+++ b/indra/appearance_utility/llbakingjointmesh.h
@@ -0,0 +1,43 @@
+/** 
+ * @file llbakingjoint.h
+ * @brief Implementation of LLBakingJointMesh class
+ *
+ * $LicenseInfo:firstyear=2012&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2012, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LLBAKINGJOINTMESH_H
+#define LL_LLBAKINGJOINTMESH_H
+
+#include "llavatarjointmesh.h"
+#include "llbakingjoint.h"
+
+class LLBakingJointMesh : public LLAvatarJointMesh, public LLBakingJoint
+{
+public:
+	LLBakingJointMesh();
+	LLBakingJointMesh(S32 joint_num);
+	virtual ~LLBakingJointMesh();
+
+};
+
+#endif /* LL_LLBAKINGJOINTMESH_H */
+
diff --git a/indra/appearance_utility/llbakingprocess.h b/indra/appearance_utility/llbakingprocess.h
new file mode 100644
index 00000000000..a32eae64431
--- /dev/null
+++ b/indra/appearance_utility/llbakingprocess.h
@@ -0,0 +1,55 @@
+/** 
+ * @file llbakingprocess.h
+ * @brief Declaration of LLBakingProcess interface.
+ *
+ * $LicenseInfo:firstyear=2012&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2012, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LLBAKINGPROCESS_H
+#define LL_LLBAKINGPROCESS_H
+
+#include <ostream>
+
+class LLAppAppearanceUtility;
+class LLSD;
+
+// Simple wrapper for various process modes.
+class LLBakingProcess
+{
+private:
+	// Hide default constructor.
+	LLBakingProcess() {}
+public:
+	LLBakingProcess(LLAppAppearanceUtility* app) :
+		mApp(app) {}
+	virtual ~LLBakingProcess() {}
+
+	//virtual std::string getProcessName() const = 0;
+	virtual void process(LLSD& input, std::ostream& output) = 0;
+
+protected:
+	LLAppAppearanceUtility* mApp;
+};
+
+
+#endif /* LL_LLBAKINGPROCESS_H */
+
diff --git a/indra/appearance_utility/llbakingshadermgr.h b/indra/appearance_utility/llbakingshadermgr.h
index d2376829234..88d43ab7693 100644
--- a/indra/appearance_utility/llbakingshadermgr.h
+++ b/indra/appearance_utility/llbakingshadermgr.h
@@ -2,9 +2,9 @@
  * @file llbakingshadermgr.h
  * @brief Texture Baking Shader Manager
  *
- * $LicenseInfo:firstyear=2001&license=viewerlgpl$
+ * $LicenseInfo:firstyear=2012&license=viewerlgpl$
  * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
+ * Copyright (C) 2012, Linden Research, Inc.
  * 
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
diff --git a/indra/appearance_utility/llprocessparams.cpp b/indra/appearance_utility/llprocessparams.cpp
new file mode 100644
index 00000000000..71557fa7ba9
--- /dev/null
+++ b/indra/appearance_utility/llprocessparams.cpp
@@ -0,0 +1,51 @@
+/** 
+ * @file llprocessparams.cpp
+ * @brief Implementation of LLProcessParams class.
+ *
+ * $LicenseInfo:firstyear=2012&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2012, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+// linden includes
+#include "linden_common.h"
+
+#include "llsd.h"
+#include "llsdserialize.h"
+#include "llsdutil.h"
+
+// appearance includes
+#include "llwearabledata.h"
+
+// project includes
+#include "llappappearanceutility.h"
+#include "llbakingavatar.h"
+#include "llprocessparams.h"
+
+void LLProcessParams::process(LLSD& input, std::ostream& output)
+{
+	LLWearableData wearable_data;
+
+	LLSD result;
+	result["success"] = true;
+	result["input"] = input;
+	output << LLSDOStreamer<LLSDXMLFormatter>(result);
+}
+
diff --git a/indra/appearance_utility/llprocessparams.h b/indra/appearance_utility/llprocessparams.h
new file mode 100644
index 00000000000..d1e64cb4f01
--- /dev/null
+++ b/indra/appearance_utility/llprocessparams.h
@@ -0,0 +1,42 @@
+/** 
+ * @file llprocessparams.h
+ * @brief Declaration of LLProcessParams class.
+ *
+ * $LicenseInfo:firstyear=2012&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2012, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LLPROCESSPARAMS_H
+#define LL_LLPROCESSPARAMS_H
+
+#include "llbakingprocess.h"
+
+class LLProcessParams : public LLBakingProcess
+{
+public:
+	LLProcessParams(LLAppAppearanceUtility* app) :
+		LLBakingProcess(app) {}
+
+	/*virtual*/ void process(LLSD& intput, std::ostream& output);
+};
+
+#endif /* LL_LLPROCESSPARAMS_H */
+
diff --git a/indra/llappearance/llavatarjointmesh.h b/indra/llappearance/llavatarjointmesh.h
index 4b56a168ac1..427375e7333 100755
--- a/indra/llappearance/llavatarjointmesh.h
+++ b/indra/llappearance/llavatarjointmesh.h
@@ -1,6 +1,6 @@
 /** 
  * @file llavatarjointmesh.h
- * @brief Implementation of LLAvatarJointMesh class
+ * @brief Declaration of LLAvatarJointMesh class
  *
  * $LicenseInfo:firstyear=2001&license=viewerlgpl$
  * Second Life Viewer Source Code
diff --git a/indra/newview/llviewerjointmesh.h b/indra/newview/llviewerjointmesh.h
index 64887152a6e..ac5aab4ef2a 100755
--- a/indra/newview/llviewerjointmesh.h
+++ b/indra/newview/llviewerjointmesh.h
@@ -1,6 +1,6 @@
 /** 
  * @file llviewerjointmesh.h
- * @brief Implementation of LLViewerJointMesh class
+ * @brief Declaration of LLViewerJointMesh class
  *
  * $LicenseInfo:firstyear=2001&license=viewerlgpl$
  * Second Life Viewer Source Code
-- 
GitLab


From 929b7e029513ecbb08c415e945c83ea09dc1b3eb Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Thu, 13 Sep 2012 03:30:17 +0000
Subject: [PATCH 073/436] Instantiated bare-bones LLBakingAvatar concrete class
 (derived from LLAvatarAppearance).  Moved some LLCharacter funcionality from
 LLVOAvatar to LLAvatarAppearance.

---
 indra/appearance_utility/CMakeLists.txt       |   2 +
 indra/appearance_utility/llbakingavatar.cpp   | 104 +++++++++++++++++-
 indra/appearance_utility/llbakingavatar.h     |  59 ++++++++--
 indra/appearance_utility/llbakingtexlayer.cpp |  51 +++++++++
 indra/appearance_utility/llbakingtexlayer.h   |  43 ++++++++
 indra/appearance_utility/llprocessparams.cpp  |   1 +
 indra/llappearance/llavatarappearance.cpp     |  79 ++++++++++++-
 indra/llappearance/llavatarappearance.h       |  22 ++++
 indra/newview/llvoavatar.cpp                  |  72 ------------
 indra/newview/llvoavatar.h                    |  77 ++++++-------
 10 files changed, 381 insertions(+), 129 deletions(-)
 create mode 100644 indra/appearance_utility/llbakingtexlayer.cpp
 create mode 100644 indra/appearance_utility/llbakingtexlayer.h

diff --git a/indra/appearance_utility/CMakeLists.txt b/indra/appearance_utility/CMakeLists.txt
index dfd552ddc6a..dec71feea20 100644
--- a/indra/appearance_utility/CMakeLists.txt
+++ b/indra/appearance_utility/CMakeLists.txt
@@ -45,6 +45,7 @@ set(appearance_utility_SOURCE_FILES
     llbakingjoint.cpp
     llbakingjointmesh.cpp
     llbakingshadermgr.cpp
+    llbakingtexlayer.cpp
     llprocessparams.cpp
     )
 
@@ -56,6 +57,7 @@ set(appearance_utility_HEADER_FILES
     llbakingjointmesh.h
     llbakingprocess.h
     llbakingshadermgr.h
+    llbakingtexlayer.h
     llprocessparams.h
     )
 
diff --git a/indra/appearance_utility/llbakingavatar.cpp b/indra/appearance_utility/llbakingavatar.cpp
index bb15a2bf3d6..0424e8134b9 100644
--- a/indra/appearance_utility/llbakingavatar.cpp
+++ b/indra/appearance_utility/llbakingavatar.cpp
@@ -24,11 +24,15 @@
  * $/LicenseInfo$
  */
 
+// linden includes
 #include "linden_common.h"
+#include "v3dmath.h"
 
+// project includes
 #include "llbakingavatar.h"
 #include "llbakingjoint.h"
 #include "llbakingjointmesh.h"
+#include "llbakingtexlayer.h"
 
 LLBakingAvatar::LLBakingAvatar(LLWearableData* wearable_data) :
 	LLAvatarAppearance(wearable_data)
@@ -40,22 +44,116 @@ LLBakingAvatar::~LLBakingAvatar()
 {
 }
 
-// virtual
+//-----------------------------------------------------------------------------
+// Implemented methods
+//-----------------------------------------------------------------------------
+
 LLAvatarJoint* LLBakingAvatar::createAvatarJoint()
 {
 	return new LLBakingJoint();
 }
 
-// virtual
 LLAvatarJoint* LLBakingAvatar::createAvatarJoint(S32 joint_num)
 {
 	return new LLBakingJoint(joint_num);
 }
 
-// virtual
 LLAvatarJointMesh* LLBakingAvatar::createAvatarJointMesh()
 {
 	return new LLBakingJointMesh();
 }
 
+LLTexLayerSet* LLBakingAvatar::createTexLayerSet()
+{
+	return new LLBakingTexLayerSet(this);
+}
+
+//-----------------------------------------------------------------------------
+// (Ignored) Non-implemented methods.
+//-----------------------------------------------------------------------------
+
+void LLBakingAvatar::bodySizeChanged() {}
+void LLBakingAvatar::applyMorphMask(U8* tex_data, S32 width, S32 height, S32 num_components,
+		LLAvatarAppearanceDefines::EBakedTextureIndex index) {}
+void LLBakingAvatar::invalidateComposite(LLTexLayerSet* layerset, BOOL upload_result) {}
+void LLBakingAvatar::updateMeshTextures() {}
+void LLBakingAvatar::dirtyMesh() {}
+void LLBakingAvatar::dirtyMesh(S32 priority) {}
+void LLBakingAvatar::onGlobalColorChanged(const LLTexGlobalColor* global_color, BOOL upload_bake) {}
+
+BOOL LLBakingAvatar::isTextureDefined(LLAvatarAppearanceDefines::ETextureIndex type, U32 index) const
+{
+	return TRUE;
+}
+
+
+//-----------------------------------------------------------------------------
+// (LLERR) Non-implemented methods.
+//-----------------------------------------------------------------------------
+
+LLVector3 LLBakingAvatar::getCharacterPosition()
+{
+	LL_ERRS("AppearanceUtility") << "Not implemented." << LL_ENDL;
+	return LLVector3::zero;
+}
+
+LLQuaternion LLBakingAvatar::getCharacterRotation()
+{
+	LL_ERRS("AppearanceUtility") << "Not implemented." << LL_ENDL;
+	return LLQuaternion::DEFAULT;
+}
+
+LLVector3 LLBakingAvatar::getCharacterVelocity()
+{
+	LL_ERRS("AppearanceUtility") << "Not implemented." << LL_ENDL;
+	return LLVector3::zero;
+}
+
+LLVector3 LLBakingAvatar::getCharacterAngularVelocity()
+{
+	LL_ERRS("AppearanceUtility") << "Not implemented." << LL_ENDL;
+	return LLVector3::zero;
+}
+
+const LLUUID& LLBakingAvatar::getID() const
+{
+	LL_ERRS("AppearanceUtility") << "Not implemented." << LL_ENDL;
+	return LLUUID::null;
+}
+
+void LLBakingAvatar::addDebugText(const std::string& text)
+{
+	LL_ERRS("AppearanceUtility") << "Not implemented." << LL_ENDL;
+}
+
+F32 LLBakingAvatar::getTimeDilation()
+{
+	LL_ERRS("AppearanceUtility") << "Not implemented." << LL_ENDL;
+	return 0.0f;
+}
+
+void LLBakingAvatar::getGround(const LLVector3 &inPos, LLVector3 &outPos, LLVector3 &outNorm)
+{
+	LL_ERRS("AppearanceUtility") << "Not implemented." << LL_ENDL;
+}
+
+F32 LLBakingAvatar::getPixelArea() const
+{
+	LL_ERRS("AppearanceUtility") << "Not implemented." << LL_ENDL;
+	return 0.0f;
+}
+
+LLVector3d LLBakingAvatar::getPosGlobalFromAgent(const LLVector3 &position)
+{
+	LL_ERRS("AppearanceUtility") << "Not implemented." << LL_ENDL;
+	return LLVector3d::zero;
+}
+
+LLVector3 LLBakingAvatar::getPosAgentFromGlobal(const LLVector3d &position)
+{
+	LL_ERRS("AppearanceUtility") << "Not implemented." << LL_ENDL;
+	return LLVector3::zero;
+}
+
+
 
diff --git a/indra/appearance_utility/llbakingavatar.h b/indra/appearance_utility/llbakingavatar.h
index 53eac8162ea..65ff65521e9 100644
--- a/indra/appearance_utility/llbakingavatar.h
+++ b/indra/appearance_utility/llbakingavatar.h
@@ -49,26 +49,65 @@ class LLBakingAvatar : public LLAvatarAppearance
 
 /********************************************************************************
  **                                                                            **
- **                    STATE
+ **                    INHERITED
  **/
+
+	//--------------------------------------------------------------------
+	// LLCharacter interface
+	//--------------------------------------------------------------------
 public:
-	virtual bool 	isSelf() const { return true; }
-	virtual BOOL	isValid() const { return TRUE; }
-	virtual BOOL	isUsingBakedTextures() const { return TRUE; }
+	/*virtual*/ LLVector3    	getCharacterPosition();
+	/*virtual*/ LLQuaternion 	getCharacterRotation();
+	/*virtual*/ LLVector3    	getCharacterVelocity();
+	/*virtual*/ LLVector3    	getCharacterAngularVelocity();
 
-/**                    State
+	/*virtual*/ const LLUUID&	getID() const;
+	/*virtual*/ void			addDebugText(const std::string& text);
+	/*virtual*/ F32				getTimeDilation();
+	/*virtual*/ void			getGround(const LLVector3 &inPos, LLVector3 &outPos, LLVector3 &outNorm);
+	/*virtual*/ F32				getPixelArea() const;
+	/*virtual*/ LLVector3d		getPosGlobalFromAgent(const LLVector3 &position);
+	/*virtual*/ LLVector3		getPosAgentFromGlobal(const LLVector3d &position);
+
+	//--------------------------------------------------------------------
+	// LLAvatarAppearance interface
+	//--------------------------------------------------------------------
+public:
+	/*virtual*/ void	bodySizeChanged();
+	/*virtual*/ void	applyMorphMask(U8* tex_data, S32 width, S32 height, S32 num_components,
+							LLAvatarAppearanceDefines::EBakedTextureIndex index);
+	/*virtual*/ void	invalidateComposite(LLTexLayerSet* layerset, BOOL upload_result);
+	/*virtual*/ void 	updateMeshTextures();
+	/*virtual*/ void	dirtyMesh(); // Dirty the avatar mesh
+	/*virtual*/ void	onGlobalColorChanged(const LLTexGlobalColor* global_color, BOOL upload_bake);
+	/*virtual*/ BOOL	isTextureDefined(LLAvatarAppearanceDefines::ETextureIndex type, U32 index = 0) const;
+private:
+	/*virtual*/ void	dirtyMesh(S32 priority); // Dirty the avatar mesh, with priority
+
+	// LLAvatarAppearance instance factories:
+protected:
+	/*virtual*/ LLAvatarJoint*	createAvatarJoint();
+	/*virtual*/ LLAvatarJoint*	createAvatarJoint(S32 joint_num);
+	/*virtual*/ LLAvatarJointMesh*	createAvatarJointMesh();
+	/*virtual*/ LLTexLayerSet*	createTexLayerSet();
+
+
+/**                    Inherited
  **                                                                            **
  *******************************************************************************/
 
 /********************************************************************************
  **                                                                            **
- **                    SKELETON
+ **                    STATE
  **/
+public:
+	/*virtual*/ bool 	isSelf() const { return true; }
+	/*virtual*/ BOOL	isValid() const { return TRUE; }
+	/*virtual*/ BOOL	isUsingBakedTextures() const { return TRUE; }
 
-protected:
-	virtual LLAvatarJoint*	createAvatarJoint();
-	virtual LLAvatarJoint*	createAvatarJoint(S32 joint_num);
-	virtual LLAvatarJointMesh*	createAvatarJointMesh();
+/**                    State
+ **                                                                            **
+ *******************************************************************************/
 
 };
 
diff --git a/indra/appearance_utility/llbakingtexlayer.cpp b/indra/appearance_utility/llbakingtexlayer.cpp
new file mode 100644
index 00000000000..38fbd7c557a
--- /dev/null
+++ b/indra/appearance_utility/llbakingtexlayer.cpp
@@ -0,0 +1,51 @@
+/** 
+ * @file llbakingtexlayer.cpp
+ * @brief Implementation of LLBakingTexLayer class
+ *
+ * $LicenseInfo:firstyear=2012&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2012, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+#include "linden_common.h"
+
+#include "llbakingtexlayer.h"
+
+LLBakingTexLayerSet::LLBakingTexLayerSet(LLAvatarAppearance* const appearance) :
+	LLTexLayerSet(appearance)
+{
+}
+
+// virtual
+LLBakingTexLayerSet::~LLBakingTexLayerSet()
+{
+}
+
+// Ignored.
+void LLBakingTexLayerSet::requestUpdate()
+{
+}
+
+void LLBakingTexLayerSet::createComposite()
+{
+	llerrs << "TODO: Create a composite." << llendl;
+}
+
+
diff --git a/indra/appearance_utility/llbakingtexlayer.h b/indra/appearance_utility/llbakingtexlayer.h
new file mode 100644
index 00000000000..2ed9863d4a7
--- /dev/null
+++ b/indra/appearance_utility/llbakingtexlayer.h
@@ -0,0 +1,43 @@
+/** 
+ * @file llbakingtexlayer.h
+ * @brief Declaration of LLBakingTexLayerSet.
+ *
+ * $LicenseInfo:firstyear=2012&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2012, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LLBAKINGTEXLAYER_H
+#define LL_LLBAKINGTEXLAYER_H
+
+#include "lltexlayer.h"
+
+class LLBakingTexLayerSet : public LLTexLayerSet
+{
+public:
+	LLBakingTexLayerSet(LLAvatarAppearance* const appearance);
+	virtual ~LLBakingTexLayerSet();
+
+	/*virtual*/void				requestUpdate();
+	/*virtual*/void				createComposite();
+};
+
+#endif /* LL_LLBAKINGTEXLAYER_H */
+
diff --git a/indra/appearance_utility/llprocessparams.cpp b/indra/appearance_utility/llprocessparams.cpp
index 71557fa7ba9..439c403ded8 100644
--- a/indra/appearance_utility/llprocessparams.cpp
+++ b/indra/appearance_utility/llprocessparams.cpp
@@ -42,6 +42,7 @@
 void LLProcessParams::process(LLSD& input, std::ostream& output)
 {
 	LLWearableData wearable_data;
+	LLBakingAvatar avatar(&wearable_data);
 
 	LLSD result;
 	result["success"] = true;
diff --git a/indra/llappearance/llavatarappearance.cpp b/indra/llappearance/llavatarappearance.cpp
index ed8ff1e69ee..19c656044c9 100644
--- a/indra/llappearance/llavatarappearance.cpp
+++ b/indra/llappearance/llavatarappearance.cpp
@@ -166,7 +166,7 @@ LLAvatarAppearance::LLAvatarAppearance(LLWearableData* wearable_data) :
 	mTexEyeColor( NULL ),
 	mPelvisToFoot(0.f),
 	mHeadOffset(),
-
+	mRoot(NULL),
 	mWearableData(wearable_data)
 {
 	LLMemType mt(LLMemType::MTYPE_AVATAR);
@@ -287,7 +287,7 @@ LLAvatarAppearance::~LLAvatarAppearance()
 		}
 	}
 
-	mRoot->removeAllChildren();
+	if (mRoot) mRoot->removeAllChildren();
 	mJointMap.clear();
 
 	clearSkeleton();
@@ -1178,6 +1178,81 @@ BOOL LLAvatarAppearance::loadLayersets()
 	return success;
 }
 
+//-----------------------------------------------------------------------------
+// getCharacterJoint()
+//-----------------------------------------------------------------------------
+LLJoint *LLAvatarAppearance::getCharacterJoint( U32 num )
+{
+	if ((S32)num >= mSkeleton.size()
+	    || (S32)num < 0)
+	{
+		return NULL;
+	}
+	return mSkeleton[num];
+}
+
+
+//-----------------------------------------------------------------------------
+// getVolumePos()
+//-----------------------------------------------------------------------------
+LLVector3 LLAvatarAppearance::getVolumePos(S32 joint_index, LLVector3& volume_offset)
+{
+	if (joint_index > mNumCollisionVolumes)
+	{
+		return LLVector3::zero;
+	}
+
+	return mCollisionVolumes[joint_index].getVolumePos(volume_offset);
+}
+
+//-----------------------------------------------------------------------------
+// findCollisionVolume()
+//-----------------------------------------------------------------------------
+LLJoint* LLAvatarAppearance::findCollisionVolume(U32 volume_id)
+{
+	if ((S32)volume_id > mNumCollisionVolumes)
+	{
+		return NULL;
+	}
+	
+	return &mCollisionVolumes[volume_id];
+}
+
+//-----------------------------------------------------------------------------
+// findCollisionVolume()
+//-----------------------------------------------------------------------------
+S32 LLAvatarAppearance::getCollisionVolumeID(std::string &name)
+{
+	for (S32 i = 0; i < mNumCollisionVolumes; i++)
+	{
+		if (mCollisionVolumes[i].getName() == name)
+		{
+			return i;
+		}
+	}
+
+	return -1;
+}
+
+//-----------------------------------------------------------------------------
+// LLAvatarAppearance::getHeadMesh()
+//-----------------------------------------------------------------------------
+LLPolyMesh*	LLAvatarAppearance::getHeadMesh()
+{
+	return mMeshLOD[MESH_ID_HEAD]->mMeshParts[0]->getMesh();
+}
+
+
+//-----------------------------------------------------------------------------
+// LLAvatarAppearance::getUpperBodyMesh()
+//-----------------------------------------------------------------------------
+LLPolyMesh*	LLAvatarAppearance::getUpperBodyMesh()
+{
+	return mMeshLOD[MESH_ID_UPPER_BODY]->mMeshParts[0]->getMesh();
+}
+
+
+
 // virtual
 BOOL LLAvatarAppearance::isValid() const
 {
diff --git a/indra/llappearance/llavatarappearance.h b/indra/llappearance/llavatarappearance.h
index b512fd4eda2..06607ef899f 100644
--- a/indra/llappearance/llavatarappearance.h
+++ b/indra/llappearance/llavatarappearance.h
@@ -76,6 +76,28 @@ class LLAvatarAppearance : public LLCharacter
  **                                                                            **
  *******************************************************************************/
 
+/********************************************************************************
+ **                                                                            **
+ **                    INHERITED
+ **/
+
+	//--------------------------------------------------------------------
+	// LLCharacter interface and related
+	//--------------------------------------------------------------------
+public:
+	/*virtual*/ LLJoint*		getCharacterJoint(U32 num);
+
+	/*virtual*/ const char*		getAnimationPrefix() { return "avatar"; }
+	/*virtual*/ LLVector3		getVolumePos(S32 joint_index, LLVector3& volume_offset);
+	/*virtual*/ LLJoint*		findCollisionVolume(U32 volume_id);
+	/*virtual*/ S32				getCollisionVolumeID(std::string &name);
+	/*virtual*/ LLPolyMesh*		getHeadMesh();
+	/*virtual*/ LLPolyMesh*		getUpperBodyMesh();
+
+/**                    Inherited
+ **                                                                            **
+ *******************************************************************************/
+
 /********************************************************************************
  **                                                                            **
  **                    STATE
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 8ac39fe5ef1..fa1f9c95aba 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -4557,48 +4557,6 @@ void LLVOAvatar::stopMotionFromSource(const LLUUID& source_id)
 {
 }
 
-//-----------------------------------------------------------------------------
-// getVolumePos()
-//-----------------------------------------------------------------------------
-LLVector3 LLVOAvatar::getVolumePos(S32 joint_index, LLVector3& volume_offset)
-{
-	if (joint_index > mNumCollisionVolumes)
-	{
-		return LLVector3::zero;
-	}
-
-	return mCollisionVolumes[joint_index].getVolumePos(volume_offset);
-}
-
-//-----------------------------------------------------------------------------
-// findCollisionVolume()
-//-----------------------------------------------------------------------------
-LLJoint* LLVOAvatar::findCollisionVolume(U32 volume_id)
-{
-	if ((S32)volume_id > mNumCollisionVolumes)
-	{
-		return NULL;
-	}
-	
-	return &mCollisionVolumes[volume_id];
-}
-
-//-----------------------------------------------------------------------------
-// findCollisionVolume()
-//-----------------------------------------------------------------------------
-S32 LLVOAvatar::getCollisionVolumeID(std::string &name)
-{
-	for (S32 i = 0; i < mNumCollisionVolumes; i++)
-	{
-		if (mCollisionVolumes[i].getName() == name)
-		{
-			return i;
-		}
-	}
-
-	return -1;
-}
-
 //-----------------------------------------------------------------------------
 // addDebugText()
 //-----------------------------------------------------------------------------
@@ -4790,23 +4748,6 @@ F32 LLVOAvatar::getPixelArea() const
 }
 
 
-//-----------------------------------------------------------------------------
-// LLVOAvatar::getHeadMesh()
-//-----------------------------------------------------------------------------
-LLPolyMesh*	LLVOAvatar::getHeadMesh()
-{
-	return mMeshLOD[MESH_ID_HEAD]->mMeshParts[0]->getMesh();
-}
-
-
-//-----------------------------------------------------------------------------
-// LLVOAvatar::getUpperBodyMesh()
-//-----------------------------------------------------------------------------
-LLPolyMesh*	LLVOAvatar::getUpperBodyMesh()
-{
-	return mMeshLOD[MESH_ID_UPPER_BODY]->mMeshParts[0]->getMesh();
-}
-
 
 //-----------------------------------------------------------------------------
 // LLVOAvatar::getPosGlobalFromAgent()
@@ -4825,19 +4766,6 @@ LLVector3	LLVOAvatar::getPosAgentFromGlobal(const LLVector3d &position)
 }
 
 
-//-----------------------------------------------------------------------------
-// getCharacterJoint()
-//-----------------------------------------------------------------------------
-LLJoint *LLVOAvatar::getCharacterJoint( U32 num )
-{
-	if ((S32)num >= mSkeleton.size()
-	    || (S32)num < 0)
-	{
-		return NULL;
-	}
-	return mSkeleton[num];
-}
-
 //-----------------------------------------------------------------------------
 // requestStopMotion()
 //-----------------------------------------------------------------------------
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
index 9b59e5f0eb4..5335d6fda17 100755
--- a/indra/newview/llvoavatar.h
+++ b/indra/newview/llvoavatar.h
@@ -122,31 +122,31 @@ class LLVOAvatar :
 	// LLViewerObject interface and related
 	//--------------------------------------------------------------------
 public:
-	virtual void			updateGL();
-	virtual	LLVOAvatar*		asAvatar();
+	/*virtual*/ void			updateGL();
+	/*virtual*/ LLVOAvatar*		asAvatar();
 	virtual U32    	 	 	processUpdateMessage(LLMessageSystem *mesgsys,
 													 void **user_data,
 													 U32 block_num,
 													 const EObjectUpdateType update_type,
 													 LLDataPacker *dp);
 	virtual void   	 	 	idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time);
-	virtual BOOL   	 	 	updateLOD();
+	/*virtual*/ BOOL   	 	 	updateLOD();
 	BOOL  	 	 	 	 	updateJointLODs();
 	void					updateLODRiggedAttachments( void );
-	virtual BOOL   	 	 	isActive() const; // Whether this object needs to do an idleUpdate.
-	virtual void   	 	 	updateTextures();
-	virtual S32    	 	 	setTETexture(const U8 te, const LLUUID& uuid); // If setting a baked texture, need to request it from a non-local sim.
-	virtual void   	 	 	onShift(const LLVector4a& shift_vector);
-	virtual U32    	 	 	getPartitionType() const;
-	virtual const  	 	 	LLVector3 getRenderPosition() const;
-	virtual void   	 	 	updateDrawable(BOOL force_damped);
-	virtual LLDrawable* 	createDrawable(LLPipeline *pipeline);
-	virtual BOOL   	 	 	updateGeometry(LLDrawable *drawable);
-	virtual void   	 	 	setPixelAreaAndAngle(LLAgent &agent);
-	virtual void   	 	 	updateRegion(LLViewerRegion *regionp);
-	virtual void   	 	 	updateSpatialExtents(LLVector4a& newMin, LLVector4a &newMax);
-	virtual void   	 	 	getSpatialExtents(LLVector4a& newMin, LLVector4a& newMax);
-	virtual BOOL   	 	 	lineSegmentIntersect(const LLVector3& start, const LLVector3& end,
+	/*virtual*/ BOOL   	 	 	isActive() const; // Whether this object needs to do an idleUpdate.
+	/*virtual*/ void   	 	 	updateTextures();
+	/*virtual*/ S32    	 	 	setTETexture(const U8 te, const LLUUID& uuid); // If setting a baked texture, need to request it from a non-local sim.
+	/*virtual*/ void   	 	 	onShift(const LLVector4a& shift_vector);
+	/*virtual*/ U32    	 	 	getPartitionType() const;
+	/*virtual*/ const  	 	 	LLVector3 getRenderPosition() const;
+	/*virtual*/ void   	 	 	updateDrawable(BOOL force_damped);
+	/*virtual*/ LLDrawable* 	createDrawable(LLPipeline *pipeline);
+	/*virtual*/ BOOL   	 	 	updateGeometry(LLDrawable *drawable);
+	/*virtual*/ void   	 	 	setPixelAreaAndAngle(LLAgent &agent);
+	/*virtual*/ void   	 	 	updateRegion(LLViewerRegion *regionp);
+	/*virtual*/ void   	 	 	updateSpatialExtents(LLVector4a& newMin, LLVector4a &newMax);
+	/*virtual*/ void   	 	 	getSpatialExtents(LLVector4a& newMin, LLVector4a& newMax);
+	/*virtual*/ BOOL   	 	 	lineSegmentIntersect(const LLVector3& start, const LLVector3& end,
 												 S32 face = -1,                    // which face to check, -1 = ALL_SIDES
 												 BOOL pick_transparent = FALSE,
 												 S32* face_hit = NULL,             // which face was hit
@@ -167,15 +167,14 @@ class LLVOAvatar :
 	// LLCharacter interface and related
 	//--------------------------------------------------------------------
 public:
-	virtual LLVector3    	getCharacterPosition();
-	virtual LLQuaternion 	getCharacterRotation();
-	virtual LLVector3    	getCharacterVelocity();
-	virtual LLVector3    	getCharacterAngularVelocity();
-	virtual LLJoint*		getCharacterJoint(U32 num);
+	/*virtual*/ LLVector3    	getCharacterPosition();
+	/*virtual*/ LLQuaternion 	getCharacterRotation();
+	/*virtual*/ LLVector3    	getCharacterVelocity();
+	/*virtual*/ LLVector3    	getCharacterAngularVelocity();
 
-	virtual LLUUID			remapMotionID(const LLUUID& id);
-	virtual BOOL			startMotion(const LLUUID& id, F32 time_offset = 0.f);
-	virtual BOOL			stopMotion(const LLUUID& id, BOOL stop_immediate = FALSE);
+	/*virtual*/ LLUUID			remapMotionID(const LLUUID& id);
+	/*virtual*/ BOOL			startMotion(const LLUUID& id, F32 time_offset = 0.f);
+	/*virtual*/ BOOL			stopMotion(const LLUUID& id, BOOL stop_immediate = FALSE);
 	virtual void			stopMotionFromSource(const LLUUID& source_id);
 	virtual void			requestStopMotion(LLMotion* motion);
 	LLMotion*				findMotion(const LLUUID& id) const;
@@ -188,19 +187,13 @@ class LLVOAvatar :
 	void					resetJointPositionsToDefault( void );
 	void					resetSpecificJointPosition( const std::string& name );
 	
-	virtual const char*		getAnimationPrefix() { return "avatar"; }
-	virtual const LLUUID&   getID() const;
-	virtual LLVector3		getVolumePos(S32 joint_index, LLVector3& volume_offset);
-	virtual LLJoint*		findCollisionVolume(U32 volume_id);
-	virtual S32				getCollisionVolumeID(std::string &name);
-	virtual void			addDebugText(const std::string& text);
-	virtual F32          	getTimeDilation();
-	virtual void			getGround(const LLVector3 &inPos, LLVector3 &outPos, LLVector3 &outNorm);
-	virtual F32				getPixelArea() const;
-	virtual LLPolyMesh*		getHeadMesh();
-	virtual LLPolyMesh*		getUpperBodyMesh();
-	virtual LLVector3d		getPosGlobalFromAgent(const LLVector3 &position);
-	virtual LLVector3		getPosAgentFromGlobal(const LLVector3d &position);
+	/*virtual*/ const LLUUID&	getID() const;
+	/*virtual*/ void			addDebugText(const std::string& text);
+	/*virtual*/ F32				getTimeDilation();
+	/*virtual*/ void			getGround(const LLVector3 &inPos, LLVector3 &outPos, LLVector3 &outNorm);
+	/*virtual*/ F32				getPixelArea() const;
+	/*virtual*/ LLVector3d		getPosGlobalFromAgent(const LLVector3 &position);
+	/*virtual*/ LLVector3		getPosAgentFromGlobal(const LLVector3d &position);
 	virtual void			updateVisualParams();
 
 
@@ -495,7 +488,7 @@ class LLVOAvatar :
 	virtual LLViewerTexture::EBoostLevel 	getAvatarBoostLevel() const { return LLGLTexture::BOOST_AVATAR; }
 	virtual LLViewerTexture::EBoostLevel 	getAvatarBakedBoostLevel() const { return LLGLTexture::BOOST_AVATAR_BAKED; }
 	virtual S32 						getTexImageSize() const;
-	virtual S32 						getTexImageArea() const { return getTexImageSize()*getTexImageSize(); }
+	/*virtual*/ S32						getTexImageArea() const { return getTexImageSize()*getTexImageSize(); }
 
 /**                    Rendering
  **                                                                            **
@@ -808,9 +801,9 @@ class LLVOAvatar :
  **/
 
 public:
-	virtual BOOL 	setParent(LLViewerObject* parent);
-	virtual void 	addChild(LLViewerObject *childp);
-	virtual void 	removeChild(LLViewerObject *childp);
+	/*virtual*/ BOOL 	setParent(LLViewerObject* parent);
+	/*virtual*/ void 	addChild(LLViewerObject *childp);
+	/*virtual*/ void 	removeChild(LLViewerObject *childp);
 
 	//--------------------------------------------------------------------
 	// Sitting
-- 
GitLab


From 8ba2b388769e245ec1b49b7d6d4b0372d684ff86 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Thu, 13 Sep 2012 10:25:48 +0000
Subject: [PATCH 074/436] Fleshed out target_link_libraries dependencies
 between libraries.  Appearance utility now reads avatar_lad.xml during
 stubbed out params processing.

---
 indra/appearance_utility/CMakeLists.txt       | 21 ++-------------
 .../llappappearanceutility.cpp                | 27 +++++++++++++++++++
 indra/appearance_utility/llbakingavatar.h     | 10 +++++++
 indra/appearance_utility/llprocessparams.cpp  |  1 +
 indra/linux_updater/CMakeLists.txt            |  2 ++
 indra/llappearance/CMakeLists.txt             | 25 +++++++++--------
 indra/llappearance/llavatarappearance.cpp     |  8 ++++++
 indra/llappearance/llavatarappearance.h       |  3 ++-
 indra/llappearance/llwearabletype.cpp         | 16 +++++++++--
 indra/llappearance/llwearabletype.h           | 10 +++++++
 indra/llaudio/CMakeLists.txt                  |  4 +++
 indra/llcharacter/CMakeLists.txt              |  9 +++++++
 indra/llimage/CMakeLists.txt                  | 12 ++++++++-
 indra/llinventory/CMakeLists.txt              |  6 +++++
 indra/llkdu/CMakeLists.txt                    |  5 +++-
 indra/llmath/CMakeLists.txt                   |  4 +++
 indra/llmessage/CMakeLists.txt                |  5 +++-
 indra/llprimitive/CMakeLists.txt              |  9 +++++++
 indra/llrender/CMakeLists.txt                 |  9 ++++++-
 indra/llvfs/CMakeLists.txt                    |  1 +
 indra/llwindow/CMakeLists.txt                 | 10 ++++++-
 indra/llxml/CMakeLists.txt                    |  7 ++---
 indra/mac_updater/CMakeLists.txt              |  2 ++
 indra/newview/CMakeLists.txt                  | 11 --------
 indra/newview/llappviewer.cpp                 | 17 ++++++++++++
 indra/newview/llvoavatar.cpp                  |  3 ---
 26 files changed, 180 insertions(+), 57 deletions(-)

diff --git a/indra/appearance_utility/CMakeLists.txt b/indra/appearance_utility/CMakeLists.txt
index dec71feea20..92898fa48bf 100644
--- a/indra/appearance_utility/CMakeLists.txt
+++ b/indra/appearance_utility/CMakeLists.txt
@@ -3,38 +3,27 @@
 project(appearance_utility)
 
 include(00-Common)
-include(CURL)
-include(CARes)
-include(OpenSSL)
-include(UI)
 include(LLAppearance)
 include(LLCharacter)
 include(LLCommon)
 include(LLImage)
 include(LLInventory)
 include(LLMath)
-include(LLKDU)
 include(LLRender)
 include(LLVFS)
 include(LLXML)
-include(LLUI)
 include(Linking)
+include(GooglePerfTools)
 
 include_directories(
     ${LLCOMMON_INCLUDE_DIRS}
     ${LLVFS_INCLUDE_DIRS}
     ${LLXML_INCLUDE_DIRS}
-    ${LLUI_INCLUDE_DIRS}
     ${LLCHARACTER_INCLUDE_DIRS}
-    ${LLKDU_INCLUDE_DIRS}
     ${LLIMAGE_INCLUDE_DIRS}
     ${LLMATH_INCLUDE_DIRS}
     ${LLINVENTORY_INCLUDE_DIRS}
     ${LLRENDER_INCLUDE_DIRS}
-    ${CURL_INCLUDE_DIRS}
-    ${CARES_INCLUDE_DIRS}
-    ${OPENSSL_INCLUDE_DIRS}
-    ${UI_INCLUDE_DIRS}
     ${LLAPPEARANCE_INCLUDE_DIRS}
     )
 
@@ -70,13 +59,7 @@ add_executable(appearance-utility-bin ${appearance_utility_SOURCE_FILES})
 
 target_link_libraries(appearance-utility-bin
     ${LLAPPEARANCE_LIBRARIES}
-    ${LLCHARACTER_LIBRARIES}
-    ${LLRENDER_LIBRARIES}
-    ${LLUI_LIBRARIES}
-    ${UI_LIBRARIES}
-    ${LLIMAGE_LIBRARIES}
-    ${LLKDU_LIBRARIES}
-    ${KDU_LIBRARY}
+    ${TCMALLOC_LIBRARIES}
     )
 
 add_custom_target(appearance-utility-bin-target ALL
diff --git a/indra/appearance_utility/llappappearanceutility.cpp b/indra/appearance_utility/llappappearanceutility.cpp
index b49e9548306..66e59e1b89a 100644
--- a/indra/appearance_utility/llappappearanceutility.cpp
+++ b/indra/appearance_utility/llappappearanceutility.cpp
@@ -37,6 +37,10 @@
 #include "llsdserialize.h"
 #include "llsdutil.h"
 
+// appearance includes
+#include "llavatarappearance.h"
+#include "llwearabletype.h"
+
 // project includes
 #include "llappappearanceutility.h"
 #include "llbakingprocess.h"
@@ -375,20 +379,43 @@ void LLAppAppearanceUtility::initializeIO()
 	/////  END INPUT PARSING ////
 }
 
+class LLPassthroughTranslationBridge : public LLTranslationBridge
+{
+public:
+	virtual std::string getString(const std::string &xml_desc)
+	{
+		// Just pass back the input string.
+		return xml_desc;
+	}
+};
+
+
 bool LLAppAppearanceUtility::init()
 {
 	parseArguments();
 
+	bool log_to_stderr = true;
+	LLError::initForApplication("", log_to_stderr);
 	// *TODO: Add debug mode(s).  Skip this in debug mode.
 	LLError::setDefaultLevel(LLError::LEVEL_WARN);
 
 	validateArguments();
 	initializeIO();
+
+	// Initialize classes.
+	LLWearableType::initClass(new LLPassthroughTranslationBridge());
+
+	// *TODO: Create a texture bridge?
+	LLAvatarAppearance::initClass();
+
 	return true;
 }
 
 bool LLAppAppearanceUtility::cleanup()
 {
+	LLAvatarAppearance::cleanupClass();
+	LLWearableType::cleanupClass();
+
 	if (mProcess)
 	{
 		delete mProcess;
diff --git a/indra/appearance_utility/llbakingavatar.h b/indra/appearance_utility/llbakingavatar.h
index 65ff65521e9..7f20d316749 100644
--- a/indra/appearance_utility/llbakingavatar.h
+++ b/indra/appearance_utility/llbakingavatar.h
@@ -38,6 +38,16 @@ class LLBakingAvatar : public LLAvatarAppearance
  **                    INITIALIZATION
  **/
 public:
+	void* operator new(size_t size)
+	{
+		return ll_aligned_malloc_16(size);
+	}
+
+	void operator delete(void* ptr)
+	{
+		ll_aligned_free_16(ptr);
+	}
+
 	LLBakingAvatar(LLWearableData* wearable_data);
 	virtual ~LLBakingAvatar();
 
diff --git a/indra/appearance_utility/llprocessparams.cpp b/indra/appearance_utility/llprocessparams.cpp
index 439c403ded8..723bae0dd63 100644
--- a/indra/appearance_utility/llprocessparams.cpp
+++ b/indra/appearance_utility/llprocessparams.cpp
@@ -43,6 +43,7 @@ void LLProcessParams::process(LLSD& input, std::ostream& output)
 {
 	LLWearableData wearable_data;
 	LLBakingAvatar avatar(&wearable_data);
+	avatar.initInstance();
 
 	LLSD result;
 	result["success"] = true;
diff --git a/indra/linux_updater/CMakeLists.txt b/indra/linux_updater/CMakeLists.txt
index 4377a6333c3..c4e25f4a04e 100644
--- a/indra/linux_updater/CMakeLists.txt
+++ b/indra/linux_updater/CMakeLists.txt
@@ -8,6 +8,7 @@ include(CARes)
 include(OpenSSL)
 include(UI)
 include(LLCommon)
+include(LLMessage)
 include(LLVFS)
 include(LLXML)
 include(LLUI)
@@ -40,6 +41,7 @@ target_link_libraries(linux-updater
     ${CARES_LIBRARIES}
     ${OPENSSL_LIBRARIES}
     ${CRYPTO_LIBRARIES}
+    ${LLMESSAGE_LIBRARIES}
     ${UI_LIBRARIES}
     ${LLXML_LIBRARIES}
     ${LLUI_LIBRARIES}
diff --git a/indra/llappearance/CMakeLists.txt b/indra/llappearance/CMakeLists.txt
index adce620372a..c570f0c93b4 100644
--- a/indra/llappearance/CMakeLists.txt
+++ b/indra/llappearance/CMakeLists.txt
@@ -4,37 +4,24 @@ project(llappearance)
 
 include(00-Common)
 include(LLCommon)
-include(LLAudio)
 include(LLCharacter)
-include(LLCommon)
 include(LLImage)
-include(LLImageJ2COJ)
 include(LLInventory)
 include(LLMath)
 include(LLMessage)
-include(LLPhysicsExtensions)
-include(LLPlugin)
-include(LLPrimitive)
 include(LLRender)
-include(LLUI)
 include(LLVFS)
 include(LLWindow)
 include(LLXML)
 include(Linking)
-include(LLKDU)
-include(ViewerMiscLibs)
-include(LLLogin)
 
 include_directories(
     ${LLCOMMON_INCLUDE_DIRS}
     ${LLCHARACTER_INCLUDE_DIRS}
-    ${LLPHYSICS_INCLUDE_DIRS}
     ${LLIMAGE_INCLUDE_DIRS}
-    ${LLKDU_INCLUDE_DIRS}
     ${LLINVENTORY_INCLUDE_DIRS}
     ${LLMATH_INCLUDE_DIRS}
     ${LLRENDER_INCLUDE_DIRS}
-    ${LLUI_INCLUDE_DIRS}
     ${LLVFS_INCLUDE_DIRS}
     ${LLWINDOW_INCLUDE_DIRS}
     ${LLXML_INCLUDE_DIRS}
@@ -90,6 +77,18 @@ list(APPEND llappearance_SOURCE_FILES ${llappearance_HEADER_FILES})
 
 add_library (llappearance ${llappearance_SOURCE_FILES})
 
+target_link_libraries(llappearance
+    ${LLCHARACTER_LIBRARIES}
+    ${LLINVENTORY_LIBRARIES}
+    ${LLIMAGE_LIBRARIES}
+    ${LLRENDER_LIBRARIES}
+    ${LLVFS_LIBRARIES}
+    ${LLMATH_LIBRARIES}
+    ${LLXML_LIBRARIES}
+    ${LLMATH_LIBRARIES}
+    ${LLCOMMON_LIBRARIES}
+    )
+
 #add unit tests
 #if (LL_TESTS)
 #    INCLUDE(LLAddBuildTest)
diff --git a/indra/llappearance/llavatarappearance.cpp b/indra/llappearance/llavatarappearance.cpp
index 19c656044c9..824f0a1e322 100644
--- a/indra/llappearance/llavatarappearance.cpp
+++ b/indra/llappearance/llavatarappearance.cpp
@@ -419,6 +419,14 @@ void LLAvatarAppearance::initClass()
 	}
 }
 
+void LLAvatarAppearance::cleanupClass()
+{
+	deleteAndClear(sAvatarXmlInfo);
+	// *TODO: What about sAvatarSkeletonInfo ???
+	sSkeletonXMLTree.cleanup();
+	sXMLTree.cleanup();
+}
+
 using namespace LLAvatarAppearanceDefines;
 
 //------------------------------------------------------------------------
diff --git a/indra/llappearance/llavatarappearance.h b/indra/llappearance/llavatarappearance.h
index 06607ef899f..5726ff62d10 100644
--- a/indra/llappearance/llavatarappearance.h
+++ b/indra/llappearance/llavatarappearance.h
@@ -65,7 +65,8 @@ class LLAvatarAppearance : public LLCharacter
 	LLAvatarAppearance(LLWearableData* wearable_data);
 	virtual ~LLAvatarAppearance();
 
-	static void initClass(); // initializes static members
+	static void			initClass(); // initializes static members
+	static void			cleanupClass();	// Cleanup data that's only init'd once per class.
 	virtual void 		initInstance(); // Called after construction to initialize the instance.
 	virtual BOOL		loadSkeletonNode();
 	BOOL				loadMeshNodes();
diff --git a/indra/llappearance/llwearabletype.cpp b/indra/llappearance/llwearabletype.cpp
index aa0afe348a7..618e2a1941b 100644
--- a/indra/llappearance/llwearabletype.cpp
+++ b/indra/llappearance/llwearabletype.cpp
@@ -27,7 +27,19 @@
 #include "linden_common.h"
 #include "llwearabletype.h"
 #include "llinventorytype.h"
-#include "lltrans.h"
+
+static LLTranslationBridge* sTrans = NULL;
+
+// static
+void LLWearableType::initClass(LLTranslationBridge* trans)
+{
+	sTrans = trans;
+}
+
+void LLWearableType::cleanupClass()
+{
+	delete sTrans;
+}
 
 struct WearableEntry : public LLDictionaryEntry
 {
@@ -40,7 +52,7 @@ struct WearableEntry : public LLDictionaryEntry
 		LLDictionaryEntry(name),
 		mAssetType(assetType),
 		mDefaultNewName(default_new_name),
-		mLabel(LLTrans::getString(name)),
+		mLabel(sTrans->getString(name)),
 		mIconName(iconName),
 		mDisableCameraSwitch(disable_camera_switch),
 		mAllowMultiwear(allow_multiwear)
diff --git a/indra/llappearance/llwearabletype.h b/indra/llappearance/llwearabletype.h
index 78008c27ea2..e51e6731d38 100644
--- a/indra/llappearance/llwearabletype.h
+++ b/indra/llappearance/llwearabletype.h
@@ -32,6 +32,13 @@
 #include "llinventorytype.h"
 #include "llsingleton.h"
 
+class LLTranslationBridge
+{
+public:
+	virtual std::string getString(const std::string &xml_desc) = 0;
+};
+
+
 class LLWearableType
 {
 public: 
@@ -59,6 +66,9 @@ class LLWearableType
 		WT_NONE		  = -1,
 	};
 
+	static void			initClass(LLTranslationBridge* trans); // initializes static members
+	static void			cleanupClass(); // initializes static members
+
 	static const std::string& 			getTypeName(EType type);
 	static const std::string& 			getTypeDefaultNewName(EType type);
 	static const std::string& 			getTypeLabel(EType type);
diff --git a/indra/llaudio/CMakeLists.txt b/indra/llaudio/CMakeLists.txt
index 632e5d46e33..24d25311065 100644
--- a/indra/llaudio/CMakeLists.txt
+++ b/indra/llaudio/CMakeLists.txt
@@ -88,6 +88,10 @@ list(APPEND llaudio_SOURCE_FILES ${llaudio_HEADER_FILES})
 add_library (llaudio ${llaudio_SOURCE_FILES})
 target_link_libraries(
     llaudio
+    ${LLCOMMON_LIBRARIES}
+    ${LLMATH_LIBRARIES}
+    ${LLMESSAGE_LIBRARIES}
+    ${LLVFS_LIBRARIES}
     ${VORBISENC_LIBRARIES}
     ${VORBISFILE_LIBRARIES}
     ${VORBIS_LIBRARIES}
diff --git a/indra/llcharacter/CMakeLists.txt b/indra/llcharacter/CMakeLists.txt
index a1712699eb2..607cdf6d356 100644
--- a/indra/llcharacter/CMakeLists.txt
+++ b/indra/llcharacter/CMakeLists.txt
@@ -76,6 +76,15 @@ list(APPEND llcharacter_SOURCE_FILES ${llcharacter_HEADER_FILES})
 
 add_library (llcharacter ${llcharacter_SOURCE_FILES})
 
+target_link_libraries(
+    llcharacter
+    ${LLCOMMON_LIBRARIES}
+    ${LLMATH_LIBRARIES}
+    ${LLMESSAGE_LIBRARIES}
+    ${LLVFS_LIBRARIES}
+    ${LLXML_LIBRARIES}
+    )
+
 
 # Add tests
 if (LL_TESTS)
diff --git a/indra/llimage/CMakeLists.txt b/indra/llimage/CMakeLists.txt
index ea8c1a1107e..706464a7707 100644
--- a/indra/llimage/CMakeLists.txt
+++ b/indra/llimage/CMakeLists.txt
@@ -7,6 +7,8 @@ include(LLCommon)
 include(LLImage)
 include(LLMath)
 include(LLVFS)
+include(LLKDU)
+include(LLImageJ2COJ)
 include(ZLIB)
 include(LLAddBuildTest)
 include(Tut)
@@ -56,8 +58,16 @@ list(APPEND llimage_SOURCE_FILES ${llimage_HEADER_FILES})
 add_library (llimage ${llimage_SOURCE_FILES})
 # Libraries on which this library depends, needed for Linux builds
 # Sort by high-level to low-level
+if (USE_KDU)
+    target_link_libraries(llimage ${LLKDU_LIBRARIES})
+else (USE_KDU)
+    target_link_libraries(llimage ${LLIMAGEJ2COJ_LIBRARIES})
+endif (USE_KDU)
+
 target_link_libraries(llimage
-    llcommon
+    ${LLVFS_LIBRARIES}
+    ${LLMATH_LIBRARIES}
+    ${LLCOMMON_LIBRARIES}
     ${JPEG_LIBRARIES}
     ${PNG_LIBRARIES}
     ${ZLIB_LIBRARIES}
diff --git a/indra/llinventory/CMakeLists.txt b/indra/llinventory/CMakeLists.txt
index e45c809e7e5..f2dd0b06f5f 100644
--- a/indra/llinventory/CMakeLists.txt
+++ b/indra/llinventory/CMakeLists.txt
@@ -58,6 +58,12 @@ list(APPEND llinventory_SOURCE_FILES ${llinventory_HEADER_FILES})
 
 add_library (llinventory ${llinventory_SOURCE_FILES})
 
+target_link_libraries(llinventory
+    ${LLCOMMON_LIBRARIES}
+    ${LLMATH_LIBRARIES}
+    ${LLMESSAGE_LIBRARIES}
+    ${LLXML_LIBRARIES}
+    )
 
 
 #add unit tests
diff --git a/indra/llkdu/CMakeLists.txt b/indra/llkdu/CMakeLists.txt
index bdac2eded7e..b8f8b420c32 100644
--- a/indra/llkdu/CMakeLists.txt
+++ b/indra/llkdu/CMakeLists.txt
@@ -41,7 +41,10 @@ set_source_files_properties(${llkdu_HEADER_FILES}
 list(APPEND llkdu_SOURCE_FILES ${llkdu_HEADER_FILES})
 
 if (USE_KDU)
-  add_library (${LLKDU_LIBRARIES} ${llkdu_SOURCE_FILES})
+  add_library (llkdu ${llkdu_SOURCE_FILES})
+
+  target_link_libraries(llkdu
+    ${KDU_LIBRARY})
   
   # Add tests
   if (LL_TESTS)
diff --git a/indra/llmath/CMakeLists.txt b/indra/llmath/CMakeLists.txt
index 5865ae030c2..a06dea2e9ab 100644
--- a/indra/llmath/CMakeLists.txt
+++ b/indra/llmath/CMakeLists.txt
@@ -99,6 +99,10 @@ list(APPEND llmath_SOURCE_FILES ${llmath_HEADER_FILES})
 
 add_library (llmath ${llmath_SOURCE_FILES})
 
+target_link_libraries(llmath
+    ${LLCOMMON_LIBRARIES}
+    )
+
 # Add tests
 if (LL_TESTS)
   include(LLAddBuildTest)
diff --git a/indra/llmessage/CMakeLists.txt b/indra/llmessage/CMakeLists.txt
index d98781e9e62..1a90c32fe4f 100644
--- a/indra/llmessage/CMakeLists.txt
+++ b/indra/llmessage/CMakeLists.txt
@@ -218,6 +218,9 @@ add_library (llmessage ${llmessage_SOURCE_FILES})
 target_link_libraries(
   llmessage
   ${CURL_LIBRARIES}
+  ${LLCOMMON_LIBRARIES}
+  ${LLVFS_LIBRARES}
+  ${LLMATH_LIBRARIES}
   ${CARES_LIBRARIES}
   ${OPENSSL_LIBRARIES}
   ${CRYPTO_LIBRARIES}
@@ -243,7 +246,7 @@ if (LL_TESTS)
     ${LLVFS_LIBRARIES}
     ${LLMATH_LIBRARIES}
     ${LLCOMMON_LIBRARIES}
-      ${GOOGLEMOCK_LIBRARIES}
+    ${GOOGLEMOCK_LIBRARIES}
     )
 
   LL_ADD_INTEGRATION_TEST(
diff --git a/indra/llprimitive/CMakeLists.txt b/indra/llprimitive/CMakeLists.txt
index e4d9de7eb64..cf01e10577b 100644
--- a/indra/llprimitive/CMakeLists.txt
+++ b/indra/llprimitive/CMakeLists.txt
@@ -59,6 +59,15 @@ list(APPEND llprimitive_SOURCE_FILES ${llprimitive_HEADER_FILES})
 
 add_library (llprimitive ${llprimitive_SOURCE_FILES})
 
+target_link_libraries(llprimitive
+    ${LLCOMMON_LIBRARIES}
+    ${LLMATH_LIBRARIES}
+    ${LLMESSAGE_LIBRARIES}
+    ${LLXML_LIBRARIES}
+    ${LLPHYSICSEXTENSIONS_LIBRARIES}
+    )
+
+
 #add unit tests
 if (LL_TESTS)
     INCLUDE(LLAddBuildTest)
diff --git a/indra/llrender/CMakeLists.txt b/indra/llrender/CMakeLists.txt
index 3418ce2dfa7..d47129a67b3 100644
--- a/indra/llrender/CMakeLists.txt
+++ b/indra/llrender/CMakeLists.txt
@@ -105,6 +105,13 @@ add_library (llrender ${llrender_SOURCE_FILES})
 # Libraries on which this library depends, needed for Linux builds
 # Sort by high-level to low-level
 target_link_libraries(llrender 
-    llimage 
+    ${LLCOMMON_INCLUDE_DIRS}
+    ${LLIMAGE_INCLUDE_DIRS}
+    ${LLMATH_INCLUDE_DIRS}
+    ${LLRENDER_INCLUDE_DIRS}
+    ${LLVFS_INCLUDE_DIRS}
+    ${LLXML_INCLUDE_DIRS}
+    ${LLVFS_INCLUDE_DIRS}
+    ${LLWINDOW_LIBRARIES}
     ${FREETYPE_LIBRARIES}
     ${OPENGL_LIBRARIES})
diff --git a/indra/llvfs/CMakeLists.txt b/indra/llvfs/CMakeLists.txt
index a819d128617..80d5dd96e63 100644
--- a/indra/llvfs/CMakeLists.txt
+++ b/indra/llvfs/CMakeLists.txt
@@ -68,6 +68,7 @@ set(vfs_BOOST_LIBRARIES
     )
 
 target_link_libraries(llvfs
+    ${LLCOMMON_LIBRARIES}
     ${vfs_BOOST_LIBRARIES}
     )
 
diff --git a/indra/llwindow/CMakeLists.txt b/indra/llwindow/CMakeLists.txt
index 341bddfffdb..652d5cae5ab 100644
--- a/indra/llwindow/CMakeLists.txt
+++ b/indra/llwindow/CMakeLists.txt
@@ -64,6 +64,13 @@ set(viewer_HEADER_FILES
 # Sort by high-level to low-level
 if (LINUX AND VIEWER)
   set(llwindow_LINK_LIBRARIES
+      ${LLCOMMON_LIBRARIES}
+      ${LLIMAGE_LIBRARIES}
+      ${LLMATH_LIBRARIES}
+      ${LLRENDER_LIBRARIES}
+      ${LLVFS_LIBRARIES}
+      ${LLWINDOW_LIBRARIES}
+      ${LLXML_LIBRARIES}
       ${UI_LIBRARIES}     # for GTK
       ${SDL_LIBRARY}
       fontconfig          # For FCInit and other FC* functions.
@@ -160,7 +167,8 @@ endif (SERVER AND NOT WINDOWS AND NOT DARWIN)
 if (llwindow_HEADER_FILES)
   list(APPEND llwindow_SOURCE_FILES ${llwindow_HEADER_FILES})
 endif (llwindow_HEADER_FILES)
-  list(APPEND viewer_SOURCE_FILES ${viewer_HEADER_FILES})
+
+list(APPEND viewer_SOURCE_FILES ${viewer_HEADER_FILES})
 
 if (VIEWER)
   add_library (llwindow
diff --git a/indra/llxml/CMakeLists.txt b/indra/llxml/CMakeLists.txt
index beefcda3610..ccd83876330 100644
--- a/indra/llxml/CMakeLists.txt
+++ b/indra/llxml/CMakeLists.txt
@@ -39,9 +39,10 @@ list(APPEND llxml_SOURCE_FILES ${llxml_HEADER_FILES})
 add_library (llxml ${llxml_SOURCE_FILES})
 # Libraries on which this library depends, needed for Linux builds
 # Sort by high-level to low-level
-target_link_libraries( llxml
-    llvfs
-    llmath
+target_link_libraries(llxml
+    ${LLVFS_LIBRARIES}
+    ${LLMATH_LIBRARIES}
+    ${LLCOMMON_LIBRARIES}
     ${EXPAT_LIBRARIES}
     )
 
diff --git a/indra/mac_updater/CMakeLists.txt b/indra/mac_updater/CMakeLists.txt
index 00dcedecaa9..a644984e58f 100644
--- a/indra/mac_updater/CMakeLists.txt
+++ b/indra/mac_updater/CMakeLists.txt
@@ -7,6 +7,7 @@ include(OpenSSL)
 include(CURL)
 include(CARes)
 include(LLCommon)
+include(LLMessage)
 include(LLVFS)
 include(Linking)
 
@@ -52,6 +53,7 @@ set_target_properties(mac-updater
   )
 
 target_link_libraries(mac-updater
+    ${LLMESSAGE_LIBRARIES}
     ${LLVFS_LIBRARIES}
     ${OPENSSL_LIBRARIES}
     ${CRYPTO_LIBRARIES}
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 9215b7b670b..b12853b014c 100755
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -1824,17 +1824,6 @@ target_link_libraries(${VIEWER_BINARY_NAME}
     ${LLAPPEARANCE_LIBRARIES}
     )
 
-if (USE_KDU)
-    target_link_libraries(${VIEWER_BINARY_NAME}
-        ${LLKDU_LIBRARIES}
-        ${KDU_LIBRARY}
-        )
-else (USE_KDU)
-    target_link_libraries(${VIEWER_BINARY_NAME}
-        ${LLIMAGEJ2COJ_LIBRARIES}
-        )
-endif (USE_KDU)
-
 build_version(viewer)
 
 set(ARTWORK_DIR ${CMAKE_CURRENT_SOURCE_DIR} CACHE PATH
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index fbf15ff5ce4..587435301da 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -668,6 +668,15 @@ LLAppViewer::~LLAppViewer()
 	removeMarkerFile();
 }
 
+class LLUITranslationBridge : public LLTranslationBridge
+{
+public:
+	virtual std::string getString(const std::string &xml_desc)
+	{
+		return LLTrans::getString(xml_desc);
+	}
+};
+
 bool LLAppViewer::init()
 {	
 	//
@@ -679,6 +688,10 @@ bool LLAppViewer::init()
 	//
 	LLFastTimer::reset();
 
+	// initialize LLWearableType translation bridge.
+	// Memory will be cleaned up in ::cleanupClass()
+	LLWearableType::initClass(new LLUITranslationBridge());
+
 	// initialize SSE options
 	LLVector4a::initClass();
 
@@ -1797,6 +1810,8 @@ bool LLAppViewer::cleanup()
 	llinfos << "Cleaning up Objects" << llendflush;
 	
 	LLViewerObject::cleanupVOClasses();
+
+	LLAvatarAppearance::cleanupClass();
 	
 	LLPostProcess::cleanupClass();
 
@@ -2030,6 +2045,8 @@ bool LLAppViewer::cleanup()
 	llinfos << "Cleaning up LLProxy." << llendl;
 	LLProxy::cleanupClass();
 
+	LLWearableType::cleanupClass();
+
 	LLMainLoopRepeater::instance().stop();
 
 	//release all private memory pools.
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index fa1f9c95aba..0d16d039da8 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -1039,9 +1039,6 @@ void LLVOAvatar::initClass()
 
 void LLVOAvatar::cleanupClass()
 {
-	deleteAndClear(sAvatarXmlInfo);
-	sSkeletonXMLTree.cleanup();
-	sXMLTree.cleanup();
 }
 
 // virtual
-- 
GitLab


From 97ee3003ffddb7cd2f8a8a2768101a8065ae1fe3 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Thu, 13 Sep 2012 17:22:15 -0400
Subject: [PATCH 075/436] more dump capabilities for visual params and textures
 in avatar and appearance messages

---
 indra/newview/llvoavatar.cpp | 153 +++++++++++++++++++++++++++--------
 indra/newview/llvoavatar.h   |   5 +-
 2 files changed, 124 insertions(+), 34 deletions(-)

diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 96e59dd9ebc..bcaf355dd8f 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -202,6 +202,12 @@ enum ERenderName
 	RENDER_NAME_FADE
 };
 
+
+// Utility func - FIXME move out of avatar.
+std::string get_sequential_numbered_file_name(const std::string& prefix,
+											  const std::string& suffix,
+											  const S32 width = 4);
+
 //-----------------------------------------------------------------------------
 // Callback data
 //-----------------------------------------------------------------------------
@@ -7331,13 +7337,54 @@ bool LLVOAvatar::visualParamWeightsAreDefault()
 	return rtn;
 }
 
+void LLVOAvatar::dumpAppearanceMsgParams( const std::string& dump_prefix,
+										  const std::vector<F32>& params_for_dump,
+										  const LLTEContents& tec)
+{
+	std::string outfilename = get_sequential_numbered_file_name(dump_prefix,".xml");
+
+	LLAPRFile outfile;
+	std::string fullpath = gDirUtilp->getExpandedFilename(LL_PATH_LOGS,outfilename);
+	outfile.open(fullpath, LL_APR_WB );
+	apr_file_t* file = outfile.getFileHandle();
+	if (!file)
+	{
+		return;
+	}
+	else
+	{
+		llinfos << "xmlfile write handle obtained : " << fullpath << llendl;
+	}
+
+
+	LLVisualParam* param = getFirstVisualParam();
+	for (S32 i = 0; i < params_for_dump.size(); i++)
+	{
+		while( param && (param->getGroup() != VISUAL_PARAM_GROUP_TWEAKABLE) ) // should not be any of group VISUAL_PARAM_GROUP_TWEAKABLE_NO_TRANSMIT
+		{
+			param = getNextVisualParam();
+		}
+		LLViewerVisualParam* viewer_param = (LLViewerVisualParam*)param;
+		F32 value = params_for_dump[i];
+		apr_file_printf(file, "\t\t<param id=\"%d\" name=\"%s\" value=\"%.3f\"/>\n",
+						viewer_param->getID(), viewer_param->getName().c_str(), value);
+		param = getNextVisualParam();
+	}
+	for (U32 i = 0; i < tec.face_count; i++)
+	{
+		std::string uuid_str;
+		((LLUUID*)tec.image_data)[i].toString(uuid_str);
+		apr_file_printf( file, "\t\t<texture te=\"%i\" uuid=\"%s\"/>\n", i, uuid_str.c_str());
+	}
+}
 
 //-----------------------------------------------------------------------------
 // processAvatarAppearance()
 //-----------------------------------------------------------------------------
 void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 {
-	dumpArchetypeXML("process_start");
+	//std::string dump_prefix = getFullname() + " ";
+	//dumpArchetypeXML(dump_prefix + "process_start");
 	if (gSavedSettings.getBOOL("BlockAvatarAppearanceMessages"))
 	{
 		llwarns << "Blocking AvatarAppearance message" << llendl;
@@ -7361,9 +7408,9 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 //			llinfos << "processAvatarAppearance end  " << mID << llendl;
 			return;
 		}
-		clearVisualParamWeights();
 	}
-	dumpArchetypeXML("process_post_clear");
+	clearVisualParamWeights();
+	//dumpArchetypeXML(dump_prefix + "process_post_clear");
 
 	ESex old_sex = getSex();
 
@@ -7448,6 +7495,7 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 		}
 		else
 		{
+			std::vector<F32> params_for_dump;
 			for( S32 i = 0; i < num_blocks; i++ )
 			{
 				while( param && (param->getGroup() != VISUAL_PARAM_GROUP_TWEAKABLE) ) // should not be any of group VISUAL_PARAM_GROUP_TWEAKABLE_NO_TRANSMIT
@@ -7464,6 +7512,7 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 				U8 value;
 				mesgsys->getU8Fast(_PREHASH_VisualParam, _PREHASH_ParamValue, value, i);
 				F32 newWeight = U8_to_F32(value, param->getMinWeight(), param->getMaxWeight());
+				params_for_dump.push_back(newWeight);
 
 				if (is_first_appearance_message || (param->getWeight() != newWeight))
 				{
@@ -7481,9 +7530,12 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 				}
 				param = getNextVisualParam();
 			}
+			//dumpAppearanceMsgParams(dump_prefix + "appearance_msg",
+			//						params_for_dump,
+			//						tec);
 		}
 
-		dumpArchetypeXML("process_post_set_weights");
+		//dumpArchetypeXML(dump_prefix + "process_post_set_weights");
 
 		const S32 expected_tweakable_count = getVisualParamCountInGroup(VISUAL_PARAM_GROUP_TWEAKABLE); // don't worry about VISUAL_PARAM_GROUP_TWEAKABLE_NO_TRANSMIT
 		if (num_blocks != expected_tweakable_count)
@@ -7549,7 +7601,7 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 
 	updateMeshTextures();
 
-	dumpArchetypeXML("process_end");
+	//dumpArchetypeXML(dump_prefix + "process_end");
 //	llinfos << "processAvatarAppearance end " << mID << llendl;
 }
 
@@ -7779,33 +7831,42 @@ void LLVOAvatar::useBakedTexture( const LLUUID& id )
 	dirtyMesh();
 }
 
-void LLVOAvatar::dumpArchetypeXML(const std::string& prefix )
+std::string get_sequential_numbered_file_name(const std::string& prefix,
+											  const std::string& suffix,
+											  const S32 width)
 {
-	std::string outprefix(prefix);
-	if (outprefix.empty())
-	{
-		outprefix = getFullname();
-	}
-	if (outprefix.empty())
-	{
-		outprefix = std::string("new_archetype");
-	}
 	typedef std::map<std::string,S32> file_num_type;
 	static  file_num_type file_nums;
-	file_num_type::iterator it = file_nums.find(outprefix);
+	file_num_type::iterator it = file_nums.find(prefix);
 	S32 num = 0;
 	if (it != file_nums.end())
 	{
 		num = it->second;
 	}
 	std::ostringstream temp;
-	temp << std::setw(4) << std::setfill('0') << num;
-	file_nums[outprefix] = num+1;
-	std::string outfilename = outprefix + " " + temp.str() + ".xml";
+	temp << std::setw(width) << std::setfill('0') << num;
+	file_nums[prefix] = num+1;
+	std::string outfilename = prefix + " " + temp.str() + ".xml";
 	std::replace(outfilename.begin(),outfilename.end(),' ','_');
+	return outfilename;
+}
+
+void LLVOAvatar::dumpArchetypeXML(const std::string& prefix, bool group_by_wearables )
+{
+	std::string outprefix(prefix);
+	if (outprefix.empty())
+	{
+		outprefix = getFullname();
+	}
+	if (outprefix.empty())
+	{
+		outprefix = std::string("new_archetype");
+	}
+	std::string outfilename = get_sequential_numbered_file_name(outprefix,".xml");
 	
 	LLAPRFile outfile;
-	outfile.open(gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS,outfilename), LL_APR_WB );
+	std::string fullpath = gDirUtilp->getExpandedFilename(LL_PATH_LOGS,outfilename);
+	outfile.open(fullpath, LL_APR_WB );
 	apr_file_t* file = outfile.getFileHandle();
 	if (!file)
 	{
@@ -7813,24 +7874,53 @@ void LLVOAvatar::dumpArchetypeXML(const std::string& prefix )
 	}
 	else
 	{
-		llinfos << "xmlfile write handle obtained : " << gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS,"new archetype.xml") << llendl;
+		llinfos << "xmlfile write handle obtained : " << fullpath << llendl;
 	}
 
 	apr_file_printf( file, "<?xml version=\"1.0\" encoding=\"US-ASCII\" standalone=\"yes\"?>\n" );
 	apr_file_printf( file, "<linden_genepool version=\"1.0\">\n" );
 	apr_file_printf( file, "\n\t<archetype name=\"???\">\n" );
 
-	// only body parts, not clothing.
-	for (S32 type = LLWearableType::WT_SHAPE; type <= LLWearableType::WT_COUNT; type++)
+	if (group_by_wearables)
 	{
-		const std::string& wearable_name = LLWearableType::getTypeName((LLWearableType::EType)type);
-		apr_file_printf( file, "\n\t\t<!-- wearable: %s -->\n", wearable_name.c_str() );
+		for (S32 type = LLWearableType::WT_SHAPE; type < LLWearableType::WT_COUNT; type++)
+		{
+			const std::string& wearable_name = LLWearableType::getTypeName((LLWearableType::EType)type);
+			apr_file_printf( file, "\n\t\t<!-- wearable: %s -->\n", wearable_name.c_str() );
 
+			for (LLVisualParam* param = getFirstVisualParam(); param; param = getNextVisualParam())
+			{
+				LLViewerVisualParam* viewer_param = (LLViewerVisualParam*)param;
+				if( (viewer_param->getWearableType() == type) && 
+					(viewer_param->isTweakable() ) )
+				{
+					apr_file_printf(file, "\t\t<param id=\"%d\" name=\"%s\" value=\"%.3f\"/>\n",
+									viewer_param->getID(), viewer_param->getName().c_str(), viewer_param->getWeight());
+				}
+			}
+
+			for (U8 te = 0; te < TEX_NUM_INDICES; te++)
+			{
+				if (LLVOAvatarDictionary::getTEWearableType((ETextureIndex)te) == type)
+				{
+					// MULTIPLE_WEARABLES: extend to multiple wearables?
+					LLViewerTexture* te_image = getImage((ETextureIndex)te, 0);
+					if( te_image )
+					{
+						std::string uuid_str;
+						te_image->getID().toString( uuid_str );
+						apr_file_printf( file, "\t\t<texture te=\"%i\" uuid=\"%s\"/>\n", te, uuid_str.c_str());
+					}
+				}
+			}
+		}
+	}
+	else 
+	{
+		// Just dump all params sequentially.
 		for (LLVisualParam* param = getFirstVisualParam(); param; param = getNextVisualParam())
 		{
 			LLViewerVisualParam* viewer_param = (LLViewerVisualParam*)param;
-			if( (viewer_param->getWearableType() == type) && 
-				(viewer_param->isTweakable() ) )
 			{
 				apr_file_printf(file, "\t\t<param id=\"%d\" name=\"%s\" value=\"%.3f\"/>\n",
 								viewer_param->getID(), viewer_param->getName().c_str(), viewer_param->getWeight());
@@ -7839,7 +7929,6 @@ void LLVOAvatar::dumpArchetypeXML(const std::string& prefix )
 
 		for (U8 te = 0; te < TEX_NUM_INDICES; te++)
 		{
-			if (LLVOAvatarDictionary::getTEWearableType((ETextureIndex)te) == type)
 			{
 				// MULTIPLE_WEARABLES: extend to multiple wearables?
 				LLViewerTexture* te_image = getImage((ETextureIndex)te, 0);
@@ -7851,14 +7940,12 @@ void LLVOAvatar::dumpArchetypeXML(const std::string& prefix )
 				}
 			}
 		}
+
 	}
 	apr_file_printf( file, "\t</archetype>\n" );
 	apr_file_printf( file, "\n</linden_genepool>\n" );
-	//explictly close the file if it is still open which it should be
-	if (file)
-	{
-		outfile.close();
-	}
+
+	// File will close when handle goes out of scope
 }
 
 
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
index 62c8e680693..170072e5c1e 100755
--- a/indra/newview/llvoavatar.h
+++ b/indra/newview/llvoavatar.h
@@ -1016,7 +1016,10 @@ class LLVOAvatar :
 	// General
 	//--------------------------------------------------------------------
 public:
-	void				dumpArchetypeXML(const std::string& prefix);
+	void				dumpArchetypeXML(const std::string& prefix, bool group_by_wearables = false);
+	void 				dumpAppearanceMsgParams( const std::string& dump_prefix,
+												 const std::vector<F32>& paramsForDump,
+												 const LLTEContents& tec);
 	static void			dumpBakedStatus();
 	const std::string 	getBakedStatusForPrintout() const;
 	void				dumpAvatarTEs(const std::string& context) const;
-- 
GitLab


From 9307810e7e8edcf18f7c27abda5d0b94ed13bcf7 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Thu, 13 Sep 2012 22:53:16 +0000
Subject: [PATCH 076/436] Fix for merge build error.  Attempt to cleanup cmake
 warnings regarding incorrect target_link_libraries

---
 indra/llrender/CMakeLists.txt | 14 +++++++-------
 indra/newview/llvoavatar.cpp  |  2 +-
 2 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/indra/llrender/CMakeLists.txt b/indra/llrender/CMakeLists.txt
index d47129a67b3..fc38f56957e 100644
--- a/indra/llrender/CMakeLists.txt
+++ b/indra/llrender/CMakeLists.txt
@@ -105,13 +105,13 @@ add_library (llrender ${llrender_SOURCE_FILES})
 # Libraries on which this library depends, needed for Linux builds
 # Sort by high-level to low-level
 target_link_libraries(llrender 
-    ${LLCOMMON_INCLUDE_DIRS}
-    ${LLIMAGE_INCLUDE_DIRS}
-    ${LLMATH_INCLUDE_DIRS}
-    ${LLRENDER_INCLUDE_DIRS}
-    ${LLVFS_INCLUDE_DIRS}
-    ${LLXML_INCLUDE_DIRS}
-    ${LLVFS_INCLUDE_DIRS}
+    ${LLCOMMON_LIBRARIES}
+    ${LLIMAGE_LIBRARIES}
+    ${LLMATH_LIBRARIES}
+    ${LLRENDER_LIBRARIES}
+    ${LLVFS_LIBRARIES}
+    ${LLXML_LIBRARIES}
+    ${LLVFS_LIBRARIES}
     ${LLWINDOW_LIBRARIES}
     ${FREETYPE_LIBRARIES}
     ${OPENGL_LIBRARIES})
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index bec67c16955..1b185ed508b 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -6853,7 +6853,7 @@ void LLVOAvatar::dumpArchetypeXML(const std::string& prefix, bool group_by_weara
 
 			for (U8 te = 0; te < TEX_NUM_INDICES; te++)
 			{
-				if (LLVOAvatarDictionary::getTEWearableType((ETextureIndex)te) == type)
+				if (LLAvatarAppearanceDictionary::getTEWearableType((ETextureIndex)te) == type)
 				{
 					// MULTIPLE_WEARABLES: extend to multiple wearables?
 					LLViewerTexture* te_image = getImage((ETextureIndex)te, 0);
-- 
GitLab


From 8808325ced4d380d937c9be1cc81e20a5ebb5f62 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Fri, 14 Sep 2012 11:27:04 +0000
Subject: [PATCH 077/436] Removed appearance utility from viewer source.  Added
 appearance utility autobuild package.

---
 BuildParams                                   |   4 +
 autobuild.xml                                 |  26 +
 build.sh                                      |  39 +-
 debian/changelog                              |   6 -
 debian/control                                |   8 -
 debian/copyright                              |  33 +-
 debian/rules                                  |  43 --
 .../secondlife-appearance-utility.substvars   |   1 -
 indra/CMakeLists.txt                          |   5 +-
 indra/appearance_utility/CMakeLists.txt       |  66 ---
 .../appearance_utility/appearance_utility.cpp |  66 ---
 .../llappappearanceutility.cpp                | 445 ------------------
 .../llappappearanceutility.h                  |  97 ----
 indra/appearance_utility/llbakingavatar.cpp   | 159 -------
 indra/appearance_utility/llbakingavatar.h     | 125 -----
 indra/appearance_utility/llbakingjoint.cpp    |  54 ---
 indra/appearance_utility/llbakingjoint.h      |  44 --
 .../appearance_utility/llbakingjointmesh.cpp  |  43 --
 indra/appearance_utility/llbakingjointmesh.h  |  43 --
 indra/appearance_utility/llbakingprocess.h    |  55 ---
 .../appearance_utility/llbakingshadermgr.cpp  | 226 ---------
 indra/appearance_utility/llbakingshadermgr.h  | 137 ------
 indra/appearance_utility/llbakingtexlayer.cpp |  51 --
 indra/appearance_utility/llbakingtexlayer.h   |  43 --
 indra/appearance_utility/llprocessparams.cpp  |  53 ---
 indra/appearance_utility/llprocessparams.h    |  42 --
 indra/appearance_utility/wrapper.sh           |  25 -
 indra/cmake/LLAppearanceUtility.cmake         |  12 +
 indra/llcommon/llversionserver.h              |   2 +-
 indra/llcommon/llversionviewer.h              |   2 +-
 indra/newview/English.lproj/InfoPlist.strings |   4 +-
 indra/newview/Info-SecondLife.plist           |   2 +-
 indra/newview/res/viewerRes.rc                |   8 +-
 33 files changed, 118 insertions(+), 1851 deletions(-)
 delete mode 100644 debian/secondlife-appearance-utility.substvars
 delete mode 100644 indra/appearance_utility/CMakeLists.txt
 delete mode 100644 indra/appearance_utility/appearance_utility.cpp
 delete mode 100644 indra/appearance_utility/llappappearanceutility.cpp
 delete mode 100644 indra/appearance_utility/llappappearanceutility.h
 delete mode 100644 indra/appearance_utility/llbakingavatar.cpp
 delete mode 100644 indra/appearance_utility/llbakingavatar.h
 delete mode 100644 indra/appearance_utility/llbakingjoint.cpp
 delete mode 100644 indra/appearance_utility/llbakingjoint.h
 delete mode 100644 indra/appearance_utility/llbakingjointmesh.cpp
 delete mode 100644 indra/appearance_utility/llbakingjointmesh.h
 delete mode 100644 indra/appearance_utility/llbakingprocess.h
 delete mode 100644 indra/appearance_utility/llbakingshadermgr.cpp
 delete mode 100644 indra/appearance_utility/llbakingshadermgr.h
 delete mode 100644 indra/appearance_utility/llbakingtexlayer.cpp
 delete mode 100644 indra/appearance_utility/llbakingtexlayer.h
 delete mode 100644 indra/appearance_utility/llprocessparams.cpp
 delete mode 100644 indra/appearance_utility/llprocessparams.h
 delete mode 100755 indra/appearance_utility/wrapper.sh
 create mode 100644 indra/cmake/LLAppearanceUtility.cmake

diff --git a/BuildParams b/BuildParams
index ebfc640023e..cfe21696b07 100644
--- a/BuildParams
+++ b/BuildParams
@@ -8,9 +8,13 @@ Darwin.symbolfiles = "newview/Release/secondlife-symbols-darwin.tar.bz2"
 CYGWIN.symbolfiles = "newview/Release/secondlife-symbols-windows.tar.bz2"
 Linux.symbolfiles = "newview/secondlife-symbols-linux.tar.bz2"
 
+variants=Release
+
 # Use Public Upload Locations
 public_build = true
 
+clean_on_success = false
+
 # skip windows debug build until we can get a fix in.
 build_CYGWIN_Debug = false
 
diff --git a/autobuild.xml b/autobuild.xml
index a86c8fd866b..28964b1d5f4 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -1239,6 +1239,32 @@
           </map>
         </map>
       </map>
+      <key>llappearanceutility-source</key>
+      <map>
+        <key>license</key>
+        <string>TEMPORARY</string>
+        <key>license_file</key>
+        <string>LICENSES/llappearanceutility.txt</string>
+        <key>name</key>
+        <string>llappearanceutility-source</string>
+        <key>platforms</key>
+        <map>
+          <key>linux</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>a1197a789ccedb6cdd9d8aeb30e52b1b</string>
+              <key>url</key>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/264759/arch/Linux/installer/llappearanceutility_source-0.1-linux-20120914.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>linux</string>
+          </map>
+        </map>
+        <key>version</key>
+        <string>0.1</string>
+      </map>
       <key>llphysicsextensions_source</key>
       <map>
         <key>license</key>
diff --git a/build.sh b/build.sh
index 2f4f440a929..a85d4af6fc8 100755
--- a/build.sh
+++ b/build.sh
@@ -113,11 +113,23 @@ build()
     check_for "Before 'autobuild build'" ${build_dir}/packages/dictionaries
 
     "$AUTOBUILD" build --no-configure -c $variant
-    viewer_build_ok=$?
+    build_ok=$?
     end_section "Viewer$variant"
+
+    # Run build extensions
+    if [ $build_ok -eq 0 -a -d ${build_dir}/packages/build-extensions ]; then
+        for extension in ${build_dir}/packages/build-extensions/*.sh; do
+            . $extension
+            if [ $build_ok -ne 0 ]; then
+                break
+            fi
+        done
+    fi
+
+    # *TODO: Make this a build extension.
     package_llphysicsextensions_tpv
     tpvlib_build_ok=$?
-    if [ $viewer_build_ok -eq 0 -a $tpvlib_build_ok -eq 0 ]
+    if [ $build_ok -eq 0 -a $tpvlib_build_ok -eq 0 ]
     then
       echo true >"$build_dir"/build_ok
     else
@@ -299,7 +311,7 @@ then
   then
     if $build_viewer_deb && [ "$last_built_variant" == "Release" ]
     then
-      begin_section "Build Debian Package"
+      begin_section "Build Viewer Debian Package"
       # mangle the changelog
       dch --force-bad-version \
           --distribution unstable \
@@ -313,7 +325,16 @@ then
       # Unmangle the changelog file
       hg revert debian/changelog
 
-      end_section "Build Debian Package"
+      end_section "Build Viewer Debian Package"
+
+      # Run debian extensions
+      if [ -d ${build_dir}/packages/debian-extensions ]; then
+          for extension in ${build_dir}/packages/debian-extensions/*.sh; do
+              . $extension
+          done
+      fi
+      # Move any .deb results.
+      mv ${build_dir}/packages/*.deb ../ 2>/dev/null || true
 
       # upload debian package and create repository
       begin_section "Upload Debian Repository"
@@ -394,8 +415,9 @@ then
         do
           upload_item symbolfile "$build_dir/$symbolfile" binary/octet-stream
         done
-        
+
         # Upload the llphysicsextensions_tpv package, if one was produced
+        # *TODO: Make this an upload-extension
         if [ -r "$build_dir/llphysicsextensions_package" ]
         then
             llphysicsextensions_package=$(cat $build_dir/llphysicsextensions_package)
@@ -409,6 +431,13 @@ then
         ;;
       esac
 
+      # Run upload extensions
+      if [ -d ${build_dir}/packages/upload-extensions ]; then
+          for extension in ${build_dir}/packages/upload-extensions/*.sh; do
+              . $extension
+          done
+      fi
+
       # Upload stub installers
       upload_stub_installers "$build_dir_stubs"
     fi
diff --git a/debian/changelog b/debian/changelog
index b3df2fcab39..ce54b54c6f1 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,9 +1,3 @@
-secondlife-viewer (0.4) unstable; urgency=low
-
-  * Adding appearance utility package
-
- -- Don Kjer <don@lindenlab.com>  Thu, 06 Sep 2012 19:32:55 +0000
-
 secondlife-viewer (0.3) unstable; urgency=low
 
   * Initial debian configuration
diff --git a/debian/control b/debian/control
index 9ebd71df656..50b9ed9a264 100644
--- a/debian/control
+++ b/debian/control
@@ -14,11 +14,3 @@ Depends: ${shlibs:Depends}, ${misc:Depends},
 Description: Second Life Viewer
  Second Life is an online virtual world developed by Linden Lab.
  
-Package: secondlife-appearance-utility
-Architecture: any
-Depends: ${shlibs:Depends}, ${misc:Depends},
- ia32-libs,
- ia32-libs-gtk
-Description: Second Life Appearance Utility
- Utility for manipulating Second Life avatar appearance.
-
diff --git a/debian/copyright b/debian/copyright
index ecfceb39276..106fa3802f1 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -1,7 +1,32 @@
-Copyright: 2012 Linden Research, Inc.
+Second Life Viewer Copyright: 2000-2012 Linden Research, Inc.
 
 License:
 
-No license to distribute, copy, modify, or make derivitave works of this
-software is granted unless specifically granted in writing by Linden Research,
-Inc.
+3Dconnexion SDK Copyright (C) 1992-2009 3Dconnexion
+APR Copyright (C) 2011 The Apache Software Foundation
+Collada DOM Copyright 2006 Sony Computer Entertainment Inc.
+cURL Copyright (C) 1996-2010, Daniel Stenberg, (daniel@haxx.se)
+DBus/dbus-glib Copyright (C) 2002, 2003  CodeFactory AB / Copyright (C) 2003, 2004 Red Hat, Inc.
+expat Copyright (C) 1998, 1999, 2000 Thai Open Source Software Center Ltd.
+FreeType Copyright (C) 1996-2002, 2006 David Turner, Robert Wilhelm, and Werner Lemberg.
+GL Copyright (C) 1999-2004 Brian Paul.
+GLOD Copyright (C) 2003-04 Jonathan Cohen, Nat Duca, Chris Niski, Johns Hopkins University and David Luebke, Brenden Schubert, University of Virginia.
+google-perftools Copyright (c) 2005, Google Inc.
+Havok.com(TM) Copyright (C) 1999-2001, Telekinesys Research Limited.
+jpeg2000 Copyright (C) 2001, David Taubman, The University of New South Wales (UNSW)
+jpeglib Copyright (C) 1991-1998, Thomas G. Lane.
+ogg/vorbis Copyright (C) 2002, Xiphophorus
+OpenSSL Copyright (C) 1998-2008 The OpenSSL Project.
+PCRE Copyright (c) 1997-2012 University of Cambridge
+SDL Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Sam Lantinga
+SSLeay Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
+xmlrpc-epi Copyright (C) 2000 Epinions, Inc.
+zlib Copyright (C) 1995-2012 Jean-loup Gailly and Mark Adler.
+
+Second Life Viewer uses Havok (TM) Physics. (c)Copyright 1999-2010 Havok.com Inc. (and its Licensors). All Rights Reserved. See www.havok.com for details.
+
+This software contains source code provided by NVIDIA Corporation.
+
+All rights reserved.  See licenses.txt for details.
+
+Voice chat Audio coding: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C)
diff --git a/debian/rules b/debian/rules
index 10301bf7d32..305fc58bb40 100755
--- a/debian/rules
+++ b/debian/rules
@@ -17,12 +17,6 @@ VIEWER_DESTDIR=$(CURDIR)/debian/$(VIEWER_PKG)
 VIEWER_VERSION:=$(shell dpkg-parsechangelog | grep ^Version | sed 's/^Version: //')
 VIEWER_INSTALLDIR:=$(BASEDIR)/viewer/SecondLife-i686-$(VIEWER_VERSION)
 
-UTILITY_PKG=secondlife-appearance-utility
-UTILITY_SRCDIR=indra/appearance_utility
-UTILITY_PACKAGEDIR=build-linux-i686/appearance_utility
-UTILITY_DESTDIR=$(CURDIR)/debian/$(UTILITY_PKG)
-UTILITY_INSTALLDIR:=$(BASEDIR)/utilities
-
 configure: configure-stamp
 configure-stamp:
 	dh_testdir
@@ -77,43 +71,6 @@ install: build
 	dh_link -p $(VIEWER_PKG) /$(VIEWER_INSTALLDIR)/secondlife /usr/bin/secondlife
 	dh_link -p $(VIEWER_PKG) $(BASEDIR)/viewer/SecondLife-i686-$(VIEWER_VERSION) $(BASEDIR)/viewer/SecondLife
 
-	# Add here commands to install the package into debian/secondlife-appearance-utility
-	# create containing directory
-	install -v -m 755 -o root -g root -d "$(UTILITY_DESTDIR)/$(UTILITY_INSTALLDIR)"
-	# install utility wrapper
-	install -v -m 755 -o root -g root "$(UTILITY_SRCDIR)/wrapper.sh" "$(UTILITY_DESTDIR)/$(UTILITY_INSTALLDIR)/wrapper.sh"
-	# install appearance-utility
-	install -v -m 755 -o root -g root "$(UTILITY_PACKAGEDIR)/appearance-utility-bin" "$(UTILITY_DESTDIR)/$(UTILITY_INSTALLDIR)/appearance-utility-bin"
-	dh_link -p $(UTILITY_PKG) $(UTILITY_INSTALLDIR)/wrapper.sh $(UTILITY_INSTALLDIR)/appearance-utility
-	# install xml/image resources from viewer package
-	for file in $$(find $(VIEWER_PACKAGEDIR)/character -name "avatar_*.xml" -o -name "*.tga" | sed 's~$(VIEWER_PACKAGEDIR)/~~'); do \
-		# create containing directory \
-		install -v -m 755 -o root -g root -d "$$(dirname "$(UTILITY_DESTDIR)/$(UTILITY_INSTALLDIR)/$$file")"; \
-		PERM=644; \
-		if [ -x "$(VIEWER_PACKAGEDIR)/$$file" ]; then \
-			PERM=755; \
-		fi; \
-		install -v -m $$PERM -o root -g root "$(VIEWER_PACKAGEDIR)/$$file" "$(UTILITY_DESTDIR)/$(UTILITY_INSTALLDIR)/$$file"; \
-	done
-	# install viewer libraries
-	for file in $$(find $(VIEWER_PACKAGEDIR)/lib -type f -o -type l | sed 's~$(VIEWER_PACKAGEDIR)/~~'); do \
-		# create containing directory \
-		install -v -m 755 -o root -g root -d "$$(dirname "$(UTILITY_DESTDIR)/$(UTILITY_INSTALLDIR)/$$file")"; \
-		PERM=644; \
-		if [ -x "$(VIEWER_PACKAGEDIR)/$$file" ]; then \
-			PERM=755; \
-		fi; \
-		if [ -L "$(VIEWER_PACKAGEDIR)/$$file" ]; then \
-			REAL="$$( readlink -f $(VIEWER_PACKAGEDIR)/$$file )"; \
-			RELATIVE="$$( echo $$REAL | sed 's~$(CURDIR)/$(VIEWER_PACKAGEDIR)/~~' )"; \
-			echo dh_link -p $(UTILITY_PKG) "$(UTILITY_INSTALLDIR)/$$RELATIVE" "$(UTILITY_INSTALLDIR)/$$file" ; \
-			dh_link -p $(UTILITY_PKG) "$(UTILITY_INSTALLDIR)/$$RELATIVE" "$(UTILITY_INSTALLDIR)/$$file" ; \
-		else \
-			install -v -m $$PERM -o root -g root "$(VIEWER_PACKAGEDIR)/$$file" "$(UTILITY_DESTDIR)/$(UTILITY_INSTALLDIR)/$$file"; \
-		fi; \
-	done
-	dh_link -p $(UTILITY_PKG) /$(UTILITY_INSTALLDIR)/appearance-utility /usr/bin/appearance-utility
-
 
 # Build architecture-independent files here.
 binary-indep: build install
diff --git a/debian/secondlife-appearance-utility.substvars b/debian/secondlife-appearance-utility.substvars
deleted file mode 100644
index abd3ebebc30..00000000000
--- a/debian/secondlife-appearance-utility.substvars
+++ /dev/null
@@ -1 +0,0 @@
-misc:Depends=
diff --git a/indra/CMakeLists.txt b/indra/CMakeLists.txt
index 4e209ff75af..f5ed9632fab 100644
--- a/indra/CMakeLists.txt
+++ b/indra/CMakeLists.txt
@@ -83,7 +83,10 @@ if (VIEWER)
   if (LINUX)
     add_subdirectory(${VIEWER_PREFIX}linux_crash_logger)
     add_subdirectory(${VIEWER_PREFIX}linux_updater)
-    add_subdirectory(${VIEWER_PREFIX}appearance_utility)
+    if (INSTALL_PROPRIETARY)
+        include(LLAppearanceUtility)
+        add_subdirectory(${LLAPPEARANCEUTILITY_SRC_DIR} ${LLAPPEARANCEUTILITY_BIN_DIR})
+    endif (INSTALL_PROPRIETARY)
     add_dependencies(viewer linux-crash-logger-strip-target linux-updater)
   elseif (DARWIN)
     add_subdirectory(${VIEWER_PREFIX}mac_crash_logger)
diff --git a/indra/appearance_utility/CMakeLists.txt b/indra/appearance_utility/CMakeLists.txt
deleted file mode 100644
index 92898fa48bf..00000000000
--- a/indra/appearance_utility/CMakeLists.txt
+++ /dev/null
@@ -1,66 +0,0 @@
-# -*- cmake -*-
-
-project(appearance_utility)
-
-include(00-Common)
-include(LLAppearance)
-include(LLCharacter)
-include(LLCommon)
-include(LLImage)
-include(LLInventory)
-include(LLMath)
-include(LLRender)
-include(LLVFS)
-include(LLXML)
-include(Linking)
-include(GooglePerfTools)
-
-include_directories(
-    ${LLCOMMON_INCLUDE_DIRS}
-    ${LLVFS_INCLUDE_DIRS}
-    ${LLXML_INCLUDE_DIRS}
-    ${LLCHARACTER_INCLUDE_DIRS}
-    ${LLIMAGE_INCLUDE_DIRS}
-    ${LLMATH_INCLUDE_DIRS}
-    ${LLINVENTORY_INCLUDE_DIRS}
-    ${LLRENDER_INCLUDE_DIRS}
-    ${LLAPPEARANCE_INCLUDE_DIRS}
-    )
-
-set(appearance_utility_SOURCE_FILES
-    appearance_utility.cpp
-    llappappearanceutility.cpp
-    llbakingavatar.cpp
-    llbakingjoint.cpp
-    llbakingjointmesh.cpp
-    llbakingshadermgr.cpp
-    llbakingtexlayer.cpp
-    llprocessparams.cpp
-    )
-
-set(appearance_utility_HEADER_FILES
-    CMakeLists.txt
-    llappappearanceutility.h
-    llbakingavatar.h
-    llbakingjoint.h
-    llbakingjointmesh.h
-    llbakingprocess.h
-    llbakingshadermgr.h
-    llbakingtexlayer.h
-    llprocessparams.h
-    )
-
-set_source_files_properties(${appearance_utility_HEADER_FILES}
-                            PROPERTIES HEADER_FILES_ONLY TRUE)
-
-list(APPEND appearance_utility_SOURCE_FILES ${appearance_utility_HEADER_FILES})
-
-add_executable(appearance-utility-bin ${appearance_utility_SOURCE_FILES})
-
-target_link_libraries(appearance-utility-bin
-    ${LLAPPEARANCE_LIBRARIES}
-    ${TCMALLOC_LIBRARIES}
-    )
-
-add_custom_target(appearance-utility-bin-target ALL
-                  DEPENDS appearance-utility-bin)
diff --git a/indra/appearance_utility/appearance_utility.cpp b/indra/appearance_utility/appearance_utility.cpp
deleted file mode 100644
index 098c3550ded..00000000000
--- a/indra/appearance_utility/appearance_utility.cpp
+++ /dev/null
@@ -1,66 +0,0 @@
-/**
- * @file appearance_utility.cpp
- * @author Don Kjer <don@lindenlab.com>, Nyx Linden
- * @brief Utility for processing avatar appearance without a full viewer implementation.
- *
- * $LicenseInfo:firstyear=2012&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2012, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
- * $/LicenseInfo$
- */
-
-// linden includes
-#include "linden_common.h"
-#include "llapr.h"
-
-// project includes
-#include "llappappearanceutility.h"
-
-int main(int argc, char** argv)
-{
-	// Create an application instance.
-	ll_init_apr();
-	LLAppAppearanceUtility* app = new LLAppAppearanceUtility(argc, argv);
-
-	// Assume success, unless exception is thrown.
-	EResult rv = RV_SUCCESS;
-	try
-	{
-		// Process command line and initialize system.
-		if (app->init())
-		{
-			// Run process.
-			app->mainLoop();
-		}
-	}
-	catch (LLAppException& e)
-	{
-		// Deal with errors.
-		rv = e.getStatusCode();
-	}
-
-	// Clean up application instance.
-	app->cleanup();
-	delete app;
-	ll_cleanup_apr();
-
-	return (int) rv;
-}
-
-
diff --git a/indra/appearance_utility/llappappearanceutility.cpp b/indra/appearance_utility/llappappearanceutility.cpp
deleted file mode 100644
index 66e59e1b89a..00000000000
--- a/indra/appearance_utility/llappappearanceutility.cpp
+++ /dev/null
@@ -1,445 +0,0 @@
-/** 
- * @file llappappearanceutility.cpp
- * @brief Implementation of LLAppAppearanceUtility class.
- *
- * $LicenseInfo:firstyear=2012&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2012, Linden Research, Inc.
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- * 
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- * 
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- * 
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
- * $/LicenseInfo$
- */
-
-#include <iostream>
-#include <sstream>
-#include <string>
-
-// linden includes
-#include "linden_common.h"
-
-#include "llapr.h"
-#include "llerrorcontrol.h"
-#include "llsd.h"
-#include "llsdserialize.h"
-#include "llsdutil.h"
-
-// appearance includes
-#include "llavatarappearance.h"
-#include "llwearabletype.h"
-
-// project includes
-#include "llappappearanceutility.h"
-#include "llbakingprocess.h"
-#include "llprocessparams.h"
-
-const std::string NOTHING_EXTRA("");
-
-////////////////////////////////////////////
-// LLAppException
-////////////////////////////////////////////
-
-static const std::string MESSAGE_RV_UNKNOWN("Unknown error.");
-static const std::string MESSAGE_RV_ARGUMENTS 
-("Invalid arguments: ");
-static const std::string MESSAGE_RV_UNABLE_OPEN("Unable to open file: ");
-static const std::string MESSAGE_RV_UNABLE_TO_PARSE("Unable to parse input LLSD.");
-static const std::string MESSAGE_DUPLICATE_MODES = "Cannot specify more than one process mode.";
-
-
-LLAppException::LLAppException(EResult status_code, const std::string& extra) :
-	mStatusCode(status_code)
-{
-	switch(status_code)
-	{
-	case RV_UNKNOWN_ERROR:
-		printErrorLLSD("unknown", MESSAGE_RV_UNKNOWN);
-	case RV_BAD_ARGUMENTS:
-		printErrorLLSD("arguments", MESSAGE_RV_ARGUMENTS + extra);
-		break;
-	case RV_UNABLE_OPEN:
-		printErrorLLSD("file", MESSAGE_RV_UNABLE_OPEN + extra);
-		break;
-	case RV_UNABLE_TO_PARSE:
-		printErrorLLSD("input", MESSAGE_RV_UNABLE_TO_PARSE);
-		break;
-	default:
-		printErrorLLSD("arguments", "Unknown exception.");
-		break;
-	}
-}
-
-void LLAppException::printErrorLLSD(const std::string& key, const std::string& message)
-{
-	LLSD error_llsd;
-	error_llsd["success"] = false;
-	error_llsd["error"]["key"] = key;
-	error_llsd["error"]["message"] = message;
-
-	std::cerr << LLSDOStreamer<LLSDXMLFormatter>(error_llsd);
-}
-
-
-
-////////////////////////////////////////////
-// LLAppAppearanceUtility
-////////////////////////////////////////////
-
-///////// Option Parsing /////////
-
-// Simple usage command.
-class LLProcessUsage : public LLBakingProcess
-{
-public:
-	LLProcessUsage(LLAppAppearanceUtility* app) :
-		LLBakingProcess(app) {}
-	/*virtual*/ void process(LLSD& input, std::ostream& output)
-	{
-		mApp->usage(output);
-	}
-};
-
-
-static const apr_getopt_option_t APPEARANCE_UTILITY_OPTIONS[] =
-{
-	{"params", 'p', 0, "Generate appearance parameters for an agent."},
-	{"output", 'o', 1, "The output file to write to.  Default is stdout"},
-	{"agent-id", 'a', 1, "The agent-id of the user."},
-	//{"grid", 'g', 1, "The grid."},
-	{"help", 'h', 0, "Print the help message."},
-	{0, 0, 0, 0}
-};
-
-void LLAppAppearanceUtility::usage(std::ostream& ostr)
-{
-	ostr << "Utilities for processing agent appearance data."
-		<< std::endl << std::endl
-		<< "Usage:" << std::endl
-		<< "\t" << mAppName << " [options] filename" << std::endl << std::endl
-		<< "Will read from stdin if filename is set to '-'." << std::endl << std::endl
-		<< "Options:" << std::endl;
-	const apr_getopt_option_t* option = &APPEARANCE_UTILITY_OPTIONS[0];
-	while(option->name)
-	{
-		ostr << "\t--" << option->name << "\t\t"
-			<< option->description << std::endl;
-		++option;
-	}
-	ostr << std::endl << "Return Values:" << std::endl
-		<< "\t0\t\tSuccess." << std::endl
-		<< "\t1\t\tUnknown error." << std::endl
-		<< "\t2\t\tBad arguments." << std::endl
-		<< "\t3\t\tUnable to open file. Possibly wrong filename"
-		<< " or bad permissions." << std::endl
-		<< "\t4\t\tUnable to parse input LLSD." << std::endl
-		<< std::endl
-		<< "Output:" << std::endl
-		<< "If a non-zero status code is returned, additional error information"
-		<< " will be returned on stderr." << std::endl
-		<< "* This will be in the form of an LLSD document." << std::endl
-		<< "* Check ['error']['message'] to get a human readable message." << std::endl
-		<< "If a zero status code is returned, processed output will be written"
-		<< " to the file specified by --out (or stdout, if not specified)." << std::endl
-		<< std::endl
-		<< std::endl;
-}
-
-
-/////// LLApp Interface ////////
-
-LLAppAppearanceUtility::LLAppAppearanceUtility(int argc, char** argv) :
-	LLApp(),
-	mArgc(argc),
-	mArgv(argv),
-	mProcess(NULL),
-	mInput(NULL),
-	mOutput(NULL),
-	mAppName(argv[0])
-{
-}
-
-// virtual
-LLAppAppearanceUtility::~LLAppAppearanceUtility()
-{
-}
-
-void LLAppAppearanceUtility::verifyNoProcess()
-{
-	if (mProcess)
-	{
-		std::cerr << "Invalid arguments. " << MESSAGE_DUPLICATE_MODES << std::endl;
-		usage(std::cerr);
-		throw LLAppException(RV_BAD_ARGUMENTS, MESSAGE_DUPLICATE_MODES);
-	}
-}
-
-void LLAppAppearanceUtility::parseArguments()
-{
-	////// BEGIN OPTION PARSING //////
-	// Check for '-' as last option, since apr doesn't seem to like that.
-	if (std::string(mArgv[mArgc-1]) == "-")
-	{
-		mInputFilename.assign("-");
-		mArgc--;
-	}
-
-	apr_status_t apr_err;
-	const char* opt_arg = NULL;
-	int opt_id = 0;
-	apr_getopt_t* os = NULL;
-	if(APR_SUCCESS != apr_getopt_init(&os, gAPRPoolp, mArgc, mArgv))
-	{
-		std::cerr << "Unable to initialize apr" << std::endl;
-		throw LLAppException(RV_UNKNOWN_ERROR);
-	}
-
-	//std::string grid;
-	while(true)
-	{
-		apr_err = apr_getopt_long(os, APPEARANCE_UTILITY_OPTIONS, &opt_id, &opt_arg);
-		if(APR_STATUS_IS_EOF(apr_err)) break;
-		if(apr_err)
-		{
-			char buf[MAX_STRING];		/* Flawfinder: ignore */
-			std::cerr << "Error parsing options: "
-				<< apr_strerror(apr_err, buf, MAX_STRING) << std::endl;
-			usage(std::cerr);
-			throw LLAppException(RV_BAD_ARGUMENTS, buf);
-		}
-		switch (opt_id)
-		{
-		case 'h':
-			verifyNoProcess();
-			mProcess = new LLProcessUsage(this);
-			break;
-		case 'p':
-			verifyNoProcess();
-			mProcess = new LLProcessParams(this);
-			break;
-		case 'o':
-			mOutputFilename.assign(opt_arg);
-			break;
-		case 'a':
-			mAgentID.set(opt_arg);
-			if (mAgentID.isNull())
-			{
-				const char* INVALID_AGENT_ID="agent-id must be a valid uuid.";
-				std::cerr << "Invalid arguments. " << INVALID_AGENT_ID << std::endl;
-				usage(std::cerr);
-				throw LLAppException(RV_BAD_ARGUMENTS, INVALID_AGENT_ID);
-			}
-			break;
-		//case 'g':
-		//	grid = opt_arg;
-		//	break;
-		default:
-			usage(std::cerr);
-			throw LLAppException(RV_BAD_ARGUMENTS, "Unknown option.");
-		}
-	}
-
-	if ("-" != mInputFilename)
-	{
-		bool valid_input_filename = false;
-		// Try to grab the input filename.
-		if (os->argv && os->argv[os->ind])
-		{
-			mInputFilename.assign(os->argv[os->ind]);
-			if (! mInputFilename.empty() )
-			{
-				valid_input_filename = true;
-			}
-		}
-		if (!valid_input_filename)
-		{
-			const char* INVALID_FILENAME="Must specify input file.";
-			std::cerr << "Invalid arguments. " << INVALID_FILENAME << std::endl;
-			usage(std::cerr);
-			throw LLAppException(RV_BAD_ARGUMENTS, INVALID_FILENAME);
-		}
-	}
-
-	////// END OPTION PARSING //////
-}
-
-void LLAppAppearanceUtility::validateArguments()
-{
-	/////  BEGIN ARGUMENT VALIDATION /////
-
-	// Make sure we have a command specified.
-	if (!mProcess)
-	{
-		const char* INVALID_MODE="No process mode specified.";
-		std::cerr << "Invalid arguments. " << INVALID_MODE
-				  << std::endl;
-		usage(std::cerr);
-		throw LLAppException(RV_BAD_ARGUMENTS, INVALID_MODE);
-	}
-
-	/////  END ARGUMENT VALIDATION /////
-}
-
-void LLAppAppearanceUtility::initializeIO()
-{
-	/////  BEGIN OPEN INPUT FILE ////
-
-	if ( "-" == mInputFilename )
-	{
-		// Read unformated data from stdin in to memory.
-		std::stringstream* data = new std::stringstream();
-		const S32 BUFFER_SIZE = BUFSIZ;
-		char buffer[BUFFER_SIZE];
-		while (true)
-		{
-			std::cin.read(buffer, BUFFER_SIZE);
-			// Check if anything out of the ordinary happened.
-			if (!std::cin)
-			{
-				// See if something 'really bad' happened, or if we just
-				// used up all of our buffer.
-				if (std::cin.bad())
-				{
-					std::cerr << "Problem reading standard input." << std::endl;
-					delete data;
-					throw (RV_UNKNOWN_ERROR);
-				}
-				else
-				{
-					// Output normally.
-					data->write(buffer, std::cin.gcount());
-					if (std::cin.eof()) break;
-
-					// Clear this problem.  We have handled it.
-					std::cin.clear();
-				}
-			}
-			else
-			{
-				data->write(buffer, std::cin.gcount());
-				if (std::cin.eof()) break;
-			}
-		}
-		mInput = data;
-	}
-	else
-	{
-		// Make sure we can open the input file.
-		std::ifstream* input_file = new std::ifstream();
-		input_file->open( mInputFilename.c_str(), std::fstream::in );
-		if ( input_file->fail())
-		{
-			std::cerr << "Couldn't open input file '" << mInputFilename << "'." << std::endl;
-			delete input_file;
-			throw LLAppException(RV_UNABLE_OPEN, mInputFilename);
-		}
-		mInput = input_file;
-	}
-	/////  END OPEN INPUT FILE ////
-
-	/////  BEGIN OPEN OUTPUT FILE ////
-
-	if ("" == mOutputFilename)
-	{
-		mOutput = &std::cout;
-	}
-	else
-	{
-		// Make sure we can open the output file.
-		std::fstream* output_file = new std::fstream();
-		output_file->open( mOutputFilename.c_str(), std::fstream::out );
-		if ( output_file->fail() )
-		{
-			std::cerr << "Couldn't open output file '" << mOutputFilename << "'." << std::endl;
-			delete output_file;
-			throw LLAppException(RV_UNABLE_OPEN, mOutputFilename);
-		}
-		mOutput = output_file;
-	}
-	/////  END OPEN OUTPUT FILE ////
-
-	/////  BEGIN INPUT PARSING ////
-	LLSDSerialize::fromXML( mInputData, *mInput );
-	if (mInputData.isUndefined())
-	{
-		throw LLAppException(RV_UNABLE_TO_PARSE);
-	}
-	/////  END INPUT PARSING ////
-}
-
-class LLPassthroughTranslationBridge : public LLTranslationBridge
-{
-public:
-	virtual std::string getString(const std::string &xml_desc)
-	{
-		// Just pass back the input string.
-		return xml_desc;
-	}
-};
-
-
-bool LLAppAppearanceUtility::init()
-{
-	parseArguments();
-
-	bool log_to_stderr = true;
-	LLError::initForApplication("", log_to_stderr);
-	// *TODO: Add debug mode(s).  Skip this in debug mode.
-	LLError::setDefaultLevel(LLError::LEVEL_WARN);
-
-	validateArguments();
-	initializeIO();
-
-	// Initialize classes.
-	LLWearableType::initClass(new LLPassthroughTranslationBridge());
-
-	// *TODO: Create a texture bridge?
-	LLAvatarAppearance::initClass();
-
-	return true;
-}
-
-bool LLAppAppearanceUtility::cleanup()
-{
-	LLAvatarAppearance::cleanupClass();
-	LLWearableType::cleanupClass();
-
-	if (mProcess)
-	{
-		delete mProcess;
-		mProcess = NULL;
-	}
-	if ("-" != mInputFilename && mInput)
-	{
-		static_cast<std::ifstream*>(mInput)->close();
-	}
-	if ("" != mOutputFilename && mOutput)
-	{
-		static_cast<std::ofstream*>(mOutput)->close();
-		delete mOutput;
-		mOutput = NULL;
-	}
-	delete mInput;
-	mInput = NULL;
-	return true;
-}
-
-bool LLAppAppearanceUtility::mainLoop()
-{
-	// This isn't really a loop, for this application.  We just execute the requested command.
-	mProcess->process(mInputData, *mOutput);
-	return true;
-}
-
diff --git a/indra/appearance_utility/llappappearanceutility.h b/indra/appearance_utility/llappappearanceutility.h
deleted file mode 100644
index 2a5b8232ebc..00000000000
--- a/indra/appearance_utility/llappappearanceutility.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/** 
- * @file llappappearanceutility.h
- * @brief Declaration of LLAppAppearanceUtility class.
- *
- * $LicenseInfo:firstyear=2012&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2012, Linden Research, Inc.
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- * 
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- * 
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- * 
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
- * $/LicenseInfo$
- */
-
-#ifndef LL_LLAPPAPPEARANCEUTILITY_H
-#define LL_LLAPPAPPEARANCEUTILITY_H
-
-#include <exception>
-
-#include "llapp.h"
-
-enum EResult
-{
-	RV_SUCCESS = 0,
-	RV_UNKNOWN_ERROR,
-	RV_BAD_ARGUMENTS,
-	RV_UNABLE_OPEN,
-	RV_UNABLE_TO_PARSE,
-};
-
-extern const std::string NOTHING_EXTRA;
-
-class LLAppAppearanceUtility;
-class LLBakingProcess;
-
-// Translate error status into error messages.
-class LLAppException : public std::exception
-{
-public:
-	LLAppException(EResult status_code, const std::string& extra = NOTHING_EXTRA);
-	EResult getStatusCode() { return mStatusCode; }
-
-private:
-	void printErrorLLSD(const std::string& key, const std::string& message);
-	EResult mStatusCode;
-};
-
-
-class LLAppAppearanceUtility : public LLApp
-{
-public:
-	LLAppAppearanceUtility(int argc, char** argv);
-	virtual ~LLAppAppearanceUtility();
-
-	// LLApp interface.
-	/*virtual*/ bool init();
-	/*virtual*/ bool cleanup();
-	/*virtual*/ bool mainLoop();
-
-private:
-	// Option parsing.
-	void verifyNoProcess();
-	void parseArguments();
-	void validateArguments();
-	void initializeIO();
-public:
-	void usage(std::ostream& ostr);
-
-
-private:
-	int mArgc;
-	char** mArgv;
-	LLBakingProcess* mProcess;
-	std::istream* mInput;
-	std::ostream* mOutput;
-	std::string mAppName;
-	std::string mInputFilename;
-	std::string mOutputFilename;
-	LLUUID mAgentID;
-	LLSD mInputData;
-};
-
-
-#endif /* LL_LLAPPAPPEARANCEUTILITY_H */
-
diff --git a/indra/appearance_utility/llbakingavatar.cpp b/indra/appearance_utility/llbakingavatar.cpp
deleted file mode 100644
index 0424e8134b9..00000000000
--- a/indra/appearance_utility/llbakingavatar.cpp
+++ /dev/null
@@ -1,159 +0,0 @@
-/** 
- * @File llbakingavatar.cpp
- * @brief Implementation of LLBakingAvatar class which is a derivation of LLAvatarAppearance
- *
- * $LicenseInfo:firstyear=2012&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2012, Linden Research, Inc.
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- * 
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- * 
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- * 
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
- * $/LicenseInfo$
- */
-
-// linden includes
-#include "linden_common.h"
-#include "v3dmath.h"
-
-// project includes
-#include "llbakingavatar.h"
-#include "llbakingjoint.h"
-#include "llbakingjointmesh.h"
-#include "llbakingtexlayer.h"
-
-LLBakingAvatar::LLBakingAvatar(LLWearableData* wearable_data) :
-	LLAvatarAppearance(wearable_data)
-{
-}
-
-// virtual
-LLBakingAvatar::~LLBakingAvatar()
-{
-}
-
-//-----------------------------------------------------------------------------
-// Implemented methods
-//-----------------------------------------------------------------------------
-
-LLAvatarJoint* LLBakingAvatar::createAvatarJoint()
-{
-	return new LLBakingJoint();
-}
-
-LLAvatarJoint* LLBakingAvatar::createAvatarJoint(S32 joint_num)
-{
-	return new LLBakingJoint(joint_num);
-}
-
-LLAvatarJointMesh* LLBakingAvatar::createAvatarJointMesh()
-{
-	return new LLBakingJointMesh();
-}
-
-LLTexLayerSet* LLBakingAvatar::createTexLayerSet()
-{
-	return new LLBakingTexLayerSet(this);
-}
-
-//-----------------------------------------------------------------------------
-// (Ignored) Non-implemented methods.
-//-----------------------------------------------------------------------------
-
-void LLBakingAvatar::bodySizeChanged() {}
-void LLBakingAvatar::applyMorphMask(U8* tex_data, S32 width, S32 height, S32 num_components,
-		LLAvatarAppearanceDefines::EBakedTextureIndex index) {}
-void LLBakingAvatar::invalidateComposite(LLTexLayerSet* layerset, BOOL upload_result) {}
-void LLBakingAvatar::updateMeshTextures() {}
-void LLBakingAvatar::dirtyMesh() {}
-void LLBakingAvatar::dirtyMesh(S32 priority) {}
-void LLBakingAvatar::onGlobalColorChanged(const LLTexGlobalColor* global_color, BOOL upload_bake) {}
-
-BOOL LLBakingAvatar::isTextureDefined(LLAvatarAppearanceDefines::ETextureIndex type, U32 index) const
-{
-	return TRUE;
-}
-
-
-//-----------------------------------------------------------------------------
-// (LLERR) Non-implemented methods.
-//-----------------------------------------------------------------------------
-
-LLVector3 LLBakingAvatar::getCharacterPosition()
-{
-	LL_ERRS("AppearanceUtility") << "Not implemented." << LL_ENDL;
-	return LLVector3::zero;
-}
-
-LLQuaternion LLBakingAvatar::getCharacterRotation()
-{
-	LL_ERRS("AppearanceUtility") << "Not implemented." << LL_ENDL;
-	return LLQuaternion::DEFAULT;
-}
-
-LLVector3 LLBakingAvatar::getCharacterVelocity()
-{
-	LL_ERRS("AppearanceUtility") << "Not implemented." << LL_ENDL;
-	return LLVector3::zero;
-}
-
-LLVector3 LLBakingAvatar::getCharacterAngularVelocity()
-{
-	LL_ERRS("AppearanceUtility") << "Not implemented." << LL_ENDL;
-	return LLVector3::zero;
-}
-
-const LLUUID& LLBakingAvatar::getID() const
-{
-	LL_ERRS("AppearanceUtility") << "Not implemented." << LL_ENDL;
-	return LLUUID::null;
-}
-
-void LLBakingAvatar::addDebugText(const std::string& text)
-{
-	LL_ERRS("AppearanceUtility") << "Not implemented." << LL_ENDL;
-}
-
-F32 LLBakingAvatar::getTimeDilation()
-{
-	LL_ERRS("AppearanceUtility") << "Not implemented." << LL_ENDL;
-	return 0.0f;
-}
-
-void LLBakingAvatar::getGround(const LLVector3 &inPos, LLVector3 &outPos, LLVector3 &outNorm)
-{
-	LL_ERRS("AppearanceUtility") << "Not implemented." << LL_ENDL;
-}
-
-F32 LLBakingAvatar::getPixelArea() const
-{
-	LL_ERRS("AppearanceUtility") << "Not implemented." << LL_ENDL;
-	return 0.0f;
-}
-
-LLVector3d LLBakingAvatar::getPosGlobalFromAgent(const LLVector3 &position)
-{
-	LL_ERRS("AppearanceUtility") << "Not implemented." << LL_ENDL;
-	return LLVector3d::zero;
-}
-
-LLVector3 LLBakingAvatar::getPosAgentFromGlobal(const LLVector3d &position)
-{
-	LL_ERRS("AppearanceUtility") << "Not implemented." << LL_ENDL;
-	return LLVector3::zero;
-}
-
-
-
diff --git a/indra/appearance_utility/llbakingavatar.h b/indra/appearance_utility/llbakingavatar.h
deleted file mode 100644
index 7f20d316749..00000000000
--- a/indra/appearance_utility/llbakingavatar.h
+++ /dev/null
@@ -1,125 +0,0 @@
-/**
- * @file llbakingavatar.h
- * @brief Declaration of LLBakingAvatar class which is a derivation of LLAvatarAppearance
- *
- * $LicenseInfo:firstyear=2012&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2012, Linden Research, Inc.
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- * 
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- * 
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- * 
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
- * $/LicenseInfo$
- */
-
-#ifndef LL_LLBAKINGAVATAR_H
-#define LL_LLBAKINGAVATAR_H
-
-#include "llavatarappearance.h"
-
-class LLBakingAvatar : public LLAvatarAppearance
-{
-	LOG_CLASS(LLBakingAvatar);
-
-/********************************************************************************
- **                                                                            **
- **                    INITIALIZATION
- **/
-public:
-	void* operator new(size_t size)
-	{
-		return ll_aligned_malloc_16(size);
-	}
-
-	void operator delete(void* ptr)
-	{
-		ll_aligned_free_16(ptr);
-	}
-
-	LLBakingAvatar(LLWearableData* wearable_data);
-	virtual ~LLBakingAvatar();
-
-	static void initClass(); // initializes static members
-
-/**                    Initialization
- **                                                                            **
- *******************************************************************************/
-
-/********************************************************************************
- **                                                                            **
- **                    INHERITED
- **/
-
-	//--------------------------------------------------------------------
-	// LLCharacter interface
-	//--------------------------------------------------------------------
-public:
-	/*virtual*/ LLVector3    	getCharacterPosition();
-	/*virtual*/ LLQuaternion 	getCharacterRotation();
-	/*virtual*/ LLVector3    	getCharacterVelocity();
-	/*virtual*/ LLVector3    	getCharacterAngularVelocity();
-
-	/*virtual*/ const LLUUID&	getID() const;
-	/*virtual*/ void			addDebugText(const std::string& text);
-	/*virtual*/ F32				getTimeDilation();
-	/*virtual*/ void			getGround(const LLVector3 &inPos, LLVector3 &outPos, LLVector3 &outNorm);
-	/*virtual*/ F32				getPixelArea() const;
-	/*virtual*/ LLVector3d		getPosGlobalFromAgent(const LLVector3 &position);
-	/*virtual*/ LLVector3		getPosAgentFromGlobal(const LLVector3d &position);
-
-	//--------------------------------------------------------------------
-	// LLAvatarAppearance interface
-	//--------------------------------------------------------------------
-public:
-	/*virtual*/ void	bodySizeChanged();
-	/*virtual*/ void	applyMorphMask(U8* tex_data, S32 width, S32 height, S32 num_components,
-							LLAvatarAppearanceDefines::EBakedTextureIndex index);
-	/*virtual*/ void	invalidateComposite(LLTexLayerSet* layerset, BOOL upload_result);
-	/*virtual*/ void 	updateMeshTextures();
-	/*virtual*/ void	dirtyMesh(); // Dirty the avatar mesh
-	/*virtual*/ void	onGlobalColorChanged(const LLTexGlobalColor* global_color, BOOL upload_bake);
-	/*virtual*/ BOOL	isTextureDefined(LLAvatarAppearanceDefines::ETextureIndex type, U32 index = 0) const;
-private:
-	/*virtual*/ void	dirtyMesh(S32 priority); // Dirty the avatar mesh, with priority
-
-	// LLAvatarAppearance instance factories:
-protected:
-	/*virtual*/ LLAvatarJoint*	createAvatarJoint();
-	/*virtual*/ LLAvatarJoint*	createAvatarJoint(S32 joint_num);
-	/*virtual*/ LLAvatarJointMesh*	createAvatarJointMesh();
-	/*virtual*/ LLTexLayerSet*	createTexLayerSet();
-
-
-/**                    Inherited
- **                                                                            **
- *******************************************************************************/
-
-/********************************************************************************
- **                                                                            **
- **                    STATE
- **/
-public:
-	/*virtual*/ bool 	isSelf() const { return true; }
-	/*virtual*/ BOOL	isValid() const { return TRUE; }
-	/*virtual*/ BOOL	isUsingBakedTextures() const { return TRUE; }
-
-/**                    State
- **                                                                            **
- *******************************************************************************/
-
-};
-
-#endif /* LL_LLBAKINGAVATAR_H */
-
diff --git a/indra/appearance_utility/llbakingjoint.cpp b/indra/appearance_utility/llbakingjoint.cpp
deleted file mode 100644
index 96f7b686b2c..00000000000
--- a/indra/appearance_utility/llbakingjoint.cpp
+++ /dev/null
@@ -1,54 +0,0 @@
-/** 
- * @file llbakingjoint.cpp
- * @brief Implementation of LLBakingJoint class
- *
- * $LicenseInfo:firstyear=2012&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2012, Linden Research, Inc.
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- * 
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- * 
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- * 
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
- * $/LicenseInfo$
- */
-
-
-#include "linden_common.h"
-
-#include "llbakingjoint.h"
-
-
-LLBakingJoint::LLBakingJoint() :
-	LLAvatarJoint()
-{
-}
-
-LLBakingJoint::LLBakingJoint(S32 joint_num) :
-	LLAvatarJoint(joint_num)
-{
-}
-
-// virtual
-LLBakingJoint::~LLBakingJoint()
-{
-}
-
-// virtual
-U32 LLBakingJoint::render( F32 pixelArea, BOOL first_pass, BOOL is_dummy)
-{
-	llerrs << "LLBakingJoint::render() should never be called!" << llendl;
-	return 0;
-}
-
diff --git a/indra/appearance_utility/llbakingjoint.h b/indra/appearance_utility/llbakingjoint.h
deleted file mode 100644
index 5247eb7510a..00000000000
--- a/indra/appearance_utility/llbakingjoint.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/** 
- * @file llbakingjoint.h
- * @brief Implementation of LLBakingJoint class
- *
- * $LicenseInfo:firstyear=2012&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2012, Linden Research, Inc.
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- * 
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- * 
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- * 
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
- * $/LicenseInfo$
- */
-
-#ifndef LL_LLBAKINGJOINT_H
-#define LL_LLBAKINGJOINT_H
-
-#include "llavatarjoint.h"
-
-class LLBakingJoint : public virtual LLAvatarJoint
-{
-public:
-	LLBakingJoint();
-	LLBakingJoint(S32 joint_num);
-	virtual ~LLBakingJoint();
-
-	// LLViewerJoint interface
-	virtual U32 render( F32 pixelArea, BOOL first_pass = TRUE, BOOL is_dummy = FALSE );
-};
-
-#endif /* LL_LLBAKINGJOINT_H */
-
diff --git a/indra/appearance_utility/llbakingjointmesh.cpp b/indra/appearance_utility/llbakingjointmesh.cpp
deleted file mode 100644
index 877317deb85..00000000000
--- a/indra/appearance_utility/llbakingjointmesh.cpp
+++ /dev/null
@@ -1,43 +0,0 @@
-/** 
- * @file llbakingjointmesh.cpp
- * @brief Implementation of LLBakingJointMesh class
- *
- * $LicenseInfo:firstyear=2012&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2012, Linden Research, Inc.
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- * 
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- * 
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- * 
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
- * $/LicenseInfo$
- */
-
-
-#include "linden_common.h"
-
-#include "llbakingjointmesh.h"
-
-
-LLBakingJointMesh::LLBakingJointMesh() :
-	LLAvatarJointMesh()
-{
-}
-
-// virtual
-LLBakingJointMesh::~LLBakingJointMesh()
-{
-}
-
-
diff --git a/indra/appearance_utility/llbakingjointmesh.h b/indra/appearance_utility/llbakingjointmesh.h
deleted file mode 100644
index 6252f6cee33..00000000000
--- a/indra/appearance_utility/llbakingjointmesh.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/** 
- * @file llbakingjoint.h
- * @brief Implementation of LLBakingJointMesh class
- *
- * $LicenseInfo:firstyear=2012&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2012, Linden Research, Inc.
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- * 
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- * 
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- * 
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
- * $/LicenseInfo$
- */
-
-#ifndef LL_LLBAKINGJOINTMESH_H
-#define LL_LLBAKINGJOINTMESH_H
-
-#include "llavatarjointmesh.h"
-#include "llbakingjoint.h"
-
-class LLBakingJointMesh : public LLAvatarJointMesh, public LLBakingJoint
-{
-public:
-	LLBakingJointMesh();
-	LLBakingJointMesh(S32 joint_num);
-	virtual ~LLBakingJointMesh();
-
-};
-
-#endif /* LL_LLBAKINGJOINTMESH_H */
-
diff --git a/indra/appearance_utility/llbakingprocess.h b/indra/appearance_utility/llbakingprocess.h
deleted file mode 100644
index a32eae64431..00000000000
--- a/indra/appearance_utility/llbakingprocess.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/** 
- * @file llbakingprocess.h
- * @brief Declaration of LLBakingProcess interface.
- *
- * $LicenseInfo:firstyear=2012&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2012, Linden Research, Inc.
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- * 
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- * 
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- * 
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
- * $/LicenseInfo$
- */
-
-#ifndef LL_LLBAKINGPROCESS_H
-#define LL_LLBAKINGPROCESS_H
-
-#include <ostream>
-
-class LLAppAppearanceUtility;
-class LLSD;
-
-// Simple wrapper for various process modes.
-class LLBakingProcess
-{
-private:
-	// Hide default constructor.
-	LLBakingProcess() {}
-public:
-	LLBakingProcess(LLAppAppearanceUtility* app) :
-		mApp(app) {}
-	virtual ~LLBakingProcess() {}
-
-	//virtual std::string getProcessName() const = 0;
-	virtual void process(LLSD& input, std::ostream& output) = 0;
-
-protected:
-	LLAppAppearanceUtility* mApp;
-};
-
-
-#endif /* LL_LLBAKINGPROCESS_H */
-
diff --git a/indra/appearance_utility/llbakingshadermgr.cpp b/indra/appearance_utility/llbakingshadermgr.cpp
deleted file mode 100644
index a858fc760fa..00000000000
--- a/indra/appearance_utility/llbakingshadermgr.cpp
+++ /dev/null
@@ -1,226 +0,0 @@
-
-/** 
- * @file LLBakingShaderMgr.cpp
- * @brief Viewer shader manager implementation.
- *
- * $LicenseInfo:firstyear=2005&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- * 
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- * 
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- * 
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
- * $/LicenseInfo$
- */
-
-
-#include "linden_common.h"
-
-#include "llbakingshadermgr.h"
-
-#include "lldir.h"
-#include "llfile.h"
-#include "llrender.h"
-#include "llvertexbuffer.h"
-
-#if LL_DARWIN
-#include "OpenGL/OpenGL.h"
-#endif
-
-#ifdef LL_RELEASE_FOR_DOWNLOAD
-#define UNIFORM_ERRS LL_WARNS_ONCE("Shader")
-#else
-#define UNIFORM_ERRS LL_ERRS("Shader")
-#endif
-
-// Lots of STL stuff in here, using namespace std to keep things more readable
-using std::vector;
-using std::pair;
-using std::make_pair;
-using std::string;
-
-BOOL				LLBakingShaderMgr::sInitialized = FALSE;
-bool				LLBakingShaderMgr::sSkipReload = false;
-
-//utility shaders
-LLGLSLShader	gAlphaMaskProgram;
-
-
-LLBakingShaderMgr::LLBakingShaderMgr() :
-	mVertexShaderLevel(SHADER_COUNT, 0),
-	mMaxAvatarShaderLevel(0)
-{	
-}
-
-LLBakingShaderMgr::~LLBakingShaderMgr()
-{
-	mVertexShaderLevel.clear();
-	mShaderList.clear();
-}
-
-// static
-LLBakingShaderMgr * LLBakingShaderMgr::instance()
-{
-	if(NULL == sInstance)
-	{
-		sInstance = new LLBakingShaderMgr();
-	}
-
-	return static_cast<LLBakingShaderMgr*>(sInstance);
-}
-
-void LLBakingShaderMgr::initAttribsAndUniforms(void)
-{
-	if (mReservedAttribs.empty())
-	{
-		LLShaderMgr::initAttribsAndUniforms();
-	}	
-}
-	
-
-//============================================================================
-// Set Levels
-
-S32 LLBakingShaderMgr::getVertexShaderLevel(S32 type)
-{
-	return mVertexShaderLevel[type];
-}
-
-//============================================================================
-// Shader Management
-
-void LLBakingShaderMgr::setShaders()
-{
-	//setShaders might be called redundantly by gSavedSettings, so return on reentrance
-	static bool reentrance = false;
-	
-	if (!sInitialized || reentrance || sSkipReload)
-	{
-		return;
-	}
-
-	LLGLSLShader::sIndexedTextureChannels = llmax(gGLManager.mNumTextureImageUnits, 1);
-
-	//NEVER use more than 16 texture channels (work around for prevalent driver bug)
-	LLGLSLShader::sIndexedTextureChannels = llmin(LLGLSLShader::sIndexedTextureChannels, 16);
-
-	if (gGLManager.mGLSLVersionMajor < 1 ||
-		(gGLManager.mGLSLVersionMajor == 1 && gGLManager.mGLSLVersionMinor <= 20))
-	{ //NEVER use indexed texture rendering when GLSL version is 1.20 or earlier
-		LLGLSLShader::sIndexedTextureChannels = 1;
-	}
-
-	reentrance = true;
-
-	//setup preprocessor definitions
-	LLShaderMgr::instance()->mDefinitions["NUM_TEX_UNITS"] = llformat("%d", gGLManager.mNumTextureImageUnits);
-	
-	// Make sure the compiled shader map is cleared before we recompile shaders.
-	mShaderObjects.clear();
-	
-	initAttribsAndUniforms();
-
-	// Shaders
-	LL_INFOS("ShaderLoading") << "\n~~~~~~~~~~~~~~~~~~\n Loading Shaders:\n~~~~~~~~~~~~~~~~~~" << LL_ENDL;
-	LL_INFOS("ShaderLoading") << llformat("Using GLSL %d.%d", gGLManager.mGLSLVersionMajor, gGLManager.mGLSLVersionMinor) << llendl;
-
-	for (S32 i = 0; i < SHADER_COUNT; i++)
-	{
-		mVertexShaderLevel[i] = 0;
-	}
-	mMaxAvatarShaderLevel = 0;
-
-	LLGLSLShader::sNoFixedFunction = false;
-	LLVertexBuffer::unbind();
-	if (gGLManager.mGLSLVersionMajor > 1 || gGLManager.mGLSLVersionMinor >= 10)
-	{
-		//using shaders, disable fixed function
-		LLGLSLShader::sNoFixedFunction = true;
-
-		//gPipeline.mVertexShadersEnabled = TRUE;
-		//gPipeline.mVertexShadersLoaded = 1;
-
-		loadShadersInterface();
-	}
-	else
-	{
-		LLGLSLShader::sNoFixedFunction = false;
-		//gPipeline.mVertexShadersEnabled = FALSE;
-		//gPipeline.mVertexShadersLoaded = 0;
-		mVertexShaderLevel[SHADER_LIGHTING] = 0;
-		mVertexShaderLevel[SHADER_INTERFACE] = 0;
-		mVertexShaderLevel[SHADER_ENVIRONMENT] = 0;
-		mVertexShaderLevel[SHADER_WATER] = 0;
-		mVertexShaderLevel[SHADER_OBJECT] = 0;
-		mVertexShaderLevel[SHADER_EFFECT] = 0;
-		mVertexShaderLevel[SHADER_WINDLIGHT] = 0;
-		mVertexShaderLevel[SHADER_AVATAR] = 0;
-	}
-	
-	//gPipeline.createGLBuffers();
-
-	reentrance = false;
-}
-
-void LLBakingShaderMgr::unloadShaders()
-{
-	gAlphaMaskProgram.unload();
-
-	mVertexShaderLevel[SHADER_INTERFACE] = 0;
-
-	//gPipeline.mVertexShadersLoaded = 0;
-}
-
-BOOL LLBakingShaderMgr::loadShadersInterface()
-{
-	BOOL success = TRUE;
-
-	if (success)
-	{
-		gAlphaMaskProgram.mName = "Alpha Mask Shader";
-		gAlphaMaskProgram.mShaderFiles.clear();
-		gAlphaMaskProgram.mShaderFiles.push_back(make_pair("interface/alphamaskV.glsl", GL_VERTEX_SHADER_ARB));
-		gAlphaMaskProgram.mShaderFiles.push_back(make_pair("interface/alphamaskF.glsl", GL_FRAGMENT_SHADER_ARB));
-		gAlphaMaskProgram.mShaderLevel = mVertexShaderLevel[SHADER_INTERFACE];
-		success = gAlphaMaskProgram.createShader(NULL, NULL);
-	}
-
-	if( !success )
-	{
-		mVertexShaderLevel[SHADER_INTERFACE] = 0;
-		return FALSE;
-	}
-	
-	return TRUE;
-}
-
-std::string LLBakingShaderMgr::getShaderDirPrefix(void)
-{
-	return gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "shaders/class");
-}
-
-void LLBakingShaderMgr::updateShaderUniforms(LLGLSLShader * shader)
-{
-}
-
-LLBakingShaderMgr::shader_iter LLBakingShaderMgr::beginShaders() const
-{
-	return mShaderList.begin();
-}
-
-LLBakingShaderMgr::shader_iter LLBakingShaderMgr::endShaders() const
-{
-	return mShaderList.end();
-}
diff --git a/indra/appearance_utility/llbakingshadermgr.h b/indra/appearance_utility/llbakingshadermgr.h
deleted file mode 100644
index 88d43ab7693..00000000000
--- a/indra/appearance_utility/llbakingshadermgr.h
+++ /dev/null
@@ -1,137 +0,0 @@
-/** 
- * @file llbakingshadermgr.h
- * @brief Texture Baking Shader Manager
- *
- * $LicenseInfo:firstyear=2012&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2012, Linden Research, Inc.
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- * 
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- * 
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- * 
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
- * $/LicenseInfo$
- */
-
-#ifndef LL_BAKING_SHADER_MGR_H
-#define LL_BAKING_SHADER_MGR_H
-
-#include "llshadermgr.h"
-
-class LLBakingShaderMgr: public LLShaderMgr
-{
-public:
-	static BOOL sInitialized;
-	static bool sSkipReload;
-
-	LLBakingShaderMgr();
-	/* virtual */ ~LLBakingShaderMgr();
-
-	// singleton pattern implementation
-	static LLBakingShaderMgr * instance();
-
-	void initAttribsAndUniforms(void);
-	void setShaders();
-	void unloadShaders();
-	S32 getVertexShaderLevel(S32 type);
-	BOOL loadShadersInterface();
-
-	std::vector<S32> mVertexShaderLevel;
-	S32	mMaxAvatarShaderLevel;
-
-	enum EShaderClass
-	{
-		SHADER_LIGHTING,
-		SHADER_OBJECT,
-		SHADER_AVATAR,
-		SHADER_ENVIRONMENT,
-		SHADER_INTERFACE,
-		SHADER_EFFECT,
-		SHADER_WINDLIGHT,
-		SHADER_WATER,
-		SHADER_DEFERRED,
-		SHADER_TRANSFORM,
-		SHADER_COUNT
-	};
-
-	// simple model of forward iterator
-	// http://www.sgi.com/tech/stl/ForwardIterator.html
-	class shader_iter
-	{
-	private:
-		friend bool operator == (shader_iter const & a, shader_iter const & b);
-		friend bool operator != (shader_iter const & a, shader_iter const & b);
-
-		typedef std::vector<LLGLSLShader *>::const_iterator base_iter_t;
-	public:
-		shader_iter()
-		{
-		}
-
-		shader_iter(base_iter_t iter) : mIter(iter)
-		{
-		}
-
-		LLGLSLShader & operator * () const
-		{
-			return **mIter;
-		}
-
-		LLGLSLShader * operator -> () const
-		{
-			return *mIter;
-		}
-
-		shader_iter & operator++ ()
-		{
-			++mIter;
-			return *this;
-		}
-
-		shader_iter operator++ (int)
-		{
-			return mIter++;
-		}
-
-	private:
-		base_iter_t mIter;
-	};
-
-	shader_iter beginShaders() const;
-	shader_iter endShaders() const;
-
-	/* virtual */ std::string getShaderDirPrefix(void);
-
-	/* virtual */ void updateShaderUniforms(LLGLSLShader * shader);
-
-private:
-	
-	// the list of shaders we need to propagate parameters to.
-	std::vector<LLGLSLShader *> mShaderList;
-
-}; //LLBakingShaderMgr
-
-inline bool operator == (LLBakingShaderMgr::shader_iter const & a, LLBakingShaderMgr::shader_iter const & b)
-{
-	return a.mIter == b.mIter;
-}
-
-inline bool operator != (LLBakingShaderMgr::shader_iter const & a, LLBakingShaderMgr::shader_iter const & b)
-{
-	return a.mIter != b.mIter;
-}
-
-extern LLVector4			gShinyOrigin;
-
-#endif // LL_BAKING_SHADER_MGR_H
diff --git a/indra/appearance_utility/llbakingtexlayer.cpp b/indra/appearance_utility/llbakingtexlayer.cpp
deleted file mode 100644
index 38fbd7c557a..00000000000
--- a/indra/appearance_utility/llbakingtexlayer.cpp
+++ /dev/null
@@ -1,51 +0,0 @@
-/** 
- * @file llbakingtexlayer.cpp
- * @brief Implementation of LLBakingTexLayer class
- *
- * $LicenseInfo:firstyear=2012&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2012, Linden Research, Inc.
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- * 
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- * 
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- * 
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
- * $/LicenseInfo$
- */
-
-#include "linden_common.h"
-
-#include "llbakingtexlayer.h"
-
-LLBakingTexLayerSet::LLBakingTexLayerSet(LLAvatarAppearance* const appearance) :
-	LLTexLayerSet(appearance)
-{
-}
-
-// virtual
-LLBakingTexLayerSet::~LLBakingTexLayerSet()
-{
-}
-
-// Ignored.
-void LLBakingTexLayerSet::requestUpdate()
-{
-}
-
-void LLBakingTexLayerSet::createComposite()
-{
-	llerrs << "TODO: Create a composite." << llendl;
-}
-
-
diff --git a/indra/appearance_utility/llbakingtexlayer.h b/indra/appearance_utility/llbakingtexlayer.h
deleted file mode 100644
index 2ed9863d4a7..00000000000
--- a/indra/appearance_utility/llbakingtexlayer.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/** 
- * @file llbakingtexlayer.h
- * @brief Declaration of LLBakingTexLayerSet.
- *
- * $LicenseInfo:firstyear=2012&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2012, Linden Research, Inc.
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- * 
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- * 
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- * 
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
- * $/LicenseInfo$
- */
-
-#ifndef LL_LLBAKINGTEXLAYER_H
-#define LL_LLBAKINGTEXLAYER_H
-
-#include "lltexlayer.h"
-
-class LLBakingTexLayerSet : public LLTexLayerSet
-{
-public:
-	LLBakingTexLayerSet(LLAvatarAppearance* const appearance);
-	virtual ~LLBakingTexLayerSet();
-
-	/*virtual*/void				requestUpdate();
-	/*virtual*/void				createComposite();
-};
-
-#endif /* LL_LLBAKINGTEXLAYER_H */
-
diff --git a/indra/appearance_utility/llprocessparams.cpp b/indra/appearance_utility/llprocessparams.cpp
deleted file mode 100644
index 723bae0dd63..00000000000
--- a/indra/appearance_utility/llprocessparams.cpp
+++ /dev/null
@@ -1,53 +0,0 @@
-/** 
- * @file llprocessparams.cpp
- * @brief Implementation of LLProcessParams class.
- *
- * $LicenseInfo:firstyear=2012&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2012, Linden Research, Inc.
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- * 
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- * 
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- * 
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
- * $/LicenseInfo$
- */
-
-// linden includes
-#include "linden_common.h"
-
-#include "llsd.h"
-#include "llsdserialize.h"
-#include "llsdutil.h"
-
-// appearance includes
-#include "llwearabledata.h"
-
-// project includes
-#include "llappappearanceutility.h"
-#include "llbakingavatar.h"
-#include "llprocessparams.h"
-
-void LLProcessParams::process(LLSD& input, std::ostream& output)
-{
-	LLWearableData wearable_data;
-	LLBakingAvatar avatar(&wearable_data);
-	avatar.initInstance();
-
-	LLSD result;
-	result["success"] = true;
-	result["input"] = input;
-	output << LLSDOStreamer<LLSDXMLFormatter>(result);
-}
-
diff --git a/indra/appearance_utility/llprocessparams.h b/indra/appearance_utility/llprocessparams.h
deleted file mode 100644
index d1e64cb4f01..00000000000
--- a/indra/appearance_utility/llprocessparams.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/** 
- * @file llprocessparams.h
- * @brief Declaration of LLProcessParams class.
- *
- * $LicenseInfo:firstyear=2012&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2012, Linden Research, Inc.
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- * 
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- * 
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- * 
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
- * $/LicenseInfo$
- */
-
-#ifndef LL_LLPROCESSPARAMS_H
-#define LL_LLPROCESSPARAMS_H
-
-#include "llbakingprocess.h"
-
-class LLProcessParams : public LLBakingProcess
-{
-public:
-	LLProcessParams(LLAppAppearanceUtility* app) :
-		LLBakingProcess(app) {}
-
-	/*virtual*/ void process(LLSD& intput, std::ostream& output);
-};
-
-#endif /* LL_LLPROCESSPARAMS_H */
-
diff --git a/indra/appearance_utility/wrapper.sh b/indra/appearance_utility/wrapper.sh
deleted file mode 100755
index 87d2179a137..00000000000
--- a/indra/appearance_utility/wrapper.sh
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/bin/bash
-
-# Simple wrapper for secondlife utilities.
-
-## - Avoids an often-buggy X feature that doesn't really benefit us anyway.
-export SDL_VIDEO_X11_DGAMOUSE=0
-
-## - Works around a problem with misconfigured 64-bit systems not finding GL
-export LIBGL_DRIVERS_PATH="${LIBGL_DRIVERS_PATH}":/usr/lib64/dri:/usr/lib32/dri:/usr/lib/dri
-
-## - The 'scim' GTK IM module widely crashes the viewer.  Avoid it.
-if [ "$GTK_IM_MODULE" = "scim" ]; then
-    export GTK_IM_MODULE=xim
-fi
-
-EXECUTABLE="$(basename "$0")-bin"
-SCRIPTSRC="$(readlink -f "$0" || echo "$0")"
-RUN_PATH="$(dirname "${SCRIPTSRC}" || echo .)"
-cd "${RUN_PATH}"
-
-export LD_LIBRARY_PATH="$PWD/lib:${LD_LIBRARY_PATH}"
-
-# Run the program.
-"./$EXECUTABLE" "$@"
-exit $?
diff --git a/indra/cmake/LLAppearanceUtility.cmake b/indra/cmake/LLAppearanceUtility.cmake
new file mode 100644
index 00000000000..bea45543dea
--- /dev/null
+++ b/indra/cmake/LLAppearanceUtility.cmake
@@ -0,0 +1,12 @@
+# -*- cmake -*-
+include(Prebuilt)
+
+# Linux proprietary build only
+if (INSTALL_PROPRIETARY)
+    if(LINUX)
+        use_prebuilt_binary(llappearanceutility-source)
+        set(LLAPPEARANCEUTILITY_SRC_DIR ${LIBS_PREBUILT_DIR}/llappearanceutility/src)
+        set(LLAPPEARANCEUTILITY_BIN_DIR ${CMAKE_BINARY_DIR}/llappearanceutility)
+    endif (LINUX)
+endif (INSTALL_PROPRIETARY)
+
diff --git a/indra/llcommon/llversionserver.h b/indra/llcommon/llversionserver.h
index b19ba3bf740..ef68a0eaf5c 100644
--- a/indra/llcommon/llversionserver.h
+++ b/indra/llcommon/llversionserver.h
@@ -30,7 +30,7 @@
 const S32 LL_VERSION_MAJOR = 2;
 const S32 LL_VERSION_MINOR = 1;
 const S32 LL_VERSION_PATCH = 0;
-const S32 LL_VERSION_BUILD = 13828;
+const S32 LL_VERSION_BUILD = 264760;
 
 const char * const LL_CHANNEL = "Second Life Server";
 
diff --git a/indra/llcommon/llversionviewer.h b/indra/llcommon/llversionviewer.h
index bcc661a9204..295fed3c4b0 100644
--- a/indra/llcommon/llversionviewer.h
+++ b/indra/llcommon/llversionviewer.h
@@ -30,7 +30,7 @@
 const S32 LL_VERSION_MAJOR = 3;
 const S32 LL_VERSION_MINOR = 4;
 const S32 LL_VERSION_PATCH = 1;
-const S32 LL_VERSION_BUILD = 0;
+const S32 LL_VERSION_BUILD = 264760;
 
 const char * const LL_CHANNEL = "Second Life Developer";
 
diff --git a/indra/newview/English.lproj/InfoPlist.strings b/indra/newview/English.lproj/InfoPlist.strings
index 5c7cacedec0..1802e147035 100644
--- a/indra/newview/English.lproj/InfoPlist.strings
+++ b/indra/newview/English.lproj/InfoPlist.strings
@@ -2,6 +2,6 @@
 
 CFBundleName = "Second Life";
 
-CFBundleShortVersionString = "Second Life version 2.1.0.13828";
-CFBundleGetInfoString = "Second Life version 2.1.0.13828, Copyright 2004-2009 Linden Research, Inc.";
+CFBundleShortVersionString = "Second Life version 3.4.1.264760";
+CFBundleGetInfoString = "Second Life version 3.4.1.264760, Copyright 2004-2009 Linden Research, Inc.";
 
diff --git a/indra/newview/Info-SecondLife.plist b/indra/newview/Info-SecondLife.plist
index f7b11b217c9..035d6cbe6cd 100644
--- a/indra/newview/Info-SecondLife.plist
+++ b/indra/newview/Info-SecondLife.plist
@@ -60,7 +60,7 @@
 		</dict>
 	</array>
 	<key>CFBundleVersion</key>
-	<string>2.1.0.13828</string>
+	<string>3.4.1.264760</string>
 	<key>CSResourcesFileMapped</key>
 	<true/>
 </dict>
diff --git a/indra/newview/res/viewerRes.rc b/indra/newview/res/viewerRes.rc
index df75f3f697f..471a896019d 100644
--- a/indra/newview/res/viewerRes.rc
+++ b/indra/newview/res/viewerRes.rc
@@ -135,8 +135,8 @@ TOOLNO                  CURSOR                  "llno.cur"
 //
 
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION 2,1,1,0
- PRODUCTVERSION 2,1,1,0
+ FILEVERSION 3,4,1,264760
+ PRODUCTVERSION 3,4,1,264760
  FILEFLAGSMASK 0x3fL
 #ifdef _DEBUG
  FILEFLAGS 0x1L
@@ -153,12 +153,12 @@ BEGIN
         BEGIN
             VALUE "CompanyName", "Linden Lab"
             VALUE "FileDescription", "Second Life"
-            VALUE "FileVersion", "2.1.1.0"
+            VALUE "FileVersion", "3.4.1.264760"
             VALUE "InternalName", "Second Life"
             VALUE "LegalCopyright", "Copyright � 2001-2010, Linden Research, Inc."
             VALUE "OriginalFilename", "SecondLife.exe"
             VALUE "ProductName", "Second Life"
-            VALUE "ProductVersion", "2.1.1.0"
+            VALUE "ProductVersion", "3.4.1.264760"
         END
     END
     BLOCK "VarFileInfo"
-- 
GitLab


From af3b020f544a71f759b55dee86b8c1f0f6a7f732 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Fri, 14 Sep 2012 11:28:16 +0000
Subject: [PATCH 078/436] Removed temporary debugging build params

---
 BuildParams | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/BuildParams b/BuildParams
index cfe21696b07..ebfc640023e 100644
--- a/BuildParams
+++ b/BuildParams
@@ -8,13 +8,9 @@ Darwin.symbolfiles = "newview/Release/secondlife-symbols-darwin.tar.bz2"
 CYGWIN.symbolfiles = "newview/Release/secondlife-symbols-windows.tar.bz2"
 Linux.symbolfiles = "newview/secondlife-symbols-linux.tar.bz2"
 
-variants=Release
-
 # Use Public Upload Locations
 public_build = true
 
-clean_on_success = false
-
 # skip windows debug build until we can get a fix in.
 build_CYGWIN_Debug = false
 
-- 
GitLab


From 4e342f21ce8472bd1d9b34fdc2757a63ab24db52 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Fri, 14 Sep 2012 11:39:17 +0000
Subject: [PATCH 079/436] Updating to newer llappearance utility

---
 autobuild.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index 28964b1d5f4..1c1b2be527c 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -1254,9 +1254,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>a1197a789ccedb6cdd9d8aeb30e52b1b</string>
+              <string>94e9e2224000a575fd80b75db52e54b8</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/264759/arch/Linux/installer/llappearanceutility_source-0.1-linux-20120914.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/264762/arch/Linux/installer/llappearanceutility_source-0.1-linux-20120914.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
-- 
GitLab


From 8b2cb3766e3ed546994f81518983283e68263b09 Mon Sep 17 00:00:00 2001
From: "Nyx (Neal Orman)" <nyx@lindenlab.com>
Date: Fri, 14 Sep 2012 11:29:17 -0400
Subject: [PATCH 080/436] BUILDFIX: WIN fixing up windows building issues

Cleaned up a couple of things that the windows compiler was warning about, with our inheritance structure
---
 indra/llappearance/llavatarjoint.cpp     |  1 +
 indra/llappearance/llavatarjoint.h       |  3 ++-
 indra/llappearance/llavatarjointmesh.cpp |  5 +++--
 indra/llappearance/llavatarjointmesh.h   |  4 ----
 indra/newview/llviewerjointmesh.h        |  4 ++++
 indra/newview/llvoavatarself.cpp         | 13 +++++++------
 indra/newview/llvoavatarself.h           |  2 +-
 7 files changed, 18 insertions(+), 14 deletions(-)

diff --git a/indra/llappearance/llavatarjoint.cpp b/indra/llappearance/llavatarjoint.cpp
index eb450485c73..6ab341af64e 100644
--- a/indra/llappearance/llavatarjoint.cpp
+++ b/indra/llappearance/llavatarjoint.cpp
@@ -73,6 +73,7 @@ void LLAvatarJoint::init()
 	mPickName = PN_DEFAULT;
 	mVisible = TRUE;
 	mMeshID = 0;
+	mIsTransparent = FALSE;
 }
 
 
diff --git a/indra/llappearance/llavatarjoint.h b/indra/llappearance/llavatarjoint.h
index 1dfbd374564..fec91503c78 100644
--- a/indra/llappearance/llavatarjoint.h
+++ b/indra/llappearance/llavatarjoint.h
@@ -59,7 +59,7 @@ class LLAvatarJoint :
 
 	// Returns true if this object is transparent.
 	// This is used to determine in which order to draw objects.
-	virtual BOOL isTransparent() { return FALSE; }
+	virtual BOOL isTransparent() { return mIsTransparent; }
 
 	// Returns true if this object should inherit scale modifiers from its immediate parent
 	virtual BOOL inheritScale() { return FALSE; }
@@ -113,6 +113,7 @@ class LLAvatarJoint :
 	void init();
 
 	BOOL		mValid;
+	BOOL		mIsTransparent;
 	U32			mComponents;
 	F32			mMinPixelArea;
 	LLJointPickName	mPickName;
diff --git a/indra/llappearance/llavatarjointmesh.cpp b/indra/llappearance/llavatarjointmesh.cpp
index c611ab7cec9..4a5cff1dc36 100755
--- a/indra/llappearance/llavatarjointmesh.cpp
+++ b/indra/llappearance/llavatarjointmesh.cpp
@@ -129,8 +129,7 @@ LLAvatarJointMesh::LLAvatarJointMesh()
 	mTexture( NULL ),
 	mLayerSet( NULL ),
 	mTestImageName( 0 ),
-	mFaceIndexCount(0),
-	mIsTransparent(FALSE)
+	mFaceIndexCount(0)
 {
 
 	mColor[0] = 1.0f;
@@ -151,6 +150,8 @@ LLAvatarJointMesh::LLAvatarJointMesh()
 	mUpdateXform = FALSE;
 
 	mValid = FALSE;
+
+	mIsTransparent = FALSE;
 }
 
 
diff --git a/indra/llappearance/llavatarjointmesh.h b/indra/llappearance/llavatarjointmesh.h
index 2aade4d62b4..6486932cdfc 100755
--- a/indra/llappearance/llavatarjointmesh.h
+++ b/indra/llappearance/llavatarjointmesh.h
@@ -73,7 +73,6 @@ class LLAvatarJointMesh : public virtual LLAvatarJoint
 	LLFace*						mFace;			// ptr to a face w/ AGP copy of mesh
 
 	U32							mFaceIndexCount;
-	BOOL						mIsTransparent;
 
 	U32							mNumSkinJoints;
 	LLSkinJoint*				mSkinJoints;
@@ -93,9 +92,6 @@ class LLAvatarJointMesh : public virtual LLAvatarJoint
 	// Destructor
 	virtual ~LLAvatarJointMesh();
 
-	// overloaded from base class
-	/*virtual*/ BOOL isTransparent() { return mIsTransparent; }
-
 	// Gets the shape color
 	void getColor( F32 *red, F32 *green, F32 *blue, F32 *alpha );
 
diff --git a/indra/newview/llviewerjointmesh.h b/indra/newview/llviewerjointmesh.h
index ac5aab4ef2a..0db2836e150 100755
--- a/indra/newview/llviewerjointmesh.h
+++ b/indra/newview/llviewerjointmesh.h
@@ -56,6 +56,10 @@ class LLViewerJointMesh : public LLAvatarJointMesh, public LLViewerJoint
 	// overloaded from base class
 	/*virtual*/ U32 drawShape( F32 pixelArea, BOOL first_pass, BOOL is_dummy );
 
+	// necessary because MS's compiler warns on function inheritance via dominance in the diamond inheritance here.
+	// warns even though LLViewerJoint holds the only non virtual implementation.
+	/*virtual*/ U32 render( F32 pixelArea, BOOL first_pass = TRUE, BOOL is_dummy = FALSE ) { return LLViewerJoint::render(pixelArea,first_pass,is_dummy);}
+
 	/*virtual*/ void updateFaceSizes(U32 &num_vertices, U32& num_indices, F32 pixel_area);
 	/*virtual*/ void updateFaceData(LLFace *face, F32 pixel_area, BOOL damp_wind = FALSE, bool terse_update = false);
 	/*virtual*/ BOOL updateLOD(F32 pixel_area, BOOL activate);
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index a29b3ff92bc..c5bb4c37005 100755
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -1558,24 +1558,25 @@ bool LLVOAvatarSelf::hasPendingBakedUploads() const
 	return false;
 }
 
-void LLVOAvatarSelf::invalidateComposite( LLViewerTexLayerSet* layerset, BOOL upload_result )
+void LLVOAvatarSelf::invalidateComposite( LLTexLayerSet* layerset, BOOL upload_result )
 {
-	if( !layerset || !layerset->getUpdatesEnabled() )
+	LLViewerTexLayerSet *layer_set = dynamic_cast<LLViewerTexLayerSet*>(layerset);
+	if( !layer_set || !layer_set->getUpdatesEnabled() )
 	{
 		return;
 	}
 	// llinfos << "LLVOAvatar::invalidComposite() " << layerset->getBodyRegionName() << llendl;
 
-	layerset->requestUpdate();
-	layerset->invalidateMorphMasks();
+	layer_set->requestUpdate();
+	layer_set->invalidateMorphMasks();
 
 	if( upload_result  && (getRegion() && !getRegion()->getCentralBakeVersion()))
 	{
 		llassert(isSelf());
 
-		ETextureIndex baked_te = getBakedTE( layerset );
+		ETextureIndex baked_te = getBakedTE( layer_set );
 		setTEImage( baked_te, LLViewerTextureManager::getFetchedTexture(IMG_DEFAULT_AVATAR) );
-		layerset->requestUpload();
+		layer_set->requestUpload();
 		updateMeshTextures();
 	}
 }
diff --git a/indra/newview/llvoavatarself.h b/indra/newview/llvoavatarself.h
index 395874ee625..89bb8bf5c95 100755
--- a/indra/newview/llvoavatarself.h
+++ b/indra/newview/llvoavatarself.h
@@ -257,7 +257,7 @@ class LLVOAvatarSelf :
 	// Composites
 	//--------------------------------------------------------------------
 public:
-	/* virtual */ void	invalidateComposite(LLViewerTexLayerSet* layerset, BOOL upload_result);
+	/* virtual */ void	invalidateComposite(LLTexLayerSet* layerset, BOOL upload_result);
 	/* virtual */ void	invalidateAll();
 	/* virtual */ void	setCompositeUpdatesEnabled(bool b); // only works for self
 	/* virtual */ void  setCompositeUpdatesEnabled(U32 index, bool b);
-- 
GitLab


From 7b75bd089834a84ab5062c96870edeee6fa22861 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Fri, 14 Sep 2012 12:27:50 -0400
Subject: [PATCH 081/436] fix for windows compile error - missing precompiled
 header

---
 indra/newview/llinventoryicon.cpp | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/indra/newview/llinventoryicon.cpp b/indra/newview/llinventoryicon.cpp
index 14efc25fb96..02a2475cfd4 100644
--- a/indra/newview/llinventoryicon.cpp
+++ b/indra/newview/llinventoryicon.cpp
@@ -24,6 +24,8 @@
  * $/LicenseInfo$
  */
 
+#include "llviewerprecompiledheaders.h"
+
 #include "linden_common.h"
 #include "llinventoryicon.h"
 
-- 
GitLab


From 49caededb4bf5beb8b87ebee034c1d969968af4d Mon Sep 17 00:00:00 2001
From: Nyx Linden <nyx@lindenlab.com>
Date: Wed, 19 Sep 2012 17:05:56 +0000
Subject: [PATCH 082/436] BUILDFIX: enabling the building of the
 viewer/appearance backend with headless mesa

---
 autobuild.xml                                |  4 +--
 indra/cmake/LLRender.cmake                   |  6 ++---
 indra/cmake/LLWindow.cmake                   | 14 +++++++---
 indra/llrender/CMakeLists.txt                | 28 ++++++++++++++------
 indra/llrender/llfontregistry.cpp            |  2 +-
 indra/llrender/llgl.cpp                      |  3 ---
 indra/llrender/llrender.cpp                  |  2 --
 indra/llrender/llrendertarget.cpp            |  2 ++
 indra/llrender/llrendertarget.h              |  3 ---
 indra/llrender/llvertexbuffer.cpp            |  8 ++++++
 indra/llwindow/CMakeLists.txt                |  9 ++++---
 indra/llwindow/llwindow.cpp                  |  2 ++
 indra/llwindow/llwindowmesaheadless.h        |  1 +
 indra/lscript/lscript_compile/CMakeLists.txt |  2 ++
 indra/lscript/lscript_compile/indra.l        | 23 ++++++++++++++++
 indra/newview/lldirpicker.cpp                |  4 +++
 indra/newview/llfilepicker.cpp               |  8 ++++--
 17 files changed, 89 insertions(+), 32 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index 1c1b2be527c..cc0609d4589 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -1432,9 +1432,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>1f600840463c7327ea17486821425750</string>
+              <string>9da287964003f9042e84417d2e3a6c36</string>
               <key>url</key>
-              <string>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/mesa-7.0-linux-20100930.tar.bz2</string>
+              <string>file:///ngi-persist/var/tmp/nyx/3p-mesa/mesa-7.11.1-linux-20120918.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
diff --git a/indra/cmake/LLRender.cmake b/indra/cmake/LLRender.cmake
index 8427928151d..6695ed6bd91 100644
--- a/indra/cmake/LLRender.cmake
+++ b/indra/cmake/LLRender.cmake
@@ -8,15 +8,15 @@ set(LLRENDER_INCLUDE_DIRS
     ${GLH_INCLUDE_DIR}
     )
 
-if (SERVER AND LINUX)
+if ((SERVER OR BAKING) AND LINUX)
   set(LLRENDER_LIBRARIES
       llrenderheadless
       )
-else (SERVER AND LINUX)
+else ((SERVER OR BAKING) AND LINUX)
 set(LLRENDER_LIBRARIES
     llrender
     )
-endif (SERVER AND LINUX)
+endif ((SERVER OR BAKING) AND LINUX)
 
 # mapserver requires certain files to be copied so LL_MESA_HEADLESS can be set
 # differently for different object files.
diff --git a/indra/cmake/LLWindow.cmake b/indra/cmake/LLWindow.cmake
index b4bb9a078a9..1ee4ca0aaca 100644
--- a/indra/cmake/LLWindow.cmake
+++ b/indra/cmake/LLWindow.cmake
@@ -22,22 +22,28 @@ else (STANDALONE)
   endif (LINUX AND VIEWER)
 endif (STANDALONE)
 
-if (SDL_FOUND)
+if (SDL_FOUND AND NOT BAKING)
   add_definitions(-DLL_SDL=1)
   include_directories(${SDL_INCLUDE_DIR})
-endif (SDL_FOUND)
+endif (SDL_FOUND AND NOT BAKING)
+
+if (BAKING)
+  use_prebuilt_binary(mesa)
+  add_definitions(-DLL_MESA_HEADLESS=1)
+endif (BAKING)
 
 set(LLWINDOW_INCLUDE_DIRS
     ${GLEXT_INCLUDE_DIR}
     ${LIBS_OPEN_DIR}/llwindow
     )
 
-if (SERVER AND LINUX)
+if ((SERVER AND LINUX) OR (BAKING AND LINUX))
   set(LLWINDOW_LIBRARIES
       llwindowheadless
       )
+  MESSAGE( STATUS "using headless libraries")
 else (SERVER AND LINUX)
   set(LLWINDOW_LIBRARIES
       llwindow
       )
-endif (SERVER AND LINUX)
+endif ((SERVER AND LINUX) OR (BAKING AND LINUX))
diff --git a/indra/llrender/CMakeLists.txt b/indra/llrender/CMakeLists.txt
index fc38f56957e..638ab23bd64 100644
--- a/indra/llrender/CMakeLists.txt
+++ b/indra/llrender/CMakeLists.txt
@@ -78,7 +78,12 @@ set_source_files_properties(${llrender_HEADER_FILES}
 
 list(APPEND llrender_SOURCE_FILES ${llrender_HEADER_FILES})
 
-if (SERVER AND NOT WINDOWS AND NOT DARWIN)
+list(APPEND llrender_SOURCE_FILES
+     llgl.cpp
+     llrender.cpp
+     llrendertarget.cpp
+     )
+if ((SERVER OR BAKING) AND NOT WINDOWS AND NOT DARWIN)
   copy_server_sources(
       llgl
       llrender
@@ -94,13 +99,8 @@ if (SERVER AND NOT WINDOWS AND NOT DARWIN)
     ${llrender_SOURCE_FILES}
     ${server_SOURCE_FILES}
     )
-else (SERVER AND NOT WINDOWS AND NOT DARWIN)
-  list(APPEND llrender_SOURCE_FILES
-      llgl.cpp
-      llrender.cpp
-      llrendertarget.cpp
-      )
-endif (SERVER AND NOT WINDOWS AND NOT DARWIN)
+endif ((SERVER OR BAKING) AND NOT WINDOWS AND NOT DARWIN)
+
 add_library (llrender ${llrender_SOURCE_FILES})
 # Libraries on which this library depends, needed for Linux builds
 # Sort by high-level to low-level
@@ -115,3 +115,15 @@ target_link_libraries(llrender
     ${LLWINDOW_LIBRARIES}
     ${FREETYPE_LIBRARIES}
     ${OPENGL_LIBRARIES})
+
+target_link_libraries(llrenderheadless
+    ${LLCOMMON_LIBRARIES}
+    ${LLIMAGE_LIBRARIES}
+    ${LLMATH_LIBRARIES}
+    ${LLRENDER_LIBRARIES}
+    ${LLVFS_LIBRARIES}
+    ${LLXML_LIBRARIES}
+    ${LLVFS_LIBRARIES}
+    ${LLWINDOW_LIBRARIES}
+    ${OPENGL_LIBRARIES})
+
diff --git a/indra/llrender/llfontregistry.cpp b/indra/llrender/llfontregistry.cpp
index 4d22eba3d97..d0637f25465 100644
--- a/indra/llrender/llfontregistry.cpp
+++ b/indra/llrender/llfontregistry.cpp
@@ -225,7 +225,7 @@ std::string currentOsName()
 	return "Windows";
 #elif LL_DARWIN
 	return "Mac";
-#elif LL_SDL
+#elif LL_SDL || LL_MESA_HEADLESS
 	return "Linux";
 #else
 	return "";
diff --git a/indra/llrender/llgl.cpp b/indra/llrender/llgl.cpp
index 0b56b3889c9..27d8056ea26 100644
--- a/indra/llrender/llgl.cpp
+++ b/indra/llrender/llgl.cpp
@@ -188,9 +188,6 @@ PFNGLWAITSYNCPROC				glWaitSync = NULL;
 PFNGLGETINTEGER64VPROC			glGetInteger64v = NULL;
 PFNGLGETSYNCIVPROC				glGetSynciv = NULL;
 
-// GL_APPLE_flush_buffer_range
-PFNGLBUFFERPARAMETERIAPPLEPROC	glBufferParameteriAPPLE = NULL;
-PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC glFlushMappedBufferRangeAPPLE = NULL;
 
 // vertex object prototypes
 PFNGLNEWOBJECTBUFFERATIPROC			glNewObjectBufferATI = NULL;
diff --git a/indra/llrender/llrender.cpp b/indra/llrender/llrender.cpp
index 4597d062606..c60eb8d9d91 100644
--- a/indra/llrender/llrender.cpp
+++ b/indra/llrender/llrender.cpp
@@ -357,7 +357,6 @@ bool LLTexUnit::bind(LLCubeMap* cubeMap)
 }
 
 // LLRenderTarget is unavailible on the mapserver since it uses FBOs.
-#if !LL_MESA_HEADLESS
 bool LLTexUnit::bind(LLRenderTarget* renderTarget, bool bindDepth)
 {
 	if (mIndex < 0) return false;
@@ -380,7 +379,6 @@ bool LLTexUnit::bind(LLRenderTarget* renderTarget, bool bindDepth)
 
 	return true;
 }
-#endif // LL_MESA_HEADLESS
 
 bool LLTexUnit::bindManual(eTextureType type, U32 texture, bool hasMips)
 {
diff --git a/indra/llrender/llrendertarget.cpp b/indra/llrender/llrendertarget.cpp
index cc5c2323809..d87255f6ceb 100644
--- a/indra/llrender/llrendertarget.cpp
+++ b/indra/llrender/llrendertarget.cpp
@@ -570,3 +570,5 @@ void LLRenderTarget::getViewport(S32* viewport)
 	viewport[3] = mResY;
 }
 
+
+
diff --git a/indra/llrender/llrendertarget.h b/indra/llrender/llrendertarget.h
index e1a51304f17..b9ef666206f 100644
--- a/indra/llrender/llrendertarget.h
+++ b/indra/llrender/llrendertarget.h
@@ -28,7 +28,6 @@
 #define LL_LLRENDERTARGET_H
 
 // LLRenderTarget is unavailible on the mapserver since it uses FBOs.
-#if !LL_MESA_HEADLESS
 
 #include "llgl.h"
 #include "llrender.h"
@@ -157,7 +156,5 @@ class LLRenderTarget
 	static LLRenderTarget* sBoundTarget;
 };
 
-#endif //!LL_MESA_HEADLESS
-
 #endif
 
diff --git a/indra/llrender/llvertexbuffer.cpp b/indra/llrender/llvertexbuffer.cpp
index 28a14b23b91..37a4649cb60 100644
--- a/indra/llrender/llvertexbuffer.cpp
+++ b/indra/llrender/llvertexbuffer.cpp
@@ -1574,8 +1574,10 @@ volatile U8* LLVertexBuffer::mapVertexBuffer(S32 type, S32 index, S32 count, boo
 				{
 					if (map_range)
 					{
+#ifndef LL_MESA_HEADLESS
 						glBufferParameteriAPPLE(GL_ARRAY_BUFFER_ARB, GL_BUFFER_SERIALIZED_MODIFY_APPLE, GL_FALSE);
 						glBufferParameteriAPPLE(GL_ARRAY_BUFFER_ARB, GL_BUFFER_FLUSHING_UNMAP_APPLE, GL_FALSE);
+#endif
 						src = (U8*) glMapBufferARB(GL_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB);
 					}
 					else
@@ -1752,8 +1754,10 @@ volatile U8* LLVertexBuffer::mapIndexBuffer(S32 index, S32 count, bool map_range
 				{
 					if (map_range)
 					{
+#ifndef LL_MESA_HEADLESS
 						glBufferParameteriAPPLE(GL_ELEMENT_ARRAY_BUFFER_ARB, GL_BUFFER_SERIALIZED_MODIFY_APPLE, GL_FALSE);
 						glBufferParameteriAPPLE(GL_ELEMENT_ARRAY_BUFFER_ARB, GL_BUFFER_FLUSHING_UNMAP_APPLE, GL_FALSE);
+#endif
 						src = (U8*) glMapBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB);
 					}
 					else
@@ -1881,7 +1885,9 @@ void LLVertexBuffer::unmapBuffer()
 						}
 						else if (gGLManager.mHasFlushBufferRange)
 						{
+#ifndef LL_MESA_HEADLESS
 							glFlushMappedBufferRangeAPPLE(GL_ARRAY_BUFFER_ARB, offset, length);
+#endif
 						}
 						stop_glerror();
 					}
@@ -1947,7 +1953,9 @@ void LLVertexBuffer::unmapBuffer()
 						else if (gGLManager.mHasFlushBufferRange)
 						{
 #ifdef GL_APPLE_flush_buffer_range
+#ifndef LL_MESA_HEADLESS
 							glFlushMappedBufferRangeAPPLE(GL_ELEMENT_ARRAY_BUFFER_ARB, offset, length);
+#endif
 #endif
 						}
 						stop_glerror();
diff --git a/indra/llwindow/CMakeLists.txt b/indra/llwindow/CMakeLists.txt
index 652d5cae5ab..4db58be7763 100644
--- a/indra/llwindow/CMakeLists.txt
+++ b/indra/llwindow/CMakeLists.txt
@@ -140,18 +140,19 @@ endif (SOLARIS)
 set_source_files_properties(${llwindow_HEADER_FILES}
                             PROPERTIES HEADER_FILE_ONLY TRUE)
 
-if (SERVER AND NOT WINDOWS AND NOT DARWIN)
+if ((SERVER OR BAKING) AND NOT WINDOWS AND NOT DARWIN)
   set(server_SOURCE_FILES
        llwindowmesaheadless.cpp
+       llmousehandler.cpp
        )
   set(server_HEADER_FILES
        llwindowmesaheadless.h
+       llmousehandler.h
        )
   copy_server_sources(
       llwindow
       )
 
-
   set_source_files_properties(
     ${server_SOURCE_FILES}
     PROPERTIES
@@ -161,8 +162,8 @@ if (SERVER AND NOT WINDOWS AND NOT DARWIN)
     ${llwindow_SOURCE_FILES}
     ${server_SOURCE_FILES}
     )
-  target_link_libraries (llwindowheadless ${llwindow_LINK_LIBRARIES})
-endif (SERVER AND NOT WINDOWS AND NOT DARWIN)
+  target_link_libraries (llwindowheadless ${llwindow_LINK_LIBRARIES} OSMesa16 dl)
+endif ((SERVER OR BAKING) AND NOT WINDOWS AND NOT DARWIN)
 
 if (llwindow_HEADER_FILES)
   list(APPEND llwindow_SOURCE_FILES ${llwindow_HEADER_FILES})
diff --git a/indra/llwindow/llwindow.cpp b/indra/llwindow/llwindow.cpp
index 5b7424acbb6..d83278d8758 100644
--- a/indra/llwindow/llwindow.cpp
+++ b/indra/llwindow/llwindow.cpp
@@ -256,6 +256,8 @@ std::vector<std::string> LLWindow::getDynamicFallbackFontList()
 	return LLWindowWin32::getDynamicFallbackFontList();
 #elif LL_DARWIN
 	return LLWindowMacOSX::getDynamicFallbackFontList();
+#elif LL_MESA_HEADLESS
+	return std::vector<std::string>();
 #elif LL_SDL
 	return LLWindowSDL::getDynamicFallbackFontList();
 #else
diff --git a/indra/llwindow/llwindowmesaheadless.h b/indra/llwindow/llwindowmesaheadless.h
index 8f70aee4f61..bc8e25ec446 100644
--- a/indra/llwindow/llwindowmesaheadless.h
+++ b/indra/llwindow/llwindowmesaheadless.h
@@ -51,6 +51,7 @@ class LLWindowMesaHeadless : public LLWindow
 	/*virtual*/ BOOL getSize(LLCoordWindow *size) {return FALSE;};
 	/*virtual*/ BOOL setPosition(LLCoordScreen position) {return FALSE;};
 	/*virtual*/ BOOL setSizeImpl(LLCoordScreen size) {return FALSE;};
+	/*virtual*/ BOOL setSizeImpl(LLCoordWindow size) {return FALSE;};	
 	/*virtual*/ BOOL switchContext(BOOL fullscreen, const LLCoordScreen &size, BOOL disable_vsync, const LLCoordScreen * const posp = NULL) {return FALSE;};
 	/*virtual*/ BOOL setCursorPosition(LLCoordWindow position) {return FALSE;};
 	/*virtual*/ BOOL getCursorPosition(LLCoordWindow *position) {return FALSE;};
diff --git a/indra/lscript/lscript_compile/CMakeLists.txt b/indra/lscript/lscript_compile/CMakeLists.txt
index 3ed2892e0ed..134703eed3e 100644
--- a/indra/lscript/lscript_compile/CMakeLists.txt
+++ b/indra/lscript/lscript_compile/CMakeLists.txt
@@ -95,6 +95,7 @@ add_custom_command(
       ${CMAKE_CURRENT_BINARY_DIR}/indra.l.cpp
     COMMAND ${FLEX}
     ARGS
+      -P indra_
       -o${CMAKE_CURRENT_BINARY_DIR}/indra.l.cpp
       ${CMAKE_CURRENT_SOURCE_DIR}/indra.l
     DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/indra.l
@@ -128,6 +129,7 @@ else (WINDOWS)
       COMMAND
         ${BISON}
       ARGS
+        -p indra_
         -d -o ${CMAKE_CURRENT_BINARY_DIR}/indra.y.cpp
         ${CMAKE_CURRENT_SOURCE_DIR}/indra.y
       DEPENDS
diff --git a/indra/lscript/lscript_compile/indra.l b/indra/lscript/lscript_compile/indra.l
index 96b7e57e978..b2c49083cb2 100644
--- a/indra/lscript/lscript_compile/indra.l
+++ b/indra/lscript/lscript_compile/indra.l
@@ -56,6 +56,29 @@ void parse_string();
 
 #define ECHO do { } while (0)
 
+#define yyparse indra_parse
+#define yyerror indra_error
+#define yylval indra_lval
+#define yy_create_buffer indra__create_buffer
+#define yy_delete_buffer indra__delete_buffer
+#define yy_flex_debug indra__flex_debug
+#define yy_init_buffer indra__init_buffer
+#define yy_flush_buffer indra__flush_buffer
+#define yy_load_buffer_state indra__load_buffer_state
+#define yy_switch_to_buffer indra__switch_to_buffer
+#define yyin indra_in
+#define yyleng indra_leng
+#define yylex indra_lex
+#define yylineno indra_lineno
+#define yyout indra_out
+#define yyrestart indra_restart
+#define yytext indra_text
+#define yywrap indra_wrap
+#define yyalloc indra_alloc
+#define yyrealloc indra_realloc
+#define yyfree indra_free
+
+
 #if defined(__cplusplus)
 extern "C" { int yylex( void ); }
 extern "C" { int yyparse( void ); }
diff --git a/indra/newview/lldirpicker.cpp b/indra/newview/lldirpicker.cpp
index 1e03582a291..d7d9f829106 100644
--- a/indra/newview/lldirpicker.cpp
+++ b/indra/newview/lldirpicker.cpp
@@ -327,6 +327,8 @@ BOOL LLDirPicker::getDir(std::string* filename)
 		return FALSE;
 	}
 
+#if !LL_MESA_HEADLESS
+
 	if (mFilePicker)
 	{
 		GtkWindow* picker = mFilePicker->buildFilePicker(false, true,
@@ -340,6 +342,8 @@ BOOL LLDirPicker::getDir(std::string* filename)
 		   return (!mFilePicker->getFirstFile().empty());
 		}
 	}
+#endif // !LL_MESA_HEADLESS
+
 	return FALSE;
 }
 
diff --git a/indra/newview/llfilepicker.cpp b/indra/newview/llfilepicker.cpp
index 4bf5b26b3b0..d13f85baa2e 100644
--- a/indra/newview/llfilepicker.cpp
+++ b/indra/newview/llfilepicker.cpp
@@ -1103,6 +1103,7 @@ void LLFilePicker::chooser_responder(GtkWidget *widget, gint response, gpointer
 
 GtkWindow* LLFilePicker::buildFilePicker(bool is_save, bool is_folder, std::string context)
 {
+#ifndef LL_MESA_HEADLESS
 	if (LLWindowSDL::ll_try_gtk_init())
 	{
 		GtkWidget *win = NULL;
@@ -1174,6 +1175,9 @@ GtkWindow* LLFilePicker::buildFilePicker(bool is_save, bool is_folder, std::stri
 	{
 		return NULL;
 	}
+#else
+	return NULL;
+#endif //LL_MESA_HEADLESS
 }
 
 static void add_common_filters_to_gtkchooser(GtkFileFilter *gfilter,
@@ -1473,7 +1477,7 @@ BOOL LLFilePicker::getSaveFile( ESaveFilter filter, const std::string& filename
 	return FALSE;
 }
 
-BOOL LLFilePicker::getOpenFile( ELoadFilter filter )
+BOOL LLFilePicker::getOpenFile( ELoadFilter filter, bool blocking )
 {
 	// if local file browsing is turned off, return without opening dialog
 	// (Even though this is a stub, I think we still should not return anything at all)
@@ -1494,7 +1498,7 @@ BOOL LLFilePicker::getOpenFile( ELoadFilter filter )
 	default: break;
 	}
 	mFiles.push_back(filename);
-	llinfos << "getOpenFile: Will try to open file: " << hackyfilename << llendl;
+	llinfos << "getOpenFile: Will try to open file: " << filename << llendl;
 	return TRUE;
 }
 
-- 
GitLab


From 47403abc3e1787c81707df0fe8852e46d156953c Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Wed, 19 Sep 2012 13:16:59 -0400
Subject: [PATCH 083/436] work in progress, more debugging/logging of avatar
 visual param info

---
 indra/newview/app_settings/settings.xml | 11 +++++
 indra/newview/llviewerwearable.cpp      |  7 ++-
 indra/newview/llvoavatar.cpp            | 59 ++++++++++++++-----------
 3 files changed, 49 insertions(+), 28 deletions(-)
 mode change 100644 => 100755 indra/newview/llviewerwearable.cpp

diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 674685f3bc2..13bf6c18f83 100755
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -1927,6 +1927,17 @@
       <key>Value</key>
       <string />
     </map>
+  <key>DebugAvatarAppearanceMessage</key>
+  <map>
+    <key>Comment</key>
+    <string>Dump a bunch of XML files when handling appearance messages</string>
+    <key>Persist</key>
+    <integer>1</integer>
+    <key>Type</key>
+    <string>Boolean</string>
+    <key>Value</key>
+    <integer>0</integer>
+  </map>
 	<key>DebugAvatarRezTime</key>
 	<map>
 		<key>Comment</key>
diff --git a/indra/newview/llviewerwearable.cpp b/indra/newview/llviewerwearable.cpp
old mode 100644
new mode 100755
index e9fa92e8be5..5b74f1a9764
--- a/indra/newview/llviewerwearable.cpp
+++ b/indra/newview/llviewerwearable.cpp
@@ -322,7 +322,7 @@ void LLViewerWearable::writeToAvatar(LLAvatarAppearance *avatarp)
 
 	if (!viewer_avatar->isValid()) return;
 
-#if 1
+#if 0 // FIXME restrict to server-bake regions.
 	if (!viewer_avatar->isUsingLocalAppearance())
 	{
 		return;
@@ -528,7 +528,10 @@ void LLViewerWearable::setVisualParams()
 		S32 id = iter->first;
 		LLVisualParam *wearable_param = iter->second;
 		F32 value = wearable_param->getWeight();
-		gAgentAvatarp->setVisualParamWeight(id, value, FALSE);
+		if (gAgentAvatarp->isUsingLocalAppearance())
+		{
+			gAgentAvatarp->setVisualParamWeight(id, value, FALSE);
+		}
 	}
 }
 
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 1b185ed508b..5ccd2d206db 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -48,6 +48,7 @@
 #include "llcallingcard.h"		// IDEVO for LLAvatarTracker
 #include "lldrawpoolavatar.h"
 #include "lldriverparam.h"
+#include "llpolyskeletaldistortion.h"
 #include "lleditingmotion.h"
 #include "llemote.h"
 //#include "llfirstuse.h"
@@ -191,8 +192,7 @@ enum ERenderName
 
 // Utility func - FIXME move out of avatar.
 std::string get_sequential_numbered_file_name(const std::string& prefix,
-											  const std::string& suffix,
-											  const S32 width = 4);
+											  const std::string& suffix);
 
 //-----------------------------------------------------------------------------
 // Callback data
@@ -6277,6 +6277,24 @@ bool LLVOAvatar::visualParamWeightsAreDefault()
 	return rtn;
 }
 
+void dump_visual_param(apr_file_t* file, LLVisualParam* viewer_param, F32 value)
+{
+	std::string type_string = "unknown";
+	if (dynamic_cast<LLTexLayerParamAlpha*>(viewer_param))
+		type_string = "param_alpha";
+	if (dynamic_cast<LLTexLayerParamColor*>(viewer_param))
+		type_string = "param_color";
+	if (dynamic_cast<LLDriverParam*>(viewer_param))
+		type_string = "param_driver";
+	if (dynamic_cast<LLPolyMorphTarget*>(viewer_param))
+		type_string = "param_morph";
+	if (dynamic_cast<LLPolySkeletalDistortion*>(viewer_param))
+		type_string = "param_skeleton";
+	apr_file_printf(file, "\t\t<param id=\"%d\" name=\"%s\" value=\"%.3f\"/ type=\"%s\">\n",
+					viewer_param->getID(), viewer_param->getName().c_str(), value, type_string.c_str());
+}
+
+
 void LLVOAvatar::dumpAppearanceMsgParams( const std::string& dump_prefix,
 										  const std::vector<F32>& params_for_dump,
 										  const LLTEContents& tec)
@@ -6306,8 +6324,7 @@ void LLVOAvatar::dumpAppearanceMsgParams( const std::string& dump_prefix,
 		}
 		LLViewerVisualParam* viewer_param = (LLViewerVisualParam*)param;
 		F32 value = params_for_dump[i];
-		apr_file_printf(file, "\t\t<param id=\"%d\" name=\"%s\" value=\"%.3f\"/>\n",
-						viewer_param->getID(), viewer_param->getName().c_str(), value);
+		dump_visual_param(file, viewer_param, value);
 		param = getNextVisualParam();
 	}
 	for (U32 i = 0; i < tec.face_count; i++)
@@ -6323,14 +6340,14 @@ void LLVOAvatar::dumpAppearanceMsgParams( const std::string& dump_prefix,
 //-----------------------------------------------------------------------------
 void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 {
-	//std::string dump_prefix = getFullname() + " ";
-	//dumpArchetypeXML(dump_prefix + "process_start");
+	bool enable_verbose_dumps = gSavedSettings.getBOOL("DebugAvatarAppearanceMessage");
+	std::string dump_prefix = getFullname() + "_" + (isSelf()?"s":"o") + "_";
+	if (enable_verbose_dumps) { dumpArchetypeXML(dump_prefix + "process_start"); }
 	if (gSavedSettings.getBOOL("BlockAvatarAppearanceMessages"))
 	{
 		llwarns << "Blocking AvatarAppearance message" << llendl;
 		return;
 	}
-	
 	LLMemType mt(LLMemType::MTYPE_AVATAR);
 
 	BOOL is_first_appearance_message = !mFirstAppearanceMessageReceived;
@@ -6349,8 +6366,6 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 			return;
 		}
 	}
-	clearVisualParamWeights();
-	//dumpArchetypeXML(dump_prefix + "process_post_clear");
 
 	ESex old_sex = getSex();
 
@@ -6470,12 +6485,11 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 				}
 				param = getNextVisualParam();
 			}
-			//dumpAppearanceMsgParams(dump_prefix + "appearance_msg",
-			//						params_for_dump,
-			//						tec);
+			if (enable_verbose_dumps)
+				dumpAppearanceMsgParams(dump_prefix + "appearance_msg", params_for_dump, tec);
 		}
 
-		//dumpArchetypeXML(dump_prefix + "process_post_set_weights");
+		if (enable_verbose_dumps) { dumpArchetypeXML(dump_prefix + "process_post_set_weights"); }
 
 		const S32 expected_tweakable_count = getVisualParamCountInGroup(VISUAL_PARAM_GROUP_TWEAKABLE); // don't worry about VISUAL_PARAM_GROUP_TWEAKABLE_NO_TRANSMIT
 		if (num_blocks != expected_tweakable_count)
@@ -6541,7 +6555,7 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 
 	updateMeshTextures();
 
-	//dumpArchetypeXML(dump_prefix + "process_end");
+	if (enable_verbose_dumps) dumpArchetypeXML(dump_prefix + "process_end");
 //	llinfos << "processAvatarAppearance end " << mID << llendl;
 }
 
@@ -6784,8 +6798,7 @@ void LLVOAvatar::useBakedTexture( const LLUUID& id )
 }
 
 std::string get_sequential_numbered_file_name(const std::string& prefix,
-											  const std::string& suffix,
-											  const S32 width)
+											  const std::string& suffix)
 {
 	typedef std::map<std::string,S32> file_num_type;
 	static  file_num_type file_nums;
@@ -6795,10 +6808,8 @@ std::string get_sequential_numbered_file_name(const std::string& prefix,
 	{
 		num = it->second;
 	}
-	std::ostringstream temp;
-	temp << std::setw(width) << std::setfill('0') << num;
 	file_nums[prefix] = num+1;
-	std::string outfilename = prefix + " " + temp.str() + ".xml";
+	std::string outfilename = prefix + " " + llformat("%04d",num) + ".xml";
 	std::replace(outfilename.begin(),outfilename.end(),' ','_');
 	return outfilename;
 }
@@ -6808,7 +6819,7 @@ void LLVOAvatar::dumpArchetypeXML(const std::string& prefix, bool group_by_weara
 	std::string outprefix(prefix);
 	if (outprefix.empty())
 	{
-		outprefix = getFullname();
+		outprefix = getFullname() + (isSelf()?"_s":"_o");
 	}
 	if (outprefix.empty())
 	{
@@ -6846,8 +6857,7 @@ void LLVOAvatar::dumpArchetypeXML(const std::string& prefix, bool group_by_weara
 				if( (viewer_param->getWearableType() == type) && 
 					(viewer_param->isTweakable() ) )
 				{
-					apr_file_printf(file, "\t\t<param id=\"%d\" name=\"%s\" value=\"%.3f\"/>\n",
-									viewer_param->getID(), viewer_param->getName().c_str(), viewer_param->getWeight());
+					dump_visual_param(file, viewer_param, viewer_param->getWeight());
 				}
 			}
 
@@ -6873,10 +6883,7 @@ void LLVOAvatar::dumpArchetypeXML(const std::string& prefix, bool group_by_weara
 		for (LLVisualParam* param = getFirstVisualParam(); param; param = getNextVisualParam())
 		{
 			LLViewerVisualParam* viewer_param = (LLViewerVisualParam*)param;
-			{
-				apr_file_printf(file, "\t\t<param id=\"%d\" name=\"%s\" value=\"%.3f\"/>\n",
-								viewer_param->getID(), viewer_param->getName().c_str(), viewer_param->getWeight());
-			}
+			dump_visual_param(file, viewer_param, viewer_param->getWeight());
 		}
 
 		for (U8 te = 0; te < TEX_NUM_INDICES; te++)
-- 
GitLab


From 2c60cfdde3b6e3301942139ae5004bd4d480c955 Mon Sep 17 00:00:00 2001
From: Nyx Linden <nyx@lindenlab.com>
Date: Wed, 19 Sep 2012 17:17:25 +0000
Subject: [PATCH 084/436] Updating mesa libraries to the latest autobuild
 version

---
 autobuild.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index cc0609d4589..70cf2ee6b33 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -1432,9 +1432,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>9da287964003f9042e84417d2e3a6c36</string>
+              <string>19c6ce37e8ce4143d5bb2808ccb8e6ff</string>
               <key>url</key>
-              <string>file:///ngi-persist/var/tmp/nyx/3p-mesa/mesa-7.11.1-linux-20120918.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-mesa/rev/264880/arch/Linux/installer/mesa-7.11.1-linux-20120918.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
-- 
GitLab


From f3d52b8d54c3be67262d4d8ae9a00253e9d55249 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Wed, 19 Sep 2012 17:59:27 -0400
Subject: [PATCH 085/436] small tweaks to param debugging, restricting
 LLWearable::writeToAvatar

---
 indra/llappearance/lldriverparam.cpp | 2 ++
 indra/newview/llviewermenu.cpp       | 2 +-
 indra/newview/llviewerwearable.cpp   | 6 +++---
 3 files changed, 6 insertions(+), 4 deletions(-)
 mode change 100644 => 100755 indra/llappearance/lldriverparam.cpp

diff --git a/indra/llappearance/lldriverparam.cpp b/indra/llappearance/lldriverparam.cpp
old mode 100644
new mode 100755
index 1092b525d06..ec282c50eb8
--- a/indra/llappearance/lldriverparam.cpp
+++ b/indra/llappearance/lldriverparam.cpp
@@ -187,7 +187,9 @@ BOOL LLDriverParam::setInfo(LLDriverParamInfo *info)
 {
 	llassert(wearable);
 	LLDriverParam *new_param = new LLDriverParam(mAvatarAppearance, wearable);
+	// FIXME this clobbers mWearablep, which means any code currently using mWearablep is wrong.
 	*new_param = *this;
+//	new_param->mDriven.clear(); // clear driven list to avoid overwriting avatar driven params from wearables. 
 	return new_param;
 }
 
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index cbd1ac692f7..33add7d56c0 100755
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -1600,7 +1600,7 @@ class LLAdvancedEnableAppearanceToXML : public view_listener_t
 {
 	bool handleEvent(const LLSD& userdata)
 	{
-		return gSavedSettings.getBOOL("DebugAvatarCompositeBaked");
+		return gSavedSettings.getBOOL("DebugAvatarAppearanceMessage");
 	}
 };
 
diff --git a/indra/newview/llviewerwearable.cpp b/indra/newview/llviewerwearable.cpp
index 5b74f1a9764..373cc63b414 100755
--- a/indra/newview/llviewerwearable.cpp
+++ b/indra/newview/llviewerwearable.cpp
@@ -322,12 +322,11 @@ void LLViewerWearable::writeToAvatar(LLAvatarAppearance *avatarp)
 
 	if (!viewer_avatar->isValid()) return;
 
-#if 0 // FIXME restrict to server-bake regions.
+    // FIXME restrict this check to server bake regions?
 	if (!viewer_avatar->isUsingLocalAppearance())
 	{
 		return;
 	}
-#endif
 
 	ESex old_sex = avatarp->getSex();
 
@@ -523,7 +522,8 @@ void LLViewerWearable::setLocalTextureObject(S32 index, LLLocalTextureObject &lt
 
 void LLViewerWearable::setVisualParams()
 {
-	for (visual_param_index_map_t::const_iterator iter = mVisualParamIndexMap.begin(); iter != mVisualParamIndexMap.end(); iter++)
+	for (visual_param_index_map_t::const_iterator iter = mVisualParamIndexMap.begin();
+		 iter != mVisualParamIndexMap.end(); iter++)
 	{
 		S32 id = iter->first;
 		LLVisualParam *wearable_param = iter->second;
-- 
GitLab


From 7153d1db11c00245a379fa9601f092020152ea73 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Thu, 20 Sep 2012 04:29:17 +0000
Subject: [PATCH 086/436] Partial rewrite of llifstream and llofstream (Windows
 implementation pending).  Moved more functionality from llviewerwearable to
 llwearable

---
 indra/llappearance/llavatarappearance.h       |   1 +
 .../llappearance/llavatarappearancedefines.h  |   3 +-
 indra/llappearance/lllocaltextureobject.h     |   1 -
 indra/llappearance/lltexlayer.h               |   1 +
 indra/llappearance/lltexturemanagerbridge.h   |   1 +
 indra/llappearance/llwearable.cpp             | 443 ++++++++---
 indra/llappearance/llwearable.h               |  23 +-
 indra/llappearance/llwearabledata.h           |   1 +
 indra/llcommon/lldictionary.h                 |   2 +
 indra/llcommon/llfile.cpp                     | 705 ++++++++++++++++--
 indra/llcommon/llfile.h                       | 423 ++++++++---
 indra/llinventory/llinventory.cpp             |   8 +-
 indra/llinventory/llpermissions.cpp           | 193 +----
 indra/llinventory/llpermissions.h             |   4 +-
 indra/llinventory/llsaleinfo.cpp              |  95 +--
 indra/llinventory/llsaleinfo.h                |   4 +-
 indra/newview/llagent.h                       |   1 +
 indra/newview/lllocalbitmaps.h                |   4 +-
 indra/newview/lltoolmorph.cpp                 |   1 +
 indra/newview/llviewertexlayer.h              |   1 +
 indra/newview/llviewerwearable.cpp            | 184 +----
 indra/newview/llviewerwearable.h              |  16 +-
 indra/newview/llwearablelist.cpp              |   8 +-
 indra/test/llpermissions_tut.cpp              |  14 +-
 indra/test/llsaleinfo_tut.cpp                 |   9 +-
 25 files changed, 1392 insertions(+), 754 deletions(-)

diff --git a/indra/llappearance/llavatarappearance.h b/indra/llappearance/llavatarappearance.h
index 5726ff62d10..4f573356886 100644
--- a/indra/llappearance/llavatarappearance.h
+++ b/indra/llappearance/llavatarappearance.h
@@ -37,6 +37,7 @@
 
 class LLTexLayerSet;
 class LLTexGlobalColor;
+class LLTexGlobalColorInfo;
 class LLWearableData;
 class LLAvatarBoneInfo;
 class LLAvatarSkeletonInfo;
diff --git a/indra/llappearance/llavatarappearancedefines.h b/indra/llappearance/llavatarappearancedefines.h
index e7c94104cc5..0351f284295 100644
--- a/indra/llappearance/llavatarappearancedefines.h
+++ b/indra/llappearance/llavatarappearancedefines.h
@@ -29,9 +29,10 @@
 #define LL_AVATARAPPEARANCE_DEFINES_H
 
 #include <vector>
-#include "llwearable.h"
 #include "lljointpickname.h"
 #include "lldictionary.h"
+#include "llwearabletype.h"
+#include "lluuid.h"
 
 namespace LLAvatarAppearanceDefines
 {
diff --git a/indra/llappearance/lllocaltextureobject.h b/indra/llappearance/lllocaltextureobject.h
index 6f14448cca4..9b9f41fd196 100644
--- a/indra/llappearance/lllocaltextureobject.h
+++ b/indra/llappearance/lllocaltextureobject.h
@@ -32,7 +32,6 @@
 #include "llpointer.h"
 #include "llgltexture.h"
 
-class LLUUID;
 class LLTexLayer;
 class LLTexLayerTemplate;
 class LLWearable;
diff --git a/indra/llappearance/lltexlayer.h b/indra/llappearance/lltexlayer.h
index 0d7fad349cb..692cfa1a38f 100644
--- a/indra/llappearance/lltexlayer.h
+++ b/indra/llappearance/lltexlayer.h
@@ -36,6 +36,7 @@
 class LLAvatarAppearance;
 class LLImageTGA;
 class LLImageRaw;
+class LLLocalTextureObject;
 class LLXmlTreeNode;
 class LLTexLayerSet;
 class LLTexLayerSetInfo;
diff --git a/indra/llappearance/lltexturemanagerbridge.h b/indra/llappearance/lltexturemanagerbridge.h
index 99c01755d4d..4b814b522dd 100644
--- a/indra/llappearance/lltexturemanagerbridge.h
+++ b/indra/llappearance/lltexturemanagerbridge.h
@@ -27,6 +27,7 @@
 #ifndef LL_TEXTUREMANAGERBRIDGE_H
 #define LL_TEXTUREMANAGERBRIDGE_H
 
+#include "llavatarappearancedefines.h"
 #include "llpointer.h"
 #include "llgltexture.h"
 
diff --git a/indra/llappearance/llwearable.cpp b/indra/llappearance/llwearable.cpp
index 9e73a6669a1..78ff5109095 100755
--- a/indra/llappearance/llwearable.cpp
+++ b/indra/llappearance/llwearable.cpp
@@ -62,52 +62,41 @@ LLAssetType::EType LLWearable::getAssetType() const
 	return LLWearableType::getAssetType(mType);
 }
 
+BOOL LLWearable::exportFile(LLFILE* fp) const
+{
+	llofstream ofs(fp);
+	return exportStream(ofs);
+}
+
 // virtual
-BOOL LLWearable::exportFile(LLFILE* file) const
+BOOL LLWearable::exportStream( std::ostream& output_stream ) const
 {
-	// header and version
-	if( fprintf( file, "LLWearable version %d\n", mDefinitionVersion ) < 0 )
-	{
-		return FALSE;
-	}
+	if (!output_stream.good()) return FALSE;
 
+	// header and version
+	output_stream << "LLWearable version " << mDefinitionVersion  << "\n";
 	// name
-	if( fprintf( file, "%s\n", mName.c_str() ) < 0 )
-	{
-		return FALSE;
-	}
-
+	output_stream << mName << "\n";
 	// description
-	if( fprintf( file, "%s\n", mDescription.c_str() ) < 0 )
-	{
-		return FALSE;
-	}
-	
+	output_stream << mDescription << "\n";
+
 	// permissions
-	if( !mPermissions.exportFile( file ) )
+	if( !mPermissions.exportStream( output_stream ) )
 	{
 		return FALSE;
 	}
 
 	// sale info
-	if( !mSaleInfo.exportFile( file ) )
+	if( !mSaleInfo.exportStream( output_stream ) )
 	{
 		return FALSE;
 	}
 
 	// wearable type
-	S32 type = (S32)mType;
-	if( fprintf( file, "type %d\n", type ) < 0 )
-	{
-		return FALSE;
-	}
+	output_stream << "type " << (S32) getType() << "\n";
 
 	// parameters
-	S32 num_parameters = mVisualParamIndexMap.size();
-	if( fprintf( file, "parameters %d\n", num_parameters ) < 0 )
-	{
-		return FALSE;
-	}
+	output_stream << "parameters " << mVisualParamIndexMap.size() << "\n";
 
 	for (visual_param_index_map_t::const_iterator iter = mVisualParamIndexMap.begin();
 		 iter != mVisualParamIndexMap.end(); 
@@ -116,27 +105,17 @@ BOOL LLWearable::exportFile(LLFILE* file) const
 		S32 param_id = iter->first;
 		const LLVisualParam* param = iter->second;
 		F32 param_weight = param->getWeight();
-		if( fprintf( file, "%d %s\n", param_id, terse_F32_to_string( param_weight ).c_str() ) < 0 )
-		{
-			return FALSE;
-		}
+		output_stream << param_id << " " << terse_F32_to_string( param_weight ) << "\n";
 	}
 
 	// texture entries
-	S32 num_textures = mTEMap.size();
-	if( fprintf( file, "textures %d\n", num_textures ) < 0 )
-	{
-			return FALSE;
-	}
+	output_stream << "textures " << mTEMap.size() << "\n";
 
 	for (te_map_t::const_iterator iter = mTEMap.begin(); iter != mTEMap.end(); ++iter)
 	{
 			S32 te = iter->first;
 			const LLUUID& image_id = iter->second->getID();
-			if( fprintf( file, "%d %s\n", te, image_id.asString().c_str()) < 0 )
-			{
-					return FALSE;
-			}
+			output_stream << te << " " << image_id << "\n";
 	}
 	return TRUE;
 }
@@ -195,29 +174,49 @@ void LLWearable::createLayers(S32 te, LLAvatarAppearance *avatarp)
 	}
 }
 
+LLWearable::EImportResult LLWearable::importFile(LLFILE* fp, LLAvatarAppearance* avatarp )
+{
+	llifstream ifs(fp);
+	return importStream(ifs, avatarp);
+}
+
 // virtual
-LLWearable::EImportResult LLWearable::importFile( LLFILE* file, LLAvatarAppearance* avatarp )
+LLWearable::EImportResult LLWearable::importStream( std::istream& input_stream, LLAvatarAppearance* avatarp )
 {
 	// *NOTE: changing the type or size of this buffer will require
-	// changes in the fscanf() code below. You would be better off
-	// rewriting this to use streams and not require an open FILE.
-	char text_buffer[2048];		/* Flawfinder: ignore */
-	S32 fields_read = 0;
+	// changes in the fscanf() code below.
+	// We are using a local max buffer size here to avoid issues
+	// if MAX_STRING size changes.
+	const U32 PARSE_BUFFER_SIZE = 2048;
+	char buffer[2048];		/* Flawfinder: ignore */
+	char uuid_buffer[37];	/* Flawfinder: ignore */
+
+	// This data is being generated on the viewer.
+	// Impose some sane limits on parameter and texture counts.
+	const S32 MAX_WEARABLE_ASSET_TEXTURES = 100;
+	const S32 MAX_WEARABLE_ASSET_PARAMETERS = 1000;
 
-	// read header and version 
-	fields_read = fscanf( file, "LLWearable version %d\n", &mDefinitionVersion );
-	if( fields_read != 1 )
+	if(!avatarp)
 	{
-		return LLWearable::BAD_HEADER;
+		return LLWearable::FAILURE;
 	}
 
-	if(!avatarp)
+	// read header and version 
+	if (!input_stream.good())
 	{
+		llwarns << "Failed to read wearable asset input stream." << llendl;
 		return LLWearable::FAILURE;
 	}
+	input_stream.getline(buffer, PARSE_BUFFER_SIZE);
+	if ( 1 != sscanf( /* Flawfinder: ignore */
+				buffer,
+				"LLWearable version %d\n",
+				&mDefinitionVersion ) )
+	{
+		return LLWearable::BAD_HEADER;
+	}
 
-
-	// Temporary hack to allow wearables with definition version 24 to still load.
+	// Hack to allow wearables with definition version 24 to still load.
 	// This should only affect lindens and NDA'd testers who have saved wearables in 2.0
 	// the extra check for version == 24 can be removed before release, once internal testers
 	// have loaded these wearables again. See hack pt 2 at bottom of function to ensure that
@@ -229,68 +228,58 @@ LLWearable::EImportResult LLWearable::importFile( LLFILE* file, LLAvatarAppearan
 	}
 
 	// name
-	int next_char = fgetc( file );		/* Flawfinder: ignore */
-	if( '\n' == next_char )
-	{
-		// no name
-		mName = "";
-	}
-	else
+	if (!input_stream.good())
 	{
-		ungetc( next_char, file );
-		fields_read = fscanf(	/* Flawfinder: ignore */
-			file,
-			"%2047[^\n]",
-			text_buffer);
-		if( (1 != fields_read) || (fgetc( file ) != '\n') )		/* Flawfinder: ignore */
-		{
-			llwarns << "Bad Wearable asset: early end of file" << llendl;
-			return LLWearable::FAILURE;
-		}
-		mName = text_buffer;
+		llwarns << "Bad Wearable asset: early end of input stream " 
+				<< "while reading name" << llendl;
+		return LLWearable::FAILURE;
 	}
+	input_stream.getline(buffer, PARSE_BUFFER_SIZE);
+	mName = buffer;
 
 	// description
-	next_char = fgetc( file );		/* Flawfinder: ignore */
-	if( '\n' == next_char )
+	if (!input_stream.good())
 	{
-		// no description
-		mDescription = "";
-	}
-	else
-	{
-		ungetc( next_char, file );
-		fields_read = fscanf(	/* Flawfinder: ignore */
-			file,
-			"%2047[^\n]",
-			text_buffer );
-		if( (1 != fields_read) || (fgetc( file ) != '\n') )		/* Flawfinder: ignore */
-		{
-			llwarns << "Bad Wearable asset: early end of file" << llendl;
-			return LLWearable::FAILURE;
-		}
-		mDescription = text_buffer;
+		llwarns << "Bad Wearable asset: early end of input stream " 
+				<< "while reading description" << llendl;
+		return LLWearable::FAILURE;
 	}
+	input_stream.getline(buffer, PARSE_BUFFER_SIZE);
+	mDescription = buffer;
 
 	// permissions
-	S32 perm_version;
-	fields_read = fscanf( file, " permissions %d\n", &perm_version );
-	if( (fields_read != 1) || (perm_version != 0) )
+	if (!input_stream.good())
+	{
+		llwarns << "Bad Wearable asset: early end of input stream " 
+				<< "while reading permissions" << llendl;
+		return LLWearable::FAILURE;
+	}
+	input_stream.getline(buffer, PARSE_BUFFER_SIZE);
+	S32 perm_version = -1;
+	if ( 1 != sscanf( buffer, " permissions %d\n", &perm_version ) ||
+		 perm_version != 0 )
 	{
-		llwarns << "Bad Wearable asset: missing permissions" << llendl;
+		llwarns << "Bad Wearable asset: missing valid permissions" << llendl;
 		return LLWearable::FAILURE;
 	}
-	if( !mPermissions.importFile( file ) )
+	if( !mPermissions.importStream( input_stream ) )
 	{
 		return LLWearable::FAILURE;
 	}
 
 	// sale info
-	S32 sale_info_version;
-	fields_read = fscanf( file, " sale_info %d\n", &sale_info_version );
-	if( (fields_read != 1) || (sale_info_version != 0) )
+	if (!input_stream.good())
 	{
-		llwarns << "Bad Wearable asset: missing sale_info" << llendl;
+		llwarns << "Bad Wearable asset: early end of input stream " 
+				<< "while reading sale info" << llendl;
+		return LLWearable::FAILURE;
+	}
+	input_stream.getline(buffer, PARSE_BUFFER_SIZE);
+	S32 sale_info_version = -1;
+	if ( 1 != sscanf( buffer, " sale_info %d\n", &sale_info_version ) ||
+		sale_info_version != 0 )
+	{
+		llwarns << "Bad Wearable asset: missing valid sale_info" << llendl;
 		return LLWearable::FAILURE;
 	}
 	// Sale info used to contain next owner perm. It is now in the
@@ -299,7 +288,7 @@ LLWearable::EImportResult LLWearable::importFile( LLFILE* file, LLAvatarAppearan
 	// up the vast majority of the tasks.
 	BOOL has_perm_mask = FALSE;
 	U32 perm_mask = 0;
-	if( !mSaleInfo.importFile(file, has_perm_mask, perm_mask) )
+	if( !mSaleInfo.importStream(input_stream, has_perm_mask, perm_mask) )
 	{
 		return LLWearable::FAILURE;
 	}
@@ -314,9 +303,15 @@ LLWearable::EImportResult LLWearable::importFile( LLFILE* file, LLAvatarAppearan
 	}
 
 	// wearable type
+	if (!input_stream.good())
+	{
+		llwarns << "Bad Wearable asset: early end of input stream " 
+				<< "while reading type" << llendl;
+		return LLWearable::FAILURE;
+	}
+	input_stream.getline(buffer, PARSE_BUFFER_SIZE);
 	S32 type = -1;
-	fields_read = fscanf( file, "type %d\n", &type );
-	if( fields_read != 1 )
+	if ( 1 != sscanf( buffer, "type %d\n", &type ) )
 	{
 		llwarns << "Bad Wearable asset: bad type" << llendl;
 		return LLWearable::FAILURE;
@@ -333,27 +328,48 @@ LLWearable::EImportResult LLWearable::importFile( LLFILE* file, LLAvatarAppearan
 	}
 
 	// parameters header
-	S32 num_parameters = 0;
-	fields_read = fscanf( file, "parameters %d\n", &num_parameters );
-	if( fields_read != 1 )
+	if (!input_stream.good())
+	{
+		llwarns << "Bad Wearable asset: early end of input stream " 
+				<< "while reading parameters header" << llendl;
+		return LLWearable::FAILURE;
+	}
+	input_stream.getline(buffer, PARSE_BUFFER_SIZE);
+	S32 num_parameters = -1;
+	if ( 1 != sscanf( buffer, "parameters %d\n", &num_parameters ) )
 	{
 		llwarns << "Bad Wearable asset: missing parameters block" << llendl;
 		return LLWearable::FAILURE;
 	}
-
+	if ( num_parameters > MAX_WEARABLE_ASSET_PARAMETERS )
+	{
+		llwarns << "Bad Wearable asset: too many parameters, "
+				<< num_parameters << llendl;
+		return LLWearable::FAILURE;
+	}
 	if( num_parameters != mVisualParamIndexMap.size() )
 	{
-		llwarns << "Wearable parameter mismatch. Reading in " << num_parameters << " from file, but created " << mVisualParamIndexMap.size() << " from avatar parameters. type: " <<  mType << llendl;
+		llwarns << "Wearable parameter mismatch. Reading in " 
+				<< num_parameters << " from file, but created " 
+				<< mVisualParamIndexMap.size() 
+				<< " from avatar parameters. type: " 
+				<<  getType() << llendl;
 	}
 
 	// parameters
 	S32 i;
 	for( i = 0; i < num_parameters; i++ )
 	{
+		if (!input_stream.good())
+		{
+			llwarns << "Bad Wearable asset: early end of input stream " 
+					<< "while reading parameter #" << i << llendl;
+			return LLWearable::FAILURE;
+		}
+		input_stream.getline(buffer, PARSE_BUFFER_SIZE);
 		S32 param_id = 0;
 		F32 param_weight = 0.f;
-		fields_read = fscanf( file, "%d %f\n", &param_id, &param_weight );
-		if( fields_read != 2 )
+		if ( 2 != sscanf( buffer, "%d %f\n", &param_id, &param_weight ) )
 		{
 			llwarns << "Bad Wearable asset: bad parameter, #" << i << llendl;
 			return LLWearable::FAILURE;
@@ -362,34 +378,53 @@ LLWearable::EImportResult LLWearable::importFile( LLFILE* file, LLAvatarAppearan
 	}
 
 	// textures header
-	S32 num_textures = 0;
-	fields_read = fscanf( file, "textures %d\n", &num_textures);
-	if( fields_read != 1 )
+	if (!input_stream.good())
+	{
+		llwarns << "Bad Wearable asset: early end of input stream " 
+				<< "while reading textures header" << i << llendl;
+		return LLWearable::FAILURE;
+	}
+	input_stream.getline(buffer, PARSE_BUFFER_SIZE);
+	S32 num_textures = -1;
+	if ( 1 != sscanf( buffer, "textures %d\n", &num_textures) )
 	{
 		llwarns << "Bad Wearable asset: missing textures block" << llendl;
 		return LLWearable::FAILURE;
 	}
+	if ( num_textures > MAX_WEARABLE_ASSET_TEXTURES )
+	{
+		llwarns << "Bad Wearable asset: too many textures, "
+				<< num_textures << llendl;
+		return LLWearable::FAILURE;
+	}
 
 	// textures
 	for( i = 0; i < num_textures; i++ )
 	{
+		if (!input_stream.good())
+		{
+			llwarns << "Bad Wearable asset: early end of input stream " 
+					<< "while reading textures #" << i << llendl;
+			return LLWearable::FAILURE;
+		}
+		input_stream.getline(buffer, PARSE_BUFFER_SIZE);
 		S32 te = 0;
-		fields_read = fscanf(   /* Flawfinder: ignore */
-				file,
-				"%d %2047s\n",
-				&te, text_buffer);
-		if( fields_read != 2 )
+		if ( 2 != sscanf(   /* Flawfinder: ignore */
+				buffer,
+				"%d %36s\n",
+				&te, uuid_buffer) )
 		{
 				llwarns << "Bad Wearable asset: bad texture, #" << i << llendl;
 				return LLWearable::FAILURE;
 		}
 	
-		if( !LLUUID::validate( text_buffer ) )
+		if( !LLUUID::validate( uuid_buffer ) )
 		{
-				llwarns << "Bad Wearable asset: bad texture uuid: " << text_buffer << llendl;
+				llwarns << "Bad Wearable asset: bad texture uuid: " 
+						<< uuid_buffer << llendl;
 				return LLWearable::FAILURE;
 		}
-		LLUUID id = LLUUID(text_buffer);
+		LLUUID id = LLUUID(uuid_buffer);
 		LLGLTexture* image = gTextureManagerBridgep->getFetchedTexture( id );
 		if( mTEMap.find(te) != mTEMap.end() )
 		{
@@ -400,12 +435,15 @@ LLWearable::EImportResult LLWearable::importFile( LLFILE* file, LLAvatarAppearan
 				delete mSavedTEMap[te];
 		}
 	
-		LLUUID textureid(text_buffer);
+		LLUUID textureid(uuid_buffer);
 		mTEMap[te] = new LLLocalTextureObject(image, textureid);
 		mSavedTEMap[te] = new LLLocalTextureObject(image, textureid);
 		createLayers(te, avatarp);
 	}
 
+	// copy all saved param values to working params
+	revertValues();
+
 	return LLWearable::SUCCESS;
 }
 
@@ -417,6 +455,171 @@ void LLWearable::setType(LLWearableType::EType type, LLAvatarAppearance *avatarp
 }
 
 
+LLLocalTextureObject* LLWearable::getLocalTextureObject(S32 index)
+{
+	te_map_t::iterator iter = mTEMap.find(index);
+	if( iter != mTEMap.end() )
+	{
+		LLLocalTextureObject* lto = iter->second;
+		return lto;
+	}
+	return NULL;
+}
+
+const LLLocalTextureObject* LLWearable::getLocalTextureObject(S32 index) const
+{
+	te_map_t::const_iterator iter = mTEMap.find(index);
+	if( iter != mTEMap.end() )
+	{
+		const LLLocalTextureObject* lto = iter->second;
+		return lto;
+	}
+	return NULL;
+}
+
+std::vector<LLLocalTextureObject*> LLWearable::getLocalTextureListSeq()
+{
+	std::vector<LLLocalTextureObject*> result;
+
+	for(te_map_t::const_iterator iter = mTEMap.begin();
+		iter != mTEMap.end(); iter++)
+	{
+		LLLocalTextureObject* lto = iter->second;
+		result.push_back(lto);
+	}
+
+	return result;
+}
+
+void LLWearable::setLocalTextureObject(S32 index, LLLocalTextureObject &lto)
+{
+	if( mTEMap.find(index) != mTEMap.end() )
+	{
+		mTEMap.erase(index);
+	}
+	mTEMap[index] = new LLLocalTextureObject(lto);
+}
+
+void LLWearable::revertValues()
+{
+	//update saved settings so wearable is no longer dirty
+	// non-driver params first
+	for (param_map_t::const_iterator iter = mSavedVisualParamMap.begin(); iter != mSavedVisualParamMap.end(); iter++)
+	{
+		S32 id = iter->first;
+		F32 value = iter->second;
+		LLVisualParam *param = getVisualParam(id);
+		if(param &&  !dynamic_cast<LLDriverParam*>(param) )
+		{
+			setVisualParamWeight(id, value, TRUE);
+		}
+	}
+
+	//then driver params
+	for (param_map_t::const_iterator iter = mSavedVisualParamMap.begin(); iter != mSavedVisualParamMap.end(); iter++)
+	{
+		S32 id = iter->first;
+		F32 value = iter->second;
+		LLVisualParam *param = getVisualParam(id);
+		if(param &&  dynamic_cast<LLDriverParam*>(param) )
+		{
+			setVisualParamWeight(id, value, TRUE);
+		}
+	}
+
+	// make sure that saved values are sane
+	for (param_map_t::const_iterator iter = mSavedVisualParamMap.begin(); iter != mSavedVisualParamMap.end(); iter++)
+	{
+		S32 id = iter->first;
+		LLVisualParam *param = getVisualParam(id);
+		if( param )
+		{
+			mSavedVisualParamMap[id] = param->getWeight();
+		}
+	}
+
+	syncImages(mSavedTEMap, mTEMap);
+}
+
+void LLWearable::saveValues()
+{
+	//update saved settings so wearable is no longer dirty
+	mSavedVisualParamMap.clear();
+	for (visual_param_index_map_t::const_iterator iter = mVisualParamIndexMap.begin(); iter != mVisualParamIndexMap.end(); ++iter)
+	{
+		S32 id = iter->first;
+		LLVisualParam *wearable_param = iter->second;
+		F32 value = wearable_param->getWeight();
+		mSavedVisualParamMap[id] = value;
+	}
+
+	// Deep copy of mTEMap (copies only those tes that are current, filling in defaults where needed)
+	syncImages(mTEMap, mSavedTEMap);
+}
+
+void LLWearable::syncImages(te_map_t &src, te_map_t &dst)
+{
+	// Deep copy of src (copies only those tes that are current, filling in defaults where needed)
+	for( S32 te = 0; te < TEX_NUM_INDICES; te++ )
+	{
+		if (LLAvatarAppearanceDictionary::getTEWearableType((ETextureIndex) te) == mType)
+		{
+			te_map_t::const_iterator iter = src.find(te);
+			LLUUID image_id;
+			LLGLTexture *image = NULL;
+			LLLocalTextureObject *lto = NULL;
+			if(iter != src.end())
+			{
+				// there's a Local Texture Object in the source image map. Use this to populate the values to store in the destination image map.
+				lto = iter->second;
+				image = lto->getImage();
+				image_id = lto->getID();
+			}
+			else
+			{
+				// there is no Local Texture Object in the source image map. Get defaults values for populating the destination image map.
+				image_id = getDefaultTextureImageID((ETextureIndex) te);
+				image = gTextureManagerBridgep->getFetchedTexture( image_id );
+			}
+
+			if( dst.find(te) != dst.end() )
+			{
+				// there's already an entry in the destination map for the texture. Just update its values.
+				dst[te]->setImage(image);
+				dst[te]->setID(image_id);
+			}
+			else
+			{
+				// no entry found in the destination map, we need to create a new Local Texture Object
+				dst[te] = new LLLocalTextureObject(image, image_id);
+			}
+
+			if( lto )
+			{
+				// If we pulled values from a Local Texture Object in the source map, make sure the proper flags are set in the new (or updated) entry in the destination map.
+				dst[te]->setBakedReady(lto->getBakedReady());
+				dst[te]->setDiscard(lto->getDiscard());
+			}
+		}
+	}
+}
+
+void LLWearable::destroyTextures()
+{
+	for( te_map_t::iterator iter = mTEMap.begin(); iter != mTEMap.end(); ++iter )
+	{
+		LLLocalTextureObject *lto = iter->second;
+		delete lto;
+	}
+	mTEMap.clear();
+	for( te_map_t::iterator iter = mSavedTEMap.begin(); iter != mSavedTEMap.end(); ++iter )
+	{
+		LLLocalTextureObject *lto = iter->second;
+		delete lto;
+	}
+	mSavedTEMap.clear();
+}
+
 void LLWearable::addVisualParam(LLVisualParam *param)
 {
 	if( mVisualParamIndexMap[param->getID()] )
diff --git a/indra/llappearance/llwearable.h b/indra/llappearance/llwearable.h
index b8bbf82a6e0..bc73ed4d8c5 100644
--- a/indra/llappearance/llwearable.h
+++ b/indra/llappearance/llwearable.h
@@ -27,6 +27,7 @@
 #ifndef LL_LLWEARABLE_H
 #define LL_LLWEARABLE_H
 
+#include "llavatarappearancedefines.h"
 #include "llextendedstatus.h"
 #include "llpermissions.h"
 #include "llsaleinfo.h"
@@ -79,14 +80,19 @@ class LLWearable
 		SUCCESS,
 		BAD_HEADER
 	};
-	virtual BOOL				exportFile(LLFILE* file) const;
-	virtual EImportResult		importFile(LLFILE* file, LLAvatarAppearance* avatarp);
-
-
+	BOOL				exportFile(LLFILE* file) const;
+	EImportResult		importFile(LLFILE* file, LLAvatarAppearance* avatarp );
+	virtual BOOL				exportStream( std::ostream& output_stream ) const;
+	virtual EImportResult		importStream( std::istream& input_stream, LLAvatarAppearance* avatarp );
 
 	static void			setCurrentDefinitionVersion( S32 version ) { LLWearable::sCurrentDefinitionVersion = version; }
+	virtual LLUUID		getDefaultTextureImageID(LLAvatarAppearanceDefines::ETextureIndex index) const = 0;
+
+	LLLocalTextureObject* getLocalTextureObject(S32 index);
+	const LLLocalTextureObject* getLocalTextureObject(S32 index) const;
+	std::vector<LLLocalTextureObject*> getLocalTextureListSeq();
 
-	virtual LLLocalTextureObject* getLocalTextureObject(S32 index) = 0;
+	void				setLocalTextureObject(S32 index, LLLocalTextureObject &lto);
 	void				addVisualParam(LLVisualParam *param);
 	void 				setVisualParamWeight(S32 index, F32 value, BOOL upload_bake);
 	F32					getVisualParamWeight(S32 index) const;
@@ -97,6 +103,9 @@ class LLWearable
 	LLColor4			getClothesColor(S32 te) const;
 	void 				setClothesColor( S32 te, const LLColor4& new_color, BOOL upload_bake );
 
+	virtual void		revertValues();
+	virtual void		saveValues();
+
 	// Something happened that requires the wearable to be updated (e.g. worn/unworn).
 	virtual void		setUpdated() const = 0;
 
@@ -104,6 +113,9 @@ class LLWearable
 	virtual void		addToBakedTextureHash(LLMD5& hash) const = 0;
 
 protected:
+	typedef std::map<S32, LLLocalTextureObject*> te_map_t;
+	void				syncImages(te_map_t &src, te_map_t &dst);
+	void				destroyTextures();
 	void			 	createVisualParams(LLAvatarAppearance *avatarp);
 	void 				createLayers(S32 te, LLAvatarAppearance *avatarp);
 
@@ -121,7 +133,6 @@ class LLWearable
 	typedef std::map<S32, LLVisualParam *>    visual_param_index_map_t;
 	visual_param_index_map_t mVisualParamIndexMap;
 
-	typedef std::map<S32, LLLocalTextureObject*> te_map_t;
 	te_map_t mTEMap;				// maps TE to LocalTextureObject
 	te_map_t mSavedTEMap;			// last saved version of TEMap
 };
diff --git a/indra/llappearance/llwearabledata.h b/indra/llappearance/llwearabledata.h
index 2931424131f..379384a989c 100644
--- a/indra/llappearance/llwearabledata.h
+++ b/indra/llappearance/llwearabledata.h
@@ -28,6 +28,7 @@
 #define LL_WEARABLEDATA_H
 
 #include "llavatarappearancedefines.h"
+#include "llwearable.h"
 #include "llerror.h"
 
 class LLAvatarAppearance;
diff --git a/indra/llcommon/lldictionary.h b/indra/llcommon/lldictionary.h
index bc3bc3e74ac..c752859a366 100644
--- a/indra/llcommon/lldictionary.h
+++ b/indra/llcommon/lldictionary.h
@@ -30,6 +30,8 @@
 #include <map>
 #include <string>
 
+#include "llerror.h"
+
 struct LL_COMMON_API LLDictionaryEntry
 {
 	LLDictionaryEntry(const std::string &name);
diff --git a/indra/llcommon/llfile.cpp b/indra/llcommon/llfile.cpp
index c51d042a3d3..38b0dfdaf17 100644
--- a/indra/llcommon/llfile.cpp
+++ b/indra/llcommon/llfile.cpp
@@ -56,6 +56,8 @@ std::string strerr(int errn)
 	return buffer;
 }
 
+typedef std::basic_ios<char,std::char_traits < char > > _Myios;
+
 #else
 // On Posix we want to call strerror_r(), but alarmingly, there are two
 // different variants. The one that returns int always populates the passed
@@ -324,9 +326,10 @@ const char *LLFile::tmpdir()
 
 /***************** Modified file stream created to overcome the incorrect behaviour of posix fopen in windows *******************/
 
-#if USE_LLFILESTREAMS
+#if LL_WINDOWS
 
-LLFILE *	LLFile::_Fiopen(const std::string& filename, std::ios::openmode mode,int)	// protection currently unused
+LLFILE *	LLFile::_Fiopen(const std::string& filename, 
+		std::ios::openmode mode,int)	// protection currently unused
 {	// open a file
 	static const char *mods[] =
 	{	// fopen mode strings corresponding to valid[i]
@@ -385,117 +388,677 @@ LLFILE *	LLFile::_Fiopen(const std::string& filename, std::ios::openmode mode,in
 	return (0);
 }
 
-/************** input file stream ********************************/
+#endif /* LL_WINDOWS */
 
-void llifstream::close()
-{	// close the C stream
-	if (_Filebuffer && _Filebuffer->close() == 0)
+/************** llstdio file buffer ********************************/
+
+
+//llstdio_filebuf* llstdio_filebuf::open(const char *_Filename,
+//	ios_base::openmode _Mode)
+//{
+//#if LL_WINDOWS
+//	_Filet *_File;
+//	if (is_open() || (_File = LLFILE::_Fiopen(_Filename, _Mode)) == 0)
+//		return (0);	// open failed
+//
+//	_Init(_File, _Openfl);
+//	_Initcvt(&_USE(_Mysb::getloc(), _Cvt));
+//	return (this);	// open succeeded
+//#else
+//	std::filebuf* _file = std::filebuf::open(_Filename, _Mode);
+//	if (NULL == _file) return NULL;
+//	return this;
+//#endif
+//}
+
+llstdio_filebuf::int_type llstdio_filebuf::overflow(llstdio_filebuf::int_type __c)
+{
+	int_type __ret = traits_type::eof();
+	const bool __testeof = traits_type::eq_int_type(__c, __ret);
+	const bool __testout = _M_mode & ios_base::out;
+	if (__testout && !_M_reading)
 	{
-		_Myios::setstate(ios_base::failbit);	/*Flawfinder: ignore*/
+		if (this->pbase() < this->pptr())
+		{
+			// If appropriate, append the overflow char.
+			if (!__testeof)
+			{
+				*this->pptr() = traits_type::to_char_type(__c);
+				this->pbump(1);
+			}
+
+			// Convert pending sequence to external representation,
+			// and output.
+			if (_convert_to_external(this->pbase(),
+					 this->pptr() - this->pbase()))
+			{
+				_M_set_buffer(0);
+				__ret = traits_type::not_eof(__c);
+			}
+		}
+		else if (_M_buf_size > 1)
+		{
+			// Overflow in 'uncommitted' mode: set _M_writing, set
+			// the buffer to the initial 'write' mode, and put __c
+			// into the buffer.
+			_M_set_buffer(0);
+			_M_writing = true;
+			if (!__testeof)
+			{
+				*this->pptr() = traits_type::to_char_type(__c);
+				this->pbump(1);
+			}
+			__ret = traits_type::not_eof(__c);
+		}
+		else
+		{
+			// Unbuffered.
+			char_type __conv = traits_type::to_char_type(__c);
+			if (__testeof || _convert_to_external(&__conv, 1))
+			{
+				_M_writing = true;
+				__ret = traits_type::not_eof(__c);
+			}
+		}
 	}
+	return __ret;
 }
 
-void llifstream::open(const std::string& _Filename,	/* Flawfinder: ignore */
-	ios_base::openmode _Mode,
-	int _Prot)
-{	// open a C stream with specified mode
+bool llstdio_filebuf::_convert_to_external(char_type* __ibuf,
+						std::streamsize __ilen)
+{
+	// Sizes of external and pending output.
+	streamsize __elen;
+	streamsize __plen;
+	if (__check_facet(_M_codecvt).always_noconv())
+	{
+		//__elen = _M_file.xsputn(reinterpret_cast<char*>(__ibuf), __ilen);
+		__elen = fwrite(reinterpret_cast<void*>(__ibuf), 1,
+						__ilen, _M_file.file());
+		__plen = __ilen;
+	}
+	else
+	{
+		// Worst-case number of external bytes needed.
+		// XXX Not done encoding() == -1.
+		streamsize __blen = __ilen * _M_codecvt->max_length();
+		char* __buf = static_cast<char*>(__builtin_alloca(__blen));
+
+		char* __bend;
+		const char_type* __iend;
+		codecvt_base::result __r;
+		__r = _M_codecvt->out(_M_state_cur, __ibuf, __ibuf + __ilen,
+				__iend, __buf, __buf + __blen, __bend);
 
-	LLFILE* filep = LLFile::_Fiopen(_Filename,_Mode | ios_base::in, _Prot);
-	if(filep == NULL)
+		if (__r == codecvt_base::ok || __r == codecvt_base::partial)
+			__blen = __bend - __buf;
+		else if (__r == codecvt_base::noconv)
+		{
+			// Same as the always_noconv case above.
+			__buf = reinterpret_cast<char*>(__ibuf);
+			__blen = __ilen;
+		}
+		else
+			__throw_ios_failure(__N("llstdio_filebuf::_convert_to_external "
+									"conversion error"));
+  
+		//__elen = _M_file.xsputn(__buf, __blen);
+		__elen = fwrite(__buf, 1, __blen, _M_file.file());
+		__plen = __blen;
+
+		// Try once more for partial conversions.
+		if (__r == codecvt_base::partial && __elen == __plen)
+		{
+			const char_type* __iresume = __iend;
+			streamsize __rlen = this->pptr() - __iend;
+			__r = _M_codecvt->out(_M_state_cur, __iresume,
+					__iresume + __rlen, __iend, __buf,
+					__buf + __blen, __bend);
+			if (__r != codecvt_base::error)
+			{
+				__rlen = __bend - __buf;
+				//__elen = _M_file.xsputn(__buf, __rlen);
+				__elen = fwrite(__buf, 1, __rlen, _M_file.file());
+				__plen = __rlen;
+			}
+			else
+			{
+				__throw_ios_failure(__N("llstdio_filebuf::_convert_to_external "
+										"conversion error"));
+			}
+		}
+	}
+	return __elen == __plen;
+}
+
+llstdio_filebuf::int_type llstdio_filebuf::underflow()
+{
+	int_type __ret = traits_type::eof();
+	const bool __testin = _M_mode & ios_base::in;
+	if (__testin)
 	{
-		_Myios::setstate(ios_base::failbit);	/*Flawfinder: ignore*/
-		return;
+		if (_M_writing)
+		{
+			if (overflow() == traits_type::eof())
+			return __ret;
+			//_M_set_buffer(-1);
+			//_M_writing = false;
+		}
+		// Check for pback madness, and if so switch back to the
+		// normal buffers and jet outta here before expensive
+		// fileops happen...
+		_M_destroy_pback();
+
+		if (this->gptr() < this->egptr())
+			return traits_type::to_int_type(*this->gptr());
+
+		// Get and convert input sequence.
+		const size_t __buflen = _M_buf_size > 1 ? _M_buf_size - 1 : 1;
+
+		// Will be set to true if ::fread() returns 0 indicating EOF.
+		bool __got_eof = false;
+		// Number of internal characters produced.
+		streamsize __ilen = 0;
+		codecvt_base::result __r = codecvt_base::ok;
+		if (__check_facet(_M_codecvt).always_noconv())
+		{
+			//__ilen = _M_file.xsgetn(reinterpret_cast<char*>(this->eback()),
+			//			__buflen);
+			__ilen = fread(reinterpret_cast<void*>(this->eback()), 1,
+						__buflen, _M_file.file());
+			if (__ilen == 0)
+				__got_eof = true;
+		}
+		else
+	    {
+			// Worst-case number of external bytes.
+			// XXX Not done encoding() == -1.
+			const int __enc = _M_codecvt->encoding();
+			streamsize __blen; // Minimum buffer size.
+			streamsize __rlen; // Number of chars to read.
+			if (__enc > 0)
+				__blen = __rlen = __buflen * __enc;
+			else
+			{
+				__blen = __buflen + _M_codecvt->max_length() - 1;
+				__rlen = __buflen;
+			}
+			const streamsize __remainder = _M_ext_end - _M_ext_next;
+			__rlen = __rlen > __remainder ? __rlen - __remainder : 0;
+
+			// An imbue in 'read' mode implies first converting the external
+			// chars already present.
+			if (_M_reading && this->egptr() == this->eback() && __remainder)
+				__rlen = 0;
+
+			// Allocate buffer if necessary and move unconverted
+			// bytes to front.
+			if (_M_ext_buf_size < __blen)
+			{
+				char* __buf = new char[__blen];
+				if (__remainder)
+					__builtin_memcpy(__buf, _M_ext_next, __remainder);
+
+				delete [] _M_ext_buf;
+				_M_ext_buf = __buf;
+				_M_ext_buf_size = __blen;
+			}
+			else if (__remainder)
+				__builtin_memmove(_M_ext_buf, _M_ext_next, __remainder);
+
+			_M_ext_next = _M_ext_buf;
+			_M_ext_end = _M_ext_buf + __remainder;
+			_M_state_last = _M_state_cur;
+
+			do
+			{
+				if (__rlen > 0)
+				{
+					// Sanity check!
+					// This may fail if the return value of
+					// codecvt::max_length() is bogus.
+					if (_M_ext_end - _M_ext_buf + __rlen > _M_ext_buf_size)
+					{
+						__throw_ios_failure(__N("llstdio_filebuf::underflow "
+							"codecvt::max_length() "
+							"is not valid"));
+					}
+					//streamsize __elen = _M_file.xsgetn(_M_ext_end, __rlen);
+					streamsize __elen = fread(_M_ext_end, 1,
+						__rlen, _M_file.file());
+					if (__elen == 0)
+						__got_eof = true;
+					else if (__elen == -1)
+					break;
+					//_M_ext_end += __elen;
+				}
+
+				char_type* __iend = this->eback();
+				if (_M_ext_next < _M_ext_end)
+				{
+					__r = _M_codecvt->in(_M_state_cur, _M_ext_next,
+							_M_ext_end, _M_ext_next,
+							this->eback(),
+							this->eback() + __buflen, __iend);
+				}
+				if (__r == codecvt_base::noconv)
+				{
+					size_t __avail = _M_ext_end - _M_ext_buf;
+					__ilen = std::min(__avail, __buflen);
+					traits_type::copy(this->eback(),
+						reinterpret_cast<char_type*>
+						(_M_ext_buf), __ilen);
+					_M_ext_next = _M_ext_buf + __ilen;
+				}
+				else
+					__ilen = __iend - this->eback();
+
+				// _M_codecvt->in may return error while __ilen > 0: this is
+				// ok, and actually occurs in case of mixed encodings (e.g.,
+				// XML files).
+				if (__r == codecvt_base::error)
+					break;
+
+				__rlen = 1;
+			} while (__ilen == 0 && !__got_eof);
+		}
+
+		if (__ilen > 0)
+		{
+			_M_set_buffer(__ilen);
+			_M_reading = true;
+			__ret = traits_type::to_int_type(*this->gptr());
+		}
+		else if (__got_eof)
+		{
+			// If the actual end of file is reached, set 'uncommitted'
+			// mode, thus allowing an immediate write without an
+			// intervening seek.
+			_M_set_buffer(-1);
+			_M_reading = false;
+			// However, reaching it while looping on partial means that
+			// the file has got an incomplete character.
+			if (__r == codecvt_base::partial)
+				__throw_ios_failure(__N("llstdio_filebuf::underflow "
+					"incomplete character in file"));
+		}
+		else if (__r == codecvt_base::error)
+			__throw_ios_failure(__N("llstdio_filebuf::underflow "
+					"invalid byte sequence in file"));
+		else
+			__throw_ios_failure(__N("llstdio_filebuf::underflow "
+					"error reading the file"));
 	}
-	llassert(_Filebuffer == NULL);
-	_Filebuffer = new _Myfb(filep);
-	_ShouldClose = true;
-	_Myios::init(_Filebuffer);
+	return __ret;
 }
 
-bool llifstream::is_open() const
-{	// test if C stream has been opened
-	if(_Filebuffer)
-		return (_Filebuffer->is_open());
-	return false;
+std::streamsize llstdio_filebuf::xsgetn(char_type* __s, std::streamsize __n)
+{
+	// Clear out pback buffer before going on to the real deal...
+	streamsize __ret = 0;
+	if (_M_pback_init)
+	{
+		if (__n > 0 && this->gptr() == this->eback())
+		{
+			*__s++ = *this->gptr();
+			this->gbump(1);
+			__ret = 1;
+			--__n;
+		}
+		_M_destroy_pback();
+	}
+       
+	// Optimization in the always_noconv() case, to be generalized in the
+	// future: when __n > __buflen we read directly instead of using the
+	// buffer repeatedly.
+	const bool __testin = _M_mode & ios_base::in;
+	const streamsize __buflen = _M_buf_size > 1 ? _M_buf_size - 1 : 1;
+
+	if (__n > __buflen && __check_facet(_M_codecvt).always_noconv()
+		&& __testin && !_M_writing)
+	{
+		// First, copy the chars already present in the buffer.
+		const streamsize __avail = this->egptr() - this->gptr();
+		if (__avail != 0)
+		{
+			if (__avail == 1)
+				*__s = *this->gptr();
+			else
+				traits_type::copy(__s, this->gptr(), __avail);
+			__s += __avail;
+			this->gbump(__avail);
+			__ret += __avail;
+			__n -= __avail;
+		}
+
+		// Need to loop in case of short reads (relatively common
+		// with pipes).
+		streamsize __len;
+		for (;;)
+		{
+			//__len = _M_file.xsgetn(reinterpret_cast<char*>(__s), __n);
+			__len = fread(reinterpret_cast<void*>(__s), 1, 
+						__n, _M_file.file());
+			if (__len == -1)
+				__throw_ios_failure(__N("llstdio_filebuf::xsgetn "
+										"error reading the file"));
+			if (__len == 0)
+				break;
+
+			__n -= __len;
+			__ret += __len;
+			if (__n == 0)
+				break;
+
+			__s += __len;
+		}
+
+		if (__n == 0)
+		{
+			_M_set_buffer(0);
+			_M_reading = true;
+		}
+		else if (__len == 0)
+		{
+			// If end of file is reached, set 'uncommitted'
+			// mode, thus allowing an immediate write without
+			// an intervening seek.
+			_M_set_buffer(-1);
+			_M_reading = false;
+		}
+	}
+	else
+		__ret += __streambuf_type::xsgetn(__s, __n);
+
+	return __ret;
 }
-llifstream::~llifstream()
+
+std::streamsize llstdio_filebuf::xsputn(char_type* __s, std::streamsize __n)
 {
-	if (_ShouldClose)
+	// Optimization in the always_noconv() case, to be generalized in the
+	// future: when __n is sufficiently large we write directly instead of
+	// using the buffer.
+	streamsize __ret = 0;
+	const bool __testout = _M_mode & ios_base::out;
+	if (__check_facet(_M_codecvt).always_noconv()
+		&& __testout && !_M_reading)
 	{
-		close();
+		// Measurement would reveal the best choice.
+		const streamsize __chunk = 1ul << 10;
+		streamsize __bufavail = this->epptr() - this->pptr();
+
+		// Don't mistake 'uncommitted' mode buffered with unbuffered.
+		if (!_M_writing && _M_buf_size > 1)
+			__bufavail = _M_buf_size - 1;
+
+		const streamsize __limit = std::min(__chunk, __bufavail);
+		if (__n >= __limit)
+		{
+			const streamsize __buffill = this->pptr() - this->pbase();
+			const char* __buf = reinterpret_cast<const char*>(this->pbase());
+			//__ret = _M_file.xsputn_2(__buf, __buffill,
+			//			reinterpret_cast<const char*>(__s), __n);
+			if (__buffill)
+			{
+				__ret = fwrite(__buf, 1, __buffill, _M_file.file());
+			}
+			if (__ret == __buffill)
+			{
+				__ret += fwrite(reinterpret_cast<const char*>(__s), 1,
+								__n, _M_file.file());
+			}
+			if (__ret == __buffill + __n)
+			{
+				_M_set_buffer(0);
+				_M_writing = true;
+			}
+			if (__ret > __buffill)
+				__ret -= __buffill;
+			else
+				__ret = 0;
+		}
+		else
+			__ret = __streambuf_type::xsputn(__s, __n);
 	}
-	delete _Filebuffer;
+	else
+		__ret = __streambuf_type::xsputn(__s, __n);
+    return __ret;
 }
 
-llifstream::llifstream(const std::string& _Filename,
-	ios_base::openmode _Mode,
-	int _Prot)
-	: std::basic_istream< char , std::char_traits< char > >(NULL,true),_Filebuffer(NULL),_ShouldClose(false)
+int llstdio_filebuf::sync()
+{
+	return (_M_file.sync() == 0 ? 0 : -1);
+}
 
-{	// construct with named file and specified mode
-	open(_Filename, _Mode | ios_base::in, _Prot);	/* Flawfinder: ignore */
+/************** input file stream ********************************/
+
+
+llifstream::llifstream() : _M_filebuf(),
+#if LL_WINDOWS
+	std::istream(&_M_filebuf) {}
+#else
+	std::istream()
+{
+	this->init(&_M_filebuf);
+}
+#endif
+
+// explicit
+llifstream::llifstream(const std::string& _Filename, 
+		ios_base::openmode _Mode) : _M_filebuf(),
+#if LL_WINDOWS
+	std::istream(&_M_filebuf)
+{
+	if (_M_filebuf.open(_Filename.c_str(), _Mode | ios_base::in) == 0)
+	{
+		_Myios::setstate(ios_base::failbit);
+	}
+}
+#else
+	std::istream()
+{
+	this->init(&_M_filebuf);
+	this->open(_Filename.c_str(), _Mode | ios_base::in);
 }
+#endif
 
+// explicit
+llifstream::llifstream(const char* _Filename, 
+		ios_base::openmode _Mode) : _M_filebuf(),
+#if LL_WINDOWS
+	std::istream(&_M_filebuf)
+{
+	if (_M_filebuf.open(_Filename, _Mode | ios_base::in) == 0)
+	{
+		_Myios::setstate(ios_base::failbit);
+	}
+}
+#else
+	std::istream()
+{
+	this->init(&_M_filebuf);
+	this->open(_Filename, _Mode | ios_base::in);
+}
+#endif
 
-/************** output file stream ********************************/
 
-bool llofstream::is_open() const
+// explicit
+llifstream::llifstream(_Filet *_File,
+		ios_base::openmode _Mode, size_t _Size) :
+	_M_filebuf(_File, _Mode, _Size),
+#if LL_WINDOWS
+	std::istream(&_M_filebuf) {}
+#else
+	std::istream()
+{
+	this->init(&_M_filebuf);
+}
+#endif
+
+#if LL_WINDOWS
+// explicit
+llifstream::llifstream(int __fd,
+		ios_base::openmode _Mode, size_t _Size) :
+	_M_filebuf(__fd, _Mode, _Size),
+	std::istream()
+{
+	this->init(&_M_filebuf);
+}
+#endif
+
+bool llifstream::is_open() const
 {	// test if C stream has been opened
-	if(_Filebuffer)
-		return (_Filebuffer->is_open());
-	return false;
+	return _M_filebuf.is_open();
 }
 
-void llofstream::open(const std::string& _Filename,	/* Flawfinder: ignore */
-	ios_base::openmode _Mode,
-	int _Prot)
+void llifstream::open(const char* _Filename, ios_base::openmode _Mode)
 {	// open a C stream with specified mode
-
-	LLFILE* filep = LLFile::_Fiopen(_Filename,_Mode | ios_base::out, _Prot);
-	if(filep == NULL)
+	if (_M_filebuf.open(_Filename, _Mode | ios_base::in) == 0)
+#if LL_WINDOWS
 	{
-		_Myios::setstate(ios_base::failbit);	/*Flawfinder: ignore*/
-		return;
+		_Myios::setstate(ios_base::failbit);
 	}
-	llassert(_Filebuffer==NULL);
-	_Filebuffer = new _Myfb(filep);
-	_ShouldClose = true;
-	_Myios::init(_Filebuffer);
+	else
+	{
+		_Myios::clear();
+	}
+#else
+	{
+		this->setstate(ios_base::failbit);
+	}
+	else
+	{
+		this->clear();
+	}
+#endif
 }
 
-void llofstream::close()
+void llifstream::close()
 {	// close the C stream
-	if(is_open())
+	if (_M_filebuf.close() == 0)
 	{
-		if (_Filebuffer->close() == 0)
-		{
-			_Myios::setstate(ios_base::failbit);	/*Flawfinder: ignore*/
-		}
-		delete _Filebuffer;
-		_Filebuffer = NULL;
-		_ShouldClose = false;
+#if LL_WINDOWS
+		_Myios::setstate(ios_base::failbit);
+#else
+		this->setstate(ios_base::failbit);
+#endif
 	}
 }
 
+
+/************** output file stream ********************************/
+
+
+llofstream::llofstream() : _M_filebuf(),
+#if LL_WINDOWS
+	std::ostream(&_M_filebuf) {}
+#else
+	std::ostream()
+{
+	this->init(&_M_filebuf);
+}
+#endif
+
+// explicit
 llofstream::llofstream(const std::string& _Filename,
-	std::ios_base::openmode _Mode,
-	int _Prot)
-		: std::basic_ostream<char,std::char_traits < char > >(NULL,true),_Filebuffer(NULL),_ShouldClose(false)
-{	// construct with named file and specified mode
-	open(_Filename, _Mode , _Prot);	/* Flawfinder: ignore */
+		ios_base::openmode _Mode) : _M_filebuf(),
+#if LL_WINDOWS
+	std::ostream(&_M_filebuf)
+{
+	if (_M_filebuf.open(_Filename.c_str(), _Mode | ios_base::out) == 0)
+	{
+		_Myios::setstate(ios_base::failbit);
+	}
+}
+#else
+	std::ostream()
+{
+	this->init(&_M_filebuf);
+	this->open(_Filename.c_str(), _Mode | ios_base::out);
+}
+#endif
+
+// explicit
+llofstream::llofstream(const char* _Filename,
+		ios_base::openmode _Mode) : _M_filebuf(),
+#if LL_WINDOWS
+	std::ostream(&_M_filebuf)
+{
+	if (_M_filebuf.open(_Filename, _Mode | ios_base::out) == 0)
+	{
+		_Myios::setstate(ios_base::failbit);
+	}
+}
+#else
+	std::ostream()
+{
+	this->init(&_M_filebuf);
+	this->open(_Filename, _Mode | ios_base::out);
+}
+#endif
+
+// explicit
+llofstream::llofstream(_Filet *_File,
+			ios_base::openmode _Mode, size_t _Size) :
+	_M_filebuf(_File, _Mode, _Size),
+#if LL_WINDOWS
+	std::ostream(&_M_filebuf) {}
+#else
+	std::ostream()
+{
+	this->init(&_M_filebuf);
 }
+#endif
 
-llofstream::~llofstream()
+#if LL_WINDOWS
+// explicit
+llofstream::llofstream(int __fd,
+			ios_base::openmode _Mode, size_t _Size) :
+	_M_filebuf(__fd, _Mode, _Size),
+	std::ostream()
 {
-	// destroy the object
-	if (_ShouldClose)
+	this->init(&_M_filebuf);
+}
+#endif
+
+bool llofstream::is_open() const
+{	// test if C stream has been opened
+	return _M_filebuf.is_open();
+}
+
+void llofstream::open(const char* _Filename, ios_base::openmode _Mode)
+{	// open a C stream with specified mode
+	if (_M_filebuf.open(_Filename, _Mode | ios_base::out) == 0)
+#if LL_WINDOWS
+	{
+		_Myios::setstate(ios_base::failbit);
+	}
+	else
 	{
-		close();
+		_Myios::clear();
 	}
-	delete _Filebuffer;
+#else
+	{
+		this->setstate(ios_base::failbit);
+	}
+	else
+	{
+		this->clear();
+	}
+#endif
 }
 
-#endif // #if USE_LLFILESTREAMS
+void llofstream::close()
+{	// close the C stream
+	if (_M_filebuf.close() == 0)
+	{
+#if LL_WINDOWS
+		_Myios::setstate(ios_base::failbit);
+#else
+		this->setstate(ios_base::failbit);
+#endif
+	}
+}
 
 /************** helper functions ********************************/
 
diff --git a/indra/llcommon/llfile.h b/indra/llcommon/llfile.h
index dd7d36513a0..7049ab13969 100644
--- a/indra/llcommon/llfile.h
+++ b/indra/llcommon/llfile.h
@@ -35,16 +35,10 @@
  * Attempts to mostly mirror the POSIX style IO functions.
  */
 
-typedef FILE	LLFILE;
+typedef FILE LLFILE;
 
 #include <fstream>
-
-#ifdef LL_WINDOWS
-#define	USE_LLFILESTREAMS	1
-#else
-#define	USE_LLFILESTREAMS	0
-#endif
-
+#include <bits/postypes.h>
 #include <sys/stat.h>
 
 #if LL_WINDOWS
@@ -52,6 +46,7 @@ typedef FILE	LLFILE;
 typedef struct _stat	llstat;
 #else
 typedef struct stat		llstat;
+#include <ext/stdio_filebuf.h>
 #endif
 
 #ifndef S_ISREG
@@ -83,142 +78,342 @@ class LL_COMMON_API LLFile
 	static	int		stat(const std::string&	filename,llstat*	file_status);
 	static	bool	isdir(const std::string&	filename);
 	static	bool	isfile(const std::string&	filename);
-	static	LLFILE *	_Fiopen(const std::string& filename, std::ios::openmode mode,int);	// protection currently unused
+	static	LLFILE *	_Fiopen(const std::string& filename, 
+			std::ios::openmode mode);
 
 	static  const char * tmpdir();
 };
 
+/**
+ *  @brief Provides a layer of compatibility for C/POSIX.
+ *
+ *  This is taken from both the GNU __gnu_cxx::stdio_filebuf extension and 
+ *  VC's basic_filebuf implementation.
+ *  This file buffer provides extensions for working with standard C FILE*'s 
+ *  and POSIX file descriptors for platforms that support this.
+*/
+namespace
+{
+#if LL_WINDOWS
+typedef std::filebuf						_Myfb;
+#else
+typedef  __gnu_cxx::stdio_filebuf< char >	_Myfb;
+typedef std::__c_file						_Filet;
+#endif /* LL_WINDOWS */
+}
 
-#if USE_LLFILESTREAMS
-
-class LL_COMMON_API llifstream	:	public	std::basic_istream < char , std::char_traits < char > >
+class LL_COMMON_API llstdio_filebuf : public _Myfb
 {
-	// input stream associated with a C stream
 public:
-	typedef std::basic_ifstream<char,std::char_traits < char > > _Myt;
-	typedef std::basic_filebuf<char,std::char_traits< char > > _Myfb;
-	typedef std::basic_ios<char,std::char_traits< char > > _Myios;
-
-	llifstream()
-		: std::basic_istream<char,std::char_traits< char > >(NULL,true),_Filebuffer(NULL),_ShouldClose(false)
-	{	// construct unopened
-	}
+	/**
+	 * deferred initialization / destruction
+	*/
+	llstdio_filebuf() : _Myfb() {}
+	virtual ~llstdio_filebuf() {} 
+
+	/**
+	 *  @param  f  An open @c FILE*.
+	 *  @param  mode  Same meaning as in a standard filebuf.
+	 *  @param  size  Optimal or preferred size of internal buffer, in chars.
+	 *                Defaults to system's @c BUFSIZ.
+	 *
+	 *  This constructor associates a file stream buffer with an open
+	 *  C @c FILE*.  The @c FILE* will not be automatically closed when the
+	 *  stdio_filebuf is closed/destroyed.
+	*/
+	llstdio_filebuf(_Filet* __f, std::ios_base::openmode __mode,
+		    //size_t __size = static_cast<size_t>(BUFSIZ)) :
+		    size_t __size = static_cast<size_t>(1)) :
+#if LL_WINDOWS
+		_Myfb(__f) {}
+#else
+		_Myfb(__f, __mode, __size) {}
+#endif
 
-	explicit llifstream(const std::string& _Filename,
-		ios_base::openmode _Mode = ios_base::in,
-		int _Prot = (int)ios_base::_Openprot);
-
-	explicit llifstream(_Filet *_File)
-		: std::basic_istream<char,std::char_traits< char > >(NULL,true),
-			_Filebuffer(new _Myfb(_File)),
-			_ShouldClose(false)
-	{	// construct with specified C stream
-	}
-	virtual ~llifstream();
-
-	_Myfb *rdbuf() const
-	{	// return pointer to file buffer
-		return _Filebuffer;
-	}
-	bool is_open() const;
-	void open(const std::string& _Filename,	/* Flawfinder: ignore */
-		ios_base::openmode _Mode = ios_base::in,
-		int _Prot = (int)ios_base::_Openprot);	
-	void close();
+	/**
+	 *  @brief  Opens an external file.
+	 *  @param  s  The name of the file.
+	 *  @param  mode  The open mode flags.
+	 *  @return  @c this on success, NULL on failure
+	 *
+	 *  If a file is already open, this function immediately fails.
+	 *  Otherwise it tries to open the file named @a s using the flags
+	 *  given in @a mode.
+	*/
+	//llstdio_filebuf* open(const char *_Filename,
+	//		std::ios_base::openmode _Mode);
+
+	/**
+	 *  @param  fd  An open file descriptor.
+	 *  @param  mode  Same meaning as in a standard filebuf.
+	 *  @param  size  Optimal or preferred size of internal buffer, in chars.
+	 *
+	 *  This constructor associates a file stream buffer with an open
+	 *  POSIX file descriptor. The file descriptor will be automatically
+	 *  closed when the stdio_filebuf is closed/destroyed.
+	*/
+#if !LL_WINDOWS
+	llstdio_filebuf(int __fd, std::ios_base::openmode __mode,
+		//size_t __size = static_cast<size_t>(BUFSIZ)) :
+		size_t __size = static_cast<size_t>(1)) :
+		_Myfb(__fd, __mode, __size) {}
+#endif
 
-private:
-	_Myfb* _Filebuffer;	// the file buffer
-	bool _ShouldClose;
+// *TODO: Seek the underlying c stream for better cross-platform compatibility?
+#if !LL_WINDOWS
+protected:
+	/** underflow() and uflow() functions are called to get the next
+	 *  character from the real input source when the buffer is empty.
+	 *  Buffered input uses underflow()
+	*/
+	/*virtual*/ int_type underflow();
+
+	/*  Convert internal byte sequence to external, char-based
+	 * sequence via codecvt.
+	*/
+	bool _convert_to_external(char_type*, std::streamsize);
+
+	/** The overflow() function is called to transfer characters to the
+	 *  real output destination when the buffer is full. A call to
+	 *  overflow(c) outputs the contents of the buffer plus the
+	 *  character c.
+	 *  Consume some sequence of the characters in the pending sequence.
+	*/
+	/*virtual*/ int_type overflow(int_type __c = traits_type::eof());
+
+	/** sync() flushes the underlying @c FILE* stream.
+	*/
+	/*virtual*/ int sync();
+
+	std::streamsize xsgetn(char_type*, std::streamsize);
+	std::streamsize xsputn(char_type*, std::streamsize);
+#endif
 };
 
 
-class LL_COMMON_API llofstream	:	public	std::basic_ostream< char , std::char_traits < char > >
+/**
+ *  @brief  Controlling input for files.
+ *
+ *  This class supports reading from named files, using the inherited
+ *  functions from std::basic_istream.  To control the associated
+ *  sequence, an instance of std::basic_filebuf (or a platform-specific derivative)
+ *  which allows construction using a pre-exisintg file stream buffer. 
+ *  We refer to this std::basic_filebuf (or derivative) as @c sb.
+*/
+class LL_COMMON_API llifstream	:	public	std::istream
 {
+	// input stream associated with a C stream
 public:
-	typedef std::basic_ostream< char , std::char_traits < char > > _Myt;
-	typedef std::basic_filebuf< char , std::char_traits < char > > _Myfb;
-	typedef std::basic_ios<char,std::char_traits < char > > _Myios;
-
-	llofstream()
-		: std::basic_ostream<char,std::char_traits < char > >(NULL,true),_Filebuffer(NULL),_ShouldClose(false)
-	{	// construct unopened
-	}
-
-	explicit llofstream(const std::string& _Filename,
-		std::ios_base::openmode _Mode = ios_base::out,
-		int _Prot = (int)std::ios_base::_Openprot);
-	
-
-	explicit llofstream(_Filet *_File)
-		: std::basic_ostream<char,std::char_traits < char > >(NULL,true),
-			_Filebuffer(new _Myfb(_File)),//_File)
-			_ShouldClose(false)
-	{	// construct with specified C stream
-	}
-
-	virtual ~llofstream();
-
-	_Myfb *rdbuf() const
-	{	// return pointer to file buffer
-		return _Filebuffer;
-	}
+	// Constructors:
+	/**
+	 *  @brief  Default constructor.
+	 *
+	 *  Initializes @c sb using its default constructor, and passes
+	 *  @c &sb to the base class initializer.  Does not open any files
+	 *  (you haven't given it a filename to open).
+	*/
+	llifstream();
+
+	/**
+	 *  @brief  Create an input file stream.
+	 *  @param  Filename  String specifying the filename.
+	 *  @param  Mode  Open file in specified mode (see std::ios_base).
+	 *
+     *  @c ios_base::in is automatically included in @a mode.
+	*/
+	explicit llifstream(const std::string& _Filename,
+			ios_base::openmode _Mode = ios_base::in);
+	explicit llifstream(const char* _Filename,
+			ios_base::openmode _Mode = ios_base::in);
+
+	/**
+	 *  @brief  Create a stream using an open c file stream.
+	 *  @param  File  An open @c FILE*.
+        @param  Mode  Same meaning as in a standard filebuf.
+        @param  Size  Optimal or preferred size of internal buffer, in chars.
+                      Defaults to system's @c BUFSIZ.
+	*/
+	explicit llifstream(_Filet *_File,
+			ios_base::openmode _Mode = ios_base::in,
+			//size_t _Size = static_cast<size_t>(BUFSIZ));
+			size_t _Size = static_cast<size_t>(1));
+
+	/**
+	 *  @brief  Create a stream using an open file descriptor.
+	 *  @param  fd    An open file descriptor.
+        @param  Mode  Same meaning as in a standard filebuf.
+        @param  Size  Optimal or preferred size of internal buffer, in chars.
+                      Defaults to system's @c BUFSIZ.
+	*/
+#if !LL_WINDOWS
+	explicit llifstream(int __fd,
+			ios_base::openmode _Mode = ios_base::in,
+			//size_t _Size = static_cast<size_t>(BUFSIZ));
+			size_t _Size = static_cast<size_t>(1));
+#endif
 
+	/**
+	 *  @brief  The destructor does nothing.
+	 *
+	 *  The file is closed by the filebuf object, not the formatting
+	 *  stream.
+	*/
+	virtual ~llifstream() {}
+
+	// Members:
+	/**
+	 *  @brief  Accessing the underlying buffer.
+	 *  @return  The current basic_filebuf buffer.
+	 *
+	 *  This hides both signatures of std::basic_ios::rdbuf().
+	*/
+	llstdio_filebuf* rdbuf() const
+	{ return const_cast<llstdio_filebuf*>(&_M_filebuf); }
+
+	/**
+	 *  @brief  Wrapper to test for an open file.
+	 *  @return  @c rdbuf()->is_open()
+	*/
 	bool is_open() const;
 
-	void open(const std::string& _Filename,ios_base::openmode _Mode = ios_base::out,int _Prot = (int)ios_base::_Openprot);	/* Flawfinder: ignore */
-
+	/**
+	 *  @brief  Opens an external file.
+	 *  @param  Filename  The name of the file.
+	 *  @param  Node  The open mode flags.
+	 *
+	 *  Calls @c llstdio_filebuf::open(s,mode|in).  If that function
+	 *  fails, @c failbit is set in the stream's error state.
+	*/
+	void open(const std::string& _Filename,
+			ios_base::openmode _Mode = ios_base::in)
+	{ open(_Filename.c_str(), _Mode); }
+	void open(const char* _Filename,
+			ios_base::openmode _Mode = ios_base::in);
+
+	/**
+	 *  @brief  Close the file.
+	 *
+	 *  Calls @c llstdio_filebuf::close().  If that function
+	 *  fails, @c failbit is set in the stream's error state.
+	*/
 	void close();
 
 private:
-	_Myfb *_Filebuffer;	// the file buffer
-	bool _ShouldClose;
-};
-
-
-
-#else
-//Use standard file streams on non windows platforms
-//#define	llifstream	std::ifstream
-//#define	llofstream	std::ofstream
-
-class LL_COMMON_API llifstream	:	public	std::ifstream
-{
-public:
-	llifstream() : std::ifstream()
-	{
-	}
-
-	explicit llifstream(const std::string& _Filename, std::_Ios_Openmode _Mode = in)
-		: std::ifstream(_Filename.c_str(), _Mode)
-	{
-	}
-	void open(const std::string& _Filename, std::_Ios_Openmode _Mode = in)	/* Flawfinder: ignore */
-	{
-		std::ifstream::open(_Filename.c_str(), _Mode);
-	}
+	llstdio_filebuf _M_filebuf;
 };
 
 
-class LL_COMMON_API llofstream	:	public	std::ofstream
+/**
+ *  @brief  Controlling output for files.
+ *
+ *  This class supports writing to named files, using the inherited
+ *  functions from std::basic_ostream.  To control the associated
+ *  sequence, an instance of std::basic_filebuf (or a platform-specific derivative)
+ *  which allows construction using a pre-exisintg file stream buffer. 
+ *  We refer to this std::basic_filebuf (or derivative) as @c sb.
+*/
+class LL_COMMON_API llofstream	:	public	std::ostream
 {
 public:
-	llofstream() : std::ofstream()
-	{
-	}
+	// Constructors:
+	/**
+	 *  @brief  Default constructor.
+	 *
+	 *  Initializes @c sb using its default constructor, and passes
+	 *  @c &sb to the base class initializer.  Does not open any files
+	 *  (you haven't given it a filename to open).
+	*/
+	llofstream();
+
+	/**
+	 *  @brief  Create an output file stream.
+	 *  @param  Filename  String specifying the filename.
+	 *  @param  Mode  Open file in specified mode (see std::ios_base).
+	 *
+	 *  @c ios_base::out|ios_base::trunc is automatically included in
+	 *  @a mode.
+	*/
+	explicit llofstream(const std::string& _Filename,
+			ios_base::openmode _Mode = ios_base::out|ios_base::trunc);
+	explicit llofstream(const char* _Filename,
+			ios_base::openmode _Mode = ios_base::out|ios_base::trunc);
+
+	/**
+	 *  @brief  Create a stream using an open c file stream.
+	 *  @param  File  An open @c FILE*.
+        @param  Mode  Same meaning as in a standard filebuf.
+        @param  Size  Optimal or preferred size of internal buffer, in chars.
+                      Defaults to system's @c BUFSIZ.
+	*/
+	explicit llofstream(_Filet *_File,
+			ios_base::openmode _Mode = ios_base::out,
+			//size_t _Size = static_cast<size_t>(BUFSIZ));
+			size_t _Size = static_cast<size_t>(1));
+
+	/**
+	 *  @brief  Create a stream using an open file descriptor.
+	 *  @param  fd    An open file descriptor.
+        @param  Mode  Same meaning as in a standard filebuf.
+        @param  Size  Optimal or preferred size of internal buffer, in chars.
+                      Defaults to system's @c BUFSIZ.
+	*/
+#if !LL_WINDOWS
+	explicit llofstream(int __fd,
+			ios_base::openmode _Mode = ios_base::out,
+			//size_t _Size = static_cast<size_t>(BUFSIZ));
+			size_t _Size = static_cast<size_t>(1));
+#endif
 
-	explicit llofstream(const std::string& _Filename, std::_Ios_Openmode _Mode = out)
-		: std::ofstream(_Filename.c_str(), _Mode)
-	{
-	}
+	/**
+	 *  @brief  The destructor does nothing.
+	 *
+	 *  The file is closed by the filebuf object, not the formatting
+	 *  stream.
+	*/
+	virtual ~llofstream() {}
+
+	// Members:
+	/**
+	 *  @brief  Accessing the underlying buffer.
+	 *  @return  The current basic_filebuf buffer.
+	 *
+	 *  This hides both signatures of std::basic_ios::rdbuf().
+	*/
+	llstdio_filebuf* rdbuf() const
+	{ return const_cast<llstdio_filebuf*>(&_M_filebuf); }
+
+	/**
+	 *  @brief  Wrapper to test for an open file.
+	 *  @return  @c rdbuf()->is_open()
+	*/
+	bool is_open() const;
 
-	void open(const std::string& _Filename, std::_Ios_Openmode _Mode = out)	/* Flawfinder: ignore */
-	{
-		std::ofstream::open(_Filename.c_str(), _Mode);
-	}
+	/**
+	 *  @brief  Opens an external file.
+	 *  @param  Filename  The name of the file.
+	 *  @param  Node  The open mode flags.
+	 *
+	 *  Calls @c llstdio_filebuf::open(s,mode|out).  If that function
+	 *  fails, @c failbit is set in the stream's error state.
+	*/
+	void open(const std::string& _Filename,
+			ios_base::openmode _Mode = ios_base::out|ios_base::trunc)
+	{ open(_Filename.c_str(), _Mode); }
+	void open(const char* _Filename,
+			ios_base::openmode _Mode = ios_base::out|ios_base::trunc);
+
+	/**
+	 *  @brief  Close the file.
+	 *
+	 *  Calls @c llstdio_filebuf::close().  If that function
+	 *  fails, @c failbit is set in the stream's error state.
+	*/
+	void close();
 
+private:
+	llstdio_filebuf _M_filebuf;
 };
 
-#endif
 
 /**
  * @breif filesize helpers.
diff --git a/indra/llinventory/llinventory.cpp b/indra/llinventory/llinventory.cpp
index fbf23bc3f09..2dbc3310368 100644
--- a/indra/llinventory/llinventory.cpp
+++ b/indra/llinventory/llinventory.cpp
@@ -824,7 +824,7 @@ BOOL LLInventoryItem::importLegacyStream(std::istream& input_stream)
 		}
 		else if(0 == strcmp("permissions", keyword))
 		{
-			success = mPermissions.importLegacyStream(input_stream);
+			success = mPermissions.importStream(input_stream);
 		}
 		else if(0 == strcmp("sale_info", keyword))
 		{
@@ -834,7 +834,7 @@ BOOL LLInventoryItem::importLegacyStream(std::istream& input_stream)
 			// should pick up the vast majority of the tasks.
 			BOOL has_perm_mask = FALSE;
 			U32 perm_mask = 0;
-			success = mSaleInfo.importLegacyStream(input_stream, has_perm_mask, perm_mask);
+			success = mSaleInfo.importStream(input_stream, has_perm_mask, perm_mask);
 			if(has_perm_mask)
 			{
 				if(perm_mask == PERM_NONE)
@@ -950,7 +950,7 @@ BOOL LLInventoryItem::exportLegacyStream(std::ostream& output_stream, BOOL inclu
 	output_stream << "\t\titem_id\t" << uuid_str << "\n";
 	mParentUUID.toString(uuid_str);
 	output_stream << "\t\tparent_id\t" << uuid_str << "\n";
-	mPermissions.exportLegacyStream(output_stream);
+	mPermissions.exportStream(output_stream);
 
 	// Check for permissions to see the asset id, and if so write it
 	// out as an asset id. Otherwise, apply our cheesy encryption.
@@ -984,7 +984,7 @@ BOOL LLInventoryItem::exportLegacyStream(std::ostream& output_stream, BOOL inclu
 	std::string buffer;
 	buffer = llformat( "\t\tflags\t%08x\n", mFlags);
 	output_stream << buffer;
-	mSaleInfo.exportLegacyStream(output_stream);
+	mSaleInfo.exportStream(output_stream);
 	output_stream << "\t\tname\t" << mName.c_str() << "|\n";
 	output_stream << "\t\tdesc\t" << mDescription.c_str() << "|\n";
 	output_stream << "\t\tcreation_date\t" << mCreationDate << "\n";
diff --git a/indra/llinventory/llpermissions.cpp b/indra/llinventory/llpermissions.cpp
index 7e013de11a1..34354e3e8c5 100644
--- a/indra/llinventory/llpermissions.cpp
+++ b/indra/llinventory/llpermissions.cpp
@@ -572,143 +572,17 @@ void LLPermissions::unpackMessage(LLMessageSystem* msg, const char* block, S32 b
 
 BOOL LLPermissions::importFile(LLFILE* fp)
 {
-	init(LLUUID::null, LLUUID::null, LLUUID::null, LLUUID::null);
-	const S32 BUFSIZE = 16384;
-
-	// *NOTE: Changing the buffer size will require changing the scanf
-	// calls below.
-	char buffer[BUFSIZE];	/* Flawfinder: ignore */
-	char keyword[256];	/* Flawfinder: ignore */
-	char valuestr[256];	/* Flawfinder: ignore */
-	char uuid_str[256];	/* Flawfinder: ignore */
-	U32 mask;
-
-	keyword[0]  = '\0';
-	valuestr[0] = '\0';
-
-	while (!feof(fp))
-	{
-		if (fgets(buffer, BUFSIZE, fp) == NULL)
-		{
-			buffer[0] = '\0';
-		}
-		
-		sscanf( /* Flawfinder: ignore */
-			buffer,
-			" %255s %255s",
-			keyword, valuestr);
-		if (!strcmp("{", keyword))
-		{
-			continue;
-		}
-		if (!strcmp("}",keyword))
-		{
-			break;
-		}
-		else if (!strcmp("creator_mask", keyword))
-		{
-			// legacy support for "creator" masks
-			sscanf(valuestr, "%x", &mask);
-			mMaskBase = mask;
-			fixFairUse();
-		}
-		else if (!strcmp("base_mask", keyword))
-		{
-			sscanf(valuestr, "%x", &mask);
-			mMaskBase = mask;
-			//fixFairUse();
-		}
-		else if (!strcmp("owner_mask", keyword))
-		{
-			sscanf(valuestr, "%x", &mask);
-			mMaskOwner = mask;
-		}
-		else if (!strcmp("group_mask", keyword))
-		{
-			sscanf(valuestr, "%x", &mask);
-			mMaskGroup = mask;
-		}
-		else if (!strcmp("everyone_mask", keyword))
-		{
-			sscanf(valuestr, "%x", &mask);
-			mMaskEveryone = mask;
-		}
-		else if (!strcmp("next_owner_mask", keyword))
-		{
-			sscanf(valuestr, "%x", &mask);
-			mMaskNextOwner = mask;
-		}
-		else if (!strcmp("creator_id", keyword))
-		{
-			sscanf(valuestr, "%255s", uuid_str); /* Flawfinder: ignore */
-			mCreator.set(uuid_str);
-		}
-		else if (!strcmp("owner_id", keyword))
-		{
-			sscanf(valuestr, "%255s", uuid_str); /* Flawfinder: ignore */
-			mOwner.set(uuid_str);
-		}
-		else if (!strcmp("last_owner_id", keyword))
-		{
-			sscanf(valuestr, "%255s", uuid_str); /* Flawfinder: ignore */
-			mLastOwner.set(uuid_str);
-		}
-		else if (!strcmp("group_id", keyword))
-		{
-			sscanf(valuestr, "%255s", uuid_str); /* Flawfinder: ignore */
-			mGroup.set(uuid_str);
-		}
-		else if (!strcmp("group_owned", keyword))
-		{
-			sscanf(valuestr, "%d", &mask);
-			if(mask) mIsGroupOwned = true;
-			else mIsGroupOwned = false;
-		}
-		else
-		{
-			llinfos << "unknown keyword " << keyword << " in permissions import" << llendl;
-		}
-	}
-	fix();
-	return TRUE;
+	llifstream ifs(fp);
+	return importStream(ifs);
 }
 
-
 BOOL LLPermissions::exportFile(LLFILE* fp) const
 {
-	std::string uuid_str;
-
-	fprintf(fp, "\tpermissions 0\n");
-	fprintf(fp, "\t{\n");
-
-	fprintf(fp, "\t\tbase_mask\t%08x\n",		mMaskBase);
-	fprintf(fp, "\t\towner_mask\t%08x\n",		mMaskOwner);
-	fprintf(fp, "\t\tgroup_mask\t%08x\n",		mMaskGroup);
-	fprintf(fp, "\t\teveryone_mask\t%08x\n",	mMaskEveryone);
-	fprintf(fp, "\t\tnext_owner_mask\t%08x\n",	mMaskNextOwner);
-
-	mCreator.toString(uuid_str);
-	fprintf(fp, "\t\tcreator_id\t%s\n",			uuid_str.c_str());
-
-	mOwner.toString(uuid_str);
-	fprintf(fp, "\t\towner_id\t%s\n",			uuid_str.c_str());
-
-	mLastOwner.toString(uuid_str);
-	fprintf(fp, "\t\tlast_owner_id\t%s\n",		uuid_str.c_str());
-
-	mGroup.toString(uuid_str);
-	fprintf(fp, "\t\tgroup_id\t%s\n",			uuid_str.c_str());
-
-	if(mIsGroupOwned)
-	{
-		fprintf(fp, "\t\tgroup_owned\t1\n");
-	}
-	fprintf(fp,"\t}\n");
-	return TRUE;
+	llofstream ofs(fp);
+	return exportStream(ofs);
 }
 
-
-BOOL LLPermissions::importLegacyStream(std::istream& input_stream)
+BOOL LLPermissions::importStream(std::istream& input_stream)
 {
 	init(LLUUID::null, LLUUID::null, LLUUID::null, LLUUID::null);
 	const S32 BUFSIZE = 16384;
@@ -727,6 +601,18 @@ BOOL LLPermissions::importLegacyStream(std::istream& input_stream)
 	while (input_stream.good())
 	{
 		input_stream.getline(buffer, BUFSIZE);
+		if (input_stream.eof())
+		{
+			llwarns << "Bad permissions: early end of input stream"
+					<< llendl;
+			return FALSE;
+		}
+		if (input_stream.fail())
+		{
+			llwarns << "Bad permissions: failed to read from input stream"
+					<< llendl;
+			return FALSE;
+		}
 		sscanf( /* Flawfinder: ignore */
 			buffer,
 			" %255s %255s",
@@ -800,7 +686,8 @@ BOOL LLPermissions::importLegacyStream(std::istream& input_stream)
 		}
 		else
 		{
-			llinfos << "unknown keyword " << keyword << " in permissions import" << llendl;
+			llwarns << "unknown keyword " << keyword 
+					<< " in permissions import" << llendl;
 		}
 	}
 	fix();
@@ -808,36 +695,26 @@ BOOL LLPermissions::importLegacyStream(std::istream& input_stream)
 }
 
 
-BOOL LLPermissions::exportLegacyStream(std::ostream& output_stream) const
+BOOL LLPermissions::exportStream(std::ostream& output_stream) const
 {
-	std::string uuid_str;
-
+	if (!output_stream.good()) return FALSE;
 	output_stream <<  "\tpermissions 0\n";
 	output_stream <<  "\t{\n";
 
-	std::string buffer;
-	buffer = llformat( "\t\tbase_mask\t%08x\n",		mMaskBase);
-	output_stream << buffer;
-	buffer = llformat( "\t\towner_mask\t%08x\n",		mMaskOwner);
-	output_stream << buffer;
-	buffer = llformat( "\t\tgroup_mask\t%08x\n",		mMaskGroup);
-	output_stream << buffer;
-	buffer = llformat( "\t\teveryone_mask\t%08x\n",	mMaskEveryone);
-	output_stream << buffer;
-	buffer = llformat( "\t\tnext_owner_mask\t%08x\n",	mMaskNextOwner);
-	output_stream << buffer;
-
-	mCreator.toString(uuid_str);
-	output_stream <<  "\t\tcreator_id\t" << uuid_str << "\n";
-
-	mOwner.toString(uuid_str);
-	output_stream <<  "\t\towner_id\t" << uuid_str << "\n";
-
-	mLastOwner.toString(uuid_str);
-	output_stream <<  "\t\tlast_owner_id\t" << uuid_str << "\n";
-
-	mGroup.toString(uuid_str);
-	output_stream <<  "\t\tgroup_id\t" << uuid_str << "\n";
+	char prev_fill = output_stream.fill('0');
+	output_stream << std::hex;
+	output_stream << "\t\tbase_mask\t" << std::setw(8) << mMaskBase << "\n";
+	output_stream << "\t\towner_mask\t" << std::setw(8) << mMaskOwner << "\n";
+	output_stream << "\t\tgroup_mask\t" << std::setw(8) << mMaskGroup << "\n";
+	output_stream << "\t\teveryone_mask\t" << std::setw(8) << mMaskEveryone << "\n";
+	output_stream << "\t\tnext_owner_mask\t" << std::setw(8) << mMaskNextOwner << "\n";
+	output_stream << std::dec;
+	output_stream.fill(prev_fill);
+
+	output_stream <<  "\t\tcreator_id\t" << mCreator << "\n";
+	output_stream <<  "\t\towner_id\t" << mOwner << "\n";
+	output_stream <<  "\t\tlast_owner_id\t" << mLastOwner << "\n";
+	output_stream <<  "\t\tgroup_id\t" << mGroup << "\n";
 
 	if(mIsGroupOwned)
 	{
diff --git a/indra/llinventory/llpermissions.h b/indra/llinventory/llpermissions.h
index 3ecc922370a..7d3a68d3533 100644
--- a/indra/llinventory/llpermissions.h
+++ b/indra/llinventory/llpermissions.h
@@ -316,8 +316,8 @@ class LLPermissions : public LLReflective
 	BOOL	importFile(LLFILE* fp);
 	BOOL	exportFile(LLFILE* fp) const;
 
-	BOOL	importLegacyStream(std::istream& input_stream);
-	BOOL	exportLegacyStream(std::ostream& output_stream) const;
+	BOOL	importStream(std::istream& input_stream);
+	BOOL	exportStream(std::ostream& output_stream) const;
 
 	bool operator==(const LLPermissions &rhs) const;
 	bool operator!=(const LLPermissions &rhs) const;
diff --git a/indra/llinventory/llsaleinfo.cpp b/indra/llinventory/llsaleinfo.cpp
index dd408a8efea..a8296679337 100644
--- a/indra/llinventory/llsaleinfo.cpp
+++ b/indra/llinventory/llsaleinfo.cpp
@@ -81,15 +81,13 @@ U32 LLSaleInfo::getCRC32() const
 
 BOOL LLSaleInfo::exportFile(LLFILE* fp) const
 {
-	fprintf(fp, "\tsale_info\t0\n\t{\n");
-	fprintf(fp, "\t\tsale_type\t%s\n", lookup(mSaleType));
-	fprintf(fp, "\t\tsale_price\t%d\n", mSalePrice);
-	fprintf(fp,"\t}\n");
-	return TRUE;
+	llofstream ofs(fp);
+	return exportStream(ofs);
 }
 
-BOOL LLSaleInfo::exportLegacyStream(std::ostream& output_stream) const
+BOOL LLSaleInfo::exportStream(std::ostream& output_stream) const
 {
+	if (!output_stream.good()) return FALSE;
 	output_stream << "\tsale_info\t0\n\t{\n";
 	output_stream << "\t\tsale_type\t" << lookup(mSaleType) << "\n";
 	output_stream << "\t\tsale_price\t" << mSalePrice << "\n";
@@ -134,80 +132,39 @@ bool LLSaleInfo::fromLLSD(const LLSD& sd, BOOL& has_perm_mask, U32& perm_mask)
 
 BOOL LLSaleInfo::importFile(LLFILE* fp, BOOL& has_perm_mask, U32& perm_mask)
 {
-	has_perm_mask = FALSE;
-
-	// *NOTE: Changing the buffer size will require changing the scanf
-	// calls below.
-	char buffer[MAX_STRING];	/* Flawfinder: ignore */
-	char keyword[MAX_STRING];	/* Flawfinder: ignore */
-	char valuestr[MAX_STRING];	/* Flawfinder: ignore */
-	BOOL success = TRUE;
-
-	keyword[0] = '\0';
-	valuestr[0] = '\0';
-	while(success && (!feof(fp)))
-	{
-		if (fgets(buffer, MAX_STRING, fp) == NULL)
-		{
-			buffer[0] = '\0';
-		}
-
-		sscanf(	/* Flawfinder: ignore */
-			buffer,
-			" %254s %254s",
-			keyword, valuestr);
-		if(!keyword[0])
-		{
-			continue;
-		}
-		if(0 == strcmp("{",keyword))
-		{
-			continue;
-		}
-		if(0 == strcmp("}", keyword))
-		{
-			break;
-		}
-		else if(0 == strcmp("sale_type", keyword))
-		{
-			mSaleType = lookup(valuestr);
-		}
-		else if(0 == strcmp("sale_price", keyword))
-		{
-			sscanf(valuestr, "%d", &mSalePrice);
-			mSalePrice = llclamp(mSalePrice, 0, S32_MAX);
-		}
-		else if (!strcmp("perm_mask", keyword))
-		{
-			//llinfos << "found deprecated keyword perm_mask" << llendl;
-			has_perm_mask = TRUE;
-			sscanf(valuestr, "%x", &perm_mask);
-		}
-		else
-		{
-			llwarns << "unknown keyword '" << keyword
-					<< "' in sale info import" << llendl;
-		}
-	}
-	return success;
+	llifstream ifs(fp);
+	return importStream(ifs, has_perm_mask, perm_mask);
 }
 
-BOOL LLSaleInfo::importLegacyStream(std::istream& input_stream, BOOL& has_perm_mask, U32& perm_mask)
+BOOL LLSaleInfo::importStream(std::istream& input_stream, BOOL& has_perm_mask, U32& perm_mask)
 {
 	has_perm_mask = FALSE;
 
+	const S32 BUFSIZE = 16384;
+
 	// *NOTE: Changing the buffer size will require changing the scanf
 	// calls below.
-	char buffer[MAX_STRING];	/* Flawfinder: ignore */
-	char keyword[MAX_STRING];	/* Flawfinder: ignore */
-	char valuestr[MAX_STRING];	/* Flawfinder: ignore */
-	BOOL success = TRUE;
+	char buffer[BUFSIZE];	/* Flawfinder: ignore */
+	char keyword[255];	/* Flawfinder: ignore */
+	char valuestr[255];	/* Flawfinder: ignore */
 
 	keyword[0] = '\0';
 	valuestr[0] = '\0';
-	while(success && input_stream.good())
+	while(input_stream.good())
 	{
 		input_stream.getline(buffer, MAX_STRING);
+		if (input_stream.eof())
+		{
+			llwarns << "Bad sale info: early end of input stream"
+					<< llendl;
+			return FALSE;
+		}
+		if (input_stream.fail())
+		{
+			llwarns << "Bad sale info: failed to read from input stream"
+					<< llendl;
+			return FALSE;
+		}
 		sscanf(	/* Flawfinder: ignore */
 			buffer,
 			" %254s %254s",
@@ -245,7 +202,7 @@ BOOL LLSaleInfo::importLegacyStream(std::istream& input_stream, BOOL& has_perm_m
 					<< "' in sale info import" << llendl;
 		}
 	}
-	return success;
+	return TRUE;
 }
 
 void LLSaleInfo::setSalePrice(S32 price)
diff --git a/indra/llinventory/llsaleinfo.h b/indra/llinventory/llsaleinfo.h
index 4e98ccf6ff4..f7f3f9269c1 100644
--- a/indra/llinventory/llsaleinfo.h
+++ b/indra/llinventory/llsaleinfo.h
@@ -89,11 +89,11 @@ class LLSaleInfo
 	BOOL exportFile(LLFILE* fp) const;
 	BOOL importFile(LLFILE* fp, BOOL& has_perm_mask, U32& perm_mask);
 
-	BOOL exportLegacyStream(std::ostream& output_stream) const;
+	BOOL exportStream(std::ostream& output_stream) const;
 	LLSD asLLSD() const;
 	operator LLSD() const { return asLLSD(); }
 	bool fromLLSD(const LLSD& sd, BOOL& has_perm_mask, U32& perm_mask);
-	BOOL importLegacyStream(std::istream& input_stream, BOOL& has_perm_mask, U32& perm_mask);
+	BOOL importStream(std::istream& input_stream, BOOL& has_perm_mask, U32& perm_mask);
 
 	LLSD packMessage() const;
 	void unpackMessage(LLSD sales);
diff --git a/indra/newview/llagent.h b/indra/newview/llagent.h
index f784262e907..ae5efb22870 100644
--- a/indra/newview/llagent.h
+++ b/indra/newview/llagent.h
@@ -34,6 +34,7 @@
 #include "llcharacter.h"
 #include "llcoordframe.h"			// for mFrameAgent
 #include "llavatarappearancedefines.h"
+#include "llpermissionsflags.h"
 
 #include <boost/function.hpp>
 #include <boost/shared_ptr.hpp>
diff --git a/indra/newview/lllocalbitmaps.h b/indra/newview/lllocalbitmaps.h
index ca12fe20457..580b6dfa7e0 100644
--- a/indra/newview/lllocalbitmaps.h
+++ b/indra/newview/lllocalbitmaps.h
@@ -28,9 +28,11 @@
 #ifndef LL_LOCALBITMAPS_H
 #define LL_LOCALBITMAPS_H
 
+#include "llavatarappearancedefines.h"
 #include "lleventtimer.h"
+#include "llimage.h"
+#include "llpointer.h"
 #include "llwearabletype.h"
-#include "llavatarappearancedefines.h"
 
 class LLScrollListCtrl;
 class LLViewerObject;
diff --git a/indra/newview/lltoolmorph.cpp b/indra/newview/lltoolmorph.cpp
index 0d5daf129fc..148e5a015b1 100644
--- a/indra/newview/lltoolmorph.cpp
+++ b/indra/newview/lltoolmorph.cpp
@@ -34,6 +34,7 @@
 #include "llaudioengine.h"
 #include "llviewercontrol.h"
 #include "llfontgl.h"
+#include "llwearable.h"
 #include "sound_ids.h"
 #include "v3math.h"
 #include "v3color.h"
diff --git a/indra/newview/llviewertexlayer.h b/indra/newview/llviewertexlayer.h
index 95c339a5b00..9df9474eff1 100644
--- a/indra/newview/llviewertexlayer.h
+++ b/indra/newview/llviewertexlayer.h
@@ -28,6 +28,7 @@
 #define LL_VIEWER_TEXLAYER_H
 
 #include "lldynamictexture.h"
+#include "llextendedstatus.h"
 #include "lltexlayer.h"
 
 class LLVOAvatarSelf;
diff --git a/indra/newview/llviewerwearable.cpp b/indra/newview/llviewerwearable.cpp
index e9fa92e8be5..162c20837a7 100644
--- a/indra/newview/llviewerwearable.cpp
+++ b/indra/newview/llviewerwearable.cpp
@@ -90,13 +90,13 @@ LLViewerWearable::~LLViewerWearable()
 }
 
 // virtual
-LLWearable::EImportResult LLViewerWearable::importFile( LLFILE* file, LLAvatarAppearance* avatarp )
+LLWearable::EImportResult LLViewerWearable::importStream( std::istream& input_stream, LLAvatarAppearance* avatarp )
 {
 	// suppress texlayerset updates while wearables are being imported. Layersets will be updated
 	// when the wearables are "worn", not loaded. Note state will be restored when this object is destroyed.
 	LLOverrideBakedTextureUpdate stop_bakes(false);
 
-	LLWearable::EImportResult result = LLWearable::importFile(file, avatarp);
+	LLWearable::EImportResult result = LLWearable::importStream(input_stream, avatarp);
 	if (LLWearable::FAILURE == result) return result;
 	if (LLWearable::BAD_HEADER == result)
 	{
@@ -129,9 +129,6 @@ LLWearable::EImportResult LLViewerWearable::importFile( LLFILE* file, LLAvatarAp
 		}
 	}
 
-	// copy all saved param values to working params
-	revertValues();
-
 	return result;
 }
 
@@ -296,8 +293,8 @@ void LLViewerWearable::setTexturesToDefaults()
 }
 
 
-//static
-const LLUUID LLViewerWearable::getDefaultTextureImageID(ETextureIndex index)
+// virtual
+LLUUID LLViewerWearable::getDefaultTextureImageID(ETextureIndex index) const
 {
 	const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = LLAvatarAppearanceDictionary::getInstance()->getTexture(index);
 	const std::string &default_image_name = texture_dict->mDefaultImageName;
@@ -475,103 +472,9 @@ void LLViewerWearable::setItemID(const LLUUID& item_id)
 	mItemID = item_id;
 }
 
-
-LLLocalTextureObject* LLViewerWearable::getLocalTextureObject(S32 index)
-{
-	te_map_t::iterator iter = mTEMap.find(index);
-	if( iter != mTEMap.end() )
-	{
-		LLLocalTextureObject* lto = iter->second;
-		return lto;
-	}
-	return NULL;
-}
-
-const LLLocalTextureObject* LLViewerWearable::getLocalTextureObject(S32 index) const
-{
-	te_map_t::const_iterator iter = mTEMap.find(index);
-	if( iter != mTEMap.end() )
-	{
-		const LLLocalTextureObject* lto = iter->second;
-		return lto;
-	}
-	return NULL;
-}
-
-std::vector<LLLocalTextureObject*> LLViewerWearable::getLocalTextureListSeq()
-{
-	std::vector<LLLocalTextureObject*> result;
-
-	for(te_map_t::const_iterator iter = mTEMap.begin();
-		iter != mTEMap.end(); iter++)
-	{
-		LLLocalTextureObject* lto = iter->second;
-		result.push_back(lto);
-	}
-
-	return result;
-}
-
-void LLViewerWearable::setLocalTextureObject(S32 index, LLLocalTextureObject &lto)
-{
-	if( mTEMap.find(index) != mTEMap.end() )
-	{
-		mTEMap.erase(index);
-	}
-	mTEMap[index] = new LLLocalTextureObject(lto);
-}
-
-void LLViewerWearable::setVisualParams()
-{
-	for (visual_param_index_map_t::const_iterator iter = mVisualParamIndexMap.begin(); iter != mVisualParamIndexMap.end(); iter++)
-	{
-		S32 id = iter->first;
-		LLVisualParam *wearable_param = iter->second;
-		F32 value = wearable_param->getWeight();
-		gAgentAvatarp->setVisualParamWeight(id, value, FALSE);
-	}
-}
-
 void LLViewerWearable::revertValues()
 {
-	//update saved settings so wearable is no longer dirty
-	// non-driver params first
-	for (param_map_t::const_iterator iter = mSavedVisualParamMap.begin(); iter != mSavedVisualParamMap.end(); iter++)
-	{
-		S32 id = iter->first;
-		F32 value = iter->second;
-		LLVisualParam *param = getVisualParam(id);
-		if(param &&  !dynamic_cast<LLDriverParam*>(param) )
-		{
-			setVisualParamWeight(id, value, TRUE);
-		}
-	}
-
-	//then driver params
-	for (param_map_t::const_iterator iter = mSavedVisualParamMap.begin(); iter != mSavedVisualParamMap.end(); iter++)
-	{
-		S32 id = iter->first;
-		F32 value = iter->second;
-		LLVisualParam *param = getVisualParam(id);
-		if(param &&  dynamic_cast<LLDriverParam*>(param) )
-		{
-			setVisualParamWeight(id, value, TRUE);
-		}
-	}
-
-	// make sure that saved values are sane
-	for (param_map_t::const_iterator iter = mSavedVisualParamMap.begin(); iter != mSavedVisualParamMap.end(); iter++)
-	{
-		S32 id = iter->first;
-		LLVisualParam *param = getVisualParam(id);
-		if( param )
-		{
-			mSavedVisualParamMap[id] = param->getWeight();
-		}
-	}
-
-	syncImages(mSavedTEMap, mTEMap);
-
+	LLWearable::revertValues();
 
 	LLSidepanelAppearance *panel = dynamic_cast<LLSidepanelAppearance*>(LLFloaterSidePanelContainer::getPanel("appearance"));
 	if( panel )
@@ -582,19 +485,7 @@ void LLViewerWearable::revertValues()
 
 void LLViewerWearable::saveValues()
 {
-	//update saved settings so wearable is no longer dirty
-	mSavedVisualParamMap.clear();
-	for (visual_param_index_map_t::const_iterator iter = mVisualParamIndexMap.begin(); iter != mVisualParamIndexMap.end(); ++iter)
-	{
-		S32 id = iter->first;
-		LLVisualParam *wearable_param = iter->second;
-		F32 value = wearable_param->getWeight();
-		mSavedVisualParamMap[id] = value;
-	}
-
-	// Deep copy of mTEMap (copies only those tes that are current, filling in defaults where needed)
-	syncImages(mTEMap, mSavedTEMap);
-
+	LLWearable::saveValues();
 
 	LLSidepanelAppearance *panel = dynamic_cast<LLSidepanelAppearance*>(LLFloaterSidePanelContainer::getPanel("appearance"));
 	if( panel )
@@ -603,69 +494,6 @@ void LLViewerWearable::saveValues()
 	}
 }
 
-void LLViewerWearable::syncImages(te_map_t &src, te_map_t &dst)
-{
-	// Deep copy of src (copies only those tes that are current, filling in defaults where needed)
-	for( S32 te = 0; te < TEX_NUM_INDICES; te++ )
-	{
-		if (LLAvatarAppearanceDictionary::getTEWearableType((ETextureIndex) te) == mType)
-		{
-			te_map_t::const_iterator iter = src.find(te);
-			LLUUID image_id;
-			LLViewerFetchedTexture *image = NULL;
-			LLLocalTextureObject *lto = NULL;
-			if(iter != src.end())
-			{
-				// there's a Local Texture Object in the source image map. Use this to populate the values to store in the destination image map.
-				lto = iter->second;
-				image = dynamic_cast<LLViewerFetchedTexture*> (lto->getImage());
-				image_id = lto->getID();
-			}
-			else
-			{
-				// there is no Local Texture Object in the source image map. Get defaults values for populating the destination image map.
-				image_id = getDefaultTextureImageID((ETextureIndex) te);
-				image = LLViewerTextureManager::getFetchedTexture( image_id );
-			}
-
-			if( dst.find(te) != dst.end() )
-			{
-				// there's already an entry in the destination map for the texture. Just update its values.
-				dst[te]->setImage(image);
-				dst[te]->setID(image_id);
-			}
-			else
-			{
-				// no entry found in the destination map, we need to create a new Local Texture Object
-				dst[te] = new LLLocalTextureObject(image, image_id);
-			}
-
-			if( lto )
-			{
-				// If we pulled values from a Local Texture Object in the source map, make sure the proper flags are set in the new (or updated) entry in the destination map.
-				dst[te]->setBakedReady(lto->getBakedReady());
-				dst[te]->setDiscard(lto->getDiscard());
-			}
-		}
-	}
-}
-
-void LLViewerWearable::destroyTextures()
-{
-	for( te_map_t::iterator iter = mTEMap.begin(); iter != mTEMap.end(); ++iter )
-	{
-		LLLocalTextureObject *lto = iter->second;
-		delete lto;
-	}
-	mTEMap.clear();
-	for( te_map_t::iterator iter = mSavedTEMap.begin(); iter != mSavedTEMap.end(); ++iter )
-	{
-		LLLocalTextureObject *lto = iter->second;
-		delete lto;
-	}
-	mSavedTEMap.clear();
-}
-
 // virtual
 void LLViewerWearable::setUpdated() const
 { 
diff --git a/indra/newview/llviewerwearable.h b/indra/newview/llviewerwearable.h
index d8412b1c65c..65566f23a5a 100644
--- a/indra/newview/llviewerwearable.h
+++ b/indra/newview/llviewerwearable.h
@@ -64,12 +64,12 @@ class LLViewerWearable : public LLWearable
 	void				removeFromAvatar( BOOL upload_bake )	{ LLViewerWearable::removeFromAvatar( mType, upload_bake ); }
 	static void			removeFromAvatar( LLWearableType::EType type, BOOL upload_bake ); 
 
-	/*virtual*/ EImportResult	importFile(LLFILE* file, LLAvatarAppearance* avatarp);
+	/*virtual*/ EImportResult	importStream( std::istream& input_stream, LLAvatarAppearance* avatarp );
 	
 	void				setParamsToDefaults();
 	void				setTexturesToDefaults();
 
-	static const LLUUID			getDefaultTextureImageID(LLAvatarAppearanceDefines::ETextureIndex index);
+	/*virtual*/ LLUUID	getDefaultTextureImageID(LLAvatarAppearanceDefines::ETextureIndex index) const;
 
 
 	void				saveNewAsset() const;
@@ -79,14 +79,8 @@ class LLViewerWearable : public LLWearable
 
 	friend std::ostream& operator<<(std::ostream &s, const LLViewerWearable &w);
 
-	/*virtual*/ LLLocalTextureObject* getLocalTextureObject(S32 index);
-	const LLLocalTextureObject* getLocalTextureObject(S32 index) const;
-	std::vector<LLLocalTextureObject*> getLocalTextureListSeq();
-	void				setLocalTextureObject(S32 index, LLLocalTextureObject &lto);
-	void				setVisualParams();
-
-	void				revertValues();
-	void				saveValues();
+	/*virtual*/ void	revertValues();
+	/*virtual*/ void	saveValues();
 
 	// Something happened that requires the wearable's label to be updated (e.g. worn/unworn).
 	/*virtual*/void		setUpdated() const;
@@ -99,8 +93,6 @@ class LLViewerWearable : public LLWearable
 	/*virtual*/void		addToBakedTextureHash(LLMD5& hash) const;
 
 protected:
-	void				syncImages(te_map_t &src, te_map_t &dst);
-	void				destroyTextures();	
 	LLAssetID			mAssetID;
 	LLTransactionID		mTransactionID;
 
diff --git a/indra/newview/llwearablelist.cpp b/indra/newview/llwearablelist.cpp
index 50beaaec3fa..3dfacd70f3b 100644
--- a/indra/newview/llwearablelist.cpp
+++ b/indra/newview/llwearablelist.cpp
@@ -112,15 +112,16 @@ void LLWearableList::processGetAssetReply( const char* filename, const LLAssetID
 	else if (status >= 0)
 	{
 		// read the file
-		LLFILE* fp = LLFile::fopen(std::string(filename), "rb");		/*Flawfinder: ignore*/
-		if( !fp )
+		llifstream ifs(filename, llifstream::binary);
+		if( !ifs.is_open() )
 		{
 			LL_WARNS("Wearable") << "Bad Wearable Asset: unable to open file: '" << filename << "'" << LL_ENDL;
 		}
 		else
 		{
 			wearable = new LLViewerWearable(uuid);
-			LLWearable::EImportResult result = wearable->importFile( fp, avatarp );
+			LLWearable::EImportResult result = wearable->importStream(
+												ifs, avatarp );
 			if (LLWearable::SUCCESS != result)
 			{
 				if (wearable->getType() == LLWearableType::WT_COUNT)
@@ -131,7 +132,6 @@ void LLWearableList::processGetAssetReply( const char* filename, const LLAssetID
 				wearable = NULL;
 			}
 
-			fclose( fp );
 			if(filename)
 			{
 				LLFile::remove(std::string(filename));
diff --git a/indra/test/llpermissions_tut.cpp b/indra/test/llpermissions_tut.cpp
index bf6766424c6..dff8bca53fc 100644
--- a/indra/test/llpermissions_tut.cpp
+++ b/indra/test/llpermissions_tut.cpp
@@ -407,7 +407,7 @@ namespace tut
 		LLFILE* fp = LLFile::fopen("linden_file.dat","w+");
 		if(!fp)
 		{
-			llerrs << "file coudnt be opened\n" << llendl;
+			llerrs << "file couldn't be opened\n" << llendl;
 			return;
 		}
 		LLPermissions perm,perm1;
@@ -425,15 +425,15 @@ namespace tut
 
 		perm.initMasks(base, ownerp, everyone, groupp, next);
 
-		perm.exportFile(fp);
+		ensure("Permissions export failed", perm.exportFile(fp));
 		fclose(fp);	
 		fp = LLFile::fopen("linden_file.dat","r+");
 		if(!fp)
 		{
-			llerrs << "file coudnt be opened\n" << llendl;
+			llerrs << "file couldn't be opened\n" << llendl;
 			return;
 		}
-		perm1.importFile(fp);
+		ensure("Permissions import failed", perm1.importFile(fp));
 		fclose(fp);
 		ensure_equals("exportFile()/importFile():failed to export and import the data ", perm1, perm);	
 }
@@ -457,11 +457,11 @@ namespace tut
 		perm.initMasks(base, ownerp, everyone, groupp, next);
 
 		std::ostringstream ostream;
-		perm.exportLegacyStream(ostream);
+		perm.exportStream(ostream);
 		std::istringstream istream(ostream.str());
-		perm1.importLegacyStream(istream);
+		perm1.importStream(istream);
 
-		ensure_equals("exportLegacyStream()/importLegacyStream():failed to export and import the data ", perm1, perm);
+		ensure_equals("exportStream()/importStream():failed to export and import the data ", perm1, perm);
 	}
 
 	template<> template<>
diff --git a/indra/test/llsaleinfo_tut.cpp b/indra/test/llsaleinfo_tut.cpp
index 09fca2abbab..d5468039476 100644
--- a/indra/test/llsaleinfo_tut.cpp
+++ b/indra/test/llsaleinfo_tut.cpp
@@ -146,16 +146,17 @@ namespace tut
 		LLSaleInfo llsaleinfo(LLSaleInfo::FS_ORIGINAL, sale_price);
 		
 		std::ostringstream ostream;
-		llsaleinfo.exportLegacyStream(ostream);
+		llsaleinfo.exportStream(ostream);
 		
 		std::istringstream istream(ostream.str());
 		LLSaleInfo llsaleinfo1;
 		U32 perm_mask = 0;
 		BOOL has_perm_mask = FALSE;
-		llsaleinfo1.importLegacyStream(istream, has_perm_mask, perm_mask);
+		llsaleinfo1.importStream(istream, has_perm_mask, perm_mask);
 					
-		ensure("importLegacyStream() fn failed ", llsaleinfo.getSalePrice() == llsaleinfo1.getSalePrice() &&
-										       llsaleinfo.getSaleType() == llsaleinfo1.getSaleType());		
+		ensure("importStream() fn failed ",
+			llsaleinfo.getSalePrice() == llsaleinfo1.getSalePrice() &&
+			llsaleinfo.getSaleType() == llsaleinfo1.getSaleType());
 	}
 
 	template<> template<>
-- 
GitLab


From 7d62343f4444e05d30092e6219bfea564a8e8e17 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Thu, 20 Sep 2012 04:56:09 +0000
Subject: [PATCH 087/436] Skipping experimental filebuffering code on windows
 for now

---
 indra/llcommon/llfile.cpp | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/indra/llcommon/llfile.cpp b/indra/llcommon/llfile.cpp
index 38b0dfdaf17..deab7a87fc1 100644
--- a/indra/llcommon/llfile.cpp
+++ b/indra/llcommon/llfile.cpp
@@ -411,6 +411,9 @@ LLFILE *	LLFile::_Fiopen(const std::string& filename,
 //#endif
 //}
 
+
+// *TODO: Seek the underlying c stream for better cross-platform compatibility?
+#if !LL_WINDOWS
 llstdio_filebuf::int_type llstdio_filebuf::overflow(llstdio_filebuf::int_type __c)
 {
 	int_type __ret = traits_type::eof();
@@ -829,6 +832,7 @@ int llstdio_filebuf::sync()
 {
 	return (_M_file.sync() == 0 ? 0 : -1);
 }
+#endif
 
 /************** input file stream ********************************/
 
-- 
GitLab


From f8512c9191f662fee1cd0041af14d307fe103f0b Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Thu, 20 Sep 2012 04:59:36 +0000
Subject: [PATCH 088/436] Updating autobuild.xml mesa library md5sum

---
 autobuild.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/autobuild.xml b/autobuild.xml
index 70cf2ee6b33..81969ab7504 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -1432,7 +1432,7 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>19c6ce37e8ce4143d5bb2808ccb8e6ff</string>
+              <string>021e538c261e1a74c86bbe3b690a8469</string>
               <key>url</key>
               <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-mesa/rev/264880/arch/Linux/installer/mesa-7.11.1-linux-20120918.tar.bz2</string>
             </map>
-- 
GitLab


From ed08113ce0e21471498c410a5e66c9e4c2b7a394 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Thu, 20 Sep 2012 05:07:09 +0000
Subject: [PATCH 089/436] Temporarily disabling llrenderheadless due to build
 issues

---
 indra/cmake/LLRender.cmake    | 15 ++++++----
 indra/llrender/CMakeLists.txt | 54 +++++++++++++++++------------------
 2 files changed, 36 insertions(+), 33 deletions(-)

diff --git a/indra/cmake/LLRender.cmake b/indra/cmake/LLRender.cmake
index 6695ed6bd91..e438872772f 100644
--- a/indra/cmake/LLRender.cmake
+++ b/indra/cmake/LLRender.cmake
@@ -8,15 +8,18 @@ set(LLRENDER_INCLUDE_DIRS
     ${GLH_INCLUDE_DIR}
     )
 
-if ((SERVER OR BAKING) AND LINUX)
-  set(LLRENDER_LIBRARIES
-      llrenderheadless
-      )
-else ((SERVER OR BAKING) AND LINUX)
+#if ((SERVER OR BAKING) AND LINUX)
+#  set(LLRENDER_LIBRARIES
+#      llrenderheadless
+#      )
+#else ((SERVER OR BAKING) AND LINUX)
+#set(LLRENDER_LIBRARIES
+#    llrender
+#    )
+#endif ((SERVER OR BAKING) AND LINUX)
 set(LLRENDER_LIBRARIES
     llrender
     )
-endif ((SERVER OR BAKING) AND LINUX)
 
 # mapserver requires certain files to be copied so LL_MESA_HEADLESS can be set
 # differently for different object files.
diff --git a/indra/llrender/CMakeLists.txt b/indra/llrender/CMakeLists.txt
index 638ab23bd64..e45b55ef59a 100644
--- a/indra/llrender/CMakeLists.txt
+++ b/indra/llrender/CMakeLists.txt
@@ -83,23 +83,23 @@ list(APPEND llrender_SOURCE_FILES
      llrender.cpp
      llrendertarget.cpp
      )
-if ((SERVER OR BAKING) AND NOT WINDOWS AND NOT DARWIN)
-  copy_server_sources(
-      llgl
-      llrender
-      )
-
-
-  set_source_files_properties(
-    ${server_SOURCE_FILES}
-    PROPERTIES
-    COMPILE_FLAGS "-DLL_MESA=1 -DLL_MESA_HEADLESS=1"
-    )
-  add_library (llrenderheadless
-    ${llrender_SOURCE_FILES}
-    ${server_SOURCE_FILES}
-    )
-endif ((SERVER OR BAKING) AND NOT WINDOWS AND NOT DARWIN)
+ #if ((SERVER OR BAKING) AND NOT WINDOWS AND NOT DARWIN)
+ #  copy_server_sources(
+ #      llgl
+ #      llrender
+ #      )
+ #
+ #
+ #  set_source_files_properties(
+ #    ${server_SOURCE_FILES}
+ #    PROPERTIES
+ #    COMPILE_FLAGS "-DLL_MESA=1 -DLL_MESA_HEADLESS=1"
+ #    )
+#  add_library (llrenderheadless
+#    ${llrender_SOURCE_FILES}
+#    ${server_SOURCE_FILES}
+#    )
+#endif ((SERVER OR BAKING) AND NOT WINDOWS AND NOT DARWIN)
 
 add_library (llrender ${llrender_SOURCE_FILES})
 # Libraries on which this library depends, needed for Linux builds
@@ -116,14 +116,14 @@ target_link_libraries(llrender
     ${FREETYPE_LIBRARIES}
     ${OPENGL_LIBRARIES})
 
-target_link_libraries(llrenderheadless
-    ${LLCOMMON_LIBRARIES}
-    ${LLIMAGE_LIBRARIES}
-    ${LLMATH_LIBRARIES}
-    ${LLRENDER_LIBRARIES}
-    ${LLVFS_LIBRARIES}
-    ${LLXML_LIBRARIES}
-    ${LLVFS_LIBRARIES}
-    ${LLWINDOW_LIBRARIES}
-    ${OPENGL_LIBRARIES})
+#target_link_libraries(llrenderheadless
+#    ${LLCOMMON_LIBRARIES}
+#    ${LLIMAGE_LIBRARIES}
+#    ${LLMATH_LIBRARIES}
+#    ${LLRENDER_LIBRARIES}
+#    ${LLVFS_LIBRARIES}
+#    ${LLXML_LIBRARIES}
+#    ${LLVFS_LIBRARIES}
+#    ${LLWINDOW_LIBRARIES}
+#    ${OPENGL_LIBRARIES})
 
-- 
GitLab


From 0fc7c2aac14eaf1f2dbe9e64c02e1b68ae3e70ec Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Thu, 20 Sep 2012 06:32:43 +0000
Subject: [PATCH 090/436] Fix for windows compile issue

---
 indra/llcommon/llfile.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/llcommon/llfile.h b/indra/llcommon/llfile.h
index 7049ab13969..9d70db96ea8 100644
--- a/indra/llcommon/llfile.h
+++ b/indra/llcommon/llfile.h
@@ -38,7 +38,6 @@
 typedef FILE LLFILE;
 
 #include <fstream>
-#include <bits/postypes.h>
 #include <sys/stat.h>
 
 #if LL_WINDOWS
@@ -47,6 +46,7 @@ typedef struct _stat	llstat;
 #else
 typedef struct stat		llstat;
 #include <ext/stdio_filebuf.h>
+#include <bits/postypes.h>
 #endif
 
 #ifndef S_ISREG
-- 
GitLab


From ea98697c3d3e42e67c7cf2e1b111f1623cc10d71 Mon Sep 17 00:00:00 2001
From: Nyx Linden <nyx@lindenlab.com>
Date: Thu, 20 Sep 2012 16:01:03 +0000
Subject: [PATCH 091/436] updating mesa build & hash

---
 autobuild.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index 70cf2ee6b33..63f281f9b92 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -1432,9 +1432,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>19c6ce37e8ce4143d5bb2808ccb8e6ff</string>
+              <string>7c908e4fc031e13e65484d8cfd9a0be5</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-mesa/rev/264880/arch/Linux/installer/mesa-7.11.1-linux-20120918.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-mesa/rev/264880/arch/Linux/installer/mesa-7.11.1-linux-20120920.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
-- 
GitLab


From e9e459c89cdfc57f32ffc7c421e01f43348f3b6c Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Thu, 20 Sep 2012 17:13:16 +0000
Subject: [PATCH 092/436] Restoring llrenderheadless changes so we can fix them

---
 indra/cmake/LLRender.cmake    | 15 ++++------
 indra/llcommon/llfile.h       |  2 +-
 indra/llrender/CMakeLists.txt | 54 +++++++++++++++++------------------
 3 files changed, 34 insertions(+), 37 deletions(-)

diff --git a/indra/cmake/LLRender.cmake b/indra/cmake/LLRender.cmake
index e438872772f..6695ed6bd91 100644
--- a/indra/cmake/LLRender.cmake
+++ b/indra/cmake/LLRender.cmake
@@ -8,18 +8,15 @@ set(LLRENDER_INCLUDE_DIRS
     ${GLH_INCLUDE_DIR}
     )
 
-#if ((SERVER OR BAKING) AND LINUX)
-#  set(LLRENDER_LIBRARIES
-#      llrenderheadless
-#      )
-#else ((SERVER OR BAKING) AND LINUX)
-#set(LLRENDER_LIBRARIES
-#    llrender
-#    )
-#endif ((SERVER OR BAKING) AND LINUX)
+if ((SERVER OR BAKING) AND LINUX)
+  set(LLRENDER_LIBRARIES
+      llrenderheadless
+      )
+else ((SERVER OR BAKING) AND LINUX)
 set(LLRENDER_LIBRARIES
     llrender
     )
+endif ((SERVER OR BAKING) AND LINUX)
 
 # mapserver requires certain files to be copied so LL_MESA_HEADLESS can be set
 # differently for different object files.
diff --git a/indra/llcommon/llfile.h b/indra/llcommon/llfile.h
index 9d70db96ea8..7049ab13969 100644
--- a/indra/llcommon/llfile.h
+++ b/indra/llcommon/llfile.h
@@ -38,6 +38,7 @@
 typedef FILE LLFILE;
 
 #include <fstream>
+#include <bits/postypes.h>
 #include <sys/stat.h>
 
 #if LL_WINDOWS
@@ -46,7 +47,6 @@ typedef struct _stat	llstat;
 #else
 typedef struct stat		llstat;
 #include <ext/stdio_filebuf.h>
-#include <bits/postypes.h>
 #endif
 
 #ifndef S_ISREG
diff --git a/indra/llrender/CMakeLists.txt b/indra/llrender/CMakeLists.txt
index e45b55ef59a..638ab23bd64 100644
--- a/indra/llrender/CMakeLists.txt
+++ b/indra/llrender/CMakeLists.txt
@@ -83,23 +83,23 @@ list(APPEND llrender_SOURCE_FILES
      llrender.cpp
      llrendertarget.cpp
      )
- #if ((SERVER OR BAKING) AND NOT WINDOWS AND NOT DARWIN)
- #  copy_server_sources(
- #      llgl
- #      llrender
- #      )
- #
- #
- #  set_source_files_properties(
- #    ${server_SOURCE_FILES}
- #    PROPERTIES
- #    COMPILE_FLAGS "-DLL_MESA=1 -DLL_MESA_HEADLESS=1"
- #    )
-#  add_library (llrenderheadless
-#    ${llrender_SOURCE_FILES}
-#    ${server_SOURCE_FILES}
-#    )
-#endif ((SERVER OR BAKING) AND NOT WINDOWS AND NOT DARWIN)
+if ((SERVER OR BAKING) AND NOT WINDOWS AND NOT DARWIN)
+  copy_server_sources(
+      llgl
+      llrender
+      )
+
+
+  set_source_files_properties(
+    ${server_SOURCE_FILES}
+    PROPERTIES
+    COMPILE_FLAGS "-DLL_MESA=1 -DLL_MESA_HEADLESS=1"
+    )
+  add_library (llrenderheadless
+    ${llrender_SOURCE_FILES}
+    ${server_SOURCE_FILES}
+    )
+endif ((SERVER OR BAKING) AND NOT WINDOWS AND NOT DARWIN)
 
 add_library (llrender ${llrender_SOURCE_FILES})
 # Libraries on which this library depends, needed for Linux builds
@@ -116,14 +116,14 @@ target_link_libraries(llrender
     ${FREETYPE_LIBRARIES}
     ${OPENGL_LIBRARIES})
 
-#target_link_libraries(llrenderheadless
-#    ${LLCOMMON_LIBRARIES}
-#    ${LLIMAGE_LIBRARIES}
-#    ${LLMATH_LIBRARIES}
-#    ${LLRENDER_LIBRARIES}
-#    ${LLVFS_LIBRARIES}
-#    ${LLXML_LIBRARIES}
-#    ${LLVFS_LIBRARIES}
-#    ${LLWINDOW_LIBRARIES}
-#    ${OPENGL_LIBRARIES})
+target_link_libraries(llrenderheadless
+    ${LLCOMMON_LIBRARIES}
+    ${LLIMAGE_LIBRARIES}
+    ${LLMATH_LIBRARIES}
+    ${LLRENDER_LIBRARIES}
+    ${LLVFS_LIBRARIES}
+    ${LLXML_LIBRARIES}
+    ${LLVFS_LIBRARIES}
+    ${LLWINDOW_LIBRARIES}
+    ${OPENGL_LIBRARIES})
 
-- 
GitLab


From 8edf8b002db02af0abca1b06802bc0041f25c379 Mon Sep 17 00:00:00 2001
From: Nyx Linden <nyx@lindenlab.com>
Date: Thu, 20 Sep 2012 17:49:48 +0000
Subject: [PATCH 093/436] BUILDFIX: not including headless libraries if we
 haven't defined llrenderheadless

---
 indra/llrender/CMakeLists.txt | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/indra/llrender/CMakeLists.txt b/indra/llrender/CMakeLists.txt
index 638ab23bd64..f31446924fe 100644
--- a/indra/llrender/CMakeLists.txt
+++ b/indra/llrender/CMakeLists.txt
@@ -89,7 +89,6 @@ if ((SERVER OR BAKING) AND NOT WINDOWS AND NOT DARWIN)
       llrender
       )
 
-
   set_source_files_properties(
     ${server_SOURCE_FILES}
     PROPERTIES
@@ -99,12 +98,8 @@ if ((SERVER OR BAKING) AND NOT WINDOWS AND NOT DARWIN)
     ${llrender_SOURCE_FILES}
     ${server_SOURCE_FILES}
     )
-endif ((SERVER OR BAKING) AND NOT WINDOWS AND NOT DARWIN)
 
-add_library (llrender ${llrender_SOURCE_FILES})
-# Libraries on which this library depends, needed for Linux builds
-# Sort by high-level to low-level
-target_link_libraries(llrender 
+target_link_libraries(llrenderheadless
     ${LLCOMMON_LIBRARIES}
     ${LLIMAGE_LIBRARIES}
     ${LLMATH_LIBRARIES}
@@ -113,10 +108,14 @@ target_link_libraries(llrender
     ${LLXML_LIBRARIES}
     ${LLVFS_LIBRARIES}
     ${LLWINDOW_LIBRARIES}
-    ${FREETYPE_LIBRARIES}
     ${OPENGL_LIBRARIES})
 
-target_link_libraries(llrenderheadless
+endif ((SERVER OR BAKING) AND NOT WINDOWS AND NOT DARWIN)
+
+add_library (llrender ${llrender_SOURCE_FILES})
+# Libraries on which this library depends, needed for Linux builds
+# Sort by high-level to low-level
+target_link_libraries(llrender 
     ${LLCOMMON_LIBRARIES}
     ${LLIMAGE_LIBRARIES}
     ${LLMATH_LIBRARIES}
@@ -125,5 +124,6 @@ target_link_libraries(llrenderheadless
     ${LLXML_LIBRARIES}
     ${LLVFS_LIBRARIES}
     ${LLWINDOW_LIBRARIES}
+    ${FREETYPE_LIBRARIES}
     ${OPENGL_LIBRARIES})
 
-- 
GitLab


From 948820bdea1c34a7bffa5d0ec6af563914e6f4f1 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Fri, 21 Sep 2012 00:36:58 +0000
Subject: [PATCH 094/436] Updating libosmesa library

---
 autobuild.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index 81969ab7504..19dd39c19b9 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -1432,9 +1432,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>021e538c261e1a74c86bbe3b690a8469</string>
+              <string>bdfb275b9bfa071397fb5633a0f5d360</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-mesa/rev/264880/arch/Linux/installer/mesa-7.11.1-linux-20120918.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-mesa/rev/265010/arch/Linux/installer/mesa-7.11.1-linux-20120920.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
-- 
GitLab


From 3171c2414fd622f72c23e796d5cf54fb84f8eff0 Mon Sep 17 00:00:00 2001
From: Nyx Linden <nyx@lindenlab.com>
Date: Fri, 21 Sep 2012 18:22:36 +0000
Subject: [PATCH 095/436] Making computeBodySize public

---
 indra/llappearance/llavatarappearance.h | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/indra/llappearance/llavatarappearance.h b/indra/llappearance/llavatarappearance.h
index 4f573356886..a27779e2951 100644
--- a/indra/llappearance/llavatarappearance.h
+++ b/indra/llappearance/llavatarappearance.h
@@ -134,13 +134,15 @@ class LLAvatarAppearance : public LLCharacter
 
 	typedef std::map<std::string, LLJoint*> joint_map_t;
 	joint_map_t			mJointMap;
+	
+	void				computeBodySize();
+
 
 protected:
 	static BOOL			parseSkeletonFile(const std::string& filename);
 	virtual void		buildCharacter();
 	virtual BOOL		loadAvatar();
 	virtual void		bodySizeChanged() = 0;
-	void 				computeBodySize();
 
 	BOOL				setupBone(const LLAvatarBoneInfo* info, LLJoint* parent, S32 &current_volume_num, S32 &current_joint_num);
 	BOOL				allocateCharacterJoints(U32 num);
-- 
GitLab


From 2d36f9b98a95a384f712c711bf9fc4cbe53780aa Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Sat, 22 Sep 2012 03:39:32 +0000
Subject: [PATCH 096/436] Fix for missing symbols on windows builds

---
 indra/llrender/llgl.cpp | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/indra/llrender/llgl.cpp b/indra/llrender/llgl.cpp
index 27d8056ea26..0b56b3889c9 100644
--- a/indra/llrender/llgl.cpp
+++ b/indra/llrender/llgl.cpp
@@ -188,6 +188,9 @@ PFNGLWAITSYNCPROC				glWaitSync = NULL;
 PFNGLGETINTEGER64VPROC			glGetInteger64v = NULL;
 PFNGLGETSYNCIVPROC				glGetSynciv = NULL;
 
+// GL_APPLE_flush_buffer_range
+PFNGLBUFFERPARAMETERIAPPLEPROC	glBufferParameteriAPPLE = NULL;
+PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC glFlushMappedBufferRangeAPPLE = NULL;
 
 // vertex object prototypes
 PFNGLNEWOBJECTBUFFERATIPROC			glNewObjectBufferATI = NULL;
-- 
GitLab


From ecf72da021d16168688a833e776e8a76e80ee4d6 Mon Sep 17 00:00:00 2001
From: "developer@Developer-PC" <developer@Developer-PC>
Date: Fri, 21 Sep 2012 22:21:42 -0700
Subject: [PATCH 097/436] More windows build fixes

---
 indra/cmake/DirectX.cmake                    | 2 ++
 indra/llcommon/llfile.cpp                    | 6 +++---
 indra/llcommon/llfile.h                      | 2 +-
 indra/lscript/lscript_compile/CMakeLists.txt | 4 +++-
 indra/lscript/lscript_compile/bison.bat      | 9 +++++----
 5 files changed, 14 insertions(+), 9 deletions(-)

diff --git a/indra/cmake/DirectX.cmake b/indra/cmake/DirectX.cmake
index b2a18805d47..8cae6068484 100644
--- a/indra/cmake/DirectX.cmake
+++ b/indra/cmake/DirectX.cmake
@@ -3,6 +3,7 @@
 if (VIEWER AND WINDOWS)
   find_path(DIRECTX_INCLUDE_DIR dxdiag.h
             "$ENV{DXSDK_DIR}/Include"
+            "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (June 2010)/Include"
             "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (August 2009)/Include"
             "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (March 2009)/Include"
             "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (August 2008)/Include"
@@ -25,6 +26,7 @@ if (VIEWER AND WINDOWS)
 
   find_path(DIRECTX_LIBRARY_DIR dxguid.lib
             "$ENV{DXSDK_DIR}/Lib/x86"
+            "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (June 2010)/Lib/x86"
             "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (August 2009)/Lib/x86"
             "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (March 2009)/Lib/x86"
             "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (August 2008)/Lib/x86"
diff --git a/indra/llcommon/llfile.cpp b/indra/llcommon/llfile.cpp
index deab7a87fc1..bc615ed39ec 100644
--- a/indra/llcommon/llfile.cpp
+++ b/indra/llcommon/llfile.cpp
@@ -329,7 +329,7 @@ const char *LLFile::tmpdir()
 #if LL_WINDOWS
 
 LLFILE *	LLFile::_Fiopen(const std::string& filename, 
-		std::ios::openmode mode,int)	// protection currently unused
+		std::ios::openmode mode)
 {	// open a file
 	static const char *mods[] =
 	{	// fopen mode strings corresponding to valid[i]
@@ -899,7 +899,7 @@ llifstream::llifstream(_Filet *_File,
 }
 #endif
 
-#if LL_WINDOWS
+#if !LL_WINDOWS
 // explicit
 llifstream::llifstream(int __fd,
 		ios_base::openmode _Mode, size_t _Size) :
@@ -1014,7 +1014,7 @@ llofstream::llofstream(_Filet *_File,
 }
 #endif
 
-#if LL_WINDOWS
+#if !LL_WINDOWS
 // explicit
 llofstream::llofstream(int __fd,
 			ios_base::openmode _Mode, size_t _Size) :
diff --git a/indra/llcommon/llfile.h b/indra/llcommon/llfile.h
index 7049ab13969..9d70db96ea8 100644
--- a/indra/llcommon/llfile.h
+++ b/indra/llcommon/llfile.h
@@ -38,7 +38,6 @@
 typedef FILE LLFILE;
 
 #include <fstream>
-#include <bits/postypes.h>
 #include <sys/stat.h>
 
 #if LL_WINDOWS
@@ -47,6 +46,7 @@ typedef struct _stat	llstat;
 #else
 typedef struct stat		llstat;
 #include <ext/stdio_filebuf.h>
+#include <bits/postypes.h>
 #endif
 
 #ifndef S_ISREG
diff --git a/indra/lscript/lscript_compile/CMakeLists.txt b/indra/lscript/lscript_compile/CMakeLists.txt
index 134703eed3e..13cbd3ffd22 100644
--- a/indra/lscript/lscript_compile/CMakeLists.txt
+++ b/indra/lscript/lscript_compile/CMakeLists.txt
@@ -113,8 +113,10 @@ if (WINDOWS)
         ${CMAKE_CURRENT_BINARY_DIR}/indra.y.cpp
         ${CMAKE_CURRENT_BINARY_DIR}/indra.y.hpp
       COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/bison.bat
+      ARGS
         ${BISON} ${M4_PATH}
-        ${CMAKE_CURRENT_BINARY_DIR}/indra.y.cpp
+	-p indra_
+        -d -o ${CMAKE_CURRENT_BINARY_DIR}/indra.y.cpp
         ${CMAKE_CURRENT_SOURCE_DIR}/indra.y
       DEPENDS
         ${CMAKE_CURRENT_SOURCE_DIR}/bison.bat
diff --git a/indra/lscript/lscript_compile/bison.bat b/indra/lscript/lscript_compile/bison.bat
index 0baff4e5ef9..d40997225e0 100644
--- a/indra/lscript/lscript_compile/bison.bat
+++ b/indra/lscript/lscript_compile/bison.bat
@@ -2,10 +2,11 @@
 @REM find m4, even if neither program is present in PATH.
 
 @set bison=%1
-set M4PATH=%2
+shift
+set M4PATH=%1
+shift
 set M4=
-@set output=%3
-@set input=%4
 
 set PATH=%M4PATH%;%PATH%
-%bison% -d -o %output% %input%
+@REM %* does not work with shift...
+%bison% %1 %2 %3 %4 %5 %6 %7 %8 %9
-- 
GitLab


From 6ec47d8c317bc640c2dea35843517c885ec993d2 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Sat, 22 Sep 2012 18:25:54 +0000
Subject: [PATCH 098/436] Updating appearance utility source version

---
 autobuild.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index 19dd39c19b9..49d8ca14bd1 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -1254,9 +1254,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>94e9e2224000a575fd80b75db52e54b8</string>
+              <string>2b9b2a86d70c87a6a5942faac278b57f</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/264762/arch/Linux/installer/llappearanceutility_source-0.1-linux-20120914.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/265061/arch/Linux/installer/llappearanceutility_source-0.1-linux-20120921.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
-- 
GitLab


From 4084d9aa80f4077a9fa09c8d87d29658f90248ac Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Sat, 22 Sep 2012 19:45:58 -0700
Subject: [PATCH 099/436] Fixed llhttpclient_test integration test.  Removed
 mini-C++ server code in favor of pre-exising python http server

---
 indra/llmessage/tests/llhttpclient_test.cpp   |  84 +----
 .../llmessage/tests/test_llsdmessage_peer.py  | 326 ++++++++++--------
 2 files changed, 183 insertions(+), 227 deletions(-)

diff --git a/indra/llmessage/tests/llhttpclient_test.cpp b/indra/llmessage/tests/llhttpclient_test.cpp
index e338d4ec71e..4a9db7cd982 100644
--- a/indra/llmessage/tests/llhttpclient_test.cpp
+++ b/indra/llmessage/tests/llhttpclient_test.cpp
@@ -47,37 +47,6 @@
 
 namespace tut
 {
-	LLSD storage;
-	
-	class LLSDStorageNode : public LLHTTPNode
-	{
-	public:
-		LLSD simpleGet() const					{ return storage; }
-		LLSD simplePut(const LLSD& value) const	{ storage = value; return LLSD(); }
-	};
-
-	class ErrorNode : public LLHTTPNode
-	{
-	public:
-		void get(ResponsePtr r, const LLSD& context) const
-			{ r->status(599, "Intentional error"); }
-		void post(ResponsePtr r, const LLSD& context, const LLSD& input) const
-			{ r->status(input["status"], input["reason"]); }
-	};
-
-	class TimeOutNode : public LLHTTPNode
-	{
-	public:
-		void get(ResponsePtr r, const LLSD& context) const
-		{
-            /* do nothing, the request will eventually time out */ 
-		}
-	};
-
-	LLHTTPRegistration<LLSDStorageNode> gStorageNode("/test/storage");
-	LLHTTPRegistration<ErrorNode>		gErrorNode("/test/error");
-	LLHTTPRegistration<TimeOutNode>		gTimeOutNode("/test/timeout");
-
 	struct HTTPClientTestData
 	{
 	public:
@@ -86,7 +55,6 @@ namespace tut
 		{
 			apr_pool_create(&mPool, NULL);
 			LLCurl::initClass(false);
-			mServerPump = new LLPumpIO(mPool);
 			mClientPump = new LLPumpIO(mPool);
 
 			LLHTTPClient::setPump(*mClientPump);
@@ -94,20 +62,11 @@ namespace tut
 		
 		~HTTPClientTestData()
 		{
-			delete mServerPump;
 			delete mClientPump;
 			LLProxy::cleanupClass();
 			apr_pool_destroy(mPool);
 		}
 
-		void setupTheServer()
-		{
-			LLHTTPNode& root = LLIOHTTPServer::create(mPool, *mServerPump, 8888);
-
-			LLHTTPStandardServices::useServices();
-			LLHTTPRegistrar::buildAllServices(root);
-		}
-		
 		void runThePump(float timeout = 100.0f)
 		{
 			LLTimer timer;
@@ -115,11 +74,7 @@ namespace tut
 
 			while(!mSawCompleted && !mSawCompletedHeader && !timer.hasExpired())
 			{
-				if (mServerPump)
-				{
-					mServerPump->pump();
-					mServerPump->callback();
-				}
+				LLFrameTimer::updateFrameTime();
 				if (mClientPump)
 				{
 					mClientPump->pump();
@@ -128,17 +83,10 @@ namespace tut
 			}
 		}
 
-		void killServer()
-		{
-			delete mServerPump;
-			mServerPump = NULL;
-		}
-
 		const std::string local_server;
 
 	private:
 		apr_pool_t* mPool;
-		LLPumpIO* mServerPump;
 		LLPumpIO* mClientPump;
 
 	protected:
@@ -283,14 +231,12 @@ namespace tut
 		sd["list"][1]["three"] = 3;
 		sd["list"][1]["four"] = 4;
 		
-		setupTheServer();
-
-		LLHTTPClient::post("http://localhost:8888/web/echo", sd, newResult());
+		LLHTTPClient::post(local_server + "web/echo", sd, newResult());
 		runThePump();
 		ensureStatusOK();
 		ensure_equals("echoed result matches", getResult(), sd);
 	}
-
+		
 	template<> template<>
 		void HTTPClientTestObject::test<4>()
 	{
@@ -298,12 +244,11 @@ namespace tut
 
 		sd["message"] = "This is my test message.";
 
-		setupTheServer();
-		LLHTTPClient::put("http://localhost:8888/test/storage", sd, newResult());
+		LLHTTPClient::put(local_server + "test/storage", sd, newResult());
 		runThePump();
 		ensureStatusOK();
 
-		LLHTTPClient::get("http://localhost:8888/test/storage", newResult());
+		LLHTTPClient::get(local_server + "test/storage", newResult());
 		runThePump();
 		ensureStatusOK();
 		ensure_equals("echoed result matches", getResult(), sd);
@@ -317,9 +262,7 @@ namespace tut
 		sd["status"] = 543;
 		sd["reason"] = "error for testing";
 
-		setupTheServer();
-
-		LLHTTPClient::post("http://localhost:8888/test/error", sd, newResult());
+		LLHTTPClient::post(local_server + "test/error", sd, newResult());
 		runThePump();
 		ensureStatusError();
 		ensure_contains("reason", mReason, sd["reason"]);
@@ -328,23 +271,16 @@ namespace tut
 	template<> template<>
 		void HTTPClientTestObject::test<6>()
 	{
-		setupTheServer();
-
-		LLHTTPClient::get("http://localhost:8888/test/timeout", newResult());
-		runThePump(1.0f);
-		killServer();
-		runThePump();
+		const F32 timeout = 1.0f;
+		LLHTTPClient::get(local_server + "test/timeout", newResult(), LLSD(), timeout);
+		runThePump(timeout * 5.0f);
 		ensureStatusError();
-		ensure_equals("reason", mReason, "STATUS_ERROR");
+		ensure_equals("reason", mReason, "STATUS_EXPIRED");
 	}
 
 	template<> template<>
 		void HTTPClientTestObject::test<7>()
 	{
-		// Can not use the little mini server.  The blocking request
-		// won't ever let it run.  Instead get from a known LLSD
-		// source and compare results with the non-blocking get which
-		// is tested against the mini server earlier.
 		LLHTTPClient::get(local_server, newResult());
 		runThePump();
 		ensureStatusOK();
diff --git a/indra/llmessage/tests/test_llsdmessage_peer.py b/indra/llmessage/tests/test_llsdmessage_peer.py
index fe4f3a8c011..b59c5a06cd6 100644
--- a/indra/llmessage/tests/test_llsdmessage_peer.py
+++ b/indra/llmessage/tests/test_llsdmessage_peer.py
@@ -1,153 +1,173 @@
-#!/usr/bin/env python
-"""\
-@file   test_llsdmessage_peer.py
-@author Nat Goodspeed
-@date   2008-10-09
-@brief  This script asynchronously runs the executable (with args) specified on
-        the command line, returning its result code. While that executable is
-        running, we provide dummy local services for use by C++ tests.
-
-$LicenseInfo:firstyear=2008&license=viewerlgpl$
-Second Life Viewer Source Code
-Copyright (C) 2010, Linden Research, Inc.
-
-This library is free software; you can redistribute it and/or
-modify it under the terms of the GNU Lesser General Public
-License as published by the Free Software Foundation;
-version 2.1 of the License only.
-
-This library is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-Lesser General Public License for more details.
-
-You should have received a copy of the GNU Lesser General Public
-License along with this library; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-
-Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
-$/LicenseInfo$
-"""
-
-import os
-import sys
-from threading import Thread
-from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler
-
-mydir = os.path.dirname(__file__)       # expected to be .../indra/llmessage/tests/
-sys.path.insert(0, os.path.join(mydir, os.pardir, os.pardir, "lib", "python"))
-from indra.util.fastest_elementtree import parse as xml_parse
-from indra.base import llsd
-from testrunner import freeport, run, debug, VERBOSE
-
-class TestHTTPRequestHandler(BaseHTTPRequestHandler):
-    """This subclass of BaseHTTPRequestHandler is to receive and echo
-    LLSD-flavored messages sent by the C++ LLHTTPClient.
-    """
-    def read(self):
-        # The following logic is adapted from the library module
-        # SimpleXMLRPCServer.py.
-        # Get arguments by reading body of request.
-        # We read this in chunks to avoid straining
-        # socket.read(); around the 10 or 15Mb mark, some platforms
-        # begin to have problems (bug #792570).
-        try:
-            size_remaining = int(self.headers["content-length"])
-        except (KeyError, ValueError):
-            return ""
-        max_chunk_size = 10*1024*1024
-        L = []
-        while size_remaining:
-            chunk_size = min(size_remaining, max_chunk_size)
-            chunk = self.rfile.read(chunk_size)
-            L.append(chunk)
-            size_remaining -= len(chunk)
-        return ''.join(L)
-        # end of swiped read() logic
-
-    def read_xml(self):
-        # This approach reads the entire POST data into memory first
-        return llsd.parse(self.read())
-##         # This approach attempts to stream in the LLSD XML from self.rfile,
-##         # assuming that the underlying XML parser reads its input file
-##         # incrementally. Unfortunately I haven't been able to make it work.
-##         tree = xml_parse(self.rfile)
-##         debug("Finished raw parse")
-##         debug("parsed XML tree %s", tree)
-##         debug("parsed root node %s", tree.getroot())
-##         debug("root node tag %s", tree.getroot().tag)
-##         return llsd.to_python(tree.getroot())
-
-    def do_HEAD(self):
-        self.do_GET(withdata=False)
-
-    def do_GET(self, withdata=True):
-        # Of course, don't attempt to read data.
-        data = dict(reply="success", body="avatar", random=17)
-        self.answer(data, withdata=withdata)
-
-    def do_POST(self):
-        # Read the provided POST data.
-        self.answer(self.read_xml())
-
-    def answer(self, data, withdata=True):
-        debug("%s.answer(%s): self.path = %r", self.__class__.__name__, data, self.path)
-        if "fail" not in self.path:
-            data = data.copy()          # we're going to modify
-            # Ensure there's a "reply" key in data, even if there wasn't before
-            data["reply"] = data.get("reply", llsd.LLSD("success"))
-            response = llsd.format_xml(data)
-            debug("success: %s", response)
-            self.send_response(200)
-            self.send_header("Content-type", "application/llsd+xml")
-            self.send_header("Content-Length", str(len(response)))
-            self.end_headers()
-            if withdata:
-                self.wfile.write(response)
-        else:                           # fail requested
-            status = data.get("status", 500)
-            # self.responses maps an int status to a (short, long) pair of
-            # strings. We want the longer string. That's why we pass a string
-            # pair to get(): the [1] will select the second string, whether it
-            # came from self.responses or from our default pair.
-            reason = data.get("reason",
-                               self.responses.get(status,
-                                                  ("fail requested",
-                                                   "Your request specified failure status %s "
-                                                   "without providing a reason" % status))[1])
-            debug("fail requested: %s: %r", status, reason)
-            self.send_error(status, reason)
-
-    if not VERBOSE:
-        # When VERBOSE is set, skip both these overrides because they exist to
-        # suppress output.
-
-        def log_request(self, code, size=None):
-            # For present purposes, we don't want the request splattered onto
-            # stderr, as it would upset devs watching the test run
-            pass
-
-        def log_error(self, format, *args):
-            # Suppress error output as well
-            pass
-
-class Server(HTTPServer):
-    # This pernicious flag is on by default in HTTPServer. But proper
-    # operation of freeport() absolutely depends on it being off.
-    allow_reuse_address = False
-
-if __name__ == "__main__":
-    # Instantiate a Server(TestHTTPRequestHandler) on the first free port
-    # in the specified port range. Doing this inline is better than in a
-    # daemon thread: if it blows up here, we'll get a traceback. If it blew up
-    # in some other thread, the traceback would get eaten and we'd run the
-    # subject test program anyway.
-    httpd, port = freeport(xrange(8000, 8020),
-                           lambda port: Server(('127.0.0.1', port), TestHTTPRequestHandler))
-    # Pass the selected port number to the subject test program via the
-    # environment. We don't want to impose requirements on the test program's
-    # command-line parsing -- and anyway, for C++ integration tests, that's
-    # performed in TUT code rather than our own.
-    os.environ["PORT"] = str(port)
-    debug("$PORT = %s", port)
-    sys.exit(run(server=Thread(name="httpd", target=httpd.serve_forever), *sys.argv[1:]))
+#!/usr/bin/env python
+"""\
+@file   test_llsdmessage_peer.py
+@author Nat Goodspeed
+@date   2008-10-09
+@brief  This script asynchronously runs the executable (with args) specified on
+        the command line, returning its result code. While that executable is
+        running, we provide dummy local services for use by C++ tests.
+
+$LicenseInfo:firstyear=2008&license=viewerlgpl$
+Second Life Viewer Source Code
+Copyright (C) 2010, Linden Research, Inc.
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation;
+version 2.1 of the License only.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+$/LicenseInfo$
+"""
+
+import os
+import sys
+from threading import Thread
+from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler
+
+mydir = os.path.dirname(__file__)       # expected to be .../indra/llmessage/tests/
+sys.path.insert(0, os.path.join(mydir, os.pardir, os.pardir, "lib", "python"))
+from indra.util.fastest_elementtree import parse as xml_parse
+from indra.base import llsd
+from testrunner import freeport, run, debug, VERBOSE
+import time
+
+_storage=None
+
+class TestHTTPRequestHandler(BaseHTTPRequestHandler):
+    """This subclass of BaseHTTPRequestHandler is to receive and echo
+    LLSD-flavored messages sent by the C++ LLHTTPClient.
+    """
+    def read(self):
+        # The following logic is adapted from the library module
+        # SimpleXMLRPCServer.py.
+        # Get arguments by reading body of request.
+        # We read this in chunks to avoid straining
+        # socket.read(); around the 10 or 15Mb mark, some platforms
+        # begin to have problems (bug #792570).
+        try:
+            size_remaining = int(self.headers["content-length"])
+        except (KeyError, ValueError):
+            return ""
+        max_chunk_size = 10*1024*1024
+        L = []
+        while size_remaining:
+            chunk_size = min(size_remaining, max_chunk_size)
+            chunk = self.rfile.read(chunk_size)
+            L.append(chunk)
+            size_remaining -= len(chunk)
+        return ''.join(L)
+        # end of swiped read() logic
+
+    def read_xml(self):
+        # This approach reads the entire POST data into memory first
+        return llsd.parse(self.read())
+##         # This approach attempts to stream in the LLSD XML from self.rfile,
+##         # assuming that the underlying XML parser reads its input file
+##         # incrementally. Unfortunately I haven't been able to make it work.
+##         tree = xml_parse(self.rfile)
+##         debug("Finished raw parse")
+##         debug("parsed XML tree %s", tree)
+##         debug("parsed root node %s", tree.getroot())
+##         debug("root node tag %s", tree.getroot().tag)
+##         return llsd.to_python(tree.getroot())
+
+    def do_HEAD(self):
+        self.do_GET(withdata=False)
+
+    def do_GET(self, withdata=True):
+        # Of course, don't attempt to read data.
+        data = dict(reply="success", body="avatar", random=17)
+        self.answer(data, withdata=withdata)
+
+    def do_POST(self):
+        # Read the provided POST data.
+        self.answer(self.read_xml())
+
+    def do_PUT(self):
+        # Read the provided PUT data.
+        self.answer(self.read_xml())
+
+    def answer(self, data, withdata=True):
+        global _storage
+        debug("%s.answer(%s): self.path = %r", self.__class__.__name__, data, self.path)
+        if "fail" in self.path or "test/error" in self.path: # fail requested
+            status = data.get("status", 500)
+            # self.responses maps an int status to a (short, long) pair of
+            # strings. We want the longer string. That's why we pass a string
+            # pair to get(): the [1] will select the second string, whether it
+            # came from self.responses or from our default pair.
+            reason = data.get("reason",
+                               self.responses.get(status,
+                                                  ("fail requested",
+                                                   "Your request specified failure status %s "
+                                                   "without providing a reason" % status))[1])
+            debug("fail requested: %s: %r", status, reason)
+            self.send_error(status, reason)
+        else:
+            if "web/echo" in self.path:
+                pass
+            elif "test/timeout" in self.path:
+                time.sleep(5.0)
+                return
+            elif "test/storage" in self.path:
+                if "GET" == self.command:
+                    data = _storage
+                else:
+                    _storage = data
+                    data = "ok"
+            else:
+                data = data.copy()          # we're going to modify
+                # Ensure there's a "reply" key in data, even if there wasn't before
+                data["reply"] = data.get("reply", llsd.LLSD("success"))
+            response = llsd.format_xml(data)
+            debug("success: %s", response)
+            self.send_response(200)
+            self.send_header("Content-type", "application/llsd+xml")
+            self.send_header("Content-Length", str(len(response)))
+            self.end_headers()
+            if withdata:
+                self.wfile.write(response)
+
+    if not VERBOSE:
+        # When VERBOSE is set, skip both these overrides because they exist to
+        # suppress output.
+
+        def log_request(self, code, size=None):
+            # For present purposes, we don't want the request splattered onto
+            # stderr, as it would upset devs watching the test run
+            pass
+
+        def log_error(self, format, *args):
+            # Suppress error output as well
+            pass
+
+class Server(HTTPServer):
+    # This pernicious flag is on by default in HTTPServer. But proper
+    # operation of freeport() absolutely depends on it being off.
+    allow_reuse_address = False
+
+if __name__ == "__main__":
+    # Instantiate a Server(TestHTTPRequestHandler) on the first free port
+    # in the specified port range. Doing this inline is better than in a
+    # daemon thread: if it blows up here, we'll get a traceback. If it blew up
+    # in some other thread, the traceback would get eaten and we'd run the
+    # subject test program anyway.
+    httpd, port = freeport(xrange(8000, 8020),
+                           lambda port: Server(('127.0.0.1', port), TestHTTPRequestHandler))
+    # Pass the selected port number to the subject test program via the
+    # environment. We don't want to impose requirements on the test program's
+    # command-line parsing -- and anyway, for C++ integration tests, that's
+    # performed in TUT code rather than our own.
+    os.environ["PORT"] = str(port)
+    debug("$PORT = %s", port)
+    sys.exit(run(server=Thread(name="httpd", target=httpd.serve_forever), *sys.argv[1:]))
-- 
GitLab


From d3924200b6b8817461c0f10f87a643005466d4af Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Sun, 23 Sep 2012 03:06:11 +0000
Subject: [PATCH 100/436] Removing unused gHeadlessClient code from viewer

---
 autobuild.xml                           |  4 +-
 indra/llrender/llgl.cpp                 | 60 +++++--------------------
 indra/llrender/llgl.h                   |  1 -
 indra/llrender/llimagegl.cpp            |  2 -
 indra/llwindow/llwindow.cpp             | 34 +++++---------
 indra/llwindow/llwindow.h               |  1 -
 indra/llwindow/llwindowheadless.cpp     |  2 +-
 indra/llwindow/llwindowheadless.h       |  2 +-
 indra/llwindow/llwindowmacosx.cpp       |  3 +-
 indra/llwindow/llwindowmacosx.h         |  2 +-
 indra/llwindow/llwindowmesaheadless.cpp | 29 ++++++------
 indra/llwindow/llwindowmesaheadless.h   |  2 +-
 indra/llwindow/llwindowsdl.cpp          |  3 +-
 indra/llwindow/llwindowsdl.h            |  2 +-
 indra/llwindow/llwindowwin32.cpp        |  2 +-
 indra/llwindow/llwindowwin32.h          |  2 +-
 indra/newview/llappviewer.cpp           | 10 ++---
 indra/newview/llstartup.cpp             | 11 -----
 indra/newview/llviewerdisplay.cpp       | 18 --------
 indra/newview/llviewerobjectlist.cpp    |  1 -
 indra/newview/llviewerwindow.cpp        | 47 +------------------
 indra/newview/pipeline.cpp              |  1 -
 22 files changed, 51 insertions(+), 188 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index 49d8ca14bd1..0c2fb6783f5 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -1254,9 +1254,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>2b9b2a86d70c87a6a5942faac278b57f</string>
+              <string>9ddf0bb2238a937f0115d6c9f0cf723f</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/265061/arch/Linux/installer/llappearanceutility_source-0.1-linux-20120921.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/265084/arch/Linux/installer/llappearanceutility_source-0.1-linux-20120923.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
diff --git a/indra/llrender/llgl.cpp b/indra/llrender/llgl.cpp
index 0b56b3889c9..a53c3ca9b7b 100644
--- a/indra/llrender/llgl.cpp
+++ b/indra/llrender/llgl.cpp
@@ -58,13 +58,8 @@
 BOOL gDebugSession = FALSE;
 BOOL gDebugGL = FALSE;
 BOOL gClothRipple = FALSE;
-BOOL gHeadlessClient = FALSE;
 BOOL gGLActive = FALSE;
 
-static const std::string HEADLESS_VENDOR_STRING("Linden Lab");
-static const std::string HEADLESS_RENDERER_STRING("Headless");
-static const std::string HEADLESS_VERSION_STRING("1.0");
-
 std::ofstream gFailLog;
 
 #if GL_ARB_debug_output
@@ -789,19 +784,9 @@ void LLGLManager::setToDebugGPU()
 
 void LLGLManager::getGLInfo(LLSD& info)
 {
-	if (gHeadlessClient)
-	{
-		info["GLInfo"]["GLVendor"] = HEADLESS_VENDOR_STRING;
-		info["GLInfo"]["GLRenderer"] = HEADLESS_RENDERER_STRING;
-		info["GLInfo"]["GLVersion"] = HEADLESS_VERSION_STRING;
-		return;
-	}
-	else
-	{
-		info["GLInfo"]["GLVendor"] = std::string((const char *)glGetString(GL_VENDOR));
-		info["GLInfo"]["GLRenderer"] = std::string((const char *)glGetString(GL_RENDERER));
-		info["GLInfo"]["GLVersion"] = std::string((const char *)glGetString(GL_VERSION));
-	}
+	info["GLInfo"]["GLVendor"] = std::string((const char *)glGetString(GL_VENDOR));
+	info["GLInfo"]["GLRenderer"] = std::string((const char *)glGetString(GL_RENDERER));
+	info["GLInfo"]["GLVersion"] = std::string((const char *)glGetString(GL_VERSION));
 
 #if !LL_MESA_HEADLESS
 	std::string all_exts = ll_safe_string((const char *)gGLHExts.mSysExts);
@@ -818,18 +803,9 @@ std::string LLGLManager::getGLInfoString()
 {
 	std::string info_str;
 
-	if (gHeadlessClient)
-	{
-		info_str += std::string("GL_VENDOR      ") + HEADLESS_VENDOR_STRING + std::string("\n");
-		info_str += std::string("GL_RENDERER    ") + HEADLESS_RENDERER_STRING + std::string("\n");
-		info_str += std::string("GL_VERSION     ") + HEADLESS_VERSION_STRING + std::string("\n");
-	}
-	else
-	{
-		info_str += std::string("GL_VENDOR      ") + ll_safe_string((const char *)glGetString(GL_VENDOR)) + std::string("\n");
-		info_str += std::string("GL_RENDERER    ") + ll_safe_string((const char *)glGetString(GL_RENDERER)) + std::string("\n");
-		info_str += std::string("GL_VERSION     ") + ll_safe_string((const char *)glGetString(GL_VERSION)) + std::string("\n");
-	}
+	info_str += std::string("GL_VENDOR      ") + ll_safe_string((const char *)glGetString(GL_VENDOR)) + std::string("\n");
+	info_str += std::string("GL_RENDERER    ") + ll_safe_string((const char *)glGetString(GL_RENDERER)) + std::string("\n");
+	info_str += std::string("GL_VERSION     ") + ll_safe_string((const char *)glGetString(GL_VERSION)) + std::string("\n");
 
 #if !LL_MESA_HEADLESS 
 	std::string all_exts= ll_safe_string(((const char *)gGLHExts.mSysExts));
@@ -842,18 +818,9 @@ std::string LLGLManager::getGLInfoString()
 
 void LLGLManager::printGLInfoString()
 {
-	if (gHeadlessClient)
-	{
-		LL_INFOS("RenderInit") << "GL_VENDOR:     " << HEADLESS_VENDOR_STRING << LL_ENDL;
-		LL_INFOS("RenderInit") << "GL_RENDERER:   " << HEADLESS_RENDERER_STRING << LL_ENDL;
-		LL_INFOS("RenderInit") << "GL_VERSION:    " << HEADLESS_VERSION_STRING << LL_ENDL;
-	}
-	else
-	{
-		LL_INFOS("RenderInit") << "GL_VENDOR:     " << ((const char *)glGetString(GL_VENDOR)) << LL_ENDL;
-		LL_INFOS("RenderInit") << "GL_RENDERER:   " << ((const char *)glGetString(GL_RENDERER)) << LL_ENDL;
-		LL_INFOS("RenderInit") << "GL_VERSION:    " << ((const char *)glGetString(GL_VERSION)) << LL_ENDL;
-	}
+	LL_INFOS("RenderInit") << "GL_VENDOR:     " << ((const char *)glGetString(GL_VENDOR)) << LL_ENDL;
+	LL_INFOS("RenderInit") << "GL_RENDERER:   " << ((const char *)glGetString(GL_RENDERER)) << LL_ENDL;
+	LL_INFOS("RenderInit") << "GL_VERSION:    " << ((const char *)glGetString(GL_VERSION)) << LL_ENDL;
 
 #if !LL_MESA_HEADLESS
 	std::string all_exts= ll_safe_string(((const char *)gGLHExts.mSysExts));
@@ -865,14 +832,7 @@ void LLGLManager::printGLInfoString()
 std::string LLGLManager::getRawGLString()
 {
 	std::string gl_string;
-	if (gHeadlessClient)
-	{
-		gl_string = HEADLESS_VENDOR_STRING + " " + HEADLESS_RENDERER_STRING;
-	}
-	else
-	{
-		gl_string = ll_safe_string((char*)glGetString(GL_VENDOR)) + " " + ll_safe_string((char*)glGetString(GL_RENDERER));
-	}
+	gl_string = ll_safe_string((char*)glGetString(GL_VENDOR)) + " " + ll_safe_string((char*)glGetString(GL_RENDERER));
 	return gl_string;
 }
 
diff --git a/indra/llrender/llgl.h b/indra/llrender/llgl.h
index 964495a3abc..d77c3ede068 100644
--- a/indra/llrender/llgl.h
+++ b/indra/llrender/llgl.h
@@ -453,7 +453,6 @@ void init_glstates();
 void parse_gl_version( S32* major, S32* minor, S32* release, std::string* vendor_specific, std::string* version_string );
 
 extern BOOL gClothRipple;
-extern BOOL gHeadlessClient;
 extern BOOL gGLActive;
 
 // Deal with changing glext.h definitions for newer SDK versions, specifically
diff --git a/indra/llrender/llimagegl.cpp b/indra/llrender/llimagegl.cpp
index a4d7872ec25..d561f63544b 100755
--- a/indra/llrender/llimagegl.cpp
+++ b/indra/llrender/llimagegl.cpp
@@ -1222,7 +1222,6 @@ void LLImageGL::setManualImage(U32 target, S32 miplevel, S32 intformat, S32 widt
 //the texture is assiciate with some image by calling glTexImage outside LLImageGL
 BOOL LLImageGL::createGLTexture()
 {
-	if (gHeadlessClient) return FALSE;
 	if (gGLManager.mIsDisabled)
 	{
 		llwarns << "Trying to create a texture while GL is disabled!" << llendl;
@@ -1252,7 +1251,6 @@ BOOL LLImageGL::createGLTexture()
 
 BOOL LLImageGL::createGLTexture(S32 discard_level, const LLImageRaw* imageraw, S32 usename/*=0*/, BOOL to_create, S32 category)
 {
-	if (gHeadlessClient) return FALSE;
 	if (gGLManager.mIsDisabled)
 	{
 		llwarns << "Trying to create a texture while GL is disabled!" << llendl;
diff --git a/indra/llwindow/llwindow.cpp b/indra/llwindow/llwindow.cpp
index d83278d8758..9e4ad310c74 100644
--- a/indra/llwindow/llwindow.cpp
+++ b/indra/llwindow/llwindow.cpp
@@ -388,38 +388,28 @@ LLWindow* LLWindowManager::createWindow(
 	BOOL fullscreen, 
 	BOOL clearBg,
 	BOOL disable_vsync,
-	BOOL use_gl,
 	BOOL ignore_pixel_depth,
 	U32 fsaa_samples)
 {
 	LLWindow* new_window;
 
-	if (use_gl)
-	{
 #if LL_MESA_HEADLESS
-		new_window = new LLWindowMesaHeadless(callbacks,
-			title, name, x, y, width, height, flags, 
-			fullscreen, clearBg, disable_vsync, use_gl, ignore_pixel_depth);
+	new_window = new LLWindowMesaHeadless(callbacks,
+		title, name, x, y, width, height, flags, 
+		fullscreen, clearBg, disable_vsync, ignore_pixel_depth);
 #elif LL_SDL
-		new_window = new LLWindowSDL(callbacks,
-			title, x, y, width, height, flags, 
-			fullscreen, clearBg, disable_vsync, use_gl, ignore_pixel_depth, fsaa_samples);
+	new_window = new LLWindowSDL(callbacks,
+		title, x, y, width, height, flags, 
+		fullscreen, clearBg, disable_vsync, ignore_pixel_depth, fsaa_samples);
 #elif LL_WINDOWS
-		new_window = new LLWindowWin32(callbacks,
-			title, name, x, y, width, height, flags, 
-			fullscreen, clearBg, disable_vsync, use_gl, ignore_pixel_depth, fsaa_samples);
+	new_window = new LLWindowWin32(callbacks,
+		title, name, x, y, width, height, flags, 
+		fullscreen, clearBg, disable_vsync, ignore_pixel_depth, fsaa_samples);
 #elif LL_DARWIN
-		new_window = new LLWindowMacOSX(callbacks,
-			title, name, x, y, width, height, flags, 
-			fullscreen, clearBg, disable_vsync, use_gl, ignore_pixel_depth, fsaa_samples);
+	new_window = new LLWindowMacOSX(callbacks,
+		title, name, x, y, width, height, flags, 
+		fullscreen, clearBg, disable_vsync, ignore_pixel_depth, fsaa_samples);
 #endif
-	}
-	else
-	{
-		new_window = new LLWindowHeadless(callbacks,
-			title, name, x, y, width, height, flags, 
-			fullscreen, clearBg, disable_vsync, use_gl, ignore_pixel_depth);
-	}
 
 	if (FALSE == new_window->isValid())
 	{
diff --git a/indra/llwindow/llwindow.h b/indra/llwindow/llwindow.h
index 4da87f4e068..e92b0fd387f 100644
--- a/indra/llwindow/llwindow.h
+++ b/indra/llwindow/llwindow.h
@@ -265,7 +265,6 @@ class LLWindowManager
 		BOOL fullscreen = FALSE,
 		BOOL clearBg = FALSE,
 		BOOL disable_vsync = TRUE,
-		BOOL use_gl = TRUE,
 		BOOL ignore_pixel_depth = FALSE,
 		U32 fsaa_samples = 0);
 	static BOOL destroyWindow(LLWindow* window);
diff --git a/indra/llwindow/llwindowheadless.cpp b/indra/llwindow/llwindowheadless.cpp
index e6e6bc67ff0..dbdb40f5b99 100644
--- a/indra/llwindow/llwindowheadless.cpp
+++ b/indra/llwindow/llwindowheadless.cpp
@@ -35,7 +35,7 @@
 //
 LLWindowHeadless::LLWindowHeadless(LLWindowCallbacks* callbacks, const std::string& title, const std::string& name, S32 x, S32 y, S32 width, S32 height,
 							 U32 flags,  BOOL fullscreen, BOOL clear_background,
-							 BOOL disable_vsync, BOOL use_gl, BOOL ignore_pixel_depth)
+							 BOOL disable_vsync, BOOL ignore_pixel_depth)
 	: LLWindow(callbacks, fullscreen, flags)
 {
 	// Initialize a headless keyboard.
diff --git a/indra/llwindow/llwindowheadless.h b/indra/llwindow/llwindowheadless.h
index 1f767f4c97d..72f9684ca38 100644
--- a/indra/llwindow/llwindowheadless.h
+++ b/indra/llwindow/llwindowheadless.h
@@ -96,7 +96,7 @@ class LLWindowHeadless : public LLWindow
 		S32 x, S32 y, 
 		S32 width, S32 height,
 		U32 flags,  BOOL fullscreen, BOOL clear_background,
-		BOOL disable_vsync, BOOL use_gl, BOOL ignore_pixel_depth);
+		BOOL disable_vsync, BOOL ignore_pixel_depth);
 	virtual ~LLWindowHeadless();
 
 private:
diff --git a/indra/llwindow/llwindowmacosx.cpp b/indra/llwindow/llwindowmacosx.cpp
index 97637c937fe..413a9df6169 100644
--- a/indra/llwindow/llwindowmacosx.cpp
+++ b/indra/llwindow/llwindowmacosx.cpp
@@ -210,7 +210,7 @@ LLWindowMacOSX::LLWindowMacOSX(LLWindowCallbacks* callbacks,
 							   const std::string& title, const std::string& name, S32 x, S32 y, S32 width,
 							   S32 height, U32 flags,
 							   BOOL fullscreen, BOOL clearBg,
-							   BOOL disable_vsync, BOOL use_gl,
+							   BOOL disable_vsync,
 							   BOOL ignore_pixel_depth,
 							   U32 fsaa_samples)
 	: LLWindow(NULL, fullscreen, flags)
@@ -228,7 +228,6 @@ LLWindowMacOSX::LLWindowMacOSX(LLWindowCallbacks* callbacks,
 	gKeyboard = new LLKeyboardMacOSX();
 	gKeyboard->setCallbacks(callbacks);
 
-	// Ignore use_gl for now, only used for drones on PC
 	mWindow = NULL;
 	mContext = NULL;
 	mPixelFormat = NULL;
diff --git a/indra/llwindow/llwindowmacosx.h b/indra/llwindow/llwindowmacosx.h
index 52ba8b3bf3e..4484787a4ef 100644
--- a/indra/llwindow/llwindowmacosx.h
+++ b/indra/llwindow/llwindowmacosx.h
@@ -122,7 +122,7 @@ class LLWindowMacOSX : public LLWindow
 protected:
 	LLWindowMacOSX(LLWindowCallbacks* callbacks,
 		const std::string& title, const std::string& name, int x, int y, int width, int height, U32 flags,
-		BOOL fullscreen, BOOL clearBg, BOOL disable_vsync, BOOL use_gl,
+		BOOL fullscreen, BOOL clearBg, BOOL disable_vsync,
 		BOOL ignore_pixel_depth,
 		U32 fsaa_samples);
 	~LLWindowMacOSX();
diff --git a/indra/llwindow/llwindowmesaheadless.cpp b/indra/llwindow/llwindowmesaheadless.cpp
index 11c22ac94e5..2b668d3fc42 100644
--- a/indra/llwindow/llwindowmesaheadless.cpp
+++ b/indra/llwindow/llwindowmesaheadless.cpp
@@ -41,28 +41,25 @@ U16 *gMesaBuffer = NULL;
 LLWindowMesaHeadless::LLWindowMesaHeadless(LLWindowCallbacks* callbacks,
                                            const std::string& title, const std::string& name, S32 x, S32 y, S32 width, S32 height,
 							 U32 flags,  BOOL fullscreen, BOOL clearBg,
-							 BOOL disable_vsync, BOOL use_gl, BOOL ignore_pixel_depth)
+							 BOOL disable_vsync, BOOL ignore_pixel_depth)
 	: LLWindow(callbacks, fullscreen, flags)
 {
-	if (use_gl)
-	{
-		llinfos << "MESA Init" << llendl;
-		mMesaContext = OSMesaCreateContextExt( GL_RGBA, 32, 0, 0, NULL );
-
-		/* Allocate the image buffer */
-		mMesaBuffer = new unsigned char [width * height * 4 * MESA_CHANNEL_SIZE];
-		llassert(mMesaBuffer);
+	llinfos << "MESA Init" << llendl;
+	mMesaContext = OSMesaCreateContextExt( GL_RGBA, 32, 0, 0, NULL );
 
-		gMesaBuffer = (U16*)mMesaBuffer;
+	/* Allocate the image buffer */
+	mMesaBuffer = new unsigned char [width * height * 4 * MESA_CHANNEL_SIZE];
+	llassert(mMesaBuffer);
 
-		/* Bind the buffer to the context and make it current */
-		if (!OSMesaMakeCurrent( mMesaContext, mMesaBuffer, MESA_CHANNEL_TYPE, width, height ))
-		{
-			llerrs << "MESA: OSMesaMakeCurrent failed!" << llendl;
-		}
+	gMesaBuffer = (U16*)mMesaBuffer;
 
-		llverify(gGLManager.initGL());
+	/* Bind the buffer to the context and make it current */
+	if (!OSMesaMakeCurrent( mMesaContext, mMesaBuffer, MESA_CHANNEL_TYPE, width, height ))
+	{
+		llerrs << "MESA: OSMesaMakeCurrent failed!" << llendl;
 	}
+
+	llverify(gGLManager.initGL());
 }
 
 
diff --git a/indra/llwindow/llwindowmesaheadless.h b/indra/llwindow/llwindowmesaheadless.h
index bc8e25ec446..c8d2bf28240 100644
--- a/indra/llwindow/llwindowmesaheadless.h
+++ b/indra/llwindow/llwindowmesaheadless.h
@@ -98,7 +98,7 @@ class LLWindowMesaHeadless : public LLWindow
 	LLWindowMesaHeadless(LLWindowCallbacks* callbacks,
                          const std::string& title, const std::string& name, S32 x, S32 y, S32 width, S32 height,
 				  U32 flags,  BOOL fullscreen, BOOL clearBg,
-				  BOOL disable_vsync, BOOL use_gl, BOOL ignore_pixel_depth);
+				  BOOL disable_vsync, BOOL ignore_pixel_depth);
 	~LLWindowMesaHeadless();
 
 private:
diff --git a/indra/llwindow/llwindowsdl.cpp b/indra/llwindow/llwindowsdl.cpp
index 3bf4a48cb6d..de731df228c 100644
--- a/indra/llwindow/llwindowsdl.cpp
+++ b/indra/llwindow/llwindowsdl.cpp
@@ -186,7 +186,7 @@ LLWindowSDL::LLWindowSDL(LLWindowCallbacks* callbacks,
 			 const std::string& title, S32 x, S32 y, S32 width,
 			 S32 height, U32 flags,
 			 BOOL fullscreen, BOOL clearBg,
-			 BOOL disable_vsync, BOOL use_gl,
+			 BOOL disable_vsync,
 			 BOOL ignore_pixel_depth, U32 fsaa_samples)
 	: LLWindow(callbacks, fullscreen, flags),
 	  Lock_Display(NULL),
@@ -197,7 +197,6 @@ LLWindowSDL::LLWindowSDL(LLWindowCallbacks* callbacks,
 	gKeyboard->setCallbacks(callbacks);
 	// Note that we can't set up key-repeat until after SDL has init'd video
 
-	// Ignore use_gl for now, only used for drones on PC
 	mWindow = NULL;
 	mNeedsResize = FALSE;
 	mOverrideAspectRatio = 0.f;
diff --git a/indra/llwindow/llwindowsdl.h b/indra/llwindow/llwindowsdl.h
index 4e2a269ea33..91ba73a0acf 100644
--- a/indra/llwindow/llwindowsdl.h
+++ b/indra/llwindow/llwindowsdl.h
@@ -147,7 +147,7 @@ class LLWindowSDL : public LLWindow
 protected:
 	LLWindowSDL(LLWindowCallbacks* callbacks,
 		const std::string& title, int x, int y, int width, int height, U32 flags,
-		BOOL fullscreen, BOOL clearBg, BOOL disable_vsync, BOOL use_gl,
+		BOOL fullscreen, BOOL clearBg, BOOL disable_vsync,
 		BOOL ignore_pixel_depth, U32 fsaa_samples);
 	~LLWindowSDL();
 
diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp
index 9a4dd41c4e7..639ffb9d565 100644
--- a/indra/llwindow/llwindowwin32.cpp
+++ b/indra/llwindow/llwindowwin32.cpp
@@ -362,7 +362,7 @@ LLWindowWin32::LLWindowWin32(LLWindowCallbacks* callbacks,
 							 const std::string& title, const std::string& name, S32 x, S32 y, S32 width,
 							 S32 height, U32 flags, 
 							 BOOL fullscreen, BOOL clearBg,
-							 BOOL disable_vsync, BOOL use_gl,
+							 BOOL disable_vsync,
 							 BOOL ignore_pixel_depth,
 							 U32 fsaa_samples)
 	: LLWindow(callbacks, fullscreen, flags)
diff --git a/indra/llwindow/llwindowwin32.h b/indra/llwindow/llwindowwin32.h
index 54c9ac4d4d1..aa7e2289bb2 100644
--- a/indra/llwindow/llwindowwin32.h
+++ b/indra/llwindow/llwindowwin32.h
@@ -118,7 +118,7 @@ class LLWindowWin32 : public LLWindow
 protected:
 	LLWindowWin32(LLWindowCallbacks* callbacks,
 		const std::string& title, const std::string& name, int x, int y, int width, int height, U32 flags, 
-		BOOL fullscreen, BOOL clearBg, BOOL disable_vsync, BOOL use_gl,
+		BOOL fullscreen, BOOL clearBg, BOOL disable_vsync,
 		BOOL ignore_pixel_depth, U32 fsaa_samples);
 	~LLWindowWin32();
 
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index 587435301da..ce5180c0d29 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -1319,11 +1319,11 @@ bool LLAppViewer::mainLoop()
 				// Scan keyboard for movement keys.  Command keys and typing
 				// are handled by windows callbacks.  Don't do this until we're
 				// done initializing.  JC
-				if ((gHeadlessClient || gViewerWindow->getWindow()->getVisible())
+				if (gViewerWindow->getWindow()->getVisible()
 					&& gViewerWindow->getActive()
 					&& !gViewerWindow->getWindow()->getMinimized()
 					&& LLStartUp::getStartupState() == STATE_STARTED
-					&& (gHeadlessClient || !gViewerWindow->getShowProgress())
+					&& !gViewerWindow->getShowProgress()
 					&& !gFocusMgr.focusLocked())
 				{
 					LLMemType mjk(LLMemType::MTYPE_JOY_KEY);
@@ -1371,8 +1371,7 @@ bool LLAppViewer::mainLoop()
 				}
 
 				// Render scene.
-				// *TODO: Should we run display() even during gHeadlessClient?  DK 2011-02-18
-				if (!LLApp::isExiting() && !gHeadlessClient)
+				if (!LLApp::isExiting())
 				{
 					pingMainloopTimeout("Main:Display");
 					gGLActive = TRUE;
@@ -2992,9 +2991,6 @@ bool LLAppViewer::initWindow()
 {
 	LL_INFOS("AppInit") << "Initializing window..." << LL_ENDL;
 
-	// store setting in a global for easy access and modification
-	gHeadlessClient = gSavedSettings.getBOOL("HeadlessClient");
-
 	// always start windowed
 	BOOL ignorePixelDepth = gSavedSettings.getBOOL("IgnorePixelDepth");
 
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index ab06b1f5aa3..561734aaaec 100755
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -772,10 +772,6 @@ bool idle_startup()
 				gUserCredential = gLoginHandler.initializeLoginInfo();                 
 				display_startup();
 			}     
-			if (gHeadlessClient)
-			{
-				LL_WARNS("AppInit") << "Waiting at connection box in headless client.  Did you mean to add autologin params?" << LL_ENDL;
-			}
 			// Make sure the process dialog doesn't hide things
 			display_startup();
 			gViewerWindow->setShowProgress(FALSE);
@@ -3507,13 +3503,6 @@ bool process_login_success_response()
 
 void transition_back_to_login_panel(const std::string& emsg)
 {
-	if (gHeadlessClient && gSavedSettings.getBOOL("AutoLogin"))
-	{
-		LL_WARNS("AppInit") << "Failed to login!" << LL_ENDL;
-		LL_WARNS("AppInit") << emsg << LL_ENDL;
-		exit(0);
-	}
-
 	// Bounce back to the login screen.
 	reset_login(); // calls LLStartUp::setStartupState( STATE_LOGIN_SHOW );
 	gSavedSettings.setBOOL("AutoLogin", FALSE);
diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp
index cc697f8510e..fae20b1c13a 100644
--- a/indra/newview/llviewerdisplay.cpp
+++ b/indra/newview/llviewerdisplay.cpp
@@ -313,24 +313,6 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
 	// Logic for forcing window updates if we're in drone mode.
 	//
 
-	// *TODO: Investigate running display() during gHeadlessClient.  See if this early exit is needed DK 2011-02-18
-	if (gHeadlessClient) 
-	{
-#if LL_WINDOWS
-		static F32 last_update_time = 0.f;
-		if ((gFrameTimeSeconds - last_update_time) > 1.f)
-		{
-			InvalidateRect((HWND)gViewerWindow->getPlatformWindow(), NULL, FALSE);
-			last_update_time = gFrameTimeSeconds;
-		}
-#elif LL_DARWIN
-		// MBW -- Do something clever here.
-#endif
-		// Not actually rendering, don't bother.
-		return;
-	}
-
-
 	//
 	// Bail out if we're in the startup state and don't want to try to
 	// render the world.
diff --git a/indra/newview/llviewerobjectlist.cpp b/indra/newview/llviewerobjectlist.cpp
index c036fcc1141..e399b45cba0 100644
--- a/indra/newview/llviewerobjectlist.cpp
+++ b/indra/newview/llviewerobjectlist.cpp
@@ -1524,7 +1524,6 @@ static LLFastTimer::DeclareTimer FTM_REGION_SHIFT("Region Shift");
 
 void LLViewerObjectList::shiftObjects(const LLVector3 &offset)
 {
-	if (gHeadlessClient) return;
 	// This is called when we shift our origin when we cross region boundaries...
 	// We need to update many object caches, I'll document this more as I dig through the code
 	// cleaning things out...
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 0cad2e3ec68..1780c2715a0 100755
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -1385,43 +1385,6 @@ void LLViewerWindow::handleMenuSelect(LLWindow *window,  S32 menu_item)
 
 BOOL LLViewerWindow::handlePaint(LLWindow *window,  S32 x,  S32 y, S32 width,  S32 height)
 {
-	// *TODO: Enable similar information output for other platforms?  DK 2011-02-18
-#if LL_WINDOWS
-	if (gHeadlessClient)
-	{
-		HWND window_handle = (HWND)window->getPlatformWindow();
-		PAINTSTRUCT ps; 
-		HDC hdc; 
- 
-		RECT wnd_rect;
-		wnd_rect.left = 0;
-		wnd_rect.top = 0;
-		wnd_rect.bottom = 200;
-		wnd_rect.right = 500;
-
-		hdc = BeginPaint(window_handle, &ps); 
-		//SetBKColor(hdc, RGB(255, 255, 255));
-		FillRect(hdc, &wnd_rect, CreateSolidBrush(RGB(255, 255, 255)));
-
-		std::string temp_str;
-		temp_str = llformat( "FPS %3.1f Phy FPS %2.1f Time Dil %1.3f",		/* Flawfinder: ignore */
-				LLViewerStats::getInstance()->mFPSStat.getMeanPerSec(),
-				LLViewerStats::getInstance()->mSimPhysicsFPS.getPrev(0),
-				LLViewerStats::getInstance()->mSimTimeDilation.getPrev(0));
-		S32 len = temp_str.length();
-		TextOutA(hdc, 0, 0, temp_str.c_str(), len); 
-
-
-		LLVector3d pos_global = gAgent.getPositionGlobal();
-		temp_str = llformat( "Avatar pos %6.1lf %6.1lf %6.1lf", pos_global.mdV[0], pos_global.mdV[1], pos_global.mdV[2]);
-		len = temp_str.length();
-		TextOutA(hdc, 0, 25, temp_str.c_str(), len); 
-
-		TextOutA(hdc, 0, 50, "Set \"HeadlessClient FALSE\" in settings.ini file to reenable", 61);
-		EndPaint(window_handle, &ps); 
-		return TRUE;
-	}
-#endif
 	return FALSE;
 }
 
@@ -1568,12 +1531,12 @@ LLViewerWindow::LLViewerWindow(const Params& p)
 	resetSnapshotLoc();
 
 	// create window
+	const BOOL clear_bg = FALSE;
 	mWindow = LLWindowManager::createWindow(this,
 		p.title, p.name, p.x, p.y, p.width, p.height, 0,
 		p.fullscreen, 
-		gHeadlessClient,
+		clear_bg,
 		gSavedSettings.getBOOL("DisableVerticalSync"),
-		!gHeadlessClient,
 		p.ignore_pixel_depth,
 		gSavedSettings.getBOOL("RenderDeferred") ? 0 : gSavedSettings.getU32("RenderFSAASamples")); //don't use window level anti-aliasing if FBOs are enabled
 
@@ -1717,7 +1680,6 @@ LLViewerWindow::LLViewerWindow(const Params& p)
 
 void LLViewerWindow::initGLDefaults()
 {
-	if (gHeadlessClient) return;
 	gGL.setSceneBlendType(LLRender::BT_ALPHA);
 
 	if (!LLGLSLShader::sNoFixedFunction)
@@ -4997,11 +4959,6 @@ bool LLViewerWindow::onAlert(const LLSD& notify)
 {
 	LLNotificationPtr notification = LLNotifications::instance().find(notify["id"].asUUID());
 
-	if (gHeadlessClient)
-	{
-		llinfos << "Alert: " << notification->getName() << llendl;
-	}
-
 	// If we're in mouselook, the mouse is hidden and so the user can't click 
 	// the dialog buttons.  In that case, change to First Person instead.
 	if( gAgentCamera.cameraMouselook() )
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index e874373f9e6..61df5bc2ebf 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -1139,7 +1139,6 @@ void LLPipeline::releaseScreenBuffers()
 
 void LLPipeline::createGLBuffers()
 {
-	if (gHeadlessClient) return;
 	stop_glerror();
 	LLMemType mt_cb(LLMemType::MTYPE_PIPELINE_CREATE_BUFFERS);
 	assertInitialized();
-- 
GitLab


From 8af68c8771077518585cf332ba0e1e53f18c76c7 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Mon, 24 Sep 2012 19:20:28 +0000
Subject: [PATCH 101/436] Removing .orig and .rej files from ignore

---
 .hgignore | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/.hgignore b/.hgignore
index 06d31e2f88e..c845758e7ce 100644
--- a/.hgignore
+++ b/.hgignore
@@ -10,7 +10,7 @@ syntax: glob
 .*.swp
 #OSX image cache file
 *.DS_Store
-*.orig
+#*.orig
 LICENSES
 indra/.distcc
 build-linux-*
@@ -74,4 +74,4 @@ glob:indra/newview/filters.xml
 glob:indra/newview/avatar_icons_cache.txt
 glob:indra/newview/avatar_lad.log
 glob:*.diff
-*.rej
+#*.rej
-- 
GitLab


From 95f3fb45ae2f4fe199e34f35be1e46b3a598ca1a Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Mon, 24 Sep 2012 19:42:58 +0000
Subject: [PATCH 102/436] Cherry-picked windows build fixes from
 sunshine-experimental

---
 autobuild.xml                                 |   4 +-
 indra/cmake/DirectX.cmake                     |   2 +
 indra/llmessage/tests/llhttpclient_test.cpp   |  84 +----
 .../llmessage/tests/test_llsdmessage_peer.py  | 326 ++++++++++--------
 indra/llrender/llgl.cpp                       |   3 +
 indra/lscript/lscript_compile/CMakeLists.txt  |   4 +-
 indra/lscript/lscript_compile/bison.bat       |   9 +-
 7 files changed, 198 insertions(+), 234 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index 63f281f9b92..19dd39c19b9 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -1432,9 +1432,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>7c908e4fc031e13e65484d8cfd9a0be5</string>
+              <string>bdfb275b9bfa071397fb5633a0f5d360</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-mesa/rev/264880/arch/Linux/installer/mesa-7.11.1-linux-20120920.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-mesa/rev/265010/arch/Linux/installer/mesa-7.11.1-linux-20120920.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
diff --git a/indra/cmake/DirectX.cmake b/indra/cmake/DirectX.cmake
index b2a18805d47..8cae6068484 100644
--- a/indra/cmake/DirectX.cmake
+++ b/indra/cmake/DirectX.cmake
@@ -3,6 +3,7 @@
 if (VIEWER AND WINDOWS)
   find_path(DIRECTX_INCLUDE_DIR dxdiag.h
             "$ENV{DXSDK_DIR}/Include"
+            "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (June 2010)/Include"
             "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (August 2009)/Include"
             "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (March 2009)/Include"
             "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (August 2008)/Include"
@@ -25,6 +26,7 @@ if (VIEWER AND WINDOWS)
 
   find_path(DIRECTX_LIBRARY_DIR dxguid.lib
             "$ENV{DXSDK_DIR}/Lib/x86"
+            "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (June 2010)/Lib/x86"
             "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (August 2009)/Lib/x86"
             "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (March 2009)/Lib/x86"
             "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (August 2008)/Lib/x86"
diff --git a/indra/llmessage/tests/llhttpclient_test.cpp b/indra/llmessage/tests/llhttpclient_test.cpp
index e338d4ec71e..4a9db7cd982 100644
--- a/indra/llmessage/tests/llhttpclient_test.cpp
+++ b/indra/llmessage/tests/llhttpclient_test.cpp
@@ -47,37 +47,6 @@
 
 namespace tut
 {
-	LLSD storage;
-	
-	class LLSDStorageNode : public LLHTTPNode
-	{
-	public:
-		LLSD simpleGet() const					{ return storage; }
-		LLSD simplePut(const LLSD& value) const	{ storage = value; return LLSD(); }
-	};
-
-	class ErrorNode : public LLHTTPNode
-	{
-	public:
-		void get(ResponsePtr r, const LLSD& context) const
-			{ r->status(599, "Intentional error"); }
-		void post(ResponsePtr r, const LLSD& context, const LLSD& input) const
-			{ r->status(input["status"], input["reason"]); }
-	};
-
-	class TimeOutNode : public LLHTTPNode
-	{
-	public:
-		void get(ResponsePtr r, const LLSD& context) const
-		{
-            /* do nothing, the request will eventually time out */ 
-		}
-	};
-
-	LLHTTPRegistration<LLSDStorageNode> gStorageNode("/test/storage");
-	LLHTTPRegistration<ErrorNode>		gErrorNode("/test/error");
-	LLHTTPRegistration<TimeOutNode>		gTimeOutNode("/test/timeout");
-
 	struct HTTPClientTestData
 	{
 	public:
@@ -86,7 +55,6 @@ namespace tut
 		{
 			apr_pool_create(&mPool, NULL);
 			LLCurl::initClass(false);
-			mServerPump = new LLPumpIO(mPool);
 			mClientPump = new LLPumpIO(mPool);
 
 			LLHTTPClient::setPump(*mClientPump);
@@ -94,20 +62,11 @@ namespace tut
 		
 		~HTTPClientTestData()
 		{
-			delete mServerPump;
 			delete mClientPump;
 			LLProxy::cleanupClass();
 			apr_pool_destroy(mPool);
 		}
 
-		void setupTheServer()
-		{
-			LLHTTPNode& root = LLIOHTTPServer::create(mPool, *mServerPump, 8888);
-
-			LLHTTPStandardServices::useServices();
-			LLHTTPRegistrar::buildAllServices(root);
-		}
-		
 		void runThePump(float timeout = 100.0f)
 		{
 			LLTimer timer;
@@ -115,11 +74,7 @@ namespace tut
 
 			while(!mSawCompleted && !mSawCompletedHeader && !timer.hasExpired())
 			{
-				if (mServerPump)
-				{
-					mServerPump->pump();
-					mServerPump->callback();
-				}
+				LLFrameTimer::updateFrameTime();
 				if (mClientPump)
 				{
 					mClientPump->pump();
@@ -128,17 +83,10 @@ namespace tut
 			}
 		}
 
-		void killServer()
-		{
-			delete mServerPump;
-			mServerPump = NULL;
-		}
-
 		const std::string local_server;
 
 	private:
 		apr_pool_t* mPool;
-		LLPumpIO* mServerPump;
 		LLPumpIO* mClientPump;
 
 	protected:
@@ -283,14 +231,12 @@ namespace tut
 		sd["list"][1]["three"] = 3;
 		sd["list"][1]["four"] = 4;
 		
-		setupTheServer();
-
-		LLHTTPClient::post("http://localhost:8888/web/echo", sd, newResult());
+		LLHTTPClient::post(local_server + "web/echo", sd, newResult());
 		runThePump();
 		ensureStatusOK();
 		ensure_equals("echoed result matches", getResult(), sd);
 	}
-
+		
 	template<> template<>
 		void HTTPClientTestObject::test<4>()
 	{
@@ -298,12 +244,11 @@ namespace tut
 
 		sd["message"] = "This is my test message.";
 
-		setupTheServer();
-		LLHTTPClient::put("http://localhost:8888/test/storage", sd, newResult());
+		LLHTTPClient::put(local_server + "test/storage", sd, newResult());
 		runThePump();
 		ensureStatusOK();
 
-		LLHTTPClient::get("http://localhost:8888/test/storage", newResult());
+		LLHTTPClient::get(local_server + "test/storage", newResult());
 		runThePump();
 		ensureStatusOK();
 		ensure_equals("echoed result matches", getResult(), sd);
@@ -317,9 +262,7 @@ namespace tut
 		sd["status"] = 543;
 		sd["reason"] = "error for testing";
 
-		setupTheServer();
-
-		LLHTTPClient::post("http://localhost:8888/test/error", sd, newResult());
+		LLHTTPClient::post(local_server + "test/error", sd, newResult());
 		runThePump();
 		ensureStatusError();
 		ensure_contains("reason", mReason, sd["reason"]);
@@ -328,23 +271,16 @@ namespace tut
 	template<> template<>
 		void HTTPClientTestObject::test<6>()
 	{
-		setupTheServer();
-
-		LLHTTPClient::get("http://localhost:8888/test/timeout", newResult());
-		runThePump(1.0f);
-		killServer();
-		runThePump();
+		const F32 timeout = 1.0f;
+		LLHTTPClient::get(local_server + "test/timeout", newResult(), LLSD(), timeout);
+		runThePump(timeout * 5.0f);
 		ensureStatusError();
-		ensure_equals("reason", mReason, "STATUS_ERROR");
+		ensure_equals("reason", mReason, "STATUS_EXPIRED");
 	}
 
 	template<> template<>
 		void HTTPClientTestObject::test<7>()
 	{
-		// Can not use the little mini server.  The blocking request
-		// won't ever let it run.  Instead get from a known LLSD
-		// source and compare results with the non-blocking get which
-		// is tested against the mini server earlier.
 		LLHTTPClient::get(local_server, newResult());
 		runThePump();
 		ensureStatusOK();
diff --git a/indra/llmessage/tests/test_llsdmessage_peer.py b/indra/llmessage/tests/test_llsdmessage_peer.py
index fe4f3a8c011..b59c5a06cd6 100644
--- a/indra/llmessage/tests/test_llsdmessage_peer.py
+++ b/indra/llmessage/tests/test_llsdmessage_peer.py
@@ -1,153 +1,173 @@
-#!/usr/bin/env python
-"""\
-@file   test_llsdmessage_peer.py
-@author Nat Goodspeed
-@date   2008-10-09
-@brief  This script asynchronously runs the executable (with args) specified on
-        the command line, returning its result code. While that executable is
-        running, we provide dummy local services for use by C++ tests.
-
-$LicenseInfo:firstyear=2008&license=viewerlgpl$
-Second Life Viewer Source Code
-Copyright (C) 2010, Linden Research, Inc.
-
-This library is free software; you can redistribute it and/or
-modify it under the terms of the GNU Lesser General Public
-License as published by the Free Software Foundation;
-version 2.1 of the License only.
-
-This library is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-Lesser General Public License for more details.
-
-You should have received a copy of the GNU Lesser General Public
-License along with this library; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-
-Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
-$/LicenseInfo$
-"""
-
-import os
-import sys
-from threading import Thread
-from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler
-
-mydir = os.path.dirname(__file__)       # expected to be .../indra/llmessage/tests/
-sys.path.insert(0, os.path.join(mydir, os.pardir, os.pardir, "lib", "python"))
-from indra.util.fastest_elementtree import parse as xml_parse
-from indra.base import llsd
-from testrunner import freeport, run, debug, VERBOSE
-
-class TestHTTPRequestHandler(BaseHTTPRequestHandler):
-    """This subclass of BaseHTTPRequestHandler is to receive and echo
-    LLSD-flavored messages sent by the C++ LLHTTPClient.
-    """
-    def read(self):
-        # The following logic is adapted from the library module
-        # SimpleXMLRPCServer.py.
-        # Get arguments by reading body of request.
-        # We read this in chunks to avoid straining
-        # socket.read(); around the 10 or 15Mb mark, some platforms
-        # begin to have problems (bug #792570).
-        try:
-            size_remaining = int(self.headers["content-length"])
-        except (KeyError, ValueError):
-            return ""
-        max_chunk_size = 10*1024*1024
-        L = []
-        while size_remaining:
-            chunk_size = min(size_remaining, max_chunk_size)
-            chunk = self.rfile.read(chunk_size)
-            L.append(chunk)
-            size_remaining -= len(chunk)
-        return ''.join(L)
-        # end of swiped read() logic
-
-    def read_xml(self):
-        # This approach reads the entire POST data into memory first
-        return llsd.parse(self.read())
-##         # This approach attempts to stream in the LLSD XML from self.rfile,
-##         # assuming that the underlying XML parser reads its input file
-##         # incrementally. Unfortunately I haven't been able to make it work.
-##         tree = xml_parse(self.rfile)
-##         debug("Finished raw parse")
-##         debug("parsed XML tree %s", tree)
-##         debug("parsed root node %s", tree.getroot())
-##         debug("root node tag %s", tree.getroot().tag)
-##         return llsd.to_python(tree.getroot())
-
-    def do_HEAD(self):
-        self.do_GET(withdata=False)
-
-    def do_GET(self, withdata=True):
-        # Of course, don't attempt to read data.
-        data = dict(reply="success", body="avatar", random=17)
-        self.answer(data, withdata=withdata)
-
-    def do_POST(self):
-        # Read the provided POST data.
-        self.answer(self.read_xml())
-
-    def answer(self, data, withdata=True):
-        debug("%s.answer(%s): self.path = %r", self.__class__.__name__, data, self.path)
-        if "fail" not in self.path:
-            data = data.copy()          # we're going to modify
-            # Ensure there's a "reply" key in data, even if there wasn't before
-            data["reply"] = data.get("reply", llsd.LLSD("success"))
-            response = llsd.format_xml(data)
-            debug("success: %s", response)
-            self.send_response(200)
-            self.send_header("Content-type", "application/llsd+xml")
-            self.send_header("Content-Length", str(len(response)))
-            self.end_headers()
-            if withdata:
-                self.wfile.write(response)
-        else:                           # fail requested
-            status = data.get("status", 500)
-            # self.responses maps an int status to a (short, long) pair of
-            # strings. We want the longer string. That's why we pass a string
-            # pair to get(): the [1] will select the second string, whether it
-            # came from self.responses or from our default pair.
-            reason = data.get("reason",
-                               self.responses.get(status,
-                                                  ("fail requested",
-                                                   "Your request specified failure status %s "
-                                                   "without providing a reason" % status))[1])
-            debug("fail requested: %s: %r", status, reason)
-            self.send_error(status, reason)
-
-    if not VERBOSE:
-        # When VERBOSE is set, skip both these overrides because they exist to
-        # suppress output.
-
-        def log_request(self, code, size=None):
-            # For present purposes, we don't want the request splattered onto
-            # stderr, as it would upset devs watching the test run
-            pass
-
-        def log_error(self, format, *args):
-            # Suppress error output as well
-            pass
-
-class Server(HTTPServer):
-    # This pernicious flag is on by default in HTTPServer. But proper
-    # operation of freeport() absolutely depends on it being off.
-    allow_reuse_address = False
-
-if __name__ == "__main__":
-    # Instantiate a Server(TestHTTPRequestHandler) on the first free port
-    # in the specified port range. Doing this inline is better than in a
-    # daemon thread: if it blows up here, we'll get a traceback. If it blew up
-    # in some other thread, the traceback would get eaten and we'd run the
-    # subject test program anyway.
-    httpd, port = freeport(xrange(8000, 8020),
-                           lambda port: Server(('127.0.0.1', port), TestHTTPRequestHandler))
-    # Pass the selected port number to the subject test program via the
-    # environment. We don't want to impose requirements on the test program's
-    # command-line parsing -- and anyway, for C++ integration tests, that's
-    # performed in TUT code rather than our own.
-    os.environ["PORT"] = str(port)
-    debug("$PORT = %s", port)
-    sys.exit(run(server=Thread(name="httpd", target=httpd.serve_forever), *sys.argv[1:]))
+#!/usr/bin/env python
+"""\
+@file   test_llsdmessage_peer.py
+@author Nat Goodspeed
+@date   2008-10-09
+@brief  This script asynchronously runs the executable (with args) specified on
+        the command line, returning its result code. While that executable is
+        running, we provide dummy local services for use by C++ tests.
+
+$LicenseInfo:firstyear=2008&license=viewerlgpl$
+Second Life Viewer Source Code
+Copyright (C) 2010, Linden Research, Inc.
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation;
+version 2.1 of the License only.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+$/LicenseInfo$
+"""
+
+import os
+import sys
+from threading import Thread
+from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler
+
+mydir = os.path.dirname(__file__)       # expected to be .../indra/llmessage/tests/
+sys.path.insert(0, os.path.join(mydir, os.pardir, os.pardir, "lib", "python"))
+from indra.util.fastest_elementtree import parse as xml_parse
+from indra.base import llsd
+from testrunner import freeport, run, debug, VERBOSE
+import time
+
+_storage=None
+
+class TestHTTPRequestHandler(BaseHTTPRequestHandler):
+    """This subclass of BaseHTTPRequestHandler is to receive and echo
+    LLSD-flavored messages sent by the C++ LLHTTPClient.
+    """
+    def read(self):
+        # The following logic is adapted from the library module
+        # SimpleXMLRPCServer.py.
+        # Get arguments by reading body of request.
+        # We read this in chunks to avoid straining
+        # socket.read(); around the 10 or 15Mb mark, some platforms
+        # begin to have problems (bug #792570).
+        try:
+            size_remaining = int(self.headers["content-length"])
+        except (KeyError, ValueError):
+            return ""
+        max_chunk_size = 10*1024*1024
+        L = []
+        while size_remaining:
+            chunk_size = min(size_remaining, max_chunk_size)
+            chunk = self.rfile.read(chunk_size)
+            L.append(chunk)
+            size_remaining -= len(chunk)
+        return ''.join(L)
+        # end of swiped read() logic
+
+    def read_xml(self):
+        # This approach reads the entire POST data into memory first
+        return llsd.parse(self.read())
+##         # This approach attempts to stream in the LLSD XML from self.rfile,
+##         # assuming that the underlying XML parser reads its input file
+##         # incrementally. Unfortunately I haven't been able to make it work.
+##         tree = xml_parse(self.rfile)
+##         debug("Finished raw parse")
+##         debug("parsed XML tree %s", tree)
+##         debug("parsed root node %s", tree.getroot())
+##         debug("root node tag %s", tree.getroot().tag)
+##         return llsd.to_python(tree.getroot())
+
+    def do_HEAD(self):
+        self.do_GET(withdata=False)
+
+    def do_GET(self, withdata=True):
+        # Of course, don't attempt to read data.
+        data = dict(reply="success", body="avatar", random=17)
+        self.answer(data, withdata=withdata)
+
+    def do_POST(self):
+        # Read the provided POST data.
+        self.answer(self.read_xml())
+
+    def do_PUT(self):
+        # Read the provided PUT data.
+        self.answer(self.read_xml())
+
+    def answer(self, data, withdata=True):
+        global _storage
+        debug("%s.answer(%s): self.path = %r", self.__class__.__name__, data, self.path)
+        if "fail" in self.path or "test/error" in self.path: # fail requested
+            status = data.get("status", 500)
+            # self.responses maps an int status to a (short, long) pair of
+            # strings. We want the longer string. That's why we pass a string
+            # pair to get(): the [1] will select the second string, whether it
+            # came from self.responses or from our default pair.
+            reason = data.get("reason",
+                               self.responses.get(status,
+                                                  ("fail requested",
+                                                   "Your request specified failure status %s "
+                                                   "without providing a reason" % status))[1])
+            debug("fail requested: %s: %r", status, reason)
+            self.send_error(status, reason)
+        else:
+            if "web/echo" in self.path:
+                pass
+            elif "test/timeout" in self.path:
+                time.sleep(5.0)
+                return
+            elif "test/storage" in self.path:
+                if "GET" == self.command:
+                    data = _storage
+                else:
+                    _storage = data
+                    data = "ok"
+            else:
+                data = data.copy()          # we're going to modify
+                # Ensure there's a "reply" key in data, even if there wasn't before
+                data["reply"] = data.get("reply", llsd.LLSD("success"))
+            response = llsd.format_xml(data)
+            debug("success: %s", response)
+            self.send_response(200)
+            self.send_header("Content-type", "application/llsd+xml")
+            self.send_header("Content-Length", str(len(response)))
+            self.end_headers()
+            if withdata:
+                self.wfile.write(response)
+
+    if not VERBOSE:
+        # When VERBOSE is set, skip both these overrides because they exist to
+        # suppress output.
+
+        def log_request(self, code, size=None):
+            # For present purposes, we don't want the request splattered onto
+            # stderr, as it would upset devs watching the test run
+            pass
+
+        def log_error(self, format, *args):
+            # Suppress error output as well
+            pass
+
+class Server(HTTPServer):
+    # This pernicious flag is on by default in HTTPServer. But proper
+    # operation of freeport() absolutely depends on it being off.
+    allow_reuse_address = False
+
+if __name__ == "__main__":
+    # Instantiate a Server(TestHTTPRequestHandler) on the first free port
+    # in the specified port range. Doing this inline is better than in a
+    # daemon thread: if it blows up here, we'll get a traceback. If it blew up
+    # in some other thread, the traceback would get eaten and we'd run the
+    # subject test program anyway.
+    httpd, port = freeport(xrange(8000, 8020),
+                           lambda port: Server(('127.0.0.1', port), TestHTTPRequestHandler))
+    # Pass the selected port number to the subject test program via the
+    # environment. We don't want to impose requirements on the test program's
+    # command-line parsing -- and anyway, for C++ integration tests, that's
+    # performed in TUT code rather than our own.
+    os.environ["PORT"] = str(port)
+    debug("$PORT = %s", port)
+    sys.exit(run(server=Thread(name="httpd", target=httpd.serve_forever), *sys.argv[1:]))
diff --git a/indra/llrender/llgl.cpp b/indra/llrender/llgl.cpp
index 27d8056ea26..0b56b3889c9 100644
--- a/indra/llrender/llgl.cpp
+++ b/indra/llrender/llgl.cpp
@@ -188,6 +188,9 @@ PFNGLWAITSYNCPROC				glWaitSync = NULL;
 PFNGLGETINTEGER64VPROC			glGetInteger64v = NULL;
 PFNGLGETSYNCIVPROC				glGetSynciv = NULL;
 
+// GL_APPLE_flush_buffer_range
+PFNGLBUFFERPARAMETERIAPPLEPROC	glBufferParameteriAPPLE = NULL;
+PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC glFlushMappedBufferRangeAPPLE = NULL;
 
 // vertex object prototypes
 PFNGLNEWOBJECTBUFFERATIPROC			glNewObjectBufferATI = NULL;
diff --git a/indra/lscript/lscript_compile/CMakeLists.txt b/indra/lscript/lscript_compile/CMakeLists.txt
index 134703eed3e..2cfd3898935 100644
--- a/indra/lscript/lscript_compile/CMakeLists.txt
+++ b/indra/lscript/lscript_compile/CMakeLists.txt
@@ -113,8 +113,10 @@ if (WINDOWS)
         ${CMAKE_CURRENT_BINARY_DIR}/indra.y.cpp
         ${CMAKE_CURRENT_BINARY_DIR}/indra.y.hpp
       COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/bison.bat
+      ARGS
         ${BISON} ${M4_PATH}
-        ${CMAKE_CURRENT_BINARY_DIR}/indra.y.cpp
+        -p indra_
+        -d -o ${CMAKE_CURRENT_BINARY_DIR}/indra.y.cpp
         ${CMAKE_CURRENT_SOURCE_DIR}/indra.y
       DEPENDS
         ${CMAKE_CURRENT_SOURCE_DIR}/bison.bat
diff --git a/indra/lscript/lscript_compile/bison.bat b/indra/lscript/lscript_compile/bison.bat
index 0baff4e5ef9..d40997225e0 100644
--- a/indra/lscript/lscript_compile/bison.bat
+++ b/indra/lscript/lscript_compile/bison.bat
@@ -2,10 +2,11 @@
 @REM find m4, even if neither program is present in PATH.
 
 @set bison=%1
-set M4PATH=%2
+shift
+set M4PATH=%1
+shift
 set M4=
-@set output=%3
-@set input=%4
 
 set PATH=%M4PATH%;%PATH%
-%bison% -d -o %output% %input%
+@REM %* does not work with shift...
+%bison% %1 %2 %3 %4 %5 %6 %7 %8 %9
-- 
GitLab


From 3d698286fbdcdfc0c9bdcb873f0d2af124640a0b Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Tue, 25 Sep 2012 23:27:15 +0000
Subject: [PATCH 103/436] Wrapping failing llgl assert in gDebugGL

---
 indra/llrender/llgl.cpp | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/indra/llrender/llgl.cpp b/indra/llrender/llgl.cpp
index a53c3ca9b7b..e28e3157d20 100644
--- a/indra/llrender/llgl.cpp
+++ b/indra/llrender/llgl.cpp
@@ -1951,7 +1951,10 @@ LLGLState::LLGLState(LLGLenum state, S32 enabled) :
 	if (mState)
 	{
 		mWasEnabled = sStateMap[state];
-		llassert(mWasEnabled == glIsEnabled(state));
+		if (gDebugGL)
+		{
+			llassert(mWasEnabled == glIsEnabled(state));
+		}
 		setEnabled(enabled);
 		stop_glerror();
 	}
-- 
GitLab


From ae0bb922909af95d96c140c1d74a4f39a264d4ec Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Wed, 26 Sep 2012 06:36:24 -0400
Subject: [PATCH 104/436] renamed isUsingBakedTextures to more accurate
 isUsingServerBakes. Commented some areas we are probably using the function
 incorrectly

---
 indra/llappearance/llavatarappearance.h |  4 +++-
 indra/llappearance/lltexlayerparams.cpp |  2 +-
 indra/newview/llagent.cpp               |  5 +++--
 indra/newview/llviewertexlayer.cpp      |  3 ++-
 indra/newview/llviewerwindow.cpp        |  3 ++-
 indra/newview/llvoavatar.h              | 17 +++++++++++++++--
 indra/newview/llvoavatarself.cpp        |  6 ++++--
 7 files changed, 30 insertions(+), 10 deletions(-)
 mode change 100644 => 100755 indra/llappearance/llavatarappearance.h

diff --git a/indra/llappearance/llavatarappearance.h b/indra/llappearance/llavatarappearance.h
old mode 100644
new mode 100755
index 5726ff62d10..2aa43d25d2d
--- a/indra/llappearance/llavatarappearance.h
+++ b/indra/llappearance/llavatarappearance.h
@@ -106,7 +106,9 @@ class LLAvatarAppearance : public LLCharacter
 public:
 	virtual bool 	isSelf() const { return false; } // True if this avatar is for this viewer's agent
 	virtual BOOL	isValid() const;
-	virtual BOOL	isUsingBakedTextures() const = 0;
+	virtual BOOL	isUsingServerBakes() const = 0;
+	virtual BOOL	isUsingLocalAppearance() const = 0;
+	virtual BOOL	isEditingAppearance() const = 0;
 
 	bool isBuilt() const { return mIsBuilt; }
 
diff --git a/indra/llappearance/lltexlayerparams.cpp b/indra/llappearance/lltexlayerparams.cpp
index 82c92b5a5ea..651468b1a55 100644
--- a/indra/llappearance/lltexlayerparams.cpp
+++ b/indra/llappearance/lltexlayerparams.cpp
@@ -176,7 +176,7 @@ void LLTexLayerParamAlpha::setWeight(F32 weight, BOOL upload_bake)
 
 		if ((mAvatarAppearance->getSex() & getSex()) && (mAvatarAppearance->isSelf() && !mIsDummy)) // only trigger a baked texture update if we're changing a wearable's visual param.
 		{
-			if (!mAvatarAppearance->isUsingBakedTextures())
+			if (!mAvatarAppearance->isUsingServerBakes())
 			{
 				upload_bake = FALSE;
 			}
diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index 4e05836bca2..fe48abc25a2 100755
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -3630,7 +3630,8 @@ void LLAgent::processAgentCachedTextureResponse(LLMessageSystem *mesgsys, void *
 		return;
 	}
 
-	if (isAgentAvatarValid() && !gAgentAvatarp->isUsingBakedTextures())
+	// FIXME DRANO wrong check
+	if (isAgentAvatarValid() && !gAgentAvatarp->isUsingServerBakes())
 	{
 		// ignore baked textures when in customize mode
 		return;
@@ -4262,7 +4263,7 @@ void LLAgent::sendAgentSetAppearance()
 {
 	if (!isAgentAvatarValid() || (getRegion() && getRegion()->getCentralBakeVersion())) return;
 
-	if (gAgentQueryManager.mNumPendingQueries > 0 && (isAgentAvatarValid() && gAgentAvatarp->isUsingBakedTextures())) 
+	if (gAgentQueryManager.mNumPendingQueries > 0 && (isAgentAvatarValid() && gAgentAvatarp->isUsingServerBakes())) 
 	{
 		return;
 	}
diff --git a/indra/newview/llviewertexlayer.cpp b/indra/newview/llviewertexlayer.cpp
index f516562c2fd..463906d3ef6 100644
--- a/indra/newview/llviewertexlayer.cpp
+++ b/indra/newview/llviewertexlayer.cpp
@@ -285,7 +285,8 @@ BOOL LLViewerTexLayerSetBuffer::uploadInProgress() const
 BOOL LLViewerTexLayerSetBuffer::isReadyToUpload() const
 {
 	if (!gAgentQueryManager.hasNoPendingQueries()) return FALSE; // Can't upload if there are pending queries.
-	if (isAgentAvatarValid() && !gAgentAvatarp->isUsingBakedTextures()) return FALSE; // Don't upload if avatar is using composites.
+	// FIXME DRANO
+	if (isAgentAvatarValid() && !gAgentAvatarp->isUsingServerBakes()) return FALSE; // Don't upload if avatar is using composites.
 
 	BOOL ready = FALSE;
 	if (getViewerTexLayerSet()->isLocalTextureDataFinal())
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 0cad2e3ec68..aa3cf3bb9c9 100755
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -4731,7 +4731,8 @@ void LLViewerWindow::restoreGL(const std::string& progress_message)
 		gResizeScreenTexture = TRUE;
 		gWindowResized = TRUE;
 
-		if (isAgentAvatarValid() && !gAgentAvatarp->isUsingBakedTextures())
+		// FIXME DRANO
+		if (isAgentAvatarValid() && !gAgentAvatarp->isUsingServerBakes())
 		{
 			LLVisualParamHint::requestHintUpdates();
 		}
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
index 96e87279b24..10c081cf68d 100755
--- a/indra/newview/llvoavatar.h
+++ b/indra/newview/llvoavatar.h
@@ -208,7 +208,6 @@ class LLVOAvatar :
 
 public:
 	virtual bool 	isSelf() const { return false; } // True if this avatar is for this viewer's agent
-	/*virtual*/BOOL	isUsingBakedTextures() const { return mUseServerBakes; } // e.g. false if in appearance edit mode		
 
 private: //aligned members
 	LL_ALIGN_16(LLVector4a	mImpostorExtents[2]);
@@ -636,7 +635,21 @@ class LLVOAvatar :
 	//--------------------------------------------------------------------
 public:
 	BOOL			getIsAppearanceAnimating() const { return mAppearanceAnimating; }
-	BOOL			isUsingLocalAppearance() const { return mUseLocalAppearance; }
+
+	// True if we are computing our appearance via local compositing
+	// instead of baked textures, as for example during wearable
+	// editing or when waiting for a subsequent server rebake.
+	/*virtual*/ BOOL	isUsingLocalAppearance() const { return mUseLocalAppearance; }
+
+	// True if this avatar should fetch its baked textures via the new
+	// appearance mechanism.
+	/*virtual*/ BOOL	isUsingServerBakes() const { return mUseServerBakes; }
+
+	// True if we are currently in appearance editing mode. Often but
+	// not always the same as isUsingLocalAppearance().
+	/*virtual*/ BOOL	isEditingAppearance() const { return mIsEditingAppearance; }
+
+	// FIXME review isUsingLocalAppearance uses, some should be isEditing instead.
 
 private:
 	BOOL			mAppearanceAnimating;
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index c5bb4c37005..d6d1853becb 100755
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -1274,7 +1274,8 @@ void LLVOAvatarSelf::localTextureLoaded(BOOL success, LLViewerFetchedTexture *sr
 			discard_level < local_tex_obj->getDiscard())
 		{
 			local_tex_obj->setDiscard(discard_level);
-			if (isUsingBakedTextures())
+			// FIXME DRANO
+			if (isUsingServerBakes())
 			{
 				requestLayerSetUpdate(index);
 			}
@@ -1758,7 +1759,8 @@ void LLVOAvatarSelf::setLocalTexture(ETextureIndex type, LLViewerTexture* src_te
 					local_tex_obj->setDiscard(tex_discard);
 					if (isSelf())
 					{
-						if (gAgentAvatarp->isUsingBakedTextures())
+						// FIXME DRANO
+						if (gAgentAvatarp->isUsingServerBakes())
 						{
 							requestLayerSetUpdate(type);
 						}
-- 
GitLab


From 04b0862b3b53ef57801b779c51e6b8fe1c442008 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Wed, 26 Sep 2012 11:27:13 -0400
Subject: [PATCH 105/436] use accessors for mUseLocalAppearance,
 mIsEditingAppearance, mUseServerBakes

---
 indra/newview/llvoavatar.cpp     | 16 ++++++++--------
 indra/newview/llvoavatarself.cpp |  1 +
 2 files changed, 9 insertions(+), 8 deletions(-)

diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 5ccd2d206db..1676f656d36 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -4060,7 +4060,7 @@ void LLVOAvatar::updateTextures()
 			if (isIndexBakedTexture((ETextureIndex)texture_index)
 				&& imagep->getID() != IMG_DEFAULT_AVATAR
 				&& imagep->getID() != IMG_INVISIBLE
-				&& !mUseServerBakes 
+				&& !isUsingServerBakes() 
 				&& !imagep->getTargetHost().isOk())
 			{
 				LL_WARNS_ONCE("Texture") << "LLVOAvatar::updateTextures No host for texture "
@@ -4203,7 +4203,7 @@ void LLVOAvatar::setTexEntry(const U8 index, const LLTextureEntry &te)
 const std::string LLVOAvatar::getImageURL(const U8 te, const LLUUID &uuid)
 {
 	std::string url = "";
-	if (mUseServerBakes && !gSavedSettings.getString("AgentAppearanceServiceURL").empty())
+	if (isUsingServerBakes() && !gSavedSettings.getString("AgentAppearanceServiceURL").empty())
 	{
 		const LLAvatarAppearanceDictionary::TextureEntry* texture_entry = LLAvatarAppearanceDictionary::getInstance()->getTexture((ETextureIndex)te);
 		if (texture_entry != NULL)
@@ -5816,7 +5816,7 @@ void LLVOAvatar::updateMeshTextures()
 	for (U32 i=0; i < mBakedTextureDatas.size(); i++)
 	{
 		LLViewerTexLayerSet* layerset = getTexLayerSet(i);
-		if (use_lkg_baked_layer[i] && !mUseLocalAppearance )
+		if (use_lkg_baked_layer[i] && !isUsingLocalAppearance() )
 		{
 			LLViewerFetchedTexture* baked_img;
 			const std::string url = getImageURL(i, mBakedTextureDatas[i].mLastTextureIndex);
@@ -5852,7 +5852,7 @@ void LLVOAvatar::updateMeshTextures()
 				}
 			}
 		}
-		else if (!mUseLocalAppearance && is_layer_baked[i])
+		else if (!isUsingLocalAppearance() && is_layer_baked[i])
 		{
 			LLViewerFetchedTexture* baked_img = LLViewerTextureManager::staticCastToFetchedTexture(getImage( mBakedTextureDatas[i].mTextureIndex, 0 ), TRUE) ;
 			if( baked_img->getID() == mBakedTextureDatas[i].mLastTextureIndex )
@@ -5872,7 +5872,7 @@ void LLVOAvatar::updateMeshTextures()
 					src_callback_list, paused );
 			}
 		}
-		else if (layerset && mUseLocalAppearance) 
+		else if (layerset && isUsingLocalAppearance())
 		{
 			layerset->createComposite();
 			layerset->setUpdatesEnabled( TRUE );
@@ -5913,7 +5913,7 @@ void LLVOAvatar::updateMeshTextures()
 	// set texture and color of hair manually if we are not using a baked image.
 	// This can happen while loading hair for yourself, or for clients that did not
 	// bake a hair texture. Still needed for yourself after 1.22 is depricated.
-	if (!is_layer_baked[BAKED_HAIR] || mIsEditingAppearance)
+	if (!is_layer_baked[BAKED_HAIR] || isEditingAppearance())
 	{
 		const LLColor4 color = mTexHairColor ? mTexHairColor->getColor() : LLColor4(1,1,1,1);
 		LLViewerTexture* hair_img = getImage( TEX_HAIR, 0 );
@@ -6360,7 +6360,7 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 	if( isSelf() )
 	{
 		llwarns << avString() << "Received AvatarAppearance for self" << llendl;
-		if( mFirstTEMessageReceived && !mUseServerBakes)
+		if( mFirstTEMessageReceived && !isUsingServerBakes())
 		{
 //			llinfos << "processAvatarAppearance end  " << mID << llendl;
 			return;
@@ -6399,7 +6399,7 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 	}
 
 	// Check for stale update.
-	if (mUseServerBakes && isSelf()
+	if (isUsingServerBakes() && isSelf()
 		&& this_update_cof_version >= LLViewerInventoryCategory::VERSION_INITIAL
 		&& this_update_cof_version < last_update_request_cof_version)
 	{
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index d6d1853becb..b4f36a6391b 100755
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -2671,6 +2671,7 @@ void LLVOAvatarSelf::onCustomizeEnd(bool disable_camera_switch)
 		gAgentAvatarp->mIsEditingAppearance = false;
 		if (gAgentAvatarp->getRegion() && !gAgentAvatarp->getRegion()->getCentralBakeVersion())
 		{
+			// FIXME DRANO - move to sendAgentSetAppearance, make conditional on upload complete.
 			gAgentAvatarp->mUseLocalAppearance = false;
 		}
 
-- 
GitLab


From ab83fab72c66e753917001a9030aa55e69a3c496 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Wed, 26 Sep 2012 11:52:19 -0400
Subject: [PATCH 106/436] error checking, comments for areas needing fix/check
 in appearance

---
 indra/llappearance/lldriverparam.cpp    | 2 +-
 indra/llappearance/lltexlayerparams.cpp | 1 +
 indra/newview/llagent.cpp               | 5 +++++
 indra/newview/llviewertexlayer.cpp      | 2 +-
 indra/newview/llviewerwindow.cpp        | 2 +-
 indra/newview/llvoavatar.cpp            | 9 ++++++++-
 indra/newview/llvoavatarself.cpp        | 2 +-
 7 files changed, 18 insertions(+), 5 deletions(-)
 mode change 100644 => 100755 indra/llappearance/lltexlayerparams.cpp
 mode change 100644 => 100755 indra/newview/llviewertexlayer.cpp

diff --git a/indra/llappearance/lldriverparam.cpp b/indra/llappearance/lldriverparam.cpp
index ec282c50eb8..a43878899c9 100755
--- a/indra/llappearance/lldriverparam.cpp
+++ b/indra/llappearance/lldriverparam.cpp
@@ -187,7 +187,7 @@ BOOL LLDriverParam::setInfo(LLDriverParamInfo *info)
 {
 	llassert(wearable);
 	LLDriverParam *new_param = new LLDriverParam(mAvatarAppearance, wearable);
-	// FIXME this clobbers mWearablep, which means any code currently using mWearablep is wrong.
+	// FIXME DRANO this clobbers mWearablep, which means any code currently using mWearablep is wrong.
 	*new_param = *this;
 //	new_param->mDriven.clear(); // clear driven list to avoid overwriting avatar driven params from wearables. 
 	return new_param;
diff --git a/indra/llappearance/lltexlayerparams.cpp b/indra/llappearance/lltexlayerparams.cpp
old mode 100644
new mode 100755
index 651468b1a55..18e70af23c6
--- a/indra/llappearance/lltexlayerparams.cpp
+++ b/indra/llappearance/lltexlayerparams.cpp
@@ -176,6 +176,7 @@ void LLTexLayerParamAlpha::setWeight(F32 weight, BOOL upload_bake)
 
 		if ((mAvatarAppearance->getSex() & getSex()) && (mAvatarAppearance->isSelf() && !mIsDummy)) // only trigger a baked texture update if we're changing a wearable's visual param.
 		{
+			// FIXME DRANO - is this check right?
 			if (!mAvatarAppearance->isUsingServerBakes())
 			{
 				upload_bake = FALSE;
diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index fe48abc25a2..ffcd263d061 100755
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -4263,6 +4263,8 @@ void LLAgent::sendAgentSetAppearance()
 {
 	if (!isAgentAvatarValid() || (getRegion() && getRegion()->getCentralBakeVersion())) return;
 
+
+	// FIXME DRANO - remove server bake check, covered by central bake check above?
 	if (gAgentQueryManager.mNumPendingQueries > 0 && (isAgentAvatarValid() && gAgentAvatarp->isUsingServerBakes())) 
 	{
 		return;
@@ -4321,6 +4323,9 @@ void LLAgent::sendAgentSetAppearance()
 	}
 
 	// only update cache entries if we have all our baked textures
+	// FIXME DRANO additional if check for not in appearance editing
+	// mode, if still using local composites need to set using local
+	// composites to false, update mesh textures.
 	if (textures_current)
 	{
 		LL_INFOS("Avatar") << gAgentAvatarp->avString() << "TAT: Sending cached texture data" << LL_ENDL;
diff --git a/indra/newview/llviewertexlayer.cpp b/indra/newview/llviewertexlayer.cpp
old mode 100644
new mode 100755
index 463906d3ef6..9477e89f1c5
--- a/indra/newview/llviewertexlayer.cpp
+++ b/indra/newview/llviewertexlayer.cpp
@@ -285,7 +285,7 @@ BOOL LLViewerTexLayerSetBuffer::uploadInProgress() const
 BOOL LLViewerTexLayerSetBuffer::isReadyToUpload() const
 {
 	if (!gAgentQueryManager.hasNoPendingQueries()) return FALSE; // Can't upload if there are pending queries.
-	// FIXME DRANO
+	// FIXME DRANO - should be checking local appearance?
 	if (isAgentAvatarValid() && !gAgentAvatarp->isUsingServerBakes()) return FALSE; // Don't upload if avatar is using composites.
 
 	BOOL ready = FALSE;
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index aa3cf3bb9c9..d6d127ddfca 100755
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -4731,7 +4731,7 @@ void LLViewerWindow::restoreGL(const std::string& progress_message)
 		gResizeScreenTexture = TRUE;
 		gWindowResized = TRUE;
 
-		// FIXME DRANO
+		// FIXME DRANO - what to check against here?
 		if (isAgentAvatarValid() && !gAgentAvatarp->isUsingServerBakes())
 		{
 			LLVisualParamHint::requestHintUpdates();
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 1676f656d36..0f18aa358c6 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -4203,8 +4203,15 @@ void LLVOAvatar::setTexEntry(const U8 index, const LLTextureEntry &te)
 const std::string LLVOAvatar::getImageURL(const U8 te, const LLUUID &uuid)
 {
 	std::string url = "";
-	if (isUsingServerBakes() && !gSavedSettings.getString("AgentAppearanceServiceURL").empty())
+	if (isUsingServerBakes())
 	{
+		if (gSavedSettings.getString("AgentAppearanceServiceURL").empty())
+		{
+			// Probably a server-side issue if we get here:
+			llwarns << "AgentAppearanceServiceURL not set - Baked texture requests will fail" << llendl;
+			return url;
+		}
+	
 		const LLAvatarAppearanceDictionary::TextureEntry* texture_entry = LLAvatarAppearanceDictionary::getInstance()->getTexture((ETextureIndex)te);
 		if (texture_entry != NULL)
 		{
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index b4f36a6391b..6f58ffc5c18 100755
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -1274,7 +1274,7 @@ void LLVOAvatarSelf::localTextureLoaded(BOOL success, LLViewerFetchedTexture *sr
 			discard_level < local_tex_obj->getDiscard())
 		{
 			local_tex_obj->setDiscard(discard_level);
-			// FIXME DRANO
+			// FIXME DRANO - should this be a local appearance check?
 			if (isUsingServerBakes())
 			{
 				requestLayerSetUpdate(index);
-- 
GitLab


From 93e210d91f521b01deb10aa6aa25160364e6ae28 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Wed, 26 Sep 2012 15:45:58 -0400
Subject: [PATCH 107/436] more state management stuff, DRANO flags for
 problematic areas

---
 indra/llappearance/lldriverparam.cpp    |  3 ++-
 indra/llappearance/lltexlayerparams.cpp |  8 ++------
 indra/newview/llagent.cpp               | 12 ++++++++----
 indra/newview/llviewertexlayer.cpp      |  3 +--
 indra/newview/llviewerwearable.cpp      |  2 ++
 indra/newview/llviewerwindow.cpp        |  3 +--
 indra/newview/llvoavatar.cpp            |  2 +-
 indra/newview/llvoavatarself.cpp        | 16 ++++------------
 8 files changed, 21 insertions(+), 28 deletions(-)

diff --git a/indra/llappearance/lldriverparam.cpp b/indra/llappearance/lldriverparam.cpp
index a43878899c9..2d91ebdee9c 100755
--- a/indra/llappearance/lldriverparam.cpp
+++ b/indra/llappearance/lldriverparam.cpp
@@ -187,7 +187,8 @@ BOOL LLDriverParam::setInfo(LLDriverParamInfo *info)
 {
 	llassert(wearable);
 	LLDriverParam *new_param = new LLDriverParam(mAvatarAppearance, wearable);
-	// FIXME DRANO this clobbers mWearablep, which means any code currently using mWearablep is wrong.
+	// FIXME DRANO this clobbers mWearablep, which means any code
+	// currently using mWearablep is wrong, or at least untested.
 	*new_param = *this;
 //	new_param->mDriven.clear(); // clear driven list to avoid overwriting avatar driven params from wearables. 
 	return new_param;
diff --git a/indra/llappearance/lltexlayerparams.cpp b/indra/llappearance/lltexlayerparams.cpp
index 18e70af23c6..32bdba4e1c9 100755
--- a/indra/llappearance/lltexlayerparams.cpp
+++ b/indra/llappearance/lltexlayerparams.cpp
@@ -174,13 +174,9 @@ void LLTexLayerParamAlpha::setWeight(F32 weight, BOOL upload_bake)
 	{
 		mCurWeight = new_weight;
 
-		if ((mAvatarAppearance->getSex() & getSex()) && (mAvatarAppearance->isSelf() && !mIsDummy)) // only trigger a baked texture update if we're changing a wearable's visual param.
+		if ((mAvatarAppearance->getSex() & getSex()) &&
+			(mAvatarAppearance->isSelf() && !mIsDummy)) // only trigger a baked texture update if we're changing a wearable's visual param.
 		{
-			// FIXME DRANO - is this check right?
-			if (!mAvatarAppearance->isUsingServerBakes())
-			{
-				upload_bake = FALSE;
-			}
 			mAvatarAppearance->invalidateComposite(mTexLayer->getTexLayerSet(), upload_bake);
 			mTexLayer->invalidateMorphMasks();
 		}
diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index ffcd263d061..bb9f8eaa26f 100755
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -3630,8 +3630,7 @@ void LLAgent::processAgentCachedTextureResponse(LLMessageSystem *mesgsys, void *
 		return;
 	}
 
-	// FIXME DRANO wrong check
-	if (isAgentAvatarValid() && !gAgentAvatarp->isUsingServerBakes())
+	if (isAgentAvatarValid() && gAgentAvatarp->isEditingAppearance())
 	{
 		// ignore baked textures when in customize mode
 		return;
@@ -4261,11 +4260,16 @@ void LLAgent::requestLeaveGodMode()
 //-----------------------------------------------------------------------------
 void LLAgent::sendAgentSetAppearance()
 {
+	// FIXME DRANO - this return short-circuits a bunch of phase stat tracking below.
 	if (!isAgentAvatarValid() || (getRegion() && getRegion()->getCentralBakeVersion())) return;
 
+	// FIXME DRANO - problems around new-style appearance in an old-style region.
+	// - does this get called?
+	// - need to change mUseServerBakes->FALSE in that case
+	// - need to call processAvatarAppearance as if server had returned this result?
+	// gAgentAvatarp->mUseServerBakes = FALSE;
 
-	// FIXME DRANO - remove server bake check, covered by central bake check above?
-	if (gAgentQueryManager.mNumPendingQueries > 0 && (isAgentAvatarValid() && gAgentAvatarp->isUsingServerBakes())) 
+	if (gAgentQueryManager.mNumPendingQueries > 0) 
 	{
 		return;
 	}
diff --git a/indra/newview/llviewertexlayer.cpp b/indra/newview/llviewertexlayer.cpp
index 9477e89f1c5..b129c28e0d9 100755
--- a/indra/newview/llviewertexlayer.cpp
+++ b/indra/newview/llviewertexlayer.cpp
@@ -285,8 +285,7 @@ BOOL LLViewerTexLayerSetBuffer::uploadInProgress() const
 BOOL LLViewerTexLayerSetBuffer::isReadyToUpload() const
 {
 	if (!gAgentQueryManager.hasNoPendingQueries()) return FALSE; // Can't upload if there are pending queries.
-	// FIXME DRANO - should be checking local appearance?
-	if (isAgentAvatarValid() && !gAgentAvatarp->isUsingServerBakes()) return FALSE; // Don't upload if avatar is using composites.
+	if (isAgentAvatarValid() && gAgentAvatarp->isEditingAppearance()) return FALSE; // Don't upload if avatar is being edited.
 
 	BOOL ready = FALSE;
 	if (getViewerTexLayerSet()->isLocalTextureDataFinal())
diff --git a/indra/newview/llviewerwearable.cpp b/indra/newview/llviewerwearable.cpp
index 373cc63b414..bd277349d62 100755
--- a/indra/newview/llviewerwearable.cpp
+++ b/indra/newview/llviewerwearable.cpp
@@ -537,6 +537,8 @@ void LLViewerWearable::setVisualParams()
 
 void LLViewerWearable::revertValues()
 {
+	// FIXME DRANO - this triggers changes to driven params on avatar, potentially clobbering baked appearance.
+
 	//update saved settings so wearable is no longer dirty
 	// non-driver params first
 	for (param_map_t::const_iterator iter = mSavedVisualParamMap.begin(); iter != mSavedVisualParamMap.end(); iter++)
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index d6d127ddfca..209e49940a2 100755
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -4731,8 +4731,7 @@ void LLViewerWindow::restoreGL(const std::string& progress_message)
 		gResizeScreenTexture = TRUE;
 		gWindowResized = TRUE;
 
-		// FIXME DRANO - what to check against here?
-		if (isAgentAvatarValid() && !gAgentAvatarp->isUsingServerBakes())
+		if (isAgentAvatarValid() && gAgentAvatarp->isEditingAppearance())
 		{
 			LLVisualParamHint::requestHintUpdates();
 		}
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 0f18aa358c6..a7a08208d42 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -626,7 +626,7 @@ LLVOAvatar::LLVOAvatar(const LLUUID& id,
 	mLastRezzedStatus(-1),
 	mIsEditingAppearance(FALSE),
 	mUseLocalAppearance(FALSE),
-	mUseServerBakes(TRUE)
+	mUseServerBakes(FALSE)
 {
 	LLMemType mt(LLMemType::MTYPE_AVATAR);
 	//VTResume();  // VTune
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index 6f58ffc5c18..65cadb66df6 100755
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -1274,12 +1274,8 @@ void LLVOAvatarSelf::localTextureLoaded(BOOL success, LLViewerFetchedTexture *sr
 			discard_level < local_tex_obj->getDiscard())
 		{
 			local_tex_obj->setDiscard(discard_level);
-			// FIXME DRANO - should this be a local appearance check?
-			if (isUsingServerBakes())
-			{
-				requestLayerSetUpdate(index);
-			}
-			else
+			requestLayerSetUpdate(index);
+			if (isEditingAppearance())
 			{
 				LLVisualParamHint::requestHintUpdates();
 			}
@@ -1759,12 +1755,8 @@ void LLVOAvatarSelf::setLocalTexture(ETextureIndex type, LLViewerTexture* src_te
 					local_tex_obj->setDiscard(tex_discard);
 					if (isSelf())
 					{
-						// FIXME DRANO
-						if (gAgentAvatarp->isUsingServerBakes())
-						{
-							requestLayerSetUpdate(type);
-						}
-						else
+						requestLayerSetUpdate(type);
+						if (isEditingAppearance())
 						{
 							LLVisualParamHint::requestHintUpdates();
 						}
-- 
GitLab


From 05ee87af14c4d20e754aa525e4a3f78eb736a96b Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Wed, 26 Sep 2012 17:02:46 -0400
Subject: [PATCH 108/436] Fixed problems caused by defaulting mUseServerBakes
 to false

---
 indra/newview/llvoavatar.cpp     | 25 ++++++++++++-------------
 indra/newview/llvoavatarself.cpp |  5 ++++-
 2 files changed, 16 insertions(+), 14 deletions(-)

diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index a7a08208d42..f5299f0fa3e 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -6364,23 +6364,10 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 			<< " first? " << is_first_appearance_message << " self? " << isSelf() << LL_ENDL;
 
 
-	if( isSelf() )
-	{
-		llwarns << avString() << "Received AvatarAppearance for self" << llendl;
-		if( mFirstTEMessageReceived && !isUsingServerBakes())
-		{
-//			llinfos << "processAvatarAppearance end  " << mID << llendl;
-			return;
-		}
-	}
-
 	ESex old_sex = getSex();
 
-//	llinfos << "LLVOAvatar::processAvatarAppearance()" << llendl;
-//	dumpAvatarTEs( "PRE  processAvatarAppearance()" );
 	LLTEContents tec;
 	parseTEMessage(mesgsys, _PREHASH_ObjectData, -1, tec);
-//	dumpAvatarTEs( "POST processAvatarAppearance()" );
 
 	U8 appearance_version = 0;
 	S32 this_update_cof_version = LLViewerInventoryCategory::VERSION_UNKNOWN;
@@ -6405,6 +6392,18 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 		mUseServerBakes = false;
 	}
 
+	// Only now that we have result of appearance_version can we decide whether to bail out.
+	// Don't expect this case to occur.
+	if( isSelf() )
+	{
+		llwarns << avString() << "Received AvatarAppearance for self" << llendl;
+		if( mFirstTEMessageReceived && !isUsingServerBakes())
+		{
+			return;
+		}
+	}
+
+
 	// Check for stale update.
 	if (isUsingServerBakes() && isSelf()
 		&& this_update_cof_version >= LLViewerInventoryCategory::VERSION_INITIAL
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index 65cadb66df6..7ca40a8752f 100755
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -746,7 +746,10 @@ U32  LLVOAvatarSelf::processUpdateMessage(LLMessageSystem *mesgsys,
 {
 	U32 retval = LLVOAvatar::processUpdateMessage(mesgsys,user_data,block_num,update_type,dp);
 
-	if (mInitialBakesLoaded == false && retval == 0x0)
+	// FIXME DRANO - skipping in the case of !mFirstAppearanceMessageReceived prevents us from trying to
+	// load textures before we know where they come from (ie, from baking service or not);
+	// unknown impact on performance.
+	if (mInitialBakesLoaded == false && retval == 0x0 && mFirstAppearanceMessageReceived)
 	{
 		// call update textures to force the images to be created
 		updateMeshTextures();
-- 
GitLab


From 0bb1324a27d4dd94d6f8a9d445ab892127f48c5f Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Wed, 26 Sep 2012 18:11:57 -0400
Subject: [PATCH 109/436] Debug text for avatar appearance state related to
 server-side baking project

---
 indra/newview/llvoavatar.cpp | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index f5299f0fa3e..fb06eb24c1c 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -2882,6 +2882,20 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent)
 
 	// clear debug text
 	mDebugText.clear();
+
+	if (gSavedSettings.getBOOL("DebugAvatarAppearanceMessage"))
+	{
+		S32 central_bake_version = -1;
+		if (getRegion())
+		{
+			central_bake_version = getRegion()->getCentralBakeVersion();
+		}
+		addDebugText(llformat("mUseLocalAppearance: %d,\nmIsEditingAppearance: %d\n"
+							  "mUseServerBakes %d,\ncentralBakeVersion %d",
+							  mUseLocalAppearance, mIsEditingAppearance,
+							  mUseServerBakes, central_bake_version));
+	}
+				 
 	if (LLVOAvatar::sShowAnimationDebug)
 	{
 		for (LLMotionController::motion_list_t::iterator iter = mMotionController.getActiveMotions().begin();
-- 
GitLab


From 4f93192e7d00f1f03e0e5241e9f1d2f31623729c Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Thu, 27 Sep 2012 00:38:52 +0000
Subject: [PATCH 110/436] Fix for mac/linux 'ruth' appearance.  Fix for linux
 build issue

---
 autobuild.xml                      | 4 ++--
 indra/newview/llviewerwearable.cpp | 3 ++-
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index 0c2fb6783f5..d91ea052382 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -1254,9 +1254,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>9ddf0bb2238a937f0115d6c9f0cf723f</string>
+              <string>e737558cc184667f23f01a103cc9a41a</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/265084/arch/Linux/installer/llappearanceutility_source-0.1-linux-20120923.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/265214/arch/Linux/installer/llappearanceutility_source-0.1-linux-20120926.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
diff --git a/indra/newview/llviewerwearable.cpp b/indra/newview/llviewerwearable.cpp
index 162c20837a7..41cef237edb 100644
--- a/indra/newview/llviewerwearable.cpp
+++ b/indra/newview/llviewerwearable.cpp
@@ -319,7 +319,8 @@ void LLViewerWearable::writeToAvatar(LLAvatarAppearance *avatarp)
 
 	if (!viewer_avatar->isValid()) return;
 
-#if 1
+	// *TODO: Check with Vir on this:
+#if 0
 	if (!viewer_avatar->isUsingLocalAppearance())
 	{
 		return;
-- 
GitLab


From 352698140775e62498686f80b5aa21aee85524cf Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Thu, 27 Sep 2012 05:47:48 -0400
Subject: [PATCH 111/436] Fix for ruthing in non-server-bake regions

---
 indra/newview/llviewerwearable.cpp | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/indra/newview/llviewerwearable.cpp b/indra/newview/llviewerwearable.cpp
index bd277349d62..440548046fb 100755
--- a/indra/newview/llviewerwearable.cpp
+++ b/indra/newview/llviewerwearable.cpp
@@ -38,6 +38,7 @@
 #include "llavatarappearancedefines.h"
 #include "llviewerwearable.h"
 #include "llviewercontrol.h"
+#include "llviewerregion.h"
 
 using namespace LLAvatarAppearanceDefines;
 
@@ -322,8 +323,9 @@ void LLViewerWearable::writeToAvatar(LLAvatarAppearance *avatarp)
 
 	if (!viewer_avatar->isValid()) return;
 
-    // FIXME restrict this check to server bake regions?
-	if (!viewer_avatar->isUsingLocalAppearance())
+	if (viewer_avatar->getRegion() &&
+		(viewer_avatar->getRegion()->getCentralBakeVersion()>0) &&
+		!viewer_avatar->isUsingLocalAppearance())
 	{
 		return;
 	}
-- 
GitLab


From 637fb26dd892d57a87698180adf9a8122c48b996 Mon Sep 17 00:00:00 2001
From: Nyx Linden <nyx@lindenlab.com>
Date: Thu, 27 Sep 2012 20:31:09 +0000
Subject: [PATCH 112/436] Updating appearance utility source

---
 autobuild.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index d91ea052382..0b79be64f7a 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -1254,9 +1254,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>e737558cc184667f23f01a103cc9a41a</string>
+              <string>3f6d155b817f13577b96ff28160d5e12</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/265214/arch/Linux/installer/llappearanceutility_source-0.1-linux-20120926.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/265243/arch/Linux/installer/llappearanceutility_source-0.1-linux-20120927.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
-- 
GitLab


From 09ee906f23ded0b618b6afa8425f5984f48bd35b Mon Sep 17 00:00:00 2001
From: "Nyx (Neal Orman)" <nyx@lindenlab.com>
Date: Thu, 27 Sep 2012 17:19:17 -0400
Subject: [PATCH 113/436] Updating appearance utility source package

---
 autobuild.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index 0b79be64f7a..4816310c380 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -1254,9 +1254,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>3f6d155b817f13577b96ff28160d5e12</string>
+              <string>acfd1513f234912ad20638fc4a467164</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/265243/arch/Linux/installer/llappearanceutility_source-0.1-linux-20120927.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/265247/arch/Linux/installer/llappearanceutility_source-0.1-linux-20120927.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
-- 
GitLab


From 878eb2b61a26eef3151319cffd1d8d5196b118c2 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Thu, 27 Sep 2012 17:46:19 -0400
Subject: [PATCH 114/436] audited uses of centralBakeVersion vs.
 isUsingServerBakes

---
 indra/newview/llagent.cpp          | 11 ++++++-----
 indra/newview/llappearancemgr.cpp  |  1 +
 indra/newview/llviewerregion.cpp   |  1 +
 indra/newview/llviewerwearable.cpp |  5 +++--
 indra/newview/llvoavatar.cpp       | 25 ++++++++++++-------------
 indra/newview/llvoavatar.h         |  2 ++
 6 files changed, 25 insertions(+), 20 deletions(-)

diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index bb9f8eaa26f..709d29e884c 100755
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -4260,9 +4260,6 @@ void LLAgent::requestLeaveGodMode()
 //-----------------------------------------------------------------------------
 void LLAgent::sendAgentSetAppearance()
 {
-	// FIXME DRANO - this return short-circuits a bunch of phase stat tracking below.
-	if (!isAgentAvatarValid() || (getRegion() && getRegion()->getCentralBakeVersion())) return;
-
 	// FIXME DRANO - problems around new-style appearance in an old-style region.
 	// - does this get called?
 	// - need to change mUseServerBakes->FALSE in that case
@@ -4282,6 +4279,9 @@ void LLAgent::sendAgentSetAppearance()
 	}
 	
 	gAgentAvatarp->sendAppearanceChangeMetrics();
+
+	if (!isAgentAvatarValid() || (getRegion() && getRegion()->getCentralBakeVersion())) return;
+
 	LL_INFOS("Avatar") << gAgentAvatarp->avString() << "TAT: Sent AgentSetAppearance: " << gAgentAvatarp->getBakedStatusForPrintout() << LL_ENDL;
 	//dumpAvatarTEs( "sendAgentSetAppearance()" );
 
@@ -4327,9 +4327,10 @@ void LLAgent::sendAgentSetAppearance()
 	}
 
 	// only update cache entries if we have all our baked textures
-	// FIXME DRANO additional if check for not in appearance editing
+
+	// FIXME DRANO need additional check for not in appearance editing
 	// mode, if still using local composites need to set using local
-	// composites to false, update mesh textures.
+	// composites to false, and update mesh textures.
 	if (textures_current)
 	{
 		LL_INFOS("Avatar") << gAgentAvatarp->avString() << "TAT: Sending cached texture data" << LL_ENDL;
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 1e4e00d77da..c57269d0b00 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -1750,6 +1750,7 @@ void LLAppearanceMgr::updateAppearanceFromCOF(bool update_base_outfit_ordering)
 	{
 		requestServerAppearanceUpdate();
 	}
+	gAgentAvatarp->setIsUsingServerBakes(gAgent.getRegion() && gAgent.getRegion()->getCentralBakeVersion());
 	
 	//dumpCat(getCOF(),"COF, start");
 
diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp
index fb50b8bb77b..0855bc9243e 100755
--- a/indra/newview/llviewerregion.cpp
+++ b/indra/newview/llviewerregion.cpp
@@ -283,6 +283,7 @@ LLViewerRegion::LLViewerRegion(const U64 &handle,
 	mSimAccess( SIM_ACCESS_MIN ),
 	mBillableFactor(1.0),
 	mMaxTasks(DEFAULT_MAX_REGION_WIDE_PRIM_COUNT),
+	mCentralBakeVersion(0),
 	mClassID(0),
 	mCPURatio(0),
 	mColoName("unknown"),
diff --git a/indra/newview/llviewerwearable.cpp b/indra/newview/llviewerwearable.cpp
index 440548046fb..9b1d8d79364 100755
--- a/indra/newview/llviewerwearable.cpp
+++ b/indra/newview/llviewerwearable.cpp
@@ -323,8 +323,9 @@ void LLViewerWearable::writeToAvatar(LLAvatarAppearance *avatarp)
 
 	if (!viewer_avatar->isValid()) return;
 
-	if (viewer_avatar->getRegion() &&
-		(viewer_avatar->getRegion()->getCentralBakeVersion()>0) &&
+	// FIXME DRANO - kludgy way to avoid overwriting avatar state from wearables.
+	// Ideally would avoid calling this func in the first place.
+	if (viewer_avatar->isUsingServerBakes() &&
 		!viewer_avatar->isUsingLocalAppearance())
 	{
 		return;
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index fb06eb24c1c..50c26595631 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -626,7 +626,7 @@ LLVOAvatar::LLVOAvatar(const LLUUID& id,
 	mLastRezzedStatus(-1),
 	mIsEditingAppearance(FALSE),
 	mUseLocalAppearance(FALSE),
-	mUseServerBakes(FALSE)
+	mUseServerBakes(FALSE) // FIXME DRANO consider using boost::optional, defaulting to unknown.
 {
 	LLMemType mt(LLMemType::MTYPE_AVATAR);
 	//VTResume();  // VTune
@@ -2890,8 +2890,8 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent)
 		{
 			central_bake_version = getRegion()->getCentralBakeVersion();
 		}
-		addDebugText(llformat("mUseLocalAppearance: %d,\nmIsEditingAppearance: %d\n"
-							  "mUseServerBakes %d,\ncentralBakeVersion %d",
+		addDebugText(llformat("mUseLocalAppearance: %d\nmIsEditingAppearance: %d\n"
+							  "mUseServerBakes %d\ncentralBakeVersion %d",
 							  mUseLocalAppearance, mIsEditingAppearance,
 							  mUseServerBakes, central_bake_version));
 	}
@@ -6397,20 +6397,15 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 		//mesgsys->getU32Fast(_PREHASH_AppearanceData, _PREHASH_Flags, appearance_flags, 0);
 	}
 
-	if (appearance_version > 0)
-	{
-		mUseServerBakes = true;
-	}
-	else
-	{
-		mUseServerBakes = false;
-	}
+	mUseServerBakes = (appearance_version > 0);
 
 	// Only now that we have result of appearance_version can we decide whether to bail out.
-	// Don't expect this case to occur.
 	if( isSelf() )
 	{
-		llwarns << avString() << "Received AvatarAppearance for self" << llendl;
+		if (getRegion() && (getRegion()->getCentralBakeVersion()==0))
+		{
+			llwarns << avString() << "Received AvatarAppearance message for self in non-server-bake region" << llendl;
+		}
 		if( mFirstTEMessageReceived && !isUsingServerBakes())
 		{
 			return;
@@ -7052,6 +7047,10 @@ void LLVOAvatar::bodySizeChanged()
 	}
 }
 
+void LLVOAvatar::setIsUsingServerBakes(BOOL newval)
+{
+	mUseServerBakes = newval;
+}
 
 // virtual
 void LLVOAvatar::removeMissingBakedTextures()
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
index 10c081cf68d..5f858a2bea5 100755
--- a/indra/newview/llvoavatar.h
+++ b/indra/newview/llvoavatar.h
@@ -644,6 +644,8 @@ class LLVOAvatar :
 	// True if this avatar should fetch its baked textures via the new
 	// appearance mechanism.
 	/*virtual*/ BOOL	isUsingServerBakes() const { return mUseServerBakes; }
+	void 				setIsUsingServerBakes(BOOL newval);
+
 
 	// True if we are currently in appearance editing mode. Often but
 	// not always the same as isUsingLocalAppearance().
-- 
GitLab


From 3844f4328b03ce25e4fcc5083e9cd106876acf6f Mon Sep 17 00:00:00 2001
From: Nyx Linden <nyx@lindenlab.com>
Date: Thu, 27 Sep 2012 22:10:26 +0000
Subject: [PATCH 115/436] Updating appearance utility src, with fixed merge

---
 autobuild.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index 4816310c380..7195c006804 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -1254,9 +1254,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>acfd1513f234912ad20638fc4a467164</string>
+              <string>02c3a65194635b57a5fff05ff47e62e5</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/265247/arch/Linux/installer/llappearanceutility_source-0.1-linux-20120927.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/265256/arch/Linux/installer/llappearanceutility_source-0.1-linux-20120927.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
-- 
GitLab


From f9a5cdba507096d16d834fe58c850b9f55ad9462 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Fri, 28 Sep 2012 01:06:17 +0000
Subject: [PATCH 116/436] Started stubbing out llsd support for tex layer
 information.

---
 autobuild.xml                       |  4 ++--
 indra/llappearance/lltexlayer.cpp   | 31 +++++++++++++++++++++++++++++
 indra/llappearance/lltexlayer.h     |  7 ++++++-
 indra/llappearance/llwearable.h     |  1 +
 indra/llappearance/llwearabledata.h |  2 +-
 5 files changed, 41 insertions(+), 4 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index 7195c006804..3ac29320759 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -1254,9 +1254,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>02c3a65194635b57a5fff05ff47e62e5</string>
+              <string>84dae3ea3825fa0584ef3de78bcc1632</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/265256/arch/Linux/installer/llappearanceutility_source-0.1-linux-20120927.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/265271/arch/Linux/installer/llappearanceutility_source-0.1-linux-20120928.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
diff --git a/indra/llappearance/lltexlayer.cpp b/indra/llappearance/lltexlayer.cpp
index e90efac36bc..79d870c61da 100644
--- a/indra/llappearance/lltexlayer.cpp
+++ b/indra/llappearance/lltexlayer.cpp
@@ -469,6 +469,31 @@ const std::string LLTexLayerSet::getBodyRegionName() const
 }
 
 
+// virtual
+void LLTexLayerSet::asLLSD(LLSD& sd) const
+{
+	sd["visible"] = LLSD::Boolean(isVisible());
+	LLSD layer_list_sd;
+	layer_list_t::const_iterator layer_iter = mLayerList.begin();
+	layer_list_t::const_iterator layer_end  = mLayerList.end();
+	for(; layer_iter != layer_end; ++layer_iter);
+	{
+		LLSD layer_sd;
+		//LLTexLayerInterface* layer = (*layer_iter);
+		//if (layer)
+		//{
+		//	layer->asLLSD(layer_sd);
+		//}
+		layer_list_sd.append(layer_sd);
+	}
+	LLSD mask_list_sd;
+	LLSD info_sd;
+	sd["layers"] = layer_list_sd;
+	sd["masks"] = mask_list_sd;
+	sd["info"] = info_sd;
+}
+
+
 void LLTexLayerSet::destroyComposite()
 {
 	if( mComposite )
@@ -966,6 +991,12 @@ LLTexLayer::~LLTexLayer()
 
 }
 
+void LLTexLayer::asLLSD(LLSD& sd) const
+{
+	// *TODO: Finish
+	sd["id"] = getUUID();
+}
+
 //-----------------------------------------------------------------------------
 // setInfo
 //-----------------------------------------------------------------------------
diff --git a/indra/llappearance/lltexlayer.h b/indra/llappearance/lltexlayer.h
index 692cfa1a38f..a288d7fc50a 100644
--- a/indra/llappearance/lltexlayer.h
+++ b/indra/llappearance/lltexlayer.h
@@ -89,6 +89,8 @@ class LLTexLayerInterface
 	ERenderPass				getRenderPass() const;
 	BOOL					isVisibilityMask() const;
 
+	virtual void			asLLSD(LLSD& sd) const {}
+
 protected:
 	const std::string&		getGlobalColor() const;
 	LLViewerVisualParam*	getVisualParamPtr(S32 index) const;
@@ -163,10 +165,11 @@ class LLTexLayer : public LLTexLayerInterface
 	void					setLTO(LLLocalTextureObject *lto) 	{ mLocalTextureObject = lto; }
 	LLLocalTextureObject* 	getLTO() 							{ return mLocalTextureObject; }
 
+	/*virtual*/ void		asLLSD(LLSD& sd) const;
+
 	static void 			calculateTexLayerColor(const param_color_list_t &param_list, LLColor4 &net_color);
 protected:
 	LLUUID					getUUID() const;
-private:
 	typedef std::map<U32, U8*> alpha_cache_t;
 	alpha_cache_t			mAlphaCache;
 	LLLocalTextureObject* 	mLocalTextureObject;
@@ -214,6 +217,8 @@ class LLTexLayerSet
 
 	static BOOL					sHasCaches;
 
+	virtual void				asLLSD(LLSD& sd) const;
+
 protected:
 	typedef std::vector<LLTexLayerInterface *> layer_list_t;
 	layer_list_t				mLayerList;
diff --git a/indra/llappearance/llwearable.h b/indra/llappearance/llwearable.h
index bc73ed4d8c5..4a598117957 100644
--- a/indra/llappearance/llwearable.h
+++ b/indra/llappearance/llwearable.h
@@ -68,6 +68,7 @@ class LLWearable
 	LLAssetType::EType			getAssetType() const;
 	S32							getDefinitionVersion() const { return mDefinitionVersion; }
 	void						setDefinitionVersion( S32 new_version ) { mDefinitionVersion = new_version; }
+	static S32					getCurrentDefinitionVersion() { return LLWearable::sCurrentDefinitionVersion; }
 
 public:
 	typedef std::vector<LLVisualParam*> visual_param_vec_t;
diff --git a/indra/llappearance/llwearabledata.h b/indra/llappearance/llwearabledata.h
index 379384a989c..3e92f2ead88 100644
--- a/indra/llappearance/llwearabledata.h
+++ b/indra/llappearance/llwearabledata.h
@@ -95,7 +95,7 @@ class LLWearableData
 	//--------------------------------------------------------------------
 	// Member variables
 	//--------------------------------------------------------------------
-private:
+protected:
 	LLAvatarAppearance* mAvatarAppearance;
 	typedef std::vector<LLWearable*> wearableentry_vec_t; // all wearables of a certain type (EG all shirts)
 	typedef std::map<LLWearableType::EType, wearableentry_vec_t> wearableentry_map_t;	// wearable "categories" arranged by wearable type
-- 
GitLab


From 0a94b5bb390675bb1746f24c8352e73240a8d670 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Fri, 28 Sep 2012 23:56:55 +0000
Subject: [PATCH 117/436] Exposing more tex layer information for hash id
 generation

---
 autobuild.xml                                 |  4 ++--
 .../llappearance/llavatarappearancedefines.h  |  1 +
 indra/llappearance/lltexlayer.cpp             | 20 ++++++++++++++++---
 indra/llappearance/lltexlayer.h               |  4 +++-
 4 files changed, 23 insertions(+), 6 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index 3ac29320759..adfdfcd3786 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -1254,9 +1254,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>84dae3ea3825fa0584ef3de78bcc1632</string>
+              <string>d1475169f4a18423a16d5161426b4ffd</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/265271/arch/Linux/installer/llappearanceutility_source-0.1-linux-20120928.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/265319/arch/Linux/installer/llappearanceutility_source-0.1-linux-20120928.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
diff --git a/indra/llappearance/llavatarappearancedefines.h b/indra/llappearance/llavatarappearancedefines.h
index 0351f284295..2e073bf5d27 100644
--- a/indra/llappearance/llavatarappearancedefines.h
+++ b/indra/llappearance/llavatarappearancedefines.h
@@ -46,6 +46,7 @@ extern const S32 IMPOSTOR_PERIOD;
 //--------------------------------------------------------------------
 enum ETextureIndex
 {
+	TEX_INVALID = -1,
 	TEX_HEAD_BODYPAINT = 0,
 	TEX_UPPER_SHIRT,
 	TEX_LOWER_PANTS,
diff --git a/indra/llappearance/lltexlayer.cpp b/indra/llappearance/lltexlayer.cpp
index 79d870c61da..6f079b4abbf 100644
--- a/indra/llappearance/lltexlayer.cpp
+++ b/indra/llappearance/lltexlayer.cpp
@@ -903,6 +903,21 @@ const std::string& LLTexLayerInterface::getName() const
 	return mInfo->mName; 
 }
 
+ETextureIndex LLTexLayerInterface::getLocalTextureIndex() const
+{
+	return (ETextureIndex) mInfo->mLocalTexture;
+}
+
+LLWearableType::EType LLTexLayerInterface::getWearableType() const
+{
+	ETextureIndex te = getLocalTextureIndex();
+	if (TEX_INVALID == te)
+	{
+		return LLWearableType::WT_INVALID;
+	}
+	return LLAvatarAppearanceDictionary::getTEWearableType(te);
+}
+
 LLTexLayerInterface::ERenderPass LLTexLayerInterface::getRenderPass() const
 {
 	return mInfo->mRenderPass; 
@@ -1585,13 +1600,12 @@ U32 LLTexLayerTemplate::updateWearableCache() const
 {
 	mWearableCache.clear();
 
-	S32 te = mInfo->mLocalTexture;
-	if (te == -1)
+	LLWearableType::EType wearable_type = getWearableType();
+	if (LLWearableType::WT_INVALID == wearable_type)
 	{
 		//this isn't a cloneable layer 
 		return 0;
 	}
-	LLWearableType::EType wearable_type = LLAvatarAppearanceDictionary::getTEWearableType((ETextureIndex)te);
 	U32 num_wearables = getAvatarAppearance()->getWearableData()->getWearableCount(wearable_type);
 	U32 added = 0;
 	for (U32 i = 0; i < num_wearables; i++)
diff --git a/indra/llappearance/lltexlayer.h b/indra/llappearance/lltexlayer.h
index a288d7fc50a..f9f8bdd817c 100644
--- a/indra/llappearance/lltexlayer.h
+++ b/indra/llappearance/lltexlayer.h
@@ -72,6 +72,8 @@ class LLTexLayerInterface
 
 	const LLTexLayerInfo* 	getInfo() const 			{ return mInfo; }
 	virtual BOOL			setInfo(const LLTexLayerInfo *info, LLWearable* wearable); // sets mInfo, calls initialization functions
+	LLWearableType::EType	getWearableType() const;
+	LLAvatarAppearanceDefines::ETextureIndex	getLocalTextureIndex() const;
 
 	const std::string&		getName() const;
 	const LLTexLayerSet* const getTexLayerSet() const 	{ return mTexLayerSet; }
@@ -211,7 +213,7 @@ class LLTexLayerSet
 	LLAvatarAppearance*			getAvatarAppearance()	const		{ return mAvatarAppearance; }
 	const std::string			getBodyRegionName() const;
 	BOOL						hasComposite() const 		{ return (mComposite.notNull()); }
-	LLAvatarAppearanceDefines::EBakedTextureIndex getBakedTexIndex() { return mBakedTexIndex; }
+	LLAvatarAppearanceDefines::EBakedTextureIndex getBakedTexIndex() const { return mBakedTexIndex; }
 	void						setBakedTexIndex(LLAvatarAppearanceDefines::EBakedTextureIndex index) { mBakedTexIndex = index; }
 	BOOL						isVisible() const 			{ return mIsVisible; }
 
-- 
GitLab


From 5010cf72d345e60d0a367ea213dafe8727414612 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Sun, 30 Sep 2012 09:22:22 +0000
Subject: [PATCH 118/436] Updating appearance utility version

---
 autobuild.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index adfdfcd3786..a536294dfde 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -1254,9 +1254,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>d1475169f4a18423a16d5161426b4ffd</string>
+              <string>85536d2727faea140175a903db48b5d7</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/265319/arch/Linux/installer/llappearanceutility_source-0.1-linux-20120928.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/265330/arch/Linux/installer/llappearanceutility_source-0.1-linux-20120930.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
-- 
GitLab


From 5483bc28ae6b33bf5b2371d46648ad20975daf8c Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Tue, 2 Oct 2012 01:02:34 +0000
Subject: [PATCH 119/436] Moved gatherMorphMaskAlpha into llappearance.

---
 .../llavatarappearancedefines.cpp             | 24 ++++++++++++++++++-
 .../llappearance/llavatarappearancedefines.h  |  1 +
 indra/llappearance/lltexlayer.cpp             | 15 ++++++++++++
 indra/llappearance/lltexlayer.h               |  1 +
 indra/newview/llviewertexlayer.cpp            | 21 +++-------------
 indra/newview/llviewertexlayer.h              |  1 -
 6 files changed, 43 insertions(+), 20 deletions(-)

diff --git a/indra/llappearance/llavatarappearancedefines.cpp b/indra/llappearance/llavatarappearancedefines.cpp
index 0416309fc76..f1c78946a11 100644
--- a/indra/llappearance/llavatarappearancedefines.cpp
+++ b/indra/llappearance/llavatarappearancedefines.cpp
@@ -220,7 +220,7 @@ ETextureIndex LLAvatarAppearanceDictionary::bakedToLocalTextureIndex(EBakedTextu
 	return LLAvatarAppearanceDictionary::getInstance()->getBakedTexture(index)->mTextureIndex;
 }
 
-//static 
+// static
 EBakedTextureIndex LLAvatarAppearanceDictionary::findBakedByRegionName(std::string name)
 {
 	U8 index = 0;
@@ -238,6 +238,28 @@ EBakedTextureIndex LLAvatarAppearanceDictionary::findBakedByRegionName(std::stri
 	return BAKED_NUM_INDICES;
 }
 
+// static 
+EBakedTextureIndex LLAvatarAppearanceDictionary::findBakedByImageName(std::string name)
+{
+	U8 index = 0;
+	while (index < BAKED_NUM_INDICES)
+	{
+		const BakedEntry *be = LLAvatarAppearanceDictionary::getInstance()->getBakedTexture((EBakedTextureIndex) index);
+		if (be)
+		{
+			const TextureEntry *te = LLAvatarAppearanceDictionary::getInstance()->getTexture(be->mTextureIndex);
+			if (te && te->mDefaultImageName.compare(name) == 0)
+			{
+				// baked texture found
+				return (EBakedTextureIndex) index;
+			}
+		}
+		index++;
+	}
+	// baked texture could not be found
+	return BAKED_NUM_INDICES;
+}
+
 // static
 LLWearableType::EType LLAvatarAppearanceDictionary::getTEWearableType(ETextureIndex index )
 {
diff --git a/indra/llappearance/llavatarappearancedefines.h b/indra/llappearance/llavatarappearancedefines.h
index 2e073bf5d27..496f85c1075 100644
--- a/indra/llappearance/llavatarappearancedefines.h
+++ b/indra/llappearance/llavatarappearancedefines.h
@@ -217,6 +217,7 @@ class LLAvatarAppearanceDictionary : public LLSingleton<LLAvatarAppearanceDictio
 
 	// find a baked texture index based on its name
 	static EBakedTextureIndex 	findBakedByRegionName(std::string name);
+	static EBakedTextureIndex 	findBakedByImageName(std::string name);
 
 	// Given a texture entry, determine which wearable type owns it.
 	static LLWearableType::EType 		getTEWearableType(ETextureIndex index);
diff --git a/indra/llappearance/lltexlayer.cpp b/indra/llappearance/lltexlayer.cpp
index 6f079b4abbf..16f94c48ddd 100644
--- a/indra/llappearance/lltexlayer.cpp
+++ b/indra/llappearance/lltexlayer.cpp
@@ -516,6 +516,21 @@ const LLTexLayerSetBuffer* LLTexLayerSet::getComposite() const
 	return mComposite;
 }
 
+void LLTexLayerSet::gatherMorphMaskAlpha(U8 *data, S32 origin_x, S32 origin_y, S32 width, S32 height)
+{
+	memset(data, 255, width * height);
+
+	for( layer_list_t::iterator iter = mLayerList.begin(); iter != mLayerList.end(); iter++ )
+	{
+		LLTexLayerInterface* layer = *iter;
+		layer->gatherAlphaMasks(data, origin_x, origin_y, width, height);
+	}
+	
+	// Set alpha back to that of our alpha masks.
+	renderAlphaMaskTextures(origin_x, origin_y, width, height, true);
+}
+
+
 void LLTexLayerSet::renderAlphaMaskTextures(S32 x, S32 y, S32 width, S32 height, bool forceClear)
 {
 	const LLTexLayerSetInfo *info = getInfo();
diff --git a/indra/llappearance/lltexlayer.h b/indra/llappearance/lltexlayer.h
index f9f8bdd817c..405d2c7df42 100644
--- a/indra/llappearance/lltexlayer.h
+++ b/indra/llappearance/lltexlayer.h
@@ -194,6 +194,7 @@ class LLTexLayerSet
 	const LLTexLayerSetBuffer* 	getComposite() const; // Do not create one if it doesn't exist.
 	virtual void				createComposite() = 0;
 	void						destroyComposite();
+	void						gatherMorphMaskAlpha(U8 *data, S32 origin_x, S32 origin_y, S32 width, S32 height);
 
 	const LLTexLayerSetInfo* 	getInfo() const 			{ return mInfo; }
 	BOOL						setInfo(const LLTexLayerSetInfo *info); // This sets mInfo and calls initialization functions
diff --git a/indra/newview/llviewertexlayer.cpp b/indra/newview/llviewertexlayer.cpp
index b129c28e0d9..cd5e781d711 100755
--- a/indra/newview/llviewertexlayer.cpp
+++ b/indra/newview/llviewertexlayer.cpp
@@ -379,7 +379,9 @@ void LLViewerTexLayerSetBuffer::doUpload()
 	LLGLSUIDefault gls_ui;
 	LLPointer<LLImageRaw> baked_mask_image = new LLImageRaw(mFullWidth, mFullHeight, 1 );
 	U8* baked_mask_data = baked_mask_image->getData(); 
-	layer_set->gatherMorphMaskAlpha(baked_mask_data, mFullWidth, mFullHeight);
+	layer_set->gatherMorphMaskAlpha(baked_mask_data,
+									mOrigin.mX, mOrigin.mY,
+									mFullWidth, mFullHeight);
 
 
 	// Create the baked image from our color and mask information
@@ -700,23 +702,6 @@ void LLViewerTexLayerSet::setUpdatesEnabled( BOOL b )
 	mUpdatesEnabled = b; 
 }
 
-
-void LLViewerTexLayerSet::gatherMorphMaskAlpha(U8 *data, S32 width, S32 height)
-{
-	memset(data, 255, width * height);
-
-	for( layer_list_t::iterator iter = mLayerList.begin(); iter != mLayerList.end(); iter++ )
-	{
-		LLTexLayerInterface* layer = *iter;
-		layer->gatherAlphaMasks(data, getViewerComposite()->getOriginX(),
-								getViewerComposite()->getOriginY(), width, height);
-	}
-	
-	// Set alpha back to that of our alpha masks.
-	renderAlphaMaskTextures(getViewerComposite()->getOriginX(), 
-							getViewerComposite()->getOriginY(), width, height, true);
-}
-
 LLVOAvatarSelf* LLViewerTexLayerSet::getAvatar()
 {
 	return dynamic_cast<LLVOAvatarSelf*> (mAvatarAppearance);
diff --git a/indra/newview/llviewertexlayer.h b/indra/newview/llviewertexlayer.h
index 9df9474eff1..959c883da86 100644
--- a/indra/newview/llviewertexlayer.h
+++ b/indra/newview/llviewertexlayer.h
@@ -55,7 +55,6 @@ class LLViewerTexLayerSet : public LLTexLayerSet
 	/*virtual*/void				createComposite();
 	void						setUpdatesEnabled(BOOL b);
 	BOOL						getUpdatesEnabled()	const 	{ return mUpdatesEnabled; }
-	void						gatherMorphMaskAlpha(U8 *data, S32 width, S32 height);
 
 	LLVOAvatarSelf*				getAvatar();
 	const LLVOAvatarSelf*		getAvatar()	const;
-- 
GitLab


From 358b0ca5fffbd2357233ba789e8f2f2a9691cf14 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Tue, 2 Oct 2012 01:06:34 +0000
Subject: [PATCH 120/436] Updating appearance utility version

---
 autobuild.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index a536294dfde..ab39f8103f7 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -1254,9 +1254,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>85536d2727faea140175a903db48b5d7</string>
+              <string>c3a9b30d49918d20d51d2aa8f444b9ef</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/265330/arch/Linux/installer/llappearanceutility_source-0.1-linux-20120930.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/265409/arch/Linux/installer/llappearanceutility_source-0.1-linux-20121002.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
-- 
GitLab


From fe52f09952c78534377f26fc2eef9acff4a9b24d Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Tue, 2 Oct 2012 10:17:10 +0000
Subject: [PATCH 121/436] Updating appearance utility

---
 autobuild.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index ab39f8103f7..49bc2ce2076 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -1254,9 +1254,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>c3a9b30d49918d20d51d2aa8f444b9ef</string>
+              <string>3ef196fd77fc65bd1f52690dc6713034</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/265409/arch/Linux/installer/llappearanceutility_source-0.1-linux-20121002.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/265418/arch/Linux/installer/llappearanceutility_source-0.1-linux-20121002.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
-- 
GitLab


From e29b66ed6ce29528f7b733c51db22a31a05d3a5f Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Wed, 3 Oct 2012 17:13:18 -0400
Subject: [PATCH 122/436] additional fixes for avoiding avatar param
 manipulation via wearables, setting correct state from avatar appearance

---
 indra/llappearance/llwearabledata.cpp | 5 +++++
 indra/llcharacter/llvisualparam.cpp   | 1 +
 indra/newview/llviewerwearable.cpp    | 4 ++++
 indra/newview/llvoavatarself.cpp      | 7 +++++++
 4 files changed, 17 insertions(+)
 mode change 100644 => 100755 indra/llappearance/llwearabledata.cpp

diff --git a/indra/llappearance/llwearabledata.cpp b/indra/llappearance/llwearabledata.cpp
old mode 100644
new mode 100755
index d70bbf286a0..401b1dc1922
--- a/indra/llappearance/llwearabledata.cpp
+++ b/indra/llappearance/llwearabledata.cpp
@@ -119,6 +119,11 @@ U32 LLWearableData::pushWearable(const LLWearableType::EType type,
 void LLWearableData::wearableUpdated(LLWearable *wearable, BOOL removed)
 {
 	wearable->setUpdated();
+	// FIXME DRANO avoid updating params via wearables when rendering server-baked appearance.
+	if (mAvatarAppearance->isUsingServerBakes() && !mAvatarAppearance->isUsingLocalAppearance())
+	{
+		return;
+	}
 	if (!removed)
 	{
 		pullCrossWearableValues(wearable->getType());
diff --git a/indra/llcharacter/llvisualparam.cpp b/indra/llcharacter/llvisualparam.cpp
index 809b312abe2..255f61b1b34 100644
--- a/indra/llcharacter/llvisualparam.cpp
+++ b/indra/llcharacter/llvisualparam.cpp
@@ -250,6 +250,7 @@ void LLVisualParam::setAnimationTarget(F32 target_value, BOOL upload_bake)
 	if (mIsDummy)
 	{
 		setWeight(target_value, upload_bake);
+		mTargetWeight = mCurWeight;
 		return;
 	}
 
diff --git a/indra/newview/llviewerwearable.cpp b/indra/newview/llviewerwearable.cpp
index f3d9b2c678d..1200f65b6e7 100755
--- a/indra/newview/llviewerwearable.cpp
+++ b/indra/newview/llviewerwearable.cpp
@@ -476,6 +476,10 @@ void LLViewerWearable::setItemID(const LLUUID& item_id)
 
 void LLViewerWearable::revertValues()
 {
+	if (isAgentAvatarValid() && gAgentAvatarp->isUsingServerBakes() && !gAgentAvatarp->isUsingLocalAppearance())
+	{
+		return;
+	}
 	LLWearable::revertValues();
 
 
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index 7ca40a8752f..a29ef2f3ad4 100755
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -668,6 +668,13 @@ BOOL LLVOAvatarSelf::setParamWeight(const LLViewerVisualParam *param, F32 weight
 		return FALSE;
 	}
 
+	// FIXME DRANO - kludgy way to avoid overwriting avatar state from wearables.
+	if (isUsingServerBakes() && !isUsingLocalAppearance())
+	{
+		return FALSE;
+	}
+
+
 	if (param->getCrossWearable())
 	{
 		LLWearableType::EType type = (LLWearableType::EType)param->getWearableType();
-- 
GitLab


From 8c0aa31536c447edb6ef4fbee43f99debf593a20 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Thu, 4 Oct 2012 00:42:31 +0000
Subject: [PATCH 123/436] Adding optimization to skip alpha image analysis when
 it isn't needed.

---
 indra/llappearance/lltexlayerparams.cpp |  2 +-
 indra/llimage/llimagetga.cpp            | 12 ++++++------
 indra/llrender/llimagegl.cpp            | 14 ++++++++++++--
 indra/llrender/llimagegl.h              |  5 +++--
 indra/newview/llviewerwindow.cpp        |  3 ++-
 5 files changed, 24 insertions(+), 12 deletions(-)

diff --git a/indra/llappearance/lltexlayerparams.cpp b/indra/llappearance/lltexlayerparams.cpp
index 32bdba4e1c9..8f1551353f2 100755
--- a/indra/llappearance/lltexlayerparams.cpp
+++ b/indra/llappearance/lltexlayerparams.cpp
@@ -288,7 +288,6 @@ BOOL LLTexLayerParamAlpha::render(S32 x, S32 y, S32 width, S32 height)
 			(mCachedProcessedTexture->getHeight() != image_tga_height) ||
 			(weight_changed))
 		{
-//			llinfos << "Building Cached Alpha: " << mName << ": (" << mStaticImageRaw->getWidth() << ", " << mStaticImageRaw->getHeight() << ") " << effective_weight << llendl;
 			mCachedEffectiveWeight = effective_weight;
 
 			if (!mCachedProcessedTexture)
@@ -307,6 +306,7 @@ BOOL LLTexLayerParamAlpha::render(S32 x, S32 y, S32 width, S32 height)
 			mStaticImageRaw = new LLImageRaw;
 			mStaticImageTGA->decodeAndProcess(mStaticImageRaw, info->mDomain, effective_weight);
 			mNeedsCreateTexture = TRUE;			
+			lldebugs << "Built Cached Alpha: " << info->mStaticImageFileName << ": (" << mStaticImageRaw->getWidth() << ", " << mStaticImageRaw->getHeight() << ") " << "Domain: " << info->mDomain << " Weight: " << effective_weight << llendl;
 		}
 
 		if (mCachedProcessedTexture)
diff --git a/indra/llimage/llimagetga.cpp b/indra/llimage/llimagetga.cpp
index 58426d31fa6..920ae2891f6 100644
--- a/indra/llimage/llimagetga.cpp
+++ b/indra/llimage/llimagetga.cpp
@@ -132,12 +132,12 @@ BOOL LLImageTGA::updateData()
 	**	  FIELD 2 :	COLOR MAP TYPE (1 BYTES)			
 	**	  FIELD 3 :	IMAGE TYPE CODE (1 BYTES)			
 	**					= 0	NO IMAGE DATA INCLUDED		
-	**					= 1	UNCOMPRESSED, COLOR-MAPPED IMAGE
-	**					= 2	UNCOMPRESSED, TRUE-COLOR IMAGE	
-	**					= 3	UNCOMPRESSED, BLACK AND WHITE IMAGE
-	**					= 9	RUN-LENGTH ENCODED COLOR-MAPPED IMAGE
-	**					= 10 RUN-LENGTH ENCODED TRUE-COLOR IMAGE
-	**					= 11 RUN-LENGTH ENCODED BLACK AND WHITE IMAGE
+	**					= (0001) 1	UNCOMPRESSED, COLOR-MAPPED IMAGE
+	**					= (0010) 2	UNCOMPRESSED, TRUE-COLOR IMAGE	
+	**					= (0011) 3	UNCOMPRESSED, BLACK AND WHITE IMAGE
+	**					= (1001) 9	RUN-LENGTH ENCODED COLOR-MAPPED IMAGE
+	**					= (1010) 10 RUN-LENGTH ENCODED TRUE-COLOR IMAGE
+	**					= (1011) 11 RUN-LENGTH ENCODED BLACK AND WHITE IMAGE
 	**	  FIELD 4 :	COLOR MAP SPECIFICATION	(5 BYTES)		
 	**				4.1 : COLOR MAP ORIGIN (2 BYTES)	
 	**				4.2 : COLOR MAP LENGTH (2 BYTES)	
diff --git a/indra/llrender/llimagegl.cpp b/indra/llrender/llimagegl.cpp
index d561f63544b..44224ba72f3 100755
--- a/indra/llrender/llimagegl.cpp
+++ b/indra/llrender/llimagegl.cpp
@@ -74,6 +74,9 @@ S32 LLImageGL::sCurTexSizeBar = -1 ;
 S32 LLImageGL::sCurTexPickSize = -1 ;
 S32 LLImageGL::sMaxCategories = 1 ;
 
+//optimization for when we don't need to calculate mIsMask
+BOOL LLImageGL::sSkipAnalyzeAlpha;
+
 //------------------------
 //****************************************************************************************************
 //End for texture auditing use only
@@ -169,8 +172,9 @@ BOOL is_little_endian()
 	return (*c == 0x78) ;
 }
 //static 
-void LLImageGL::initClass(S32 num_catagories) 
+void LLImageGL::initClass(S32 num_catagories, BOOL skip_analyze_alpha /* = false */)
 {
+	sSkipAnalyzeAlpha = skip_analyze_alpha;
 }
 
 //static 
@@ -1700,6 +1704,12 @@ BOOL LLImageGL::getBoundRecently() const
 	return (BOOL)(sLastFrameTime - mLastBindTime < MIN_TEXTURE_LIFETIME);
 }
 
+BOOL LLImageGL::getIsAlphaMask() const
+{
+	llassert_always(!sSkipAnalyzeAlpha);
+	return mIsMask;
+}
+
 void LLImageGL::setTarget(const LLGLenum target, const LLTexUnit::eTextureType bind_target)
 {
 	mTarget = target;
@@ -1797,7 +1807,7 @@ void LLImageGL::calcAlphaChannelOffsetAndStride()
 
 void LLImageGL::analyzeAlpha(const void* data_in, U32 w, U32 h)
 {
-	if(!mNeedsAlphaAndPickMask)
+	if(sSkipAnalyzeAlpha || !mNeedsAlphaAndPickMask)
 	{
 		return ;
 	}
diff --git a/indra/llrender/llimagegl.h b/indra/llrender/llimagegl.h
index cf3c484c79d..57a052b2588 100755
--- a/indra/llrender/llimagegl.h
+++ b/indra/llrender/llimagegl.h
@@ -142,7 +142,7 @@ class LLImageGL : public LLRefCount
 	BOOL getHasGLTexture() const { return mTexName != 0; }
 	LLGLuint getTexName() const { return mTexName; }
 
-	BOOL getIsAlphaMask() const { return mIsMask; }
+	BOOL getIsAlphaMask() const;
 
 	BOOL getIsResident(BOOL test_now = FALSE); // not const
 
@@ -262,11 +262,12 @@ class LLImageGL : public LLRefCount
 #endif
 
 public:
-	static void initClass(S32 num_catagories) ;
+	static void initClass(S32 num_catagories, BOOL skip_analyze_alpha = false); 
 	static void cleanupClass() ;
 
 private:
 	static S32 sMaxCategories;
+	static BOOL sSkipAnalyzeAlpha;
 	
 	//the flag to allow to call readBackRaw(...).
 	//can be removed if we do not use that function at all.
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 63fe9312dfe..4f66b32c1f9 100755
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -1641,7 +1641,8 @@ LLViewerWindow::LLViewerWindow(const Params& p)
 		
 	// Init the image list.  Must happen after GL is initialized and before the images that
 	// LLViewerWindow needs are requested.
-	LLImageGL::initClass(LLGLTexture::MAX_GL_IMAGE_CATEGORY) ;
+	const BOOL SKIP_ANALYZE_ALPHA=FALSE;
+	LLImageGL::initClass(LLGLTexture::MAX_GL_IMAGE_CATEGORY, SKIP_ANALYZE_ALPHA) ;
 	gTextureList.init();
 	LLViewerTextureManager::init() ;
 	gBumpImageList.init();
-- 
GitLab


From c9ab9590aa1d44ea139b16e7ffcb1461d928bdd5 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Thu, 4 Oct 2012 03:12:48 +0000
Subject: [PATCH 124/436] Removing server-related cmake cruft.  Fixing libGLU
 warnings on linux.

---
 autobuild.xml                                 |   8 +-
 indra/CMakeLists.txt                          | 121 ++++++++-------
 indra/cmake/00-Common.cmake                   |  53 ++-----
 indra/cmake/APR.cmake                         |   4 +-
 indra/cmake/CMakeLists.txt                    |  49 ++++--
 indra/cmake/CSharpMacros.cmake                | 142 ------------------
 indra/cmake/CopyBackToSource.cmake            |  16 --
 indra/cmake/DirectX.cmake                     |   4 +-
 indra/cmake/DragDrop.cmake                    |  27 ++--
 indra/cmake/Externals.cmake                   |  34 -----
 indra/cmake/FindELFIO.cmake                   |  48 ------
 indra/cmake/FindLLQtWebkit.cmake              |  62 --------
 indra/cmake/FindMT.cmake                      |  15 --
 indra/cmake/FindMono.cmake                    |  68 ---------
 indra/cmake/FindMySQL.cmake                   |  48 ------
 indra/cmake/FindSVN.cmake                     |  34 -----
 indra/cmake/GLEXT.cmake                       |   8 +
 indra/cmake/LLDatabase.cmake                  |  10 --
 indra/cmake/LLRender.cmake                    |   6 +-
 indra/cmake/LLScene.cmake                     |   7 -
 indra/cmake/LLWindow.cmake                    |  12 +-
 indra/cmake/LLXUIXML.cmake                    |   7 -
 indra/cmake/MonoDeps.cmake                    |  48 ------
 indra/cmake/MonoEmbed.cmake                   |  57 -------
 indra/cmake/MySQL.cmake                       |  26 ----
 indra/cmake/OpenGL.cmake                      |  17 ++-
 indra/cmake/Variables.cmake                   |  24 ---
 indra/cmake/VisualLeakDetector.cmake          |  15 +-
 indra/llrender/CMakeLists.txt                 |   2 +-
 indra/llrender/llgl.cpp                       |   2 +-
 indra/llvfs/CMakeLists.txt                    |   4 +-
 indra/llwindow/CMakeLists.txt                 |  20 ++-
 indra/media_plugins/base/CMakeLists.txt       |   2 +-
 indra/media_plugins/example/CMakeLists.txt    |   2 +-
 .../media_plugins/gstreamer010/CMakeLists.txt |   2 +-
 indra/media_plugins/quicktime/CMakeLists.txt  |   2 +-
 indra/media_plugins/webkit/CMakeLists.txt     |   2 +-
 indra/newview/CMakeLists.txt                  |   2 +-
 indra/test_apps/llplugintest/CMakeLists.txt   |   2 +-
 39 files changed, 181 insertions(+), 831 deletions(-)
 delete mode 100644 indra/cmake/CSharpMacros.cmake
 delete mode 100644 indra/cmake/CopyBackToSource.cmake
 delete mode 100644 indra/cmake/Externals.cmake
 delete mode 100644 indra/cmake/FindELFIO.cmake
 delete mode 100644 indra/cmake/FindLLQtWebkit.cmake
 delete mode 100644 indra/cmake/FindMT.cmake
 delete mode 100644 indra/cmake/FindMono.cmake
 delete mode 100644 indra/cmake/FindMySQL.cmake
 delete mode 100644 indra/cmake/FindSVN.cmake
 create mode 100644 indra/cmake/GLEXT.cmake
 delete mode 100644 indra/cmake/LLDatabase.cmake
 delete mode 100644 indra/cmake/LLScene.cmake
 delete mode 100644 indra/cmake/LLXUIXML.cmake
 delete mode 100644 indra/cmake/MonoDeps.cmake
 delete mode 100644 indra/cmake/MonoEmbed.cmake
 delete mode 100644 indra/cmake/MySQL.cmake

diff --git a/autobuild.xml b/autobuild.xml
index 49bc2ce2076..ca5c2aba62c 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -1254,9 +1254,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>3ef196fd77fc65bd1f52690dc6713034</string>
+              <string>f9e8a8d77da1849f928ed4ab80423e55</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/265418/arch/Linux/installer/llappearanceutility_source-0.1-linux-20121002.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/265525/arch/Linux/installer/llappearanceutility_source-0.1-linux-20121004.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
@@ -1432,9 +1432,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>bdfb275b9bfa071397fb5633a0f5d360</string>
+              <string>335655570cf6cfeb889c9f8c59bd6392</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-mesa/rev/265010/arch/Linux/installer/mesa-7.11.1-linux-20120920.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-mesa/rev/265524/arch/Linux/installer/mesa-7.11.1-linux-20121004.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
diff --git a/indra/CMakeLists.txt b/indra/CMakeLists.txt
index f5ed9632fab..9ea611df6c4 100644
--- a/indra/CMakeLists.txt
+++ b/indra/CMakeLists.txt
@@ -63,73 +63,70 @@ if (WINDOWS AND EXISTS ${LIBS_CLOSED_DIR}copy_win_scripts)
 endif (WINDOWS AND EXISTS ${LIBS_CLOSED_DIR}copy_win_scripts)
 
 add_custom_target(viewer)
-if (VIEWER)
-  add_subdirectory(${LIBS_OPEN_PREFIX}llcrashlogger)
-  add_subdirectory(${LIBS_OPEN_PREFIX}llplugin)
-  add_subdirectory(${LIBS_OPEN_PREFIX}llui)
-  add_subdirectory(${LIBS_OPEN_PREFIX}viewer_components)
-
-  # Legacy C++ tests. Build always, run if LL_TESTS is true.
-  add_subdirectory(${VIEWER_PREFIX}test)
-
-  # viewer media plugins
-  add_subdirectory(${LIBS_OPEN_PREFIX}media_plugins)
-
-  # llplugin testbed code (is this the right way to include it?)
-  if (LL_TESTS AND NOT LINUX)
-    add_subdirectory(${VIEWER_PREFIX}test_apps/llplugintest)
-  endif (LL_TESTS AND NOT LINUX)
-
-  if (LINUX)
-    add_subdirectory(${VIEWER_PREFIX}linux_crash_logger)
-    add_subdirectory(${VIEWER_PREFIX}linux_updater)
-    if (INSTALL_PROPRIETARY)
-        include(LLAppearanceUtility)
-        add_subdirectory(${LLAPPEARANCEUTILITY_SRC_DIR} ${LLAPPEARANCEUTILITY_BIN_DIR})
-    endif (INSTALL_PROPRIETARY)
-    add_dependencies(viewer linux-crash-logger-strip-target linux-updater)
-  elseif (DARWIN)
-    add_subdirectory(${VIEWER_PREFIX}mac_crash_logger)
-    add_subdirectory(${VIEWER_PREFIX}mac_updater)
-    add_dependencies(viewer mac-updater mac-crash-logger)
-  elseif (WINDOWS)
-    add_subdirectory(${VIEWER_PREFIX}win_crash_logger)
-    # cmake EXISTS requires an absolute path, see indra/cmake/Variables.cmake
-    if (EXISTS ${VIEWER_DIR}win_setup)
-      add_subdirectory(${VIEWER_DIR}win_setup)
-    endif (EXISTS ${VIEWER_DIR}win_setup)
-    add_subdirectory(${VIEWER_PREFIX}win_updater)
-    # add_dependencies(viewer windows-updater windows-setup windows-crash-logger)
-    add_dependencies(viewer windows-updater windows-crash-logger)
-  elseif (SOLARIS)
-    add_subdirectory(solaris_crash_logger)
-    add_dependencies(viewer solaris-crash-logger)
-  endif (LINUX)
-
-  add_subdirectory(${VIEWER_PREFIX}newview)
-  add_dependencies(viewer secondlife-bin)
-endif (VIEWER)
+add_subdirectory(${LIBS_OPEN_PREFIX}llcrashlogger)
+add_subdirectory(${LIBS_OPEN_PREFIX}llplugin)
+add_subdirectory(${LIBS_OPEN_PREFIX}llui)
+add_subdirectory(${LIBS_OPEN_PREFIX}viewer_components)
+
+# Legacy C++ tests. Build always, run if LL_TESTS is true.
+add_subdirectory(${VIEWER_PREFIX}test)
+
+# viewer media plugins
+add_subdirectory(${LIBS_OPEN_PREFIX}media_plugins)
+
+# llplugin testbed code (is this the right way to include it?)
+if (LL_TESTS AND NOT LINUX)
+  add_subdirectory(${VIEWER_PREFIX}test_apps/llplugintest)
+endif (LL_TESTS AND NOT LINUX)
+
+if (LINUX)
+  add_subdirectory(${VIEWER_PREFIX}linux_crash_logger)
+  add_subdirectory(${VIEWER_PREFIX}linux_updater)
+  if (INSTALL_PROPRIETARY)
+      include(LLAppearanceUtility)
+      add_subdirectory(${LLAPPEARANCEUTILITY_SRC_DIR} ${LLAPPEARANCEUTILITY_BIN_DIR})
+  endif (INSTALL_PROPRIETARY)
+  add_dependencies(viewer linux-crash-logger-strip-target linux-updater)
+elseif (DARWIN)
+  add_subdirectory(${VIEWER_PREFIX}mac_crash_logger)
+  add_subdirectory(${VIEWER_PREFIX}mac_updater)
+  add_dependencies(viewer mac-updater mac-crash-logger)
+elseif (WINDOWS)
+  add_subdirectory(${VIEWER_PREFIX}win_crash_logger)
+  # cmake EXISTS requires an absolute path, see indra/cmake/Variables.cmake
+  if (EXISTS ${VIEWER_DIR}win_setup)
+    add_subdirectory(${VIEWER_DIR}win_setup)
+  endif (EXISTS ${VIEWER_DIR}win_setup)
+  add_subdirectory(${VIEWER_PREFIX}win_updater)
+  # add_dependencies(viewer windows-updater windows-setup windows-crash-logger)
+  add_dependencies(viewer windows-updater windows-crash-logger)
+elseif (SOLARIS)
+  add_subdirectory(solaris_crash_logger)
+  add_dependencies(viewer solaris-crash-logger)
+endif (LINUX)
+
+add_subdirectory(${VIEWER_PREFIX}newview)
+add_dependencies(viewer secondlife-bin)
 
 # Linux builds the viewer and server in 2 separate projects
 # In order for build server to work on linux, 
 # the viewer project needs a server target.
 # This is not true for mac and windows.
-if (LINUX) 
-  add_custom_target(server)
-endif (LINUX)
-if (SERVER)
-  if (NOT LINUX)
-    add_custom_target(server)
-  endif (NOT LINUX)
-  include(${SERVER_PREFIX}Server.cmake)
-endif (SERVER)
-
-# Windows builds include tools like VFS tool
-if (SERVER)
-  if (WINDOWS)
-    add_subdirectory(${SERVER_PREFIX}tools)
-  endif (WINDOWS)
-endif (SERVER)
+# *TODO: Do something like this for BAKING?
+#if (LINUX) 
+#  add_custom_target(server)
+#endif (LINUX)
+#if (SERVER)
+#  if (NOT LINUX)
+#    add_custom_target(server)
+#  endif (NOT LINUX)
+#  include(${SERVER_PREFIX}Server.cmake)
+#
+#  # Windows builds include tools like VFS tool
+#  if (WINDOWS)
+#    add_subdirectory(${SERVER_PREFIX}tools)
+#  endif (WINDOWS)
+#endif (SERVER)
 
 if (LL_TESTS)
   # Define after the custom viewer and server targets are created so
diff --git a/indra/cmake/00-Common.cmake b/indra/cmake/00-Common.cmake
index 21cb87237dd..87fa4cf55ae 100644
--- a/indra/cmake/00-Common.cmake
+++ b/indra/cmake/00-Common.cmake
@@ -150,41 +150,21 @@ if (LINUX)
       -pthread
       )
 
-  if (SERVER)
-    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ftemplate-depth-60")
-    if (EXISTS /etc/debian_version)
-      FILE(READ /etc/debian_version DEBIAN_VERSION)
-    else (EXISTS /etc/debian_version)
-      set(DEBIAN_VERSION "")
-    endif (EXISTS /etc/debian_version)
-
-    if (NOT DEBIAN_VERSION STREQUAL "3.1")
-      add_definitions(-DCTYPE_WORKAROUND)
-    endif (NOT DEBIAN_VERSION STREQUAL "3.1")
-
-    if (EXISTS /usr/lib/mysql4/mysql)
-      link_directories(/usr/lib/mysql4/mysql)
-    endif (EXISTS /usr/lib/mysql4/mysql)
-
-  endif (SERVER)
-
-  if (VIEWER)
-    add_definitions(-DAPPID=secondlife)
-    add_definitions(-fvisibility=hidden)
-    # don't catch SIGCHLD in our base application class for the viewer - some of our 3rd party libs may need their *own* SIGCHLD handler to work.  Sigh!  The viewer doesn't need to catch SIGCHLD anyway.
-    add_definitions(-DLL_IGNORE_SIGCHLD)
-    if (WORD_SIZE EQUAL 32)
-      add_definitions(-march=pentium4)
-    endif (WORD_SIZE EQUAL 32)
-    add_definitions(-mfpmath=sse)
-    #add_definitions(-ftree-vectorize) # THIS CRASHES GCC 3.1-3.2
-    if (NOT STANDALONE)
-      # this stops us requiring a really recent glibc at runtime
-      add_definitions(-fno-stack-protector)
-      # linking can be very memory-hungry, especially the final viewer link
-      set(CMAKE_CXX_LINK_FLAGS "-Wl,--no-keep-memory")
-    endif (NOT STANDALONE)
-  endif (VIEWER)
+  add_definitions(-DAPPID=secondlife)
+  add_definitions(-fvisibility=hidden)
+  # don't catch SIGCHLD in our base application class for the viewer - some of our 3rd party libs may need their *own* SIGCHLD handler to work.  Sigh!  The viewer doesn't need to catch SIGCHLD anyway.
+  add_definitions(-DLL_IGNORE_SIGCHLD)
+  if (WORD_SIZE EQUAL 32)
+    add_definitions(-march=pentium4)
+  endif (WORD_SIZE EQUAL 32)
+  add_definitions(-mfpmath=sse)
+  #add_definitions(-ftree-vectorize) # THIS CRASHES GCC 3.1-3.2
+  if (NOT STANDALONE)
+    # this stops us requiring a really recent glibc at runtime
+    add_definitions(-fno-stack-protector)
+    # linking can be very memory-hungry, especially the final viewer link
+    set(CMAKE_CXX_LINK_FLAGS "-Wl,--no-keep-memory")
+  endif (NOT STANDALONE)
 
   set(CMAKE_CXX_FLAGS_DEBUG "-fno-inline ${CMAKE_CXX_FLAGS_DEBUG}")
   set(CMAKE_CXX_FLAGS_RELEASE "-O2 ${CMAKE_CXX_FLAGS_RELEASE}")
@@ -254,6 +234,3 @@ else (STANDALONE)
       )
 endif (STANDALONE)
 
-if(SERVER)
-  include_directories(${LIBS_PREBUILT_DIR}/include/havok)
-endif(SERVER)
diff --git a/indra/cmake/APR.cmake b/indra/cmake/APR.cmake
index daafa00fe27..492ba2adea1 100644
--- a/indra/cmake/APR.cmake
+++ b/indra/cmake/APR.cmake
@@ -49,9 +49,7 @@ else (STANDALONE)
   set(APR_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/include/apr-1)
 
   if (LINUX)
-    if (VIEWER)
-      list(APPEND APRUTIL_LIBRARIES ${DB_LIBRARIES} uuid)
-    endif (VIEWER)
+    list(APPEND APRUTIL_LIBRARIES ${DB_LIBRARIES} uuid)
     list(APPEND APRUTIL_LIBRARIES ${DB_LIBRARIES} rt)
   endif (LINUX)
 endif (STANDALONE)
diff --git a/indra/cmake/CMakeLists.txt b/indra/cmake/CMakeLists.txt
index 5935eeb1920..bee7a1b7c36 100644
--- a/indra/cmake/CMakeLists.txt
+++ b/indra/cmake/CMakeLists.txt
@@ -14,49 +14,65 @@ set(cmake_SOURCE_FILES
     Boost.cmake
     BuildVersion.cmake
     CARes.cmake
-    CURL.cmake
     CMakeCopyIfDifferent.cmake
+    CURL.cmake
     Copy3rdPartyLibs.cmake
-    CSharpMacros.cmake
     DBusGlib.cmake
+    DeploySharedLibs.cmake
     DirectX.cmake
+    DragDrop.cmake
     EXPAT.cmake
+    ExamplePlugin.cmake
+    FMOD.cmake
     FindAPR.cmake
+    FindAutobuild.cmake
     FindBerkeleyDB.cmake
     FindCARes.cmake
-    FindELFIO.cmake
     FindFMOD.cmake
+    FindGLH.cmake
+    FindGoogleBreakpad.cmake
     FindGooglePerfTools.cmake
-    FindMono.cmake
-    FindMySQL.cmake
+    FindHUNSPELL.cmake
+    FindJsonCpp.cmake
+    FindNDOF.cmake
     FindOpenJPEG.cmake
+    FindSCP.cmake
     FindXmlRpcEpi.cmake
     FindZLIB.cmake
-    FMOD.cmake
     FreeType.cmake
+    GLEXT.cmake
+    GLH.cmake
     GLOD.cmake
     GStreamer010Plugin.cmake
+    GetPrerequisites_2_8.cmake
+    Glui.cmake
+    Glut.cmake
+    GoogleBreakpad.cmake
+    GoogleMock.cmake
     GooglePerfTools.cmake
+    Havok.cmake
     Hunspell.cmake
     JPEG.cmake
+    JsonCpp.cmake
     LLAddBuildTest.cmake
     LLAppearance.cmake
+    LLAppearanceUtility.cmake
     LLAudio.cmake
     LLCharacter.cmake
     LLCommon.cmake
     LLCrashLogger.cmake
-    LLDatabase.cmake
     LLImage.cmake
     LLImageJ2COJ.cmake
     LLInventory.cmake
     LLKDU.cmake
+    LLLogin.cmake
     LLMath.cmake
     LLMessage.cmake
+    LLPhysicsExtensions.cmake
     LLPlugin.cmake
     LLPrimitive.cmake
-    LLPhysicsExtensions.cmake
     LLRender.cmake
-    LLScene.cmake
+    LLSharedLibs.cmake
     LLTestCommand.cmake
     LLUI.cmake
     LLVFS.cmake
@@ -64,21 +80,26 @@ set(cmake_SOURCE_FILES
     LLXML.cmake
     LScript.cmake
     Linking.cmake
-    MonoEmbed.cmake
-    MySQL.cmake
+    MediaPluginBase.cmake
     NDOF.cmake
     OPENAL.cmake
     OpenGL.cmake
     OpenJPEG.cmake
     OpenSSL.cmake
     PNG.cmake
-    Python.cmake
+    PluginAPI.cmake
     Prebuilt.cmake
+    PulseAudio.cmake
+    Python.cmake
+    QuickTimePlugin.cmake
     TemplateCheck.cmake
     Tut.cmake
     UI.cmake
     UnixInstall.cmake
     Variables.cmake
+    ViewerMiscLibs.cmake
+    VisualLeakDetector.cmake
+    WebKitLibPlugin.cmake
     XmlRpcEpi.cmake
     ZLIB.cmake
     )
@@ -89,10 +110,6 @@ set(master_SOURCE_FILES
     ../CMakeLists.txt
     )
 
-if (SERVER)
-  list(APPEND master_SOURCE_FILES ../Server.cmake)
-endif (SERVER)
-
 source_group("Master Rules" FILES ${master_SOURCE_FILES})
 
 set_source_files_properties(${cmake_SOURCE_FILES} ${master_SOURCE_FILES}
diff --git a/indra/cmake/CSharpMacros.cmake b/indra/cmake/CSharpMacros.cmake
deleted file mode 100644
index a4dd8150430..00000000000
--- a/indra/cmake/CSharpMacros.cmake
+++ /dev/null
@@ -1,142 +0,0 @@
-# - This is a support module for easy Mono/C# handling with CMake
-# It defines the following macros:
-#
-# ADD_CS_LIBRARY (<target> <source>)
-# ADD_CS_EXECUTABLE (<target> <source>)
-# INSTALL_GAC (<target>)
-#
-# Note that the order of the arguments is important.
-#
-# You can optionally set the variable CS_FLAGS to tell the macros whether
-# to pass additional flags to the compiler. This is particularly useful to
-# set assembly references, unsafe code, etc... These flags are always reset
-# after the target was added so you don't have to care about that.
-#
-# copyright (c) 2007 Arno Rehn arno@arnorehn.de
-#
-# Redistribution and use is allowed according to the terms of the GPL license.
-
-
-# ----- support macros -----
-MACRO(GET_CS_LIBRARY_TARGET_DIR)
-        IF (NOT LIBRARY_OUTPUT_PATH)
-                SET(CS_LIBRARY_TARGET_DIR ${CMAKE_CURRENT_BINARY_DIR})
-        ELSE (NOT LIBRARY_OUTPUT_PATH)
-                SET(CS_LIBRARY_TARGET_DIR ${LIBRARY_OUTPUT_PATH})
-        ENDIF (NOT LIBRARY_OUTPUT_PATH)
-ENDMACRO(GET_CS_LIBRARY_TARGET_DIR)
-
-MACRO(GET_CS_EXECUTABLE_TARGET_DIR)
-        IF (NOT EXECUTABLE_OUTPUT_PATH)
-                SET(CS_EXECUTABLE_TARGET_DIR ${CMAKE_CURRENT_BINARY_DIR})
-        ELSE (NOT EXECUTABLE_OUTPUT_PATH)
-                SET(CS_EXECUTABLE_TARGET_DIR ${EXECUTABLE_OUTPUT_PATH})
-        ENDIF (NOT EXECUTABLE_OUTPUT_PATH)
-ENDMACRO(GET_CS_EXECUTABLE_TARGET_DIR)
-
-MACRO(MAKE_PROPER_FILE_LIST)
-        FOREACH(file ${ARGN})
-                # first assume it's a relative path
-                FILE(GLOB globbed ${CMAKE_CURRENT_SOURCE_DIR}/${file})
-                IF(globbed)
-                        FILE(TO_NATIVE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/${file} native)
-                ELSE(globbed)
-                        FILE(TO_NATIVE_PATH ${file} native)
-                ENDIF(globbed)
-                SET(proper_file_list ${proper_file_list} ${native})
-                SET(native "")
-        ENDFOREACH(file)
-ENDMACRO(MAKE_PROPER_FILE_LIST)
-# ----- end support macros -----
-
-MACRO(ADD_CS_LIBRARY target)
-        GET_CS_LIBRARY_TARGET_DIR()
-        
-        SET(target_DLL "${CS_LIBRARY_TARGET_DIR}/${target}.dll")
-        MAKE_PROPER_FILE_LIST(${ARGN})
-        FILE(RELATIVE_PATH relative_path ${CMAKE_BINARY_DIR} ${target_DLL})
-        
-        SET(target_KEY "${CMAKE_CURRENT_SOURCE_DIR}/${target}.key")
-        SET(target_CS_FLAGS "${CS_FLAGS}")
-        IF(${target}_CS_FLAGS)
-                LIST(APPEND target_CS_FLAGS ${${target}_CS_FLAGS})
-        ENDIF(${target}_CS_FLAGS)
-        IF(EXISTS ${target_KEY})
-                LIST(APPEND target_CS_FLAGS -keyfile:${target_KEY})
-        ENDIF(EXISTS ${target_KEY})
-
-        FOREACH(ref ${${target}_REFS})
-                SET(ref_DLL ${CMAKE_CURRENT_BINARY_DIR}/${ref}.dll)
-                IF(EXISTS ${ref_DLL})
-                        LIST(APPEND target_CS_FLAGS -r:${ref_DLL})
-                ELSE(EXISTS ${ref_DLL})
-                        LIST(APPEND target_CS_FLAGS -r:${ref})
-                ENDIF(EXISTS ${ref_DLL})
-        ENDFOREACH(ref ${${target}_REFS})
-
-        ADD_CUSTOM_COMMAND (OUTPUT ${target_DLL}
-                COMMAND ${MCS_EXECUTABLE} ${target_CS_FLAGS} -out:${target_DLL} -target:library ${proper_file_list}
-                MAIN_DEPENDENCY ${proper_file_list}
-                DEPENDS ${ARGN}
-                COMMENT "Building ${relative_path}")
-        ADD_CUSTOM_TARGET (${target} ALL DEPENDS ${target_DLL})
-
-        FOREACH(ref ${${target}_REFS})
-                GET_TARGET_PROPERTY(is_target ${ref} TYPE)
-                IF(is_target)
-                        ADD_DEPENDENCIES(${target} ${ref})
-                ENDIF(is_target)
-        ENDFOREACH(ref ${${target}_REFS})
-
-        SET(relative_path "")
-        SET(proper_file_list "")
-ENDMACRO(ADD_CS_LIBRARY)
-
-MACRO(ADD_CS_EXECUTABLE target)
-        GET_CS_EXECUTABLE_TARGET_DIR()
-        
-        # Seems like cmake doesn't like the ".exe" ending for custom commands.
-        # If we call it ${target}.exe, 'make' will later complain about a missing rule.
-        # Create a fake target instead.
-        SET(target_EXE "${CS_EXECUTABLE_TARGET_DIR}/${target}.exe")
-        SET(target_TOUCH "${CS_EXECUTABLE_TARGET_DIR}/${target}.exe-built")
-        GET_DIRECTORY_PROPERTY(clean ADDITIONAL_MAKE_CLEAN_FILES)
-        LIST(APPEND clean ${target}.exe)
-        SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${clean}")
-        MAKE_PROPER_FILE_LIST(${ARGN})
-        FILE(RELATIVE_PATH relative_path ${CMAKE_BINARY_DIR} ${target_EXE})
-        SET(target_CS_FLAGS "${CS_FLAGS}")
-        
-        FOREACH(ref ${${target}_REFS})
-                SET(ref_DLL ${CMAKE_CURRENT_SOURCE_DIR}/${ref}.dll)
-                IF(EXISTS ${ref_DLL})
-                        LIST(APPEND target_CS_FLAGS -r:${ref_DLL})
-                ELSE(EXISTS ${ref_DLL})
-                        LIST(APPEND target_CS_FLAGS -r:${ref})
-                ENDIF(EXISTS ${ref_DLL})
-        ENDFOREACH(ref ${${target}_REFS})
-
-        ADD_CUSTOM_COMMAND (OUTPUT "${target_TOUCH}"
-                COMMAND ${MCS_EXECUTABLE} ${target_CS_FLAGS} -out:${target_EXE} ${proper_file_list}
-                COMMAND ${CMAKE_COMMAND} -E touch ${target_TOUCH}
-                MAIN_DEPENDENCY ${ARGN}
-                DEPENDS ${ARGN}
-                COMMENT "Building ${relative_path}")
-        ADD_CUSTOM_TARGET ("${target}" ALL DEPENDS "${target_TOUCH}")
-
-        FOREACH(ref ${${target}_REFS})
-                GET_TARGET_PROPERTY(is_target ${ref} TYPE)
-                IF(is_target)
-                        ADD_DEPENDENCIES(${target} ${ref})
-                ENDIF(is_target)
-        ENDFOREACH(ref ${${target}_REFS})
-
-        SET(relative_path "")
-        SET(proper_file_list "")
-ENDMACRO(ADD_CS_EXECUTABLE)
-
-MACRO(INSTALL_GAC target)
-        GET_CS_LIBRARY_TARGET_DIR()
-        
-        INSTALL(CODE "EXECUTE_PROCESS(COMMAND ${GACUTIL_EXECUTABLE} -i ${CS_LIBRARY_TARGET_DIR}/${target}.dll -package 2.0)")
-ENDMACRO(INSTALL_GAC target)
diff --git a/indra/cmake/CopyBackToSource.cmake b/indra/cmake/CopyBackToSource.cmake
deleted file mode 100644
index d217df9aecf..00000000000
--- a/indra/cmake/CopyBackToSource.cmake
+++ /dev/null
@@ -1,16 +0,0 @@
-# -*- cmake -*-
-# Copies a binary back to the source directory
-
-MACRO(COPY_BACK_TO_SOURCE target)
-   GET_TARGET_PROPERTY(FROM ${target} LOCATION)
-   SET(TO ${CMAKE_CURRENT_SOURCE_DIR})
-   #MESSAGE("TARGET ${target} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${FROM} ${TO}")
-   ADD_CUSTOM_COMMAND(
-        TARGET ${target} POST_BUILD
-        COMMAND ${CMAKE_COMMAND} -E copy ${FROM} ${TO}
-        DEPENDS ${FROM}
-        COMMENT "Copying ${target} to ${CMAKE_CURRENT_BINARY_DIR}"
-        )
-ENDMACRO(COPY_BACK_TO_SOURCE)
-
-
diff --git a/indra/cmake/DirectX.cmake b/indra/cmake/DirectX.cmake
index 8cae6068484..25163d03226 100644
--- a/indra/cmake/DirectX.cmake
+++ b/indra/cmake/DirectX.cmake
@@ -1,6 +1,6 @@
 # -*- cmake -*-
 
-if (VIEWER AND WINDOWS)
+if (WINDOWS)
   find_path(DIRECTX_INCLUDE_DIR dxdiag.h
             "$ENV{DXSDK_DIR}/Include"
             "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (June 2010)/Include"
@@ -45,4 +45,4 @@ if (VIEWER AND WINDOWS)
     message(FATAL_ERROR "Could not find DirectX SDK Libraries")
   endif (DIRECTX_LIBRARY_DIR)
 
-endif (VIEWER AND WINDOWS)
+endif (WINDOWS)
diff --git a/indra/cmake/DragDrop.cmake b/indra/cmake/DragDrop.cmake
index c0424396e5f..b70aa6b6ee8 100644
--- a/indra/cmake/DragDrop.cmake
+++ b/indra/cmake/DragDrop.cmake
@@ -1,23 +1,20 @@
 # -*- cmake -*-
 
-if (VIEWER)
+set(OS_DRAG_DROP ON CACHE BOOL "Build the viewer with OS level drag and drop turned on or off")
 
-  set(OS_DRAG_DROP ON CACHE BOOL "Build the viewer with OS level drag and drop turned on or off")
+if (OS_DRAG_DROP)
 
-  if (OS_DRAG_DROP)
+  if (WINDOWS)
+    add_definitions(-DLL_OS_DRAGDROP_ENABLED=1)
+  endif (WINDOWS)
 
-    if (WINDOWS)
-      add_definitions(-DLL_OS_DRAGDROP_ENABLED=1)
-    endif (WINDOWS)
+  if (DARWIN)
+    add_definitions(-DLL_OS_DRAGDROP_ENABLED=1)
+  endif (DARWIN)
 
-    if (DARWIN)
-      add_definitions(-DLL_OS_DRAGDROP_ENABLED=1)
-    endif (DARWIN)
+  if (LINUX)
+    add_definitions(-DLL_OS_DRAGDROP_ENABLED=0)
+  endif (LINUX)
 
-    if (LINUX)
-      add_definitions(-DLL_OS_DRAGDROP_ENABLED=0)
-    endif (LINUX)
+endif (OS_DRAG_DROP)
 
-  endif (OS_DRAG_DROP)
-
-endif (VIEWER)
diff --git a/indra/cmake/Externals.cmake b/indra/cmake/Externals.cmake
deleted file mode 100644
index 26f3b560493..00000000000
--- a/indra/cmake/Externals.cmake
+++ /dev/null
@@ -1,34 +0,0 @@
-# -*- cmake -*-
-
-include(Python)
-include(FindSVN)
-
-macro (use_svn_external _binary _path _url _rev)
-  if (NOT STANDALONE)
-    if(${CMAKE_BINARY_DIR}/temp/sentinel_installed IS_NEWER_THAN ${CMAKE_BINARY_DIR}/temp/${_binary}_installed)
-      if(SVN_FOUND)
-        if(DEBUG_EXTERNALS)
-          message("cd ${_path} && ${SVN_EXECUTABLE} checkout -r ${_rev} ${_url} ${_binary}")
-        endif(DEBUG_EXTERNALS)
-        execute_process(COMMAND ${SVN_EXECUTABLE}
-          checkout
-          -r ${_rev}
-          ${_url}
-          ${_binary}
-          WORKING_DIRECTORY ${_path}
-          RESULT_VARIABLE ${_binary}_installed
-          )
-      else(SVN_FOUND)
-        message(FATAL_ERROR "Failed to find SVN_EXECUTABLE")
-      endif(SVN_FOUND)
-      file(WRITE ${CMAKE_BINARY_DIR}/temp/${_binary}_installed "${${_binary}_installed}")
-    else(${CMAKE_BINARY_DIR}/temp/sentinel_installed IS_NEWER_THAN ${CMAKE_BINARY_DIR}/temp/${_binary}_installed)
-      set(${_binary}_installed 0)
-    endif(${CMAKE_BINARY_DIR}/temp/sentinel_installed IS_NEWER_THAN ${CMAKE_BINARY_DIR}/temp/${_binary}_installed)
-    if(NOT ${_binary}_installed EQUAL 0)
-      message(FATAL_ERROR
-              "Failed to download or unpack prebuilt '${_binary}'."
-              " Process returned ${${_binary}_installed}.")
-    endif (NOT ${_binary}_installed EQUAL 0)
-  endif (NOT STANDALONE)
-endmacro (use_svn_external _binary _path _url _rev)
diff --git a/indra/cmake/FindELFIO.cmake b/indra/cmake/FindELFIO.cmake
deleted file mode 100644
index 8a5421ab9c8..00000000000
--- a/indra/cmake/FindELFIO.cmake
+++ /dev/null
@@ -1,48 +0,0 @@
-# -*- cmake -*-
-
-# - Find ELFIO
-# Find the ELFIO includes and library
-# This module defines
-#  ELFIO_INCLUDE_DIR, where to find elfio.h, etc.
-#  ELFIO_LIBRARIES, the libraries needed to use ELFIO.
-#  ELFIO_FOUND, If false, do not try to use ELFIO.
-# also defined, but not for general use are
-#  ELFIO_LIBRARY, where to find the ELFIO library.
-
-FIND_PATH(ELFIO_INCLUDE_DIR ELFIO/ELFIO.h
-/usr/local/include
-/usr/include
-)
-
-SET(ELFIO_NAMES ${ELFIO_NAMES} ELFIO)
-FIND_LIBRARY(ELFIO_LIBRARY
-  NAMES ${ELFIO_NAMES}
-  PATHS /usr/lib /usr/local/lib
-  )
-
-IF (ELFIO_LIBRARY AND ELFIO_INCLUDE_DIR)
-    SET(ELFIO_LIBRARIES ${ELFIO_LIBRARY})
-    SET(ELFIO_FOUND "YES")
-ELSE (ELFIO_LIBRARY AND ELFIO_INCLUDE_DIR)
-  SET(ELFIO_FOUND "NO")
-ENDIF (ELFIO_LIBRARY AND ELFIO_INCLUDE_DIR)
-
-
-IF (ELFIO_FOUND)
-   IF (NOT ELFIO_FIND_QUIETLY)
-      MESSAGE(STATUS "Found ELFIO: ${ELFIO_LIBRARIES}")
-   ENDIF (NOT ELFIO_FIND_QUIETLY)
-ELSE (ELFIO_FOUND)
-   IF (ELFIO_FIND_REQUIRED)
-      MESSAGE(FATAL_ERROR "Could not find ELFIO library")
-   ENDIF (ELFIO_FIND_REQUIRED)
-ENDIF (ELFIO_FOUND)
-
-# Deprecated declarations.
-SET (NATIVE_ELFIO_INCLUDE_PATH ${ELFIO_INCLUDE_DIR} )
-GET_FILENAME_COMPONENT (NATIVE_ELFIO_LIB_PATH ${ELFIO_LIBRARY} PATH)
-
-MARK_AS_ADVANCED(
-  ELFIO_LIBRARY
-  ELFIO_INCLUDE_DIR
-  )
diff --git a/indra/cmake/FindLLQtWebkit.cmake b/indra/cmake/FindLLQtWebkit.cmake
deleted file mode 100644
index 2f666d3bf01..00000000000
--- a/indra/cmake/FindLLQtWebkit.cmake
+++ /dev/null
@@ -1,62 +0,0 @@
-# -*- cmake -*-
-
-# - Find llqtwebkit
-# Find the llqtwebkit includes and library
-# This module defines
-#  LLQTWEBKIT_INCLUDE_DIR, where to find llqtwebkit.h, etc.
-#  LLQTWEBKIT_LIBRARY, the llqtwebkit library with full path.
-#  LLQTWEBKIT_FOUND, If false, do not try to use llqtwebkit.
-# also defined, but not for general use are
-#  LLQTWEBKIT_LIBRARIES, the libraries needed to use llqtwebkit.
-#  LLQTWEBKIT_LIBRARY_DIRS, where to find the llqtwebkit library.
-#  LLQTWEBKIT_DEFINITIONS - You should add_definitions(${LLQTWEBKIT_DEFINITIONS})
-#      before compiling code that includes llqtwebkit library files.
-
-# Try to use pkg-config first.
-# This allows to have two different libllqtwebkit packages installed:
-# one for viewer 2.x and one for viewer 1.x.
-include(FindPkgConfig)
-if (PKG_CONFIG_FOUND)
-    if (LLQtWebkit_FIND_REQUIRED AND LLQtWebkit_FIND_VERSION)
-        set(_PACKAGE_ARGS libllqtwebkit>=${LLQtWebkit_FIND_VERSION} REQUIRED)
-    else (LLQtWebkit_FIND_REQUIRED AND LLQtWebkit_FIND_VERSION)
-        set(_PACKAGE_ARGS libllqtwebkit)
-    endif (LLQtWebkit_FIND_REQUIRED AND LLQtWebkit_FIND_VERSION)
-    if (NOT "${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION}" VERSION_LESS "2.8.2")
-      # As virtually nobody will have a pkg-config file for this, do this check always quiet.
-      # Unfortunately cmake 2.8.2 or higher is required for pkg_check_modules to have a 'QUIET'.
-      set(_PACKAGE_ARGS ${_PACKAGE_ARGS} QUIET)
-    endif ()
-    pkg_check_modules(LLQTWEBKIT ${_PACKAGE_ARGS})
-endif (PKG_CONFIG_FOUND)
-set(LLQTWEBKIT_DEFINITIONS ${LLQTWEBKIT_CFLAGS_OTHER})
-
-find_path(LLQTWEBKIT_INCLUDE_DIR llqtwebkit.h NO_SYSTEM_ENVIRONMENT_PATH HINTS ${LLQTWEBKIT_INCLUDE_DIRS})
-
-find_library(LLQTWEBKIT_LIBRARY NAMES llqtwebkit NO_SYSTEM_ENVIRONMENT_PATH HINTS ${LLQTWEBKIT_LIBRARY_DIRS})
-
-if (NOT PKG_CONFIG_FOUND OR NOT LLQTWEBKIT_FOUND)   # If pkg-config couldn't find it, pretend we don't have pkg-config.
-   set(LLQTWEBKIT_LIBRARIES llqtwebkit)
-   get_filename_component(LLQTWEBKIT_LIBRARY_DIRS ${LLQTWEBKIT_LIBRARY} PATH)
-endif (NOT PKG_CONFIG_FOUND OR NOT LLQTWEBKIT_FOUND)
-
-# Handle the QUIETLY and REQUIRED arguments and set LLQTWEBKIT_FOUND
-# to TRUE if all listed variables are TRUE.
-include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(
-  LLQTWEBKIT
-  DEFAULT_MSG
-  LLQTWEBKIT_LIBRARY
-  LLQTWEBKIT_INCLUDE_DIR
-  LLQTWEBKIT_LIBRARIES
-  LLQTWEBKIT_LIBRARY_DIRS
-  )
-
-mark_as_advanced(
-  LLQTWEBKIT_LIBRARY
-  LLQTWEBKIT_INCLUDE_DIR
-  LLQTWEBKIT_LIBRARIES
-  LLQTWEBKIT_LIBRARY_DIRS
-  LLQTWEBKIT_DEFINITIONS
-  )
-
diff --git a/indra/cmake/FindMT.cmake b/indra/cmake/FindMT.cmake
deleted file mode 100644
index 5239a4c2f5a..00000000000
--- a/indra/cmake/FindMT.cmake
+++ /dev/null
@@ -1,15 +0,0 @@
-#Find the windows manifest tool.
-
-FIND_PROGRAM(HAVE_MANIFEST_TOOL NAMES mt
-                 PATHS
-                 "$ENV{PROGRAMFILES}/Microsoft Visual Studio 8/VC/bin"
-                 "$ENV{PROGRAMFILES}/Microsoft Visual Studio 8/Common7/Tools/Bin"
-                 "$ENV{PROGRAMFILES}/Microsoft Visual Studio 8/SDK/v2.0/Bin")
-IF(HAVE_MANIFEST_TOOL)
-    MESSAGE(STATUS "Found Mainfest Tool. Embedding custom manifests.")
-ELSE(HAVE_MANIFEST_TOOL)
-    MESSAGE(FATAL_ERROR "Manifest tool, mt.exe, can't be found.")
-ENDIF(HAVE_MANIFEST_TOOL)
-
-STRING(REPLACE "/MANIFEST" "/MANIFEST:NO" CMAKE_EXE_LINKER_FLAGS 
-      ${CMAKE_EXE_LINKER_FLAGS})
diff --git a/indra/cmake/FindMono.cmake b/indra/cmake/FindMono.cmake
deleted file mode 100644
index d956c48656a..00000000000
--- a/indra/cmake/FindMono.cmake
+++ /dev/null
@@ -1,68 +0,0 @@
-# - Try to find the mono, mcs, gmcs and gacutil
-#
-# defines
-#
-# MONO_FOUND - system has mono, mcs, gmcs and gacutil
-# MONO_PATH - where to find 'mono'
-# MCS_PATH - where to find 'mcs'
-# GMCS_PATH - where to find 'gmcs'
-# GACUTIL_PATH - where to find 'gacutil'
-#
-# copyright (c) 2007 Arno Rehn arno@arnorehn.de
-#
-# Redistribution and use is allowed according to the terms of the GPL license.
-# Removed the check for gmcs
-
-FIND_PROGRAM (MONO_EXECUTABLE mono
-             "$ENV{PROGRAMFILES}/Mono-1.9.1/bin"
-             "$ENV{PROGRAMFILES}/Mono-1.2.6/bin"
-             /bin
-             /usr/bin
-             /usr/local/bin
-)
-FIND_PROGRAM (MCS_EXECUTABLE mcs
-             "$ENV{PROGRAMFILES}/Mono-1.9.1/bin"
-             "$ENV{PROGRAMFILES}/Mono-1.2.6/bin"
-             /bin
-             /usr/bin
-             /usr/local/bin
-)
-FIND_PROGRAM (GMCS_EXECUTABLE gmcs
-             "$ENV{PROGRAMFILES}/Mono-1.9.1/bin"
-             "$ENV{PROGRAMFILES}/Mono-1.2.6/bin"
-             /bin
-             /usr/bin
-             /usr/local/bin
-)
-FIND_PROGRAM (GACUTIL_EXECUTABLE gacutil
-             "$ENV{PROGRAMFILES}/Mono-1.9.1/bin"
-             "$ENV{PROGRAMFILES}/Mono-1.2.6/bin"
-             /bin
-             /usr/bin
-             /usr/local/bin
-)
-FIND_PROGRAM (ILASM_EXECUTABLE
-             NAMES ilasm.bat ilasm
-             NO_DEFAULT_PATH
-             PATHS "$ENV{PROGRAMFILES}/Mono-1.9.1/bin" "$ENV{PROGRAMFILES}/Mono-1.2.6/bin" /bin /usr/bin /usr/local/bin
-)
-
-SET (MONO_FOUND FALSE)
-
-IF (MONO_EXECUTABLE AND MCS_EXECUTABLE AND GACUTIL_EXECUTABLE)
-        SET (MONO_FOUND TRUE)
-ENDIF (MONO_EXECUTABLE AND MCS_EXECUTABLE AND GACUTIL_EXECUTABLE)
-
-IF (MONO_FOUND)
-        IF (NOT Mono_FIND_QUIETLY)
-                MESSAGE(STATUS "Found mono: ${MONO_EXECUTABLE}")
-                MESSAGE(STATUS "Found mcs: ${MCS_EXECUTABLE}")
-                MESSAGE(STATUS "Found gacutil: ${GACUTIL_EXECUTABLE}")
-        ENDIF (NOT Mono_FIND_QUIETLY)
-ELSE (MONO_FOUND)
-        IF (Mono_FIND_REQUIRED)
-                MESSAGE(FATAL_ERROR "Could not find one or more of the following programs: mono, mcs, gacutil")
-        ENDIF (Mono_FIND_REQUIRED)
-ENDIF (MONO_FOUND)
-
-MARK_AS_ADVANCED(MONO_EXECUTABLE MCS_EXECUTABLE GACUTIL_EXECUTABLE)
diff --git a/indra/cmake/FindMySQL.cmake b/indra/cmake/FindMySQL.cmake
deleted file mode 100644
index 431940328f9..00000000000
--- a/indra/cmake/FindMySQL.cmake
+++ /dev/null
@@ -1,48 +0,0 @@
-# -*- cmake -*-
-
-# - Find MySQL
-# Find the MySQL includes and library
-# This module defines
-#  MYSQL_INCLUDE_DIR, where to find mysql.h, etc.
-#  MYSQL_LIBRARIES, the libraries needed to use Mysql.
-#  MYSQL_FOUND, If false, do not try to use Mysql.
-# also defined, but not for general use are
-#  MYSQL_LIBRARY, where to find the Mysql library.
-
-FIND_PATH(MYSQL_INCLUDE_DIR mysql/mysql.h
-/usr/local/include
-/usr/include
-)
-
-SET(MYSQL_NAMES ${MYSQL_NAMES} mysqlclient)
-FIND_LIBRARY(MYSQL_LIBRARY
-  NAMES ${MYSQL_NAMES}
-  PATHS /usr/lib/mysql /usr/lib /usr/local/lib/mysql /usr/local/lib
-  )
-
-IF (MYSQL_LIBRARY AND MYSQL_INCLUDE_DIR)
-    SET(MYSQL_LIBRARIES ${MYSQL_LIBRARY})
-    SET(MYSQL_FOUND "YES")
-ELSE (MYSQL_LIBRARY AND MYSQL_INCLUDE_DIR)
-  SET(MYSQL_FOUND "NO")
-ENDIF (MYSQL_LIBRARY AND MYSQL_INCLUDE_DIR)
-
-
-IF (MYSQL_FOUND)
-   IF (NOT MYSQL_FIND_QUIETLY)
-      MESSAGE(STATUS "Found MySQL: ${MYSQL_LIBRARIES}")
-   ENDIF (NOT MYSQL_FIND_QUIETLY)
-ELSE (MYSQL_FOUND)
-   IF (MYSQL_FIND_REQUIRED)
-      MESSAGE(FATAL_ERROR "Could not find MySQL library")
-   ENDIF (MYSQL_FIND_REQUIRED)
-ENDIF (MYSQL_FOUND)
-
-# Deprecated declarations.
-SET (NATIVE_MYSQL_INCLUDE_PATH ${MYSQL_INCLUDE_DIR} )
-GET_FILENAME_COMPONENT (NATIVE_MYSQL_LIB_PATH ${MYSQL_LIBRARY} PATH)
-
-MARK_AS_ADVANCED(
-  MYSQL_LIBRARY
-  MYSQL_INCLUDE_DIR
-  )
diff --git a/indra/cmake/FindSVN.cmake b/indra/cmake/FindSVN.cmake
deleted file mode 100644
index 3322be4ca92..00000000000
--- a/indra/cmake/FindSVN.cmake
+++ /dev/null
@@ -1,34 +0,0 @@
-# -*- cmake -*-
-#
-# Find the svn executable for exporting old svn:externals.
-#
-# Input variables:
-#   SVN_FIND_REQUIRED - set this if configuration should fail without scp
-#
-# Output variables:
-#
-#   SVN_FOUND - set if svn was found
-#   SVN_EXECUTABLE - path to svn executable
-#   SVN_BATCH_FLAG - how to put svn into batch mode
-
-
-SET(SVN_EXECUTABLE)
-FIND_PROGRAM(SVN_EXECUTABLE NAMES svn svn.exe)
-
-IF (SVN_EXECUTABLE)
-  SET(SVN_FOUND ON)
-ELSE (SVN_EXECUTABLE)
-  SET(SVN_FOUND OFF)
-ENDIF (SVN_EXECUTABLE)
-
-IF (SVN_FOUND)
-  GET_FILENAME_COMPONENT(_svn_name ${SVN_EXECUTABLE} NAME_WE)
-  SET(SVN_BATCH_FLAG --non-interactive)
-ELSE (SVN_FOUND)
-  IF (SVN_FIND_REQUIRED)
-    MESSAGE(FATAL_ERROR "Could not find svn executable")
-  ENDIF (SVN_FIND_REQUIRED)
-ENDIF (SVN_FOUND)
-
-MARK_AS_ADVANCED(SVN_EXECUTABLE SVN_FOUND SVN_BATCH_FLAG)
-
diff --git a/indra/cmake/GLEXT.cmake b/indra/cmake/GLEXT.cmake
new file mode 100644
index 00000000000..0a3dd976b43
--- /dev/null
+++ b/indra/cmake/GLEXT.cmake
@@ -0,0 +1,8 @@
+# -*- cmake -*-
+include(Prebuilt)
+
+if (NOT STANDALONE)
+  use_prebuilt_binary(glext)
+  use_prebuilt_binary(glh_linear)
+  set(GLEXT_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/include)
+endif (NOT STANDALONE)
diff --git a/indra/cmake/LLDatabase.cmake b/indra/cmake/LLDatabase.cmake
deleted file mode 100644
index 65261013861..00000000000
--- a/indra/cmake/LLDatabase.cmake
+++ /dev/null
@@ -1,10 +0,0 @@
-# -*- cmake -*-
-
-include(MySQL)
-
-set(LLDATABASE_INCLUDE_DIRS
-    ${LIBS_SERVER_DIR}/lldatabase
-    ${MYSQL_INCLUDE_DIR}
-    )
-
-set(LLDATABASE_LIBRARIES lldatabase)
diff --git a/indra/cmake/LLRender.cmake b/indra/cmake/LLRender.cmake
index 6695ed6bd91..c2f6fc67cdf 100644
--- a/indra/cmake/LLRender.cmake
+++ b/indra/cmake/LLRender.cmake
@@ -8,15 +8,15 @@ set(LLRENDER_INCLUDE_DIRS
     ${GLH_INCLUDE_DIR}
     )
 
-if ((SERVER OR BAKING) AND LINUX)
+if ((BAKING) AND LINUX)
   set(LLRENDER_LIBRARIES
       llrenderheadless
       )
-else ((SERVER OR BAKING) AND LINUX)
+else ((BAKING) AND LINUX)
 set(LLRENDER_LIBRARIES
     llrender
     )
-endif ((SERVER OR BAKING) AND LINUX)
+endif ((BAKING) AND LINUX)
 
 # mapserver requires certain files to be copied so LL_MESA_HEADLESS can be set
 # differently for different object files.
diff --git a/indra/cmake/LLScene.cmake b/indra/cmake/LLScene.cmake
deleted file mode 100644
index 96ad5085a24..00000000000
--- a/indra/cmake/LLScene.cmake
+++ /dev/null
@@ -1,7 +0,0 @@
-# -*- cmake -*-
-
-set(LLSCENE_INCLUDE_DIRS
-    ${LIBS_SERVER_DIR}/llscene
-    )
-
-set(LLSCENE_LIBRARIES llscene)
diff --git a/indra/cmake/LLWindow.cmake b/indra/cmake/LLWindow.cmake
index 1ee4ca0aaca..81e58b2bea5 100644
--- a/indra/cmake/LLWindow.cmake
+++ b/indra/cmake/LLWindow.cmake
@@ -1,6 +1,6 @@
 # -*- cmake -*-
 
-include(OpenGL)
+include(GLEXT)
 include(Prebuilt)
 
 if (STANDALONE)
@@ -14,12 +14,12 @@ if (STANDALONE)
       )
 else (STANDALONE)
   use_prebuilt_binary(mesa)
-  if (LINUX AND VIEWER)
+  if (LINUX)
     use_prebuilt_binary(SDL)
     set (SDL_FOUND TRUE)
     set (SDL_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/i686-linux)
     set (SDL_LIBRARY SDL directfb fusion direct)
-  endif (LINUX AND VIEWER)
+  endif (LINUX)
 endif (STANDALONE)
 
 if (SDL_FOUND AND NOT BAKING)
@@ -37,13 +37,13 @@ set(LLWINDOW_INCLUDE_DIRS
     ${LIBS_OPEN_DIR}/llwindow
     )
 
-if ((SERVER AND LINUX) OR (BAKING AND LINUX))
+if (BAKING AND LINUX)
   set(LLWINDOW_LIBRARIES
       llwindowheadless
       )
   MESSAGE( STATUS "using headless libraries")
-else (SERVER AND LINUX)
+else (BAKING AND LINUX)
   set(LLWINDOW_LIBRARIES
       llwindow
       )
-endif ((SERVER AND LINUX) OR (BAKING AND LINUX))
+endif (BAKING AND LINUX)
diff --git a/indra/cmake/LLXUIXML.cmake b/indra/cmake/LLXUIXML.cmake
deleted file mode 100644
index b8bfe48c776..00000000000
--- a/indra/cmake/LLXUIXML.cmake
+++ /dev/null
@@ -1,7 +0,0 @@
-# -*- cmake -*-
-
-set(LLXUIXML_INCLUDE_DIRS
-    ${LIBS_OPEN_DIR}/llxuixml
-    )
-
-set(LLXUIXML_LIBRARIES llxuixml)
diff --git a/indra/cmake/MonoDeps.cmake b/indra/cmake/MonoDeps.cmake
deleted file mode 100644
index 52d54915636..00000000000
--- a/indra/cmake/MonoDeps.cmake
+++ /dev/null
@@ -1,48 +0,0 @@
-# -*- cmake -*-
-
-set(MONO_PREBUILT_LIBRARIES_DIR ${LIBS_PREBUILT_DIR}/mono/1.0)
-
-set(MONO_PREBUILT_LIBRARIES
-     Iesi.Collections.dll
-     Iesi.Collections.pdb
-     Mono.CompilerServices.SymbolWriter.dll
-     Mono.PEToolkit.dll
-     Mono.PEToolkit.pdb
-     Mono.Security.dll
-     PEAPI.dll
-     RAIL.dll
-     RAIL.pdb
-  )
-  
-  set(MONO_CORE_LIBRARIES
-    System.dll
-    System.Xml.dll
-    mscorlib.dll)
-    
-if(WINDOWS)
-    set(MONO_DEPENDENCIES
-        DomainCreator
-        DomainRegister
-        LslLibrary
-        LslUserScript
-        Script
-        ScriptTypes
-        TestFormat
-        UserScript
-        UThread
-        UThreadInjector
-        )
-else(WINDOWS)
-    set(MONO_DEPENDENCIES
-        DomainCreator_POST_BUILD
-        DomainRegister_POST_BUILD
-        LslLibrary_POST_BUILD
-        LslUserScript_POST_BUILD
-        Script_POST_BUILD
-        ScriptTypes_POST_BUILD
-        TestFormat_POST_BUILD
-        UserScript_POST_BUILD
-        UThread_POST_BUILD
-        UThreadInjector_POST_BUILD
-        )
-endif(WINDOWS)
diff --git a/indra/cmake/MonoEmbed.cmake b/indra/cmake/MonoEmbed.cmake
deleted file mode 100644
index 30890aed217..00000000000
--- a/indra/cmake/MonoEmbed.cmake
+++ /dev/null
@@ -1,57 +0,0 @@
-# -*- cmake -*-
-
-include(Prebuilt)
-use_prebuilt_binary(libmono)
-
-SET(GLIB_2_0 glib-2.0)
-
-if (WINDOWS)
-    SET(MONO_LIB mono) 
-else (WINDOWS)
-    SET(MONO_LIB mono)
-    SET(M_LIBRARIES m)
-    SET(GTHREAD_2_0 gthread-2.0)
-endif(WINDOWS)
-
-
-IF (DARWIN)
-
-  FIND_LIBRARY(MONO_LIBRARY NAMES Mono)
-  # Find_file doesnt work as expected. Hardcode relative to Mono.framework. 
-  #FIND_FILE(GLIB_CONFIG glibconfig.h ${MONO_LIBRARY})
-  #FIND_FILE(MONO_GLIB_LIBRARY glib.h ${MONO_LIBRARY})
-  SET(MONO_GLIB_LIBRARY ${MONO_LIBRARY}/Headers/glib-2.0/)
-  SET(GLIB_CONFIG ${MONO_LIBRARY}/Libraries/glib-2.0/include/)
-  SET(MONO_LIB_DIRECTORY ${MONO_LIBRARY}/Libraries)
-
-  IF (MONO_LIBRARY AND MONO_GLIB_LIBRARY AND GLIB_CONFIG)
-    MESSAGE(STATUS "Found Mono for embedding")
-    INCLUDE_DIRECTORIES(${MONO_GLIB_LIBRARY} ${GLIB_CONFIG})
-    LINK_DIRECTORIES(${MONO_LIB_DIRECTORY})
-  ELSE (MONO_LIBRARY AND MONO_GLIB_LIBRARY AND GLIB_CONFIG)
-    MESSAGE(FATAL_ERROR "Mono not found for embedding")   
-    MESSAGE(${MONO_LIBRARY})
-    MESSAGE(${MONO_GLIB_LIBRARY})
-    MESSAGE(${GLIB_CONFIG})
-  ENDIF (MONO_LIBRARY AND MONO_GLIB_LIBRARY AND GLIB_CONFIG)
-
-ELSE (DARWIN)
-
-  SET(MONO_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/include)  
-  SET(GLIB_2_0_PLATFORM_INCLUDE_DIR
-    ${LIBS_PREBUILT_DIR}/include/glib-2.0)
-  SET(GLIB_2_0_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/include/glib-2.0)
-
-  INCLUDE_DIRECTORIES(
-    ${MONO_INCLUDE_DIR} 
-    ${GLIB_2_0_PLATFORM_INCLUDE_DIR} 
-    ${GLIB_2_0_INCLUDE_DIR})
-    
-ENDIF (DARWIN) 
-
-SET(MONO_LIBRARIES 
-    ${MONO_LIB} 
-    ${M_LIBRARIES} 
-    ${GLIB_2_0}
-    ${GTHREAD_2_0} 
-)
diff --git a/indra/cmake/MySQL.cmake b/indra/cmake/MySQL.cmake
deleted file mode 100644
index 218482449dc..00000000000
--- a/indra/cmake/MySQL.cmake
+++ /dev/null
@@ -1,26 +0,0 @@
-# -*- cmake -*-
-include(Linking)
-include(Prebuilt)
-
-use_prebuilt_binary(mysql)
-
-if (LINUX)
-  if (WORD_SIZE EQUAL 32 OR DEBIAN_VERSION STREQUAL "3.1")
-    set(MYSQL_LIBRARIES mysqlclient)
-    set(MYSQL_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/include)
-  else (WORD_SIZE EQUAL 32 OR DEBIAN_VERSION STREQUAL "3.1")
-    # Use the native MySQL library on a 64-bit system.
-    set(MYSQL_FIND_QUIETLY ON)
-    set(MYSQL_FIND_REQUIRED ON)
-    include(FindMySQL)
-  endif (WORD_SIZE EQUAL 32 OR DEBIAN_VERSION STREQUAL "3.1")
-elseif (WINDOWS)
-  set(MYSQL_LIBRARIES mysqlclient)
-  set(MYSQL_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/include)
-elseif (DARWIN)
-  set(MYSQL_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/include)
-  set(MYSQL_LIBRARIES
-    optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libmysqlclient.a
-    debug ${ARCH_PREBUILT_DIRS_DEBUG}/libmysqlclient.a
-    )
-endif (LINUX)
diff --git a/indra/cmake/OpenGL.cmake b/indra/cmake/OpenGL.cmake
index 0a3dd976b43..bafb2a460f1 100644
--- a/indra/cmake/OpenGL.cmake
+++ b/indra/cmake/OpenGL.cmake
@@ -1,8 +1,15 @@
 # -*- cmake -*-
+
+#if (INSTALL_PROPRIETARY)
+#  set(HEADLESS ON CACHE BOOL "Use headless mesa library.")
+#endif (INSTALL_PROPRIETARY)
+
 include(Prebuilt)
 
-if (NOT STANDALONE)
-  use_prebuilt_binary(glext)
-  use_prebuilt_binary(glh_linear)
-  set(GLEXT_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/include)
-endif (NOT STANDALONE)
+if (LINUX AND NOT STANDALONE)
+  use_prebuilt_binary(mesa)
+  SET(OPENGL_glu_LIBRARY GLU)
+endif (LINUX AND NOT STANDALONE)
+
+include(FindOpenGL)
+
diff --git a/indra/cmake/Variables.cmake b/indra/cmake/Variables.cmake
index 4b459f1a486..d570a8cde4d 100644
--- a/indra/cmake/Variables.cmake
+++ b/indra/cmake/Variables.cmake
@@ -8,11 +8,6 @@
 #   DARWIN  - Mac OS X
 #   LINUX   - Linux
 #   WINDOWS - Windows
-#
-# What to build:
-#
-#   VIEWER - viewer and other viewer-side components
-#   SERVER - simulator and other server-side bits
 
 
 # Relative and absolute paths to subtrees.
@@ -23,9 +18,7 @@ endif(NOT DEFINED COMMON_CMAKE_DIR)
 
 set(LIBS_CLOSED_PREFIX)
 set(LIBS_OPEN_PREFIX)
-set(LIBS_SERVER_PREFIX)
 set(SCRIPTS_PREFIX ../scripts)
-set(SERVER_PREFIX)
 set(VIEWER_PREFIX)
 set(INTEGRATION_TESTS_PREFIX)
 set(LL_TESTS ON CACHE BOOL "Build and run unit and integration tests (disable for build timing runs to reduce variation")
@@ -43,9 +36,7 @@ else(LIBS_COMMON_DIR)
 endif(LIBS_COMMON_DIR)
 set(LIBS_OPEN_DIR ${LIBS_COMMON_DIR})
 
-set(LIBS_SERVER_DIR ${CMAKE_SOURCE_DIR}/${LIBS_SERVER_PREFIX})
 set(SCRIPTS_DIR ${CMAKE_SOURCE_DIR}/${SCRIPTS_PREFIX})
-set(SERVER_DIR ${CMAKE_SOURCE_DIR}/${SERVER_PREFIX})
 set(VIEWER_DIR ${CMAKE_SOURCE_DIR}/${VIEWER_PREFIX})
 
 set(AUTOBUILD_INSTALL_DIR ${CMAKE_BINARY_DIR}/packages)
@@ -140,7 +131,6 @@ endif (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
 # Default deploy grid
 set(GRID agni CACHE STRING "Target Grid")
 
-set(VIEWER ON CACHE BOOL "Build Second Life viewer.")
 set(VIEWER_CHANNEL "LindenDeveloper" CACHE STRING "Viewer Channel Name")
 set(VIEWER_LOGIN_CHANNEL ${VIEWER_CHANNEL} CACHE STRING "Fake login channel for A/B Testing")
 
@@ -153,20 +143,6 @@ set(VERSION_BUILD "0" CACHE STRING "Revision number passed in from the outside")
 set(STANDALONE OFF CACHE BOOL "Do not use Linden-supplied prebuilt libraries.")
 set(UNATTENDED OFF CACHE BOOL "Should be set to ON for building with VC Express editions.")
 
-if (NOT STANDALONE AND EXISTS ${CMAKE_SOURCE_DIR}/llphysics)
-    set(SERVER ON CACHE BOOL "Build Second Life server software.")
-endif (NOT STANDALONE AND EXISTS ${CMAKE_SOURCE_DIR}/llphysics)
-
-if (LINUX AND SERVER AND VIEWER)
-  MESSAGE(FATAL_ERROR "
-The indra source does not currently support building SERVER and VIEWER at the same time.
-Please set one of these values to OFF in your CMake cache file.
-(either by running ccmake or by editing CMakeCache.txt by hand)
-For more information, please see JIRA DEV-14943 - Cmake Linux cannot build both VIEWER and SERVER in one build environment
-  ")
-endif (LINUX AND SERVER AND VIEWER)
-
-
 set(USE_PRECOMPILED_HEADERS ON CACHE BOOL "Enable use of precompiled header directives where supported.")
 
 source_group("CMake Rules" FILES CMakeLists.txt)
diff --git a/indra/cmake/VisualLeakDetector.cmake b/indra/cmake/VisualLeakDetector.cmake
index d3ba554e462..27e93e28bb4 100644
--- a/indra/cmake/VisualLeakDetector.cmake
+++ b/indra/cmake/VisualLeakDetector.cmake
@@ -1,15 +1,12 @@
 # -*- cmake -*-
 
-if (VIEWER)
+set(INCLUDE_VLD_CMAKE OFF CACHE BOOL "Build the Windows viewer with Visual Leak Detector turned on or off")
 
-  set(INCLUDE_VLD_CMAKE OFF CACHE BOOL "Build the Windows viewer with Visual Leak Detector turned on or off")
+if (INCLUDE_VLD_CMAKE)
 
-  if (INCLUDE_VLD_CMAKE)
+  if (WINDOWS)
+    add_definitions(-DINCLUDE_VLD=1)
+  endif (WINDOWS)
 
-    if (WINDOWS)
-      add_definitions(-DINCLUDE_VLD=1)
-    endif (WINDOWS)
+endif (INCLUDE_VLD_CMAKE)
 
-  endif (INCLUDE_VLD_CMAKE)
-
-endif (VIEWER)
diff --git a/indra/llrender/CMakeLists.txt b/indra/llrender/CMakeLists.txt
index f31446924fe..3ba27222012 100644
--- a/indra/llrender/CMakeLists.txt
+++ b/indra/llrender/CMakeLists.txt
@@ -3,7 +3,7 @@
 project(llrender)
 
 include(00-Common)
-include(FindOpenGL)
+include(OpenGL)
 include(FreeType)
 include(LLCommon)
 include(LLImage)
diff --git a/indra/llrender/llgl.cpp b/indra/llrender/llgl.cpp
index e28e3157d20..c65d68e64ed 100644
--- a/indra/llrender/llgl.cpp
+++ b/indra/llrender/llgl.cpp
@@ -389,7 +389,7 @@ PFNGLACTIVETEXTUREARBPROC glActiveTextureARB = NULL;
 PFNGLCLIENTACTIVETEXTUREARBPROC glClientActiveTextureARB = NULL;
 PFNGLDRAWRANGEELEMENTSPROC glDrawRangeElements = NULL;
 #endif // LL_LINUX_NV_GL_HEADERS
-#endif
+#endif // (LL_WINDOWS || LL_LINUX || LL_SOLARIS)  && !LL_MESA_HEADLESS
 
 LLGLManager gGLManager;
 
diff --git a/indra/llvfs/CMakeLists.txt b/indra/llvfs/CMakeLists.txt
index 80d5dd96e63..73d531cfd3c 100644
--- a/indra/llvfs/CMakeLists.txt
+++ b/indra/llvfs/CMakeLists.txt
@@ -42,12 +42,12 @@ if (LINUX)
   LIST(APPEND llvfs_SOURCE_FILES lldir_linux.cpp)
   LIST(APPEND llvfs_HEADER_FILES lldir_linux.h)
 
-  if (VIEWER AND INSTALL)
+  if (INSTALL)
     set_source_files_properties(lldir_linux.cpp
                                 PROPERTIES COMPILE_FLAGS
                                 "-DAPP_RO_DATA_DIR=\\\"${APP_SHARE_DIR}\\\""
                                 )
-  endif (VIEWER AND INSTALL)
+  endif (INSTALL)
 endif (LINUX)
 
 if (WINDOWS)
diff --git a/indra/llwindow/CMakeLists.txt b/indra/llwindow/CMakeLists.txt
index 4db58be7763..5fef44f9cbe 100644
--- a/indra/llwindow/CMakeLists.txt
+++ b/indra/llwindow/CMakeLists.txt
@@ -62,7 +62,7 @@ set(viewer_HEADER_FILES
 
 # Libraries on which this library depends, needed for Linux builds
 # Sort by high-level to low-level
-if (LINUX AND VIEWER)
+if (LINUX)
   set(llwindow_LINK_LIBRARIES
       ${LLCOMMON_LIBRARIES}
       ${LLIMAGE_LIBRARIES}
@@ -75,7 +75,7 @@ if (LINUX AND VIEWER)
       ${SDL_LIBRARY}
       fontconfig          # For FCInit and other FC* functions.
       )
-endif (LINUX AND VIEWER)
+endif (LINUX)
 
 if (DARWIN)
   list(APPEND llwindow_SOURCE_FILES
@@ -98,7 +98,7 @@ if (DARWIN)
       )
 endif (DARWIN)
 
-if (LINUX AND VIEWER)
+if (LINUX)
   list(APPEND viewer_SOURCE_FILES 
        llkeyboardsdl.cpp 
        llwindowsdl.cpp
@@ -107,7 +107,7 @@ if (LINUX AND VIEWER)
        llkeyboardsdl.h
        llwindowsdl.h
        )
-endif (LINUX AND VIEWER)
+endif (LINUX)
 
 if (WINDOWS)
   list(APPEND llwindow_SOURCE_FILES
@@ -171,11 +171,9 @@ endif (llwindow_HEADER_FILES)
 
 list(APPEND viewer_SOURCE_FILES ${viewer_HEADER_FILES})
 
-if (VIEWER)
-  add_library (llwindow
-    ${llwindow_SOURCE_FILES}
-    ${viewer_SOURCE_FILES}
-    )
-  target_link_libraries (llwindow ${llwindow_LINK_LIBRARIES})
-endif (VIEWER)
+add_library (llwindow
+  ${llwindow_SOURCE_FILES}
+  ${viewer_SOURCE_FILES}
+  )
+target_link_libraries (llwindow ${llwindow_LINK_LIBRARIES})
 
diff --git a/indra/media_plugins/base/CMakeLists.txt b/indra/media_plugins/base/CMakeLists.txt
index 3ad94b0c647..cd3718c5f39 100644
--- a/indra/media_plugins/base/CMakeLists.txt
+++ b/indra/media_plugins/base/CMakeLists.txt
@@ -11,7 +11,7 @@ include(LLRender)
 include(LLWindow)
 include(Linking)
 include(PluginAPI)
-include(FindOpenGL)
+include(OpenGL)
 
 include_directories(
     ${LLPLUGIN_INCLUDE_DIRS}
diff --git a/indra/media_plugins/example/CMakeLists.txt b/indra/media_plugins/example/CMakeLists.txt
index 54dc5de1ea4..38b712bfd7c 100644
--- a/indra/media_plugins/example/CMakeLists.txt
+++ b/indra/media_plugins/example/CMakeLists.txt
@@ -12,7 +12,7 @@ include(LLWindow)
 include(Linking)
 include(PluginAPI)
 include(MediaPluginBase)
-include(FindOpenGL)
+include(OpenGL)
 
 include(ExamplePlugin)
 
diff --git a/indra/media_plugins/gstreamer010/CMakeLists.txt b/indra/media_plugins/gstreamer010/CMakeLists.txt
index 5786bd1e25f..519a74aabf0 100644
--- a/indra/media_plugins/gstreamer010/CMakeLists.txt
+++ b/indra/media_plugins/gstreamer010/CMakeLists.txt
@@ -12,7 +12,7 @@ include(LLWindow)
 include(Linking)
 include(PluginAPI)
 include(MediaPluginBase)
-include(FindOpenGL)
+include(OpenGL)
 
 include(GStreamer010Plugin)
 
diff --git a/indra/media_plugins/quicktime/CMakeLists.txt b/indra/media_plugins/quicktime/CMakeLists.txt
index f0b8f0d1670..88e870b5566 100644
--- a/indra/media_plugins/quicktime/CMakeLists.txt
+++ b/indra/media_plugins/quicktime/CMakeLists.txt
@@ -12,7 +12,7 @@ include(LLWindow)
 include(Linking)
 include(PluginAPI)
 include(MediaPluginBase)
-include(FindOpenGL)
+include(OpenGL)
 include(QuickTimePlugin)
 
 include_directories(
diff --git a/indra/media_plugins/webkit/CMakeLists.txt b/indra/media_plugins/webkit/CMakeLists.txt
index b36291f0e86..452202acd28 100644
--- a/indra/media_plugins/webkit/CMakeLists.txt
+++ b/indra/media_plugins/webkit/CMakeLists.txt
@@ -13,7 +13,7 @@ include(UI)
 include(Linking)
 include(PluginAPI)
 include(MediaPluginBase)
-include(FindOpenGL)
+include(OpenGL)
 include(PulseAudio)
 
 include(WebKitLibPlugin)
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index b12853b014c..83b38e89f9e 100755
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -12,7 +12,7 @@ include(DragDrop)
 include(EXPAT)
 include(FMOD)
 include(OPENAL)
-include(FindOpenGL)
+include(OpenGL)
 include(Hunspell)
 include(JsonCpp)
 include(LLAudio)
diff --git a/indra/test_apps/llplugintest/CMakeLists.txt b/indra/test_apps/llplugintest/CMakeLists.txt
index 1211bb7e5a3..08f5a8a888e 100644
--- a/indra/test_apps/llplugintest/CMakeLists.txt
+++ b/indra/test_apps/llplugintest/CMakeLists.txt
@@ -2,7 +2,7 @@
 project(llplugintest)
 
 include(00-Common)
-include(FindOpenGL)
+include(OpenGL)
 include(LLCommon)
 include(LLPlugin)
 include(Linking)
-- 
GitLab


From 21df924a10c1c32f7fc28bb29b20dc2179863b24 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Thu, 4 Oct 2012 06:29:07 +0000
Subject: [PATCH 125/436] Building headless and non-headless libraries
 side-by-side, removing the need for the BAKING cmake setting.

---
 indra/CMakeLists.txt              | 22 +--------------
 indra/cmake/LLAppearance.cmake    | 10 +++++++
 indra/cmake/LLRender.cmake        | 26 ++++-------------
 indra/cmake/LLWindow.cmake        | 30 ++++++++------------
 indra/cmake/OpenGL.cmake          | 10 +++----
 indra/cmake/Variables.cmake       |  3 ++
 indra/llappearance/CMakeLists.txt | 16 +++++++++++
 indra/llrender/CMakeLists.txt     | 34 +++++++++++-----------
 indra/llwindow/CMakeLists.txt     | 47 ++++++++++++++++++++-----------
 indra/newview/CMakeLists.txt      |  6 ++++
 10 files changed, 106 insertions(+), 98 deletions(-)

diff --git a/indra/CMakeLists.txt b/indra/CMakeLists.txt
index 9ea611df6c4..12fee2029f9 100644
--- a/indra/CMakeLists.txt
+++ b/indra/CMakeLists.txt
@@ -108,28 +108,8 @@ endif (LINUX)
 add_subdirectory(${VIEWER_PREFIX}newview)
 add_dependencies(viewer secondlife-bin)
 
-# Linux builds the viewer and server in 2 separate projects
-# In order for build server to work on linux, 
-# the viewer project needs a server target.
-# This is not true for mac and windows.
-# *TODO: Do something like this for BAKING?
-#if (LINUX) 
-#  add_custom_target(server)
-#endif (LINUX)
-#if (SERVER)
-#  if (NOT LINUX)
-#    add_custom_target(server)
-#  endif (NOT LINUX)
-#  include(${SERVER_PREFIX}Server.cmake)
-#
-#  # Windows builds include tools like VFS tool
-#  if (WINDOWS)
-#    add_subdirectory(${SERVER_PREFIX}tools)
-#  endif (WINDOWS)
-#endif (SERVER)
-
 if (LL_TESTS)
-  # Define after the custom viewer and server targets are created so
+  # Define after the custom targets are created so
   # individual apps can add themselves as dependencies
   add_subdirectory(${INTEGRATION_TESTS_PREFIX}integration_tests)
 endif (LL_TESTS)
diff --git a/indra/cmake/LLAppearance.cmake b/indra/cmake/LLAppearance.cmake
index 36cebe98165..bd3795a5262 100644
--- a/indra/cmake/LLAppearance.cmake
+++ b/indra/cmake/LLAppearance.cmake
@@ -1,7 +1,17 @@
 # -*- cmake -*-
 
+include(Variables)
+
 set(LLAPPEARANCE_INCLUDE_DIRS
     ${LIBS_OPEN_DIR}/llappearance
     )
 
+if (BUILD_HEADLESS)
+  set(LLAPPEARANCE_HEADLESS_LIBRARIES
+    llappearanceheadless
+    )
+endif (BUILD_HEADLESS)
+
 set(LLAPPEARANCE_LIBRARIES llappearance)
+
+
diff --git a/indra/cmake/LLRender.cmake b/indra/cmake/LLRender.cmake
index c2f6fc67cdf..ae71ee4c0d6 100644
--- a/indra/cmake/LLRender.cmake
+++ b/indra/cmake/LLRender.cmake
@@ -1,5 +1,6 @@
 # -*- cmake -*-
 
+include(Variables)
 include(FreeType)
 include(GLH)
 
@@ -8,27 +9,12 @@ set(LLRENDER_INCLUDE_DIRS
     ${GLH_INCLUDE_DIR}
     )
 
-if ((BAKING) AND LINUX)
-  set(LLRENDER_LIBRARIES
-      llrenderheadless
-      )
-else ((BAKING) AND LINUX)
+if (BUILD_HEADLESS)
+  set(LLRENDER_HEADLESS_LIBRARIES
+    llrenderheadless
+    )
+endif (BUILD_HEADLESS)
 set(LLRENDER_LIBRARIES
     llrender
     )
-endif ((BAKING) AND LINUX)
 
-# mapserver requires certain files to be copied so LL_MESA_HEADLESS can be set
-# differently for different object files.
-macro (copy_server_sources )
-  foreach (PREFIX ${ARGV})
-    add_custom_command(
-        OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${PREFIX}_server.cpp
-        COMMAND ${CMAKE_COMMAND}
-        ARGS -E copy ${CMAKE_CURRENT_SOURCE_DIR}/${PREFIX}.cpp
-             ${CMAKE_CURRENT_BINARY_DIR}/${PREFIX}_server.cpp
-        DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${PREFIX}.cpp
-        )
-    list(APPEND server_SOURCE_FILES ${PREFIX}_server.cpp)
-  endforeach (PREFIX ${_copied_SOURCES})
-endmacro (copy_server_sources _copied_SOURCES)
diff --git a/indra/cmake/LLWindow.cmake b/indra/cmake/LLWindow.cmake
index 81e58b2bea5..f6c40c174c3 100644
--- a/indra/cmake/LLWindow.cmake
+++ b/indra/cmake/LLWindow.cmake
@@ -1,5 +1,6 @@
 # -*- cmake -*-
 
+include(Variables)
 include(GLEXT)
 include(Prebuilt)
 
@@ -22,28 +23,21 @@ else (STANDALONE)
   endif (LINUX)
 endif (STANDALONE)
 
-if (SDL_FOUND AND NOT BAKING)
-  add_definitions(-DLL_SDL=1)
+if (SDL_FOUND)
   include_directories(${SDL_INCLUDE_DIR})
-endif (SDL_FOUND AND NOT BAKING)
-
-if (BAKING)
-  use_prebuilt_binary(mesa)
-  add_definitions(-DLL_MESA_HEADLESS=1)
-endif (BAKING)
+endif (SDL_FOUND)
 
 set(LLWINDOW_INCLUDE_DIRS
     ${GLEXT_INCLUDE_DIR}
     ${LIBS_OPEN_DIR}/llwindow
     )
 
-if (BAKING AND LINUX)
-  set(LLWINDOW_LIBRARIES
-      llwindowheadless
-      )
-  MESSAGE( STATUS "using headless libraries")
-else (BAKING AND LINUX)
-  set(LLWINDOW_LIBRARIES
-      llwindow
-      )
-endif (BAKING AND LINUX)
+if (BUILD_HEADLESS)
+  set(LLWINDOW_HEADLESS_LIBRARIES
+    llwindowheadless
+    )
+endif (BUILD_HEADLESS)
+
+set(LLWINDOW_LIBRARIES
+    llwindow
+    )
diff --git a/indra/cmake/OpenGL.cmake b/indra/cmake/OpenGL.cmake
index bafb2a460f1..181b10b91c9 100644
--- a/indra/cmake/OpenGL.cmake
+++ b/indra/cmake/OpenGL.cmake
@@ -1,15 +1,13 @@
 # -*- cmake -*-
 
-#if (INSTALL_PROPRIETARY)
-#  set(HEADLESS ON CACHE BOOL "Use headless mesa library.")
-#endif (INSTALL_PROPRIETARY)
-
+include(Variables)
 include(Prebuilt)
 
-if (LINUX AND NOT STANDALONE)
+if (BUILD_HEADLESS)
   use_prebuilt_binary(mesa)
   SET(OPENGL_glu_LIBRARY GLU)
-endif (LINUX AND NOT STANDALONE)
+  SET(OPENGL_HEADLESS_LIBRARIES OSMesa16 GLU)
+endif (BUILD_HEADLESS)
 
 include(FindOpenGL)
 
diff --git a/indra/cmake/Variables.cmake b/indra/cmake/Variables.cmake
index d570a8cde4d..0bcb3a38b00 100644
--- a/indra/cmake/Variables.cmake
+++ b/indra/cmake/Variables.cmake
@@ -48,6 +48,9 @@ if (EXISTS ${CMAKE_SOURCE_DIR}/Server.cmake)
   # We use this as a marker that you can try to use the proprietary libraries.
   set(INSTALL_PROPRIETARY ON CACHE BOOL "Install proprietary binaries")
 endif (EXISTS ${CMAKE_SOURCE_DIR}/Server.cmake)
+if (INSTALL_PROPRIETARY)
+  set(BUILD_HEADLESS ON CACHE BOOL "Build headless libraries.")
+endif (INSTALL_PROPRIETARY)
 set(TEMPLATE_VERIFIER_OPTIONS "" CACHE STRING "Options for scripts/template_verifier.py")
 set(TEMPLATE_VERIFIER_MASTER_URL "http://bitbucket.org/lindenlab/master-message-template/raw/tip/message_template.msg" CACHE STRING "Location of the master message template")
 
diff --git a/indra/llappearance/CMakeLists.txt b/indra/llappearance/CMakeLists.txt
index c570f0c93b4..0dbd58b7cd7 100644
--- a/indra/llappearance/CMakeLists.txt
+++ b/indra/llappearance/CMakeLists.txt
@@ -89,6 +89,22 @@ target_link_libraries(llappearance
     ${LLCOMMON_LIBRARIES}
     )
 
+if (BUILD_HEADLESS)
+  add_library (llappearanceheadless ${llappearance_SOURCE_FILES})
+  
+  target_link_libraries(llappearanceheadless
+      ${LLCHARACTER_LIBRARIES}
+      ${LLINVENTORY_LIBRARIES}
+      ${LLIMAGE_LIBRARIES}
+      ${LLRENDERHEADLESS_LIBRARIES}
+      ${LLVFS_LIBRARIES}
+      ${LLMATH_LIBRARIES}
+      ${LLXML_LIBRARIES}
+      ${LLMATH_LIBRARIES}
+      ${LLCOMMON_LIBRARIES}
+      )
+endif (BUILD_HEADLESS)
+
 #add unit tests
 #if (LL_TESTS)
 #    INCLUDE(LLAddBuildTest)
diff --git a/indra/llrender/CMakeLists.txt b/indra/llrender/CMakeLists.txt
index 3ba27222012..46dde5a0d94 100644
--- a/indra/llrender/CMakeLists.txt
+++ b/indra/llrender/CMakeLists.txt
@@ -83,36 +83,36 @@ list(APPEND llrender_SOURCE_FILES
      llrender.cpp
      llrendertarget.cpp
      )
-if ((SERVER OR BAKING) AND NOT WINDOWS AND NOT DARWIN)
-  copy_server_sources(
-      llgl
-      llrender
-      )
-
-  set_source_files_properties(
-    ${server_SOURCE_FILES}
-    PROPERTIES
-    COMPILE_FLAGS "-DLL_MESA=1 -DLL_MESA_HEADLESS=1"
-    )
+if (BUILD_HEADLESS)
   add_library (llrenderheadless
     ${llrender_SOURCE_FILES}
-    ${server_SOURCE_FILES}
     )
 
-target_link_libraries(llrenderheadless
+  set_property(TARGET llrenderheadless
+    PROPERTY COMPILE_DEFINITIONS LL_MESA=1 LL_MESA_HEADLESS=1
+    )
+
+  target_link_libraries(llrenderheadless
     ${LLCOMMON_LIBRARIES}
     ${LLIMAGE_LIBRARIES}
     ${LLMATH_LIBRARIES}
-    ${LLRENDER_LIBRARIES}
+    ${LLRENDER_HEADLESS_LIBRARIES}
     ${LLVFS_LIBRARIES}
     ${LLXML_LIBRARIES}
     ${LLVFS_LIBRARIES}
-    ${LLWINDOW_LIBRARIES}
-    ${OPENGL_LIBRARIES})
+    ${LLWINDOW_HEADLESS_LIBRARIES}
+    ${OPENGL_HEADLESS_LIBRARIES})
 
-endif ((SERVER OR BAKING) AND NOT WINDOWS AND NOT DARWIN)
+endif (BUILD_HEADLESS)
 
 add_library (llrender ${llrender_SOURCE_FILES})
+
+if (SDL_FOUND)
+  set_property(TARGET llrender
+    PROPERTY COMPILE_DEFINITIONS LL_SDL=1
+    )
+endif (SDL_FOUND)
+
 # Libraries on which this library depends, needed for Linux builds
 # Sort by high-level to low-level
 target_link_libraries(llrender 
diff --git a/indra/llwindow/CMakeLists.txt b/indra/llwindow/CMakeLists.txt
index 5fef44f9cbe..be74bbb5416 100644
--- a/indra/llwindow/CMakeLists.txt
+++ b/indra/llwindow/CMakeLists.txt
@@ -38,6 +38,7 @@ set(llwindow_SOURCE_FILES
     llkeyboardheadless.cpp
     llwindowheadless.cpp
     llwindowcallbacks.cpp
+    llwindow.cpp
     )
 
 set(llwindow_HEADER_FILES
@@ -50,7 +51,6 @@ set(llwindow_HEADER_FILES
     )
 
 set(viewer_SOURCE_FILES
-    llwindow.cpp
     llmousehandler.cpp
     )
 
@@ -75,6 +75,20 @@ if (LINUX)
       ${SDL_LIBRARY}
       fontconfig          # For FCInit and other FC* functions.
       )
+
+  if (BUILD_HEADLESS)
+    set(llwindowheadless_LINK_LIBRARIES
+        ${LLCOMMON_LIBRARIES}
+        ${LLIMAGE_LIBRARIES}
+        ${LLMATH_LIBRARIES}
+        ${LLRENDER_HEADLESS_LIBRARIES}
+        ${LLVFS_LIBRARIES}
+        ${LLWINDOW_HEADLESS_LIBRARIES}
+        ${LLXML_LIBRARIES}
+        ${UI_LIBRARIES}     # for GTK
+        fontconfig          # For FCInit and other FC* functions.
+        )
+  endif (BUILD_HEADLESS)
 endif (LINUX)
 
 if (DARWIN)
@@ -140,30 +154,24 @@ endif (SOLARIS)
 set_source_files_properties(${llwindow_HEADER_FILES}
                             PROPERTIES HEADER_FILE_ONLY TRUE)
 
-if ((SERVER OR BAKING) AND NOT WINDOWS AND NOT DARWIN)
-  set(server_SOURCE_FILES
+if (BUILD_HEADLESS)
+  set(llwindowheadless_SOURCE_FILES
        llwindowmesaheadless.cpp
        llmousehandler.cpp
        )
-  set(server_HEADER_FILES
+  set(llwindowheadless_HEADER_FILES
        llwindowmesaheadless.h
        llmousehandler.h
        )
-  copy_server_sources(
-      llwindow
-      )
-
-  set_source_files_properties(
-    ${server_SOURCE_FILES}
-    PROPERTIES
-    COMPILE_FLAGS "-DLL_MESA=1 -DLL_MESA_HEADLESS=1"
-    )
   add_library (llwindowheadless
     ${llwindow_SOURCE_FILES}
-    ${server_SOURCE_FILES}
+    ${llwindowheadless_SOURCE_FILES}
+    )
+  set_property(TARGET llwindowheadless
+    PROPERTY COMPILE_DEFINITIONS LL_MESA=1 LL_MESA_HEADLESS=1
     )
-  target_link_libraries (llwindowheadless ${llwindow_LINK_LIBRARIES} OSMesa16 dl)
-endif ((SERVER OR BAKING) AND NOT WINDOWS AND NOT DARWIN)
+  target_link_libraries (llwindowheadless ${llwindowheadless_LINK_LIBRARIES} dl)
+endif (BUILD_HEADLESS)
 
 if (llwindow_HEADER_FILES)
   list(APPEND llwindow_SOURCE_FILES ${llwindow_HEADER_FILES})
@@ -175,5 +183,12 @@ add_library (llwindow
   ${llwindow_SOURCE_FILES}
   ${viewer_SOURCE_FILES}
   )
+
+if (SDL_FOUND)
+  set_property(TARGET llwindow
+    PROPERTY COMPILE_DEFINITIONS LL_SDL=1
+    )
+endif (SDL_FOUND)
+
 target_link_libraries (llwindow ${llwindow_LINK_LIBRARIES})
 
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 83b38e89f9e..25feb247881 100755
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -1539,6 +1539,12 @@ add_executable(${VIEWER_BINARY_NAME}
     ${viewer_SOURCE_FILES}
     )
 
+if (SDL_FOUND)
+  set_property(TARGET ${VIEWER_BINARY_NAME}
+    PROPERTY COMPILE_DEFINITIONS LL_SDL=1
+    )
+endif (SDL_FOUND)
+
 # add package files
 file(GLOB EVENT_HOST_SCRIPT_GLOB_LIST
      ${CMAKE_CURRENT_SOURCE_DIR}/../viewer_components/*.py)
-- 
GitLab


From 8b8ea8908f80ab3b50cb4d7a7998d76633b78b31 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Thu, 4 Oct 2012 06:33:41 +0000
Subject: [PATCH 126/436] Updating appearance utility

---
 autobuild.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index ca5c2aba62c..091153b71a2 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -1254,9 +1254,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>f9e8a8d77da1849f928ed4ab80423e55</string>
+              <string>6f1c1cf12005bca58ac7af05c21efd9c</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/265525/arch/Linux/installer/llappearanceutility_source-0.1-linux-20121004.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/265528/arch/Linux/installer/llappearanceutility_source-0.1-linux-20121004.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
-- 
GitLab


From 45f35966df391b69cff054a64cff801c9cc00189 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Thu, 4 Oct 2012 07:22:52 +0000
Subject: [PATCH 127/436] Fixing autobuild md5sum for mesa

---
 autobuild.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/autobuild.xml b/autobuild.xml
index 091153b71a2..ebcebfd8090 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -1432,7 +1432,7 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>335655570cf6cfeb889c9f8c59bd6392</string>
+              <string>621ec29861ddac6614668b2b00c0ea8e</string>
               <key>url</key>
               <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-mesa/rev/265524/arch/Linux/installer/mesa-7.11.1-linux-20121004.tar.bz2</string>
             </map>
-- 
GitLab


From 8977224883c8b689a0f93932a84bc2498ecc4c67 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Thu, 4 Oct 2012 08:27:13 +0000
Subject: [PATCH 128/436] Limiting headless builds to linux

---
 indra/cmake/Variables.cmake | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/indra/cmake/Variables.cmake b/indra/cmake/Variables.cmake
index 0bcb3a38b00..28315e66e07 100644
--- a/indra/cmake/Variables.cmake
+++ b/indra/cmake/Variables.cmake
@@ -48,9 +48,9 @@ if (EXISTS ${CMAKE_SOURCE_DIR}/Server.cmake)
   # We use this as a marker that you can try to use the proprietary libraries.
   set(INSTALL_PROPRIETARY ON CACHE BOOL "Install proprietary binaries")
 endif (EXISTS ${CMAKE_SOURCE_DIR}/Server.cmake)
-if (INSTALL_PROPRIETARY)
+if (LINUX AND INSTALL_PROPRIETARY)
   set(BUILD_HEADLESS ON CACHE BOOL "Build headless libraries.")
-endif (INSTALL_PROPRIETARY)
+endif (LINUX AND INSTALL_PROPRIETARY)
 set(TEMPLATE_VERIFIER_OPTIONS "" CACHE STRING "Options for scripts/template_verifier.py")
 set(TEMPLATE_VERIFIER_MASTER_URL "http://bitbucket.org/lindenlab/master-message-template/raw/tip/message_template.msg" CACHE STRING "Location of the master message template")
 
-- 
GitLab


From 003020763bc194525be3d3cf18e617c701ea1b2f Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Thu, 4 Oct 2012 20:11:33 +0000
Subject: [PATCH 129/436] Turning on mHasShaderObjects for mesa headless

---
 indra/llrender/llgl.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/llrender/llgl.cpp b/indra/llrender/llgl.cpp
index c65d68e64ed..e3e330c3238 100644
--- a/indra/llrender/llgl.cpp
+++ b/indra/llrender/llgl.cpp
@@ -898,7 +898,7 @@ void LLGLManager::initExtensions()
 	mHasCubeMap = FALSE;
 	mHasOcclusionQuery = FALSE;
 	mHasPointParameters = FALSE;
-	mHasShaderObjects = FALSE;
+	mHasShaderObjects = TRUE;
 	mHasVertexShader = FALSE;
 	mHasFragmentShader = FALSE;
 	mHasTextureRectangle = FALSE;
-- 
GitLab


From e858c172fcdf9aaf736383964c781a0bf347c473 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Thu, 4 Oct 2012 22:00:24 +0000
Subject: [PATCH 130/436] Updating to newer build of tcmalloc/google perf
 tools.  Removing X11 library dependencies from headless libraries

---
 autobuild.xml                     | 72 +++++++++++++++----------------
 indra/cmake/GooglePerfTools.cmake |  4 +-
 indra/llwindow/CMakeLists.txt     |  1 -
 3 files changed, 38 insertions(+), 39 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index ebcebfd8090..e7631fea039 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -843,6 +843,42 @@
           </map>
         </map>
       </map>
+      <key>gperftools</key>
+      <map>
+        <key>license</key>
+        <string>bsd</string>
+        <key>license_file</key>
+        <string>LICENSES/gperftools.txt</string>
+        <key>name</key>
+        <string>gperftools</string>
+        <key>platforms</key>
+        <map>
+          <key>linux</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>8aedfdcf670348c18a9991ae1b384a61</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-google-perftools/rev/262672/arch/Linux/installer/gperftools-2.0-linux-20120727.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>linux</string>
+          </map>
+          <key>windows</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>f62841804acb91e1309603a84f3f0ce8</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-google-perftools/rev/262672/arch/CYGWIN/installer/gperftools-2.0-windows-20120727.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>windows</string>
+          </map>
+        </map>
+      </map>
       <key>gstreamer</key>
       <map>
         <key>license</key>
@@ -1781,42 +1817,6 @@
           </map>
         </map>
       </map>
-      <key>tcmalloc</key>
-      <map>
-        <key>license</key>
-        <string>bsd</string>
-        <key>license_file</key>
-        <string>LICENSES/google-perftools.txt</string>
-        <key>name</key>
-        <string>tcmalloc</string>
-        <key>platforms</key>
-        <map>
-          <key>linux</key>
-          <map>
-            <key>archive</key>
-            <map>
-              <key>hash</key>
-              <string>dde928cb24d22a267004a8c17669ba65</string>
-              <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-google-perftools/rev/226426/arch/Linux/installer/google_perftools-1.7-linux-20110412.tar.bz2</string>
-            </map>
-            <key>name</key>
-            <string>linux</string>
-          </map>
-          <key>windows</key>
-          <map>
-            <key>archive</key>
-            <map>
-              <key>hash</key>
-              <string>8308f7bd68bb7083655753b7abe7225f</string>
-              <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-google-perftools/rev/226287/arch/CYGWIN/installer/google_perftools-1.7-windows-20110411.tar.bz2</string>
-            </map>
-            <key>name</key>
-            <string>windows</string>
-          </map>
-        </map>
-      </map>
       <key>tut</key>
       <map>
         <key>license</key>
diff --git a/indra/cmake/GooglePerfTools.cmake b/indra/cmake/GooglePerfTools.cmake
index 09501e0406e..c2ff095f625 100644
--- a/indra/cmake/GooglePerfTools.cmake
+++ b/indra/cmake/GooglePerfTools.cmake
@@ -10,7 +10,7 @@ if (STANDALONE)
 else (STANDALONE)
   if (WINDOWS)
     if (USE_TCMALLOC)
-       use_prebuilt_binary(tcmalloc)
+       use_prebuilt_binary(gperftools)
        set(TCMALLOC_LIBRARIES 
          debug libtcmalloc_minimal-debug
          optimized libtcmalloc_minimal)
@@ -23,7 +23,7 @@ else (STANDALONE)
   endif (WINDOWS)
   if (LINUX)
     if (USE_TCMALLOC)
-      use_prebuilt_binary(tcmalloc)
+      use_prebuilt_binary(gperftools)
       set(TCMALLOC_LIBRARIES 
         tcmalloc)
     else (USE_TCMALLOC)
diff --git a/indra/llwindow/CMakeLists.txt b/indra/llwindow/CMakeLists.txt
index be74bbb5416..908ed9e2c51 100644
--- a/indra/llwindow/CMakeLists.txt
+++ b/indra/llwindow/CMakeLists.txt
@@ -85,7 +85,6 @@ if (LINUX)
         ${LLVFS_LIBRARIES}
         ${LLWINDOW_HEADLESS_LIBRARIES}
         ${LLXML_LIBRARIES}
-        ${UI_LIBRARIES}     # for GTK
         fontconfig          # For FCInit and other FC* functions.
         )
   endif (BUILD_HEADLESS)
-- 
GitLab


From 19e43e4b588d4aec8f23498993a3a22c0e08a329 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Sat, 6 Oct 2012 08:08:52 +0000
Subject: [PATCH 131/436] Added fast timers for baked texture rendering. 
 Updated appearance utility

---
 autobuild.xml                           |  4 ++--
 indra/llappearance/lltexlayer.cpp       | 15 ++++++++++++++-
 indra/llappearance/lltexlayerparams.cpp |  2 ++
 indra/llrender/llimagegl.cpp            | 14 +++++++++++++-
 indra/llrender/llvertexbuffer.cpp       | 10 ++++++++--
 5 files changed, 39 insertions(+), 6 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index e7631fea039..2b57908551c 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -1290,9 +1290,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>6f1c1cf12005bca58ac7af05c21efd9c</string>
+              <string>6d3959428402ef091863ef2a163ec629</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/265528/arch/Linux/installer/llappearanceutility_source-0.1-linux-20121004.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/265640/arch/Linux/installer/llappearanceutility_source-0.1-linux-20121006.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
diff --git a/indra/llappearance/lltexlayer.cpp b/indra/llappearance/lltexlayer.cpp
index 16f94c48ddd..6e2623b8600 100644
--- a/indra/llappearance/lltexlayer.cpp
+++ b/indra/llappearance/lltexlayer.cpp
@@ -516,8 +516,10 @@ const LLTexLayerSetBuffer* LLTexLayerSet::getComposite() const
 	return mComposite;
 }
 
+static LLFastTimer::DeclareTimer FTM_GATHER_MORPH_MASK_ALPHA("gatherMorphMaskAlpha");
 void LLTexLayerSet::gatherMorphMaskAlpha(U8 *data, S32 origin_x, S32 origin_y, S32 width, S32 height)
 {
+	LLFastTimer t(FTM_GATHER_MORPH_MASK_ALPHA);
 	memset(data, 255, width * height);
 
 	for( layer_list_t::iterator iter = mLayerList.begin(); iter != mLayerList.end(); iter++ )
@@ -530,9 +532,10 @@ void LLTexLayerSet::gatherMorphMaskAlpha(U8 *data, S32 origin_x, S32 origin_y, S
 	renderAlphaMaskTextures(origin_x, origin_y, width, height, true);
 }
 
-
+static LLFastTimer::DeclareTimer FTM_RENDER_ALPHA_MASK_TEXTURES("renderAlphaMaskTextures");
 void LLTexLayerSet::renderAlphaMaskTextures(S32 x, S32 y, S32 width, S32 height, bool forceClear)
 {
+	LLFastTimer t(FTM_RENDER_ALPHA_MASK_TEXTURES);
 	const LLTexLayerSetInfo *info = getInfo();
 	
 	bool use_shaders = LLGLSLShader::sNoFixedFunction;
@@ -1374,8 +1377,10 @@ BOOL LLTexLayer::blendAlphaTexture(S32 x, S32 y, S32 width, S32 height)
 	addAlphaMask(data, originX, originY, width, height);
 }
 
+static LLFastTimer::DeclareTimer FTM_RENDER_MORPH_MASKS("renderMorphMasks");
 BOOL LLTexLayer::renderMorphMasks(S32 x, S32 y, S32 width, S32 height, const LLColor4 &layer_color)
 {
+	LLFastTimer t(FTM_RENDER_MORPH_MASKS);
 	BOOL success = TRUE;
 
 	llassert( !mParamAlphaList.empty() );
@@ -1511,8 +1516,10 @@ BOOL LLTexLayer::renderMorphMasks(S32 x, S32 y, S32 width, S32 height, const LLC
 	return success;
 }
 
+static LLFastTimer::DeclareTimer FTM_ADD_ALPHA_MASK("addAlphaMask");
 void LLTexLayer::addAlphaMask(U8 *data, S32 originX, S32 originY, S32 width, S32 height)
 {
+	LLFastTimer t(FTM_ADD_ALPHA_MASK);
 	S32 size = width * height;
 	const U8* alphaData = getAlphaData();
 	if (!alphaData && hasAlphaParams())
@@ -1854,8 +1861,10 @@ void LLTexLayerStaticImageList::deleteCachedImages()
 
 // Returns an LLImageTGA that contains the encoded data from a tga file named file_name.
 // Caches the result to speed identical subsequent requests.
+static LLFastTimer::DeclareTimer FTM_LOAD_STATIC_TGA("getImageTGA");
 LLImageTGA* LLTexLayerStaticImageList::getImageTGA(const std::string& file_name)
 {
+	LLFastTimer t(FTM_LOAD_STATIC_TGA);
 	const char *namekey = mImageNames.addString(file_name);
 	image_tga_map_t::const_iterator iter = mStaticImageListTGA.find(namekey);
 	if( iter != mStaticImageListTGA.end() )
@@ -1882,8 +1891,10 @@ LLImageTGA* LLTexLayerStaticImageList::getImageTGA(const std::string& file_name)
 
 // Returns a GL Image (without a backing ImageRaw) that contains the decoded data from a tga file named file_name.
 // Caches the result to speed identical subsequent requests.
+static LLFastTimer::DeclareTimer FTM_LOAD_STATIC_TEXTURE("getTexture");
 LLGLTexture* LLTexLayerStaticImageList::getTexture(const std::string& file_name, BOOL is_mask)
 {
+	LLFastTimer t(FTM_LOAD_STATIC_TEXTURE);
 	LLPointer<LLGLTexture> tex;
 	const char *namekey = mImageNames.addString(file_name);
 
@@ -1924,8 +1935,10 @@ LLGLTexture* LLTexLayerStaticImageList::getTexture(const std::string& file_name,
 
 // Reads a .tga file, decodes it, and puts the decoded data in image_raw.
 // Returns TRUE if successful.
+static LLFastTimer::DeclareTimer FTM_LOAD_IMAGE_RAW("loadImageRaw");
 BOOL LLTexLayerStaticImageList::loadImageRaw(const std::string& file_name, LLImageRaw* image_raw)
 {
+	LLFastTimer t(FTM_LOAD_IMAGE_RAW);
 	BOOL success = FALSE;
 	std::string path;
 	path = gDirUtilp->getExpandedFilename(LL_PATH_CHARACTER,file_name);
diff --git a/indra/llappearance/lltexlayerparams.cpp b/indra/llappearance/lltexlayerparams.cpp
index 8f1551353f2..58737f7ff4e 100755
--- a/indra/llappearance/lltexlayerparams.cpp
+++ b/indra/llappearance/lltexlayerparams.cpp
@@ -237,8 +237,10 @@ BOOL LLTexLayerParamAlpha::getSkip() const
 }
 
 
+static LLFastTimer::DeclareTimer FTM_TEX_LAYER_PARAM_ALPHA("alpha render");
 BOOL LLTexLayerParamAlpha::render(S32 x, S32 y, S32 width, S32 height)
 {
+	LLFastTimer t(FTM_TEX_LAYER_PARAM_ALPHA);
 	BOOL success = TRUE;
 
 	if (!mTexLayer)
diff --git a/indra/llrender/llimagegl.cpp b/indra/llrender/llimagegl.cpp
index 44224ba72f3..74c7f81698b 100755
--- a/indra/llrender/llimagegl.cpp
+++ b/indra/llrender/llimagegl.cpp
@@ -615,14 +615,16 @@ void LLImageGL::setImage(const LLImageRaw* imageraw)
 	setImage(rawdata, FALSE);
 }
 
+static LLFastTimer::DeclareTimer FTM_SET_IMAGE("setImage");
 void LLImageGL::setImage(const U8* data_in, BOOL data_hasmips)
 {
+	LLFastTimer t(FTM_SET_IMAGE);
 	bool is_compressed = false;
 	if (mFormatPrimary >= GL_COMPRESSED_RGBA_S3TC_DXT1_EXT && mFormatPrimary <= GL_COMPRESSED_RGBA_S3TC_DXT5_EXT)
 	{
 		is_compressed = true;
 	}
-
+	
 	
 	
 	if (mUseMipMaps)
@@ -1057,8 +1059,10 @@ BOOL LLImageGL::setSubImageFromFrameBuffer(S32 fb_x, S32 fb_y, S32 x_pos, S32 y_
 }
 
 // static
+static LLFastTimer::DeclareTimer FTM_GENERATE_TEXTURES("generate textures");
 void LLImageGL::generateTextures(LLTexUnit::eTextureType type, U32 format, S32 numTextures, U32 *textures)
 {
+	LLFastTimer t(FTM_GENERATE_TEXTURES);
 	bool empty = true;
 
 	dead_texturelist_t::iterator iter = sDeadTextureList[type].find(format);
@@ -1119,8 +1123,10 @@ void LLImageGL::deleteTextures(LLTexUnit::eTextureType type, U32 format, S32 mip
 }
 
 // static
+static LLFastTimer::DeclareTimer FTM_SET_MANUAL_IMAGE("setManualImage");
 void LLImageGL::setManualImage(U32 target, S32 miplevel, S32 intformat, S32 width, S32 height, U32 pixformat, U32 pixtype, const void *pixels, bool allow_compression)
 {
+	LLFastTimer t(FTM_SET_MANUAL_IMAGE);
 	bool use_scratch = false;
 	U32* scratch = NULL;
 	if (LLRender::sGLCoreProfile)
@@ -1224,8 +1230,10 @@ void LLImageGL::setManualImage(U32 target, S32 miplevel, S32 intformat, S32 widt
 
 //create an empty GL texture: just create a texture name
 //the texture is assiciate with some image by calling glTexImage outside LLImageGL
+static LLFastTimer::DeclareTimer FTM_CREATE_GL_TEXTURE1("createGLTexture()");
 BOOL LLImageGL::createGLTexture()
 {
+	LLFastTimer t(FTM_CREATE_GL_TEXTURE1);
 	if (gGLManager.mIsDisabled)
 	{
 		llwarns << "Trying to create a texture while GL is disabled!" << llendl;
@@ -1253,8 +1261,10 @@ BOOL LLImageGL::createGLTexture()
 	return TRUE ;
 }
 
+static LLFastTimer::DeclareTimer FTM_CREATE_GL_TEXTURE2("createGLTexture(raw)");
 BOOL LLImageGL::createGLTexture(S32 discard_level, const LLImageRaw* imageraw, S32 usename/*=0*/, BOOL to_create, S32 category)
 {
+	LLFastTimer t(FTM_CREATE_GL_TEXTURE2);
 	if (gGLManager.mIsDisabled)
 	{
 		llwarns << "Trying to create a texture while GL is disabled!" << llendl;
@@ -1326,8 +1336,10 @@ BOOL LLImageGL::createGLTexture(S32 discard_level, const LLImageRaw* imageraw, S
 	return createGLTexture(discard_level, rawdata, FALSE, usename);
 }
 
+static LLFastTimer::DeclareTimer FTM_CREATE_GL_TEXTURE3("createGLTexture3(data)");
 BOOL LLImageGL::createGLTexture(S32 discard_level, const U8* data_in, BOOL data_hasmips, S32 usename)
 {
+	LLFastTimer t(FTM_CREATE_GL_TEXTURE3);
 	llassert(data_in);
 	stop_glerror();
 
diff --git a/indra/llrender/llvertexbuffer.cpp b/indra/llrender/llvertexbuffer.cpp
index 37a4649cb60..48e0a79b3a4 100644
--- a/indra/llrender/llvertexbuffer.cpp
+++ b/indra/llrender/llvertexbuffer.cpp
@@ -550,8 +550,10 @@ void LLVertexBuffer::setupClientArrays(U32 data_mask)
 }
 
 //static
+static LLFastTimer::DeclareTimer FTM_VB_DRAW_ARRAYS("drawArrays");
 void LLVertexBuffer::drawArrays(U32 mode, const std::vector<LLVector3>& pos, const std::vector<LLVector3>& norm)
 {
+	LLFastTimer t(FTM_VB_DRAW_ARRAYS);
 	llassert(!LLGLSLShader::sNoFixedFunction || LLGLSLShader::sCurBoundShaderPtr != NULL);
 	gGL.syncMatrices();
 
@@ -773,6 +775,7 @@ void LLVertexBuffer::draw(U32 mode, U32 count, U32 indices_offset) const
 	placeFence();
 }
 
+static LLFastTimer::DeclareTimer FTM_GL_DRAW_ARRAYS("GL draw arrays");
 void LLVertexBuffer::drawArrays(U32 mode, U32 first, U32 count) const
 {
 	llassert(!LLGLSLShader::sNoFixedFunction || LLGLSLShader::sCurBoundShaderPtr != NULL);
@@ -807,8 +810,11 @@ void LLVertexBuffer::drawArrays(U32 mode, U32 first, U32 count) const
 		return;
 	}
 
-	stop_glerror();
-	glDrawArrays(sGLMode[mode], first, count);
+	{
+		LLFastTimer t2(FTM_GL_DRAW_ARRAYS);
+		stop_glerror();
+		glDrawArrays(sGLMode[mode], first, count);
+	}
 	stop_glerror();
 	placeFence();
 }
-- 
GitLab


From c06c35609c6683731eaea283468f6b32af18fea2 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Thu, 11 Oct 2012 00:09:04 +0000
Subject: [PATCH 132/436] Updating linux build to gcc4.6

---
 BuildParams                                   |  5 ++
 autobuild.xml                                 |  8 +--
 indra/cmake/LLCommon.cmake                    |  2 +
 indra/cmake/LLXML.cmake                       |  4 +-
 indra/cmake/UI.cmake                          |  2 +
 .../llimage_libtest/CMakeLists.txt            |  3 ++
 .../llui_libtest/CMakeLists.txt               |  4 ++
 indra/linux_crash_logger/CMakeLists.txt       |  4 ++
 indra/linux_updater/CMakeLists.txt            |  4 ++
 indra/linux_updater/linux_updater.cpp         |  4 +-
 indra/llappearance/llavatarappearance.cpp     |  2 +-
 indra/llcharacter/CMakeLists.txt              |  4 ++
 indra/llcommon/llsdserialize.cpp              |  5 +-
 indra/llcommon/tests/bitpack_test.cpp         | 15 +++---
 .../llcommon/tests/llinstancetracker_test.cpp |  3 +-
 indra/llcommon/tests/reflection_test.cpp      |  2 +-
 indra/llcrashlogger/CMakeLists.txt            |  4 ++
 indra/llinventory/CMakeLists.txt              |  4 ++
 indra/llmath/llvolume.cpp                     |  5 --
 indra/llmessage/llhttpassetstorage.cpp        |  2 +-
 indra/llmessage/lliosocket.cpp                |  9 ++++
 indra/llplugin/CMakeLists.txt                 |  4 ++
 indra/llplugin/slplugin/CMakeLists.txt        |  3 ++
 indra/llprimitive/CMakeLists.txt              |  6 ++-
 indra/llrender/CMakeLists.txt                 |  4 ++
 indra/llrender/llfontfreetype.cpp             |  7 +--
 indra/llrender/llfontgl.cpp                   |  2 -
 indra/llrender/llgl.cpp                       | 14 ++---
 indra/llrender/llimagegl.cpp                  |  4 +-
 indra/llrender/llvertexbuffer.cpp             |  6 ---
 indra/llui/CMakeLists.txt                     |  4 ++
 indra/llui/llconsole.cpp                      |  1 -
 indra/llui/llfunctorregistry.h                |  2 -
 indra/llui/llkeywords.cpp                     |  4 --
 indra/llui/lllayoutstack.cpp                  |  1 -
 indra/llui/lltextbase.cpp                     |  2 -
 indra/llui/lltexteditor.cpp                   |  1 -
 indra/llui/lltoolbar.cpp                      |  4 --
 indra/llui/llui.h                             |  2 +
 indra/llwindow/CMakeLists.txt                 |  4 ++
 indra/llwindow/GL/glh_extensions.h            |  4 +-
 indra/llwindow/llwindowsdl.cpp                | 10 ++--
 indra/llxml/CMakeLists.txt                    |  3 ++
 indra/lscript/lscript_compile/CMakeLists.txt  |  3 ++
 indra/lscript/lscript_execute/CMakeLists.txt  |  3 ++
 .../lscript_execute/lscript_execute.cpp       | 11 +---
 .../lscript_execute/lscript_readlso.cpp       |  9 ++--
 indra/lscript/lscript_library/CMakeLists.txt  |  3 ++
 indra/mac_crash_logger/CMakeLists.txt         |  4 ++
 indra/media_plugins/base/CMakeLists.txt       |  3 ++
 indra/media_plugins/example/CMakeLists.txt    |  3 ++
 .../media_plugins/gstreamer010/CMakeLists.txt |  3 ++
 .../llmediaimplgstreamervidplug.cpp           |  3 +-
 indra/media_plugins/quicktime/CMakeLists.txt  |  3 ++
 indra/media_plugins/webkit/CMakeLists.txt     |  3 ++
 indra/newview/CMakeLists.txt                  |  7 ++-
 indra/newview/llagent.cpp                     |  4 +-
 indra/newview/llagentcamera.cpp               | 14 -----
 indra/newview/llbuycurrencyhtml.cpp           |  4 ++
 indra/newview/llcompilequeue.cpp              | 12 -----
 indra/newview/lldrawable.cpp                  |  2 -
 indra/newview/llfasttimerview.cpp             |  5 +-
 indra/newview/llflexibleobject.cpp            |  3 --
 indra/newview/llfloatermodelpreview.cpp       | 13 -----
 indra/newview/llfloaterreporter.cpp           |  7 +--
 indra/newview/llfloateruipreview.cpp          |  1 -
 indra/newview/llfolderview.cpp                |  8 ---
 indra/newview/llhudtext.cpp                   |  5 +-
 indra/newview/llimview.cpp                    |  6 +--
 indra/newview/llinventorybridge.cpp           |  1 -
 indra/newview/llinventorymodel.cpp            | 10 ----
 indra/newview/llinventorypanel.cpp            |  6 ---
 indra/newview/llmaniprotate.cpp               |  1 -
 indra/newview/llmanipscale.cpp                |  5 --
 indra/newview/llmaniptranslate.cpp            | 17 ------
 indra/newview/llmeshrepository.cpp            |  4 +-
 indra/newview/llnetmap.cpp                    |  2 +-
 indra/newview/llpanelcontents.cpp             |  2 -
 indra/newview/llpaneleditwearable.cpp         |  5 +-
 indra/newview/llpanelface.cpp                 |  1 -
 indra/newview/llpanelgrouplandmoney.cpp       |  4 --
 indra/newview/llpanellandmarkinfo.cpp         | 18 -------
 indra/newview/llpanelobject.cpp               |  3 +-
 indra/newview/llpanelpermissions.cpp          |  4 +-
 indra/newview/llpanelvolume.cpp               |  3 +-
 indra/newview/llphysicsmotion.cpp             | 13 +++--
 indra/newview/llscreenchannel.cpp             |  3 +-
 indra/newview/llsechandler_basic.cpp          |  2 -
 indra/newview/llselectmgr.cpp                 |  2 -
 indra/newview/llsidepaneltaskinfo.cpp         |  4 +-
 indra/newview/llspatialpartition.cpp          |  6 ---
 indra/newview/llspeakers.cpp                  |  2 +-
 indra/newview/llstartup.cpp                   |  7 ---
 indra/newview/llsurface.cpp                   |  2 -
 indra/newview/lltoastnotifypanel.cpp          |  2 -
 indra/newview/lltoolcomp.cpp                  |  2 +-
 indra/newview/lltoolfocus.cpp                 | 10 ----
 indra/newview/lltoolpie.cpp                   |  7 ---
 indra/newview/llurlhistory.cpp                |  2 -
 indra/newview/llviewercamera.cpp              |  6 +--
 indra/newview/llviewerdisplay.cpp             |  1 -
 indra/newview/llviewermediafocus.cpp          |  2 -
 indra/newview/llviewermessage.cpp             | 15 +-----
 indra/newview/llviewerobjectlist.cpp          |  9 ++--
 indra/newview/llviewerparcelmedia.cpp         |  2 -
 indra/newview/llviewertexteditor.cpp          |  2 -
 indra/newview/llviewerwindow.cpp              |  2 -
 indra/newview/llvlcomposition.cpp             |  8 ---
 indra/newview/llvoavatar.cpp                  |  6 ---
 indra/newview/llvoavatarself.cpp              |  4 --
 indra/newview/llvoicevivox.cpp                | 11 ++--
 indra/newview/llvosurfacepatch.cpp            | 10 +---
 indra/newview/llvowlsky.cpp                   | 16 +++---
 indra/newview/llwaterparamset.cpp             |  2 -
 indra/newview/llworldmapview.cpp              |  3 --
 indra/newview/pipeline.cpp                    |  6 +--
 indra/test/CMakeLists.txt                     |  4 ++
 indra/test/io.cpp                             |  8 +--
 indra/test/llstreamtools_tut.cpp              | 53 +++++++++----------
 indra/test/lltemplatemessagebuilder_tut.cpp   |  3 +-
 indra/test_apps/llplugintest/CMakeLists.txt   |  3 ++
 indra/viewer_components/login/CMakeLists.txt  |  4 ++
 .../viewer_components/updater/CMakeLists.txt  |  3 ++
 indra/win_crash_logger/CMakeLists.txt         |  4 ++
 124 files changed, 250 insertions(+), 416 deletions(-)

diff --git a/BuildParams b/BuildParams
index ebfc640023e..4567f72ede7 100644
--- a/BuildParams
+++ b/BuildParams
@@ -20,6 +20,11 @@ email_status_this_is_os = true
 # Limit extent of codeticket updates to revisions after...
 codeticket_since = 3.3.0-release
 
+# Override build system default toolchain
+# Note that this will only affect automated builds.
+Linux.gcc_version = /usr/bin/gcc-4.6
+Linux.cxx_version = /usr/bin/g++-4.6
+
 # ========================================
 # Viewer Development
 # ========================================
diff --git a/autobuild.xml b/autobuild.xml
index 2b57908551c..096e40a429e 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -690,9 +690,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>26f2df1f0b0fa01e94e0253e322f3583</string>
+              <string>1b1f1e9975e3a671c9faf32fcf4b6d43</string>
               <key>url</key>
-              <string>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/glh_linear-linux-20101001.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-glh_linear/rev/263308/arch/Linux/installer/glh_linear-0.0.0-linux-20120810.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
@@ -1330,9 +1330,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>b706fdeed4ce2182d434043dc33d9d1d</string>
+              <string>a6856b4d58a3b71321acad7e1fa9c8d4</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llphysicsextensions-source/rev/263415/arch/Linux/installer/llphysicsextensions_source-0.3-linux-20120814.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llphysicsextensions-source/rev/265749/arch/Linux/installer/llphysicsextensions_source-0.3-linux-20121011.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
diff --git a/indra/cmake/LLCommon.cmake b/indra/cmake/LLCommon.cmake
index d4694ad37a0..6daef5eb833 100644
--- a/indra/cmake/LLCommon.cmake
+++ b/indra/cmake/LLCommon.cmake
@@ -10,6 +10,8 @@ set(LLCOMMON_INCLUDE_DIRS
     ${LIBS_OPEN_DIR}/llcommon
     ${APRUTIL_INCLUDE_DIR}
     ${APR_INCLUDE_DIR}
+    )
+set(LLCOMMON_SYSTEM_INCLUDE_DIRS
     ${Boost_INCLUDE_DIRS}
     )
 
diff --git a/indra/cmake/LLXML.cmake b/indra/cmake/LLXML.cmake
index 64dfdb604f1..b093c762975 100644
--- a/indra/cmake/LLXML.cmake
+++ b/indra/cmake/LLXML.cmake
@@ -5,8 +5,10 @@ include(EXPAT)
 
 set(LLXML_INCLUDE_DIRS
     ${LIBS_OPEN_DIR}/llxml
-    ${Boost_INCLUDE_DIRS}
     ${EXPAT_INCLUDE_DIRS}
     )
+set(LLXML_SYSTEM_INCLUDE_DIRS
+    ${Boost_INCLUDE_DIRS}
+    )
 
 set(LLXML_LIBRARIES llxml)
diff --git a/indra/cmake/UI.cmake b/indra/cmake/UI.cmake
index 91e5258fb70..d0fd4df03a2 100644
--- a/indra/cmake/UI.cmake
+++ b/indra/cmake/UI.cmake
@@ -1,5 +1,6 @@
 # -*- cmake -*-
 include(Prebuilt)
+include(FreeType)
 
 if (STANDALONE)
   include(FindPkgConfig)
@@ -47,6 +48,7 @@ else (STANDALONE)
         pangoft2-1.0
         pangox-1.0
         pangoxft-1.0
+        ${FREETYPE_LIBRARIES}
         )
   endif (LINUX)
 
diff --git a/indra/integration_tests/llimage_libtest/CMakeLists.txt b/indra/integration_tests/llimage_libtest/CMakeLists.txt
index af5c9fb2e75..36a7d38bb71 100644
--- a/indra/integration_tests/llimage_libtest/CMakeLists.txt
+++ b/indra/integration_tests/llimage_libtest/CMakeLists.txt
@@ -16,6 +16,9 @@ include_directories(
     ${LLVFS_INCLUDE_DIRS}
     ${LLIMAGE_INCLUDE_DIRS}
     )
+include_directories(SYSTEM
+    ${LLCOMMON_SYSTEM_INCLUDE_DIRS}
+    )
 
 set(llimage_libtest_SOURCE_FILES
     llimage_libtest.cpp
diff --git a/indra/integration_tests/llui_libtest/CMakeLists.txt b/indra/integration_tests/llui_libtest/CMakeLists.txt
index 91c9f20c107..e83b4e8cd72 100644
--- a/indra/integration_tests/llui_libtest/CMakeLists.txt
+++ b/indra/integration_tests/llui_libtest/CMakeLists.txt
@@ -34,6 +34,10 @@ include_directories(
     ${LLXML_INCLUDE_DIRS}
     ${LIBS_PREBUILD_DIR}/include/hunspell
     )
+include_directories(SYSTEM
+    ${LLCOMMON_SYSTEM_INCLUDE_DIRS}
+    ${LLXML_SYSTEM_INCLUDE_DIRS}
+    )
 
 set(llui_libtest_SOURCE_FILES
     llui_libtest.cpp
diff --git a/indra/linux_crash_logger/CMakeLists.txt b/indra/linux_crash_logger/CMakeLists.txt
index 98ebdc74873..e0d0c9fc697 100644
--- a/indra/linux_crash_logger/CMakeLists.txt
+++ b/indra/linux_crash_logger/CMakeLists.txt
@@ -20,6 +20,10 @@ include_directories(
     ${LLVFS_INCLUDE_DIRS}
     ${LLXML_INCLUDE_DIRS}
     )
+include_directories(SYSTEM
+    ${LLCOMMON_SYSTEM_INCLUDE_DIRS}
+    ${LLXML_SYSTEM_INCLUDE_DIRS}
+    )
 
 set(linux_crash_logger_SOURCE_FILES
     linux_crash_logger.cpp
diff --git a/indra/linux_updater/CMakeLists.txt b/indra/linux_updater/CMakeLists.txt
index c4e25f4a04e..4a9e82f9b62 100644
--- a/indra/linux_updater/CMakeLists.txt
+++ b/indra/linux_updater/CMakeLists.txt
@@ -24,6 +24,10 @@ include_directories(
     ${OPENSSL_INCLUDE_DIRS}
     ${UI_INCLUDE_DIRS}
     )
+include_directories(SYSTEM
+    ${LLCOMMON_SYSTEM_INCLUDE_DIRS}
+    ${LLXML_SYSTEM_INCLUDE_DIRS}
+    )
 
 set(linux_updater_SOURCE_FILES linux_updater.cpp)
 
diff --git a/indra/linux_updater/linux_updater.cpp b/indra/linux_updater/linux_updater.cpp
index 277f0a5367a..e3ee1378977 100644
--- a/indra/linux_updater/linux_updater.cpp
+++ b/indra/linux_updater/linux_updater.cpp
@@ -812,7 +812,6 @@ void parse_args_and_init(int argc, char **argv, UpdaterAppState *app_state)
 int main(int argc, char **argv)
 {
 	UpdaterAppState* app_state = new UpdaterAppState;
-	GThread *worker_thread;
 
 	parse_args_and_init(argc, argv, app_state);
 
@@ -842,8 +841,7 @@ int main(int argc, char **argv)
 	//llinfos << "SAMPLE TRANSLATION IS: " << LLTrans::getString("LoginInProgress") << llendl;
 
 	// create download thread
-	worker_thread = g_thread_create
-		(GThreadFunc(worker_thread_cb), app_state, FALSE, NULL);
+	g_thread_create(GThreadFunc(worker_thread_cb), app_state, FALSE, NULL);
 
 	gdk_threads_enter();
 	gtk_main();
diff --git a/indra/llappearance/llavatarappearance.cpp b/indra/llappearance/llavatarappearance.cpp
index 8677a1daffa..bdd2d75822a 100644
--- a/indra/llappearance/llavatarappearance.cpp
+++ b/indra/llappearance/llavatarappearance.cpp
@@ -438,7 +438,7 @@ void LLAvatarAppearance::computeBodySize()
 
 	// some of the joints have not been cached
 	LLVector3 skull = mSkullp->getPosition();
-	LLVector3 skull_scale = mSkullp->getScale();
+	//LLVector3 skull_scale = mSkullp->getScale();
 
 	LLVector3 neck = mNeckp->getPosition();
 	LLVector3 neck_scale = mNeckp->getScale();
diff --git a/indra/llcharacter/CMakeLists.txt b/indra/llcharacter/CMakeLists.txt
index 607cdf6d356..2573417b260 100644
--- a/indra/llcharacter/CMakeLists.txt
+++ b/indra/llcharacter/CMakeLists.txt
@@ -16,6 +16,10 @@ include_directories(
     ${LLVFS_INCLUDE_DIRS}
     ${LLXML_INCLUDE_DIRS}
     )
+include_directories(SYSTEM
+    ${LLCOMMON_SYSTEM_INCLUDE_DIRS}
+    ${LLXML_SYSTEM_INCLUDE_DIRS}
+    )
 
 set(llcharacter_SOURCE_FILES
     llanimationstates.cpp
diff --git a/indra/llcommon/llsdserialize.cpp b/indra/llcommon/llsdserialize.cpp
index 7f4f670ed0f..ad4fce6f359 100644
--- a/indra/llcommon/llsdserialize.cpp
+++ b/indra/llcommon/llsdserialize.cpp
@@ -1451,9 +1451,12 @@ S32 LLSDBinaryFormatter::format(const LLSD& data, std::ostream& ostr, U32 option
 	}
 
 	case LLSD::TypeUUID:
+	{
 		ostr.put('u');
-		ostr.write((const char*)(&(data.asUUID().mData)), UUID_BYTES);
+		LLUUID temp = data.asUUID();
+		ostr.write((const char*)(&(temp.mData)), UUID_BYTES);
 		break;
+	}
 
 	case LLSD::TypeString:
 		ostr.put('s');
diff --git a/indra/llcommon/tests/bitpack_test.cpp b/indra/llcommon/tests/bitpack_test.cpp
index 05289881d00..afc0c18cd01 100644
--- a/indra/llcommon/tests/bitpack_test.cpp
+++ b/indra/llcommon/tests/bitpack_test.cpp
@@ -71,7 +71,6 @@ namespace tut
 		U8 packbuffer[255];
 		U8 unpackbuffer[255];
 		int pack_bufsize = 0;
-		int unpack_bufsize = 0;
 
 		LLBitPack bitpack(packbuffer, 255);
 
@@ -81,19 +80,19 @@ namespace tut
 		pack_bufsize = bitpack.flushBitPack();
 
 		LLBitPack bitunpack(packbuffer, pack_bufsize*8);
-		unpack_bufsize = bitunpack.bitUnpack(&unpackbuffer[0], 8);
+		bitunpack.bitUnpack(&unpackbuffer[0], 8);
 		ensure("bitPack: individual unpack: 0", unpackbuffer[0] == (U8) str[0]);
-		unpack_bufsize = bitunpack.bitUnpack(&unpackbuffer[0], 8);
+		bitunpack.bitUnpack(&unpackbuffer[0], 8);
 		ensure("bitPack: individual unpack: 1", unpackbuffer[0] == (U8) str[1]);
-		unpack_bufsize = bitunpack.bitUnpack(&unpackbuffer[0], 8);
+		bitunpack.bitUnpack(&unpackbuffer[0], 8);
 		ensure("bitPack: individual unpack: 2", unpackbuffer[0] == (U8) str[2]);
-		unpack_bufsize = bitunpack.bitUnpack(&unpackbuffer[0], 8);
+		bitunpack.bitUnpack(&unpackbuffer[0], 8);
 		ensure("bitPack: individual unpack: 3", unpackbuffer[0] == (U8) str[3]);
-		unpack_bufsize = bitunpack.bitUnpack(&unpackbuffer[0], 8);
+		bitunpack.bitUnpack(&unpackbuffer[0], 8);
 		ensure("bitPack: individual unpack: 4", unpackbuffer[0] == (U8) str[4]);
-		unpack_bufsize = bitunpack.bitUnpack(&unpackbuffer[0], 8);
+		bitunpack.bitUnpack(&unpackbuffer[0], 8);
 		ensure("bitPack: individual unpack: 5", unpackbuffer[0] == (U8) str[5]);
-		unpack_bufsize = bitunpack.bitUnpack(unpackbuffer, 8*4); // Life
+		bitunpack.bitUnpack(unpackbuffer, 8*4); // Life
 		ensure_memory_matches("bitPack: 4 bytes unpack:", unpackbuffer, 4, str+6, 4);
 	}
 
diff --git a/indra/llcommon/tests/llinstancetracker_test.cpp b/indra/llcommon/tests/llinstancetracker_test.cpp
index 454695ff9f2..e769c3e22c7 100644
--- a/indra/llcommon/tests/llinstancetracker_test.cpp
+++ b/indra/llcommon/tests/llinstancetracker_test.cpp
@@ -267,7 +267,6 @@ namespace tut
         {
             existing.insert(&*uki);
         }
-        Unkeyed* puk = NULL;
         try
         {
             // We don't expect the assignment to take place because we expect
@@ -280,7 +279,7 @@ namespace tut
             // realize we're testing the C++ implementation more than
             // Unkeyed's implementation, but this seems an important point to
             // nail down.
-            puk = new Unkeyed("throw");
+            new Unkeyed("throw");
         }
         catch (const Badness&)
         {
diff --git a/indra/llcommon/tests/reflection_test.cpp b/indra/llcommon/tests/reflection_test.cpp
index 59491cd1fe2..8980ebb1f1d 100644
--- a/indra/llcommon/tests/reflection_test.cpp
+++ b/indra/llcommon/tests/reflection_test.cpp
@@ -207,7 +207,7 @@ namespace tut
 			const LLReflective* reflective = property->get(aggregated_data); // Wrong reflective type, should throw exception.
 
 			// useless op to get rid of compiler warning.
-			reflective = NULL;
+			reflective = reflective;
 		}
 		catch(...)
 		{
diff --git a/indra/llcrashlogger/CMakeLists.txt b/indra/llcrashlogger/CMakeLists.txt
index b2639aec304..12986de8b2c 100644
--- a/indra/llcrashlogger/CMakeLists.txt
+++ b/indra/llcrashlogger/CMakeLists.txt
@@ -16,6 +16,10 @@ include_directories(
     ${LLVFS_INCLUDE_DIRS}
     ${LLXML_INCLUDE_DIRS}
     )
+include_directories(SYSTEM
+    ${LLCOMMON_SYSTEM_INCLUDE_DIRS}
+    ${LLXML_SYSTEM_INCLUDE_DIRS}
+    )
 
 set(llcrashlogger_SOURCE_FILES
     llcrashlogger.cpp
diff --git a/indra/llinventory/CMakeLists.txt b/indra/llinventory/CMakeLists.txt
index f2dd0b06f5f..c69e153dec3 100644
--- a/indra/llinventory/CMakeLists.txt
+++ b/indra/llinventory/CMakeLists.txt
@@ -15,6 +15,10 @@ include_directories(
     ${LLMESSAGE_INCLUDE_DIRS}
     ${LLXML_INCLUDE_DIRS}
     )
+include_directories(SYSTEM
+    ${LLCOMMON_SYSTEM_INCLUDE_DIRS}
+    ${LLXML_SYSTEM_INCLUDE_DIRS}
+    )
 
 set(llinventory_SOURCE_FILES
     llcategory.cpp
diff --git a/indra/llmath/llvolume.cpp b/indra/llmath/llvolume.cpp
index 53d56e96dac..81c52d370be 100644
--- a/indra/llmath/llvolume.cpp
+++ b/indra/llmath/llvolume.cpp
@@ -6348,12 +6348,7 @@ BOOL LLVolumeFace::createUnCutCubeCap(LLVolume* volume, BOOL partial_build)
 	S32 max_t = volume->getPath().mPath.size();
 
 	// S32 i;
-	S32 num_vertices = 0, num_indices = 0;
 	S32	grid_size = (profile.size()-1)/4;
-	S32	quad_count = (grid_size * grid_size);
-
-	num_vertices = (grid_size+1)*(grid_size+1);
-	num_indices = quad_count * 4;
 
 	LLVector4a& min = mExtents[0];
 	LLVector4a& max = mExtents[1];
diff --git a/indra/llmessage/llhttpassetstorage.cpp b/indra/llmessage/llhttpassetstorage.cpp
index 612d765969e..7dcf160c9ba 100644
--- a/indra/llmessage/llhttpassetstorage.cpp
+++ b/indra/llmessage/llhttpassetstorage.cpp
@@ -747,7 +747,7 @@ LLAssetRequest* LLHTTPAssetStorage::findNextRequest(LLAssetStorage::request_list
 	request_list_t::iterator running_end   = running.end();
 
 	request_list_t::iterator pending_iter = pending.begin();
-	request_list_t::iterator pending_end  = pending.end();
+
 	// Loop over all pending requests until we miss finding it in the running list.
 	for (; pending_iter != pending.end(); ++pending_iter)
 	{
diff --git a/indra/llmessage/lliosocket.cpp b/indra/llmessage/lliosocket.cpp
index d5b4d458210..46430994d94 100644
--- a/indra/llmessage/lliosocket.cpp
+++ b/indra/llmessage/lliosocket.cpp
@@ -608,6 +608,15 @@ LLIOPipe::EStatus LLIOServerSocket::process_impl(
 	PUMP_DEBUG;
 	apr_pool_t* new_pool = NULL;
 	apr_status_t status = apr_pool_create(&new_pool, mPool);
+	if(ll_apr_warn_status(status))
+	{
+		if(new_pool)
+		{	
+			apr_pool_destroy(new_pool);
+		}
+		return STATUS_ERROR;
+	}
+
 	apr_socket_t* socket = NULL;
 	status = apr_socket_accept(
 		&socket,
diff --git a/indra/llplugin/CMakeLists.txt b/indra/llplugin/CMakeLists.txt
index 1353b7a4587..75d89aac785 100644
--- a/indra/llplugin/CMakeLists.txt
+++ b/indra/llplugin/CMakeLists.txt
@@ -22,6 +22,10 @@ include_directories(
     ${LLWINDOW_INCLUDE_DIRS}
     ${LLQTWEBKIT_INCLUDE_DIR}
     )
+include_directories(SYSTEM
+    ${LLCOMMON_SYSTEM_INCLUDE_DIRS}
+    ${LLXML_SYSTEM_INCLUDE_DIRS}
+    )
 
 set(llplugin_SOURCE_FILES
     llpluginclassmedia.cpp
diff --git a/indra/llplugin/slplugin/CMakeLists.txt b/indra/llplugin/slplugin/CMakeLists.txt
index 3fc54573a7c..8f0299ebddd 100644
--- a/indra/llplugin/slplugin/CMakeLists.txt
+++ b/indra/llplugin/slplugin/CMakeLists.txt
@@ -12,6 +12,9 @@ include_directories(
     ${LLMESSAGE_INCLUDE_DIRS}
     ${LLCOMMON_INCLUDE_DIRS}
 )
+include_directories(SYSTEM
+    ${LLCOMMON_SYSTEM_INCLUDE_DIRS}
+    )
 
 if (DARWIN)
     include(CMakeFindFrameworks)
diff --git a/indra/llprimitive/CMakeLists.txt b/indra/llprimitive/CMakeLists.txt
index cf01e10577b..1768a06a279 100644
--- a/indra/llprimitive/CMakeLists.txt
+++ b/indra/llprimitive/CMakeLists.txt
@@ -14,10 +14,14 @@ include_directories(
     ${LLMATH_INCLUDE_DIRS}
     ${LLMESSAGE_INCLUDE_DIRS}
     ${LLXML_INCLUDE_DIRS}
-    ${LLPHYSICSEXTENSIONS_INCLUDE_DIRS}
     ${LIBS_PREBUILT_DIR}/include/collada
     ${LIBS_PREBUILT_DIR}/include/collada/1.4
     )
+include_directories(SYSTEM
+    ${LLCOMMON_SYSTEM_INCLUDE_DIRS}
+    ${LLXML_SYSTEM_INCLUDE_DIRS}
+    ${LLPHYSICSEXTENSIONS_INCLUDE_DIRS}
+    )
 
 set(llprimitive_SOURCE_FILES
     llmaterialtable.cpp
diff --git a/indra/llrender/CMakeLists.txt b/indra/llrender/CMakeLists.txt
index 46dde5a0d94..26b5ac17fe5 100644
--- a/indra/llrender/CMakeLists.txt
+++ b/indra/llrender/CMakeLists.txt
@@ -25,6 +25,10 @@ include_directories(
     ${LLXML_INCLUDE_DIRS}
     ${LLVFS_INCLUDE_DIRS}
     )
+include_directories(SYSTEM
+    ${LLCOMMON_SYSTEM_INCLUDE_DIRS}
+    ${LLXML_SYSTEM_INCLUDE_DIRS}
+    )
 
 set(llrender_SOURCE_FILES
     llcubemap.cpp
diff --git a/indra/llrender/llfontfreetype.cpp b/indra/llrender/llfontfreetype.cpp
index 66d4ad2d87d..af4ffc6aeaa 100644
--- a/indra/llrender/llfontfreetype.cpp
+++ b/indra/llrender/llfontfreetype.cpp
@@ -485,14 +485,11 @@ void LLFontFreetype::renderGlyph(U32 glyph_index) const
 	if (mFTFace == NULL)
 		return;
 
-	int error = FT_Load_Glyph(mFTFace, glyph_index, FT_LOAD_FORCE_AUTOHINT );
-	llassert(!error);
+	llassert(! FT_Load_Glyph(mFTFace, glyph_index, FT_LOAD_FORCE_AUTOHINT) );
 
-	error = FT_Render_Glyph(mFTFace->glyph, gFontRenderMode);
+	llassert(! FT_Render_Glyph(mFTFace->glyph, gFontRenderMode) );
 
 	mRenderGlyphCount++;
-	
-	llassert(!error);
 }
 
 void LLFontFreetype::reset(F32 vert_dpi, F32 horz_dpi)
diff --git a/indra/llrender/llfontgl.cpp b/indra/llrender/llfontgl.cpp
index 4dc2fcd7146..de3d710824b 100644
--- a/indra/llrender/llfontgl.cpp
+++ b/indra/llrender/llfontgl.cpp
@@ -541,7 +541,6 @@ S32 LLFontGL::maxDrawableChars(const llwchar* wchars, F32 max_pixels, S32 max_ch
 	
 	BOOL clip = FALSE;
 	F32 cur_x = 0;
-	F32 drawn_x = 0;
 
 	S32 start_of_last_word = 0;
 	BOOL in_word = FALSE;
@@ -624,7 +623,6 @@ S32 LLFontGL::maxDrawableChars(const llwchar* wchars, F32 max_pixels, S32 max_ch
 
 		// Round after kerning.
 		cur_x = (F32)llround(cur_x);
-		drawn_x = cur_x;
 	}
 
 	if( clip )
diff --git a/indra/llrender/llgl.cpp b/indra/llrender/llgl.cpp
index e3e330c3238..4b2bcef9fbe 100644
--- a/indra/llrender/llgl.cpp
+++ b/indra/llrender/llgl.cpp
@@ -593,11 +593,12 @@ bool LLGLManager::initGL()
 	if (mGLVendor.substr(0,4) == "ATI ")
 	{
 		mGLVendorShort = "ATI";
-		BOOL mobile = FALSE;
-		if (mGLRenderer.find("MOBILITY") != std::string::npos)
-		{
-			mobile = TRUE;
-		}
+		// "mobile" appears to be unused, and this code was causing warnings.
+		//BOOL mobile = FALSE;
+		//if (mGLRenderer.find("MOBILITY") != std::string::npos)
+		//{
+		//	mobile = TRUE;
+		//}
 		mIsATI = TRUE;
 
 #if LL_WINDOWS && !LL_MESA_HEADLESS
@@ -1451,8 +1452,7 @@ void assert_glerror()
 void clear_glerror()
 {
 	//  Create or update texture to be used with this data 
-	GLenum error;
-	error = glGetError();
+    glGetError();
 }
 
 ///////////////////////////////////////////////////////////////
diff --git a/indra/llrender/llimagegl.cpp b/indra/llrender/llimagegl.cpp
index 74c7f81698b..16fe77a755b 100755
--- a/indra/llrender/llimagegl.cpp
+++ b/indra/llrender/llimagegl.cpp
@@ -744,7 +744,6 @@ void LLImageGL::setImage(const U8* data_in, BOOL data_hasmips)
 				S32 w = width, h = height;
 				const U8* prev_mip_data = 0;
 				const U8* cur_mip_data = 0;
-				S32 prev_mip_size = 0;
 				S32 cur_mip_size = 0;
 				
 				mMipLevels = nummips;
@@ -760,7 +759,7 @@ void LLImageGL::setImage(const U8* data_in, BOOL data_hasmips)
 					{
 						S32 bytes = w * h * mComponents;
 						llassert(prev_mip_data);
-						llassert(prev_mip_size == bytes*4);
+						llassert(cur_mip_size == bytes*4);
 						U8* new_data = new U8[bytes];
 						llassert_always(new_data);
 						LLImageBase::generateMip(prev_mip_data, new_data, w, h, mComponents);
@@ -798,7 +797,6 @@ void LLImageGL::setImage(const U8* data_in, BOOL data_hasmips)
 						delete[] prev_mip_data;
 					}
 					prev_mip_data = cur_mip_data;
-					prev_mip_size = cur_mip_size;
 					w >>= 1;
 					h >>= 1;
 				}
diff --git a/indra/llrender/llvertexbuffer.cpp b/indra/llrender/llvertexbuffer.cpp
index 48e0a79b3a4..8e2ae65652f 100644
--- a/indra/llrender/llvertexbuffer.cpp
+++ b/indra/llrender/llvertexbuffer.cpp
@@ -404,7 +404,6 @@ void LLVertexBuffer::setupClientArrays(U32 data_mask)
 {
 	if (sLastMask != data_mask)
 	{
-		bool error = false;
 
 		if (gGLManager.mGLSLVersionMajor < 2 && gGLManager.mGLSLVersionMinor < 30)
 		{
@@ -471,7 +470,6 @@ void LLVertexBuffer::setupClientArrays(U32 data_mask)
 						{
 							if (gDebugSession)
 							{
-								error = true;
 								gFailLog << "Bad client state! " << array[i] << " disabled." << std::endl;
 							}
 							else
@@ -491,7 +489,6 @@ void LLVertexBuffer::setupClientArrays(U32 data_mask)
 					{ //needs to be disabled, make sure it was (DEBUG TEMPORARY)
 						if (gDebugSession)
 						{
-							error = true;
 							gFailLog << "Bad client state! " << array[i] << " enabled." << std::endl;
 						}
 						else
@@ -2237,7 +2234,6 @@ void LLVertexBuffer::setBuffer(U32 data_mask)
 			setup = setup || bindBuffer || bindIndices;
 		}
 
-		bool error = false;
 		if (gDebugGL && !mGLArray)
 		{
 			GLint buff;
@@ -2246,7 +2242,6 @@ void LLVertexBuffer::setBuffer(U32 data_mask)
 			{
 				if (gDebugSession)
 				{
-					error = true;
 					gFailLog << "Invalid GL vertex buffer bound: " << buff << std::endl;
 				}
 				else
@@ -2262,7 +2257,6 @@ void LLVertexBuffer::setBuffer(U32 data_mask)
 				{
 					if (gDebugSession)
 					{
-						error = true;
 						gFailLog << "Invalid GL index buffer bound: " << buff <<  std::endl;
 					}
 					else
diff --git a/indra/llui/CMakeLists.txt b/indra/llui/CMakeLists.txt
index 4d4b8edc37d..cc76d53c962 100644
--- a/indra/llui/CMakeLists.txt
+++ b/indra/llui/CMakeLists.txt
@@ -25,6 +25,10 @@ include_directories(
     ${LLXML_INCLUDE_DIRS}
     ${LIBS_PREBUILD_DIR}/include/hunspell
     )
+include_directories(SYSTEM
+    ${LLCOMMON_SYSTEM_INCLUDE_DIRS}
+    ${LLXML_SYSTEM_INCLUDE_DIRS}
+    )
 
 set(llui_SOURCE_FILES
     llaccordionctrl.cpp
diff --git a/indra/llui/llconsole.cpp b/indra/llui/llconsole.cpp
index 161496b1f5a..c216d593a24 100644
--- a/indra/llui/llconsole.cpp
+++ b/indra/llui/llconsole.cpp
@@ -243,7 +243,6 @@ void LLConsole::draw()
 void LLConsole::Paragraph::makeParagraphColorSegments (const LLColor4 &color) 
 {
 	LLSD paragraph_color_segments;
-	LLColor4 lcolor=color;
 	
 	paragraph_color_segments[0]["text"] =wstring_to_utf8str(mParagraphText);
 	LLSD color_sd = color.getValue();
diff --git a/indra/llui/llfunctorregistry.h b/indra/llui/llfunctorregistry.h
index 899cc3a3263..beac2124419 100644
--- a/indra/llui/llfunctorregistry.h
+++ b/indra/llui/llfunctorregistry.h
@@ -69,7 +69,6 @@ class LLFunctorRegistry : public LLSingleton<LLFunctorRegistry<FUNCTOR_TYPE> >
 	bool registerFunctor(const std::string& name, ResponseFunctor f)
 	{
 		bool retval = true;
-		typename FunctorMap::iterator it = mMap.find(name);
 		if (mMap.count(name) == 0)
 		{
 			mMap[name] = f;
@@ -96,7 +95,6 @@ class LLFunctorRegistry : public LLSingleton<LLFunctorRegistry<FUNCTOR_TYPE> >
 
 	FUNCTOR_TYPE getFunctor(const std::string& name)
 	{
-		typename FunctorMap::iterator it = mMap.find(name);
 		if (mMap.count(name) != 0)
 		{
 			return mMap[name];
diff --git a/indra/llui/llkeywords.cpp b/indra/llui/llkeywords.cpp
index c1cd04186bd..795dacdbb06 100644
--- a/indra/llui/llkeywords.cpp
+++ b/indra/llui/llkeywords.cpp
@@ -367,7 +367,6 @@ void LLKeywords::findSegments(std::vector<LLTextSegmentPtr>* seg_list, const LLW
 
 	const llwchar* base = wtext.c_str();
 	const llwchar* cur = base;
-	const llwchar* line = NULL;
 
 	while( *cur )
 	{
@@ -385,9 +384,6 @@ void LLKeywords::findSegments(std::vector<LLTextSegmentPtr>* seg_list, const LLW
 				}
 			}
 
-			// Start of a new line
-			line = cur;
-
 			// Skip white space
 			while( *cur && isspace(*cur) && (*cur != '\n')  )
 			{
diff --git a/indra/llui/lllayoutstack.cpp b/indra/llui/lllayoutstack.cpp
index 4c730286da8..106475cb2af 100644
--- a/indra/llui/lllayoutstack.cpp
+++ b/indra/llui/lllayoutstack.cpp
@@ -477,7 +477,6 @@ void LLLayoutStack::createResizeBar(LLLayoutPanel* panelp)
 		if (lp->mResizeBar == NULL)
 		{
 			LLResizeBar::Side side = (mOrientation == HORIZONTAL) ? LLResizeBar::RIGHT : LLResizeBar::BOTTOM;
-			LLRect resize_bar_rect = getRect();
 
 			LLResizeBar::Params resize_params;
 			resize_params.name("resize");
diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp
index abe74c3f203..57359a20ec3 100644
--- a/indra/llui/lltextbase.cpp
+++ b/indra/llui/lltextbase.cpp
@@ -351,7 +351,6 @@ void LLTextBase::drawSelectionBackground()
 
 		S32 selection_left		= llmin( mSelectionStart, mSelectionEnd );
 		S32 selection_right		= llmax( mSelectionStart, mSelectionEnd );
-		LLRect selection_rect = mVisibleTextRect;
 
 		// Skip through the lines we aren't drawing.
 		LLRect content_display_rect = getVisibleDocumentRect();
@@ -2239,7 +2238,6 @@ const LLWString& LLTextBase::getWText() const
 S32 LLTextBase::getDocIndexFromLocalCoord( S32 local_x, S32 local_y, BOOL round, bool hit_past_end_of_line) const
 {
 	// Figure out which line we're nearest to.
-	LLRect visible_region = getVisibleDocumentRect();
 	LLRect doc_rect = mDocumentView->getRect();
 
 	S32 doc_y = local_y - doc_rect.mBottom;
diff --git a/indra/llui/lltexteditor.cpp b/indra/llui/lltexteditor.cpp
index 1b22f87823d..a3f3de6c333 100644
--- a/indra/llui/lltexteditor.cpp
+++ b/indra/llui/lltexteditor.cpp
@@ -2446,7 +2446,6 @@ void LLTextEditor::updateSegments()
 		mKeywords.findSegments(&segment_list, getWText(), mDefaultColor.get(), *this);
 
 		clearSegments();
-		segment_set_t::iterator insert_it = mSegments.begin();
 		for (segment_vec_t::iterator list_it = segment_list.begin(); list_it != segment_list.end(); ++list_it)
 		{
 			insertSegment(*list_it);
diff --git a/indra/llui/lltoolbar.cpp b/indra/llui/lltoolbar.cpp
index 81ea0ebf0ca..bffcaa9e0d6 100644
--- a/indra/llui/lltoolbar.cpp
+++ b/indra/llui/lltoolbar.cpp
@@ -652,7 +652,6 @@ void LLToolBar::updateLayoutAsNeeded()
 	S32 max_row_length = 0;
 
 	S32 max_length;
-	S32 max_total_girth;
 	S32 cur_start;
 	S32 cur_row ;
 	S32 row_pad_start;
@@ -663,7 +662,6 @@ void LLToolBar::updateLayoutAsNeeded()
 	if (orientation == LLLayoutStack::HORIZONTAL)
 	{
 		max_length = getRect().getWidth() - mPadLeft - mPadRight;
-		max_total_girth = getRect().getHeight() - mPadTop - mPadBottom;
 		row_pad_start = mPadLeft;
 		row_pad_end = mPadRight;
 		cur_row = mPadTop;
@@ -672,7 +670,6 @@ void LLToolBar::updateLayoutAsNeeded()
 	else // VERTICAL
 	{
 		max_length = getRect().getHeight() - mPadTop - mPadBottom;
-		max_total_girth = getRect().getWidth() - mPadLeft - mPadRight;
 		row_pad_start = mPadTop;
 		row_pad_end = mPadBottom;
 		cur_row = mPadLeft;
@@ -835,7 +832,6 @@ void LLToolBar::draw()
 	if (mDragAndDropTarget && !mButtonCommands.empty())
 	{
 		LLRect caret_rect = caret->getRect();
-		LLRect toolbar_rect = getRect();
 		if (getOrientation(mSideType) == LLLayoutStack::HORIZONTAL)
 		{
 			caret->setRect(LLRect(mDragx-caret_rect.getWidth()/2+1,
diff --git a/indra/llui/llui.h b/indra/llui/llui.h
index a38ae9a5603..4c46fd9a31f 100644
--- a/indra/llui/llui.h
+++ b/indra/llui/llui.h
@@ -347,8 +347,10 @@ class LLRegisterWith
 	// even if their constructors have side effects
 	void reference()
 	{
+#ifdef LL_WINDOWS
 		S32 dummy;
 		dummy = 0;
+#endif /*LL_WINDOWS*/
 	}
 };
 
diff --git a/indra/llwindow/CMakeLists.txt b/indra/llwindow/CMakeLists.txt
index 908ed9e2c51..4610b7a2345 100644
--- a/indra/llwindow/CMakeLists.txt
+++ b/indra/llwindow/CMakeLists.txt
@@ -32,6 +32,10 @@ include_directories(
     ${LLXML_INCLUDE_DIRS}
     ${DIRECTX_INCLUDE_DIR}
     )
+include_directories(SYSTEM
+    ${LLCOMMON_SYSTEM_INCLUDE_DIRS}
+    ${LLXML_SYSTEM_INCLUDE_DIRS}
+    )
 
 set(llwindow_SOURCE_FILES
     llkeyboard.cpp
diff --git a/indra/llwindow/GL/glh_extensions.h b/indra/llwindow/GL/glh_extensions.h
index d89d85930b6..554cb1731f2 100644
--- a/indra/llwindow/GL/glh_extensions.h
+++ b/indra/llwindow/GL/glh_extensions.h
@@ -113,7 +113,7 @@ static const char* EatNonWhiteSpace(const char *str)
 int glh_init_extensions(const char *origReqExts)
 {
 	// Length of requested extensions string
-	unsigned reqExtsLen;
+	//unsigned reqExtsLen;
 	char *reqExts;
 	// Ptr for individual extensions within reqExts
 	char *reqExt;
@@ -155,8 +155,8 @@ int glh_init_extensions(const char *origReqExts)
 		return TRUE;
 	}
 	reqExts = strdup(origReqExts);
-	reqExtsLen = (S32)strlen(reqExts);
 	/*
+	reqExtsLen = (S32)strlen(reqExts);
 	if (NULL == gGLHExts.mUnsupportedExts)
 	{
 		gGLHExts.mUnsupportedExts = (char*)malloc(reqExtsLen + 1);
diff --git a/indra/llwindow/llwindowsdl.cpp b/indra/llwindow/llwindowsdl.cpp
index de731df228c..c7b141d7c1a 100644
--- a/indra/llwindow/llwindowsdl.cpp
+++ b/indra/llwindow/llwindowsdl.cpp
@@ -1643,24 +1643,24 @@ void check_vm_bloat()
 		const long long significant_vm_difference = 250 * 1024*1024;
 		const long long significant_rss_difference = 50 * 1024*1024;
 
-		ssize_t res;
 		size_t dummy;
 		char *ptr;
-		for (int i=0; i<22; ++i) // parse past the values we don't want
+		size_t delim_result = 0;
+		for (int i=0; i<22 && delim_result > -1; ++i) // parse past the values we don't want
 		{
 			ptr = NULL;
-			res = getdelim(&ptr, &dummy, ' ', fp);
+			delim_result = getdelim(&ptr, &dummy, ' ', fp);
 			free(ptr);
 		}
 		// 23rd space-delimited entry is vsize
 		ptr = NULL;
-		res = getdelim(&ptr, &dummy, ' ', fp);
+		delim_result = getdelim(&ptr, &dummy, ' ', fp);
 		llassert(ptr);
 		long long this_vm_size = atoll(ptr);
 		free(ptr);
 		// 24th space-delimited entry is RSS
 		ptr = NULL;
-		res = getdelim(&ptr, &dummy, ' ', fp);
+		delim_result = getdelim(&ptr, &dummy, ' ', fp);
 		llassert(ptr);
 		long long this_rss_size = getpagesize() * atoll(ptr);
 		free(ptr);
diff --git a/indra/llxml/CMakeLists.txt b/indra/llxml/CMakeLists.txt
index ccd83876330..cf96f26a77a 100644
--- a/indra/llxml/CMakeLists.txt
+++ b/indra/llxml/CMakeLists.txt
@@ -13,6 +13,9 @@ include_directories(
     ${LLMATH_INCLUDE_DIRS}
     ${LLVFS_INCLUDE_DIRS}
     )
+include_directories(
+    ${LLCOMMON_SYSTEM_INCLUDE_DIRS}
+    )
 
 set(llxml_SOURCE_FILES
     llcontrol.cpp
diff --git a/indra/lscript/lscript_compile/CMakeLists.txt b/indra/lscript/lscript_compile/CMakeLists.txt
index 2cfd3898935..07662005b99 100644
--- a/indra/lscript/lscript_compile/CMakeLists.txt
+++ b/indra/lscript/lscript_compile/CMakeLists.txt
@@ -45,6 +45,9 @@ include_directories(
     ${LLPRIMITIVE_INCLUDE_DIRS}
     ${LSCRIPT_INCLUDE_DIRS}
     )
+include_directories(SYSTEM
+    ${LLCOMMON_SYSTEM_INCLUDE_DIRS}
+    )
 
 set(lscript_generated_SOURCE_FILES
     indra.l.cpp
diff --git a/indra/lscript/lscript_execute/CMakeLists.txt b/indra/lscript/lscript_execute/CMakeLists.txt
index 3a16ffdc010..49605982a82 100644
--- a/indra/lscript/lscript_execute/CMakeLists.txt
+++ b/indra/lscript/lscript_execute/CMakeLists.txt
@@ -10,6 +10,9 @@ include_directories(
     ${LLMATH_INCLUDE_DIRS}
     ${LSCRIPT_INCLUDE_DIRS}
     )
+include_directories(SYSTEM
+    ${LLCOMMON_SYSTEM_INCLUDE_DIRS}
+    )
 
 set(lscript_execute_SOURCE_FILES
     llscriptresource.cpp
diff --git a/indra/lscript/lscript_execute/lscript_execute.cpp b/indra/lscript/lscript_execute/lscript_execute.cpp
index d79e9f8bde4..b12d2e4a169 100644
--- a/indra/lscript/lscript_execute/lscript_execute.cpp
+++ b/indra/lscript/lscript_execute/lscript_execute.cpp
@@ -806,16 +806,7 @@ void LLScriptExecute::runInstructions(BOOL b_print, const LLUUID &id,
 	//  is there a fault?
 	//	if yes, print out message and exit
 	S32 value = getVersion();
-	S32 major_version = 0;
-	if (value == LSL2_VERSION1_END_NUMBER)
-	{
-		major_version = 1;
-	}
-	else if (value == LSL2_VERSION_NUMBER)
-	{
-		major_version = 2;
-	}
-	else
+	if ( (value != LSL2_VERSION1_END_NUMBER) && (value != LSL2_VERSION_NUMBER) )
 	{
 		setFault(LSRF_VERSION_MISMATCH);
 	}
diff --git a/indra/lscript/lscript_execute/lscript_readlso.cpp b/indra/lscript/lscript_execute/lscript_readlso.cpp
index 35caa41ae18..8b41cb5a721 100644
--- a/indra/lscript/lscript_execute/lscript_readlso.cpp
+++ b/indra/lscript/lscript_execute/lscript_readlso.cpp
@@ -123,7 +123,7 @@ void LLScriptLSOParse::printRegisters(LLFILE *fp)
 void LLScriptLSOParse::printGlobals(LLFILE *fp)
 {
 	// print out registers first
-	S32				offset, varoffset;
+	S32				varoffset;
 	S32				ivalue;
 	F32				fpvalue;
 	LLVector3		vvalue;
@@ -144,7 +144,7 @@ void LLScriptLSOParse::printGlobals(LLFILE *fp)
 
 		// get offset to skip past name
 		varoffset = global_v_offset;
-		offset = bytestream2integer(mRawData, global_v_offset);
+		bytestream2integer(mRawData, global_v_offset);
 		
 		// get typeexport
 		type = *(mRawData + global_v_offset++);
@@ -262,8 +262,6 @@ void LLScriptLSOParse::printGlobalFunctions(LLFILE *fp)
 		fprintf(fp, "[Function #%d] [0x%X] %s\n", function_number, orig_function_offset, name);
 		fprintf(fp, "\tReturn Type: %s\n", LSCRIPTTypeNames[type]);
 		type = *(mRawData + function_offset++);
-		S32 params;
-		params = 0;
 		S32 pcount = 0;
 		while (type)
 		{
@@ -347,7 +345,6 @@ void LLScriptLSOParse::printStates(LLFILE *fp)
 				read_ahead = event_jump_table;
 
 				S32 temp_end;
-				S32 dummy;
 
 				opcode_end = worst_case_opcode_end;
 
@@ -356,7 +353,7 @@ void LLScriptLSOParse::printStates(LLFILE *fp)
 					if (event_handlers & LSCRIPTStateBitField[k])
 					{
 						temp_end = bytestream2integer(mRawData, read_ahead);
-						dummy = bytestream2integer(mRawData, read_ahead);
+						bytestream2integer(mRawData, read_ahead);
 						if (  (temp_end < opcode_end)
 							&&(temp_end > event_offset))
 						{
diff --git a/indra/lscript/lscript_library/CMakeLists.txt b/indra/lscript/lscript_library/CMakeLists.txt
index f6bc67a994a..5af850c41bc 100644
--- a/indra/lscript/lscript_library/CMakeLists.txt
+++ b/indra/lscript/lscript_library/CMakeLists.txt
@@ -28,5 +28,8 @@ include_directories(
     ${LLMATH_INCLUDE_DIRS}
     ${LSCRIPT_INCLUDE_DIRS}
     )
+include_directories(SYSTEM
+    ${LLCOMMON_SYSTEM_INCLUDE_DIRS}
+    )
 
 add_library (lscript_library ${lscript_library_SOURCE_FILES})
diff --git a/indra/mac_crash_logger/CMakeLists.txt b/indra/mac_crash_logger/CMakeLists.txt
index 420e836e368..ab8460b1a9e 100644
--- a/indra/mac_crash_logger/CMakeLists.txt
+++ b/indra/mac_crash_logger/CMakeLists.txt
@@ -19,6 +19,10 @@ include_directories(
     ${LLVFS_INCLUDE_DIRS}
     ${LLXML_INCLUDE_DIRS}
     )
+include_directories(SYSTEM
+    ${LLCOMMON_SYSTEM_INCLUDE_DIRS}
+    ${LLXML_SYSTEM_INCLUDE_DIRS}
+    )
 
 set(mac_crash_logger_SOURCE_FILES
     mac_crash_logger.cpp
diff --git a/indra/media_plugins/base/CMakeLists.txt b/indra/media_plugins/base/CMakeLists.txt
index cd3718c5f39..7367b9e5e65 100644
--- a/indra/media_plugins/base/CMakeLists.txt
+++ b/indra/media_plugins/base/CMakeLists.txt
@@ -21,6 +21,9 @@ include_directories(
     ${LLRENDER_INCLUDE_DIRS}
     ${LLWINDOW_INCLUDE_DIRS}
 )
+include_directories(SYSTEM
+    ${LLCOMMON_SYSTEM_INCLUDE_DIRS}
+    )
 
 
 ### media_plugin_base
diff --git a/indra/media_plugins/example/CMakeLists.txt b/indra/media_plugins/example/CMakeLists.txt
index 38b712bfd7c..171645ef046 100644
--- a/indra/media_plugins/example/CMakeLists.txt
+++ b/indra/media_plugins/example/CMakeLists.txt
@@ -25,6 +25,9 @@ include_directories(
     ${LLRENDER_INCLUDE_DIRS}
     ${LLWINDOW_INCLUDE_DIRS}
 )
+include_directories(SYSTEM
+    ${LLCOMMON_SYSTEM_INCLUDE_DIRS}
+    )
 
 
 ### media_plugin_example
diff --git a/indra/media_plugins/gstreamer010/CMakeLists.txt b/indra/media_plugins/gstreamer010/CMakeLists.txt
index 519a74aabf0..447f6e06895 100644
--- a/indra/media_plugins/gstreamer010/CMakeLists.txt
+++ b/indra/media_plugins/gstreamer010/CMakeLists.txt
@@ -27,6 +27,9 @@ include_directories(
     ${GSTREAMER010_INCLUDE_DIRS}
     ${GSTREAMER010_PLUGINS_BASE_INCLUDE_DIRS}
 )
+include_directories(SYSTEM
+    ${LLCOMMON_SYSTEM_INCLUDE_DIRS}
+    )
 
 ### media_plugin_gstreamer010
 
diff --git a/indra/media_plugins/gstreamer010/llmediaimplgstreamervidplug.cpp b/indra/media_plugins/gstreamer010/llmediaimplgstreamervidplug.cpp
index cdb7f4faeb7..932aaffa1b9 100644
--- a/indra/media_plugins/gstreamer010/llmediaimplgstreamervidplug.cpp
+++ b/indra/media_plugins/gstreamer010/llmediaimplgstreamervidplug.cpp
@@ -278,10 +278,9 @@ gst_slvideo_set_caps (GstBaseSink * bsink, GstCaps * caps)
 static gboolean
 gst_slvideo_start (GstBaseSink * bsink)
 {
-	GstSLVideo *slvideo;
 	gboolean ret = TRUE;
 	
-	slvideo = GST_SLVIDEO(bsink);
+	GST_SLVIDEO(bsink);
 
 	return ret;
 }
diff --git a/indra/media_plugins/quicktime/CMakeLists.txt b/indra/media_plugins/quicktime/CMakeLists.txt
index 88e870b5566..58391007fff 100644
--- a/indra/media_plugins/quicktime/CMakeLists.txt
+++ b/indra/media_plugins/quicktime/CMakeLists.txt
@@ -24,6 +24,9 @@ include_directories(
     ${LLRENDER_INCLUDE_DIRS}
     ${LLWINDOW_INCLUDE_DIRS}
 )
+include_directories(SYSTEM
+    ${LLCOMMON_SYSTEM_INCLUDE_DIRS}
+    )
 
 if (DARWIN)
     include(CMakeFindFrameworks)
diff --git a/indra/media_plugins/webkit/CMakeLists.txt b/indra/media_plugins/webkit/CMakeLists.txt
index 452202acd28..0c1c3d800e1 100644
--- a/indra/media_plugins/webkit/CMakeLists.txt
+++ b/indra/media_plugins/webkit/CMakeLists.txt
@@ -29,6 +29,9 @@ include_directories(
     ${LLWINDOW_INCLUDE_DIRS}
     ${LLQTWEBKIT_INCLUDE_DIR}
 )
+include_directories(SYSTEM
+    ${LLCOMMON_SYSTEM_INCLUDE_DIRS}
+    )
 
 
 ### media_plugin_webkit
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 25feb247881..6835939292f 100755
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -65,7 +65,6 @@ include_directories(
     ${LLINVENTORY_INCLUDE_DIRS}
     ${LLMATH_INCLUDE_DIRS}
     ${LLMESSAGE_INCLUDE_DIRS}
-    ${LLPHYSICSEXTENSIONS_INCLUDE_DIRS}
     ${LLPLUGIN_INCLUDE_DIRS}
     ${LLPRIMITIVE_INCLUDE_DIRS}
     ${LLRENDER_INCLUDE_DIRS}
@@ -84,6 +83,12 @@ include_directories(
     ${LLAPPEARANCE_INCLUDE_DIRS}
     )
 
+include_directories(SYSTEM
+    ${LLCOMMON_SYSTEM_INCLUDE_DIRS}
+    ${LLXML_SYSTEM_INCLUDE_DIRS}
+    ${LLPHYSICSEXTENSIONS_INCLUDE_DIRS}
+    )
+
 set(viewer_SOURCE_FILES
     groupchatlistener.cpp
     llaccountingcostmanager.cpp
diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index 709d29e884c..3e26eac59a0 100755
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -1709,13 +1709,11 @@ void LLAgent::autoPilot(F32 *delta_yaw)
 
 		*delta_yaw = yaw;
 
-		// Compute when to start slowing down and when to stop
-		F32 stop_distance = mAutoPilotStopDistance;
+		// Compute when to start slowing down
 		F32 slow_distance;
 		if (getFlying())
 		{
 			slow_distance = llmax(6.f, mAutoPilotStopDistance + 5.f);
-			stop_distance = llmax(2.f, mAutoPilotStopDistance);
 		}
 		else
 		{
diff --git a/indra/newview/llagentcamera.cpp b/indra/newview/llagentcamera.cpp
index 7f4d33753da..f7b1ba44f07 100644
--- a/indra/newview/llagentcamera.cpp
+++ b/indra/newview/llagentcamera.cpp
@@ -593,7 +593,6 @@ BOOL LLAgentCamera::calcCameraMinDistance(F32 &obj_min_distance)
 	abs_target_offset.abs();
 
 	LLVector3 target_offset_dir = target_offset_origin;
-	F32 object_radius = mFocusObject->getVObjRadius();
 
 	BOOL target_outside_object_extents = FALSE;
 
@@ -688,17 +687,6 @@ BOOL LLAgentCamera::calcCameraMinDistance(F32 &obj_min_distance)
 
 	LLVector3 camera_offset_object(getCameraPositionAgent() - mFocusObject->getPositionAgent());
 
-	// length projected orthogonal to target offset
-	F32 camera_offset_dist = (camera_offset_object - target_offset_dir * (camera_offset_object * target_offset_dir)).magVec();
-
-	// calculate whether the target point would be "visible" if it were outside the bounding box
-	// on the opposite of the splitting plane defined by object_split_axis;
-	BOOL exterior_target_visible = FALSE;
-	if (camera_offset_dist > object_radius)
-	{
-		// target is visible from camera, so turn off fov zoom
-		exterior_target_visible = TRUE;
-	}
 
 	F32 camera_offset_clip = camera_offset_object * object_split_axis;
 	F32 target_offset_clip = target_offset_dir * object_split_axis;
@@ -1657,7 +1645,6 @@ F32	LLAgentCamera::calcCameraFOVZoomFactor()
 	else if (mFocusObject.notNull() && !mFocusObject->isAvatar() && !mFocusOnAvatar)
 	{
 		// don't FOV zoom on mostly transparent objects
-		LLVector3 focus_offset = mFocusObjectOffset;
 		F32 obj_min_dist = 0.f;
 		calcCameraMinDistance(obj_min_dist);
 		F32 current_distance = llmax(0.001f, camera_offset_dir.magVec());
@@ -1819,7 +1806,6 @@ LLVector3d LLAgentCamera::calcCameraPositionTargetGlobal(BOOL *hit_limit)
 			// set the global camera position
 			LLVector3d camera_offset;
 			
-			LLVector3 av_pos = !isAgentAvatarValid() ? LLVector3::zero : gAgentAvatarp->getRenderPosition();
 			camera_offset.setVec( local_camera_offset );
 			camera_position_global = frame_center_global + head_offset + camera_offset;
 
diff --git a/indra/newview/llbuycurrencyhtml.cpp b/indra/newview/llbuycurrencyhtml.cpp
index e5a9be02031..459123a5d8b 100644
--- a/indra/newview/llbuycurrencyhtml.cpp
+++ b/indra/newview/llbuycurrencyhtml.cpp
@@ -61,6 +61,10 @@ class LLBuyCurrencyHTMLHandler :
 		if ( params.size() >= 3 )
 		{
 			result_code = params[ 2 ].asInteger();
+			if ( result_code != 0 )
+			{
+				LL_WARNS("LLBuyCurrency") << "Received nonzero result code: " << result_code << LL_ENDL ;
+			}
 		};
 
 		// open the legacy XUI based currency floater
diff --git a/indra/newview/llcompilequeue.cpp b/indra/newview/llcompilequeue.cpp
index 4f5f9e22b69..45884244745 100644
--- a/indra/newview/llcompilequeue.cpp
+++ b/indra/newview/llcompilequeue.cpp
@@ -161,18 +161,6 @@ BOOL LLFloaterScriptQueue::start()
 {
 	std::string buffer;
 
-	LLSelectMgr *mgr = LLSelectMgr::getInstance();
-	LLObjectSelectionHandle selectHandle = mgr->getSelection();
-	U32 n_objects = 0;
-	if (gSavedSettings.getBOOL("EditLinkedParts"))
-	{
-		n_objects = selectHandle->getObjectCount();
-	}
-	else
-	{
-		n_objects = selectHandle->getRootObjectCount();
-	}
-
 	LLStringUtil::format_map_t args;
 	args["[START]"] = mStartString;
 	args["[COUNT]"] = llformat ("%d", mObjectIDs.count());
diff --git a/indra/newview/lldrawable.cpp b/indra/newview/lldrawable.cpp
index 4eda2b92b32..ded8b208299 100644
--- a/indra/newview/lldrawable.cpp
+++ b/indra/newview/lldrawable.cpp
@@ -503,7 +503,6 @@ F32 LLDrawable::updateXform(BOOL undamped)
 	//scaling
 	LLVector3 target_scale = mVObjp->getScale();
 	LLVector3 old_scale = mCurrentScale;
-	LLVector3 dest_scale = target_scale;
 	
 	// Damping
 	F32 dist_squared = 0.f;
@@ -1215,7 +1214,6 @@ LLCamera LLSpatialBridge::transformCamera(LLCamera& camera)
 	LLCamera ret = camera;
 	LLXformMatrix* mat = mDrawable->getXform();
 	LLVector3 center = LLVector3(0,0,0) * mat->getWorldMatrix();
-	LLQuaternion rotation = LLQuaternion(mat->getWorldMatrix());
 
 	LLVector3 delta = ret.getOrigin() - center;
 	LLQuaternion rot = ~mat->getRotation();
diff --git a/indra/newview/llfasttimerview.cpp b/indra/newview/llfasttimerview.cpp
index 9664aa7dbe2..04ed3627197 100644
--- a/indra/newview/llfasttimerview.cpp
+++ b/indra/newview/llfasttimerview.cpp
@@ -369,7 +369,7 @@ void LLFastTimerView::draw()
 
 	S32 left, top, right, bottom;
 	S32 x, y, barw, barh, dx, dy;
-	S32 texth, textw;
+	S32 texth;
 	LLPointer<LLUIImage> box_imagep = LLUI::getUIImage("Rounded_Square");
 
 	// Draw the window background
@@ -410,7 +410,6 @@ void LLFastTimerView::draw()
 
 		tdesc = llformat("Full bar = %s [Click to pause/reset] [SHIFT-Click to toggle]",modedesc[mDisplayMode]);
 		LLFontGL::getFontMonospace()->renderUTF8(tdesc, 0, x, y, LLColor4::white, LLFontGL::LEFT, LLFontGL::TOP);
-		textw = LLFontGL::getFontMonospace()->getWidth(tdesc);
 
 		x = xleft, y -= (texth + 2);
 		tdesc = llformat("Justification = %s [CTRL-Click to toggle]",centerdesc[mDisplayCenter]);
@@ -537,8 +536,6 @@ void LLFastTimerView::draw()
 
 			y -= (texth + 2);
 
-			textw = dx + LLFontGL::getFontMonospace()->getWidth(idp->getName()) + 40;
-
 			if (idp->getCollapsed()) 
 			{
 				it.skipDescendants();
diff --git a/indra/newview/llflexibleobject.cpp b/indra/newview/llflexibleobject.cpp
index ef412a6bbf2..a9d7c749ab1 100644
--- a/indra/newview/llflexibleobject.cpp
+++ b/indra/newview/llflexibleobject.cpp
@@ -270,9 +270,6 @@ void LLVolumeImplFlexible::setAttributesOfAllSections(LLVector3* inScale)
 	mSection[0].mVelocity.setVec(0,0,0);
 	mSection[0].mAxisRotation.setQuat(begin_rot,0,0,1);
 
-	LLVector3 parentSectionPosition = mSection[0].mPosition;
-	LLVector3 last_direction = mSection[0].mDirection;
-
 	remapSections(mSection, mInitializedRes, mSection, mSimulateRes);
 	mInitializedRes = mSimulateRes;
 
diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp
index dbab15dc9e9..35d306c6c0f 100755
--- a/indra/newview/llfloatermodelpreview.cpp
+++ b/indra/newview/llfloatermodelpreview.cpp
@@ -746,7 +746,6 @@ void LLFloaterModelPreview::onLODParamCommit(S32 lod, bool enforce_tri_limit)
 void LLFloaterModelPreview::draw()
 {
 	LLFloater::draw();
-	LLRect r = getRect();
 
 	mModelPreview->update();
 
@@ -1670,7 +1669,6 @@ bool LLModelLoader::doLoadModel()
 						
 						//If no skeleton, do a breadth-first search to get at specific joints
 						bool rootNode = false;
-						bool skeletonWithNoRootNode = false;
 						
 						//Need to test for a skeleton that does not have a root node
 						//This occurs when your instance controller does not have an associated scene 
@@ -1681,10 +1679,6 @@ bool LLModelLoader::doLoadModel()
 							{
 								rootNode = true;
 							}
-							else 
-							{
-								skeletonWithNoRootNode = true;
-							}
 
 						}
 						if ( !pSkeleton || !rootNode )
@@ -4977,16 +4971,9 @@ BOOL LLModelPreview::render()
 	bool upload_skin = mFMP->childGetValue("upload_skin").asBoolean();	
 	bool upload_joints = mFMP->childGetValue("upload_joints").asBoolean();
 
-	bool resetJoints = false;
 	if ( upload_joints != mLastJointUpdate )
 	{
-		if ( mLastJointUpdate )
-		{
-			resetJoints = true;
-		}
-
 		mLastJointUpdate = upload_joints;
-
 	}
 
 	for (LLModelLoader::scene::iterator iter = mScene[mPreviewLOD].begin(); iter != mScene[mPreviewLOD].end(); ++iter)
diff --git a/indra/newview/llfloaterreporter.cpp b/indra/newview/llfloaterreporter.cpp
index da773e90ec5..86bd15b2174 100644
--- a/indra/newview/llfloaterreporter.cpp
+++ b/indra/newview/llfloaterreporter.cpp
@@ -813,12 +813,7 @@ void LLFloaterReporter::uploadDoneCallback(const LLUUID &uuid, void *user_data,
 		return;
 	}
 
-	EReportType report_type = UNKNOWN_REPORT;
-	if (data->mPreferredLocation == LLResourceData::INVALID_LOCATION)
-	{
-		report_type = COMPLAINT_REPORT;
-	}
-	else 
+	if (data->mPreferredLocation != LLResourceData::INVALID_LOCATION)
 	{
 		llwarns << "Unknown report type : " << data->mPreferredLocation << llendl;
 	}
diff --git a/indra/newview/llfloateruipreview.cpp b/indra/newview/llfloateruipreview.cpp
index d741b5b1335..5e43e981a4e 100644
--- a/indra/newview/llfloateruipreview.cpp
+++ b/indra/newview/llfloateruipreview.cpp
@@ -914,7 +914,6 @@ void LLFloaterUIPreview::displayFloater(BOOL click, S32 ID, bool save)
 		else
 		{
 			panel->buildFromFile(path);										// build it
-			LLRect new_size = panel->getRect();								// get its rectangle
 			panel->setOrigin(2,2);											// reset its origin point so it's not offset by -left or other XUI attributes
 			(*floaterp)->setTitle(path);									// use the file name as its title, since panels have no guaranteed meaningful name attribute
 			panel->setUseBoundingRect(TRUE);								// enable the use of its outer bounding rect (normally disabled because it's O(n) on the number of sub-elements)
diff --git a/indra/newview/llfolderview.cpp b/indra/newview/llfolderview.cpp
index d4080ab3f7f..93f9c0a3f3d 100644
--- a/indra/newview/llfolderview.cpp
+++ b/indra/newview/llfolderview.cpp
@@ -888,7 +888,6 @@ void LLFolderView::commitRename( const LLSD& data )
 
 void LLFolderView::draw()
 {
-	static LLUIColor sSearchStatusColor = LLUIColorTable::instance().getColor("InventorySearchStatusColor", LLColor4::white);
 	if (mDebugFilters)
 	{
 		std::string current_filter_string = llformat("Current Filter: %d, Least Filter: %d, Auto-accept Filter: %d",
@@ -1506,12 +1505,6 @@ BOOL LLFolderView::handleKeyHere( KEY key, MASK mask )
 		LLMenuGL::sMenuContainer->hideMenus();
 	}
 
-	LLView *item = NULL;
-	if (getChildCount() > 0)
-	{
-		item = *(getChildList()->begin());
-	}
-
 	switch( key )
 	{
 	case KEY_F2:
@@ -2034,7 +2027,6 @@ void LLFolderView::scrollToShowItem(LLFolderViewItem* item, const LLRect& constr
 	{
 		LLRect local_rect = item->getLocalRect();
 		LLRect item_scrolled_rect; // item position relative to display area of scroller
-		LLRect visible_doc_rect = mScrollContainer->getVisibleContentRect();
 		
 		S32 icon_height = mIcon.isNull() ? 0 : mIcon->getHeight(); 
 		S32 label_height = getLabelFontForStyle(mLabelStyle)->getLineHeight(); 
diff --git a/indra/newview/llhudtext.cpp b/indra/newview/llhudtext.cpp
index 579b6008ae8..3c6bcd98299 100644
--- a/indra/newview/llhudtext.cpp
+++ b/indra/newview/llhudtext.cpp
@@ -186,11 +186,8 @@ void LLHUDText::renderText()
 		LLViewerCamera::getInstance()->getPixelVectors(mPositionAgent, y_pixel_vec, x_pixel_vec);
 	}
 
-	LLVector2 border_scale_vec((F32)border_width / (F32)imagep->getTextureWidth(), (F32)border_height / (F32)imagep->getTextureHeight());
 	LLVector3 width_vec = mWidth * x_pixel_vec;
 	LLVector3 height_vec = mHeight * y_pixel_vec;
-	LLVector3 scaled_border_width = (F32)llfloor(border_scale * (F32)border_width) * x_pixel_vec;
-	LLVector3 scaled_border_height = (F32)llfloor(border_scale * (F32)border_height) * y_pixel_vec;
 
 	mRadius = (width_vec + height_vec).magVec() * 0.5f;
 
@@ -440,7 +437,7 @@ LLVector2 LLHUDText::updateScreenPos(LLVector2 &offset)
 	LLVector3 x_pixel_vec;
 	LLVector3 y_pixel_vec;
 	LLViewerCamera::getInstance()->getPixelVectors(mPositionAgent, y_pixel_vec, x_pixel_vec);
-	LLVector3 world_pos = mPositionAgent + (offset.mV[VX] * x_pixel_vec) + (offset.mV[VY] * y_pixel_vec);
+//	LLVector3 world_pos = mPositionAgent + (offset.mV[VX] * x_pixel_vec) + (offset.mV[VY] * y_pixel_vec);
 //	if (!LLViewerCamera::getInstance()->projectPosAgentToScreen(world_pos, screen_pos, FALSE) && mVisibleOffScreen)
 //	{
 //		// bubble off-screen, so find a spot for it along screen edge
diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index 40005708721..57373704efa 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -2674,7 +2674,6 @@ void LLIMMgr::inviteToSession(
 	// voice invite question is different from default only for group call (EXT-7118)
 	std::string question_type = "VoiceInviteQuestionDefault";
 
-	BOOL ad_hoc_invite = FALSE;
 	BOOL voice_invite = FALSE;
 	bool is_linden = LLMuteList::getInstance()->isLinden(caller_name);
 
@@ -2697,13 +2696,11 @@ void LLIMMgr::inviteToSession(
 		//else it's an ad-hoc
 		//and a voice ad-hoc
 		notify_box_type = "VoiceInviteAdHoc";
-		ad_hoc_invite = TRUE;
 		voice_invite = TRUE;
 	}
 	else if ( inv_type == INVITATION_TYPE_IMMEDIATE )
 	{
 		notify_box_type = "InviteAdHoc";
-		ad_hoc_invite = TRUE;
 	}
 
 	LLSD payload;
@@ -3269,10 +3266,9 @@ class LLViewerChatterBoxInvitation : public LLHTTPNode
 			}
 			std::string buffer = saved + message;
 
-			BOOL is_this_agent = FALSE;
 			if(from_id == gAgentID)
 			{
-				is_this_agent = TRUE;
+				return;
 			}
 			gIMMgr->addMessage(
 				session_id,
diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp
index 4834d8dd705..0fd406f4709 100755
--- a/indra/newview/llinventorybridge.cpp
+++ b/indra/newview/llinventorybridge.cpp
@@ -2514,7 +2514,6 @@ BOOL move_inv_category_world_to_agent(const LLUUID& object_id,
 	if(drop && accept)
 	{
 		it = inventory_objects.begin();
-		LLInventoryObject::object_list_t::iterator first_it = inventory_objects.begin();
 		LLMoveInv* move_inv = new LLMoveInv;
 		move_inv->mObjectID = object_id;
 		move_inv->mCategoryID = category_id;
diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp
index 6e23d7c7013..ac1f40b4862 100755
--- a/indra/newview/llinventorymodel.cpp
+++ b/indra/newview/llinventorymodel.cpp
@@ -1354,7 +1354,6 @@ void  LLInventoryModel::fetchInventoryResponder::result(const LLSD& content)
 	item_array_t items;
 	update_map_t update;
 	S32 count = content["items"].size();
-	bool all_one_folder = true;
 	LLUUID folder_id;
 	// Does this loop ever execute more than once?
 	for(S32 i = 0; i < count; ++i)
@@ -1387,10 +1386,6 @@ void  LLInventoryModel::fetchInventoryResponder::result(const LLSD& content)
 		{
 			folder_id = titem->getParentUUID();
 		}
-		else
-		{
-			all_one_folder = false;
-		}
 	}
 
 	U32 changes = 0x0;
@@ -2478,7 +2473,6 @@ bool LLInventoryModel::messageUpdateCore(LLMessageSystem* msg, bool account)
 	item_array_t items;
 	update_map_t update;
 	S32 count = msg->getNumberOfBlocksFast(_PREHASH_InventoryData);
-	bool all_one_folder = true;
 	LLUUID folder_id;
 	// Does this loop ever execute more than once?
 	for(S32 i = 0; i < count; ++i)
@@ -2510,10 +2504,6 @@ bool LLInventoryModel::messageUpdateCore(LLMessageSystem* msg, bool account)
 		{
 			folder_id = titem->getParentUUID();
 		}
-		else
-		{
-			all_one_folder = false;
-		}
 	}
 	if(account)
 	{
diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp
index 05c81957c62..dabb9bb69f7 100644
--- a/indra/newview/llinventorypanel.cpp
+++ b/indra/newview/llinventorypanel.cpp
@@ -402,8 +402,6 @@ void LLInventoryPanel::modelChanged(U32 mask)
 	static LLFastTimer::DeclareTimer FTM_REFRESH("Inventory Refresh");
 	LLFastTimer t2(FTM_REFRESH);
 
-	bool handled = false;
-
 	if (!mViewsInitialized) return;
 	
 	const LLInventoryModel* model = getModel();
@@ -429,7 +427,6 @@ void LLInventoryPanel::modelChanged(U32 mask)
 		// Empty out the display name for relabel.
 		if (mask & LLInventoryObserver::LABEL)
 		{
-			handled = true;
 			if (view_item)
 			{
 				// Request refresh on this item (also flags for filtering)
@@ -448,7 +445,6 @@ void LLInventoryPanel::modelChanged(U32 mask)
 		// Destroy and regenerate the UI.
 		if (mask & LLInventoryObserver::REBUILD)
 		{
-			handled = true;
 			if (model_item && view_item)
 			{
 				view_item->destroyView();
@@ -488,8 +484,6 @@ void LLInventoryPanel::modelChanged(U32 mask)
 					LLInventoryObserver::ADD |
 					LLInventoryObserver::REMOVE))
 		{
-			handled = true;
-
 			//////////////////////////////
 			// ADD Operation
 			// Item exists in memory but a UI element hasn't been created for it.
diff --git a/indra/newview/llmaniprotate.cpp b/indra/newview/llmaniprotate.cpp
index 826e8d560a5..d79f1040bba 100644
--- a/indra/newview/llmaniprotate.cpp
+++ b/indra/newview/llmaniprotate.cpp
@@ -1689,7 +1689,6 @@ void LLManipRotate::highlightManipulators( S32 x, S32 y )
 		return;
 	}
 	
-	LLQuaternion object_rot = first_object->getRenderRotation();
 	LLVector3 rotation_center = gAgent.getPosAgentFromGlobal(mRotationCenter);
 	LLVector3 mouse_dir_x;
 	LLVector3 mouse_dir_y;
diff --git a/indra/newview/llmanipscale.cpp b/indra/newview/llmanipscale.cpp
index 00a0bf88943..ae0884ac5d1 100644
--- a/indra/newview/llmanipscale.cpp
+++ b/indra/newview/llmanipscale.cpp
@@ -1191,9 +1191,6 @@ void LLManipScale::dragFace( S32 x, S32 y )
 		mInSnapRegime = FALSE;
 	}
 
-	BOOL send_scale_update = FALSE;
-	BOOL send_position_update = FALSE;
-
 	LLVector3 dir_agent;
 	if( part_dir_local.mV[VX] )
 	{
@@ -1210,8 +1207,6 @@ void LLManipScale::dragFace( S32 x, S32 y )
 	stretchFace( 
 		projected_vec(drag_start_dir_f, dir_agent) + drag_start_center_agent,
 		projected_vec(drag_delta, dir_agent));
-	send_position_update = TRUE;
-	send_scale_update = TRUE;
 
 	mDragPointGlobal = drag_point_global;
 }
diff --git a/indra/newview/llmaniptranslate.cpp b/indra/newview/llmaniptranslate.cpp
index 362308c1765..b62db70ec84 100644
--- a/indra/newview/llmaniptranslate.cpp
+++ b/indra/newview/llmaniptranslate.cpp
@@ -485,7 +485,6 @@ BOOL LLManipTranslate::handleHover(S32 x, S32 y, MASK mask)
 	}
 
 	// Throttle updates to 10 per second.
-	BOOL send_update = FALSE;
 
 	LLVector3		axis_f;
 	LLVector3d		axis_d;
@@ -702,11 +701,6 @@ BOOL LLManipTranslate::handleHover(S32 x, S32 y, MASK mask)
 				LLVector3 old_position_local = object->getPosition();
 				LLVector3 new_position_local = selectNode->mSavedPositionLocal + (clamped_relative_move_f * objWorldRotation);
 
-				// move and clamp root object first, before adjusting children
-				if (new_position_local != old_position_local)
-				{
-					send_update = TRUE;
-				}
 				//RN: I forget, but we need to do this because of snapping which doesn't often result
 				// in position changes even when the mouse moves
 				object->setPosition(new_position_local);
@@ -716,8 +710,6 @@ BOOL LLManipTranslate::handleHover(S32 x, S32 y, MASK mask)
 
 				if (selectNode->mIndividualSelection)
 				{
-					send_update = FALSE;
-		
 					// counter-translate child objects if we are moving the root as an individual
 					object->resetChildrenPosition(old_position_local - new_position_local, TRUE) ;					
 				}
@@ -753,7 +745,6 @@ BOOL LLManipTranslate::handleHover(S32 x, S32 y, MASK mask)
 				}
 
 				// PR: Only update if changed
-				LLVector3d old_position_global = object->getPositionGlobal();
 				LLVector3 old_position_agent = object->getPositionAgent();
 				LLVector3 new_position_agent = gAgent.getPosAgentFromGlobal(new_position_global);
 				if (object->isRootEdit())
@@ -775,11 +766,6 @@ BOOL LLManipTranslate::handleHover(S32 x, S32 y, MASK mask)
 				{
 					// counter-translate child objects if we are moving the root as an individual
 					object->resetChildrenPosition(old_position_agent - new_position_agent, TRUE) ;					
-					send_update = FALSE;
-				}
-				else if (old_position_global != new_position_global)
-				{
-					send_update = TRUE;
 				}
 			}
 			selectNode->mLastPositionLocal  = object->getPosition();
@@ -1310,7 +1296,6 @@ void LLManipTranslate::renderSnapGuides()
 					// add in off-axis offset
 					tick_start += (mSnapOffsetAxis * mSnapOffsetMeters);
 
-					BOOL is_sub_tick = FALSE;
 					F32 tick_scale = 1.f;
 					for (F32 division_level = max_subdivisions; division_level >= sGridMinSubdivisionLevel; division_level /= 2.f)
 					{
@@ -1319,7 +1304,6 @@ void LLManipTranslate::renderSnapGuides()
 							break;
 						}
 						tick_scale *= 0.7f;
-						is_sub_tick = TRUE;
 					}
 
 // 					S32 num_ticks_to_fade = is_sub_tick ? num_ticks_per_side / 2 : num_ticks_per_side;
@@ -1542,7 +1526,6 @@ void LLManipTranslate::renderSnapGuides()
 		
 		float a = line_alpha;
 
-		LLColor4 col = LLUIColorTable::instance().getColor("SilhouetteChildColor");
 		{
 			//draw grid behind objects
 			LLGLDepthTest gls_depth(GL_TRUE, GL_FALSE);
diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp
index bc7f522848e..d7064f04d79 100755
--- a/indra/newview/llmeshrepository.cpp
+++ b/indra/newview/llmeshrepository.cpp
@@ -3058,6 +3058,7 @@ void LLPhysicsDecomp::doDecomposition()
 		param_map[params[i].mName] = params+i;
 	}
 
+	U32 ret = LLCD_OK;
 	//set parameter values
 	for (decomp_params::iterator iter = mCurRequest->mParams.begin(); iter != mCurRequest->mParams.end(); ++iter)
 	{
@@ -3071,7 +3072,6 @@ void LLPhysicsDecomp::doDecomposition()
 			continue;
 		}
 
-		U32 ret = LLCD_OK;
 
 		if (param->mType == LLCDParam::LLCD_FLOAT)
 		{
@@ -3090,8 +3090,6 @@ void LLPhysicsDecomp::doDecomposition()
 
 	mCurRequest->setStatusMessage("Executing.");
 
-	LLCDResult ret = LLCD_OK;
-	
 	if (LLConvexDecomposition::getInstance() != NULL)
 	{
 		ret = LLConvexDecomposition::getInstance()->executeStage(stage);
diff --git a/indra/newview/llnetmap.cpp b/indra/newview/llnetmap.cpp
index 1bda7640bd3..dea90b90426 100644
--- a/indra/newview/llnetmap.cpp
+++ b/indra/newview/llnetmap.cpp
@@ -150,7 +150,7 @@ void LLNetMap::draw()
 	static LLUIColor map_avatar_color = LLUIColorTable::instance().getColor("MapAvatarColor", LLColor4::white);
 	static LLUIColor map_avatar_friend_color = LLUIColorTable::instance().getColor("MapAvatarFriendColor", LLColor4::white);
 	static LLUIColor map_track_color = LLUIColorTable::instance().getColor("MapTrackColor", LLColor4::white);
-	static LLUIColor map_track_disabled_color = LLUIColorTable::instance().getColor("MapTrackDisabledColor", LLColor4::white);
+	//static LLUIColor map_track_disabled_color = LLUIColorTable::instance().getColor("MapTrackDisabledColor", LLColor4::white);
 	static LLUIColor map_frustum_color = LLUIColorTable::instance().getColor("MapFrustumColor", LLColor4::white);
 	static LLUIColor map_frustum_rotating_color = LLUIColorTable::instance().getColor("MapFrustumRotatingColor", LLColor4::white);
 	
diff --git a/indra/newview/llpanelcontents.cpp b/indra/newview/llpanelcontents.cpp
index 77e1487f383..1a427338e5a 100644
--- a/indra/newview/llpanelcontents.cpp
+++ b/indra/newview/llpanelcontents.cpp
@@ -78,8 +78,6 @@ const char* LLPanelContents::PERMS_ANYONE_CONTROL_KEY = "perms_anyone_control";
 
 BOOL LLPanelContents::postBuild()
 {
-	LLRect rect = this->getRect();
-
 	setMouseOpaque(FALSE);
 
 	childSetAction("button new script",&LLPanelContents::onClickNewScript, this);
diff --git a/indra/newview/llpaneleditwearable.cpp b/indra/newview/llpaneleditwearable.cpp
index 43bb1f57e0a..7832156a0ef 100644
--- a/indra/newview/llpaneleditwearable.cpp
+++ b/indra/newview/llpaneleditwearable.cpp
@@ -1007,13 +1007,11 @@ void LLPanelEditWearable::updatePanelPickerControls(LLWearableType::EType type)
                 return;
 
         bool is_modifiable = false;
-        bool is_copyable   = false;
 
         if(mWearableItem)
         {
                 const LLPermissions& perm = mWearableItem->getPermissions();
                 is_modifiable = perm.allowModifyBy(gAgent.getID(), gAgent.getGroupID());
-                is_copyable = perm.allowCopyBy(gAgent.getID(), gAgent.getGroupID());
         }
 
         if (is_modifiable)
@@ -1440,7 +1438,6 @@ void LLPanelEditWearable::buildParamList(LLScrollingPanelList *panel_list, value
         {
                 panel_list->clearPanels();
                 value_map_t::iterator end = sorted_params.end();
-                S32 height = 0;
                 for(value_map_t::iterator it = sorted_params.begin(); it != end; ++it)
                 {
                         LLPanel::Params p;
@@ -1455,7 +1452,7 @@ void LLPanelEditWearable::buildParamList(LLScrollingPanelList *panel_list, value
                         {
                                 panel_param = new LLScrollingPanelParam( p, NULL, (*it).second, TRUE, this->getWearable(), jointp);
                         }
-                        height = panel_list->addPanel( panel_param );
+                        panel_list->addPanel( panel_param );
                 }
         }
 }
diff --git a/indra/newview/llpanelface.cpp b/indra/newview/llpanelface.cpp
index 202be9671b4..445c0d811f2 100644
--- a/indra/newview/llpanelface.cpp
+++ b/indra/newview/llpanelface.cpp
@@ -84,7 +84,6 @@ BOOL	LLPanelFace::postBuild()
 	childSetCommitCallback("TexOffsetV",LLPanelFace::onCommitTextureInfo, this);
 	childSetAction("button align",&LLPanelFace::onClickAutoFix,this);
 
-	LLRect	rect = this->getRect();
 	LLTextureCtrl*	mTextureCtrl;
 	LLColorSwatchCtrl*	mColorSwatch;
 
diff --git a/indra/newview/llpanelgrouplandmoney.cpp b/indra/newview/llpanelgrouplandmoney.cpp
index 363443646d5..9a08782757d 100644
--- a/indra/newview/llpanelgrouplandmoney.cpp
+++ b/indra/newview/llpanelgrouplandmoney.cpp
@@ -1383,13 +1383,11 @@ void LLGroupMoneyPlanningTabEventHandler::processReply(LLMessageSystem* msg,
 	S32 cur_land_tax;
 	S32 cur_group_tax;
 	S32 cur_parcel_dir_fee;
-	S32 cur_total_tax;
 	S32 proj_object_tax;
 	S32 proj_light_tax;
 	S32 proj_land_tax;
 	S32 proj_group_tax;
 	S32 proj_parcel_dir_fee;
-	S32 proj_total_tax;
 	S32	non_exempt_members;
 
 	msg->getS32Fast(_PREHASH_MoneyData, _PREHASH_IntervalDays, interval_days );
@@ -1413,8 +1411,6 @@ void LLGroupMoneyPlanningTabEventHandler::processReply(LLMessageSystem* msg,
 	msg->getStringFast(_PREHASH_MoneyData, _PREHASH_LastTaxDate, last_stipend_date);
 	msg->getStringFast(_PREHASH_MoneyData, _PREHASH_TaxDate, next_stipend_date);
 
-	cur_total_tax = cur_object_tax + cur_light_tax + cur_land_tax + cur_group_tax +  cur_parcel_dir_fee;
-	proj_total_tax = proj_object_tax + proj_light_tax + proj_land_tax + proj_group_tax + proj_parcel_dir_fee;
 
 	if (interval_days != mImplementationp->mIntervalLength || 
 		current_interval != mImplementationp->mCurrentInterval)
diff --git a/indra/newview/llpanellandmarkinfo.cpp b/indra/newview/llpanellandmarkinfo.cpp
index c57746ec00a..5c9b968ac90 100644
--- a/indra/newview/llpanellandmarkinfo.cpp
+++ b/indra/newview/llpanellandmarkinfo.cpp
@@ -209,24 +209,6 @@ void LLPanelLandmarkInfo::processParcelInfo(const LLParcelData& parcel_data)
 		mMaturityRatingText->setText(LLViewerRegion::accessToString(SIM_ACCESS_PG));
 	}
 
-	S32 region_x;
-	S32 region_y;
-	S32 region_z;
-
-	// If the region position is zero, grab position from the global
-	if(mPosRegion.isExactlyZero())
-	{
-		region_x = llround(parcel_data.global_x) % REGION_WIDTH_UNITS;
-		region_y = llround(parcel_data.global_y) % REGION_WIDTH_UNITS;
-		region_z = llround(parcel_data.global_z);
-	}
-	else
-	{
-		region_x = llround(mPosRegion.mV[VX]);
-		region_y = llround(mPosRegion.mV[VY]);
-		region_z = llround(mPosRegion.mV[VZ]);
-	}
-
 	LLSD info;
 	info["update_verbs"] = true;
 	info["global_x"] = parcel_data.global_x;
diff --git a/indra/newview/llpanelobject.cpp b/indra/newview/llpanelobject.cpp
index d87b565b328..25ef9a3d6a7 100644
--- a/indra/newview/llpanelobject.cpp
+++ b/indra/newview/llpanelobject.cpp
@@ -439,10 +439,9 @@ void LLPanelObject::getState( )
 	mCtrlRotY->setEnabled( enable_rotate );
 	mCtrlRotZ->setEnabled( enable_rotate );
 
-	BOOL owners_identical;
 	LLUUID owner_id;
 	std::string owner_name;
-	owners_identical = LLSelectMgr::getInstance()->selectGetOwner(owner_id, owner_name);
+	LLSelectMgr::getInstance()->selectGetOwner(owner_id, owner_name);
 
 	// BUG? Check for all objects being editable?
 	S32 roots_selected = LLSelectMgr::getInstance()->getSelection()->getRootObjectCount();
diff --git a/indra/newview/llpanelpermissions.cpp b/indra/newview/llpanelpermissions.cpp
index 51ab7649a48..bc6ae35fda1 100644
--- a/indra/newview/llpanelpermissions.cpp
+++ b/indra/newview/llpanelpermissions.cpp
@@ -365,10 +365,8 @@ void LLPanelPermissions::refresh()
 	
 	// Update creator text field
 	getChildView("Creator:")->setEnabled(TRUE);
-	BOOL creators_identical;
 	std::string creator_name;
-	creators_identical = LLSelectMgr::getInstance()->selectGetCreator(mCreatorID,
-																	  creator_name);
+	LLSelectMgr::getInstance()->selectGetCreator(mCreatorID, creator_name);
 
 	getChild<LLUICtrl>("Creator Name")->setValue(creator_name);
 	getChildView("Creator Name")->setEnabled(TRUE);
diff --git a/indra/newview/llpanelvolume.cpp b/indra/newview/llpanelvolume.cpp
index 13b746dbabb..02d363d7952 100644
--- a/indra/newview/llpanelvolume.cpp
+++ b/indra/newview/llpanelvolume.cpp
@@ -252,10 +252,9 @@ void LLPanelVolume::getState( )
 		return;
 	}
 
-	BOOL owners_identical;
 	LLUUID owner_id;
 	std::string owner_name;
-	owners_identical = LLSelectMgr::getInstance()->selectGetOwner(owner_id, owner_name);
+	LLSelectMgr::getInstance()->selectGetOwner(owner_id, owner_name);
 
 	// BUG? Check for all objects being editable?
 	BOOL editable = root_objectp->permModify() && !root_objectp->isPermanentEnforced();
diff --git a/indra/newview/llphysicsmotion.cpp b/indra/newview/llphysicsmotion.cpp
index ded7d660220..3ee0746412f 100644
--- a/indra/newview/llphysicsmotion.cpp
+++ b/indra/newview/llphysicsmotion.cpp
@@ -428,14 +428,13 @@ F32 LLPhysicsMotion::toLocal(const LLVector3 &world)
 F32 LLPhysicsMotion::calculateVelocity_local()
 {
 	const F32 world_to_model_scale = 100.0f;
-        LLJoint *joint = mJointState->getJoint();
-        const LLVector3 position_world = joint->getWorldPosition();
-        const LLQuaternion rotation_world = joint->getWorldRotation();
-        const LLVector3 last_position_world = mPosition_world;
+	LLJoint *joint = mJointState->getJoint();
+	const LLVector3 position_world = joint->getWorldPosition();
+	const LLVector3 last_position_world = mPosition_world;
 	const LLVector3 positionchange_world = (position_world-last_position_world) * world_to_model_scale;
-        const LLVector3 velocity_world = positionchange_world;
-        const F32 velocity_local = toLocal(velocity_world);
-        return velocity_local;
+	const LLVector3 velocity_world = positionchange_world;
+	const F32 velocity_local = toLocal(velocity_world);
+	return velocity_local;
 }
 
 F32 LLPhysicsMotion::calculateAcceleration_local(const F32 velocity_local)
diff --git a/indra/newview/llscreenchannel.cpp b/indra/newview/llscreenchannel.cpp
index d340b304ca8..1f5b1a616ff 100644
--- a/indra/newview/llscreenchannel.cpp
+++ b/indra/newview/llscreenchannel.cpp
@@ -707,7 +707,6 @@ void LLScreenChannel::showToastsTop()
 
 	LLRect	toast_rect;	
 	S32		top = channel_rect.mTop;
-	S32		toast_margin = 0;
 	std::vector<ToastElem>::reverse_iterator it;
 
 	updateRect();
@@ -726,7 +725,7 @@ void LLScreenChannel::showToastsTop()
 			}
 
 			top = toast->getRect().mBottom - toast->getTopPad();
-			toast_margin = gSavedSettings.getS32("ToastGap");
+			gSavedSettings.getS32("ToastGap");
 		}
 
 		LLToast* toast = it->getToast();
diff --git a/indra/newview/llsechandler_basic.cpp b/indra/newview/llsechandler_basic.cpp
index 30400a4c6a6..928d26646b2 100644
--- a/indra/newview/llsechandler_basic.cpp
+++ b/indra/newview/llsechandler_basic.cpp
@@ -1239,7 +1239,6 @@ void LLSecAPIBasicHandler::_readProtectedData()
 									llifstream::binary);
 
 	if (!protected_data_stream.fail()) {
-		int offset;
 		U8 salt[STORE_SALT_SIZE];
 		U8 buffer[BUFFER_READ_SIZE];
 		U8 decrypted_buffer[BUFFER_READ_SIZE];
@@ -1250,7 +1249,6 @@ void LLSecAPIBasicHandler::_readProtectedData()
 
 		// read in the salt and key
 		protected_data_stream.read((char *)salt, STORE_SALT_SIZE);
-		offset = 0;
 		if (protected_data_stream.gcount() < STORE_SALT_SIZE)
 		{
 			throw LLProtectedDataException("Config file too short.");
diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp
index 24e272c7400..047bd2f7f34 100644
--- a/indra/newview/llselectmgr.cpp
+++ b/indra/newview/llselectmgr.cpp
@@ -1182,7 +1182,6 @@ void LLSelectMgr::getGrid(LLVector3& origin, LLQuaternion &rotation, LLVector3 &
 	if (mGridMode == GRID_MODE_LOCAL && mSelectedObjects->getObjectCount())
 	{
 		//LLViewerObject* root = getSelectedParentObject(mSelectedObjects->getFirstObject());
-		LLBBox bbox = mSavedSelectionBBox;
 		mGridOrigin = mSavedSelectionBBox.getCenterAgent();
 		mGridScale = mSavedSelectionBBox.getExtentLocal() * 0.5f;
 
@@ -1200,7 +1199,6 @@ void LLSelectMgr::getGrid(LLVector3& origin, LLQuaternion &rotation, LLVector3 &
 	else if (mGridMode == GRID_MODE_REF_OBJECT && first_grid_object && first_grid_object->mDrawable.notNull())
 	{
 		mGridRotation = first_grid_object->getRenderRotation();
-		LLVector3 first_grid_obj_pos = first_grid_object->getRenderPosition();
 
 		LLVector4a min_extents(F32_MAX);
 		LLVector4a max_extents(-F32_MAX);
diff --git a/indra/newview/llsidepaneltaskinfo.cpp b/indra/newview/llsidepaneltaskinfo.cpp
index c351b1a1283..95e173ef3ee 100644
--- a/indra/newview/llsidepaneltaskinfo.cpp
+++ b/indra/newview/llsidepaneltaskinfo.cpp
@@ -368,10 +368,8 @@ void LLSidepanelTaskInfo::refresh()
 	
 	// Update creator text field
 	getChildView("Creator:")->setEnabled(TRUE);
-	BOOL creators_identical;
 	std::string creator_name;
-	creators_identical = LLSelectMgr::getInstance()->selectGetCreator(mCreatorID,
-																	  creator_name);
+	LLSelectMgr::getInstance()->selectGetCreator(mCreatorID, creator_name);
 
 	getChild<LLUICtrl>("Creator Name")->setValue(creator_name);
 	getChildView("Creator Name")->setEnabled(TRUE);
diff --git a/indra/newview/llspatialpartition.cpp b/indra/newview/llspatialpartition.cpp
index fadaaf45417..77809f37061 100644
--- a/indra/newview/llspatialpartition.cpp
+++ b/indra/newview/llspatialpartition.cpp
@@ -4092,9 +4092,6 @@ class LLOctreeRenderNonOccluded : public LLOctreeTraveler<LLDrawable>
 			return;
 		}
 
-		LLVector4a nodeCenter = group->mBounds[0];
-		LLVector4a octCenter = group->mOctreeNode->getCenter();
-
 		group->rebuildGeom();
 		group->rebuildMesh();
 
@@ -4571,9 +4568,6 @@ class LLOctreeIntersect : public LLSpatialGroup::OctreeTraveler
 
 	virtual bool check(LLDrawable* drawable)
 	{	
-		LLVector3 local_start = mStart;
-		LLVector3 local_end = mEnd;
-
 		if (!drawable || !gPipeline.hasRenderType(drawable->getRenderType()) || !drawable->isVisible())
 		{
 			return false;
diff --git a/indra/newview/llspeakers.cpp b/indra/newview/llspeakers.cpp
index 07d2f1ad6f9..1c7c6450c70 100644
--- a/indra/newview/llspeakers.cpp
+++ b/indra/newview/llspeakers.cpp
@@ -350,7 +350,7 @@ void LLSpeakerMgr::update(BOOL resort_ok)
 		LLUUID speaker_id = speaker_it->first;
 		LLSpeaker* speakerp = speaker_it->second;
 		
-		speaker_map_t::iterator  cur_speaker_it = speaker_it++;
+		speaker_it++;
 
 		if (voice_channel_active && LLVoiceClient::getInstance()->getVoiceEnabled(speaker_id))
 		{
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index 561734aaaec..8be8a5a56b0 100755
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -316,7 +316,6 @@ bool idle_startup()
 	
 	const F32 PRECACHING_DELAY = gSavedSettings.getF32("PrecachingDelay");
 	static LLTimer timeout;
-	static S32 timeout_count = 0;
 
 	static LLTimer login_time;
 
@@ -332,7 +331,6 @@ bool idle_startup()
 
 	// last location by default
 	static S32  agent_location_id = START_LOCATION_ID_LAST;
-	static S32  location_which = START_LOCATION_ID_LAST;
 
 	static bool show_connect_box = true;
 
@@ -744,8 +742,6 @@ bool idle_startup()
 
 		gViewerWindow->getWindow()->setCursor(UI_CURSOR_ARROW);
 
-		timeout_count = 0;
-
 		// Login screen needs menus for preferences, but we can enter
 		// this startup phase more than once.
 		if (gLoginMenuBarView == NULL)
@@ -982,15 +978,12 @@ bool idle_startup()
 		  {
 		  case LLSLURL::LOCATION:
 		    agent_location_id = START_LOCATION_ID_URL;
-		    location_which = START_LOCATION_ID_LAST;
 		    break;
 		  case LLSLURL::LAST_LOCATION:
 		    agent_location_id = START_LOCATION_ID_LAST;
-		    location_which = START_LOCATION_ID_LAST;
 		    break;
 		  default:
 		    agent_location_id = START_LOCATION_ID_HOME;
-		    location_which = START_LOCATION_ID_HOME;
 		    break;
 		  }
 
diff --git a/indra/newview/llsurface.cpp b/indra/newview/llsurface.cpp
index f64a72a616c..dad253ffc3e 100644
--- a/indra/newview/llsurface.cpp
+++ b/indra/newview/llsurface.cpp
@@ -1249,8 +1249,6 @@ BOOL LLSurface::generateWaterTexture(const F32 x, const F32 y,
 		y_end = tex_width;
 	}
 
-	LLVector3d origin_global = from_region_handle(getRegion()->getHandle());
-
 	// OK, for now, just have the composition value equal the height at the point.
 	LLVector3 location;
 	LLColor4U coloru;
diff --git a/indra/newview/lltoastnotifypanel.cpp b/indra/newview/lltoastnotifypanel.cpp
index 602b924398d..8f5d6404e84 100644
--- a/indra/newview/lltoastnotifypanel.cpp
+++ b/indra/newview/lltoastnotifypanel.cpp
@@ -369,8 +369,6 @@ void LLToastNotifyPanel::adjustPanelForScriptNotice(S32 button_panel_width, S32
 
 void LLToastNotifyPanel::adjustPanelForTipNotice()
 {
-	LLRect info_rect = mInfoPanel->getRect();
-	LLRect this_rect = getRect();
 	//we don't need display ControlPanel for tips because they doesn't contain any buttons. 
 	mControlPanel->setVisible(FALSE);
 	reshape(getRect().getWidth(), mInfoPanel->getRect().getHeight());
diff --git a/indra/newview/lltoolcomp.cpp b/indra/newview/lltoolcomp.cpp
index 923fbecb1a2..5270c3d33ff 100644
--- a/indra/newview/lltoolcomp.cpp
+++ b/indra/newview/lltoolcomp.cpp
@@ -471,7 +471,7 @@ BOOL LLToolCompCreate::handleMouseDown(S32 x, S32 y, MASK mask)
 	
 	mObjectPlacedOnMouseDown = TRUE;
 
-	return TRUE;
+	return handled;
 }
 
 void LLToolCompCreate::pickCallback(const LLPickInfo& pick_info)
diff --git a/indra/newview/lltoolfocus.cpp b/indra/newview/lltoolfocus.cpp
index a754d8ee7ee..857b0f07146 100644
--- a/indra/newview/lltoolfocus.cpp
+++ b/indra/newview/lltoolfocus.cpp
@@ -314,8 +314,6 @@ BOOL LLToolCamera::handleHover(S32 x, S32 y, MASK mask)
 	S32 dx = gViewerWindow->getCurrentMouseDX();
 	S32 dy = gViewerWindow->getCurrentMouseDY();
 	
-	BOOL moved_outside_slop = FALSE;
-	
 	if (hasMouseCapture() && mValidClickPoint)
 	{
 		mAccumX += llabs(dx);
@@ -323,19 +321,11 @@ BOOL LLToolCamera::handleHover(S32 x, S32 y, MASK mask)
 
 		if (mAccumX >= SLOP_RANGE)
 		{
-			if (!mOutsideSlopX)
-			{
-				moved_outside_slop = TRUE;
-			}
 			mOutsideSlopX = TRUE;
 		}
 
 		if (mAccumY >= SLOP_RANGE)
 		{
-			if (!mOutsideSlopY)
-			{
-				moved_outside_slop = TRUE;
-			}
 			mOutsideSlopY = TRUE;
 		}
 	}
diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp
index 3cd761b73b5..c26d9dbede2 100644
--- a/indra/newview/lltoolpie.cpp
+++ b/indra/newview/lltoolpie.cpp
@@ -790,14 +790,10 @@ BOOL LLToolPie::handleTooltipLand(std::string line, std::string tooltip_msg)
 	
 	LLParcel* hover_parcel = LLViewerParcelMgr::getInstance()->getHoverParcel();
 	LLUUID owner;
-	S32 width = 0;
-	S32 height = 0;
 	
 	if ( hover_parcel )
 	{
 		owner = hover_parcel->getOwnerID();
-		width = S32(LLViewerParcelMgr::getInstance()->getHoverParcelWidth());
-		height = S32(LLViewerParcelMgr::getInstance()->getHoverParcelHeight());
 	}
 	
 	// Line: "Land"
@@ -1609,9 +1605,6 @@ BOOL LLToolPie::handleRightClickPick()
 
 	// didn't click in any UI object, so must have clicked in the world
 	LLViewerObject *object = mPick.getObject();
-	LLViewerObject *parent = NULL;
-	if(object)
-		parent = object->getRootEdit();
 	
 	// Can't ignore children here.
 	LLToolSelect::handleObjectSelection(mPick, FALSE, TRUE);
diff --git a/indra/newview/llurlhistory.cpp b/indra/newview/llurlhistory.cpp
index edec30f8c45..dd17068be55 100644
--- a/indra/newview/llurlhistory.cpp
+++ b/indra/newview/llurlhistory.cpp
@@ -112,8 +112,6 @@ void LLURLHistory::addURL(const std::string& collection, const std::string& url)
 // static
 void LLURLHistory::removeURL(const std::string& collection, const std::string& url)
 {
-	LLSD::array_iterator iter = sHistorySD[collection].beginArray();
-	LLSD::array_iterator end = sHistorySD[collection].endArray();
 	for(int index = 0; index < sHistorySD[collection].size(); index++)
 	{
 		if(sHistorySD[collection].get(index).asString() == url)
diff --git a/indra/newview/llviewercamera.cpp b/indra/newview/llviewercamera.cpp
index a437a8b3b53..b5aa0ac92aa 100644
--- a/indra/newview/llviewercamera.cpp
+++ b/indra/newview/llviewercamera.cpp
@@ -136,9 +136,6 @@ void LLViewerCamera::updateCameraLocation(const LLVector3 &center,
 
 	mLastPointOfInterest = point_of_interest;
 
-	// constrain to max distance from avatar
-	LLVector3 camera_offset = center - gAgent.getPositionAgent();
-
 	LLViewerRegion * regp = gAgent.getRegion();
 	F32 water_height = (NULL != regp) ? regp->getWaterHeight() : 0.f;
 
@@ -318,7 +315,7 @@ void LLViewerCamera::setPerspective(BOOL for_selection,
 {
 	F32 fov_y, aspect;
 	fov_y = RAD_TO_DEG * getView();
-	BOOL z_default_near, z_default_far = FALSE;
+	BOOL z_default_far = FALSE;
 	if (z_far <= 0)
 	{
 		z_default_far = TRUE;
@@ -326,7 +323,6 @@ void LLViewerCamera::setPerspective(BOOL for_selection,
 	}
 	if (z_near <= 0)
 	{
-		z_default_near = TRUE;
 		z_near = getNear();
 	}
 	aspect = getAspect();
diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp
index fae20b1c13a..bd8377e2810 100644
--- a/indra/newview/llviewerdisplay.cpp
+++ b/indra/newview/llviewerdisplay.cpp
@@ -1034,7 +1034,6 @@ void render_hud_attachments()
 	if (LLPipeline::sShowHUDAttachments && !gDisconnected && setup_hud_matrices())
 	{
 		LLCamera hud_cam = *LLViewerCamera::getInstance();
-		LLVector3 origin = hud_cam.getOrigin();
 		hud_cam.setOrigin(-1.f,0,0);
 		hud_cam.setAxes(LLVector3(1,0,0), LLVector3(0,1,0), LLVector3(0,0,1));
 		LLViewerCamera::updateFrustumPlanes(hud_cam, TRUE);
diff --git a/indra/newview/llviewermediafocus.cpp b/indra/newview/llviewermediafocus.cpp
index 4543a1ba9a7..297906803bd 100644
--- a/indra/newview/llviewermediafocus.cpp
+++ b/indra/newview/llviewermediafocus.cpp
@@ -406,11 +406,9 @@ void LLViewerMediaFocus::update()
 	LLViewerObject *viewer_object = getFocusedObject();
 	S32 face = mFocusedObjectFace;
 	LLVector3 normal = mFocusedObjectNormal;
-	bool focus = true;
 	
 	if(!media_impl || !viewer_object)
 	{
-		focus = false;
 		media_impl = getHoverMediaImpl();
 		viewer_object = getHoverObject();
 		face = mHoverObjectFace;
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index f399275c949..2a904d393ac 100755
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -626,7 +626,6 @@ void send_sound_trigger(const LLUUID& sound_id, F32 gain)
 bool join_group_response(const LLSD& notification, const LLSD& response)
 {
 	S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
-	BOOL delete_context_data = TRUE;
 	bool accept_invite = false;
 
 	LLUUID group_id = notification["payload"]["group_id"].asUUID();
@@ -655,7 +654,6 @@ bool join_group_response(const LLSD& notification, const LLSD& response)
 		}
 		else
 		{
-			delete_context_data = FALSE;
 			LLSD args;
 			args["NAME"] = name;
 			LLNotificationsUtil::add("JoinedTooManyGroupsMember", args, notification["payload"]);
@@ -668,7 +666,6 @@ bool join_group_response(const LLSD& notification, const LLSD& response)
 		// sure the user is sure they want to join.
 		if (fee > 0)
 		{
-			delete_context_data = FALSE;
 			LLSD args;
 			args["COST"] = llformat("%d", fee);
 			// Set the fee for next time to 0, so that we don't keep
@@ -2768,11 +2765,6 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
 			saved = llformat("(Saved %s) ", formatted_time(timestamp).c_str());
 		}
 		buffer = saved + message;
-		BOOL is_this_agent = FALSE;
-		if(from_id == gAgentID)
-		{
-			is_this_agent = TRUE;
-		}
 		gIMMgr->addMessage(
 			session_id,
 			from_id,
@@ -3386,7 +3378,6 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data)
 	LLColor4	color(1.0f, 1.0f, 1.0f, 1.0f);
 	LLUUID		from_id;
 	LLUUID		owner_id;
-	BOOL		is_owned_by_me = FALSE;
 	LLViewerObject*	chatter;
 
 	msg->getString("ChatData", "FromName", from_name);
@@ -3471,13 +3462,11 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data)
 				gAgent.heardChat(chat.mFromID);
 			}
 		}
-
-		is_owned_by_me = chatter->permYouOwner();
 	}
 
 	if (is_audible)
 	{
-		BOOL visible_in_chat_bubble = FALSE;
+		//BOOL visible_in_chat_bubble = FALSE;
 
 		color.setVec(1.f,1.f,1.f,1.f);
 		msg->getStringFast(_PREHASH_ChatData, _PREHASH_Message, mesg);
@@ -3560,7 +3549,7 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data)
 			
 			if (!is_muted && !is_busy)
 			{
-				visible_in_chat_bubble = gSavedSettings.getBOOL("UseChatBubbles");
+				//visible_in_chat_bubble = gSavedSettings.getBOOL("UseChatBubbles");
 				std::string formated_msg = "";
 				LLViewerChat::formatChatMsg(chat, formated_msg);
 				LLChat chat_bubble = chat;
diff --git a/indra/newview/llviewerobjectlist.cpp b/indra/newview/llviewerobjectlist.cpp
index e399b45cba0..d74324f8305 100644
--- a/indra/newview/llviewerobjectlist.cpp
+++ b/indra/newview/llviewerobjectlist.cpp
@@ -286,7 +286,6 @@ void LLViewerObjectList::processObjectUpdate(LLMessageSystem *mesgsys,
 	LLMemType mt(LLMemType::MTYPE_OBJECT_PROCESS_UPDATE);
 	LLFastTimer t(FTM_PROCESS_OBJECTS);	
 	
-	LLVector3d camera_global = gAgentCamera.getCameraPositionGlobal();
 	LLViewerObject *objectp;
 	S32			num_objects;
 	U32			local_id;
@@ -305,6 +304,7 @@ void LLViewerObjectList::processObjectUpdate(LLMessageSystem *mesgsys,
 	{
 		//llinfos << "TEST: !cached && !compressed && update_type != OUT_FULL" << llendl;
 		gTerseObjectUpdates += num_objects;
+		/*
 		S32 size;
 		if (mesgsys->getReceiveCompressedSize())
 		{
@@ -314,10 +314,12 @@ void LLViewerObjectList::processObjectUpdate(LLMessageSystem *mesgsys,
 		{
 			size = mesgsys->getReceiveSize();
 		}
-		//llinfos << "Received terse " << num_objects << " in " << size << " byte (" << size/num_objects << ")" << llendl;
+		llinfos << "Received terse " << num_objects << " in " << size << " byte (" << size/num_objects << ")" << llendl;
+		*/
 	}
 	else
 	{
+		/*
 		S32 size;
 		if (mesgsys->getReceiveCompressedSize())
 		{
@@ -328,7 +330,8 @@ void LLViewerObjectList::processObjectUpdate(LLMessageSystem *mesgsys,
 			size = mesgsys->getReceiveSize();
 		}
 
-		// llinfos << "Received " << num_objects << " in " << size << " byte (" << size/num_objects << ")" << llendl;
+		llinfos << "Received " << num_objects << " in " << size << " byte (" << size/num_objects << ")" << llendl;
+		*/
 		gFullObjectUpdates += num_objects;
 	}
 
diff --git a/indra/newview/llviewerparcelmedia.cpp b/indra/newview/llviewerparcelmedia.cpp
index 90fbc41daa8..386b2fd4001 100644
--- a/indra/newview/llviewerparcelmedia.cpp
+++ b/indra/newview/llviewerparcelmedia.cpp
@@ -85,7 +85,6 @@ void LLViewerParcelMedia::update(LLParcel* parcel)
 			}
 
 			// we're in a parcel
-			bool new_parcel = false;
 			S32 parcelid = parcel->getLocalID();						
 
 			LLUUID regionid = gAgent.getRegion()->getRegionID();
@@ -94,7 +93,6 @@ void LLViewerParcelMedia::update(LLParcel* parcel)
 				LL_DEBUGS("Media") << "New parcel, parcel id = " << parcelid << ", region id = " << regionid << LL_ENDL;
 				sMediaParcelLocalID = parcelid;
 				sMediaRegionID = regionid;
-				new_parcel = true;
 			}
 
 			std::string mediaUrl = std::string ( parcel->getMediaURL () );
diff --git a/indra/newview/llviewertexteditor.cpp b/indra/newview/llviewertexteditor.cpp
index 99102309a16..d309faf331f 100644
--- a/indra/newview/llviewertexteditor.cpp
+++ b/indra/newview/llviewertexteditor.cpp
@@ -1052,8 +1052,6 @@ void LLViewerTextEditor::findEmbeddedItemSegments(S32 start, S32 end)
 {
 	LLWString text = getWText();
 
-	LLColor4 text_color = ( mReadOnly ? mReadOnlyFgColor.get() : mFgColor.get()  );
-
 	// Start with i just after the first embedded item
 	for(S32 idx = start; idx < end; idx++ )
 	{
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 4f66b32c1f9..394e063c86f 100755
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -2778,7 +2778,6 @@ void LLViewerWindow::updateUI()
 
 	BOOL handled = FALSE;
 
-	BOOL handled_by_top_ctrl = FALSE;
 	LLUICtrl* top_ctrl = gFocusMgr.getTopCtrl();
 	LLMouseHandler* mouse_captor = gFocusMgr.getMouseCapture();
 	LLView* captor_view = dynamic_cast<LLView*>(mouse_captor);
@@ -2963,7 +2962,6 @@ void LLViewerWindow::updateUI()
 				S32 local_x, local_y;
 				top_ctrl->screenPointToLocal( x, y, &local_x, &local_y );
 				handled = top_ctrl->pointInView(local_x, local_y) && top_ctrl->handleHover(local_x, local_y, mask);
-				handled_by_top_ctrl = TRUE;
 			}
 
 			if ( !handled )
diff --git a/indra/newview/llvlcomposition.cpp b/indra/newview/llvlcomposition.cpp
index e90a2470d47..49474dcc7a7 100644
--- a/indra/newview/llvlcomposition.cpp
+++ b/indra/newview/llvlcomposition.cpp
@@ -376,9 +376,6 @@ BOOL LLVLComposition::generateTexture(const F32 x, const F32 y,
 	LLPointer<LLImageRaw> raw = new LLImageRaw(tex_width, tex_height, tex_comps);
 	U8 *rawp = raw->getData();
 
-	F32 tex_width_inv = 1.f/tex_width;
-	F32 tex_height_inv = 1.f/tex_height;
-
 	F32 st_x_stride, st_y_stride;
 	st_x_stride = ((F32)st_width / (F32)mTexScaleX)*((F32)mWidth / (F32)tex_width);
 	st_y_stride = ((F32)st_height / (F32)mTexScaleY)*((F32)mWidth / (F32)tex_height);
@@ -413,11 +410,6 @@ BOOL LLVLComposition::generateTexture(const F32 x, const F32 y,
 			tex1 = tex0 + 1;
 			tex1 = llclamp(tex1, 0, 3);
 
-			F32 xy_int_i, xy_int_j;
-
-			xy_int_i = i * tex_width_inv;
-			xy_int_j = j * tex_height_inv;
-
 			st_offset = (lltrunc(sti) + lltrunc(stj)*st_width) * st_comps;
 			for (U32 k = 0; k < tex_comps; k++)
 			{
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 50c26595631..3d4573903f6 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -1755,7 +1755,6 @@ U32 LLVOAvatar::processUpdateMessage(LLMessageSystem *mesgsys,
 {
 	LLMemType mt(LLMemType::MTYPE_AVATAR);
 	
-	LLVector3 old_vel = getVelocity();
 	const BOOL has_name = !getNVPair("FirstName");
 
 	// Do base class updates...
@@ -2645,8 +2644,6 @@ void LLVOAvatar::idleUpdateNameTagText(BOOL new_name)
 		mNameText->setTextAlignment(LLHUDNameTag::ALIGN_TEXT_LEFT);
 		mNameText->setFadeDistance(CHAT_NORMAL_RADIUS * 2.f, 5.f);
 			
-		char line[MAX_STRING];		/* Flawfinder: ignore */
-		line[0] = '\0';
 		std::deque<LLChat>::iterator chat_iter = mChats.begin();
 		mNameText->clearString();
 
@@ -3035,8 +3032,6 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent)
 	xyVel.mV[VZ] = 0.0f;
 	speed = xyVel.length();
 
-	BOOL throttle = TRUE;
-
 	if (!(mIsSitting && getParent()))
 	{
 		//--------------------------------------------------------------------
@@ -3047,7 +3042,6 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent)
 		if (mTimeLast == 0.0f)
 		{
 			mTimeLast = animation_time;
-			throttle = FALSE;
 
 			// put the pelvis at slaved position/mRotation
 			mRoot->setWorldPosition( getPositionAgent() ); // first frame
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index a29ef2f3ad4..e4fb1ebf889 100755
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -341,7 +341,6 @@ BOOL LLVOAvatarSelf::buildMenus()
 		}
 		else
 		{
-			BOOL attachment_found = FALSE;
 			for (attachment_map_t::iterator iter = mAttachmentPoints.begin(); 
 				 iter != mAttachmentPoints.end();
 				 ++iter)
@@ -369,7 +368,6 @@ BOOL LLVOAvatarSelf::buildMenus()
 
 					gAttachPieMenu->addChild(item);
 
-					attachment_found = TRUE;
 					break;
 
 				}
@@ -382,7 +380,6 @@ BOOL LLVOAvatarSelf::buildMenus()
 		}
 		else
 		{
-			BOOL attachment_found = FALSE;
 			for (attachment_map_t::iterator iter = mAttachmentPoints.begin(); 
 				 iter != mAttachmentPoints.end();
 				 ++iter)
@@ -409,7 +406,6 @@ BOOL LLVOAvatarSelf::buildMenus()
 
 					gDetachPieMenu->addChild(item);
 						
-					attachment_found = TRUE;
 					break;
 				}
 			}
diff --git a/indra/newview/llvoicevivox.cpp b/indra/newview/llvoicevivox.cpp
index 820d1d73e14..db0fc3dca73 100644
--- a/indra/newview/llvoicevivox.cpp
+++ b/indra/newview/llvoicevivox.cpp
@@ -2236,7 +2236,8 @@ void LLVivoxVoiceClient::giveUp()
 
 static void oldSDKTransform (LLVector3 &left, LLVector3 &up, LLVector3 &at, LLVector3d &pos, LLVector3 &vel)
 {
-	F32 nat[3], nup[3], nl[3], nvel[3]; // the new at, up, left vectors and the  new position and velocity
+	F32 nat[3], nup[3], nl[3]; // the new at, up, left vectors and the  new position and velocity
+//	F32 nvel[3]; 
 	F64 npos[3];
 	
 	// The original XML command was sent like this:
@@ -2286,9 +2287,9 @@ static void oldSDKTransform (LLVector3 &left, LLVector3 &up, LLVector3 &at, LLVe
 	npos[1] = pos.mdV[VZ];
 	npos[2] = pos.mdV[VY];
 
-	nvel[0] = vel.mV[VX];
-	nvel[1] = vel.mV[VZ];
-	nvel[2] = vel.mV[VY];
+//	nvel[0] = vel.mV[VX];
+//	nvel[1] = vel.mV[VZ];
+//	nvel[2] = vel.mV[VY];
 
 	for(int i=0;i<3;++i) {
 		at.mV[i] = nat[i];
@@ -3942,7 +3943,6 @@ void LLVivoxVoiceClient::messageEvent(
 			bool is_busy = gAgent.getBusy();
 			bool is_muted = LLMuteList::getInstance()->isMuted(session->mCallerID, session->mName, LLMute::flagTextChat);
 			bool is_linden = LLMuteList::getInstance()->isLinden(session->mName);
-			bool quiet_chat = false;
 			LLChat chat;
 
 			chat.mMuted = is_muted && !is_linden;
@@ -3955,7 +3955,6 @@ void LLVivoxVoiceClient::messageEvent(
 
 				if(is_busy && !is_linden)
 				{
-					quiet_chat = true;
 					// TODO: Question: Return busy mode response here?  Or maybe when session is started instead?
 				}
 				
diff --git a/indra/newview/llvosurfacepatch.cpp b/indra/newview/llvosurfacepatch.cpp
index cb905d02da0..de15f0ef43f 100644
--- a/indra/newview/llvosurfacepatch.cpp
+++ b/indra/newview/llvosurfacepatch.cpp
@@ -467,7 +467,7 @@ void LLVOSurfacePatch::updateNorthGeometry(LLFace *facep,
 	S32 vertex_count = 0;
 	S32 i, x, y;
 
-	S32 num_vertices, num_indices;
+	S32 num_vertices;
 
 	U32 render_stride = mLastStride;
 	S32 patch_size = mPatchp->getSurface()->getGridsPerPatchEdge();
@@ -485,7 +485,6 @@ void LLVOSurfacePatch::updateNorthGeometry(LLFace *facep,
 	if (north_stride == render_stride)
 	{
 		num_vertices = 2 * length + 1;
-		num_indices = length * 6 - 3;
 
 		facep->mCenterAgent = (mPatchp->getPointAgent(8, 15) + mPatchp->getPointAgent(8, 16))*0.5f;
 
@@ -536,7 +535,6 @@ void LLVOSurfacePatch::updateNorthGeometry(LLFace *facep,
 	{
 		// North stride is longer (has less vertices)
 		num_vertices = length + length/2 + 1;
-		num_indices = half_length*9 - 3;
 
 		facep->mCenterAgent = (mPatchp->getPointAgent(7, 15) + mPatchp->getPointAgent(8, 16))*0.5f;
 
@@ -595,7 +593,6 @@ void LLVOSurfacePatch::updateNorthGeometry(LLFace *facep,
 		length = patch_size / north_stride;
 		half_length = length / 2;
 		num_vertices = length + half_length + 1;
-		num_indices = 9*half_length - 3;
 
 		facep->mCenterAgent = (mPatchp->getPointAgent(15, 7) + mPatchp->getPointAgent(16, 8))*0.5f;
 
@@ -666,7 +663,7 @@ void LLVOSurfacePatch::updateEastGeometry(LLFace *facep,
 {
 	S32 i, x, y;
 
-	S32 num_vertices, num_indices;
+	S32 num_vertices;
 
 	U32 render_stride = mLastStride;
 	S32 patch_size = mPatchp->getSurface()->getGridsPerPatchEdge();
@@ -679,7 +676,6 @@ void LLVOSurfacePatch::updateEastGeometry(LLFace *facep,
 	if (east_stride == render_stride)
 	{
 		num_vertices = 2 * length + 1;
-		num_indices = length * 6 - 3;
 
 		facep->mCenterAgent = (mPatchp->getPointAgent(8, 15) + mPatchp->getPointAgent(8, 16))*0.5f;
 
@@ -728,7 +724,6 @@ void LLVOSurfacePatch::updateEastGeometry(LLFace *facep,
 	{
 		// East stride is longer (has less vertices)
 		num_vertices = length + half_length + 1;
-		num_indices = half_length*9 - 3;
 
 		facep->mCenterAgent = (mPatchp->getPointAgent(7, 15) + mPatchp->getPointAgent(8, 16))*0.5f;
 
@@ -783,7 +778,6 @@ void LLVOSurfacePatch::updateEastGeometry(LLFace *facep,
 		length = patch_size / east_stride;
 		half_length = length / 2;
 		num_vertices = length + length/2 + 1;
-		num_indices = 9*(length/2) - 3;
 
 		facep->mCenterAgent = (mPatchp->getPointAgent(15, 7) + mPatchp->getPointAgent(16, 8))*0.5f;
 
diff --git a/indra/newview/llvowlsky.cpp b/indra/newview/llvowlsky.cpp
index a33f42cf847..01024f4a129 100644
--- a/indra/newview/llvowlsky.cpp
+++ b/indra/newview/llvowlsky.cpp
@@ -724,8 +724,8 @@ void LLVOWLSky::updateStarColors()
 
 	const F32 var = 0.15f;
 	const F32 min = 0.5f; //0.75f;
-	const F32 sunclose_max = 0.6f;
-	const F32 sunclose_range = 1 - sunclose_max;
+	//const F32 sunclose_max = 0.6f;
+	//const F32 sunclose_range = 1 - sunclose_max;
 
 	//F32 below_horizon = - llmin(0.0f, gSky.mVOSkyp->getToSunLast().mV[2]);
 	//F32 brightness_factor = llmin(1.0f, below_horizon * 20);
@@ -739,14 +739,14 @@ void LLVOWLSky::updateStarColors()
 		U32 x;
 		for (x = 0; x < getStarsNumVerts(); ++x)
 		{
-			F32 sundir_factor = 1;
+			//F32 sundir_factor = 1;
 			LLVector3 tostar = *v_p;
 			tostar.normVec();
-			const F32 how_close_to_sun = tostar * gSky.mVOSkyp->getToSunLast();
-			if (how_close_to_sun > sunclose_max)
-			{
-				sundir_factor = (1 - how_close_to_sun) / sunclose_range;
-			}
+			//const F32 how_close_to_sun = tostar * gSky.mVOSkyp->getToSunLast();
+			//if (how_close_to_sun > sunclose_max)
+			//{
+			//	sundir_factor = (1 - how_close_to_sun) / sunclose_range;
+			//}
 			intensity = *(v_i);
 			F32 alpha = v_c->mV[VALPHA] + (ll_frand() - 0.5f) * var * intensity;
 			if (alpha < min * intensity)
diff --git a/indra/newview/llwaterparamset.cpp b/indra/newview/llwaterparamset.cpp
index 39d366b0238..9cc91d2246a 100644
--- a/indra/newview/llwaterparamset.cpp
+++ b/indra/newview/llwaterparamset.cpp
@@ -185,8 +185,6 @@ LLVector3 LLWaterParamSet::getVector3(const std::string& paramName, bool& error)
 LLVector2 LLWaterParamSet::getVector2(const std::string& paramName, bool& error) 
 {
 	// test to see if right type
-	int ttest;
-	ttest = mParamValues.size();
 	LLSD cur_val = mParamValues.get(paramName);
 	if (!cur_val.isArray() || cur_val.size() != 2) 
 	{
diff --git a/indra/newview/llworldmapview.cpp b/indra/newview/llworldmapview.cpp
index 428be8efb96..ad4d59d671a 100644
--- a/indra/newview/llworldmapview.cpp
+++ b/indra/newview/llworldmapview.cpp
@@ -965,8 +965,6 @@ void LLWorldMapView::drawTracking(const LLVector3d& pos_global, const LLColor4&
 	S32 text_x = x;
 	S32 text_y = (S32)(y - sTrackCircleImage->getHeight()/2 - font->getLineHeight());
 
-	BOOL is_in_window = true;
-
 	if(    x < 0 
 		|| y < 0 
 		|| x >= getRect().getWidth() 
@@ -979,7 +977,6 @@ void LLWorldMapView::drawTracking(const LLVector3d& pos_global, const LLColor4&
 			text_x = sTrackingArrowX;
 			text_y = sTrackingArrowY;
 		}
-		is_in_window = false;
 	}
 	else if (LLTracker::getTrackingStatus() == LLTracker::TRACKING_LOCATION &&
 		LLTracker::getTrackedLocationType() != LLTracker::LOCATION_NOTHING)
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index 61df5bc2ebf..126e8bc4361 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -5909,7 +5909,6 @@ void LLPipeline::setupHWLights(LLDrawPool* pool)
 			if (light->isLightSpotlight() // directional (spot-)light
 			    && (LLPipeline::sRenderDeferred || RenderSpotLightsInNondeferred)) // these are only rendered as GL spotlights if we're in deferred rendering mode *or* the setting forces them on
 			{
-				LLVector3 spotparams = light->getSpotLightParams();
 				LLQuaternion quat = light->getRenderRotation();
 				LLVector3 at_axis(0,0,-1); // this matches deferred rendering's object light direction
 				at_axis *= quat;
@@ -9097,9 +9096,6 @@ BOOL LLPipeline::getVisiblePointCloud(LLCamera& camera, LLVector3& min, LLVector
 		3,7	
 	};
 
-	LLVector3 center = (max+min)*0.5f;
-	LLVector3 size = (max-min)*0.5f;
-	
 	for (U32 i = 0; i < 12; i++)
 	{
 		for (U32 j = 0; j < 6; ++j)
@@ -9325,7 +9321,7 @@ void LLPipeline::generateSunShadow(LLCamera& camera)
 	mSunOrthoClipPlanes = LLVector4(clip, clip.mV[2]*clip.mV[2]/clip.mV[1]);
 
 	//currently used for amount to extrude frusta corners for constructing shadow frusta
-	LLVector3 n = RenderShadowNearDist;
+	//LLVector3 n = RenderShadowNearDist;
 	//F32 nearDist[] = { n.mV[0], n.mV[1], n.mV[2], n.mV[2] };
 
 	//put together a universal "near clip" plane for shadow frusta
diff --git a/indra/test/CMakeLists.txt b/indra/test/CMakeLists.txt
index 816f1d7175e..31e1d89c683 100644
--- a/indra/test/CMakeLists.txt
+++ b/indra/test/CMakeLists.txt
@@ -28,6 +28,10 @@ include_directories(
     ${GOOGLEMOCK_INCLUDE_DIRS}
     ${TUT_INCLUDE_DIR}
     )
+include_directories(SYSTEM
+    ${LLCOMMON_SYSTEM_INCLUDE_DIRS}
+    ${LLXML_SYSTEM_INCLUDE_DIRS}
+    )
 
 set(test_SOURCE_FILES
     io.cpp
diff --git a/indra/test/io.cpp b/indra/test/io.cpp
index ce747f667d2..47a67deed00 100644
--- a/indra/test/io.cpp
+++ b/indra/test/io.cpp
@@ -1140,7 +1140,7 @@ namespace tut
 		bool connected = client->blockingConnect(server_host);
 		ensure("Connected to server", connected);
 		lldebugs << "connected" << llendl;
-		F32 elapsed = pump_loop(mPump,0.1f);
+		pump_loop(mPump,0.1f);
 		count = mPump->runningChains();
 		ensure_equals("server chain onboard", count, 2);
 		lldebugs << "** Client is connected." << llendl;
@@ -1156,20 +1156,20 @@ namespace tut
 		chain.clear();
 
 		// pump for a bit and make sure all 3 chains are running
-		elapsed = pump_loop(mPump,0.1f);
+		pump_loop(mPump,0.1f);
 		count = mPump->runningChains();
 		ensure_equals("client chain onboard", count, 3);
 		lldebugs << "** request should have been sent." << llendl;
 
 		// pump for long enough the the client socket closes, and the
 		// server socket should not be closed yet.
-		elapsed = pump_loop(mPump,0.2f);
+		pump_loop(mPump,0.2f);
 		count = mPump->runningChains();
 		ensure_equals("client chain timed out ", count, 2);
 		lldebugs << "** client chain should be closed." << llendl;
 
 		// At this point, the socket should be closed by the timeout
-		elapsed = pump_loop(mPump,1.0f);
+		pump_loop(mPump,1.0f);
 		count = mPump->runningChains();
 		ensure_equals("accepted socked close", count, 1);
 		lldebugs << "** Sleeper should have timed out.." << llendl;
diff --git a/indra/test/llstreamtools_tut.cpp b/indra/test/llstreamtools_tut.cpp
index a93f2e8f65e..0f6436f0f4a 100644
--- a/indra/test/llstreamtools_tut.cpp
+++ b/indra/test/llstreamtools_tut.cpp
@@ -385,16 +385,15 @@ namespace tut
 		std::string expected_result;
 		std::string actual_result;
 		std::istringstream is;
-		bool ret;
 
 		is.clear();
 		is.str(str = "  First Second \t \r  \n Third  Fourth-ShouldThisBePartOfFourth  Fifth\n");
 		actual_result = "";
-		ret = get_word(actual_result, is); // First
+		get_word(actual_result, is); // First
 		actual_result = "";
-		ret = get_word(actual_result, is); // Second
+		get_word(actual_result, is); // Second
 		actual_result = "";
-		ret = get_word(actual_result, is); // Third
+		get_word(actual_result, is); // Third
 
 		// the current implementation of get_word seems inconsistent with
 		// skip_to_next_word. skip_to_next_word treats any character other
@@ -403,22 +402,22 @@ namespace tut
 		// carriage  return ('\r'), horizontal tab ('\t'), and vertical tab ('\v')
 		// as delimiters 
 		actual_result = "";
-		ret = get_word(actual_result, is); // will copy Fourth-ShouldThisBePartOfFourth
+		get_word(actual_result, is); // will copy Fourth-ShouldThisBePartOfFourth
 
 		actual_result = "";
-		ret = get_word(actual_result, is); // will copy Fifth
+		get_word(actual_result, is); // will copy Fifth
 
 		is.clear();
 		is.str(str = "  First Second \t \r  \n Third  Fourth_ShouldThisBePartOfFourth Fifth\n");
-		ret = skip_to_next_word(is);  // should now point to First
-		ret = skip_to_next_word(is);  // should now point to Second
-		ret = skip_to_next_word(is);  // should now point to Third
-		ret = skip_to_next_word(is);  // should now point to Fourth
-		ret = skip_to_next_word(is);  // should now point to ShouldThisBePartOfFourth
+		skip_to_next_word(is);  // should now point to First
+		skip_to_next_word(is);  // should now point to Second
+		skip_to_next_word(is);  // should now point to Third
+		skip_to_next_word(is);  // should now point to Fourth
+		skip_to_next_word(is);  // should now point to ShouldThisBePartOfFourth
 		expected_result = "";
 		// will copy ShouldThisBePartOfFourth, the fifth word, 
 		// while using get_word above five times result in getting "Fifth"
-		ret = get_word(expected_result, is); 
+		get_word(expected_result, is); 
 		ensure_equals("get_word: skip_to_next_word compatibility", actual_result, expected_result);
 	}
 
@@ -480,39 +479,38 @@ namespace tut
 		std::string expected_result;
 		std::string actual_result;
 		std::istringstream is;
-		bool ret;
 
 		is.clear();
 		is.str(str = "First Second \t \r\n Third  Fourth-ShouldThisBePartOfFourth  IsThisFifth\n");
 		actual_result = "";
-		ret = get_line(actual_result, is);
+		get_line(actual_result, is);
 		expected_result = "First Second \t \r\n";
 		ensure_equals("get_line: 1", actual_result, expected_result);
 
 		actual_result = "";
-		ret = get_line(actual_result, is);
+		get_line(actual_result, is);
 		expected_result = " Third  Fourth-ShouldThisBePartOfFourth  IsThisFifth\n";
 		ensure_equals("get_line: 2", actual_result, expected_result);
 
 		is.clear();
 		is.str(str = "\nFirst Line.\n\nSecond Line.\n");
 		actual_result = "";
-		ret = get_line(actual_result, is);
+		get_line(actual_result, is);
 		expected_result = "\n";
 		ensure_equals("get_line: First char as newline", actual_result, expected_result);
 
 		actual_result = "";
-		ret = get_line(actual_result, is);
+		get_line(actual_result, is);
 		expected_result = "First Line.\n";
 		ensure_equals("get_line: 3", actual_result, expected_result);
 
 		actual_result = "";
-		ret = get_line(actual_result, is);
+		get_line(actual_result, is);
 		expected_result = "\n";
 		ensure_equals("get_line: 4", actual_result, expected_result);
 
 		actual_result = "";
-		ret = get_line(actual_result, is);
+		get_line(actual_result, is);
 		expected_result = "Second Line.\n";
 		ensure_equals("get_line: 5", actual_result, expected_result);
 	}	
@@ -544,13 +542,12 @@ namespace tut
 		std::string expected_result;
 		std::string actual_result;
 		std::istringstream is;
-		bool ret;
 
 		// need to be check if this test case is wrong or the implementation is wrong.
 		is.clear();
 		is.str(str = "Should not skip lone \r.\r\n");
 		actual_result = "";
-		ret = get_line(actual_result, is);
+		get_line(actual_result, is);
 		expected_result = "Should not skip lone \r.\r\n";
 		ensure_equals("get_line: carriage return skipped even though not followed by newline", actual_result, expected_result);
 	}
@@ -563,12 +560,11 @@ namespace tut
 		std::string expected_result;
 		std::string actual_result;
 		std::istringstream is;
-		bool ret;
 
 		is.clear();
 		is.str(str = "\n");
 		actual_result = "";
-		ret = get_line(actual_result, is);
+		get_line(actual_result, is);
 		expected_result = "\n";
 		ensure_equals("get_line: Just newline", actual_result, expected_result);
 	}
@@ -582,36 +578,35 @@ namespace tut
 		std::string expected_result;
 		std::string actual_result;
 		std::istringstream is;
-		bool ret;
 
 		is.clear();
 		is.str(str = "First Line.\nSecond Line.\n");
 		actual_result = "";
-		ret = get_line(actual_result, is, 255);
+		get_line(actual_result, is, 255);
 		expected_result = "First Line.\n";
 		ensure_equals("get_line: Basic Operation", actual_result, expected_result);
 
 		actual_result = "";
-		ret = get_line(actual_result, is, sizeof("Second")-1);
+		get_line(actual_result, is, sizeof("Second")-1);
 		expected_result = "Second\n";
 		ensure_equals("get_line: Insufficient length 1", actual_result, expected_result);
 
 		actual_result = "";
-		ret = get_line(actual_result, is, 255);
+		get_line(actual_result, is, 255);
 		expected_result = " Line.\n";
 		ensure_equals("get_line: Remainder after earlier insufficient length", actual_result, expected_result);
 
 		is.clear();
 		is.str(str = "One Line only with no newline with limited length");
 		actual_result = "";
-		ret = get_line(actual_result, is, sizeof("One Line only with no newline with limited length")-1);
+		get_line(actual_result, is, sizeof("One Line only with no newline with limited length")-1);
 		expected_result = "One Line only with no newline with limited length\n";
 		ensure_equals("get_line: No newline with limited length", actual_result, expected_result);
 
 		is.clear();
 		is.str(str = "One Line only with no newline");
 		actual_result = "";
-		ret = get_line(actual_result, is, 255);
+		get_line(actual_result, is, 255);
 		expected_result = "One Line only with no newline";
 		ensure_equals("get_line: No newline", actual_result, expected_result);
 	}
diff --git a/indra/test/lltemplatemessagebuilder_tut.cpp b/indra/test/lltemplatemessagebuilder_tut.cpp
index 6e1c82bb246..6c0b70edd2e 100644
--- a/indra/test/lltemplatemessagebuilder_tut.cpp
+++ b/indra/test/lltemplatemessagebuilder_tut.cpp
@@ -937,7 +937,7 @@ namespace tut
 		// build message with single block
 		LLMessageTemplate messageTemplate = defaultTemplate();
 		messageTemplate.addBlock(defaultBlock(MVT_U32, 4, MBT_SINGLE));
-		U32 outValue, outValue2, inValue = 0xbbbbbbbb;
+		U32 outValue, inValue = 0xbbbbbbbb;
 		LLTemplateMessageBuilder* builder = defaultBuilder(messageTemplate);
 		builder->addU32(_PREHASH_Test0, inValue);
 		const U32 bufferSize = 1024;
@@ -962,7 +962,6 @@ namespace tut
 		memset(buffer, 0xcc, bufferSize);
 		reader->getString(_PREHASH_Test1, _PREHASH_Test0, bufferSize, 
 						  outBuffer);
-		outValue2 = reader->getNumberOfBlocks(_PREHASH_Test1);
 		ensure_equals("Ensure present value ", outValue, inValue);
 		ensure_equals("Ensure unchanged buffer ", strlen(outBuffer), 0);
 		delete reader;
diff --git a/indra/test_apps/llplugintest/CMakeLists.txt b/indra/test_apps/llplugintest/CMakeLists.txt
index 08f5a8a888e..8179be66f51 100644
--- a/indra/test_apps/llplugintest/CMakeLists.txt
+++ b/indra/test_apps/llplugintest/CMakeLists.txt
@@ -25,6 +25,9 @@ include_directories(
     ${LLRENDER_INCLUDE_DIRS}
     ${LLWINDOW_INCLUDE_DIRS}
 )
+include_directories(SYSTEM
+    ${LLCOMMON_SYSTEM_INCLUDE_DIRS}
+    )
 
 if (DARWIN)
     include(CMakeFindFrameworks)
diff --git a/indra/viewer_components/login/CMakeLists.txt b/indra/viewer_components/login/CMakeLists.txt
index 7720619df30..658f167c2e2 100644
--- a/indra/viewer_components/login/CMakeLists.txt
+++ b/indra/viewer_components/login/CMakeLists.txt
@@ -15,6 +15,10 @@ include_directories(
     ${LLMATH_INCLUDE_DIRS}
     ${LLXML_INCLUDE_DIRS}
     )
+include_directories(SYSTEM
+    ${LLCOMMON_SYSTEM_INCLUDE_DIRS}
+    ${LLXML_SYSTEM_INCLUDE_DIRS}
+    )
 
 set(login_SOURCE_FILES
     lllogin.cpp
diff --git a/indra/viewer_components/updater/CMakeLists.txt b/indra/viewer_components/updater/CMakeLists.txt
index ef82290b471..de7e3363414 100644
--- a/indra/viewer_components/updater/CMakeLists.txt
+++ b/indra/viewer_components/updater/CMakeLists.txt
@@ -20,6 +20,9 @@ include_directories(
     ${LLVFS_INCLUDE_DIRS}
     ${CURL_INCLUDE_DIRS}
     )
+include_directories(SYSTEM
+    ${LLCOMMON_SYSTEM_INCLUDE_DIRS}
+    )
 
 set(updater_service_SOURCE_FILES
     llupdaterservice.cpp
diff --git a/indra/win_crash_logger/CMakeLists.txt b/indra/win_crash_logger/CMakeLists.txt
index 5329c895542..aa35c3b05ea 100644
--- a/indra/win_crash_logger/CMakeLists.txt
+++ b/indra/win_crash_logger/CMakeLists.txt
@@ -21,6 +21,10 @@ include_directories(
     ${LLXML_INCLUDE_DIRS}
     ${LLVFS_INCLUDE_DIRS}
     )
+include_directories(SYSTEM
+    ${LLCOMMON_SYSTEM_INCLUDE_DIRS}
+    ${LLXML_SYSTEM_INCLUDE_DIRS}
+    )
 
 set(win_crash_logger_SOURCE_FILES
     win_crash_logger.cpp
-- 
GitLab


From 30aea02e8edf8234cdbf33ae065c61fc687b3a8b Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Thu, 11 Oct 2012 01:00:31 +0000
Subject: [PATCH 133/436] Fix for release build in gcc 4.6

---
 indra/llrender/llimagegl.cpp | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/indra/llrender/llimagegl.cpp b/indra/llrender/llimagegl.cpp
index 16fe77a755b..249b8da880e 100755
--- a/indra/llrender/llimagegl.cpp
+++ b/indra/llrender/llimagegl.cpp
@@ -744,7 +744,9 @@ void LLImageGL::setImage(const U8* data_in, BOOL data_hasmips)
 				S32 w = width, h = height;
 				const U8* prev_mip_data = 0;
 				const U8* cur_mip_data = 0;
+#ifdef SHOW_ASSERT
 				S32 cur_mip_size = 0;
+#endif
 				
 				mMipLevels = nummips;
 
@@ -753,18 +755,24 @@ void LLImageGL::setImage(const U8* data_in, BOOL data_hasmips)
 					if (m==0)
 					{
 						cur_mip_data = data_in;
+#ifdef SHOW_ASSERT
 						cur_mip_size = width * height * mComponents; 
+#endif
 					}
 					else
 					{
 						S32 bytes = w * h * mComponents;
+#ifdef SHOW_ASSERT
 						llassert(prev_mip_data);
 						llassert(cur_mip_size == bytes*4);
+#endif
 						U8* new_data = new U8[bytes];
 						llassert_always(new_data);
 						LLImageBase::generateMip(prev_mip_data, new_data, w, h, mComponents);
 						cur_mip_data = new_data;
+#ifdef SHOW_ASSERT
 						cur_mip_size = bytes; 
+#endif
 					}
 					llassert(w > 0 && h > 0 && cur_mip_data);
 					{
-- 
GitLab


From a039b7c489885784fe779d05670825b316fa13d4 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Thu, 11 Oct 2012 13:29:36 -0400
Subject: [PATCH 134/436] Fixes for build issues, missing
 LLCOMMON_SYSTEM_INCLUDE_DIRS in some libraries

---
 indra/llimage/CMakeLists.txt | 1 +
 indra/llmath/CMakeLists.txt  | 1 +
 indra/llvfs/CMakeLists.txt   | 1 +
 3 files changed, 3 insertions(+)
 mode change 100644 => 100755 indra/llimage/CMakeLists.txt
 mode change 100644 => 100755 indra/llmath/CMakeLists.txt
 mode change 100644 => 100755 indra/llvfs/CMakeLists.txt

diff --git a/indra/llimage/CMakeLists.txt b/indra/llimage/CMakeLists.txt
old mode 100644
new mode 100755
index 706464a7707..e837b0cac2c
--- a/indra/llimage/CMakeLists.txt
+++ b/indra/llimage/CMakeLists.txt
@@ -15,6 +15,7 @@ include(Tut)
 
 include_directories(
     ${LLCOMMON_INCLUDE_DIRS}
+    ${LLCOMMON_SYSTEM_INCLUDE_DIRS}
     ${LLMATH_INCLUDE_DIRS}
     ${LLVFS_INCLUDE_DIRS}
     ${PNG_INCLUDE_DIRS}
diff --git a/indra/llmath/CMakeLists.txt b/indra/llmath/CMakeLists.txt
old mode 100644
new mode 100755
index a06dea2e9ab..0614fd92ef6
--- a/indra/llmath/CMakeLists.txt
+++ b/indra/llmath/CMakeLists.txt
@@ -7,6 +7,7 @@ include(LLCommon)
 
 include_directories(
     ${LLCOMMON_INCLUDE_DIRS}
+    ${LLCOMMON_SYSTEM_INCLUDE_DIRS}
     )
 
 set(llmath_SOURCE_FILES
diff --git a/indra/llvfs/CMakeLists.txt b/indra/llvfs/CMakeLists.txt
old mode 100644
new mode 100755
index 73d531cfd3c..ba4e9a8d886
--- a/indra/llvfs/CMakeLists.txt
+++ b/indra/llvfs/CMakeLists.txt
@@ -8,6 +8,7 @@ include(UnixInstall)
 
 include_directories(
     ${LLCOMMON_INCLUDE_DIRS}
+    ${LLCOMMON_SYSTEM_INCLUDE_DIRS}
     )
 
 set(llvfs_SOURCE_FILES
-- 
GitLab


From e60491fc6994ccd77a7bc101c49c5b7e1eb1a379 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Thu, 11 Oct 2012 20:10:11 +0000
Subject: [PATCH 135/436] Adding multi-arch hints to CMake, allowing it to
 correctly find libraries on multi-arch debian-based systems.

---
 indra/cmake/Variables.cmake | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/indra/cmake/Variables.cmake b/indra/cmake/Variables.cmake
index 28315e66e07..405d80aeb09 100644
--- a/indra/cmake/Variables.cmake
+++ b/indra/cmake/Variables.cmake
@@ -73,19 +73,36 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
   # If someone has specified a word size, use that to determine the
   # architecture.  Otherwise, let the architecture specify the word size.
   if (WORD_SIZE EQUAL 32)
+    #message(STATUS "WORD_SIZE is 32")
     set(ARCH i686)
   elseif (WORD_SIZE EQUAL 64)
+    #message(STATUS "WORD_SIZE is 64")
     set(ARCH x86_64)
   else (WORD_SIZE EQUAL 32)
+    #message(STATUS "WORD_SIZE is UNDEFINED")
     execute_process(COMMAND uname -m COMMAND sed s/i.86/i686/
                     OUTPUT_VARIABLE ARCH OUTPUT_STRIP_TRAILING_WHITESPACE)
     if (ARCH STREQUAL x86_64)
+      #message(STATUS "ARCH is detected as 64; ARCH is ${ARCH}")
       set(WORD_SIZE 64)
     else (ARCH STREQUAL x86_64)
+      #message(STATUS "ARCH is detected as 32; ARCH is ${ARCH}")
       set(WORD_SIZE 32)
     endif (ARCH STREQUAL x86_64)
   endif (WORD_SIZE EQUAL 32)
 
+  if (WORD_SIZE EQUAL 32)
+    set(DEB_ARCHITECTURE i386)
+  else (WORD_SIZE EQUAL 32)
+    set(DEB_ARCHITECTURE amd64)
+  endif (WORD_SIZE EQUAL 32)
+
+  execute_process(COMMAND dpkg-architecture -a${DEB_ARCHITECTURE} -qDEB_HOST_MULTIARCH RESULT_VARIABLE DPKG_RESULT OUTPUT_VARIABLE DPKG_ARCH OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
+  #message (STATUS "DPKG_RESULT ${DPKG_RESULT}, DPKG_ARCH ${DPKG_ARCH}")
+  if (DPKG_RESULT EQUAL 0)
+    set(CMAKE_LIBRARY_ARCHITECTURE ${DPKG_ARCH})
+  endif (DPKG_RESULT EQUAL 0)
+
   set(LL_ARCH ${ARCH}_linux)
   set(LL_ARCH_DIR ${ARCH}-linux)
 endif (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
-- 
GitLab


From e941457a0855d93d7e1f8e31c4e35ca319d64643 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Fri, 12 Oct 2012 15:05:56 -0400
Subject: [PATCH 136/436] Fix for 'no text in release builds' problem

---
 indra/llrender/llfontfreetype.cpp | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)
 mode change 100644 => 100755 indra/llrender/llfontfreetype.cpp

diff --git a/indra/llrender/llfontfreetype.cpp b/indra/llrender/llfontfreetype.cpp
old mode 100644
new mode 100755
index af4ffc6aeaa..7452bdf02bf
--- a/indra/llrender/llfontfreetype.cpp
+++ b/indra/llrender/llfontfreetype.cpp
@@ -485,9 +485,11 @@ void LLFontFreetype::renderGlyph(U32 glyph_index) const
 	if (mFTFace == NULL)
 		return;
 
-	llassert(! FT_Load_Glyph(mFTFace, glyph_index, FT_LOAD_FORCE_AUTOHINT) );
+	int error = FT_Load_Glyph(mFTFace, glyph_index, FT_LOAD_FORCE_AUTOHINT);
+	llassert(!error);
 
-	llassert(! FT_Render_Glyph(mFTFace->glyph, gFontRenderMode) );
+	error = FT_Render_Glyph(mFTFace->glyph, gFontRenderMode);
+	llassert(!error);
 
 	mRenderGlyphCount++;
 }
-- 
GitLab


From f974374789db67a242d09cdd2a35076a7c12cda8 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Sat, 13 Oct 2012 01:39:41 +0000
Subject: [PATCH 137/436] Pulling in viewer-gcc4.6 freetype fixes

---
 autobuild.xml                     | 4 ++--
 indra/llrender/llfontfreetype.cpp | 6 ++----
 2 files changed, 4 insertions(+), 6 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index 096e40a429e..cb86a218807 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -606,9 +606,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>9f8a9dc39fd7c3da0fb3533782d1fddf</string>
+              <string>ca95bbdabd2bed612af79a3704fdbe79</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-freetype/rev/226814/arch/Linux/installer/freetype-2.3.9-linux-20110418.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-freetype/rev/265843/arch/Linux/installer/freetype-2.3.9-linux-20121013.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
diff --git a/indra/llrender/llfontfreetype.cpp b/indra/llrender/llfontfreetype.cpp
index 7452bdf02bf..058bef43a56 100755
--- a/indra/llrender/llfontfreetype.cpp
+++ b/indra/llrender/llfontfreetype.cpp
@@ -485,11 +485,9 @@ void LLFontFreetype::renderGlyph(U32 glyph_index) const
 	if (mFTFace == NULL)
 		return;
 
-	int error = FT_Load_Glyph(mFTFace, glyph_index, FT_LOAD_FORCE_AUTOHINT);
-	llassert(!error);
+	llassert_always(! FT_Load_Glyph(mFTFace, glyph_index, FT_LOAD_FORCE_AUTOHINT) );
 
-	error = FT_Render_Glyph(mFTFace->glyph, gFontRenderMode);
-	llassert(!error);
+	llassert_always(! FT_Render_Glyph(mFTFace->glyph, gFontRenderMode) );
 
 	mRenderGlyphCount++;
 }
-- 
GitLab


From 08f58ac3fdc89209b7bfbdf009803e75815505f4 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Sat, 13 Oct 2012 02:56:36 +0000
Subject: [PATCH 138/436] Adding libdl to OSMesa16 link line

---
 indra/cmake/OpenGL.cmake | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/cmake/OpenGL.cmake b/indra/cmake/OpenGL.cmake
index 181b10b91c9..742d8e25a04 100644
--- a/indra/cmake/OpenGL.cmake
+++ b/indra/cmake/OpenGL.cmake
@@ -6,7 +6,7 @@ include(Prebuilt)
 if (BUILD_HEADLESS)
   use_prebuilt_binary(mesa)
   SET(OPENGL_glu_LIBRARY GLU)
-  SET(OPENGL_HEADLESS_LIBRARIES OSMesa16 GLU)
+  SET(OPENGL_HEADLESS_LIBRARIES OSMesa16 dl GLU)
 endif (BUILD_HEADLESS)
 
 include(FindOpenGL)
-- 
GitLab


From cc5f8686feee4efea124d582b99990dd987e1e98 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Mon, 15 Oct 2012 17:36:51 +0000
Subject: [PATCH 139/436] Speeding up cmake configuration, especially on linux.
  Re-arranged llrender/llwindow cmake source a bit

---
 indra/cmake/00-Common.cmake   |   4 +
 indra/cmake/Havok.cmake       | 134 ++++++++++++++++++++++++----------
 indra/cmake/Linking.cmake     |   5 ++
 indra/cmake/Prebuilt.cmake    |   5 ++
 indra/cmake/Variables.cmake   |   4 +
 indra/llrender/CMakeLists.txt |  10 +--
 indra/llwindow/CMakeLists.txt |  20 ++---
 7 files changed, 126 insertions(+), 56 deletions(-)

diff --git a/indra/cmake/00-Common.cmake b/indra/cmake/00-Common.cmake
index 87fa4cf55ae..da0920d0486 100644
--- a/indra/cmake/00-Common.cmake
+++ b/indra/cmake/00-Common.cmake
@@ -2,6 +2,9 @@
 #
 # Compilation options shared by all Second Life components.
 
+if(NOT DEFINED ${CMAKE_CURRENT_LIST_FILE}_INCLUDED)
+set(${CMAKE_CURRENT_LIST_FILE}_INCLUDED "YES")
+
 include(Variables)
 
 # Portable compilation flags.
@@ -234,3 +237,4 @@ else (STANDALONE)
       )
 endif (STANDALONE)
 
+endif(NOT DEFINED ${CMAKE_CURRENT_LIST_FILE}_INCLUDED)
diff --git a/indra/cmake/Havok.cmake b/indra/cmake/Havok.cmake
index 5c0768abfa9..44f81ce332a 100644
--- a/indra/cmake/Havok.cmake
+++ b/indra/cmake/Havok.cmake
@@ -1,6 +1,10 @@
 # -*- cmake -*-
 
+if(NOT DEFINED ${CMAKE_CURRENT_LIST_FILE}_INCLUDED)
+set(${CMAKE_CURRENT_LIST_FILE}_INCLUDED "YES")
+
 use_prebuilt_binary(havok-source)
+
 set(Havok_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include/havok/Source)
 list(APPEND Havok_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include/havok/Demo)
 
@@ -8,14 +12,14 @@ set(HAVOK_DEBUG_LIBRARY_PATH ${LIBS_PREBUILT_DIR}/lib/debug/havok-fulldebug)
 set(HAVOK_RELEASE_LIBRARY_PATH ${LIBS_PREBUILT_DIR}/lib/release/havok)
 
 if (LL_DEBUG_HAVOK)
-   if (WIN32)
-      # Always link relwithdebinfo to havok-hybrid on windows.
-      set(HAVOK_RELWITHDEBINFO_LIBRARY_PATH ${LIBS_PREBUILT_DIR}/lib/debug/havok-hybrid)
-   else (WIN32)
-      set(HAVOK_RELWITHDEBINFO_LIBRARY_PATH ${LIBS_PREBUILT_DIR}/lib/debug/havok-fulldebug)
-   endif (WIN32)
+  if (WIN32)
+    # Always link relwithdebinfo to havok-hybrid on windows.
+    set(HAVOK_RELWITHDEBINFO_LIBRARY_PATH ${LIBS_PREBUILT_DIR}/lib/debug/havok-hybrid)
+  else (WIN32)
+    set(HAVOK_RELWITHDEBINFO_LIBRARY_PATH ${LIBS_PREBUILT_DIR}/lib/debug/havok-fulldebug)
+  endif (WIN32)
 else (LL_DEBUG_HAVOK)
-   set(HAVOK_RELWITHDEBINFO_LIBRARY_PATH ${LIBS_PREBUILT_DIR}/lib/release/havok)
+  set(HAVOK_RELWITHDEBINFO_LIBRARY_PATH ${LIBS_PREBUILT_DIR}/lib/release/havok)
 endif (LL_DEBUG_HAVOK)
 
 set(HAVOK_LIBS
@@ -45,39 +49,89 @@ unset(HK_DEBUG_LIBRARIES)
 unset(HK_RELEASE_LIBRARIES)
 unset(HK_RELWITHDEBINFO_LIBRARIES)
 
+# *TODO: Figure out why we need to extract like this...
 foreach(HAVOK_LIB ${HAVOK_LIBS})
-        find_library(HAVOK_DEBUG_LIB_${HAVOK_LIB}   ${HAVOK_LIB} PATHS ${HAVOK_DEBUG_LIBRARY_PATH})
-        find_library(HAVOK_RELEASE_LIB_${HAVOK_LIB} ${HAVOK_LIB} PATHS ${HAVOK_RELEASE_LIBRARY_PATH})
-        find_library(HAVOK_RELWITHDEBINFO_LIB_${HAVOK_LIB} ${HAVOK_LIB} PATHS ${HAVOK_RELWITHDEBINFO_LIBRARY_PATH})
-        
-        if(LINUX)
-            set(cmd "mkdir")
-            set(debug_dir "${HAVOK_DEBUG_LIBRARY_PATH}/${HAVOK_LIB}")
-            set(release_dir "${HAVOK_RELEASE_LIBRARY_PATH}/${HAVOK_LIB}")
-            set(relwithdebinfo_dir "${HAVOK_RELWITHDEBINFO_LIBRARY_PATH}/${HAVOK_LIB}")
-
-            exec_program( ${cmd} ${HAVOK_DEBUG_LIBRARY_PATH} ARGS ${debug_dir} OUTPUT_VARIABLE rv)
-            exec_program( ${cmd} ${HAVOK_RELEASE_LIBRARY_PATH} ARGS ${release_dir} OUTPUT_VARIABLE rv)
-            exec_program( ${cmd} ${HAVOK_RELWITHDEBINFO_LIBRARY_PATH} ARGS ${relwithdebinfo_dir} OUTPUT_VARIABLE rv)
-
-            set(cmd "ar")
-            set(arg " -xv")
-            set(arg "${arg} ../lib${HAVOK_LIB}.a")
-            exec_program( ${cmd} ${debug_dir} ARGS ${arg} OUTPUT_VARIABLE rv)
-            exec_program( ${cmd} ${release_dir} ARGS ${arg} OUTPUT_VARIABLE rv)
-            exec_program( ${cmd} ${relwithdebinfo_dir} ARGS ${arg} OUTPUT_VARIABLE rv)
-
-            file(GLOB extracted_debug "${debug_dir}/*.o")
-            file(GLOB extracted_release "${release_dir}/*.o")
-            file(GLOB extracted_relwithdebinfo "${relwithdebinfo_dir}/*.o")
-            list(APPEND HK_DEBUG_LIBRARIES ${extracted_debug})
-            list(APPEND HK_RELEASE_LIBRARIES ${extracted_release})
-            list(APPEND HK_RELWITHDEBINFO_LIBRARIES ${extracted_relwithdebinfo})
-        else(LINUX)
-        # Win32
-            list(APPEND HK_DEBUG_LIBRARIES   ${HAVOK_DEBUG_LIB_${HAVOK_LIB}})
-            list(APPEND HK_RELEASE_LIBRARIES ${HAVOK_RELEASE_LIB_${HAVOK_LIB}})
-            list(APPEND HK_RELWITHDEBINFO_LIBRARIES ${HAVOK_RELWITHDEBINFO_LIB_${HAVOK_LIB}})
-        endif (LINUX)
+  find_library(HAVOK_DEBUG_LIB_${HAVOK_LIB}   ${HAVOK_LIB} PATHS ${HAVOK_DEBUG_LIBRARY_PATH})
+  find_library(HAVOK_RELEASE_LIB_${HAVOK_LIB} ${HAVOK_LIB} PATHS ${HAVOK_RELEASE_LIBRARY_PATH})
+  find_library(HAVOK_RELWITHDEBINFO_LIB_${HAVOK_LIB} ${HAVOK_LIB} PATHS ${HAVOK_RELWITHDEBINFO_LIBRARY_PATH})
+  
+  if(LINUX)
+    set(debug_dir "${HAVOK_DEBUG_LIBRARY_PATH}/${HAVOK_LIB}")
+    set(release_dir "${HAVOK_RELEASE_LIBRARY_PATH}/${HAVOK_LIB}")
+    set(relwithdebinfo_dir "${HAVOK_RELWITHDEBINFO_LIBRARY_PATH}/${HAVOK_LIB}")
+
+    # Try to avoid extracting havok library each time we run cmake.
+    if("${havok_${HAVOK_LIB}_extracted}" STREQUAL "" AND EXISTS "${CMAKE_BINARY_DIR}/temp/havok_${HAVOK_LIB}_extracted")
+      file(READ ${CMAKE_BINARY_DIR}/temp/havok_${HAVOK_LIB}_extracted "havok_${HAVOK_LIB}_extracted")
+      if(DEBUG_PREBUILT)
+        message(STATUS "havok_${HAVOK_LIB}_extracted: \"${havok_${HAVOK_LIB}_extracted}\"")
+      endif(DEBUG_PREBUILT)
+    endif("${havok_${HAVOK_LIB}_extracted}" STREQUAL "" AND EXISTS "${CMAKE_BINARY_DIR}/temp/havok_${HAVOK_LIB}_extracted")
+
+    if(${CMAKE_BINARY_DIR}/temp/havok-source_installed IS_NEWER_THAN ${CMAKE_BINARY_DIR}/temp/havok_${HAVOK_LIB}_extracted OR NOT ${havok_${HAVOK_LIB}_extracted} EQUAL 0)
+      if(DEBUG_PREBUILT)
+        MESSAGE(STATUS "Extracting ${HAVOK_LIB}...")
+      endif(DEBUG_PREBUILT)
+      set(cmd "mkdir")
+
+      if(DEBUG_PREBUILT)
+        MESSAGE(STATUS "${cmd} ${debug_dir}")
+      endif(DEBUG_PREBUILT)
+      exec_program( ${cmd} ${HAVOK_DEBUG_LIBRARY_PATH} ARGS ${debug_dir} OUTPUT_VARIABLE rv)
+
+      if(DEBUG_PREBUILT)
+        MESSAGE(STATUS "${cmd} ${release_dir}")
+      endif(DEBUG_PREBUILT)
+      exec_program( ${cmd} ${HAVOK_RELEASE_LIBRARY_PATH} ARGS ${release_dir} OUTPUT_VARIABLE rv)
+
+      if(DEBUG_PREBUILT)
+        MESSAGE(STATUS "${cmd} ${relwithdebinfo_dir}")
+      endif(DEBUG_PREBUILT)
+      exec_program( ${cmd} ${HAVOK_RELWITHDEBINFO_LIBRARY_PATH} ARGS ${relwithdebinfo_dir} OUTPUT_VARIABLE rv)
+
+      set(cmd "ar")
+      set(arg " -xv")
+      set(arg "${arg} ../lib${HAVOK_LIB}.a")
+      if(DEBUG_PREBUILT)
+        MESSAGE(STATUS "cd ${debug_dir} && ${cmd} ${arg}")
+      endif(DEBUG_PREBUILT)
+      exec_program( ${cmd} ${debug_dir} ARGS ${arg} OUTPUT_VARIABLE rv)
+
+      if(DEBUG_PREBUILT)
+        MESSAGE(STATUS "cd ${release_dir} && ${cmd} ${arg}")
+      endif(DEBUG_PREBUILT)
+      exec_program( ${cmd} ${release_dir} ARGS ${arg} OUTPUT_VARIABLE rv)
+
+      if(DEBUG_PREBUILT)
+        MESSAGE(STATUS "cd ${relwithdebinfo_dir} && ${cmd} ${arg}")
+      endif(DEBUG_PREBUILT)
+      exec_program( ${cmd} ${relwithdebinfo_dir} ARGS ${arg} OUTPUT_VARIABLE rv)
+
+      # Just assume success for now.
+      set(havok_${HAVOK_LIB}_extracted 0)
+      file(WRITE ${CMAKE_BINARY_DIR}/temp/havok_${HAVOK_LIB}_extracted "${havok_${HAVOK_LIB}_extracted}")
+
+    endif(${CMAKE_BINARY_DIR}/temp/havok-source_installed IS_NEWER_THAN ${CMAKE_BINARY_DIR}/temp/havok_${HAVOK_LIB}_extracted OR NOT ${havok_${HAVOK_LIB}_extracted} EQUAL 0)
+
+    file(GLOB extracted_debug "${debug_dir}/*.o")
+    file(GLOB extracted_release "${release_dir}/*.o")
+    file(GLOB extracted_relwithdebinfo "${relwithdebinfo_dir}/*.o")
+
+    if(DEBUG_PREBUILT)
+      MESSAGE(STATUS "extracted_debug ${debug_dir}/*.o")
+      MESSAGE(STATUS "extracted_release ${release_dir}/*.o")
+      MESSAGE(STATUS "extracted_relwithdebinfo ${relwithdebinfo_dir}/*.o")
+    endif(DEBUG_PREBUILT)
+
+    list(APPEND HK_DEBUG_LIBRARIES ${extracted_debug})
+    list(APPEND HK_RELEASE_LIBRARIES ${extracted_release})
+    list(APPEND HK_RELWITHDEBINFO_LIBRARIES ${extracted_relwithdebinfo})
+  else(LINUX)
+  # Win32
+    list(APPEND HK_DEBUG_LIBRARIES   ${HAVOK_DEBUG_LIB_${HAVOK_LIB}})
+    list(APPEND HK_RELEASE_LIBRARIES ${HAVOK_RELEASE_LIB_${HAVOK_LIB}})
+    list(APPEND HK_RELWITHDEBINFO_LIBRARIES ${HAVOK_RELWITHDEBINFO_LIB_${HAVOK_LIB}})
+  endif (LINUX)
 endforeach(HAVOK_LIB)
 
+endif(NOT DEFINED ${CMAKE_CURRENT_LIST_FILE}_INCLUDED)
diff --git a/indra/cmake/Linking.cmake b/indra/cmake/Linking.cmake
index c3e3a80fd0d..b9c9e531fce 100644
--- a/indra/cmake/Linking.cmake
+++ b/indra/cmake/Linking.cmake
@@ -1,5 +1,8 @@
 # -*- cmake -*-
 
+if(NOT DEFINED ${CMAKE_CURRENT_LIST_FILE}_INCLUDED)
+set(${CMAKE_CURRENT_LIST_FILE}_INCLUDED "YES")
+
 include(Variables)
 
 set(ARCH_PREBUILT_DIRS ${AUTOBUILD_INSTALL_DIR}/lib)
@@ -69,3 +72,5 @@ else (WINDOWS)
 endif (WINDOWS)
     
 mark_as_advanced(DL_LIBRARY PTHREAD_LIBRARY WINDOWS_LIBRARIES)
+
+endif(NOT DEFINED ${CMAKE_CURRENT_LIST_FILE}_INCLUDED)
diff --git a/indra/cmake/Prebuilt.cmake b/indra/cmake/Prebuilt.cmake
index dbb4dfc46c7..ac0cbde2532 100644
--- a/indra/cmake/Prebuilt.cmake
+++ b/indra/cmake/Prebuilt.cmake
@@ -1,5 +1,8 @@
 # -*- cmake -*-
 
+if(NOT DEFINED ${CMAKE_CURRENT_LIST_FILE}_INCLUDED)
+set(${CMAKE_CURRENT_LIST_FILE}_INCLUDED "YES")
+
 include(FindAutobuild)
 if(INSTALL_PROPRIETARY)
   include(FindSCP)
@@ -51,3 +54,5 @@ macro (use_prebuilt_binary _binary)
     endif (NOT ${_binary}_installed EQUAL 0)
   endif (NOT STANDALONE_${_binary})
 endmacro (use_prebuilt_binary _binary)
+
+endif(NOT DEFINED ${CMAKE_CURRENT_LIST_FILE}_INCLUDED)
diff --git a/indra/cmake/Variables.cmake b/indra/cmake/Variables.cmake
index 405d80aeb09..6efe7381973 100644
--- a/indra/cmake/Variables.cmake
+++ b/indra/cmake/Variables.cmake
@@ -12,6 +12,9 @@
 
 # Relative and absolute paths to subtrees.
 
+if(NOT DEFINED ${CMAKE_CURRENT_LIST_FILE}_INCLUDED)
+set(${CMAKE_CURRENT_LIST_FILE}_INCLUDED "YES")
+
 if(NOT DEFINED COMMON_CMAKE_DIR)
     set(COMMON_CMAKE_DIR "${CMAKE_SOURCE_DIR}/cmake")
 endif(NOT DEFINED COMMON_CMAKE_DIR)
@@ -167,3 +170,4 @@ set(USE_PRECOMPILED_HEADERS ON CACHE BOOL "Enable use of precompiled header dire
 
 source_group("CMake Rules" FILES CMakeLists.txt)
 
+endif(NOT DEFINED ${CMAKE_CURRENT_LIST_FILE}_INCLUDED)
diff --git a/indra/llrender/CMakeLists.txt b/indra/llrender/CMakeLists.txt
index 26b5ac17fe5..669b70aa433 100644
--- a/indra/llrender/CMakeLists.txt
+++ b/indra/llrender/CMakeLists.txt
@@ -32,18 +32,21 @@ include_directories(SYSTEM
 
 set(llrender_SOURCE_FILES
     llcubemap.cpp
+    llfontbitmapcache.cpp
     llfontfreetype.cpp
     llfontgl.cpp
-    llfontbitmapcache.cpp
     llfontregistry.cpp
+    llgl.cpp
     llgldbg.cpp
     llglslshader.cpp
     llgltexture.cpp
     llimagegl.cpp
     llpostprocess.cpp
+    llrender.cpp
     llrender2dutils.cpp
     llrendernavprim.cpp
     llrendersphere.cpp
+    llrendertarget.cpp
     llshadermgr.cpp
     lltexture.cpp
     lluiimage.cpp
@@ -82,11 +85,6 @@ set_source_files_properties(${llrender_HEADER_FILES}
 
 list(APPEND llrender_SOURCE_FILES ${llrender_HEADER_FILES})
 
-list(APPEND llrender_SOURCE_FILES
-     llgl.cpp
-     llrender.cpp
-     llrendertarget.cpp
-     )
 if (BUILD_HEADLESS)
   add_library (llrenderheadless
     ${llrender_SOURCE_FILES}
diff --git a/indra/llwindow/CMakeLists.txt b/indra/llwindow/CMakeLists.txt
index 4610b7a2345..ad010164eb1 100644
--- a/indra/llwindow/CMakeLists.txt
+++ b/indra/llwindow/CMakeLists.txt
@@ -80,6 +80,15 @@ if (LINUX)
       fontconfig          # For FCInit and other FC* functions.
       )
 
+  list(APPEND viewer_SOURCE_FILES 
+       llkeyboardsdl.cpp 
+       llwindowsdl.cpp
+       )
+  list(APPEND viewer_HEADER_FILES
+       llkeyboardsdl.h
+       llwindowsdl.h
+       )
+
   if (BUILD_HEADLESS)
     set(llwindowheadless_LINK_LIBRARIES
         ${LLCOMMON_LIBRARIES}
@@ -92,6 +101,7 @@ if (LINUX)
         fontconfig          # For FCInit and other FC* functions.
         )
   endif (BUILD_HEADLESS)
+
 endif (LINUX)
 
 if (DARWIN)
@@ -115,16 +125,6 @@ if (DARWIN)
       )
 endif (DARWIN)
 
-if (LINUX)
-  list(APPEND viewer_SOURCE_FILES 
-       llkeyboardsdl.cpp 
-       llwindowsdl.cpp
-       )
-  list(APPEND viewer_HEADER_FILES
-       llkeyboardsdl.h
-       llwindowsdl.h
-       )
-endif (LINUX)
 
 if (WINDOWS)
   list(APPEND llwindow_SOURCE_FILES
-- 
GitLab


From 22f53c85588912582f33d840d106b10f54f2c62d Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Mon, 15 Oct 2012 18:41:55 -0400
Subject: [PATCH 140/436] additional debugging info, including tracking where
 visual params live

---
 indra/llappearance/llavatarappearance.cpp |  4 ++++
 indra/llappearance/lldriverparam.cpp      |  1 +
 indra/llappearance/lltexlayerparams.cpp   |  1 +
 indra/llappearance/llwearable.cpp         |  1 +
 indra/llcharacter/llcharacter.cpp         |  0
 indra/llcharacter/llvisualparam.cpp       | 20 +++++++++++++++++++-
 indra/llcharacter/llvisualparam.h         | 12 ++++++++++++
 indra/newview/llvoavatar.cpp              |  1 +
 indra/newview/llvoavatarself.cpp          |  7 +++++++
 9 files changed, 46 insertions(+), 1 deletion(-)
 mode change 100644 => 100755 indra/llappearance/llavatarappearance.cpp
 mode change 100644 => 100755 indra/llcharacter/llcharacter.cpp
 mode change 100644 => 100755 indra/llcharacter/llvisualparam.cpp
 mode change 100644 => 100755 indra/llcharacter/llvisualparam.h

diff --git a/indra/llappearance/llavatarappearance.cpp b/indra/llappearance/llavatarappearance.cpp
old mode 100644
new mode 100755
index bdd2d75822a..3c01a00e618
--- a/indra/llappearance/llavatarappearance.cpp
+++ b/indra/llappearance/llavatarappearance.cpp
@@ -903,6 +903,7 @@ BOOL LLAvatarAppearance::loadAvatar()
 		if (driver_param->setInfo(info))
 		{
 			addVisualParam( driver_param );
+			driver_param->setParamLocation(isSelf() ? LOC_AV_SELF : LOC_AV_OTHER);
 			LLVisualParam*(LLAvatarAppearance::*avatar_function)(S32)const = &LLAvatarAppearance::getVisualParam; 
 			if( !driver_param->linkDrivenParams(boost::bind(avatar_function,(LLAvatarAppearance*)this,_1 ), false))
 			{
@@ -981,6 +982,7 @@ BOOL LLAvatarAppearance::loadSkeletonNode ()
 			else
 			{
 				addVisualParam(param);
+				param->setParamLocation(isSelf() ? LOC_AV_SELF : LOC_AV_OTHER);
 			}				
 		}
 	}
@@ -1098,10 +1100,12 @@ BOOL LLAvatarAppearance::loadMeshNodes()
 				if (info_pair->second)
 				{
 					addSharedVisualParam(param);
+					param->setParamLocation(isSelf() ? LOC_AV_SELF : LOC_AV_OTHER);
 				}
 				else
 				{
 					addVisualParam(param);
+					param->setParamLocation(isSelf() ? LOC_AV_SELF : LOC_AV_OTHER);
 				}
 			}				
 		}
diff --git a/indra/llappearance/lldriverparam.cpp b/indra/llappearance/lldriverparam.cpp
index 2d91ebdee9c..01184a9e233 100755
--- a/indra/llappearance/lldriverparam.cpp
+++ b/indra/llappearance/lldriverparam.cpp
@@ -481,6 +481,7 @@ BOOL LLDriverParam::linkDrivenParams(visual_param_mapper mapper, BOOL only_cross
 		if (!found)
 		{
 			LLViewerVisualParam* param = (LLViewerVisualParam*)mapper(driven_id);
+			if (param) param->setParamLocation(this->getParamLocation());
 			bool push = param && (!only_cross_params || param->getCrossWearable());
 			if (push)
 			{
diff --git a/indra/llappearance/lltexlayerparams.cpp b/indra/llappearance/lltexlayerparams.cpp
index 58737f7ff4e..64b3b621856 100755
--- a/indra/llappearance/lltexlayerparams.cpp
+++ b/indra/llappearance/lltexlayerparams.cpp
@@ -67,6 +67,7 @@ BOOL LLTexLayerParam::setInfo(LLViewerVisualParamInfo *info, BOOL add_to_appeara
 	if (add_to_appearance)
 	{
 		mAvatarAppearance->addVisualParam( this);
+		this->setParamLocation(mAvatarAppearance->isSelf() ? LOC_AV_SELF : LOC_AV_OTHER);
 	}
 
 	return TRUE;
diff --git a/indra/llappearance/llwearable.cpp b/indra/llappearance/llwearable.cpp
index 5d53d1ae39f..f4891c61bda 100755
--- a/indra/llappearance/llwearable.cpp
+++ b/indra/llappearance/llwearable.cpp
@@ -629,6 +629,7 @@ void LLWearable::addVisualParam(LLVisualParam *param)
 		delete mVisualParamIndexMap[param->getID()];
 	}
 	param->setIsDummy(FALSE);
+	param->setParamLocation(LOC_WEARABLE);
 	mVisualParamIndexMap[param->getID()] = param;
 	mSavedVisualParamMap[param->getID()] = param->getDefaultWeight();
 }
diff --git a/indra/llcharacter/llcharacter.cpp b/indra/llcharacter/llcharacter.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcharacter/llvisualparam.cpp b/indra/llcharacter/llvisualparam.cpp
old mode 100644
new mode 100755
index 255f61b1b34..1934ed55d37
--- a/indra/llcharacter/llvisualparam.cpp
+++ b/indra/llcharacter/llvisualparam.cpp
@@ -168,7 +168,8 @@ LLVisualParam::LLVisualParam()
 	mIsAnimating( FALSE ),
 	mID( -1 ),
 	mInfo( 0 ),
-	mIsDummy(FALSE)
+	mIsDummy(FALSE),
+	mParamLocation(LOC_UNKNOWN)
 {
 }
 
@@ -320,3 +321,20 @@ void LLVisualParam::resetDrivenParams()
 	// nothing to do for non-driver parameters
 	return;
 }
+
+void LLVisualParam::setParamLocation(EParamLocation loc)
+{
+	if (mParamLocation == LOC_UNKNOWN)
+	{
+		mParamLocation = loc;
+	}
+	else if (mParamLocation == loc)
+	{
+		// no action
+	}
+	else
+	{
+		llwarns << "param location is already " << mParamLocation << ", not slamming to " << loc << llendl;
+	}
+}
+
diff --git a/indra/llcharacter/llvisualparam.h b/indra/llcharacter/llvisualparam.h
old mode 100644
new mode 100755
index 694e27f371c..8345990f474
--- a/indra/llcharacter/llvisualparam.h
+++ b/indra/llcharacter/llvisualparam.h
@@ -50,6 +50,14 @@ enum EVisualParamGroup
 	NUM_VISUAL_PARAM_GROUPS
 };
 
+enum EParamLocation
+{
+	LOC_UNKNOWN,
+	LOC_AV_SELF,
+	LOC_AV_OTHER,
+	LOC_WEARABLE
+};
+
 const S32 MAX_TRANSMITTED_VISUAL_PARAMS = 255;
 
 //-----------------------------------------------------------------------------
@@ -149,6 +157,9 @@ class LLVisualParam
 
 	void					setIsDummy(BOOL is_dummy) { mIsDummy = is_dummy; }
 
+	void					setParamLocation(EParamLocation loc);
+	EParamLocation			getParamLocation() const { return mParamLocation; }
+
 protected:
 	F32					mCurWeight;			// current weight
 	F32					mLastWeight;		// last weight
@@ -160,6 +171,7 @@ class LLVisualParam
 
 	S32					mID;				// id for storing weight/morphtarget compares compactly
 	LLVisualParamInfo	*mInfo;
+	EParamLocation		mParamLocation;		// where does this visual param live?
 };
 
 #endif // LL_LLVisualParam_H
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 3d4573903f6..a2ace15f2da 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -1792,6 +1792,7 @@ S32 LLVOAvatar::setTETexture(const U8 te, const LLUUID& uuid)
 		const std::string url = getImageURL(te,uuid);
 		if (!url.empty())
 		{
+			llinfos << "texture URL " << url << llendl;
 			return setTETextureCore(te, uuid, url);
 		}
 
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index e4fb1ebf889..667eedd0c86 100755
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -2654,7 +2654,14 @@ void LLVOAvatarSelf::onCustomizeStart(bool disable_camera_switch)
 			gAgentCamera.changeCameraToCustomizeAvatar();
 		}
 
+		bool enable_verbose_dumps = gSavedSettings.getBOOL("DebugAvatarAppearanceMessage");
+		std::string dump_prefix = gAgentAvatarp->getFullname() + "_" + (gAgentAvatarp->isSelf()?"s":"o") + "_";
+		if (enable_verbose_dumps) { gAgentAvatarp->dumpArchetypeXML(dump_prefix + "on_customize_start"); }
 		gAgentAvatarp->clearVisualParamWeights();
+		if (enable_verbose_dumps) { gAgentAvatarp->dumpArchetypeXML(dump_prefix + "on_customize_post_clear"); } 
+		gAgentAvatarp->idleUpdateAppearanceAnimation();
+		if (enable_verbose_dumps) { gAgentAvatarp->dumpArchetypeXML(dump_prefix + "on_customize_post_update"); }
+		
 		gAgentAvatarp->invalidateAll();
 		gAgentAvatarp->updateMeshTextures();
 	}
-- 
GitLab


From 7d6da2ebe8db7aa73113659c709d03e16eca5094 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Wed, 17 Oct 2012 13:43:19 -0400
Subject: [PATCH 141/436] more param location logging, added wearable type info
 to dumpArchetypeXML

---
 indra/llappearance/llwearable.cpp   |  5 ++++-
 indra/llcharacter/llvisualparam.cpp |  2 +-
 indra/newview/llvoavatar.cpp        | 11 +++++++++--
 3 files changed, 14 insertions(+), 4 deletions(-)

diff --git a/indra/llappearance/llwearable.cpp b/indra/llappearance/llwearable.cpp
index f4891c61bda..b33adb254d5 100755
--- a/indra/llappearance/llwearable.cpp
+++ b/indra/llappearance/llwearable.cpp
@@ -128,7 +128,10 @@ void LLWearable::createVisualParams(LLAvatarAppearance *avatarp)
 	{
 		if (param->getWearableType() == mType)
 		{
-			addVisualParam(param->cloneParam(this));
+			LLVisualParam *clone_param = param->cloneParam(this);
+			clone_param->setParamLocation(LOC_UNKNOWN);
+			clone_param->setParamLocation(LOC_WEARABLE);
+			addVisualParam(clone_param);
 		}
 	}
 
diff --git a/indra/llcharacter/llvisualparam.cpp b/indra/llcharacter/llvisualparam.cpp
index 1934ed55d37..826f76bae02 100755
--- a/indra/llcharacter/llvisualparam.cpp
+++ b/indra/llcharacter/llvisualparam.cpp
@@ -324,7 +324,7 @@ void LLVisualParam::resetDrivenParams()
 
 void LLVisualParam::setParamLocation(EParamLocation loc)
 {
-	if (mParamLocation == LOC_UNKNOWN)
+	if (mParamLocation == LOC_UNKNOWN || loc == LOC_UNKNOWN)
 	{
 		mParamLocation = loc;
 	}
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index a2ace15f2da..fa6e5720640 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -6306,8 +6306,15 @@ void dump_visual_param(apr_file_t* file, LLVisualParam* viewer_param, F32 value)
 		type_string = "param_morph";
 	if (dynamic_cast<LLPolySkeletalDistortion*>(viewer_param))
 		type_string = "param_skeleton";
-	apr_file_printf(file, "\t\t<param id=\"%d\" name=\"%s\" value=\"%.3f\"/ type=\"%s\">\n",
-					viewer_param->getID(), viewer_param->getName().c_str(), value, type_string.c_str());
+	S32 wtype = -1;
+	LLViewerVisualParam *vparam = dynamic_cast<LLViewerVisualParam*>(viewer_param);
+	if (vparam)
+	{
+		wtype = vparam->getWearableType();
+	}
+	apr_file_printf(file, "\t\t<param id=\"%d\" name=\"%s\" value=\"%.3f\" type=\"%s\" wearable=\"%s\"/>\n",
+					viewer_param->getID(), viewer_param->getName().c_str(), value, type_string.c_str(),
+					LLWearableType::getTypeName(LLWearableType::EType(wtype)).c_str());
 }
 
 
-- 
GitLab


From 2390e21a9d2fc6f5cabe132a2bbd807aec186cfa Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Wed, 17 Oct 2012 18:32:26 -0400
Subject: [PATCH 142/436] additional diagnostics, improved shape stability at
 cost of increasing entanglement between baked and local appearance

---
 indra/llappearance/llwearabledata.cpp |  2 ++
 indra/newview/llviewerwearable.cpp    |  5 +++++
 indra/newview/llvoavatar.cpp          |  5 +++--
 indra/newview/llvoavatarself.cpp      | 10 ++++------
 4 files changed, 14 insertions(+), 8 deletions(-)

diff --git a/indra/llappearance/llwearabledata.cpp b/indra/llappearance/llwearabledata.cpp
index 401b1dc1922..68fdcca7821 100755
--- a/indra/llappearance/llwearabledata.cpp
+++ b/indra/llappearance/llwearabledata.cpp
@@ -120,10 +120,12 @@ void LLWearableData::wearableUpdated(LLWearable *wearable, BOOL removed)
 {
 	wearable->setUpdated();
 	// FIXME DRANO avoid updating params via wearables when rendering server-baked appearance.
+#if 0
 	if (mAvatarAppearance->isUsingServerBakes() && !mAvatarAppearance->isUsingLocalAppearance())
 	{
 		return;
 	}
+#endif
 	if (!removed)
 	{
 		pullCrossWearableValues(wearable->getType());
diff --git a/indra/newview/llviewerwearable.cpp b/indra/newview/llviewerwearable.cpp
index 1200f65b6e7..4477893063e 100755
--- a/indra/newview/llviewerwearable.cpp
+++ b/indra/newview/llviewerwearable.cpp
@@ -320,6 +320,7 @@ void LLViewerWearable::writeToAvatar(LLAvatarAppearance *avatarp)
 
 	if (!viewer_avatar->isValid()) return;
 
+#if 0
 	// FIXME DRANO - kludgy way to avoid overwriting avatar state from wearables.
 	// Ideally would avoid calling this func in the first place.
 	if (viewer_avatar->isUsingServerBakes() &&
@@ -327,6 +328,7 @@ void LLViewerWearable::writeToAvatar(LLAvatarAppearance *avatarp)
 	{
 		return;
 	}
+#endif
 
 	ESex old_sex = avatarp->getSex();
 
@@ -476,10 +478,13 @@ void LLViewerWearable::setItemID(const LLUUID& item_id)
 
 void LLViewerWearable::revertValues()
 {
+#if 0
+	// DRANO avoid overwrite when not in local appearance
 	if (isAgentAvatarValid() && gAgentAvatarp->isUsingServerBakes() && !gAgentAvatarp->isUsingLocalAppearance())
 	{
 		return;
 	}
+#endif
 	LLWearable::revertValues();
 
 
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index fa6e5720640..a49ecc01272 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -6312,8 +6312,9 @@ void dump_visual_param(apr_file_t* file, LLVisualParam* viewer_param, F32 value)
 	{
 		wtype = vparam->getWearableType();
 	}
-	apr_file_printf(file, "\t\t<param id=\"%d\" name=\"%s\" value=\"%.3f\" type=\"%s\" wearable=\"%s\"/>\n",
-					viewer_param->getID(), viewer_param->getName().c_str(), value, type_string.c_str(),
+	S32 u8_value = F32_to_U8(value,viewer_param->getMinWeight(),viewer_param->getMaxWeight());
+	apr_file_printf(file, "\t\t<param id=\"%d\" name=\"%s\" value=\"%.3f\" u8=\"%d\" type=\"%s\" wearable=\"%s\"/>\n",
+					viewer_param->getID(), viewer_param->getName().c_str(), value, u8_value, type_string.c_str(),
 					LLWearableType::getTypeName(LLWearableType::EType(wtype)).c_str());
 }
 
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index 667eedd0c86..a01188d7dc4 100755
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -664,12 +664,13 @@ BOOL LLVOAvatarSelf::setParamWeight(const LLViewerVisualParam *param, F32 weight
 		return FALSE;
 	}
 
+#if 0
 	// FIXME DRANO - kludgy way to avoid overwriting avatar state from wearables.
 	if (isUsingServerBakes() && !isUsingLocalAppearance())
 	{
 		return FALSE;
 	}
-
+#endif
 
 	if (param->getCrossWearable())
 	{
@@ -2654,13 +2655,10 @@ void LLVOAvatarSelf::onCustomizeStart(bool disable_camera_switch)
 			gAgentCamera.changeCameraToCustomizeAvatar();
 		}
 
-		bool enable_verbose_dumps = gSavedSettings.getBOOL("DebugAvatarAppearanceMessage");
-		std::string dump_prefix = gAgentAvatarp->getFullname() + "_" + (gAgentAvatarp->isSelf()?"s":"o") + "_";
-		if (enable_verbose_dumps) { gAgentAvatarp->dumpArchetypeXML(dump_prefix + "on_customize_start"); }
+#if 0
 		gAgentAvatarp->clearVisualParamWeights();
-		if (enable_verbose_dumps) { gAgentAvatarp->dumpArchetypeXML(dump_prefix + "on_customize_post_clear"); } 
 		gAgentAvatarp->idleUpdateAppearanceAnimation();
-		if (enable_verbose_dumps) { gAgentAvatarp->dumpArchetypeXML(dump_prefix + "on_customize_post_update"); }
+#endif
 		
 		gAgentAvatarp->invalidateAll();
 		gAgentAvatarp->updateMeshTextures();
-- 
GitLab


From 98e2488f6fd64eb428fcc8f659cb7f0d82196449 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Wed, 17 Oct 2012 23:11:40 +0000
Subject: [PATCH 143/436] Fix for headless appearance utility not linking
 correctly

---
 indra/cmake/Variables.cmake | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/indra/cmake/Variables.cmake b/indra/cmake/Variables.cmake
index 6efe7381973..895b3003db4 100644
--- a/indra/cmake/Variables.cmake
+++ b/indra/cmake/Variables.cmake
@@ -51,9 +51,6 @@ if (EXISTS ${CMAKE_SOURCE_DIR}/Server.cmake)
   # We use this as a marker that you can try to use the proprietary libraries.
   set(INSTALL_PROPRIETARY ON CACHE BOOL "Install proprietary binaries")
 endif (EXISTS ${CMAKE_SOURCE_DIR}/Server.cmake)
-if (LINUX AND INSTALL_PROPRIETARY)
-  set(BUILD_HEADLESS ON CACHE BOOL "Build headless libraries.")
-endif (LINUX AND INSTALL_PROPRIETARY)
 set(TEMPLATE_VERIFIER_OPTIONS "" CACHE STRING "Options for scripts/template_verifier.py")
 set(TEMPLATE_VERIFIER_MASTER_URL "http://bitbucket.org/lindenlab/master-message-template/raw/tip/message_template.msg" CACHE STRING "Location of the master message template")
 
@@ -73,6 +70,10 @@ endif (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
 if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
   set(LINUX ON BOOl FORCE)
 
+  if (INSTALL_PROPRIETARY)
+    set(BUILD_HEADLESS ON CACHE BOOL "Build headless libraries.")
+  endif (INSTALL_PROPRIETARY)
+
   # If someone has specified a word size, use that to determine the
   # architecture.  Otherwise, let the architecture specify the word size.
   if (WORD_SIZE EQUAL 32)
-- 
GitLab


From b9714ba85ebabdc39191565a26d732a82fd9a4a0 Mon Sep 17 00:00:00 2001
From: "Nyx (Neal Orman)" <nyx@lindenlab.com>
Date: Thu, 18 Oct 2012 15:00:05 -0400
Subject: [PATCH 144/436] Setting alpha rejection settings properly for texture
 bakes without basic shaders enabled

---
 indra/llappearance/lltexlayer.cpp | 90 +++++++++++++++++++++++++++++--
 1 file changed, 86 insertions(+), 4 deletions(-)

diff --git a/indra/llappearance/lltexlayer.cpp b/indra/llappearance/lltexlayer.cpp
index 6e2623b8600..b8c8228f85b 100644
--- a/indra/llappearance/lltexlayer.cpp
+++ b/indra/llappearance/lltexlayer.cpp
@@ -153,6 +153,10 @@ BOOL LLTexLayerSetBuffer::renderTexLayerSet()
 		gAlphaMaskProgram.bind();
 		gAlphaMaskProgram.setMinimumAlpha(0.004f);
 	}
+	else
+	{
+		glAlphaFunc(GL_GEQUAL, 0.004f);
+	}
 
 	LLVertexBuffer::unbind();
 
@@ -400,6 +404,11 @@ BOOL LLTexLayerSet::render( S32 x, S32 y, S32 width, S32 height )
 		{
 			gAlphaMaskProgram.setMinimumAlpha(0.0f);
 		}
+		else
+		{
+			glAlphaFunc(GL_GEQUAL, 0.0f);
+		}
+
 		gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
 		gGL.color4f( 0.f, 0.f, 0.f, 1.f );
 
@@ -410,6 +419,10 @@ BOOL LLTexLayerSet::render( S32 x, S32 y, S32 width, S32 height )
 		{
 			gAlphaMaskProgram.setMinimumAlpha(0.004f);
 		}
+		else
+		{
+			glAlphaFunc(GL_GEQUAL, 0.004f);
+		}
 	}
 
 	if (mIsVisible)
@@ -440,6 +453,10 @@ BOOL LLTexLayerSet::render( S32 x, S32 y, S32 width, S32 height )
 		{
 			gAlphaMaskProgram.setMinimumAlpha(0.f);
 		}
+		else
+		{
+			glAlphaFunc(GL_GEQUAL, 0.0f);
+		}
 
 		gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
 		gGL.color4f( 0.f, 0.f, 0.f, 0.f );
@@ -452,6 +469,11 @@ BOOL LLTexLayerSet::render( S32 x, S32 y, S32 width, S32 height )
 		{
 			gAlphaMaskProgram.setMinimumAlpha(0.004f);
 		}
+		else
+		{
+			glAlphaFunc(GL_GEQUAL, 0.004f);
+		}
+
 	}
 
 	return success;
@@ -568,6 +590,11 @@ void LLTexLayerSet::renderAlphaMaskTextures(S32 x, S32 y, S32 width, S32 height,
 		{
 			gAlphaMaskProgram.setMinimumAlpha(0.f);
 		}
+		else
+		{
+			glAlphaFunc(GL_GEQUAL, 0.0f);
+		}
+
 		gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
 		gGL.color4f( 0.f, 0.f, 0.f, 1.f );
 		
@@ -578,6 +605,11 @@ void LLTexLayerSet::renderAlphaMaskTextures(S32 x, S32 y, S32 width, S32 height,
 		{
 			gAlphaMaskProgram.setMinimumAlpha(0.004f);
 		}
+		else
+		{
+			glAlphaFunc(GL_GEQUAL, 0.004f);
+		}
+
 	}
 	
 	// (Optional) Mask out part of the baked texture with alpha masks
@@ -1171,9 +1203,16 @@ BOOL LLTexLayer::render(S32 x, S32 y, S32 width, S32 height)
 				{
 					bool no_alpha_test = getInfo()->mWriteAllChannels;
 					LLGLDisable alpha_test(no_alpha_test ? GL_ALPHA_TEST : 0);
-					if (use_shaders && no_alpha_test)
+					if (no_alpha_test)
 					{
-						gAlphaMaskProgram.setMinimumAlpha(0.f);
+						if (use_shaders)
+						{
+							gAlphaMaskProgram.setMinimumAlpha(0.f);
+						}
+						else
+						{
+							glAlphaFunc(GL_GEQUAL, 0.0f);
+						}
 					}
 					
 					LLTexUnit::eTextureAddressMode old_mode = tex->getAddressMode();
@@ -1185,9 +1224,16 @@ BOOL LLTexLayer::render(S32 x, S32 y, S32 width, S32 height)
 
 					gGL.getTexUnit(0)->setTextureAddressMode(old_mode);
 					gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
-					if (use_shaders && no_alpha_test)
+					if (no_alpha_test)
 					{
-						gAlphaMaskProgram.setMinimumAlpha(0.004f);
+						if (use_shaders)
+						{
+							gAlphaMaskProgram.setMinimumAlpha(0.004f);
+						}
+						else
+						{
+							glAlphaFunc(GL_GEQUAL, 0.004f);
+						}
 					}
 					
 				}
@@ -1226,6 +1272,11 @@ BOOL LLTexLayer::render(S32 x, S32 y, S32 width, S32 height)
 		{
 			gAlphaMaskProgram.setMinimumAlpha(0.f);
 		}
+		else
+		{
+			glAlphaFunc(GL_GEQUAL, 0.0f);
+		}
+
 		gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
 		gGL.color4fv( net_color.mV );
 		gl_rect_2d_simple( width, height );
@@ -1233,6 +1284,10 @@ BOOL LLTexLayer::render(S32 x, S32 y, S32 width, S32 height)
 		{
 			gAlphaMaskProgram.setMinimumAlpha(0.004f);
 		}
+		else
+		{
+			glAlphaFunc(GL_GEQUAL, 0.004f);
+		}
 	}
 
 	if( alpha_mask_specified || getInfo()->mWriteAllChannels )
@@ -1332,6 +1387,11 @@ BOOL LLTexLayer::blendAlphaTexture(S32 x, S32 y, S32 width, S32 height)
 			{
 				gAlphaMaskProgram.setMinimumAlpha(0.f);
 			}
+			else
+			{
+				glAlphaFunc(GL_GEQUAL, 0.0f);
+			}
+
 			gGL.getTexUnit(0)->bind(tex, TRUE);
 			gl_rect_2d_simple_tex( width, height );
 			gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
@@ -1339,6 +1399,10 @@ BOOL LLTexLayer::blendAlphaTexture(S32 x, S32 y, S32 width, S32 height)
 			{
 				gAlphaMaskProgram.setMinimumAlpha(0.004f);
 			}
+			else
+			{
+				glAlphaFunc(GL_GEQUAL, 0.004f);
+			}
 		}
 		else
 		{
@@ -1357,6 +1421,11 @@ BOOL LLTexLayer::blendAlphaTexture(S32 x, S32 y, S32 width, S32 height)
 				{
 					gAlphaMaskProgram.setMinimumAlpha(0.f);
 				}
+				else
+				{
+					glAlphaFunc(GL_GEQUAL, 0.0f);
+				}
+
 				gGL.getTexUnit(0)->bind(tex);
 				gl_rect_2d_simple_tex( width, height );
 				gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
@@ -1365,6 +1434,10 @@ BOOL LLTexLayer::blendAlphaTexture(S32 x, S32 y, S32 width, S32 height)
 				{
 					gAlphaMaskProgram.setMinimumAlpha(0.004f);
 				}
+				else
+				{
+					glAlphaFunc(GL_GEQUAL, 0.004f);
+				}
 			}
 		}
 	}
@@ -1391,6 +1464,11 @@ BOOL LLTexLayer::renderMorphMasks(S32 x, S32 y, S32 width, S32 height, const LLC
 	{
 		gAlphaMaskProgram.setMinimumAlpha(0.f);
 	}
+	else
+	{
+		glAlphaFunc(GL_GEQUAL, 0.0f);
+	}
+
 
 	gGL.setColorMask(false, true);
 
@@ -1471,6 +1549,10 @@ BOOL LLTexLayer::renderMorphMasks(S32 x, S32 y, S32 width, S32 height, const LLC
 	{
 		gAlphaMaskProgram.setMinimumAlpha(0.004f);
 	}
+	else
+	{
+		glAlphaFunc(GL_GEQUAL, 0.004f);
+	}
 
 	LLGLSUIDefault gls_ui;
 
-- 
GitLab


From 3ac3f76fc36332e02551ed68c361c9808a8459e1 Mon Sep 17 00:00:00 2001
From: Nyx Linden <nyx@lindenlab.com>
Date: Fri, 19 Oct 2012 21:49:26 +0000
Subject: [PATCH 145/436] FIX: fixed broken baked texture rendering in
 lltexlayer, by enforcing correct gl state in lltexlayer.cpp FIX: updated
 appearance utility source package

---
 autobuild.xml                     |  4 +--
 indra/llappearance/lltexlayer.cpp | 41 ++++++++++++++++++-------------
 2 files changed, 26 insertions(+), 19 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index cb86a218807..415858d2743 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -1290,9 +1290,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>6d3959428402ef091863ef2a163ec629</string>
+              <string>57598f72d41ea0f3c2b4ed4804856636</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/265640/arch/Linux/installer/llappearanceutility_source-0.1-linux-20121006.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/266096/arch/Linux/installer/llappearanceutility_source-0.1-linux-20121019.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
diff --git a/indra/llappearance/lltexlayer.cpp b/indra/llappearance/lltexlayer.cpp
index b8c8228f85b..c44799f40da 100644
--- a/indra/llappearance/lltexlayer.cpp
+++ b/indra/llappearance/lltexlayer.cpp
@@ -148,6 +148,8 @@ BOOL LLTexLayerSetBuffer::renderTexLayerSet()
 	
 	bool use_shaders = LLGLSLShader::sNoFixedFunction;
 
+	LLGLEnable(GL_ALPHA_TEST);
+
 	if (use_shaders)
 	{
 		gAlphaMaskProgram.bind();
@@ -155,7 +157,7 @@ BOOL LLTexLayerSetBuffer::renderTexLayerSet()
 	}
 	else
 	{
-		glAlphaFunc(GL_GEQUAL, 0.004f);
+		gGL.setAlphaRejectSettings(LLRender::CF_GREATER, 0.004f);
 	}
 
 	LLVertexBuffer::unbind();
@@ -395,6 +397,7 @@ BOOL LLTexLayerSet::render( S32 x, S32 y, S32 width, S32 height )
 	LLGLSUIDefault gls_ui;
 	LLGLDepthTest gls_depth(GL_FALSE, GL_FALSE);
 	gGL.setColorMask(true, true);
+	LLGLEnable(GL_ALPHA_TEST);
 
 	// clear buffer area to ensure we don't pick up UI elements
 	{
@@ -406,7 +409,7 @@ BOOL LLTexLayerSet::render( S32 x, S32 y, S32 width, S32 height )
 		}
 		else
 		{
-			glAlphaFunc(GL_GEQUAL, 0.0f);
+			gGL.setAlphaRejectSettings(LLRender::CF_GREATER, 0.0f);
 		}
 
 		gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
@@ -421,7 +424,7 @@ BOOL LLTexLayerSet::render( S32 x, S32 y, S32 width, S32 height )
 		}
 		else
 		{
-			glAlphaFunc(GL_GEQUAL, 0.004f);
+			gGL.setAlphaRejectSettings(LLRender::CF_GREATER, 0.004f);
 		}
 	}
 
@@ -455,7 +458,7 @@ BOOL LLTexLayerSet::render( S32 x, S32 y, S32 width, S32 height )
 		}
 		else
 		{
-			glAlphaFunc(GL_GEQUAL, 0.0f);
+			gGL.setAlphaRejectSettings(LLRender::CF_GREATER, 0.0f);
 		}
 
 		gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
@@ -471,7 +474,7 @@ BOOL LLTexLayerSet::render( S32 x, S32 y, S32 width, S32 height )
 		}
 		else
 		{
-			glAlphaFunc(GL_GEQUAL, 0.004f);
+			gGL.setAlphaRejectSettings(LLRender::CF_GREATER, 0.004f);
 		}
 
 	}
@@ -564,6 +567,7 @@ void LLTexLayerSet::renderAlphaMaskTextures(S32 x, S32 y, S32 width, S32 height,
 
 	gGL.setColorMask(false, true);
 	gGL.setSceneBlendType(LLRender::BT_REPLACE);
+	LLGLEnable(GL_ALPHA_TEST);
 	
 	// (Optionally) replace alpha with a single component image from a tga file.
 	if (!info->mStaticAlphaFileName.empty())
@@ -592,7 +596,7 @@ void LLTexLayerSet::renderAlphaMaskTextures(S32 x, S32 y, S32 width, S32 height,
 		}
 		else
 		{
-			glAlphaFunc(GL_GEQUAL, 0.0f);
+			gGL.setAlphaRejectSettings(LLRender::CF_GREATER, 0.0f);
 		}
 
 		gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
@@ -607,7 +611,7 @@ void LLTexLayerSet::renderAlphaMaskTextures(S32 x, S32 y, S32 width, S32 height,
 		}
 		else
 		{
-			glAlphaFunc(GL_GEQUAL, 0.004f);
+			gGL.setAlphaRejectSettings(LLRender::CF_GREATER, 0.004f);
 		}
 
 	}
@@ -1117,6 +1121,7 @@ BOOL LLTexLayer::render(S32 x, S32 y, S32 width, S32 height)
 	//gPipeline.disableLights();
 	stop_glerror();
 	glDisable(GL_LIGHTING);
+	glEnable(GL_ALPHA_TEST);
 	stop_glerror();
 
 	bool use_shaders = LLGLSLShader::sNoFixedFunction;
@@ -1211,7 +1216,7 @@ BOOL LLTexLayer::render(S32 x, S32 y, S32 width, S32 height)
 						}
 						else
 						{
-							glAlphaFunc(GL_GEQUAL, 0.0f);
+							gGL.setAlphaRejectSettings(LLRender::CF_GREATER, 0.0f);
 						}
 					}
 					
@@ -1232,7 +1237,7 @@ BOOL LLTexLayer::render(S32 x, S32 y, S32 width, S32 height)
 						}
 						else
 						{
-							glAlphaFunc(GL_GEQUAL, 0.004f);
+							gGL.setAlphaRejectSettings(LLRender::CF_GREATER, 0.004f);
 						}
 					}
 					
@@ -1274,7 +1279,7 @@ BOOL LLTexLayer::render(S32 x, S32 y, S32 width, S32 height)
 		}
 		else
 		{
-			glAlphaFunc(GL_GEQUAL, 0.0f);
+			gGL.setAlphaRejectSettings(LLRender::CF_GREATER, 0.0f);
 		}
 
 		gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
@@ -1286,7 +1291,7 @@ BOOL LLTexLayer::render(S32 x, S32 y, S32 width, S32 height)
 		}
 		else
 		{
-			glAlphaFunc(GL_GEQUAL, 0.004f);
+			gGL.setAlphaRejectSettings(LLRender::CF_GREATER, 0.004f);
 		}
 	}
 
@@ -1376,6 +1381,7 @@ BOOL LLTexLayer::blendAlphaTexture(S32 x, S32 y, S32 width, S32 height)
 	gGL.flush();
 	
 	bool use_shaders = LLGLSLShader::sNoFixedFunction;
+	LLGLEnable(GL_ALPHA_TEST);
 
 	if( !getInfo()->mStaticImageFileName.empty() )
 	{
@@ -1389,7 +1395,7 @@ BOOL LLTexLayer::blendAlphaTexture(S32 x, S32 y, S32 width, S32 height)
 			}
 			else
 			{
-				glAlphaFunc(GL_GEQUAL, 0.0f);
+				gGL.setAlphaRejectSettings(LLRender::CF_GREATER, 0.0f);
 			}
 
 			gGL.getTexUnit(0)->bind(tex, TRUE);
@@ -1401,7 +1407,7 @@ BOOL LLTexLayer::blendAlphaTexture(S32 x, S32 y, S32 width, S32 height)
 			}
 			else
 			{
-				glAlphaFunc(GL_GEQUAL, 0.004f);
+				gGL.setAlphaRejectSettings(LLRender::CF_GREATER, 0.004f);
 			}
 		}
 		else
@@ -1423,7 +1429,7 @@ BOOL LLTexLayer::blendAlphaTexture(S32 x, S32 y, S32 width, S32 height)
 				}
 				else
 				{
-					glAlphaFunc(GL_GEQUAL, 0.0f);
+					gGL.setAlphaRejectSettings(LLRender::CF_GREATER, 0.0f);
 				}
 
 				gGL.getTexUnit(0)->bind(tex);
@@ -1436,7 +1442,7 @@ BOOL LLTexLayer::blendAlphaTexture(S32 x, S32 y, S32 width, S32 height)
 				}
 				else
 				{
-					glAlphaFunc(GL_GEQUAL, 0.004f);
+					gGL.setAlphaRejectSettings(LLRender::CF_GREATER, 0.0f);
 				}
 			}
 		}
@@ -1459,6 +1465,7 @@ BOOL LLTexLayer::renderMorphMasks(S32 x, S32 y, S32 width, S32 height, const LLC
 	llassert( !mParamAlphaList.empty() );
 
 	bool use_shaders = LLGLSLShader::sNoFixedFunction;
+	LLGLEnable(GL_ALPHA_TEST);
 
 	if (use_shaders)
 	{
@@ -1466,7 +1473,7 @@ BOOL LLTexLayer::renderMorphMasks(S32 x, S32 y, S32 width, S32 height, const LLC
 	}
 	else
 	{
-		glAlphaFunc(GL_GEQUAL, 0.0f);
+		gGL.setAlphaRejectSettings(LLRender::CF_GREATER, 0.0f);
 	}
 
 
@@ -1551,7 +1558,7 @@ BOOL LLTexLayer::renderMorphMasks(S32 x, S32 y, S32 width, S32 height, const LLC
 	}
 	else
 	{
-		glAlphaFunc(GL_GEQUAL, 0.004f);
+		gGL.setAlphaRejectSettings(LLRender::CF_GREATER, 0.004f);
 	}
 
 	LLGLSUIDefault gls_ui;
-- 
GitLab


From c961b5f6571cc6147410f9e7620e5aa44c009f3f Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Mon, 22 Oct 2012 11:09:32 -0400
Subject: [PATCH 146/436] handling for crossing from non-server-bake to
 server-bake regions

---
 indra/llappearance/lldriverparam.cpp |  1 +
 indra/newview/llagent.cpp            | 10 ++++++++++
 indra/newview/llvoavatar.cpp         | 10 ++++++----
 3 files changed, 17 insertions(+), 4 deletions(-)

diff --git a/indra/llappearance/lldriverparam.cpp b/indra/llappearance/lldriverparam.cpp
index 01184a9e233..1f7e8b86524 100755
--- a/indra/llappearance/lldriverparam.cpp
+++ b/indra/llappearance/lldriverparam.cpp
@@ -190,6 +190,7 @@ BOOL LLDriverParam::setInfo(LLDriverParamInfo *info)
 	// FIXME DRANO this clobbers mWearablep, which means any code
 	// currently using mWearablep is wrong, or at least untested.
 	*new_param = *this;
+	//new_param->mWearablep = wearable;
 //	new_param->mDriven.clear(); // clear driven list to avoid overwriting avatar driven params from wearables. 
 	return new_param;
 }
diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index 3e26eac59a0..9eb2723dcfd 100755
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -904,6 +904,16 @@ void LLAgent::setRegion(LLViewerRegion *regionp)
 	{
 		LLEnvManagerNew::instance().onRegionCrossing();
 	}
+
+	// If the newly entered region is using server bakes, and our
+	// current appearance is non-baked, request appearance update from
+	// server.
+	if (isAgentAvatarValid() &&
+		!gAgentAvatarp->isUsingServerBakes() &&
+		(mRegionp->getCentralBakeVersion()>0))
+	{
+		LLAppearanceMgr::instance().requestServerAppearanceUpdate();
+	}
 }
 
 
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index a49ecc01272..b08226fe941 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -6400,8 +6400,6 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 		//mesgsys->getU32Fast(_PREHASH_AppearanceData, _PREHASH_Flags, appearance_flags, 0);
 	}
 
-	mUseServerBakes = (appearance_version > 0);
-
 	// Only now that we have result of appearance_version can we decide whether to bail out.
 	if( isSelf() )
 	{
@@ -6409,7 +6407,7 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 		{
 			llwarns << avString() << "Received AvatarAppearance message for self in non-server-bake region" << llendl;
 		}
-		if( mFirstTEMessageReceived && !isUsingServerBakes())
+		if( mFirstTEMessageReceived && (appearance_version == 0))
 		{
 			return;
 		}
@@ -6417,7 +6415,8 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 
 
 	// Check for stale update.
-	if (isUsingServerBakes() && isSelf()
+	if (isSelf()
+		&& isUsingServerBakes()
 		&& this_update_cof_version >= LLViewerInventoryCategory::VERSION_INITIAL
 		&& this_update_cof_version < last_update_request_cof_version)
 	{
@@ -6425,6 +6424,9 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 				<< ", got " << this_update_cof_version << llendl;
 		return;
 	}
+
+	mUseServerBakes = (appearance_version > 0);
+
 	applyParsedTEMessage(tec);
 
 	// prevent the overwriting of valid baked textures with invalid baked textures
-- 
GitLab


From a2a3412d1b3390cd39a07ec4467c27763ad95622 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Wed, 24 Oct 2012 13:29:59 -0400
Subject: [PATCH 147/436] SH-3430 FIX - don't cache ids of images with
 specified URLs, such as server bakes

---
 indra/newview/llviewertexturelist.cpp | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
 mode change 100644 => 100755 indra/newview/llviewertexturelist.cpp

diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp
old mode 100644
new mode 100755
index b89247ec6f9..eeb962a1242
--- a/indra/newview/llviewertexturelist.cpp
+++ b/indra/newview/llviewertexturelist.cpp
@@ -228,7 +228,9 @@ void LLViewerTextureList::shutdown()
 		if (!image->hasGLTexture() ||
 			!image->getUseDiscard() ||
 			image->needsAux() ||
-			image->getTargetHost() != LLHost::invalid)
+			image->getTargetHost() != LLHost::invalid ||
+			!image->getUrl().empty()
+			)
 		{
 			continue; // avoid UI, baked, and other special images
 		}
-- 
GitLab


From 27933214f41e369337fc83ec7a9ecb2a9cdbaeee Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Wed, 24 Oct 2012 18:19:22 +0000
Subject: [PATCH 148/436] Switching to system osmesa library instead of
 pre-packaged library

---
 autobuild.xml                        | 28 +----------
 indra/cmake/CMakeLists.txt           |  1 +
 indra/cmake/ConfigurePkgConfig.cmake | 74 ++++++++++++++++++++++++++++
 indra/cmake/LLWindow.cmake           |  1 -
 indra/cmake/OpenGL.cmake             |  1 -
 indra/cmake/Variables.cmake          | 25 ++++++++--
 6 files changed, 97 insertions(+), 33 deletions(-)
 create mode 100644 indra/cmake/ConfigurePkgConfig.cmake

diff --git a/autobuild.xml b/autobuild.xml
index 415858d2743..5d30c662b6c 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -1290,9 +1290,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>57598f72d41ea0f3c2b4ed4804856636</string>
+              <string>adf0a54dab1bbd9ffc7b8d20173f72d6</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/266096/arch/Linux/installer/llappearanceutility_source-0.1-linux-20121019.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/266247/arch/Linux/installer/llappearanceutility_source-0.1-linux-20121024.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
@@ -1453,30 +1453,6 @@
           </map>
         </map>
       </map>
-      <key>mesa</key>
-      <map>
-        <key>license</key>
-        <string>mesa</string>
-        <key>license_file</key>
-        <string>LICENSES/mesa.txt</string>
-        <key>name</key>
-        <string>mesa</string>
-        <key>platforms</key>
-        <map>
-          <key>linux</key>
-          <map>
-            <key>archive</key>
-            <map>
-              <key>hash</key>
-              <string>621ec29861ddac6614668b2b00c0ea8e</string>
-              <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-mesa/rev/265524/arch/Linux/installer/mesa-7.11.1-linux-20121004.tar.bz2</string>
-            </map>
-            <key>name</key>
-            <string>linux</string>
-          </map>
-        </map>
-      </map>
       <key>ndofdev</key>
       <map>
         <key>license</key>
diff --git a/indra/cmake/CMakeLists.txt b/indra/cmake/CMakeLists.txt
index bee7a1b7c36..a21fa909507 100644
--- a/indra/cmake/CMakeLists.txt
+++ b/indra/cmake/CMakeLists.txt
@@ -15,6 +15,7 @@ set(cmake_SOURCE_FILES
     BuildVersion.cmake
     CARes.cmake
     CMakeCopyIfDifferent.cmake
+    ConfigurePkgConfig.cmake
     CURL.cmake
     Copy3rdPartyLibs.cmake
     DBusGlib.cmake
diff --git a/indra/cmake/ConfigurePkgConfig.cmake b/indra/cmake/ConfigurePkgConfig.cmake
new file mode 100644
index 00000000000..82ee3e7a5b5
--- /dev/null
+++ b/indra/cmake/ConfigurePkgConfig.cmake
@@ -0,0 +1,74 @@
+# -*- cmake -*-
+
+SET(DEBUG_PKG_CONFIG "YES")
+
+# Don't change this if manually set by user.
+IF("$ENV{PKG_CONFIG_LIBDIR}" STREQUAL "")
+
+  # Guess at architecture-specific system library paths.
+  if (WORD_SIZE EQUAL 32)
+    SET(PKG_CONFIG_NO_MULTI_GUESS /usr/lib32 /usr/lib)
+    SET(PKG_CONFIG_NO_MULTI_LOCAL_GUESS /usr/local/lib32 /usr/local/lib)
+    SET(PKG_CONFIG_MULTI_GUESS /usr/lib/i386-linux-gnu)
+    SET(PKG_CONFIG_MULTI_LOCAL_GUESS /usr/local/lib/i386-linux-gnu)
+  else (WORD_SIZE EQUAL 32)
+    SET(PKG_CONFIG_NO_MULTI_GUESS /usr/lib64 /usr/lib)
+    SET(PKG_CONFIG_NO_MULTI_LOCAL_GUESS /usr/local/lib64 /usr/local/lib)
+    SET(PKG_CONFIG_MULTI_GUESS /usr/local/lib/x86_64-linux-gnu)
+    SET(PKG_CONFIG_MULTI_LOCAL_GUESS /usr/local/lib/x86_64-linux-gnu)
+  endif (WORD_SIZE EQUAL 32)
+  
+  # Use DPKG architecture, if available.
+  IF (${DPKG_ARCH})
+    SET(PKG_CONFIG_MULTI_GUESS /usr/lib/${DPKG_ARCH})
+    SET(PKG_CONFIG_MULTI_LOCAL_GUESS /usrlocal/lib/${DPKG_ARCH})
+  ENDIF (${DPKG_ARCH})
+  
+  # Explicitly include anything listed in PKG_CONFIG_PATH
+  string(REPLACE ":" ";" PKG_CONFIG_PATH_LIST "$ENV{PKG_CONFIG_PATH}")
+  FOREACH(PKG_CONFIG_DIR ${PKG_CONFIG_PATH_LIST})
+    SET(VALID_PKG_LIBDIRS "${VALID_PKG_LIBDIRS}:${PKG_CONFIG_DIR}/pkgconfig")
+  ENDFOREACH(PKG_CONFIG_DIR)
+
+  # Look for valid pkgconfig directories.
+  FIND_PATH(PKG_CONFIG_ENV pkgconfig ENV LD_LIBRARY_PATH)
+  FIND_PATH(PKG_CONFIG_MULTI pkgconfig HINT ${PKG_CONFIG_MULTI_GUESS})
+  FIND_PATH(PKG_CONFIG_MULTI_LOCAL pkgconfig HINT ${PKG_CONFIG_MULTI_LOCAL_GUESS})
+  FIND_PATH(PKG_CONFIG_NO_MULTI pkgconfig HINT ${PKG_CONFIG_NO_MULTI_GUESS})
+  FIND_PATH(PKG_CONFIG_NO_MULTI_LOCAL pkgconfig HINT ${PKG_CONFIG_NO_MULTI_LOCAL_GUESS})
+
+  # Add anything we found to our list.
+  IF(NOT PKG_CONFIG_ENV STREQUAL PKG_CONFIG_ENV-NOTFOUND) 
+    SET(VALID_PKG_LIBDIRS "${VALID_PKG_LIBDIRS}:${PKG_CONFIG_ENV}/pkgconfig")
+  ENDIF(NOT PKG_CONFIG_ENV STREQUAL PKG_CONFIG_ENV-NOTFOUND) 
+
+  IF(NOT PKG_CONFIG_MULTI STREQUAL PKG_CONFIG_MULTI-NOTFOUND) 
+    SET(VALID_PKG_LIBDIRS "${VALID_PKG_LIBDIRS}:${PKG_CONFIG_MULTI}/pkgconfig")
+  ENDIF(NOT PKG_CONFIG_MULTI STREQUAL PKG_CONFIG_MULTI-NOTFOUND) 
+
+  IF(NOT PKG_CONFIG_MULTI_LOCAL STREQUAL PKG_CONFIG_MULTI_LOCAL-NOTFOUND) 
+    SET(VALID_PKG_LIBDIRS "${VALID_PKG_LIBDIRS}:${PKG_CONFIG_MULTI_LOCAL}/pkgconfig")
+  ENDIF(NOT PKG_CONFIG_MULTI_LOCAL STREQUAL PKG_CONFIG_MULTI_LOCAL-NOTFOUND) 
+
+  IF(NOT PKG_CONFIG_NO_MULTI STREQUAL PKG_CONFIG_NO_MULTI-NOTFOUND) 
+    SET(VALID_PKG_LIBDIRS "${VALID_PKG_LIBDIRS}:${PKG_CONFIG_NO_MULTI}/pkgconfig")
+  ENDIF(NOT PKG_CONFIG_NO_MULTI STREQUAL PKG_CONFIG_NO_MULTI-NOTFOUND) 
+
+  IF(NOT PKG_CONFIG_NO_MULTI_LOCAL STREQUAL PKG_CONFIG_NO_MULTI_LOCAL-NOTFOUND) 
+    SET(VALID_PKG_LIBDIRS "${VALID_PKG_LIBDIRS}:${PKG_CONFIG_NO_MULTI_LOCAL}/pkgconfig")
+  ENDIF(NOT PKG_CONFIG_NO_MULTI_LOCAL STREQUAL PKG_CONFIG_NO_MULTI_LOCAL-NOTFOUND) 
+
+  # Also add some non-architecture specific package locations.
+  SET(VALID_PKG_LIBDIRS "${VALID_PKG_LIBDIRS}:/usr/share/pkgconfig:/usr/local/share/pkgconfig")
+
+  # Remove first unwanted ':'
+  string(SUBSTRING ${VALID_PKG_LIBDIRS} 1 -1 VALID_PKG_LIBDIRS)
+
+  # Set PKG_CONFIG_LIBDIR environment.
+  SET(ENV{PKG_CONFIG_LIBDIR} ${VALID_PKG_LIBDIRS})
+ENDIF("$ENV{PKG_CONFIG_LIBDIR}" STREQUAL "")
+
+IF(DEBUG_PKG_CONFIG)
+  MESSAGE(STATUS "Using PKG_CONFIG_LIBDIR=$ENV{PKG_CONFIG_LIBDIR}")
+ENDIF(DEBUG_PKG_CONFIG)
+
diff --git a/indra/cmake/LLWindow.cmake b/indra/cmake/LLWindow.cmake
index f6c40c174c3..0def507e659 100644
--- a/indra/cmake/LLWindow.cmake
+++ b/indra/cmake/LLWindow.cmake
@@ -14,7 +14,6 @@ if (STANDALONE)
       SDL_LIBRARY
       )
 else (STANDALONE)
-  use_prebuilt_binary(mesa)
   if (LINUX)
     use_prebuilt_binary(SDL)
     set (SDL_FOUND TRUE)
diff --git a/indra/cmake/OpenGL.cmake b/indra/cmake/OpenGL.cmake
index 742d8e25a04..2259c992935 100644
--- a/indra/cmake/OpenGL.cmake
+++ b/indra/cmake/OpenGL.cmake
@@ -4,7 +4,6 @@ include(Variables)
 include(Prebuilt)
 
 if (BUILD_HEADLESS)
-  use_prebuilt_binary(mesa)
   SET(OPENGL_glu_LIBRARY GLU)
   SET(OPENGL_HEADLESS_LIBRARIES OSMesa16 dl GLU)
 endif (BUILD_HEADLESS)
diff --git a/indra/cmake/Variables.cmake b/indra/cmake/Variables.cmake
index 895b3003db4..54c77da64e3 100644
--- a/indra/cmake/Variables.cmake
+++ b/indra/cmake/Variables.cmake
@@ -70,10 +70,6 @@ endif (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
 if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
   set(LINUX ON BOOl FORCE)
 
-  if (INSTALL_PROPRIETARY)
-    set(BUILD_HEADLESS ON CACHE BOOL "Build headless libraries.")
-  endif (INSTALL_PROPRIETARY)
-
   # If someone has specified a word size, use that to determine the
   # architecture.  Otherwise, let the architecture specify the word size.
   if (WORD_SIZE EQUAL 32)
@@ -97,18 +93,37 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
 
   if (WORD_SIZE EQUAL 32)
     set(DEB_ARCHITECTURE i386)
+    set(FIND_LIBRARY_USE_LIB64_PATHS OFF)
+    set(CMAKE_SYSTEM_LIBRARY_PATH /usr/lib32 ${CMAKE_SYSTEM_LIBRARY_PATH})
   else (WORD_SIZE EQUAL 32)
     set(DEB_ARCHITECTURE amd64)
+    set(FIND_LIBRARY_USE_LIB64_PATHS ON)
   endif (WORD_SIZE EQUAL 32)
 
-  execute_process(COMMAND dpkg-architecture -a${DEB_ARCHITECTURE} -qDEB_HOST_MULTIARCH RESULT_VARIABLE DPKG_RESULT OUTPUT_VARIABLE DPKG_ARCH OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
+  execute_process(COMMAND dpkg-architecture -a${DEB_ARCHITECTURE} -qDEB_HOST_MULTIARCH 
+      RESULT_VARIABLE DPKG_RESULT
+      OUTPUT_VARIABLE DPKG_ARCH
+      OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
   #message (STATUS "DPKG_RESULT ${DPKG_RESULT}, DPKG_ARCH ${DPKG_ARCH}")
   if (DPKG_RESULT EQUAL 0)
     set(CMAKE_LIBRARY_ARCHITECTURE ${DPKG_ARCH})
+    set(CMAKE_SYSTEM_LIBRARY_PATH /usr/lib/${DPKG_ARCH} /usr/local/lib/${DPKG_ARCH} ${CMAKE_SYSTEM_LIBRARY_PATH})
   endif (DPKG_RESULT EQUAL 0)
 
+  include(ConfigurePkgConfig)
+
   set(LL_ARCH ${ARCH}_linux)
   set(LL_ARCH_DIR ${ARCH}-linux)
+
+  if (INSTALL_PROPRIETARY)
+    # Only turn on headless if we can find osmesa libraries.
+    include(FindPkgConfig)
+    pkg_check_modules(OSMESA osmesa)
+    if (OSMESA_FOUND)
+      set(BUILD_HEADLESS ON CACHE BOOL "Build headless libraries.")
+    endif (OSMESA_FOUND)
+  endif (INSTALL_PROPRIETARY)
+
 endif (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
 
 if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
-- 
GitLab


From e5c38b3b61f55674f602bb0e7d43baa3e04d541f Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Thu, 25 Oct 2012 16:44:01 -0400
Subject: [PATCH 149/436] SH-3469 FIX - discard new-style updates for self with
 cof version = 0. This removes a race condition that was causing us to
 mis-handle region crossing logic

---
 indra/newview/llvoavatar.cpp | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index b08226fe941..168a116b95f 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -6416,9 +6416,8 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 
 	// Check for stale update.
 	if (isSelf()
-		&& isUsingServerBakes()
-		&& this_update_cof_version >= LLViewerInventoryCategory::VERSION_INITIAL
-		&& this_update_cof_version < last_update_request_cof_version)
+		&& (appearance_version>0)
+		&& (this_update_cof_version < last_update_request_cof_version))
 	{
 		llwarns << "Stale appearance update, wanted version " << last_update_request_cof_version
 				<< ", got " << this_update_cof_version << llendl;
-- 
GitLab


From 3aeff074cfc2f14b661b96bc0664087a95a99eff Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Fri, 26 Oct 2012 18:27:08 -0400
Subject: [PATCH 150/436] SH-3469 FIX - use callback mechanism to handle
 possible race between getting caps and setting agent region

---
 indra/newview/llagent.cpp         | 23 +++++++++++++++++++----
 indra/newview/llagent.h           |  1 +
 indra/newview/llappearancemgr.cpp |  4 ++++
 3 files changed, 24 insertions(+), 4 deletions(-)
 mode change 100644 => 100755 indra/newview/llagent.h

diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index 9eb2723dcfd..c49caf93be7 100755
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -809,6 +809,18 @@ void LLAgent::standUp()
 }
 
 
+void LLAgent::handleServerBakeRegionTransition(const LLUUID& region_id)
+{
+	llinfos << "called" << llendl;
+
+	if (isAgentAvatarValid() &&
+		!gAgentAvatarp->isUsingServerBakes() &&
+		(mRegionp->getCentralBakeVersion()>0))
+	{
+		LLAppearanceMgr::instance().requestServerAppearanceUpdate();
+	}
+}
+
 //-----------------------------------------------------------------------------
 // setRegion()
 //-----------------------------------------------------------------------------
@@ -908,11 +920,14 @@ void LLAgent::setRegion(LLViewerRegion *regionp)
 	// If the newly entered region is using server bakes, and our
 	// current appearance is non-baked, request appearance update from
 	// server.
-	if (isAgentAvatarValid() &&
-		!gAgentAvatarp->isUsingServerBakes() &&
-		(mRegionp->getCentralBakeVersion()>0))
+	if (mRegionp->capabilitiesReceived())
 	{
-		LLAppearanceMgr::instance().requestServerAppearanceUpdate();
+		handleServerBakeRegionTransition(mRegionp->getRegionID());
+	}
+	else
+	{
+		// Need to handle via callback after caps arrive.
+		mRegionp->setCapabilitiesReceivedCallback(boost::bind(&LLAgent::handleServerBakeRegionTransition,this,_1));
 	}
 }
 
diff --git a/indra/newview/llagent.h b/indra/newview/llagent.h
old mode 100644
new mode 100755
index ae5efb22870..693c123851b
--- a/indra/newview/llagent.h
+++ b/indra/newview/llagent.h
@@ -610,6 +610,7 @@ class LLAgent : public LLOldEvents::LLObservable
 
 	void            handleTeleportFinished();
 	void            handleTeleportFailed();
+	void			handleServerBakeRegionTransition(const LLUUID& region_id);
 
 	//--------------------------------------------------------------------
 	// Teleport State
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index c57269d0b00..7a8586ebdc1 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -2677,6 +2677,10 @@ void LLAppearanceMgr::requestServerAppearanceUpdate()
 	{
 		llwarns << "Region not set, cannot request server appearance update" << llendl;
 	}
+	if (gAgent.getRegion()->getCentralBakeVersion()==0)
+	{
+		llwarns << "Region does not support baking" << llendl;
+	}
 	std::string url = gAgent.getRegion()->getCapability("UpdateAvatarAppearance");	
 	if (url.empty())
 	{
-- 
GitLab


From 866ea1dc44fb15a13e8297a1cd079297e7ddbfb9 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Mon, 29 Oct 2012 18:05:50 -0400
Subject: [PATCH 151/436] Fix for general graphical glitching on some cards

---
 indra/llappearance/lltexlayer.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
 mode change 100644 => 100755 indra/llappearance/lltexlayer.cpp

diff --git a/indra/llappearance/lltexlayer.cpp b/indra/llappearance/lltexlayer.cpp
old mode 100644
new mode 100755
index c44799f40da..a65b9e83c6f
--- a/indra/llappearance/lltexlayer.cpp
+++ b/indra/llappearance/lltexlayer.cpp
@@ -1121,7 +1121,7 @@ BOOL LLTexLayer::render(S32 x, S32 y, S32 width, S32 height)
 	//gPipeline.disableLights();
 	stop_glerror();
 	glDisable(GL_LIGHTING);
-	glEnable(GL_ALPHA_TEST);
+	LLGLEnable(GL_ALPHA_TEST);
 	stop_glerror();
 
 	bool use_shaders = LLGLSLShader::sNoFixedFunction;
-- 
GitLab


From d4dc41dbd5b54501fcb3c94e07e4753ed4196eac Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Thu, 1 Nov 2012 14:19:00 -0400
Subject: [PATCH 152/436] misc error detection, debug coloration for avatar
 meshes

---
 indra/llmessage/llurlrequest.cpp              |  4 ++
 indra/newview/llappearancemgr.cpp             |  4 +-
 .../llinventorymodelbackgroundfetch.cpp       |  2 +-
 indra/newview/lltexturefetch.cpp              |  2 +-
 indra/newview/llviewerregion.cpp              |  5 ++
 indra/newview/llviewertexture.cpp             |  6 +-
 indra/newview/llvoavatar.cpp                  | 56 ++++++++++---------
 indra/newview/llvoavatar.h                    |  1 +
 8 files changed, 50 insertions(+), 30 deletions(-)
 mode change 100644 => 100755 indra/llmessage/llurlrequest.cpp
 mode change 100644 => 100755 indra/newview/llviewertexture.cpp

diff --git a/indra/llmessage/llurlrequest.cpp b/indra/llmessage/llurlrequest.cpp
old mode 100644
new mode 100755
index f3f00072054..8c0ad352049
--- a/indra/llmessage/llurlrequest.cpp
+++ b/indra/llmessage/llurlrequest.cpp
@@ -181,6 +181,10 @@ void LLURLRequest::setURL(const std::string& url)
 {
 	LLMemType m1(LLMemType::MTYPE_IO_URL_REQUEST);
 	mDetail->mURL = url;
+	if (url.empty())
+	{
+		llwarns << "empty URL specified" << llendl;
+	}
 }
 
 std::string LLURLRequest::getURL() const
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 7a8586ebdc1..51de2fd17b3 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -1750,6 +1750,8 @@ void LLAppearanceMgr::updateAppearanceFromCOF(bool update_base_outfit_ordering)
 	{
 		requestServerAppearanceUpdate();
 	}
+	// DRANO really should wait for the appearance message to set this.
+	// verify that deleting this line doesn't break anything.
 	gAgentAvatarp->setIsUsingServerBakes(gAgent.getRegion() && gAgent.getRegion()->getCentralBakeVersion());
 	
 	//dumpCat(getCOF(),"COF, start");
@@ -2684,7 +2686,7 @@ void LLAppearanceMgr::requestServerAppearanceUpdate()
 	std::string url = gAgent.getRegion()->getCapability("UpdateAvatarAppearance");	
 	if (url.empty())
 	{
-		llwarns << "NO CAP for UpdateAvatarAppearance. This is a bug." << llendl;
+		llwarns << "No cap for UpdateAvatarAppearance." << llendl;
 		return;
 	}
 	
diff --git a/indra/newview/llinventorymodelbackgroundfetch.cpp b/indra/newview/llinventorymodelbackgroundfetch.cpp
index f4d0110b0f4..eb92902de9a 100644
--- a/indra/newview/llinventorymodelbackgroundfetch.cpp
+++ b/indra/newview/llinventorymodelbackgroundfetch.cpp
@@ -183,7 +183,7 @@ void LLInventoryModelBackgroundFetch::backgroundFetchCB(void *)
 
 void LLInventoryModelBackgroundFetch::backgroundFetch()
 {
-	if (mBackgroundFetchActive && gAgent.getRegion())
+	if (mBackgroundFetchActive && gAgent.getRegion() && gAgent.getRegion()->capabilitiesReceived())
 	{
 		// If we'll be using the capability, we'll be sending batches and the background thing isn't as important.
 		if (gSavedSettings.getBOOL("UseHTTPInventory")) 
diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp
index db08c16f15b..43bfb4442bf 100644
--- a/indra/newview/lltexturefetch.cpp
+++ b/indra/newview/lltexturefetch.cpp
@@ -351,7 +351,7 @@ class HTTPGetResponder : public LLCurl::Responder
 			if (!success)
 			{
 				worker->setGetStatus(status, reason);
-// 				llwarns << "CURL GET FAILED, status:" << status << " reason:" << reason << llendl;
+ 				llwarns << "CURL GET FAILED, status:" << status << " reason:" << reason << " id: " << mID <<llendl;
 			}
 			
 			data_size = worker->callbackHttpGet(channels, buffer, partial, success);
diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp
index 0855bc9243e..c8ab055e3f7 100755
--- a/indra/newview/llviewerregion.cpp
+++ b/indra/newview/llviewerregion.cpp
@@ -1745,6 +1745,11 @@ bool LLViewerRegion::isSpecialCapabilityName(const std::string &name)
 
 std::string LLViewerRegion::getCapability(const std::string& name) const
 {
+	if (!capabilitiesReceived() && (name!=std::string("Seed")))
+	{
+		llwarns << "getCapability called before caps received" << llendl;
+	}
+	
 	CapabilityMap::const_iterator iter = mImpl->mCapabilities.find(name);
 	if(iter == mImpl->mCapabilities.end())
 	{
diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp
old mode 100644
new mode 100755
index a73ce1d1151..37f2fd35206
--- a/indra/newview/llviewertexture.cpp
+++ b/indra/newview/llviewertexture.cpp
@@ -1946,8 +1946,10 @@ void LLViewerFetchedTexture::setIsMissingAsset()
 	}
 	else
 	{
-		//it is normal no map tile on an empty region.
-		//llwarns << mUrl << ": Marking image as missing" << llendl;
+		// This may or may not be an error - it is normal to have no
+		// map tile on an empty region, but bad if we're failing on a
+		// server bake texture.
+		llwarns << mUrl << ": Marking image as missing" << llendl;
 	}
 	if (mHasFetcher)
 	{
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 168a116b95f..ed5b332e268 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -5767,6 +5767,25 @@ LLMotion* LLVOAvatar::findMotion(const LLUUID& id) const
 	return mMotionController.findMotion(id);
 }
 
+void LLVOAvatar::debugColorizeSubMeshes(U32 i, const LLColor4& color)
+{
+	if (gSavedSettings.getBOOL("DebugAvatarCompositeBaked"))
+	{
+		avatar_joint_mesh_list_t::iterator iter = mBakedTextureDatas[i].mJointMeshes.begin();
+		avatar_joint_mesh_list_t::iterator end  = mBakedTextureDatas[i].mJointMeshes.end();
+		for (; iter != end; ++iter)
+		{
+			LLAvatarJointMesh* mesh = (*iter);
+			if (mesh)
+			{
+				{
+					mesh->setColor(color);
+				}
+			}
+		}
+	}
+}
+
 //-----------------------------------------------------------------------------
 // updateMeshTextures()
 // Uses the current TE values to set the meshes' and layersets' textures.
@@ -5831,6 +5850,8 @@ void LLVOAvatar::updateMeshTextures()
 	
 	for (U32 i=0; i < mBakedTextureDatas.size(); i++)
 	{
+		debugColorizeSubMeshes(i, LLColor4::white);
+
 		LLViewerTexLayerSet* layerset = getTexLayerSet(i);
 		if (use_lkg_baked_layer[i] && !isUsingLocalAppearance() )
 		{
@@ -5853,6 +5874,9 @@ void LLVOAvatar::updateMeshTextures()
 			}
 
 			mBakedTextureDatas[i].mIsUsed = TRUE;
+
+			debugColorizeSubMeshes(i,LLColor4::red);
+
 			avatar_joint_mesh_list_t::iterator iter = mBakedTextureDatas[i].mJointMeshes.begin();
 			avatar_joint_mesh_list_t::iterator end  = mBakedTextureDatas[i].mJointMeshes.end();
 			for (; iter != end; ++iter)
@@ -5861,10 +5885,6 @@ void LLVOAvatar::updateMeshTextures()
 				if (mesh)
 				{
 					mesh->setTexture( baked_img );
-					if (gSavedSettings.getBOOL("DebugAvatarCompositeBaked"))
-					{
-						mesh->setColor(LLColor4::red);
-					}
 				}
 			}
 		}
@@ -5890,9 +5910,12 @@ void LLVOAvatar::updateMeshTextures()
 		}
 		else if (layerset && isUsingLocalAppearance())
 		{
+			debugColorizeSubMeshes(i,LLColor4::yellow );
+
 			layerset->createComposite();
 			layerset->setUpdatesEnabled( TRUE );
 			mBakedTextureDatas[i].mIsUsed = FALSE;
+
 			avatar_joint_mesh_list_t::iterator iter = mBakedTextureDatas[i].mJointMeshes.begin();
 			avatar_joint_mesh_list_t::iterator end  = mBakedTextureDatas[i].mJointMeshes.end();
 			for (; iter != end; ++iter)
@@ -5901,28 +5924,12 @@ void LLVOAvatar::updateMeshTextures()
 				if (mesh)
 				{
 					mesh->setLayerSet( layerset );
-					if (gSavedSettings.getBOOL("DebugAvatarCompositeBaked"))
-					{
-						mesh->setColor( LLColor4::yellow );
-					}
 				}
 			}
 		}
 		else
 		{
-			if (gSavedSettings.getBOOL("DebugAvatarCompositeBaked"))
-			{
-				avatar_joint_mesh_list_t::iterator iter = mBakedTextureDatas[i].mJointMeshes.begin();
-				avatar_joint_mesh_list_t::iterator end  = mBakedTextureDatas[i].mJointMeshes.end();
-				for (; iter != end; ++iter)
-				{
-					LLAvatarJointMesh* mesh = (*iter);
-					if (mesh)
-					{
-						mesh->setColor( LLColor4::blue );
-					}
-				}
-			}
+			debugColorizeSubMeshes(i,LLColor4::blue);
 		}
 	}
 
@@ -6768,6 +6775,9 @@ void LLVOAvatar::useBakedTexture( const LLUUID& id )
 			mBakedTextureDatas[i].mIsLoaded = true;
 			mBakedTextureDatas[i].mLastTextureIndex = id;
 			mBakedTextureDatas[i].mIsUsed = true;
+
+			debugColorizeSubMeshes(i,LLColor4::green);
+
 			avatar_joint_mesh_list_t::iterator iter = mBakedTextureDatas[i].mJointMeshes.begin();
 			avatar_joint_mesh_list_t::iterator end  = mBakedTextureDatas[i].mJointMeshes.end();
 			for (; iter != end; ++iter)
@@ -6776,10 +6786,6 @@ void LLVOAvatar::useBakedTexture( const LLUUID& id )
 				if (mesh)
 				{
 					mesh->setTexture( image_baked );
-					if (gSavedSettings.getBOOL("DebugAvatarCompositeBaked"))
-					{
-						mesh->setColor( LLColor4::green );
-					}
 				}
 			}
 			if (mBakedTextureDatas[i].mTexLayerSet)
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
index 5f858a2bea5..8f3811f1847 100755
--- a/indra/newview/llvoavatar.h
+++ b/indra/newview/llvoavatar.h
@@ -595,6 +595,7 @@ class LLVOAvatar :
  **/
 
 public:
+	void			debugColorizeSubMeshes(U32 i, const LLColor4& color);
 	virtual void 	updateMeshTextures();
 	void 			updateSexDependentLayerSets(BOOL upload_bake);
 	virtual void	dirtyMesh(); // Dirty the avatar mesh
-- 
GitLab


From 9dd856e37eb9c80701053f0c1a2c0b268f56f5f2 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Fri, 2 Nov 2012 18:07:07 -0400
Subject: [PATCH 153/436] SH-3429 WIP - Added adaptive retry mechanism for
 failed appearance update requests

---
 indra/newview/llappearancemgr.cpp | 85 +++++++++++++++++++++++++++++--
 indra/newview/llappearancemgr.h   |  2 +-
 indra/newview/llcallbacklist.cpp  | 49 ++++++++++++++++++
 indra/newview/llcallbacklist.h    |  6 +++
 4 files changed, 137 insertions(+), 5 deletions(-)
 mode change 100644 => 100755 indra/newview/llcallbacklist.cpp

diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 51de2fd17b3..b2a8a33ecff 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -2652,12 +2652,70 @@ void LLAppearanceMgr::updateClothingOrderingInfo(LLUUID cat_id, bool update_base
 	if (inventory_changed) gInventory.notifyObservers();
 }
 
+// This is intended for use with HTTP Clients/Responders, but is not
+// specifically coupled with those classes.
+class LLHTTPRetryPolicy: public LLThreadSafeRefCount
+{
+public:
+	LLHTTPRetryPolicy() {}
+	virtual ~LLHTTPRetryPolicy() {}
+	virtual bool shouldRetry(U32 status, F32& seconds_to_wait) = 0;
+};
+
+// Example of simplest possible policy, not necessarily recommended.
+class LLAlwaysRetryImmediatelyPolicy: public LLHTTPRetryPolicy
+{
+public:
+	LLAlwaysRetryImmediatelyPolicy() {}
+	bool shouldRetry(U32 status, F32& seconds_to_wait)
+	{
+		seconds_to_wait = 0.0;
+		return true;
+	}
+};
+
+// Very general policy with geometric back-off after failures,
+// up to a maximum delay, and maximum number of retries.
+class LLAdaptiveRetryPolicy: public LLHTTPRetryPolicy
+{
+public:
+	LLAdaptiveRetryPolicy(F32 min_delay, F32 max_delay, F32 backoff_factor, U32 max_retries):
+		mMinDelay(min_delay),
+		mMaxDelay(max_delay),
+		mBackoffFactor(backoff_factor),
+		mMaxRetries(max_retries),
+		mDelay(min_delay),
+		mRetryCount(0)
+	{
+	}
+
+	bool shouldRetry(U32 status, F32& seconds_to_wait)
+	{
+		seconds_to_wait = mDelay;
+		mDelay = llclamp(mDelay*mBackoffFactor,mMinDelay,mMaxDelay);
+		mRetryCount++;
+		return (mRetryCount<=mMaxRetries);
+	}
+
+private:
+	F32 mMinDelay; // delay never less than this value
+	F32 mMaxDelay; // delay never exceeds this value
+	F32 mBackoffFactor; // delay increases by this factor after each retry, up to mMaxDelay.
+	U32 mMaxRetries; // maximum number of times shouldRetry will return true.
+	F32 mDelay; // current delay.
+	U32 mRetryCount; // number of times shouldRetry has been called.
+};
+
 class RequestAgentUpdateAppearanceResponder: public LLHTTPClient::Responder
 {
 public:
 	RequestAgentUpdateAppearanceResponder()
 	{
-		llinfos << "request created" << llendl;
+		mRetryPolicy = new LLAdaptiveRetryPolicy(1.0, 16.0, 2.0, 5);
+	}
+
+	virtual ~RequestAgentUpdateAppearanceResponder()
+	{
 	}
 
 	// Successful completion.
@@ -2669,11 +2727,25 @@ class RequestAgentUpdateAppearanceResponder: public LLHTTPClient::Responder
 	// Error
 	/*virtual*/ void error(U32 status, const std::string& reason)
 	{
-		llwarns << "appearance update request failed, reason: " << reason << llendl;
+		llwarns << "appearance update request failed, status: " << status << " reason: " << reason << llendl;
+		F32 seconds_to_wait;
+		if (mRetryPolicy->shouldRetry(status,seconds_to_wait))
+		{
+			doAfterInterval(boost::bind(&LLAppearanceMgr::requestServerAppearanceUpdate,
+										LLAppearanceMgr::getInstance(),
+										LLCurl::ResponderPtr(this)),
+							seconds_to_wait);
+		}
+		else
+		{
+			llwarns << "giving up after too many retries" << llendl;
+		}
 	}	
+
+	LLPointer<LLHTTPRetryPolicy> mRetryPolicy;
 };
 
-void LLAppearanceMgr::requestServerAppearanceUpdate()
+void LLAppearanceMgr::requestServerAppearanceUpdate(LLCurl::ResponderPtr responder_ptr)
 {
 	if (!gAgent.getRegion())
 	{
@@ -2693,7 +2765,12 @@ void LLAppearanceMgr::requestServerAppearanceUpdate()
 	LLSD body;
 	S32 cof_version = getCOFVersion();
 	body["cof_version"] = cof_version;
-	LLHTTPClient::post(url, body, new RequestAgentUpdateAppearanceResponder);
+	//LLCurl::ResponderPtr responder_ptr;
+	if (!responder_ptr.get())
+	{
+		responder_ptr = new RequestAgentUpdateAppearanceResponder;
+	}
+	LLHTTPClient::post(url, body, responder_ptr);
 	llassert(cof_version >= mLastUpdateRequestCOFVersion);
 	mLastUpdateRequestCOFVersion = cof_version;
 }
diff --git a/indra/newview/llappearancemgr.h b/indra/newview/llappearancemgr.h
index 4baee10218c..01ed66711c2 100755
--- a/indra/newview/llappearancemgr.h
+++ b/indra/newview/llappearancemgr.h
@@ -187,7 +187,7 @@ class LLAppearanceMgr: public LLSingleton<LLAppearanceMgr>
 
 	bool isInUpdateAppearanceFromCOF() { return mIsInUpdateAppearanceFromCOF; }
 
-	void requestServerAppearanceUpdate();
+	void requestServerAppearanceUpdate(LLCurl::ResponderPtr responder_ptr = NULL);
 
 protected:
 	LLAppearanceMgr();
diff --git a/indra/newview/llcallbacklist.cpp b/indra/newview/llcallbacklist.cpp
old mode 100644
new mode 100755
index 357a6582d16..79ec43dfe92
--- a/indra/newview/llcallbacklist.cpp
+++ b/indra/newview/llcallbacklist.cpp
@@ -27,6 +27,7 @@
 #include "llviewerprecompiledheaders.h"
 
 #include "llcallbacklist.h"
+#include "lleventtimer.h"
 
 // Library includes
 #include "llerror.h"
@@ -180,6 +181,54 @@ void doOnIdleRepeating(bool_func_t callable)
 	gIdleCallbacks.addFunction(&OnIdleCallbackRepeating::onIdle,cb_functor);
 }
 
+class NullaryFuncEventTimer: public LLEventTimer
+{
+public:
+	NullaryFuncEventTimer(nullary_func_t callable, F32 seconds):
+		LLEventTimer(seconds),
+		mCallable(callable)
+	{
+	}
+
+private:
+	BOOL tick()
+	{
+		mCallable();
+		return TRUE;
+	}
+
+	nullary_func_t mCallable;
+};
+
+// Call a given callable once after specified interval.
+void doAfterInterval(nullary_func_t callable, F32 seconds)
+{
+	new NullaryFuncEventTimer(callable, seconds);
+}
+
+class BoolFuncEventTimer: public LLEventTimer
+{
+public:
+	BoolFuncEventTimer(bool_func_t callable, F32 seconds):
+		LLEventTimer(seconds),
+		mCallable(callable)
+	{
+	}
+private:
+	BOOL tick()
+	{
+		return mCallable();
+	}
+
+	bool_func_t mCallable;
+};
+
+// Call a given callable every specified number of seconds, until it returns true.
+void doPeriodically(bool_func_t callable, F32 seconds)
+{
+	new BoolFuncEventTimer(callable, seconds);
+}
+
 #ifdef _DEBUG
 
 void test1(void *data)
diff --git a/indra/newview/llcallbacklist.h b/indra/newview/llcallbacklist.h
index 97f3bfd9ee2..0516c9cdb44 100644
--- a/indra/newview/llcallbacklist.h
+++ b/indra/newview/llcallbacklist.h
@@ -61,6 +61,12 @@ void doOnIdleOneTime(nullary_func_t callable);
 // Repeatedly call a callable in idle loop until it returns true.
 void doOnIdleRepeating(bool_func_t callable);
 
+// Call a given callable once after specified interval.
+void doAfterInterval(nullary_func_t callable, F32 seconds);
+
+// Call a given callable every specified number of seconds, until it returns true.
+void doPeriodically(bool_func_t callable, F32 seconds);
+
 extern LLCallbackList gIdleCallbacks;
 
 #endif
-- 
GitLab


From 6d085486bd972406d153beec79449ec30b5a91ff Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Mon, 5 Nov 2012 17:36:56 -0500
Subject: [PATCH 154/436] small logging tweak

---
 indra/newview/llappearancemgr.cpp | 1 +
 1 file changed, 1 insertion(+)

diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index b2a8a33ecff..4e103bb75e9 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -2731,6 +2731,7 @@ class RequestAgentUpdateAppearanceResponder: public LLHTTPClient::Responder
 		F32 seconds_to_wait;
 		if (mRetryPolicy->shouldRetry(status,seconds_to_wait))
 		{
+			llinfos << "retrying" << llendl;
 			doAfterInterval(boost::bind(&LLAppearanceMgr::requestServerAppearanceUpdate,
 										LLAppearanceMgr::getInstance(),
 										LLCurl::ResponderPtr(this)),
-- 
GitLab


From ee2bc008ea8f04ffd1271787382a2b756e6293aa Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Mon, 5 Nov 2012 18:02:03 -0500
Subject: [PATCH 155/436] renamed a confusingly-named field

---
 indra/llappearance/llavatarappearance.cpp |  2 +-
 indra/llappearance/llavatarappearance.h   |  2 +-
 indra/newview/llvoavatar.cpp              | 20 ++++++++++----------
 3 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/indra/llappearance/llavatarappearance.cpp b/indra/llappearance/llavatarappearance.cpp
index 3c01a00e618..c4ff667fa19 100755
--- a/indra/llappearance/llavatarappearance.cpp
+++ b/indra/llappearance/llavatarappearance.cpp
@@ -175,7 +175,7 @@ LLAvatarAppearance::LLAvatarAppearance(LLWearableData* wearable_data) :
 	mBakedTextureDatas.resize(LLAvatarAppearanceDefines::BAKED_NUM_INDICES);
 	for (U32 i = 0; i < mBakedTextureDatas.size(); i++ )
 	{
-		mBakedTextureDatas[i].mLastTextureIndex = IMG_DEFAULT_AVATAR;
+		mBakedTextureDatas[i].mLastTextureID = IMG_DEFAULT_AVATAR;
 		mBakedTextureDatas[i].mTexLayerSet = NULL;
 		mBakedTextureDatas[i].mIsLoaded = false;
 		mBakedTextureDatas[i].mIsUsed = false;
diff --git a/indra/llappearance/llavatarappearance.h b/indra/llappearance/llavatarappearance.h
index abe3599685a..11ea5e5a464 100755
--- a/indra/llappearance/llavatarappearance.h
+++ b/indra/llappearance/llavatarappearance.h
@@ -308,7 +308,7 @@ class LLAvatarAppearance : public LLCharacter
 	typedef std::deque<LLMaskedMorph *> 	morph_list_t;
 	struct BakedTextureData
 	{
-		LLUUID								mLastTextureIndex;
+		LLUUID								mLastTextureID;
 		LLTexLayerSet*		 				mTexLayerSet; // Only exists for self
 		bool								mIsLoaded;
 		bool								mIsUsed;
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index ed5b332e268..75e71a7613c 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -5833,7 +5833,7 @@ void LLVOAvatar::updateMeshTextures()
 										  && ( !layerset->getViewerComposite()->isInitialized()
 										  || !layerset->isLocalTextureDataAvailable() );
 			use_lkg_baked_layer[i] = (!is_layer_baked[i] 
-									  && (mBakedTextureDatas[i].mLastTextureIndex != IMG_DEFAULT_AVATAR) 
+									  && (mBakedTextureDatas[i].mLastTextureID != IMG_DEFAULT_AVATAR) 
 									  && layerset_invalid);
 			if (use_lkg_baked_layer[i])
 			{
@@ -5843,7 +5843,7 @@ void LLVOAvatar::updateMeshTextures()
 		else
 		{
 			use_lkg_baked_layer[i] = (!is_layer_baked[i] 
-									  && mBakedTextureDatas[i].mLastTextureIndex != IMG_DEFAULT_AVATAR);
+									  && mBakedTextureDatas[i].mLastTextureID != IMG_DEFAULT_AVATAR);
 		}
 
 	}
@@ -5856,10 +5856,10 @@ void LLVOAvatar::updateMeshTextures()
 		if (use_lkg_baked_layer[i] && !isUsingLocalAppearance() )
 		{
 			LLViewerFetchedTexture* baked_img;
-			const std::string url = getImageURL(i, mBakedTextureDatas[i].mLastTextureIndex);
+			const std::string url = getImageURL(i, mBakedTextureDatas[i].mLastTextureID);
 			if (!url.empty())
 			{
-				baked_img = LLViewerTextureManager::getFetchedTextureFromUrl(url, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE, 0, 0, mBakedTextureDatas[i].mLastTextureIndex);
+				baked_img = LLViewerTextureManager::getFetchedTextureFromUrl(url, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE, 0, 0, mBakedTextureDatas[i].mLastTextureID);
 			}
 			else
 			{
@@ -5870,7 +5870,7 @@ void LLVOAvatar::updateMeshTextures()
 					llwarns << "updateMeshTextures: invalid host for object: " << getID() << llendl;
 				}
 
-				baked_img = LLViewerTextureManager::getFetchedTextureFromHost( mBakedTextureDatas[i].mLastTextureIndex, target_host );
+				baked_img = LLViewerTextureManager::getFetchedTextureFromHost( mBakedTextureDatas[i].mLastTextureID, target_host );
 			}
 
 			mBakedTextureDatas[i].mIsUsed = TRUE;
@@ -5891,7 +5891,7 @@ void LLVOAvatar::updateMeshTextures()
 		else if (!isUsingLocalAppearance() && is_layer_baked[i])
 		{
 			LLViewerFetchedTexture* baked_img = LLViewerTextureManager::staticCastToFetchedTexture(getImage( mBakedTextureDatas[i].mTextureIndex, 0 ), TRUE) ;
-			if( baked_img->getID() == mBakedTextureDatas[i].mLastTextureIndex )
+			if( baked_img->getID() == mBakedTextureDatas[i].mLastTextureID )
 			{
 				// Even though the file may not be finished loading, we'll consider it loaded and use it (rather than doing compositing).
 				useBakedTexture( baked_img->getID() );
@@ -6248,7 +6248,7 @@ void LLVOAvatar::onFirstTEMessageReceived()
 			if (layer_baked)
 			{
 				LLViewerFetchedTexture* image = LLViewerTextureManager::staticCastToFetchedTexture(getImage( mBakedTextureDatas[i].mTextureIndex, 0 ), TRUE) ;
-				mBakedTextureDatas[i].mLastTextureIndex = image->getID();
+				mBakedTextureDatas[i].mLastTextureID = image->getID();
 				// If we have more than one texture for the other baked layers, we'll want to call this for them too.
 				if ( (image->getID() != IMG_INVISIBLE) && ((i == BAKED_HEAD) || (i == BAKED_UPPER) || (i == BAKED_LOWER)) )
 				{
@@ -6439,11 +6439,11 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 	for (U8 baked_index = 0; baked_index < mBakedTextureDatas.size(); baked_index++)
 	{
 		if (!isTextureDefined(mBakedTextureDatas[baked_index].mTextureIndex) 
-			&& mBakedTextureDatas[baked_index].mLastTextureIndex != IMG_DEFAULT
+			&& mBakedTextureDatas[baked_index].mLastTextureID != IMG_DEFAULT
 			&& baked_index != BAKED_SKIRT)
 		{
 			setTEImage(mBakedTextureDatas[baked_index].mTextureIndex, 
-				LLViewerTextureManager::getFetchedTexture(mBakedTextureDatas[baked_index].mLastTextureIndex, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE));
+				LLViewerTextureManager::getFetchedTexture(mBakedTextureDatas[baked_index].mLastTextureID, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE));
 		}
 	}
 
@@ -6773,7 +6773,7 @@ void LLVOAvatar::useBakedTexture( const LLUUID& id )
 		{
 			LL_DEBUGS("Avatar") << avString() << " i " << i << " id " << id << LL_ENDL;
 			mBakedTextureDatas[i].mIsLoaded = true;
-			mBakedTextureDatas[i].mLastTextureIndex = id;
+			mBakedTextureDatas[i].mLastTextureID = id;
 			mBakedTextureDatas[i].mIsUsed = true;
 
 			debugColorizeSubMeshes(i,LLColor4::green);
-- 
GitLab


From 85e03582b21aef8a74613d14d5dcde63cf476cdb Mon Sep 17 00:00:00 2001
From: "Nyx (Neal Orman)" <nyx@lindenlab.com>
Date: Tue, 6 Nov 2012 18:18:12 -0500
Subject: [PATCH 156/436] updating appearance utility package

---
 autobuild.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index 5d30c662b6c..ec71aa6f555 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -1290,9 +1290,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>adf0a54dab1bbd9ffc7b8d20173f72d6</string>
+              <string>77467c492c9fba1ae68ae630e92d8cb1</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/266247/arch/Linux/installer/llappearanceutility_source-0.1-linux-20121024.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/266679/arch/Linux/installer/llappearanceutility_source-0.1-linux-20121106.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
-- 
GitLab


From 2a9448f90aa195f01e3756cb48c55ca759aa0f29 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Wed, 7 Nov 2012 10:51:51 -0500
Subject: [PATCH 157/436] SH-3500 FIX - removed an overzealous warning message

---
 indra/llcharacter/llvisualparam.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/llcharacter/llvisualparam.cpp b/indra/llcharacter/llvisualparam.cpp
index 826f76bae02..d80dfb8c215 100755
--- a/indra/llcharacter/llvisualparam.cpp
+++ b/indra/llcharacter/llvisualparam.cpp
@@ -334,7 +334,7 @@ void LLVisualParam::setParamLocation(EParamLocation loc)
 	}
 	else
 	{
-		llwarns << "param location is already " << mParamLocation << ", not slamming to " << loc << llendl;
+		lldebugs << "param location is already " << mParamLocation << ", not slamming to " << loc << llendl;
 	}
 }
 
-- 
GitLab


From f5a4c277cbf83d6adbb5f2040f3a9e2bfaa02277 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Wed, 7 Nov 2012 15:28:38 -0500
Subject: [PATCH 158/436] SH-3500 FIX - added additional logging to allow
 params in various locations to be distinguished

---
 indra/llcharacter/llvisualparam.cpp | 12 ++++++++++
 indra/llcharacter/llvisualparam.h   |  2 ++
 indra/newview/llvoavatar.cpp        | 12 ++++++++--
 indra/newview/llvoavatarself.cpp    | 35 +++++++++++++++++++++++++++++
 indra/newview/llvoavatarself.h      |  1 +
 5 files changed, 60 insertions(+), 2 deletions(-)

diff --git a/indra/llcharacter/llvisualparam.cpp b/indra/llcharacter/llvisualparam.cpp
index d80dfb8c215..f7cb0f76b71 100755
--- a/indra/llcharacter/llvisualparam.cpp
+++ b/indra/llcharacter/llvisualparam.cpp
@@ -322,6 +322,18 @@ void LLVisualParam::resetDrivenParams()
 	return;
 }
 
+const std::string param_location_name(const EParamLocation& loc)
+{
+	switch (loc)
+	{
+		case LOC_UNKNOWN: return "unknown";
+		case LOC_AV_SELF: return "self";
+		case LOC_AV_OTHER: return "other";
+		case LOC_WEARABLE: return "wearable";
+		default: return "error";
+	}
+}
+
 void LLVisualParam::setParamLocation(EParamLocation loc)
 {
 	if (mParamLocation == LOC_UNKNOWN || loc == LOC_UNKNOWN)
diff --git a/indra/llcharacter/llvisualparam.h b/indra/llcharacter/llvisualparam.h
index 8345990f474..a5864c15ce2 100755
--- a/indra/llcharacter/llvisualparam.h
+++ b/indra/llcharacter/llvisualparam.h
@@ -58,6 +58,8 @@ enum EParamLocation
 	LOC_WEARABLE
 };
 
+const std::string param_location_name(const EParamLocation& loc);
+
 const S32 MAX_TRANSMITTED_VISUAL_PARAMS = 255;
 
 //-----------------------------------------------------------------------------
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 75e71a7613c..ae6af96d4a4 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -6320,9 +6320,11 @@ void dump_visual_param(apr_file_t* file, LLVisualParam* viewer_param, F32 value)
 		wtype = vparam->getWearableType();
 	}
 	S32 u8_value = F32_to_U8(value,viewer_param->getMinWeight(),viewer_param->getMaxWeight());
-	apr_file_printf(file, "\t\t<param id=\"%d\" name=\"%s\" value=\"%.3f\" u8=\"%d\" type=\"%s\" wearable=\"%s\"/>\n",
+	apr_file_printf(file, "\t\t<param id=\"%d\" name=\"%s\" value=\"%.3f\" u8=\"%d\" type=\"%s\" wearable=\"%s\" loc=\"%s\"/>\n",
 					viewer_param->getID(), viewer_param->getName().c_str(), value, u8_value, type_string.c_str(),
-					LLWearableType::getTypeName(LLWearableType::EType(wtype)).c_str());
+					LLWearableType::getTypeName(LLWearableType::EType(wtype)).c_str(),
+					param_location_name(vparam->getParamLocation()).c_str()
+		);
 }
 
 
@@ -6929,6 +6931,12 @@ void LLVOAvatar::dumpArchetypeXML(const std::string& prefix, bool group_by_weara
 	apr_file_printf( file, "\t</archetype>\n" );
 	apr_file_printf( file, "\n</linden_genepool>\n" );
 
+	bool ultra_verbose = false;
+	if (isSelf() && ultra_verbose)
+	{
+		// show the cloned params inside the wearables as well.
+		gAgentAvatarp->dumpWearableInfo(outfile);
+	}
 	// File will close when handle goes out of scope
 }
 
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index a01188d7dc4..2b95a380865 100755
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -2777,3 +2777,38 @@ void LLVOAvatarSelf::dumpScratchTextureByteCount()
 {
 	llinfos << "Scratch Texture GL: " << (sScratchTexBytes/1024) << "KB" << llendl;
 }
+
+void dump_visual_param(apr_file_t* file, LLVisualParam* viewer_param, F32 value);
+
+void LLVOAvatarSelf::dumpWearableInfo(LLAPRFile& outfile)
+{
+	apr_file_t* file = outfile.getFileHandle();
+	if (!file)
+	{
+		return;
+	}
+
+	
+	apr_file_printf( file, "\n<wearable_info>\n" );
+
+	LLWearableData *wd = getWearableData();
+	for (S32 type = 0; type < LLWearableType::WT_COUNT; type++)
+	{
+		const std::string& type_name = LLWearableType::getTypeName((LLWearableType::EType)type);
+		for (U32 j=0; j< wd->getWearableCount((LLWearableType::EType)type); j++)
+		{
+			LLViewerWearable *wearable = gAgentWearables.getViewerWearable((LLWearableType::EType)type,j);
+			apr_file_printf( file, "\n\t    <wearable type=\"%s\" name=\"%s\"/>\n",
+							 type_name.c_str(), wearable->getName().c_str() );
+			LLWearable::visual_param_vec_t v_params;
+			wearable->getVisualParams(v_params);
+			for (LLWearable::visual_param_vec_t::iterator it = v_params.begin();
+				 it != v_params.end(); ++it)
+			{
+				LLVisualParam *param = *it;
+				dump_visual_param(file, param, param->getWeight());
+			}
+		}
+	}
+	apr_file_printf( file, "\n</wearable_info>\n" );
+}
diff --git a/indra/newview/llvoavatarself.h b/indra/newview/llvoavatarself.h
index 89bb8bf5c95..eeac5ddaeb7 100755
--- a/indra/newview/llvoavatarself.h
+++ b/indra/newview/llvoavatarself.h
@@ -364,6 +364,7 @@ class LLVOAvatarSelf :
 	static void		dumpTotalLocalTextureByteCount();
 	void			dumpLocalTextures() const;
 	static void		dumpScratchTextureByteCount();
+	void			dumpWearableInfo(LLAPRFile& outfile);
 
 	//--------------------------------------------------------------------
 	// Avatar Rez Metrics
-- 
GitLab


From 0c834deb97bfa26714c7e20912d9cac12429d0f2 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Wed, 7 Nov 2012 17:12:09 -0500
Subject: [PATCH 159/436] SH-3493 FIX - removed a large number of completely
 unnecessary image cache clears, each of which then forced re-reading the same
 data from disk

---
 indra/newview/llvoavatar.cpp | 10 ++--------
 1 file changed, 2 insertions(+), 8 deletions(-)

diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index ae6af96d4a4..fe471d515c4 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -7019,15 +7019,9 @@ void LLVOAvatar::cullAvatarsByPixelArea()
 		}
 	}
 
-	// runway - this doesn't detect gray/grey state.
-	// think we just need to be checking self av since it's the only
-	// one with lltexlayer stuff.
+	// runway - this doesn't really detect gray/grey state.
 	S32 grey_avatars = 0;
-	if (LLVOAvatar::areAllNearbyInstancesBaked(grey_avatars))
-	{
-		LLVOAvatar::deleteCachedImages(false);
-	}
-	else
+	if (!LLVOAvatar::areAllNearbyInstancesBaked(grey_avatars))
 	{
 		if (gFrameTimeSeconds != sUnbakedUpdateTime) // only update once per frame
 		{
-- 
GitLab


From 6a94c257a1c030978f4f7705ade39be4abb50b39 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Wed, 7 Nov 2012 18:54:20 -0500
Subject: [PATCH 160/436] Fixed a temp file deletion problem found by
 inspection of SL log file

---
 indra/newview/llwearablelist.cpp | 4 ++++
 1 file changed, 4 insertions(+)
 mode change 100644 => 100755 indra/newview/llwearablelist.cpp

diff --git a/indra/newview/llwearablelist.cpp b/indra/newview/llwearablelist.cpp
old mode 100644
new mode 100755
index 3dfacd70f3b..507ce57e794
--- a/indra/newview/llwearablelist.cpp
+++ b/indra/newview/llwearablelist.cpp
@@ -134,6 +134,10 @@ void LLWearableList::processGetAssetReply( const char* filename, const LLAssetID
 
 			if(filename)
 			{
+				if (ifs.is_open())
+				{
+					ifs.close();
+				}
 				LLFile::remove(std::string(filename));
 			}
 		}
-- 
GitLab


From 46fce35fdcae3dfc72e22c8c4f2637f59487ed62 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Thu, 8 Nov 2012 11:25:41 -0500
Subject: [PATCH 161/436] removed references to two nonexistent textures in
 textures.xml

---
 indra/newview/skins/default/textures/textures.xml | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml
index 06f8f8c6705..03aedae0a96 100644
--- a/indra/newview/skins/default/textures/textures.xml
+++ b/indra/newview/skins/default/textures/textures.xml
@@ -712,9 +712,6 @@ with the same filename but different name
   <texture name="icon_for_sale.tga" file_name="icons/Icon_For_Sale.png" />
   <texture name="icon_top_pick.tga" />
 
-  <texture name="inv_folder_mesh.tga"/>
-  <texture name="inv_item_mesh.tga"/>
-
   <texture name="lag_status_critical.tga" />
   <texture name="lag_status_good.tga" />
   <texture name="lag_status_warning.tga" />
-- 
GitLab


From 2234ed87e4da21a9da257d99d410355306c99171 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Fri, 9 Nov 2012 17:44:50 -0500
Subject: [PATCH 162/436] SH-3484 WIP - added additional logging under
 DebugAvatarCompositeBaked to try to track down baked texture issues

---
 indra/llappearance/lltexlayer.cpp |  3 ---
 indra/newview/llvoavatar.cpp      | 39 ++++++++++++++++++++++++++-----
 indra/newview/llvoavatar.h        |  1 +
 3 files changed, 34 insertions(+), 9 deletions(-)

diff --git a/indra/llappearance/lltexlayer.cpp b/indra/llappearance/lltexlayer.cpp
index a65b9e83c6f..a8bbbdbc066 100755
--- a/indra/llappearance/lltexlayer.cpp
+++ b/indra/llappearance/lltexlayer.cpp
@@ -48,9 +48,6 @@
 
 using namespace LLAvatarAppearanceDefines;
 
-static const S32 BAKE_UPLOAD_ATTEMPTS = 7;
-static const F32 BAKE_UPLOAD_RETRY_DELAY = 2.f; // actual delay grows by power of 2 each attempt
-
 // runway consolidate
 extern std::string self_av_string();
 
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index fe471d515c4..47cb31ae186 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -2888,11 +2888,15 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent)
 		{
 			central_bake_version = getRegion()->getCentralBakeVersion();
 		}
-		addDebugText(llformat("mUseLocalAppearance: %d\nmIsEditingAppearance: %d\n"
-							  "mUseServerBakes %d\ncentralBakeVersion %d",
+		addDebugText(llformat("mLocal: %d, mEdit: %d, mUSB: %d, CBV: %d",
 							  mUseLocalAppearance, mIsEditingAppearance,
 							  mUseServerBakes, central_bake_version));
 	}
+	if (gSavedSettings.getBOOL("DebugAvatarCompositeBaked"))
+	{
+		if (!mBakedTextureDebugText.empty())
+			addDebugText(mBakedTextureDebugText);
+	}
 				 
 	if (LLVOAvatar::sShowAnimationDebug)
 	{
@@ -5793,7 +5797,8 @@ void LLVOAvatar::debugColorizeSubMeshes(U32 i, const LLColor4& color)
 // virtual
 void LLVOAvatar::updateMeshTextures()
 {
-    // llinfos << "updateMeshTextures" << llendl;
+	mBakedTextureDebugText.clear();
+	
 	// if user has never specified a texture, assign the default
 	for (U32 i=0; i < getNumTEs(); i++)
 	{
@@ -5819,17 +5824,19 @@ void LLVOAvatar::updateMeshTextures()
 	std::vector<BOOL> use_lkg_baked_layer; // lkg = "last known good"
 	use_lkg_baked_layer.resize(mBakedTextureDatas.size(), false);
 
+	mBakedTextureDebugText +=          "indx layerset linvld ltda ilb ulkg ltid\n";
 	for (U32 i=0; i < mBakedTextureDatas.size(); i++)
 	{
 		is_layer_baked[i] = isTextureDefined(mBakedTextureDatas[i].mTextureIndex);
-
+		LLViewerTexLayerSet* layerset = NULL;
+		bool layerset_invalid = false;
 		if (!other_culled)
 		{
 			// When an avatar is changing clothes and not in Appearance mode,
 			// use the last-known good baked texture until it finish the first
 			// render of the new layerset.
-			LLViewerTexLayerSet* layerset = getTexLayerSet(i);
-			const BOOL layerset_invalid = layerset
+			layerset = getTexLayerSet(i);
+			layerset_invalid = layerset
 										  && ( !layerset->getViewerComposite()->isInitialized()
 										  || !layerset->isLocalTextureDataAvailable() );
 			use_lkg_baked_layer[i] = (!is_layer_baked[i] 
@@ -5846,6 +5853,24 @@ void LLVOAvatar::updateMeshTextures()
 									  && mBakedTextureDatas[i].mLastTextureID != IMG_DEFAULT_AVATAR);
 		}
 
+		std::string last_id_string;
+		if (mBakedTextureDatas[i].mLastTextureID == IMG_DEFAULT_AVATAR)
+			last_id_string = "A";
+		else if (mBakedTextureDatas[i].mLastTextureID == IMG_DEFAULT)
+			last_id_string = "D";
+		else
+			last_id_string = "*";
+		bool is_ltda = layerset
+			&& layerset->getViewerComposite()->isInitialized()
+			&& layerset->isLocalTextureDataAvailable();
+		mBakedTextureDebugText += llformat("%4d   %4s     %4d %4d %4d %4d %4s\n",
+										   i,
+										   (layerset?"*":"0"),
+										   layerset_invalid,
+										   is_ltda,
+										   is_layer_baked[i],
+										   use_lkg_baked_layer[i],
+										   last_id_string.c_str());
 	}
 	
 	for (U32 i=0; i < mBakedTextureDatas.size(); i++)
@@ -5856,6 +5881,7 @@ void LLVOAvatar::updateMeshTextures()
 		if (use_lkg_baked_layer[i] && !isUsingLocalAppearance() )
 		{
 			LLViewerFetchedTexture* baked_img;
+			LLViewerFetchedTexture* existing_baked_img = LLViewerTextureManager::getFetchedTexture(mBakedTextureDatas[i].mLastTextureID);
 			const std::string url = getImageURL(i, mBakedTextureDatas[i].mLastTextureID);
 			if (!url.empty())
 			{
@@ -5872,6 +5898,7 @@ void LLVOAvatar::updateMeshTextures()
 
 				baked_img = LLViewerTextureManager::getFetchedTextureFromHost( mBakedTextureDatas[i].mLastTextureID, target_host );
 			}
+			llassert(baked_img == existing_baked_img);
 
 			mBakedTextureDatas[i].mIsUsed = TRUE;
 
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
index 8f3811f1847..4802476e592 100755
--- a/indra/newview/llvoavatar.h
+++ b/indra/newview/llvoavatar.h
@@ -945,6 +945,7 @@ class LLVOAvatar :
 	F32					mMaxPixelArea;
 	F32					mAdjustedPixelArea;
 	std::string  		mDebugText;
+	std::string			mBakedTextureDebugText;
 
 
 	//--------------------------------------------------------------------
-- 
GitLab


From 51a1d510a5dc0b4c02cf8e1c592dd017bb0d07f3 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Wed, 14 Nov 2012 13:09:54 -0500
Subject: [PATCH 163/436] SH-3541 WIP - fixed one cause of local textures
 failing to load

---
 indra/newview/llviewerregion.cpp |  2 +-
 indra/newview/llvoavatarself.cpp | 33 +++++++++++++++-----------------
 2 files changed, 16 insertions(+), 19 deletions(-)

diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp
index c8ab055e3f7..f225a7640bc 100755
--- a/indra/newview/llviewerregion.cpp
+++ b/indra/newview/llviewerregion.cpp
@@ -1745,7 +1745,7 @@ bool LLViewerRegion::isSpecialCapabilityName(const std::string &name)
 
 std::string LLViewerRegion::getCapability(const std::string& name) const
 {
-	if (!capabilitiesReceived() && (name!=std::string("Seed")))
+	if (!capabilitiesReceived() && (name!=std::string("Seed")) && (name!=std::string("ObjectMedia")))
 	{
 		llwarns << "getCapability called before caps received" << llendl;
 	}
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index 2b95a380865..88bf596a350 100755
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -2275,30 +2275,27 @@ void LLVOAvatarSelf::addLocalTextureStats( ETextureIndex type, LLViewerFetchedTe
 {
 	if (!isIndexLocalTexture(type)) return;
 
-	if (!covered_by_baked)
+	if (getLocalTextureID(type, index) != IMG_DEFAULT_AVATAR && imagep->getDiscardLevel() != 0)
 	{
-		if (getLocalTextureID(type, index) != IMG_DEFAULT_AVATAR && imagep->getDiscardLevel() != 0)
-		{
-			F32 desired_pixels;
-			desired_pixels = llmin(mPixelArea, (F32)getTexImageArea());
-			imagep->setBoostLevel(getAvatarBoostLevel());
+		F32 desired_pixels;
+		desired_pixels = llmin(mPixelArea, (F32)getTexImageArea());
+		imagep->setBoostLevel(getAvatarBoostLevel());
 
-			imagep->resetTextureStats();
-			imagep->setMaxVirtualSizeResetInterval(MAX_TEXTURE_VIRTURE_SIZE_RESET_INTERVAL);
-			imagep->addTextureStats( desired_pixels / texel_area_ratio );
-			imagep->setAdditionalDecodePriority(SELF_ADDITIONAL_PRI) ;
-			imagep->forceUpdateBindStats() ;
-			if (imagep->getDiscardLevel() < 0)
-			{
-				mHasGrey = TRUE; // for statistics gathering
-			}
-		}
-		else
+		imagep->resetTextureStats();
+		imagep->setMaxVirtualSizeResetInterval(MAX_TEXTURE_VIRTURE_SIZE_RESET_INTERVAL);
+		imagep->addTextureStats( desired_pixels / texel_area_ratio );
+		imagep->setAdditionalDecodePriority(SELF_ADDITIONAL_PRI) ;
+		imagep->forceUpdateBindStats() ;
+		if (imagep->getDiscardLevel() < 0)
 		{
-			// texture asset is missing
 			mHasGrey = TRUE; // for statistics gathering
 		}
 	}
+	else
+	{
+		// texture asset is missing
+		mHasGrey = TRUE; // for statistics gathering
+	}
 }
 
 LLLocalTextureObject* LLVOAvatarSelf::getLocalTextureObject(LLAvatarAppearanceDefines::ETextureIndex i, U32 wearable_index) const
-- 
GitLab


From 284e1b44d7bcc463b0d3ca56eae76b19e8fea03f Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Wed, 14 Nov 2012 13:54:48 -0500
Subject: [PATCH 164/436] Fix for build failures

---
 indra/newview/llvoavatar.cpp | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 47cb31ae186..6f4dfdbe2a6 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -5881,7 +5881,9 @@ void LLVOAvatar::updateMeshTextures()
 		if (use_lkg_baked_layer[i] && !isUsingLocalAppearance() )
 		{
 			LLViewerFetchedTexture* baked_img;
+#ifndef LL_RELEASE_FOR_DOWNLOAD
 			LLViewerFetchedTexture* existing_baked_img = LLViewerTextureManager::getFetchedTexture(mBakedTextureDatas[i].mLastTextureID);
+#endif
 			const std::string url = getImageURL(i, mBakedTextureDatas[i].mLastTextureID);
 			if (!url.empty())
 			{
-- 
GitLab


From 2540568a83ca07856ddb760a6983efb3b85430a2 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Wed, 14 Nov 2012 14:50:05 -0500
Subject: [PATCH 165/436] SH-3541 WIP - prioritize local textures when in local
 appearance

---
 indra/newview/llvoavatarself.cpp | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index 88bf596a350..619058fd256 100755
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -2279,12 +2279,15 @@ void LLVOAvatarSelf::addLocalTextureStats( ETextureIndex type, LLViewerFetchedTe
 	{
 		F32 desired_pixels;
 		desired_pixels = llmin(mPixelArea, (F32)getTexImageArea());
-		imagep->setBoostLevel(getAvatarBoostLevel());
 
+		if (isUsingLocalAppearance())
+		{
+			imagep->setBoostLevel(getAvatarBoostLevel());
+			imagep->setAdditionalDecodePriority(SELF_ADDITIONAL_PRI) ;
+		}
 		imagep->resetTextureStats();
 		imagep->setMaxVirtualSizeResetInterval(MAX_TEXTURE_VIRTURE_SIZE_RESET_INTERVAL);
 		imagep->addTextureStats( desired_pixels / texel_area_ratio );
-		imagep->setAdditionalDecodePriority(SELF_ADDITIONAL_PRI) ;
 		imagep->forceUpdateBindStats() ;
 		if (imagep->getDiscardLevel() < 0)
 		{
-- 
GitLab


From 5a2c57048522355b943dda91537f2890eb1b7b66 Mon Sep 17 00:00:00 2001
From: Nyx Linden <nyx@lindenlab.com>
Date: Wed, 14 Nov 2012 22:52:54 +0000
Subject: [PATCH 166/436] Updating appearance utility package

---
 autobuild.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index ec71aa6f555..df511b72425 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -1290,9 +1290,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>77467c492c9fba1ae68ae630e92d8cb1</string>
+              <string>a92421d42f358733bd7961120d91dbfe</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/266679/arch/Linux/installer/llappearanceutility_source-0.1-linux-20121106.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/267036/arch/Linux/installer/llappearanceutility_source-0.1-linux-20121114.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
-- 
GitLab


From dccfd66d94ad813b55d6dc1667f94288079893e9 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Wed, 14 Nov 2012 18:30:14 -0500
Subject: [PATCH 167/436] block appearance messages while editing

---
 indra/newview/llvoavatar.cpp | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 6f4dfdbe2a6..3a5cc9fc143 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -6462,6 +6462,12 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 		return;
 	}
 
+	if (isSelf() && isEditingAppearance())
+	{
+		llinfos << "ignoring appearance message while in appearance edit" << llendl;
+		return;
+	}
+
 	mUseServerBakes = (appearance_version > 0);
 
 	applyParsedTEMessage(tec);
-- 
GitLab


From 19e22ca030d6ac8e63a2db41f24460bbfb72fff1 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Thu, 15 Nov 2012 00:18:16 +0000
Subject: [PATCH 168/436] Bumping appearance utility source

---
 autobuild.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index df511b72425..41250621b2c 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -1290,9 +1290,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>a92421d42f358733bd7961120d91dbfe</string>
+              <string>d6da17e42aab527bbdd408aebfef8b00</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/267036/arch/Linux/installer/llappearanceutility_source-0.1-linux-20121114.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/267038/arch/Linux/installer/llappearanceutility_source-0.1-linux-20121115.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
-- 
GitLab


From ebce476bd6e4b4b8a6404fa83e8fa0d8b1e64dc5 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Thu, 15 Nov 2012 11:13:45 -0500
Subject: [PATCH 169/436] SH-3484 WIP, SH-3546 WIP, SH-3541 WIP - restrict
 useBakedTexture when in local update, minor readability tweaks

---
 indra/newview/llvoavatar.cpp     | 64 +++++++++++++++++---------------
 indra/newview/llvoavatarself.cpp |  4 +-
 2 files changed, 38 insertions(+), 30 deletions(-)

diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 3a5cc9fc143..160f4984438 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -5805,7 +5805,9 @@ void LLVOAvatar::updateMeshTextures()
 		const LLViewerTexture* te_image = getImage(i, 0);
 		if(!te_image || te_image->getID().isNull() || (te_image->getID() == IMG_DEFAULT))
 		{
-			setImage(i, LLViewerTextureManager::getFetchedTexture(i == TEX_HAIR ? IMG_DEFAULT : IMG_DEFAULT_AVATAR), 0); // IMG_DEFAULT_AVATAR = a special texture that's never rendered.
+			// IMG_DEFAULT_AVATAR = a special texture that's never rendered.
+			const LLUUID& image_id = (i == TEX_HAIR ? IMG_DEFAULT : IMG_DEFAULT_AVATAR);
+			setImage(i, LLViewerTextureManager::getFetchedTexture(image_id), 0); 
 		}
 	}
 
@@ -5833,12 +5835,11 @@ void LLVOAvatar::updateMeshTextures()
 		if (!other_culled)
 		{
 			// When an avatar is changing clothes and not in Appearance mode,
-			// use the last-known good baked texture until it finish the first
+			// use the last-known good baked texture until it finishes the first
 			// render of the new layerset.
 			layerset = getTexLayerSet(i);
-			layerset_invalid = layerset
-										  && ( !layerset->getViewerComposite()->isInitialized()
-										  || !layerset->isLocalTextureDataAvailable() );
+			layerset_invalid = layerset && ( !layerset->getViewerComposite()->isInitialized()
+											 || !layerset->isLocalTextureDataAvailable() );
 			use_lkg_baked_layer[i] = (!is_layer_baked[i] 
 									  && (mBakedTextureDatas[i].mLastTextureID != IMG_DEFAULT_AVATAR) 
 									  && layerset_invalid);
@@ -5919,16 +5920,21 @@ void LLVOAvatar::updateMeshTextures()
 		}
 		else if (!isUsingLocalAppearance() && is_layer_baked[i])
 		{
-			LLViewerFetchedTexture* baked_img = LLViewerTextureManager::staticCastToFetchedTexture(getImage( mBakedTextureDatas[i].mTextureIndex, 0 ), TRUE) ;
+			LLViewerFetchedTexture* baked_img =
+				LLViewerTextureManager::staticCastToFetchedTexture(
+					getImage( mBakedTextureDatas[i].mTextureIndex, 0 ), TRUE) ;
 			if( baked_img->getID() == mBakedTextureDatas[i].mLastTextureID )
 			{
-				// Even though the file may not be finished loading, we'll consider it loaded and use it (rather than doing compositing).
+				// Even though the file may not be finished loading,
+				// we'll consider it loaded and use it (rather than
+				// doing compositing).
 				useBakedTexture( baked_img->getID() );
 			}
 			else
 			{
 				mBakedTextureDatas[i].mIsLoaded = FALSE;
-				if ( (baked_img->getID() != IMG_INVISIBLE) && ((i == BAKED_HEAD) || (i == BAKED_UPPER) || (i == BAKED_LOWER)) )
+				if ( (baked_img->getID() != IMG_INVISIBLE) &&
+					 ((i == BAKED_HEAD) || (i == BAKED_UPPER) || (i == BAKED_LOWER)) )
 				{			
 					baked_img->setLoadedCallback(onBakedTextureMasksLoaded, MORPH_MASK_REQUESTED_DISCARD, TRUE, TRUE, new LLTextureMaskData( mID ), 
 						src_callback_list, paused);	
@@ -5983,7 +5989,8 @@ void LLVOAvatar::updateMeshTextures()
 	} 
 	
 	
-	for (LLAvatarAppearanceDictionary::BakedTextures::const_iterator baked_iter = LLAvatarAppearanceDictionary::getInstance()->getBakedTextures().begin();
+	for (LLAvatarAppearanceDictionary::BakedTextures::const_iterator baked_iter =
+			 LLAvatarAppearanceDictionary::getInstance()->getBakedTextures().begin();
 		 baked_iter != LLAvatarAppearanceDictionary::getInstance()->getBakedTextures().end();
 		 ++baked_iter)
 	{
@@ -6766,7 +6773,7 @@ void LLVOAvatar::onBakedTextureLoaded(BOOL success,
 									  LLViewerFetchedTexture *src_vi, LLImageRaw* src, LLImageRaw* aux_src,
 									  S32 discard_level, BOOL final, void* userdata)
 {
-	//llinfos << "onBakedTextureLoaded: " << src_vi->getID() << llendl;
+	// llinfos << "onBakedTextureLoaded: " << src_vi->getID() << llendl;
 
 	LLUUID id = src_vi->getID();
 	LLUUID *avatar_idp = (LLUUID *)userdata;
@@ -6797,12 +6804,6 @@ void LLVOAvatar::onBakedTextureLoaded(BOOL success,
 void LLVOAvatar::useBakedTexture( const LLUUID& id )
 {
 
-	
-	/* if(id == head_baked->getID())
-		 mHeadBakedLoaded = TRUE;
-		 mLastHeadBakedID = id;
-		 mHeadMesh0.setTexture( head_baked );
-		 mHeadMesh1.setTexture( head_baked ); */
 	for (U32 i = 0; i < mBakedTextureDatas.size(); i++)
 	{
 		LLViewerTexture* image_baked = getImage( mBakedTextureDatas[i].mTextureIndex, 0 );
@@ -6813,23 +6814,28 @@ void LLVOAvatar::useBakedTexture( const LLUUID& id )
 			mBakedTextureDatas[i].mLastTextureID = id;
 			mBakedTextureDatas[i].mIsUsed = true;
 
-			debugColorizeSubMeshes(i,LLColor4::green);
-
-			avatar_joint_mesh_list_t::iterator iter = mBakedTextureDatas[i].mJointMeshes.begin();
-			avatar_joint_mesh_list_t::iterator end  = mBakedTextureDatas[i].mJointMeshes.end();
-			for (; iter != end; ++iter)
+			if (isUsingLocalAppearance())
 			{
-				LLAvatarJointMesh* mesh = (*iter);
-				if (mesh)
-				{
-					mesh->setTexture( image_baked );
-				}
+				llinfos << "not changing to baked texture while isUsingLocalAppearance" << llendl;
 			}
-			if (mBakedTextureDatas[i].mTexLayerSet)
+			else
 			{
-				//mBakedTextureDatas[i].mTexLayerSet->destroyComposite();
+				debugColorizeSubMeshes(i,LLColor4::green);
+
+				avatar_joint_mesh_list_t::iterator iter = mBakedTextureDatas[i].mJointMeshes.begin();
+				avatar_joint_mesh_list_t::iterator end  = mBakedTextureDatas[i].mJointMeshes.end();
+				for (; iter != end; ++iter)
+				{
+					LLAvatarJointMesh* mesh = (*iter);
+					if (mesh)
+					{
+						mesh->setTexture( image_baked );
+					}
+				}
 			}
-			const LLAvatarAppearanceDictionary::BakedEntry *baked_dict = LLAvatarAppearanceDictionary::getInstance()->getBakedTexture((EBakedTextureIndex)i);
+			
+			const LLAvatarAppearanceDictionary::BakedEntry *baked_dict =
+				LLAvatarAppearanceDictionary::getInstance()->getBakedTexture((EBakedTextureIndex)i);
 			for (texture_vec_t::const_iterator local_tex_iter = baked_dict->mLocalTextures.begin();
 				 local_tex_iter != baked_dict->mLocalTextures.end();
 				 ++local_tex_iter)
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index 619058fd256..77deb5e3bcb 100755
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -1379,7 +1379,8 @@ BOOL LLVOAvatarSelf::isLocalTextureDataAvailable(const LLViewerTexLayerSet* laye
 				const U32 wearable_count = gAgentWearables.getWearableCount(wearable_type);
 				for (U32 wearable_index = 0; wearable_index < wearable_count; wearable_index++)
 				{
-					ret &= (getLocalDiscardLevel(tex_index, wearable_index) >= 0);
+					BOOL tex_avail = (getLocalDiscardLevel(tex_index, wearable_index) >= 0);
+					ret &= tex_avail;
 				}
 			}
 			return ret;
@@ -1781,6 +1782,7 @@ void LLVOAvatarSelf::setLocalTexture(ETextureIndex type, LLViewerTexture* src_te
 	local_tex_obj->setID(tex->getID());
 	setBakedReady(type,baked_version_ready,index);
 }
+
 //virtual
 void LLVOAvatarSelf::setBakedReady(LLAvatarAppearanceDefines::ETextureIndex type, BOOL baked_version_exists, U32 index)
 {
-- 
GitLab


From a3ad89dd3535e2621b9f100fe45a2a3814b4045a Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Thu, 15 Nov 2012 13:54:22 -0500
Subject: [PATCH 170/436] removed param location from archetype dump - not
 currently used

---
 indra/newview/llvoavatar.cpp | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 160f4984438..94a59253c45 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -6356,10 +6356,10 @@ void dump_visual_param(apr_file_t* file, LLVisualParam* viewer_param, F32 value)
 		wtype = vparam->getWearableType();
 	}
 	S32 u8_value = F32_to_U8(value,viewer_param->getMinWeight(),viewer_param->getMaxWeight());
-	apr_file_printf(file, "\t\t<param id=\"%d\" name=\"%s\" value=\"%.3f\" u8=\"%d\" type=\"%s\" wearable=\"%s\" loc=\"%s\"/>\n",
+	apr_file_printf(file, "\t\t<param id=\"%d\" name=\"%s\" value=\"%.3f\" u8=\"%d\" type=\"%s\" wearable=\"%s\"/>\n",
 					viewer_param->getID(), viewer_param->getName().c_str(), value, u8_value, type_string.c_str(),
-					LLWearableType::getTypeName(LLWearableType::EType(wtype)).c_str(),
-					param_location_name(vparam->getParamLocation()).c_str()
+					LLWearableType::getTypeName(LLWearableType::EType(wtype)).c_str()
+//					param_location_name(vparam->getParamLocation()).c_str()
 		);
 }
 
-- 
GitLab


From f93604c399c889e06980554e1cb59a833e7f847d Mon Sep 17 00:00:00 2001
From: Logan Dethrow <log@lindenlab.com>
Date: Thu, 15 Nov 2012 15:20:05 -0500
Subject: [PATCH 171/436] WIP Working on adding http request to increment the
 COF version when a change is made to an item in an agent's current outfit
 folder.  SH-3339

---
 indra/cmake/Variables.cmake           |  1 +
 indra/newview/llpaneleditwearable.cpp | 42 +++++++++++++++++++++++++++
 indra/newview/llpaneleditwearable.h   | 12 +++++---
 indra/newview/llviewerregion.cpp      |  1 +
 4 files changed, 52 insertions(+), 4 deletions(-)

diff --git a/indra/cmake/Variables.cmake b/indra/cmake/Variables.cmake
index 895b3003db4..4cd878a2e3a 100644
--- a/indra/cmake/Variables.cmake
+++ b/indra/cmake/Variables.cmake
@@ -97,6 +97,7 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
 
   if (WORD_SIZE EQUAL 32)
     set(DEB_ARCHITECTURE i386)
+    set(FIND_LIBRARY_USE_LIB64_PATHS OFF)
   else (WORD_SIZE EQUAL 32)
     set(DEB_ARCHITECTURE amd64)
   endif (WORD_SIZE EQUAL 32)
diff --git a/indra/newview/llpaneleditwearable.cpp b/indra/newview/llpaneleditwearable.cpp
index 7832156a0ef..9862c98cc80 100644
--- a/indra/newview/llpaneleditwearable.cpp
+++ b/indra/newview/llpaneleditwearable.cpp
@@ -1028,6 +1028,46 @@ void LLPanelEditWearable::updatePanelPickerControls(LLWearableType::EType type)
         }
 }
 
+//static
+void LLPanelEditWearable::incrementCofVersion()
+{
+        // Create a response handler
+        LLHTTPClient::ResponderPtr responderPtr = LLHTTPClient::ResponderPtr(new LLMaturityPreferencesResponder(this));
+
+        // Look up the capability to POST to.
+        std::string url = gAgent.getRegion()->getCapability("IncrementCofVersion");
+
+		// If we don't have a region, report it as an error
+		if (getRegion() == NULL)
+		{
+			responderPtr->error(0U, "region is not defined");
+		}
+		else
+		{
+			// Find the capability to send maturity preference
+			std::string url = getRegion()->getCapability("UpdateAgentInformation");
+
+			// If the capability is not defined, report it as an error
+			if (url.empty())
+			{
+				responderPtr->error(0U, "capability 'UpdateAgentInformation' is not defined for region");
+			}
+			else
+			{
+				// Set new access preference
+				LLSD access_prefs = LLSD::emptyMap();
+				access_prefs["max"] = LLViewerRegion::accessToShortString(pPreferredMaturity);
+
+				LLSD body = LLSD::emptyMap();
+				body["access_prefs"] = access_prefs;
+				llinfos << "Sending viewer preferred maturity to '" << LLViewerRegion::accessToString(pPreferredMaturity)
+					<< "' via capability to: " << url << llendl;
+				LLSD headers;
+				LLHTTPClient::post(url, body, responderPtr, headers, 30.0f);
+			}
+        }
+}
+
 void LLPanelEditWearable::saveChanges(bool force_save_as)
 {
         if (!mWearablePtr || !isDirty())
@@ -1050,6 +1090,8 @@ void LLPanelEditWearable::saveChanges(bool force_save_as)
         {
                 gAgentWearables.saveWearable(mWearablePtr->getType(), index, TRUE, new_name);
         }
+
+        LLPanelEditWearable::incrementCofVersion();
 }
 
 void LLPanelEditWearable::revertChanges()
diff --git a/indra/newview/llpaneleditwearable.h b/indra/newview/llpaneleditwearable.h
index 309d512e239..619486bb5bc 100644
--- a/indra/newview/llpaneleditwearable.h
+++ b/indra/newview/llpaneleditwearable.h
@@ -31,6 +31,8 @@
 #include "llscrollingpanellist.h"
 #include "llmodaldialog.h"
 #include "llavatarappearancedefines.h"
+#include "llagent.h"
+#include "llviewerregion.h"
 #include "llwearabletype.h"
 
 class LLAccordionCtrl;
@@ -94,7 +96,7 @@ class LLPanelEditWearable : public LLPanel
 	void				toggleTypeSpecificControls(LLWearableType::EType type);
 	void				updateTypeSpecificControls(LLWearableType::EType type);
 
-	//alpha mask checkboxes
+	// alpha mask checkboxes
 	void configureAlphaCheckbox(LLAvatarAppearanceDefines::ETextureIndex te, const std::string& name);
 	void onInvisibilityCommit(LLCheckBoxCtrl* checkbox_ctrl, LLAvatarAppearanceDefines::ETextureIndex te);
 	void updateAlphaCheckboxes();
@@ -104,7 +106,7 @@ class LLPanelEditWearable : public LLPanel
 	// callback for HeightUnits parameter.
 	bool changeHeightUnits(const LLSD& new_value);
 
-	// updates current metric and replacemet metric label text
+	// updates current metric and replacement metric label text
 	void updateMetricLayout(BOOL new_value);
 
 	// updates avatar height label
@@ -114,6 +116,8 @@ class LLPanelEditWearable : public LLPanel
 
 	void setWearablePanelVisibilityChangeCallback(LLPanel* bodypart_panel);
 
+	static void incrementCofVersion();
+
 	// the pointer to the wearable we're editing. NULL means we're not editing a wearable.
 	LLViewerWearable *mWearablePtr;
 	LLViewerInventoryItem* mWearableItem;
@@ -128,7 +132,7 @@ class LLPanelEditWearable : public LLPanel
 	LLTextBox *mTxtAvatarHeight;
 
 
-	// localized and parametrized strings that used to build avatar_height_label
+	// localized and parameterized strings that used to build avatar_height_label
 	std::string mMeters;
 	std::string mFeet;
 	std::string mHeigth;
@@ -151,7 +155,7 @@ class LLPanelEditWearable : public LLPanel
 	LLPanel *mPanelEyes;
 	LLPanel *mPanelHair;
 
-	//clothes
+	// clothes
 	LLPanel *mPanelShirt;
 	LLPanel *mPanelPants;
 	LLPanel *mPanelShoes;
diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp
index 0855bc9243e..94533d97dfc 100755
--- a/indra/newview/llviewerregion.cpp
+++ b/indra/newview/llviewerregion.cpp
@@ -1541,6 +1541,7 @@ void LLViewerRegionImpl::buildCapabilityNames(LLSD& capabilityNames)
 		capabilityNames.append("FetchLibDescendents2");
 		capabilityNames.append("FetchInventory2");
 		capabilityNames.append("FetchInventoryDescendents2");
+		capabilityNames.append("IncrementCOFVersion");
 	}
 
 	capabilityNames.append("GetDisplayNames");
-- 
GitLab


From ee810bf2abe230769bd5ee81dc76e54d5fcda34c Mon Sep 17 00:00:00 2001
From: Logan Dethrow <log@lindenlab.com>
Date: Fri, 16 Nov 2012 17:07:45 -0500
Subject: [PATCH 172/436] WIP First buildable code after adding support for
 SH-3339.

---
 indra/cmake/Variables.cmake           | 24 ++-----
 indra/newview/llpaneleditwearable.cpp | 96 ++++++++++++++++++---------
 indra/newview/llpaneleditwearable.h   |  3 +-
 3 files changed, 71 insertions(+), 52 deletions(-)

diff --git a/indra/cmake/Variables.cmake b/indra/cmake/Variables.cmake
index 54c77da64e3..4cd878a2e3a 100644
--- a/indra/cmake/Variables.cmake
+++ b/indra/cmake/Variables.cmake
@@ -70,6 +70,10 @@ endif (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
 if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
   set(LINUX ON BOOl FORCE)
 
+  if (INSTALL_PROPRIETARY)
+    set(BUILD_HEADLESS ON CACHE BOOL "Build headless libraries.")
+  endif (INSTALL_PROPRIETARY)
+
   # If someone has specified a word size, use that to determine the
   # architecture.  Otherwise, let the architecture specify the word size.
   if (WORD_SIZE EQUAL 32)
@@ -94,36 +98,18 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
   if (WORD_SIZE EQUAL 32)
     set(DEB_ARCHITECTURE i386)
     set(FIND_LIBRARY_USE_LIB64_PATHS OFF)
-    set(CMAKE_SYSTEM_LIBRARY_PATH /usr/lib32 ${CMAKE_SYSTEM_LIBRARY_PATH})
   else (WORD_SIZE EQUAL 32)
     set(DEB_ARCHITECTURE amd64)
-    set(FIND_LIBRARY_USE_LIB64_PATHS ON)
   endif (WORD_SIZE EQUAL 32)
 
-  execute_process(COMMAND dpkg-architecture -a${DEB_ARCHITECTURE} -qDEB_HOST_MULTIARCH 
-      RESULT_VARIABLE DPKG_RESULT
-      OUTPUT_VARIABLE DPKG_ARCH
-      OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
+  execute_process(COMMAND dpkg-architecture -a${DEB_ARCHITECTURE} -qDEB_HOST_MULTIARCH RESULT_VARIABLE DPKG_RESULT OUTPUT_VARIABLE DPKG_ARCH OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
   #message (STATUS "DPKG_RESULT ${DPKG_RESULT}, DPKG_ARCH ${DPKG_ARCH}")
   if (DPKG_RESULT EQUAL 0)
     set(CMAKE_LIBRARY_ARCHITECTURE ${DPKG_ARCH})
-    set(CMAKE_SYSTEM_LIBRARY_PATH /usr/lib/${DPKG_ARCH} /usr/local/lib/${DPKG_ARCH} ${CMAKE_SYSTEM_LIBRARY_PATH})
   endif (DPKG_RESULT EQUAL 0)
 
-  include(ConfigurePkgConfig)
-
   set(LL_ARCH ${ARCH}_linux)
   set(LL_ARCH_DIR ${ARCH}-linux)
-
-  if (INSTALL_PROPRIETARY)
-    # Only turn on headless if we can find osmesa libraries.
-    include(FindPkgConfig)
-    pkg_check_modules(OSMESA osmesa)
-    if (OSMESA_FOUND)
-      set(BUILD_HEADLESS ON CACHE BOOL "Build headless libraries.")
-    endif (OSMESA_FOUND)
-  endif (INSTALL_PROPRIETARY)
-
 endif (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
 
 if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
diff --git a/indra/newview/llpaneleditwearable.cpp b/indra/newview/llpaneleditwearable.cpp
index 9862c98cc80..997edbab076 100644
--- a/indra/newview/llpaneleditwearable.cpp
+++ b/indra/newview/llpaneleditwearable.cpp
@@ -26,6 +26,8 @@
 
 #include "llviewerprecompiledheaders.h"
 
+#include <boost/intrusive_ptr.hpp>
+
 #include "llpaneleditwearable.h"
 #include "llpanel.h"
 #include "llviewerwearable.h"
@@ -47,6 +49,7 @@
 #include "llscrollingpanelparam.h"
 #include "llradiogroup.h"
 #include "llnotificationsutil.h"
+#include "llhttpclient.h"
 
 #include "llcolorswatch.h"
 #include "lltexturectrl.h"
@@ -1028,44 +1031,75 @@ void LLPanelEditWearable::updatePanelPickerControls(LLWearableType::EType type)
         }
 }
 
+class LLIncrementCofVersionResponder : public LLHTTPClient::Responder
+{
+public:
+	LLIncrementCofVersionResponder(S32 retries);
+	virtual ~LLIncrementCofVersionResponder();
+
+	virtual void result(const LLSD &pContent);
+	virtual void error(U32 pStatus, const std::string& pReason);
+
+protected:
+
+private:
+	LLAgent         *mAgent;
+	S32				mRetries;
+};
+
+LLIncrementCofVersionResponder::LLIncrementCofVersionResponder(S32 retries)
+	: LLHTTPClient::Responder(),
+	  mRetries(retries)
+{
+}
+
+LLIncrementCofVersionResponder::~LLIncrementCofVersionResponder()
+{
+}
+
+void LLIncrementCofVersionResponder::result(const LLSD &pContent)
+{
+	lldebugs << "Successfully incremented agent's COF." << llendl;
+
+}
+
+void LLIncrementCofVersionResponder::error(U32 pStatus, const std::string& pReason)
+{
+	llwarns << "While attempting to increment the agent's cof we got an error because '"
+		<< pReason << "' [status:" << pStatus << "]" << llendl;
+	LLPanelEditWearable::incrementCofVersion(mRetries++);
+}
+
 //static
-void LLPanelEditWearable::incrementCofVersion()
+void LLPanelEditWearable::incrementCofVersion(S32 retries)
 {
-        // Create a response handler
-        LLHTTPClient::ResponderPtr responderPtr = LLHTTPClient::ResponderPtr(new LLMaturityPreferencesResponder(this));
+	// Create a response handler
+	LLHTTPClient::ResponderPtr responderPtr = LLHTTPClient::ResponderPtr(new LLIncrementCofVersionResponder(retries));
 
-        // Look up the capability to POST to.
-        std::string url = gAgent.getRegion()->getCapability("IncrementCofVersion");
+	// If we don't have a region, report it as an error
+	if (gAgent.getRegion() == NULL)
+	{
+		responderPtr->error(0U, "region is not defined");
+	}
+	else
+	{
+		// Find the capability to send maturity preference
+		std::string url = gAgent.getRegion()->getCapability("IncrementCofVersion");
 
-		// If we don't have a region, report it as an error
-		if (getRegion() == NULL)
+		// If the capability is not defined, report it as an error
+		if (url.empty())
 		{
-			responderPtr->error(0U, "region is not defined");
+			responderPtr->error(0U, "capability 'UpdateAgentInformation' is not defined for region");
 		}
 		else
 		{
-			// Find the capability to send maturity preference
-			std::string url = getRegion()->getCapability("UpdateAgentInformation");
-
-			// If the capability is not defined, report it as an error
-			if (url.empty())
-			{
-				responderPtr->error(0U, "capability 'UpdateAgentInformation' is not defined for region");
-			}
-			else
-			{
-				// Set new access preference
-				LLSD access_prefs = LLSD::emptyMap();
-				access_prefs["max"] = LLViewerRegion::accessToShortString(pPreferredMaturity);
-
-				LLSD body = LLSD::emptyMap();
-				body["access_prefs"] = access_prefs;
-				llinfos << "Sending viewer preferred maturity to '" << LLViewerRegion::accessToString(pPreferredMaturity)
-					<< "' via capability to: " << url << llendl;
-				LLSD headers;
-				LLHTTPClient::post(url, body, responderPtr, headers, 30.0f);
-			}
-        }
+			llinfos << "Requesting cof_version be incremented via capability to: "
+					<< url << llendl;
+			LLSD headers;
+			LLSD body = LLSD::emptyMap();
+			LLHTTPClient::post(url, body, responderPtr, headers, 30.0f);
+		}
+	}
 }
 
 void LLPanelEditWearable::saveChanges(bool force_save_as)
@@ -1091,7 +1125,7 @@ void LLPanelEditWearable::saveChanges(bool force_save_as)
                 gAgentWearables.saveWearable(mWearablePtr->getType(), index, TRUE, new_name);
         }
 
-        LLPanelEditWearable::incrementCofVersion();
+        LLPanelEditWearable::incrementCofVersion(0);
 }
 
 void LLPanelEditWearable::revertChanges()
diff --git a/indra/newview/llpaneleditwearable.h b/indra/newview/llpaneleditwearable.h
index 619486bb5bc..9c9eac791e1 100644
--- a/indra/newview/llpaneleditwearable.h
+++ b/indra/newview/llpaneleditwearable.h
@@ -78,6 +78,7 @@ class LLPanelEditWearable : public LLPanel
 
 	virtual void		setVisible(BOOL visible);
 
+	static void incrementCofVersion(S32 retries);
 
 private:
 	typedef std::map<F32, LLViewerVisualParam*> value_map_t;
@@ -116,8 +117,6 @@ class LLPanelEditWearable : public LLPanel
 
 	void setWearablePanelVisibilityChangeCallback(LLPanel* bodypart_panel);
 
-	static void incrementCofVersion();
-
 	// the pointer to the wearable we're editing. NULL means we're not editing a wearable.
 	LLViewerWearable *mWearablePtr;
 	LLViewerInventoryItem* mWearableItem;
-- 
GitLab


From 7221aaaf390270ae72ffbf6813b359d5d99480e8 Mon Sep 17 00:00:00 2001
From: "prep@lindenlab.com" <prep@lindenlab.com>
Date: Mon, 19 Nov 2012 11:27:16 -0600
Subject: [PATCH 173/436] Implementation for SH-3530, CR:Nyx

---
 indra/newview/llsaveoutfitcombobtn.cpp | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/indra/newview/llsaveoutfitcombobtn.cpp b/indra/newview/llsaveoutfitcombobtn.cpp
index cbad85cfd3f..59137f4ef77 100644
--- a/indra/newview/llsaveoutfitcombobtn.cpp
+++ b/indra/newview/llsaveoutfitcombobtn.cpp
@@ -31,6 +31,8 @@
 #include "llsidepanelappearance.h"
 #include "llsaveoutfitcombobtn.h"
 #include "llviewermenu.h"
+#include "llagent.h"
+#include "llviewerregion.h"
 
 static const std::string SAVE_BTN("save_btn");
 static const std::string SAVE_FLYOUT_BTN("save_flyout_btn");
@@ -76,8 +78,12 @@ void LLSaveOutfitComboBtn::saveOutfit(bool as_new)
 	if (panel_outfits_inventory)
 	{
 		panel_outfits_inventory->onSave();
+	} 
+	
+    if ( gAgent.getRegion() && gAgent.getRegion()->getCentralBakeVersion())
+	{
+		LLAppearanceMgr::instance().requestServerAppearanceUpdate();
 	}
-
 	//*TODO how to get to know when base outfit is updated or new outfit is created?
 }
 
-- 
GitLab


From 2aa56069f458441daa74a86a8805763482f02fd6 Mon Sep 17 00:00:00 2001
From: Logan Dethrow <log@lindenlab.com>
Date: Mon, 19 Nov 2012 14:26:59 -0500
Subject: [PATCH 174/436] WIP SH-3339 Only try to increment the cof version if
 in a server bake region.

---
 indra/newview/llpaneleditwearable.cpp | 11 ++++++++++-
 indra/newview/llpaneleditwearable.h   |  1 +
 2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/indra/newview/llpaneleditwearable.cpp b/indra/newview/llpaneleditwearable.cpp
index 997edbab076..ad55936cab9 100644
--- a/indra/newview/llpaneleditwearable.cpp
+++ b/indra/newview/llpaneleditwearable.cpp
@@ -1070,6 +1070,12 @@ void LLIncrementCofVersionResponder::error(U32 pStatus, const std::string& pReas
 	LLPanelEditWearable::incrementCofVersion(mRetries++);
 }
 
+//static
+void LLPanelEditWearable::incrementCofVersion()
+{
+	incrementCofVersion(0);
+}
+
 //static
 void LLPanelEditWearable::incrementCofVersion(S32 retries)
 {
@@ -1125,7 +1131,10 @@ void LLPanelEditWearable::saveChanges(bool force_save_as)
                 gAgentWearables.saveWearable(mWearablePtr->getType(), index, TRUE, new_name);
         }
 
-        LLPanelEditWearable::incrementCofVersion(0);
+        if (gAgentAvatarp->isUsingServerBakes())
+        {
+        	LLPanelEditWearable::incrementCofVersion(0);
+        }
 }
 
 void LLPanelEditWearable::revertChanges()
diff --git a/indra/newview/llpaneleditwearable.h b/indra/newview/llpaneleditwearable.h
index 9c9eac791e1..67217f8751a 100644
--- a/indra/newview/llpaneleditwearable.h
+++ b/indra/newview/llpaneleditwearable.h
@@ -78,6 +78,7 @@ class LLPanelEditWearable : public LLPanel
 
 	virtual void		setVisible(BOOL visible);
 
+	static void incrementCofVersion();
 	static void incrementCofVersion(S32 retries);
 
 private:
-- 
GitLab


From 81219ad03b59a5fcd80ee450b7606c6bb64f4c7d Mon Sep 17 00:00:00 2001
From: Logan Dethrow <log@lindenlab.com>
Date: Mon, 19 Nov 2012 16:30:14 -0500
Subject: [PATCH 175/436] Moved implementation of incrementCofVersion to
 llappearancemgr.cpp. Changed retry logic to use the more robust mRetryPolicy
 instead of my own previous implementation.

---
 indra/newview/llappearancemgr.cpp     | 75 +++++++++++++++++++++++++
 indra/newview/llappearancemgr.h       |  2 +
 indra/newview/llpaneleditwearable.cpp | 79 +--------------------------
 indra/newview/llpaneleditwearable.h   |  3 -
 4 files changed, 78 insertions(+), 81 deletions(-)

diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 4e103bb75e9..e3ac0529614 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -2776,6 +2776,81 @@ void LLAppearanceMgr::requestServerAppearanceUpdate(LLCurl::ResponderPtr respond
 	mLastUpdateRequestCOFVersion = cof_version;
 }
 
+class LLIncrementCofVersionResponder : public LLHTTPClient::Responder
+{
+public:
+	LLIncrementCofVersionResponder() : LLHTTPClient::Responder()
+	{
+		mRetryPolicy = new LLAdaptiveRetryPolicy(1.0, 16.0, 2.0, 5);
+	}
+
+	virtual ~LLIncrementCofVersionResponder()
+	{
+	}
+
+	virtual void result(const LLSD &pContent)
+	{
+		llinfos << "Successfully incremented agent's COF." << llendl;
+		S32 new_version = pContent["category"]["version"].asInteger();
+
+		LLAppearanceMgr* app_mgr = LLAppearanceMgr::getInstance();
+
+		// cof_version should have increased
+		llassert(new_version > app_mgr->mLastUpdateRequestCOFVersion);
+
+		app_mgr->mLastUpdateRequestCOFVersion = new_version;
+	}
+	virtual void error(U32 pStatus, const std::string& pReason)
+	{
+		llwarns << "While attempting to increment the agent's cof we got an error because '"
+			<< pReason << "' [status:" << pStatus << "]" << llendl;
+		F32 seconds_to_wait;
+		if (mRetryPolicy->shouldRetry(pStatus,seconds_to_wait))
+		{
+			llinfos << "retrying" << llendl;
+			doAfterInterval(boost::bind(&LLAppearanceMgr::incrementCofVersion,
+										LLAppearanceMgr::getInstance(),
+										LLHTTPClient::ResponderPtr(this)),
+										seconds_to_wait);
+		}
+		else
+		{
+			llwarns << "giving up after too many retries" << llendl;
+		}
+	}
+
+	LLPointer<LLHTTPRetryPolicy> mRetryPolicy;
+};
+
+void LLAppearanceMgr::incrementCofVersion(LLHTTPClient::ResponderPtr responder_ptr)
+{
+	// If we don't have a region, report it as an error
+	if (gAgent.getRegion() == NULL)
+	{
+		llwarns << "Region not set, cannot request cof_version increment" << llendl;
+		return;
+	}
+
+	std::string url = gAgent.getRegion()->getCapability("IncrementCofVersion");
+	if (url.empty())
+	{
+		llwarns << "No cap for IncrementCofVersion." << llendl;
+		return;
+	}
+
+	llinfos << "Requesting cof_version be incremented via capability to: "
+			<< url << llendl;
+	LLSD headers;
+	LLSD body = LLSD::emptyMap();
+
+	if (!responder_ptr.get())
+	{
+		responder_ptr = LLHTTPClient::ResponderPtr(new LLIncrementCofVersionResponder());
+	}
+
+	LLHTTPClient::get(url, body, responder_ptr, headers, 30.0f);
+}
+
 class LLShowCreatedOutfit: public LLInventoryCallback
 {
 public:
diff --git a/indra/newview/llappearancemgr.h b/indra/newview/llappearancemgr.h
index 01ed66711c2..525402c2152 100755
--- a/indra/newview/llappearancemgr.h
+++ b/indra/newview/llappearancemgr.h
@@ -189,6 +189,8 @@ class LLAppearanceMgr: public LLSingleton<LLAppearanceMgr>
 
 	void requestServerAppearanceUpdate(LLCurl::ResponderPtr responder_ptr = NULL);
 
+	void incrementCofVersion(LLHTTPClient::ResponderPtr responder_ptr = NULL);
+
 protected:
 	LLAppearanceMgr();
 	~LLAppearanceMgr();
diff --git a/indra/newview/llpaneleditwearable.cpp b/indra/newview/llpaneleditwearable.cpp
index ad55936cab9..2bc952dcae1 100644
--- a/indra/newview/llpaneleditwearable.cpp
+++ b/indra/newview/llpaneleditwearable.cpp
@@ -1031,83 +1031,6 @@ void LLPanelEditWearable::updatePanelPickerControls(LLWearableType::EType type)
         }
 }
 
-class LLIncrementCofVersionResponder : public LLHTTPClient::Responder
-{
-public:
-	LLIncrementCofVersionResponder(S32 retries);
-	virtual ~LLIncrementCofVersionResponder();
-
-	virtual void result(const LLSD &pContent);
-	virtual void error(U32 pStatus, const std::string& pReason);
-
-protected:
-
-private:
-	LLAgent         *mAgent;
-	S32				mRetries;
-};
-
-LLIncrementCofVersionResponder::LLIncrementCofVersionResponder(S32 retries)
-	: LLHTTPClient::Responder(),
-	  mRetries(retries)
-{
-}
-
-LLIncrementCofVersionResponder::~LLIncrementCofVersionResponder()
-{
-}
-
-void LLIncrementCofVersionResponder::result(const LLSD &pContent)
-{
-	lldebugs << "Successfully incremented agent's COF." << llendl;
-
-}
-
-void LLIncrementCofVersionResponder::error(U32 pStatus, const std::string& pReason)
-{
-	llwarns << "While attempting to increment the agent's cof we got an error because '"
-		<< pReason << "' [status:" << pStatus << "]" << llendl;
-	LLPanelEditWearable::incrementCofVersion(mRetries++);
-}
-
-//static
-void LLPanelEditWearable::incrementCofVersion()
-{
-	incrementCofVersion(0);
-}
-
-//static
-void LLPanelEditWearable::incrementCofVersion(S32 retries)
-{
-	// Create a response handler
-	LLHTTPClient::ResponderPtr responderPtr = LLHTTPClient::ResponderPtr(new LLIncrementCofVersionResponder(retries));
-
-	// If we don't have a region, report it as an error
-	if (gAgent.getRegion() == NULL)
-	{
-		responderPtr->error(0U, "region is not defined");
-	}
-	else
-	{
-		// Find the capability to send maturity preference
-		std::string url = gAgent.getRegion()->getCapability("IncrementCofVersion");
-
-		// If the capability is not defined, report it as an error
-		if (url.empty())
-		{
-			responderPtr->error(0U, "capability 'UpdateAgentInformation' is not defined for region");
-		}
-		else
-		{
-			llinfos << "Requesting cof_version be incremented via capability to: "
-					<< url << llendl;
-			LLSD headers;
-			LLSD body = LLSD::emptyMap();
-			LLHTTPClient::post(url, body, responderPtr, headers, 30.0f);
-		}
-	}
-}
-
 void LLPanelEditWearable::saveChanges(bool force_save_as)
 {
         if (!mWearablePtr || !isDirty())
@@ -1133,7 +1056,7 @@ void LLPanelEditWearable::saveChanges(bool force_save_as)
 
         if (gAgentAvatarp->isUsingServerBakes())
         {
-        	LLPanelEditWearable::incrementCofVersion(0);
+        	LLAppearanceMgr::getInstance()->incrementCofVersion();
         }
 }
 
diff --git a/indra/newview/llpaneleditwearable.h b/indra/newview/llpaneleditwearable.h
index 67217f8751a..cd29a5d7648 100644
--- a/indra/newview/llpaneleditwearable.h
+++ b/indra/newview/llpaneleditwearable.h
@@ -78,9 +78,6 @@ class LLPanelEditWearable : public LLPanel
 
 	virtual void		setVisible(BOOL visible);
 
-	static void incrementCofVersion();
-	static void incrementCofVersion(S32 retries);
-
 private:
 	typedef std::map<F32, LLViewerVisualParam*> value_map_t;
 
-- 
GitLab


From ed2ec5e24425466c09c9d7b5b1408f0d6aaf5bd8 Mon Sep 17 00:00:00 2001
From: Logan Dethrow <log@lindenlab.com>
Date: Mon, 19 Nov 2012 16:49:00 -0500
Subject: [PATCH 176/436] Restored part of indra/cmake/Variables.cmake that
 somehow got removed.

---
 indra/cmake/Variables.cmake | 24 +++++++++++++++++++-----
 1 file changed, 19 insertions(+), 5 deletions(-)

diff --git a/indra/cmake/Variables.cmake b/indra/cmake/Variables.cmake
index 4cd878a2e3a..54c77da64e3 100644
--- a/indra/cmake/Variables.cmake
+++ b/indra/cmake/Variables.cmake
@@ -70,10 +70,6 @@ endif (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
 if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
   set(LINUX ON BOOl FORCE)
 
-  if (INSTALL_PROPRIETARY)
-    set(BUILD_HEADLESS ON CACHE BOOL "Build headless libraries.")
-  endif (INSTALL_PROPRIETARY)
-
   # If someone has specified a word size, use that to determine the
   # architecture.  Otherwise, let the architecture specify the word size.
   if (WORD_SIZE EQUAL 32)
@@ -98,18 +94,36 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
   if (WORD_SIZE EQUAL 32)
     set(DEB_ARCHITECTURE i386)
     set(FIND_LIBRARY_USE_LIB64_PATHS OFF)
+    set(CMAKE_SYSTEM_LIBRARY_PATH /usr/lib32 ${CMAKE_SYSTEM_LIBRARY_PATH})
   else (WORD_SIZE EQUAL 32)
     set(DEB_ARCHITECTURE amd64)
+    set(FIND_LIBRARY_USE_LIB64_PATHS ON)
   endif (WORD_SIZE EQUAL 32)
 
-  execute_process(COMMAND dpkg-architecture -a${DEB_ARCHITECTURE} -qDEB_HOST_MULTIARCH RESULT_VARIABLE DPKG_RESULT OUTPUT_VARIABLE DPKG_ARCH OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
+  execute_process(COMMAND dpkg-architecture -a${DEB_ARCHITECTURE} -qDEB_HOST_MULTIARCH 
+      RESULT_VARIABLE DPKG_RESULT
+      OUTPUT_VARIABLE DPKG_ARCH
+      OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
   #message (STATUS "DPKG_RESULT ${DPKG_RESULT}, DPKG_ARCH ${DPKG_ARCH}")
   if (DPKG_RESULT EQUAL 0)
     set(CMAKE_LIBRARY_ARCHITECTURE ${DPKG_ARCH})
+    set(CMAKE_SYSTEM_LIBRARY_PATH /usr/lib/${DPKG_ARCH} /usr/local/lib/${DPKG_ARCH} ${CMAKE_SYSTEM_LIBRARY_PATH})
   endif (DPKG_RESULT EQUAL 0)
 
+  include(ConfigurePkgConfig)
+
   set(LL_ARCH ${ARCH}_linux)
   set(LL_ARCH_DIR ${ARCH}-linux)
+
+  if (INSTALL_PROPRIETARY)
+    # Only turn on headless if we can find osmesa libraries.
+    include(FindPkgConfig)
+    pkg_check_modules(OSMESA osmesa)
+    if (OSMESA_FOUND)
+      set(BUILD_HEADLESS ON CACHE BOOL "Build headless libraries.")
+    endif (OSMESA_FOUND)
+  endif (INSTALL_PROPRIETARY)
+
 endif (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
 
 if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
-- 
GitLab


From 632addf63dd6db5cffc18fd351b1899b30fc9062 Mon Sep 17 00:00:00 2001
From: Logan Dethrow <log@lindenlab.com>
Date: Mon, 19 Nov 2012 16:56:03 -0500
Subject: [PATCH 177/436] Removed a few unnecessary include lines.

---
 indra/newview/llpaneleditwearable.cpp | 3 ---
 indra/newview/llpaneleditwearable.h   | 2 --
 2 files changed, 5 deletions(-)

diff --git a/indra/newview/llpaneleditwearable.cpp b/indra/newview/llpaneleditwearable.cpp
index 2bc952dcae1..3e7db06bdf7 100644
--- a/indra/newview/llpaneleditwearable.cpp
+++ b/indra/newview/llpaneleditwearable.cpp
@@ -26,8 +26,6 @@
 
 #include "llviewerprecompiledheaders.h"
 
-#include <boost/intrusive_ptr.hpp>
-
 #include "llpaneleditwearable.h"
 #include "llpanel.h"
 #include "llviewerwearable.h"
@@ -49,7 +47,6 @@
 #include "llscrollingpanelparam.h"
 #include "llradiogroup.h"
 #include "llnotificationsutil.h"
-#include "llhttpclient.h"
 
 #include "llcolorswatch.h"
 #include "lltexturectrl.h"
diff --git a/indra/newview/llpaneleditwearable.h b/indra/newview/llpaneleditwearable.h
index cd29a5d7648..50d5328a830 100644
--- a/indra/newview/llpaneleditwearable.h
+++ b/indra/newview/llpaneleditwearable.h
@@ -31,8 +31,6 @@
 #include "llscrollingpanellist.h"
 #include "llmodaldialog.h"
 #include "llavatarappearancedefines.h"
-#include "llagent.h"
-#include "llviewerregion.h"
 #include "llwearabletype.h"
 
 class LLAccordionCtrl;
-- 
GitLab


From dc71cae16b9c49a1d6b4d4a888c3a574049fd087 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Wed, 28 Nov 2012 23:45:23 +0000
Subject: [PATCH 178/436] Updating appearance utility

---
 autobuild.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index 41250621b2c..63b731296aa 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -1290,9 +1290,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>d6da17e42aab527bbdd408aebfef8b00</string>
+              <string>5552d94c9ef2a21273cb1fff1446a699</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/267038/arch/Linux/installer/llappearanceutility_source-0.1-linux-20121115.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/267407/arch/Linux/installer/llappearanceutility_source-0.1-linux-20121128.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
-- 
GitLab


From 47a2a2982de98c88fbc6cd17bdb897e5ec408b88 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Thu, 29 Nov 2012 11:06:10 -0500
Subject: [PATCH 179/436] fix for possible crash on exit in self_av_string()

---
 indra/newview/llappearancemgr.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 4e103bb75e9..9f6586a69b4 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -52,7 +52,7 @@
 
 std::string self_av_string()
 {
-	return gAgentAvatarp->avString();
+	return gAgentAvatarp ? gAgentAvatarp->avString() : std::string("self_av_string error, gAgentAvatarp null");
 }
 
 // RAII thingy to guarantee that a variable gets reset when the Setter
-- 
GitLab


From 9934cd2e29c8ea11e0859cd881d286fd56fae96e Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Fri, 30 Nov 2012 17:41:07 -0500
Subject: [PATCH 180/436] SH-3562 WIP - detect possible hangs in item copying

---
 indra/newview/llappearancemgr.cpp | 137 ++++++++++++++++++++++++++----
 1 file changed, 121 insertions(+), 16 deletions(-)

diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 9f6586a69b4..09b0c132d2d 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -154,6 +154,123 @@ LLUUID findDescendentCategoryIDByName(const LLUUID& parent_id, const std::string
 	}
 }
 
+// Shim between inventory callback and boost function
+typedef boost::function<void(const LLUUID&)> inventory_func_type;
+
+class LLBoostFuncInventoryCallback: public LLInventoryCallback
+{
+public:
+
+	LLBoostFuncInventoryCallback(const inventory_func_type& func):
+		mFunc(func)
+	{
+	}
+
+	void fire(const LLUUID& item_id)
+	{
+		mFunc(item_id);
+	}
+
+private:
+	inventory_func_type mFunc;
+};
+
+LLPointer<LLInventoryCallback> make_inventory_func_callback(const inventory_func_type& func)
+{
+	return new LLBoostFuncInventoryCallback(func); 
+}
+
+void report_fire(const LLUUID& item_id)
+{
+	llinfos << item_id << llendl;
+}
+
+class LLInventoryCopyMgr: public LLEventTimer 
+{
+public:
+	LLInventoryCopyMgr(LLInventoryModel::item_array_t& src_items, const LLUUID& dst_cat_id,
+					   bool append, const std::string& phase):
+		mDstCatID(dst_cat_id),
+		mAppend(append),
+		mTrackingPhase(phase),
+		LLEventTimer(5.0)
+	{
+		for (LLInventoryModel::item_array_t::const_iterator it = src_items.begin();
+			 it != src_items.end();
+			 ++it)
+		{
+			LLViewerInventoryItem* item = *it;
+			mSrcTimes[item->getUUID()] = LLTimer();
+			requestCopy(item->getUUID());
+		}
+		if (!mTrackingPhase.empty())
+		{
+			selfStartPhase(mTrackingPhase);
+		}
+	}
+
+	void requestCopy(const LLUUID& item_id)
+	{
+		LLViewerInventoryItem *item = gInventory.getItem(item_id);
+		if (!item)
+		{
+			llwarns << "requestCopy item not found " << item_id << llendl;
+			return;
+		}
+		copy_inventory_item(
+			gAgent.getID(),
+			item->getPermissions().getOwner(),
+			item->getUUID(),
+			mDstCatID,
+			std::string(),
+			make_inventory_func_callback(boost::bind(&LLInventoryCopyMgr::onCopy,this,item->getUUID(),_1))
+			);
+	}
+				
+	void onCopy(const LLUUID& src_id, const LLUUID& dst_id)
+	{
+		LL_DEBUGS("Avatar") << "copied, src_id " << src_id << " to dst_id " << dst_id << " after " << mSrcTimes[src_id].getElapsedTimeF32() << " seconds" << llendl;
+		mSrcTimes.erase(src_id);
+		if (mSrcTimes.empty())
+		{
+			onCompletion();
+		}
+	}
+
+	void onCompletion()
+	{
+		if (!mTrackingPhase.empty())
+		{
+			selfStopPhase(mTrackingPhase);
+		}
+		if( LLInventoryCallbackManager::is_instantiated() )
+		{
+			LLAppearanceMgr::instance().wearInventoryCategoryOnAvatar(gInventory.getCategory(mDstCatID), mAppend);
+		}
+	}
+	
+	// virtual
+	// Will be deleted after returning true - only safe to do this if all callbacks have fired.
+	BOOL tick()
+	{
+		bool all_done = mSrcTimes.empty();
+
+		if (!all_done)
+		{
+			llwarns << "possible hang in copy, waiting on " << mSrcTimes.size() << " items" << llendl;
+			// TODO possibly add retry logic here.
+
+		}
+		return all_done;
+	}
+
+private:
+	std::string mTrackingPhase;
+	std::map<LLUUID,LLTimer> mSrcTimes;
+	LLUUID mDstCatID;
+	bool mAppend;
+};
+
 class LLWearInventoryCategoryCallback : public LLInventoryCallback
 {
 public:
@@ -1979,22 +2096,10 @@ void LLAppearanceMgr::wearCategoryFinal(LLUUID& cat_id, bool copy_items, bool ap
 			pid,
 			LLFolderType::FT_NONE,
 			name);
-		LLPointer<LLInventoryCallback> cb = new LLWearInventoryCategoryCallback(new_cat_id, append);
-		it = items->begin();
-		for(; it < end; ++it)
-		{
-			item = *it;
-			if(item)
-			{
-				copy_inventory_item(
-					gAgent.getID(),
-					item->getPermissions().getOwner(),
-					item->getUUID(),
-					new_cat_id,
-					std::string(),
-					cb);
-			}
-		}
+
+		// Create a CopyMgr that will copy items, manage its own destruction
+		new LLInventoryCopyMgr(*items, new_cat_id, append, std::string("wear_inventory_category_callback"));
+
 		// BAP fixes a lag in display of created dir.
 		gInventory.notifyObservers();
 	}
-- 
GitLab


From f0a11b1590a8d52281683275f836ac347ccc510f Mon Sep 17 00:00:00 2001
From: "prep@lindenlab.com" <prep@lindenlab.com>
Date: Fri, 30 Nov 2012 16:59:15 -0600
Subject: [PATCH 181/436] SH-3594: Fix for crash when outfits are changed on a
 non server based baking region.

---
 indra/llvfs/llvfile.cpp | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/indra/llvfs/llvfile.cpp b/indra/llvfs/llvfile.cpp
index ca749c5eafb..03d2cc25e33 100644
--- a/indra/llvfs/llvfile.cpp
+++ b/indra/llvfs/llvfile.cpp
@@ -32,6 +32,7 @@
 #include "llthread.h"
 #include "llstat.h"
 #include "llvfs.h"
+#include "llmemory.h"
 
 const S32 LLVFile::READ			= 0x00000001;
 const S32 LLVFile::WRITE		= 0x00000002;
@@ -134,13 +135,13 @@ U8* LLVFile::readFile(LLVFS *vfs, const LLUUID &uuid, LLAssetType::EType type, S
 		data = NULL;
 	}
 	else
-	{
-		data = new U8[file_size];
+	{		
+		data = (U8*) ll_aligned_malloc_16(file_size);
 		file.read(data, file_size);	/* Flawfinder: ignore */ 
 		
 		if (file.getLastBytesRead() != (S32)file_size)
 		{
-			delete[] data;
+			ll_aligned_free(data);
 			data = NULL;
 			file_size = 0;
 		}
-- 
GitLab


From 5c245e941ace3f52dfa3539c473e2c02f207d8a3 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Mon, 3 Dec 2012 14:34:00 -0500
Subject: [PATCH 182/436] SH-3562 WIP

---
 indra/newview/llappearancemgr.cpp | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 09b0c132d2d..321bf7edcbe 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -239,14 +239,12 @@ class LLInventoryCopyMgr: public LLEventTimer
 
 	void onCompletion()
 	{
+		llinfos << "done" << llendl;
 		if (!mTrackingPhase.empty())
 		{
 			selfStopPhase(mTrackingPhase);
 		}
-		if( LLInventoryCallbackManager::is_instantiated() )
-		{
-			LLAppearanceMgr::instance().wearInventoryCategoryOnAvatar(gInventory.getCategory(mDstCatID), mAppend);
-		}
+		LLAppearanceMgr::instance().wearInventoryCategoryOnAvatar(gInventory.getCategory(mDstCatID), mAppend);
 	}
 	
 	// virtual
@@ -2116,7 +2114,12 @@ void LLAppearanceMgr::wearInventoryCategoryOnAvatar( LLInventoryCategory* catego
 	// Avoid unintentionally overwriting old wearables.  We have to do
 	// this up front to avoid having to deal with the case of multiple
 	// wearables being dirty.
-	if(!category) return;
+	if (!category) return;
+
+	if ( !LLInventoryCallbackManager::is_instantiated() )
+	{
+		return;
+	}
 
 	LL_INFOS("Avatar") << self_av_string() << "wearInventoryCategoryOnAvatar '" << category->getName()
 			 << "'" << LL_ENDL;
-- 
GitLab


From 6735d40d9a0e03007f6f7aef954022d770c0165d Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Tue, 4 Dec 2012 17:45:01 -0500
Subject: [PATCH 183/436] SH-3604 WIP

---
 indra/newview/llappearancemgr.cpp | 108 +++++++++++++++++++++---------
 1 file changed, 78 insertions(+), 30 deletions(-)

diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 79106318a41..8e5f4b3684b 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -186,49 +186,59 @@ void report_fire(const LLUUID& item_id)
 	llinfos << item_id << llendl;
 }
 
-class LLInventoryCopyMgr: public LLEventTimer 
+class LLCallAfterInventoryBatchMgr: public LLEventTimer 
 {
 public:
-	LLInventoryCopyMgr(LLInventoryModel::item_array_t& src_items, const LLUUID& dst_cat_id,
-					   bool append, const std::string& phase):
+	LLCallAfterInventoryBatchMgr(const LLUUID& dst_cat_id,
+								 const std::string& phase_name,
+								 nullary_func_t on_completion_func,
+								 F32 check_period = 5.0,
+								 F32 retry_after = 30.0,
+								 S32 max_retries = 2
+		):
 		mDstCatID(dst_cat_id),
-		mAppend(append),
-		mTrackingPhase(phase),
-		LLEventTimer(5.0)
+		mTrackingPhase(phase_name),
+		mOnCompletionFunc(on_completion_func),
+		mRetryAfter(retry_after),
+		mMaxRetries(max_retries),
+		LLEventTimer(check_period)
+	{
+		if (!mTrackingPhase.empty())
+		{
+			selfStartPhase(mTrackingPhase);
+		}
+	}
+
+	void addItems(LLInventoryModel::item_array_t& src_items)
 	{
 		for (LLInventoryModel::item_array_t::const_iterator it = src_items.begin();
 			 it != src_items.end();
 			 ++it)
 		{
 			LLViewerInventoryItem* item = *it;
-			mSrcTimes[item->getUUID()] = LLTimer();
-			requestCopy(item->getUUID());
-		}
-		if (!mTrackingPhase.empty())
-		{
-			selfStartPhase(mTrackingPhase);
+			llassert(item);
+			addItem(item);
 		}
 	}
 
-	void requestCopy(const LLUUID& item_id)
+	void addItem(LLViewerInventoryItem *item)
 	{
-		LLViewerInventoryItem *item = gInventory.getItem(item_id);
+		const LLUUID& item_id = item->getUUID();
 		if (!item)
 		{
-			llwarns << "requestCopy item not found " << item_id << llendl;
+			llwarns << "item not found for " << item_id << llendl;
 			return;
 		}
-		copy_inventory_item(
-			gAgent.getID(),
-			item->getPermissions().getOwner(),
-			item->getUUID(),
-			mDstCatID,
-			std::string(),
-			make_inventory_func_callback(boost::bind(&LLInventoryCopyMgr::onCopy,this,item->getUUID(),_1))
-			);
+		if (mSrcTimes.find(item_id) == mSrcTimes.end())
+		{
+			mSrcTimes[item->getUUID()] = LLTimer();
+		}
+		requestOperation(item);
 	}
-				
-	void onCopy(const LLUUID& src_id, const LLUUID& dst_id)
+
+	virtual void requestOperation(LLViewerInventoryItem *item) = 0;
+
+	void onOp(const LLUUID& src_id, const LLUUID& dst_id)
 	{
 		LL_DEBUGS("Avatar") << "copied, src_id " << src_id << " to dst_id " << dst_id << " after " << mSrcTimes[src_id].getElapsedTimeF32() << " seconds" << llendl;
 		mSrcTimes.erase(src_id);
@@ -245,7 +255,7 @@ class LLInventoryCopyMgr: public LLEventTimer
 		{
 			selfStopPhase(mTrackingPhase);
 		}
-		LLAppearanceMgr::instance().wearInventoryCategoryOnAvatar(gInventory.getCategory(mDstCatID), mAppend);
+		mOnCompletionFunc();
 	}
 	
 	// virtual
@@ -256,18 +266,51 @@ class LLInventoryCopyMgr: public LLEventTimer
 
 		if (!all_done)
 		{
-			llwarns << "possible hang in copy, waiting on " << mSrcTimes.size() << " items" << llendl;
+			llwarns << "possible hang in operation, waiting on " << mSrcTimes.size() << " items" << llendl;
 			// TODO possibly add retry logic here.
 
 		}
 		return all_done;
 	}
 
-private:
+	virtual ~LLCallAfterInventoryBatchMgr()
+	{
+		LL_DEBUGS("Avatar") << "ending" << llendl;
+	}
+
+protected:
 	std::string mTrackingPhase;
 	std::map<LLUUID,LLTimer> mSrcTimes;
 	LLUUID mDstCatID;
-	bool mAppend;
+	nullary_func_t mOnCompletionFunc;
+	F32 mRetryAfter;
+	S32 mMaxRetries;
+};
+
+class LLCallAfterInventoryCopyMgr: public LLCallAfterInventoryBatchMgr
+{
+public:
+	LLCallAfterInventoryCopyMgr(LLInventoryModel::item_array_t& src_items,
+								const LLUUID& dst_cat_id,
+								const std::string& phase_name,
+								nullary_func_t on_completion_func
+		):
+		LLCallAfterInventoryBatchMgr(dst_cat_id, phase_name, on_completion_func)
+	{
+		addItems(src_items);
+	}
+	
+	virtual void requestOperation(LLViewerInventoryItem *item)
+	{
+		copy_inventory_item(
+			gAgent.getID(),
+			item->getPermissions().getOwner(),
+			item->getUUID(),
+			mDstCatID,
+			std::string(),
+			make_inventory_func_callback(boost::bind(&LLCallAfterInventoryBatchMgr::onOp,this,item->getUUID(),_1))
+			);
+	}
 };
 
 class LLWearInventoryCategoryCallback : public LLInventoryCallback
@@ -2097,7 +2140,12 @@ void LLAppearanceMgr::wearCategoryFinal(LLUUID& cat_id, bool copy_items, bool ap
 			name);
 
 		// Create a CopyMgr that will copy items, manage its own destruction
-		new LLInventoryCopyMgr(*items, new_cat_id, append, std::string("wear_inventory_category_callback"));
+		new LLCallAfterInventoryCopyMgr(
+			*items, new_cat_id, std::string("wear_inventory_category_callback"),
+			boost::bind(&LLAppearanceMgr::wearInventoryCategoryOnAvatar,
+						LLAppearanceMgr::getInstance(),
+						gInventory.getCategory(new_cat_id),
+						append));
 
 		// BAP fixes a lag in display of created dir.
 		gInventory.notifyObservers();
-- 
GitLab


From 32f5015ecd29ec664a79c2ce86fa7c462f5f7561 Mon Sep 17 00:00:00 2001
From: prep <prep@lindenlab.com>
Date: Wed, 5 Dec 2012 14:33:30 -0500
Subject: [PATCH 184/436] Added back in mesa package for linux builds

---
 autobuild.xml | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/autobuild.xml b/autobuild.xml
index f5ea967b327..82344ebc903 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -1452,6 +1452,30 @@
             <string>windows</string>
           </map>
         </map>
+      </map>
+	  <key>mesa</key>
+      <map>
+        <key>license</key>
+        <string>mesa</string>
+        <key>license_file</key>
+        <string>LICENSES/mesa.txt</string>
+        <key>name</key>
+        <string>mesa</string>
+        <key>platforms</key>
+        <map>
+          <key>linux</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>1f600840463c7327ea17486821425750</string>
+              <key>url</key>
+              <string>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/mesa-7.0-linux-20100930.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>linux</string>
+          </map>
+        </map>
       </map>
       <key>ndofdev</key>
       <map>
-- 
GitLab


From 480569677cb0cd6b03d2a38a613561d6ef6be059 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Wed, 5 Dec 2012 16:38:21 -0500
Subject: [PATCH 185/436] SH-3604 WIP - retry mechanism for batch inventory
 ops, handle either completion or failure

---
 indra/newview/app_settings/logcontrol.xml |   2 +-
 indra/newview/app_settings/settings.xml   |  11 ++
 indra/newview/llappearancemgr.cpp         | 196 +++++++++++++++-------
 3 files changed, 147 insertions(+), 62 deletions(-)

diff --git a/indra/newview/app_settings/logcontrol.xml b/indra/newview/app_settings/logcontrol.xml
index 64122bbb6ce..12590390107 100755
--- a/indra/newview/app_settings/logcontrol.xml
+++ b/indra/newview/app_settings/logcontrol.xml
@@ -42,8 +42,8 @@
 						</array>
 					<key>tags</key>
 						<array>
-						<!-- sample entry for debugging specific items	
 						     <string>Avatar</string>
+						<!-- sample entry for debugging specific items	
 						     <string>Voice</string>		
 						-->
 						</array>
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index efb1ccc1ccf..4a69e5b3566 100755
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -4315,6 +4315,17 @@
       <key>Value</key>
       <real>1.0</real>
     </map>
+    <key>InventoryDebugSimulateOpFailureRate</key>
+    <map>
+      <key>Comment</key>
+        <string>Rate at which we simulate failures of copy/link requests in some operations</string>
+      <key>Persist</key>
+        <integer>1</integer>
+      <key>Type</key>
+        <string>F32</string>
+      <key>Value</key>
+        <real>0.0</real>
+    </map>
     <key>InventoryDisplayInbox</key>
     <map>
         <key>Comment</key>
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 8e5f4b3684b..c149f38fcd1 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -192,15 +192,20 @@ class LLCallAfterInventoryBatchMgr: public LLEventTimer
 	LLCallAfterInventoryBatchMgr(const LLUUID& dst_cat_id,
 								 const std::string& phase_name,
 								 nullary_func_t on_completion_func,
+								 nullary_func_t on_failure_func,
 								 F32 check_period = 5.0,
-								 F32 retry_after = 30.0,
+								 F32 retry_after = 10.0,
 								 S32 max_retries = 2
 		):
 		mDstCatID(dst_cat_id),
 		mTrackingPhase(phase_name),
 		mOnCompletionFunc(on_completion_func),
+		mOnFailureFunc(on_failure_func),
 		mRetryAfter(retry_after),
 		mMaxRetries(max_retries),
+		mPendingRequests(0),
+		mFailCount(0),
+		mRetryCount(0),
 		LLEventTimer(check_period)
 	{
 		if (!mTrackingPhase.empty())
@@ -221,6 +226,7 @@ class LLCallAfterInventoryBatchMgr: public LLEventTimer
 		}
 	}
 
+	// Request or re-request operation for specified item.
 	void addItem(LLViewerInventoryItem *item)
 	{
 		const LLUUID& item_id = item->getUUID();
@@ -229,10 +235,24 @@ class LLCallAfterInventoryBatchMgr: public LLEventTimer
 			llwarns << "item not found for " << item_id << llendl;
 			return;
 		}
-		if (mSrcTimes.find(item_id) == mSrcTimes.end())
+		mPendingRequests++;
+		// On a re-request, this will reset the timer.
+		mWaitTimes[item_id] = LLTimer();
+		if (mRetryCounts.find(item_id) == mRetryCounts.end())
 		{
-			mSrcTimes[item->getUUID()] = LLTimer();
+			mRetryCounts[item_id] = 0;
 		}
+		else
+		{
+			mRetryCounts[item_id]++;
+		}
+
+		if (ll_frand()<gSavedSettings.getF32("InventoryDebugSimulateOpFailureRate"))
+		{
+			// simulate server failure by not sending the request.
+			return;
+		}
+		
 		requestOperation(item);
 	}
 
@@ -240,21 +260,46 @@ class LLCallAfterInventoryBatchMgr: public LLEventTimer
 
 	void onOp(const LLUUID& src_id, const LLUUID& dst_id)
 	{
-		LL_DEBUGS("Avatar") << "copied, src_id " << src_id << " to dst_id " << dst_id << " after " << mSrcTimes[src_id].getElapsedTimeF32() << " seconds" << llendl;
-		mSrcTimes.erase(src_id);
-		if (mSrcTimes.empty())
+		LL_DEBUGS("Avatar") << "copied, src_id " << src_id << " to dst_id " << dst_id << " after " << mWaitTimes[src_id].getElapsedTimeF32() << " seconds" << llendl;
+		mPendingRequests--;
+		F32 wait_time = mWaitTimes[src_id].getElapsedTimeF32();
+		mTimeStats.push(wait_time);
+		mWaitTimes.erase(src_id);
+		if (mWaitTimes.empty())
 		{
-			onCompletion();
+			onCompletionOrFailure();
 		}
 	}
 
-	void onCompletion()
+	void onCompletionOrFailure()
 	{
-		llinfos << "done" << llendl;
+		// Will never call onCompletion() if any item has been flagged as
+		// a failure - otherwise could wind up with corrupted
+		// outfit, involuntary nudity, etc.
+		reportStats();
 		if (!mTrackingPhase.empty())
 		{
 			selfStopPhase(mTrackingPhase);
 		}
+		if (!mFailCount)
+		{
+			onCompletion();
+		}
+		else
+		{
+			onFailure();
+		}
+	}
+
+	void onFailure()
+	{
+		llinfos << "failed" << llendl;
+		mOnFailureFunc();
+	}
+
+	void onCompletion()
+	{
+		llinfos << "done" << llendl;
 		mOnCompletionFunc();
 	}
 	
@@ -262,29 +307,79 @@ class LLCallAfterInventoryBatchMgr: public LLEventTimer
 	// Will be deleted after returning true - only safe to do this if all callbacks have fired.
 	BOOL tick()
 	{
-		bool all_done = mSrcTimes.empty();
+		// mPendingRequests will be zero if all requests have been
+		// responded to.  mWaitTimes.empty() will be true if we have
+		// received at least one reply for each UUID.  If requests
+		// have been dropped and retried, these will not necessarily
+		// be the same.  Only safe to return true if all requests have
+		// been serviced, since it will result in this object being
+		// deleted.
+		bool all_done = (mPendingRequests==0);
 
-		if (!all_done)
+		if (!mWaitTimes.empty())
 		{
-			llwarns << "possible hang in operation, waiting on " << mSrcTimes.size() << " items" << llendl;
-			// TODO possibly add retry logic here.
+			llwarns << "still waiting on " << mWaitTimes.size() << " items" << llendl;
+			for (std::map<LLUUID,LLTimer>::const_iterator it = mWaitTimes.begin();
+				 it != mWaitTimes.end();)
+			{
+				// Use a copy of iterator because it may be erased/invalidated.
+				std::map<LLUUID,LLTimer>::const_iterator curr_it = it;
+				++it;
+				
+				F32 time_waited = curr_it->second.getElapsedTimeF32();
+				S32 retries = mRetryCounts[curr_it->first];
+				if (time_waited > mRetryAfter)
+				{
+					if (retries < mMaxRetries)
+					{
+						LL_DEBUGS("Avatar") << "Waited " << time_waited <<
+							" for " << curr_it->first << ", retrying" << llendl;
+						mRetryCount++;
+						addItem(gInventory.getItem(curr_it->first));
+					}
+					else
+					{
+						llwarns << "Giving up on " << curr_it->first << " after too many retries" << llendl;
+						mWaitTimes.erase(curr_it);
+						mFailCount++;
+					}
+				}
+				if (mWaitTimes.empty())
+				{
+					onCompletionOrFailure();
+				}
 
+			}
 		}
 		return all_done;
 	}
 
+	void reportStats()
+	{
+		LL_DEBUGS("Avatar") << "mFailCount: " << mFailCount << llendl;
+		LL_DEBUGS("Avatar") << "mRetryCount: " << mRetryCount << llendl;
+		LL_DEBUGS("Avatar") << "Times: n " << mTimeStats.getCount() << " min " << mTimeStats.getMinValue() << " max " << mTimeStats.getMaxValue() << llendl;
+		LL_DEBUGS("Avatar") << "Mean " << mTimeStats.getMean() << " stddev " << mTimeStats.getStdDev() << llendl;
+	}
+	
 	virtual ~LLCallAfterInventoryBatchMgr()
 	{
-		LL_DEBUGS("Avatar") << "ending" << llendl;
+		LL_DEBUGS("Avatar") << "deleting" << llendl;
 	}
 
 protected:
 	std::string mTrackingPhase;
-	std::map<LLUUID,LLTimer> mSrcTimes;
+	std::map<LLUUID,LLTimer> mWaitTimes;
+	std::map<LLUUID,S32> mRetryCounts;
 	LLUUID mDstCatID;
 	nullary_func_t mOnCompletionFunc;
+	nullary_func_t mOnFailureFunc;
 	F32 mRetryAfter;
 	S32 mMaxRetries;
+	S32 mPendingRequests;
+	S32 mFailCount;
+	S32 mRetryCount;
+	LLViewerStats::StatsAccumulator mTimeStats;
 };
 
 class LLCallAfterInventoryCopyMgr: public LLCallAfterInventoryBatchMgr
@@ -293,9 +388,10 @@ class LLCallAfterInventoryCopyMgr: public LLCallAfterInventoryBatchMgr
 	LLCallAfterInventoryCopyMgr(LLInventoryModel::item_array_t& src_items,
 								const LLUUID& dst_cat_id,
 								const std::string& phase_name,
-								nullary_func_t on_completion_func
+								nullary_func_t on_completion_func,
+								nullary_func_t on_failure_func
 		):
-		LLCallAfterInventoryBatchMgr(dst_cat_id, phase_name, on_completion_func)
+		LLCallAfterInventoryBatchMgr(dst_cat_id, phase_name, on_completion_func, on_failure_func)
 	{
 		addItems(src_items);
 	}
@@ -313,56 +409,32 @@ class LLCallAfterInventoryCopyMgr: public LLCallAfterInventoryBatchMgr
 	}
 };
 
-class LLWearInventoryCategoryCallback : public LLInventoryCallback
+class LLCallAfterInventoryLinkMgr: public LLCallAfterInventoryBatchMgr
 {
-public:
-	LLWearInventoryCategoryCallback(const LLUUID& cat_id, bool append)
-	{
-		mCatID = cat_id;
-		mAppend = append;
-
-		LL_INFOS("Avatar") << self_av_string() << "starting" << LL_ENDL;
-		
-		selfStartPhase("wear_inventory_category_callback");
-	}
-	void fire(const LLUUID& item_id)
+	LLCallAfterInventoryLinkMgr(LLInventoryModel::item_array_t& src_items,
+								const LLUUID& dst_cat_id,
+								const std::string& phase_name,
+								nullary_func_t on_completion_func,
+								nullary_func_t on_failure_func
+		):
+		LLCallAfterInventoryBatchMgr(dst_cat_id, phase_name, on_completion_func, on_failure_func)
 	{
-		/*
-		 * Do nothing.  We only care about the destructor
-		 *
-		 * The reason for this is that this callback is used in a hack where the
-		 * same callback is given to dozens of items, and the destructor is called
-		 * after the last item has fired the event and dereferenced it -- if all
-		 * the events actually fire!
-		 */
-		LL_DEBUGS("Avatar") << self_av_string() << " fired on copied item, id " << item_id << LL_ENDL;
+		addItems(src_items);
 	}
-
-protected:
-	~LLWearInventoryCategoryCallback()
+	
+	virtual void requestOperation(LLViewerInventoryItem *item)
 	{
-		LL_INFOS("Avatar") << self_av_string() << "done all inventory callbacks" << LL_ENDL;
-		
-		selfStopPhase("wear_inventory_category_callback");
-
-		// Is the destructor called by ordinary dereference, or because the app's shutting down?
-		// If the inventory callback manager goes away, we're shutting down, no longer want the callback.
-		if( LLInventoryCallbackManager::is_instantiated() )
-		{
-			LLAppearanceMgr::instance().wearInventoryCategoryOnAvatar(gInventory.getCategory(mCatID), mAppend);
-		}
-		else
-		{
-			llwarns << self_av_string() << "Dropping unhandled LLWearInventoryCategoryCallback" << llendl;
-		}
+		link_inventory_item(gAgent.getID(),
+							item->getLinkedUUID(),
+							mDstCatID,
+							item->getName(),
+							item->LLInventoryItem::getDescription(),
+							LLAssetType::AT_LINK,
+							make_inventory_func_callback(
+								boost::bind(&LLCallAfterInventoryBatchMgr::onOp,this,item->getUUID(),_1)));
 	}
-
-private:
-	LLUUID mCatID;
-	bool mAppend;
 };
 
-
 //Inventory callback updating "dirty" state when destroyed
 class LLUpdateDirtyState: public LLInventoryCallback
 {
@@ -2145,7 +2217,8 @@ void LLAppearanceMgr::wearCategoryFinal(LLUUID& cat_id, bool copy_items, bool ap
 			boost::bind(&LLAppearanceMgr::wearInventoryCategoryOnAvatar,
 						LLAppearanceMgr::getInstance(),
 						gInventory.getCategory(new_cat_id),
-						append));
+						append),
+			boost::function<void()>());
 
 		// BAP fixes a lag in display of created dir.
 		gInventory.notifyObservers();
@@ -2167,6 +2240,7 @@ void LLAppearanceMgr::wearInventoryCategoryOnAvatar( LLInventoryCategory* catego
 
 	if ( !LLInventoryCallbackManager::is_instantiated() )
 	{
+		// shutting down, ignore.
 		return;
 	}
 
-- 
GitLab


From 7d419d59009d429c8d9480adf3ae163d5c688126 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Wed, 5 Dec 2012 16:39:23 -0500
Subject: [PATCH 186/436] SH-3604 WIP - backed out logcontrol.xml change

---
 indra/newview/app_settings/logcontrol.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/newview/app_settings/logcontrol.xml b/indra/newview/app_settings/logcontrol.xml
index 12590390107..64122bbb6ce 100755
--- a/indra/newview/app_settings/logcontrol.xml
+++ b/indra/newview/app_settings/logcontrol.xml
@@ -42,8 +42,8 @@
 						</array>
 					<key>tags</key>
 						<array>
-						     <string>Avatar</string>
 						<!-- sample entry for debugging specific items	
+						     <string>Avatar</string>
 						     <string>Voice</string>		
 						-->
 						</array>
-- 
GitLab


From 1004eff4a29371719f98eae378f6ecd7dc6be225 Mon Sep 17 00:00:00 2001
From: Logan Dethrow <log@lindenlab.com>
Date: Wed, 5 Dec 2012 17:29:52 -0500
Subject: [PATCH 187/436] Linux Viewer build fixes.

* Removed no longer used unpack_bufsize from bitpack_test.cpp
* Added llviewertexture_stub.cpp to the newview tests directory to fix llworldmap_test.cpp and llworldmipmap_test.cpp linker errors.
---
 indra/llcommon/tests/bitpack_test.cpp        |  1 -
 indra/newview/CMakeLists.txt                 |  9 ++++++
 indra/newview/tests/llviewertexture_stub.cpp | 32 ++++++++++++++++++++
 3 files changed, 41 insertions(+), 1 deletion(-)
 create mode 100644 indra/newview/tests/llviewertexture_stub.cpp

diff --git a/indra/llcommon/tests/bitpack_test.cpp b/indra/llcommon/tests/bitpack_test.cpp
index 49cae164001..afc0c18cd01 100644
--- a/indra/llcommon/tests/bitpack_test.cpp
+++ b/indra/llcommon/tests/bitpack_test.cpp
@@ -94,7 +94,6 @@ namespace tut
 		ensure("bitPack: individual unpack: 5", unpackbuffer[0] == (U8) str[5]);
 		bitunpack.bitUnpack(unpackbuffer, 8*4); // Life
 		ensure_memory_matches("bitPack: 4 bytes unpack:", unpackbuffer, 4, str+6, 4);
-		ensure("keep compiler quiet", unpack_bufsize == unpack_bufsize);
 	}
 
 	// U32 packing
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index f85060a140e..e64697982fc 100755
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -2060,6 +2060,15 @@ if (LL_TESTS)
     llworldmipmap.cpp
   )
 
+  set_source_files_properties(
+    llworldmap.cpp
+    llworldmipmap.cpp
+    PROPERTIES
+    LL_TEST_ADDITIONAL_SOURCE_FILES 
+    tests/llviewertexture_stub.cpp
+    #llviewertexturelist.cpp
+  )
+
   set_source_files_properties(
     lltranslate.cpp
     PROPERTIES
diff --git a/indra/newview/tests/llviewertexture_stub.cpp b/indra/newview/tests/llviewertexture_stub.cpp
new file mode 100644
index 00000000000..90e76a8f830
--- /dev/null
+++ b/indra/newview/tests/llviewertexture_stub.cpp
@@ -0,0 +1,32 @@
+/** 
+ * @file llviewertexture_stub.cpp
+ * @brief  stub class to allow unit testing
+ *
+ * $LicenseInfo:firstyear=2012&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+#include "linden_common.h"
+#include "../llviewertexture.h"
+
+void LLViewerTexture::setBoostLevel(int level)
+{
+}
-- 
GitLab


From bfa3bc0059eef269ac7a77cd28443898cea1fb19 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Wed, 5 Dec 2012 17:58:35 -0500
Subject: [PATCH 188/436] Possible fix for TC build failure

---
 indra/newview/app_settings/logcontrol.xml | 2 +-
 indra/newview/llappearancemgr.cpp         | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/indra/newview/app_settings/logcontrol.xml b/indra/newview/app_settings/logcontrol.xml
index 64122bbb6ce..12590390107 100755
--- a/indra/newview/app_settings/logcontrol.xml
+++ b/indra/newview/app_settings/logcontrol.xml
@@ -42,8 +42,8 @@
 						</array>
 					<key>tags</key>
 						<array>
-						<!-- sample entry for debugging specific items	
 						     <string>Avatar</string>
+						<!-- sample entry for debugging specific items	
 						     <string>Voice</string>		
 						-->
 						</array>
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index c149f38fcd1..656949a9bbc 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -319,11 +319,11 @@ class LLCallAfterInventoryBatchMgr: public LLEventTimer
 		if (!mWaitTimes.empty())
 		{
 			llwarns << "still waiting on " << mWaitTimes.size() << " items" << llendl;
-			for (std::map<LLUUID,LLTimer>::const_iterator it = mWaitTimes.begin();
+			for (std::map<LLUUID,LLTimer>::iterator it = mWaitTimes.begin();
 				 it != mWaitTimes.end();)
 			{
 				// Use a copy of iterator because it may be erased/invalidated.
-				std::map<LLUUID,LLTimer>::const_iterator curr_it = it;
+				std::map<LLUUID,LLTimer>::iterator curr_it = it;
 				++it;
 				
 				F32 time_waited = curr_it->second.getElapsedTimeF32();
-- 
GitLab


From 2af1f6dbdfdef0a7b7b7c4f40ac33c8d93869b1f Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Wed, 5 Dec 2012 18:04:33 -0500
Subject: [PATCH 189/436] removed yet another unintended commit of
 logcontrol.xml

---
 indra/newview/app_settings/logcontrol.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/newview/app_settings/logcontrol.xml b/indra/newview/app_settings/logcontrol.xml
index 12590390107..64122bbb6ce 100755
--- a/indra/newview/app_settings/logcontrol.xml
+++ b/indra/newview/app_settings/logcontrol.xml
@@ -42,8 +42,8 @@
 						</array>
 					<key>tags</key>
 						<array>
-						     <string>Avatar</string>
 						<!-- sample entry for debugging specific items	
+						     <string>Avatar</string>
 						     <string>Voice</string>		
 						-->
 						</array>
-- 
GitLab


From 1d5b98929b176f3eeda7274bf8f21b69d551a2cd Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Thu, 6 Dec 2012 15:17:00 -0500
Subject: [PATCH 190/436] SH-3604 FIX - switched link creation in updateCOF()
 to use retry path, better stats reporting, fixed failure logic

---
 indra/newview/llappearancemgr.cpp | 48 ++++++++++++++++++++-----------
 1 file changed, 32 insertions(+), 16 deletions(-)

diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 656949a9bbc..98a8097a1ef 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -186,13 +186,15 @@ void report_fire(const LLUUID& item_id)
 	llinfos << item_id << llendl;
 }
 
+void no_op() {}
+
 class LLCallAfterInventoryBatchMgr: public LLEventTimer 
 {
 public:
 	LLCallAfterInventoryBatchMgr(const LLUUID& dst_cat_id,
 								 const std::string& phase_name,
 								 nullary_func_t on_completion_func,
-								 nullary_func_t on_failure_func,
+								 nullary_func_t on_failure_func = no_op,
 								 F32 check_period = 5.0,
 								 F32 retry_after = 10.0,
 								 S32 max_retries = 2
@@ -205,6 +207,7 @@ class LLCallAfterInventoryBatchMgr: public LLEventTimer
 		mMaxRetries(max_retries),
 		mPendingRequests(0),
 		mFailCount(0),
+		mCompletionOrFailureCalled(false),
 		mRetryCount(0),
 		LLEventTimer(check_period)
 	{
@@ -260,12 +263,16 @@ class LLCallAfterInventoryBatchMgr: public LLEventTimer
 
 	void onOp(const LLUUID& src_id, const LLUUID& dst_id)
 	{
-		LL_DEBUGS("Avatar") << "copied, src_id " << src_id << " to dst_id " << dst_id << " after " << mWaitTimes[src_id].getElapsedTimeF32() << " seconds" << llendl;
+		LL_DEBUGS("Avatar") << "op done, src_id " << src_id << " dst_id " << dst_id << " after " << mWaitTimes[src_id].getElapsedTimeF32() << " seconds" << llendl;
 		mPendingRequests--;
 		F32 wait_time = mWaitTimes[src_id].getElapsedTimeF32();
 		mTimeStats.push(wait_time);
 		mWaitTimes.erase(src_id);
-		if (mWaitTimes.empty())
+		if (mCompletionOrFailureCalled)
+		{
+			llinfos << "late-completing operation, src_id " << src_id << "dst_id " << dst_id << llendl;
+		}
+		if (mWaitTimes.empty() && !mCompletionOrFailureCalled)
 		{
 			onCompletionOrFailure();
 		}
@@ -273,6 +280,9 @@ class LLCallAfterInventoryBatchMgr: public LLEventTimer
 
 	void onCompletionOrFailure()
 	{
+		assert (!mCompletionOrFailureCalled);
+		mCompletionOrFailureCalled = true;
+		
 		// Will never call onCompletion() if any item has been flagged as
 		// a failure - otherwise could wind up with corrupted
 		// outfit, involuntary nudity, etc.
@@ -356,6 +366,7 @@ class LLCallAfterInventoryBatchMgr: public LLEventTimer
 
 	void reportStats()
 	{
+		LL_DEBUGS("Avatar") << "Phase: " << mTrackingPhase << llendl;
 		LL_DEBUGS("Avatar") << "mFailCount: " << mFailCount << llendl;
 		LL_DEBUGS("Avatar") << "mRetryCount: " << mRetryCount << llendl;
 		LL_DEBUGS("Avatar") << "Times: n " << mTimeStats.getCount() << " min " << mTimeStats.getMinValue() << " max " << mTimeStats.getMaxValue() << llendl;
@@ -379,6 +390,7 @@ class LLCallAfterInventoryBatchMgr: public LLEventTimer
 	S32 mPendingRequests;
 	S32 mFailCount;
 	S32 mRetryCount;
+	bool mCompletionOrFailureCalled;
 	LLViewerStats::StatsAccumulator mTimeStats;
 };
 
@@ -389,7 +401,7 @@ class LLCallAfterInventoryCopyMgr: public LLCallAfterInventoryBatchMgr
 								const LLUUID& dst_cat_id,
 								const std::string& phase_name,
 								nullary_func_t on_completion_func,
-								nullary_func_t on_failure_func
+								nullary_func_t on_failure_func = no_op
 		):
 		LLCallAfterInventoryBatchMgr(dst_cat_id, phase_name, on_completion_func, on_failure_func)
 	{
@@ -411,11 +423,12 @@ class LLCallAfterInventoryCopyMgr: public LLCallAfterInventoryBatchMgr
 
 class LLCallAfterInventoryLinkMgr: public LLCallAfterInventoryBatchMgr
 {
+public:
 	LLCallAfterInventoryLinkMgr(LLInventoryModel::item_array_t& src_items,
 								const LLUUID& dst_cat_id,
 								const std::string& phase_name,
 								nullary_func_t on_completion_func,
-								nullary_func_t on_failure_func
+								nullary_func_t on_failure_func = no_op
 		):
 		LLCallAfterInventoryBatchMgr(dst_cat_id, phase_name, on_completion_func, on_failure_func)
 	{
@@ -1757,34 +1770,38 @@ void LLAppearanceMgr::updateCOF(const LLUUID& category, bool append)
 	purgeCategory(cof, keep_outfit_links);
 	gInventory.notifyObservers();
 
-	// Create links to new COF contents.
-	LL_DEBUGS("Avatar") << self_av_string() << "creating LLUpdateAppearanceOnDestroy" << LL_ENDL;
-	LLPointer<LLInventoryCallback> link_waiter = new LLUpdateAppearanceOnDestroy(!append);
-
 #ifndef LL_RELEASE_FOR_DOWNLOAD
 	LL_DEBUGS("Avatar") << self_av_string() << "Linking body items" << LL_ENDL;
 #endif
-	linkAll(cof, body_items, link_waiter);
+
+	// Create links to new COF contents.
+	LL_DEBUGS("Avatar") << self_av_string() << "creating LLCallAfterInventoryLinkMgr" << LL_ENDL;
+	bool update_base_outfit_ordering = !append;
+	LLCallAfterInventoryLinkMgr *link_waiter =
+		new LLCallAfterInventoryLinkMgr(body_items,cof,"update_appearance_on_destroy",
+										boost::bind(&LLAppearanceMgr::updateAppearanceFromCOF,
+													LLAppearanceMgr::getInstance(),
+													update_base_outfit_ordering));
 
 #ifndef LL_RELEASE_FOR_DOWNLOAD
 	LL_DEBUGS("Avatar") << self_av_string() << "Linking wear items" << LL_ENDL;
 #endif
-	linkAll(cof, wear_items, link_waiter);
+	link_waiter->addItems(wear_items);
 
 #ifndef LL_RELEASE_FOR_DOWNLOAD
 	LL_DEBUGS("Avatar") << self_av_string() << "Linking obj items" << LL_ENDL;
 #endif
-	linkAll(cof, obj_items, link_waiter);
+	link_waiter->addItems(obj_items);
 
 #ifndef LL_RELEASE_FOR_DOWNLOAD
 	LL_DEBUGS("Avatar") << self_av_string() << "Linking gesture items" << LL_ENDL;
 #endif
-	linkAll(cof, gest_items, link_waiter);
+	link_waiter->addItems(gest_items);
 
 	// Add link to outfit if category is an outfit. 
 	if (!append)
 	{
-		createBaseOutfitLink(category, link_waiter);
+		createBaseOutfitLink(category, NULL);
 	}
 	LL_DEBUGS("Avatar") << self_av_string() << "waiting for LLUpdateAppearanceOnDestroy" << LL_ENDL;
 }
@@ -2217,8 +2234,7 @@ void LLAppearanceMgr::wearCategoryFinal(LLUUID& cat_id, bool copy_items, bool ap
 			boost::bind(&LLAppearanceMgr::wearInventoryCategoryOnAvatar,
 						LLAppearanceMgr::getInstance(),
 						gInventory.getCategory(new_cat_id),
-						append),
-			boost::function<void()>());
+						append));
 
 		// BAP fixes a lag in display of created dir.
 		gInventory.notifyObservers();
-- 
GitLab


From 97adf6422ac61148a3334d67b4c59a5f5437af2c Mon Sep 17 00:00:00 2001
From: Logan Dethrow <log@lindenlab.com>
Date: Thu, 6 Dec 2012 21:59:54 +0000
Subject: [PATCH 191/436] On Linux now use the default system python instead of
 defaulting to python2.5. This was a holdover from when on linden systems 2.5
 was newer than the default, instead of older.

---
 indra/cmake/Python.cmake | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/cmake/Python.cmake b/indra/cmake/Python.cmake
index 748c8c2bec1..a81c9307fc0 100644
--- a/indra/cmake/Python.cmake
+++ b/indra/cmake/Python.cmake
@@ -23,7 +23,7 @@ if (WINDOWS)
 elseif (EXISTS /etc/debian_version)
   # On Debian and Ubuntu, avoid Python 2.4 if possible.
 
-  find_program(PYTHON_EXECUTABLE python2.5 python2.3 python PATHS /usr/bin)
+  find_program(PYTHON_EXECUTABLE python PATHS /usr/bin)
 
   if (PYTHON_EXECUTABLE)
     set(PYTHONINTERP_FOUND ON)
-- 
GitLab


From 07d05c2967fb1013a3f21c1c055ad068b2be9995 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Thu, 6 Dec 2012 22:54:50 +0000
Subject: [PATCH 192/436] Alpha rendering fixes for appearance utility.

---
 autobuild.xml                         |  4 +-
 indra/llappearance/lltexlayer.cpp     | 85 +--------------------------
 indra/llcommon/tests/bitpack_test.cpp |  2 +-
 indra/newview/llviewertexlayer.cpp    |  5 +-
 4 files changed, 8 insertions(+), 88 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index f5ea967b327..d13687849d8 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -1290,9 +1290,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>5552d94c9ef2a21273cb1fff1446a699</string>
+              <string>84aee73ab14ec7c56e54fa17f44a06f0</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/267407/arch/Linux/installer/llappearanceutility_source-0.1-linux-20121128.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/267783/arch/Linux/installer/llappearanceutility_source-0.1-linux-20121206.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
diff --git a/indra/llappearance/lltexlayer.cpp b/indra/llappearance/lltexlayer.cpp
index a8bbbdbc066..d1edd4f095b 100644
--- a/indra/llappearance/lltexlayer.cpp
+++ b/indra/llappearance/lltexlayer.cpp
@@ -145,17 +145,11 @@ BOOL LLTexLayerSetBuffer::renderTexLayerSet()
 	
 	bool use_shaders = LLGLSLShader::sNoFixedFunction;
 
-	LLGLEnable(GL_ALPHA_TEST);
-
 	if (use_shaders)
 	{
 		gAlphaMaskProgram.bind();
 		gAlphaMaskProgram.setMinimumAlpha(0.004f);
 	}
-	else
-	{
-		gGL.setAlphaRejectSettings(LLRender::CF_GREATER, 0.004f);
-	}
 
 	LLVertexBuffer::unbind();
 
@@ -394,7 +388,6 @@ BOOL LLTexLayerSet::render( S32 x, S32 y, S32 width, S32 height )
 	LLGLSUIDefault gls_ui;
 	LLGLDepthTest gls_depth(GL_FALSE, GL_FALSE);
 	gGL.setColorMask(true, true);
-	LLGLEnable(GL_ALPHA_TEST);
 
 	// clear buffer area to ensure we don't pick up UI elements
 	{
@@ -404,11 +397,6 @@ BOOL LLTexLayerSet::render( S32 x, S32 y, S32 width, S32 height )
 		{
 			gAlphaMaskProgram.setMinimumAlpha(0.0f);
 		}
-		else
-		{
-			gGL.setAlphaRejectSettings(LLRender::CF_GREATER, 0.0f);
-		}
-
 		gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
 		gGL.color4f( 0.f, 0.f, 0.f, 1.f );
 
@@ -419,10 +407,6 @@ BOOL LLTexLayerSet::render( S32 x, S32 y, S32 width, S32 height )
 		{
 			gAlphaMaskProgram.setMinimumAlpha(0.004f);
 		}
-		else
-		{
-			gGL.setAlphaRejectSettings(LLRender::CF_GREATER, 0.004f);
-		}
 	}
 
 	if (mIsVisible)
@@ -453,10 +437,6 @@ BOOL LLTexLayerSet::render( S32 x, S32 y, S32 width, S32 height )
 		{
 			gAlphaMaskProgram.setMinimumAlpha(0.f);
 		}
-		else
-		{
-			gGL.setAlphaRejectSettings(LLRender::CF_GREATER, 0.0f);
-		}
 
 		gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
 		gGL.color4f( 0.f, 0.f, 0.f, 0.f );
@@ -469,11 +449,6 @@ BOOL LLTexLayerSet::render( S32 x, S32 y, S32 width, S32 height )
 		{
 			gAlphaMaskProgram.setMinimumAlpha(0.004f);
 		}
-		else
-		{
-			gGL.setAlphaRejectSettings(LLRender::CF_GREATER, 0.004f);
-		}
-
 	}
 
 	return success;
@@ -564,7 +539,6 @@ void LLTexLayerSet::renderAlphaMaskTextures(S32 x, S32 y, S32 width, S32 height,
 
 	gGL.setColorMask(false, true);
 	gGL.setSceneBlendType(LLRender::BT_REPLACE);
-	LLGLEnable(GL_ALPHA_TEST);
 	
 	// (Optionally) replace alpha with a single component image from a tga file.
 	if (!info->mStaticAlphaFileName.empty())
@@ -591,11 +565,6 @@ void LLTexLayerSet::renderAlphaMaskTextures(S32 x, S32 y, S32 width, S32 height,
 		{
 			gAlphaMaskProgram.setMinimumAlpha(0.f);
 		}
-		else
-		{
-			gGL.setAlphaRejectSettings(LLRender::CF_GREATER, 0.0f);
-		}
-
 		gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
 		gGL.color4f( 0.f, 0.f, 0.f, 1.f );
 		
@@ -606,11 +575,6 @@ void LLTexLayerSet::renderAlphaMaskTextures(S32 x, S32 y, S32 width, S32 height,
 		{
 			gAlphaMaskProgram.setMinimumAlpha(0.004f);
 		}
-		else
-		{
-			gGL.setAlphaRejectSettings(LLRender::CF_GREATER, 0.004f);
-		}
-
 	}
 	
 	// (Optional) Mask out part of the baked texture with alpha masks
@@ -1118,7 +1082,6 @@ BOOL LLTexLayer::render(S32 x, S32 y, S32 width, S32 height)
 	//gPipeline.disableLights();
 	stop_glerror();
 	glDisable(GL_LIGHTING);
-	LLGLEnable(GL_ALPHA_TEST);
 	stop_glerror();
 
 	bool use_shaders = LLGLSLShader::sNoFixedFunction;
@@ -1211,10 +1174,6 @@ BOOL LLTexLayer::render(S32 x, S32 y, S32 width, S32 height)
 						{
 							gAlphaMaskProgram.setMinimumAlpha(0.f);
 						}
-						else
-						{
-							gGL.setAlphaRejectSettings(LLRender::CF_GREATER, 0.0f);
-						}
 					}
 					
 					LLTexUnit::eTextureAddressMode old_mode = tex->getAddressMode();
@@ -1232,12 +1191,7 @@ BOOL LLTexLayer::render(S32 x, S32 y, S32 width, S32 height)
 						{
 							gAlphaMaskProgram.setMinimumAlpha(0.004f);
 						}
-						else
-						{
-							gGL.setAlphaRejectSettings(LLRender::CF_GREATER, 0.004f);
-						}
 					}
-					
 				}
 			}
 //			else
@@ -1272,11 +1226,7 @@ BOOL LLTexLayer::render(S32 x, S32 y, S32 width, S32 height)
 		LLGLDisable no_alpha(GL_ALPHA_TEST);
 		if (use_shaders)
 		{
-			gAlphaMaskProgram.setMinimumAlpha(0.f);
-		}
-		else
-		{
-			gGL.setAlphaRejectSettings(LLRender::CF_GREATER, 0.0f);
+			gAlphaMaskProgram.setMinimumAlpha(0.000f);
 		}
 
 		gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
@@ -1286,10 +1236,6 @@ BOOL LLTexLayer::render(S32 x, S32 y, S32 width, S32 height)
 		{
 			gAlphaMaskProgram.setMinimumAlpha(0.004f);
 		}
-		else
-		{
-			gGL.setAlphaRejectSettings(LLRender::CF_GREATER, 0.004f);
-		}
 	}
 
 	if( alpha_mask_specified || getInfo()->mWriteAllChannels )
@@ -1378,7 +1324,6 @@ BOOL LLTexLayer::blendAlphaTexture(S32 x, S32 y, S32 width, S32 height)
 	gGL.flush();
 	
 	bool use_shaders = LLGLSLShader::sNoFixedFunction;
-	LLGLEnable(GL_ALPHA_TEST);
 
 	if( !getInfo()->mStaticImageFileName.empty() )
 	{
@@ -1390,11 +1335,6 @@ BOOL LLTexLayer::blendAlphaTexture(S32 x, S32 y, S32 width, S32 height)
 			{
 				gAlphaMaskProgram.setMinimumAlpha(0.f);
 			}
-			else
-			{
-				gGL.setAlphaRejectSettings(LLRender::CF_GREATER, 0.0f);
-			}
-
 			gGL.getTexUnit(0)->bind(tex, TRUE);
 			gl_rect_2d_simple_tex( width, height );
 			gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
@@ -1402,10 +1342,6 @@ BOOL LLTexLayer::blendAlphaTexture(S32 x, S32 y, S32 width, S32 height)
 			{
 				gAlphaMaskProgram.setMinimumAlpha(0.004f);
 			}
-			else
-			{
-				gGL.setAlphaRejectSettings(LLRender::CF_GREATER, 0.004f);
-			}
 		}
 		else
 		{
@@ -1424,11 +1360,6 @@ BOOL LLTexLayer::blendAlphaTexture(S32 x, S32 y, S32 width, S32 height)
 				{
 					gAlphaMaskProgram.setMinimumAlpha(0.f);
 				}
-				else
-				{
-					gGL.setAlphaRejectSettings(LLRender::CF_GREATER, 0.0f);
-				}
-
 				gGL.getTexUnit(0)->bind(tex);
 				gl_rect_2d_simple_tex( width, height );
 				gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
@@ -1437,10 +1368,6 @@ BOOL LLTexLayer::blendAlphaTexture(S32 x, S32 y, S32 width, S32 height)
 				{
 					gAlphaMaskProgram.setMinimumAlpha(0.004f);
 				}
-				else
-				{
-					gGL.setAlphaRejectSettings(LLRender::CF_GREATER, 0.0f);
-				}
 			}
 		}
 	}
@@ -1462,17 +1389,11 @@ BOOL LLTexLayer::renderMorphMasks(S32 x, S32 y, S32 width, S32 height, const LLC
 	llassert( !mParamAlphaList.empty() );
 
 	bool use_shaders = LLGLSLShader::sNoFixedFunction;
-	LLGLEnable(GL_ALPHA_TEST);
 
 	if (use_shaders)
 	{
 		gAlphaMaskProgram.setMinimumAlpha(0.f);
 	}
-	else
-	{
-		gGL.setAlphaRejectSettings(LLRender::CF_GREATER, 0.0f);
-	}
-
 
 	gGL.setColorMask(false, true);
 
@@ -1553,10 +1474,6 @@ BOOL LLTexLayer::renderMorphMasks(S32 x, S32 y, S32 width, S32 height, const LLC
 	{
 		gAlphaMaskProgram.setMinimumAlpha(0.004f);
 	}
-	else
-	{
-		gGL.setAlphaRejectSettings(LLRender::CF_GREATER, 0.004f);
-	}
 
 	LLGLSUIDefault gls_ui;
 
diff --git a/indra/llcommon/tests/bitpack_test.cpp b/indra/llcommon/tests/bitpack_test.cpp
index 49cae164001..7bca20c30a2 100644
--- a/indra/llcommon/tests/bitpack_test.cpp
+++ b/indra/llcommon/tests/bitpack_test.cpp
@@ -94,7 +94,7 @@ namespace tut
 		ensure("bitPack: individual unpack: 5", unpackbuffer[0] == (U8) str[5]);
 		bitunpack.bitUnpack(unpackbuffer, 8*4); // Life
 		ensure_memory_matches("bitPack: 4 bytes unpack:", unpackbuffer, 4, str+6, 4);
-		ensure("keep compiler quiet", unpack_bufsize == unpack_bufsize);
+		//ensure("keep compiler quiet", unpack_bufsize == unpack_bufsize);
 	}
 
 	// U32 packing
diff --git a/indra/newview/llviewertexlayer.cpp b/indra/newview/llviewertexlayer.cpp
index cd5e781d711..f3c9921819c 100755
--- a/indra/newview/llviewertexlayer.cpp
+++ b/indra/newview/llviewertexlayer.cpp
@@ -416,7 +416,10 @@ void LLViewerTexLayerSetBuffer::doUpload()
 			BOOL valid = FALSE;
 			LLPointer<LLImageJ2C> integrity_test = new LLImageJ2C;
 			S32 file_size = 0;
-			U8* data = LLVFile::readFile(gVFS, asset_id, LLAssetType::AT_TEXTURE, &file_size);
+			LLVFile file(gVFS, asset_id, LLAssetType::AT_TEXTURE);
+			file_size = file.getSize();
+			U8* data = integrity_test->allocateData(file_size);
+			file.read(data, file_size);
 			if (data)
 			{
 				valid = integrity_test->validate(data, file_size); // integrity_test will delete 'data'
-- 
GitLab


From b75e632613312c7b994355c692d18b95991545b3 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Fri, 7 Dec 2012 13:57:44 -0500
Subject: [PATCH 193/436] SH-3606 WIP - moving classes to more reusable
 location

---
 indra/newview/app_settings/logcontrol.xml |  2 +-
 indra/newview/llappearancemgr.cpp         | 71 ++++++++---------------
 indra/newview/llviewerinventory.h         | 21 +++++++
 3 files changed, 45 insertions(+), 49 deletions(-)
 mode change 100644 => 100755 indra/newview/llviewerinventory.h

diff --git a/indra/newview/app_settings/logcontrol.xml b/indra/newview/app_settings/logcontrol.xml
index 64122bbb6ce..12590390107 100755
--- a/indra/newview/app_settings/logcontrol.xml
+++ b/indra/newview/app_settings/logcontrol.xml
@@ -42,8 +42,8 @@
 						</array>
 					<key>tags</key>
 						<array>
-						<!-- sample entry for debugging specific items	
 						     <string>Avatar</string>
+						<!-- sample entry for debugging specific items	
 						     <string>Voice</string>		
 						-->
 						</array>
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 98a8097a1ef..af276e55c3f 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -155,37 +155,6 @@ LLUUID findDescendentCategoryIDByName(const LLUUID& parent_id, const std::string
 	}
 }
 
-// Shim between inventory callback and boost function
-typedef boost::function<void(const LLUUID&)> inventory_func_type;
-
-class LLBoostFuncInventoryCallback: public LLInventoryCallback
-{
-public:
-
-	LLBoostFuncInventoryCallback(const inventory_func_type& func):
-		mFunc(func)
-	{
-	}
-
-	void fire(const LLUUID& item_id)
-	{
-		mFunc(item_id);
-	}
-
-private:
-	inventory_func_type mFunc;
-};
-
-LLPointer<LLInventoryCallback> make_inventory_func_callback(const inventory_func_type& func)
-{
-	return new LLBoostFuncInventoryCallback(func); 
-}
-
-void report_fire(const LLUUID& item_id)
-{
-	llinfos << item_id << llendl;
-}
-
 void no_op() {}
 
 class LLCallAfterInventoryBatchMgr: public LLEventTimer 
@@ -195,8 +164,7 @@ class LLCallAfterInventoryBatchMgr: public LLEventTimer
 								 const std::string& phase_name,
 								 nullary_func_t on_completion_func,
 								 nullary_func_t on_failure_func = no_op,
-								 F32 check_period = 5.0,
-								 F32 retry_after = 10.0,
+								 F32 retry_after = 15.0,
 								 S32 max_retries = 2
 		):
 		mDstCatID(dst_cat_id),
@@ -209,7 +177,7 @@ class LLCallAfterInventoryBatchMgr: public LLEventTimer
 		mFailCount(0),
 		mCompletionOrFailureCalled(false),
 		mRetryCount(0),
-		LLEventTimer(check_period)
+		LLEventTimer(retry_after)
 	{
 		if (!mTrackingPhase.empty())
 		{
@@ -261,17 +229,20 @@ class LLCallAfterInventoryBatchMgr: public LLEventTimer
 
 	virtual void requestOperation(LLViewerInventoryItem *item) = 0;
 
-	void onOp(const LLUUID& src_id, const LLUUID& dst_id)
+	void onOp(const LLUUID& src_id, const LLUUID& dst_id, LLTimer timestamp)
 	{
-		LL_DEBUGS("Avatar") << "op done, src_id " << src_id << " dst_id " << dst_id << " after " << mWaitTimes[src_id].getElapsedTimeF32() << " seconds" << llendl;
 		mPendingRequests--;
-		F32 wait_time = mWaitTimes[src_id].getElapsedTimeF32();
-		mTimeStats.push(wait_time);
-		mWaitTimes.erase(src_id);
-		if (mCompletionOrFailureCalled)
+		F32 elapsed = timestamp.getElapsedTimeF32();
+		LL_DEBUGS("Avatar") << "op done, src_id " << src_id << " dst_id " << dst_id << " after " << elapsed << " seconds" << llendl;
+		if (mWaitTimes.find(src_id) == mWaitTimes.end())
 		{
-			llinfos << "late-completing operation, src_id " << src_id << "dst_id " << dst_id << llendl;
+			// No longer waiting for this item - either serviced
+			// already or gave up after too many retries.
+			llwarns << "duplicate or late operation, src_id " << src_id << "dst_id " << dst_id
+					<< " elapsed " << elapsed << " after end " << (S32) mCompletionOrFailureCalled << llendl;
 		}
+		mTimeStats.push(elapsed);
+		mWaitTimes.erase(src_id);
 		if (mWaitTimes.empty() && !mCompletionOrFailureCalled)
 		{
 			onCompletionOrFailure();
@@ -401,9 +372,11 @@ class LLCallAfterInventoryCopyMgr: public LLCallAfterInventoryBatchMgr
 								const LLUUID& dst_cat_id,
 								const std::string& phase_name,
 								nullary_func_t on_completion_func,
-								nullary_func_t on_failure_func = no_op
+								nullary_func_t on_failure_func = no_op,
+								 F32 retry_after = 15.0,
+								 S32 max_retries = 2
 		):
-		LLCallAfterInventoryBatchMgr(dst_cat_id, phase_name, on_completion_func, on_failure_func)
+		LLCallAfterInventoryBatchMgr(dst_cat_id, phase_name, on_completion_func, on_failure_func, retry_after, max_retries)
 	{
 		addItems(src_items);
 	}
@@ -416,7 +389,7 @@ class LLCallAfterInventoryCopyMgr: public LLCallAfterInventoryBatchMgr
 			item->getUUID(),
 			mDstCatID,
 			std::string(),
-			make_inventory_func_callback(boost::bind(&LLCallAfterInventoryBatchMgr::onOp,this,item->getUUID(),_1))
+			new LLBoostFuncInventoryCallback(boost::bind(&LLCallAfterInventoryBatchMgr::onOp,this,item->getUUID(),_1,LLTimer()))
 			);
 	}
 };
@@ -428,9 +401,11 @@ class LLCallAfterInventoryLinkMgr: public LLCallAfterInventoryBatchMgr
 								const LLUUID& dst_cat_id,
 								const std::string& phase_name,
 								nullary_func_t on_completion_func,
-								nullary_func_t on_failure_func = no_op
+								nullary_func_t on_failure_func = no_op,
+								 F32 retry_after = 15.0,
+								 S32 max_retries = 2
 		):
-		LLCallAfterInventoryBatchMgr(dst_cat_id, phase_name, on_completion_func, on_failure_func)
+		LLCallAfterInventoryBatchMgr(dst_cat_id, phase_name, on_completion_func, on_failure_func, retry_after, max_retries)
 	{
 		addItems(src_items);
 	}
@@ -443,8 +418,8 @@ class LLCallAfterInventoryLinkMgr: public LLCallAfterInventoryBatchMgr
 							item->getName(),
 							item->LLInventoryItem::getDescription(),
 							LLAssetType::AT_LINK,
-							make_inventory_func_callback(
-								boost::bind(&LLCallAfterInventoryBatchMgr::onOp,this,item->getUUID(),_1)));
+							new LLBoostFuncInventoryCallback(
+								boost::bind(&LLCallAfterInventoryBatchMgr::onOp,this,item->getUUID(),_1,LLTimer())));
 	}
 };
 
diff --git a/indra/newview/llviewerinventory.h b/indra/newview/llviewerinventory.h
old mode 100644
new mode 100755
index 7822ef4da65..e2793ba105d
--- a/indra/newview/llviewerinventory.h
+++ b/indra/newview/llviewerinventory.h
@@ -297,6 +297,27 @@ class AddFavoriteLandmarkCallback : public LLInventoryCallback
 	LLUUID mTargetLandmarkId;
 };
 
+// Shim between inventory callback and boost function/callable
+typedef boost::function<void(const LLUUID&)> inventory_func_type;
+
+class LLBoostFuncInventoryCallback: public LLInventoryCallback
+{
+public:
+
+	LLBoostFuncInventoryCallback(const inventory_func_type& func):
+		mFunc(func)
+	{
+	}
+
+	void fire(const LLUUID& item_id)
+	{
+		mFunc(item_id);
+	}
+
+private:
+	inventory_func_type mFunc;
+};
+
 // misc functions
 //void inventory_reliable_callback(void**, S32 status);
 
-- 
GitLab


From d1981c11a43c514ee455ba41c600c50aa603fbd3 Mon Sep 17 00:00:00 2001
From: Logan Dethrow <log@lindenlab.com>
Date: Fri, 7 Dec 2012 15:47:52 -0500
Subject: [PATCH 194/436] Deleting test_llcorehttp_peer.py because it has been
 corrupted by changes to test_llsdmessage_peer.py, which it was copied from.
 The file will be recreated using an unchanged file.

---
 .../llcorehttp/tests/test_llcorehttp_peer.py  | 200 ------------------
 1 file changed, 200 deletions(-)
 delete mode 100644 indra/llcorehttp/tests/test_llcorehttp_peer.py

diff --git a/indra/llcorehttp/tests/test_llcorehttp_peer.py b/indra/llcorehttp/tests/test_llcorehttp_peer.py
deleted file mode 100644
index 3257f6924d2..00000000000
--- a/indra/llcorehttp/tests/test_llcorehttp_peer.py
+++ /dev/null
@@ -1,200 +0,0 @@
-#!/usr/bin/env python
-"""\
-@file   test_llsdmessage_peer.py
-@author Nat Goodspeed
-@date   2008-10-09
-@brief  This script asynchronously runs the executable (with args) specified on
-        the command line, returning its result code. While that executable is
-        running, we provide dummy local services for use by C++ tests.
-
-$LicenseInfo:firstyear=2008&license=viewerlgpl$
-Second Life Viewer Source Code
-Copyright (C) 2012, Linden Research, Inc.
-
-This library is free software; you can redistribute it and/or
-modify it under the terms of the GNU Lesser General Public
-License as published by the Free Software Foundation;
-version 2.1 of the License only.
-
-This library is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-Lesser General Public License for more details.
-
-You should have received a copy of the GNU Lesser General Public
-License along with this library; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-
-Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
-$/LicenseInfo$
-"""
-
-import os
-import sys
-import time
-import select
-import getopt
-from threading import Thread
-from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler
-from SocketServer import ThreadingMixIn
-
-mydir = os.path.dirname(__file__)       # expected to be .../indra/llcorehttp/tests/
-sys.path.insert(0, os.path.join(mydir, os.pardir, os.pardir, "lib", "python"))
-from indra.util.fastest_elementtree import parse as xml_parse
-from indra.base import llsd
-from testrunner import freeport, run, debug, VERBOSE
-import time
-
-_storage=None
-
-class TestHTTPRequestHandler(BaseHTTPRequestHandler):
-    """This subclass of BaseHTTPRequestHandler is to receive and echo
-    LLSD-flavored messages sent by the C++ LLHTTPClient.
-    """
-    def read(self):
-        # The following logic is adapted from the library module
-        # SimpleXMLRPCServer.py.
-        # Get arguments by reading body of request.
-        # We read this in chunks to avoid straining
-        # socket.read(); around the 10 or 15Mb mark, some platforms
-        # begin to have problems (bug #792570).
-        try:
-            size_remaining = int(self.headers["content-length"])
-        except (KeyError, ValueError):
-            return ""
-        max_chunk_size = 10*1024*1024
-        L = []
-        while size_remaining:
-            chunk_size = min(size_remaining, max_chunk_size)
-            chunk = self.rfile.read(chunk_size)
-            L.append(chunk)
-            size_remaining -= len(chunk)
-        return ''.join(L)
-        # end of swiped read() logic
-
-    def read_xml(self):
-        # This approach reads the entire POST data into memory first
-        return llsd.parse(self.read())
-##         # This approach attempts to stream in the LLSD XML from self.rfile,
-##         # assuming that the underlying XML parser reads its input file
-##         # incrementally. Unfortunately I haven't been able to make it work.
-##         tree = xml_parse(self.rfile)
-##         debug("Finished raw parse")
-##         debug("parsed XML tree %s", tree)
-##         debug("parsed root node %s", tree.getroot())
-##         debug("root node tag %s", tree.getroot().tag)
-##         return llsd.to_python(tree.getroot())
-
-    def do_HEAD(self):
-        self.do_GET(withdata=False)
-
-    def do_GET(self, withdata=True):
-        # Of course, don't attempt to read data.
-        self.answer(dict(reply="success", status=200,
-                         reason="Your GET operation worked"))
-
-    def do_POST(self):
-        # Read the provided POST data.
-        # self.answer(self.read())
-        self.answer(dict(reply="success", status=200,
-                         reason=self.read()))
-
-    def do_PUT(self):
-        # Read the provided PUT data.
-        # self.answer(self.read())
-        self.answer(dict(reply="success", status=200,
-                         reason=self.read()))
-
-    def answer(self, data, withdata=True):
-        global _storage
-        debug("%s.answer(%s): self.path = %r", self.__class__.__name__, data, self.path)
-        if "/sleep/" in self.path:
-            time.sleep(30)
-
-            if "/reflect/" in self.path:
-                self.reflect_headers()
-            self.send_header("X-LL-Special", "Mememememe");
-            status = data.get("status", 500)
-            # self.responses maps an int status to a (short, long) pair of
-            # strings. We want the longer string. That's why we pass a string
-            # pair to get(): the [1] will select the second string, whether it
-            # came from self.responses or from our default pair.
-            reason = data.get("reason",
-                               self.responses.get(status,
-                                                  ("fail requested",
-                                                   "Your request specified failure status %s "
-                                                   "without providing a reason" % status))[1])
-            debug("fail requested: %s: %r", status, reason)
-            self.send_error(status, reason)
-            if "/reflect/" in self.path:
-                self.reflect_headers()
-                pass
-            elif "test/timeout" in self.path:
-                time.sleep(5.0)
-                return
-            elif "test/storage" in self.path:
-                if "GET" == self.command:
-                    data = _storage
-                else:
-                    _storage = data
-                    data = "ok"
-            else:
-                data = data.copy()          # we're going to modify
-                # Ensure there's a "reply" key in data, even if there wasn't before
-                data["reply"] = data.get("reply", llsd.LLSD("success"))
-            response = llsd.format_xml(data)
-            debug("success: %s", response)
-            self.send_response(200)
-            self.send_header("Content-type", "application/llsd+xml")
-            self.send_header("Content-Length", str(len(response)))
-            self.end_headers()
-
-    def reflect_headers(self):
-        for name in self.headers.keys():
-            # print "Header:  %s: %s" % (name, self.headers[name])
-            self.send_header("X-Reflect-" + name, self.headers[name])
-
-    if not VERBOSE:
-        # When VERBOSE is set, skip both these overrides because they exist to
-        # suppress output.
-
-        def log_request(self, code, size=None):
-            # For present purposes, we don't want the request splattered onto
-            # stderr, as it would upset devs watching the test run
-            pass
-
-        def log_error(self, format, *args):
-            # Suppress error output as well
-            pass
-
-class Server(ThreadingMixIn, HTTPServer):
-    # This pernicious flag is on by default in HTTPServer. But proper
-    # operation of freeport() absolutely depends on it being off.
-    allow_reuse_address = False
-
-if __name__ == "__main__":
-    do_valgrind = False
-    path_search = False
-    options, args = getopt.getopt(sys.argv[1:], "V", ["valgrind"])
-    for option, value in options:
-        if option == "-V" or option == "--valgrind":
-            do_valgrind = True
-
-    # Instantiate a Server(TestHTTPRequestHandler) on the first free port
-    # in the specified port range. Doing this inline is better than in a
-    # daemon thread: if it blows up here, we'll get a traceback. If it blew up
-    # in some other thread, the traceback would get eaten and we'd run the
-    # subject test program anyway.
-    httpd, port = freeport(xrange(8000, 8020),
-                           lambda port: Server(('127.0.0.1', port), TestHTTPRequestHandler))
-
-    # Pass the selected port number to the subject test program via the
-    # environment. We don't want to impose requirements on the test program's
-    # command-line parsing -- and anyway, for C++ integration tests, that's
-    # performed in TUT code rather than our own.
-    os.environ["LL_TEST_PORT"] = str(port)
-    debug("$LL_TEST_PORT = %s", port)
-    if do_valgrind:
-        args = ["valgrind", "--log-file=./valgrind.log"] + args
-        path_search = True
-    sys.exit(run(server=Thread(name="httpd", target=httpd.serve_forever), use_path=path_search, *args))
-- 
GitLab


From cd65c2fcb84644ab63c7b45c10d154baf8bc5b9a Mon Sep 17 00:00:00 2001
From: Logan Dethrow <log@lindenlab.com>
Date: Fri, 7 Dec 2012 16:56:10 -0500
Subject: [PATCH 195/436] Restored test_llcorehttp_peer.py, hopefully breaking
 the 'hg copy' link that was causing changesets intended for its copy parent
 to be applied to the child file.

---
 .../llcorehttp/tests/test_llcorehttp_peer.py  | 190 ++++++++++++++++++
 1 file changed, 190 insertions(+)
 create mode 100644 indra/llcorehttp/tests/test_llcorehttp_peer.py

diff --git a/indra/llcorehttp/tests/test_llcorehttp_peer.py b/indra/llcorehttp/tests/test_llcorehttp_peer.py
new file mode 100644
index 00000000000..75a3c39ef2f
--- /dev/null
+++ b/indra/llcorehttp/tests/test_llcorehttp_peer.py
@@ -0,0 +1,190 @@
+#!/usr/bin/env python
+"""\
+@file   test_llsdmessage_peer.py
+@author Nat Goodspeed
+@date   2008-10-09
+@brief  This script asynchronously runs the executable (with args) specified on
+        the command line, returning its result code. While that executable is
+        running, we provide dummy local services for use by C++ tests.
+
+$LicenseInfo:firstyear=2008&license=viewerlgpl$
+Second Life Viewer Source Code
+Copyright (C) 2012, Linden Research, Inc.
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation;
+version 2.1 of the License only.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+$/LicenseInfo$
+"""
+
+import os
+import sys
+import time
+import select
+import getopt
+from threading import Thread
+from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler
+from SocketServer import ThreadingMixIn
+
+mydir = os.path.dirname(__file__)       # expected to be .../indra/llcorehttp/tests/
+sys.path.insert(0, os.path.join(mydir, os.pardir, os.pardir, "lib", "python"))
+from indra.util.fastest_elementtree import parse as xml_parse
+from indra.base import llsd
+from testrunner import freeport, run, debug, VERBOSE
+
+class TestHTTPRequestHandler(BaseHTTPRequestHandler):
+    """This subclass of BaseHTTPRequestHandler is to receive and echo
+    LLSD-flavored messages sent by the C++ LLHTTPClient.
+    """
+    def read(self):
+        # The following logic is adapted from the library module
+        # SimpleXMLRPCServer.py.
+        # Get arguments by reading body of request.
+        # We read this in chunks to avoid straining
+        # socket.read(); around the 10 or 15Mb mark, some platforms
+        # begin to have problems (bug #792570).
+        try:
+            size_remaining = int(self.headers["content-length"])
+        except (KeyError, ValueError):
+            return ""
+        max_chunk_size = 10*1024*1024
+        L = []
+        while size_remaining:
+            chunk_size = min(size_remaining, max_chunk_size)
+            chunk = self.rfile.read(chunk_size)
+            L.append(chunk)
+            size_remaining -= len(chunk)
+        return ''.join(L)
+        # end of swiped read() logic
+
+    def read_xml(self):
+        # This approach reads the entire POST data into memory first
+        return llsd.parse(self.read())
+##         # This approach attempts to stream in the LLSD XML from self.rfile,
+##         # assuming that the underlying XML parser reads its input file
+##         # incrementally. Unfortunately I haven't been able to make it work.
+##         tree = xml_parse(self.rfile)
+##         debug("Finished raw parse")
+##         debug("parsed XML tree %s", tree)
+##         debug("parsed root node %s", tree.getroot())
+##         debug("root node tag %s", tree.getroot().tag)
+##         return llsd.to_python(tree.getroot())
+
+    def do_HEAD(self):
+        self.do_GET(withdata=False)
+
+    def do_GET(self, withdata=True):
+        # Of course, don't attempt to read data.
+        self.answer(dict(reply="success", status=200,
+                         reason="Your GET operation worked"))
+
+    def do_POST(self):
+        # Read the provided POST data.
+        # self.answer(self.read())
+        self.answer(dict(reply="success", status=200,
+                         reason=self.read()))
+
+    def do_PUT(self):
+        # Read the provided PUT data.
+        # self.answer(self.read())
+        self.answer(dict(reply="success", status=200,
+                         reason=self.read()))
+
+    def answer(self, data, withdata=True):
+        debug("%s.answer(%s): self.path = %r", self.__class__.__name__, data, self.path)
+        if "/sleep/" in self.path:
+            time.sleep(30)
+
+        if "fail" not in self.path:
+            data = data.copy()          # we're going to modify
+            # Ensure there's a "reply" key in data, even if there wasn't before
+            data["reply"] = data.get("reply", llsd.LLSD("success"))
+            response = llsd.format_xml(data)
+            debug("success: %s", response)
+            self.send_response(200)
+            if "/reflect/" in self.path:
+                self.reflect_headers()
+            self.send_header("Content-type", "application/llsd+xml")
+            self.send_header("Content-Length", str(len(response)))
+            self.send_header("X-LL-Special", "Mememememe");
+            self.end_headers()
+            if withdata:
+                self.wfile.write(response)
+        else:                           # fail requested
+            status = data.get("status", 500)
+            # self.responses maps an int status to a (short, long) pair of
+            # strings. We want the longer string. That's why we pass a string
+            # pair to get(): the [1] will select the second string, whether it
+            # came from self.responses or from our default pair.
+            reason = data.get("reason",
+                               self.responses.get(status,
+                                                  ("fail requested",
+                                                   "Your request specified failure status %s "
+                                                   "without providing a reason" % status))[1])
+            debug("fail requested: %s: %r", status, reason)
+            self.send_error(status, reason)
+            if "/reflect/" in self.path:
+                self.reflect_headers()
+            self.end_headers()
+
+    def reflect_headers(self):
+        for name in self.headers.keys():
+            # print "Header:  %s: %s" % (name, self.headers[name])
+            self.send_header("X-Reflect-" + name, self.headers[name])
+
+    if not VERBOSE:
+        # When VERBOSE is set, skip both these overrides because they exist to
+        # suppress output.
+
+        def log_request(self, code, size=None):
+            # For present purposes, we don't want the request splattered onto
+            # stderr, as it would upset devs watching the test run
+            pass
+
+        def log_error(self, format, *args):
+            # Suppress error output as well
+            pass
+
+class Server(ThreadingMixIn, HTTPServer):
+    # This pernicious flag is on by default in HTTPServer. But proper
+    # operation of freeport() absolutely depends on it being off.
+    allow_reuse_address = False
+
+if __name__ == "__main__":
+    do_valgrind = False
+    path_search = False
+    options, args = getopt.getopt(sys.argv[1:], "V", ["valgrind"])
+    for option, value in options:
+        if option == "-V" or option == "--valgrind":
+            do_valgrind = True
+
+    # Instantiate a Server(TestHTTPRequestHandler) on the first free port
+    # in the specified port range. Doing this inline is better than in a
+    # daemon thread: if it blows up here, we'll get a traceback. If it blew up
+    # in some other thread, the traceback would get eaten and we'd run the
+    # subject test program anyway.
+    httpd, port = freeport(xrange(8000, 8020),
+                           lambda port: Server(('127.0.0.1', port), TestHTTPRequestHandler))
+
+    # Pass the selected port number to the subject test program via the
+    # environment. We don't want to impose requirements on the test program's
+    # command-line parsing -- and anyway, for C++ integration tests, that's
+    # performed in TUT code rather than our own.
+    os.environ["LL_TEST_PORT"] = str(port)
+    debug("$LL_TEST_PORT = %s", port)
+    if do_valgrind:
+        args = ["valgrind", "--log-file=./valgrind.log"] + args
+        path_search = True
+    sys.exit(run(server=Thread(name="httpd", target=httpd.serve_forever), use_path=path_search, *args))
-- 
GitLab


From 0777f53e2f2d773fa536b3c62e16455ce7bbbcce Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Mon, 10 Dec 2012 14:47:17 -0500
Subject: [PATCH 196/436] SH-3606 WIP - replaced several LLInventoryCallback
 subclasses with boost::func equivalents

---
 indra/newview/llagentwearables.cpp      |  27 +--
 indra/newview/llagentwearablesfetch.cpp |  67 +++---
 indra/newview/llappearancemgr.cpp       | 280 +++++++++++-------------
 indra/newview/llappearancemgr.h         |   3 -
 indra/newview/llfavoritesbar.cpp        |  41 ++--
 indra/newview/llfloatergesture.cpp      |  45 ++--
 indra/newview/llfriendcard.cpp          |   4 +-
 indra/newview/llinventorybridge.cpp     |   2 +-
 indra/newview/lltooldraganddrop.cpp     |   4 +-
 indra/newview/llviewerattachmenu.cpp    |   2 +-
 indra/newview/llviewerinventory.cpp     |  53 +----
 indra/newview/llviewerinventory.h       |  66 ++----
 12 files changed, 234 insertions(+), 360 deletions(-)

diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp
index e2304e6db98..e79fda2459e 100755
--- a/indra/newview/llagentwearables.cpp
+++ b/indra/newview/llagentwearables.cpp
@@ -61,19 +61,16 @@ using namespace LLAvatarAppearanceDefines;
 ///////////////////////////////////////////////////////////////////////////////
 
 // Callback to wear and start editing an item that has just been created.
-class LLWearAndEditCallback : public LLInventoryCallback
+void wear_and_edit_cb(const LLUUID& inv_item)
 {
-	void fire(const LLUUID& inv_item)
-	{
-		if (inv_item.isNull()) return;
-
-		// Request editing the item after it gets worn.
-		gAgentWearables.requestEditingWearable(inv_item);
-
-		// Wear it.
-		LLAppearanceMgr::instance().wearItemOnAvatar(inv_item);
-	}
-};
+	if (inv_item.isNull()) return;
+	
+	// Request editing the item after it gets worn.
+	gAgentWearables.requestEditingWearable(inv_item);
+	
+	// Wear it.
+	LLAppearanceMgr::instance().wearItemOnAvatar(inv_item);
+}
 
 ///////////////////////////////////////////////////////////////////////////////
 
@@ -965,8 +962,8 @@ class OnWearableItemCreatedCB: public LLInventoryCallback
 		llinfos << "All items created" << llendl;
 		LLPointer<LLInventoryCallback> link_waiter = new LLUpdateAppearanceOnDestroy;
 		LLAppearanceMgr::instance().linkAll(LLAppearanceMgr::instance().getCOF(),
-												mItemsToLink,
-												link_waiter);
+											mItemsToLink,
+											link_waiter);
 	}
 	void addPendingWearable(LLViewerWearable *wearable)
 	{
@@ -1789,7 +1786,7 @@ void LLAgentWearables::createWearable(LLWearableType::EType type, bool wear, con
 	LLViewerWearable* wearable = LLWearableList::instance().createNewWearable(type, gAgentAvatarp);
 	LLAssetType::EType asset_type = wearable->getAssetType();
 	LLInventoryType::EType inv_type = LLInventoryType::IT_WEARABLE;
-	LLPointer<LLInventoryCallback> cb = wear ? new LLWearAndEditCallback : NULL;
+	LLPointer<LLInventoryCallback> cb = wear ? new LLBoostFuncInventoryCallback(wear_and_edit_cb) : NULL;
 	LLUUID folder_id;
 
 	if (parent_id.notNull())
diff --git a/indra/newview/llagentwearablesfetch.cpp b/indra/newview/llagentwearablesfetch.cpp
index e2417cdddb3..2d622b380a1 100644
--- a/indra/newview/llagentwearablesfetch.cpp
+++ b/indra/newview/llagentwearablesfetch.cpp
@@ -35,54 +35,45 @@
 #include "llvoavatarself.h"
 
 
-class LLOrderMyOutfitsOnDestroy: public LLInventoryCallback
+void order_my_outfits_cb()
 {
-public:
-	LLOrderMyOutfitsOnDestroy() {};
-
-	virtual ~LLOrderMyOutfitsOnDestroy()
+	if (!LLApp::isRunning())
 	{
-		if (!LLApp::isRunning())
-		{
-			llwarns << "called during shutdown, skipping" << llendl;
-			return;
-		}
+		llwarns << "called during shutdown, skipping" << llendl;
+		return;
+	}
 		
-		const LLUUID& my_outfits_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_MY_OUTFITS);
-		if (my_outfits_id.isNull()) return;
-
-		LLInventoryModel::cat_array_t* cats;
-		LLInventoryModel::item_array_t* items;
-		gInventory.getDirectDescendentsOf(my_outfits_id, cats, items);
-		if (!cats) return;
+	const LLUUID& my_outfits_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_MY_OUTFITS);
+	if (my_outfits_id.isNull()) return;
 
-		//My Outfits should at least contain saved initial outfit and one another outfit
-		if (cats->size() < 2)
-		{
-			llwarning("My Outfits category was not populated properly", 0);
-			return;
-		}
+	LLInventoryModel::cat_array_t* cats;
+	LLInventoryModel::item_array_t* items;
+	gInventory.getDirectDescendentsOf(my_outfits_id, cats, items);
+	if (!cats) return;
 
-		llinfos << "Starting updating My Outfits with wearables ordering information" << llendl;
+	//My Outfits should at least contain saved initial outfit and one another outfit
+	if (cats->size() < 2)
+	{
+		llwarning("My Outfits category was not populated properly", 0);
+		return;
+	}
 
-		for (LLInventoryModel::cat_array_t::iterator outfit_iter = cats->begin();
-			outfit_iter != cats->end(); ++outfit_iter)
-		{
-			const LLUUID& cat_id = (*outfit_iter)->getUUID();
-			if (cat_id.isNull()) continue;
+	llinfos << "Starting updating My Outfits with wearables ordering information" << llendl;
 
-			// saved initial outfit already contains wearables ordering information
-			if (cat_id == LLAppearanceMgr::getInstance()->getBaseOutfitUUID()) continue;
+	for (LLInventoryModel::cat_array_t::iterator outfit_iter = cats->begin();
+		 outfit_iter != cats->end(); ++outfit_iter)
+	{
+		const LLUUID& cat_id = (*outfit_iter)->getUUID();
+		if (cat_id.isNull()) continue;
 
-			LLAppearanceMgr::getInstance()->updateClothingOrderingInfo(cat_id);
-		}
+		// saved initial outfit already contains wearables ordering information
+		if (cat_id == LLAppearanceMgr::getInstance()->getBaseOutfitUUID()) continue;
 
-		llinfos << "Finished updating My Outfits with wearables ordering information" << llendl;
+		LLAppearanceMgr::getInstance()->updateClothingOrderingInfo(cat_id);
 	}
 
-	/* virtual */ void fire(const LLUUID& inv_item) {};
-};
-
+	llinfos << "Finished updating My Outfits with wearables ordering information" << llendl;
+}
 
 LLInitialWearablesFetch::LLInitialWearablesFetch(const LLUUID& cof_id) :
 	LLInventoryFetchDescendentsObserver(cof_id)
@@ -563,7 +554,7 @@ void LLLibraryOutfitsFetch::contentsDone()
 	LLInventoryModel::cat_array_t cat_array;
 	LLInventoryModel::item_array_t wearable_array;
 	
-	LLPointer<LLOrderMyOutfitsOnDestroy> order_myoutfits_on_destroy = new LLOrderMyOutfitsOnDestroy;
+	LLPointer<LLInventoryCallback> order_myoutfits_on_destroy = new LLBoostFuncInventoryCallback(no_op_inventory_func, order_my_outfits_cb);
 
 	for (uuid_vec_t::const_iterator folder_iter = mImportedClothingFolders.begin();
 		 folder_iter != mImportedClothingFolders.end();
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index af276e55c3f..d34d54fb3b8 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -155,8 +155,6 @@ LLUUID findDescendentCategoryIDByName(const LLUUID& parent_id, const std::string
 	}
 }
 
-void no_op() {}
-
 class LLCallAfterInventoryBatchMgr: public LLEventTimer 
 {
 public:
@@ -423,22 +421,6 @@ class LLCallAfterInventoryLinkMgr: public LLCallAfterInventoryBatchMgr
 	}
 };
 
-//Inventory callback updating "dirty" state when destroyed
-class LLUpdateDirtyState: public LLInventoryCallback
-{
-public:
-	LLUpdateDirtyState() {}
-	virtual ~LLUpdateDirtyState()
-	{
-		if (LLAppearanceMgr::instanceExists())
-		{
-			LLAppearanceMgr::getInstance()->updateIsDirty();
-		}
-	}
-	virtual void fire(const LLUUID&) {}
-};
-
-
 LLUpdateAppearanceOnDestroy::LLUpdateAppearanceOnDestroy(bool update_base_outfit_ordering):
 	mFireCount(0),
 	mUpdateBaseOrder(update_base_outfit_ordering)
@@ -777,100 +759,72 @@ bool LLWearableHoldingPattern::pollFetchCompletion()
 	return done;
 }
 
-class RecoveredItemLinkCB: public LLInventoryCallback
+void recovered_item_link_cb(const LLUUID& item_id, LLWearableType::EType type, LLViewerWearable *wearable, LLWearableHoldingPattern* holder)
 {
-public:
-	RecoveredItemLinkCB(LLWearableType::EType type, LLViewerWearable *wearable, LLWearableHoldingPattern* holder):
-		mHolder(holder),
-		mWearable(wearable),
-		mType(type)
+	if (!holder->isMostRecent())
 	{
+		llwarns << "skipping because LLWearableHolding pattern is invalid (superceded by later outfit request)" << llendl;
+		// runway skip here?
 	}
-	void fire(const LLUUID& item_id)
-	{
-		if (!mHolder->isMostRecent())
-		{
-			llwarns << "skipping because LLWearableHolding pattern is invalid (superceded by later outfit request)" << llendl;
-			// runway skip here?
-		}
 
-		llinfos << "Recovered item link for type " << mType << llendl;
-		mHolder->eraseTypeToLink(mType);
-		// Add wearable to FoundData for actual wearing
-		LLViewerInventoryItem *item = gInventory.getItem(item_id);
-		LLViewerInventoryItem *linked_item = item ? item->getLinkedItem() : NULL;
+	llinfos << "Recovered item link for type " << type << llendl;
+	holder->eraseTypeToLink(type);
+	// Add wearable to FoundData for actual wearing
+	LLViewerInventoryItem *item = gInventory.getItem(item_id);
+	LLViewerInventoryItem *linked_item = item ? item->getLinkedItem() : NULL;
 
-		if (linked_item)
-		{
-			gInventory.addChangedMask(LLInventoryObserver::LABEL, linked_item->getUUID());
+	if (linked_item)
+	{
+		gInventory.addChangedMask(LLInventoryObserver::LABEL, linked_item->getUUID());
 			
-			if (item)
-			{
-				LLFoundData found(linked_item->getUUID(),
-								  linked_item->getAssetUUID(),
-								  linked_item->getName(),
-								  linked_item->getType(),
-								  linked_item->isWearableType() ? linked_item->getWearableType() : LLWearableType::WT_INVALID,
-								  true // is replacement
-					);
-				found.mWearable = mWearable;
-				mHolder->getFoundList().push_front(found);
-			}
-			else
-			{
-				llwarns << self_av_string() << "inventory item not found for recovered wearable" << llendl;
-			}
+		if (item)
+		{
+			LLFoundData found(linked_item->getUUID(),
+							  linked_item->getAssetUUID(),
+							  linked_item->getName(),
+							  linked_item->getType(),
+							  linked_item->isWearableType() ? linked_item->getWearableType() : LLWearableType::WT_INVALID,
+							  true // is replacement
+				);
+			found.mWearable = wearable;
+			holder->getFoundList().push_front(found);
 		}
 		else
 		{
-			llwarns << self_av_string() << "inventory link not found for recovered wearable" << llendl;
+			llwarns << self_av_string() << "inventory item not found for recovered wearable" << llendl;
 		}
 	}
-private:
-	LLWearableHoldingPattern* mHolder;
-	LLViewerWearable *mWearable;
-	LLWearableType::EType mType;
-};
+	else
+	{
+		llwarns << self_av_string() << "inventory link not found for recovered wearable" << llendl;
+	}
+}
 
-class RecoveredItemCB: public LLInventoryCallback
+void recovered_item_cb(const LLUUID& item_id, LLWearableType::EType type, LLViewerWearable *wearable, LLWearableHoldingPattern* holder)
 {
-public:
-	RecoveredItemCB(LLWearableType::EType type, LLViewerWearable *wearable, LLWearableHoldingPattern* holder):
-		mHolder(holder),
-		mWearable(wearable),
-		mType(type)
+	if (!holder->isMostRecent())
 	{
+		// runway skip here?
+		llwarns << self_av_string() << "skipping because LLWearableHolding pattern is invalid (superceded by later outfit request)" << llendl;
 	}
-	void fire(const LLUUID& item_id)
-	{
-		if (!mHolder->isMostRecent())
-		{
-			// runway skip here?
-			llwarns << self_av_string() << "skipping because LLWearableHolding pattern is invalid (superceded by later outfit request)" << llendl;
-		}
 
-		LL_DEBUGS("Avatar") << self_av_string() << "Recovered item for type " << mType << LL_ENDL;
-		LLViewerInventoryItem *itemp = gInventory.getItem(item_id);
-		mWearable->setItemID(item_id);
-		LLPointer<LLInventoryCallback> cb = new RecoveredItemLinkCB(mType,mWearable,mHolder);
-		mHolder->eraseTypeToRecover(mType);
-		llassert(itemp);
-		if (itemp)
-		{
-			link_inventory_item( gAgent.getID(),
-					     item_id,
-					     LLAppearanceMgr::instance().getCOF(),
-					     itemp->getName(),
-						 itemp->getDescription(),
-					     LLAssetType::AT_LINK,
-					     cb);
-		}
+	LL_DEBUGS("Avatar") << self_av_string() << "Recovered item for type " << type << LL_ENDL;
+	LLViewerInventoryItem *itemp = gInventory.getItem(item_id);
+	wearable->setItemID(item_id);
+	LLPointer<LLInventoryCallback> cb = new LLBoostFuncInventoryCallback(boost::bind(recovered_item_link_cb,_1,type,wearable,holder));
+	holder->eraseTypeToRecover(type);
+	llassert(itemp);
+	if (itemp)
+	{
+		link_inventory_item( gAgent.getID(),
+							 item_id,
+							 LLAppearanceMgr::instance().getCOF(),
+							 itemp->getName(),
+							 itemp->getDescription(),
+							 LLAssetType::AT_LINK,
+							 cb);
 	}
-private:
-	LLWearableHoldingPattern* mHolder;
-	LLViewerWearable *mWearable;
-	LLWearableType::EType mType;
-};
+}
 
 void LLWearableHoldingPattern::recoverMissingWearable(LLWearableType::EType type)
 {
@@ -888,7 +842,7 @@ void LLWearableHoldingPattern::recoverMissingWearable(LLWearableType::EType type
 
 	// Add a new one in the lost and found folder.
 	const LLUUID lost_and_found_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_LOST_AND_FOUND);
-	LLPointer<LLInventoryCallback> cb = new RecoveredItemCB(type,wearable,this);
+	LLPointer<LLInventoryCallback> cb = new LLBoostFuncInventoryCallback(boost::bind(recovered_item_cb,_1,type,wearable,this));
 
 	create_inventory_item(gAgent.getID(),
 						  gAgent.getSessionID(),
@@ -1225,6 +1179,18 @@ const LLUUID LLAppearanceMgr::getBaseOutfitUUID()
 	return outfit_cat->getUUID();
 }
 
+void wear_on_avatar_cb(const LLUUID& inv_item, bool do_replace = false)
+{
+	if (inv_item.isNull())
+		return;
+	
+	LLViewerInventoryItem *item = gInventory.getItem(inv_item);
+	if (item)
+	{
+		LLAppearanceMgr::instance().wearItemOnAvatar(inv_item, true, do_replace);
+	}
+}
+
 bool LLAppearanceMgr::wearItemOnAvatar(const LLUUID& item_id_to_wear, bool do_update, bool replace, LLPointer<LLInventoryCallback> cb)
 {
 	if (item_id_to_wear.isNull()) return false;
@@ -1244,8 +1210,8 @@ bool LLAppearanceMgr::wearItemOnAvatar(const LLUUID& item_id_to_wear, bool do_up
 
 	if (gInventory.isObjectDescendentOf(item_to_wear->getUUID(), gInventory.getLibraryRootFolderID()))
 	{
-		LLPointer<LLInventoryCallback> cb = new WearOnAvatarCallback(replace);
-		copy_inventory_item(gAgent.getID(), item_to_wear->getPermissions().getOwner(), item_to_wear->getUUID(), LLUUID::null, std::string(),cb);
+		LLPointer<LLInventoryCallback> cb = new LLBoostFuncInventoryCallback(boost::bind(wear_on_avatar_cb,_1,replace));
+		copy_inventory_item(gAgent.getID(), item_to_wear->getPermissions().getOwner(), item_to_wear->getUUID(), LLUUID::null, std::string(), cb);
 		return false;
 	} 
 	else if (!gInventory.isObjectDescendentOf(item_to_wear->getUUID(), gInventory.getRootFolderID()))
@@ -2348,6 +2314,25 @@ void LLAppearanceMgr::addCOFItemLink(const LLUUID &item_id, bool do_update, LLPo
 	}
 }
 
+void modified_cof_cb(const LLUUID& inv_item)
+{
+	LLAppearanceMgr::instance().updateAppearanceFromCOF();
+
+	// Start editing the item if previously requested.
+	gAgentWearables.editWearableIfRequested(inv_item);
+
+	// TODO: camera mode may not be changed if a debug setting is tweaked
+	if( gAgentCamera.cameraCustomizeAvatar() )
+	{
+		// If we're in appearance editing mode, the current tab may need to be refreshed
+		LLSidepanelAppearance *panel = dynamic_cast<LLSidepanelAppearance*>(LLFloaterSidePanelContainer::getPanel("appearance"));
+		if (panel)
+		{
+			panel->showDefaultSubpart();
+		}
+	}
+}
+
 void LLAppearanceMgr::addCOFItemLink(const LLInventoryItem *item, bool do_update, LLPointer<LLInventoryCallback> cb)
 {		
 	const LLViewerInventoryItem *vitem = dynamic_cast<const LLViewerInventoryItem*>(item);
@@ -2411,7 +2396,7 @@ void LLAppearanceMgr::addCOFItemLink(const LLInventoryItem *item, bool do_update
 	{
 		if(do_update && cb.isNull())
 		{
-			cb = new ModifiedCOFCallback;
+			cb = new LLBoostFuncInventoryCallback(modified_cof_cb);
 		}
 		const std::string description = vitem->getIsLinkType() ? vitem->getDescription() : "";
 		link_inventory_item( gAgent.getID(),
@@ -2425,22 +2410,6 @@ void LLAppearanceMgr::addCOFItemLink(const LLInventoryItem *item, bool do_update
 	return;
 }
 
-// BAP remove ensemble code for 2.1?
-void LLAppearanceMgr::addEnsembleLink( LLInventoryCategory* cat, bool do_update )
-{
-#if SUPPORT_ENSEMBLES
-	// BAP add check for already in COF.
-	LLPointer<LLInventoryCallback> cb = do_update ? new ModifiedCOFCallback : 0;
-	link_inventory_item( gAgent.getID(),
-						 cat->getLinkedUUID(),
-						 getCOF(),
-						 cat->getName(),
-						 cat->getDescription(),
-						 LLAssetType::AT_LINK_FOLDER,
-						 cb);
-#endif
-}
-
 void LLAppearanceMgr::removeAllClothesFromAvatar()
 {
 	// Fetch worn clothes (i.e. the ones in COF).
@@ -2668,7 +2637,7 @@ void LLAppearanceMgr::copyLibraryGestures()
 			folder_name == COMMON_GESTURES_FOLDER ||
 			folder_name == OTHER_GESTURES_FOLDER)
 		{
-			cb = new ActivateGestureCallback;
+			cb = new LLBoostFuncInventoryCallback(activate_gesture_cb);
 		}
 
 		LLUUID cat_id = findDescendentCategoryIDByName(lib_gesture_cat_id,folder_name);
@@ -2722,6 +2691,16 @@ void LLAppearanceMgr::onFirstFullyVisible()
 	}
 }
 
+// update "dirty" state - defined outside class to allow for calling
+// after appearance mgr instance has been destroyed.
+void appearance_mgr_update_dirty_state()
+{
+	if (LLAppearanceMgr::instanceExists())
+	{
+		LLAppearanceMgr::getInstance()->updateIsDirty();
+	}
+}
+
 bool LLAppearanceMgr::updateBaseOutfit()
 {
 	if (isOutfitLocked())
@@ -2742,8 +2721,8 @@ bool LLAppearanceMgr::updateBaseOutfit()
 	// in a Base Outfit we do not remove items, only links
 	purgeCategory(base_outfit_id, false);
 
-
-	LLPointer<LLInventoryCallback> dirty_state_updater = new LLUpdateDirtyState();
+	LLPointer<LLInventoryCallback> dirty_state_updater =
+		new LLBoostFuncInventoryCallback(no_op_inventory_func, appearance_mgr_update_dirty_state);
 
 	//COF contains only links so we copy to the Base Outfit only links
 	shallowCopyCategoryContents(getCOF(), base_outfit_id, dirty_state_updater);
@@ -2998,48 +2977,34 @@ void LLAppearanceMgr::requestServerAppearanceUpdate(LLCurl::ResponderPtr respond
 	mLastUpdateRequestCOFVersion = cof_version;
 }
 
-class LLShowCreatedOutfit: public LLInventoryCallback
+void show_created_outfit(LLUUID& folder_id, bool show_panel = true)
 {
-public:
-	LLShowCreatedOutfit(LLUUID& folder_id, bool show_panel = true): mFolderID(folder_id), mShowPanel(show_panel)
-	{}
-
-	virtual ~LLShowCreatedOutfit()
+	if (!LLApp::isRunning())
 	{
-		if (!LLApp::isRunning())
-		{
-			llwarns << "called during shutdown, skipping" << llendl;
-			return;
-		}
-
-		LLSD key;
+		llwarns << "called during shutdown, skipping" << llendl;
+		return;
+	}
+	
+	LLSD key;
+	
+	//EXT-7727. For new accounts inventory callback is created during login process
+	// and may be processed after login process is finished
+	if (show_panel)
+	{
+		LLFloaterSidePanelContainer::showPanel("appearance", "panel_outfits_inventory", key);
 		
-		//EXT-7727. For new accounts LLShowCreatedOutfit is created during login process
-		// add may be processed after login process is finished
-		if (mShowPanel)
-		{
-			LLFloaterSidePanelContainer::showPanel("appearance", "panel_outfits_inventory", key);
-
-		}
-		LLOutfitsList *outfits_list =
-			dynamic_cast<LLOutfitsList*>(LLFloaterSidePanelContainer::getPanel("appearance", "outfitslist_tab"));
-		if (outfits_list)
-		{
-			outfits_list->setSelectedOutfitByUUID(mFolderID);
-		}
-
-		LLAppearanceMgr::getInstance()->updateIsDirty();
-		gAgentWearables.notifyLoadingFinished(); // New outfit is saved.
-		LLAppearanceMgr::getInstance()->updatePanelOutfitName("");
 	}
-
-	virtual void fire(const LLUUID&)
-	{}
-
-private:
-	LLUUID mFolderID;
-	bool mShowPanel;
-};
+	LLOutfitsList *outfits_list =
+		dynamic_cast<LLOutfitsList*>(LLFloaterSidePanelContainer::getPanel("appearance", "outfitslist_tab"));
+	if (outfits_list)
+	{
+		outfits_list->setSelectedOutfitByUUID(folder_id);
+	}
+	
+	LLAppearanceMgr::getInstance()->updateIsDirty();
+	gAgentWearables.notifyLoadingFinished(); // New outfit is saved.
+	LLAppearanceMgr::getInstance()->updatePanelOutfitName("");
+}
 
 LLUUID LLAppearanceMgr::makeNewOutfitLinks(const std::string& new_folder_name, bool show_panel)
 {
@@ -3056,7 +3021,8 @@ LLUUID LLAppearanceMgr::makeNewOutfitLinks(const std::string& new_folder_name, b
 
 	updateClothingOrderingInfo();
 
-	LLPointer<LLInventoryCallback> cb = new LLShowCreatedOutfit(folder_id,show_panel);
+	LLPointer<LLInventoryCallback> cb = new LLBoostFuncInventoryCallback(no_op_inventory_func,
+																		 boost::bind(show_created_outfit,folder_id,show_panel));
 	shallowCopyCategoryContents(getCOF(),folder_id, cb);
 	createBaseOutfitLink(folder_id, cb);
 
diff --git a/indra/newview/llappearancemgr.h b/indra/newview/llappearancemgr.h
index 01ed66711c2..ba5406caa16 100755
--- a/indra/newview/llappearancemgr.h
+++ b/indra/newview/llappearancemgr.h
@@ -137,9 +137,6 @@ class LLAppearanceMgr: public LLSingleton<LLAppearanceMgr>
 	void removeAllClothesFromAvatar();
 	void removeAllAttachmentsFromAvatar();
 
-	// Add COF link to ensemble folder.
-	void addEnsembleLink(LLInventoryCategory* item, bool do_update = true);
-
 	//has the current outfit changed since it was loaded?
 	bool isOutfitDirty() { return mOutfitIsDirty; }
 
diff --git a/indra/newview/llfavoritesbar.cpp b/indra/newview/llfavoritesbar.cpp
index 4cbc9cab4a1..686401c43f9 100644
--- a/indra/newview/llfavoritesbar.cpp
+++ b/indra/newview/llfavoritesbar.cpp
@@ -302,35 +302,26 @@ class LLFavoriteLandmarkToggleableMenu : public LLToggleableMenu
 };
 
 /**
- * This class is needed to update an item being copied to the favorites folder
+ * This callback is needed to update an item being copied to the favorites folder
  * with a sort field value (required to save favorites bar's tabs order).
  * See method handleNewFavoriteDragAndDrop for more details on how this class is used.
  */
-class LLItemCopiedCallback : public LLInventoryCallback
+void item_copied_cb(const LLUUID& inv_item, S32 sort_field)
 {
-public:
-	LLItemCopiedCallback(S32 sortField): mSortField(sortField) {}
-
-	virtual void fire(const LLUUID& inv_item)
+	LLViewerInventoryItem* item = gInventory.getItem(inv_item);
+	
+	if (item)
 	{
-		LLViewerInventoryItem* item = gInventory.getItem(inv_item);
-
-		if (item)
-		{
-			item->setSortField(mSortField);
-			item->setComplete(TRUE);
-			item->updateServer(FALSE);
-
-			gInventory.updateItem(item);
-			gInventory.notifyObservers();
-		}
-
-		LLView::getWindow()->setCursor(UI_CURSOR_ARROW);
+		item->setSortField(sort_field);
+		item->setComplete(TRUE);
+		item->updateServer(FALSE);
+		
+		gInventory.updateItem(item);
+		gInventory.notifyObservers();
 	}
-
-private:
-	S32 mSortField;
-};
+	
+	LLView::getWindow()->setCursor(UI_CURSOR_ARROW);
+}
 
 // updateButtons's helper
 struct LLFavoritesSort
@@ -574,7 +565,7 @@ void LLFavoritesBarCtrl::handleNewFavoriteDragAndDrop(LLInventoryItem *item, con
 	}
 
 	int sortField = 0;
-	LLPointer<LLItemCopiedCallback> cb;
+	LLPointer<LLInventoryCallback> cb;
 
 	// current order is saved by setting incremental values (1, 2, 3, ...) for the sort field
 	for (LLInventoryModel::item_array_t::iterator i = mItems.begin(); i != mItems.end(); ++i)
@@ -583,7 +574,7 @@ void LLFavoritesBarCtrl::handleNewFavoriteDragAndDrop(LLInventoryItem *item, con
 
 		if (currItem->getUUID() == item->getUUID())
 		{
-			cb = new LLItemCopiedCallback(++sortField);
+			cb = new LLBoostFuncInventoryCallback(boost::bind(item_copied_cb, _1, ++sortField));
 		}
 		else
 		{
diff --git a/indra/newview/llfloatergesture.cpp b/indra/newview/llfloatergesture.cpp
index 56051ff6845..4054eba1aa6 100644
--- a/indra/newview/llfloatergesture.cpp
+++ b/indra/newview/llfloatergesture.cpp
@@ -65,40 +65,27 @@ class LLFloaterGestureObserver : public LLGestureManagerObserver
 	LLFloaterGesture* mFloater;
 };
 //-----------------------------
-// GestureCallback
+// gesture callback funcs
 //-----------------------------
 
-class GestureShowCallback : public LLInventoryCallback
+void gesture_show_cb(const LLUUID &inv_item)
 {
-public:
-	void fire(const LLUUID &inv_item)
-	{
-		LLPreviewGesture::show(inv_item, LLUUID::null);
-	}
-};
+	LLPreviewGesture::show(inv_item, LLUUID::null);
+}
 
-class GestureCopiedCallback : public LLInventoryCallback
+void gesture_copied_cb(const LLUUID &inv_item, LLFloaterGesture* floater)
 {
-private:
-	LLFloaterGesture* mFloater;
-	
-public:
-	GestureCopiedCallback(LLFloaterGesture* floater): mFloater(floater)
-	{}
-	void fire(const LLUUID &inv_item)
+	if(floater)
 	{
-		if(mFloater)
-		{
-			mFloater->addGesture(inv_item,NULL,mFloater->getChild<LLScrollListCtrl>("gesture_list"));
-
-			// EXP-1909 (Pasted gesture displayed twice)
-			// The problem is that addGesture is called here for the second time for the same item (which is copied)
-			// First time addGesture is called from LLFloaterGestureObserver::changed(), which is a callback for inventory
-			// change. So we need to refresh the gesture list to avoid duplicates.
-			mFloater->refreshAll();
-		}
+		floater->addGesture(inv_item,NULL,floater->getChild<LLScrollListCtrl>("gesture_list"));
+		
+		// EXP-1909 (Pasted gesture displayed twice)
+		// The problem is that addGesture is called here for the second time for the same item (which is copied)
+		// First time addGesture is called from LLFloaterGestureObserver::changed(), which is a callback for inventory
+		// change. So we need to refresh the gesture list to avoid duplicates.
+		floater->refreshAll();
 	}
-};
+}
 
 //---------------------------------------------------------------------------
 // LLFloaterGesture
@@ -448,7 +435,7 @@ void LLFloaterGesture::onClickPlay()
 
 void LLFloaterGesture::onClickNew()
 {
-	LLPointer<LLInventoryCallback> cb = new GestureShowCallback();
+	LLPointer<LLInventoryCallback> cb = new LLBoostFuncInventoryCallback(gesture_show_cb);
 	create_inventory_item(gAgent.getID(), gAgent.getSessionID(),
 		LLUUID::null, LLTransactionID::tnull, "New Gesture", "", LLAssetType::AT_GESTURE,
 		LLInventoryType::IT_GESTURE, NOT_WEARABLE, PERM_MOVE | PERM_TRANSFER, cb);
@@ -520,7 +507,7 @@ void LLFloaterGesture::onCopyPasteAction(const LLSD& command)
 			return;
 		LLInventoryCategory* gesture_dir = gInventory.getCategory(mGestureFolderID);
 		llassert(gesture_dir);
-		LLPointer<GestureCopiedCallback> cb = new GestureCopiedCallback(this);
+		LLPointer<LLInventoryCallback> cb = new LLBoostFuncInventoryCallback(boost::bind(gesture_copied_cb, _1, this));
 
 		for(LLDynamicArray<LLUUID>::iterator it = ids.begin(); it != ids.end(); it++)
 		{
diff --git a/indra/newview/llfriendcard.cpp b/indra/newview/llfriendcard.cpp
index 11401d6c68b..609a16fde00 100644
--- a/indra/newview/llfriendcard.cpp
+++ b/indra/newview/llfriendcard.cpp
@@ -521,7 +521,7 @@ class CreateFriendCardCallback : public LLInventoryCallback
 	void fire(const LLUUID& inv_item_id)
 	{
 		LLViewerInventoryItem* item = gInventory.getItem(inv_item_id);
-
+		
 		if (item)
 			LLFriendCardsManager::instance().extractAvatarID(item->getCreatorUUID());
 	}
@@ -557,7 +557,7 @@ void LLFriendCardsManager::addFriendCardToInventory(const LLUUID& avatarID)
 		lldebugs << "Sent create_inventory_item for " << avatarID << ", " << name << llendl;
 
 		// TODO: mantipov: Is CreateFriendCardCallback really needed? Probably not
-		LLPointer<LLInventoryCallback> cb = new CreateFriendCardCallback();
+		LLPointer<LLInventoryCallback> cb = new CreateFriendCardCallback;
 
 		create_inventory_callingcard(avatarID, findFriendAllSubfolderUUIDImpl(), cb);
 	}
diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp
index 1e9e3703958..c9a86fa084b 100755
--- a/indra/newview/llinventorybridge.cpp
+++ b/indra/newview/llinventorybridge.cpp
@@ -5091,7 +5091,7 @@ void LLObjectBridge::performAction(LLInventoryModel* model, std::string action)
 		else if(item && item->isFinished())
 		{
 			// must be in library. copy it to our inventory and put it on.
-			LLPointer<LLInventoryCallback> cb = new RezAttachmentCallback(0);
+			LLPointer<LLInventoryCallback> cb = new LLBoostFuncInventoryCallback(boost::bind(rez_attachment_cb, _1, (LLViewerJointAttachment*)0));
 			copy_inventory_item(
 				gAgent.getID(),
 				item->getPermissions().getOwner(),
diff --git a/indra/newview/lltooldraganddrop.cpp b/indra/newview/lltooldraganddrop.cpp
index 3181e19cae6..3d5ea4c2fed 100644
--- a/indra/newview/lltooldraganddrop.cpp
+++ b/indra/newview/lltooldraganddrop.cpp
@@ -1709,7 +1709,7 @@ EAcceptance LLToolDragAndDrop::dad3dRezAttachmentFromInv(
 	{
 		if(mSource == SOURCE_LIBRARY)
 		{
-			LLPointer<LLInventoryCallback> cb = new RezAttachmentCallback(0);
+			LLPointer<LLInventoryCallback> cb = new LLBoostFuncInventoryCallback(boost::bind(rez_attachment_cb, _1, (LLViewerJointAttachment*)0));
 			copy_inventory_item(
 				gAgent.getID(),
 				item->getPermissions().getOwner(),
@@ -2062,7 +2062,7 @@ EAcceptance LLToolDragAndDrop::dad3dActivateGesture(
 			{
 				// create item based on that one, and put it on if that
 				// was a success.
-				LLPointer<LLInventoryCallback> cb = new ActivateGestureCallback();
+				LLPointer<LLInventoryCallback> cb = new LLBoostFuncInventoryCallback(activate_gesture_cb);
 				copy_inventory_item(
 					gAgent.getID(),
 					item->getPermissions().getOwner(),
diff --git a/indra/newview/llviewerattachmenu.cpp b/indra/newview/llviewerattachmenu.cpp
index db7dc3fea61..3975292ed3a 100644
--- a/indra/newview/llviewerattachmenu.cpp
+++ b/indra/newview/llviewerattachmenu.cpp
@@ -121,7 +121,7 @@ void LLViewerAttachMenu::attachObjects(const uuid_vec_t& items, const std::strin
 		else if(item && item->isFinished())
 		{
 			// must be in library. copy it to our inventory and put it on.
-			LLPointer<LLInventoryCallback> cb = new RezAttachmentCallback(attachmentp);
+			LLPointer<LLInventoryCallback> cb = new LLBoostFuncInventoryCallback(boost::bind(rez_attachment_cb, _1, attachmentp));
 			copy_inventory_item(gAgent.getID(),
 								item->getPermissions().getOwner(),
 								item->getUUID(),
diff --git a/indra/newview/llviewerinventory.cpp b/indra/newview/llviewerinventory.cpp
index b47a41c44c9..d6f0874a58a 100755
--- a/indra/newview/llviewerinventory.cpp
+++ b/indra/newview/llviewerinventory.cpp
@@ -65,6 +65,10 @@
 #include "llavataractions.h"
 #include "lllogininstance.h"
 
+// Two do-nothing ops for use in callbacks.
+void no_op_inventory_func(const LLUUID&) {} 
+void no_op() {}
+
 ///----------------------------------------------------------------------------
 /// Helper class to store special inventory item names and their localized values.
 ///----------------------------------------------------------------------------
@@ -949,46 +953,7 @@ void LLInventoryCallbackManager::fire(U32 callback_id, const LLUUID& item_id)
 	}
 }
 
-void WearOnAvatarCallback::fire(const LLUUID& inv_item)
-{
-	if (inv_item.isNull())
-		return;
-
-	LLViewerInventoryItem *item = gInventory.getItem(inv_item);
-	if (item)
-	{
-		LLAppearanceMgr::instance().wearItemOnAvatar(inv_item, true, mReplace);
-	}
-}
-
-void ModifiedCOFCallback::fire(const LLUUID& inv_item)
-{
-	LLAppearanceMgr::instance().updateAppearanceFromCOF();
-
-	// Start editing the item if previously requested.
-	gAgentWearables.editWearableIfRequested(inv_item);
-
-	// TODO: camera mode may not be changed if a debug setting is tweaked
-	if( gAgentCamera.cameraCustomizeAvatar() )
-	{
-		// If we're in appearance editing mode, the current tab may need to be refreshed
-		LLSidepanelAppearance *panel = dynamic_cast<LLSidepanelAppearance*>(LLFloaterSidePanelContainer::getPanel("appearance"));
-		if (panel)
-		{
-			panel->showDefaultSubpart();
-		}
-	}
-}
-
-RezAttachmentCallback::RezAttachmentCallback(LLViewerJointAttachment *attachmentp)
-{
-	mAttach = attachmentp;
-}
-RezAttachmentCallback::~RezAttachmentCallback()
-{
-}
-
-void RezAttachmentCallback::fire(const LLUUID& inv_item)
+void rez_attachment_cb(const LLUUID& inv_item, LLViewerJointAttachment *attachmentp)
 {
 	if (inv_item.isNull())
 		return;
@@ -996,11 +961,11 @@ void RezAttachmentCallback::fire(const LLUUID& inv_item)
 	LLViewerInventoryItem *item = gInventory.getItem(inv_item);
 	if (item)
 	{
-		rez_attachment(item, mAttach);
+		rez_attachment(item, attachmentp);
 	}
 }
 
-void ActivateGestureCallback::fire(const LLUUID& inv_item)
+void activate_gesture_cb(const LLUUID& inv_item)
 {
 	if (inv_item.isNull())
 		return;
@@ -1013,7 +978,7 @@ void ActivateGestureCallback::fire(const LLUUID& inv_item)
 	LLGestureMgr::instance().activateGesture(inv_item);
 }
 
-void CreateGestureCallback::fire(const LLUUID& inv_item)
+void create_gesture_cb(const LLUUID& inv_item)
 {
 	if (inv_item.isNull())
 		return;
@@ -1288,7 +1253,7 @@ void create_new_item(const std::string& name,
 	
 	if (inv_type == LLInventoryType::IT_GESTURE)
 	{
-		LLPointer<LLInventoryCallback> cb = new CreateGestureCallback();
+		LLPointer<LLInventoryCallback> cb = new LLBoostFuncInventoryCallback(create_gesture_cb);
 		create_inventory_item(gAgent.getID(), gAgent.getSessionID(),
 							  parent_id, LLTransactionID::tnull, name, desc, asset_type, inv_type,
 							  NOT_WEARABLE, next_owner_perm, cb);
diff --git a/indra/newview/llviewerinventory.h b/indra/newview/llviewerinventory.h
index e2793ba105d..1a427605b64 100755
--- a/indra/newview/llviewerinventory.h
+++ b/indra/newview/llviewerinventory.h
@@ -242,48 +242,13 @@ class LLInventoryCallback : public LLRefCount
 	virtual void fire(const LLUUID& inv_item) = 0;
 };
 
-class WearOnAvatarCallback : public LLInventoryCallback
-{
-public:
-	WearOnAvatarCallback(bool do_replace = false) : mReplace(do_replace) {}
-	
-	void fire(const LLUUID& inv_item);
-
-protected:
-	bool mReplace;
-};
-
-class ModifiedCOFCallback : public LLInventoryCallback
-{
-	void fire(const LLUUID& inv_item);
-};
-
 class LLViewerJointAttachment;
 
-class RezAttachmentCallback : public LLInventoryCallback
-{
-public:
-	RezAttachmentCallback(LLViewerJointAttachment *attachmentp);
-	void fire(const LLUUID& inv_item);
+void rez_attachment_cb(const LLUUID& inv_item, LLViewerJointAttachment *attachmentp);
 
-protected:
-	~RezAttachmentCallback();
+void activate_gesture_cb(const LLUUID& inv_item);
 
-private:
-	LLViewerJointAttachment* mAttach;
-};
-
-class ActivateGestureCallback : public LLInventoryCallback
-{
-public:
-	void fire(const LLUUID& inv_item);
-};
-
-class CreateGestureCallback : public LLInventoryCallback
-{
-public:
-	void fire(const LLUUID& inv_item);
-};
+void create_gesture_cb(const LLUUID& inv_item);
 
 class AddFavoriteLandmarkCallback : public LLInventoryCallback
 {
@@ -297,25 +262,40 @@ class AddFavoriteLandmarkCallback : public LLInventoryCallback
 	LLUUID mTargetLandmarkId;
 };
 
-// Shim between inventory callback and boost function/callable
 typedef boost::function<void(const LLUUID&)> inventory_func_type;
+void no_op_inventory_func(const LLUUID&); // A do-nothing inventory_func
 
+typedef boost::function<void()> nullary_func_type;
+void no_op(); // A do-nothing nullary func.
+
+// Shim between inventory callback and boost function/callable
 class LLBoostFuncInventoryCallback: public LLInventoryCallback
 {
 public:
 
-	LLBoostFuncInventoryCallback(const inventory_func_type& func):
-		mFunc(func)
+	LLBoostFuncInventoryCallback(inventory_func_type fire_func,
+								 nullary_func_type destroy_func = no_op):
+		mFireFunc(fire_func),
+		mDestroyFunc(destroy_func)
 	{
 	}
 
+	// virtual
 	void fire(const LLUUID& item_id)
 	{
-		mFunc(item_id);
+		mFireFunc(item_id);
 	}
 
+	// virtual
+	~LLBoostFuncInventoryCallback()
+	{
+		mDestroyFunc;
+	}
+	
+
 private:
-	inventory_func_type mFunc;
+	inventory_func_type mFireFunc;
+	nullary_func_type mDestroyFunc;
 };
 
 // misc functions
-- 
GitLab


From 6a5e227dc11f19dd7901226a454cebcd16ca7f2d Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Mon, 10 Dec 2012 14:55:09 -0500
Subject: [PATCH 197/436] removed inadvertent commit of logcontrol.xml

---
 indra/newview/app_settings/logcontrol.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/newview/app_settings/logcontrol.xml b/indra/newview/app_settings/logcontrol.xml
index 12590390107..64122bbb6ce 100755
--- a/indra/newview/app_settings/logcontrol.xml
+++ b/indra/newview/app_settings/logcontrol.xml
@@ -42,8 +42,8 @@
 						</array>
 					<key>tags</key>
 						<array>
-						     <string>Avatar</string>
 						<!-- sample entry for debugging specific items	
+						     <string>Avatar</string>
 						     <string>Voice</string>		
 						-->
 						</array>
-- 
GitLab


From 798377b076fbce895ba2075417107de0da10b9ca Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Mon, 10 Dec 2012 15:32:42 -0500
Subject: [PATCH 198/436] SH-3606 WIP - fixed bug found by persnickety compiler

---
 indra/newview/app_settings/logcontrol.xml | 2 +-
 indra/newview/llviewerinventory.h         | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/indra/newview/app_settings/logcontrol.xml b/indra/newview/app_settings/logcontrol.xml
index 64122bbb6ce..12590390107 100755
--- a/indra/newview/app_settings/logcontrol.xml
+++ b/indra/newview/app_settings/logcontrol.xml
@@ -42,8 +42,8 @@
 						</array>
 					<key>tags</key>
 						<array>
-						<!-- sample entry for debugging specific items	
 						     <string>Avatar</string>
+						<!-- sample entry for debugging specific items	
 						     <string>Voice</string>		
 						-->
 						</array>
diff --git a/indra/newview/llviewerinventory.h b/indra/newview/llviewerinventory.h
index 1a427605b64..13e95c57cbf 100755
--- a/indra/newview/llviewerinventory.h
+++ b/indra/newview/llviewerinventory.h
@@ -289,7 +289,7 @@ class LLBoostFuncInventoryCallback: public LLInventoryCallback
 	// virtual
 	~LLBoostFuncInventoryCallback()
 	{
-		mDestroyFunc;
+		mDestroyFunc();
 	}
 	
 
-- 
GitLab


From 5798dd54ccbf2728725eae397a235c89d111cf93 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Tue, 11 Dec 2012 13:56:50 -0800
Subject: [PATCH 199/436] Fix for building on case-sensitive mac filesystems. 
 Fix to remove unwind spam warnings while linking on xcode 4.5.2 builds

---
 autobuild.xml               | 4 ++--
 indra/cmake/00-Common.cmake | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index 9d5a29a5883..7fd8826c18b 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -18,9 +18,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>b2fe1c860613a68e74d4384be418ffee</string>
+              <string>e6071abd822c0688390382a26f8a782c</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-glod/rev/232684/arch/Darwin/installer/glod-1.0pre4-darwin-20110610.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-glod/rev/267984/arch/Darwin/installer/glod-1.0pre4-darwin-20121211.tar.bz2</string>
             </map>
             <key>name</key>
             <string>darwin</string>
diff --git a/indra/cmake/00-Common.cmake b/indra/cmake/00-Common.cmake
index 887f814a479..fb5c7594936 100644
--- a/indra/cmake/00-Common.cmake
+++ b/indra/cmake/00-Common.cmake
@@ -181,7 +181,7 @@ if (DARWIN)
   # ucontext_t struct when _XOPEN_SOURCE is not defined (rdar://problem/5578699 ).
   # As a workaround, define _XOPEN_SOURCE before including ucontext.h.
   add_definitions(-DLL_DARWIN=1 -D_XOPEN_SOURCE)
-  set(CMAKE_CXX_LINK_FLAGS "-Wl,-headerpad_max_install_names,-search_paths_first")
+  set(CMAKE_CXX_LINK_FLAGS "-Wl,-no_compact_unwind -Wl,-headerpad_max_install_names,-search_paths_first")
   set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_CXX_LINK_FLAGS}")
   set(DARWIN_extra_cstar_flags "-mlong-branch -g")
   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${DARWIN_extra_cstar_flags}")
-- 
GitLab


From 8657da24cd206af87cb32d095b347f7aa07596b5 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Tue, 11 Dec 2012 18:21:09 -0500
Subject: [PATCH 200/436] SH-3604 WIP - added base outfit link creation to
 retryable copy/link operations. Resolves race condition with cof version and
 server texture bakes

---
 indra/newview/app_settings/logcontrol.xml |  2 +-
 indra/newview/llappearancemgr.cpp         | 72 ++++++++++++++++-------
 indra/newview/llappearancemgr.h           |  2 +-
 indra/newview/llvoavatar.cpp              |  4 ++
 4 files changed, 56 insertions(+), 24 deletions(-)

diff --git a/indra/newview/app_settings/logcontrol.xml b/indra/newview/app_settings/logcontrol.xml
index 12590390107..64122bbb6ce 100755
--- a/indra/newview/app_settings/logcontrol.xml
+++ b/indra/newview/app_settings/logcontrol.xml
@@ -42,8 +42,8 @@
 						</array>
 					<key>tags</key>
 						<array>
-						     <string>Avatar</string>
 						<!-- sample entry for debugging specific items	
+						     <string>Avatar</string>
 						     <string>Voice</string>		
 						-->
 						</array>
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index d34d54fb3b8..e326ca5e155 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -191,19 +191,13 @@ class LLCallAfterInventoryBatchMgr: public LLEventTimer
 		{
 			LLViewerInventoryItem* item = *it;
 			llassert(item);
-			addItem(item);
+			addItem(item->getUUID());
 		}
 	}
 
 	// Request or re-request operation for specified item.
-	void addItem(LLViewerInventoryItem *item)
+	void addItem(const LLUUID& item_id)
 	{
-		const LLUUID& item_id = item->getUUID();
-		if (!item)
-		{
-			llwarns << "item not found for " << item_id << llendl;
-			return;
-		}
 		mPendingRequests++;
 		// On a re-request, this will reset the timer.
 		mWaitTimes[item_id] = LLTimer();
@@ -222,10 +216,10 @@ class LLCallAfterInventoryBatchMgr: public LLEventTimer
 			return;
 		}
 		
-		requestOperation(item);
+		requestOperation(item_id);
 	}
 
-	virtual void requestOperation(LLViewerInventoryItem *item) = 0;
+	virtual void requestOperation(const LLUUID& item_id) = 0;
 
 	void onOp(const LLUUID& src_id, const LLUUID& dst_id, LLTimer timestamp)
 	{
@@ -314,7 +308,7 @@ class LLCallAfterInventoryBatchMgr: public LLEventTimer
 						LL_DEBUGS("Avatar") << "Waited " << time_waited <<
 							" for " << curr_it->first << ", retrying" << llendl;
 						mRetryCount++;
-						addItem(gInventory.getItem(curr_it->first));
+						addItem(curr_it->first);
 					}
 					else
 					{
@@ -379,8 +373,10 @@ class LLCallAfterInventoryCopyMgr: public LLCallAfterInventoryBatchMgr
 		addItems(src_items);
 	}
 	
-	virtual void requestOperation(LLViewerInventoryItem *item)
+	virtual void requestOperation(const LLUUID& item_id)
 	{
+		LLViewerInventoryItem *item = gInventory.getItem(item_id);
+		llassert(item);
 		copy_inventory_item(
 			gAgent.getID(),
 			item->getPermissions().getOwner(),
@@ -408,16 +404,46 @@ class LLCallAfterInventoryLinkMgr: public LLCallAfterInventoryBatchMgr
 		addItems(src_items);
 	}
 	
-	virtual void requestOperation(LLViewerInventoryItem *item)
+	virtual void requestOperation(const LLUUID& item_id)
 	{
-		link_inventory_item(gAgent.getID(),
-							item->getLinkedUUID(),
-							mDstCatID,
-							item->getName(),
-							item->LLInventoryItem::getDescription(),
-							LLAssetType::AT_LINK,
-							new LLBoostFuncInventoryCallback(
-								boost::bind(&LLCallAfterInventoryBatchMgr::onOp,this,item->getUUID(),_1,LLTimer())));
+		LLViewerInventoryItem *item = gInventory.getItem(item_id);
+		if (item)
+		{
+			// create an inventory item link.
+			link_inventory_item(gAgent.getID(),
+								item->getLinkedUUID(),
+								mDstCatID,
+								item->getName(),
+								item->LLInventoryItem::getDescription(),
+								LLAssetType::AT_LINK,
+								new LLBoostFuncInventoryCallback(
+									boost::bind(&LLCallAfterInventoryBatchMgr::onOp,this,item->getUUID(),_1,LLTimer())));
+		}
+		else
+		{
+			// create a base outfit link if appropriate.
+			LLViewerInventoryCategory *catp = gInventory.getCategory(item_id);
+			if (!catp)
+			{
+				llwarns << "id not found as inventory item or category " << item_id << llendl;
+				return;
+			}
+			const LLUUID cof = LLAppearanceMgr::instance().getCOF();
+			std::string new_outfit_name = "";
+
+			LLAppearanceMgr::instance().purgeBaseOutfitLink(cof);
+
+			if (catp && catp->getPreferredType() == LLFolderType::FT_OUTFIT)
+			{
+				link_inventory_item(gAgent.getID(), item_id, cof, catp->getName(), "",
+									LLAssetType::AT_LINK_FOLDER, 
+									new LLBoostFuncInventoryCallback(
+										boost::bind(&LLCallAfterInventoryBatchMgr::onOp,this,item_id,_1,LLTimer())));
+				new_outfit_name = catp->getName();
+			}
+	
+			LLAppearanceMgr::instance().updatePanelOutfitName(new_outfit_name);
+		}
 	}
 };
 
@@ -1742,7 +1768,7 @@ void LLAppearanceMgr::updateCOF(const LLUUID& category, bool append)
 	// Add link to outfit if category is an outfit. 
 	if (!append)
 	{
-		createBaseOutfitLink(category, NULL);
+		link_waiter->addItem(category);
 	}
 	LL_DEBUGS("Avatar") << self_av_string() << "waiting for LLUpdateAppearanceOnDestroy" << LL_ENDL;
 }
@@ -2967,6 +2993,8 @@ void LLAppearanceMgr::requestServerAppearanceUpdate(LLCurl::ResponderPtr respond
 	LLSD body;
 	S32 cof_version = getCOFVersion();
 	body["cof_version"] = cof_version;
+	LL_DEBUGS("Avatar") << "my_cof_version " << cof_version << llendl;
+	
 	//LLCurl::ResponderPtr responder_ptr;
 	if (!responder_ptr.get())
 	{
diff --git a/indra/newview/llappearancemgr.h b/indra/newview/llappearancemgr.h
index ba5406caa16..cb271cda4df 100755
--- a/indra/newview/llappearancemgr.h
+++ b/indra/newview/llappearancemgr.h
@@ -109,6 +109,7 @@ class LLAppearanceMgr: public LLSingleton<LLAppearanceMgr>
 	// Update the displayed outfit name in UI.
 	void updatePanelOutfitName(const std::string& name);
 
+	void purgeBaseOutfitLink(const LLUUID& category);
 	void createBaseOutfitLink(const LLUUID& category, LLPointer<LLInventoryCallback> link_waiter);
 
 	void updateAgentWearables(LLWearableHoldingPattern* holder, bool append);
@@ -206,7 +207,6 @@ class LLAppearanceMgr: public LLSingleton<LLAppearanceMgr>
 								   bool follow_folder_links);
 
 	void purgeCategory(const LLUUID& category, bool keep_outfit_links);
-	void purgeBaseOutfitLink(const LLUUID& category);
 
 	static void onOutfitRename(const LLSD& notification, const LLSD& response);
 
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 18d3ea7a47a..117f28cc366 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -6462,6 +6462,10 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 	// Only now that we have result of appearance_version can we decide whether to bail out.
 	if( isSelf() )
 	{
+		LL_DEBUGS("Avatar") << "this_update_cof_version " << this_update_cof_version
+				<< " last_update_request_cof_version " << last_update_request_cof_version
+				<<  " my_cof_version " << LLAppearanceMgr::instance().getCOFVersion() << llendl;
+
 		if (getRegion() && (getRegion()->getCentralBakeVersion()==0))
 		{
 			llwarns << avString() << "Received AvatarAppearance message for self in non-server-bake region" << llendl;
-- 
GitLab


From 531394df23d774ad91ea5986ede8d44ccf9234a1 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Wed, 12 Dec 2012 00:34:40 +0000
Subject: [PATCH 201/436] Updating linux libGLOD to match darwin naming

---
 autobuild.xml                      | 6 +++---
 indra/cmake/Copy3rdPartyLibs.cmake | 2 +-
 indra/cmake/GLOD.cmake             | 2 +-
 indra/newview/viewer_manifest.py   | 2 +-
 4 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index 7fd8826c18b..eb2371a642a 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -30,9 +30,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>c0c64dae149d0892343e2ff300fd06b9</string>
+              <string>176736c52b3cde6ca8e7d9e173d91731</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-glod/rev/232684/arch/Linux/installer/glod-1.0pre4-linux-20110611.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-glod/rev/268002/arch/Linux/installer/glod-1.0pre4-linux-20121212.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
@@ -1453,7 +1453,7 @@
           </map>
         </map>
       </map>
-	  <key>mesa</key>
+      <key>mesa</key>
       <map>
         <key>license</key>
         <string>mesa</string>
diff --git a/indra/cmake/Copy3rdPartyLibs.cmake b/indra/cmake/Copy3rdPartyLibs.cmake
index c32e357da3d..338da4743e5 100644
--- a/indra/cmake/Copy3rdPartyLibs.cmake
+++ b/indra/cmake/Copy3rdPartyLibs.cmake
@@ -266,7 +266,7 @@ elseif(LINUX)
         libdb-5.1.so
         libexpat.so
         libexpat.so.1
-        libglod.so
+        libGLOD.so
         libgmock_main.so
         libgmock.so.0
         libgmodule-2.0.so
diff --git a/indra/cmake/GLOD.cmake b/indra/cmake/GLOD.cmake
index 77221d55ede..6bdbaf621ed 100644
--- a/indra/cmake/GLOD.cmake
+++ b/indra/cmake/GLOD.cmake
@@ -6,4 +6,4 @@ if (NOT STANDALONE)
 endif (NOT STANDALONE)
 
 set(GLOD_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/include)
-set(GLOD_LIBRARIES glod)
+set(GLOD_LIBRARIES GLOD)
diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py
index ea75d4f4f6c..7a415204290 100644
--- a/indra/newview/viewer_manifest.py
+++ b/indra/newview/viewer_manifest.py
@@ -1079,7 +1079,7 @@ def construct(self):
             self.path("libcrypto.so.*")
             self.path("libexpat.so.*")
             self.path("libssl.so.1.0.0")
-            self.path("libglod.so")
+            self.path("libGLOD.so")
             self.path("libminizip.so")
             self.path("libuuid.so*")
             self.path("libSDL-1.2.so.*")
-- 
GitLab


From 0b896a4953779c2f27c3418453e1a1a315ec111f Mon Sep 17 00:00:00 2001
From: prep <prep@lindenlab.com>
Date: Wed, 12 Dec 2012 10:32:42 -0500
Subject: [PATCH 202/436] Fixes for SH-3591 & SH-3620

---
 indra/newview/llpaneleditwearable.cpp   | 10 ++++++++--
 indra/newview/llpaneleditwearable.h     |  1 +
 indra/newview/llsidepanelappearance.cpp |  5 +++++
 3 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/indra/newview/llpaneleditwearable.cpp b/indra/newview/llpaneleditwearable.cpp
index 43344fd60e0..87f9e3da59f 100644
--- a/indra/newview/llpaneleditwearable.cpp
+++ b/indra/newview/llpaneleditwearable.cpp
@@ -718,8 +718,8 @@ BOOL LLPanelEditWearable::postBuild()
         mBtnBack = getChild<LLButton>("back_btn");
         mBackBtnLabel = mBtnBack->getLabelUnselected();
         mBtnBack->setLabel(LLStringUtil::null);
-        // handled at appearance panel level?
-        //mBtnBack->setClickedCallback(boost::bind(&LLPanelEditWearable::onBackButtonClicked, this));
+
+        mBtnBack->setClickedCallback(boost::bind(&LLPanelEditWearable::onBackButtonClicked, this));
 
         mNameEditor = getChild<LLLineEditor>("description");
 
@@ -872,6 +872,12 @@ void LLPanelEditWearable::setWearable(LLViewerWearable *wearable, BOOL disable_c
         showWearable(mWearablePtr, TRUE, disable_camera_switch);
 }
 
+//static 
+void LLPanelEditWearable::onBackButtonClicked(void* userdata)
+{
+    LLPanelEditWearable *panel = (LLPanelEditWearable*) userdata;
+	panel->saveChanges(true);
+}
 
 //static 
 void LLPanelEditWearable::onRevertButtonClicked(void* userdata)
diff --git a/indra/newview/llpaneleditwearable.h b/indra/newview/llpaneleditwearable.h
index 309d512e239..515a9913b9d 100644
--- a/indra/newview/llpaneleditwearable.h
+++ b/indra/newview/llpaneleditwearable.h
@@ -70,6 +70,7 @@ class LLPanelEditWearable : public LLPanel
 	void 				updateScrollingPanelList();
 
 	static void			onRevertButtonClicked(void* userdata);
+	static void			onBackButtonClicked(void* userdata); 
 	void				onCommitSexChange();
 	void				onSaveAsButtonClicked();
 	void				saveAsCallback(const LLSD& notification, const LLSD& response);
diff --git a/indra/newview/llsidepanelappearance.cpp b/indra/newview/llsidepanelappearance.cpp
index 8c4a05b1160..1fc10c23261 100644
--- a/indra/newview/llsidepanelappearance.cpp
+++ b/indra/newview/llsidepanelappearance.cpp
@@ -232,6 +232,11 @@ void LLSidepanelAppearance::updateToVisibility(const LLSD &new_visibility)
 			gAgentCamera.changeCameraToDefault();
 			gAgentCamera.resetView();
 		}
+		
+		if ( mEditWearable->getVisible() )
+		{
+			mEditWearable->revertChanges();
+		}
 	}
 }
 
-- 
GitLab


From 46cfca5ed6590435d5f1956376479a8876770376 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Wed, 12 Dec 2012 12:06:24 -0500
Subject: [PATCH 203/436] Fix for problem found with changing to an outfit with
 missing shape

---
 indra/newview/llappearancemgr.cpp | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index e326ca5e155..b0136a570e9 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -191,7 +191,7 @@ class LLCallAfterInventoryBatchMgr: public LLEventTimer
 		{
 			LLViewerInventoryItem* item = *it;
 			llassert(item);
-			addItem(item->getUUID());
+			addItem(item->getLinkedUUID());
 		}
 	}
 
@@ -1732,11 +1732,6 @@ void LLAppearanceMgr::updateCOF(const LLUUID& category, bool append)
 	getDescendentsOfAssetType(category, gest_items, LLAssetType::AT_GESTURE, false);
 	removeDuplicateItems(gest_items);
 	
-	// Remove current COF contents.
-	bool keep_outfit_links = append;
-	purgeCategory(cof, keep_outfit_links);
-	gInventory.notifyObservers();
-
 #ifndef LL_RELEASE_FOR_DOWNLOAD
 	LL_DEBUGS("Avatar") << self_av_string() << "Linking body items" << LL_ENDL;
 #endif
@@ -1770,6 +1765,15 @@ void LLAppearanceMgr::updateCOF(const LLUUID& category, bool append)
 	{
 		link_waiter->addItem(category);
 	}
+
+	// Remove current COF contents.  Have to do this after creating
+	// the link_waiter so links can be followed for any items that get
+	// carried over (e.g. keeping old shape if the new outfit does not
+	// contain one)
+	bool keep_outfit_links = append;
+	purgeCategory(cof, keep_outfit_links);
+	gInventory.notifyObservers();
+
 	LL_DEBUGS("Avatar") << self_av_string() << "waiting for LLUpdateAppearanceOnDestroy" << LL_ENDL;
 }
 
-- 
GitLab


From 507080795f1ee21e7ffc2bee842edc5236f8e38f Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Wed, 12 Dec 2012 15:32:31 -0500
Subject: [PATCH 204/436] SH-3604 WIP - fixed a failure when base outfit link
 did not need to be created

---
 indra/newview/llappearancemgr.cpp | 61 +++++++++++++++++++++++--------
 1 file changed, 45 insertions(+), 16 deletions(-)

diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index b0136a570e9..f957aadec59 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -191,35 +191,56 @@ class LLCallAfterInventoryBatchMgr: public LLEventTimer
 		{
 			LLViewerInventoryItem* item = *it;
 			llassert(item);
-			addItem(item->getLinkedUUID());
+			addItem(item->getUUID());
 		}
 	}
 
 	// Request or re-request operation for specified item.
 	void addItem(const LLUUID& item_id)
 	{
-		mPendingRequests++;
-		// On a re-request, this will reset the timer.
-		mWaitTimes[item_id] = LLTimer();
-		if (mRetryCounts.find(item_id) == mRetryCounts.end())
+		LLUUID linked_id;
+		if (gInventory.getItem(item_id))
+		{
+			linked_id = gInventory.getItem(item_id)->getLinkedUUID();
+		}
+		else if (gInventory.getCategory(item_id))
 		{
-			mRetryCounts[item_id] = 0;
+			linked_id = item_id;
 		}
 		else
 		{
-			mRetryCounts[item_id]++;
+			llwarns << "no referent found for item_id " << item_id << llendl;
+			return;
 		}
-
+		LL_DEBUGS("Avatar") << "item_id " << item_id << " -> linked_id " << linked_id << llendl;
+		
 		if (ll_frand()<gSavedSettings.getF32("InventoryDebugSimulateOpFailureRate"))
 		{
 			// simulate server failure by not sending the request.
 			return;
 		}
 		
-		requestOperation(item_id);
+		if (!requestOperation(linked_id))
+		{
+			LL_DEBUGS("Avatar") << "item_id " << item_id << " linked_id " << linked_id << " not requested" << llendl;
+			return;
+		}
+
+		mPendingRequests++;
+		// On a re-request, this will reset the timer.
+		mWaitTimes[linked_id] = LLTimer();
+		if (mRetryCounts.find(linked_id) == mRetryCounts.end())
+		{
+			mRetryCounts[linked_id] = 0;
+		}
+		else
+		{
+			mRetryCounts[linked_id]++;
+		}
+
 	}
 
-	virtual void requestOperation(const LLUUID& item_id) = 0;
+	virtual bool requestOperation(const LLUUID& item_id) = 0;
 
 	void onOp(const LLUUID& src_id, const LLUUID& dst_id, LLTimer timestamp)
 	{
@@ -373,18 +394,20 @@ class LLCallAfterInventoryCopyMgr: public LLCallAfterInventoryBatchMgr
 		addItems(src_items);
 	}
 	
-	virtual void requestOperation(const LLUUID& item_id)
+	virtual bool requestOperation(const LLUUID& item_id)
 	{
 		LLViewerInventoryItem *item = gInventory.getItem(item_id);
 		llassert(item);
+		LL_DEBUGS("Avatar") << "copying item " << item_id << llendl;
 		copy_inventory_item(
 			gAgent.getID(),
 			item->getPermissions().getOwner(),
 			item->getUUID(),
 			mDstCatID,
 			std::string(),
-			new LLBoostFuncInventoryCallback(boost::bind(&LLCallAfterInventoryBatchMgr::onOp,this,item->getUUID(),_1,LLTimer()))
+			new LLBoostFuncInventoryCallback(boost::bind(&LLCallAfterInventoryBatchMgr::onOp,this,item_id,_1,LLTimer()))
 			);
+		return true;
 	}
 };
 
@@ -404,20 +427,23 @@ class LLCallAfterInventoryLinkMgr: public LLCallAfterInventoryBatchMgr
 		addItems(src_items);
 	}
 	
-	virtual void requestOperation(const LLUUID& item_id)
+	virtual bool requestOperation(const LLUUID& item_id)
 	{
+		bool request_sent = false;
 		LLViewerInventoryItem *item = gInventory.getItem(item_id);
 		if (item)
 		{
+			LL_DEBUGS("Avatar") << "linking item " << item_id << " name " << item->getName() << " to " << mDstCatID << llendl;
 			// create an inventory item link.
 			link_inventory_item(gAgent.getID(),
-								item->getLinkedUUID(),
+								item_id,
 								mDstCatID,
 								item->getName(),
 								item->LLInventoryItem::getDescription(),
 								LLAssetType::AT_LINK,
 								new LLBoostFuncInventoryCallback(
-									boost::bind(&LLCallAfterInventoryBatchMgr::onOp,this,item->getUUID(),_1,LLTimer())));
+									boost::bind(&LLCallAfterInventoryBatchMgr::onOp,this,item_id,_1,LLTimer())));
+			request_sent = true;
 		}
 		else
 		{
@@ -426,7 +452,7 @@ class LLCallAfterInventoryLinkMgr: public LLCallAfterInventoryBatchMgr
 			if (!catp)
 			{
 				llwarns << "id not found as inventory item or category " << item_id << llendl;
-				return;
+				return false;
 			}
 			const LLUUID cof = LLAppearanceMgr::instance().getCOF();
 			std::string new_outfit_name = "";
@@ -435,15 +461,18 @@ class LLCallAfterInventoryLinkMgr: public LLCallAfterInventoryBatchMgr
 
 			if (catp && catp->getPreferredType() == LLFolderType::FT_OUTFIT)
 			{
+				LL_DEBUGS("Avatar") << "linking folder " << item_id << " name " << catp->getName() << " to cof " << cof << llendl;
 				link_inventory_item(gAgent.getID(), item_id, cof, catp->getName(), "",
 									LLAssetType::AT_LINK_FOLDER, 
 									new LLBoostFuncInventoryCallback(
 										boost::bind(&LLCallAfterInventoryBatchMgr::onOp,this,item_id,_1,LLTimer())));
 				new_outfit_name = catp->getName();
+				request_sent = true;
 			}
 	
 			LLAppearanceMgr::instance().updatePanelOutfitName(new_outfit_name);
 		}
+		return request_sent;
 	}
 };
 
-- 
GitLab


From 8eef31e47a785b32ea0caf434c5c7fa6a251beee Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Wed, 12 Dec 2012 20:58:56 +0000
Subject: [PATCH 205/436] Updating appearance utility to deal with
 IMG_INVISIBLE

---
 autobuild.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index eb2371a642a..098140db857 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -1290,9 +1290,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>84aee73ab14ec7c56e54fa17f44a06f0</string>
+              <string>8180c6f8d96a76c0c4b7746eb9e98964</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/267783/arch/Linux/installer/llappearanceutility_source-0.1-linux-20121206.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/268052/arch/Linux/installer/llappearanceutility_source-0.1-linux-20121212.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
-- 
GitLab


From 18ff702a9965ba8b9a17326b391f8edab01242f6 Mon Sep 17 00:00:00 2001
From: "prep@lindenlab.com" <prep@lindenlab.com>
Date: Thu, 13 Dec 2012 16:53:38 -0600
Subject: [PATCH 206/436] Fix for SH-3591.

---
 indra/newview/llfloatersidepanelcontainer.cpp |   12 +-
 indra/newview/llpaneleditwearable.cpp         |    8 +
 indra/newview/llpaneleditwearable.h           |    1 +
 indra/newview/llsidepanelappearance.cpp       | 1093 ++++++++---------
 indra/newview/llsidepanelappearance.h         |    3 +-
 5 files changed, 566 insertions(+), 551 deletions(-)

diff --git a/indra/newview/llfloatersidepanelcontainer.cpp b/indra/newview/llfloatersidepanelcontainer.cpp
index 3c966a073fd..02150819a00 100755
--- a/indra/newview/llfloatersidepanelcontainer.cpp
+++ b/indra/newview/llfloatersidepanelcontainer.cpp
@@ -28,6 +28,7 @@
 
 #include "llfloaterreg.h"
 #include "llfloatersidepanelcontainer.h"
+#include "llpaneleditwearable.h"
 
 // newview includes
 #include "llsidetraypanelcontainer.h"
@@ -72,7 +73,16 @@ void LLFloaterSidePanelContainer::onClickCloseBtn()
 			panel_appearance->showOutfitsInventoryPanel();
 		}
 	}
-
+	
+	if ( panel_outfit_edit )
+	{
+		LLSidepanelAppearance* panel_appearance = dynamic_cast<LLSidepanelAppearance*>(getPanel("appearance"));
+		if ( panel_appearance )
+		{
+			panel_appearance->getWearable()->onClose();
+			panel_appearance->showOutfitsInventoryPanel();
+		}
+	}
 	LLFloater::onClickCloseBtn();
 }
 
diff --git a/indra/newview/llpaneleditwearable.cpp b/indra/newview/llpaneleditwearable.cpp
index 87f9e3da59f..786b215fdf8 100644
--- a/indra/newview/llpaneleditwearable.cpp
+++ b/indra/newview/llpaneleditwearable.cpp
@@ -856,6 +856,14 @@ void LLPanelEditWearable::draw()
         LLPanel::draw();
 }
 
+void LLPanelEditWearable::onClose()
+{
+	if ( isDirty() )
+	{
+		revertChanges();
+	}
+}
+
 void LLPanelEditWearable::setVisible(BOOL visible)
 {
         if (!visible)
diff --git a/indra/newview/llpaneleditwearable.h b/indra/newview/llpaneleditwearable.h
index 515a9913b9d..ac4344de2ec 100644
--- a/indra/newview/llpaneleditwearable.h
+++ b/indra/newview/llpaneleditwearable.h
@@ -54,6 +54,7 @@ class LLPanelEditWearable : public LLPanel
 	/*virtual*/ BOOL 		postBuild();
 	/*virtual*/ BOOL		isDirty() const;	// LLUICtrl
 	/*virtual*/ void		draw();	
+				void		onClose();
 
 	// changes camera angle to default for selected subpart
 	void				changeCamera(U8 subpart);
diff --git a/indra/newview/llsidepanelappearance.cpp b/indra/newview/llsidepanelappearance.cpp
index 1fc10c23261..98dc2c0e098 100644
--- a/indra/newview/llsidepanelappearance.cpp
+++ b/indra/newview/llsidepanelappearance.cpp
@@ -1,549 +1,544 @@
-/**
- * @file llsidepanelappearance.cpp
- * @brief Side Bar "Appearance" panel
- *
- * $LicenseInfo:firstyear=2009&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- * 
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- * 
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- * 
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
- * $/LicenseInfo$
- */
-
-#include "llviewerprecompiledheaders.h"
-#include "llsidepanelappearance.h"
-
-#include "llaccordionctrltab.h"
-#include "llagent.h"
-#include "llagentcamera.h"
-#include "llagentwearables.h"
-#include "llappearancemgr.h"
-#include "llfloatersidepanelcontainer.h"
-#include "llfolderview.h"
-#include "llinventorypanel.h"
-#include "llfiltereditor.h"
-#include "llfloaterreg.h"
-#include "llfloaterworldmap.h"
-#include "llfoldervieweventlistener.h"
-#include "lloutfitobserver.h"
-#include "llpaneleditwearable.h"
-#include "llpaneloutfitsinventory.h"
-#include "lltextbox.h"
-#include "lluictrlfactory.h"
-#include "llviewercontrol.h"
-#include "llviewerregion.h"
-#include "llvoavatarself.h"
-#include "llviewerwearable.h"
-
-static LLRegisterPanelClassWrapper<LLSidepanelAppearance> t_appearance("sidepanel_appearance");
-
-class LLCurrentlyWornFetchObserver : public LLInventoryFetchItemsObserver
-{
-public:
-	LLCurrentlyWornFetchObserver(const uuid_vec_t &ids,
-								 LLSidepanelAppearance *panel) :
-		LLInventoryFetchItemsObserver(ids),
-		mPanel(panel)
-	{}
-	~LLCurrentlyWornFetchObserver() {}
-	virtual void done()
-	{
-		mPanel->inventoryFetched();
-		gInventory.removeObserver(this);
-		delete this;
-	}
-private:
-	LLSidepanelAppearance *mPanel;
-};
-
-LLSidepanelAppearance::LLSidepanelAppearance() :
-	LLPanel(),
-	mFilterSubString(LLStringUtil::null),
-	mFilterEditor(NULL),
-	mOutfitEdit(NULL),
-	mCurrOutfitPanel(NULL),
-	mOpened(false)
-{
-	LLOutfitObserver& outfit_observer =  LLOutfitObserver::instance();
-	outfit_observer.addBOFReplacedCallback(boost::bind(&LLSidepanelAppearance::refreshCurrentOutfitName, this, ""));
-	outfit_observer.addBOFChangedCallback(boost::bind(&LLSidepanelAppearance::refreshCurrentOutfitName, this, ""));
-	outfit_observer.addCOFChangedCallback(boost::bind(&LLSidepanelAppearance::refreshCurrentOutfitName, this, ""));
-
-	gAgentWearables.addLoadingStartedCallback(boost::bind(&LLSidepanelAppearance::setWearablesLoading, this, true));
-	gAgentWearables.addLoadedCallback(boost::bind(&LLSidepanelAppearance::setWearablesLoading, this, false));
-}
-
-LLSidepanelAppearance::~LLSidepanelAppearance()
-{
-}
-
-// virtual
-BOOL LLSidepanelAppearance::postBuild()
-{
-	mOpenOutfitBtn = getChild<LLButton>("openoutfit_btn");
-	mOpenOutfitBtn->setClickedCallback(boost::bind(&LLSidepanelAppearance::onOpenOutfitButtonClicked, this));
-
-	mEditAppearanceBtn = getChild<LLButton>("editappearance_btn");
-	mEditAppearanceBtn->setClickedCallback(boost::bind(&LLSidepanelAppearance::onEditAppearanceButtonClicked, this));
-
-	childSetAction("edit_outfit_btn", boost::bind(&LLSidepanelAppearance::showOutfitEditPanel, this));
-
-	mNewOutfitBtn = getChild<LLButton>("newlook_btn");
-	mNewOutfitBtn->setClickedCallback(boost::bind(&LLSidepanelAppearance::onNewOutfitButtonClicked, this));
-	mNewOutfitBtn->setEnabled(false);
-
-	mFilterEditor = getChild<LLFilterEditor>("Filter");
-	if (mFilterEditor)
-	{
-		mFilterEditor->setCommitCallback(boost::bind(&LLSidepanelAppearance::onFilterEdit, this, _2));
-	}
-
-	mPanelOutfitsInventory = dynamic_cast<LLPanelOutfitsInventory *>(getChild<LLPanel>("panel_outfits_inventory"));
-
-	mOutfitEdit = dynamic_cast<LLPanelOutfitEdit*>(getChild<LLPanel>("panel_outfit_edit"));
-	if (mOutfitEdit)
-	{
-		LLButton* back_btn = mOutfitEdit->getChild<LLButton>("back_btn");
-		if (back_btn)
-		{
-			back_btn->setClickedCallback(boost::bind(&LLSidepanelAppearance::showOutfitsInventoryPanel, this));
-		}
-
-	}
-
-	mEditWearable = dynamic_cast<LLPanelEditWearable*>(getChild<LLPanel>("panel_edit_wearable"));
-	if (mEditWearable)
-	{
-		LLButton* edit_wearable_back_btn = mEditWearable->getChild<LLButton>("back_btn");
-		if (edit_wearable_back_btn)
-		{
-			edit_wearable_back_btn->setClickedCallback(boost::bind(&LLSidepanelAppearance::showOutfitEditPanel, this));
-		}
-	}
-
-	mCurrentLookName = getChild<LLTextBox>("currentlook_name");
-
-	mOutfitStatus = getChild<LLTextBox>("currentlook_status");
-	
-	mCurrOutfitPanel = getChild<LLPanel>("panel_currentlook");
-
-
-	setVisibleCallback(boost::bind(&LLSidepanelAppearance::onVisibilityChange,this,_2));
-
-	return TRUE;
-}
-
-// virtual
-void LLSidepanelAppearance::onOpen(const LLSD& key)
-{
-	if (!key.has("type"))
-	{
-		// No specific panel requested.
-		// If we're opened for the first time then show My Outfits.
-		// Else do nothing.
-		if (!mOpened)
-		{
-			showOutfitsInventoryPanel();
-		}
-	}
-	else
-	{
-		// Switch to the requested panel.
-		std::string type = key["type"].asString();
-		if (type == "my_outfits")
-		{
-			showOutfitsInventoryPanel();
-		}
-		else if (type == "edit_outfit")
-		{
-			showOutfitEditPanel();
-		}
-		else if (type == "edit_shape")
-		{
-			showWearableEditPanel();
-		}
-	}
-
-	mOpened = true;
-}
-
-void LLSidepanelAppearance::onVisibilityChange(const LLSD &new_visibility)
-{
-	LLSD visibility;
-	visibility["visible"] = new_visibility.asBoolean();
-	visibility["reset_accordion"] = false;
-	updateToVisibility(visibility);
-}
-
-void LLSidepanelAppearance::updateToVisibility(const LLSD &new_visibility)
-{
-	if (new_visibility["visible"].asBoolean())
-	{
-		const BOOL is_outfit_edit_visible = mOutfitEdit && mOutfitEdit->getVisible();
-		const BOOL is_wearable_edit_visible = mEditWearable && mEditWearable->getVisible();
-
-		if (is_outfit_edit_visible || is_wearable_edit_visible)
-		{
-			const LLViewerWearable *wearable_ptr = mEditWearable->getWearable();
-			if (!wearable_ptr)
-			{
-				llwarns << "Visibility change to invalid wearable" << llendl;
-				return;
-			}
-			// Disable camera switch is currently just for WT_PHYSICS type since we don't want to freeze the avatar
-			// when editing its physics.
-			if (!gAgentCamera.cameraCustomizeAvatar())
-			{
-				LLVOAvatarSelf::onCustomizeStart(LLWearableType::getDisableCameraSwitch(wearable_ptr->getType()));
-			}
-			if (is_wearable_edit_visible)
-			{
-				if (gAgentWearables.getWearableIndex(wearable_ptr) == LLAgentWearables::MAX_CLOTHING_PER_TYPE)
-				{
-					// we're no longer wearing the wearable we were last editing, switch back to outfit editor
-					showOutfitEditPanel();
-				}
-			}
-
-			if (is_outfit_edit_visible && new_visibility["reset_accordion"].asBoolean())
-			{
-				mOutfitEdit->resetAccordionState();
-			}
-		}
-	}
-	else
-	{
-		if (gAgentCamera.cameraCustomizeAvatar() && gSavedSettings.getBOOL("AppearanceCameraMovement"))
-		{
-			gAgentCamera.changeCameraToDefault();
-			gAgentCamera.resetView();
-		}
-		
-		if ( mEditWearable->getVisible() )
-		{
-			mEditWearable->revertChanges();
-		}
-	}
-}
-
-void LLSidepanelAppearance::onFilterEdit(const std::string& search_string)
-{
-	if (mFilterSubString != search_string)
-	{
-		mFilterSubString = search_string;
-
-		// Searches are case-insensitive
-		// but we don't convert the typed string to upper-case so that it can be fed to the web search as-is.
-
-		mPanelOutfitsInventory->onSearchEdit(mFilterSubString);
-	}
-}
-
-void LLSidepanelAppearance::onOpenOutfitButtonClicked()
-{
-	const LLViewerInventoryItem *outfit_link = LLAppearanceMgr::getInstance()->getBaseOutfitLink();
-	if (!outfit_link)
-		return;
-	if (!outfit_link->getIsLinkType())
-		return;
-
-	LLAccordionCtrlTab* tab_outfits = mPanelOutfitsInventory->findChild<LLAccordionCtrlTab>("tab_outfits");
-	if (tab_outfits)
-	{
-		tab_outfits->changeOpenClose(FALSE);
-		LLInventoryPanel *inventory_panel = tab_outfits->findChild<LLInventoryPanel>("outfitslist_tab");
-		if (inventory_panel)
-		{
-			LLFolderView* root = inventory_panel->getRootFolder();
-			LLFolderViewItem *outfit_folder = root->getItemByID(outfit_link->getLinkedUUID());
-			if (outfit_folder)
-			{
-				outfit_folder->setOpen(!outfit_folder->isOpen());
-				root->setSelectionFromRoot(outfit_folder,TRUE);
-				root->scrollToShowSelection();
-			}
-		}
-	}
-}
-
-// *TODO: obsolete?
-void LLSidepanelAppearance::onEditAppearanceButtonClicked()
-{
-	if (gAgentWearables.areWearablesLoaded())
-	{
-		LLVOAvatarSelf::onCustomizeStart();
-	}
-}
-
-void LLSidepanelAppearance::onNewOutfitButtonClicked()
-{
-	if (!mOutfitEdit->getVisible())
-	{
-		mPanelOutfitsInventory->onSave();
-	}
-}
-
-void LLSidepanelAppearance::showOutfitsInventoryPanel()
-{
-	toggleWearableEditPanel(FALSE);
-	toggleOutfitEditPanel(FALSE);
-	toggleMyOutfitsPanel(TRUE);
-}
-
-void LLSidepanelAppearance::showOutfitEditPanel()
-{
-	if (mOutfitEdit && mOutfitEdit->getVisible()) return;
-
-	// Accordion's state must be reset in all cases except the one when user
-	// is returning back to the mOutfitEdit panel from the mEditWearable panel.
-	// The simplest way to control this is to check the visibility state of the mEditWearable
-	// BEFORE it is changed by the call to the toggleWearableEditPanel(FALSE, NULL, TRUE).
-	if (mEditWearable != NULL && !mEditWearable->getVisible() && mOutfitEdit != NULL)
-	{
-		mOutfitEdit->resetAccordionState();
-	}
-
-	// If we're exiting the edit wearable view, and the camera was not focused on the avatar
-	// (e.g. such as if we were editing a physics param), then skip the outfits edit mode since
-	// otherwise this would trigger the camera focus mode.
-	if (mEditWearable != NULL && mEditWearable->getVisible() && !gAgentCamera.cameraCustomizeAvatar())
-	{
-		showOutfitsInventoryPanel();
-		return;
-	}
-
-	toggleMyOutfitsPanel(FALSE);
-	toggleWearableEditPanel(FALSE, NULL, TRUE); // don't switch out of edit appearance mode
-	toggleOutfitEditPanel(TRUE);
-}
-
-void LLSidepanelAppearance::showWearableEditPanel(LLViewerWearable *wearable /* = NULL*/, BOOL disable_camera_switch)
-{
-	toggleMyOutfitsPanel(FALSE);
-	toggleOutfitEditPanel(FALSE, TRUE); // don't switch out of edit appearance mode
-	toggleWearableEditPanel(TRUE, wearable, disable_camera_switch);
-}
-
-void LLSidepanelAppearance::toggleMyOutfitsPanel(BOOL visible)
-{
-	if (!mPanelOutfitsInventory || mPanelOutfitsInventory->getVisible() == visible)
-	{
-		// visibility isn't changing, hence nothing to do
-		return;
-	}
-
-	mPanelOutfitsInventory->setVisible(visible);
-
-	// *TODO: Move these controls to panel_outfits_inventory.xml
-	// so that we don't need to toggle them explicitly.
-	mFilterEditor->setVisible(visible);
-	mNewOutfitBtn->setVisible(visible);
-	mCurrOutfitPanel->setVisible(visible);
-
-	if (visible)
-	{
-		mPanelOutfitsInventory->onOpen(LLSD());
-	}
-}
-
-void LLSidepanelAppearance::toggleOutfitEditPanel(BOOL visible, BOOL disable_camera_switch)
-{
-	if (!mOutfitEdit || mOutfitEdit->getVisible() == visible)
-	{
-		// visibility isn't changing, hence nothing to do
-		return;
-	}
-
-	mOutfitEdit->setVisible(visible);
-
-	if (visible)
-	{
-		mOutfitEdit->onOpen(LLSD());
-		LLVOAvatarSelf::onCustomizeStart(disable_camera_switch);
-	}
-	else 
-	{
-		if (!disable_camera_switch)   // if we're just switching between outfit and wearable editing, don't end customization.
-		{
-			LLVOAvatarSelf::onCustomizeEnd(disable_camera_switch);
-		}
-	}
-}
-
-void LLSidepanelAppearance::toggleWearableEditPanel(BOOL visible, LLViewerWearable *wearable, BOOL disable_camera_switch)
-{
-	if (!mEditWearable || mEditWearable->getVisible() == visible)
-	{
-		// visibility isn't changing, hence nothing to do
-		return;
-	}
-
-	if (!wearable)
-	{
-		wearable = gAgentWearables.getViewerWearable(LLWearableType::WT_SHAPE, 0);
-	}
-	if (!wearable)
-	{
-		return;
-	}
-
-	// Toggle panel visibility.
-	mEditWearable->setVisible(visible);
-
-	if (visible)
-	{
-		LLVOAvatarSelf::onCustomizeStart(disable_camera_switch);
-		mEditWearable->setWearable(wearable, disable_camera_switch);
-		mEditWearable->onOpen(LLSD()); // currently no-op, just for consistency
-	}
-	else
-	{
-		// Save changes if closing.
-		mEditWearable->saveChanges();
-		if (!disable_camera_switch)   // if we're just switching between outfit and wearable editing, don't end customization.
-		{
-			LLVOAvatarSelf::onCustomizeEnd(disable_camera_switch);
-		}
-	}
-}
-
-void LLSidepanelAppearance::refreshCurrentOutfitName(const std::string& name)
-{
-	// Set current outfit status (wearing/unsaved).
-	bool dirty = LLAppearanceMgr::getInstance()->isOutfitDirty();
-	std::string cof_status_str = getString(dirty ? "Unsaved Changes" : "Now Wearing");
-	mOutfitStatus->setText(cof_status_str);
-
-	if (name == "")
-	{
-		std::string outfit_name;
-		if (LLAppearanceMgr::getInstance()->getBaseOutfitName(outfit_name))
-		{
-				mCurrentLookName->setText(outfit_name);
-				return;
-		}
-
-		std::string string_name = gAgentWearables.isCOFChangeInProgress() ? "Changing outfits" : "No Outfit";
-		mCurrentLookName->setText(getString(string_name));
-		mOpenOutfitBtn->setEnabled(FALSE);
-	}
-	else
-	{
-		mCurrentLookName->setText(name);
-		// Can't just call update verbs since the folder link may not have been created yet.
-		mOpenOutfitBtn->setEnabled(TRUE);
-	}
-}
-
-//static
-void LLSidepanelAppearance::editWearable(LLViewerWearable *wearable, LLView *data, BOOL disable_camera_switch)
-{
-	LLFloaterSidePanelContainer::showPanel("appearance", LLSD());
-
-	LLSidepanelAppearance *panel = dynamic_cast<LLSidepanelAppearance*>(data);
-	if (panel)
-	{
-		panel->showWearableEditPanel(wearable, disable_camera_switch);
-	}
-}
-
-// Fetch currently worn items and only enable the New Look button after everything's been
-// fetched.  Alternatively, we could stuff this logic into llagentwearables::makeNewOutfitLinks.
-void LLSidepanelAppearance::fetchInventory()
-{
-
-	mNewOutfitBtn->setEnabled(false);
-	uuid_vec_t ids;
-	LLUUID item_id;
-	for(S32 type = (S32)LLWearableType::WT_SHAPE; type < (S32)LLWearableType::WT_COUNT; ++type)
-	{
-		for (U32 index = 0; index < gAgentWearables.getWearableCount((LLWearableType::EType)type); ++index)
-		{
-			item_id = gAgentWearables.getWearableItemID((LLWearableType::EType)type, index);
-			if(item_id.notNull())
-			{
-				ids.push_back(item_id);
-			}
-		}
-	}
-
-	if (isAgentAvatarValid())
-	{
-		for (LLVOAvatar::attachment_map_t::const_iterator iter = gAgentAvatarp->mAttachmentPoints.begin(); 
-			 iter != gAgentAvatarp->mAttachmentPoints.end(); ++iter)
-		{
-			LLViewerJointAttachment* attachment = iter->second;
-			if (!attachment) continue;
-			for (LLViewerJointAttachment::attachedobjs_vec_t::iterator attachment_iter = attachment->mAttachedObjects.begin();
-				 attachment_iter != attachment->mAttachedObjects.end();
-				 ++attachment_iter)
-			{
-				LLViewerObject* attached_object = (*attachment_iter);
-				if (!attached_object) continue;
-				const LLUUID& item_id = attached_object->getAttachmentItemID();
-				if (item_id.isNull()) continue;
-				ids.push_back(item_id);
-			}
-		}
-	}
-
-	LLCurrentlyWornFetchObserver *fetch_worn = new LLCurrentlyWornFetchObserver(ids, this);
-	fetch_worn->startFetch();
-	// If no items to be fetched, done will never be triggered.
-	// TODO: Change LLInventoryFetchItemsObserver::fetchItems to trigger done() on this condition.
-	if (fetch_worn->isFinished())
-	{
-		fetch_worn->done();
-	}
-	else
-	{
-		gInventory.addObserver(fetch_worn);
-	}
-}
-
-void LLSidepanelAppearance::inventoryFetched()
-{
-	mNewOutfitBtn->setEnabled(true);
-}
-
-void LLSidepanelAppearance::setWearablesLoading(bool val)
-{
-	getChildView("wearables_loading_indicator")->setVisible( val);
-	getChildView("edit_outfit_btn")->setVisible( !val);
-
-	if (!val)
-	{
-		// refresh outfit name when COF is already changed.
-		refreshCurrentOutfitName();
-	}
-}
-
-void LLSidepanelAppearance::showDefaultSubpart()
-{
-	if (mEditWearable->getVisible())
-	{
-		mEditWearable->showDefaultSubpart();
-	}
-}
-
-void LLSidepanelAppearance::updateScrollingPanelList()
-{
-	if (mEditWearable->getVisible())
-	{
-		mEditWearable->updateScrollingPanelList();
-	}
-}
+/**
+ * @file llsidepanelappearance.cpp
+ * @brief Side Bar "Appearance" panel
+ *
+ * $LicenseInfo:firstyear=2009&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+#include "llviewerprecompiledheaders.h"
+#include "llsidepanelappearance.h"
+
+#include "llaccordionctrltab.h"
+#include "llagent.h"
+#include "llagentcamera.h"
+#include "llagentwearables.h"
+#include "llappearancemgr.h"
+#include "llfloatersidepanelcontainer.h"
+#include "llfolderview.h"
+#include "llinventorypanel.h"
+#include "llfiltereditor.h"
+#include "llfloaterreg.h"
+#include "llfloaterworldmap.h"
+#include "llfoldervieweventlistener.h"
+#include "lloutfitobserver.h"
+#include "llpaneleditwearable.h"
+#include "llpaneloutfitsinventory.h"
+#include "lltextbox.h"
+#include "lluictrlfactory.h"
+#include "llviewercontrol.h"
+#include "llviewerregion.h"
+#include "llvoavatarself.h"
+#include "llviewerwearable.h"
+
+static LLRegisterPanelClassWrapper<LLSidepanelAppearance> t_appearance("sidepanel_appearance");
+
+class LLCurrentlyWornFetchObserver : public LLInventoryFetchItemsObserver
+{
+public:
+	LLCurrentlyWornFetchObserver(const uuid_vec_t &ids,
+								 LLSidepanelAppearance *panel) :
+		LLInventoryFetchItemsObserver(ids),
+		mPanel(panel)
+	{}
+	~LLCurrentlyWornFetchObserver() {}
+	virtual void done()
+	{
+		mPanel->inventoryFetched();
+		gInventory.removeObserver(this);
+		delete this;
+	}
+private:
+	LLSidepanelAppearance *mPanel;
+};
+
+LLSidepanelAppearance::LLSidepanelAppearance() :
+	LLPanel(),
+	mFilterSubString(LLStringUtil::null),
+	mFilterEditor(NULL),
+	mOutfitEdit(NULL),
+	mCurrOutfitPanel(NULL),
+	mOpened(false)
+{
+	LLOutfitObserver& outfit_observer =  LLOutfitObserver::instance();
+	outfit_observer.addBOFReplacedCallback(boost::bind(&LLSidepanelAppearance::refreshCurrentOutfitName, this, ""));
+	outfit_observer.addBOFChangedCallback(boost::bind(&LLSidepanelAppearance::refreshCurrentOutfitName, this, ""));
+	outfit_observer.addCOFChangedCallback(boost::bind(&LLSidepanelAppearance::refreshCurrentOutfitName, this, ""));
+
+	gAgentWearables.addLoadingStartedCallback(boost::bind(&LLSidepanelAppearance::setWearablesLoading, this, true));
+	gAgentWearables.addLoadedCallback(boost::bind(&LLSidepanelAppearance::setWearablesLoading, this, false));
+}
+
+LLSidepanelAppearance::~LLSidepanelAppearance()
+{
+}
+
+// virtual
+BOOL LLSidepanelAppearance::postBuild()
+{
+	mOpenOutfitBtn = getChild<LLButton>("openoutfit_btn");
+	mOpenOutfitBtn->setClickedCallback(boost::bind(&LLSidepanelAppearance::onOpenOutfitButtonClicked, this));
+
+	mEditAppearanceBtn = getChild<LLButton>("editappearance_btn");
+	mEditAppearanceBtn->setClickedCallback(boost::bind(&LLSidepanelAppearance::onEditAppearanceButtonClicked, this));
+
+	childSetAction("edit_outfit_btn", boost::bind(&LLSidepanelAppearance::showOutfitEditPanel, this));
+
+	mNewOutfitBtn = getChild<LLButton>("newlook_btn");
+	mNewOutfitBtn->setClickedCallback(boost::bind(&LLSidepanelAppearance::onNewOutfitButtonClicked, this));
+	mNewOutfitBtn->setEnabled(false);
+
+	mFilterEditor = getChild<LLFilterEditor>("Filter");
+	if (mFilterEditor)
+	{
+		mFilterEditor->setCommitCallback(boost::bind(&LLSidepanelAppearance::onFilterEdit, this, _2));
+	}
+
+	mPanelOutfitsInventory = dynamic_cast<LLPanelOutfitsInventory *>(getChild<LLPanel>("panel_outfits_inventory"));
+
+	mOutfitEdit = dynamic_cast<LLPanelOutfitEdit*>(getChild<LLPanel>("panel_outfit_edit"));
+	if (mOutfitEdit)
+	{
+		LLButton* back_btn = mOutfitEdit->getChild<LLButton>("back_btn");
+		if (back_btn)
+		{
+			back_btn->setClickedCallback(boost::bind(&LLSidepanelAppearance::showOutfitsInventoryPanel, this));
+		}
+
+	}
+
+	mEditWearable = dynamic_cast<LLPanelEditWearable*>(getChild<LLPanel>("panel_edit_wearable"));
+	if (mEditWearable)
+	{
+		LLButton* edit_wearable_back_btn = mEditWearable->getChild<LLButton>("back_btn");
+		if (edit_wearable_back_btn)
+		{
+			edit_wearable_back_btn->setClickedCallback(boost::bind(&LLSidepanelAppearance::showOutfitEditPanel, this));
+		}
+	}
+
+	mCurrentLookName = getChild<LLTextBox>("currentlook_name");
+
+	mOutfitStatus = getChild<LLTextBox>("currentlook_status");
+	
+	mCurrOutfitPanel = getChild<LLPanel>("panel_currentlook");
+
+
+	setVisibleCallback(boost::bind(&LLSidepanelAppearance::onVisibilityChange,this,_2));
+
+	return TRUE;
+}
+
+// virtual
+void LLSidepanelAppearance::onOpen(const LLSD& key)
+{
+	if (!key.has("type"))
+	{
+		// No specific panel requested.
+		// If we're opened for the first time then show My Outfits.
+		// Else do nothing.
+		if (!mOpened)
+		{
+			showOutfitsInventoryPanel();
+		}
+	}
+	else
+	{
+		// Switch to the requested panel.
+		std::string type = key["type"].asString();
+		if (type == "my_outfits")
+		{
+			showOutfitsInventoryPanel();
+		}
+		else if (type == "edit_outfit")
+		{
+			showOutfitEditPanel();
+		}
+		else if (type == "edit_shape")
+		{
+			showWearableEditPanel();
+		}
+	}
+
+	mOpened = true;
+}
+
+void LLSidepanelAppearance::onVisibilityChange(const LLSD &new_visibility)
+{
+	LLSD visibility;
+	visibility["visible"] = new_visibility.asBoolean();
+	visibility["reset_accordion"] = false;
+	updateToVisibility(visibility);
+}
+
+void LLSidepanelAppearance::updateToVisibility(const LLSD &new_visibility)
+{
+	if (new_visibility["visible"].asBoolean())
+	{
+		const BOOL is_outfit_edit_visible = mOutfitEdit && mOutfitEdit->getVisible();
+		const BOOL is_wearable_edit_visible = mEditWearable && mEditWearable->getVisible();
+
+		if (is_outfit_edit_visible || is_wearable_edit_visible)
+		{
+			const LLViewerWearable *wearable_ptr = mEditWearable->getWearable();
+			if (!wearable_ptr)
+			{
+				llwarns << "Visibility change to invalid wearable" << llendl;
+				return;
+			}
+			// Disable camera switch is currently just for WT_PHYSICS type since we don't want to freeze the avatar
+			// when editing its physics.
+			if (!gAgentCamera.cameraCustomizeAvatar())
+			{
+				LLVOAvatarSelf::onCustomizeStart(LLWearableType::getDisableCameraSwitch(wearable_ptr->getType()));
+			}
+			if (is_wearable_edit_visible)
+			{
+				if (gAgentWearables.getWearableIndex(wearable_ptr) == LLAgentWearables::MAX_CLOTHING_PER_TYPE)
+				{
+					// we're no longer wearing the wearable we were last editing, switch back to outfit editor
+					showOutfitEditPanel();
+				}
+			}
+
+			if (is_outfit_edit_visible && new_visibility["reset_accordion"].asBoolean())
+			{
+				mOutfitEdit->resetAccordionState();
+			}
+		}
+	}
+	else
+	{
+		if (gAgentCamera.cameraCustomizeAvatar() && gSavedSettings.getBOOL("AppearanceCameraMovement"))
+		{
+			gAgentCamera.changeCameraToDefault();
+			gAgentCamera.resetView();
+		}	
+	}
+}
+
+void LLSidepanelAppearance::onFilterEdit(const std::string& search_string)
+{
+	if (mFilterSubString != search_string)
+	{
+		mFilterSubString = search_string;
+
+		// Searches are case-insensitive
+		// but we don't convert the typed string to upper-case so that it can be fed to the web search as-is.
+
+		mPanelOutfitsInventory->onSearchEdit(mFilterSubString);
+	}
+}
+
+void LLSidepanelAppearance::onOpenOutfitButtonClicked()
+{
+	const LLViewerInventoryItem *outfit_link = LLAppearanceMgr::getInstance()->getBaseOutfitLink();
+	if (!outfit_link)
+		return;
+	if (!outfit_link->getIsLinkType())
+		return;
+
+	LLAccordionCtrlTab* tab_outfits = mPanelOutfitsInventory->findChild<LLAccordionCtrlTab>("tab_outfits");
+	if (tab_outfits)
+	{
+		tab_outfits->changeOpenClose(FALSE);
+		LLInventoryPanel *inventory_panel = tab_outfits->findChild<LLInventoryPanel>("outfitslist_tab");
+		if (inventory_panel)
+		{
+			LLFolderView* root = inventory_panel->getRootFolder();
+			LLFolderViewItem *outfit_folder = root->getItemByID(outfit_link->getLinkedUUID());
+			if (outfit_folder)
+			{
+				outfit_folder->setOpen(!outfit_folder->isOpen());
+				root->setSelectionFromRoot(outfit_folder,TRUE);
+				root->scrollToShowSelection();
+			}
+		}
+	}
+}
+
+// *TODO: obsolete?
+void LLSidepanelAppearance::onEditAppearanceButtonClicked()
+{
+	if (gAgentWearables.areWearablesLoaded())
+	{
+		LLVOAvatarSelf::onCustomizeStart();
+	}
+}
+
+void LLSidepanelAppearance::onNewOutfitButtonClicked()
+{
+	if (!mOutfitEdit->getVisible())
+	{
+		mPanelOutfitsInventory->onSave();
+	}
+}
+
+void LLSidepanelAppearance::showOutfitsInventoryPanel()
+{
+	toggleWearableEditPanel(FALSE);
+	toggleOutfitEditPanel(FALSE);
+	toggleMyOutfitsPanel(TRUE);
+}
+
+void LLSidepanelAppearance::showOutfitEditPanel()
+{
+	if (mOutfitEdit && mOutfitEdit->getVisible()) return;
+
+	// Accordion's state must be reset in all cases except the one when user
+	// is returning back to the mOutfitEdit panel from the mEditWearable panel.
+	// The simplest way to control this is to check the visibility state of the mEditWearable
+	// BEFORE it is changed by the call to the toggleWearableEditPanel(FALSE, NULL, TRUE).
+	if (mEditWearable != NULL && !mEditWearable->getVisible() && mOutfitEdit != NULL)
+	{
+		mOutfitEdit->resetAccordionState();
+	}
+
+	// If we're exiting the edit wearable view, and the camera was not focused on the avatar
+	// (e.g. such as if we were editing a physics param), then skip the outfits edit mode since
+	// otherwise this would trigger the camera focus mode.
+	if (mEditWearable != NULL && mEditWearable->getVisible() && !gAgentCamera.cameraCustomizeAvatar())
+	{
+		showOutfitsInventoryPanel();
+		return;
+	}
+
+	toggleMyOutfitsPanel(FALSE);
+	toggleWearableEditPanel(FALSE, NULL, TRUE); // don't switch out of edit appearance mode
+	toggleOutfitEditPanel(TRUE);
+}
+
+void LLSidepanelAppearance::showWearableEditPanel(LLViewerWearable *wearable /* = NULL*/, BOOL disable_camera_switch)
+{
+	toggleMyOutfitsPanel(FALSE);
+	toggleOutfitEditPanel(FALSE, TRUE); // don't switch out of edit appearance mode
+	toggleWearableEditPanel(TRUE, wearable, disable_camera_switch);
+}
+
+void LLSidepanelAppearance::toggleMyOutfitsPanel(BOOL visible)
+{
+	if (!mPanelOutfitsInventory || mPanelOutfitsInventory->getVisible() == visible)
+	{
+		// visibility isn't changing, hence nothing to do
+		return;
+	}
+
+	mPanelOutfitsInventory->setVisible(visible);
+
+	// *TODO: Move these controls to panel_outfits_inventory.xml
+	// so that we don't need to toggle them explicitly.
+	mFilterEditor->setVisible(visible);
+	mNewOutfitBtn->setVisible(visible);
+	mCurrOutfitPanel->setVisible(visible);
+
+	if (visible)
+	{
+		mPanelOutfitsInventory->onOpen(LLSD());
+	}
+}
+
+void LLSidepanelAppearance::toggleOutfitEditPanel(BOOL visible, BOOL disable_camera_switch)
+{
+	if (!mOutfitEdit || mOutfitEdit->getVisible() == visible)
+	{
+		// visibility isn't changing, hence nothing to do
+		return;
+	}
+
+	mOutfitEdit->setVisible(visible);
+
+	if (visible)
+	{
+		mOutfitEdit->onOpen(LLSD());
+		LLVOAvatarSelf::onCustomizeStart(disable_camera_switch);
+	}
+	else 
+	{
+		if (!disable_camera_switch)   // if we're just switching between outfit and wearable editing, don't end customization.
+		{
+			LLVOAvatarSelf::onCustomizeEnd(disable_camera_switch);
+		}
+	}
+}
+
+void LLSidepanelAppearance::toggleWearableEditPanel(BOOL visible, LLViewerWearable *wearable, BOOL disable_camera_switch)
+{
+	if (!mEditWearable || mEditWearable->getVisible() == visible)
+	{
+		// visibility isn't changing, hence nothing to do
+		return;
+	}
+
+	if (!wearable)
+	{
+		wearable = gAgentWearables.getViewerWearable(LLWearableType::WT_SHAPE, 0);
+	}
+	if (!wearable)
+	{
+		return;
+	}
+
+	// Toggle panel visibility.
+	mEditWearable->setVisible(visible);
+
+	if (visible)
+	{
+		LLVOAvatarSelf::onCustomizeStart(disable_camera_switch);
+		mEditWearable->setWearable(wearable, disable_camera_switch);
+		mEditWearable->onOpen(LLSD()); // currently no-op, just for consistency
+	}
+	else
+	{
+		// Save changes if closing.
+		mEditWearable->saveChanges();
+		if (!disable_camera_switch)   // if we're just switching between outfit and wearable editing, don't end customization.
+		{
+			LLVOAvatarSelf::onCustomizeEnd(disable_camera_switch);
+		}
+	}
+}
+
+void LLSidepanelAppearance::refreshCurrentOutfitName(const std::string& name)
+{
+	// Set current outfit status (wearing/unsaved).
+	bool dirty = LLAppearanceMgr::getInstance()->isOutfitDirty();
+	std::string cof_status_str = getString(dirty ? "Unsaved Changes" : "Now Wearing");
+	mOutfitStatus->setText(cof_status_str);
+
+	if (name == "")
+	{
+		std::string outfit_name;
+		if (LLAppearanceMgr::getInstance()->getBaseOutfitName(outfit_name))
+		{
+				mCurrentLookName->setText(outfit_name);
+				return;
+		}
+
+		std::string string_name = gAgentWearables.isCOFChangeInProgress() ? "Changing outfits" : "No Outfit";
+		mCurrentLookName->setText(getString(string_name));
+		mOpenOutfitBtn->setEnabled(FALSE);
+	}
+	else
+	{
+		mCurrentLookName->setText(name);
+		// Can't just call update verbs since the folder link may not have been created yet.
+		mOpenOutfitBtn->setEnabled(TRUE);
+	}
+}
+
+//static
+void LLSidepanelAppearance::editWearable(LLViewerWearable *wearable, LLView *data, BOOL disable_camera_switch)
+{
+	LLFloaterSidePanelContainer::showPanel("appearance", LLSD());
+
+	LLSidepanelAppearance *panel = dynamic_cast<LLSidepanelAppearance*>(data);
+	if (panel)
+	{
+		panel->showWearableEditPanel(wearable, disable_camera_switch);
+	}
+}
+
+// Fetch currently worn items and only enable the New Look button after everything's been
+// fetched.  Alternatively, we could stuff this logic into llagentwearables::makeNewOutfitLinks.
+void LLSidepanelAppearance::fetchInventory()
+{
+
+	mNewOutfitBtn->setEnabled(false);
+	uuid_vec_t ids;
+	LLUUID item_id;
+	for(S32 type = (S32)LLWearableType::WT_SHAPE; type < (S32)LLWearableType::WT_COUNT; ++type)
+	{
+		for (U32 index = 0; index < gAgentWearables.getWearableCount((LLWearableType::EType)type); ++index)
+		{
+			item_id = gAgentWearables.getWearableItemID((LLWearableType::EType)type, index);
+			if(item_id.notNull())
+			{
+				ids.push_back(item_id);
+			}
+		}
+	}
+
+	if (isAgentAvatarValid())
+	{
+		for (LLVOAvatar::attachment_map_t::const_iterator iter = gAgentAvatarp->mAttachmentPoints.begin(); 
+			 iter != gAgentAvatarp->mAttachmentPoints.end(); ++iter)
+		{
+			LLViewerJointAttachment* attachment = iter->second;
+			if (!attachment) continue;
+			for (LLViewerJointAttachment::attachedobjs_vec_t::iterator attachment_iter = attachment->mAttachedObjects.begin();
+				 attachment_iter != attachment->mAttachedObjects.end();
+				 ++attachment_iter)
+			{
+				LLViewerObject* attached_object = (*attachment_iter);
+				if (!attached_object) continue;
+				const LLUUID& item_id = attached_object->getAttachmentItemID();
+				if (item_id.isNull()) continue;
+				ids.push_back(item_id);
+			}
+		}
+	}
+
+	LLCurrentlyWornFetchObserver *fetch_worn = new LLCurrentlyWornFetchObserver(ids, this);
+	fetch_worn->startFetch();
+	// If no items to be fetched, done will never be triggered.
+	// TODO: Change LLInventoryFetchItemsObserver::fetchItems to trigger done() on this condition.
+	if (fetch_worn->isFinished())
+	{
+		fetch_worn->done();
+	}
+	else
+	{
+		gInventory.addObserver(fetch_worn);
+	}
+}
+
+void LLSidepanelAppearance::inventoryFetched()
+{
+	mNewOutfitBtn->setEnabled(true);
+}
+
+void LLSidepanelAppearance::setWearablesLoading(bool val)
+{
+	getChildView("wearables_loading_indicator")->setVisible( val);
+	getChildView("edit_outfit_btn")->setVisible( !val);
+
+	if (!val)
+	{
+		// refresh outfit name when COF is already changed.
+		refreshCurrentOutfitName();
+	}
+}
+
+void LLSidepanelAppearance::showDefaultSubpart()
+{
+	if (mEditWearable->getVisible())
+	{
+		mEditWearable->showDefaultSubpart();
+	}
+}
+
+void LLSidepanelAppearance::updateScrollingPanelList()
+{
+	if (mEditWearable->getVisible())
+	{
+		mEditWearable->updateScrollingPanelList();
+	}
+}
diff --git a/indra/newview/llsidepanelappearance.h b/indra/newview/llsidepanelappearance.h
index 32bbb8a7768..762f557a800 100644
--- a/indra/newview/llsidepanelappearance.h
+++ b/indra/newview/llsidepanelappearance.h
@@ -47,7 +47,7 @@ class LLSidepanelAppearance : public LLPanel
 	virtual ~LLSidepanelAppearance();
 
 	/*virtual*/ BOOL postBuild();
-	/*virtual*/ void onOpen(const LLSD& key);
+	/*virtual*/ void onOpen(const LLSD& key);	
 
 	void refreshCurrentOutfitName(const std::string& name = "");
 
@@ -64,6 +64,7 @@ class LLSidepanelAppearance : public LLPanel
 	void showDefaultSubpart();
 	void updateScrollingPanelList();
 	void updateToVisibility( const LLSD& new_visibility );
+	LLPanelEditWearable* getWearable(){ return mEditWearable; }
 
 private:
 	void onFilterEdit(const std::string& search_string);
-- 
GitLab


From 3565f6f36db90e1a9a5918d8087f9dc0ab61eb69 Mon Sep 17 00:00:00 2001
From: Logan Dethrow <log@lindenlab.com>
Date: Thu, 13 Dec 2012 18:07:50 -0500
Subject: [PATCH 207/436] WIP SH-3339. Commit to merge from trunk to get build
 fixes, etc.

---
 indra/newview/llappearancemgr.h       |  3 ++
 indra/newview/llpaneleditwearable.cpp | 54 ++++++++++++++++-----------
 indra/newview/llpaneleditwearable.h   |  3 ++
 3 files changed, 38 insertions(+), 22 deletions(-)

diff --git a/indra/newview/llappearancemgr.h b/indra/newview/llappearancemgr.h
index 525402c2152..7c94542e20d 100755
--- a/indra/newview/llappearancemgr.h
+++ b/indra/newview/llappearancemgr.h
@@ -191,6 +191,9 @@ class LLAppearanceMgr: public LLSingleton<LLAppearanceMgr>
 
 	void incrementCofVersion(LLHTTPClient::ResponderPtr responder_ptr = NULL);
 
+	// *HACK Remove this after server side texture baking is deployed on all sims.
+	void incrementCofVersionLegacy();
+
 protected:
 	LLAppearanceMgr();
 	~LLAppearanceMgr();
diff --git a/indra/newview/llpaneleditwearable.cpp b/indra/newview/llpaneleditwearable.cpp
index 3e7db06bdf7..650e1809cf0 100644
--- a/indra/newview/llpaneleditwearable.cpp
+++ b/indra/newview/llpaneleditwearable.cpp
@@ -1028,33 +1028,43 @@ void LLPanelEditWearable::updatePanelPickerControls(LLWearableType::EType type)
         }
 }
 
+void LLPanelEditWearable::incrementCofVersionLegacy()
+{
+
+}
+
 void LLPanelEditWearable::saveChanges(bool force_save_as)
 {
-        if (!mWearablePtr || !isDirty())
-        {
-                // do nothing if no unsaved changes
-                return;
-        }
+	if (!mWearablePtr || !isDirty())
+	{
+			// do nothing if no unsaved changes
+			return;
+	}
 
-        U32 index = gAgentWearables.getWearableIndex(mWearablePtr);
+	U32 index = gAgentWearables.getWearableIndex(mWearablePtr);
 
-        std::string new_name = mNameEditor->getText();
-        if (force_save_as)
-        {
-                // the name of the wearable has changed, re-save wearable with new name
-                LLAppearanceMgr::instance().removeCOFItemLinks(mWearablePtr->getItemID());
-                gAgentWearables.saveWearableAs(mWearablePtr->getType(), index, new_name, FALSE);
-                mNameEditor->setText(mWearableItem->getName());
-        }
-        else
-        {
-                gAgentWearables.saveWearable(mWearablePtr->getType(), index, TRUE, new_name);
-        }
+	std::string new_name = mNameEditor->getText();
+	if (force_save_as)
+	{
+			// the name of the wearable has changed, re-save wearable with new name
+			LLAppearanceMgr::instance().removeCOFItemLinks(mWearablePtr->getItemID());
+			gAgentWearables.saveWearableAs(mWearablePtr->getType(), index, new_name, FALSE);
+			mNameEditor->setText(mWearableItem->getName());
+	}
+	else
+	{
+			gAgentWearables.saveWearable(mWearablePtr->getType(), index, TRUE, new_name);
+	}
 
-        if (gAgentAvatarp->isUsingServerBakes())
-        {
-        	LLAppearanceMgr::getInstance()->incrementCofVersion();
-        }
+	if (getRegion() && getRegion()->getCentralBakeVersion() > 0)
+	{
+		LLAppearanceMgr::getInstance()->incrementCofVersion();
+	}
+	else
+	{
+		// *HACK This should be removed when all regions support the IncrementCOFVersion capability.
+		incrementCofVersionLegacy();
+	}
 }
 
 void LLPanelEditWearable::revertChanges()
diff --git a/indra/newview/llpaneleditwearable.h b/indra/newview/llpaneleditwearable.h
index 50d5328a830..c5b44ecc9d8 100644
--- a/indra/newview/llpaneleditwearable.h
+++ b/indra/newview/llpaneleditwearable.h
@@ -113,6 +113,9 @@ class LLPanelEditWearable : public LLPanel
 
 	void setWearablePanelVisibilityChangeCallback(LLPanel* bodypart_panel);
 
+	// *HACK Remove this when serverside texture baking is available on all regions.
+	void incrementCofVersionLegacy();
+
 	// the pointer to the wearable we're editing. NULL means we're not editing a wearable.
 	LLViewerWearable *mWearablePtr;
 	LLViewerInventoryItem* mWearableItem;
-- 
GitLab


From f9b235adf87819a727a6d656736111b776021ffb Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Fri, 14 Dec 2012 01:24:32 +0000
Subject: [PATCH 208/436] Attempt at fixing linux shader support on ubuntu
 12.04

---
 indra/llwindow/llwindowsdl.cpp       | 11 +++--------
 indra/newview/linux_tools/wrapper.sh | 11 ++++++++++-
 2 files changed, 13 insertions(+), 9 deletions(-)

diff --git a/indra/llwindow/llwindowsdl.cpp b/indra/llwindow/llwindowsdl.cpp
index 39f8a36a6e2..2f397c63724 100644
--- a/indra/llwindow/llwindowsdl.cpp
+++ b/indra/llwindow/llwindowsdl.cpp
@@ -682,12 +682,7 @@ BOOL LLWindowSDL::createContext(int x, int y, int width, int height, int bits, B
 	// fixme: actually, it's REALLY important for picking that we get at
 	// least 8 bits each of red,green,blue.  Alpha we can be a bit more
 	// relaxed about if we have to.
-#if LL_SOLARIS && defined(__sparc)
-//  again the __sparc required because Xsun support, 32bit are very pricey on SPARC
-	if(colorBits < 24)		//HACK:  on SPARC allow 24-bit color
-#else
-	if (colorBits < 32)
-#endif
+	if(colorBits < 24)
 	{
 		close();
 		setupFailure(
@@ -697,9 +692,9 @@ BOOL LLWindowSDL::createContext(int x, int y, int width, int height, int bits, B
 			"You may also need to adjust the X11 setting in SMF.  To do so use\n"
 			"  'svccfg -s svc:/application/x11/x11-server setprop options/default_depth=24'\n"
 #else
-			"Second Life requires True Color (32-bit) to run in a window.\n"
+			"Second Life requires at least 24-bit color  to run in a window.\n"
 			"Please go to Control Panels -> Display -> Settings and\n"
-			"set the screen to 32-bit color.\n"
+			"set the screen to 24-bit color.\n"
 #endif
 			"Alternately, if you choose to run fullscreen, Second Life\n"
 			"will automatically adjust the screen each time it runs.",
diff --git a/indra/newview/linux_tools/wrapper.sh b/indra/newview/linux_tools/wrapper.sh
index 20936c6460b..0aba4bf0d6f 100755
--- a/indra/newview/linux_tools/wrapper.sh
+++ b/indra/newview/linux_tools/wrapper.sh
@@ -45,6 +45,7 @@ if [ "`uname -m`" = "x86_64" ]; then
     echo '64-bit Linux detected.'
 fi
 
+
 ## Everything below this line is just for advanced troubleshooters.
 ##-------------------------------------------------------------------
 
@@ -60,7 +61,15 @@ fi
 export SDL_VIDEO_X11_DGAMOUSE=0
 
 ## - Works around a problem with misconfigured 64-bit systems not finding GL
-export LIBGL_DRIVERS_PATH="${LIBGL_DRIVERS_PATH}":/usr/lib64/dri:/usr/lib32/dri:/usr/lib/dri
+I386_MULTIARCH="$(dpkg-architecture -ai386 -qDEB_HOST_MULTIARCH 2>/dev/null)"
+MULTIARCH_ERR=$?
+if [ $MULTIARCH_ERR -eq 0 ]; then
+    echo 'Multi-arch support detected.'
+    MULTIARCH_GL_DRIVERS="/usr/lib/${I386_MULTIARCH}/dri"
+    export LIBGL_DRIVERS_PATH="${LIBGL_DRIVERS_PATH}:${MULTIARCH_GL_DRIVERS}:/usr/lib64/dri:/usr/lib32/dri:/usr/lib/dri"
+else
+    export LIBGL_DRIVERS_PATH="${LIBGL_DRIVERS_PATH}:/usr/lib64/dri:/usr/lib32/dri:/usr/lib/dri"
+fi
 
 ## - The 'scim' GTK IM module widely crashes the viewer.  Avoid it.
 if [ "$GTK_IM_MODULE" = "scim" ]; then
-- 
GitLab


From ad80ebb869a8d1cdca70a726c2c46d41a6263c4e Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Fri, 14 Dec 2012 20:11:45 +0000
Subject: [PATCH 209/436] Updating shaders to not crash when compiled in llvm

---
 .../shaders/class1/lighting/lightFullbrightWaterAlphaMaskF.glsl | 2 +-
 .../shaders/class1/lighting/lightFullbrightWaterF.glsl          | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterAlphaMaskF.glsl
index 99a6fe85fe8..9c82056fd7f 100644
--- a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterAlphaMaskF.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterAlphaMaskF.glsl
@@ -31,7 +31,7 @@ out vec4 frag_color;
 
 uniform float minimum_alpha;
 
-vec4 diffuseLookup(vec2 texcoord);
+/* vec4 diffuseLookup(vec2 texcoord); */
 
 vec3 fullbrightAtmosTransport(vec3 light);
 vec4 applyWaterFog(vec4 color);
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterF.glsl
index df182168f3c..d3dacf9bc4d 100644
--- a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterF.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterF.glsl
@@ -32,7 +32,7 @@ out vec4 frag_color;
 VARYING vec4 vertex_color;
 VARYING vec2 vary_texcoord0;
 
-vec4 diffuseLookup(vec2 texcoord);
+/* vec4 diffuseLookup(vec2 texcoord); */
 
 vec3 fullbrightAtmosTransport(vec3 light);
 vec4 applyWaterFog(vec4 color);
-- 
GitLab


From ae19262bf63848af5a08ac201cf9c2ac55e85f62 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Fri, 14 Dec 2012 20:23:52 +0000
Subject: [PATCH 210/436] Reverting back to 32-bit colordepth requirement on
 linux

---
 indra/llwindow/llwindowsdl.cpp | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/indra/llwindow/llwindowsdl.cpp b/indra/llwindow/llwindowsdl.cpp
index 2f397c63724..39f8a36a6e2 100644
--- a/indra/llwindow/llwindowsdl.cpp
+++ b/indra/llwindow/llwindowsdl.cpp
@@ -682,7 +682,12 @@ BOOL LLWindowSDL::createContext(int x, int y, int width, int height, int bits, B
 	// fixme: actually, it's REALLY important for picking that we get at
 	// least 8 bits each of red,green,blue.  Alpha we can be a bit more
 	// relaxed about if we have to.
-	if(colorBits < 24)
+#if LL_SOLARIS && defined(__sparc)
+//  again the __sparc required because Xsun support, 32bit are very pricey on SPARC
+	if(colorBits < 24)		//HACK:  on SPARC allow 24-bit color
+#else
+	if (colorBits < 32)
+#endif
 	{
 		close();
 		setupFailure(
@@ -692,9 +697,9 @@ BOOL LLWindowSDL::createContext(int x, int y, int width, int height, int bits, B
 			"You may also need to adjust the X11 setting in SMF.  To do so use\n"
 			"  'svccfg -s svc:/application/x11/x11-server setprop options/default_depth=24'\n"
 #else
-			"Second Life requires at least 24-bit color  to run in a window.\n"
+			"Second Life requires True Color (32-bit) to run in a window.\n"
 			"Please go to Control Panels -> Display -> Settings and\n"
-			"set the screen to 24-bit color.\n"
+			"set the screen to 32-bit color.\n"
 #endif
 			"Alternately, if you choose to run fullscreen, Second Life\n"
 			"will automatically adjust the screen each time it runs.",
-- 
GitLab


From b86a3e39cf8d0d17d5cd30743a871e3078331077 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Mon, 17 Dec 2012 13:24:57 -0500
Subject: [PATCH 211/436] SH-3604 FIX - resolved an issue with simulated
 failures/retry logic

---
 indra/newview/llappearancemgr.cpp | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index f957aadec59..7fd7b33be4d 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -217,12 +217,12 @@ class LLCallAfterInventoryBatchMgr: public LLEventTimer
 		if (ll_frand()<gSavedSettings.getF32("InventoryDebugSimulateOpFailureRate"))
 		{
 			// simulate server failure by not sending the request.
-			return;
+			// do nothing
+			LL_DEBUGS("Avatar") << "simulating failure by not sending request for item " << item_id << " linked_id " << linked_id << llendl;
 		}
-		
-		if (!requestOperation(linked_id))
+		else if (!requestOperation(linked_id))
 		{
-			LL_DEBUGS("Avatar") << "item_id " << item_id << " linked_id " << linked_id << " not requested" << llendl;
+			LL_DEBUGS("Avatar") << "item_id " << item_id << " linked_id " << linked_id << " requestOperation false, skipping" << llendl;
 			return;
 		}
 
@@ -237,7 +237,6 @@ class LLCallAfterInventoryBatchMgr: public LLEventTimer
 		{
 			mRetryCounts[linked_id]++;
 		}
-
 	}
 
 	virtual bool requestOperation(const LLUUID& item_id) = 0;
-- 
GitLab


From fb99b1a1b4c40932af1e3fbe4b3e371a87ad4c8f Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Mon, 17 Dec 2012 16:51:25 -0500
Subject: [PATCH 212/436] SH-3629 WIP - fixed out-of-order outfit items

---
 indra/newview/llappearancemgr.cpp | 32 +++++++++----------------------
 1 file changed, 9 insertions(+), 23 deletions(-)

diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 7fd7b33be4d..7751da7b414 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -198,44 +198,30 @@ class LLCallAfterInventoryBatchMgr: public LLEventTimer
 	// Request or re-request operation for specified item.
 	void addItem(const LLUUID& item_id)
 	{
-		LLUUID linked_id;
-		if (gInventory.getItem(item_id))
-		{
-			linked_id = gInventory.getItem(item_id)->getLinkedUUID();
-		}
-		else if (gInventory.getCategory(item_id))
-		{
-			linked_id = item_id;
-		}
-		else
-		{
-			llwarns << "no referent found for item_id " << item_id << llendl;
-			return;
-		}
-		LL_DEBUGS("Avatar") << "item_id " << item_id << " -> linked_id " << linked_id << llendl;
+		LL_DEBUGS("Avatar") << "item_id " << item_id << llendl;
 		
 		if (ll_frand()<gSavedSettings.getF32("InventoryDebugSimulateOpFailureRate"))
 		{
 			// simulate server failure by not sending the request.
 			// do nothing
-			LL_DEBUGS("Avatar") << "simulating failure by not sending request for item " << item_id << " linked_id " << linked_id << llendl;
+			LL_DEBUGS("Avatar") << "simulating failure by not sending request for item " << item_id << llendl;
 		}
-		else if (!requestOperation(linked_id))
+		else if (!requestOperation(item_id))
 		{
-			LL_DEBUGS("Avatar") << "item_id " << item_id << " linked_id " << linked_id << " requestOperation false, skipping" << llendl;
+			LL_DEBUGS("Avatar") << "item_id " << item_id << " requestOperation false, skipping" << llendl;
 			return;
 		}
 
 		mPendingRequests++;
 		// On a re-request, this will reset the timer.
-		mWaitTimes[linked_id] = LLTimer();
-		if (mRetryCounts.find(linked_id) == mRetryCounts.end())
+		mWaitTimes[item_id] = LLTimer();
+		if (mRetryCounts.find(item_id) == mRetryCounts.end())
 		{
-			mRetryCounts[linked_id] = 0;
+			mRetryCounts[item_id] = 0;
 		}
 		else
 		{
-			mRetryCounts[linked_id]++;
+			mRetryCounts[item_id]++;
 		}
 	}
 
@@ -435,7 +421,7 @@ class LLCallAfterInventoryLinkMgr: public LLCallAfterInventoryBatchMgr
 			LL_DEBUGS("Avatar") << "linking item " << item_id << " name " << item->getName() << " to " << mDstCatID << llendl;
 			// create an inventory item link.
 			link_inventory_item(gAgent.getID(),
-								item_id,
+								item->getLinkedUUID(),
 								mDstCatID,
 								item->getName(),
 								item->LLInventoryItem::getDescription(),
-- 
GitLab


From 42496cd672436cc4d32f5546fd04294931b8f0b6 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Mon, 17 Dec 2012 18:34:13 -0500
Subject: [PATCH 213/436] SH-3629 WIP - avoid clobbering links to desired items
 that are already in the COF, as will be the case when wearing an outfit with
 required body parts missing

---
 indra/newview/llappearancemgr.cpp | 49 ++++++++++++++++---------------
 indra/newview/llappearancemgr.h   |  3 +-
 2 files changed, 26 insertions(+), 26 deletions(-)

diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 7751da7b414..1044732f4b6 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -418,6 +418,11 @@ class LLCallAfterInventoryLinkMgr: public LLCallAfterInventoryBatchMgr
 		LLViewerInventoryItem *item = gInventory.getItem(item_id);
 		if (item)
 		{
+			if (item->getParentUUID() == mDstCatID)
+			{
+				LL_DEBUGS("Avatar") << "item " << item_id << " name " << item->getName() << " is already a child of " << mDstCatID << llendl;
+				return false;
+			}
 			LL_DEBUGS("Avatar") << "linking item " << item_id << " name " << item->getName() << " to " << mDstCatID << llendl;
 			// create an inventory item link.
 			link_inventory_item(gAgent.getID(),
@@ -436,7 +441,7 @@ class LLCallAfterInventoryLinkMgr: public LLCallAfterInventoryBatchMgr
 			LLViewerInventoryCategory *catp = gInventory.getCategory(item_id);
 			if (!catp)
 			{
-				llwarns << "id not found as inventory item or category " << item_id << llendl;
+				llwarns << "link request failed, id not found as inventory item or category " << item_id << llendl;
 				return false;
 			}
 			const LLUUID cof = LLAppearanceMgr::instance().getCOF();
@@ -1621,7 +1626,7 @@ void LLAppearanceMgr::purgeBaseOutfitLink(const LLUUID& category)
 	}
 }
 
-void LLAppearanceMgr::purgeCategory(const LLUUID& category, bool keep_outfit_links)
+void LLAppearanceMgr::purgeCategory(const LLUUID& category, bool keep_outfit_links, LLInventoryModel::item_array_t* keep_items)
 {
 	LLInventoryModel::cat_array_t cats;
 	LLInventoryModel::item_array_t items;
@@ -1634,7 +1639,14 @@ void LLAppearanceMgr::purgeCategory(const LLUUID& category, bool keep_outfit_lin
 			continue;
 		if (item->getIsLinkType())
 		{
-			gInventory.purgeObject(item->getUUID());
+			if (keep_items && keep_items->find(item) != LLInventoryModel::item_array_t::FAIL)
+			{
+				llinfos << "preserved item" << llendl;
+			}
+			else
+			{
+				gInventory.purgeObject(item->getUUID());
+			}
 		}
 	}
 }
@@ -1746,34 +1758,23 @@ void LLAppearanceMgr::updateCOF(const LLUUID& category, bool append)
 	getDescendentsOfAssetType(category, gest_items, LLAssetType::AT_GESTURE, false);
 	removeDuplicateItems(gest_items);
 	
-#ifndef LL_RELEASE_FOR_DOWNLOAD
-	LL_DEBUGS("Avatar") << self_av_string() << "Linking body items" << LL_ENDL;
-#endif
-
 	// Create links to new COF contents.
 	LL_DEBUGS("Avatar") << self_av_string() << "creating LLCallAfterInventoryLinkMgr" << LL_ENDL;
+
+	LLInventoryModel::item_array_t all_items;
+	all_items += body_items;
+	all_items += wear_items;
+	all_items += obj_items;
+	all_items += gest_items;
+
+	// Will link all the above items.
 	bool update_base_outfit_ordering = !append;
 	LLCallAfterInventoryLinkMgr *link_waiter =
-		new LLCallAfterInventoryLinkMgr(body_items,cof,"update_appearance_on_destroy",
+		new LLCallAfterInventoryLinkMgr(all_items,cof,"update_appearance_on_destroy",
 										boost::bind(&LLAppearanceMgr::updateAppearanceFromCOF,
 													LLAppearanceMgr::getInstance(),
 													update_base_outfit_ordering));
 
-#ifndef LL_RELEASE_FOR_DOWNLOAD
-	LL_DEBUGS("Avatar") << self_av_string() << "Linking wear items" << LL_ENDL;
-#endif
-	link_waiter->addItems(wear_items);
-
-#ifndef LL_RELEASE_FOR_DOWNLOAD
-	LL_DEBUGS("Avatar") << self_av_string() << "Linking obj items" << LL_ENDL;
-#endif
-	link_waiter->addItems(obj_items);
-
-#ifndef LL_RELEASE_FOR_DOWNLOAD
-	LL_DEBUGS("Avatar") << self_av_string() << "Linking gesture items" << LL_ENDL;
-#endif
-	link_waiter->addItems(gest_items);
-
 	// Add link to outfit if category is an outfit. 
 	if (!append)
 	{
@@ -1785,7 +1786,7 @@ void LLAppearanceMgr::updateCOF(const LLUUID& category, bool append)
 	// carried over (e.g. keeping old shape if the new outfit does not
 	// contain one)
 	bool keep_outfit_links = append;
-	purgeCategory(cof, keep_outfit_links);
+	purgeCategory(cof, keep_outfit_links, &all_items);
 	gInventory.notifyObservers();
 
 	LL_DEBUGS("Avatar") << self_av_string() << "waiting for LLUpdateAppearanceOnDestroy" << LL_ENDL;
diff --git a/indra/newview/llappearancemgr.h b/indra/newview/llappearancemgr.h
index cb271cda4df..31dbce892a4 100755
--- a/indra/newview/llappearancemgr.h
+++ b/indra/newview/llappearancemgr.h
@@ -206,8 +206,7 @@ class LLAppearanceMgr: public LLSingleton<LLAppearanceMgr>
 								   LLInventoryModel::item_array_t& gest_items,
 								   bool follow_folder_links);
 
-	void purgeCategory(const LLUUID& category, bool keep_outfit_links);
-
+	void purgeCategory(const LLUUID& category, bool keep_outfit_links, LLInventoryModel::item_array_t* keep_items = NULL);
 	static void onOutfitRename(const LLSD& notification, const LLSD& response);
 
 	void setOutfitLocked(bool locked);
-- 
GitLab


From 67c66a12ab0e169e9e1e86265ff57aa5aa758b2a Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Tue, 18 Dec 2012 12:45:10 -0500
Subject: [PATCH 214/436] SH-3604 WIP - fixed a case with retry logic

---
 indra/newview/llappearancemgr.cpp | 27 ++++++++++++++++++---------
 1 file changed, 18 insertions(+), 9 deletions(-)

diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 1044732f4b6..4a484f3b85a 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -199,14 +199,8 @@ class LLCallAfterInventoryBatchMgr: public LLEventTimer
 	void addItem(const LLUUID& item_id)
 	{
 		LL_DEBUGS("Avatar") << "item_id " << item_id << llendl;
-		
-		if (ll_frand()<gSavedSettings.getF32("InventoryDebugSimulateOpFailureRate"))
-		{
-			// simulate server failure by not sending the request.
-			// do nothing
-			LL_DEBUGS("Avatar") << "simulating failure by not sending request for item " << item_id << llendl;
-		}
-		else if (!requestOperation(item_id))
+
+		if (!requestOperation(item_id))
 		{
 			LL_DEBUGS("Avatar") << "item_id " << item_id << " requestOperation false, skipping" << llendl;
 			return;
@@ -384,6 +378,11 @@ class LLCallAfterInventoryCopyMgr: public LLCallAfterInventoryBatchMgr
 		LLViewerInventoryItem *item = gInventory.getItem(item_id);
 		llassert(item);
 		LL_DEBUGS("Avatar") << "copying item " << item_id << llendl;
+		if (ll_frand() < gSavedSettings.getF32("InventoryDebugSimulateOpFailureRate"))
+		{
+			LL_DEBUGS("Avatar") << "simulating failure by not sending request for item " << item_id << llendl;
+			return true;
+		}
 		copy_inventory_item(
 			gAgent.getID(),
 			item->getPermissions().getOwner(),
@@ -425,6 +424,11 @@ class LLCallAfterInventoryLinkMgr: public LLCallAfterInventoryBatchMgr
 			}
 			LL_DEBUGS("Avatar") << "linking item " << item_id << " name " << item->getName() << " to " << mDstCatID << llendl;
 			// create an inventory item link.
+			if (ll_frand() < gSavedSettings.getF32("InventoryDebugSimulateOpFailureRate"))
+			{
+				LL_DEBUGS("Avatar") << "simulating failure by not sending request for item " << item_id << llendl;
+				return true;
+			}
 			link_inventory_item(gAgent.getID(),
 								item->getLinkedUUID(),
 								mDstCatID,
@@ -433,7 +437,7 @@ class LLCallAfterInventoryLinkMgr: public LLCallAfterInventoryBatchMgr
 								LLAssetType::AT_LINK,
 								new LLBoostFuncInventoryCallback(
 									boost::bind(&LLCallAfterInventoryBatchMgr::onOp,this,item_id,_1,LLTimer())));
-			request_sent = true;
+			return true;
 		}
 		else
 		{
@@ -451,6 +455,11 @@ class LLCallAfterInventoryLinkMgr: public LLCallAfterInventoryBatchMgr
 
 			if (catp && catp->getPreferredType() == LLFolderType::FT_OUTFIT)
 			{
+				if (ll_frand() < gSavedSettings.getF32("InventoryDebugSimulateOpFailureRate"))
+				{
+					LL_DEBUGS("Avatar") << "simulating failure by not sending request for item " << item_id << llendl;
+					return true;
+				}
 				LL_DEBUGS("Avatar") << "linking folder " << item_id << " name " << catp->getName() << " to cof " << cof << llendl;
 				link_inventory_item(gAgent.getID(), item_id, cof, catp->getName(), "",
 									LLAssetType::AT_LINK_FOLDER, 
-- 
GitLab


From cd710087817909a0a83289cd1ee6a39e5e9a1a5c Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Tue, 18 Dec 2012 13:07:01 -0500
Subject: [PATCH 215/436] SH-3604 WIP - more frequent polling for retries

---
 indra/newview/llappearancemgr.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 4a484f3b85a..8b4adc87857 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -175,7 +175,7 @@ class LLCallAfterInventoryBatchMgr: public LLEventTimer
 		mFailCount(0),
 		mCompletionOrFailureCalled(false),
 		mRetryCount(0),
-		LLEventTimer(retry_after)
+		LLEventTimer(5.0)
 	{
 		if (!mTrackingPhase.empty())
 		{
-- 
GitLab


From 802e738b77f09a67c893825dc8699f8273cebbee Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Tue, 18 Dec 2012 23:40:31 +0000
Subject: [PATCH 216/436] Fix for alpha blending using gl fixed-functions not
 matching shader implementation

---
 indra/llappearance/lltexlayer.cpp | 16 +++++++++++++---
 indra/llimage/llimage.cpp         | 23 +++++++++++++++++++++++
 indra/llimage/llimage.h           |  5 +++++
 3 files changed, 41 insertions(+), 3 deletions(-)

diff --git a/indra/llappearance/lltexlayer.cpp b/indra/llappearance/lltexlayer.cpp
index d1edd4f095b..6e184beac81 100644
--- a/indra/llappearance/lltexlayer.cpp
+++ b/indra/llappearance/lltexlayer.cpp
@@ -150,6 +150,10 @@ BOOL LLTexLayerSetBuffer::renderTexLayerSet()
 		gAlphaMaskProgram.bind();
 		gAlphaMaskProgram.setMinimumAlpha(0.004f);
 	}
+	else
+	{
+		gGL.setAlphaRejectSettings(LLRender::CF_GREATER, 0.00f);
+	}
 
 	LLVertexBuffer::unbind();
 
@@ -1915,9 +1919,15 @@ LLGLTexture* LLTexLayerStaticImageList::getTexture(const std::string& file_name,
 		{
 			if( (image_raw->getComponents() == 1) && is_mask )
 			{
-				// Note: these are static, unchanging images so it's ok to assume
-				// that once an image is a mask it's always a mask.
-				tex->setExplicitFormat( GL_ALPHA8, GL_ALPHA );
+				// Convert grayscale alpha masks from single channel into RGBA.
+				// Fill RGB with black to allow fixed function gl calls
+				// to match shader implementation.
+				LLPointer<LLImageRaw> alpha_image_raw = image_raw;
+				image_raw = new LLImageRaw(image_raw->getWidth(),
+										   image_raw->getHeight(),
+										   4);
+
+				image_raw->copyUnscaledAlphaMask(alpha_image_raw, LLColor4U::black);
 			}
 			tex->createGLTexture(0, image_raw, 0, TRUE, LLGLTexture::LOCAL);
 
diff --git a/indra/llimage/llimage.cpp b/indra/llimage/llimage.cpp
index 916c346b7a3..79949df2d09 100644
--- a/indra/llimage/llimage.cpp
+++ b/indra/llimage/llimage.cpp
@@ -673,6 +673,29 @@ void LLImageRaw::compositeUnscaled4onto3( LLImageRaw* src )
 	}
 }
 
+void LLImageRaw::copyUnscaledAlphaMask( LLImageRaw* src, const LLColor4U& fill)
+{
+	LLImageRaw* dst = this;  // Just for clarity.
+
+	llassert( 1 == src->getComponents() );
+	llassert( 4 == dst->getComponents() );
+	llassert( (src->getWidth() == dst->getWidth()) && (src->getHeight() == dst->getHeight()) );
+
+	S32 pixels = getWidth() * getHeight();
+	U8* src_data = src->getData();
+	U8* dst_data = dst->getData();
+	for ( S32 i = 0; i < pixels; i++ )
+	{
+		dst_data[0] = fill.mV[0];
+		dst_data[1] = fill.mV[1];
+		dst_data[2] = fill.mV[2];
+		dst_data[3] = src_data[0];
+		src_data += 1;
+		dst_data += 4;
+	}
+}
+
+
 // Fill the buffer with a constant color
 void LLImageRaw::fill( const LLColor4U& color )
 {
diff --git a/indra/llimage/llimage.h b/indra/llimage/llimage.h
index 5f545850058..2d98f02aa62 100644
--- a/indra/llimage/llimage.h
+++ b/indra/llimage/llimage.h
@@ -230,6 +230,11 @@ class LLImageRaw : public LLImageBase
 	// Src and dst are same size.  Src has 3 components.  Dst has 4 components.
 	void copyUnscaled3onto4( LLImageRaw* src );
 
+	// Src and dst are same size.  Src has 1 component.  Dst has 4 components.
+	// Alpha component is set to source alpha mask component.
+	// RGB components are set to fill color.
+	void copyUnscaledAlphaMask( LLImageRaw* src, const LLColor4U& fill);
+
 	// Src and dst can be any size.  Src and dst have same number of components.
 	void copyScaled( LLImageRaw* src );
 
-- 
GitLab


From cbf24c55d511b2390fdc4c12698682531f26f41b Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Thu, 20 Dec 2012 10:27:18 -0500
Subject: [PATCH 217/436] SH-3344 WIP - additional debugging output for avatar
 local textures

---
 indra/llrender/llgltexture.h      | 19 ++++---
 indra/newview/llviewertexture.cpp |  1 +
 indra/newview/llviewertexture.h   |  2 +
 indra/newview/llvoavatar.cpp      |  4 +-
 indra/newview/llvoavatarself.cpp  | 85 +++++++++++++++++++++++++++++++
 indra/newview/llvoavatarself.h    |  1 +
 6 files changed, 103 insertions(+), 9 deletions(-)

diff --git a/indra/llrender/llgltexture.h b/indra/llrender/llgltexture.h
index b1efe77519c..e69b322d605 100644
--- a/indra/llrender/llgltexture.h
+++ b/indra/llrender/llgltexture.h
@@ -79,6 +79,15 @@ class LLGLTexture : public LLTexture
 		MAX_GL_IMAGE_CATEGORY
 	};
 
+	typedef enum 
+	{
+		DELETED = 0,         //removed from memory
+		DELETION_CANDIDATE,  //ready to be removed from memory
+		INACTIVE,            //not be used for the last certain period (i.e., 30 seconds).
+		ACTIVE,              //just being used, can become inactive if not being used for a certain time (10 seconds).
+		NO_DELETE = 99       //stay in memory, can not be removed.
+	} LLGLTextureState;
+
 	static S32 getTotalNumOfCategories() ;
 	static S32 getIndexFromCategory(S32 category) ;
 	static S32 getCategoryFromIndex(S32 index) ;
@@ -143,6 +152,8 @@ class LLGLTexture : public LLTexture
 	U32        getTexelsInGLTexture() const ;
 	BOOL       isGLTextureCreated() const ;
 	S32        getDiscardLevelInAtlas() const ;
+	LLGLTextureState getTextureState() const { return mTextureState; }
+	
 	//---------------------------------------------------------------------------------------------
 	//end of functions to access LLImageGL
 	//---------------------------------------------------------------------------------------------
@@ -179,14 +190,6 @@ class LLGLTexture : public LLTexture
 	S8 mDontDiscard;			// Keep full res version of this image (for UI, etc)
 
 protected:
-	typedef enum 
-	{
-		DELETED = 0,         //removed from memory
-		DELETION_CANDIDATE,  //ready to be removed from memory
-		INACTIVE,            //not be used for the last certain period (i.e., 30 seconds).
-		ACTIVE,              //just being used, can become inactive if not being used for a certain time (10 seconds).
-		NO_DELETE = 99       //stay in memory, can not be removed.
-	} LLGLTextureState;
 	LLGLTextureState  mTextureState ;
 
 
diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp
index 846216211e6..a673862882d 100755
--- a/indra/newview/llviewertexture.cpp
+++ b/indra/newview/llviewertexture.cpp
@@ -616,6 +616,7 @@ LLViewerTexture::LLViewerTexture(const LLImageRaw* raw, BOOL usemipmaps) :
 
 LLViewerTexture::~LLViewerTexture()
 {
+	// LL_DEBUGS("Avatar") << mID << llendl;
 	cleanup();
 	sImageCount--;
 }
diff --git a/indra/newview/llviewertexture.h b/indra/newview/llviewertexture.h
index 3df942d922e..ba6beec883c 100755
--- a/indra/newview/llviewertexture.h
+++ b/indra/newview/llviewertexture.h
@@ -134,6 +134,7 @@ class LLViewerTexture : public LLGLTexture
 	void resetTextureStats();	
 	void setMaxVirtualSizeResetInterval(S32 interval)const {mMaxVirtualSizeResetInterval = interval;}
 	void resetMaxVirtualSizeResetCounter()const {mMaxVirtualSizeResetCounter = mMaxVirtualSizeResetInterval;}
+	S32 getMaxVirtualSizeResetCounter() const { return mMaxVirtualSizeResetCounter; }
 
 	virtual F32  getMaxVirtualSize() ;
 
@@ -306,6 +307,7 @@ class LLViewerFetchedTexture : public LLViewerTexture
 	// the priority list, and cause horrible things to happen.
 	void setDecodePriority(F32 priority = -1.0f);
 	F32 getDecodePriority() const { return mDecodePriority; };
+	F32 getAdditionalDecodePriority() const { return mAdditionalDecodePriority; };
 
 	void setAdditionalDecodePriority(F32 priority) ;
 	
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 117f28cc366..086e4306f82 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -5811,6 +5811,7 @@ void LLVOAvatar::debugColorizeSubMeshes(U32 i, const LLColor4& color)
 // virtual
 void LLVOAvatar::updateMeshTextures()
 {
+	static S32 update_counter = 0;
 	mBakedTextureDebugText.clear();
 	
 	// if user has never specified a texture, assign the default
@@ -5840,7 +5841,8 @@ void LLVOAvatar::updateMeshTextures()
 	std::vector<BOOL> use_lkg_baked_layer; // lkg = "last known good"
 	use_lkg_baked_layer.resize(mBakedTextureDatas.size(), false);
 
-	mBakedTextureDebugText +=          "indx layerset linvld ltda ilb ulkg ltid\n";
+	mBakedTextureDebugText += llformat("%06d\n",update_counter++);
+	mBakedTextureDebugText += "indx layerset linvld ltda ilb ulkg ltid\n";
 	for (U32 i=0; i < mBakedTextureDatas.size(); i++)
 	{
 		is_layer_baked[i] = isTextureDefined(mBakedTextureDatas[i].mTextureIndex);
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index 77deb5e3bcb..674988d94b4 100755
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -176,6 +176,17 @@ LLVOAvatarSelf::LLVOAvatarSelf(const LLUUID& id,
 	lldebugs << "Marking avatar as self " << id << llendl;
 }
 
+// Called periodically for diagnostics, return true when done.
+bool output_texture_diagnostics()
+{
+	if (!isAgentAvatarValid())
+		return true; // done checking
+
+	gAgentAvatarp->outputRezDiagnostics();
+
+	return false;
+}
+
 void LLVOAvatarSelf::initInstance()
 {
 	BOOL status = TRUE;
@@ -209,6 +220,8 @@ void LLVOAvatarSelf::initInstance()
 		llerrs << "Unable to load user's avatar" << llendl;
 		return;
 	}
+
+	//doPeriodically(output_texture_diagnostics, 30.0);
 }
 
 // virtual
@@ -2008,6 +2021,64 @@ void LLVOAvatarSelf::debugBakedTextureUpload(EBakedTextureIndex index, BOOL fini
 	mDebugBakedTextureTimes[index][done] = mDebugSelfLoadTimer.getElapsedTimeF32();
 }
 
+const std::string LLVOAvatarSelf::verboseDebugDumpLocalTextureDataInfo(const LLViewerTexLayerSet* layerset) const
+{
+	std::ostringstream outbuf;
+	for (LLAvatarAppearanceDictionary::BakedTextures::const_iterator baked_iter =
+			 LLAvatarAppearanceDictionary::getInstance()->getBakedTextures().begin();
+		 baked_iter != LLAvatarAppearanceDictionary::getInstance()->getBakedTextures().end();
+		 ++baked_iter)
+	{
+		const EBakedTextureIndex baked_index = baked_iter->first;
+		if (layerset == mBakedTextureDatas[baked_index].mTexLayerSet)
+		{
+			outbuf << "baked_index: " << baked_index << "\n";
+			const LLAvatarAppearanceDictionary::BakedEntry *baked_dict = baked_iter->second;
+			for (texture_vec_t::const_iterator local_tex_iter = baked_dict->mLocalTextures.begin();
+				 local_tex_iter != baked_dict->mLocalTextures.end();
+				 ++local_tex_iter)
+			{
+				const ETextureIndex tex_index = *local_tex_iter;
+				outbuf << "  tex_index " << (S32) tex_index << "\n";
+				const LLWearableType::EType wearable_type = LLAvatarAppearanceDictionary::getTEWearableType(tex_index);
+				const U32 wearable_count = gAgentWearables.getWearableCount(wearable_type);
+				if (wearable_count > 0)
+				{
+					for (U32 wearable_index = 0; wearable_index < wearable_count; wearable_index++)
+					{
+						outbuf << "    " << LLWearableType::getTypeName(wearable_type) << " " << wearable_index << "\n";
+						const LLLocalTextureObject *local_tex_obj = getLocalTextureObject(tex_index, wearable_index);
+						if (local_tex_obj)
+						{
+							LLViewerFetchedTexture* image = dynamic_cast<LLViewerFetchedTexture*>( local_tex_obj->getImage() );
+							if (tex_index >= 0
+								&& local_tex_obj->getID() != IMG_DEFAULT_AVATAR
+								&& !image->isMissingAsset())
+							{
+								outbuf << "      id: " << image->getID()
+									   << " refs: " << image->getNumRefs()
+									   << " glocdisc: " << getLocalDiscardLevel(tex_index, wearable_index)
+									   << " discard: " << image->getDiscardLevel()
+									   << " desired: " << image->getDesiredDiscardLevel()
+									   << " decode: " << image->getDecodePriority()
+									   << " addl: " << image->getAdditionalDecodePriority()
+									   << " ts: " << image->getTextureState()
+									   << " bl: " << image->getBoostLevel()
+									   << " fl: " << image->isFullyLoaded() // this is not an accessor for mFullyLoaded - see comment there.
+									   << " mvs: " << image->getMaxVirtualSize()
+									   << " mvsc: " << image->getMaxVirtualSizeResetCounter()
+									   << "\n";
+							}
+						}
+					}
+				}
+			}
+			break;
+		}
+	}
+	return outbuf.str();
+}
+
 const std::string LLVOAvatarSelf::debugDumpLocalTextureDataInfo(const LLViewerTexLayerSet* layerset) const
 {
 	std::string text="";
@@ -2282,6 +2353,7 @@ void LLVOAvatarSelf::addLocalTextureStats( ETextureIndex type, LLViewerFetchedTe
 		F32 desired_pixels;
 		desired_pixels = llmin(mPixelArea, (F32)getTexImageArea());
 
+		// DRANO what priority should wearable-based textures have?
 		if (isUsingLocalAppearance())
 		{
 			imagep->setBoostLevel(getAvatarBoostLevel());
@@ -2466,6 +2538,19 @@ void LLVOAvatarSelf::outputRezDiagnostics() const
 		if (!layerset_buffer) continue;
 		LL_DEBUGS("Avatar") << layerset_buffer->dumpTextureInfo() << llendl;
 	}
+	std::string vd_text = "Local textures per baked index and wearable:\n";
+	for (LLAvatarAppearanceDefines::LLAvatarAppearanceDictionary::BakedTextures::const_iterator baked_iter = LLAvatarAppearanceDefines::LLAvatarAppearanceDictionary::getInstance()->getBakedTextures().begin();
+		 baked_iter != LLAvatarAppearanceDefines::LLAvatarAppearanceDictionary::getInstance()->getBakedTextures().end();
+		 ++baked_iter)
+	{
+		const LLAvatarAppearanceDefines::EBakedTextureIndex baked_index = baked_iter->first;
+		const LLViewerTexLayerSet *layerset = debugGetLayerSet(baked_index);
+		if (!layerset) continue;
+		const LLViewerTexLayerSetBuffer *layerset_buffer = layerset->getViewerComposite();
+		if (!layerset_buffer) continue;
+		vd_text += verboseDebugDumpLocalTextureDataInfo(layerset);
+	}
+	LL_DEBUGS("Avatar") << vd_text << llendl;
 }
 
 void LLVOAvatarSelf::outputRezTiming(const std::string& msg) const
diff --git a/indra/newview/llvoavatarself.h b/indra/newview/llvoavatarself.h
index eeac5ddaeb7..02612b83da2 100755
--- a/indra/newview/llvoavatarself.h
+++ b/indra/newview/llvoavatarself.h
@@ -390,6 +390,7 @@ class LLVOAvatarSelf :
 	BOOL					isAllLocalTextureDataFinal() const;
 
 	const LLViewerTexLayerSet*	debugGetLayerSet(LLAvatarAppearanceDefines::EBakedTextureIndex index) const { return (LLViewerTexLayerSet*)(mBakedTextureDatas[index].mTexLayerSet); }
+	const std::string		verboseDebugDumpLocalTextureDataInfo(const LLViewerTexLayerSet* layerset) const; // Lists out state of this particular baked texture layer
 	const std::string		debugDumpLocalTextureDataInfo(const LLViewerTexLayerSet* layerset) const; // Lists out state of this particular baked texture layer
 	const std::string		debugDumpAllLocalTextureDataInfo() const; // Lists out which baked textures are at highest LOD
 	LLSD					metricsData();
-- 
GitLab


From 2f7901ab929e90748e38734555cb861a2645f256 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Thu, 20 Dec 2012 21:33:30 +0000
Subject: [PATCH 218/436] Skipping rendering of unneeded morph masks

---
 indra/llappearance/lltexlayer.cpp | 34 ++++++++++++++++++++++---------
 indra/llappearance/lltexlayer.h   |  2 +-
 2 files changed, 25 insertions(+), 11 deletions(-)

diff --git a/indra/llappearance/lltexlayer.cpp b/indra/llappearance/lltexlayer.cpp
index 6e184beac81..15d531259fb 100644
--- a/indra/llappearance/lltexlayer.cpp
+++ b/indra/llappearance/lltexlayer.cpp
@@ -1136,7 +1136,8 @@ BOOL LLTexLayer::render(S32 x, S32 y, S32 width, S32 height)
 			}
 		}//*/
 
-		renderMorphMasks(x, y, width, height, net_color);
+		const bool force_render = true;
+		renderMorphMasks(x, y, width, height, net_color, force_render);
 		alpha_mask_specified = TRUE;
 		gGL.flush();
 		gGL.blendFunc(LLRender::BF_DEST_ALPHA, LLRender::BF_ONE_MINUS_DEST_ALPHA);
@@ -1385,8 +1386,13 @@ BOOL LLTexLayer::blendAlphaTexture(S32 x, S32 y, S32 width, S32 height)
 }
 
 static LLFastTimer::DeclareTimer FTM_RENDER_MORPH_MASKS("renderMorphMasks");
-BOOL LLTexLayer::renderMorphMasks(S32 x, S32 y, S32 width, S32 height, const LLColor4 &layer_color)
+void LLTexLayer::renderMorphMasks(S32 x, S32 y, S32 width, S32 height, const LLColor4 &layer_color, bool force_render)
 {
+	if (!force_render && !hasMorph())
+	{
+		lldebugs << "skipping renderMorphMasks for " << getUUID() << llendl;
+		return;
+	}
 	LLFastTimer t(FTM_RENDER_MORPH_MASKS);
 	BOOL success = TRUE;
 
@@ -1423,6 +1429,11 @@ BOOL LLTexLayer::renderMorphMasks(S32 x, S32 y, S32 width, S32 height, const LLC
 	{
 		LLTexLayerParamAlpha* param = *iter;
 		success &= param->render( x, y, width, height );
+		if (!success && !force_render)
+		{
+			lldebugs << "Failed to render param " << param->getID() << " ; skipping morph mask." << llendl;
+			return;
+		}
 	}
 
 	// Approximates a min() function
@@ -1448,25 +1459,29 @@ BOOL LLTexLayer::renderMorphMasks(S32 x, S32 y, S32 width, S32 height, const LLC
 		}
 	}
 
-	if( !getInfo()->mStaticImageFileName.empty() )
+	if( !getInfo()->mStaticImageFileName.empty() && getInfo()->mStaticImageIsMask )
 	{
 		LLGLTexture* tex = LLTexLayerStaticImageList::getInstance()->getTexture(getInfo()->mStaticImageFileName, getInfo()->mStaticImageIsMask);
 		if( tex )
 		{
-			if(	(tex->getComponents() == 4) ||
-				( (tex->getComponents() == 1) && getInfo()->mStaticImageIsMask ) )
+			if(	(tex->getComponents() == 4) || (tex->getComponents() == 1) )
 			{
 				LLGLSNoAlphaTest gls_no_alpha_test;
 				gGL.getTexUnit(0)->bind(tex, TRUE);
 				gl_rect_2d_simple_tex( width, height );
 				gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
 			}
+			else
+			{
+				llwarns << "Skipping rendering of " << getInfo()->mStaticImageFileName 
+						<< "; expected 1 or 4 components." << llendl;
+			}
 		}
 	}
 
 	// Draw a rectangle with the layer color to multiply the alpha by that color's alpha.
 	// Note: we're still using gGL.blendFunc( GL_DST_ALPHA, GL_ZERO );
-	if (layer_color.mV[VW] != 1.f)
+	if ( !is_approx_equal(layer_color.mV[VW], 1.f) )
 	{
 		LLGLDisable no_alpha(GL_ALPHA_TEST);
 		gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
@@ -1519,8 +1534,6 @@ BOOL LLTexLayer::renderMorphMasks(S32 x, S32 y, S32 width, S32 height, const LLC
 		mMorphMasksValid = TRUE;
 		getTexLayerSet()->applyMorphMask(alpha_data, width, height, 1);
 	}
-
-	return success;
 }
 
 static LLFastTimer::DeclareTimer FTM_ADD_ALPHA_MASK("addAlphaMask");
@@ -1535,7 +1548,8 @@ void LLTexLayer::addAlphaMask(U8 *data, S32 originX, S32 originY, S32 width, S32
 		findNetColor( &net_color );
 		// TODO: eliminate need for layer morph mask valid flag
 		invalidateMorphMasks();
-		renderMorphMasks(originX, originY, width, height, net_color);
+		const bool force_render = false;
+		renderMorphMasks(originX, originY, width, height, net_color, force_render);
 		alphaData = getAlphaData();
 	}
 	if (alphaData)
@@ -1544,7 +1558,7 @@ void LLTexLayer::addAlphaMask(U8 *data, S32 originX, S32 originY, S32 width, S32
 		{
 			U8 curAlpha = data[i];
 			U16 resultAlpha = curAlpha;
-			resultAlpha *= (alphaData[i] + 1);
+			resultAlpha *= ( ((U16)alphaData[i]) + 1);
 			resultAlpha = resultAlpha >> 8;
 			data[i] = (U8)resultAlpha;
 		}
diff --git a/indra/llappearance/lltexlayer.h b/indra/llappearance/lltexlayer.h
index 405d2c7df42..959d6e499ab 100644
--- a/indra/llappearance/lltexlayer.h
+++ b/indra/llappearance/lltexlayer.h
@@ -160,7 +160,7 @@ class LLTexLayer : public LLTexLayerInterface
 	BOOL					findNetColor(LLColor4* color) const;
 	/*virtual*/ BOOL		blendAlphaTexture(S32 x, S32 y, S32 width, S32 height); // Multiplies a single alpha texture against the frame buffer
 	/*virtual*/ void		gatherAlphaMasks(U8 *data, S32 originX, S32 originY, S32 width, S32 height);
-	BOOL					renderMorphMasks(S32 x, S32 y, S32 width, S32 height, const LLColor4 &layer_color);
+	void					renderMorphMasks(S32 x, S32 y, S32 width, S32 height, const LLColor4 &layer_color, bool force_render);
 	void					addAlphaMask(U8 *data, S32 originX, S32 originY, S32 width, S32 height);
 	/*virtual*/ BOOL		isInvisibleAlphaMask() const;
 
-- 
GitLab


From e1af26eaa2e3d065129821fe1e9458fa2698d72e Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Thu, 20 Dec 2012 21:39:33 +0000
Subject: [PATCH 219/436] Disabling build of headless appearance utility

---
 autobuild.xml               | 4 ++--
 indra/cmake/Variables.cmake | 8 ++++----
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index 098140db857..3c503997cc5 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -1290,9 +1290,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>8180c6f8d96a76c0c4b7746eb9e98964</string>
+              <string>17bcc2481fe362e297376d9c46888de8</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/268052/arch/Linux/installer/llappearanceutility_source-0.1-linux-20121212.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/268501/arch/Linux/installer/llappearanceutility_source-0.1-linux-20121220.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
diff --git a/indra/cmake/Variables.cmake b/indra/cmake/Variables.cmake
index 54c77da64e3..6ec621632b8 100644
--- a/indra/cmake/Variables.cmake
+++ b/indra/cmake/Variables.cmake
@@ -118,10 +118,10 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
   if (INSTALL_PROPRIETARY)
     # Only turn on headless if we can find osmesa libraries.
     include(FindPkgConfig)
-    pkg_check_modules(OSMESA osmesa)
-    if (OSMESA_FOUND)
-      set(BUILD_HEADLESS ON CACHE BOOL "Build headless libraries.")
-    endif (OSMESA_FOUND)
+    #pkg_check_modules(OSMESA osmesa)
+    #if (OSMESA_FOUND)
+    #  set(BUILD_HEADLESS ON CACHE BOOL "Build headless libraries.")
+    #endif (OSMESA_FOUND)
   endif (INSTALL_PROPRIETARY)
 
 endif (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
-- 
GitLab


From 4e1eda1c3bc898ae8481b8dfcff4b29196ac835e Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Mon, 7 Jan 2013 18:31:28 -0500
Subject: [PATCH 220/436] SH-3344 WIP - keep avatar local textures flagged
 no-delete while in use

---
 indra/newview/llviewertexture.cpp |  5 +-
 indra/newview/llvoavatar.cpp      | 73 +++++++++++++++++++++++++++
 indra/newview/llvoavatar.h        |  3 ++
 indra/newview/llvoavatarself.cpp  | 82 ++++++++++++++++++-------------
 indra/newview/llvoavatarself.h    |  1 +
 5 files changed, 127 insertions(+), 37 deletions(-)

diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp
index a673862882d..8eada5c2a18 100755
--- a/indra/newview/llviewertexture.cpp
+++ b/indra/newview/llviewertexture.cpp
@@ -616,7 +616,7 @@ LLViewerTexture::LLViewerTexture(const LLImageRaw* raw, BOOL usemipmaps) :
 
 LLViewerTexture::~LLViewerTexture()
 {
-	// LL_DEBUGS("Avatar") << mID << llendl;
+	LL_DEBUGS("Avatar") << mID << llendl;
 	cleanup();
 	sImageCount--;
 }
@@ -1160,7 +1160,8 @@ void LLViewerFetchedTexture::destroyTexture()
 	{
 		return ;
 	}
-	
+
+	LL_DEBUGS("Avatar") << mID << llendl;
 	destroyGLTexture() ;
 	mFullyLoaded = FALSE ;
 }
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 086e4306f82..df0b8171a63 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -4004,8 +4004,81 @@ U32 LLVOAvatar::renderImpostor(LLColor4U color, S32 diffuse_channel)
 //------------------------------------------------------------------------
 // LLVOAvatar::updateTextures()
 //------------------------------------------------------------------------
+void LLVOAvatar::collectTextureUUIDs(std::set<LLUUID>& ids, S32& local_mem, S32& baked_mem)
+{
+	for (U32 texture_index = 0; texture_index < getNumTEs(); texture_index++)
+	{
+		LLWearableType::EType wearable_type = LLAvatarAppearanceDictionary::getTEWearableType((ETextureIndex)texture_index);
+		U32 num_wearables = gAgentWearables.getWearableCount(wearable_type);
+
+		LLViewerFetchedTexture *imagep = NULL;
+		for (U32 wearable_index = 0; wearable_index < num_wearables; wearable_index++)
+		{
+			imagep = LLViewerTextureManager::staticCastToFetchedTexture(getImage(texture_index, wearable_index), TRUE);
+			if (imagep)
+			{
+				const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = LLAvatarAppearanceDictionary::getInstance()->getTexture((ETextureIndex)texture_index);
+				if (texture_dict->mIsLocalTexture)
+				{
+					local_mem += imagep->getTextureMemory();
+					ids.insert(imagep->getID());
+				}
+			}
+		}
+		if (isIndexBakedTexture((ETextureIndex) texture_index))
+		{
+			imagep = LLViewerTextureManager::staticCastToFetchedTexture(getImage(texture_index,0), TRUE);
+			if (imagep)
+			{
+				baked_mem += imagep->getTextureMemory();
+				ids.insert(imagep->getID());
+			}
+		}
+	}
+	ids.erase(IMG_DEFAULT);
+	ids.erase(IMG_DEFAULT_AVATAR);
+	ids.erase(IMG_INVISIBLE);
+}
+
+void LLVOAvatar::releaseOldTextures()
+{
+	S32 current_texture_mem = 0;
+	
+	// Any textures that we used to be using but are no longer using should no longer be flagged as "NO_DELETE"
+	std::set<LLUUID> new_texture_ids;
+	S32 local_mem = 0, baked_mem = 0;
+	collectTextureUUIDs(new_texture_ids, local_mem, baked_mem);
+	LL_DEBUGS("Avatar") << getFullname() << " local_mem: " << local_mem << " baked_mem: " << baked_mem << llendl;  
+	for (std::set<LLUUID>::iterator it = mTextureIDs.begin(); it != mTextureIDs.end(); ++it)
+	{
+		if (new_texture_ids.find(*it) == new_texture_ids.end())
+		{
+			LLViewerFetchedTexture *imagep = gTextureList.findImage(*it);
+			if (imagep)
+			{
+				current_texture_mem += imagep->getTextureMemory();
+				if (imagep->getTextureState() == LLGLTexture::NO_DELETE)
+				{
+					// This will allow the texture to be deleted if not in use.
+					imagep->forceActive();
+
+					// This resets the clock to being flagged as
+					// unused, preventing the texture from being
+					// deleted immediately. If other avatars or
+					// objects are using it, it can still be flagged
+					// no-delete by them.
+					imagep->forceUpdateBindStats();
+				}
+			}
+		}
+	}
+	mTextureIDs = new_texture_ids;
+}
+
 void LLVOAvatar::updateTextures()
 {
+	releaseOldTextures();
+	
 	BOOL render_avatar = TRUE;
 
 	if (mIsDummy)
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
index 4802476e592..5b1395e5668 100755
--- a/indra/newview/llvoavatar.h
+++ b/indra/newview/llvoavatar.h
@@ -134,6 +134,8 @@ class LLVOAvatar :
 	BOOL  	 	 	 	 	updateJointLODs();
 	void					updateLODRiggedAttachments( void );
 	/*virtual*/ BOOL   	 	 	isActive() const; // Whether this object needs to do an idleUpdate.
+	void 						collectTextureUUIDs(std::set<LLUUID>& ids, S32& local_mem, S32& baked_mem);
+	void						releaseOldTextures();
 	/*virtual*/ void   	 	 	updateTextures();
 	/*virtual*/ S32    	 	 	setTETexture(const U8 te, const LLUUID& uuid); // If setting a baked texture, need to request it from a non-local sim.
 	/*virtual*/ void   	 	 	onShift(const LLVector4a& shift_vector);
@@ -528,6 +530,7 @@ class LLVOAvatar :
 
 	LLLoadedCallbackEntry::source_callback_list_t mCallbackTextureList ; 
 	BOOL mLoadedCallbacksPaused;
+	std::set<LLUUID>	mTextureIDs;
 	//--------------------------------------------------------------------
 	// Local Textures
 	//--------------------------------------------------------------------
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index 674988d94b4..41dfe511166 100755
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -177,7 +177,7 @@ LLVOAvatarSelf::LLVOAvatarSelf(const LLUUID& id,
 }
 
 // Called periodically for diagnostics, return true when done.
-bool output_texture_diagnostics()
+bool output_self_av_texture_diagnostics()
 {
 	if (!isAgentAvatarValid())
 		return true; // done checking
@@ -221,7 +221,7 @@ void LLVOAvatarSelf::initInstance()
 		return;
 	}
 
-	//doPeriodically(output_texture_diagnostics, 30.0);
+	doPeriodically(output_self_av_texture_diagnostics, 30.0);
 }
 
 // virtual
@@ -2039,14 +2039,15 @@ const std::string LLVOAvatarSelf::verboseDebugDumpLocalTextureDataInfo(const LLV
 				 ++local_tex_iter)
 			{
 				const ETextureIndex tex_index = *local_tex_iter;
-				outbuf << "  tex_index " << (S32) tex_index << "\n";
+				const std::string tex_name = LLAvatarAppearanceDictionary::getInstance()->getTexture(tex_index)->mName;
+				outbuf << "  tex_index " << (S32) tex_index << " name " << tex_name << "\n";
 				const LLWearableType::EType wearable_type = LLAvatarAppearanceDictionary::getTEWearableType(tex_index);
 				const U32 wearable_count = gAgentWearables.getWearableCount(wearable_type);
 				if (wearable_count > 0)
 				{
 					for (U32 wearable_index = 0; wearable_index < wearable_count; wearable_index++)
 					{
-						outbuf << "    " << LLWearableType::getTypeName(wearable_type) << " " << wearable_index << "\n";
+						outbuf << "    " << LLWearableType::getTypeName(wearable_type) << " " << wearable_index << ":";
 						const LLLocalTextureObject *local_tex_obj = getLocalTextureObject(tex_index, wearable_index);
 						if (local_tex_obj)
 						{
@@ -2055,7 +2056,7 @@ const std::string LLVOAvatarSelf::verboseDebugDumpLocalTextureDataInfo(const LLV
 								&& local_tex_obj->getID() != IMG_DEFAULT_AVATAR
 								&& !image->isMissingAsset())
 							{
-								outbuf << "      id: " << image->getID()
+								outbuf << " id: " << image->getID()
 									   << " refs: " << image->getNumRefs()
 									   << " glocdisc: " << getLocalDiscardLevel(tex_index, wearable_index)
 									   << " discard: " << image->getDiscardLevel()
@@ -2067,9 +2068,10 @@ const std::string LLVOAvatarSelf::verboseDebugDumpLocalTextureDataInfo(const LLV
 									   << " fl: " << image->isFullyLoaded() // this is not an accessor for mFullyLoaded - see comment there.
 									   << " mvs: " << image->getMaxVirtualSize()
 									   << " mvsc: " << image->getMaxVirtualSizeResetCounter()
-									   << "\n";
+									   << " mem: " << image->getTextureMemory();
 							}
 						}
+						outbuf << "\n";
 					}
 				}
 			}
@@ -2079,6 +2081,23 @@ const std::string LLVOAvatarSelf::verboseDebugDumpLocalTextureDataInfo(const LLV
 	return outbuf.str();
 }
 
+void LLVOAvatarSelf::dumpAllTextures() const
+{
+	std::string vd_text = "Local textures per baked index and wearable:\n";
+	for (LLAvatarAppearanceDefines::LLAvatarAppearanceDictionary::BakedTextures::const_iterator baked_iter = LLAvatarAppearanceDefines::LLAvatarAppearanceDictionary::getInstance()->getBakedTextures().begin();
+		 baked_iter != LLAvatarAppearanceDefines::LLAvatarAppearanceDictionary::getInstance()->getBakedTextures().end();
+		 ++baked_iter)
+	{
+		const LLAvatarAppearanceDefines::EBakedTextureIndex baked_index = baked_iter->first;
+		const LLViewerTexLayerSet *layerset = debugGetLayerSet(baked_index);
+		if (!layerset) continue;
+		const LLViewerTexLayerSetBuffer *layerset_buffer = layerset->getViewerComposite();
+		if (!layerset_buffer) continue;
+		vd_text += verboseDebugDumpLocalTextureDataInfo(layerset);
+	}
+	LL_DEBUGS("Avatar") << vd_text << llendl;
+}
+
 const std::string LLVOAvatarSelf::debugDumpLocalTextureDataInfo(const LLViewerTexLayerSet* layerset) const
 {
 	std::string text="";
@@ -2348,24 +2367,28 @@ void LLVOAvatarSelf::addLocalTextureStats( ETextureIndex type, LLViewerFetchedTe
 {
 	if (!isIndexLocalTexture(type)) return;
 
-	if (getLocalTextureID(type, index) != IMG_DEFAULT_AVATAR && imagep->getDiscardLevel() != 0)
+	if (getLocalTextureID(type, index) != IMG_DEFAULT_AVATAR)
 	{
-		F32 desired_pixels;
-		desired_pixels = llmin(mPixelArea, (F32)getTexImageArea());
-
-		// DRANO what priority should wearable-based textures have?
-		if (isUsingLocalAppearance())
-		{
-			imagep->setBoostLevel(getAvatarBoostLevel());
-			imagep->setAdditionalDecodePriority(SELF_ADDITIONAL_PRI) ;
-		}
-		imagep->resetTextureStats();
-		imagep->setMaxVirtualSizeResetInterval(MAX_TEXTURE_VIRTURE_SIZE_RESET_INTERVAL);
-		imagep->addTextureStats( desired_pixels / texel_area_ratio );
-		imagep->forceUpdateBindStats() ;
-		if (imagep->getDiscardLevel() < 0)
+		imagep->setNoDelete();
+		if (imagep->getDiscardLevel() != 0)
 		{
-			mHasGrey = TRUE; // for statistics gathering
+			F32 desired_pixels;
+			desired_pixels = llmin(mPixelArea, (F32)getTexImageArea());
+
+			// DRANO what priority should wearable-based textures have?
+			if (isUsingLocalAppearance())
+			{
+				imagep->setBoostLevel(getAvatarBoostLevel());
+				imagep->setAdditionalDecodePriority(SELF_ADDITIONAL_PRI) ;
+			}
+			imagep->resetTextureStats();
+			imagep->setMaxVirtualSizeResetInterval(MAX_TEXTURE_VIRTURE_SIZE_RESET_INTERVAL);
+			imagep->addTextureStats( desired_pixels / texel_area_ratio );
+			imagep->forceUpdateBindStats() ;
+			if (imagep->getDiscardLevel() < 0)
+			{
+				mHasGrey = TRUE; // for statistics gathering
+			}
 		}
 	}
 	else
@@ -2538,19 +2561,8 @@ void LLVOAvatarSelf::outputRezDiagnostics() const
 		if (!layerset_buffer) continue;
 		LL_DEBUGS("Avatar") << layerset_buffer->dumpTextureInfo() << llendl;
 	}
-	std::string vd_text = "Local textures per baked index and wearable:\n";
-	for (LLAvatarAppearanceDefines::LLAvatarAppearanceDictionary::BakedTextures::const_iterator baked_iter = LLAvatarAppearanceDefines::LLAvatarAppearanceDictionary::getInstance()->getBakedTextures().begin();
-		 baked_iter != LLAvatarAppearanceDefines::LLAvatarAppearanceDictionary::getInstance()->getBakedTextures().end();
-		 ++baked_iter)
-	{
-		const LLAvatarAppearanceDefines::EBakedTextureIndex baked_index = baked_iter->first;
-		const LLViewerTexLayerSet *layerset = debugGetLayerSet(baked_index);
-		if (!layerset) continue;
-		const LLViewerTexLayerSetBuffer *layerset_buffer = layerset->getViewerComposite();
-		if (!layerset_buffer) continue;
-		vd_text += verboseDebugDumpLocalTextureDataInfo(layerset);
-	}
-	LL_DEBUGS("Avatar") << vd_text << llendl;
+
+	dumpAllTextures();
 }
 
 void LLVOAvatarSelf::outputRezTiming(const std::string& msg) const
diff --git a/indra/newview/llvoavatarself.h b/indra/newview/llvoavatarself.h
index 02612b83da2..74888e470d6 100755
--- a/indra/newview/llvoavatarself.h
+++ b/indra/newview/llvoavatarself.h
@@ -391,6 +391,7 @@ class LLVOAvatarSelf :
 
 	const LLViewerTexLayerSet*	debugGetLayerSet(LLAvatarAppearanceDefines::EBakedTextureIndex index) const { return (LLViewerTexLayerSet*)(mBakedTextureDatas[index].mTexLayerSet); }
 	const std::string		verboseDebugDumpLocalTextureDataInfo(const LLViewerTexLayerSet* layerset) const; // Lists out state of this particular baked texture layer
+	void					dumpAllTextures() const;
 	const std::string		debugDumpLocalTextureDataInfo(const LLViewerTexLayerSet* layerset) const; // Lists out state of this particular baked texture layer
 	const std::string		debugDumpAllLocalTextureDataInfo() const; // Lists out which baked textures are at highest LOD
 	LLSD					metricsData();
-- 
GitLab


From 8e8765535f94d3084305ef7b9e4644ec92d10723 Mon Sep 17 00:00:00 2001
From: prep <prep@lindenlab.com>
Date: Wed, 9 Jan 2013 12:41:51 -0500
Subject: [PATCH 221/436] SH-3620: Fix for editing a nocopy wearable being
 removed from the outfit

---
 indra/newview/llpaneleditwearable.cpp | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/indra/newview/llpaneleditwearable.cpp b/indra/newview/llpaneleditwearable.cpp
index 786b215fdf8..606e78bd580 100644
--- a/indra/newview/llpaneleditwearable.cpp
+++ b/indra/newview/llpaneleditwearable.cpp
@@ -882,9 +882,12 @@ void LLPanelEditWearable::setWearable(LLViewerWearable *wearable, BOOL disable_c
 
 //static 
 void LLPanelEditWearable::onBackButtonClicked(void* userdata)
-{
-    LLPanelEditWearable *panel = (LLPanelEditWearable*) userdata;
-	panel->saveChanges(true);
+{	
+	LLPanelEditWearable *panel = (LLPanelEditWearable*) userdata;    
+	if ( panel->isDirty() )
+	{
+		LLAppearanceMgr::instance().setOutfitDirty( true );		
+	}
 }
 
 //static 
-- 
GitLab


From 547f48eabe6b363de9b8551074b004041814ea12 Mon Sep 17 00:00:00 2001
From: prep <prep@lindenlab.com>
Date: Wed, 9 Jan 2013 15:43:09 -0500
Subject: [PATCH 222/436] SH-3600. Undo change is disabled upon reentry into
 the appearance panel

---
 indra/newview/llsidepanelappearance.cpp | 1089 ++++++++++++-----------
 1 file changed, 545 insertions(+), 544 deletions(-)

diff --git a/indra/newview/llsidepanelappearance.cpp b/indra/newview/llsidepanelappearance.cpp
index 98dc2c0e098..f0844dd9a41 100644
--- a/indra/newview/llsidepanelappearance.cpp
+++ b/indra/newview/llsidepanelappearance.cpp
@@ -1,544 +1,545 @@
-/**
- * @file llsidepanelappearance.cpp
- * @brief Side Bar "Appearance" panel
- *
- * $LicenseInfo:firstyear=2009&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- * 
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- * 
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- * 
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
- * $/LicenseInfo$
- */
-
-#include "llviewerprecompiledheaders.h"
-#include "llsidepanelappearance.h"
-
-#include "llaccordionctrltab.h"
-#include "llagent.h"
-#include "llagentcamera.h"
-#include "llagentwearables.h"
-#include "llappearancemgr.h"
-#include "llfloatersidepanelcontainer.h"
-#include "llfolderview.h"
-#include "llinventorypanel.h"
-#include "llfiltereditor.h"
-#include "llfloaterreg.h"
-#include "llfloaterworldmap.h"
-#include "llfoldervieweventlistener.h"
-#include "lloutfitobserver.h"
-#include "llpaneleditwearable.h"
-#include "llpaneloutfitsinventory.h"
-#include "lltextbox.h"
-#include "lluictrlfactory.h"
-#include "llviewercontrol.h"
-#include "llviewerregion.h"
-#include "llvoavatarself.h"
-#include "llviewerwearable.h"
-
-static LLRegisterPanelClassWrapper<LLSidepanelAppearance> t_appearance("sidepanel_appearance");
-
-class LLCurrentlyWornFetchObserver : public LLInventoryFetchItemsObserver
-{
-public:
-	LLCurrentlyWornFetchObserver(const uuid_vec_t &ids,
-								 LLSidepanelAppearance *panel) :
-		LLInventoryFetchItemsObserver(ids),
-		mPanel(panel)
-	{}
-	~LLCurrentlyWornFetchObserver() {}
-	virtual void done()
-	{
-		mPanel->inventoryFetched();
-		gInventory.removeObserver(this);
-		delete this;
-	}
-private:
-	LLSidepanelAppearance *mPanel;
-};
-
-LLSidepanelAppearance::LLSidepanelAppearance() :
-	LLPanel(),
-	mFilterSubString(LLStringUtil::null),
-	mFilterEditor(NULL),
-	mOutfitEdit(NULL),
-	mCurrOutfitPanel(NULL),
-	mOpened(false)
-{
-	LLOutfitObserver& outfit_observer =  LLOutfitObserver::instance();
-	outfit_observer.addBOFReplacedCallback(boost::bind(&LLSidepanelAppearance::refreshCurrentOutfitName, this, ""));
-	outfit_observer.addBOFChangedCallback(boost::bind(&LLSidepanelAppearance::refreshCurrentOutfitName, this, ""));
-	outfit_observer.addCOFChangedCallback(boost::bind(&LLSidepanelAppearance::refreshCurrentOutfitName, this, ""));
-
-	gAgentWearables.addLoadingStartedCallback(boost::bind(&LLSidepanelAppearance::setWearablesLoading, this, true));
-	gAgentWearables.addLoadedCallback(boost::bind(&LLSidepanelAppearance::setWearablesLoading, this, false));
-}
-
-LLSidepanelAppearance::~LLSidepanelAppearance()
-{
-}
-
-// virtual
-BOOL LLSidepanelAppearance::postBuild()
-{
-	mOpenOutfitBtn = getChild<LLButton>("openoutfit_btn");
-	mOpenOutfitBtn->setClickedCallback(boost::bind(&LLSidepanelAppearance::onOpenOutfitButtonClicked, this));
-
-	mEditAppearanceBtn = getChild<LLButton>("editappearance_btn");
-	mEditAppearanceBtn->setClickedCallback(boost::bind(&LLSidepanelAppearance::onEditAppearanceButtonClicked, this));
-
-	childSetAction("edit_outfit_btn", boost::bind(&LLSidepanelAppearance::showOutfitEditPanel, this));
-
-	mNewOutfitBtn = getChild<LLButton>("newlook_btn");
-	mNewOutfitBtn->setClickedCallback(boost::bind(&LLSidepanelAppearance::onNewOutfitButtonClicked, this));
-	mNewOutfitBtn->setEnabled(false);
-
-	mFilterEditor = getChild<LLFilterEditor>("Filter");
-	if (mFilterEditor)
-	{
-		mFilterEditor->setCommitCallback(boost::bind(&LLSidepanelAppearance::onFilterEdit, this, _2));
-	}
-
-	mPanelOutfitsInventory = dynamic_cast<LLPanelOutfitsInventory *>(getChild<LLPanel>("panel_outfits_inventory"));
-
-	mOutfitEdit = dynamic_cast<LLPanelOutfitEdit*>(getChild<LLPanel>("panel_outfit_edit"));
-	if (mOutfitEdit)
-	{
-		LLButton* back_btn = mOutfitEdit->getChild<LLButton>("back_btn");
-		if (back_btn)
-		{
-			back_btn->setClickedCallback(boost::bind(&LLSidepanelAppearance::showOutfitsInventoryPanel, this));
-		}
-
-	}
-
-	mEditWearable = dynamic_cast<LLPanelEditWearable*>(getChild<LLPanel>("panel_edit_wearable"));
-	if (mEditWearable)
-	{
-		LLButton* edit_wearable_back_btn = mEditWearable->getChild<LLButton>("back_btn");
-		if (edit_wearable_back_btn)
-		{
-			edit_wearable_back_btn->setClickedCallback(boost::bind(&LLSidepanelAppearance::showOutfitEditPanel, this));
-		}
-	}
-
-	mCurrentLookName = getChild<LLTextBox>("currentlook_name");
-
-	mOutfitStatus = getChild<LLTextBox>("currentlook_status");
-	
-	mCurrOutfitPanel = getChild<LLPanel>("panel_currentlook");
-
-
-	setVisibleCallback(boost::bind(&LLSidepanelAppearance::onVisibilityChange,this,_2));
-
-	return TRUE;
-}
-
-// virtual
-void LLSidepanelAppearance::onOpen(const LLSD& key)
-{
-	if (!key.has("type"))
-	{
-		// No specific panel requested.
-		// If we're opened for the first time then show My Outfits.
-		// Else do nothing.
-		if (!mOpened)
-		{
-			showOutfitsInventoryPanel();
-		}
-	}
-	else
-	{
-		// Switch to the requested panel.
-		std::string type = key["type"].asString();
-		if (type == "my_outfits")
-		{
-			showOutfitsInventoryPanel();
-		}
-		else if (type == "edit_outfit")
-		{
-			showOutfitEditPanel();
-		}
-		else if (type == "edit_shape")
-		{
-			showWearableEditPanel();
-		}
-	}
-
-	mOpened = true;
-}
-
-void LLSidepanelAppearance::onVisibilityChange(const LLSD &new_visibility)
-{
-	LLSD visibility;
-	visibility["visible"] = new_visibility.asBoolean();
-	visibility["reset_accordion"] = false;
-	updateToVisibility(visibility);
-}
-
-void LLSidepanelAppearance::updateToVisibility(const LLSD &new_visibility)
-{
-	if (new_visibility["visible"].asBoolean())
-	{
-		const BOOL is_outfit_edit_visible = mOutfitEdit && mOutfitEdit->getVisible();
-		const BOOL is_wearable_edit_visible = mEditWearable && mEditWearable->getVisible();
-
-		if (is_outfit_edit_visible || is_wearable_edit_visible)
-		{
-			const LLViewerWearable *wearable_ptr = mEditWearable->getWearable();
-			if (!wearable_ptr)
-			{
-				llwarns << "Visibility change to invalid wearable" << llendl;
-				return;
-			}
-			// Disable camera switch is currently just for WT_PHYSICS type since we don't want to freeze the avatar
-			// when editing its physics.
-			if (!gAgentCamera.cameraCustomizeAvatar())
-			{
-				LLVOAvatarSelf::onCustomizeStart(LLWearableType::getDisableCameraSwitch(wearable_ptr->getType()));
-			}
-			if (is_wearable_edit_visible)
-			{
-				if (gAgentWearables.getWearableIndex(wearable_ptr) == LLAgentWearables::MAX_CLOTHING_PER_TYPE)
-				{
-					// we're no longer wearing the wearable we were last editing, switch back to outfit editor
-					showOutfitEditPanel();
-				}
-			}
-
-			if (is_outfit_edit_visible && new_visibility["reset_accordion"].asBoolean())
-			{
-				mOutfitEdit->resetAccordionState();
-			}
-		}
-	}
-	else
-	{
-		if (gAgentCamera.cameraCustomizeAvatar() && gSavedSettings.getBOOL("AppearanceCameraMovement"))
-		{
-			gAgentCamera.changeCameraToDefault();
-			gAgentCamera.resetView();
-		}	
-	}
-}
-
-void LLSidepanelAppearance::onFilterEdit(const std::string& search_string)
-{
-	if (mFilterSubString != search_string)
-	{
-		mFilterSubString = search_string;
-
-		// Searches are case-insensitive
-		// but we don't convert the typed string to upper-case so that it can be fed to the web search as-is.
-
-		mPanelOutfitsInventory->onSearchEdit(mFilterSubString);
-	}
-}
-
-void LLSidepanelAppearance::onOpenOutfitButtonClicked()
-{
-	const LLViewerInventoryItem *outfit_link = LLAppearanceMgr::getInstance()->getBaseOutfitLink();
-	if (!outfit_link)
-		return;
-	if (!outfit_link->getIsLinkType())
-		return;
-
-	LLAccordionCtrlTab* tab_outfits = mPanelOutfitsInventory->findChild<LLAccordionCtrlTab>("tab_outfits");
-	if (tab_outfits)
-	{
-		tab_outfits->changeOpenClose(FALSE);
-		LLInventoryPanel *inventory_panel = tab_outfits->findChild<LLInventoryPanel>("outfitslist_tab");
-		if (inventory_panel)
-		{
-			LLFolderView* root = inventory_panel->getRootFolder();
-			LLFolderViewItem *outfit_folder = root->getItemByID(outfit_link->getLinkedUUID());
-			if (outfit_folder)
-			{
-				outfit_folder->setOpen(!outfit_folder->isOpen());
-				root->setSelectionFromRoot(outfit_folder,TRUE);
-				root->scrollToShowSelection();
-			}
-		}
-	}
-}
-
-// *TODO: obsolete?
-void LLSidepanelAppearance::onEditAppearanceButtonClicked()
-{
-	if (gAgentWearables.areWearablesLoaded())
-	{
-		LLVOAvatarSelf::onCustomizeStart();
-	}
-}
-
-void LLSidepanelAppearance::onNewOutfitButtonClicked()
-{
-	if (!mOutfitEdit->getVisible())
-	{
-		mPanelOutfitsInventory->onSave();
-	}
-}
-
-void LLSidepanelAppearance::showOutfitsInventoryPanel()
-{
-	toggleWearableEditPanel(FALSE);
-	toggleOutfitEditPanel(FALSE);
-	toggleMyOutfitsPanel(TRUE);
-}
-
-void LLSidepanelAppearance::showOutfitEditPanel()
-{
-	if (mOutfitEdit && mOutfitEdit->getVisible()) return;
-
-	// Accordion's state must be reset in all cases except the one when user
-	// is returning back to the mOutfitEdit panel from the mEditWearable panel.
-	// The simplest way to control this is to check the visibility state of the mEditWearable
-	// BEFORE it is changed by the call to the toggleWearableEditPanel(FALSE, NULL, TRUE).
-	if (mEditWearable != NULL && !mEditWearable->getVisible() && mOutfitEdit != NULL)
-	{
-		mOutfitEdit->resetAccordionState();
-	}
-
-	// If we're exiting the edit wearable view, and the camera was not focused on the avatar
-	// (e.g. such as if we were editing a physics param), then skip the outfits edit mode since
-	// otherwise this would trigger the camera focus mode.
-	if (mEditWearable != NULL && mEditWearable->getVisible() && !gAgentCamera.cameraCustomizeAvatar())
-	{
-		showOutfitsInventoryPanel();
-		return;
-	}
-
-	toggleMyOutfitsPanel(FALSE);
-	toggleWearableEditPanel(FALSE, NULL, TRUE); // don't switch out of edit appearance mode
-	toggleOutfitEditPanel(TRUE);
-}
-
-void LLSidepanelAppearance::showWearableEditPanel(LLViewerWearable *wearable /* = NULL*/, BOOL disable_camera_switch)
-{
-	toggleMyOutfitsPanel(FALSE);
-	toggleOutfitEditPanel(FALSE, TRUE); // don't switch out of edit appearance mode
-	toggleWearableEditPanel(TRUE, wearable, disable_camera_switch);
-}
-
-void LLSidepanelAppearance::toggleMyOutfitsPanel(BOOL visible)
-{
-	if (!mPanelOutfitsInventory || mPanelOutfitsInventory->getVisible() == visible)
-	{
-		// visibility isn't changing, hence nothing to do
-		return;
-	}
-
-	mPanelOutfitsInventory->setVisible(visible);
-
-	// *TODO: Move these controls to panel_outfits_inventory.xml
-	// so that we don't need to toggle them explicitly.
-	mFilterEditor->setVisible(visible);
-	mNewOutfitBtn->setVisible(visible);
-	mCurrOutfitPanel->setVisible(visible);
-
-	if (visible)
-	{
-		mPanelOutfitsInventory->onOpen(LLSD());
-	}
-}
-
-void LLSidepanelAppearance::toggleOutfitEditPanel(BOOL visible, BOOL disable_camera_switch)
-{
-	if (!mOutfitEdit || mOutfitEdit->getVisible() == visible)
-	{
-		// visibility isn't changing, hence nothing to do
-		return;
-	}
-
-	mOutfitEdit->setVisible(visible);
-
-	if (visible)
-	{
-		mOutfitEdit->onOpen(LLSD());
-		LLVOAvatarSelf::onCustomizeStart(disable_camera_switch);
-	}
-	else 
-	{
-		if (!disable_camera_switch)   // if we're just switching between outfit and wearable editing, don't end customization.
-		{
-			LLVOAvatarSelf::onCustomizeEnd(disable_camera_switch);
-		}
-	}
-}
-
-void LLSidepanelAppearance::toggleWearableEditPanel(BOOL visible, LLViewerWearable *wearable, BOOL disable_camera_switch)
-{
-	if (!mEditWearable || mEditWearable->getVisible() == visible)
-	{
-		// visibility isn't changing, hence nothing to do
-		return;
-	}
-
-	if (!wearable)
-	{
-		wearable = gAgentWearables.getViewerWearable(LLWearableType::WT_SHAPE, 0);
-	}
-	if (!wearable)
-	{
-		return;
-	}
-
-	// Toggle panel visibility.
-	mEditWearable->setVisible(visible);
-
-	if (visible)
-	{
-		LLVOAvatarSelf::onCustomizeStart(disable_camera_switch);
-		mEditWearable->setWearable(wearable, disable_camera_switch);
-		mEditWearable->onOpen(LLSD()); // currently no-op, just for consistency
-	}
-	else
-	{
-		// Save changes if closing.
-		mEditWearable->saveChanges();
-		if (!disable_camera_switch)   // if we're just switching between outfit and wearable editing, don't end customization.
-		{
-			LLVOAvatarSelf::onCustomizeEnd(disable_camera_switch);
-		}
-	}
-}
-
-void LLSidepanelAppearance::refreshCurrentOutfitName(const std::string& name)
-{
-	// Set current outfit status (wearing/unsaved).
-	bool dirty = LLAppearanceMgr::getInstance()->isOutfitDirty();
-	std::string cof_status_str = getString(dirty ? "Unsaved Changes" : "Now Wearing");
-	mOutfitStatus->setText(cof_status_str);
-
-	if (name == "")
-	{
-		std::string outfit_name;
-		if (LLAppearanceMgr::getInstance()->getBaseOutfitName(outfit_name))
-		{
-				mCurrentLookName->setText(outfit_name);
-				return;
-		}
-
-		std::string string_name = gAgentWearables.isCOFChangeInProgress() ? "Changing outfits" : "No Outfit";
-		mCurrentLookName->setText(getString(string_name));
-		mOpenOutfitBtn->setEnabled(FALSE);
-	}
-	else
-	{
-		mCurrentLookName->setText(name);
-		// Can't just call update verbs since the folder link may not have been created yet.
-		mOpenOutfitBtn->setEnabled(TRUE);
-	}
-}
-
-//static
-void LLSidepanelAppearance::editWearable(LLViewerWearable *wearable, LLView *data, BOOL disable_camera_switch)
-{
-	LLFloaterSidePanelContainer::showPanel("appearance", LLSD());
-
-	LLSidepanelAppearance *panel = dynamic_cast<LLSidepanelAppearance*>(data);
-	if (panel)
-	{
-		panel->showWearableEditPanel(wearable, disable_camera_switch);
-	}
-}
-
-// Fetch currently worn items and only enable the New Look button after everything's been
-// fetched.  Alternatively, we could stuff this logic into llagentwearables::makeNewOutfitLinks.
-void LLSidepanelAppearance::fetchInventory()
-{
-
-	mNewOutfitBtn->setEnabled(false);
-	uuid_vec_t ids;
-	LLUUID item_id;
-	for(S32 type = (S32)LLWearableType::WT_SHAPE; type < (S32)LLWearableType::WT_COUNT; ++type)
-	{
-		for (U32 index = 0; index < gAgentWearables.getWearableCount((LLWearableType::EType)type); ++index)
-		{
-			item_id = gAgentWearables.getWearableItemID((LLWearableType::EType)type, index);
-			if(item_id.notNull())
-			{
-				ids.push_back(item_id);
-			}
-		}
-	}
-
-	if (isAgentAvatarValid())
-	{
-		for (LLVOAvatar::attachment_map_t::const_iterator iter = gAgentAvatarp->mAttachmentPoints.begin(); 
-			 iter != gAgentAvatarp->mAttachmentPoints.end(); ++iter)
-		{
-			LLViewerJointAttachment* attachment = iter->second;
-			if (!attachment) continue;
-			for (LLViewerJointAttachment::attachedobjs_vec_t::iterator attachment_iter = attachment->mAttachedObjects.begin();
-				 attachment_iter != attachment->mAttachedObjects.end();
-				 ++attachment_iter)
-			{
-				LLViewerObject* attached_object = (*attachment_iter);
-				if (!attached_object) continue;
-				const LLUUID& item_id = attached_object->getAttachmentItemID();
-				if (item_id.isNull()) continue;
-				ids.push_back(item_id);
-			}
-		}
-	}
-
-	LLCurrentlyWornFetchObserver *fetch_worn = new LLCurrentlyWornFetchObserver(ids, this);
-	fetch_worn->startFetch();
-	// If no items to be fetched, done will never be triggered.
-	// TODO: Change LLInventoryFetchItemsObserver::fetchItems to trigger done() on this condition.
-	if (fetch_worn->isFinished())
-	{
-		fetch_worn->done();
-	}
-	else
-	{
-		gInventory.addObserver(fetch_worn);
-	}
-}
-
-void LLSidepanelAppearance::inventoryFetched()
-{
-	mNewOutfitBtn->setEnabled(true);
-}
-
-void LLSidepanelAppearance::setWearablesLoading(bool val)
-{
-	getChildView("wearables_loading_indicator")->setVisible( val);
-	getChildView("edit_outfit_btn")->setVisible( !val);
-
-	if (!val)
-	{
-		// refresh outfit name when COF is already changed.
-		refreshCurrentOutfitName();
-	}
-}
-
-void LLSidepanelAppearance::showDefaultSubpart()
-{
-	if (mEditWearable->getVisible())
-	{
-		mEditWearable->showDefaultSubpart();
-	}
-}
-
-void LLSidepanelAppearance::updateScrollingPanelList()
-{
-	if (mEditWearable->getVisible())
-	{
-		mEditWearable->updateScrollingPanelList();
-	}
-}
+/**
+ * @file llsidepanelappearance.cpp
+ * @brief Side Bar "Appearance" panel
+ *
+ * $LicenseInfo:firstyear=2009&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+#include "llviewerprecompiledheaders.h"
+#include "llsidepanelappearance.h"
+
+#include "llaccordionctrltab.h"
+#include "llagent.h"
+#include "llagentcamera.h"
+#include "llagentwearables.h"
+#include "llappearancemgr.h"
+#include "llfloatersidepanelcontainer.h"
+#include "llfolderview.h"
+#include "llinventorypanel.h"
+#include "llfiltereditor.h"
+#include "llfloaterreg.h"
+#include "llfloaterworldmap.h"
+#include "llfoldervieweventlistener.h"
+#include "lloutfitobserver.h"
+#include "llpaneleditwearable.h"
+#include "llpaneloutfitsinventory.h"
+#include "lltextbox.h"
+#include "lluictrlfactory.h"
+#include "llviewercontrol.h"
+#include "llviewerregion.h"
+#include "llvoavatarself.h"
+#include "llviewerwearable.h"
+
+static LLRegisterPanelClassWrapper<LLSidepanelAppearance> t_appearance("sidepanel_appearance");
+
+class LLCurrentlyWornFetchObserver : public LLInventoryFetchItemsObserver
+{
+public:
+	LLCurrentlyWornFetchObserver(const uuid_vec_t &ids,
+								 LLSidepanelAppearance *panel) :
+		LLInventoryFetchItemsObserver(ids),
+		mPanel(panel)
+	{}
+	~LLCurrentlyWornFetchObserver() {}
+	virtual void done()
+	{
+		mPanel->inventoryFetched();
+		gInventory.removeObserver(this);
+		delete this;
+	}
+private:
+	LLSidepanelAppearance *mPanel;
+};
+
+LLSidepanelAppearance::LLSidepanelAppearance() :
+	LLPanel(),
+	mFilterSubString(LLStringUtil::null),
+	mFilterEditor(NULL),
+	mOutfitEdit(NULL),
+	mCurrOutfitPanel(NULL),
+	mOpened(false)
+{
+	LLOutfitObserver& outfit_observer =  LLOutfitObserver::instance();
+	outfit_observer.addBOFReplacedCallback(boost::bind(&LLSidepanelAppearance::refreshCurrentOutfitName, this, ""));
+	outfit_observer.addBOFChangedCallback(boost::bind(&LLSidepanelAppearance::refreshCurrentOutfitName, this, ""));
+	outfit_observer.addCOFChangedCallback(boost::bind(&LLSidepanelAppearance::refreshCurrentOutfitName, this, ""));
+
+	gAgentWearables.addLoadingStartedCallback(boost::bind(&LLSidepanelAppearance::setWearablesLoading, this, true));
+	gAgentWearables.addLoadedCallback(boost::bind(&LLSidepanelAppearance::setWearablesLoading, this, false));
+}
+
+LLSidepanelAppearance::~LLSidepanelAppearance()
+{
+}
+
+// virtual
+BOOL LLSidepanelAppearance::postBuild()
+{
+	mOpenOutfitBtn = getChild<LLButton>("openoutfit_btn");
+	mOpenOutfitBtn->setClickedCallback(boost::bind(&LLSidepanelAppearance::onOpenOutfitButtonClicked, this));
+
+	mEditAppearanceBtn = getChild<LLButton>("editappearance_btn");
+	mEditAppearanceBtn->setClickedCallback(boost::bind(&LLSidepanelAppearance::onEditAppearanceButtonClicked, this));
+
+	childSetAction("edit_outfit_btn", boost::bind(&LLSidepanelAppearance::showOutfitEditPanel, this));
+
+	mNewOutfitBtn = getChild<LLButton>("newlook_btn");
+	mNewOutfitBtn->setClickedCallback(boost::bind(&LLSidepanelAppearance::onNewOutfitButtonClicked, this));
+	mNewOutfitBtn->setEnabled(false);
+
+	mFilterEditor = getChild<LLFilterEditor>("Filter");
+	if (mFilterEditor)
+	{
+		mFilterEditor->setCommitCallback(boost::bind(&LLSidepanelAppearance::onFilterEdit, this, _2));
+	}
+
+	mPanelOutfitsInventory = dynamic_cast<LLPanelOutfitsInventory *>(getChild<LLPanel>("panel_outfits_inventory"));
+
+	mOutfitEdit = dynamic_cast<LLPanelOutfitEdit*>(getChild<LLPanel>("panel_outfit_edit"));
+	if (mOutfitEdit)
+	{
+		LLButton* back_btn = mOutfitEdit->getChild<LLButton>("back_btn");
+		if (back_btn)
+		{
+			back_btn->setClickedCallback(boost::bind(&LLSidepanelAppearance::showOutfitsInventoryPanel, this));
+		}
+
+	}
+
+	mEditWearable = dynamic_cast<LLPanelEditWearable*>(getChild<LLPanel>("panel_edit_wearable"));
+	if (mEditWearable)
+	{
+		LLButton* edit_wearable_back_btn = mEditWearable->getChild<LLButton>("back_btn");
+		if (edit_wearable_back_btn)
+		{
+			edit_wearable_back_btn->setClickedCallback(boost::bind(&LLSidepanelAppearance::showOutfitEditPanel, this));
+		}
+	}
+
+	mCurrentLookName = getChild<LLTextBox>("currentlook_name");
+
+	mOutfitStatus = getChild<LLTextBox>("currentlook_status");
+	
+	mCurrOutfitPanel = getChild<LLPanel>("panel_currentlook");
+
+
+	setVisibleCallback(boost::bind(&LLSidepanelAppearance::onVisibilityChange,this,_2));
+
+	return TRUE;
+}
+
+// virtual
+void LLSidepanelAppearance::onOpen(const LLSD& key)
+{
+	if (!key.has("type"))
+	{
+		// No specific panel requested.
+		// If we're opened for the first time then show My Outfits.
+		// Else do nothing.
+		if (!mOpened)
+		{
+			showOutfitsInventoryPanel();
+		}
+	}
+	else
+	{
+		// Switch to the requested panel.
+		std::string type = key["type"].asString();
+		if (type == "my_outfits")
+		{
+			showOutfitsInventoryPanel();
+		}
+		else if (type == "edit_outfit")
+		{
+			showOutfitEditPanel();
+		}
+		else if (type == "edit_shape")
+		{
+			showWearableEditPanel();
+		}
+	}
+
+	mOpened = true;
+}
+
+void LLSidepanelAppearance::onVisibilityChange(const LLSD &new_visibility)
+{
+	LLSD visibility;
+	visibility["visible"] = new_visibility.asBoolean();
+	visibility["reset_accordion"] = false;
+	updateToVisibility(visibility);
+}
+
+void LLSidepanelAppearance::updateToVisibility(const LLSD &new_visibility)
+{
+	if (new_visibility["visible"].asBoolean())
+	{
+		const BOOL is_outfit_edit_visible = mOutfitEdit && mOutfitEdit->getVisible();
+		const BOOL is_wearable_edit_visible = mEditWearable && mEditWearable->getVisible();
+
+		if (is_outfit_edit_visible || is_wearable_edit_visible)
+		{
+			const LLViewerWearable *wearable_ptr = mEditWearable->getWearable();
+			if (!wearable_ptr)
+			{
+				llwarns << "Visibility change to invalid wearable" << llendl;
+				return;
+			}
+			// Disable camera switch is currently just for WT_PHYSICS type since we don't want to freeze the avatar
+			// when editing its physics.
+			if (!gAgentCamera.cameraCustomizeAvatar())
+			{
+				LLVOAvatarSelf::onCustomizeStart(LLWearableType::getDisableCameraSwitch(wearable_ptr->getType()));
+			}
+			if (is_wearable_edit_visible)
+			{
+				if (gAgentWearables.getWearableIndex(wearable_ptr) == LLAgentWearables::MAX_CLOTHING_PER_TYPE)
+				{
+					// we're no longer wearing the wearable we were last editing, switch back to outfit editor
+					showOutfitEditPanel();
+				}
+			}
+
+			if (is_outfit_edit_visible && new_visibility["reset_accordion"].asBoolean())
+			{
+				mOutfitEdit->resetAccordionState();
+			}
+		}
+	}
+	else
+	{
+		if (gAgentCamera.cameraCustomizeAvatar() && gSavedSettings.getBOOL("AppearanceCameraMovement"))
+		{
+			gAgentCamera.changeCameraToDefault();
+			gAgentCamera.resetView();
+		}	
+	}
+}
+
+void LLSidepanelAppearance::onFilterEdit(const std::string& search_string)
+{
+	if (mFilterSubString != search_string)
+	{
+		mFilterSubString = search_string;
+
+		// Searches are case-insensitive
+		// but we don't convert the typed string to upper-case so that it can be fed to the web search as-is.
+
+		mPanelOutfitsInventory->onSearchEdit(mFilterSubString);
+	}
+}
+
+void LLSidepanelAppearance::onOpenOutfitButtonClicked()
+{
+	const LLViewerInventoryItem *outfit_link = LLAppearanceMgr::getInstance()->getBaseOutfitLink();
+	if (!outfit_link)
+		return;
+	if (!outfit_link->getIsLinkType())
+		return;
+
+	LLAccordionCtrlTab* tab_outfits = mPanelOutfitsInventory->findChild<LLAccordionCtrlTab>("tab_outfits");
+	if (tab_outfits)
+	{
+		tab_outfits->changeOpenClose(FALSE);
+		LLInventoryPanel *inventory_panel = tab_outfits->findChild<LLInventoryPanel>("outfitslist_tab");
+		if (inventory_panel)
+		{
+			LLFolderView* root = inventory_panel->getRootFolder();
+			LLFolderViewItem *outfit_folder = root->getItemByID(outfit_link->getLinkedUUID());
+			if (outfit_folder)
+			{
+				outfit_folder->setOpen(!outfit_folder->isOpen());
+				root->setSelectionFromRoot(outfit_folder,TRUE);
+				root->scrollToShowSelection();
+			}
+		}
+	}
+}
+
+// *TODO: obsolete?
+void LLSidepanelAppearance::onEditAppearanceButtonClicked()
+{
+	if (gAgentWearables.areWearablesLoaded())
+	{
+		LLVOAvatarSelf::onCustomizeStart();
+	}
+}
+
+void LLSidepanelAppearance::onNewOutfitButtonClicked()
+{
+	if (!mOutfitEdit->getVisible())
+	{
+		mPanelOutfitsInventory->onSave();
+	}
+}
+
+void LLSidepanelAppearance::showOutfitsInventoryPanel()
+{
+	toggleWearableEditPanel(FALSE);
+	toggleOutfitEditPanel(FALSE);
+	toggleMyOutfitsPanel(TRUE);
+}
+
+void LLSidepanelAppearance::showOutfitEditPanel()
+{
+	if (mOutfitEdit && mOutfitEdit->getVisible()) return;
+
+	// Accordion's state must be reset in all cases except the one when user
+	// is returning back to the mOutfitEdit panel from the mEditWearable panel.
+	// The simplest way to control this is to check the visibility state of the mEditWearable
+	// BEFORE it is changed by the call to the toggleWearableEditPanel(FALSE, NULL, TRUE).
+	if (mEditWearable != NULL && !mEditWearable->getVisible() && mOutfitEdit != NULL)
+	{
+		mOutfitEdit->resetAccordionState();
+	}
+
+	// If we're exiting the edit wearable view, and the camera was not focused on the avatar
+	// (e.g. such as if we were editing a physics param), then skip the outfits edit mode since
+	// otherwise this would trigger the camera focus mode.
+	if (mEditWearable != NULL && mEditWearable->getVisible() && !gAgentCamera.cameraCustomizeAvatar())
+	{
+		showOutfitsInventoryPanel();
+		return;
+	}
+
+	toggleMyOutfitsPanel(FALSE);
+	toggleWearableEditPanel(FALSE, NULL, TRUE); // don't switch out of edit appearance mode
+	toggleOutfitEditPanel(TRUE);
+}
+
+void LLSidepanelAppearance::showWearableEditPanel(LLViewerWearable *wearable /* = NULL*/, BOOL disable_camera_switch)
+{
+	toggleMyOutfitsPanel(FALSE);
+	toggleOutfitEditPanel(FALSE, TRUE); // don't switch out of edit appearance mode
+	toggleWearableEditPanel(TRUE, wearable, disable_camera_switch);
+}
+
+void LLSidepanelAppearance::toggleMyOutfitsPanel(BOOL visible)
+{
+	if (!mPanelOutfitsInventory || mPanelOutfitsInventory->getVisible() == visible)
+	{
+		// visibility isn't changing, hence nothing to do
+		return;
+	}
+
+	mPanelOutfitsInventory->setVisible(visible);
+
+	// *TODO: Move these controls to panel_outfits_inventory.xml
+	// so that we don't need to toggle them explicitly.
+	mFilterEditor->setVisible(visible);
+	mNewOutfitBtn->setVisible(visible);
+	mCurrOutfitPanel->setVisible(visible);
+
+	if (visible)
+	{
+		mPanelOutfitsInventory->onOpen(LLSD());
+	}
+}
+
+void LLSidepanelAppearance::toggleOutfitEditPanel(BOOL visible, BOOL disable_camera_switch)
+{
+	if (!mOutfitEdit || mOutfitEdit->getVisible() == visible)
+	{
+		// visibility isn't changing, hence nothing to do
+		return;
+	}
+
+	mOutfitEdit->setVisible(visible);
+
+	if (visible)
+	{
+		mOutfitEdit->onOpen(LLSD());
+		LLVOAvatarSelf::onCustomizeStart(disable_camera_switch);
+	}
+	else 
+	{
+		if (!disable_camera_switch)   // if we're just switching between outfit and wearable editing, don't end customization.
+		{
+			LLVOAvatarSelf::onCustomizeEnd(disable_camera_switch);
+			LLAppearanceMgr::getInstance()->setOutfitDirty( FALSE );
+		}
+	}
+}
+
+void LLSidepanelAppearance::toggleWearableEditPanel(BOOL visible, LLViewerWearable *wearable, BOOL disable_camera_switch)
+{
+	if (!mEditWearable || mEditWearable->getVisible() == visible)
+	{
+		// visibility isn't changing, hence nothing to do
+		return;
+	}
+
+	if (!wearable)
+	{
+		wearable = gAgentWearables.getViewerWearable(LLWearableType::WT_SHAPE, 0);
+	}
+	if (!wearable)
+	{
+		return;
+	}
+
+	// Toggle panel visibility.
+	mEditWearable->setVisible(visible);
+
+	if (visible)
+	{
+		LLVOAvatarSelf::onCustomizeStart(disable_camera_switch);
+		mEditWearable->setWearable(wearable, disable_camera_switch);
+		mEditWearable->onOpen(LLSD()); // currently no-op, just for consistency
+	}
+	else
+	{
+		// Save changes if closing.
+		mEditWearable->saveChanges();
+		if (!disable_camera_switch)   // if we're just switching between outfit and wearable editing, don't end customization.
+		{
+			LLVOAvatarSelf::onCustomizeEnd(disable_camera_switch);
+		}
+	}
+}
+
+void LLSidepanelAppearance::refreshCurrentOutfitName(const std::string& name)
+{
+	// Set current outfit status (wearing/unsaved).
+	bool dirty = LLAppearanceMgr::getInstance()->isOutfitDirty();
+	std::string cof_status_str = getString(dirty ? "Unsaved Changes" : "Now Wearing");
+	mOutfitStatus->setText(cof_status_str);
+
+	if (name == "")
+	{
+		std::string outfit_name;
+		if (LLAppearanceMgr::getInstance()->getBaseOutfitName(outfit_name))
+		{
+				mCurrentLookName->setText(outfit_name);
+				return;
+		}
+
+		std::string string_name = gAgentWearables.isCOFChangeInProgress() ? "Changing outfits" : "No Outfit";
+		mCurrentLookName->setText(getString(string_name));
+		mOpenOutfitBtn->setEnabled(FALSE);
+	}
+	else
+	{
+		mCurrentLookName->setText(name);
+		// Can't just call update verbs since the folder link may not have been created yet.
+		mOpenOutfitBtn->setEnabled(TRUE);
+	}
+}
+
+//static
+void LLSidepanelAppearance::editWearable(LLViewerWearable *wearable, LLView *data, BOOL disable_camera_switch)
+{
+	LLFloaterSidePanelContainer::showPanel("appearance", LLSD());
+
+	LLSidepanelAppearance *panel = dynamic_cast<LLSidepanelAppearance*>(data);
+	if (panel)
+	{
+		panel->showWearableEditPanel(wearable, disable_camera_switch);
+	}
+}
+
+// Fetch currently worn items and only enable the New Look button after everything's been
+// fetched.  Alternatively, we could stuff this logic into llagentwearables::makeNewOutfitLinks.
+void LLSidepanelAppearance::fetchInventory()
+{
+
+	mNewOutfitBtn->setEnabled(false);
+	uuid_vec_t ids;
+	LLUUID item_id;
+	for(S32 type = (S32)LLWearableType::WT_SHAPE; type < (S32)LLWearableType::WT_COUNT; ++type)
+	{
+		for (U32 index = 0; index < gAgentWearables.getWearableCount((LLWearableType::EType)type); ++index)
+		{
+			item_id = gAgentWearables.getWearableItemID((LLWearableType::EType)type, index);
+			if(item_id.notNull())
+			{
+				ids.push_back(item_id);
+			}
+		}
+	}
+
+	if (isAgentAvatarValid())
+	{
+		for (LLVOAvatar::attachment_map_t::const_iterator iter = gAgentAvatarp->mAttachmentPoints.begin(); 
+			 iter != gAgentAvatarp->mAttachmentPoints.end(); ++iter)
+		{
+			LLViewerJointAttachment* attachment = iter->second;
+			if (!attachment) continue;
+			for (LLViewerJointAttachment::attachedobjs_vec_t::iterator attachment_iter = attachment->mAttachedObjects.begin();
+				 attachment_iter != attachment->mAttachedObjects.end();
+				 ++attachment_iter)
+			{
+				LLViewerObject* attached_object = (*attachment_iter);
+				if (!attached_object) continue;
+				const LLUUID& item_id = attached_object->getAttachmentItemID();
+				if (item_id.isNull()) continue;
+				ids.push_back(item_id);
+			}
+		}
+	}
+
+	LLCurrentlyWornFetchObserver *fetch_worn = new LLCurrentlyWornFetchObserver(ids, this);
+	fetch_worn->startFetch();
+	// If no items to be fetched, done will never be triggered.
+	// TODO: Change LLInventoryFetchItemsObserver::fetchItems to trigger done() on this condition.
+	if (fetch_worn->isFinished())
+	{
+		fetch_worn->done();
+	}
+	else
+	{
+		gInventory.addObserver(fetch_worn);
+	}
+}
+
+void LLSidepanelAppearance::inventoryFetched()
+{
+	mNewOutfitBtn->setEnabled(true);
+}
+
+void LLSidepanelAppearance::setWearablesLoading(bool val)
+{
+	getChildView("wearables_loading_indicator")->setVisible( val);
+	getChildView("edit_outfit_btn")->setVisible( !val);
+
+	if (!val)
+	{
+		// refresh outfit name when COF is already changed.
+		refreshCurrentOutfitName();
+	}
+}
+
+void LLSidepanelAppearance::showDefaultSubpart()
+{
+	if (mEditWearable->getVisible())
+	{
+		mEditWearable->showDefaultSubpart();
+	}
+}
+
+void LLSidepanelAppearance::updateScrollingPanelList()
+{
+	if (mEditWearable->getVisible())
+	{
+		mEditWearable->updateScrollingPanelList();
+	}
+}
-- 
GitLab


From 008e078bf5c7bd3b72eacecb200733715841afe4 Mon Sep 17 00:00:00 2001
From: prep <prep@lindenlab.com>
Date: Thu, 10 Jan 2013 11:26:05 -0500
Subject: [PATCH 223/436] SH-3142: Added a debug option that circumvents the
 precache delay when teleporting.

---
 indra/newview/app_settings/settings.xml | 12 ++++++++++++
 indra/newview/llviewerdisplay.cpp       | 11 +++++++++--
 2 files changed, 21 insertions(+), 2 deletions(-)

diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index c817579e9e6..4b93cef57ff 100755
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -14170,5 +14170,17 @@
     <key>Value</key>
     <integer>0</integer>
   </map>
+
+  <key>DisablePrecacheDelayAfterTeleporting</key>
+  <map>
+    <key>Comment</key>
+    <string>Disables the artificial delay in the viewer that precaches some incoming assets</string>
+    <key>Persist</key>
+    <integer>0</integer>
+    <key>Type</key>
+    <string>Boolean</string>
+    <key>Value</key>
+    <integer>0</integer>
+  </map>
 </map>
 </llsd>
diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp
index bd8377e2810..25abf768cbe 100644
--- a/indra/newview/llviewerdisplay.cpp
+++ b/indra/newview/llviewerdisplay.cpp
@@ -417,14 +417,21 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
 			gAgent.setTeleportMessage(
 				LLAgent::sTeleportProgressMessages["arriving"]);
 			gTextureList.mForceResetTextureStats = TRUE;
-			gAgentCamera.resetView(TRUE, TRUE);
-			
+			gAgentCamera.resetView(TRUE, TRUE);	
+			if ( gSavedSettings.getBOOL("DisablePrecacheDelayAfterTeleporting") )
+			{
+				gViewerWindow->setShowProgress(FALSE);
+				gTeleportDisplay = FALSE;
+				gAgent.setTeleportState( LLAgent::TELEPORT_NONE );
+			}
+				
 			break;
 
 		case LLAgent::TELEPORT_ARRIVING:
 			// Make the user wait while content "pre-caches"
 			{
 				F32 arrival_fraction = (gTeleportArrivalTimer.getElapsedTimeF32() / TELEPORT_ARRIVAL_DELAY);
+			
 				if( arrival_fraction > 1.f )
 				{
 					arrival_fraction = 1.f;
-- 
GitLab


From 5e7f36541b503bb2bd03e121c7ef13025f69065a Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Thu, 10 Jan 2013 13:22:48 -0500
Subject: [PATCH 224/436] SH-3639 WIP - increased retry interval to allow for
 intermittent extremely slow responses

---
 indra/newview/llappearancemgr.cpp | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 8b4adc87857..bf35382b7a1 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -155,6 +155,11 @@ LLUUID findDescendentCategoryIDByName(const LLUUID& parent_id, const std::string
 	}
 }
 
+// We want this to be much lower (e.g. 15.0 is usually fine), bumping
+// up for now until we can diagnose some cases of very slow response
+// to requests.
+const F32 DEFAULT_RETRY_AFTER_INTERVAL = 300.0;
+
 class LLCallAfterInventoryBatchMgr: public LLEventTimer 
 {
 public:
@@ -162,7 +167,7 @@ class LLCallAfterInventoryBatchMgr: public LLEventTimer
 								 const std::string& phase_name,
 								 nullary_func_t on_completion_func,
 								 nullary_func_t on_failure_func = no_op,
-								 F32 retry_after = 15.0,
+								 F32 retry_after = DEFAULT_RETRY_AFTER_INTERVAL,
 								 S32 max_retries = 2
 		):
 		mDstCatID(dst_cat_id),
@@ -365,7 +370,7 @@ class LLCallAfterInventoryCopyMgr: public LLCallAfterInventoryBatchMgr
 								const std::string& phase_name,
 								nullary_func_t on_completion_func,
 								nullary_func_t on_failure_func = no_op,
-								 F32 retry_after = 15.0,
+								 F32 retry_after = DEFAULT_RETRY_AFTER_INTERVAL,
 								 S32 max_retries = 2
 		):
 		LLCallAfterInventoryBatchMgr(dst_cat_id, phase_name, on_completion_func, on_failure_func, retry_after, max_retries)
@@ -403,7 +408,7 @@ class LLCallAfterInventoryLinkMgr: public LLCallAfterInventoryBatchMgr
 								const std::string& phase_name,
 								nullary_func_t on_completion_func,
 								nullary_func_t on_failure_func = no_op,
-								 F32 retry_after = 15.0,
+								 F32 retry_after = DEFAULT_RETRY_AFTER_INTERVAL,
 								 S32 max_retries = 2
 		):
 		LLCallAfterInventoryBatchMgr(dst_cat_id, phase_name, on_completion_func, on_failure_func, retry_after, max_retries)
-- 
GitLab


From 0f753a530b914370c7c89c198ee335833ac3e6a1 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Fri, 11 Jan 2013 11:36:11 -0500
Subject: [PATCH 225/436] SH-3639 WIP - cleaned up some diagnostics and added
 fault injection ability. Disabled inventory retries for now.

---
 indra/newview/app_settings/logcontrol.xml |  2 +-
 indra/newview/app_settings/settings.xml   | 11 ++++++
 indra/newview/llappearancemgr.cpp         | 43 +++++++++++++++++++----
 indra/newview/llviewertexture.cpp         |  2 +-
 indra/newview/llvoavatarself.cpp          |  2 +-
 indra/newview/llvovolume.cpp              |  3 +-
 6 files changed, 53 insertions(+), 10 deletions(-)

diff --git a/indra/newview/app_settings/logcontrol.xml b/indra/newview/app_settings/logcontrol.xml
index 64122bbb6ce..12590390107 100755
--- a/indra/newview/app_settings/logcontrol.xml
+++ b/indra/newview/app_settings/logcontrol.xml
@@ -42,8 +42,8 @@
 						</array>
 					<key>tags</key>
 						<array>
-						<!-- sample entry for debugging specific items	
 						     <string>Avatar</string>
+						<!-- sample entry for debugging specific items	
 						     <string>Voice</string>		
 						-->
 						</array>
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 4b93cef57ff..32b29202790 100755
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -4326,6 +4326,17 @@
       <key>Value</key>
         <real>0.0</real>
     </map>
+    <key>InventoryDebugSimulateLateOpRate</key>
+    <map>
+      <key>Comment</key>
+        <string>Rate at which we simulate late-completing copy/link requests in some operations</string>
+      <key>Persist</key>
+        <integer>1</integer>
+      <key>Type</key>
+        <string>F32</string>
+      <key>Value</key>
+        <real>0.0</real>
+    </map>
     <key>InventoryDisplayInbox</key>
     <map>
         <key>Comment</key>
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index bf35382b7a1..7edba842b89 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -49,6 +49,7 @@
 #include "llvoavatarself.h"
 #include "llviewerregion.h"
 #include "llwearablelist.h"
+#include "llsdutil.h"
 
 std::string self_av_string()
 {
@@ -160,6 +161,11 @@ LLUUID findDescendentCategoryIDByName(const LLUUID& parent_id, const std::string
 // to requests.
 const F32 DEFAULT_RETRY_AFTER_INTERVAL = 300.0;
 
+// Given the current back-end problems, retrying is causing too many
+// duplicate items. Bump this back to 2 once they are resolved (or can
+// leave at 0 if the operations become actually reliable).
+const S32 DEFAULT_MAX_RETRIES = 0;
+
 class LLCallAfterInventoryBatchMgr: public LLEventTimer 
 {
 public:
@@ -168,7 +174,7 @@ class LLCallAfterInventoryBatchMgr: public LLEventTimer
 								 nullary_func_t on_completion_func,
 								 nullary_func_t on_failure_func = no_op,
 								 F32 retry_after = DEFAULT_RETRY_AFTER_INTERVAL,
-								 S32 max_retries = 2
+								 S32 max_retries = DEFAULT_MAX_RETRIES
 		):
 		mDstCatID(dst_cat_id),
 		mTrackingPhase(phase_name),
@@ -228,6 +234,13 @@ class LLCallAfterInventoryBatchMgr: public LLEventTimer
 
 	void onOp(const LLUUID& src_id, const LLUUID& dst_id, LLTimer timestamp)
 	{
+		if (ll_frand() < gSavedSettings.getF32("InventoryDebugSimulateLateOpRate"))
+		{
+			llwarns << "Simulating late operation by punting handling to later" << llendl;
+			doAfterInterval(boost::bind(&LLCallAfterInventoryBatchMgr::onOp,this,src_id,dst_id,timestamp),
+							mRetryAfter);
+			return;
+		}
 		mPendingRequests--;
 		F32 elapsed = timestamp.getElapsedTimeF32();
 		LL_DEBUGS("Avatar") << "op done, src_id " << src_id << " dst_id " << dst_id << " after " << elapsed << " seconds" << llendl;
@@ -371,7 +384,7 @@ class LLCallAfterInventoryCopyMgr: public LLCallAfterInventoryBatchMgr
 								nullary_func_t on_completion_func,
 								nullary_func_t on_failure_func = no_op,
 								 F32 retry_after = DEFAULT_RETRY_AFTER_INTERVAL,
-								 S32 max_retries = 2
+								 S32 max_retries = DEFAULT_MAX_RETRIES
 		):
 		LLCallAfterInventoryBatchMgr(dst_cat_id, phase_name, on_completion_func, on_failure_func, retry_after, max_retries)
 	{
@@ -409,7 +422,7 @@ class LLCallAfterInventoryLinkMgr: public LLCallAfterInventoryBatchMgr
 								nullary_func_t on_completion_func,
 								nullary_func_t on_failure_func = no_op,
 								 F32 retry_after = DEFAULT_RETRY_AFTER_INTERVAL,
-								 S32 max_retries = 2
+								 S32 max_retries = DEFAULT_MAX_RETRIES
 		):
 		LLCallAfterInventoryBatchMgr(dst_cat_id, phase_name, on_completion_func, on_failure_func, retry_after, max_retries)
 	{
@@ -1653,6 +1666,7 @@ void LLAppearanceMgr::purgeCategory(const LLUUID& category, bool keep_outfit_lin
 			continue;
 		if (item->getIsLinkType())
 		{
+#if 0
 			if (keep_items && keep_items->find(item) != LLInventoryModel::item_array_t::FAIL)
 			{
 				llinfos << "preserved item" << llendl;
@@ -1661,7 +1675,10 @@ void LLAppearanceMgr::purgeCategory(const LLUUID& category, bool keep_outfit_lin
 			{
 				gInventory.purgeObject(item->getUUID());
 			}
+#else
+		gInventory.purgeObject(item->getUUID());
 		}
+#endif
 	}
 }
 
@@ -2981,13 +2998,27 @@ class RequestAgentUpdateAppearanceResponder: public LLHTTPClient::Responder
 	// Successful completion.
 	/* virtual */ void result(const LLSD& content)
 	{
-		llinfos << "request OK" << llendl;
+		LL_DEBUGS("Avatar") << "content: " << ll_pretty_print_sd(content) << LL_ENDL;
+		if (content["success"].asBoolean())
+		{
+			LL_DEBUGS("Avatar") << "OK" << LL_ENDL;
+		}
+		else
+		{
+			onFailure(200);
+		}
 	}
 
 	// Error
-	/*virtual*/ void error(U32 status, const std::string& reason)
+	/*virtual*/ void errorWithContent(U32 status, const std::string& reason, const LLSD& content)
 	{
 		llwarns << "appearance update request failed, status: " << status << " reason: " << reason << llendl;
+		LL_DEBUGS("Avatar") << "content: " << ll_pretty_print_sd(content) << LL_ENDL;
+		onFailure(status);
+	}	
+
+	void onFailure(U32 status)
+	{
 		F32 seconds_to_wait;
 		if (mRetryPolicy->shouldRetry(status,seconds_to_wait))
 		{
@@ -3001,7 +3032,7 @@ class RequestAgentUpdateAppearanceResponder: public LLHTTPClient::Responder
 		{
 			llwarns << "giving up after too many retries" << llendl;
 		}
-	}	
+	}
 
 	LLPointer<LLHTTPRetryPolicy> mRetryPolicy;
 };
diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp
index 5763fe307ea..6c773368d37 100755
--- a/indra/newview/llviewertexture.cpp
+++ b/indra/newview/llviewertexture.cpp
@@ -1161,7 +1161,7 @@ void LLViewerFetchedTexture::destroyTexture()
 		return ;
 	}
 
-	LL_DEBUGS("Avatar") << mID << llendl;
+	//LL_DEBUGS("Avatar") << mID << llendl;
 	destroyGLTexture() ;
 	mFullyLoaded = FALSE ;
 }
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index 8f118f51108..9b43db7087c 100755
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -2256,7 +2256,7 @@ void LLVOAvatarSelf::sendAppearanceChangeMetrics()
 	if (S32_MAX == ++report_sequence)
 		report_sequence = 0;
 
-	LL_DEBUGS("Avatar") << avString() << "message: " << ll_pretty_print_sd(msg) << LL_ENDL;
+//	LL_DEBUGS("Avatar") << avString() << "message: " << ll_pretty_print_sd(msg) << LL_ENDL;
 	std::string	caps_url;
 	if (getRegion())
 	{
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
index 9078cce9321..3831a13f413 100644
--- a/indra/newview/llvovolume.cpp
+++ b/indra/newview/llvovolume.cpp
@@ -1146,9 +1146,10 @@ void LLVOVolume::sculpt()
 		}
 		else if (current_discard > MAX_DISCARD_LEVEL)
 		{
+#if 0
 			llwarns << "WARNING!!: Current discard of sculpty at " << current_discard 
 				<< " is more than than allowed max of " << MAX_DISCARD_LEVEL << llendl;
-			
+#endif
 			// corrupted volume... don't update the sculpty			
 			return;
 		}
-- 
GitLab


From 6390188ff35c47c93748c6fe3023d0bad219dea6 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Mon, 14 Jan 2013 16:02:28 -0500
Subject: [PATCH 226/436] removed yet another logcontrol.xml commit

---
 indra/newview/app_settings/logcontrol.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/newview/app_settings/logcontrol.xml b/indra/newview/app_settings/logcontrol.xml
index 12590390107..64122bbb6ce 100755
--- a/indra/newview/app_settings/logcontrol.xml
+++ b/indra/newview/app_settings/logcontrol.xml
@@ -42,8 +42,8 @@
 						</array>
 					<key>tags</key>
 						<array>
-						     <string>Avatar</string>
 						<!-- sample entry for debugging specific items	
+						     <string>Avatar</string>
 						     <string>Voice</string>		
 						-->
 						</array>
-- 
GitLab


From 85e993224cfc67830f9586c1767a860a1d0c0deb Mon Sep 17 00:00:00 2001
From: prep <prep@lindenlab.com>
Date: Mon, 14 Jan 2013 17:21:13 -0500
Subject: [PATCH 227/436] SH-3632:Undo change is now disabled after you save
 and return to the edit out fit panel (this behavior is now make
 sunshine-internal consistent with 3.4.1)

---
 indra/newview/llsidepanelappearance.cpp | 1 +
 1 file changed, 1 insertion(+)

diff --git a/indra/newview/llsidepanelappearance.cpp b/indra/newview/llsidepanelappearance.cpp
index f0844dd9a41..60ea675da4a 100644
--- a/indra/newview/llsidepanelappearance.cpp
+++ b/indra/newview/llsidepanelappearance.cpp
@@ -410,6 +410,7 @@ void LLSidepanelAppearance::toggleWearableEditPanel(BOOL visible, LLViewerWearab
 	{
 		// Save changes if closing.
 		mEditWearable->saveChanges();
+		LLAppearanceMgr::getInstance()->setOutfitDirty( FALSE );
 		if (!disable_camera_switch)   // if we're just switching between outfit and wearable editing, don't end customization.
 		{
 			LLVOAvatarSelf::onCustomizeEnd(disable_camera_switch);
-- 
GitLab


From 4b36a56110b3af7fbc8d3a07d9bbfbb9c2a83ae9 Mon Sep 17 00:00:00 2001
From: eli <none@none>
Date: Mon, 14 Jan 2013 17:33:45 -0800
Subject: [PATCH 228/436] sync with viewer-development

---
 .../default/xui/en/floater_my_inventory.xml   |    2 +-
 .../skins/default/xui/en/floater_tools.xml    |    2 +-
 .../default/xui/en/floater_ui_preview.xml     |    2 +-
 .../default/xui/en/menu_inventory_add.xml     |    2 +-
 .../skins/default/xui/en/menu_outfit_gear.xml |   14 +
 .../skins/default/xui/en/menu_viewer.xml      |   79 +-
 .../skins/default/xui/en/notifications.xml    | 3426 ++++++++++++++++-
 .../default/xui/en/panel_group_roles.xml      |    2 +-
 .../xui/en/panel_media_settings_general.xml   |    2 +-
 .../skins/default/xui/en/panel_script_ed.xml  |    1 +
 .../default/xui/en/sidepanel_task_info.xml    |    4 +
 .../newview/skins/default/xui/en/strings.xml  |    4 +-
 12 files changed, 3504 insertions(+), 36 deletions(-)

diff --git a/indra/newview/skins/default/xui/en/floater_my_inventory.xml b/indra/newview/skins/default/xui/en/floater_my_inventory.xml
index ea44fd493ec..178987962b8 100644
--- a/indra/newview/skins/default/xui/en/floater_my_inventory.xml
+++ b/indra/newview/skins/default/xui/en/floater_my_inventory.xml
@@ -6,7 +6,7 @@
  height="570"
  help_topic="sidebar_inventory"
  min_width="333"
- min_height="560"
+ min_height="570"
  name="floater_my_inventory"
  save_rect="true"
  save_visibility="true"
diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml
index 5204efbf656..436e9f8fed6 100644
--- a/indra/newview/skins/default/xui/en/floater_tools.xml
+++ b/indra/newview/skins/default/xui/en/floater_tools.xml
@@ -2994,7 +2994,7 @@ even though the user gets a free copy.
                          use_ellipses="true"
 			 read_only="true"
 			 name="media_info"
-			 width="280" />
+			 width="180" />
       <web_browser
         visible="false"
         enabled="false"
diff --git a/indra/newview/skins/default/xui/en/floater_ui_preview.xml b/indra/newview/skins/default/xui/en/floater_ui_preview.xml
index 06d43272935..eb012948315 100644
--- a/indra/newview/skins/default/xui/en/floater_ui_preview.xml
+++ b/indra/newview/skins/default/xui/en/floater_ui_preview.xml
@@ -5,7 +5,7 @@
  height="640"
  layout="topleft"
  min_height="230"
- min_width="650"
+ min_width="750"
  name="gui_preview_tool"
  help_topic="gui_preview_tool"
  single_instance="true"
diff --git a/indra/newview/skins/default/xui/en/menu_inventory_add.xml b/indra/newview/skins/default/xui/en/menu_inventory_add.xml
index e91f5af3d53..29720a680b2 100644
--- a/indra/newview/skins/default/xui/en/menu_inventory_add.xml
+++ b/indra/newview/skins/default/xui/en/menu_inventory_add.xml
@@ -3,7 +3,7 @@
  layout="topleft"
  left="0"
  mouse_opaque="false"
- can_tear_off="true"
+ can_tear_off="false"
  name="menu_inventory_add"
  visible="false">
             <menu
diff --git a/indra/newview/skins/default/xui/en/menu_outfit_gear.xml b/indra/newview/skins/default/xui/en/menu_outfit_gear.xml
index fc7272b9047..3b8ace63086 100644
--- a/indra/newview/skins/default/xui/en/menu_outfit_gear.xml
+++ b/indra/newview/skins/default/xui/en/menu_outfit_gear.xml
@@ -194,6 +194,20 @@
             <!-- copied from menu_inventory_add.xml -->
 
     <menu_item_separator name="sepatator2" />
+    <menu_item_call
+     label="Expand all folders"
+     layout="topleft"
+     name="expand">
+        <on_click
+         function="Gear.Expand" />
+    </menu_item_call>
+    <menu_item_call
+     label="Collapse all folders"
+     layout="topleft"
+     name="collapse">
+        <on_click
+         function="Gear.Collapse" />
+    </menu_item_call>
     <menu_item_call
      label="Rename Outfit"
      layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml
index 18932a32d00..caa36e7302c 100644
--- a/indra/newview/skins/default/xui/en/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/en/menu_viewer.xml
@@ -276,30 +276,39 @@
              parameter="gestures" />
         </menu_item_check>
         <menu_item_separator/>
-        <menu_item_call
+        <menu_item_check
          label="Friends"
          name="My Friends"
          shortcut="control|shift|F">
-            <menu_item_call.on_click
+            <menu_item_check.on_check
+             function="SideTray.CheckPanelPeopleTab"
+             parameter="friends_panel" />
+            <menu_item_check.on_click
              function="SideTray.PanelPeopleTab"
              parameter="friends_panel" />
-            </menu_item_call>
-        <menu_item_call
+            </menu_item_check>
+        <menu_item_check
          label="Groups"
          name="My Groups"
          shortcut="control|shift|G">
-            <menu_item_call.on_click
+         	<menu_item_check.on_check
+             function="SideTray.CheckPanelPeopleTab"
+             parameter="groups_panel" />
+            <menu_item_check.on_click
              function="SideTray.PanelPeopleTab"
              parameter="groups_panel" />
-        </menu_item_call>
-        <menu_item_call
+        </menu_item_check>
+        <menu_item_check
          label="Nearby people"
          name="Active Speakers"
          shortcut="control|shift|A">
-            <menu_item_call.on_click
+        	 <menu_item_check.on_check
+             function="SideTray.CheckPanelPeopleTab"
+             parameter="nearby_panel" />
+            <menu_item_check.on_click
               function="SideTray.PanelPeopleTab"
               parameter="nearby_panel" />
-        </menu_item_call>
+        </menu_item_check>
         <menu_item_call
          label="Block List"
          name="Block List">
@@ -875,14 +884,6 @@
 			<menu_item_call.on_enable
                function="Tools.EnableTakeCopy" />
           </menu_item_call>
-          <menu_item_call
-			 label="Save Back to My Inventory"
-			 name="Save Object Back to My Inventory">
-			<menu_item_call.on_click
-               function="Tools.SaveToInventory" />
-			<menu_item_call.on_enable
-               function="Tools.EnableSaveToInventory" />
-          </menu_item_call>
           <menu_item_call
 			 label="Save Back to Object Contents"
 			 name="Save Object Back to Object Contents">
@@ -3185,6 +3186,40 @@
                      parameter="AllowSelectAvatar" />
                 </menu_item_check>
             </menu>
+            <menu
+             create_jump_keys="true"
+             label="Animation Speed"
+             name="Animation Speed"
+             tear_off="true">
+                <menu_item_call
+                 label="All Animations 10% Faster"
+                 name="All Animations 10 Faster">
+                    <menu_item_call.on_click
+                     function="Advanced.AnimTenFaster" />
+                </menu_item_call>
+                <menu_item_call
+                 label="All Animations 10% Slower"
+                 name="All Animations 10 Slower">
+                    <menu_item_call.on_click
+                     function="Advanced.AnimTenSlower" />
+                </menu_item_call>
+                <menu_item_call
+                 label="Reset All Animation Speed"
+                 name="Reset All Animation Speed">
+                    <menu_item_call.on_click
+                     function="Advanced.AnimResetAll" />
+                </menu_item_call>
+				<menu_item_check
+				 label="Slow Motion Animations"
+				 name="Slow Motion Animations">
+					<menu_item_check.on_check
+					 function="CheckControl"
+					 parameter="SlowMotionAnimation" />
+					<menu_item_check.on_click
+					 function="ToggleControl"
+					 parameter="SlowMotionAnimation" />
+				</menu_item_check>
+            </menu>
             <menu_item_call
              label="Force Params to Default"
              name="Force Params to Default">
@@ -3201,16 +3236,6 @@
                  function="Advanced.ToggleAnimationInfo"
                  parameter="" />
             </menu_item_check>
-            <menu_item_check
-             label="Slow Motion Animations"
-             name="Slow Motion Animations">
-                <menu_item_check.on_check
-                 function="CheckControl"
-                 parameter="SlowMotionAnimation" />
-                <menu_item_check.on_click
-                 function="ToggleControl"
-                 parameter="SlowMotionAnimation" />
-            </menu_item_check>
             <menu_item_check
              label="Show Look At"
              name="Show Look At">
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index 9dae77a3042..44c18c2cce7 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -1291,6 +1291,45 @@ Visit [_URL] for more information?
     <tag>fail</tag>
   </notification>
 
+  <notification
+   icon="alertmodal.tga"
+   name="AMDOldDriver"
+   type="alertmodal">
+    There is likely a newer driver for your graphics chip.  Updating graphics drivers can substantially improve performance.
+
+    Visit [_URL] to check for driver updates?
+    <tag>confirm</tag>
+    <url option="0" name="url">
+      http://support.amd.com/us/Pages/AMDSupportHub.aspx
+    </url>
+    <usetemplate
+     ignoretext="My graphics driver is out of date"
+     name="okcancelignore"
+     notext="No"
+     yestext="Yes"/>
+    <tag>fail</tag>
+  </notification>
+
+  <notification
+ icon="alertmodal.tga"
+ name="NVIDIAOldDriver"
+ type="alertmodal">
+    There is likely a newer driver for your graphics chip.  Updating graphics drivers can substantially improve performance.
+
+    Visit [_URL] to check for driver updates?
+    <tag>confirm</tag>
+    <url option="0" name="url">
+      http://www.nvidia.com/Download/index.aspx?lang=en-us
+    </url>
+    <usetemplate
+     ignoretext="My graphics driver is out of date"
+     name="okcancelignore"
+     notext="No"
+     yestext="Yes"/>
+    <tag>fail</tag>
+  </notification>
+
+
   <notification
    icon="alertmodal.tga"
    name="UnknownGPU"
@@ -6744,7 +6783,7 @@ Is this OK?
    type="notify">
 Warning: The object &apos;&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;&apos; wants total access to your Linden Dollars account. If you allow access, it can remove funds from your account at any time, or empty your account completely, on an ongoing basis with no additional warnings.
   
-It is rare that such a request is legitimate. Do not allow access if you do not fully understand why it wants access to your account.
+Do not allow access if you do not fully understand why it wants access to your account.
 
   <tag>confirm</tag>
     <form name="form">
@@ -8252,4 +8291,3389 @@ Attempt cancelled.
      yestext="Yes"/>
   </notification>
 
+
+  <notification
+   icon="alertmodal.tga"
+   name="AvatarFrozen"
+   type="notify">
+   <tag>fail</tag>
+[AV_FREEZER] has frozen you. You cannot move or interact with the world.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="AvatarFrozenDuration"
+   type="notify">
+   <tag>fail</tag>
+[AV_FREEZER] has frozen you for [AV_FREEZE_TIME] seconds. You cannot move or interact with the world.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="YouFrozeAvatar"
+   type="notify">
+   <tag>fail</tag>
+Avatar frozen.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="AvatarHasUnFrozenYou"
+   type="notify">
+   <tag>fail</tag>
+[AV_FREEZER] has unfrozen you.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="AvatarUnFrozen"
+   type="notify">
+   <tag>fail</tag>
+Avatar unfrozen.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="AvatarFreezeFailure"
+   type="notify">
+   <tag>fail</tag>
+Freeze failed because you don't have admin permission for that parcel.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="AvatarFreezeThaw"
+   type="notify">
+   <tag>fail</tag>
+Your freeze expired, go about your business.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="AvatarCantFreeze"
+   type="notify">
+   <tag>fail</tag>
+Sorry, can't freeze that user.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="NowOwnObject"
+   type="notify">
+   <tag>fail</tag>
+You are now the owner of object [OBJECT_NAME]
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantRezOnLand"
+   type="notify">
+   <tag>fail</tag>
+Can't rez object at [OBJECT_POS] because the owner of this land does not allow it.  Use the land tool to see land ownership.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="RezFailTooManyRequests"
+   type="notify">
+   <tag>fail</tag>
+Object can not be rezzed because there are too many requests.
+  </notification>
+ 
+  <notification
+   icon="alertmodal.tga"
+   name="SitFailCantMove"
+   type="notify">
+   <tag>fail</tag>
+You cannot sit because you cannot move at this time.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="SitFailNotAllowedOnLand"
+   type="notify">
+   <tag>fail</tag>
+You cannot sit because you are not allowed on that land.
+  </notification>
+ 
+  <notification
+   icon="alertmodal.tga"
+   name="SitFailNotSameRegion"
+   type="notify">
+   <tag>fail</tag>
+Try moving closer.  Can't sit on object because
+it is not in the same region as you.
+  </notification>
+  
+  <notification
+   icon="alertmodal.tga"
+   name="NoNewObjectRegionFull"
+   type="notify">
+   <tag>fail</tag>
+Unable to create new object. The region is full.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="FailedToPlaceObject"
+   type="notify">
+   <tag>fail</tag>
+Failed to place object at specified location.  Please try again.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="NoOwnNoGardening"
+   type="notify">
+   <tag>fail</tag>
+You Can't create trees and grass on land you don't own.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="NoCopyPermsNoObject"
+   type="notify">
+   <tag>fail</tag>
+Copy failed because you lack permission to copy the object '[OBJ_NAME]'.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="NoTransPermsNoObject"
+   type="notify">
+   <tag>fail</tag>
+Copy failed because the object '[OBJ_NAME]' cannot be transferred to you.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="AddToNavMeshNoCopy"
+   type="notify">
+   <tag>fail</tag>
+Copy failed because the object '[OBJ_NAME]' contributes to navmesh.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="DupeWithNoRootsSelected"
+   type="notify">
+   <tag>fail</tag>
+Duplicate with no root objects selected.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantDupeCuzRegionIsFull"
+   type="notify">
+   <tag>fail</tag>
+Can't duplicate objects because the region is full.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantDupeCuzParcelNotFound"
+   type="notify">
+   <tag>fail</tag>
+Can't duplicate objects - Can't find the parcel they are on.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantCreateCuzParcelFull"
+   type="notify">
+   <tag>fail</tag>
+Can't create object because 
+the parcel is full.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="RezAttemptFailed"
+   type="notify">
+   <tag>fail</tag>
+Attempt to rez an object failed.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="ToxicInvRezAttemptFailed"
+   type="notify">
+   <tag>fail</tag>
+Unable to create item that has caused problems on this region.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="InvItemIsBlacklisted"
+   type="notify">
+   <tag>fail</tag>
+That inventory item has been blacklisted.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="NoCanRezObjects"
+   type="notify">
+   <tag>fail</tag>
+You are not currently allowed to create objects.
+  </notification>
+ 
+  <notification
+   icon="alertmodal.tga"
+   name="LandSearchBlocked"
+   type="notify">
+   <tag>fail</tag>
+Land Search Blocked.
+You have performed too many land searches too quickly.
+Please try again in a minute.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="NotEnoughResourcesToAttach"
+   type="notify">
+   <tag>fail</tag>
+Not enough script resources available to attach object!
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="YouDiedAndGotTPHome"
+   type="notify">
+   <tag>fail</tag>
+You died and have been teleported to your home location
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="EjectComingSoon"
+   type="notify">
+   <tag>fail</tag>
+You are no longer allowed here and have [EJECT_TIME] seconds to leave.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="NoEnterServerFull"
+   type="notify">
+   <tag>fail</tag>
+You can't enter this region because 
+the server is full.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="SaveBackToInvDisabled"
+   type="notify">
+   <tag>fail</tag>
+Save Back To Inventory has been disabled.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="NoExistNoSaveToContents"
+   type="notify">
+   <tag>fail</tag>
+Cannot save '[OBJ_NAME]' to object contents because the object it was rezzed from no longer exists.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="NoModNoSaveToContents"
+   type="notify">
+   <tag>fail</tag>
+Cannot save '[OBJ_NAME]' to object contents because you do not have permission to modify the object '[DEST_NAME]'.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="NoSaveBackToInvDisabled"
+   type="notify">
+   <tag>fail</tag>
+Cannot save '[OBJ_NAME]' back to inventory -- this operation has been disabled.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="NoCopyNoSelCopy"
+   type="notify">
+   <tag>fail</tag>
+You cannot copy your selection because you do not have permission to copy the object '[OBJ_NAME]'.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="NoTransNoSelCopy"
+   type="notify">
+   <tag>fail</tag>
+You cannot copy your selection because the object '[OBJ_NAME]' is not transferrable.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="NoTransNoCopy"
+   type="notify">
+   <tag>fail</tag>
+You cannot copy your selection because the object '[OBJ_NAME]' is not transferrable.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="NoPermsNoRemoval"
+   type="notify">
+   <tag>fail</tag>
+Removal of the object '[OBJ_NAME]' from the simulator is disallowed by the permissions system.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="NoModNoSaveSelection"
+   type="notify">
+   <tag>fail</tag>
+Cannot save your selection because you do not have permission to modify the object '[OBJ_NAME]'.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="NoCopyNoSaveSelection"
+   type="notify">
+   <tag>fail</tag>
+Cannot save your selection because the object '[OBJ_NAME]' is not copyable.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="NoModNoTaking"
+   type="notify">
+   <tag>fail</tag>
+You cannot take your selection because you do not have permission to modify the object '[OBJ_NAME]'.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="RezDestInternalError"
+   type="notify">
+   <tag>fail</tag>
+Internal Error: Unknown destination type.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="DeleteFailObjNotFound"
+   type="notify">
+   <tag>fail</tag>
+Delete failed because object not found
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="SorryCantEjectUser"
+   type="notify">
+   <tag>fail</tag>
+Sorry, can't eject that user.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="RegionSezNotAHome"
+   type="notify">
+   <tag>fail</tag>
+This region does not allow you to set your home location here.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="HomeLocationLimits"
+   type="notify">
+   <tag>fail</tag>
+You can only set your 'Home Location' on your land or at a mainland Infohub.
+   </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="HomePositionSet"
+   type="notify">
+   <tag>fail</tag>
+Home position set.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="AvatarEjected"
+   type="notify">
+   <tag>fail</tag>
+Avatar ejected.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="AvatarEjectFailed"
+   type="notify">
+   <tag>fail</tag>
+Eject failed because you don't have admin permission for that parcel.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantMoveObjectParcelFull"
+   type="notify">
+   <tag>fail</tag>
+Can't move object '[OBJECT_NAME]' to
+[OBJ_POSITION] in region [REGION_NAME] because the parcel is full.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantMoveObjectParcelPerms"
+   type="notify">
+   <tag>fail</tag>
+Can't move object '[OBJECT_NAME]' to
+[OBJ_POSITION] in region [REGION_NAME] because your objects are not allowed on this parcel.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantMoveObjectParcelResources"
+   type="notify">
+   <tag>fail</tag>
+Can't move object '[OBJECT_NAME]' to
+[OBJ_POSITION] in region [REGION_NAME] because there are not enough resources for this object on this parcel.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantMoveObjectRegionVersion"
+   type="notify">
+   <tag>fail</tag>
+Can't move object '[OBJECT_NAME]' to
+[OBJ_POSITION] in region [REGION_NAME] because the other region is running an older version which does not support receiving this object via region crossing.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantMoveObjectNavMesh"
+   type="notify">
+   <tag>fail</tag>
+Can't move object '[OBJECT_NAME]' to
+[OBJ_POSITION] in region [REGION_NAME] because you cannot modify the navmesh across region boundaries.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantMoveObjectWTF"
+   type="notify">
+   <tag>fail</tag>
+Can't move object '[OBJECT_NAME]' to
+[OBJ_POSITION] in region [REGION_NAME] because of an unknown reason. ([FAILURE_TYPE])
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="NoPermModifyObject"
+   type="notify">
+   <tag>fail</tag>
+You don't have permission to modify that object
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantEnablePhysObjContributesToNav"
+   type="notify">
+   <tag>fail</tag>
+Can't enable physics for an object that contributes to the navmesh.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantEnablePhysKeyframedObj"
+   type="notify">
+   <tag>fail</tag>
+Can't enable physics for keyframed objects.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantEnablePhysNotEnoughLandResources"
+   type="notify">
+   <tag>fail</tag>
+Can't enable physics for object -- insufficient land resources.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantEnablePhysCostTooGreat"
+   persist="true"
+   type="notify">
+   <tag>fail</tag>
+Can't enable physics for object with physics resource cost greater than [MAX_OBJECTS]
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="PhantomWithConcavePiece"
+   type="notify">
+   <tag>fail</tag>
+This object cannot have a concave piece because it is phantom and contributes to the navmesh.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="UnableAddItem"
+   type="notify">
+   <tag>fail</tag>
+Unable to add item!
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="UnableEditItem"
+   type="notify">
+   <tag>fail</tag>
+Unable to edit this!
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="NoPermToEdit"
+   type="notify">
+   <tag>fail</tag>
+Not permitted to edit this.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="NoPermToCopyInventory"
+   type="notify">
+   <tag>fail</tag>
+Not permitted to copy that inventory.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantSaveItemDoesntExist"
+   type="notify">
+   <tag>fail</tag>
+Cannot save to object contents: Item no longer exists.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantSaveItemAlreadyExists"
+   type="notify">
+   <tag>fail</tag>
+Cannot save to object contents: Item with that name already exists in inventory
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantSaveModifyAttachment"
+   type="notify">
+   <tag>fail</tag>
+Cannot save to object contents: This would modify the attachment permissions.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="NoPermToEdit"
+   type="notify">
+   <tag>fail</tag>
+Not permitted to edit this!
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="TooManyScripts"
+   type="notify">
+   <tag>fail</tag>
+Too many scripts.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="UnableAddScript"
+   type="notify">
+   <tag>fail</tag>
+Unable to add script!
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="AssetServerTimeoutObjReturn"
+   type="notify">
+   <tag>fail</tag>
+Asset server didn't respond in a timely fashion.  Object returned to sim.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="RegionDisablePhysicsShapes"
+   type="notify">
+   <tag>fail</tag>
+This region does not have physics shapes enabled.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="NoModNavmeshAcrossRegions"
+   type="notify">
+   <tag>fail</tag>
+You cannot modify the navmesh across region boundaries.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="NoPermModifyObject"
+   type="notify">
+   <tag>fail</tag>
+You don't have permission to modify that object.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantEnablePhysObjContributesToNav"
+   type="notify">
+   <tag>fail</tag>
+Can't enable physics for an object that contributes to the navmesh.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantEnablePhysKeyframedObj"
+   type="notify">
+   <tag>fail</tag>
+Can't enable physics for keyframed objects.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantEnablePhysNotEnoughLandResources"
+   type="notify">
+   <tag>fail</tag>
+Can't enable physics for object -- insufficient land resources.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantEnablePhysCostTooGreat"
+   persist="true"
+   type="notify">
+   <tag>fail</tag>
+Can't enable physics for object with physics resource cost greater than [MAX_OBJECTS]
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="NoSetPhysicsPropertiesOnObjectType"
+   type="notify">
+   <tag>fail</tag>
+Cannot set physics properties on that object type.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="NoSetRootPrimWithNoShape"
+   type="notify">
+   <tag>fail</tag>
+Cannot set root prim to have no shape.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="NoRegionSupportPhysMats"
+   type="notify">
+   <tag>fail</tag>
+This region does not have physics materials enabled.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="OnlyRootPrimPhysMats"
+   type="notify">
+   <tag>fail</tag>
+Only root prims may have their physics materials adjusted.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="NoSupportCharacterPhysMats"
+   type="notify">
+   <tag>fail</tag>
+Setting physics materials on characters is not yet supported.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="InvalidPhysMatProperty"
+   type="notify">
+   <tag>fail</tag>
+One or more of the specified physics material properties was invalid.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="NoPermsAlterStitchingMeshObj"
+   type="notify">
+   <tag>fail</tag>
+You may not alter the stitching type of a mesh object.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="NoPermsAlterShapeMeshObj"
+   type="notify">
+   <tag>fail</tag>
+You may not alter the shape of a mesh object
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="FullRegionCantEnter"
+   type="notify">
+   <tag>fail</tag>
+You can't enter this region because \nthe region is full.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="LinkFailedOwnersDiffer"
+   type="notify">
+   <tag>fail</tag>
+Link failed -- owners differ
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="LinkFailedNoModNavmeshAcrossRegions"
+   type="notify">
+   <tag>fail</tag>
+Link failed -- cannot modify the navmesh across region boundaries.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="LinkFailedNoPermToEdit"
+   type="notify">
+   <tag>fail</tag>
+Link failed because you do not have edit permission.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="LinkFailedTooManyPrims"
+   type="notify">
+   <tag>fail</tag>
+Link failed -- too many primitives
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="LinkFailedCantLinkNoCopyNoTrans"
+   type="notify">
+   <tag>fail</tag>
+Link failed -- cannot link no-copy with no-transfer
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="LinkFailedNothingLinkable"
+   type="notify">
+   <tag>fail</tag>
+Link failed -- nothing linkable.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="LinkFailedTooManyPathfindingChars"
+   type="notify">
+   <tag>fail</tag>
+Link failed -- too many pathfinding characters
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="LinkFailedInsufficientLand"
+   type="notify">
+   <tag>fail</tag>
+Link failed -- insufficient land resources
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="LinkFailedTooMuchPhysics"
+   type="notify">
+   <tag>fail</tag>
+Object uses too many physics resources -- its dynamics have been disabled.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="TeleportedHomeByObjectOnParcel"
+   persist="true"
+   type="notify">
+   <tag>fail</tag>
+You have been teleported home by the object '[OBJECT_NAME]' on the parcel '[PARCEL_NAME]'
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="TeleportedHomeByObject"
+   persist="true"
+   type="notify">
+   <tag>fail</tag>
+You have been teleported home by the object '[OBJECT_NAME]'
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="TeleportedByAttachment"
+   type="notify">
+   <tag>fail</tag>
+You have been teleported by an attachment on [ITEM_ID]
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="TeleportedByObjectOnParcel"
+   type="notify">
+   <tag>fail</tag>
+You have been teleported by the object '[OBJECT_NAME]' on the parcel '[PARCEL_NAME]'
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="TeleportedByObjectOwnedBy"
+   type="notify">
+   <tag>fail</tag>
+You have been teleported by the object '[OBJECT_NAME]' owned by [OWNER_ID]
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="TeleportedByObjectUnknownUser"
+   type="notify">
+   <tag>fail</tag>
+You have been teleported by the object '[OBJECT_NAME]' owned by an unknown user.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantCreateObjectRegionFull"
+   type="notify">
+   <tag>fail</tag>
+Unable to create requested object. The region is full.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantAttackMultipleObjOneSpot"
+   type="notify">
+   <tag>fail</tag>
+You can't attach multiple objects to one spot.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantCreateMultipleObjAtLoc"
+   type="notify">
+   <tag>fail</tag>
+You can't create multiple objects here.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="UnableToCreateObjTimeOut"
+   type="notify">
+   <tag>fail</tag>
+Unable to create requested object. Object is missing from database.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="UnableToCreateObjUnknown"
+   type="notify">
+   <tag>fail</tag>
+Unable to create requested object. The request timed out. Please try again.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="UnableToCreateObjMissingFromDB"
+   type="notify">
+   <tag>fail</tag>
+Unable to create requested object. Please try again.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="RezFailureTookTooLong"
+   type="notify">
+   <tag>fail</tag>
+Rez failed, requested object took too long to load.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="FailedToPlaceObjAtLoc"
+   type="notify">
+   <tag>fail</tag>
+Failed to place object at specified location.  Please try again.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantCreatePlantsOnLand"
+   type="notify">
+   <tag>fail</tag>
+You cannot create plants on this land.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantRestoreObjectNoWorldPos"
+   type="notify">
+   <tag>fail</tag>
+Cannot restore object. No world position found.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantRezObjectInvalidMeshData"
+   type="notify">
+   <tag>fail</tag>
+Unable to rez object because its mesh data is invalid.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantRezObjectTooManyScripts"
+   type="notify">
+   <tag>fail</tag>
+Unable to rez object because there are already too many scripts in this region.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantCreateObjectNoAccess"
+   type="notify">
+   <tag>fail</tag>
+Your access privileges don't allow you to create objects there.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantCreateObject"
+   type="notify">
+   <tag>fail</tag>
+You are not currently allowed to create objects.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="InvalidObjectParams"
+   type="notify">
+   <tag>fail</tag>
+Invalid object parameters
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantDuplicateObjectNoAcess"
+   type="notify">
+   <tag>fail</tag>
+Your access privileges don't allow you to duplicate objects here.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantChangeShape"
+   type="notify">
+   <tag>fail</tag>
+You are not allowed to change this shape.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="NoAccessToClaimObjects"
+   type="notify">
+   <tag>fail</tag>
+Your access privileges don't allow you to claim objects here.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="DeedFailedNoPermToDeedForGroup"
+   type="notify">
+   <tag>fail</tag>
+Deed failed because you do not have permission to deed objects for your group.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="NoPrivsToBuyObject"
+   type="notify">
+   <tag>fail</tag>
+Your access privileges don't allow you to buy objects here.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantAttachObjectAvatarSittingOnIt"
+   type="notify">
+   <tag>fail</tag>
+Cannot attach object because an avatar is sitting on it.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="WhyAreYouTryingToWearShrubbery"
+   type="notify">
+   <tag>fail</tag>
+Trees and grasses cannot be worn as attachments.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantAttachGroupOwnedObjs"
+   type="notify">
+   <tag>fail</tag>
+Cannot attach group-owned objects.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantAttachObjectsNotOwned"
+   type="notify">
+   <tag>fail</tag>
+Cannot attach objects that you don't own.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantAttachNavmeshObjects"
+   type="notify">
+   <tag>fail</tag>
+Cannot attach objects that contribute to navmesh.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantAttachObjectNoMovePermissions"
+   type="notify">
+   <tag>fail</tag>
+Cannot attach object because you do not have permission to move it.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantAttachNotEnoughScriptResources"
+   type="notify">
+   <tag>fail</tag>
+Not enough script resources available to attach object!
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantDropItemTrialUser"
+   type="notify">
+   <tag>fail</tag>
+You can't drop objects here; try the Free Trial area.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantDropMeshAttachment"
+   type="notify">
+   <tag>fail</tag>
+You can't drop mesh attachments. Detach to inventory and then rez in world.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantDropAttachmentNoPermission"
+   type="notify">
+   <tag>fail</tag>
+Failed to drop attachment: you don't have permission to drop there.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantDropAttachmentInsufficientLandResources"
+   type="notify">
+   <tag>fail</tag>
+Failed to drop attachment: insufficient available land resource.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantDropAttachmentInsufficientResources"
+   type="notify">
+   <tag>fail</tag>
+Failed to drop attachments: insufficient available resources.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantDropObjectFullParcel"
+   type="notify">
+   <tag>fail</tag>
+Cannot drop object here.  Parcel is full.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantTouchObjectBannedFromParcel"
+   type="notify">
+   <tag>fail</tag>
+Can't touch/grab this object because you are banned from the land parcel.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="PlzNarrowDeleteParams"
+   type="notify">
+   <tag>fail</tag>
+Please narrow your delete parameters.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="UnableToUploadAsset"
+   type="notify">
+   <tag>fail</tag>
+Unable to upload asset.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantTeleportCouldNotFindUser"
+   type="notify">
+   <tag>fail</tag>
+Could not find user to teleport home
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="GodlikeRequestFailed"
+   type="notify">
+   <tag>fail</tag>
+godlike request failed
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="GenericRequestFailed"
+   type="notify">
+   <tag>fail</tag>
+generic request failed
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantUploadPostcard"
+   type="notify">
+   <tag>fail</tag>
+Unable to upload postcard.  Try again later.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantFetchInventoryForGroupNotice"
+   type="notify">
+   <tag>fail</tag>
+Unable to fetch inventory details for the group notice.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantSendGroupNoticeNotPermitted"
+   type="notify">
+   <tag>fail</tag>
+Unable to send group notice -- not permitted.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantSendGroupNoticeCantConstructInventory"
+   type="notify">
+   <tag>fail</tag>
+Unable to send group notice -- could not construct inventory.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantParceInventoryInNotice"
+   type="notify">
+   <tag>fail</tag>
+Unable to parse inventory in notice.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="TerrainUploadFailed"
+   type="notify">
+   <tag>fail</tag>
+Terrain upload failed.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="TerrainFileWritten"
+   type="notify">
+   <tag>fail</tag>
+Terrain file written.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="TerrainFileWrittenStartingDownload"
+   type="notify">
+   <tag>fail</tag>
+Terrain file written, starting download...
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="TerrainBaked"
+   type="notify">
+   <tag>fail</tag>
+Terrain baked.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="TenObjectsDisabledPlzRefresh"
+   type="notify">
+   <tag>fail</tag>
+Only the first 10 selected objects have been disabled. Refresh and make additional selections if required.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="UpdateViewerBuyParcel"
+   type="notify">
+   <tag>fail</tag>
+You need to update your viewer to buy this parcel.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="LandBuyAccessBlocked"
+   type="notify">
+   <tag>fail</tag>
+You can't buy this land due to your maturity Rating. You may need to validate your age and/or install the latest Viewer. Please go to the Knowledge Base for details on accessing areas with this maturity Rating.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantBuyParcelNotForSale"
+   type="notify">
+   <tag>fail</tag>
+Unable to buy, this parcel is not for sale.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantBuySalePriceOrLandAreaChanged"
+   type="notify">
+   <tag>fail</tag>
+Unable to buy, the sale price or land area has changed.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantBuyParcelNotAuthorized"
+   type="notify">
+   <tag>fail</tag>
+You are not the authorized buyer for this parcel.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantBuyParcelAwaitingPurchaseAuth"
+   type="notify">
+   <tag>fail</tag>
+You cannot purchase this parcel because it is already awaiting purchase aut
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantBuildOverflowParcel"
+   type="notify">
+   <tag>fail</tag>
+You cannot build objects here because doing so would overflow the parcel.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="SelectedMultipleOwnedLand"
+   type="notify">
+   <tag>fail</tag>
+You selected land with different owners. Please select a smaller area and try again.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantJoinTooFewLeasedParcels"
+   type="notify">
+   <tag>fail</tag>
+Not enough leased parcels in selection to join.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantDivideLandMultipleParcelsSelected"
+   type="notify">
+   <tag>fail</tag>
+Can't divide land.\nThere is more than one parcel selected.\nTry selecting a smaller piece of land.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantDivideLandCantFindParcel"
+   type="notify">
+   <tag>fail</tag>
+Can't divide land.\nCan't find the parcel.\nPlease report with Help -> Reprt Bug...
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantDivideLandWholeParcelSelected"
+   type="notify">
+   <tag>fail</tag>
+Can't divide land. Whole parcel is selected.\nTry selecting a smaller piece of land.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="LandHasBeenDivided"
+   type="notify">
+   <tag>fail</tag>
+Land has been divided.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="PassPurchased"
+   type="notify">
+   <tag>fail</tag>
+You purchased a pass.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="RegionDisallowsClassifieds"
+   type="notify">
+   <tag>fail</tag>
+Region does not allow classified advertisements.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="LandPassExpireSoon"
+   type="notify">
+   <tag>fail</tag>
+Your pass to this land is about to expire.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantSitNoSuitableSurface"
+   type="notify">
+   <tag>fail</tag>
+There is no suitable surface to sit on, try another spot.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantSitNoRoom"
+   type="notify">
+   <tag>fail</tag>
+No room to sit here, try another spot.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="AutopilotCanceled"
+   type="notify">
+   <tag>fail</tag>
+Autopilot canceled
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="ClaimObjectFailedNoPermission"
+   type="notify">
+   <tag>fail</tag>
+Claim object failed because you don't have permission
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="ClaimObjectFailedNoMoney"
+   type="notify">
+   <tag>fail</tag>
+Claim object failed because you don't have enough L$.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantDeedGroupLand"
+   type="notify">
+   <tag>fail</tag>
+Cannot deed group-owned land.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="BuyObjectFailedNoMoney"
+   type="notify">
+   <tag>fail</tag>
+Buy object failed because you don't have enough L$.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="BuyInventoryFailedNoMoney"
+   type="notify">
+   <tag>fail</tag>
+Buy inventory failed because you do not have enough L$
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="BuyPassFailedNoMoney"
+   type="notify">
+   <tag>fail</tag>
+You don't have enough L$ to buy a pass to this land.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantBuyPassTryAgain"
+   type="notify">
+   <tag>fail</tag>
+Unable to buy pass right now.  Try again later.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantCreateObjectParcelFull"
+   type="notify">
+   <tag>fail</tag>
+Can't create object because \nthe parcel is full.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="FailedPlacingObject"
+   type="notify">
+   <tag>fail</tag>
+Failed to place object at specified location.  Please try again.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantCreateLandmarkForEvent"
+   type="notify">
+   <tag>fail</tag>
+Unable to create landmark for event.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="GodBeatsFreeze"
+   type="notify">
+   <tag>fail</tag>
+Your godlike powers break the freeze!
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="SpecialPowersRequestFailedLogged"
+   type="notify">
+   <tag>fail</tag>
+Request for special powers failed. This request has been logged.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="ExpireExplanation"
+   type="notify">
+   <tag>fail</tag>
+The system is currently unable to process your request. The request timed out.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="DieExplanation"
+   type="notify">
+   <tag>fail</tag>
+The system is unable to process your request.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="AddPrimitiveFailure"
+   type="notify">
+   <tag>fail</tag>
+Insufficient funds to create primitve.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="RezObjectFailure"
+   type="notify">
+   <tag>fail</tag>
+Insufficient funds to create object.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="ResetHomePositionNotLegal"
+   type="notify">
+   <tag>fail</tag>
+Reset Home position since Home wasn't legal.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantInviteRegionFull"
+   type="notify">
+   <tag>fail</tag>
+You cannot currently invite anyone to your location because the region is full. Try again later.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantSetHomeAtRegion"
+   type="notify">
+   <tag>fail</tag>
+This region does not allow you to set your home location here.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="ListValidHomeLocations"
+   type="notify">
+   <tag>fail</tag>
+You can only set your 'Home Location' on your land or at a mainland Infohub.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="SetHomePosition"
+   type="notify">
+   <tag>fail</tag>
+Home position set.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantDerezInventoryError"
+   type="notify">
+   <tag>fail</tag>
+Cannot derez object due to inventory fault.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantCreateRequestedInv"
+   type="notify">
+   <tag>fail</tag>
+Cannot create requested inventory.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantCreateRequestedInvFolder"
+   type="notify">
+   <tag>fail</tag>
+Cannot create requested inventory folder.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantCreateInventory"
+   type="notify">
+   <tag>fail</tag>
+Cannot create that inventory.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantCreateLandmark"
+   type="notify">
+   <tag>fail</tag>
+Cannot create landmark.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantCreateOutfit"
+   type="notify">
+   <tag>fail</tag>
+Cannot create outfit right now. Try again in a minute.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="InventoryNotForSale"
+   type="notify">
+   <tag>fail</tag>
+Inventory is not for sale.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantFindInvItem"
+   type="notify">
+   <tag>fail</tag>
+Unable to find inventory item.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantFindObject"
+   type="notify">
+   <tag>fail</tag>
+Unable to find object.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantTransfterMoneyRegionDisabled"
+   type="notify">
+   <tag>fail</tag>
+Money transfers to objects are currently disabled in this region.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantPayNoAgent"
+   type="notify">
+   <tag>fail</tag>
+Could not figure out who to pay.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantDonateToPublicObjects"
+   type="notify">
+   <tag>fail</tag>
+You cannot give L$ to public objects.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="InventoryCreationInWorldObjectFailed"
+   type="notify">
+   <tag>fail</tag>
+Inventory creation on in-world object failed.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="UserBalanceOrLandUsageError"
+   type="notify">
+   <tag>fail</tag>
+An internal error prevented us from properly updating your viewer.  The L$ balance or parcel holdings displayed in your viewer may not reflect your actual balance on the servers.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="LargePrimAgentIntersect"
+   type="notify">
+   <tag>fail</tag>
+Cannot create large prims that intersect other players.  Please re-try when other players have moved.
+  </notification>
+
+
+  <notification
+   icon="alertmodal.tga"
+   name="AvatarFrozen"
+   type="notify">
+   <tag>fail</tag>
+[AV_FREEZER] has frozen you. You cannot move or interact with the world.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="AvatarFrozenDuration"
+   type="notify">
+   <tag>fail</tag>
+[AV_FREEZER] has frozen you for [AV_FREEZE_TIME] seconds. You cannot move or interact with the world.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="YouFrozeAvatar"
+   type="notify">
+   <tag>fail</tag>
+Avatar frozen.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="AvatarHasUnFrozenYou"
+   type="notify">
+   <tag>fail</tag>
+[AV_FREEZER] has unfrozen you.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="AvatarUnFrozen"
+   type="notify">
+   <tag>fail</tag>
+Avatar unfrozen.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="AvatarFreezeFailure"
+   type="notify">
+   <tag>fail</tag>
+Freeze failed because you don't have admin permission for that parcel.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="AvatarFreezeThaw"
+   type="notify">
+   <tag>fail</tag>
+Your freeze expired, go about your business.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="AvatarCantFreeze"
+   type="notify">
+   <tag>fail</tag>
+Sorry, can't freeze that user.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="NowOwnObject"
+   type="notify">
+   <tag>fail</tag>
+You are now the owner of object [OBJECT_NAME]
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantRezOnLand"
+   type="notify">
+   <tag>fail</tag>
+Can't rez object at [OBJECT_POS] because the owner of this land does not allow it.  Use the land tool to see land ownership.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="RezFailTooManyRequests"
+   type="notify">
+   <tag>fail</tag>
+Object can not be rezzed because there are too many requests.
+  </notification>
+ 
+  <notification
+   icon="alertmodal.tga"
+   name="SitFailCantMove"
+   type="notify">
+   <tag>fail</tag>
+You cannot sit because you cannot move at this time.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="SitFailNotAllowedOnLand"
+   type="notify">
+   <tag>fail</tag>
+You cannot sit because you are not allowed on that land.
+  </notification>
+ 
+  <notification
+   icon="alertmodal.tga"
+   name="SitFailNotSameRegion"
+   type="notify">
+   <tag>fail</tag>
+Try moving closer.  Can't sit on object because
+it is not in the same region as you.
+  </notification>
+  
+  <notification
+   icon="alertmodal.tga"
+   name="NoNewObjectRegionFull"
+   type="notify">
+   <tag>fail</tag>
+Unable to create new object. The region is full.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="FailedToPlaceObject"
+   type="notify">
+   <tag>fail</tag>
+Failed to place object at specified location.  Please try again.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="NoOwnNoGardening"
+   type="notify">
+   <tag>fail</tag>
+You Can't create trees and grass on land you don't own.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="NoCopyPermsNoObject"
+   type="notify">
+   <tag>fail</tag>
+Copy failed because you lack permission to copy the object '[OBJ_NAME]'.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="NoTransPermsNoObject"
+   type="notify">
+   <tag>fail</tag>
+Copy failed because the object '[OBJ_NAME]' cannot be transferred to you.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="AddToNavMeshNoCopy"
+   type="notify">
+   <tag>fail</tag>
+Copy failed because the object '[OBJ_NAME]' contributes to navmesh.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="DupeWithNoRootsSelected"
+   type="notify">
+   <tag>fail</tag>
+Duplicate with no root objects selected.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantDupeCuzRegionIsFull"
+   type="notify">
+   <tag>fail</tag>
+Can't duplicate objects because the region is full.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantDupeCuzParcelNotFound"
+   type="notify">
+   <tag>fail</tag>
+Can't duplicate objects - Can't find the parcel they are on.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantCreateCuzParcelFull"
+   type="notify">
+   <tag>fail</tag>
+Can't create object because 
+the parcel is full.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="RezAttemptFailed"
+   type="notify">
+   <tag>fail</tag>
+Attempt to rez an object failed.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="ToxicInvRezAttemptFailed"
+   type="notify">
+   <tag>fail</tag>
+Unable to create item that has caused problems on this region.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="InvItemIsBlacklisted"
+   type="notify">
+   <tag>fail</tag>
+That inventory item has been blacklisted.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="NoCanRezObjects"
+   type="notify">
+   <tag>fail</tag>
+You are not currently allowed to create objects.
+  </notification>
+ 
+  <notification
+   icon="alertmodal.tga"
+   name="LandSearchBlocked"
+   type="notify">
+   <tag>fail</tag>
+Land Search Blocked.
+You have performed too many land searches too quickly.
+Please try again in a minute.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="NotEnoughResourcesToAttach"
+   type="notify">
+   <tag>fail</tag>
+Not enough script resources available to attach object!
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="YouDiedAndGotTPHome"
+   type="notify">
+   <tag>fail</tag>
+You died and have been teleported to your home location
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="EjectComingSoon"
+   type="notify">
+   <tag>fail</tag>
+You are no longer allowed here and have [EJECT_TIME] seconds to leave.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="NoEnterServerFull"
+   type="notify">
+   <tag>fail</tag>
+You can't enter this region because 
+the server is full.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="SaveBackToInvDisabled"
+   type="notify">
+   <tag>fail</tag>
+Save Back To Inventory has been disabled.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="NoExistNoSaveToContents"
+   type="notify">
+   <tag>fail</tag>
+Cannot save '[OBJ_NAME]' to object contents because the object it was rezzed from no longer exists.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="NoModNoSaveToContents"
+   type="notify">
+   <tag>fail</tag>
+Cannot save '[OBJ_NAME]' to object contents because you do not have permission to modify the object '[DEST_NAME]'.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="NoSaveBackToInvDisabled"
+   type="notify">
+   <tag>fail</tag>
+Cannot save '[OBJ_NAME]' back to inventory -- this operation has been disabled.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="NoCopyNoSelCopy"
+   type="notify">
+   <tag>fail</tag>
+You cannot copy your selection because you do not have permission to copy the object '[OBJ_NAME]'.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="NoTransNoSelCopy"
+   type="notify">
+   <tag>fail</tag>
+You cannot copy your selection because the object '[OBJ_NAME]' is not transferrable.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="NoTransNoCopy"
+   type="notify">
+   <tag>fail</tag>
+You cannot copy your selection because the object '[OBJ_NAME]' is not transferrable.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="NoPermsNoRemoval"
+   type="notify">
+   <tag>fail</tag>
+Removal of the object '[OBJ_NAME]' from the simulator is disallowed by the permissions system.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="NoModNoSaveSelection"
+   type="notify">
+   <tag>fail</tag>
+Cannot save your selection because you do not have permission to modify the object '[OBJ_NAME]'.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="NoCopyNoSaveSelection"
+   type="notify">
+   <tag>fail</tag>
+Cannot save your selection because the object '[OBJ_NAME]' is not copyable.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="NoModNoTaking"
+   type="notify">
+   <tag>fail</tag>
+You cannot take your selection because you do not have permission to modify the object '[OBJ_NAME]'.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="RezDestInternalError"
+   type="notify">
+   <tag>fail</tag>
+Internal Error: Unknown destination type.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="DeleteFailObjNotFound"
+   type="notify">
+   <tag>fail</tag>
+Delete failed because object not found
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="SorryCantEjectUser"
+   type="notify">
+   <tag>fail</tag>
+Sorry, can't eject that user.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="RegionSezNotAHome"
+   type="notify">
+   <tag>fail</tag>
+This region does not allow you to set your home location here.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="HomeLocationLimits"
+   type="notify">
+   <tag>fail</tag>
+You can only set your 'Home Location' on your land or at a mainland Infohub.
+   </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="HomePositionSet"
+   type="notify">
+   <tag>fail</tag>
+Home position set.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="AvatarEjected"
+   type="notify">
+   <tag>fail</tag>
+Avatar ejected.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="AvatarEjectFailed"
+   type="notify">
+   <tag>fail</tag>
+Eject failed because you don't have admin permission for that parcel.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantMoveObjectParcelFull"
+   type="notify">
+   <tag>fail</tag>
+Can't move object '[OBJECT_NAME]' to
+[OBJ_POSITION] in region [REGION_NAME] because the parcel is full.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantMoveObjectParcelPerms"
+   type="notify">
+   <tag>fail</tag>
+Can't move object '[OBJECT_NAME]' to
+[OBJ_POSITION] in region [REGION_NAME] because your objects are not allowed on this parcel.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantMoveObjectParcelResources"
+   type="notify">
+   <tag>fail</tag>
+Can't move object '[OBJECT_NAME]' to
+[OBJ_POSITION] in region [REGION_NAME] because there are not enough resources for this object on this parcel.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantMoveObjectRegionVersion"
+   type="notify">
+   <tag>fail</tag>
+Can't move object '[OBJECT_NAME]' to
+[OBJ_POSITION] in region [REGION_NAME] because the other region is running an older version which does not support receiving this object via region crossing.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantMoveObjectNavMesh"
+   type="notify">
+   <tag>fail</tag>
+Can't move object '[OBJECT_NAME]' to
+[OBJ_POSITION] in region [REGION_NAME] because you cannot modify the navmesh across region boundaries.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantMoveObjectWTF"
+   type="notify">
+   <tag>fail</tag>
+Can't move object '[OBJECT_NAME]' to
+[OBJ_POSITION] in region [REGION_NAME] because of an unknown reason. ([FAILURE_TYPE])
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="NoPermModifyObject"
+   type="notify">
+   <tag>fail</tag>
+You don't have permission to modify that object
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantEnablePhysObjContributesToNav"
+   type="notify">
+   <tag>fail</tag>
+Can't enable physics for an object that contributes to the navmesh.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantEnablePhysKeyframedObj"
+   type="notify">
+   <tag>fail</tag>
+Can't enable physics for keyframed objects.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantEnablePhysNotEnoughLandResources"
+   type="notify">
+   <tag>fail</tag>
+Can't enable physics for object -- insufficient land resources.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantEnablePhysCostTooGreat"
+   persist="true"
+   type="notify">
+   <tag>fail</tag>
+Can't enable physics for object with physics resource cost greater than [MAX_OBJECTS]
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="PhantomWithConcavePiece"
+   type="notify">
+   <tag>fail</tag>
+This object cannot have a concave piece because it is phantom and contributes to the navmesh.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="UnableAddItem"
+   type="notify">
+   <tag>fail</tag>
+Unable to add item!
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="UnableEditItem"
+   type="notify">
+   <tag>fail</tag>
+Unable to edit this!
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="NoPermToEdit"
+   type="notify">
+   <tag>fail</tag>
+Not permitted to edit this.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="NoPermToCopyInventory"
+   type="notify">
+   <tag>fail</tag>
+Not permitted to copy that inventory.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantSaveItemDoesntExist"
+   type="notify">
+   <tag>fail</tag>
+Cannot save to object contents: Item no longer exists.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantSaveItemAlreadyExists"
+   type="notify">
+   <tag>fail</tag>
+Cannot save to object contents: Item with that name already exists in inventory
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantSaveModifyAttachment"
+   type="notify">
+   <tag>fail</tag>
+Cannot save to object contents: This would modify the attachment permissions.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="NoPermToEdit"
+   type="notify">
+   <tag>fail</tag>
+Not permitted to edit this!
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="TooManyScripts"
+   type="notify">
+   <tag>fail</tag>
+Too many scripts.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="UnableAddScript"
+   type="notify">
+   <tag>fail</tag>
+Unable to add script!
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="AssetServerTimeoutObjReturn"
+   type="notify">
+   <tag>fail</tag>
+Asset server didn't respond in a timely fashion.  Object returned to sim.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="RegionDisablePhysicsShapes"
+   type="notify">
+   <tag>fail</tag>
+This region does not have physics shapes enabled.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="NoModNavmeshAcrossRegions"
+   type="notify">
+   <tag>fail</tag>
+You cannot modify the navmesh across region boundaries.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="NoPermModifyObject"
+   type="notify">
+   <tag>fail</tag>
+You don't have permission to modify that object.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantEnablePhysObjContributesToNav"
+   type="notify">
+   <tag>fail</tag>
+Can't enable physics for an object that contributes to the navmesh.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantEnablePhysKeyframedObj"
+   type="notify">
+   <tag>fail</tag>
+Can't enable physics for keyframed objects.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantEnablePhysNotEnoughLandResources"
+   type="notify">
+   <tag>fail</tag>
+Can't enable physics for object -- insufficient land resources.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantEnablePhysCostTooGreat"
+   persist="true"
+   type="notify">
+   <tag>fail</tag>
+Can't enable physics for object with physics resource cost greater than [MAX_OBJECTS]
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="NoSetPhysicsPropertiesOnObjectType"
+   type="notify">
+   <tag>fail</tag>
+Cannot set physics properties on that object type.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="NoSetRootPrimWithNoShape"
+   type="notify">
+   <tag>fail</tag>
+Cannot set root prim to have no shape.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="NoRegionSupportPhysMats"
+   type="notify">
+   <tag>fail</tag>
+This region does not have physics materials enabled.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="OnlyRootPrimPhysMats"
+   type="notify">
+   <tag>fail</tag>
+Only root prims may have their physics materials adjusted.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="NoSupportCharacterPhysMats"
+   type="notify">
+   <tag>fail</tag>
+Setting physics materials on characters is not yet supported.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="InvalidPhysMatProperty"
+   type="notify">
+   <tag>fail</tag>
+One or more of the specified physics material properties was invalid.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="NoPermsAlterStitchingMeshObj"
+   type="notify">
+   <tag>fail</tag>
+You may not alter the stitching type of a mesh object.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="NoPermsAlterShapeMeshObj"
+   type="notify">
+   <tag>fail</tag>
+You may not alter the shape of a mesh object
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="FullRegionCantEnter"
+   type="notify">
+   <tag>fail</tag>
+You can't enter this region because \nthe region is full.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="LinkFailedOwnersDiffer"
+   type="notify">
+   <tag>fail</tag>
+Link failed -- owners differ
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="LinkFailedNoModNavmeshAcrossRegions"
+   type="notify">
+   <tag>fail</tag>
+Link failed -- cannot modify the navmesh across region boundaries.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="LinkFailedNoPermToEdit"
+   type="notify">
+   <tag>fail</tag>
+Link failed because you do not have edit permission.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="LinkFailedTooManyPrims"
+   type="notify">
+   <tag>fail</tag>
+Link failed -- too many primitives
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="LinkFailedCantLinkNoCopyNoTrans"
+   type="notify">
+   <tag>fail</tag>
+Link failed -- cannot link no-copy with no-transfer
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="LinkFailedNothingLinkable"
+   type="notify">
+   <tag>fail</tag>
+Link failed -- nothing linkable.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="LinkFailedTooManyPathfindingChars"
+   type="notify">
+   <tag>fail</tag>
+Link failed -- too many pathfinding characters
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="LinkFailedInsufficientLand"
+   type="notify">
+   <tag>fail</tag>
+Link failed -- insufficient land resources
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="LinkFailedTooMuchPhysics"
+   type="notify">
+   <tag>fail</tag>
+Object uses too many physics resources -- its dynamics have been disabled.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="TeleportedHomeByObjectOnParcel"
+   persist="true"
+   type="notify">
+   <tag>fail</tag>
+You have been teleported home by the object '[OBJECT_NAME]' on the parcel '[PARCEL_NAME]'
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="TeleportedHomeByObject"
+   persist="true"
+   type="notify">
+   <tag>fail</tag>
+You have been teleported home by the object '[OBJECT_NAME]'
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="TeleportedByAttachment"
+   type="notify">
+   <tag>fail</tag>
+You have been teleported by an attachment on [ITEM_ID]
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="TeleportedByObjectOnParcel"
+   type="notify">
+   <tag>fail</tag>
+You have been teleported by the object '[OBJECT_NAME]' on the parcel '[PARCEL_NAME]'
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="TeleportedByObjectOwnedBy"
+   type="notify">
+   <tag>fail</tag>
+You have been teleported by the object '[OBJECT_NAME]' owned by [OWNER_ID]
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="TeleportedByObjectUnknownUser"
+   type="notify">
+   <tag>fail</tag>
+You have been teleported by the object '[OBJECT_NAME]' owned by an unknown user.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantCreateObjectRegionFull"
+   type="notify">
+   <tag>fail</tag>
+Unable to create requested object. The region is full.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantAttackMultipleObjOneSpot"
+   type="notify">
+   <tag>fail</tag>
+You can't attach multiple objects to one spot.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantCreateMultipleObjAtLoc"
+   type="notify">
+   <tag>fail</tag>
+You can't create multiple objects here.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="UnableToCreateObjTimeOut"
+   type="notify">
+   <tag>fail</tag>
+Unable to create requested object. Object is missing from database.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="UnableToCreateObjUnknown"
+   type="notify">
+   <tag>fail</tag>
+Unable to create requested object. The request timed out. Please try again.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="UnableToCreateObjMissingFromDB"
+   type="notify">
+   <tag>fail</tag>
+Unable to create requested object. Please try again.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="RezFailureTookTooLong"
+   type="notify">
+   <tag>fail</tag>
+Rez failed, requested object took too long to load.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="FailedToPlaceObjAtLoc"
+   type="notify">
+   <tag>fail</tag>
+Failed to place object at specified location.  Please try again.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantCreatePlantsOnLand"
+   type="notify">
+   <tag>fail</tag>
+You cannot create plants on this land.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantRestoreObjectNoWorldPos"
+   type="notify">
+   <tag>fail</tag>
+Cannot restore object. No world position found.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantRezObjectInvalidMeshData"
+   type="notify">
+   <tag>fail</tag>
+Unable to rez object because its mesh data is invalid.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantRezObjectTooManyScripts"
+   type="notify">
+   <tag>fail</tag>
+Unable to rez object because there are already too many scripts in this region.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantCreateObjectNoAccess"
+   type="notify">
+   <tag>fail</tag>
+Your access privileges don't allow you to create objects there.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantCreateObject"
+   type="notify">
+   <tag>fail</tag>
+You are not currently allowed to create objects.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="InvalidObjectParams"
+   type="notify">
+   <tag>fail</tag>
+Invalid object parameters
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantDuplicateObjectNoAcess"
+   type="notify">
+   <tag>fail</tag>
+Your access privileges don't allow you to duplicate objects here.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantChangeShape"
+   type="notify">
+   <tag>fail</tag>
+You are not allowed to change this shape.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="NoAccessToClaimObjects"
+   type="notify">
+   <tag>fail</tag>
+Your access privileges don't allow you to claim objects here.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="DeedFailedNoPermToDeedForGroup"
+   type="notify">
+   <tag>fail</tag>
+Deed failed because you do not have permission to deed objects for your group.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="NoPrivsToBuyObject"
+   type="notify">
+   <tag>fail</tag>
+Your access privileges don't allow you to buy objects here.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantAttachObjectAvatarSittingOnIt"
+   type="notify">
+   <tag>fail</tag>
+Cannot attach object because an avatar is sitting on it.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="WhyAreYouTryingToWearShrubbery"
+   type="notify">
+   <tag>fail</tag>
+Trees and grasses cannot be worn as attachments.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantAttachGroupOwnedObjs"
+   type="notify">
+   <tag>fail</tag>
+Cannot attach group-owned objects.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantAttachObjectsNotOwned"
+   type="notify">
+   <tag>fail</tag>
+Cannot attach objects that you don't own.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantAttachNavmeshObjects"
+   type="notify">
+   <tag>fail</tag>
+Cannot attach objects that contribute to navmesh.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantAttachObjectNoMovePermissions"
+   type="notify">
+   <tag>fail</tag>
+Cannot attach object because you do not have permission to move it.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantAttachNotEnoughScriptResources"
+   type="notify">
+   <tag>fail</tag>
+Not enough script resources available to attach object!
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantDropItemTrialUser"
+   type="notify">
+   <tag>fail</tag>
+You can't drop objects here; try the Free Trial area.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantDropMeshAttachment"
+   type="notify">
+   <tag>fail</tag>
+You can't drop mesh attachments. Detach to inventory and then rez in world.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantDropAttachmentNoPermission"
+   type="notify">
+   <tag>fail</tag>
+Failed to drop attachment: you don't have permission to drop there.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantDropAttachmentInsufficientLandResources"
+   type="notify">
+   <tag>fail</tag>
+Failed to drop attachment: insufficient available land resource.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantDropAttachmentInsufficientResources"
+   type="notify">
+   <tag>fail</tag>
+Failed to drop attachments: insufficient available resources.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantDropObjectFullParcel"
+   type="notify">
+   <tag>fail</tag>
+Cannot drop object here.  Parcel is full.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantTouchObjectBannedFromParcel"
+   type="notify">
+   <tag>fail</tag>
+Can't touch/grab this object because you are banned from the land parcel.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="PlzNarrowDeleteParams"
+   type="notify">
+   <tag>fail</tag>
+Please narrow your delete parameters.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="UnableToUploadAsset"
+   type="notify">
+   <tag>fail</tag>
+Unable to upload asset.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantTeleportCouldNotFindUser"
+   type="notify">
+   <tag>fail</tag>
+Could not find user to teleport home
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="GodlikeRequestFailed"
+   type="notify">
+   <tag>fail</tag>
+godlike request failed
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="GenericRequestFailed"
+   type="notify">
+   <tag>fail</tag>
+generic request failed
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantUploadPostcard"
+   type="notify">
+   <tag>fail</tag>
+Unable to upload postcard.  Try again later.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantFetchInventoryForGroupNotice"
+   type="notify">
+   <tag>fail</tag>
+Unable to fetch inventory details for the group notice.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantSendGroupNoticeNotPermitted"
+   type="notify">
+   <tag>fail</tag>
+Unable to send group notice -- not permitted.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantSendGroupNoticeCantConstructInventory"
+   type="notify">
+   <tag>fail</tag>
+Unable to send group notice -- could not construct inventory.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantParceInventoryInNotice"
+   type="notify">
+   <tag>fail</tag>
+Unable to parse inventory in notice.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="TerrainUploadFailed"
+   type="notify">
+   <tag>fail</tag>
+Terrain upload failed.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="TerrainFileWritten"
+   type="notify">
+   <tag>fail</tag>
+Terrain file written.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="TerrainFileWrittenStartingDownload"
+   type="notify">
+   <tag>fail</tag>
+Terrain file written, starting download...
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="TerrainBaked"
+   type="notify">
+   <tag>fail</tag>
+Terrain baked.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="TenObjectsDisabledPlzRefresh"
+   type="notify">
+   <tag>fail</tag>
+Only the first 10 selected objects have been disabled. Refresh and make additional selections if required.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="UpdateViewerBuyParcel"
+   type="notify">
+   <tag>fail</tag>
+You need to update your viewer to buy this parcel.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="LandBuyAccessBlocked"
+   type="notify">
+   <tag>fail</tag>
+You can't buy this land due to your maturity Rating. You may need to validate your age and/or install the latest Viewer. Please go to the Knowledge Base for details on accessing areas with this maturity Rating.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantBuyParcelNotForSale"
+   type="notify">
+   <tag>fail</tag>
+Unable to buy, this parcel is not for sale.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantBuySalePriceOrLandAreaChanged"
+   type="notify">
+   <tag>fail</tag>
+Unable to buy, the sale price or land area has changed.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantBuyParcelNotAuthorized"
+   type="notify">
+   <tag>fail</tag>
+You are not the authorized buyer for this parcel.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantBuyParcelAwaitingPurchaseAuth"
+   type="notify">
+   <tag>fail</tag>
+You cannot purchase this parcel because it is already awaiting purchase aut
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantBuildOverflowParcel"
+   type="notify">
+   <tag>fail</tag>
+You cannot build objects here because doing so would overflow the parcel.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="SelectedMultipleOwnedLand"
+   type="notify">
+   <tag>fail</tag>
+You selected land with different owners. Please select a smaller area and try again.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantJoinTooFewLeasedParcels"
+   type="notify">
+   <tag>fail</tag>
+Not enough leased parcels in selection to join.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantDivideLandMultipleParcelsSelected"
+   type="notify">
+   <tag>fail</tag>
+Can't divide land.\nThere is more than one parcel selected.\nTry selecting a smaller piece of land.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantDivideLandCantFindParcel"
+   type="notify">
+   <tag>fail</tag>
+Can't divide land.\nCan't find the parcel.\nPlease report with Help -> Reprt Bug...
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantDivideLandWholeParcelSelected"
+   type="notify">
+   <tag>fail</tag>
+Can't divide land. Whole parcel is selected.\nTry selecting a smaller piece of land.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="LandHasBeenDivided"
+   type="notify">
+   <tag>fail</tag>
+Land has been divided.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="PassPurchased"
+   type="notify">
+   <tag>fail</tag>
+You purchased a pass.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="RegionDisallowsClassifieds"
+   type="notify">
+   <tag>fail</tag>
+Region does not allow classified advertisements.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="LandPassExpireSoon"
+   type="notify">
+   <tag>fail</tag>
+Your pass to this land is about to expire.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantSitNoSuitableSurface"
+   type="notify">
+   <tag>fail</tag>
+There is no suitable surface to sit on, try another spot.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantSitNoRoom"
+   type="notify">
+   <tag>fail</tag>
+No room to sit here, try another spot.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="AutopilotCanceled"
+   type="notify">
+   <tag>fail</tag>
+Autopilot canceled
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="ClaimObjectFailedNoPermission"
+   type="notify">
+   <tag>fail</tag>
+Claim object failed because you don't have permission
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="ClaimObjectFailedNoMoney"
+   type="notify">
+   <tag>fail</tag>
+Claim object failed because you don't have enough L$.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantDeedGroupLand"
+   type="notify">
+   <tag>fail</tag>
+Cannot deed group-owned land.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="BuyObjectFailedNoMoney"
+   type="notify">
+   <tag>fail</tag>
+Buy object failed because you don't have enough L$.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="BuyInventoryFailedNoMoney"
+   type="notify">
+   <tag>fail</tag>
+Buy inventory failed because you do not have enough L$
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="BuyPassFailedNoMoney"
+   type="notify">
+   <tag>fail</tag>
+You don't have enough L$ to buy a pass to this land.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantBuyPassTryAgain"
+   type="notify">
+   <tag>fail</tag>
+Unable to buy pass right now.  Try again later.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantCreateObjectParcelFull"
+   type="notify">
+   <tag>fail</tag>
+Can't create object because \nthe parcel is full.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="FailedPlacingObject"
+   type="notify">
+   <tag>fail</tag>
+Failed to place object at specified location.  Please try again.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantCreateLandmarkForEvent"
+   type="notify">
+   <tag>fail</tag>
+Unable to create landmark for event.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="GodBeatsFreeze"
+   type="notify">
+   <tag>fail</tag>
+Your godlike powers break the freeze!
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="SpecialPowersRequestFailedLogged"
+   type="notify">
+   <tag>fail</tag>
+Request for special powers failed. This request has been logged.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="ExpireExplanation"
+   type="notify">
+   <tag>fail</tag>
+The system is currently unable to process your request. The request timed out.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="DieExplanation"
+   type="notify">
+   <tag>fail</tag>
+The system is unable to process your request.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="AddPrimitiveFailure"
+   type="notify">
+   <tag>fail</tag>
+Insufficient funds to create primitve.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="RezObjectFailure"
+   type="notify">
+   <tag>fail</tag>
+Insufficient funds to create object.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="ResetHomePositionNotLegal"
+   type="notify">
+   <tag>fail</tag>
+Reset Home position since Home wasn't legal.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantInviteRegionFull"
+   type="notify">
+   <tag>fail</tag>
+You cannot currently invite anyone to your location because the region is full. Try again later.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantSetHomeAtRegion"
+   type="notify">
+   <tag>fail</tag>
+This region does not allow you to set your home location here.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="ListValidHomeLocations"
+   type="notify">
+   <tag>fail</tag>
+You can only set your 'Home Location' on your land or at a mainland Infohub.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="SetHomePosition"
+   type="notify">
+   <tag>fail</tag>
+Home position set.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantDerezInventoryError"
+   type="notify">
+   <tag>fail</tag>
+Cannot derez object due to inventory fault.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantCreateRequestedInv"
+   type="notify">
+   <tag>fail</tag>
+Cannot create requested inventory.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantCreateRequestedInvFolder"
+   type="notify">
+   <tag>fail</tag>
+Cannot create requested inventory folder.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantCreateInventory"
+   type="notify">
+   <tag>fail</tag>
+Cannot create that inventory.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantCreateLandmark"
+   type="notify">
+   <tag>fail</tag>
+Cannot create landmark.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantCreateOutfit"
+   type="notify">
+   <tag>fail</tag>
+Cannot create outfit right now. Try again in a minute.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="InventoryNotForSale"
+   type="notify">
+   <tag>fail</tag>
+Inventory is not for sale.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantFindInvItem"
+   type="notify">
+   <tag>fail</tag>
+Unable to find inventory item.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantFindObject"
+   type="notify">
+   <tag>fail</tag>
+Unable to find object.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantTransfterMoneyRegionDisabled"
+   type="notify">
+   <tag>fail</tag>
+Money transfers to objects are currently disabled in this region.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantPayNoAgent"
+   type="notify">
+   <tag>fail</tag>
+Could not figure out who to pay.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="CantDonateToPublicObjects"
+   type="notify">
+   <tag>fail</tag>
+You cannot give L$ to public objects.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="InventoryCreationInWorldObjectFailed"
+   type="notify">
+   <tag>fail</tag>
+Inventory creation on in-world object failed.
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="UserBalanceOrLandUsageError"
+   type="notify">
+   <tag>fail</tag>
+An internal error prevented us from properly updating your viewer.  The L$ balance or parcel holdings displayed in your viewer may not reflect your actual balance on the servers.
+  </notification>
+
+
 </notifications>
diff --git a/indra/newview/skins/default/xui/en/panel_group_roles.xml b/indra/newview/skins/default/xui/en/panel_group_roles.xml
index eea26061256..df91ad8b5e5 100644
--- a/indra/newview/skins/default/xui/en/panel_group_roles.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_roles.xml
@@ -254,7 +254,7 @@ things in this group. There&apos;s a broad variety of Abilities.
          column_padding="0"
          draw_stripes="true"
          height="200"
-         follows="left|top"
+         follows="left|top|right"
          layout="topleft"
          left="0"
          right="-1"
diff --git a/indra/newview/skins/default/xui/en/panel_media_settings_general.xml b/indra/newview/skins/default/xui/en/panel_media_settings_general.xml
index cdf14572fe4..e844a15118c 100644
--- a/indra/newview/skins/default/xui/en/panel_media_settings_general.xml
+++ b/indra/newview/skins/default/xui/en/panel_media_settings_general.xml
@@ -30,7 +30,7 @@
     (This page does not pass the specified whitelist)
   </text>
   <line_editor 
-   max_length="1024"
+   max_length_bytes="1024"
    bottom_delta="-24" 
    enabled="true" 
    follows="left|top" 
diff --git a/indra/newview/skins/default/xui/en/panel_script_ed.xml b/indra/newview/skins/default/xui/en/panel_script_ed.xml
index f6a8af09735..765b07ed8b3 100644
--- a/indra/newview/skins/default/xui/en/panel_script_ed.xml
+++ b/indra/newview/skins/default/xui/en/panel_script_ed.xml
@@ -158,6 +158,7 @@
      text_readonly_color="DkGray"
      width="487"
      show_line_numbers="true" 
+     enable_tooltip_paste="true"
      word_wrap="true">
         Loading...
     </text_editor>
diff --git a/indra/newview/skins/default/xui/en/sidepanel_task_info.xml b/indra/newview/skins/default/xui/en/sidepanel_task_info.xml
index e69a17e037f..6ee8fc3a4c5 100644
--- a/indra/newview/skins/default/xui/en/sidepanel_task_info.xml
+++ b/indra/newview/skins/default/xui/en/sidepanel_task_info.xml
@@ -292,6 +292,10 @@
                  label="Open"
                  name="Open"
                  value="Open" />
+       <combo_box.item
+          label="Zoom"
+          name="Zoom"
+          value="Zoom" />
             </combo_box>
 	 <panel
          border="false"
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index 2157a05bbf2..4383b985921 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -1447,7 +1447,7 @@ integer llScriptDanger(vector pos)
 Returns TRUE if pos is over public land, sandbox land, land that doesn&apos;t allow everyone to edit and build, or land that doesn&apos;t allow outside scripts
 	</string>
 	<string name="LSLTipText_llDialog" translate="false">
-llDialog(key avatar, string message, list buttons, integer chat_channel
+llDialog(key avatar, string message, list buttons, integer chat_channel)
 Shows a dialog box on the avatar&apos;s screen with a message and up to 12 buttons.
 If a button is pressed, the avatar says the text of the button label on chat_channel.
 	</string>
@@ -3330,7 +3330,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
   <string name="LocationCtrlAdultIconTooltip">Adult Region</string>
   <string name="LocationCtrlModerateIconTooltip">Moderate Region</string>
   <string name="LocationCtrlGeneralIconTooltip">General Region</string>
-  <string name="LocationCtrlSeeAVsTooltip">Avatars visible and chat allowed outside of this parcel</string>
+  <string name="LocationCtrlSeeAVsTooltip">Avatars inside this parcel cannot be seen or heard by avatars outside this parcel</string>
   <string name="LocationCtrlPathfindingDirtyTooltip">Objects that move may not behave correctly in this region until the region is rebaked.</string>
   <string name="LocationCtrlPathfindingDisabledTooltip">Dynamic pathfinding is not enabled on this region.</string>
   <!-- Strings used by the (currently Linux) auto-updater app -->
-- 
GitLab


From f34ef33e5ceb7f94ee8ca8586880d7be0e5ced82 Mon Sep 17 00:00:00 2001
From: Logan Dethrow <log@lindenlab.com>
Date: Tue, 15 Jan 2013 17:43:16 -0500
Subject: [PATCH 229/436] Fixed spelling error.

---
 indra/newview/llviewerinventory.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/indra/newview/llviewerinventory.h b/indra/newview/llviewerinventory.h
index 13e95c57cbf..83f0486f01a 100755
--- a/indra/newview/llviewerinventory.h
+++ b/indra/newview/llviewerinventory.h
@@ -211,7 +211,7 @@ class LLViewerInventoryCategory  : public LLInventoryCategory
 	// Returns true if a fetch was issued.
 	bool fetch();
 
-	// used to help make cacheing more robust - for example, if
+	// used to help make caching more robust - for example, if
 	// someone is getting 4 packets but logs out after 3. the viewer
 	// may never know the cache is wrong.
 	enum { DESCENDENT_COUNT_UNKNOWN = -1 };
@@ -219,7 +219,7 @@ class LLViewerInventoryCategory  : public LLInventoryCategory
 	void setDescendentCount(S32 descendents) { mDescendentCount = descendents; }
 
 	// file handling on the viewer. These are not meant for anything
-	// other than cacheing.
+	// other than caching.
 	bool exportFileLocal(LLFILE* fp) const;
 	bool importFileLocal(LLFILE* fp);
 	void determineFolderType();
-- 
GitLab


From f48011e4d04f744a93a18267bf7b78ec0b717b7c Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Tue, 15 Jan 2013 20:30:20 -0500
Subject: [PATCH 230/436] SH-3339 WIP, SH-3645 WIP - added getActualDescription
 to obviate an obnoxious and widely-used workaround, re-create COF link after
 wearable edit to force COF version bump

---
 .hgignore                             |  0
 indra/llinventory/llinventory.cpp     |  5 +++
 indra/llinventory/llinventory.h       |  1 +
 indra/newview/llappearancemgr.cpp     | 49 +++++++++++++++++++++------
 indra/newview/llappearancemgr.h       |  3 ++
 indra/newview/llpaneleditwearable.cpp | 22 +++++++++++-
 6 files changed, 68 insertions(+), 12 deletions(-)
 mode change 100644 => 100755 .hgignore
 mode change 100644 => 100755 indra/llinventory/llinventory.cpp
 mode change 100644 => 100755 indra/llinventory/llinventory.h
 mode change 100644 => 100755 indra/newview/llpaneleditwearable.cpp

diff --git a/.hgignore b/.hgignore
old mode 100644
new mode 100755
diff --git a/indra/llinventory/llinventory.cpp b/indra/llinventory/llinventory.cpp
old mode 100644
new mode 100755
index 2dbc3310368..3150a99a214
--- a/indra/llinventory/llinventory.cpp
+++ b/indra/llinventory/llinventory.cpp
@@ -379,6 +379,11 @@ const std::string& LLInventoryItem::getDescription() const
 	return mDescription;
 }
 
+const std::string& LLInventoryItem::getActualDescription() const
+{
+	return mDescription;
+}
+
 time_t LLInventoryItem::getCreationDate() const
 {
 	return mCreationDate;
diff --git a/indra/llinventory/llinventory.h b/indra/llinventory/llinventory.h
old mode 100644
new mode 100755
index a5cfe59bda3..44e7c0c34d5
--- a/indra/llinventory/llinventory.h
+++ b/indra/llinventory/llinventory.h
@@ -160,6 +160,7 @@ class LLInventoryItem : public LLInventoryObject
 	virtual const LLUUID& getCreatorUUID() const;
 	virtual const LLUUID& getAssetUUID() const;
 	virtual const std::string& getDescription() const;
+	virtual const std::string& getActualDescription() const; // Does not follow links
 	virtual const LLSaleInfo& getSaleInfo() const;
 	virtual LLInventoryType::EType getInventoryType() const;
 	virtual U32 getFlags() const;
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 7edba842b89..d1ed82cc980 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -451,7 +451,7 @@ class LLCallAfterInventoryLinkMgr: public LLCallAfterInventoryBatchMgr
 								item->getLinkedUUID(),
 								mDstCatID,
 								item->getName(),
-								item->LLInventoryItem::getDescription(),
+								item->getActualDescription(),
 								LLAssetType::AT_LINK,
 								new LLBoostFuncInventoryCallback(
 									boost::bind(&LLCallAfterInventoryBatchMgr::onOp,this,item_id,_1,LLTimer())));
@@ -1467,13 +1467,13 @@ void LLAppearanceMgr::shallowCopyCategoryContents(const LLUUID& src_id, const LL
 		{
 			case LLAssetType::AT_LINK:
 			{
-				//LLInventoryItem::getDescription() is used for a new description 
+				//getActualDescription() is used for a new description 
 				//to propagate ordering information saved in descriptions of links
 				link_inventory_item(gAgent.getID(),
 									item->getLinkedUUID(),
 									dst_id,
 									item->getName(),
-									item->LLInventoryItem::getDescription(),
+									item->getActualDescription(),
 									LLAssetType::AT_LINK, cb);
 				break;
 			}
@@ -1718,7 +1718,7 @@ void LLAppearanceMgr::linkAll(const LLUUID& cat_uuid,
 							item->getLinkedUUID(),
 							cat_uuid,
 							item->getName(),
-							item->LLInventoryItem::getDescription(),
+							item->getActualDescription(),
 							LLAssetType::AT_LINK,
 							cb);
 
@@ -1910,7 +1910,7 @@ bool sort_by_description(const LLInventoryItem* item1, const LLInventoryItem* it
 		return true;
 	}
 
-	return item1->LLInventoryItem::getDescription() < item2->LLInventoryItem::getDescription();
+	return item1->getActualDescription() < item2->getActualDescription();
 }
 
 void item_array_diff(LLInventoryModel::item_array_t& full_list,
@@ -2486,6 +2486,33 @@ void LLAppearanceMgr::addCOFItemLink(const LLInventoryItem *item, bool do_update
 	return;
 }
 
+LLInventoryModel::item_array_t LLAppearanceMgr::findCOFItemLinks(const LLUUID& item_id)
+{
+
+	LLInventoryModel::item_array_t result;
+	const LLViewerInventoryItem *vitem =
+		dynamic_cast<const LLViewerInventoryItem*>(gInventory.getItem(item_id));
+
+	if (vitem)
+	{
+		LLInventoryModel::cat_array_t cat_array;
+		LLInventoryModel::item_array_t item_array;
+		gInventory.collectDescendents(LLAppearanceMgr::getCOF(),
+									  cat_array,
+									  item_array,
+									  LLInventoryModel::EXCLUDE_TRASH);
+		for (S32 i=0; i<item_array.count(); i++)
+		{
+			const LLViewerInventoryItem* inv_item = item_array.get(i).get();
+			if (inv_item->getLinkedUUID() == vitem->getLinkedUUID())
+			{
+				result.put(item_array.get(i));
+			}
+		}
+	}
+	return result;
+}
+
 void LLAppearanceMgr::removeAllClothesFromAvatar()
 {
 	// Fetch worn clothes (i.e. the ones in COF).
@@ -2644,7 +2671,7 @@ void LLAppearanceMgr::updateIsDirty()
 
 			if (item1->getLinkedUUID() != item2->getLinkedUUID() || 
 				item1->getName() != item2->getName() ||
-				item1->LLInventoryItem::getDescription() != item2->LLInventoryItem::getDescription())
+				item1->getActualDescription() != item2->getActualDescription())
 			{
 				mOutfitIsDirty = true;
 				return;
@@ -2855,8 +2882,8 @@ struct WearablesOrderComparator
 			return true;
 		}
 		
-		const std::string& desc1 = item1->LLInventoryItem::getDescription();
-		const std::string& desc2 = item2->LLInventoryItem::getDescription();
+		const std::string& desc1 = item1->getActualDescription();
+		const std::string& desc2 = item2->getActualDescription();
 		
 		bool item1_valid = (desc1.size() == mControlSize) && (ORDER_NUMBER_SEPARATOR == desc1[0]);
 		bool item2_valid = (desc2.size() == mControlSize) && (ORDER_NUMBER_SEPARATOR == desc2[0]);
@@ -2914,7 +2941,7 @@ void LLAppearanceMgr::updateClothingOrderingInfo(LLUUID cat_id, bool update_base
 			if (!item) continue;
 
 			std::string new_order_str = build_order_string((LLWearableType::EType)type, i);
-			if (new_order_str == item->LLInventoryItem::getDescription()) continue;
+			if (new_order_str == item->getActualDescription()) continue;
 
 			item->setDescription(new_order_str);
 			item->setComplete(TRUE);
@@ -3179,8 +3206,8 @@ bool LLAppearanceMgr::moveWearable(LLViewerInventoryItem* item, bool closer_to_b
 	closer_to_body ? --it : ++it;
 	LLViewerInventoryItem* swap_item = *it;
 	if (!swap_item) return false;
-	std::string tmp = swap_item->LLInventoryItem::getDescription();
-	swap_item->setDescription(item->LLInventoryItem::getDescription());
+	std::string tmp = swap_item->getActualDescription();
+	swap_item->setDescription(item->getActualDescription());
 	item->setDescription(tmp);
 
 
diff --git a/indra/newview/llappearancemgr.h b/indra/newview/llappearancemgr.h
index 31dbce892a4..01a2d414589 100755
--- a/indra/newview/llappearancemgr.h
+++ b/indra/newview/llappearancemgr.h
@@ -132,6 +132,9 @@ class LLAppearanceMgr: public LLSingleton<LLAppearanceMgr>
 	void addCOFItemLink(const LLUUID& item_id, bool do_update = true, LLPointer<LLInventoryCallback> cb = NULL);
 	void addCOFItemLink(const LLInventoryItem *item, bool do_update = true, LLPointer<LLInventoryCallback> cb = NULL);
 
+	// Find COF entries referencing the given item.
+	LLInventoryModel::item_array_t findCOFItemLinks(const LLUUID& item_id);
+	
 	// Remove COF entries
 	void removeCOFItemLinks(const LLUUID& item_id);
 	void removeCOFLinksOfType(LLWearableType::EType type);
diff --git a/indra/newview/llpaneleditwearable.cpp b/indra/newview/llpaneleditwearable.cpp
old mode 100644
new mode 100755
index 606e78bd580..cca3b903299
--- a/indra/newview/llpaneleditwearable.cpp
+++ b/indra/newview/llpaneleditwearable.cpp
@@ -1065,7 +1065,27 @@ void LLPanelEditWearable::saveChanges(bool force_save_as)
         }
         else
         {
-                gAgentWearables.saveWearable(mWearablePtr->getType(), index, TRUE, new_name);
+			LLInventoryModel::item_array_t links =
+				LLAppearanceMgr::instance().findCOFItemLinks(mWearablePtr->getItemID());
+			if (links.size()>0)
+			{
+				// Make another copy of this link, with the same description.
+				LLInventoryItem *item = links.get(0).get();
+				if (item)
+				{
+					const std::string description = item->getIsLinkType() ? item->getActualDescription() : "";
+					link_inventory_item( gAgent.getID(),
+										 item->getLinkedUUID(),
+										 LLAppearanceMgr::instance().getCOF(),
+										 item->getName(),
+										 description,
+										 LLAssetType::AT_LINK,
+										 NULL);
+					gInventory.purgeObject(item->getUUID());
+				}
+			}
+			gAgentWearables.saveWearable(mWearablePtr->getType(), index, TRUE, new_name);
+
         }
 }
 
-- 
GitLab


From 6a8947679cdb3a3d6ce9d4d175a2bdfed4b7eee3 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Wed, 16 Jan 2013 11:34:42 -0500
Subject: [PATCH 231/436] SH-3645 WIP - preserve item order after wearable save
 as

---
 indra/newview/llagentwearables.cpp    | 12 ++++--
 indra/newview/llagentwearables.h      |  6 ++-
 indra/newview/llappearancemgr.cpp     | 26 ++++++++-----
 indra/newview/llappearancemgr.h       |  4 +-
 indra/newview/llinventorylistitem.cpp |  2 +-
 indra/newview/llpaneleditwearable.cpp | 55 ++++++++++++++++-----------
 6 files changed, 64 insertions(+), 41 deletions(-)

diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp
index e79fda2459e..70f4de8db24 100755
--- a/indra/newview/llagentwearables.cpp
+++ b/indra/newview/llagentwearables.cpp
@@ -210,12 +210,13 @@ LLAgentWearables::sendAgentWearablesUpdateCallback::~sendAgentWearablesUpdateCal
  * @param todo Bitmask of actions to take on completion.
  */
 LLAgentWearables::addWearableToAgentInventoryCallback::addWearableToAgentInventoryCallback(
-	LLPointer<LLRefCount> cb, LLWearableType::EType type, U32 index, LLViewerWearable* wearable, U32 todo) :
+	LLPointer<LLRefCount> cb, LLWearableType::EType type, U32 index, LLViewerWearable* wearable, U32 todo, const std::string description) :
 	mType(type),
 	mIndex(index),	
 	mWearable(wearable),
 	mTodo(todo),
-	mCB(cb)
+	mCB(cb),
+	mDescription(description)
 {
 	llinfos << "constructor" << llendl;
 }
@@ -255,7 +256,7 @@ void LLAgentWearables::addWearableToAgentInventoryCallback::fire(const LLUUID& i
 	}
 	if (mTodo & CALL_WEARITEM)
 	{
-		LLAppearanceMgr::instance().addCOFItemLink(inv_item, true);
+		LLAppearanceMgr::instance().addCOFItemLink(inv_item, true, NULL, mDescription);
 	}
 }
 
@@ -455,6 +456,7 @@ void LLAgentWearables::saveWearable(const LLWearableType::EType type, const U32
 void LLAgentWearables::saveWearableAs(const LLWearableType::EType type,
 									  const U32 index,
 									  const std::string& new_name,
+									  const std::string& description,
 									  BOOL save_in_lost_and_found)
 {
 	if (!isWearableCopyable(type, index))
@@ -486,7 +488,9 @@ void LLAgentWearables::saveWearableAs(const LLWearableType::EType type,
 			type,
 			index,
 			new_wearable,
-			addWearableToAgentInventoryCallback::CALL_WEARITEM);
+			addWearableToAgentInventoryCallback::CALL_WEARITEM,
+			description
+			);
 	LLUUID category_id;
 	if (save_in_lost_and_found)
 	{
diff --git a/indra/newview/llagentwearables.h b/indra/newview/llagentwearables.h
index a60fbc969bf..5be46486367 100755
--- a/indra/newview/llagentwearables.h
+++ b/indra/newview/llagentwearables.h
@@ -183,7 +183,7 @@ class LLAgentWearables : public LLInitClass<LLAgentWearables>, public LLWearable
 	// Save Wearables
 	//--------------------------------------------------------------------
 public:	
-	void			saveWearableAs(const LLWearableType::EType type, const U32 index, const std::string& new_name, BOOL save_in_lost_and_found);
+	void			saveWearableAs(const LLWearableType::EType type, const U32 index, const std::string& new_name, const std::string& description, BOOL save_in_lost_and_found);
 	void			saveWearable(const LLWearableType::EType type, const U32 index, BOOL send_update = TRUE,
 								 const std::string new_name = "");
 	void			saveAllWearables();
@@ -270,7 +270,8 @@ class LLAgentWearables : public LLInitClass<LLAgentWearables>, public LLWearable
 											LLWearableType::EType type,
 											U32 index,
 											LLViewerWearable* wearable,
-											U32 todo = CALL_NONE);
+											U32 todo = CALL_NONE,
+											const std::string description = "");
 		virtual void fire(const LLUUID& inv_item);
 	private:
 		LLWearableType::EType mType;
@@ -278,6 +279,7 @@ class LLAgentWearables : public LLInitClass<LLAgentWearables>, public LLWearable
 		LLViewerWearable* mWearable;
 		U32 mTodo;
 		LLPointer<LLRefCount> mCB;
+		std::string mDescription;
 	};
 
 }; // LLAgentWearables
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index d1ed82cc980..2b1e78c8991 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -1902,7 +1902,7 @@ static void remove_non_link_items(LLInventoryModel::item_array_t &items)
 }
 
 //a predicate for sorting inventory items by actual descriptions
-bool sort_by_description(const LLInventoryItem* item1, const LLInventoryItem* item2)
+bool sort_by_actual_description(const LLInventoryItem* item1, const LLInventoryItem* item2)
 {
 	if (!item1 || !item2) 
 	{
@@ -2345,10 +2345,11 @@ bool areMatchingWearables(const LLViewerInventoryItem *a, const LLViewerInventor
 class LLDeferredCOFLinkObserver: public LLInventoryObserver
 {
 public:
-	LLDeferredCOFLinkObserver(const LLUUID& item_id, bool do_update, LLPointer<LLInventoryCallback> cb = NULL):
+	LLDeferredCOFLinkObserver(const LLUUID& item_id, bool do_update, LLPointer<LLInventoryCallback> cb = NULL, std::string description = ""):
 		mItemID(item_id),
 		mDoUpdate(do_update),
-		mCallback(cb)
+		mCallback(cb),
+		mDescription(description)
 	{
 	}
 
@@ -2370,23 +2371,24 @@ class LLDeferredCOFLinkObserver: public LLInventoryObserver
 private:
 	const LLUUID mItemID;
 	bool mDoUpdate;
+	std::string mDescription;
 	LLPointer<LLInventoryCallback> mCallback;
 };
 
 
 // BAP - note that this runs asynchronously if the item is not already loaded from inventory.
 // Dangerous if caller assumes link will exist after calling the function.
-void LLAppearanceMgr::addCOFItemLink(const LLUUID &item_id, bool do_update, LLPointer<LLInventoryCallback> cb)
+void LLAppearanceMgr::addCOFItemLink(const LLUUID &item_id, bool do_update, LLPointer<LLInventoryCallback> cb, const std::string description)
 {
 	const LLInventoryItem *item = gInventory.getItem(item_id);
 	if (!item)
 	{
-		LLDeferredCOFLinkObserver *observer = new LLDeferredCOFLinkObserver(item_id, do_update, cb);
+		LLDeferredCOFLinkObserver *observer = new LLDeferredCOFLinkObserver(item_id, do_update, cb, description);
 		gInventory.addObserver(observer);
 	}
 	else
 	{
-		addCOFItemLink(item, do_update, cb);
+		addCOFItemLink(item, do_update, cb, description);
 	}
 }
 
@@ -2409,8 +2411,9 @@ void modified_cof_cb(const LLUUID& inv_item)
 	}
 }
 
-void LLAppearanceMgr::addCOFItemLink(const LLInventoryItem *item, bool do_update, LLPointer<LLInventoryCallback> cb)
+void LLAppearanceMgr::addCOFItemLink(const LLInventoryItem *item, bool do_update, LLPointer<LLInventoryCallback> cb, const std::string description)
 {		
+	std::string link_description = description;
 	const LLViewerInventoryItem *vitem = dynamic_cast<const LLViewerInventoryItem*>(item);
 	if (!vitem)
 	{
@@ -2474,12 +2477,15 @@ void LLAppearanceMgr::addCOFItemLink(const LLInventoryItem *item, bool do_update
 		{
 			cb = new LLBoostFuncInventoryCallback(modified_cof_cb);
 		}
-		const std::string description = vitem->getIsLinkType() ? vitem->getDescription() : "";
+		if (vitem->getIsLinkType())
+		{
+			link_description = vitem->getActualDescription();
+		}
 		link_inventory_item( gAgent.getID(),
 							 vitem->getLinkedUUID(),
 							 getCOF(),
 							 vitem->getName(),
-							 description,
+							 link_description,
 							 LLAssetType::AT_LINK,
 							 cb);
 	}
@@ -3240,7 +3246,7 @@ void LLAppearanceMgr::sortItemsByActualDescription(LLInventoryModel::item_array_
 {
 	if (items.size() < 2) return;
 
-	std::sort(items.begin(), items.end(), sort_by_description);
+	std::sort(items.begin(), items.end(), sort_by_actual_description);
 }
 
 //#define DUMP_CAT_VERBOSE
diff --git a/indra/newview/llappearancemgr.h b/indra/newview/llappearancemgr.h
index 01a2d414589..bb4c9ee5a2d 100755
--- a/indra/newview/llappearancemgr.h
+++ b/indra/newview/llappearancemgr.h
@@ -129,8 +129,8 @@ class LLAppearanceMgr: public LLSingleton<LLAppearanceMgr>
 				 LLPointer<LLInventoryCallback> cb);
 
 	// Add COF link to individual item.
-	void addCOFItemLink(const LLUUID& item_id, bool do_update = true, LLPointer<LLInventoryCallback> cb = NULL);
-	void addCOFItemLink(const LLInventoryItem *item, bool do_update = true, LLPointer<LLInventoryCallback> cb = NULL);
+	void addCOFItemLink(const LLUUID& item_id, bool do_update = true, LLPointer<LLInventoryCallback> cb = NULL, const std::string description = "");
+	void addCOFItemLink(const LLInventoryItem *item, bool do_update = true, LLPointer<LLInventoryCallback> cb = NULL, const std::string description = "");
 
 	// Find COF entries referencing the given item.
 	LLInventoryModel::item_array_t findCOFItemLinks(const LLUUID& item_id);
diff --git a/indra/newview/llinventorylistitem.cpp b/indra/newview/llinventorylistitem.cpp
index 26041767fd4..06017964365 100644
--- a/indra/newview/llinventorylistitem.cpp
+++ b/indra/newview/llinventorylistitem.cpp
@@ -231,7 +231,7 @@ const std::string& LLPanelInventoryListItemBase::getDescription() const
 	{
 		return LLStringUtil::null;
 	}
-	return inv_item->getDescription();
+	return inv_item->getActualDescription();
 }
 
 time_t LLPanelInventoryListItemBase::getCreationDate() const
diff --git a/indra/newview/llpaneleditwearable.cpp b/indra/newview/llpaneleditwearable.cpp
index cca3b903299..fe4b55bb5a7 100755
--- a/indra/newview/llpaneleditwearable.cpp
+++ b/indra/newview/llpaneleditwearable.cpp
@@ -1056,36 +1056,47 @@ void LLPanelEditWearable::saveChanges(bool force_save_as)
         U32 index = gAgentWearables.getWearableIndex(mWearablePtr);
 
         std::string new_name = mNameEditor->getText();
+
+		// Find an existing link to this wearable's inventory item, if any, and its description field.
+		LLInventoryItem *link_item = NULL;
+		std::string description;
+		LLInventoryModel::item_array_t links =
+			LLAppearanceMgr::instance().findCOFItemLinks(mWearablePtr->getItemID());
+		if (links.size()>0)
+		{
+			link_item = links.get(0).get();
+			if (link_item && link_item->getIsLinkType())
+			{
+				description = link_item->getActualDescription();
+			}
+		}
+
         if (force_save_as)
         {
-                // the name of the wearable has changed, re-save wearable with new name
-                LLAppearanceMgr::instance().removeCOFItemLinks(mWearablePtr->getItemID());
-                gAgentWearables.saveWearableAs(mWearablePtr->getType(), index, new_name, FALSE);
-                mNameEditor->setText(mWearableItem->getName());
+			// the name of the wearable has changed, re-save wearable with new name
+			LLAppearanceMgr::instance().removeCOFItemLinks(mWearablePtr->getItemID());
+			gAgentWearables.saveWearableAs(mWearablePtr->getType(), index, new_name, description, FALSE);
+			mNameEditor->setText(mWearableItem->getName());
         }
         else
         {
-			LLInventoryModel::item_array_t links =
-				LLAppearanceMgr::instance().findCOFItemLinks(mWearablePtr->getItemID());
-			if (links.size()>0)
+			// Make another copy of this link, with the same
+			// description.  This is needed to bump the COF
+			// version so texture baking service knows appearance has changed.
+			if (link_item)
 			{
-				// Make another copy of this link, with the same description.
-				LLInventoryItem *item = links.get(0).get();
-				if (item)
-				{
-					const std::string description = item->getIsLinkType() ? item->getActualDescription() : "";
-					link_inventory_item( gAgent.getID(),
-										 item->getLinkedUUID(),
-										 LLAppearanceMgr::instance().getCOF(),
-										 item->getName(),
-										 description,
-										 LLAssetType::AT_LINK,
-										 NULL);
-					gInventory.purgeObject(item->getUUID());
-				}
+				// Create new link
+				link_inventory_item( gAgent.getID(),
+									 link_item->getLinkedUUID(),
+									 LLAppearanceMgr::instance().getCOF(),
+									 link_item->getName(),
+									 description,
+									 LLAssetType::AT_LINK,
+									 NULL);
+				// Remove old link
+				gInventory.purgeObject(link_item->getUUID());
 			}
 			gAgentWearables.saveWearable(mWearablePtr->getType(), index, TRUE, new_name);
-
         }
 }
 
-- 
GitLab


From 06baa6bf9cf7bb8b787f10705a3109ab00866d79 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Fri, 18 Jan 2013 21:22:18 +0000
Subject: [PATCH 232/436] Moving appearance utility deb to private repo

---
 autobuild.xml |  4 ++--
 build.sh      | 54 +++++++++++++++------------------------------------
 2 files changed, 18 insertions(+), 40 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index 3c503997cc5..eaafc45427f 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -1290,9 +1290,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>17bcc2481fe362e297376d9c46888de8</string>
+              <string>376738111ec9ba6f1b0d0dee0a3c784d</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/268501/arch/Linux/installer/llappearanceutility_source-0.1-linux-20121220.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/269218/arch/Linux/installer/llappearanceutility_source-0.1-linux-20130118.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
diff --git a/build.sh b/build.sh
index 307dda85eb0..d779a1a34b5 100755
--- a/build.sh
+++ b/build.sh
@@ -334,51 +334,29 @@ then
           done
       fi
       # Move any .deb results.
-      mv ${build_dir}/packages/*.deb ../ 2>/dev/null || true
+      mkdir -p ../packages_public
+      mkdir -p ../packages_private
+      mv ${build_dir}/packages/*.deb ../packages_public 2>/dev/null || true
+      mv ${build_dir}/packages/packages_private/*.deb ../packages_private 2>/dev/null || true
 
       # upload debian package and create repository
       begin_section "Upload Debian Repository"
-      for deb_file in ../*.deb; do
+      for deb_file in `/bin/ls ../packages_public/*.deb ../*.deb 2>/dev/null`; do
         upload_item debian $deb_file binary/octet-stream
       done
-      if [ -d "$build_log_dir/debian_repo" ]
-      then
-        pushd "$build_log_dir/debian_repo"
-        cat > Release <<EOF
-Archive: stable
-Component: main
-Origin: Teamcity
-Label: Teamcity built .debs
-Architecture: i386 amd64 any
-EOF
-        if dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz \
-        && dpkg-scansources . /dev/null | gzip -9c > Sources.gz
-        then
-          begin_section Packages.gz
-          gunzip --stdout Packages.gz
-          for file in *.deb
-          do  
-            stat "$file" | sed 2q
-            md5sum "$file"
-          done
-          end_section Packages.gz
-
-          for file in *
-          do
-            upload_item debian_repo "$file" binary/octet-stream
-          done
-        else
-          record_failure 'Unable to generate Packages.gz or Sources.gz'
-        fi
-        popd
-
-        process_pending_uploads
+      for deb_file in `/bin/ls ../packages_private/*.deb 2>/dev/null`; do
+        upload_item debian_private $deb_file binary/octet-stream
+      done
 
-        # Rename the local debian_repo directory so that the master buildscript
-        # doesn't make a remote repo again.
+      create_deb_repo
 
-        mv $build_log_dir/debian_repo $build_log_dir/debian_repo_pushed
-      fi
+      # Rename the local debian_repo* directories so that the master buildscript
+      # doesn't make a remote repo again.
+      for debian_repo_type in debian_repo debian_repo_private; do
+        if [ -d "$build_log_dir/$debian_repo_type" ]; then
+          mv $build_log_dir/$debian_repo_type $build_log_dir/${debian_repo_type}_pushed
+        fi
+      done
       end_section "Upload Debian Repository"
       
     else
-- 
GitLab


From b3cbe35532b365e223df14921532a6e587695dec Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Fri, 18 Jan 2013 16:51:03 -0500
Subject: [PATCH 233/436] SH-3344 WIP - more texture load monitoring

---
 indra/newview/llvoavatar.cpp     | 96 ++++++++++++++++++++++++++++----
 indra/newview/llvoavatar.h       | 16 ++++--
 indra/newview/llvoavatarself.cpp |  1 +
 3 files changed, 96 insertions(+), 17 deletions(-)

diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index df0b8171a63..54bb755ad5c 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -2888,7 +2888,11 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent)
 		{
 			central_bake_version = getRegion()->getCentralBakeVersion();
 		}
-		addDebugText(llformat("mLocal: %d, mEdit: %d, mUSB: %d, CBV: %d",
+		bool all_baked_downloaded = allBakedTexturesCompletelyDownloaded();
+		bool all_local_downloaded = allLocalTexturesCompletelyDownloaded();
+		addDebugText(llformat("%s%s - mLocal: %d, mEdit: %d, mUSB: %d, CBV: %d",
+							  all_local_downloaded ? "L" : "l",
+							  all_baked_downloaded ? "B" : "b",
 							  mUseLocalAppearance, mIsEditingAppearance,
 							  mUseServerBakes, central_bake_version));
 	}
@@ -4001,10 +4005,48 @@ U32 LLVOAvatar::renderImpostor(LLColor4U color, S32 diffuse_channel)
 	return 6;
 }
 
-//------------------------------------------------------------------------
-// LLVOAvatar::updateTextures()
-//------------------------------------------------------------------------
-void LLVOAvatar::collectTextureUUIDs(std::set<LLUUID>& ids, S32& local_mem, S32& baked_mem)
+bool LLVOAvatar::allTexturesCompletelyDownloaded(std::set<LLUUID>& ids)
+{
+	for (std::set<LLUUID>::const_iterator it = ids.begin(); it != ids.end(); ++it)
+	{
+		LLViewerFetchedTexture *imagep = gTextureList.findImage(*it);
+		if (imagep && imagep->getDiscardLevel()!=0)
+		{
+			return false;
+		}
+	}
+	return true;
+}
+
+bool LLVOAvatar::allLocalTexturesCompletelyDownloaded()
+{
+	std::set<LLUUID> local_ids;
+	collectLocalTextureUUIDs(local_ids);
+	return allTexturesCompletelyDownloaded(local_ids);
+}
+
+bool LLVOAvatar::allBakedTexturesCompletelyDownloaded()
+{
+	std::set<LLUUID> baked_ids;
+	collectLocalTextureUUIDs(baked_ids);
+	return allTexturesCompletelyDownloaded(baked_ids);
+}
+
+S32 LLVOAvatar::totalTextureMemForUUIDS(std::set<LLUUID>& ids)
+{
+	S32 result = 0;
+	for (std::set<LLUUID>::const_iterator it = ids.begin(); it != ids.end(); ++it)
+	{
+		LLViewerFetchedTexture *imagep = gTextureList.findImage(*it);
+		if (imagep)
+		{
+			result += imagep->getTextureMemory();
+		}
+	}
+	return result;
+}
+	
+void LLVOAvatar::collectLocalTextureUUIDs(std::set<LLUUID>& ids)
 {
 	for (U32 texture_index = 0; texture_index < getNumTEs(); texture_index++)
 	{
@@ -4020,17 +4062,26 @@ void LLVOAvatar::collectTextureUUIDs(std::set<LLUUID>& ids, S32& local_mem, S32&
 				const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = LLAvatarAppearanceDictionary::getInstance()->getTexture((ETextureIndex)texture_index);
 				if (texture_dict->mIsLocalTexture)
 				{
-					local_mem += imagep->getTextureMemory();
 					ids.insert(imagep->getID());
 				}
 			}
 		}
+	}
+	ids.erase(IMG_DEFAULT);
+	ids.erase(IMG_DEFAULT_AVATAR);
+	ids.erase(IMG_INVISIBLE);
+}
+
+void LLVOAvatar::collectBakedTextureUUIDs(std::set<LLUUID>& ids)
+{
+	for (U32 texture_index = 0; texture_index < getNumTEs(); texture_index++)
+	{
+		LLViewerFetchedTexture *imagep = NULL;
 		if (isIndexBakedTexture((ETextureIndex) texture_index))
 		{
 			imagep = LLViewerTextureManager::staticCastToFetchedTexture(getImage(texture_index,0), TRUE);
 			if (imagep)
 			{
-				baked_mem += imagep->getTextureMemory();
 				ids.insert(imagep->getID());
 			}
 		}
@@ -4040,15 +4091,36 @@ void LLVOAvatar::collectTextureUUIDs(std::set<LLUUID>& ids, S32& local_mem, S32&
 	ids.erase(IMG_INVISIBLE);
 }
 
+void LLVOAvatar::collectTextureUUIDs(std::set<LLUUID>& ids)
+{
+	collectLocalTextureUUIDs(ids);
+	collectBakedTextureUUIDs(ids);
+}
+
 void LLVOAvatar::releaseOldTextures()
 {
 	S32 current_texture_mem = 0;
 	
 	// Any textures that we used to be using but are no longer using should no longer be flagged as "NO_DELETE"
+	std::set<LLUUID> baked_texture_ids;
+	collectBakedTextureUUIDs(baked_texture_ids);
+	S32 new_baked_mem = totalTextureMemForUUIDS(baked_texture_ids);
+
+	std::set<LLUUID> local_texture_ids;
+	collectLocalTextureUUIDs(local_texture_ids);
+	S32 new_local_mem = totalTextureMemForUUIDS(local_texture_ids);
+
 	std::set<LLUUID> new_texture_ids;
-	S32 local_mem = 0, baked_mem = 0;
-	collectTextureUUIDs(new_texture_ids, local_mem, baked_mem);
-	LL_DEBUGS("Avatar") << getFullname() << " local_mem: " << local_mem << " baked_mem: " << baked_mem << llendl;  
+	new_texture_ids.insert(baked_texture_ids.begin(),baked_texture_ids.end());
+	new_texture_ids.insert(local_texture_ids.begin(),local_texture_ids.end());
+	S32 new_total_mem = totalTextureMemForUUIDS(new_texture_ids);
+
+	S32 old_total_mem = totalTextureMemForUUIDS(mTextureIDs);
+	LL_DEBUGS("Avatar") << getFullname() << " old_total_mem: " << old_total_mem << " new_total_mem (L/B): " << new_total_mem << " (" << new_local_mem <<", " << new_baked_mem << ")" << llendl;  
+	if (!isSelf() && new_total_mem > new_baked_mem)
+	{
+			llwarns << "extra local textures stored for non-self av" << llendl;
+	}
 	for (std::set<LLUUID>::iterator it = mTextureIDs.begin(); it != mTextureIDs.end(); ++it)
 	{
 		if (new_texture_ids.find(*it) == new_texture_ids.end())
@@ -4062,8 +4134,8 @@ void LLVOAvatar::releaseOldTextures()
 					// This will allow the texture to be deleted if not in use.
 					imagep->forceActive();
 
-					// This resets the clock to being flagged as
-					// unused, preventing the texture from being
+					// This resets the clock to texture being flagged
+					// as unused, preventing the texture from being
 					// deleted immediately. If other avatars or
 					// objects are using it, it can still be flagged
 					// no-delete by them.
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
index 5b1395e5668..2c64b9695e3 100755
--- a/indra/newview/llvoavatar.h
+++ b/indra/newview/llvoavatar.h
@@ -124,17 +124,23 @@ class LLVOAvatar :
 public:
 	/*virtual*/ void			updateGL();
 	/*virtual*/ LLVOAvatar*		asAvatar();
-	virtual U32    	 	 	processUpdateMessage(LLMessageSystem *mesgsys,
+	virtual U32    	 	 		processUpdateMessage(LLMessageSystem *mesgsys,
 													 void **user_data,
 													 U32 block_num,
 													 const EObjectUpdateType update_type,
 													 LLDataPacker *dp);
-	virtual void   	 	 	idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time);
+	virtual void   	 	 		idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time);
 	/*virtual*/ BOOL   	 	 	updateLOD();
-	BOOL  	 	 	 	 	updateJointLODs();
-	void					updateLODRiggedAttachments( void );
+	BOOL  	 	 	 	 		updateJointLODs();
+	void						updateLODRiggedAttachments( void );
 	/*virtual*/ BOOL   	 	 	isActive() const; // Whether this object needs to do an idleUpdate.
-	void 						collectTextureUUIDs(std::set<LLUUID>& ids, S32& local_mem, S32& baked_mem);
+	S32 						totalTextureMemForUUIDS(std::set<LLUUID>& ids);
+	bool 						allTexturesCompletelyDownloaded(std::set<LLUUID>& ids);
+	bool 						allLocalTexturesCompletelyDownloaded();
+	bool 						allBakedTexturesCompletelyDownloaded();
+	void 						collectLocalTextureUUIDs(std::set<LLUUID>& ids);
+	void 						collectBakedTextureUUIDs(std::set<LLUUID>& ids);
+	void 						collectTextureUUIDs(std::set<LLUUID>& ids);
 	void						releaseOldTextures();
 	/*virtual*/ void   	 	 	updateTextures();
 	/*virtual*/ S32    	 	 	setTETexture(const U8 te, const LLUUID& uuid); // If setting a baked texture, need to request it from a non-local sim.
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index 9b43db7087c..19534bde599 100755
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -2066,6 +2066,7 @@ const std::string LLVOAvatarSelf::verboseDebugDumpLocalTextureDataInfo(const LLV
 									   << " ts: " << image->getTextureState()
 									   << " bl: " << image->getBoostLevel()
 									   << " fl: " << image->isFullyLoaded() // this is not an accessor for mFullyLoaded - see comment there.
+									   << " cl: " << (image->isFullyLoaded() && image->getDiscardLevel()==0) // "completely loaded"
 									   << " mvs: " << image->getMaxVirtualSize()
 									   << " mvsc: " << image->getMaxVirtualSizeResetCounter()
 									   << " mem: " << image->getTextureMemory();
-- 
GitLab


From ba3e89b5c731ed6dc36d4650928be8081b3289f5 Mon Sep 17 00:00:00 2001
From: callum_linden <none@none>
Date: Fri, 18 Jan 2013 16:43:19 -0800
Subject: [PATCH 234/436] first push - patch from CmdCupCake plus force FMODEX
 on

---
 autobuild.xml                             |  24 +
 indra/cmake/CMakeLists.txt                |   2 +
 indra/cmake/Copy3rdPartyLibs.cmake        |  15 +-
 indra/cmake/FMOD.cmake                    |   2 +-
 indra/cmake/FMODEX.cmake                  |  45 ++
 indra/cmake/FindFMODEX.cmake              |  66 ++
 indra/llaudio/CMakeLists.txt              |  26 +-
 indra/llaudio/llaudioengine.h             |   1 -
 indra/llaudio/llaudioengine_fmodex.cpp    | 746 ++++++++++++++++++++++
 indra/llaudio/llaudioengine_fmodex.h      | 129 ++++
 indra/llaudio/lllistener_fmodex.cpp       | 135 ++++
 indra/llaudio/lllistener_fmodex.h         |  65 ++
 indra/llaudio/llstreamingaudio.h          |   2 +
 indra/llaudio/llstreamingaudio_fmodex.cpp | 382 +++++++++++
 indra/llaudio/llstreamingaudio_fmodex.h   |  75 +++
 indra/llaudio/llwindgen.h                 |  34 +-
 indra/newview/CMakeLists.txt              |  57 +-
 indra/newview/app_settings/settings.xml   |  44 ++
 indra/newview/linux_tools/wrapper.sh      |  12 +-
 indra/newview/llstartup.cpp               |  15 +
 indra/newview/llvieweraudio.cpp           |  70 +-
 indra/newview/llviewercontrol.cpp         |   1 +
 indra/newview/viewer_manifest.py          |  18 +
 23 files changed, 1887 insertions(+), 79 deletions(-)
 create mode 100644 indra/cmake/FMODEX.cmake
 create mode 100644 indra/cmake/FindFMODEX.cmake
 create mode 100644 indra/llaudio/llaudioengine_fmodex.cpp
 create mode 100644 indra/llaudio/llaudioengine_fmodex.h
 create mode 100644 indra/llaudio/lllistener_fmodex.cpp
 create mode 100644 indra/llaudio/lllistener_fmodex.h
 create mode 100644 indra/llaudio/llstreamingaudio_fmodex.cpp
 create mode 100644 indra/llaudio/llstreamingaudio_fmodex.h

diff --git a/autobuild.xml b/autobuild.xml
index 11c2da52dc2..376a1d1d6de 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -531,6 +531,30 @@
           </map>
         </map>
       </map>
+      <key>fmodex</key>
+      <map>
+        <key>license</key>
+        <string>fmodex</string>
+        <key>license_file</key>
+        <string>LICENSES/fmodex.txt</string>
+        <key>name</key>
+        <string>fmodex</string>
+        <key>platforms</key>
+        <map>
+          <key>darwin</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>3590b83d65b7dc4dd7f6040c179b49f3</string>
+              <key>url</key>
+              <string>http://private-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-fmodex-private/arch/Darwin/fmodex-4.44.04-darwin-20130118.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>darwin</string>
+          </map>
+        </map>
+      </map>
       <key>fontconfig</key>
       <map>
         <key>license</key>
diff --git a/indra/cmake/CMakeLists.txt b/indra/cmake/CMakeLists.txt
index 569034a6fb9..e9c05546415 100644
--- a/indra/cmake/CMakeLists.txt
+++ b/indra/cmake/CMakeLists.txt
@@ -26,6 +26,7 @@ set(cmake_SOURCE_FILES
     FindCARes.cmake
     FindELFIO.cmake
     FindFMOD.cmake
+    FindFMODEX.cmake
     FindGooglePerfTools.cmake
     FindMono.cmake
     FindMySQL.cmake
@@ -33,6 +34,7 @@ set(cmake_SOURCE_FILES
     FindXmlRpcEpi.cmake
     FindZLIB.cmake
     FMOD.cmake
+    FMODEX.cmake
     FreeType.cmake
     GLOD.cmake
     GStreamer010Plugin.cmake
diff --git a/indra/cmake/Copy3rdPartyLibs.cmake b/indra/cmake/Copy3rdPartyLibs.cmake
index c32e357da3d..c28361398f3 100644
--- a/indra/cmake/Copy3rdPartyLibs.cmake
+++ b/indra/cmake/Copy3rdPartyLibs.cmake
@@ -62,6 +62,11 @@ if(WINDOWS)
       set(release_files ${release_files} libtcmalloc_minimal.dll)
     endif(USE_TCMALLOC)
 
+    if (FMODEX)
+      set(debug_files ${debug_files} fmodexL.dll)
+      set(release_files ${release_files} fmodex.dll)
+    endif (FMODEX)
+
     if (FMOD)
       set(debug_files ${debug_files} fmod.dll)
       set(release_files ${release_files} fmod.dll)
@@ -222,9 +227,15 @@ elseif(DARWIN)
         libcollada14dom.dylib
        )
 
-    # fmod is statically linked on darwin
-    set(fmod_files "")
+    if (FMODEX)
+      #set(debug_files ${debug_files} libfmodexL.dylib)
+      set(release_files ${release_files} libfmodex.dylib)
+    endif (FMODEX)
 
+    if (FMOD)
+        # fmod is statically linked on darwin
+       set(fmod_files "")
+    endif (FMOD)
 elseif(LINUX)
     # linux is weird, multiple side by side configurations aren't supported
     # and we don't seem to have any debug shared libs built yet anyways...
diff --git a/indra/cmake/FMOD.cmake b/indra/cmake/FMOD.cmake
index 3586c1160aa..ef0ae58bdfd 100644
--- a/indra/cmake/FMOD.cmake
+++ b/indra/cmake/FMOD.cmake
@@ -6,7 +6,7 @@
 # Open source devs should use the -DFMOD:BOOL=ON then if they want to build with FMOD, whether
 # they are using STANDALONE or not.
 if (INSTALL_PROPRIETARY)
-  set(FMOD ON CACHE BOOL "Use FMOD sound library.")
+  set(FMOD OFF CACHE BOOL "Use FMOD sound library.")
 endif (INSTALL_PROPRIETARY)
 
 if (FMOD)
diff --git a/indra/cmake/FMODEX.cmake b/indra/cmake/FMODEX.cmake
new file mode 100644
index 00000000000..448392437a4
--- /dev/null
+++ b/indra/cmake/FMODEX.cmake
@@ -0,0 +1,45 @@
+# -*- cmake -*-
+
+# FMOD can be set when launching the make using the argument -DFMOD:BOOL=ON
+# When building using proprietary binaries though (i.e. having access to LL private servers),
+# we always build with FMODEX.
+# Open source devs should use the -DFMODEX:BOOL=ON then if they want to build with FMOD, whether
+# they are using STANDALONE or not.
+if (INSTALL_PROPRIETARY)
+  set(FMODEX ON CACHE BOOL "Using FMOD Ex sound library.")
+endif (INSTALL_PROPRIETARY)
+
+if (FMODEX)
+  if (STANDALONE)
+    # In that case, we use the version of the library installed on the system
+    set(FMODEX_FIND_REQUIRED ON)
+    include(FindFMODEX)
+  else (STANDALONE)
+    if (FMODEX_LIBRARY AND FMODEX_INCLUDE_DIR)
+      # If the path have been specified in the arguments, use that
+      set(FMODEX_LIBRARIES ${FMODEX_LIBRARY})
+      MESSAGE(STATUS "Using FMODEX path: ${FMODEX_LIBRARIES}, ${FMODEX_INCLUDE_DIR}")
+    else (FMODEX_LIBRARY AND FMODEX_INCLUDE_DIR)
+      # If not, we're going to try to get the package listed in autobuild.xml
+      # Note: if you're not using INSTALL_PROPRIETARY, the package URL should be local (file:/// URL) 
+      # as accessing the private LL location will fail if you don't have the credential
+      include(Prebuilt)
+      use_prebuilt_binary(fmodex)    
+      if (WINDOWS)
+        set(FMODEX_LIBRARY 
+            debug fmodexL_vc
+            optimized fmodex_vc)
+      elseif (DARWIN)
+        set(FMODEX_LIBRARY 
+            debug fmodexL
+            optimized fmodex)
+      elseif (LINUX)
+        set(FMODEX_LIBRARY 
+            debug fmodexL
+            optimized fmodex)
+      endif (WINDOWS)
+      set(FMODEX_LIBRARIES ${FMODEX_LIBRARY})
+      set(FMODEX_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/include/fmodex)
+    endif (FMODEX_LIBRARY AND FMODEX_INCLUDE_DIR)
+  endif (STANDALONE)
+endif (FMODEX)
\ No newline at end of file
diff --git a/indra/cmake/FindFMODEX.cmake b/indra/cmake/FindFMODEX.cmake
new file mode 100644
index 00000000000..9b9b85d73e3
--- /dev/null
+++ b/indra/cmake/FindFMODEX.cmake
@@ -0,0 +1,66 @@
+# -*- cmake -*-
+
+# - Find FMODEX
+# Find the FMODEX includes and library
+# This module defines
+#  FMODEX_INCLUDE_DIR, where to find fmod.h and fmod_errors.h
+#  FMODEX_LIBRARIES, the libraries needed to use FMODEX.
+#  FMODEX, If false, do not try to use FMODEX.
+# also defined, but not for general use are
+#  FMODEX_LIBRARY, where to find the FMODEX library.
+
+FIND_PATH(FMODEX_INCLUDE_DIR fmod.h PATH_SUFFIXES fmod)
+
+SET(FMODEX_NAMES ${FMODEX_NAMES} fmodex fmodvc fmodexL_vc)
+FIND_LIBRARY(FMODEX_LIBRARY
+  NAMES ${FMODEX_NAMES}
+  PATH_SUFFIXES fmodex
+  )
+
+IF (FMODEX_SDK_DIR OR WINDOWS)
+    if(WINDOWS)
+        set(FMODEX_SDK_DIR "$ENV{PROGRAMFILES}/FMOD SoundSystem/FMOD Programmers API Windows" CACHE PATH "Path to FMODEX")
+        STRING(REGEX REPLACE "\\\\" "/" FMODEX_SDK_DIR ${FMODEX_SDK_DIR}) 
+    endif(WINDOWS)
+    find_library(FMODEX_LIBRARY
+             fmodex_vc fmodexL_vc 
+             PATHS
+             ${FMODEX_SDK_DIR}/api/lib
+             ${FMODEX_SDK_DIR}/api
+             ${FMODEX_SDK_DIR}
+             )
+    find_path(FMODEX_INCLUDE_DIR fmod.h
+        ${FMODEX_SDK_DIR}/api/inc
+        ${FMODEX_SDK_DIR}/api
+        ${FMODEX_SDK_DIR}
+      )
+    find_path(FMODEX_INCLUDE_DIR fmod.h
+        ${FMODEX_SDK_DIR}/api/inc
+        ${FMODEX_SDK_DIR}/api
+        ${FMODEX_SDK_DIR}
+      )
+    IF (FMODEX_LIBRARY AND FMODEX_INCLUDE_DIR)
+      SET(FMODEX_LIBRARIES ${FMODEX_LIBRARY})
+      SET(FMODEX_FOUND "YES")
+    endif (FMODEX_LIBRARY AND FMODEX_INCLUDE_DIR)
+ENDIF (FMODEX_SDK_DIR OR WINDOWS)
+
+IF (FMODEX_FOUND)
+  IF (NOT FMODEX_FIND_QUIETLY)
+    MESSAGE(STATUS "Found FMODEX: ${FMODEX_LIBRARIES}")
+  ENDIF (NOT FMODEX_FIND_QUIETLY)
+ELSE (FMODEX_FOUND)
+  IF (FMODEX_FIND_REQUIRED)
+    MESSAGE(FATAL_ERROR "Could not find FMODEX library")
+  ENDIF (FMODEX_FIND_REQUIRED)
+ENDIF (FMODEX_FOUND)
+
+# Deprecated declarations.
+SET (NATIVE_FMODEX_INCLUDE_PATH ${FMODEX_INCLUDE_DIR} )
+GET_FILENAME_COMPONENT (NATIVE_FMODEX_LIB_PATH ${FMODEX_LIBRARY} PATH)
+
+MARK_AS_ADVANCED(
+  FMODEX_LIBRARY
+  FMODEX_INCLUDE_DIR
+  )
+  
\ No newline at end of file
diff --git a/indra/llaudio/CMakeLists.txt b/indra/llaudio/CMakeLists.txt
index 632e5d46e33..e404cfc10e2 100644
--- a/indra/llaudio/CMakeLists.txt
+++ b/indra/llaudio/CMakeLists.txt
@@ -5,7 +5,13 @@ project(llaudio)
 include(00-Common)
 include(Audio)
 include(LLAudio)
-include(FMOD)
+if (FMODEX)
+  include(FMODEX)
+  set(FMOD OFF)
+endif (FMODEX)
+if (NOT FMODEX)
+  include(FMOD)
+endif (NOT FMODEX)
 include(OPENAL)
 include(LLCommon)
 include(LLMath)
@@ -24,7 +30,6 @@ include_directories(
     ${VORBIS_INCLUDE_DIRS}
     ${OPENAL_LIB_INCLUDE_DIRS}
     ${FREEAULT_LIB_INCLUDE_DIRS}
-    ${FMOD_INCLUDE_DIR}
     )
 
 set(llaudio_SOURCE_FILES
@@ -44,6 +49,23 @@ set(llaudio_HEADER_FILES
     llwindgen.h
     )
 
+if (FMODEX)
+    include_directories(
+        ${FMODEX_INCLUDE_DIR}
+        )
+    list(APPEND llaudio_SOURCE_FILES
+         llaudioengine_fmodex.cpp
+         lllistener_fmodex.cpp
+         llstreamingaudio_fmodex.cpp
+         )
+
+    list(APPEND llaudio_HEADER_FILES
+         llaudioengine_fmodex.h
+         lllistener_fmodex.h
+         llstreamingaudio_fmodex.h
+         )
+endif (FMODEX)
+
 if (FMOD)
     include_directories(
         ${FMOD_INCLUDE_DIR}
diff --git a/indra/llaudio/llaudioengine.h b/indra/llaudio/llaudioengine.h
index df1e4dc3058..dbaba0fb91a 100644
--- a/indra/llaudio/llaudioengine.h
+++ b/indra/llaudio/llaudioengine.h
@@ -42,7 +42,6 @@
 #include "lllistener.h"
 
 const F32 LL_WIND_UPDATE_INTERVAL = 0.1f;
-const F32 LL_ROLLOFF_MULTIPLIER_UNDER_WATER = 5.f;			//  How much sounds are weaker under water
 const F32 LL_WIND_UNDERWATER_CENTER_FREQ = 20.f;
 
 const F32 ATTACHED_OBJECT_TIMEOUT = 5.0f;
diff --git a/indra/llaudio/llaudioengine_fmodex.cpp b/indra/llaudio/llaudioengine_fmodex.cpp
new file mode 100644
index 00000000000..c3c30d87fe7
--- /dev/null
+++ b/indra/llaudio/llaudioengine_fmodex.cpp
@@ -0,0 +1,746 @@
+/** 
+ * @file audioengine_fmodex.cpp
+ * @brief Implementation of LLAudioEngine class abstracting the audio 
+ * support as a FMODEX implementation
+ *
+ * $LicenseInfo:firstyear=2002&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+#include "linden_common.h"
+
+#include "llstreamingaudio.h"
+#include "llstreamingaudio_fmodex.h"
+
+#include "llaudioengine_fmodex.h"
+#include "lllistener_fmodex.h"
+
+#include "llerror.h"
+#include "llmath.h"
+#include "llrand.h"
+
+#include "fmod.hpp"
+#include "fmod_errors.h"
+#include "lldir.h"
+#include "llapr.h"
+
+#include "sound_ids.h"
+
+FMOD_RESULT F_CALLBACK windCallback(FMOD_DSP_STATE *dsp_state, float *inbuffer, float *outbuffer, unsigned int length, int inchannels, int outchannels);
+
+FMOD::ChannelGroup *LLAudioEngine_FMODEX::mChannelGroups[LLAudioEngine::AUDIO_TYPE_COUNT] = {0};
+
+LLAudioEngine_FMODEX::LLAudioEngine_FMODEX(bool enable_profiler)
+{
+	mInited = false;
+	mWindGen = NULL;
+	mWindDSP = NULL;
+	mSystem = NULL;
+	mEnableProfiler = enable_profiler;
+}
+
+
+LLAudioEngine_FMODEX::~LLAudioEngine_FMODEX()
+{
+}
+
+
+inline bool Check_FMOD_Error(FMOD_RESULT result, const char *string)
+{
+	if(result == FMOD_OK)
+		return false;
+	llwarns << string << " Error: " << FMOD_ErrorString(result) << llendl;
+	return true;
+}
+
+void* F_STDCALL decode_alloc(unsigned int size, FMOD_MEMORY_TYPE type, const char *sourcestr)
+{
+	if(type & FMOD_MEMORY_STREAM_DECODE)
+	{
+		llinfos << "Decode buffer size: " << size << llendl;
+	}
+	else if(type & FMOD_MEMORY_STREAM_FILE)
+	{
+		llinfos << "Strean buffer size: " << size << llendl;
+	}
+	return new char[size];
+}
+void* F_STDCALL decode_realloc(void *ptr, unsigned int size, FMOD_MEMORY_TYPE type, const char *sourcestr)
+{
+	memset(ptr,0,size);
+	return ptr;
+}
+void F_STDCALL decode_dealloc(void *ptr, FMOD_MEMORY_TYPE type, const char *sourcestr)
+{
+	delete[] (char*)ptr;
+}
+
+bool LLAudioEngine_FMODEX::init(const S32 num_channels, void* userdata)
+{
+	U32 version;
+	FMOD_RESULT result;
+
+	LL_DEBUGS("AppInit") << "LLAudioEngine_FMODEX::init() initializing FMOD" << LL_ENDL;
+
+	//result = FMOD::Memory_Initialize(NULL, 0, &decode_alloc, &decode_realloc, &decode_dealloc, FMOD_MEMORY_STREAM_DECODE | FMOD_MEMORY_STREAM_FILE);
+	//if(Check_FMOD_Error(result, "FMOD::Memory_Initialize"))
+	//	return false;
+
+	result = FMOD::System_Create(&mSystem);
+	if(Check_FMOD_Error(result, "FMOD::System_Create"))
+		return false;
+
+	//will call LLAudioEngine_FMODEX::allocateListener, which needs a valid mSystem pointer.
+	LLAudioEngine::init(num_channels, userdata);	
+	
+	result = mSystem->getVersion(&version);
+	Check_FMOD_Error(result, "FMOD::System::getVersion");
+
+	if (version < FMOD_VERSION)
+	{
+		LL_WARNS("AppInit") << "Error : You are using the wrong FMOD Ex version (" << version
+			<< ")!  You should be using FMOD Ex" << FMOD_VERSION << LL_ENDL;
+	}
+
+	result = mSystem->setSoftwareFormat(44100, FMOD_SOUND_FORMAT_PCM16, 0, 0, FMOD_DSP_RESAMPLER_LINEAR);
+	Check_FMOD_Error(result,"FMOD::System::setSoftwareFormat");
+
+	// In this case, all sounds, PLUS wind and stream will be software.
+	result = mSystem->setSoftwareChannels(num_channels + 2);
+	Check_FMOD_Error(result,"FMOD::System::setSoftwareChannels");
+
+	U32 fmod_flags = FMOD_INIT_NORMAL;
+	if(mEnableProfiler)
+	{
+		fmod_flags |= FMOD_INIT_ENABLE_PROFILE;
+		mSystem->createChannelGroup("None", &mChannelGroups[AUDIO_TYPE_NONE]);
+		mSystem->createChannelGroup("SFX", &mChannelGroups[AUDIO_TYPE_SFX]);
+		mSystem->createChannelGroup("UI", &mChannelGroups[AUDIO_TYPE_UI]);
+		mSystem->createChannelGroup("Ambient", &mChannelGroups[AUDIO_TYPE_AMBIENT]);
+	}
+
+#if LL_LINUX
+	bool audio_ok = false;
+
+	if (!audio_ok)
+	{
+		if (NULL == getenv("LL_BAD_FMOD_PULSEAUDIO")) /*Flawfinder: ignore*/
+		{
+			LL_DEBUGS("AppInit") << "Trying PulseAudio audio output..." << LL_ENDL;
+			if(mSystem->setOutput(FMOD_OUTPUTTYPE_PULSEAUDIO) == FMOD_OK &&
+				(result = mSystem->init(num_channels + 2, fmod_flags, 0)) == FMOD_OK)
+			{
+				LL_DEBUGS("AppInit") << "PulseAudio output initialized OKAY"	<< LL_ENDL;
+				audio_ok = true;
+			}
+			else 
+			{
+				Check_FMOD_Error(result, "PulseAudio audio output FAILED to initialize");
+			}
+		} 
+		else 
+		{
+			LL_DEBUGS("AppInit") << "PulseAudio audio output SKIPPED" << LL_ENDL;
+		}	
+	}
+	if (!audio_ok)
+	{
+		if (NULL == getenv("LL_BAD_FMOD_ALSA"))		/*Flawfinder: ignore*/
+		{
+			LL_DEBUGS("AppInit") << "Trying ALSA audio output..." << LL_ENDL;
+			if(mSystem->setOutput(FMOD_OUTPUTTYPE_ALSA) == FMOD_OK &&
+			    (result = mSystem->init(num_channels + 2, fmod_flags, 0)) == FMOD_OK)
+			{
+				LL_DEBUGS("AppInit") << "ALSA audio output initialized OKAY" << LL_ENDL;
+				audio_ok = true;
+			} 
+			else 
+			{
+				Check_FMOD_Error(result, "ALSA audio output FAILED to initialize");
+			}
+		} 
+		else 
+		{
+			LL_DEBUGS("AppInit") << "ALSA audio output SKIPPED" << LL_ENDL;
+		}
+	}
+	if (!audio_ok)
+	{
+		if (NULL == getenv("LL_BAD_FMOD_OSS")) 	 /*Flawfinder: ignore*/
+		{
+			LL_DEBUGS("AppInit") << "Trying OSS audio output..." << LL_ENDL;
+			if(mSystem->setOutput(FMOD_OUTPUTTYPE_OSS) == FMOD_OK &&
+			    (result = mSystem->init(num_channels + 2, fmod_flags, 0)) == FMOD_OK)
+			{
+				LL_DEBUGS("AppInit") << "OSS audio output initialized OKAY" << LL_ENDL;
+				audio_ok = true;
+			}
+			else
+			{
+				Check_FMOD_Error(result, "OSS audio output FAILED to initialize");
+			}
+		}
+		else 
+		{
+			LL_DEBUGS("AppInit") << "OSS audio output SKIPPED" << LL_ENDL;
+		}
+	}
+	if (!audio_ok)
+	{
+		LL_WARNS("AppInit") << "Overall audio init failure." << LL_ENDL;
+		return false;
+	}
+
+	// We're interested in logging which output method we
+	// ended up with, for QA purposes.
+	FMOD_OUTPUTTYPE output_type;
+	mSystem->getOutput(&output_type);
+	switch (output_type)
+	{
+		case FMOD_OUTPUTTYPE_NOSOUND: 
+			LL_INFOS("AppInit") << "Audio output: NoSound" << LL_ENDL; break;
+		case FMOD_OUTPUTTYPE_PULSEAUDIO:	
+			LL_INFOS("AppInit") << "Audio output: PulseAudio" << LL_ENDL; break;
+		case FMOD_OUTPUTTYPE_ALSA: 
+			LL_INFOS("AppInit") << "Audio output: ALSA" << LL_ENDL; break;
+		case FMOD_OUTPUTTYPE_OSS:	
+			LL_INFOS("AppInit") << "Audio output: OSS" << LL_ENDL; break;
+		default:
+			LL_INFOS("AppInit") << "Audio output: Unknown!" << LL_ENDL; break;
+	};
+#else // LL_LINUX
+
+	// initialize the FMOD engine
+	result = mSystem->init( num_channels + 2, fmod_flags, 0);
+	if (result == FMOD_ERR_OUTPUT_CREATEBUFFER)
+	{
+		/*
+		Ok, the speaker mode selected isn't supported by this soundcard. Switch it
+		back to stereo...
+		*/
+		result = mSystem->setSpeakerMode(FMOD_SPEAKERMODE_STEREO);
+		Check_FMOD_Error(result,"Error falling back to stereo mode");
+		/*
+		... and re-init.
+		*/
+		result = mSystem->init( num_channels + 2, fmod_flags, 0);
+	}
+	if(Check_FMOD_Error(result, "Error initializing FMOD Ex"))
+		return false;
+#endif
+
+	// set up our favourite FMOD-native streaming audio implementation if none has already been added
+	if (!getStreamingAudioImpl()) // no existing implementation added
+		setStreamingAudioImpl(new LLStreamingAudio_FMODEX(mSystem));
+
+	LL_INFOS("AppInit") << "LLAudioEngine_FMODEX::init() FMOD Ex initialized correctly" << LL_ENDL;
+
+	int r_numbuffers, r_samplerate, r_channels, r_bits;
+	unsigned int r_bufferlength;
+	char r_name[256];
+	mSystem->getDSPBufferSize(&r_bufferlength, &r_numbuffers);
+	mSystem->getSoftwareFormat(&r_samplerate, NULL, &r_channels, NULL, NULL, &r_bits);
+	mSystem->getDriverInfo(0, r_name, 255, 0);
+	r_name[255] = '\0';
+	int latency = 1000.0 * r_bufferlength * r_numbuffers /r_samplerate;
+
+	LL_INFOS("AppInit") << "FMOD device: "<< r_name << "\n"
+		<< "FMOD Ex parameters: " << r_samplerate << " Hz * " << r_channels << " * " <<r_bits <<" bit\n"
+		<< "\tbuffer " << r_bufferlength << " * " << r_numbuffers << " (" << latency <<"ms)" << LL_ENDL;
+
+	mInited = true;
+
+	return true;
+}
+
+
+std::string LLAudioEngine_FMODEX::getDriverName(bool verbose)
+{
+	llassert_always(mSystem);
+	if (verbose)
+	{
+		U32 version;
+		if(!Check_FMOD_Error(mSystem->getVersion(&version), "FMOD::System::getVersion"))
+		{
+			return llformat("FMOD Ex %1x.%02x.%02x", version >> 16, version >> 8 & 0x000000FF, version & 0x000000FF);
+		}
+	}
+	return "FMODEx";
+}
+
+
+void LLAudioEngine_FMODEX::allocateListener(void)
+{	
+	mListenerp = (LLListener *) new LLListener_FMODEX(mSystem);
+	if (!mListenerp)
+	{
+		llwarns << "Listener creation failed" << llendl;
+	}
+}
+
+
+void LLAudioEngine_FMODEX::shutdown()
+{
+	stopInternetStream();
+
+	llinfos << "About to LLAudioEngine::shutdown()" << llendl;
+	LLAudioEngine::shutdown();
+	
+	llinfos << "LLAudioEngine_FMODEX::shutdown() closing FMOD Ex" << llendl;
+	mSystem->close();
+	mSystem->release();
+	llinfos << "LLAudioEngine_FMODEX::shutdown() done closing FMOD Ex" << llendl;
+
+	delete mListenerp;
+	mListenerp = NULL;
+}
+
+
+LLAudioBuffer * LLAudioEngine_FMODEX::createBuffer()
+{
+	return new LLAudioBufferFMODEX(mSystem);
+}
+
+
+LLAudioChannel * LLAudioEngine_FMODEX::createChannel()
+{
+	return new LLAudioChannelFMODEX(mSystem);
+}
+
+bool LLAudioEngine_FMODEX::initWind()
+{
+	mNextWindUpdate = 0.0;
+
+	if (!mWindDSP)
+	{
+		FMOD_DSP_DESCRIPTION dspdesc;
+		memset(&dspdesc, 0, sizeof(FMOD_DSP_DESCRIPTION));	//Set everything to zero
+		strncpy(dspdesc.name,"Wind Unit", sizeof(dspdesc.name));	//Set name to "Wind Unit"
+		dspdesc.channels=2;
+		dspdesc.read = &windCallback; //Assign callback.
+		if(Check_FMOD_Error(mSystem->createDSP(&dspdesc, &mWindDSP), "FMOD::createDSP"))
+			return false;
+
+		if(mWindGen)
+			delete mWindGen;
+	
+		float frequency = 44100;
+		mWindDSP->getDefaults(&frequency,0,0,0);
+		mWindGen = new LLWindGen<MIXBUFFERFORMAT>((U32)frequency);
+		mWindDSP->setUserData((void*)mWindGen);
+	}
+
+	if (mWindDSP)
+	{
+		mSystem->playDSP(FMOD_CHANNEL_FREE, mWindDSP, false, 0);
+		return true;
+	}
+	return false;
+}
+
+
+void LLAudioEngine_FMODEX::cleanupWind()
+{
+	if (mWindDSP)
+	{
+		mWindDSP->remove();
+		mWindDSP->release();
+		mWindDSP = NULL;
+	}
+
+	delete mWindGen;
+	mWindGen = NULL;
+}
+
+
+//-----------------------------------------------------------------------
+void LLAudioEngine_FMODEX::updateWind(LLVector3 wind_vec, F32 camera_height_above_water)
+{
+	LLVector3 wind_pos;
+	F64 pitch;
+	F64 center_freq;
+
+	if (!mEnableWind)
+	{
+		return;
+	}
+	
+	if (mWindUpdateTimer.checkExpirationAndReset(LL_WIND_UPDATE_INTERVAL))
+	{
+		
+		// wind comes in as Linden coordinate (+X = forward, +Y = left, +Z = up)
+		// need to convert this to the conventional orientation DS3D and OpenAL use
+		// where +X = right, +Y = up, +Z = backwards
+
+		wind_vec.setVec(-wind_vec.mV[1], wind_vec.mV[2], -wind_vec.mV[0]);
+
+		// cerr << "Wind update" << endl;
+
+		pitch = 1.0 + mapWindVecToPitch(wind_vec);
+		center_freq = 80.0 * pow(pitch,2.5*(mapWindVecToGain(wind_vec)+1.0));
+		
+		mWindGen->mTargetFreq = (F32)center_freq;
+		mWindGen->mTargetGain = (F32)mapWindVecToGain(wind_vec) * mMaxWindGain;
+		mWindGen->mTargetPanGainR = (F32)mapWindVecToPan(wind_vec);
+  	}
+}
+
+//-----------------------------------------------------------------------
+void LLAudioEngine_FMODEX::setInternalGain(F32 gain)
+{
+	if (!mInited)
+	{
+		return;
+	}
+
+	gain = llclamp( gain, 0.0f, 1.0f );
+
+	FMOD::ChannelGroup *master_group;
+	mSystem->getMasterChannelGroup(&master_group);
+
+	master_group->setVolume(gain);
+
+	LLStreamingAudioInterface *saimpl = getStreamingAudioImpl();
+	if ( saimpl )
+	{
+		// fmod likes its streaming audio channel gain re-asserted after
+		// master volume change.
+		saimpl->setGain(saimpl->getGain());
+	}
+}
+
+//
+// LLAudioChannelFMODEX implementation
+//
+
+LLAudioChannelFMODEX::LLAudioChannelFMODEX(FMOD::System *system) : LLAudioChannel(), mSystemp(system), mChannelp(NULL), mLastSamplePos(0)
+{
+}
+
+
+LLAudioChannelFMODEX::~LLAudioChannelFMODEX()
+{
+	cleanup();
+}
+
+bool LLAudioChannelFMODEX::updateBuffer()
+{
+	if (LLAudioChannel::updateBuffer())
+	{
+		// Base class update returned true, which means that we need to actually
+		// set up the channel for a different buffer.
+
+		LLAudioBufferFMODEX *bufferp = (LLAudioBufferFMODEX *)mCurrentSourcep->getCurrentBuffer();
+
+		// Grab the FMOD sample associated with the buffer
+		FMOD::Sound *soundp = bufferp->getSound();
+		if (!soundp)
+		{
+			// This is bad, there should ALWAYS be a sound associated with a legit
+			// buffer.
+			llerrs << "No FMOD sound!" << llendl;
+			return false;
+		}
+
+
+		// Actually play the sound.  Start it off paused so we can do all the necessary
+		// setup.
+		if(!mChannelp)
+		{
+			FMOD_RESULT result = getSystem()->playSound(FMOD_CHANNEL_FREE, soundp, true, &mChannelp);
+			Check_FMOD_Error(result, "FMOD::System::playSound");
+		}
+
+		//llinfos << "Setting up channel " << std::hex << mChannelID << std::dec << llendl;
+	}
+
+	// If we have a source for the channel, we need to update its gain.
+	if (mCurrentSourcep)
+	{
+		// SJB: warnings can spam and hurt framerate, disabling
+		FMOD_RESULT result;
+
+		result = mChannelp->setVolume(getSecondaryGain() * mCurrentSourcep->getGain());
+		//Check_FMOD_Error(result, "FMOD::Channel::setVolume");
+
+		result = mChannelp->setMode(mCurrentSourcep->isLoop() ? FMOD_LOOP_NORMAL : FMOD_LOOP_OFF);
+		/*if(Check_FMOD_Error(result, "FMOD::Channel::setMode"))
+		{
+			S32 index;
+			mChannelp->getIndex(&index);
+ 			llwarns << "Channel " << index << "Source ID: " << mCurrentSourcep->getID()
+ 					<< " at " << mCurrentSourcep->getPositionGlobal() << llendl;		
+		}*/
+	}
+
+	return true;
+}
+
+
+void LLAudioChannelFMODEX::update3DPosition()
+{
+	if (!mChannelp)
+	{
+		// We're not actually a live channel (i.e., we're not playing back anything)
+		return;
+	}
+
+	LLAudioBufferFMODEX  *bufferp = (LLAudioBufferFMODEX  *)mCurrentBufferp;
+	if (!bufferp)
+	{
+		// We don't have a buffer associated with us (should really have been picked up
+		// by the above if.
+		return;
+	}
+
+	if (mCurrentSourcep->isAmbient())
+	{
+		// Ambient sound, don't need to do any positional updates.
+		set3DMode(false);
+	}
+	else
+	{
+		// Localized sound.  Update the position and velocity of the sound.
+		set3DMode(true);
+
+		LLVector3 float_pos;
+		float_pos.setVec(mCurrentSourcep->getPositionGlobal());
+		FMOD_RESULT result = mChannelp->set3DAttributes((FMOD_VECTOR*)float_pos.mV, (FMOD_VECTOR*)mCurrentSourcep->getVelocity().mV);
+		Check_FMOD_Error(result, "FMOD::Channel::set3DAttributes");
+	}
+}
+
+
+void LLAudioChannelFMODEX::updateLoop()
+{
+	if (!mChannelp)
+	{
+		// May want to clear up the loop/sample counters.
+		return;
+	}
+
+	//
+	// Hack:  We keep track of whether we looped or not by seeing when the
+	// sample position looks like it's going backwards.  Not reliable; may
+	// yield false negatives.
+	//
+	U32 cur_pos;
+	mChannelp->getPosition(&cur_pos,FMOD_TIMEUNIT_PCMBYTES);
+
+	if (cur_pos < (U32)mLastSamplePos)
+	{
+		mLoopedThisFrame = true;
+	}
+	mLastSamplePos = cur_pos;
+}
+
+
+void LLAudioChannelFMODEX::cleanup()
+{
+	if (!mChannelp)
+	{
+		//llinfos << "Aborting cleanup with no channel handle." << llendl;
+		return;
+	}
+
+	//llinfos << "Cleaning up channel: " << mChannelID << llendl;
+	Check_FMOD_Error(mChannelp->stop(),"FMOD::Channel::stop");
+
+	mCurrentBufferp = NULL;
+	mChannelp = NULL;
+}
+
+
+void LLAudioChannelFMODEX::play()
+{
+	if (!mChannelp)
+	{
+		llwarns << "Playing without a channel handle, aborting" << llendl;
+		return;
+	}
+
+	Check_FMOD_Error(mChannelp->setPaused(false), "FMOD::Channel::pause");
+
+	getSource()->setPlayedOnce(true);
+
+	if(LLAudioEngine_FMODEX::mChannelGroups[getSource()->getType()])
+		mChannelp->setChannelGroup(LLAudioEngine_FMODEX::mChannelGroups[getSource()->getType()]);
+}
+
+
+void LLAudioChannelFMODEX::playSynced(LLAudioChannel *channelp)
+{
+	LLAudioChannelFMODEX *fmod_channelp = (LLAudioChannelFMODEX*)channelp;
+	if (!(fmod_channelp->mChannelp && mChannelp))
+	{
+		// Don't have channels allocated to both the master and the slave
+		return;
+	}
+
+	U32 cur_pos;
+	if(Check_FMOD_Error(mChannelp->getPosition(&cur_pos,FMOD_TIMEUNIT_PCMBYTES), "Unable to retrieve current position"))
+		return;
+
+	cur_pos %= mCurrentBufferp->getLength();
+	
+	// Try to match the position of our sync master
+	Check_FMOD_Error(mChannelp->setPosition(cur_pos,FMOD_TIMEUNIT_PCMBYTES),"Unable to set current position");
+
+	// Start us playing
+	play();
+}
+
+
+bool LLAudioChannelFMODEX::isPlaying()
+{
+	if (!mChannelp)
+	{
+		return false;
+	}
+
+	bool paused, playing;
+	mChannelp->getPaused(&paused);
+	mChannelp->isPlaying(&playing);
+	return !paused && playing;
+}
+
+
+//
+// LLAudioChannelFMODEX implementation
+//
+
+
+LLAudioBufferFMODEX::LLAudioBufferFMODEX(FMOD::System *system) : mSystemp(system), mSoundp(NULL)
+{
+}
+
+
+LLAudioBufferFMODEX::~LLAudioBufferFMODEX()
+{
+	if(mSoundp)
+	{
+		mSoundp->release();
+		mSoundp = NULL;
+	}
+}
+
+
+bool LLAudioBufferFMODEX::loadWAV(const std::string& filename)
+{
+	// Try to open a wav file from disk.  This will eventually go away, as we don't
+	// really want to block doing this.
+	if (filename.empty())
+	{
+		// invalid filename, abort.
+		return false;
+	}
+
+	if (!LLAPRFile::isExist(filename, NULL, LL_APR_RPB))
+	{
+		// File not found, abort.
+		return false;
+	}
+	
+	if (mSoundp)
+	{
+		// If there's already something loaded in this buffer, clean it up.
+		mSoundp->release();
+		mSoundp = NULL;
+	}
+
+	FMOD_MODE base_mode = FMOD_LOOP_NORMAL | FMOD_SOFTWARE;
+	FMOD_CREATESOUNDEXINFO exinfo;
+	memset(&exinfo,0,sizeof(exinfo));
+	exinfo.cbsize = sizeof(exinfo);
+	exinfo.suggestedsoundtype = FMOD_SOUND_TYPE_WAV;	//Hint to speed up loading.
+	// Load up the wav file into an fmod sample
+#if LL_WINDOWS
+	FMOD_RESULT result = getSystem()->createSound((const char*)utf8str_to_utf16str(filename).c_str(), base_mode | FMOD_UNICODE, &exinfo, &mSoundp);
+#else
+	FMOD_RESULT result = getSystem()->createSound(filename.c_str(), base_mode, &exinfo, &mSoundp);
+#endif
+
+	if (result != FMOD_OK)
+	{
+		// We failed to load the file for some reason.
+		llwarns << "Could not load data '" << filename << "': " << FMOD_ErrorString(result) << llendl;
+
+		//
+		// If we EVER want to load wav files provided by end users, we need
+		// to rethink this!
+		//
+		// file is probably corrupt - remove it.
+		LLFile::remove(filename);
+		return false;
+	}
+
+	// Everything went well, return true
+	return true;
+}
+
+
+U32 LLAudioBufferFMODEX::getLength()
+{
+	if (!mSoundp)
+	{
+		return 0;
+	}
+
+	U32 length;
+	mSoundp->getLength(&length, FMOD_TIMEUNIT_PCMBYTES);
+	return length;
+}
+
+
+void LLAudioChannelFMODEX::set3DMode(bool use3d)
+{
+	FMOD_MODE current_mode;
+	if(mChannelp->getMode(&current_mode) != FMOD_OK)
+		return;
+	FMOD_MODE new_mode = current_mode;	
+	new_mode &= ~(use3d ? FMOD_2D : FMOD_3D);
+	new_mode |= use3d ? FMOD_3D : FMOD_2D;
+
+	if(current_mode != new_mode)
+	{
+		mChannelp->setMode(new_mode);
+	}
+}
+
+
+FMOD_RESULT F_CALLBACK windCallback(FMOD_DSP_STATE *dsp_state, float *originalbuffer, float *newbuffer, unsigned int length, int inchannels, int outchannels)
+{
+	// originalbuffer = fmod's original mixbuffer.
+	// newbuffer = the buffer passed from the previous DSP unit.
+	// length = length in samples at this mix time.
+	// userdata = user parameter passed through in FSOUND_DSP_Create.
+	
+	LLWindGen<LLAudioEngine_FMODEX::MIXBUFFERFORMAT> *windgen;
+	FMOD::DSP *thisdsp = (FMOD::DSP *)dsp_state->instance;
+
+	thisdsp->getUserData((void **)&windgen);
+	S32 channels, configwidth, configheight;
+	thisdsp->getInfo(0, 0, &channels, &configwidth, &configheight);
+	
+	windgen->windGenerate((LLAudioEngine_FMODEX::MIXBUFFERFORMAT *)newbuffer, length);
+
+	return FMOD_OK;
+}
diff --git a/indra/llaudio/llaudioengine_fmodex.h b/indra/llaudio/llaudioengine_fmodex.h
new file mode 100644
index 00000000000..cf3d967d4fd
--- /dev/null
+++ b/indra/llaudio/llaudioengine_fmodex.h
@@ -0,0 +1,129 @@
+/** 
+ * @file audioengine_fmodex.h
+ * @brief Definition of LLAudioEngine class abstracting the audio 
+ * support as a FMODEX implementation
+ *
+ * $LicenseInfo:firstyear=2002&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_AUDIOENGINE_FMODEX_H
+#define LL_AUDIOENGINE_FMODEX_H
+
+#include "llaudioengine.h"
+#include "lllistener_fmod.h"
+#include "llwindgen.h"
+
+//Stubs
+class LLAudioStreamManagerFMODEX;
+namespace FMOD
+{
+	class System;
+	class Channel;
+	class ChannelGroup;
+	class Sound;
+	class DSP;
+}
+
+//Interfaces
+class LLAudioEngine_FMODEX : public LLAudioEngine 
+{
+public:
+	LLAudioEngine_FMODEX(bool enable_profiler);
+	virtual ~LLAudioEngine_FMODEX();
+
+	// initialization/startup/shutdown
+	virtual bool init(const S32 num_channels, void *user_data);
+	virtual std::string getDriverName(bool verbose);
+	virtual void allocateListener();
+
+	virtual void shutdown();
+
+	/*virtual*/ bool initWind();
+	/*virtual*/ void cleanupWind();
+
+	/*virtual*/void updateWind(LLVector3 direction, F32 camera_height_above_water);
+
+	typedef F32 MIXBUFFERFORMAT;
+
+	FMOD::System *getSystem()				const {return mSystem;}
+protected:
+	/*virtual*/ LLAudioBuffer *createBuffer(); // Get a free buffer, or flush an existing one if you have to.
+	/*virtual*/ LLAudioChannel *createChannel(); // Create a new audio channel.
+
+	/*virtual*/ void setInternalGain(F32 gain);
+
+	bool mInited;
+
+	LLWindGen<MIXBUFFERFORMAT> *mWindGen;
+
+	FMOD::DSP *mWindDSP;
+	FMOD::System *mSystem;
+	bool mEnableProfiler;
+
+public:
+	static FMOD::ChannelGroup *mChannelGroups[LLAudioEngine::AUDIO_TYPE_COUNT];
+};
+
+
+class LLAudioChannelFMODEX : public LLAudioChannel
+{
+public:
+	LLAudioChannelFMODEX(FMOD::System *audioengine);
+	virtual ~LLAudioChannelFMODEX();
+
+protected:
+	/*virtual*/ void play();
+	/*virtual*/ void playSynced(LLAudioChannel *channelp);
+	/*virtual*/ void cleanup();
+	/*virtual*/ bool isPlaying();
+
+	/*virtual*/ bool updateBuffer();
+	/*virtual*/ void update3DPosition();
+	/*virtual*/ void updateLoop();
+
+	void set3DMode(bool use3d);
+protected:
+	FMOD::System *getSystem()	const {return mSystemp;}
+	FMOD::System *mSystemp;
+	FMOD::Channel *mChannelp;
+	S32 mLastSamplePos;
+};
+
+
+class LLAudioBufferFMODEX : public LLAudioBuffer
+{
+public:
+	LLAudioBufferFMODEX(FMOD::System *audioengine);
+	virtual ~LLAudioBufferFMODEX();
+
+	/*virtual*/ bool loadWAV(const std::string& filename);
+	/*virtual*/ U32 getLength();
+	friend class LLAudioChannelFMODEX;
+protected:
+	FMOD::System *getSystem()	const {return mSystemp;}
+	FMOD::System *mSystemp;
+	FMOD::Sound *getSound()		const{ return mSoundp; }
+	FMOD::Sound *mSoundp;
+};
+
+
+#endif // LL_AUDIOENGINE_FMODEX_H
diff --git a/indra/llaudio/lllistener_fmodex.cpp b/indra/llaudio/lllistener_fmodex.cpp
new file mode 100644
index 00000000000..4bc745b89a3
--- /dev/null
+++ b/indra/llaudio/lllistener_fmodex.cpp
@@ -0,0 +1,135 @@
+/** 
+ * @file listener_fmodex.cpp
+ * @brief Implementation of LISTENER class abstracting the audio
+ * support as a FMODEX implementation (windows only)
+ *
+ * $LicenseInfo:firstyear=2002&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+#include "linden_common.h"
+#include "llaudioengine.h"
+#include "lllistener_fmodex.h"
+#include "fmod.hpp"
+
+//-----------------------------------------------------------------------
+// constructor
+//-----------------------------------------------------------------------
+LLListener_FMODEX::LLListener_FMODEX(FMOD::System *system)
+{
+	mSystem = system;
+	init();
+}
+
+//-----------------------------------------------------------------------
+LLListener_FMODEX::~LLListener_FMODEX()
+{
+}
+
+//-----------------------------------------------------------------------
+void LLListener_FMODEX::init(void)
+{
+	// do inherited
+	LLListener::init();
+	mDopplerFactor = 1.0f;
+	mRolloffFactor = 1.0f;
+}
+
+//-----------------------------------------------------------------------
+void LLListener_FMODEX::translate(LLVector3 offset)
+{
+	LLListener::translate(offset);
+
+	mSystem->set3DListenerAttributes(0, (FMOD_VECTOR*)mPosition.mV, NULL, (FMOD_VECTOR*)mListenAt.mV, (FMOD_VECTOR*)mListenUp.mV);
+}
+
+//-----------------------------------------------------------------------
+void LLListener_FMODEX::setPosition(LLVector3 pos)
+{
+	LLListener::setPosition(pos);
+
+	mSystem->set3DListenerAttributes(0, (FMOD_VECTOR*)mPosition.mV, NULL, (FMOD_VECTOR*)mListenAt.mV, (FMOD_VECTOR*)mListenUp.mV);
+}
+
+//-----------------------------------------------------------------------
+void LLListener_FMODEX::setVelocity(LLVector3 vel)
+{
+	LLListener::setVelocity(vel);
+
+	mSystem->set3DListenerAttributes(0, NULL, (FMOD_VECTOR*)mVelocity.mV, (FMOD_VECTOR*)mListenAt.mV, (FMOD_VECTOR*)mListenUp.mV);
+}
+
+//-----------------------------------------------------------------------
+void LLListener_FMODEX::orient(LLVector3 up, LLVector3 at)
+{
+	LLListener::orient(up, at);
+
+	// Welcome to the transition between right and left
+	// (coordinate systems, that is)
+	// Leaving the at vector alone results in a L/R reversal
+	// since DX is left-handed and we (LL, OpenGL, OpenAL) are right-handed
+	at = -at;
+
+	mSystem->set3DListenerAttributes(0, NULL, NULL, (FMOD_VECTOR*)at.mV, (FMOD_VECTOR*)up.mV);
+}
+
+//-----------------------------------------------------------------------
+void LLListener_FMODEX::commitDeferredChanges()
+{
+	mSystem->update();
+}
+
+
+void LLListener_FMODEX::setRolloffFactor(F32 factor)
+{
+	//An internal FMODEx optimization skips 3D updates if there have not been changes to the 3D sound environment.
+	//Sadly, a change in rolloff is not accounted for, thus we must touch the listener properties as well.
+	//In short: Changing the position ticks a dirtyflag inside fmodex, which makes it not skip 3D processing next update call.
+	if(mRolloffFactor != factor)
+	{
+		LLVector3 pos = mVelocity - LLVector3(0.f,0.f,.1f);
+		mSystem->set3DListenerAttributes(0, (FMOD_VECTOR*)pos.mV, NULL, NULL, NULL);
+		mSystem->set3DListenerAttributes(0, (FMOD_VECTOR*)mVelocity.mV, NULL, NULL, NULL);
+	}
+	mRolloffFactor = factor;
+	mSystem->set3DSettings(mDopplerFactor, 1.f, mRolloffFactor);
+}
+
+
+F32 LLListener_FMODEX::getRolloffFactor()
+{
+	return mRolloffFactor;
+}
+
+
+void LLListener_FMODEX::setDopplerFactor(F32 factor)
+{
+	mDopplerFactor = factor;
+	mSystem->set3DSettings(mDopplerFactor, 1.f, mRolloffFactor);
+}
+
+
+F32 LLListener_FMODEX::getDopplerFactor()
+{
+	return mDopplerFactor;
+}
+
+
diff --git a/indra/llaudio/lllistener_fmodex.h b/indra/llaudio/lllistener_fmodex.h
new file mode 100644
index 00000000000..073b65d53ad
--- /dev/null
+++ b/indra/llaudio/lllistener_fmodex.h
@@ -0,0 +1,65 @@
+/** 
+ * @file listener_fmodex.h
+ * @brief Description of LISTENER class abstracting the audio support
+ * as an FMOD 3D implementation (windows and Linux)
+ *
+ * $LicenseInfo:firstyear=2002&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LISTENER_FMODEX_H
+#define LL_LISTENER_FMODEX_H
+
+#include "lllistener.h"
+
+//Stubs
+namespace FMOD
+{
+	class System;
+}
+
+//Interfaces
+class LLListener_FMODEX : public LLListener
+{
+ public:  
+	LLListener_FMODEX(FMOD::System *system);
+	virtual ~LLListener_FMODEX();
+	virtual void init();  
+
+	virtual void translate(LLVector3 offset);
+	virtual void setPosition(LLVector3 pos);
+	virtual void setVelocity(LLVector3 vel);
+	virtual void orient(LLVector3 up, LLVector3 at);
+	virtual void commitDeferredChanges();
+
+	virtual void setDopplerFactor(F32 factor);
+	virtual F32 getDopplerFactor();
+	virtual void setRolloffFactor(F32 factor);
+	virtual F32 getRolloffFactor();
+ protected:
+	 FMOD::System *mSystem;
+	 F32 mDopplerFactor;
+	 F32 mRolloffFactor;
+};
+
+#endif
+
+
diff --git a/indra/llaudio/llstreamingaudio.h b/indra/llaudio/llstreamingaudio.h
index 20104af744a..93479f9d598 100644
--- a/indra/llaudio/llstreamingaudio.h
+++ b/indra/llaudio/llstreamingaudio.h
@@ -45,6 +45,8 @@ class LLStreamingAudioInterface
 	virtual void setGain(F32 vol) = 0;
 	virtual F32 getGain() = 0;
 	virtual std::string getURL() = 0;
+	virtual bool supportsAdjustableBufferSizes(){return false;}
+	virtual void setBufferSizes(U32 streambuffertime, U32 decodebuffertime){};
 };
 
 #endif // LL_STREAMINGAUDIO_H
diff --git a/indra/llaudio/llstreamingaudio_fmodex.cpp b/indra/llaudio/llstreamingaudio_fmodex.cpp
new file mode 100644
index 00000000000..463d816331d
--- /dev/null
+++ b/indra/llaudio/llstreamingaudio_fmodex.cpp
@@ -0,0 +1,382 @@
+/** 
+ * @file streamingaudio_fmodex.cpp
+ * @brief LLStreamingAudio_FMODEX implementation
+ *
+ * $LicenseInfo:firstyear=2002&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+#include "linden_common.h"
+
+#include "llmath.h"
+
+#include "fmod.hpp"
+#include "fmod_errors.h"
+
+#include "llstreamingaudio_fmodex.h"
+
+
+class LLAudioStreamManagerFMODEX
+{
+public:
+	LLAudioStreamManagerFMODEX(FMOD::System *system, const std::string& url);
+	FMOD::Channel* startStream();
+	bool stopStream(); // Returns true if the stream was successfully stopped.
+	bool ready();
+
+	const std::string& getURL() 	{ return mInternetStreamURL; }
+
+	FMOD_OPENSTATE getOpenState(unsigned int* percentbuffered=NULL, bool* starving=NULL, bool* diskbusy=NULL);
+protected:
+	FMOD::System* mSystem;
+	FMOD::Channel* mStreamChannel;
+	FMOD::Sound* mInternetStream;
+	bool mReady;
+
+	std::string mInternetStreamURL;
+};
+
+
+
+//---------------------------------------------------------------------------
+// Internet Streaming
+//---------------------------------------------------------------------------
+LLStreamingAudio_FMODEX::LLStreamingAudio_FMODEX(FMOD::System *system) :
+	mSystem(system),
+	mCurrentInternetStreamp(NULL),
+	mFMODInternetStreamChannelp(NULL),
+	mGain(1.0f)
+{
+	// Number of milliseconds of audio to buffer for the audio card.
+	// Must be larger than the usual Second Life frame stutter time.
+	const U32 buffer_seconds = 10;		//sec
+	const U32 estimated_bitrate = 128;	//kbit/sec
+	mSystem->setStreamBufferSize(estimated_bitrate * buffer_seconds * 128/*bytes/kbit*/, FMOD_TIMEUNIT_RAWBYTES);
+
+	// Here's where we set the size of the network buffer and some buffering 
+	// parameters.  In this case we want a network buffer of 16k, we want it 
+	// to prebuffer 40% of that when we first connect, and we want it 
+	// to rebuffer 80% of that whenever we encounter a buffer underrun.
+
+	// Leave the net buffer properties at the default.
+	//FSOUND_Stream_Net_SetBufferProperties(20000, 40, 80);
+}
+
+
+LLStreamingAudio_FMODEX::~LLStreamingAudio_FMODEX()
+{
+	// nothing interesting/safe to do.
+}
+
+
+void LLStreamingAudio_FMODEX::start(const std::string& url)
+{
+	//if (!mInited)
+	//{
+	//	llwarns << "startInternetStream before audio initialized" << llendl;
+	//	return;
+	//}
+
+	// "stop" stream but don't clear url, etc. in case url == mInternetStreamURL
+	stop();
+
+	if (!url.empty())
+	{
+		llinfos << "Starting internet stream: " << url << llendl;
+		mCurrentInternetStreamp = new LLAudioStreamManagerFMODEX(mSystem,url);
+		mURL = url;
+	}
+	else
+	{
+		llinfos << "Set internet stream to null" << llendl;
+		mURL.clear();
+	}
+}
+
+
+void LLStreamingAudio_FMODEX::update()
+{
+	// Kill dead internet streams, if possible
+	std::list<LLAudioStreamManagerFMODEX *>::iterator iter;
+	for (iter = mDeadStreams.begin(); iter != mDeadStreams.end();)
+	{
+		LLAudioStreamManagerFMODEX *streamp = *iter;
+		if (streamp->stopStream())
+		{
+			llinfos << "Closed dead stream" << llendl;
+			delete streamp;
+			mDeadStreams.erase(iter++);
+		}
+		else
+		{
+			iter++;
+		}
+	}
+
+	// Don't do anything if there are no streams playing
+	if (!mCurrentInternetStreamp)
+	{
+		return;
+	}
+
+	unsigned int progress;
+	bool starving;
+	bool diskbusy;
+	FMOD_OPENSTATE open_state = mCurrentInternetStreamp->getOpenState(&progress, &starving, &diskbusy);
+
+	if (open_state == FMOD_OPENSTATE_READY)
+	{
+		// Stream is live
+
+		// start the stream if it's ready
+		if (!mFMODInternetStreamChannelp &&
+			(mFMODInternetStreamChannelp = mCurrentInternetStreamp->startStream()))
+		{
+			// Reset volume to previously set volume
+			setGain(getGain());
+			mFMODInternetStreamChannelp->setPaused(false);
+			mLastStarved.stop();
+		}
+	}
+	else if(open_state == FMOD_OPENSTATE_ERROR)
+	{
+		stop();
+		return;
+	}
+
+	if(mFMODInternetStreamChannelp)
+	{
+		FMOD::Sound *sound = NULL;
+
+		if(mFMODInternetStreamChannelp->getCurrentSound(&sound) == FMOD_OK && sound)
+		{
+			if(starving)
+			{
+				if(!mLastStarved.getStarted())
+				{
+					llinfos << "Stream starvation detected! Muting stream audio until it clears." << llendl;
+					llinfos << "  (diskbusy="<<diskbusy<<")" << llendl;
+					llinfos << "  (progress="<<progress<<")" << llendl;
+					mFMODInternetStreamChannelp->setMute(true);
+				}
+				mLastStarved.start();
+			}
+			else if(mLastStarved.getStarted() && mLastStarved.getElapsedTimeF32() > 1.f)
+			{
+				mLastStarved.stop();
+				mFMODInternetStreamChannelp->setMute(false);
+			}
+		}
+	}
+}
+
+void LLStreamingAudio_FMODEX::stop()
+{
+	mLastStarved.stop();
+
+	if (mFMODInternetStreamChannelp)
+	{
+		mFMODInternetStreamChannelp->setPaused(true);
+		mFMODInternetStreamChannelp->setPriority(0);
+		mFMODInternetStreamChannelp = NULL;
+	}
+
+	if (mCurrentInternetStreamp)
+	{
+		llinfos << "Stopping internet stream: " << mCurrentInternetStreamp->getURL() << llendl;
+		if (mCurrentInternetStreamp->stopStream())
+		{
+			delete mCurrentInternetStreamp;
+		}
+		else
+		{
+			llwarns << "Pushing stream to dead list: " << mCurrentInternetStreamp->getURL() << llendl;
+			mDeadStreams.push_back(mCurrentInternetStreamp);
+		}
+		mCurrentInternetStreamp = NULL;
+		//mURL.clear();
+	}
+}
+
+void LLStreamingAudio_FMODEX::pause(int pauseopt)
+{
+	if (pauseopt < 0)
+	{
+		pauseopt = mCurrentInternetStreamp ? 1 : 0;
+	}
+
+	if (pauseopt)
+	{
+		if (mCurrentInternetStreamp)
+		{
+			stop();
+		}
+	}
+	else
+	{
+		start(getURL());
+	}
+}
+
+
+// A stream is "playing" if it has been requested to start.  That
+// doesn't necessarily mean audio is coming out of the speakers.
+int LLStreamingAudio_FMODEX::isPlaying()
+{
+	if (mCurrentInternetStreamp)
+	{
+		return 1; // Active and playing
+	}
+	else if (!mURL.empty())
+	{
+		return 2; // "Paused"
+	}
+	else
+	{
+		return 0;
+	}
+}
+
+
+F32 LLStreamingAudio_FMODEX::getGain()
+{
+	return mGain;
+}
+
+
+std::string LLStreamingAudio_FMODEX::getURL()
+{
+	return mURL;
+}
+
+
+void LLStreamingAudio_FMODEX::setGain(F32 vol)
+{
+	mGain = vol;
+
+	if (mFMODInternetStreamChannelp)
+	{
+		vol = llclamp(vol * vol, 0.f, 1.f);	//should vol be squared here?
+
+		mFMODInternetStreamChannelp->setVolume(vol);
+	}
+}
+
+///////////////////////////////////////////////////////
+// manager of possibly-multiple internet audio streams
+
+LLAudioStreamManagerFMODEX::LLAudioStreamManagerFMODEX(FMOD::System *system, const std::string& url) :
+	mSystem(system),
+	mStreamChannel(NULL),
+	mInternetStream(NULL),
+	mReady(false)
+{
+	mInternetStreamURL = url;
+
+	/*FMOD_CREATESOUNDEXINFO exinfo;
+	memset(&exinfo,0,sizeof(exinfo));
+	exinfo.cbsize = sizeof(exinfo);
+	exinfo.suggestedsoundtype = FMOD_SOUND_TYPE_OGGVORBIS;	//Hint to speed up loading.*/
+
+	FMOD_RESULT result = mSystem->createStream(url.c_str(), FMOD_2D | FMOD_NONBLOCKING | FMOD_MPEGSEARCH | FMOD_IGNORETAGS, 0, &mInternetStream);
+
+	if (result!= FMOD_OK)
+	{
+		llwarns << "Couldn't open fmod stream, error "
+			<< FMOD_ErrorString(result)
+			<< llendl;
+		mReady = false;
+		return;
+	}
+
+	mReady = true;
+}
+
+FMOD::Channel *LLAudioStreamManagerFMODEX::startStream()
+{
+	// We need a live and opened stream before we try and play it.
+	if (!mInternetStream || getOpenState() != FMOD_OPENSTATE_READY)
+	{
+		llwarns << "No internet stream to start playing!" << llendl;
+		return NULL;
+	}
+
+	if(mStreamChannel)
+		return mStreamChannel;	//Already have a channel for this stream.
+
+	mSystem->playSound(FMOD_CHANNEL_FREE, mInternetStream, true, &mStreamChannel);
+	return mStreamChannel;
+}
+
+bool LLAudioStreamManagerFMODEX::stopStream()
+{
+	if (mInternetStream)
+	{
+
+
+		bool close = true;
+		switch (getOpenState())
+		{
+		case FMOD_OPENSTATE_CONNECTING:
+			close = false;
+			break;
+		/*case FSOUND_STREAM_NET_NOTCONNECTED:
+		case FSOUND_STREAM_NET_BUFFERING:
+		case FSOUND_STREAM_NET_READY:
+		case FSOUND_STREAM_NET_ERROR:*/
+		default:
+			close = true;
+		}
+
+		if (close)
+		{
+			mInternetStream->release();
+			mStreamChannel = NULL;
+			mInternetStream = NULL;
+			return true;
+		}
+		else
+		{
+			return false;
+		}
+	}
+	else
+	{
+		return true;
+	}
+}
+
+FMOD_OPENSTATE LLAudioStreamManagerFMODEX::getOpenState(unsigned int* percentbuffered, bool* starving, bool* diskbusy)
+{
+	FMOD_OPENSTATE state;
+	mInternetStream->getOpenState(&state, percentbuffered, starving, diskbusy);
+	return state;
+}
+
+void LLStreamingAudio_FMODEX::setBufferSizes(U32 streambuffertime, U32 decodebuffertime)
+{
+	mSystem->setStreamBufferSize(streambuffertime/1000*128*128, FMOD_TIMEUNIT_RAWBYTES);
+	FMOD_ADVANCEDSETTINGS settings;
+	memset(&settings,0,sizeof(settings));
+	settings.cbsize=sizeof(settings);
+	settings.defaultDecodeBufferSize = decodebuffertime;//ms
+	mSystem->setAdvancedSettings(&settings);
+}
diff --git a/indra/llaudio/llstreamingaudio_fmodex.h b/indra/llaudio/llstreamingaudio_fmodex.h
new file mode 100644
index 00000000000..3751dd60ad0
--- /dev/null
+++ b/indra/llaudio/llstreamingaudio_fmodex.h
@@ -0,0 +1,75 @@
+/** 
+ * @file streamingaudio_fmodex.h
+ * @brief Definition of LLStreamingAudio_FMODEX implementation
+ *
+ * $LicenseInfo:firstyear=2002&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_STREAMINGAUDIO_FMOD_H
+#define LL_STREAMINGAUDIO_FMOD_H
+
+#include "stdtypes.h" // from llcommon
+
+#include "llstreamingaudio.h"
+#include "lltimer.h"
+
+//Stubs
+class LLAudioStreamManagerFMODEX;
+namespace FMOD
+{
+	class System;
+	class Channel;
+}
+
+//Interfaces
+class LLStreamingAudio_FMODEX : public LLStreamingAudioInterface
+{
+ public:
+	LLStreamingAudio_FMODEX(FMOD::System *system);
+	/*virtual*/ ~LLStreamingAudio_FMODEX();
+
+	/*virtual*/ void start(const std::string& url);
+	/*virtual*/ void stop();
+	/*virtual*/ void pause(int pause);
+	/*virtual*/ void update();
+	/*virtual*/ int isPlaying();
+	/*virtual*/ void setGain(F32 vol);
+	/*virtual*/ F32 getGain();
+	/*virtual*/ std::string getURL();
+
+	/*virtual*/ bool supportsAdjustableBufferSizes(){return true;}
+	/*virtual*/ void setBufferSizes(U32 streambuffertime, U32 decodebuffertime);
+private:
+	FMOD::System *mSystem;
+
+	LLAudioStreamManagerFMODEX *mCurrentInternetStreamp;
+	FMOD::Channel *mFMODInternetStreamChannelp;
+	std::list<LLAudioStreamManagerFMODEX *> mDeadStreams;
+
+	std::string mURL;
+	F32 mGain;
+
+	LLTimer mLastStarved;
+};
+
+
+#endif // LL_STREAMINGAUDIO_FMOD_H
diff --git a/indra/llaudio/llwindgen.h b/indra/llaudio/llwindgen.h
index b9cecb60a1e..719b0ecbf24 100644
--- a/indra/llaudio/llwindgen.h
+++ b/indra/llaudio/llwindgen.h
@@ -27,6 +27,7 @@
 #define WINDGEN_H
 
 #include "llcommon.h"
+#include "llrand.h"
 
 template <class MIXBUFFERFORMAT_T>
 class LLWindGen
@@ -54,7 +55,9 @@ class LLWindGen
 	}
 
 	const U32 getInputSamplingRate() { return mInputSamplingRate; }
-	
+	const F32 getNextSample();
+	const F32 getClampedSample(bool clamp, F32 sample);
+
 	// newbuffer = the buffer passed from the previous DSP unit.
 	// numsamples = length in samples-per-channel at this mix time.
 	// NOTE: generates L/R interleaved stereo
@@ -89,7 +92,7 @@ class LLWindGen
 			
 			// Start with white noise
 			// This expression is fragile, rearrange it and it will break!
-			next_sample = (F32)rand() * (1.0f / (F32)(RAND_MAX / (U16_MAX / 8))) + (F32)(S16_MIN / 8);
+			next_sample = getNextSample();
 			
 			// Apply a pinking filter
 			// Magic numbers taken from PKE method at http://www.firstpr.com.au/dsp/pink-noise/
@@ -126,23 +129,13 @@ class LLWindGen
 			for (U8 i=mSubSamples; i && numsamples; --i, --numsamples) 
 			{
 				mLastSample = mLastSample + delta;
-				S32	sample_right = (S32)(mLastSample * mCurrentPanGainR);
-				S32	sample_left = (S32)mLastSample - sample_right;
+				MIXBUFFERFORMAT_T	sample_right = (MIXBUFFERFORMAT_T)getClampedSample(clip, mLastSample * mCurrentPanGainR);
+				MIXBUFFERFORMAT_T	sample_left = (MIXBUFFERFORMAT_T)getClampedSample(clip, mLastSample - (F32)sample_right);
 				
-				if (!clip)
-				{
-					*cursamplep = (MIXBUFFERFORMAT_T)sample_left;
-					++cursamplep;
-					*cursamplep = (MIXBUFFERFORMAT_T)sample_right;
-					++cursamplep;
-				}
-				else
-				{
-					*cursamplep = (MIXBUFFERFORMAT_T)llclamp(sample_left, (S32)S16_MIN, (S32)S16_MAX);
-					++cursamplep;
-					*cursamplep = (MIXBUFFERFORMAT_T)llclamp(sample_right, (S32)S16_MIN, (S32)S16_MAX);
-					++cursamplep;
-				}
+				*cursamplep = sample_left;
+				++cursamplep;
+				*cursamplep = sample_right;
+				++cursamplep;
 			}
 		}
 		
@@ -173,4 +166,9 @@ class LLWindGen
 	F32 mLastSample;
 };
 
+template<class T> inline const F32 LLWindGen<T>::getNextSample() { return (F32)rand() * (1.0f / (F32)(RAND_MAX / (U16_MAX / 8))) + (F32)(S16_MIN / 8); }
+template<> inline const F32 LLWindGen<F32>::getNextSample() { return ll_frand()-.5f; }
+template<class T> inline const F32 LLWindGen<T>::getClampedSample(bool clamp, F32 sample) { return clamp ? (F32)llclamp((S32)sample,(S32)S16_MIN,(S32)S16_MAX) : sample; }
+template<> inline const F32 LLWindGen<F32>::getClampedSample(bool clamp, F32 sample) { return sample; }
+
 #endif
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index b569808a063..793b01baa10 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -10,7 +10,8 @@ include(DirectX)
 include(OpenSSL)
 include(DragDrop)
 include(EXPAT)
-include(FMOD)
+include(FMODEX)
+set(FMOD OFF)
 include(OPENAL)
 include(FindOpenGL)
 include(Hunspell)
@@ -52,6 +53,14 @@ if (NOT HAVOK_TPV)
    add_subdirectory(${LLPHYSICSEXTENSIONS_SRC_DIR} llphysicsextensions)
 endif (NOT HAVOK_TPV)
 
+if(FMODEX)
+  include_directories(${FMODEX_INCLUDE_DIR})
+endif(FMODEX)
+
+if(FMOD)
+  include_directories(${FMOD_INCLUDE_DIR})
+endif(FMOD)
+
 include_directories(
     ${DBUSGLIB_INCLUDE_DIRS}
     ${JSONCPP_INCLUDE_DIR}
@@ -61,7 +70,6 @@ include_directories(
     ${LLCOMMON_INCLUDE_DIRS}
     ${LLCOREHTTP_INCLUDE_DIRS}
     ${LLPHYSICS_INCLUDE_DIRS}
-    ${FMOD_INCLUDE_DIR}
     ${LLIMAGE_INCLUDE_DIRS}
     ${LLKDU_INCLUDE_DIRS}
     ${LLINVENTORY_INCLUDE_DIRS}
@@ -1521,10 +1529,15 @@ if (OPENAL)
   set(LLSTARTUP_COMPILE_FLAGS "${LLSTARTUP_COMPILE_FLAGS} -DLL_OPENAL")
 endif (OPENAL)
 
-if (FMOD)
-  set(LLSTARTUP_COMPILE_FLAGS "${LLSTARTUP_COMPILE_FLAGS} -DLL_FMOD")
+if (FMOD OR FMODEX)
+  if (FMODEX)
+    set(LLSTARTUP_COMPILE_FLAGS "${LLSTARTUP_COMPILE_FLAGS} -DLL_FMODEX")
+  endif (FMODEX)
+  if (FMOD)
+    set(LLSTARTUP_COMPILE_FLAGS "${LLSTARTUP_COMPILE_FLAGS} -DLL_FMOD")
+  endif (FMOD)
 
-  if (DARWIN)
+  if (DARWIN AND FMOD)
     set(fmodwrapper_SOURCE_FILES fmodwrapper.cpp)
     add_library(fmodwrapper SHARED ${fmodwrapper_SOURCE_FILES})
     set(fmodwrapper_needed_LIBRARIES ${FMOD_LIBRARY} ${CARBON_LIBRARY})
@@ -1537,11 +1550,16 @@ if (FMOD)
       )
     set(FMODWRAPPER_LIBRARY fmodwrapper)
     target_link_libraries(fmodwrapper ${fmodwrapper_needed_LIBRARIES})
-  else (DARWIN)
-    # fmodwrapper unnecessary on linux or windows
-    set(FMODWRAPPER_LIBRARY ${FMOD_LIBRARY})
-  endif (DARWIN)
-endif (FMOD)
+  else (DARWIN AND FMOD)
+    # fmodwrapper unnecessary on linux or windows for fmod and darwin for fmodex
+    if (FMODEX)
+       set(FMODWRAPPER_LIBRARY ${FMODEX_LIBRARY})
+    endif (FMODEX)
+    if (FMOD)
+       set(FMODWRAPPER_LIBRARY ${FMOD_LIBRARY})
+    endif (FMOD)
+  endif (DARWIN AND FMOD)
+endif (FMOD OR FMODEX)
 
 set_source_files_properties(llstartup.cpp PROPERTIES COMPILE_FLAGS "${LLSTARTUP_COMPILE_FLAGS}")
 
@@ -1616,9 +1634,6 @@ if (WINDOWS)
       ${SHARED_LIB_STAGING_DIR}/Release/openjpeg.dll
       ${SHARED_LIB_STAGING_DIR}/RelWithDebInfo/openjpeg.dll
       ${SHARED_LIB_STAGING_DIR}/Debug/openjpegd.dll
-      ${SHARED_LIB_STAGING_DIR}/Release/fmod.dll
-      ${SHARED_LIB_STAGING_DIR}/RelWithDebInfo/fmod.dll
-      ${SHARED_LIB_STAGING_DIR}/Debug/fmod.dll
       ${SHARED_LIB_STAGING_DIR}/Release/msvcr100.dll
       ${SHARED_LIB_STAGING_DIR}/Release/msvcp100.dll
       ${SHARED_LIB_STAGING_DIR}/RelWithDebInfo/msvcr100.dll
@@ -1683,6 +1698,22 @@ if (WINDOWS)
       windows-updater
       )
 
+    if (FMODEX)
+      list(APPEND COPY_INPUT_DEPENDENCIES
+           ${SHARED_LIB_STAGING_DIR}/Release/fmodex.dll
+           ${SHARED_LIB_STAGING_DIR}/RelWithDebInfo/fmodex.dll
+           ${SHARED_LIB_STAGING_DIR}/Debug/fmodexL.dll
+          )
+    endif (FMODEX)
+
+    if (FMOD)
+      list(APPEND COPY_INPUT_DEPENDENCIES
+           ${SHARED_LIB_STAGING_DIR}/Release/fmod.dll
+           ${SHARED_LIB_STAGING_DIR}/RelWithDebInfo/fmod.dll
+           ${SHARED_LIB_STAGING_DIR}/Debug/fmod.dll
+          )
+    endif (FMOD)
+
     add_custom_command(
       OUTPUT  ${CMAKE_CFG_INTDIR}/copy_touched.bat
       COMMAND ${PYTHON_EXECUTABLE}
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 2e91d10cd3c..995546ab230 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -269,6 +269,17 @@
       <key>Value</key>
       <real>1.0</real>
     </map>
+    <key>AudioLevelUnderwaterRolloff</key>
+    <map>
+      <key>Comment</key>
+      <string>Controls the distance-based dropoff of audio volume underwater(fraction or multiple of default audio rolloff)</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>F32</string>
+      <key>Value</key>
+      <real>5.0</real>
+    </map>
     <key>AudioLevelSFX</key>
     <map>
       <key>Comment</key>
@@ -14094,5 +14105,38 @@
     <key>Value</key>
     <integer>0</integer>
   </map>
+  <key>FMODExProfilerEnable</key>
+  <map>
+    <key>Comment</key>
+    <string>Enable profiler tool if using FMOD Ex</string>
+    <key>Persist</key>
+    <integer>1</integer>
+    <key>Type</key>
+    <string>Boolean</string>
+    <key>Value</key>
+    <integer>0</integer>
+    </map>
+  <key>FMODExDecodeBufferSize</key>
+  <map>
+    <key>Comment</key>
+    <string>Sets the streaming decode buffer size (in milliseconds)</string>
+    <key>Persist</key>
+    <integer>1</integer>
+    <key>Type</key>
+    <string>U32</string>
+    <key>Value</key>
+    <integer>1000</integer>
+    </map>
+  <key>FMODExStreamBufferSize</key>
+  <map>
+    <key>Comment</key>
+    <string>Sets the streaming buffer size (in milliseconds)</string>
+    <key>Persist</key>
+    <integer>1</integer>
+    <key>Type</key>
+    <string>U32</string>
+    <key>Value</key>
+    <integer>7000</integer>
+  </map>
 </map>
 </llsd>
diff --git a/indra/newview/linux_tools/wrapper.sh b/indra/newview/linux_tools/wrapper.sh
index 20936c6460b..71b7e74c632 100755
--- a/indra/newview/linux_tools/wrapper.sh
+++ b/indra/newview/linux_tools/wrapper.sh
@@ -4,17 +4,21 @@
 ## These options are for self-assisted troubleshooting during this beta
 ## testing phase; you should not usually need to touch them.
 
+## - Avoids using any FMOD Ex audio driver.
+#export LL_BAD_FMODEX_DRIVER=x
 ## - Avoids using any OpenAL audio driver.
 #export LL_BAD_OPENAL_DRIVER=x
 ## - Avoids using any FMOD audio driver.
 #export LL_BAD_FMOD_DRIVER=x
 
+## - Avoids using the FMOD Ex PulseAudio audio driver.
+#export LL_BAD_FMOD_PULSEAUDIO=x
+## - Avoids using the FMOD or FMOD Ex ALSA audio driver.
+#export LL_BAD_FMOD_ALSA=x
+## - Avoids using the FMOD or FMOD Ex OSS audio driver.
+#export LL_BAD_FMOD_OSS=x
 ## - Avoids using the FMOD ESD audio driver.
 #export LL_BAD_FMOD_ESD=x
-## - Avoids using the FMOD OSS audio driver.
-#export LL_BAD_FMOD_OSS=x
-## - Avoids using the FMOD ALSA audio driver.
-#export LL_BAD_FMOD_ALSA=x
 
 ## - Avoids the optional OpenGL extensions which have proven most problematic
 ##   on some hardware.  Disabling this option may cause BETTER PERFORMANCE but
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index 0e3007724b3..6a874d1af58 100644
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -37,6 +37,10 @@
 #include "llviewermedia_streamingaudio.h"
 #include "llaudioengine.h"
 
+#ifdef LL_FMODEX
+# include "llaudioengine_fmodex.h"
+#endif
+
 #ifdef LL_FMOD
 # include "llaudioengine_fmod.h"
 #endif
@@ -623,6 +627,17 @@ bool idle_startup()
 		{
 			gAudiop = NULL;
 
+#ifdef LL_FMODEX		
+			if (!gAudiop
+#if !LL_WINDOWS
+			    && NULL == getenv("LL_BAD_FMODEX_DRIVER")
+#endif // !LL_WINDOWS
+			    )
+			{
+				gAudiop = (LLAudioEngine *) new LLAudioEngine_FMODEX(gSavedSettings.getBOOL("FMODExProfilerEnable"));
+			}
+#endif
+
 #ifdef LL_OPENAL
 			if (!gAudiop
 #if !LL_WINDOWS
diff --git a/indra/newview/llvieweraudio.cpp b/indra/newview/llvieweraudio.cpp
index 8d8c401dac5..f349eeac635 100644
--- a/indra/newview/llvieweraudio.cpp
+++ b/indra/newview/llvieweraudio.cpp
@@ -43,6 +43,8 @@
 #include "llparcel.h"
 #include "llviewermessage.h"
 
+#include "llstreamingaudio.h"
+
 /////////////////////////////////////////////////////////
 
 LLViewerAudio::LLViewerAudio() :
@@ -101,6 +103,11 @@ void LLViewerAudio::startInternetStreamWithAutoFade(std::string streamURI)
 		else
 		{
 			mFadeState = FADE_IN;
+
+			LLStreamingAudioInterface *stream = gAudiop->getStreamingAudioImpl();
+			if(stream && stream->supportsAdjustableBufferSizes())
+				stream->setBufferSizes(gSavedSettings.getU32("FMODExStreamBufferSize"),gSavedSettings.getU32("FMODExDecodeBufferSize"));
+
 			gAudiop->startInternetStream(mNextStreamURI);
 			startFading();
 			registerIdleListener();
@@ -156,6 +163,11 @@ bool LLViewerAudio::onIdleUpdate()
 			if (!mNextStreamURI.empty())
 			{
 				mFadeState = FADE_IN;
+
+				LLStreamingAudioInterface *stream = gAudiop->getStreamingAudioImpl();
+				if(stream && stream->supportsAdjustableBufferSizes())
+					stream->setBufferSizes(gSavedSettings.getU32("FMODExStreamBufferSize"),gSavedSettings.getU32("FMODExDecodeBufferSize"));
+
 				gAudiop->startInternetStream(mNextStreamURI);
 				startFading();
 			}
@@ -385,7 +397,12 @@ void audio_update_volume(bool force_update)
 		gAudiop->setMasterGain ( master_volume );
 
 		gAudiop->setDopplerFactor(gSavedSettings.getF32("AudioLevelDoppler"));
-		gAudiop->setRolloffFactor(gSavedSettings.getF32("AudioLevelRolloff"));
+
+		if(!LLViewerCamera::getInstance()->cameraUnderWater())
+			gAudiop->setRolloffFactor(gSavedSettings.getF32("AudioLevelRolloff"));
+		else
+			gAudiop->setRolloffFactor(gSavedSettings.getF32("AudioLevelUnderwaterRolloff"));
+
 		gAudiop->setMuted(mute_audio || progress_view_visible);
 		
 		if (force_update)
@@ -466,44 +483,22 @@ void audio_update_listener()
 void audio_update_wind(bool force_update)
 {
 #ifdef kAUDIO_ENABLE_WIND
-	//
-	//  Extract height above water to modulate filter by whether above/below water 
-	// 
+
 	LLViewerRegion* region = gAgent.getRegion();
 	if (region)
 	{
-		static F32 last_camera_water_height = -1000.f;
-		LLVector3 camera_pos = gAgentCamera.getCameraPositionAgent();
-		F32 camera_water_height = camera_pos.mV[VZ] - region->getWaterHeight();
-		
-		//
-		//  Don't update rolloff factor unless water surface has been crossed
-		//
-		if (force_update || (last_camera_water_height * camera_water_height) < 0.f)
-		{
-            static LLUICachedControl<F32> rolloff("AudioLevelRolloff", 1.0f);
-			if (camera_water_height < 0.f)
-			{
-				gAudiop->setRolloffFactor(rolloff * LL_ROLLOFF_MULTIPLIER_UNDER_WATER);
-			}
-			else 
-			{
-				gAudiop->setRolloffFactor(rolloff);
-			}
-		}
-        
-        // Scale down the contribution of weather-simulation wind to the
-        // ambient wind noise.  Wind velocity averages 3.5 m/s, with gusts to 7 m/s
-        // whereas steady-state avatar walk velocity is only 3.2 m/s.
-        // Without this the world feels desolate on first login when you are
-        // standing still.
-        static LLUICachedControl<F32> wind_level("AudioLevelWind", 0.5f);
-        LLVector3 scaled_wind_vec = gWindVec * wind_level;
-        
-        // Mix in the avatar's motion, subtract because when you walk north,
-        // the apparent wind moves south.
-        LLVector3 final_wind_vec = scaled_wind_vec - gAgent.getVelocity();
-        
+		// Scale down the contribution of weather-simulation wind to the
+		// ambient wind noise.  Wind velocity averages 3.5 m/s, with gusts to 7 m/s
+		// whereas steady-state avatar walk velocity is only 3.2 m/s.
+		// Without this the world feels desolate on first login when you are
+		// standing still.
+		static LLUICachedControl<F32> wind_level("AudioLevelWind", 0.5f);
+		LLVector3 scaled_wind_vec = gWindVec * wind_level;
+
+		// Mix in the avatar's motion, subtract because when you walk north,
+		// the apparent wind moves south.
+		LLVector3 final_wind_vec = scaled_wind_vec - gAgent.getVelocity();
+
 		// rotate the wind vector to be listener (agent) relative
 		gRelativeWindVec = gAgent.getFrameAgent().rotateToLocal( final_wind_vec );
 
@@ -536,8 +531,7 @@ void audio_update_wind(bool force_update)
 			gAudiop->mMaxWindGain = llmax(gAudiop->mMaxWindGain - volume_delta, 0.f);
 		}
 		
-		last_camera_water_height = camera_water_height;
-		gAudiop->updateWind(gRelativeWindVec, camera_water_height);
+		gAudiop->updateWind(gRelativeWindVec, gAgentCamera.getCameraPositionAgent()[VZ] - gAgent.getRegion()->getWaterHeight());
 	}
 #endif
 }
diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp
index 051f5f44853..a62f73deef0 100644
--- a/indra/newview/llviewercontrol.cpp
+++ b/indra/newview/llviewercontrol.cpp
@@ -655,6 +655,7 @@ void settings_setup_listeners()
 	gSavedSettings.getControl("AudioLevelVoice")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _2));
 	gSavedSettings.getControl("AudioLevelDoppler")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _2));
 	gSavedSettings.getControl("AudioLevelRolloff")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _2));
+	gSavedSettings.getControl("AudioLevelUnderwaterRolloff")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _2));
 	gSavedSettings.getControl("MuteAudio")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _2));
 	gSavedSettings.getControl("MuteMusic")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _2));
 	gSavedSettings.getControl("MuteMedia")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _2));
diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py
index ea75d4f4f6c..cdd227e9fe1 100644
--- a/indra/newview/viewer_manifest.py
+++ b/indra/newview/viewer_manifest.py
@@ -367,6 +367,14 @@ def construct(self):
                 print err.message
                 print "Skipping COLLADA and GLOD libraries (assumming linked statically)"
 
+            # Get fmodex dll, continue if missing
+            try:
+                if self.args['configuration'].lower() == 'debug':
+                    self.path("fmodexL.dll")
+                else:
+                    self.path("fmodex.dll")
+            except:
+                print "Skipping fmodex audio library(assuming other audio engine)"
 
             # Get fmod dll, continue if missing
             if not self.path("fmod.dll"):
@@ -743,6 +751,7 @@ def path_optional(src, dst):
                                 "libcollada14dom.dylib",
                                 "libexpat.1.5.2.dylib",
                                 "libexception_handler.dylib",
+                                "libfmodex.dylib",
                                 "libGLOD.dylib",
                                 ):
                     dylibs += path_optional(os.path.join(libdir, libfile), libfile)
@@ -1125,6 +1134,15 @@ def construct(self):
             except:
                     print "Skipping libfmod-3.75.so - not found"
                     pass
+
+            try:
+                    self.path("libfmodex-*.so")
+                    self.path("libfmodex.so")
+                    pass
+            except:
+                    print "Skipping libfmodex.so - not found"
+                    pass
+
             self.end_prefix("lib")
 
             # Vivox runtimes
-- 
GitLab


From b13d0b7a658784f015256576b71643827c572bb5 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Sat, 19 Jan 2013 02:00:39 +0000
Subject: [PATCH 235/436] Adding stub for private artifacts

---
 build.sh | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/build.sh b/build.sh
index d779a1a34b5..964f9ef0a60 100755
--- a/build.sh
+++ b/build.sh
@@ -312,6 +312,7 @@ then
     if $build_viewer_deb && [ "$last_built_variant" == "Release" ]
     then
       begin_section "Build Viewer Debian Package"
+      local have_private_repo=false
       # mangle the changelog
       dch --force-bad-version \
           --distribution unstable \
@@ -346,6 +347,7 @@ then
       done
       for deb_file in `/bin/ls ../packages_private/*.deb 2>/dev/null`; do
         upload_item debian_private $deb_file binary/octet-stream
+        have_private_repo=true
       done
 
       create_deb_repo
@@ -357,6 +359,14 @@ then
           mv $build_log_dir/$debian_repo_type $build_log_dir/${debian_repo_type}_pushed
         fi
       done
+
+      if [ $have_private_repo = true ]; then
+        eval "$python_command \"$redirect\" '\${private_S3PROXY_URL}${S3PREFIX}repo/$repo/rev/$revision/index.html'"\
+            >"$build_log_dir/private.html" || fatal generating redirect
+        upload_item global_redirect "$build_log_dir/private.html" text/html
+        
+      fi
+
       end_section "Upload Debian Repository"
       
     else
-- 
GitLab


From b40fad02de170b5da179cacc22f32f5f25ffd7cb Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Tue, 22 Jan 2013 09:19:23 -0500
Subject: [PATCH 236/436] Add debug level logging for Avatar by default. Will
 need to turn this off before general release, but will give us better
 debugging info during testing

---
 indra/newview/app_settings/logcontrol.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/newview/app_settings/logcontrol.xml b/indra/newview/app_settings/logcontrol.xml
index 64122bbb6ce..12590390107 100755
--- a/indra/newview/app_settings/logcontrol.xml
+++ b/indra/newview/app_settings/logcontrol.xml
@@ -42,8 +42,8 @@
 						</array>
 					<key>tags</key>
 						<array>
-						<!-- sample entry for debugging specific items	
 						     <string>Avatar</string>
+						<!-- sample entry for debugging specific items	
 						     <string>Voice</string>		
 						-->
 						</array>
-- 
GitLab


From fa12377b0de935b2a09ee46f5195cfed96dbe557 Mon Sep 17 00:00:00 2001
From: callum_linden <none@none>
Date: Tue, 22 Jan 2013 15:55:31 -0800
Subject: [PATCH 237/436] Update 3p libs to include debug version too

---
 autobuild.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index 376a1d1d6de..b7550e34ca0 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -546,9 +546,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>3590b83d65b7dc4dd7f6040c179b49f3</string>
+              <string>c6f551e728295ff798d5804aa4e3671f</string>
               <key>url</key>
-              <string>http://private-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-fmodex-private/arch/Darwin/fmodex-4.44.04-darwin-20130118.tar.bz2</string>
+              <string>http://private-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-fmodex-private/arch/Darwin/fmodex-4.44.04-darwin-20130122.tar.bz2</string>
             </map>
             <key>name</key>
             <string>darwin</string>
-- 
GitLab


From e378effca36a0a6efd6036586c3259ba5367b012 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Tue, 22 Jan 2013 21:47:35 -0500
Subject: [PATCH 238/436] Added cof version information to
 DebugAvatarAppearanceMessage output

---
 indra/newview/llappearancemgr.cpp | 18 +++++++++++++++++-
 indra/newview/llappearancemgr.h   |  7 +++++++
 indra/newview/llvoavatar.cpp      | 18 ++++++++++++++++--
 3 files changed, 40 insertions(+), 3 deletions(-)

diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 2b1e78c8991..e7fa56466d0 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -1184,6 +1184,21 @@ S32 LLAppearanceMgr::getCOFVersion() const
 	}
 }
 
+S32 LLAppearanceMgr::getLastUpdateRequestCOFVersion() const
+{
+	return mLastUpdateRequestCOFVersion;
+}
+
+S32 LLAppearanceMgr::getLastAppearanceUpdateCOFVersion() const
+{
+	return mLastAppearanceUpdateCOFVersion;
+}
+
+void LLAppearanceMgr::setLastAppearanceUpdateCOFVersion(S32 new_val)
+{
+	mLastAppearanceUpdateCOFVersion = new_val;
+}
+
 const LLViewerInventoryItem* LLAppearanceMgr::getBaseOutfitLink()
 {
 	const LLUUID& current_outfit_cat = getCOF();
@@ -3293,7 +3308,8 @@ LLAppearanceMgr::LLAppearanceMgr():
 	mOutfitIsDirty(false),
 	mOutfitLocked(false),
 	mIsInUpdateAppearanceFromCOF(false),
-	mLastUpdateRequestCOFVersion(LLViewerInventoryCategory::VERSION_UNKNOWN)
+	mLastUpdateRequestCOFVersion(LLViewerInventoryCategory::VERSION_UNKNOWN),
+	mLastAppearanceUpdateCOFVersion(LLViewerInventoryCategory::VERSION_UNKNOWN)
 {
 	LLOutfitObserver& outfit_observer = LLOutfitObserver::instance();
 
diff --git a/indra/newview/llappearancemgr.h b/indra/newview/llappearancemgr.h
index bb4c9ee5a2d..1a1ca1ca7dc 100755
--- a/indra/newview/llappearancemgr.h
+++ b/indra/newview/llappearancemgr.h
@@ -94,7 +94,14 @@ class LLAppearanceMgr: public LLSingleton<LLAppearanceMgr>
 	const LLUUID getCOF() const;
 	S32 getCOFVersion() const;
 
+	// COF version of last viewer-initiated appearance update request.
 	S32 mLastUpdateRequestCOFVersion;
+	S32 getLastUpdateRequestCOFVersion() const;
+
+	// COF version of last appearance message received for self av.
+	S32 mLastAppearanceUpdateCOFVersion;
+	S32 getLastAppearanceUpdateCOFVersion() const;
+	void setLastAppearanceUpdateCOFVersion(S32 new_val);
 
 	// Finds the folder link to the currently worn outfit
 	const LLViewerInventoryItem *getBaseOutfitLink();
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 54bb755ad5c..83667c8c558 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -2890,11 +2890,23 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent)
 		}
 		bool all_baked_downloaded = allBakedTexturesCompletelyDownloaded();
 		bool all_local_downloaded = allLocalTexturesCompletelyDownloaded();
-		addDebugText(llformat("%s%s - mLocal: %d, mEdit: %d, mUSB: %d, CBV: %d",
+		S32 curr_cof_version = -1;
+		S32 last_request_cof_version = -1;
+		S32 last_received_cof_version = -1;
+		if (isSelf())
+		{
+			curr_cof_version = LLAppearanceMgr::instance().getCOFVersion();
+			last_request_cof_version = LLAppearanceMgr::instance().getLastUpdateRequestCOFVersion();
+			last_received_cof_version = LLAppearanceMgr::instance().getLastAppearanceUpdateCOFVersion();
+		}
+		
+		addDebugText(llformat("%s%s - mLocal: %d, mEdit: %d, mUSB: %d, CBV: %d - cof: %d req: %d rcv:%d",
 							  all_local_downloaded ? "L" : "l",
 							  all_baked_downloaded ? "B" : "b",
 							  mUseLocalAppearance, mIsEditingAppearance,
-							  mUseServerBakes, central_bake_version));
+							  mUseServerBakes, central_bake_version,
+							  curr_cof_version, last_request_cof_version, last_received_cof_version
+						 ));
 	}
 	if (gSavedSettings.getBOOL("DebugAvatarCompositeBaked"))
 	{
@@ -6613,6 +6625,8 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 				<< " last_update_request_cof_version " << last_update_request_cof_version
 				<<  " my_cof_version " << LLAppearanceMgr::instance().getCOFVersion() << llendl;
 
+		LLAppearanceMgr::instance().setLastAppearanceUpdateCOFVersion(this_update_cof_version);
+		
 		if (getRegion() && (getRegion()->getCentralBakeVersion()==0))
 		{
 			llwarns << avString() << "Received AvatarAppearance message for self in non-server-bake region" << llendl;
-- 
GitLab


From d56009af85cd3807dbaaf23e4f4ce9539a637602 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Wed, 23 Jan 2013 11:04:23 -0500
Subject: [PATCH 239/436] fixes and updates to DebugAvatarAppearanceMessage
 status line

---
 indra/newview/llvoavatar.cpp | 27 ++++++++++++---------------
 1 file changed, 12 insertions(+), 15 deletions(-)

diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 83667c8c558..6aad3c89187 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -2890,23 +2890,20 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent)
 		}
 		bool all_baked_downloaded = allBakedTexturesCompletelyDownloaded();
 		bool all_local_downloaded = allLocalTexturesCompletelyDownloaded();
-		S32 curr_cof_version = -1;
-		S32 last_request_cof_version = -1;
-		S32 last_received_cof_version = -1;
+		std::string debug_line = llformat("%s%s - mLocal: %d, mEdit: %d, mUSB: %d, CBV: %d",
+										  all_local_downloaded ? "L" : "l",
+										  all_baked_downloaded ? "B" : "b",
+										  mUseLocalAppearance, mIsEditingAppearance,
+										  mUseServerBakes, central_bake_version);
 		if (isSelf())
 		{
-			curr_cof_version = LLAppearanceMgr::instance().getCOFVersion();
-			last_request_cof_version = LLAppearanceMgr::instance().getLastUpdateRequestCOFVersion();
-			last_received_cof_version = LLAppearanceMgr::instance().getLastAppearanceUpdateCOFVersion();
+			S32 curr_cof_version = LLAppearanceMgr::instance().getCOFVersion();
+			S32 last_request_cof_version = LLAppearanceMgr::instance().getLastUpdateRequestCOFVersion();
+			S32 last_received_cof_version = LLAppearanceMgr::instance().getLastAppearanceUpdateCOFVersion();
+			debug_line += llformat(" - cof: %d req: %d rcv:%d",
+								   curr_cof_version, last_request_cof_version, last_received_cof_version);
 		}
-		
-		addDebugText(llformat("%s%s - mLocal: %d, mEdit: %d, mUSB: %d, CBV: %d - cof: %d req: %d rcv:%d",
-							  all_local_downloaded ? "L" : "l",
-							  all_baked_downloaded ? "B" : "b",
-							  mUseLocalAppearance, mIsEditingAppearance,
-							  mUseServerBakes, central_bake_version,
-							  curr_cof_version, last_request_cof_version, last_received_cof_version
-						 ));
+		addDebugText(debug_line);
 	}
 	if (gSavedSettings.getBOOL("DebugAvatarCompositeBaked"))
 	{
@@ -4040,7 +4037,7 @@ bool LLVOAvatar::allLocalTexturesCompletelyDownloaded()
 bool LLVOAvatar::allBakedTexturesCompletelyDownloaded()
 {
 	std::set<LLUUID> baked_ids;
-	collectLocalTextureUUIDs(baked_ids);
+	collectBakedTextureUUIDs(baked_ids);
 	return allTexturesCompletelyDownloaded(baked_ids);
 }
 
-- 
GitLab


From 878e31dce2483cea0a1a38f076d4558c04ec9642 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Wed, 23 Jan 2013 16:04:08 -0500
Subject: [PATCH 240/436] SH-3534 WIP - better encapsulation of mUseServerBakes

---
 indra/newview/llagent.cpp    | 12 +++++-------
 indra/newview/llvoavatar.cpp |  7 ++++++-
 indra/newview/llvoavatar.h   |  2 +-
 3 files changed, 12 insertions(+), 9 deletions(-)

diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index e15b4d071ff..5796c34e257 100755
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -4286,12 +4286,6 @@ void LLAgent::requestLeaveGodMode()
 //-----------------------------------------------------------------------------
 void LLAgent::sendAgentSetAppearance()
 {
-	// FIXME DRANO - problems around new-style appearance in an old-style region.
-	// - does this get called?
-	// - need to change mUseServerBakes->FALSE in that case
-	// - need to call processAvatarAppearance as if server had returned this result?
-	// gAgentAvatarp->mUseServerBakes = FALSE;
-
 	if (gAgentQueryManager.mNumPendingQueries > 0) 
 	{
 		return;
@@ -4308,6 +4302,10 @@ void LLAgent::sendAgentSetAppearance()
 
 	if (!isAgentAvatarValid() || (getRegion() && getRegion()->getCentralBakeVersion())) return;
 
+	// At this point we have a complete appearance to send and are in a non-baking region.
+	// DRANO FIXME
+	//gAgentAvatarp->setIsUsingServerBakes(FALSE);
+
 	LL_INFOS("Avatar") << gAgentAvatarp->avString() << "TAT: Sent AgentSetAppearance: " << gAgentAvatarp->getBakedStatusForPrintout() << LL_ENDL;
 	//dumpAvatarTEs( "sendAgentSetAppearance()" );
 
@@ -4408,7 +4406,7 @@ void LLAgent::sendAgentSetAppearance()
 		}
 	}
 
-//	llinfos << "Avatar XML num VisualParams transmitted = " << transmitted_params << llendl;
+	//llinfos << "Avatar XML num VisualParams transmitted = " << transmitted_params << llendl;
 	sendReliableMessage();
 }
 
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 6aad3c89187..3d58c50ebae 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -6651,7 +6651,7 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 		return;
 	}
 
-	mUseServerBakes = (appearance_version > 0);
+	setIsUsingServerBakes(appearance_version > 0);
 
 	applyParsedTEMessage(tec);
 
@@ -7276,6 +7276,11 @@ void LLVOAvatar::bodySizeChanged()
 	}
 }
 
+BOOL LLVOAvatar::isUsingServerBakes() const
+{
+	return mUseServerBakes;
+}
+
 void LLVOAvatar::setIsUsingServerBakes(BOOL newval)
 {
 	mUseServerBakes = newval;
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
index 2c64b9695e3..c5064e4a524 100755
--- a/indra/newview/llvoavatar.h
+++ b/indra/newview/llvoavatar.h
@@ -653,7 +653,7 @@ class LLVOAvatar :
 
 	// True if this avatar should fetch its baked textures via the new
 	// appearance mechanism.
-	/*virtual*/ BOOL	isUsingServerBakes() const { return mUseServerBakes; }
+	BOOL				isUsingServerBakes() const;
 	void 				setIsUsingServerBakes(BOOL newval);
 
 
-- 
GitLab


From e503acf7b8f6721a4801e2c887b50ce67c0d307d Mon Sep 17 00:00:00 2001
From: callum_linden <none@none>
Date: Wed, 23 Jan 2013 13:28:54 -0800
Subject: [PATCH 241/436] Fix llaudio CMake file to not use FMOD - only FMODEX

---
 indra/llaudio/CMakeLists.txt | 9 ++-------
 1 file changed, 2 insertions(+), 7 deletions(-)

diff --git a/indra/llaudio/CMakeLists.txt b/indra/llaudio/CMakeLists.txt
index e404cfc10e2..b2d7b7c9112 100644
--- a/indra/llaudio/CMakeLists.txt
+++ b/indra/llaudio/CMakeLists.txt
@@ -5,13 +5,8 @@ project(llaudio)
 include(00-Common)
 include(Audio)
 include(LLAudio)
-if (FMODEX)
-  include(FMODEX)
-  set(FMOD OFF)
-endif (FMODEX)
-if (NOT FMODEX)
-  include(FMOD)
-endif (NOT FMODEX)
+include(FMODEX)
+set(FMOD OFF)
 include(OPENAL)
 include(LLCommon)
 include(LLMath)
-- 
GitLab


From 9f5e1d601c86e7036d3ecbae063ea637f0cdc7ca Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Wed, 23 Jan 2013 18:31:21 -0500
Subject: [PATCH 242/436] SH-3779 WIP - fully parse appearance message before
 trying to do anything with it

---
 indra/newview/llvoavatar.cpp | 130 +++++++++++++++++++++++++----------
 indra/newview/llvoavatar.h   |   2 +
 2 files changed, 96 insertions(+), 36 deletions(-)

diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 3d58c50ebae..cb9b1aa5cc5 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -6574,6 +6574,91 @@ void LLVOAvatar::dumpAppearanceMsgParams( const std::string& dump_prefix,
 	}
 }
 
+struct LLAppearanceMessageContents
+{
+	LLAppearanceMessageContents():
+		mAppearanceVersion(0),
+		mCOFVersion(LLViewerInventoryCategory::VERSION_UNKNOWN)
+	{
+	}
+	
+	LLTEContents mTEContents;
+	U8 mAppearanceVersion;
+	S32 mCOFVersion;
+	// For future use:
+	//U32 appearance_flags = 0;
+	std::vector<F32> mParams;
+};
+
+void LLVOAvatar::parseAppearanceMessage(LLMessageSystem* mesgsys, LLAppearanceMessageContents& contents)
+{
+	parseTEMessage(mesgsys, _PREHASH_ObjectData, -1, contents.mTEContents);
+
+	// Parse the AppearanceData field, if any.
+	if (mesgsys->has(_PREHASH_AppearanceData))
+	{
+		mesgsys->getU8Fast(_PREHASH_AppearanceData, _PREHASH_AppearanceVersion, contents.mAppearanceVersion, 0);
+		mesgsys->getS32Fast(_PREHASH_AppearanceData, _PREHASH_CofVersion, contents.mCOFVersion, 0);
+		// For future use:
+		//mesgsys->getU32Fast(_PREHASH_AppearanceData, _PREHASH_Flags, appearance_flags, 0);
+	}
+
+	// Parse visual params, if any.
+	S32 num_blocks = mesgsys->getNumberOfBlocksFast(_PREHASH_VisualParam);
+	bool drop_visual_params_debug = gSavedSettings.getBOOL("BlockSomeAvatarAppearanceVisualParams") && (ll_rand(2) == 0); // pretend that ~12% of AvatarAppearance messages arrived without a VisualParam block, for testing
+	if( num_blocks > 1 && !drop_visual_params_debug)
+	{
+		LL_DEBUGS("Avatar") << avString() << " handle visual params, num_blocks " << num_blocks << LL_ENDL;
+		
+		LLVisualParam* param = getFirstVisualParam();
+		llassert(param); // if this ever fires, we should do the same as when num_blocks<=1
+		if (!param)
+		{
+			llwarns << "No visual params!" << llendl;
+		}
+		else
+		{
+			for( S32 i = 0; i < num_blocks; i++ )
+			{
+				while( param && (param->getGroup() != VISUAL_PARAM_GROUP_TWEAKABLE) ) // should not be any of group VISUAL_PARAM_GROUP_TWEAKABLE_NO_TRANSMIT
+				{
+					param = getNextVisualParam();
+				}
+						
+				if( !param )
+				{
+					// more visual params supplied than expected - just process what we know about
+					break;
+				}
+
+				U8 value;
+				mesgsys->getU8Fast(_PREHASH_VisualParam, _PREHASH_ParamValue, value, i);
+				F32 newWeight = U8_to_F32(value, param->getMinWeight(), param->getMaxWeight());
+				contents.mParams.push_back(newWeight);
+
+				param = getNextVisualParam();
+			}
+		}
+
+		const S32 expected_tweakable_count = getVisualParamCountInGroup(VISUAL_PARAM_GROUP_TWEAKABLE); // don't worry about VISUAL_PARAM_GROUP_TWEAKABLE_NO_TRANSMIT
+		if (num_blocks != expected_tweakable_count)
+		{
+			llinfos << "Number of params in AvatarAppearance msg (" << num_blocks << ") does not match number of tweakable params in avatar xml file (" << expected_tweakable_count << ").  Processing what we can.  object: " << getID() << llendl;
+		}
+	}
+	else
+	{
+		if (drop_visual_params_debug)
+		{
+			llinfos << "Debug-faked lack of parameters on AvatarAppearance for object: "  << getID() << llendl;
+		}
+		else
+		{
+			llinfos << "AvatarAppearance msg received without any parameters, object: " << getID() << llendl;
+		}
+	}
+}
+
 //-----------------------------------------------------------------------------
 // processAvatarAppearance()
 //-----------------------------------------------------------------------------
@@ -6598,22 +6683,12 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 
 	ESex old_sex = getSex();
 
-	LLTEContents tec;
-	parseTEMessage(mesgsys, _PREHASH_ObjectData, -1, tec);
+	LLAppearanceMessageContents contents;
+	parseAppearanceMessage(mesgsys, contents);
 
-	U8 appearance_version = 0;
-	S32 this_update_cof_version = LLViewerInventoryCategory::VERSION_UNKNOWN;
+	U8 appearance_version = contents.mAppearanceVersion;
+	S32 this_update_cof_version = contents.mCOFVersion;
 	S32 last_update_request_cof_version = LLAppearanceMgr::instance().mLastUpdateRequestCOFVersion;
-	// For future use:
-	//U32 appearance_flags = 0;
-
-	if (mesgsys->has(_PREHASH_AppearanceData))
-	{
-		mesgsys->getU8Fast(_PREHASH_AppearanceData, _PREHASH_AppearanceVersion, appearance_version, 0);
-		mesgsys->getS32Fast(_PREHASH_AppearanceData, _PREHASH_CofVersion, this_update_cof_version, 0);
-		// For future use:
-		//mesgsys->getU32Fast(_PREHASH_AppearanceData, _PREHASH_Flags, appearance_flags, 0);
-	}
 
 	// Only now that we have result of appearance_version can we decide whether to bail out.
 	if( isSelf() )
@@ -6634,7 +6709,6 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 		}
 	}
 
-
 	// Check for stale update.
 	if (isSelf()
 		&& (appearance_version>0)
@@ -6653,7 +6727,7 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 
 	setIsUsingServerBakes(appearance_version > 0);
 
-	applyParsedTEMessage(tec);
+	applyParsedTEMessage(contents.mTEContents);
 
 	// prevent the overwriting of valid baked textures with invalid baked textures
 	for (U8 baked_index = 0; baked_index < mBakedTextureDatas.size(); baked_index++)
@@ -6667,7 +6741,6 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 		}
 	}
 
-
 	// runway - was
 	// if (!is_first_appearance_message )
 	// which means it would be called on second appearance message - probably wrong.
@@ -6680,9 +6753,8 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 	gPipeline.markGLRebuild(this);
 
 	// parse visual params
-	S32 num_blocks = mesgsys->getNumberOfBlocksFast(_PREHASH_VisualParam);
-	bool drop_visual_params_debug = gSavedSettings.getBOOL("BlockSomeAvatarAppearanceVisualParams") && (ll_rand(2) == 0); // pretend that ~12% of AvatarAppearance messages arrived without a VisualParam block, for testing
-	if( num_blocks > 1 && !drop_visual_params_debug)
+	S32 num_blocks = contents.mParams.size();
+	if( num_blocks > 1)
 	{
 		LL_DEBUGS("Avatar") << avString() << " handle visual params, num_blocks " << num_blocks << LL_ENDL;
 		BOOL params_changed = FALSE;
@@ -6696,7 +6768,6 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 		}
 		else
 		{
-			std::vector<F32> params_for_dump;
 			for( S32 i = 0; i < num_blocks; i++ )
 			{
 				while( param && (param->getGroup() != VISUAL_PARAM_GROUP_TWEAKABLE) ) // should not be any of group VISUAL_PARAM_GROUP_TWEAKABLE_NO_TRANSMIT
@@ -6710,14 +6781,10 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 					break;
 				}
 
-				U8 value;
-				mesgsys->getU8Fast(_PREHASH_VisualParam, _PREHASH_ParamValue, value, i);
-				F32 newWeight = U8_to_F32(value, param->getMinWeight(), param->getMaxWeight());
-				params_for_dump.push_back(newWeight);
+				F32 newWeight = contents.mParams[i];
 
 				if (is_first_appearance_message || (param->getWeight() != newWeight))
 				{
-					//llinfos << "Received update for param " << param->getDisplayName() << " at value " << newWeight << llendl;
 					params_changed = TRUE;
 					if(is_first_appearance_message)
 					{
@@ -6732,7 +6799,7 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 				param = getNextVisualParam();
 			}
 			if (enable_verbose_dumps)
-				dumpAppearanceMsgParams(dump_prefix + "appearance_msg", params_for_dump, tec);
+				dumpAppearanceMsgParams(dump_prefix + "appearance_msg", contents.mParams, contents.mTEContents);
 		}
 
 		if (enable_verbose_dumps) { dumpArchetypeXML(dump_prefix + "process_post_set_weights"); }
@@ -6764,14 +6831,6 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 	{
 		// AvatarAppearance message arrived without visual params
 		LL_DEBUGS("Avatar") << avString() << "no visual params" << LL_ENDL;
-		if (drop_visual_params_debug)
-		{
-			llinfos << "Debug-faked lack of parameters on AvatarAppearance for object: "  << getID() << llendl;
-		}
-		else
-		{
-			llinfos << "AvatarAppearance msg received without any parameters, object: " << getID() << llendl;
-		}
 
 		const F32 LOADING_TIMEOUT_SECONDS = 60.f;
 		// this isn't really a problem if we already have a non-default shape
@@ -6802,7 +6861,6 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 	updateMeshTextures();
 
 	if (enable_verbose_dumps) dumpArchetypeXML(dump_prefix + "process_end");
-//	llinfos << "processAvatarAppearance end " << mID << llendl;
 }
 
 // static
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
index c5064e4a524..784b08a7828 100755
--- a/indra/newview/llvoavatar.h
+++ b/indra/newview/llvoavatar.h
@@ -70,6 +70,7 @@ class LLHUDNameTag;
 class LLHUDEffectSpiral;
 class LLTexGlobalColor;
 class LLViewerJoint;
+struct LLAppearanceMessageContents;
 
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 // LLVOAvatar
@@ -635,6 +636,7 @@ class LLVOAvatar :
  **/
 
 public:
+	void 			parseAppearanceMessage(LLMessageSystem* mesgsys, LLAppearanceMessageContents& msg);
 	void 			processAvatarAppearance(LLMessageSystem* mesgsys);
 	void 			hideSkirt();
 	void			startAppearanceAnimation();
-- 
GitLab


From 9b86b8bf3d822bbeefb8518fb335e81a6dc7f3b3 Mon Sep 17 00:00:00 2001
From: callum_linden <none@none>
Date: Wed, 23 Jan 2013 15:57:38 -0800
Subject: [PATCH 243/436] Add in Windows FMOD Ex package

---
 autobuild.xml | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/autobuild.xml b/autobuild.xml
index b7550e34ca0..caccdf7abc1 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -553,6 +553,18 @@
             <key>name</key>
             <string>darwin</string>
           </map>
+          <key>windows</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>00f752f73774e0e72d737099860582af</string>
+              <key>url</key>
+              <string>http://private-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-fmodex-private/arch/CYGWIN/fmodex-4.44.04-windows-20130123.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>windows</string>
+          </map>
         </map>
       </map>
       <key>fontconfig</key>
-- 
GitLab


From 67c5d567932fd825dfcf8931af595c5df6dcdeb1 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Thu, 24 Jan 2013 17:28:15 -0500
Subject: [PATCH 244/436] SH-3779 WIP - handling of appearance version param

---
 indra/newview/llvoavatar.cpp | 107 +++++++++++++++++++++--------------
 1 file changed, 63 insertions(+), 44 deletions(-)

diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index cb9b1aa5cc5..a76a15671c6 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -1796,11 +1796,13 @@ S32 LLVOAvatar::setTETexture(const U8 te, const LLUUID& uuid)
 			return setTETextureCore(te, uuid, url);
 		}
 
+		llinfos << "get texture from host " << uuid << llendl;
 		LLHost target_host = getObjectHost();
 		return setTETextureCore(te, uuid, target_host);
 	}
 	else
 	{
+		llinfos << "get texture from other " << uuid << llendl;
 		return setTETextureCore(te, uuid, LLHost::invalid);
 	}
 }
@@ -6577,17 +6579,18 @@ void LLVOAvatar::dumpAppearanceMsgParams( const std::string& dump_prefix,
 struct LLAppearanceMessageContents
 {
 	LLAppearanceMessageContents():
-		mAppearanceVersion(0),
+		mAppearanceVersion(-1),
 		mCOFVersion(LLViewerInventoryCategory::VERSION_UNKNOWN)
 	{
 	}
 	
 	LLTEContents mTEContents;
-	U8 mAppearanceVersion;
+	S32 mAppearanceVersion;
 	S32 mCOFVersion;
 	// For future use:
 	//U32 appearance_flags = 0;
-	std::vector<F32> mParams;
+	std::vector<F32> mParamWeights;
+	std::vector<LLVisualParam*> mParams;
 };
 
 void LLVOAvatar::parseAppearanceMessage(LLMessageSystem* mesgsys, LLAppearanceMessageContents& contents)
@@ -6597,7 +6600,10 @@ void LLVOAvatar::parseAppearanceMessage(LLMessageSystem* mesgsys, LLAppearanceMe
 	// Parse the AppearanceData field, if any.
 	if (mesgsys->has(_PREHASH_AppearanceData))
 	{
-		mesgsys->getU8Fast(_PREHASH_AppearanceData, _PREHASH_AppearanceVersion, contents.mAppearanceVersion, 0);
+		U8 av_u8;
+		mesgsys->getU8Fast(_PREHASH_AppearanceData, _PREHASH_AppearanceVersion, av_u8, 0);
+		contents.mAppearanceVersion = av_u8;
+		llinfos << "appversion set by AppearanceData field: " << contents.mAppearanceVersion << llendl;
 		mesgsys->getS32Fast(_PREHASH_AppearanceData, _PREHASH_CofVersion, contents.mCOFVersion, 0);
 		// For future use:
 		//mesgsys->getU32Fast(_PREHASH_AppearanceData, _PREHASH_Flags, appearance_flags, 0);
@@ -6634,7 +6640,8 @@ void LLVOAvatar::parseAppearanceMessage(LLMessageSystem* mesgsys, LLAppearanceMe
 				U8 value;
 				mesgsys->getU8Fast(_PREHASH_VisualParam, _PREHASH_ParamValue, value, i);
 				F32 newWeight = U8_to_F32(value, param->getMinWeight(), param->getMaxWeight());
-				contents.mParams.push_back(newWeight);
+				contents.mParamWeights.push_back(newWeight);
+				contents.mParams.push_back(param);
 
 				param = getNextVisualParam();
 			}
@@ -6657,6 +6664,28 @@ void LLVOAvatar::parseAppearanceMessage(LLMessageSystem* mesgsys, LLAppearanceMe
 			llinfos << "AvatarAppearance msg received without any parameters, object: " << getID() << llendl;
 		}
 	}
+
+	if (contents.mAppearanceVersion < 0) // not set explicitly, try to get from visual param.
+	{
+		LLVisualParam* appearance_version_param = getVisualParam(11000);
+		if (appearance_version_param)
+		{
+			std::vector<LLVisualParam*>::iterator it = std::find(contents.mParams.begin(), contents.mParams.end(),appearance_version_param);
+			if (it != contents.mParams.end())
+			{
+				S32 index = it - contents.mParams.begin();
+				llinfos << "index: " << index << llendl;
+				S32 appearance_version = llround(contents.mParamWeights[index]);
+				contents.mAppearanceVersion = appearance_version;
+				llinfos << "appversion set by appearance_version param: " << contents.mAppearanceVersion << llendl;
+			}
+		}
+	}
+	if (contents.mAppearanceVersion < 0) // still not set, go with 0.
+	{
+		contents.mAppearanceVersion = 0;
+		llinfos << "appversion set by default: " << contents.mAppearanceVersion << llendl;
+	}
 }
 
 //-----------------------------------------------------------------------------
@@ -6725,6 +6754,17 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 		return;
 	}
 
+	S32 num_params = contents.mParamWeights.size();
+	if (num_params <= 1)
+	{
+		// In this case, we have no reliable basis for knowing
+		// appearance version, which may cause us to look for baked
+		// textures in the wrong place and flag them as missing
+		// assets.
+		llinfos << "ignoring appearance message due to lack of params" << llendl;
+		return;
+	}
+
 	setIsUsingServerBakes(appearance_version > 0);
 
 	applyParsedTEMessage(contents.mTEContents);
@@ -6752,62 +6792,41 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 	setCompositeUpdatesEnabled( FALSE );
 	gPipeline.markGLRebuild(this);
 
-	// parse visual params
-	S32 num_blocks = contents.mParams.size();
-	if( num_blocks > 1)
+	// Apply visual params
+	if( num_params > 1)
 	{
-		LL_DEBUGS("Avatar") << avString() << " handle visual params, num_blocks " << num_blocks << LL_ENDL;
+		LL_DEBUGS("Avatar") << avString() << " handle visual params, num_params " << num_params << LL_ENDL;
 		BOOL params_changed = FALSE;
 		BOOL interp_params = FALSE;
 		
-		LLVisualParam* param = getFirstVisualParam();
-		llassert(param); // if this ever fires, we should do the same as when num_blocks<=1
-		if (!param)
-		{
-			llwarns << "No visual params!" << llendl;
-		}
-		else
+		for( S32 i = 0; i < num_params; i++ )
 		{
-			for( S32 i = 0; i < num_blocks; i++ )
+			LLVisualParam* param = contents.mParams[i];
+			F32 newWeight = contents.mParamWeights[i];
+
+			if (is_first_appearance_message || (param->getWeight() != newWeight))
 			{
-				while( param && (param->getGroup() != VISUAL_PARAM_GROUP_TWEAKABLE) ) // should not be any of group VISUAL_PARAM_GROUP_TWEAKABLE_NO_TRANSMIT
+				params_changed = TRUE;
+				if(is_first_appearance_message)
 				{
-					param = getNextVisualParam();
+					param->setWeight(newWeight, FALSE);
 				}
-						
-				if( !param )
-				{
-					// more visual params supplied than expected - just process what we know about
-					break;
-				}
-
-				F32 newWeight = contents.mParams[i];
-
-				if (is_first_appearance_message || (param->getWeight() != newWeight))
+				else
 				{
-					params_changed = TRUE;
-					if(is_first_appearance_message)
-					{
-						param->setWeight(newWeight, FALSE);
-					}
-					else
-					{
-						interp_params = TRUE;
-						param->setAnimationTarget(newWeight, FALSE);
-					}
+					interp_params = TRUE;
+					param->setAnimationTarget(newWeight, FALSE);
 				}
-				param = getNextVisualParam();
 			}
-			if (enable_verbose_dumps)
-				dumpAppearanceMsgParams(dump_prefix + "appearance_msg", contents.mParams, contents.mTEContents);
 		}
+		if (enable_verbose_dumps)
+			dumpAppearanceMsgParams(dump_prefix + "appearance_msg", contents.mParamWeights, contents.mTEContents);
 
 		if (enable_verbose_dumps) { dumpArchetypeXML(dump_prefix + "process_post_set_weights"); }
 
 		const S32 expected_tweakable_count = getVisualParamCountInGroup(VISUAL_PARAM_GROUP_TWEAKABLE); // don't worry about VISUAL_PARAM_GROUP_TWEAKABLE_NO_TRANSMIT
-		if (num_blocks != expected_tweakable_count)
+		if (num_params != expected_tweakable_count)
 		{
-			llinfos << "Number of params in AvatarAppearance msg (" << num_blocks << ") does not match number of tweakable params in avatar xml file (" << expected_tweakable_count << ").  Processing what we can.  object: " << getID() << llendl;
+			llinfos << "Number of params in AvatarAppearance msg (" << num_params << ") does not match number of tweakable params in avatar xml file (" << expected_tweakable_count << ").  Processing what we can.  object: " << getID() << llendl;
 		}
 
 		if (params_changed)
-- 
GitLab


From d2c3ee9624eed458320600860b9f84cca8b80607 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Fri, 25 Jan 2013 09:31:20 -0500
Subject: [PATCH 245/436] SH-3779 WIP - less verbose appearance dumps, keep
 appearance version visual param in sync with mUseServerBakes

---
 indra/newview/llvoavatar.cpp | 20 +++++++++++++++++---
 1 file changed, 17 insertions(+), 3 deletions(-)

diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index a76a15671c6..dbc80c02177 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -6695,7 +6695,7 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 {
 	bool enable_verbose_dumps = gSavedSettings.getBOOL("DebugAvatarAppearanceMessage");
 	std::string dump_prefix = getFullname() + "_" + (isSelf()?"s":"o") + "_";
-	if (enable_verbose_dumps) { dumpArchetypeXML(dump_prefix + "process_start"); }
+	//if (enable_verbose_dumps) { dumpArchetypeXML(dump_prefix + "process_start"); }
 	if (gSavedSettings.getBOOL("BlockAvatarAppearanceMessages"))
 	{
 		llwarns << "Blocking AvatarAppearance message" << llendl;
@@ -6819,9 +6819,11 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 			}
 		}
 		if (enable_verbose_dumps)
+		{
 			dumpAppearanceMsgParams(dump_prefix + "appearance_msg", contents.mParamWeights, contents.mTEContents);
+		}
 
-		if (enable_verbose_dumps) { dumpArchetypeXML(dump_prefix + "process_post_set_weights"); }
+		//if (enable_verbose_dumps) { dumpArchetypeXML(dump_prefix + "process_post_set_weights"); }
 
 		const S32 expected_tweakable_count = getVisualParamCountInGroup(VISUAL_PARAM_GROUP_TWEAKABLE); // don't worry about VISUAL_PARAM_GROUP_TWEAKABLE_NO_TRANSMIT
 		if (num_params != expected_tweakable_count)
@@ -6879,7 +6881,7 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 
 	updateMeshTextures();
 
-	if (enable_verbose_dumps) dumpArchetypeXML(dump_prefix + "process_end");
+	//if (enable_verbose_dumps) dumpArchetypeXML(dump_prefix + "process_end");
 }
 
 // static
@@ -7355,12 +7357,24 @@ void LLVOAvatar::bodySizeChanged()
 
 BOOL LLVOAvatar::isUsingServerBakes() const
 {
+#if 1
+	// Sanity check - visual param for appearance version should match mUseServerBakes
+	LLVisualParam* appearance_version_param = getVisualParam(11000);
+	llassert(appearance_version_param);
+	F32 wt = appearance_version_param->getWeight();
+	F32 expect_wt = mUseServerBakes ? 1.0 : 0.0;
+	llassert(is_approx_equal(wt,expect_wt));
+#endif
+
 	return mUseServerBakes;
 }
 
 void LLVOAvatar::setIsUsingServerBakes(BOOL newval)
 {
 	mUseServerBakes = newval;
+	LLVisualParam* appearance_version_param = getVisualParam(11000);
+	llassert(appearance_version_param);
+	appearance_version_param->setWeight(newval ? 1.0 : 0.0, false);
 }
 
 // virtual
-- 
GitLab


From 438ceeb008b7c4eec0fc48894935289ca352fc65 Mon Sep 17 00:00:00 2001
From: Nyx Linden <nyx@lindenlab.com>
Date: Fri, 25 Jan 2013 17:58:11 -0500
Subject: [PATCH 246/436] BUILDFIX: merge cleanup A couple of merge issues that
 caused the resulting code to not build.

---
 indra/llappearance/llavatarappearance.cpp     | 10 ----------
 indra/llappearance/llpolyskeletaldistortion.h |  2 +-
 indra/llcommon/llfasttimer.cpp                |  6 ++++++
 indra/llcommon/llfasttimer.h                  |  2 ++
 indra/newview/llworldmapview.cpp              |  2 +-
 5 files changed, 10 insertions(+), 12 deletions(-)

diff --git a/indra/llappearance/llavatarappearance.cpp b/indra/llappearance/llavatarappearance.cpp
index c4ff667fa19..89e64822f8a 100755
--- a/indra/llappearance/llavatarappearance.cpp
+++ b/indra/llappearance/llavatarappearance.cpp
@@ -169,8 +169,6 @@ LLAvatarAppearance::LLAvatarAppearance(LLWearableData* wearable_data) :
 	mRoot(NULL),
 	mWearableData(wearable_data)
 {
-	LLMemType mt(LLMemType::MTYPE_AVATAR);
-
 	llassert_always(mWearableData);
 	mBakedTextureDatas.resize(LLAvatarAppearanceDefines::BAKED_NUM_INDICES);
 	for (U32 i = 0; i < mBakedTextureDatas.size(); i++ )
@@ -495,8 +493,6 @@ void LLAvatarAppearance::computeBodySize()
 //-----------------------------------------------------------------------------
 BOOL LLAvatarAppearance::parseSkeletonFile(const std::string& filename)
 {
-	LLMemType mt(LLMemType::MTYPE_AVATAR);
-	
 	//-------------------------------------------------------------------------
 	// parse the file
 	//-------------------------------------------------------------------------
@@ -538,8 +534,6 @@ BOOL LLAvatarAppearance::parseSkeletonFile(const std::string& filename)
 //-----------------------------------------------------------------------------
 BOOL LLAvatarAppearance::setupBone(const LLAvatarBoneInfo* info, LLJoint* parent, S32 &volume_num, S32 &joint_num)
 {
-	LLMemType mt(LLMemType::MTYPE_AVATAR);
-	
 	LLJoint* joint = NULL;
 
 	if (info->mIsJoint)
@@ -621,8 +615,6 @@ BOOL LLAvatarAppearance::allocateCharacterJoints( U32 num )
 //-----------------------------------------------------------------------------
 BOOL LLAvatarAppearance::buildSkeleton(const LLAvatarSkeletonInfo *info)
 {
-	LLMemType mt(LLMemType::MTYPE_AVATAR);
-	
 	//-------------------------------------------------------------------------
 	// allocate joints
 	//-------------------------------------------------------------------------
@@ -675,8 +667,6 @@ void LLAvatarAppearance::clearSkeleton()
 //-----------------------------------------------------------------------------
 void LLAvatarAppearance::buildCharacter()
 {
-	LLMemType mt(LLMemType::MTYPE_AVATAR);
-	
 	//-------------------------------------------------------------------------
 	// remove all references to our existing skeleton
 	// so we can rebuild it
diff --git a/indra/llappearance/llpolyskeletaldistortion.h b/indra/llappearance/llpolyskeletaldistortion.h
index 170f8e87716..774bc7dfa2a 100644
--- a/indra/llappearance/llpolyskeletaldistortion.h
+++ b/indra/llappearance/llpolyskeletaldistortion.h
@@ -119,7 +119,7 @@ class LLPolySkeletalDistortion : public LLViewerVisualParam
 	/*virtual*/ const LLVector4a*	getNextDistortion(U32 *index, LLPolyMesh **poly_mesh){index = 0; poly_mesh = NULL; return NULL;};
 
 protected:
-	LL_ALIGN_16(LLVector4a>-mDefaultVec);
+	LL_ALIGN_16(LLVector4a mDefaultVec);
 	typedef std::map<LLJoint*, LLVector3> joint_vec_map_t;
 	joint_vec_map_t mJointScales;
 	joint_vec_map_t mJointOffsets;
diff --git a/indra/llcommon/llfasttimer.cpp b/indra/llcommon/llfasttimer.cpp
index 6970c290924..9b15804e97b 100644
--- a/indra/llcommon/llfasttimer.cpp
+++ b/indra/llcommon/llfasttimer.cpp
@@ -561,6 +561,12 @@ std::vector<LLFastTimer::NamedTimer*>& LLFastTimer::NamedTimer::getChildren()
 	return mChildren;
 }
 
+// static
+LLFastTimer::NamedTimer& LLFastTimer::NamedTimer::getRootNamedTimer()
+{
+        return *NamedTimerFactory::instance().getRootTimer();
+}
+
 //static
 void LLFastTimer::nextFrame()
 {
diff --git a/indra/llcommon/llfasttimer.h b/indra/llcommon/llfasttimer.h
index e42e549df58..81c4b787755 100644
--- a/indra/llcommon/llfasttimer.h
+++ b/indra/llcommon/llfasttimer.h
@@ -91,6 +91,8 @@ class LL_COMMON_API LLFastTimer
 		U32 getHistoricalCount(S32 history_index = 0) const;
 		U32 getHistoricalCalls(S32 history_index = 0) const;
 
+		static NamedTimer& getRootNamedTimer();
+
 		void setFrameState(FrameState* state) { mFrameState = state; state->setNamedTimer(this); }
 		FrameState& getFrameState() const;
 
diff --git a/indra/newview/llworldmapview.cpp b/indra/newview/llworldmapview.cpp
index e96906b4bb8..1940cf541ec 100644
--- a/indra/newview/llworldmapview.cpp
+++ b/indra/newview/llworldmapview.cpp
@@ -1317,7 +1317,7 @@ void LLWorldMapView::drawTrackingCircle( const LLRect& rect, S32 x, S32 y, const
 
 	gGL.matrixMode(LLRender::MM_MODELVIEW);
 	gGL.pushMatrix();
-	gGL.translatef((F32)x * LLUI::sGLScaleFactor.mV[VX], (F32)y * LLUI::sGLScaleFactor.mV[VY], 0.f);
+	gGL.translatef((F32)x * LLUI::getScaleFactor().mV[VX], (F32)y * LLUI::getScaleFactor().mV[VY], 0.f);
 	gl_washer_segment_2d(inner_radius, outer_radius, start_theta, end_theta, 40, color, color);
 	gGL.popMatrix();
 
-- 
GitLab


From cbf7de453869749abd9fead08897d1e154bb0f5e Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Mon, 28 Jan 2013 13:47:00 -0500
Subject: [PATCH 247/436] SH-3779 WIP, SH-3534 WIP - more bake-status tracking

---
 indra/newview/llagent.cpp         | 20 ++++++++++
 indra/newview/llappearancemgr.cpp |  2 +-
 indra/newview/llvoavatar.cpp      | 61 ++++++++++++++++++++++++++++++-
 indra/newview/llvoavatar.h        |  3 ++
 4 files changed, 84 insertions(+), 2 deletions(-)

diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index 5796c34e257..1760d4769aa 100755
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -4305,6 +4305,26 @@ void LLAgent::sendAgentSetAppearance()
 	// At this point we have a complete appearance to send and are in a non-baking region.
 	// DRANO FIXME
 	//gAgentAvatarp->setIsUsingServerBakes(FALSE);
+	S32 sb_count, host_count, both_count, neither_count;
+	gAgentAvatarp->bakedTextureOriginCounts(sb_count, host_count, both_count, neither_count);
+	if (both_count != 0 || neither_count != 0)
+	{
+		llwarns << "bad bake texture state " << sb_count << "," << host_count << "," << both_count << "," << neither_count << llendl;
+	}
+	if (sb_count != 0 && host_count == 0)
+	{
+		gAgentAvatarp->setIsUsingServerBakes(true);
+	}
+	else if (sb_count == 0 && host_count != 0)
+	{
+		gAgentAvatarp->setIsUsingServerBakes(false);
+	}
+	else if (sb_count + host_count > 0)
+	{
+		llwarns << "unclear baked texture state, not sending appearance" << llendl;
+		return;
+	}
+	
 
 	LL_INFOS("Avatar") << gAgentAvatarp->avString() << "TAT: Sent AgentSetAppearance: " << gAgentAvatarp->getBakedStatusForPrintout() << LL_ENDL;
 	//dumpAvatarTEs( "sendAgentSetAppearance()" );
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index e7fa56466d0..f1ba4ad4532 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -2032,7 +2032,7 @@ void LLAppearanceMgr::updateAppearanceFromCOF(bool update_base_outfit_ordering)
 	}
 	// DRANO really should wait for the appearance message to set this.
 	// verify that deleting this line doesn't break anything.
-	gAgentAvatarp->setIsUsingServerBakes(gAgent.getRegion() && gAgent.getRegion()->getCentralBakeVersion());
+	//gAgentAvatarp->setIsUsingServerBakes(gAgent.getRegion() && gAgent.getRegion()->getCentralBakeVersion());
 	
 	//dumpCat(getCOF(),"COF, start");
 
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index dbc80c02177..6efd1a27ebf 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -2897,6 +2897,8 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent)
 										  all_baked_downloaded ? "B" : "b",
 										  mUseLocalAppearance, mIsEditingAppearance,
 										  mUseServerBakes, central_bake_version);
+		std::string origin_string = bakedTextureOriginInfo();
+		debug_line += " [" + origin_string + "]";
 		if (isSelf())
 		{
 			S32 curr_cof_version = LLAppearanceMgr::instance().getCOFVersion();
@@ -4043,6 +4045,60 @@ bool LLVOAvatar::allBakedTexturesCompletelyDownloaded()
 	return allTexturesCompletelyDownloaded(baked_ids);
 }
 
+void LLVOAvatar::bakedTextureOriginCounts(S32 &sb_count, // server-bake, has origin URL.
+										  S32 &host_count, // host-based bake, has host.
+										  S32 &both_count, // error - both host and URL set.
+										  S32 &neither_count) // error - neither set.
+{
+	sb_count = host_count = both_count = neither_count = 0;
+	
+	std::set<LLUUID> baked_ids;
+	collectBakedTextureUUIDs(baked_ids);
+	for (std::set<LLUUID>::const_iterator it = baked_ids.begin(); it != baked_ids.end(); ++it)
+	{
+		LLViewerFetchedTexture *imagep = gTextureList.findImage(*it);
+		bool has_url = false, has_host = false;
+		if (!imagep->getUrl().empty())
+		{
+			has_url = true;
+		}
+		if (imagep->getTargetHost().isOk())
+		{
+			has_host = true;
+		}
+		if (has_url && !has_host) sb_count++;
+		else if (has_host && !has_url) host_count++;
+		else if (has_host && has_url) both_count++;
+		else if (!has_host && !has_url) neither_count++;
+	}
+}
+
+std::string LLVOAvatar::bakedTextureOriginInfo()
+{
+	std::string result;
+	
+	std::set<LLUUID> baked_ids;
+	collectBakedTextureUUIDs(baked_ids);
+	for (std::set<LLUUID>::const_iterator it = baked_ids.begin(); it != baked_ids.end(); ++it)
+	{
+		LLViewerFetchedTexture *imagep = gTextureList.findImage(*it);
+		bool has_url = false, has_host = false;
+		if (!imagep->getUrl().empty())
+		{
+			has_url = true;
+		}
+		if (imagep->getTargetHost().isOk())
+		{
+			has_host = true;
+		}
+		if (has_url && !has_host) result += "u"; // server-bake texture with url 
+		else if (has_host && !has_url) result += "h"; // old-style texture on sim
+		else if (has_host && has_url) result += "?"; // both origins?
+		else if (!has_host && !has_url) result += "n"; // no origin?
+	}
+	return result;
+}
+
 S32 LLVOAvatar::totalTextureMemForUUIDS(std::set<LLUUID>& ids)
 {
 	S32 result = 0;
@@ -7363,7 +7419,10 @@ BOOL LLVOAvatar::isUsingServerBakes() const
 	llassert(appearance_version_param);
 	F32 wt = appearance_version_param->getWeight();
 	F32 expect_wt = mUseServerBakes ? 1.0 : 0.0;
-	llassert(is_approx_equal(wt,expect_wt));
+	if (!is_approx_equal(wt,expect_wt))
+	{
+		llwarns << "wt " << wt << " differs from expected " << expect_wt << llendl;
+	}
 #endif
 
 	return mUseServerBakes;
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
index 784b08a7828..bdb477590f8 100755
--- a/indra/newview/llvoavatar.h
+++ b/indra/newview/llvoavatar.h
@@ -139,6 +139,9 @@ class LLVOAvatar :
 	bool 						allTexturesCompletelyDownloaded(std::set<LLUUID>& ids);
 	bool 						allLocalTexturesCompletelyDownloaded();
 	bool 						allBakedTexturesCompletelyDownloaded();
+	void 						bakedTextureOriginCounts(S32 &sb_count, S32 &host_count,
+														 S32 &both_count, S32 &neither_count);
+	std::string 				bakedTextureOriginInfo();
 	void 						collectLocalTextureUUIDs(std::set<LLUUID>& ids);
 	void 						collectBakedTextureUUIDs(std::set<LLUUID>& ids);
 	void 						collectTextureUUIDs(std::set<LLUUID>& ids);
-- 
GitLab


From 97acaac84dd09959642595c1676b2ad72d3e0202 Mon Sep 17 00:00:00 2001
From: "prep@lindenlab.com" <prep@lindenlab.com>
Date: Tue, 29 Jan 2013 14:53:00 -0600
Subject: [PATCH 248/436] SH3530: Removed extra ServerAppearanceUpdate()

---
 indra/newview/llsaveoutfitcombobtn.cpp | 10 ++--------
 1 file changed, 2 insertions(+), 8 deletions(-)

diff --git a/indra/newview/llsaveoutfitcombobtn.cpp b/indra/newview/llsaveoutfitcombobtn.cpp
index 59137f4ef77..32295cd96f2 100644
--- a/indra/newview/llsaveoutfitcombobtn.cpp
+++ b/indra/newview/llsaveoutfitcombobtn.cpp
@@ -31,8 +31,6 @@
 #include "llsidepanelappearance.h"
 #include "llsaveoutfitcombobtn.h"
 #include "llviewermenu.h"
-#include "llagent.h"
-#include "llviewerregion.h"
 
 static const std::string SAVE_BTN("save_btn");
 static const std::string SAVE_FLYOUT_BTN("save_flyout_btn");
@@ -78,12 +76,8 @@ void LLSaveOutfitComboBtn::saveOutfit(bool as_new)
 	if (panel_outfits_inventory)
 	{
 		panel_outfits_inventory->onSave();
-	} 
-	
-    if ( gAgent.getRegion() && gAgent.getRegion()->getCentralBakeVersion())
-	{
-		LLAppearanceMgr::instance().requestServerAppearanceUpdate();
-	}
+	} 	
+    
 	//*TODO how to get to know when base outfit is updated or new outfit is created?
 }
 
-- 
GitLab


From 2f638300cd7e2c3ae675125ade037205403b5c54 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Wed, 30 Jan 2013 10:14:16 -0500
Subject: [PATCH 249/436] SH-3780 WIP - more checking on appearance param
 values

---
 indra/newview/llvoavatar.cpp | 36 +++++++++++++++++++++++-------------
 1 file changed, 23 insertions(+), 13 deletions(-)

diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 90887b5861f..8f5d2a6aad9 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -6703,26 +6703,36 @@ void LLVOAvatar::parseAppearanceMessage(LLMessageSystem* mesgsys, LLAppearanceMe
 		}
 	}
 
-	if (contents.mAppearanceVersion < 0) // not set explicitly, try to get from visual param.
+	LLVisualParam* appearance_version_param = getVisualParam(11000);
+	S32 param_appearance_version = -1;
+	if (appearance_version_param)
 	{
-		LLVisualParam* appearance_version_param = getVisualParam(11000);
-		if (appearance_version_param)
+		std::vector<LLVisualParam*>::iterator it = std::find(contents.mParams.begin(), contents.mParams.end(),appearance_version_param);
+		if (it != contents.mParams.end())
 		{
-			std::vector<LLVisualParam*>::iterator it = std::find(contents.mParams.begin(), contents.mParams.end(),appearance_version_param);
-			if (it != contents.mParams.end())
-			{
-				S32 index = it - contents.mParams.begin();
-				llinfos << "index: " << index << llendl;
-				S32 appearance_version = llround(contents.mParamWeights[index]);
-				contents.mAppearanceVersion = appearance_version;
-				llinfos << "appversion set by appearance_version param: " << contents.mAppearanceVersion << llendl;
-			}
+			S32 index = it - contents.mParams.begin();
+			llinfos << "index: " << index << llendl;
+			param_appearance_version = llround(contents.mParamWeights[index]);
+			LL_DEBUGS("Avatar") << "appversion req by appearance_version param: " << contents.mAppearanceVersion << llendl;
 		}
 	}
+	if ((contents.mAppearanceVersion) >= 0 &&
+		(param_appearance_version >= 0) &&
+		(contents.mAppearanceVersion != param_appearance_version))
+	{
+		llwarns << "inconsistent appearance_version settings - field: " <<
+			contents.mAppearanceVersion << ", param: " <<  param_appearance_version << llendl;
+	}
+	if (contents.mAppearanceVersion < 0 &&
+		param_appearance_version >= 0) // not set explicitly, try to get from visual param.
+	{
+		contents.mAppearanceVersion = param_appearance_version;
+		LL_DEBUGS("Avatar") << "appversion set by appearance_version param: " << contents.mAppearanceVersion << llendl;
+	}
 	if (contents.mAppearanceVersion < 0) // still not set, go with 0.
 	{
 		contents.mAppearanceVersion = 0;
-		llinfos << "appversion set by default: " << contents.mAppearanceVersion << llendl;
+		LL_DEBUGS("Avatar") << "appversion set by default: " << contents.mAppearanceVersion << llendl;
 	}
 }
 
-- 
GitLab


From 3a7e3eacb86989c936cd6960cfa7434f3b8232fc Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Wed, 30 Jan 2013 13:56:05 -0500
Subject: [PATCH 250/436] SH-3800 WIP - flag mismatched expectations for baked
 texture origins

---
 indra/newview/llviewertexturelist.cpp | 34 +++++++++++++++++++++++++--
 indra/newview/llvoavatar.cpp          |  4 ++--
 2 files changed, 34 insertions(+), 4 deletions(-)

diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp
index a65a90b9ab6..4d79af5acc2 100755
--- a/indra/newview/llviewertexturelist.cpp
+++ b/indra/newview/llviewertexturelist.cpp
@@ -374,7 +374,21 @@ LLViewerFetchedTexture* LLViewerTextureList::getImageFromUrl(const std::string&
 	}
 
 	LLPointer<LLViewerFetchedTexture> imagep = findImage(new_id);
-	
+
+	if (!imagep.isNull())
+	{
+		LLViewerFetchedTexture *texture = imagep.get();
+		if (texture->getUrl().empty())
+		{
+			llwarns << "Requested texture " << new_id << " already exists but does not have a URL" << llendl;
+		}
+		else if (texture->getUrl() != url)
+		{
+			llwarns << "Requested texture " << new_id << " already exists with a different url, requested: " 
+					<< url << " current: " << texture->getUrl() << llendl;
+		}
+		
+	}
 	if (imagep.isNull())
 	{
 		switch(texture_type)
@@ -436,7 +450,23 @@ LLViewerFetchedTexture* LLViewerTextureList::getImage(const LLUUID &image_id,
 	}
 	
 	LLPointer<LLViewerFetchedTexture> imagep = findImage(image_id);
-	
+	if (!imagep.isNull())
+	{
+		LLViewerFetchedTexture *texture = imagep.get();
+		if (request_from_host.isOk() &&
+			!texture->getTargetHost().isOk())
+		{
+			llwarns << "Requested texture " << image_id << " already exists but does not have a host" << llendl;
+		}
+		else if (request_from_host.isOk() &&
+				 texture->getTargetHost().isOk() &&
+				 request_from_host != texture->getTargetHost())
+		{
+			llwarns << "Requested texture " << image_id << " already exists with a different target host, requested: " 
+					<< request_from_host << " current: " << texture->getTargetHost() << llendl;
+		}
+		
+	}
 	if (imagep.isNull())
 	{
 		imagep = createImage(image_id, usemipmaps, boost_priority, texture_type, internal_format, primary_format, request_from_host) ;
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 8f5d2a6aad9..c5128376326 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -1796,8 +1796,8 @@ S32 LLVOAvatar::setTETexture(const U8 te, const LLUUID& uuid)
 	}
 	else
 	{
-		llinfos << "get texture from other " << uuid << llendl;
-		return setTETextureCore(te, uuid, LLHost::invalid);
+		llinfos << "ignoring texture in non-baked slot " << uuid << " - will use null " << LLUUID::null << llendl;
+		return setTETextureCore(te, LLUUID::null, LLHost::invalid);
 	}
 }
 
-- 
GitLab


From 946d3bbcc6172a2267154670ba0bc4d0ff854efc Mon Sep 17 00:00:00 2001
From: Nyx Linden <nyx@lindenlab.com>
Date: Wed, 30 Jan 2013 17:35:36 -0500
Subject: [PATCH 251/436] SH-3651 FIX Beards not visible on server-generated
 appearances.

Fixed back end to enable beards.
---
 autobuild.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index 17d1426b222..67d1b4a27b6 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -1290,9 +1290,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>376738111ec9ba6f1b0d0dee0a3c784d</string>
+              <string>4d0fffe0780f3874cf95ef5a2f3c8489</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/269218/arch/Linux/installer/llappearanceutility_source-0.1-linux-20130118.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/269731/arch/Linux/installer/llappearanceutility_source-0.1-linux-20130130.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
-- 
GitLab


From c24c974cc6a7df3a1df7f7a24ad52275430b18dd Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Wed, 30 Jan 2013 18:23:31 -0500
Subject: [PATCH 252/436] SH-3800 WIP - logic to detect baked textures being
 sought in the wrong place, avoid querying textures for which we have no
 authoritative data where they live

---
 indra/newview/llviewerobject.cpp | 27 ++++-----------
 indra/newview/llviewerobject.h   |  3 +-
 indra/newview/llvoavatar.cpp     | 59 ++++++++++++++++++++------------
 indra/newview/llvoavatar.h       |  1 +
 indra/newview/llvoavatarself.cpp | 10 ++++++
 5 files changed, 55 insertions(+), 45 deletions(-)
 mode change 100644 => 100755 indra/newview/llviewerobject.cpp
 mode change 100644 => 100755 indra/newview/llviewerobject.h
 mode change 100644 => 100755 indra/newview/llvoavatarself.cpp

diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp
old mode 100644
new mode 100755
index 15560be9bab..c4b370a4b43
--- a/indra/newview/llviewerobject.cpp
+++ b/indra/newview/llviewerobject.cpp
@@ -4034,32 +4034,15 @@ void LLViewerObject::setTEImage(const U8 te, LLViewerTexture *imagep)
 	}
 }
 
-
-S32 LLViewerObject::setTETextureCore(const U8 te, const LLUUID& uuid, const std::string &url )
-{
-	S32 retval = 0;
-	if (uuid != getTE(te)->getID() ||
-		uuid == LLUUID::null)
-	{
-		retval = LLPrimitive::setTETexture(te, uuid);
-		mTEImages[te] = LLViewerTextureManager::getFetchedTextureFromUrl  (url, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE, 0, 0, uuid);
-		setChanged(TEXTURE);
-		if (mDrawable.notNull())
-		{
-			gPipeline.markTextured(mDrawable);
-		}
-	}
-	return retval;
-}
-
-S32 LLViewerObject::setTETextureCore(const U8 te, const LLUUID& uuid, LLHost host)
+S32 LLViewerObject::setTETextureCore(const U8 te, LLViewerTexture *image)
 {
+	const LLUUID& uuid = image->getID();
 	S32 retval = 0;
 	if (uuid != getTE(te)->getID() ||
 		uuid == LLUUID::null)
 	{
 		retval = LLPrimitive::setTETexture(te, uuid);
-		mTEImages[te] = LLViewerTextureManager::getFetchedTexture(uuid, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE, 0, 0, host);
+		mTEImages[te] = image;
 		setChanged(TEXTURE);
 		if (mDrawable.notNull())
 		{
@@ -4082,7 +4065,9 @@ void LLViewerObject::changeTEImage(S32 index, LLViewerTexture* new_image)
 S32 LLViewerObject::setTETexture(const U8 te, const LLUUID& uuid)
 {
 	// Invalid host == get from the agent's sim
-	return setTETextureCore(te, uuid, LLHost::invalid);
+	LLViewerFetchedTexture *image = LLViewerTextureManager::getFetchedTexture(
+		uuid, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE, 0, 0, LLHost::invalid);
+	return setTETextureCore(te,image);
 }
 
 
diff --git a/indra/newview/llviewerobject.h b/indra/newview/llviewerobject.h
old mode 100644
new mode 100755
index 889025962c8..728d279c39b
--- a/indra/newview/llviewerobject.h
+++ b/indra/newview/llviewerobject.h
@@ -301,8 +301,7 @@ class LLViewerObject : public LLPrimitive, public LLRefCount, public LLGLUpdate
 	/*virtual*/	void	setNumTEs(const U8 num_tes);
 	/*virtual*/	void	setTE(const U8 te, const LLTextureEntry &texture_entry);
 	/*virtual*/ S32		setTETexture(const U8 te, const LLUUID &uuid);
-	S32 setTETextureCore(const U8 te, const LLUUID& uuid, LLHost host);
-	S32 setTETextureCore(const U8 te, const LLUUID& uuid, const std::string &url );
+	S32 				setTETextureCore(const U8 te, LLViewerTexture *image);
 	/*virtual*/ S32		setTEColor(const U8 te, const LLColor3 &color);
 	/*virtual*/ S32		setTEColor(const U8 te, const LLColor4 &color);
 	/*virtual*/ S32		setTEScale(const U8 te, const F32 s, const F32 t);
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index c5128376326..f0986ac2232 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -1776,29 +1776,42 @@ U32 LLVOAvatar::processUpdateMessage(LLMessageSystem *mesgsys,
 	return retval;
 }
 
+LLViewerFetchedTexture *LLVOAvatar::getBakedTextureImage(const U8 te, const LLUUID& uuid)
+{
+	LLViewerFetchedTexture *result;
+	
+	const std::string url = getImageURL(te,uuid);
+	if (!url.empty())
+	{
+		llinfos << "texture URL " << url << llendl;
+		result = LLViewerTextureManager::getFetchedTextureFromUrl(
+			url, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE, 0, 0, uuid);
+	}
+	else
+	{
+		llinfos << "get texture from host " << uuid << llendl;
+		LLHost host = getObjectHost();
+		result = LLViewerTextureManager::getFetchedTexture(
+			uuid, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE, 0, 0, host);
+	}
+	return result;
+}
+
 // virtual
 S32 LLVOAvatar::setTETexture(const U8 te, const LLUUID& uuid)
 {
-	// The core setTETexture() method requests images, so we need
-	// to redirect certain avatar texture requests to different sims.
-	if (isIndexBakedTexture((ETextureIndex)te))
+	if (!isIndexBakedTexture((ETextureIndex)te))
 	{
-		const std::string url = getImageURL(te,uuid);
-		if (!url.empty())
+		if (!uuid.isNull())
 		{
-			llinfos << "texture URL " << url << llendl;
-			return setTETextureCore(te, uuid, url);
+			llinfos << "ignoring texture " << uuid << " in non-baked slot " << (S32)te << " - will use null " << llendl;
 		}
-
-		llinfos << "get texture from host " << uuid << llendl;
-		LLHost target_host = getObjectHost();
-		return setTETextureCore(te, uuid, target_host);
-	}
-	else
-	{
-		llinfos << "ignoring texture in non-baked slot " << uuid << " - will use null " << LLUUID::null << llendl;
-		return setTETextureCore(te, LLUUID::null, LLHost::invalid);
+		return LLViewerObject::setTETexture(te, LLUUID::null);
 	}
+
+	LLViewerFetchedTexture *image = getBakedTextureImage(te,uuid);
+	llassert(image);
+	return setTETextureCore(te, image);
 }
 
 static LLFastTimer::DeclareTimer FTM_AVATAR_UPDATE("Avatar Update");
@@ -6070,6 +6083,8 @@ void LLVOAvatar::updateMeshTextures()
 			last_id_string = "A";
 		else if (mBakedTextureDatas[i].mLastTextureID == IMG_DEFAULT)
 			last_id_string = "D";
+		else if (mBakedTextureDatas[i].mLastTextureID == IMG_INVISIBLE)
+			last_id_string = "I";
 		else
 			last_id_string = "*";
 		bool is_ltda = layerset
@@ -6750,12 +6765,6 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 		return;
 	}
 
-	BOOL is_first_appearance_message = !mFirstAppearanceMessageReceived;
-	mFirstAppearanceMessageReceived = TRUE;
-
-	LL_INFOS("Avatar") << avString() << "processAvatarAppearance start " << mID
-			<< " first? " << is_first_appearance_message << " self? " << isSelf() << LL_ENDL;
-
 
 	ESex old_sex = getSex();
 
@@ -6831,6 +6840,12 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 	// runway - was
 	// if (!is_first_appearance_message )
 	// which means it would be called on second appearance message - probably wrong.
+	BOOL is_first_appearance_message = !mFirstAppearanceMessageReceived;
+	mFirstAppearanceMessageReceived = TRUE;
+
+	LL_INFOS("Avatar") << avString() << "processAvatarAppearance start " << mID
+			<< " first? " << is_first_appearance_message << " self? " << isSelf() << LL_ENDL;
+
 	if (is_first_appearance_message )
 	{
 		onFirstTEMessageReceived();
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
index bdb477590f8..c14f18d00ed 100755
--- a/indra/newview/llvoavatar.h
+++ b/indra/newview/llvoavatar.h
@@ -147,6 +147,7 @@ class LLVOAvatar :
 	void 						collectTextureUUIDs(std::set<LLUUID>& ids);
 	void						releaseOldTextures();
 	/*virtual*/ void   	 	 	updateTextures();
+	LLViewerFetchedTexture*		getBakedTextureImage(const U8 te, const LLUUID& uuid);
 	/*virtual*/ S32    	 	 	setTETexture(const U8 te, const LLUUID& uuid); // If setting a baked texture, need to request it from a non-local sim.
 	/*virtual*/ void   	 	 	onShift(const LLVector4a& shift_vector);
 	/*virtual*/ U32    	 	 	getPartitionType() const;
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
old mode 100644
new mode 100755
index 757d0295136..aeac478d4e7
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -759,6 +759,15 @@ U32  LLVOAvatarSelf::processUpdateMessage(LLMessageSystem *mesgsys,
 {
 	U32 retval = LLVOAvatar::processUpdateMessage(mesgsys,user_data,block_num,update_type,dp);
 
+#if 0
+	// DRANO - it's not clear this does anything useful. If we wait
+	// until an appearance message has been received, we already have
+	// the texture ids. If we don't wait, we don't yet know where to
+	// look for baked textures, because we haven't received the
+	// appearance version data from the appearance message. This looks
+	// like an old optimization that's incompatible with server-side
+	// texture baking.
+	
 	// FIXME DRANO - skipping in the case of !mFirstAppearanceMessageReceived prevents us from trying to
 	// load textures before we know where they come from (ie, from baking service or not);
 	// unknown impact on performance.
@@ -783,6 +792,7 @@ U32  LLVOAvatarSelf::processUpdateMessage(LLMessageSystem *mesgsys,
 
 		mInitialBakesLoaded = true;
 	}
+#endif
 
 	return retval;
 }
-- 
GitLab


From 1518bc9f9add7812f0fa1f60d58c6b8f0ee462ca Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Wed, 30 Jan 2013 18:43:30 -0500
Subject: [PATCH 253/436] SH-3800 WIP - avoid complaints about source of
 various standard textures - IMG_DEFAULT_AVATAR etc

---
 indra/newview/llvoavatar.cpp | 35 +++++++++++++++++++++++------------
 1 file changed, 23 insertions(+), 12 deletions(-)

diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index f0986ac2232..5b4f31f91a1 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -1778,21 +1778,32 @@ U32 LLVOAvatar::processUpdateMessage(LLMessageSystem *mesgsys,
 
 LLViewerFetchedTexture *LLVOAvatar::getBakedTextureImage(const U8 te, const LLUUID& uuid)
 {
-	LLViewerFetchedTexture *result;
-	
-	const std::string url = getImageURL(te,uuid);
-	if (!url.empty())
+	LLViewerFetchedTexture *result = NULL;
+
+	if (uuid == IMG_DEFAULT_AVATAR ||
+		uuid == IMG_DEFAULT ||
+		uuid == IMG_INVISIBLE)
 	{
-		llinfos << "texture URL " << url << llendl;
-		result = LLViewerTextureManager::getFetchedTextureFromUrl(
-			url, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE, 0, 0, uuid);
+		// Should already exist, don't need to find it on sim or baked-texture host.
+		result = gTextureList.findImage(uuid);
 	}
-	else
+
+	if (!result)
 	{
-		llinfos << "get texture from host " << uuid << llendl;
-		LLHost host = getObjectHost();
-		result = LLViewerTextureManager::getFetchedTexture(
-			uuid, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE, 0, 0, host);
+		const std::string url = getImageURL(te,uuid);
+		if (!url.empty())
+		{
+			llinfos << "texture URL " << url << llendl;
+			result = LLViewerTextureManager::getFetchedTextureFromUrl(
+				url, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE, 0, 0, uuid);
+		}
+		else
+		{
+			llinfos << "get texture from host " << uuid << llendl;
+			LLHost host = getObjectHost();
+			result = LLViewerTextureManager::getFetchedTexture(
+				uuid, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE, 0, 0, host);
+		}
 	}
 	return result;
 }
-- 
GitLab


From 48df050feffc9e70d09e4caae239a55504c40b38 Mon Sep 17 00:00:00 2001
From: eli <none@none>
Date: Thu, 31 Jan 2013 14:44:53 -0800
Subject: [PATCH 254/436] sync with viewer-development

---
 .../skins/default/xui/en/notifications.xml    | 1738 -----------------
 .../xui/en/panel_preferences_graphics1.xml    |   13 -
 2 files changed, 1751 deletions(-)

diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index 44c18c2cce7..c8f5cbb2b01 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -8872,14 +8872,6 @@ Cannot save to object contents: Item with that name already exists in inventory
 Cannot save to object contents: This would modify the attachment permissions.
   </notification>
 
-  <notification
-   icon="alertmodal.tga"
-   name="NoPermToEdit"
-   type="notify">
-   <tag>fail</tag>
-Not permitted to edit this!
-  </notification>
-
   <notification
    icon="alertmodal.tga"
    name="TooManyScripts"
@@ -8920,47 +8912,6 @@ This region does not have physics shapes enabled.
 You cannot modify the navmesh across region boundaries.
   </notification>
 
-  <notification
-   icon="alertmodal.tga"
-   name="NoPermModifyObject"
-   type="notify">
-   <tag>fail</tag>
-You don't have permission to modify that object.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantEnablePhysObjContributesToNav"
-   type="notify">
-   <tag>fail</tag>
-Can't enable physics for an object that contributes to the navmesh.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantEnablePhysKeyframedObj"
-   type="notify">
-   <tag>fail</tag>
-Can't enable physics for keyframed objects.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantEnablePhysNotEnoughLandResources"
-   type="notify">
-   <tag>fail</tag>
-Can't enable physics for object -- insufficient land resources.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantEnablePhysCostTooGreat"
-   persist="true"
-   type="notify">
-   <tag>fail</tag>
-Can't enable physics for object with physics resource cost greater than [MAX_OBJECTS]
-  </notification>
-
   <notification
    icon="alertmodal.tga"
    name="NoSetPhysicsPropertiesOnObjectType"
@@ -9987,1693 +9938,4 @@ An internal error prevented us from properly updating your viewer.  The L$ balan
 Cannot create large prims that intersect other players.  Please re-try when other players have moved.
   </notification>
 
-
-  <notification
-   icon="alertmodal.tga"
-   name="AvatarFrozen"
-   type="notify">
-   <tag>fail</tag>
-[AV_FREEZER] has frozen you. You cannot move or interact with the world.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="AvatarFrozenDuration"
-   type="notify">
-   <tag>fail</tag>
-[AV_FREEZER] has frozen you for [AV_FREEZE_TIME] seconds. You cannot move or interact with the world.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="YouFrozeAvatar"
-   type="notify">
-   <tag>fail</tag>
-Avatar frozen.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="AvatarHasUnFrozenYou"
-   type="notify">
-   <tag>fail</tag>
-[AV_FREEZER] has unfrozen you.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="AvatarUnFrozen"
-   type="notify">
-   <tag>fail</tag>
-Avatar unfrozen.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="AvatarFreezeFailure"
-   type="notify">
-   <tag>fail</tag>
-Freeze failed because you don't have admin permission for that parcel.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="AvatarFreezeThaw"
-   type="notify">
-   <tag>fail</tag>
-Your freeze expired, go about your business.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="AvatarCantFreeze"
-   type="notify">
-   <tag>fail</tag>
-Sorry, can't freeze that user.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="NowOwnObject"
-   type="notify">
-   <tag>fail</tag>
-You are now the owner of object [OBJECT_NAME]
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantRezOnLand"
-   type="notify">
-   <tag>fail</tag>
-Can't rez object at [OBJECT_POS] because the owner of this land does not allow it.  Use the land tool to see land ownership.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="RezFailTooManyRequests"
-   type="notify">
-   <tag>fail</tag>
-Object can not be rezzed because there are too many requests.
-  </notification>
- 
-  <notification
-   icon="alertmodal.tga"
-   name="SitFailCantMove"
-   type="notify">
-   <tag>fail</tag>
-You cannot sit because you cannot move at this time.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="SitFailNotAllowedOnLand"
-   type="notify">
-   <tag>fail</tag>
-You cannot sit because you are not allowed on that land.
-  </notification>
- 
-  <notification
-   icon="alertmodal.tga"
-   name="SitFailNotSameRegion"
-   type="notify">
-   <tag>fail</tag>
-Try moving closer.  Can't sit on object because
-it is not in the same region as you.
-  </notification>
-  
-  <notification
-   icon="alertmodal.tga"
-   name="NoNewObjectRegionFull"
-   type="notify">
-   <tag>fail</tag>
-Unable to create new object. The region is full.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="FailedToPlaceObject"
-   type="notify">
-   <tag>fail</tag>
-Failed to place object at specified location.  Please try again.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="NoOwnNoGardening"
-   type="notify">
-   <tag>fail</tag>
-You Can't create trees and grass on land you don't own.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="NoCopyPermsNoObject"
-   type="notify">
-   <tag>fail</tag>
-Copy failed because you lack permission to copy the object '[OBJ_NAME]'.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="NoTransPermsNoObject"
-   type="notify">
-   <tag>fail</tag>
-Copy failed because the object '[OBJ_NAME]' cannot be transferred to you.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="AddToNavMeshNoCopy"
-   type="notify">
-   <tag>fail</tag>
-Copy failed because the object '[OBJ_NAME]' contributes to navmesh.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="DupeWithNoRootsSelected"
-   type="notify">
-   <tag>fail</tag>
-Duplicate with no root objects selected.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantDupeCuzRegionIsFull"
-   type="notify">
-   <tag>fail</tag>
-Can't duplicate objects because the region is full.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantDupeCuzParcelNotFound"
-   type="notify">
-   <tag>fail</tag>
-Can't duplicate objects - Can't find the parcel they are on.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantCreateCuzParcelFull"
-   type="notify">
-   <tag>fail</tag>
-Can't create object because 
-the parcel is full.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="RezAttemptFailed"
-   type="notify">
-   <tag>fail</tag>
-Attempt to rez an object failed.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="ToxicInvRezAttemptFailed"
-   type="notify">
-   <tag>fail</tag>
-Unable to create item that has caused problems on this region.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="InvItemIsBlacklisted"
-   type="notify">
-   <tag>fail</tag>
-That inventory item has been blacklisted.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="NoCanRezObjects"
-   type="notify">
-   <tag>fail</tag>
-You are not currently allowed to create objects.
-  </notification>
- 
-  <notification
-   icon="alertmodal.tga"
-   name="LandSearchBlocked"
-   type="notify">
-   <tag>fail</tag>
-Land Search Blocked.
-You have performed too many land searches too quickly.
-Please try again in a minute.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="NotEnoughResourcesToAttach"
-   type="notify">
-   <tag>fail</tag>
-Not enough script resources available to attach object!
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="YouDiedAndGotTPHome"
-   type="notify">
-   <tag>fail</tag>
-You died and have been teleported to your home location
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="EjectComingSoon"
-   type="notify">
-   <tag>fail</tag>
-You are no longer allowed here and have [EJECT_TIME] seconds to leave.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="NoEnterServerFull"
-   type="notify">
-   <tag>fail</tag>
-You can't enter this region because 
-the server is full.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="SaveBackToInvDisabled"
-   type="notify">
-   <tag>fail</tag>
-Save Back To Inventory has been disabled.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="NoExistNoSaveToContents"
-   type="notify">
-   <tag>fail</tag>
-Cannot save '[OBJ_NAME]' to object contents because the object it was rezzed from no longer exists.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="NoModNoSaveToContents"
-   type="notify">
-   <tag>fail</tag>
-Cannot save '[OBJ_NAME]' to object contents because you do not have permission to modify the object '[DEST_NAME]'.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="NoSaveBackToInvDisabled"
-   type="notify">
-   <tag>fail</tag>
-Cannot save '[OBJ_NAME]' back to inventory -- this operation has been disabled.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="NoCopyNoSelCopy"
-   type="notify">
-   <tag>fail</tag>
-You cannot copy your selection because you do not have permission to copy the object '[OBJ_NAME]'.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="NoTransNoSelCopy"
-   type="notify">
-   <tag>fail</tag>
-You cannot copy your selection because the object '[OBJ_NAME]' is not transferrable.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="NoTransNoCopy"
-   type="notify">
-   <tag>fail</tag>
-You cannot copy your selection because the object '[OBJ_NAME]' is not transferrable.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="NoPermsNoRemoval"
-   type="notify">
-   <tag>fail</tag>
-Removal of the object '[OBJ_NAME]' from the simulator is disallowed by the permissions system.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="NoModNoSaveSelection"
-   type="notify">
-   <tag>fail</tag>
-Cannot save your selection because you do not have permission to modify the object '[OBJ_NAME]'.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="NoCopyNoSaveSelection"
-   type="notify">
-   <tag>fail</tag>
-Cannot save your selection because the object '[OBJ_NAME]' is not copyable.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="NoModNoTaking"
-   type="notify">
-   <tag>fail</tag>
-You cannot take your selection because you do not have permission to modify the object '[OBJ_NAME]'.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="RezDestInternalError"
-   type="notify">
-   <tag>fail</tag>
-Internal Error: Unknown destination type.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="DeleteFailObjNotFound"
-   type="notify">
-   <tag>fail</tag>
-Delete failed because object not found
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="SorryCantEjectUser"
-   type="notify">
-   <tag>fail</tag>
-Sorry, can't eject that user.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="RegionSezNotAHome"
-   type="notify">
-   <tag>fail</tag>
-This region does not allow you to set your home location here.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="HomeLocationLimits"
-   type="notify">
-   <tag>fail</tag>
-You can only set your 'Home Location' on your land or at a mainland Infohub.
-   </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="HomePositionSet"
-   type="notify">
-   <tag>fail</tag>
-Home position set.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="AvatarEjected"
-   type="notify">
-   <tag>fail</tag>
-Avatar ejected.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="AvatarEjectFailed"
-   type="notify">
-   <tag>fail</tag>
-Eject failed because you don't have admin permission for that parcel.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantMoveObjectParcelFull"
-   type="notify">
-   <tag>fail</tag>
-Can't move object '[OBJECT_NAME]' to
-[OBJ_POSITION] in region [REGION_NAME] because the parcel is full.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantMoveObjectParcelPerms"
-   type="notify">
-   <tag>fail</tag>
-Can't move object '[OBJECT_NAME]' to
-[OBJ_POSITION] in region [REGION_NAME] because your objects are not allowed on this parcel.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantMoveObjectParcelResources"
-   type="notify">
-   <tag>fail</tag>
-Can't move object '[OBJECT_NAME]' to
-[OBJ_POSITION] in region [REGION_NAME] because there are not enough resources for this object on this parcel.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantMoveObjectRegionVersion"
-   type="notify">
-   <tag>fail</tag>
-Can't move object '[OBJECT_NAME]' to
-[OBJ_POSITION] in region [REGION_NAME] because the other region is running an older version which does not support receiving this object via region crossing.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantMoveObjectNavMesh"
-   type="notify">
-   <tag>fail</tag>
-Can't move object '[OBJECT_NAME]' to
-[OBJ_POSITION] in region [REGION_NAME] because you cannot modify the navmesh across region boundaries.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantMoveObjectWTF"
-   type="notify">
-   <tag>fail</tag>
-Can't move object '[OBJECT_NAME]' to
-[OBJ_POSITION] in region [REGION_NAME] because of an unknown reason. ([FAILURE_TYPE])
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="NoPermModifyObject"
-   type="notify">
-   <tag>fail</tag>
-You don't have permission to modify that object
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantEnablePhysObjContributesToNav"
-   type="notify">
-   <tag>fail</tag>
-Can't enable physics for an object that contributes to the navmesh.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantEnablePhysKeyframedObj"
-   type="notify">
-   <tag>fail</tag>
-Can't enable physics for keyframed objects.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantEnablePhysNotEnoughLandResources"
-   type="notify">
-   <tag>fail</tag>
-Can't enable physics for object -- insufficient land resources.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantEnablePhysCostTooGreat"
-   persist="true"
-   type="notify">
-   <tag>fail</tag>
-Can't enable physics for object with physics resource cost greater than [MAX_OBJECTS]
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="PhantomWithConcavePiece"
-   type="notify">
-   <tag>fail</tag>
-This object cannot have a concave piece because it is phantom and contributes to the navmesh.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="UnableAddItem"
-   type="notify">
-   <tag>fail</tag>
-Unable to add item!
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="UnableEditItem"
-   type="notify">
-   <tag>fail</tag>
-Unable to edit this!
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="NoPermToEdit"
-   type="notify">
-   <tag>fail</tag>
-Not permitted to edit this.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="NoPermToCopyInventory"
-   type="notify">
-   <tag>fail</tag>
-Not permitted to copy that inventory.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantSaveItemDoesntExist"
-   type="notify">
-   <tag>fail</tag>
-Cannot save to object contents: Item no longer exists.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantSaveItemAlreadyExists"
-   type="notify">
-   <tag>fail</tag>
-Cannot save to object contents: Item with that name already exists in inventory
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantSaveModifyAttachment"
-   type="notify">
-   <tag>fail</tag>
-Cannot save to object contents: This would modify the attachment permissions.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="NoPermToEdit"
-   type="notify">
-   <tag>fail</tag>
-Not permitted to edit this!
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="TooManyScripts"
-   type="notify">
-   <tag>fail</tag>
-Too many scripts.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="UnableAddScript"
-   type="notify">
-   <tag>fail</tag>
-Unable to add script!
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="AssetServerTimeoutObjReturn"
-   type="notify">
-   <tag>fail</tag>
-Asset server didn't respond in a timely fashion.  Object returned to sim.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="RegionDisablePhysicsShapes"
-   type="notify">
-   <tag>fail</tag>
-This region does not have physics shapes enabled.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="NoModNavmeshAcrossRegions"
-   type="notify">
-   <tag>fail</tag>
-You cannot modify the navmesh across region boundaries.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="NoPermModifyObject"
-   type="notify">
-   <tag>fail</tag>
-You don't have permission to modify that object.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantEnablePhysObjContributesToNav"
-   type="notify">
-   <tag>fail</tag>
-Can't enable physics for an object that contributes to the navmesh.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantEnablePhysKeyframedObj"
-   type="notify">
-   <tag>fail</tag>
-Can't enable physics for keyframed objects.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantEnablePhysNotEnoughLandResources"
-   type="notify">
-   <tag>fail</tag>
-Can't enable physics for object -- insufficient land resources.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantEnablePhysCostTooGreat"
-   persist="true"
-   type="notify">
-   <tag>fail</tag>
-Can't enable physics for object with physics resource cost greater than [MAX_OBJECTS]
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="NoSetPhysicsPropertiesOnObjectType"
-   type="notify">
-   <tag>fail</tag>
-Cannot set physics properties on that object type.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="NoSetRootPrimWithNoShape"
-   type="notify">
-   <tag>fail</tag>
-Cannot set root prim to have no shape.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="NoRegionSupportPhysMats"
-   type="notify">
-   <tag>fail</tag>
-This region does not have physics materials enabled.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="OnlyRootPrimPhysMats"
-   type="notify">
-   <tag>fail</tag>
-Only root prims may have their physics materials adjusted.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="NoSupportCharacterPhysMats"
-   type="notify">
-   <tag>fail</tag>
-Setting physics materials on characters is not yet supported.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="InvalidPhysMatProperty"
-   type="notify">
-   <tag>fail</tag>
-One or more of the specified physics material properties was invalid.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="NoPermsAlterStitchingMeshObj"
-   type="notify">
-   <tag>fail</tag>
-You may not alter the stitching type of a mesh object.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="NoPermsAlterShapeMeshObj"
-   type="notify">
-   <tag>fail</tag>
-You may not alter the shape of a mesh object
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="FullRegionCantEnter"
-   type="notify">
-   <tag>fail</tag>
-You can't enter this region because \nthe region is full.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="LinkFailedOwnersDiffer"
-   type="notify">
-   <tag>fail</tag>
-Link failed -- owners differ
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="LinkFailedNoModNavmeshAcrossRegions"
-   type="notify">
-   <tag>fail</tag>
-Link failed -- cannot modify the navmesh across region boundaries.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="LinkFailedNoPermToEdit"
-   type="notify">
-   <tag>fail</tag>
-Link failed because you do not have edit permission.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="LinkFailedTooManyPrims"
-   type="notify">
-   <tag>fail</tag>
-Link failed -- too many primitives
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="LinkFailedCantLinkNoCopyNoTrans"
-   type="notify">
-   <tag>fail</tag>
-Link failed -- cannot link no-copy with no-transfer
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="LinkFailedNothingLinkable"
-   type="notify">
-   <tag>fail</tag>
-Link failed -- nothing linkable.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="LinkFailedTooManyPathfindingChars"
-   type="notify">
-   <tag>fail</tag>
-Link failed -- too many pathfinding characters
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="LinkFailedInsufficientLand"
-   type="notify">
-   <tag>fail</tag>
-Link failed -- insufficient land resources
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="LinkFailedTooMuchPhysics"
-   type="notify">
-   <tag>fail</tag>
-Object uses too many physics resources -- its dynamics have been disabled.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="TeleportedHomeByObjectOnParcel"
-   persist="true"
-   type="notify">
-   <tag>fail</tag>
-You have been teleported home by the object '[OBJECT_NAME]' on the parcel '[PARCEL_NAME]'
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="TeleportedHomeByObject"
-   persist="true"
-   type="notify">
-   <tag>fail</tag>
-You have been teleported home by the object '[OBJECT_NAME]'
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="TeleportedByAttachment"
-   type="notify">
-   <tag>fail</tag>
-You have been teleported by an attachment on [ITEM_ID]
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="TeleportedByObjectOnParcel"
-   type="notify">
-   <tag>fail</tag>
-You have been teleported by the object '[OBJECT_NAME]' on the parcel '[PARCEL_NAME]'
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="TeleportedByObjectOwnedBy"
-   type="notify">
-   <tag>fail</tag>
-You have been teleported by the object '[OBJECT_NAME]' owned by [OWNER_ID]
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="TeleportedByObjectUnknownUser"
-   type="notify">
-   <tag>fail</tag>
-You have been teleported by the object '[OBJECT_NAME]' owned by an unknown user.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantCreateObjectRegionFull"
-   type="notify">
-   <tag>fail</tag>
-Unable to create requested object. The region is full.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantAttackMultipleObjOneSpot"
-   type="notify">
-   <tag>fail</tag>
-You can't attach multiple objects to one spot.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantCreateMultipleObjAtLoc"
-   type="notify">
-   <tag>fail</tag>
-You can't create multiple objects here.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="UnableToCreateObjTimeOut"
-   type="notify">
-   <tag>fail</tag>
-Unable to create requested object. Object is missing from database.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="UnableToCreateObjUnknown"
-   type="notify">
-   <tag>fail</tag>
-Unable to create requested object. The request timed out. Please try again.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="UnableToCreateObjMissingFromDB"
-   type="notify">
-   <tag>fail</tag>
-Unable to create requested object. Please try again.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="RezFailureTookTooLong"
-   type="notify">
-   <tag>fail</tag>
-Rez failed, requested object took too long to load.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="FailedToPlaceObjAtLoc"
-   type="notify">
-   <tag>fail</tag>
-Failed to place object at specified location.  Please try again.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantCreatePlantsOnLand"
-   type="notify">
-   <tag>fail</tag>
-You cannot create plants on this land.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantRestoreObjectNoWorldPos"
-   type="notify">
-   <tag>fail</tag>
-Cannot restore object. No world position found.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantRezObjectInvalidMeshData"
-   type="notify">
-   <tag>fail</tag>
-Unable to rez object because its mesh data is invalid.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantRezObjectTooManyScripts"
-   type="notify">
-   <tag>fail</tag>
-Unable to rez object because there are already too many scripts in this region.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantCreateObjectNoAccess"
-   type="notify">
-   <tag>fail</tag>
-Your access privileges don't allow you to create objects there.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantCreateObject"
-   type="notify">
-   <tag>fail</tag>
-You are not currently allowed to create objects.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="InvalidObjectParams"
-   type="notify">
-   <tag>fail</tag>
-Invalid object parameters
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantDuplicateObjectNoAcess"
-   type="notify">
-   <tag>fail</tag>
-Your access privileges don't allow you to duplicate objects here.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantChangeShape"
-   type="notify">
-   <tag>fail</tag>
-You are not allowed to change this shape.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="NoAccessToClaimObjects"
-   type="notify">
-   <tag>fail</tag>
-Your access privileges don't allow you to claim objects here.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="DeedFailedNoPermToDeedForGroup"
-   type="notify">
-   <tag>fail</tag>
-Deed failed because you do not have permission to deed objects for your group.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="NoPrivsToBuyObject"
-   type="notify">
-   <tag>fail</tag>
-Your access privileges don't allow you to buy objects here.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantAttachObjectAvatarSittingOnIt"
-   type="notify">
-   <tag>fail</tag>
-Cannot attach object because an avatar is sitting on it.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="WhyAreYouTryingToWearShrubbery"
-   type="notify">
-   <tag>fail</tag>
-Trees and grasses cannot be worn as attachments.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantAttachGroupOwnedObjs"
-   type="notify">
-   <tag>fail</tag>
-Cannot attach group-owned objects.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantAttachObjectsNotOwned"
-   type="notify">
-   <tag>fail</tag>
-Cannot attach objects that you don't own.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantAttachNavmeshObjects"
-   type="notify">
-   <tag>fail</tag>
-Cannot attach objects that contribute to navmesh.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantAttachObjectNoMovePermissions"
-   type="notify">
-   <tag>fail</tag>
-Cannot attach object because you do not have permission to move it.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantAttachNotEnoughScriptResources"
-   type="notify">
-   <tag>fail</tag>
-Not enough script resources available to attach object!
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantDropItemTrialUser"
-   type="notify">
-   <tag>fail</tag>
-You can't drop objects here; try the Free Trial area.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantDropMeshAttachment"
-   type="notify">
-   <tag>fail</tag>
-You can't drop mesh attachments. Detach to inventory and then rez in world.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantDropAttachmentNoPermission"
-   type="notify">
-   <tag>fail</tag>
-Failed to drop attachment: you don't have permission to drop there.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantDropAttachmentInsufficientLandResources"
-   type="notify">
-   <tag>fail</tag>
-Failed to drop attachment: insufficient available land resource.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantDropAttachmentInsufficientResources"
-   type="notify">
-   <tag>fail</tag>
-Failed to drop attachments: insufficient available resources.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantDropObjectFullParcel"
-   type="notify">
-   <tag>fail</tag>
-Cannot drop object here.  Parcel is full.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantTouchObjectBannedFromParcel"
-   type="notify">
-   <tag>fail</tag>
-Can't touch/grab this object because you are banned from the land parcel.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="PlzNarrowDeleteParams"
-   type="notify">
-   <tag>fail</tag>
-Please narrow your delete parameters.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="UnableToUploadAsset"
-   type="notify">
-   <tag>fail</tag>
-Unable to upload asset.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantTeleportCouldNotFindUser"
-   type="notify">
-   <tag>fail</tag>
-Could not find user to teleport home
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="GodlikeRequestFailed"
-   type="notify">
-   <tag>fail</tag>
-godlike request failed
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="GenericRequestFailed"
-   type="notify">
-   <tag>fail</tag>
-generic request failed
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantUploadPostcard"
-   type="notify">
-   <tag>fail</tag>
-Unable to upload postcard.  Try again later.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantFetchInventoryForGroupNotice"
-   type="notify">
-   <tag>fail</tag>
-Unable to fetch inventory details for the group notice.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantSendGroupNoticeNotPermitted"
-   type="notify">
-   <tag>fail</tag>
-Unable to send group notice -- not permitted.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantSendGroupNoticeCantConstructInventory"
-   type="notify">
-   <tag>fail</tag>
-Unable to send group notice -- could not construct inventory.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantParceInventoryInNotice"
-   type="notify">
-   <tag>fail</tag>
-Unable to parse inventory in notice.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="TerrainUploadFailed"
-   type="notify">
-   <tag>fail</tag>
-Terrain upload failed.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="TerrainFileWritten"
-   type="notify">
-   <tag>fail</tag>
-Terrain file written.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="TerrainFileWrittenStartingDownload"
-   type="notify">
-   <tag>fail</tag>
-Terrain file written, starting download...
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="TerrainBaked"
-   type="notify">
-   <tag>fail</tag>
-Terrain baked.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="TenObjectsDisabledPlzRefresh"
-   type="notify">
-   <tag>fail</tag>
-Only the first 10 selected objects have been disabled. Refresh and make additional selections if required.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="UpdateViewerBuyParcel"
-   type="notify">
-   <tag>fail</tag>
-You need to update your viewer to buy this parcel.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="LandBuyAccessBlocked"
-   type="notify">
-   <tag>fail</tag>
-You can't buy this land due to your maturity Rating. You may need to validate your age and/or install the latest Viewer. Please go to the Knowledge Base for details on accessing areas with this maturity Rating.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantBuyParcelNotForSale"
-   type="notify">
-   <tag>fail</tag>
-Unable to buy, this parcel is not for sale.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantBuySalePriceOrLandAreaChanged"
-   type="notify">
-   <tag>fail</tag>
-Unable to buy, the sale price or land area has changed.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantBuyParcelNotAuthorized"
-   type="notify">
-   <tag>fail</tag>
-You are not the authorized buyer for this parcel.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantBuyParcelAwaitingPurchaseAuth"
-   type="notify">
-   <tag>fail</tag>
-You cannot purchase this parcel because it is already awaiting purchase aut
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantBuildOverflowParcel"
-   type="notify">
-   <tag>fail</tag>
-You cannot build objects here because doing so would overflow the parcel.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="SelectedMultipleOwnedLand"
-   type="notify">
-   <tag>fail</tag>
-You selected land with different owners. Please select a smaller area and try again.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantJoinTooFewLeasedParcels"
-   type="notify">
-   <tag>fail</tag>
-Not enough leased parcels in selection to join.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantDivideLandMultipleParcelsSelected"
-   type="notify">
-   <tag>fail</tag>
-Can't divide land.\nThere is more than one parcel selected.\nTry selecting a smaller piece of land.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantDivideLandCantFindParcel"
-   type="notify">
-   <tag>fail</tag>
-Can't divide land.\nCan't find the parcel.\nPlease report with Help -> Reprt Bug...
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantDivideLandWholeParcelSelected"
-   type="notify">
-   <tag>fail</tag>
-Can't divide land. Whole parcel is selected.\nTry selecting a smaller piece of land.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="LandHasBeenDivided"
-   type="notify">
-   <tag>fail</tag>
-Land has been divided.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="PassPurchased"
-   type="notify">
-   <tag>fail</tag>
-You purchased a pass.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="RegionDisallowsClassifieds"
-   type="notify">
-   <tag>fail</tag>
-Region does not allow classified advertisements.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="LandPassExpireSoon"
-   type="notify">
-   <tag>fail</tag>
-Your pass to this land is about to expire.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantSitNoSuitableSurface"
-   type="notify">
-   <tag>fail</tag>
-There is no suitable surface to sit on, try another spot.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantSitNoRoom"
-   type="notify">
-   <tag>fail</tag>
-No room to sit here, try another spot.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="AutopilotCanceled"
-   type="notify">
-   <tag>fail</tag>
-Autopilot canceled
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="ClaimObjectFailedNoPermission"
-   type="notify">
-   <tag>fail</tag>
-Claim object failed because you don't have permission
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="ClaimObjectFailedNoMoney"
-   type="notify">
-   <tag>fail</tag>
-Claim object failed because you don't have enough L$.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantDeedGroupLand"
-   type="notify">
-   <tag>fail</tag>
-Cannot deed group-owned land.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="BuyObjectFailedNoMoney"
-   type="notify">
-   <tag>fail</tag>
-Buy object failed because you don't have enough L$.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="BuyInventoryFailedNoMoney"
-   type="notify">
-   <tag>fail</tag>
-Buy inventory failed because you do not have enough L$
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="BuyPassFailedNoMoney"
-   type="notify">
-   <tag>fail</tag>
-You don't have enough L$ to buy a pass to this land.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantBuyPassTryAgain"
-   type="notify">
-   <tag>fail</tag>
-Unable to buy pass right now.  Try again later.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantCreateObjectParcelFull"
-   type="notify">
-   <tag>fail</tag>
-Can't create object because \nthe parcel is full.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="FailedPlacingObject"
-   type="notify">
-   <tag>fail</tag>
-Failed to place object at specified location.  Please try again.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantCreateLandmarkForEvent"
-   type="notify">
-   <tag>fail</tag>
-Unable to create landmark for event.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="GodBeatsFreeze"
-   type="notify">
-   <tag>fail</tag>
-Your godlike powers break the freeze!
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="SpecialPowersRequestFailedLogged"
-   type="notify">
-   <tag>fail</tag>
-Request for special powers failed. This request has been logged.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="ExpireExplanation"
-   type="notify">
-   <tag>fail</tag>
-The system is currently unable to process your request. The request timed out.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="DieExplanation"
-   type="notify">
-   <tag>fail</tag>
-The system is unable to process your request.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="AddPrimitiveFailure"
-   type="notify">
-   <tag>fail</tag>
-Insufficient funds to create primitve.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="RezObjectFailure"
-   type="notify">
-   <tag>fail</tag>
-Insufficient funds to create object.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="ResetHomePositionNotLegal"
-   type="notify">
-   <tag>fail</tag>
-Reset Home position since Home wasn't legal.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantInviteRegionFull"
-   type="notify">
-   <tag>fail</tag>
-You cannot currently invite anyone to your location because the region is full. Try again later.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantSetHomeAtRegion"
-   type="notify">
-   <tag>fail</tag>
-This region does not allow you to set your home location here.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="ListValidHomeLocations"
-   type="notify">
-   <tag>fail</tag>
-You can only set your 'Home Location' on your land or at a mainland Infohub.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="SetHomePosition"
-   type="notify">
-   <tag>fail</tag>
-Home position set.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantDerezInventoryError"
-   type="notify">
-   <tag>fail</tag>
-Cannot derez object due to inventory fault.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantCreateRequestedInv"
-   type="notify">
-   <tag>fail</tag>
-Cannot create requested inventory.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantCreateRequestedInvFolder"
-   type="notify">
-   <tag>fail</tag>
-Cannot create requested inventory folder.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantCreateInventory"
-   type="notify">
-   <tag>fail</tag>
-Cannot create that inventory.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantCreateLandmark"
-   type="notify">
-   <tag>fail</tag>
-Cannot create landmark.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantCreateOutfit"
-   type="notify">
-   <tag>fail</tag>
-Cannot create outfit right now. Try again in a minute.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="InventoryNotForSale"
-   type="notify">
-   <tag>fail</tag>
-Inventory is not for sale.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantFindInvItem"
-   type="notify">
-   <tag>fail</tag>
-Unable to find inventory item.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantFindObject"
-   type="notify">
-   <tag>fail</tag>
-Unable to find object.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantTransfterMoneyRegionDisabled"
-   type="notify">
-   <tag>fail</tag>
-Money transfers to objects are currently disabled in this region.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantPayNoAgent"
-   type="notify">
-   <tag>fail</tag>
-Could not figure out who to pay.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="CantDonateToPublicObjects"
-   type="notify">
-   <tag>fail</tag>
-You cannot give L$ to public objects.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="InventoryCreationInWorldObjectFailed"
-   type="notify">
-   <tag>fail</tag>
-Inventory creation on in-world object failed.
-  </notification>
-
-  <notification
-   icon="alertmodal.tga"
-   name="UserBalanceOrLandUsageError"
-   type="notify">
-   <tag>fail</tag>
-An internal error prevented us from properly updating your viewer.  The L$ balance or parcel holdings displayed in your viewer may not reflect your actual balance on the servers.
-  </notification>
-
-
 </notifications>
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml
index 849f3ef73d6..7eb0fac2beb 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml
@@ -152,19 +152,6 @@
      width="80">
         Mid
     </text>
-  <text
-     type="string"
-     length="1"
-     follows="left|top"
-     halign="center"
-     height="12"
-     layout="topleft"
-     left_delta="87"
-     name="ShadersPrefText3"
-     top_delta="0"
-     width="80">
-      High
-  </text>
     <text
      type="string"
      length="1"
-- 
GitLab


From 235f77b8c6194d7e6ab55a73dda4a31d19948323 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Fri, 1 Feb 2013 09:13:31 -0500
Subject: [PATCH 255/436] SH-3800 WIP - reject appearance messages with
 contradictory appearance version info

---
 indra/newview/llagent.cpp             |  1 +
 indra/newview/llviewertexturelist.cpp |  7 +++-
 indra/newview/llvoavatar.cpp          | 54 ++++++++++++++++-----------
 3 files changed, 39 insertions(+), 23 deletions(-)

diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index 1760d4769aa..06a7a2f5c3c 100755
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -816,6 +816,7 @@ void LLAgent::handleServerBakeRegionTransition(const LLUUID& region_id)
 		!gAgentAvatarp->isUsingServerBakes() &&
 		(mRegionp->getCentralBakeVersion()>0))
 	{
+		llinfos << "update requested due to region transition" << llendl;
 		LLAppearanceMgr::instance().requestServerAppearanceUpdate();
 	}
 }
diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp
index 4d79af5acc2..6e7f6c9b32c 100755
--- a/indra/newview/llviewertexturelist.cpp
+++ b/indra/newview/llviewertexturelist.cpp
@@ -384,8 +384,11 @@ LLViewerFetchedTexture* LLViewerTextureList::getImageFromUrl(const std::string&
 		}
 		else if (texture->getUrl() != url)
 		{
-			llwarns << "Requested texture " << new_id << " already exists with a different url, requested: " 
-					<< url << " current: " << texture->getUrl() << llendl;
+			// This is not an error as long as the images really match -
+			// e.g. could be two avatars wearing the same outfit.
+			LL_DEBUGS("Avatar") << "Requested texture " << new_id
+								<< " already exists with a different url, requested: " << url
+								<< " current: " << texture->getUrl() << llendl;
 		}
 		
 	}
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 5b4f31f91a1..537bb70579c 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -6645,11 +6645,13 @@ struct LLAppearanceMessageContents
 {
 	LLAppearanceMessageContents():
 		mAppearanceVersion(-1),
+		mParamAppearanceVersion(-1),
 		mCOFVersion(LLViewerInventoryCategory::VERSION_UNKNOWN)
 	{
 	}
 	LLTEContents mTEContents;
 	S32 mAppearanceVersion;
+	S32 mParamAppearanceVersion;
 	S32 mCOFVersion;
 	// For future use:
 	//U32 appearance_flags = 0;
@@ -6730,7 +6732,6 @@ void LLVOAvatar::parseAppearanceMessage(LLMessageSystem* mesgsys, LLAppearanceMe
 	}
 
 	LLVisualParam* appearance_version_param = getVisualParam(11000);
-	S32 param_appearance_version = -1;
 	if (appearance_version_param)
 	{
 		std::vector<LLVisualParam*>::iterator it = std::find(contents.mParams.begin(), contents.mParams.end(),appearance_version_param);
@@ -6738,28 +6739,38 @@ void LLVOAvatar::parseAppearanceMessage(LLMessageSystem* mesgsys, LLAppearanceMe
 		{
 			S32 index = it - contents.mParams.begin();
 			llinfos << "index: " << index << llendl;
-			param_appearance_version = llround(contents.mParamWeights[index]);
-			LL_DEBUGS("Avatar") << "appversion req by appearance_version param: " << contents.mAppearanceVersion << llendl;
+			contents.mParamAppearanceVersion = llround(contents.mParamWeights[index]);
+			LL_DEBUGS("Avatar") << "appversion req by appearance_version param: " << contents.mParamAppearanceVersion << llendl;
 		}
 	}
+}
+
+bool resolve_appearance_version(const LLAppearanceMessageContents& contents, S32& appearance_version)
+{
 	if ((contents.mAppearanceVersion) >= 0 &&
-		(param_appearance_version >= 0) &&
-		(contents.mAppearanceVersion != param_appearance_version))
+		(contents.mParamAppearanceVersion >= 0) &&
+		(contents.mAppearanceVersion != contents.mParamAppearanceVersion))
 	{
 		llwarns << "inconsistent appearance_version settings - field: " <<
-			contents.mAppearanceVersion << ", param: " <<  param_appearance_version << llendl;
+			contents.mAppearanceVersion << ", param: " <<  contents.mParamAppearanceVersion << llendl;
+		return false;
+	}
+	if (contents.mParamAppearanceVersion >= 0) // use visual param if available.
+	{
+		appearance_version = contents.mParamAppearanceVersion;
+		LL_DEBUGS("Avatar") << "appversion set by appearance_version param: " << appearance_version << llendl;
 	}
-	if (contents.mAppearanceVersion < 0 &&
-		param_appearance_version >= 0) // not set explicitly, try to get from visual param.
+	if (contents.mAppearanceVersion >= 0)
 	{
-		contents.mAppearanceVersion = param_appearance_version;
-		LL_DEBUGS("Avatar") << "appversion set by appearance_version param: " << contents.mAppearanceVersion << llendl;
+		appearance_version = contents.mAppearanceVersion;
+		LL_DEBUGS("Avatar") << "appversion set by appearance_version field: " << appearance_version << llendl;
 	}
 	if (contents.mAppearanceVersion < 0) // still not set, go with 0.
 	{
-		contents.mAppearanceVersion = 0;
-		LL_DEBUGS("Avatar") << "appversion set by default: " << contents.mAppearanceVersion << llendl;
+		appearance_version = 0;
+		LL_DEBUGS("Avatar") << "appversion set by default: " << appearance_version << llendl;
 	}
+	return true;
 }
 
 //-----------------------------------------------------------------------------
@@ -6776,13 +6787,21 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 		return;
 	}
 
-
 	ESex old_sex = getSex();
 
 	LLAppearanceMessageContents contents;
 	parseAppearanceMessage(mesgsys, contents);
+	if (enable_verbose_dumps)
+	{
+		dumpAppearanceMsgParams(dump_prefix + "appearance_msg", contents.mParamWeights, contents.mTEContents);
+	}
 
-	U8 appearance_version = contents.mAppearanceVersion;
+	S32 appearance_version;
+	if (!resolve_appearance_version(contents, appearance_version))
+	{
+		llwarns << "bad appearance version info, discarding" << llendl;
+		return;
+	}
 	S32 this_update_cof_version = contents.mCOFVersion;
 	S32 last_update_request_cof_version = LLAppearanceMgr::instance().mLastUpdateRequestCOFVersion;
 
@@ -6891,13 +6910,6 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 				}
 			}
 		}
-		if (enable_verbose_dumps)
-		{
-			dumpAppearanceMsgParams(dump_prefix + "appearance_msg", contents.mParamWeights, contents.mTEContents);
-		}
-
-		//if (enable_verbose_dumps) { dumpArchetypeXML(dump_prefix + "process_post_set_weights"); }
-
 		const S32 expected_tweakable_count = getVisualParamCountInGroup(VISUAL_PARAM_GROUP_TWEAKABLE); // don't worry about VISUAL_PARAM_GROUP_TWEAKABLE_NO_TRANSMIT
 		if (num_params != expected_tweakable_count)
 		{
-- 
GitLab


From 3f45d5472c603e9f034161b382ce42baa3a5b3c0 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Fri, 1 Feb 2013 10:53:02 -0500
Subject: [PATCH 256/436] SH-3800 WIP - log some of sent appearance msg info as
 well as received

---
 indra/newview/llagent.cpp    | 49 ++++++++++++++++++++++++++++++++++++
 indra/newview/llagent.h      |  1 +
 indra/newview/llvoavatar.cpp |  8 +++---
 3 files changed, 54 insertions(+), 4 deletions(-)

diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index 06a7a2f5c3c..60873cf41ff 100755
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -4282,6 +4282,49 @@ void LLAgent::requestLeaveGodMode()
 	sendReliableMessage();
 }
 
+extern void dump_visual_param(apr_file_t* file, LLVisualParam* viewer_param, F32 value);
+extern std::string get_sequential_numbered_file_name(const std::string& prefix,
+													 const std::string& suffix);
+
+// For debugging, trace agent state at times appearance message are sent out.
+void LLAgent::dumpSentAppearance(const std::string& dump_prefix)
+{
+	std::string outfilename = get_sequential_numbered_file_name(dump_prefix,".xml");
+
+	LLAPRFile outfile;
+	std::string fullpath = gDirUtilp->getExpandedFilename(LL_PATH_LOGS,outfilename);
+	outfile.open(fullpath, LL_APR_WB );
+	apr_file_t* file = outfile.getFileHandle();
+	if (!file)
+	{
+		return;
+	}
+	else
+	{
+		LL_DEBUGS("Avatar") << "dumping sent appearance message to " << fullpath << llendl;
+	}
+
+	LLVisualParam* appearance_version_param = gAgentAvatarp->getVisualParam(11000);
+	if (appearance_version_param)
+	{
+		F32 value = appearance_version_param->getWeight();
+		dump_visual_param(file, appearance_version_param, value);
+	}
+	for (LLAvatarAppearanceDictionary::Textures::const_iterator iter = LLAvatarAppearanceDictionary::getInstance()->getTextures().begin();
+		 iter != LLAvatarAppearanceDictionary::getInstance()->getTextures().end();
+		 ++iter)
+	{
+		const ETextureIndex index = iter->first;
+		const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = iter->second;
+		if (texture_dict->mIsBakedTexture)
+		{
+			LLTextureEntry* entry = gAgentAvatarp->getTE((U8) index);
+			const LLUUID& uuid = entry->getID();
+			apr_file_printf( file, "\t\t<texture te=\"%i\" uuid=\"%s\"/>\n", index, uuid.asString().c_str());
+		}
+	}
+}
+
 //-----------------------------------------------------------------------------
 // sendAgentSetAppearance()
 //-----------------------------------------------------------------------------
@@ -4378,6 +4421,12 @@ void LLAgent::sendAgentSetAppearance()
 	// composites to false, and update mesh textures.
 	if (textures_current)
 	{
+		bool enable_verbose_dumps = gSavedSettings.getBOOL("DebugAvatarAppearanceMessage");
+		std::string dump_prefix = gAgentAvatarp->getFullname() + "_sent_appearance";
+		if (enable_verbose_dumps)
+		{
+			dumpSentAppearance(dump_prefix);
+		}
 		LL_INFOS("Avatar") << gAgentAvatarp->avString() << "TAT: Sending cached texture data" << LL_ENDL;
 		for (U8 baked_index = 0; baked_index < BAKED_NUM_INDICES; baked_index++)
 		{
diff --git a/indra/newview/llagent.h b/indra/newview/llagent.h
index 693c123851b..306dc2d99c9 100755
--- a/indra/newview/llagent.h
+++ b/indra/newview/llagent.h
@@ -845,6 +845,7 @@ class LLAgent : public LLOldEvents::LLObservable
 public:
 	void			sendMessage(); // Send message to this agent's region
 	void			sendReliableMessage();
+	void 			dumpSentAppearance(const std::string& dump_prefix);
 	void			sendAgentSetAppearance();
 	void 			sendAgentDataUpdateRequest();
 	void 			sendAgentUserInfoRequest();
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 537bb70579c..1ea1b027f02 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -6617,7 +6617,7 @@ void LLVOAvatar::dumpAppearanceMsgParams( const std::string& dump_prefix,
 	}
 	else
 	{
-		llinfos << "xmlfile write handle obtained : " << fullpath << llendl;
+		LL_DEBUGS("Avatar") << "dumping appearance message to " << fullpath << llendl;
 	}
 
 
@@ -6758,18 +6758,18 @@ bool resolve_appearance_version(const LLAppearanceMessageContents& contents, S32
 	if (contents.mParamAppearanceVersion >= 0) // use visual param if available.
 	{
 		appearance_version = contents.mParamAppearanceVersion;
-		LL_DEBUGS("Avatar") << "appversion set by appearance_version param: " << appearance_version << llendl;
 	}
 	if (contents.mAppearanceVersion >= 0)
 	{
 		appearance_version = contents.mAppearanceVersion;
-		LL_DEBUGS("Avatar") << "appversion set by appearance_version field: " << appearance_version << llendl;
 	}
 	if (contents.mAppearanceVersion < 0) // still not set, go with 0.
 	{
 		appearance_version = 0;
-		LL_DEBUGS("Avatar") << "appversion set by default: " << appearance_version << llendl;
 	}
+	LL_DEBUGS("Avatar") << "appearance version info - field " << contents.mAppearanceVersion
+						<< " param: " << contents.mParamAppearanceVersion
+						<< " final: " << appearance_version << llendl;
 	return true;
 }
 
-- 
GitLab


From b0f2f02333a87598299b490a1e42eb42a8125f74 Mon Sep 17 00:00:00 2001
From: callum_linden <none@none>
Date: Fri, 1 Feb 2013 08:44:52 -0800
Subject: [PATCH 257/436] Removed (most) references to older FMOD library -
 still a little Linux clean up left

---
 autobuild.xml                           |  51 --
 indra/cmake/CMakeLists.txt              |   2 -
 indra/cmake/Copy3rdPartyLibs.cmake      |  39 --
 indra/cmake/FMOD.cmake                  |  39 --
 indra/cmake/FindFMOD.cmake              |  44 --
 indra/llaudio/CMakeLists.txt            |  25 -
 indra/llaudio/llaudioengine_fmod.cpp    | 781 ------------------------
 indra/llaudio/llaudioengine_fmod.h      | 124 ----
 indra/llaudio/llaudioengine_fmodex.h    |   1 -
 indra/llaudio/lllistener_fmod.cpp       | 125 ----
 indra/llaudio/lllistener_fmod.h         |  58 --
 indra/llaudio/lllistener_fmodex.cpp     |   2 +-
 indra/llaudio/llstreamingaudio_fmod.cpp | 356 -----------
 indra/llaudio/llstreamingaudio_fmod.h   |  62 --
 indra/llaudio/llstreamingaudio_fmodex.h |   6 +-
 indra/llaudio/llvorbisencode.cpp        |   2 +-
 indra/newview/CMakeLists.txt            |  45 +-
 indra/newview/fmodwrapper.cpp           |   4 +-
 indra/newview/llappviewer.cpp           |  14 +-
 indra/newview/llstartup.cpp             |  19 +-
 indra/newview/viewer_manifest.py        |   4 -
 21 files changed, 21 insertions(+), 1782 deletions(-)
 delete mode 100644 indra/cmake/FMOD.cmake
 delete mode 100644 indra/cmake/FindFMOD.cmake
 delete mode 100644 indra/llaudio/llaudioengine_fmod.cpp
 delete mode 100644 indra/llaudio/llaudioengine_fmod.h
 delete mode 100644 indra/llaudio/lllistener_fmod.cpp
 delete mode 100644 indra/llaudio/lllistener_fmod.h
 delete mode 100644 indra/llaudio/llstreamingaudio_fmod.cpp
 delete mode 100644 indra/llaudio/llstreamingaudio_fmod.h

diff --git a/autobuild.xml b/autobuild.xml
index caccdf7abc1..442e4d07654 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -483,54 +483,6 @@
           </map>
         </map>
       </map>
-      <key>fmod</key>
-      <map>
-        <key>license</key>
-        <string>fmod</string>
-        <key>license_file</key>
-        <string>LICENSES/fmod.txt</string>
-        <key>name</key>
-        <string>fmod</string>
-        <key>platforms</key>
-        <map>
-          <key>darwin</key>
-          <map>
-            <key>archive</key>
-            <map>
-              <key>hash</key>
-              <string>61ead113e6479452e6b690c84b4e9d30</string>
-              <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmod-private/rev/221852/arch/Darwin/installer/fmod-3.75-darwin-20110222.tar.bz2</string>
-            </map>
-            <key>name</key>
-            <string>darwin</string>
-          </map>
-          <key>linux</key>
-          <map>
-            <key>archive</key>
-            <map>
-              <key>hash</key>
-              <string>0c61d643db54d2e5999be8254569d8b3</string>
-              <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmod-private/rev/221852/arch/Linux/installer/fmod-3.75-linux-20110223.tar.bz2</string>
-            </map>
-            <key>name</key>
-            <string>linux</string>
-          </map>
-          <key>windows</key>
-          <map>
-            <key>archive</key>
-            <map>
-              <key>hash</key>
-              <string>d9a9a6ad86895353bcd63374a4c1a91d</string>
-              <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmod-private/rev/221852/arch/CYGWIN/installer/fmod-3.75-windows-20110222.tar.bz2</string>
-            </map>
-            <key>name</key>
-            <string>windows</string>
-          </map>
-        </map>
-      </map>
       <key>fmodex</key>
       <map>
         <key>license</key>
@@ -2541,7 +2493,6 @@
                   <string>"Visual Studio 10"</string>
                   <string>-DUNATTENDED:BOOL=ON</string>
                   <string>-DUSE_KDU=FALSE</string>
-                  <string>-DFMOD=FALSE</string>
                 </array>
               </map>
               <key>name</key>
@@ -2630,7 +2581,6 @@
                   <string>-DUNATTENDED:BOOL=ON</string>
                   <string>-DINSTALL_PROPRIETARY=FALSE</string>
                   <string>-DUSE_KDU=FALSE</string>
-                  <string>-DFMOD=FALSE</string>
                 </array>
               </map>
               <key>name</key>
@@ -2718,7 +2668,6 @@
                   <string>-DUNATTENDED:BOOL=ON</string>
                   <string>-DINSTALL_PROPRIETARY=FALSE</string>
                   <string>-DUSE_KDU=FALSE</string>
-                  <string>-DFMOD=FALSE</string>
                 </array>
               </map>
               <key>name</key>
diff --git a/indra/cmake/CMakeLists.txt b/indra/cmake/CMakeLists.txt
index e9c05546415..acff0621d11 100644
--- a/indra/cmake/CMakeLists.txt
+++ b/indra/cmake/CMakeLists.txt
@@ -25,7 +25,6 @@ set(cmake_SOURCE_FILES
     FindBerkeleyDB.cmake
     FindCARes.cmake
     FindELFIO.cmake
-    FindFMOD.cmake
     FindFMODEX.cmake
     FindGooglePerfTools.cmake
     FindMono.cmake
@@ -33,7 +32,6 @@ set(cmake_SOURCE_FILES
     FindOpenJPEG.cmake
     FindXmlRpcEpi.cmake
     FindZLIB.cmake
-    FMOD.cmake
     FMODEX.cmake
     FreeType.cmake
     GLOD.cmake
diff --git a/indra/cmake/Copy3rdPartyLibs.cmake b/indra/cmake/Copy3rdPartyLibs.cmake
index c28361398f3..f9e2013483b 100644
--- a/indra/cmake/Copy3rdPartyLibs.cmake
+++ b/indra/cmake/Copy3rdPartyLibs.cmake
@@ -67,11 +67,6 @@ if(WINDOWS)
       set(release_files ${release_files} fmodex.dll)
     endif (FMODEX)
 
-    if (FMOD)
-      set(debug_files ${debug_files} fmod.dll)
-      set(release_files ${release_files} fmod.dll)
-    endif (FMOD)
-
 #*******************************
 # Copy MS C runtime dlls, required for packaging.
 # *TODO - Adapt this to support VC9
@@ -232,10 +227,6 @@ elseif(DARWIN)
       set(release_files ${release_files} libfmodex.dylib)
     endif (FMODEX)
 
-    if (FMOD)
-        # fmod is statically linked on darwin
-       set(fmod_files "")
-    endif (FMOD)
 elseif(LINUX)
     # linux is weird, multiple side by side configurations aren't supported
     # and we don't seem to have any debug shared libs built yet anyways...
@@ -299,10 +290,6 @@ elseif(LINUX)
       set(release_files ${release_files} "libtcmalloc_minimal.so")
     endif (USE_TCMALLOC)
 
-    if (FMOD)
-      set(release_files ${release_files} "libfmod-3.75.so")
-    endif (FMOD)
-
 else(WINDOWS)
     message(STATUS "WARNING: unrecognized platform for staging 3rd party libs, skipping...")
     set(vivox_src_dir "${CMAKE_SOURCE_DIR}/newview/vivox-runtime/i686-linux")
@@ -316,8 +303,6 @@ else(WINDOWS)
     set(release_src_dir "${CMAKE_SOURCE_DIR}/../libraries/i686-linux/lib/release")
     set(release_files "")
 
-    set(fmod_files "")
-
     set(debug_llkdu_src "")
     set(debug_llkdu_dst "")
     set(release_llkdu_src "")
@@ -380,30 +365,6 @@ copy_if_different(
     )
 set(third_party_targets ${third_party_targets} ${out_targets})
 
-if (FMOD_SDK_DIR)
-    copy_if_different(
-        ${FMOD_SDK_DIR} 
-        "${CMAKE_CURRENT_BINARY_DIR}/Debug"
-        out_targets 
-        ${fmod_files}
-        )
-    set(all_targets ${all_targets} ${out_targets})
-    copy_if_different(
-        ${FMOD_SDK_DIR} 
-        "${CMAKE_CURRENT_BINARY_DIR}/Release"
-        out_targets 
-        ${fmod_files}
-        )
-    set(all_targets ${all_targets} ${out_targets})
-    copy_if_different(
-        ${FMOD_SDK_DIR} 
-        "${CMAKE_CURRENT_BINARY_DIR}/RelWithDbgInfo"
-        out_targets 
-        ${fmod_files}
-        )
-    set(all_targets ${all_targets} ${out_targets})
-endif (FMOD_SDK_DIR)
-
 if(NOT STANDALONE)
   add_custom_target(
       stage_third_party_libs ALL
diff --git a/indra/cmake/FMOD.cmake b/indra/cmake/FMOD.cmake
deleted file mode 100644
index ef0ae58bdfd..00000000000
--- a/indra/cmake/FMOD.cmake
+++ /dev/null
@@ -1,39 +0,0 @@
-# -*- cmake -*-
-
-# FMOD can be set when launching the make using the argument -DFMOD:BOOL=ON
-# When building using proprietary binaries though (i.e. having access to LL private servers),
-# we always build with FMOD.
-# Open source devs should use the -DFMOD:BOOL=ON then if they want to build with FMOD, whether
-# they are using STANDALONE or not.
-if (INSTALL_PROPRIETARY)
-  set(FMOD OFF CACHE BOOL "Use FMOD sound library.")
-endif (INSTALL_PROPRIETARY)
-
-if (FMOD)
-  if (STANDALONE)
-    # In that case, we use the version of the library installed on the system
-    set(FMOD_FIND_REQUIRED ON)
-    include(FindFMOD)
-  else (STANDALONE)
-    if (FMOD_LIBRARY AND FMOD_INCLUDE_DIR)
-      # If the path have been specified in the arguments, use that
-      set(FMOD_LIBRARIES ${FMOD_LIBRARY})
-      MESSAGE(STATUS "Using FMOD path: ${FMOD_LIBRARIES}, ${FMOD_INCLUDE_DIR}")
-    else (FMOD_LIBRARY AND FMOD_INCLUDE_DIR)
-      # If not, we're going to try to get the package listed in autobuild.xml
-      # Note: if you're not using INSTALL_PROPRIETARY, the package URL should be local (file:/// URL) 
-      # as accessing the private LL location will fail if you don't have the credential
-      include(Prebuilt)
-      use_prebuilt_binary(fmod)    
-      if (WINDOWS)
-        set(FMOD_LIBRARY fmod)
-      elseif (DARWIN)
-        set(FMOD_LIBRARY fmod)
-      elseif (LINUX)
-        set(FMOD_LIBRARY fmod-3.75)
-      endif (WINDOWS)
-      set(FMOD_LIBRARIES ${FMOD_LIBRARY})
-      set(FMOD_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/include)
-    endif (FMOD_LIBRARY AND FMOD_INCLUDE_DIR)
-  endif (STANDALONE)
-endif (FMOD)
diff --git a/indra/cmake/FindFMOD.cmake b/indra/cmake/FindFMOD.cmake
deleted file mode 100644
index 1ebbc8c96e5..00000000000
--- a/indra/cmake/FindFMOD.cmake
+++ /dev/null
@@ -1,44 +0,0 @@
-# -*- cmake -*-
-
-# - Find FMOD
-# Find the FMOD includes and library
-# This module defines
-#  FMOD_INCLUDE_DIR, where to find fmod.h and fmod_errors.h
-#  FMOD_LIBRARIES, the libraries needed to use FMOD.
-#  FMOD, If false, do not try to use FMOD.
-# also defined, but not for general use are
-#  FMOD_LIBRARY, where to find the FMOD library.
-
-FIND_PATH(FMOD_INCLUDE_DIR fmod.h PATH_SUFFIXES fmod)
-
-SET(FMOD_NAMES ${FMOD_NAMES} fmod fmodvc fmodex fmod-3.75)
-FIND_LIBRARY(FMOD_LIBRARY
-  NAMES ${FMOD_NAMES}
-  PATH_SUFFIXES fmod
-  )
-
-IF (FMOD_LIBRARY AND FMOD_INCLUDE_DIR)
-  SET(FMOD_LIBRARIES ${FMOD_LIBRARY})
-  SET(FMOD_FOUND "YES")
-ELSE (FMOD_LIBRARY AND FMOD_INCLUDE_DIR)
-  SET(FMOD_FOUND "NO")
-ENDIF (FMOD_LIBRARY AND FMOD_INCLUDE_DIR)
-
-IF (FMOD_FOUND)
-  IF (NOT FMOD_FIND_QUIETLY)
-    MESSAGE(STATUS "Found FMOD: ${FMOD_LIBRARIES}")
-  ENDIF (NOT FMOD_FIND_QUIETLY)
-ELSE (FMOD_FOUND)
-  IF (FMOD_FIND_REQUIRED)
-    MESSAGE(FATAL_ERROR "Could not find FMOD library")
-  ENDIF (FMOD_FIND_REQUIRED)
-ENDIF (FMOD_FOUND)
-
-# Deprecated declarations.
-SET (NATIVE_FMOD_INCLUDE_PATH ${FMOD_INCLUDE_DIR} )
-GET_FILENAME_COMPONENT (NATIVE_FMOD_LIB_PATH ${FMOD_LIBRARY} PATH)
-
-MARK_AS_ADVANCED(
-  FMOD_LIBRARY
-  FMOD_INCLUDE_DIR
-  )
diff --git a/indra/llaudio/CMakeLists.txt b/indra/llaudio/CMakeLists.txt
index b2d7b7c9112..f27bcb27d1c 100644
--- a/indra/llaudio/CMakeLists.txt
+++ b/indra/llaudio/CMakeLists.txt
@@ -6,7 +6,6 @@ include(00-Common)
 include(Audio)
 include(LLAudio)
 include(FMODEX)
-set(FMOD OFF)
 include(OPENAL)
 include(LLCommon)
 include(LLMath)
@@ -61,30 +60,6 @@ if (FMODEX)
          )
 endif (FMODEX)
 
-if (FMOD)
-    include_directories(
-        ${FMOD_INCLUDE_DIR}
-        )
-
-    list(APPEND llaudio_SOURCE_FILES
-         llaudioengine_fmod.cpp
-         lllistener_fmod.cpp
-         llstreamingaudio_fmod.cpp
-         )
-
-    list(APPEND llaudio_HEADER_FILES
-         llaudioengine_fmod.h
-         lllistener_fmod.h
-         llstreamingaudio_fmod.h
-         )
-
-    if (LINUX OR DARWIN)
-      set_source_files_properties(llaudioengine_fmod.cpp
-                                  llstreamingaudio_fmod.cpp
-                                  COMPILE_FLAGS -Wno-write-strings)
-    endif (LINUX OR DARWIN)
-endif (FMOD)
-
 if (OPENAL)
   list(APPEND llaudio_SOURCE_FILES
     llaudioengine_openal.cpp
diff --git a/indra/llaudio/llaudioengine_fmod.cpp b/indra/llaudio/llaudioengine_fmod.cpp
deleted file mode 100644
index a40de9fa68b..00000000000
--- a/indra/llaudio/llaudioengine_fmod.cpp
+++ /dev/null
@@ -1,781 +0,0 @@
-/** 
- * @file audioengine_fmod.cpp
- * @brief Implementation of LLAudioEngine class abstracting the audio support as a FMOD 3D implementation
- *
- * $LicenseInfo:firstyear=2002&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- * 
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- * 
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- * 
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
- * $/LicenseInfo$
- */
-
-#include "linden_common.h"
-
-#include "llstreamingaudio.h"
-#include "llstreamingaudio_fmod.h"
-
-#include "llaudioengine_fmod.h"
-#include "lllistener_fmod.h"
-
-#include "llerror.h"
-#include "llmath.h"
-#include "llrand.h"
-
-#include "fmod.h"
-#include "fmod_errors.h"
-#include "lldir.h"
-#include "llapr.h"
-
-#include "sound_ids.h"
-
-
-extern "C" {
-	void * F_CALLBACKAPI windCallback(void *originalbuffer, void *newbuffer, int length, void* userdata);
-}
-
-
-LLAudioEngine_FMOD::LLAudioEngine_FMOD()
-{
-	mInited = false;
-	mWindGen = NULL;
-	mWindDSP = NULL;
-}
-
-
-LLAudioEngine_FMOD::~LLAudioEngine_FMOD()
-{
-}
-
-
-bool LLAudioEngine_FMOD::init(const S32 num_channels, void* userdata)
-{
-	LLAudioEngine::init(num_channels, userdata);
-
-	// Reserve one extra channel for the http stream.
-	if (!FSOUND_SetMinHardwareChannels(num_channels + 1))
-	{
-		LL_WARNS("AppInit") << "FMOD::init[0](), error: " << FMOD_ErrorString(FSOUND_GetError()) << LL_ENDL;
-	}
-
-	LL_DEBUGS("AppInit") << "LLAudioEngine_FMOD::init() initializing FMOD" << LL_ENDL;
-
-	F32 version = FSOUND_GetVersion();
-	if (version < FMOD_VERSION)
-	{
-		LL_WARNS("AppInit") << "Error : You are using the wrong FMOD version (" << version
-			<< ")!  You should be using FMOD " << FMOD_VERSION << LL_ENDL;
-		//return false;
-	}
-
-	U32 fmod_flags = 0x0;
-
-#if LL_WINDOWS
-	// Windows needs to know which window is frontmost.
-	// This must be called before FSOUND_Init() per the FMOD docs.
-	// This could be used to let FMOD handle muting when we lose focus,
-	// but we don't actually want to do that because we want to distinguish
-	// between minimized and not-focused states.
-	if (!FSOUND_SetHWND(userdata))
-	{
-		LL_WARNS("AppInit") << "Error setting FMOD window: "
-			<< FMOD_ErrorString(FSOUND_GetError()) << LL_ENDL;
-		return false;
-	}
-	// Play audio when we don't have focus.
-	// (For example, IM client on top of us.)
-	// This means we also try to play audio when minimized,
-	// so we manually handle muting in that case. JC
-	fmod_flags |= FSOUND_INIT_GLOBALFOCUS;
-#endif
-
-#if LL_LINUX
-	// initialize the FMOD engine
-
-	// This is a hack to use only FMOD's basic FPU mixer
-	// when the LL_VALGRIND environmental variable is set,
-	// otherwise valgrind will fall over on FMOD's MMX detection
-	if (getenv("LL_VALGRIND"))		/*Flawfinder: ignore*/
-	{
-		LL_INFOS("AppInit") << "Pacifying valgrind in FMOD init." << LL_ENDL;
-		FSOUND_SetMixer(FSOUND_MIXER_QUALITY_FPU);
-	}
-
-	// If we don't set an output method, Linux FMOD always
-	// decides on OSS and fails otherwise.  So we'll manually
-	// try ESD, then OSS, then ALSA.
-	// Why this order?  See SL-13250, but in short, OSS emulated
-	// on top of ALSA is ironically more reliable than raw ALSA.
-	// Ack, and ESD has more reliable failure modes - but has worse
-	// latency - than all of them, so wins for now.
-	bool audio_ok = false;
-
-	if (!audio_ok)
-	{
-		if (NULL == getenv("LL_BAD_FMOD_ESD")) /*Flawfinder: ignore*/
-		{
-			LL_DEBUGS("AppInit") << "Trying ESD audio output..." << LL_ENDL;
-			if(FSOUND_SetOutput(FSOUND_OUTPUT_ESD) &&
-			   FSOUND_Init(44100, num_channels, fmod_flags))
-			{
-				LL_DEBUGS("AppInit") << "ESD audio output initialized OKAY"
-					<< LL_ENDL;
-				audio_ok = true;
-			} else {
-				LL_WARNS("AppInit") << "ESD audio output FAILED to initialize: "
-					<< FMOD_ErrorString(FSOUND_GetError()) << LL_ENDL;
-			}
-		} else {
-			LL_DEBUGS("AppInit") << "ESD audio output SKIPPED" << LL_ENDL;
-		}
-	}
-	if (!audio_ok)
-	{
-		if (NULL == getenv("LL_BAD_FMOD_OSS")) 	 /*Flawfinder: ignore*/
-		{
-			LL_DEBUGS("AppInit") << "Trying OSS audio output..."	<< LL_ENDL;
-			if(FSOUND_SetOutput(FSOUND_OUTPUT_OSS) &&
-			   FSOUND_Init(44100, num_channels, fmod_flags))
-			{
-				LL_DEBUGS("AppInit") << "OSS audio output initialized OKAY" << LL_ENDL;
-				audio_ok = true;
-			} else {
-				LL_WARNS("AppInit") << "OSS audio output FAILED to initialize: "
-					<< FMOD_ErrorString(FSOUND_GetError()) << LL_ENDL;
-			}
-		} else {
-			LL_DEBUGS("AppInit") << "OSS audio output SKIPPED" << LL_ENDL;
-		}
-	}
-	if (!audio_ok)
-	{
-		if (NULL == getenv("LL_BAD_FMOD_ALSA"))		/*Flawfinder: ignore*/
-		{
-			LL_DEBUGS("AppInit") << "Trying ALSA audio output..." << LL_ENDL;
-			if(FSOUND_SetOutput(FSOUND_OUTPUT_ALSA) &&
-			   FSOUND_Init(44100, num_channels, fmod_flags))
-			{
-				LL_DEBUGS("AppInit") << "ALSA audio output initialized OKAY" << LL_ENDL;
-				audio_ok = true;
-			} else {
-				LL_WARNS("AppInit") << "ALSA audio output FAILED to initialize: "
-					<< FMOD_ErrorString(FSOUND_GetError()) << LL_ENDL;
-			}
-		} else {
-			LL_DEBUGS("AppInit") << "OSS audio output SKIPPED" << LL_ENDL;
-		}
-	}
-	if (!audio_ok)
-	{
-		LL_WARNS("AppInit") << "Overall audio init failure." << LL_ENDL;
-		return false;
-	}
-
-	// On Linux, FMOD causes a SIGPIPE for some netstream error
-	// conditions (an FMOD bug); ignore SIGPIPE so it doesn't crash us.
-	// NOW FIXED in FMOD 3.x since 2006-10-01.
-	//signal(SIGPIPE, SIG_IGN);
-
-	// We're interested in logging which output method we
-	// ended up with, for QA purposes.
-	switch (FSOUND_GetOutput())
-	{
-	case FSOUND_OUTPUT_NOSOUND: LL_DEBUGS("AppInit") << "Audio output: NoSound" << LL_ENDL; break;
-	case FSOUND_OUTPUT_OSS:	LL_DEBUGS("AppInit") << "Audio output: OSS" << LL_ENDL; break;
-	case FSOUND_OUTPUT_ESD:	LL_DEBUGS("AppInit") << "Audio output: ESD" << LL_ENDL; break;
-	case FSOUND_OUTPUT_ALSA: LL_DEBUGS("AppInit") << "Audio output: ALSA" << LL_ENDL; break;
-	default: LL_INFOS("AppInit") << "Audio output: Unknown!" << LL_ENDL; break;
-	};
-
-#else // LL_LINUX
-
-	// initialize the FMOD engine
-	if (!FSOUND_Init(44100, num_channels, fmod_flags))
-	{
-		LL_WARNS("AppInit") << "Error initializing FMOD: "
-			<< FMOD_ErrorString(FSOUND_GetError()) << LL_ENDL;
-		return false;
-	}
-	
-#endif
-
-	// set up our favourite FMOD-native streaming audio implementation if none has already been added
-	if (!getStreamingAudioImpl()) // no existing implementation added
-		setStreamingAudioImpl(new LLStreamingAudio_FMOD());
-
-	LL_DEBUGS("AppInit") << "LLAudioEngine_FMOD::init() FMOD initialized correctly" << LL_ENDL;
-
-	mInited = true;
-
-	return true;
-}
-
-
-std::string LLAudioEngine_FMOD::getDriverName(bool verbose)
-{
-	if (verbose)
-	{
-		F32 version = FSOUND_GetVersion();
-		return llformat("FMOD version %f", version);
-	}
-	else
-	{
-		return "FMOD";
-	}
-}
-
-
-void LLAudioEngine_FMOD::allocateListener(void)
-{	
-	mListenerp = (LLListener *) new LLListener_FMOD();
-	if (!mListenerp)
-	{
-		llwarns << "Listener creation failed" << llendl;
-	}
-}
-
-
-void LLAudioEngine_FMOD::shutdown()
-{
-	if (mWindDSP)
-	{
-		FSOUND_DSP_SetActive(mWindDSP,false);
-		FSOUND_DSP_Free(mWindDSP);
-	}
-
-	stopInternetStream();
-
-	LLAudioEngine::shutdown();
-	
-	llinfos << "LLAudioEngine_FMOD::shutdown() closing FMOD" << llendl;
-	FSOUND_Close();
-	llinfos << "LLAudioEngine_FMOD::shutdown() done closing FMOD" << llendl;
-
-	delete mListenerp;
-	mListenerp = NULL;
-}
-
-
-LLAudioBuffer * LLAudioEngine_FMOD::createBuffer()
-{
-	return new LLAudioBufferFMOD();
-}
-
-
-LLAudioChannel * LLAudioEngine_FMOD::createChannel()
-{
-	return new LLAudioChannelFMOD();
-}
-
-
-bool LLAudioEngine_FMOD::initWind()
-{
-	if (!mWindGen)
-	{
-		bool enable;
-		
-		switch (FSOUND_GetMixer())
-		{
-			case FSOUND_MIXER_MMXP5:
-			case FSOUND_MIXER_MMXP6:
-			case FSOUND_MIXER_QUALITY_MMXP5:
-			case FSOUND_MIXER_QUALITY_MMXP6:
-				enable = (typeid(MIXBUFFERFORMAT) == typeid(S16));
-				break;
-			case FSOUND_MIXER_BLENDMODE:
-				enable = (typeid(MIXBUFFERFORMAT) == typeid(S32));
-				break;
-			case FSOUND_MIXER_QUALITY_FPU:
-				enable = (typeid(MIXBUFFERFORMAT) == typeid(F32));
-				break;
-			default:
-				// FSOUND_GetMixer() does not return a valid mixer type on Darwin
-				LL_INFOS("AppInit") << "Unknown FMOD mixer type, assuming default" << LL_ENDL;
-				enable = true;
-				break;
-		}
-		
-		if (enable)
-		{
-			mWindGen = new LLWindGen<MIXBUFFERFORMAT>(FSOUND_GetOutputRate());
-		}
-		else
-		{
-			LL_WARNS("AppInit") << "Incompatible FMOD mixer type, wind noise disabled" << LL_ENDL;
-		}
-	}
-
-	mNextWindUpdate = 0.0;
-
-	if (mWindGen && !mWindDSP)
-	{
-		mWindDSP = FSOUND_DSP_Create(&windCallback, FSOUND_DSP_DEFAULTPRIORITY_CLEARUNIT + 20, mWindGen);
-	}
-	if (mWindDSP)
-	{
-		FSOUND_DSP_SetActive(mWindDSP, true);
-		return true;
-	}
-	
-	return false;
-}
-
-
-void LLAudioEngine_FMOD::cleanupWind()
-{
-	if (mWindDSP)
-	{
-		FSOUND_DSP_SetActive(mWindDSP, false);
-		FSOUND_DSP_Free(mWindDSP);
-		mWindDSP = NULL;
-	}
-
-	delete mWindGen;
-	mWindGen = NULL;
-}
-
-
-//-----------------------------------------------------------------------
-void LLAudioEngine_FMOD::updateWind(LLVector3 wind_vec, F32 camera_height_above_water)
-{
-	LLVector3 wind_pos;
-	F64 pitch;
-	F64 center_freq;
-
-	if (!mEnableWind)
-	{
-		return;
-	}
-	
-	if (mWindUpdateTimer.checkExpirationAndReset(LL_WIND_UPDATE_INTERVAL))
-	{
-		
-		// wind comes in as Linden coordinate (+X = forward, +Y = left, +Z = up)
-		// need to convert this to the conventional orientation DS3D and OpenAL use
-		// where +X = right, +Y = up, +Z = backwards
-
-		wind_vec.setVec(-wind_vec.mV[1], wind_vec.mV[2], -wind_vec.mV[0]);
-
-		// cerr << "Wind update" << endl;
-
-		pitch = 1.0 + mapWindVecToPitch(wind_vec);
-		center_freq = 80.0 * pow(pitch,2.5*(mapWindVecToGain(wind_vec)+1.0));
-		
-		mWindGen->mTargetFreq = (F32)center_freq;
-		mWindGen->mTargetGain = (F32)mapWindVecToGain(wind_vec) * mMaxWindGain;
-		mWindGen->mTargetPanGainR = (F32)mapWindVecToPan(wind_vec);
-  	}
-}
-
-/*
-//-----------------------------------------------------------------------
-void LLAudioEngine_FMOD::setSourceMinDistance(U16 source_num, F64 distance)
-{
-	if (!mInited)
-	{
-		return;
-	}
-	if (mBuffer[source_num])
-	{
-		mMinDistance[source_num] = (F32) distance;
-		if (!FSOUND_Sample_SetMinMaxDistance(mBuffer[source_num],mMinDistance[source_num], mMaxDistance[source_num]))
-		{
-			llwarns << "FMOD::setSourceMinDistance(" << source_num << "), error: " << FMOD_ErrorString(FSOUND_GetError()) << llendl;
-		}
-	}
-}
-
-//-----------------------------------------------------------------------
-void LLAudioEngine_FMOD::setSourceMaxDistance(U16 source_num, F64 distance)
-{
-	if (!mInited)
-	{
-		return;
-	}
-	if (mBuffer[source_num])
-	{
-		mMaxDistance[source_num] = (F32) distance;
-		if (!FSOUND_Sample_SetMinMaxDistance(mBuffer[source_num],mMinDistance[source_num], mMaxDistance[source_num]))
-		{
-			llwarns << "FMOD::setSourceMaxDistance(" << source_num << "), error: " << FMOD_ErrorString(FSOUND_GetError()) << llendl;
-		}
-	}
-}
-
-//-----------------------------------------------------------------------
-void LLAudioEngine_FMOD::get3DParams(S32 source_num, S32 *volume, S32 *freq, S32 *inside, S32 *outside, LLVector3 *orient, S32 *out_volume, F32 *min_dist, F32 *max_dist)
-{
-	*volume = 0;
-	*freq = 0;
-	*inside = 0;
-	*outside = 0;
-	*orient = LLVector3::zero;
-	*out_volume = 0;
-	*min_dist = 0.f;
-	*max_dist = 0.f;
-}
-
-*/
-
-
-//-----------------------------------------------------------------------
-void LLAudioEngine_FMOD::setInternalGain(F32 gain)
-{
-	if (!mInited)
-	{
-		return;
-	}
-
-	gain = llclamp( gain, 0.0f, 1.0f );
-	FSOUND_SetSFXMasterVolume( llround( 255.0f * gain ) );
-
-	LLStreamingAudioInterface *saimpl = getStreamingAudioImpl();
-	if ( saimpl )
-	{
-		// fmod likes its streaming audio channel gain re-asserted after
-		// master volume change.
-		saimpl->setGain(saimpl->getGain());
-	}
-}
-
-//
-// LLAudioChannelFMOD implementation
-//
-
-LLAudioChannelFMOD::LLAudioChannelFMOD() : LLAudioChannel(), mChannelID(0), mLastSamplePos(0)
-{
-}
-
-
-LLAudioChannelFMOD::~LLAudioChannelFMOD()
-{
-	cleanup();
-}
-
-
-bool LLAudioChannelFMOD::updateBuffer()
-{
-	if (LLAudioChannel::updateBuffer())
-	{
-		// Base class update returned true, which means that we need to actually
-		// set up the channel for a different buffer.
-
-		LLAudioBufferFMOD *bufferp = (LLAudioBufferFMOD *)mCurrentSourcep->getCurrentBuffer();
-
-		// Grab the FMOD sample associated with the buffer
-		FSOUND_SAMPLE *samplep = bufferp->getSample();
-		if (!samplep)
-		{
-			// This is bad, there should ALWAYS be a sample associated with a legit
-			// buffer.
-			llerrs << "No FMOD sample!" << llendl;
-			return false;
-		}
-
-
-		// Actually play the sound.  Start it off paused so we can do all the necessary
-		// setup.
-		mChannelID = FSOUND_PlaySoundEx(FSOUND_FREE, samplep, FSOUND_DSP_GetSFXUnit(), true);
-
-		//llinfos << "Setting up channel " << std::hex << mChannelID << std::dec << llendl;
-	}
-
-	// If we have a source for the channel, we need to update its gain.
-	if (mCurrentSourcep)
-	{
-		// SJB: warnings can spam and hurt framerate, disabling
-		if (!FSOUND_SetVolume(mChannelID, llround(getSecondaryGain() * mCurrentSourcep->getGain() * 255.0f)))
-		{
-// 			llwarns << "LLAudioChannelFMOD::updateBuffer error: " << FMOD_ErrorString(FSOUND_GetError()) << llendl;
-		}
-		
-		if (!FSOUND_SetLoopMode(mChannelID, mCurrentSourcep->isLoop() ? FSOUND_LOOP_NORMAL : FSOUND_LOOP_OFF))
-		{
-// 			llwarns << "Channel " << mChannelID << "Source ID: " << mCurrentSourcep->getID()
-// 					<< " at " << mCurrentSourcep->getPositionGlobal() << llendl;
-// 			llwarns << "LLAudioChannelFMOD::updateBuffer error: " << FMOD_ErrorString(FSOUND_GetError()) << llendl;
-		}
-	}
-
-	return true;
-}
-
-
-void LLAudioChannelFMOD::update3DPosition()
-{
-	if (!mChannelID)
-	{
-		// We're not actually a live channel (i.e., we're not playing back anything)
-		return;
-	}
-
-	LLAudioBufferFMOD *bufferp = (LLAudioBufferFMOD *)mCurrentBufferp;
-	if (!bufferp)
-	{
-		// We don't have a buffer associated with us (should really have been picked up
-		// by the above if.
-		return;
-	}
-
-	if (mCurrentSourcep->isAmbient())
-	{
-		// Ambient sound, don't need to do any positional updates.
-		bufferp->set3DMode(false);
-	}
-	else
-	{
-		// Localized sound.  Update the position and velocity of the sound.
-		bufferp->set3DMode(true);
-
-		LLVector3 float_pos;
-		float_pos.setVec(mCurrentSourcep->getPositionGlobal());
-		if (!FSOUND_3D_SetAttributes(mChannelID, float_pos.mV, mCurrentSourcep->getVelocity().mV))
-		{
-			LL_DEBUGS("FMOD") << "LLAudioChannelFMOD::update3DPosition error: " << FMOD_ErrorString(FSOUND_GetError()) << LL_ENDL;
-		}
-	}
-}
-
-
-void LLAudioChannelFMOD::updateLoop()
-{
-	if (!mChannelID)
-	{
-		// May want to clear up the loop/sample counters.
-		return;
-	}
-
-	//
-	// Hack:  We keep track of whether we looped or not by seeing when the
-	// sample position looks like it's going backwards.  Not reliable; may
-	// yield false negatives.
-	//
-	U32 cur_pos = FSOUND_GetCurrentPosition(mChannelID);
-	if (cur_pos < (U32)mLastSamplePos)
-	{
-		mLoopedThisFrame = true;
-	}
-	mLastSamplePos = cur_pos;
-}
-
-
-void LLAudioChannelFMOD::cleanup()
-{
-	if (!mChannelID)
-	{
-		//llinfos << "Aborting cleanup with no channelID." << llendl;
-		return;
-	}
-
-	//llinfos << "Cleaning up channel: " << mChannelID << llendl;
-	if (!FSOUND_StopSound(mChannelID))
-	{
-		LL_DEBUGS("FMOD") << "LLAudioChannelFMOD::cleanup error: " << FMOD_ErrorString(FSOUND_GetError()) << llendl;
-	}
-
-	mCurrentBufferp = NULL;
-	mChannelID = 0;
-}
-
-
-void LLAudioChannelFMOD::play()
-{
-	if (!mChannelID)
-	{
-		llwarns << "Playing without a channelID, aborting" << llendl;
-		return;
-	}
-
-	if (!FSOUND_SetPaused(mChannelID, false))
-	{
-		llwarns << "LLAudioChannelFMOD::play error: " << FMOD_ErrorString(FSOUND_GetError()) << llendl;
-	}
-	getSource()->setPlayedOnce(true);
-}
-
-
-void LLAudioChannelFMOD::playSynced(LLAudioChannel *channelp)
-{
-	LLAudioChannelFMOD *fmod_channelp = (LLAudioChannelFMOD*)channelp;
-	if (!(fmod_channelp->mChannelID && mChannelID))
-	{
-		// Don't have channels allocated to both the master and the slave
-		return;
-	}
-
-	U32 position = FSOUND_GetCurrentPosition(fmod_channelp->mChannelID) % mCurrentBufferp->getLength();
-	// Try to match the position of our sync master
-	if (!FSOUND_SetCurrentPosition(mChannelID, position))
-	{
-		llwarns << "LLAudioChannelFMOD::playSynced unable to set current position" << llendl;
-	}
-
-	// Start us playing
-	play();
-}
-
-
-bool LLAudioChannelFMOD::isPlaying()
-{
-	if (!mChannelID)
-	{
-		return false;
-	}
-
-	return FSOUND_IsPlaying(mChannelID) && (!FSOUND_GetPaused(mChannelID));
-}
-
-
-
-//
-// LLAudioBufferFMOD implementation
-//
-
-
-LLAudioBufferFMOD::LLAudioBufferFMOD()
-{
-	mSamplep = NULL;
-}
-
-
-LLAudioBufferFMOD::~LLAudioBufferFMOD()
-{
-	if (mSamplep)
-	{
-		// Clean up the associated FMOD sample if it exists.
-		FSOUND_Sample_Free(mSamplep);
-		mSamplep = NULL;
-	}
-}
-
-
-bool LLAudioBufferFMOD::loadWAV(const std::string& filename)
-{
-	// Try to open a wav file from disk.  This will eventually go away, as we don't
-	// really want to block doing this.
-	if (filename.empty())
-	{
-		// invalid filename, abort.
-		return false;
-	}
-
-	if (!LLAPRFile::isExist(filename, NULL, LL_APR_RPB))
-	{
-		// File not found, abort.
-		return false;
-	}
-	
-	if (mSamplep)
-	{
-		// If there's already something loaded in this buffer, clean it up.
-		FSOUND_Sample_Free(mSamplep);
-		mSamplep = NULL;
-	}
-
-	// Load up the wav file into an fmod sample
-#if LL_WINDOWS
-	// MikeS. - Loading the sound file manually and then handing it over to FMOD,
-	//	since FMOD uses posix IO internally,
-	// which doesn't work with unicode file paths.
-	LLFILE* sound_file = LLFile::fopen(filename,"rb");	/* Flawfinder: ignore */
-	if (sound_file)
-	{
-		fseek(sound_file,0,SEEK_END);
-		U32	file_length = ftell(sound_file);	//Find the length of the file by seeking to the end and getting the offset
-		size_t	read_count;
-		fseek(sound_file,0,SEEK_SET);	//Seek back to the beginning
-		char*	buffer = new char[file_length];
-		llassert(buffer);
-		read_count = fread((void*)buffer,file_length,1,sound_file);//Load it..
-		if(ferror(sound_file)==0 && (read_count == 1)){//No read error, and we got 1 chunk of our size...
-			unsigned int mode_flags = FSOUND_LOOP_NORMAL | FSOUND_LOADMEMORY;
-									//FSOUND_16BITS | FSOUND_MONO | FSOUND_LOADMEMORY | FSOUND_LOOP_NORMAL;
-			mSamplep = FSOUND_Sample_Load(FSOUND_UNMANAGED, buffer, mode_flags , 0, file_length);
-		}
-		delete[] buffer;
-		fclose(sound_file);
-	}
-#else
-	mSamplep = FSOUND_Sample_Load(FSOUND_UNMANAGED, filename.c_str(), FSOUND_LOOP_NORMAL, 0, 0);
-#endif
-
-	if (!mSamplep)
-	{
-		// We failed to load the file for some reason.
-		llwarns << "Could not load data '" << filename << "': "
-				<< FMOD_ErrorString(FSOUND_GetError()) << llendl;
-
-		//
-		// If we EVER want to load wav files provided by end users, we need
-		// to rethink this!
-		//
-		// file is probably corrupt - remove it.
-		LLFile::remove(filename);
-		return false;
-	}
-
-	// Everything went well, return true
-	return true;
-}
-
-
-U32 LLAudioBufferFMOD::getLength()
-{
-	if (!mSamplep)
-	{
-		return 0;
-	}
-
-	return FSOUND_Sample_GetLength(mSamplep);
-}
-
-
-void LLAudioBufferFMOD::set3DMode(bool use3d)
-{
-	U16 current_mode = FSOUND_Sample_GetMode(mSamplep);
-	
-	if (use3d)
-	{
-		if (!FSOUND_Sample_SetMode(mSamplep, (current_mode & (~FSOUND_2D))))
-		{
-			llwarns << "LLAudioBufferFMOD::set3DMode error: " << FMOD_ErrorString(FSOUND_GetError()) << llendl;
-		}
-	}
-	else
-	{
-		if (!FSOUND_Sample_SetMode(mSamplep, current_mode | FSOUND_2D))
-		{
-			llwarns << "LLAudioBufferFMOD::set3DMode error: " << FMOD_ErrorString(FSOUND_GetError()) << llendl;
-		}
-	}
-}
-
-
-void * F_CALLBACKAPI windCallback(void *originalbuffer, void *newbuffer, int length, void* userdata)
-{
-	// originalbuffer = fmod's original mixbuffer.
-	// newbuffer = the buffer passed from the previous DSP unit.
-	// length = length in samples at this mix time.
-	// userdata = user parameter passed through in FSOUND_DSP_Create.
-
-	LLWindGen<LLAudioEngine_FMOD::MIXBUFFERFORMAT> *windgen =
-		(LLWindGen<LLAudioEngine_FMOD::MIXBUFFERFORMAT> *)userdata;
-	
-	newbuffer = windgen->windGenerate((LLAudioEngine_FMOD::MIXBUFFERFORMAT *)newbuffer, length);
-
-	return newbuffer;
-}
diff --git a/indra/llaudio/llaudioengine_fmod.h b/indra/llaudio/llaudioengine_fmod.h
deleted file mode 100644
index 4582a5d57e1..00000000000
--- a/indra/llaudio/llaudioengine_fmod.h
+++ /dev/null
@@ -1,124 +0,0 @@
-/** 
- * @file audioengine_fmod.h
- * @brief Definition of LLAudioEngine class abstracting the audio
- * support as a FMOD 3D implementation
- *
- * $LicenseInfo:firstyear=2002&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- * 
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- * 
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- * 
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
- * $/LicenseInfo$
- */
-
-#ifndef LL_AUDIOENGINE_FMOD_H
-#define LL_AUDIOENGINE_FMOD_H
-
-#include "llaudioengine.h"
-#include "lllistener_fmod.h"
-#include "llwindgen.h"
-
-#include "fmod.h"
-
-class LLAudioStreamManagerFMOD;
-
-class LLAudioEngine_FMOD : public LLAudioEngine 
-{
-public:
-	LLAudioEngine_FMOD();
-	virtual ~LLAudioEngine_FMOD();
-
-	// initialization/startup/shutdown
-	virtual bool init(const S32 num_channels, void *user_data);
-       	virtual std::string getDriverName(bool verbose);
-	virtual void allocateListener();
-
-	virtual void shutdown();
-
-	/*virtual*/ bool initWind();
-	/*virtual*/ void cleanupWind();
-
-	/*virtual*/void updateWind(LLVector3 direction, F32 camera_height_above_water);
-
-#if LL_DARWIN
-	typedef S32 MIXBUFFERFORMAT;
-#else
-	typedef S16 MIXBUFFERFORMAT;
-#endif
-
-protected:
-	/*virtual*/ LLAudioBuffer *createBuffer(); // Get a free buffer, or flush an existing one if you have to.
-	/*virtual*/ LLAudioChannel *createChannel(); // Create a new audio channel.
-
-	/*virtual*/ void setInternalGain(F32 gain);
-protected:
-	static signed char F_CALLBACKAPI callbackMetaData(char* name, char* value, void* userdata);
-
-	//F32 mMinDistance[MAX_BUFFERS];
-	//F32 mMaxDistance[MAX_BUFFERS];
-
-	bool mInited;
-
-	// On Windows, userdata is the HWND of the application window.
-	void* mUserData;
-
-	LLWindGen<MIXBUFFERFORMAT> *mWindGen;
-	FSOUND_DSPUNIT *mWindDSP;
-};
-
-
-class LLAudioChannelFMOD : public LLAudioChannel
-{
-public:
-	LLAudioChannelFMOD();
-	virtual ~LLAudioChannelFMOD();
-
-protected:
-	/*virtual*/ void play();
-	/*virtual*/ void playSynced(LLAudioChannel *channelp);
-	/*virtual*/ void cleanup();
-	/*virtual*/ bool isPlaying();
-
-	/*virtual*/ bool updateBuffer();
-	/*virtual*/ void update3DPosition();
-	/*virtual*/ void updateLoop();
-
-protected:
-	int mChannelID;
-	S32 mLastSamplePos;
-};
-
-
-class LLAudioBufferFMOD : public LLAudioBuffer
-{
-public:
-	LLAudioBufferFMOD();
-	virtual ~LLAudioBufferFMOD();
-
-	/*virtual*/ bool loadWAV(const std::string& filename);
-	/*virtual*/ U32 getLength();
-	friend class LLAudioChannelFMOD;
-
-	void set3DMode(bool use3d);
-protected:
-	FSOUND_SAMPLE *getSample()	{ return mSamplep; }
-protected:
-	FSOUND_SAMPLE *mSamplep;
-};
-
-
-#endif // LL_AUDIOENGINE_FMOD_H
diff --git a/indra/llaudio/llaudioengine_fmodex.h b/indra/llaudio/llaudioengine_fmodex.h
index cf3d967d4fd..415a9ed0efb 100644
--- a/indra/llaudio/llaudioengine_fmodex.h
+++ b/indra/llaudio/llaudioengine_fmodex.h
@@ -29,7 +29,6 @@
 #define LL_AUDIOENGINE_FMODEX_H
 
 #include "llaudioengine.h"
-#include "lllistener_fmod.h"
 #include "llwindgen.h"
 
 //Stubs
diff --git a/indra/llaudio/lllistener_fmod.cpp b/indra/llaudio/lllistener_fmod.cpp
deleted file mode 100644
index 0138f4345e3..00000000000
--- a/indra/llaudio/lllistener_fmod.cpp
+++ /dev/null
@@ -1,125 +0,0 @@
-/** 
- * @file listener_fmod.cpp
- * @brief implementation of LISTENER class abstracting the audio
- * support as a FMOD 3D implementation (windows only)
- *
- * $LicenseInfo:firstyear=2002&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- * 
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- * 
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- * 
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
- * $/LicenseInfo$
- */
-
-#include "linden_common.h"
-#include "llaudioengine.h"
-#include "lllistener_fmod.h"
-#include "fmod.h"
-
-//-----------------------------------------------------------------------
-// constructor
-//-----------------------------------------------------------------------
-LLListener_FMOD::LLListener_FMOD()
-{
-	init();
-}
-
-//-----------------------------------------------------------------------
-LLListener_FMOD::~LLListener_FMOD()
-{
-}
-
-//-----------------------------------------------------------------------
-void LLListener_FMOD::init(void)
-{
-	// do inherited
-	LLListener::init();
-	mDopplerFactor = 1.0f;
-	mRolloffFactor = 1.0f;
-}
-
-//-----------------------------------------------------------------------
-void LLListener_FMOD::translate(LLVector3 offset)
-{
-	LLListener::translate(offset);
-
-	FSOUND_3D_Listener_SetAttributes(mPosition.mV, NULL, mListenAt.mV[0],mListenAt.mV[1],mListenAt.mV[2], mListenUp.mV[0],mListenUp.mV[1],mListenUp.mV[2]);
-}
-
-//-----------------------------------------------------------------------
-void LLListener_FMOD::setPosition(LLVector3 pos)
-{
-	LLListener::setPosition(pos);
-
-	FSOUND_3D_Listener_SetAttributes(pos.mV, NULL, mListenAt.mV[0],mListenAt.mV[1],mListenAt.mV[2], mListenUp.mV[0],mListenUp.mV[1],mListenUp.mV[2]);
-}
-
-//-----------------------------------------------------------------------
-void LLListener_FMOD::setVelocity(LLVector3 vel)
-{
-	LLListener::setVelocity(vel);
-
-	FSOUND_3D_Listener_SetAttributes(NULL, vel.mV, mListenAt.mV[0],mListenAt.mV[1],mListenAt.mV[2], mListenUp.mV[0],mListenUp.mV[1],mListenUp.mV[2]);
-}
-
-//-----------------------------------------------------------------------
-void LLListener_FMOD::orient(LLVector3 up, LLVector3 at)
-{
-	LLListener::orient(up, at);
-
-	// Welcome to the transition between right and left
-	// (coordinate systems, that is)
-	// Leaving the at vector alone results in a L/R reversal
-	// since DX is left-handed and we (LL, OpenGL, OpenAL) are right-handed
-	at = -at;
-
-	FSOUND_3D_Listener_SetAttributes(NULL, NULL, at.mV[0],at.mV[1],at.mV[2], up.mV[0],up.mV[1],up.mV[2]);
-}
-
-//-----------------------------------------------------------------------
-void LLListener_FMOD::commitDeferredChanges()
-{
-	FSOUND_Update();
-}
-
-
-void LLListener_FMOD::setRolloffFactor(F32 factor)
-{
-	mRolloffFactor = factor;
-	FSOUND_3D_SetRolloffFactor(factor);
-}
-
-
-F32 LLListener_FMOD::getRolloffFactor()
-{
-	return mRolloffFactor;
-}
-
-
-void LLListener_FMOD::setDopplerFactor(F32 factor)
-{
-	mDopplerFactor = factor;
-	FSOUND_3D_SetDopplerFactor(factor);
-}
-
-
-F32 LLListener_FMOD::getDopplerFactor()
-{
-	return mDopplerFactor;
-}
-
-
diff --git a/indra/llaudio/lllistener_fmod.h b/indra/llaudio/lllistener_fmod.h
deleted file mode 100644
index 818da05d516..00000000000
--- a/indra/llaudio/lllistener_fmod.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/** 
- * @file listener_fmod.h
- * @brief Description of LISTENER class abstracting the audio support
- * as an FMOD 3D implementation (windows and Linux)
- *
- * $LicenseInfo:firstyear=2002&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- * 
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- * 
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- * 
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
- * $/LicenseInfo$
- */
-
-#ifndef LL_LISTENER_FMOD_H
-#define LL_LISTENER_FMOD_H
-
-#include "lllistener.h"
-
-class LLListener_FMOD : public LLListener
-{
- public:  
-	LLListener_FMOD();
-	virtual ~LLListener_FMOD();
-	virtual void init();  
-
-	virtual void translate(LLVector3 offset);
-	virtual void setPosition(LLVector3 pos);
-	virtual void setVelocity(LLVector3 vel);
-	virtual void orient(LLVector3 up, LLVector3 at);
-	virtual void commitDeferredChanges();
-
-	virtual void setDopplerFactor(F32 factor);
-	virtual F32 getDopplerFactor();
-	virtual void setRolloffFactor(F32 factor);
-	virtual F32 getRolloffFactor();
-
- protected:
-	 F32 mDopplerFactor;
-	 F32 mRolloffFactor;
-};
-
-#endif
-
-
diff --git a/indra/llaudio/lllistener_fmodex.cpp b/indra/llaudio/lllistener_fmodex.cpp
index 4bc745b89a3..2509a7aebc9 100644
--- a/indra/llaudio/lllistener_fmodex.cpp
+++ b/indra/llaudio/lllistener_fmodex.cpp
@@ -1,7 +1,7 @@
 /** 
  * @file listener_fmodex.cpp
  * @brief Implementation of LISTENER class abstracting the audio
- * support as a FMODEX implementation (windows only)
+ * support as a FMODEX implementation
  *
  * $LicenseInfo:firstyear=2002&license=viewerlgpl$
  * Second Life Viewer Source Code
diff --git a/indra/llaudio/llstreamingaudio_fmod.cpp b/indra/llaudio/llstreamingaudio_fmod.cpp
deleted file mode 100644
index bcdea771a76..00000000000
--- a/indra/llaudio/llstreamingaudio_fmod.cpp
+++ /dev/null
@@ -1,356 +0,0 @@
-/** 
- * @file streamingaudio_fmod.cpp
- * @brief LLStreamingAudio_FMOD implementation
- *
- * $LicenseInfo:firstyear=2009&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- * 
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- * 
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- * 
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
- * $/LicenseInfo$
- */
-
-#include "linden_common.h"
-
-#include "llmath.h"
-
-#include "fmod.h"
-#include "fmod_errors.h"
-
-#include "llstreamingaudio_fmod.h"
-
-
-class LLAudioStreamManagerFMOD
-{
-public:
-	LLAudioStreamManagerFMOD(const std::string& url);
-	int	startStream();
-	bool stopStream(); // Returns true if the stream was successfully stopped.
-	bool ready();
-
-	const std::string& getURL() 	{ return mInternetStreamURL; }
-
-	int getOpenState();
-protected:
-	FSOUND_STREAM* mInternetStream;
-	bool mReady;
-
-	std::string mInternetStreamURL;
-};
-
-
-
-//---------------------------------------------------------------------------
-// Internet Streaming
-//---------------------------------------------------------------------------
-LLStreamingAudio_FMOD::LLStreamingAudio_FMOD() :
-	mCurrentInternetStreamp(NULL),
-	mFMODInternetStreamChannel(-1),
-	mGain(1.0f)
-{
-	// Number of milliseconds of audio to buffer for the audio card.
-	// Must be larger than the usual Second Life frame stutter time.
-	FSOUND_Stream_SetBufferSize(200);
-
-	// Here's where we set the size of the network buffer and some buffering 
-	// parameters.  In this case we want a network buffer of 16k, we want it 
-	// to prebuffer 40% of that when we first connect, and we want it 
-	// to rebuffer 80% of that whenever we encounter a buffer underrun.
-
-	// Leave the net buffer properties at the default.
-	//FSOUND_Stream_Net_SetBufferProperties(20000, 40, 80);
-}
-
-
-LLStreamingAudio_FMOD::~LLStreamingAudio_FMOD()
-{
-	// nothing interesting/safe to do.
-}
-
-
-void LLStreamingAudio_FMOD::start(const std::string& url)
-{
-	//if (!mInited)
-	//{
-	//	llwarns << "startInternetStream before audio initialized" << llendl;
-	//	return;
-	//}
-
-	// "stop" stream but don't clear url, etc. in case url == mInternetStreamURL
-	stop();
-
-	if (!url.empty())
-	{
-		llinfos << "Starting internet stream: " << url << llendl;
-		mCurrentInternetStreamp = new LLAudioStreamManagerFMOD(url);
-		mURL = url;
-	}
-	else
-	{
-		llinfos << "Set internet stream to null" << llendl;
-		mURL.clear();
-	}
-}
-
-
-void LLStreamingAudio_FMOD::update()
-{
-	// Kill dead internet streams, if possible
-	std::list<LLAudioStreamManagerFMOD *>::iterator iter;
-	for (iter = mDeadStreams.begin(); iter != mDeadStreams.end();)
-	{
-		LLAudioStreamManagerFMOD *streamp = *iter;
-		if (streamp->stopStream())
-		{
-			llinfos << "Closed dead stream" << llendl;
-			delete streamp;
-			mDeadStreams.erase(iter++);
-		}
-		else
-		{
-			iter++;
-		}
-	}
-
-	// Don't do anything if there are no streams playing
-	if (!mCurrentInternetStreamp)
-	{
-		return;
-	}
-
-	int open_state = mCurrentInternetStreamp->getOpenState();
-
-	if (!open_state)
-	{
-		// Stream is live
-
-		// start the stream if it's ready
-		if (mFMODInternetStreamChannel < 0)
-		{
-			mFMODInternetStreamChannel = mCurrentInternetStreamp->startStream();
-
-			if (mFMODInternetStreamChannel != -1)
-			{
-				// Reset volume to previously set volume
-				setGain(getGain());
-				FSOUND_SetPaused(mFMODInternetStreamChannel, false);
-			}
-		}
-	}
-		
-	switch(open_state)
-	{
-	default:
-	case 0:
-		// success
-		break;
-	case -1:
-		// stream handle is invalid
-		llwarns << "InternetStream - invalid handle" << llendl;
-		stop();
-		return;
-	case -2:
-		// opening
-		break;
-	case -3:
-		// failed to open, file not found, perhaps
-		llwarns << "InternetStream - failed to open" << llendl;
-		stop();
-		return;
-	case -4:
-		// connecting
-		break;
-	case -5:
-		// buffering
-		break;
-	}
-
-}
-
-void LLStreamingAudio_FMOD::stop()
-{
-	if (mFMODInternetStreamChannel != -1)
-	{
-		FSOUND_SetPaused(mFMODInternetStreamChannel, true);
-		FSOUND_SetPriority(mFMODInternetStreamChannel, 0);
-		mFMODInternetStreamChannel = -1;
-	}
-
-	if (mCurrentInternetStreamp)
-	{
-		llinfos << "Stopping internet stream: " << mCurrentInternetStreamp->getURL() << llendl;
-		if (mCurrentInternetStreamp->stopStream())
-		{
-			delete mCurrentInternetStreamp;
-		}
-		else
-		{
-			llwarns << "Pushing stream to dead list: " << mCurrentInternetStreamp->getURL() << llendl;
-			mDeadStreams.push_back(mCurrentInternetStreamp);
-		}
-		mCurrentInternetStreamp = NULL;
-		//mURL.clear();
-	}
-}
-
-void LLStreamingAudio_FMOD::pause(int pauseopt)
-{
-	if (pauseopt < 0)
-	{
-		pauseopt = mCurrentInternetStreamp ? 1 : 0;
-	}
-
-	if (pauseopt)
-	{
-		if (mCurrentInternetStreamp)
-		{
-			stop();
-		}
-	}
-	else
-	{
-		start(getURL());
-	}
-}
-
-
-// A stream is "playing" if it has been requested to start.  That
-// doesn't necessarily mean audio is coming out of the speakers.
-int LLStreamingAudio_FMOD::isPlaying()
-{
-	if (mCurrentInternetStreamp)
-	{
-		return 1; // Active and playing
-	}
-	else if (!mURL.empty())
-	{
-		return 2; // "Paused"
-	}
-	else
-	{
-		return 0;
-	}
-}
-
-
-F32 LLStreamingAudio_FMOD::getGain()
-{
-	return mGain;
-}
-
-
-std::string LLStreamingAudio_FMOD::getURL()
-{
-	return mURL;
-}
-
-
-void LLStreamingAudio_FMOD::setGain(F32 vol)
-{
-	mGain = vol;
-
-	if (mFMODInternetStreamChannel != -1)
-	{
-		vol = llclamp(vol * vol, 0.f, 1.f);
-		int vol_int = llround(vol * 255.f);
-		FSOUND_SetVolumeAbsolute(mFMODInternetStreamChannel, vol_int);
-	}
-}
-
-
-///////////////////////////////////////////////////////
-// manager of possibly-multiple internet audio streams
-
-LLAudioStreamManagerFMOD::LLAudioStreamManagerFMOD(const std::string& url) :
-	mInternetStream(NULL),
-	mReady(false)
-{
-	mInternetStreamURL = url;
-	mInternetStream = FSOUND_Stream_Open(url.c_str(), FSOUND_NORMAL | FSOUND_NONBLOCKING, 0, 0);
-	if (!mInternetStream)
-	{
-		llwarns << "Couldn't open fmod stream, error "
-			<< FMOD_ErrorString(FSOUND_GetError())
-			<< llendl;
-		mReady = false;
-		return;
-	}
-
-	mReady = true;
-}
-
-int LLAudioStreamManagerFMOD::startStream()
-{
-	// We need a live and opened stream before we try and play it.
-	if (!mInternetStream || getOpenState())
-	{
-		llwarns << "No internet stream to start playing!" << llendl;
-		return -1;
-	}
-
-	// Make sure the stream is set to 2D mode.
-	FSOUND_Stream_SetMode(mInternetStream, FSOUND_2D);
-
-	return FSOUND_Stream_PlayEx(FSOUND_FREE, mInternetStream, NULL, true);
-}
-
-bool LLAudioStreamManagerFMOD::stopStream()
-{
-	if (mInternetStream)
-	{
-		int read_percent = 0;
-		int status = 0;
-		int bitrate = 0;
-		unsigned int flags = 0x0;
-		FSOUND_Stream_Net_GetStatus(mInternetStream, &status, &read_percent, &bitrate, &flags);
-
-		bool close = true;
-		switch (status)
-		{
-		case FSOUND_STREAM_NET_CONNECTING:
-			close = false;
-			break;
-		case FSOUND_STREAM_NET_NOTCONNECTED:
-		case FSOUND_STREAM_NET_BUFFERING:
-		case FSOUND_STREAM_NET_READY:
-		case FSOUND_STREAM_NET_ERROR:
-		default:
-			close = true;
-		}
-
-		if (close)
-		{
-			FSOUND_Stream_Close(mInternetStream);
-			mInternetStream = NULL;
-			return true;
-		}
-		else
-		{
-			return false;
-		}
-	}
-	else
-	{
-		return true;
-	}
-}
-
-int LLAudioStreamManagerFMOD::getOpenState()
-{
-	int open_state = FSOUND_Stream_GetOpenState(mInternetStream);
-	return open_state;
-}
diff --git a/indra/llaudio/llstreamingaudio_fmod.h b/indra/llaudio/llstreamingaudio_fmod.h
deleted file mode 100644
index 9970f0d03bc..00000000000
--- a/indra/llaudio/llstreamingaudio_fmod.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/** 
- * @file streamingaudio_fmod.h
- * @author Tofu Linden
- * @brief Definition of LLStreamingAudio_FMOD implementation
- *
- * $LicenseInfo:firstyear=2009&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- * 
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- * 
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- * 
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
- * $/LicenseInfo$
- */
-
-#ifndef LL_STREAMINGAUDIO_FMOD_H
-#define LL_STREAMINGAUDIO_FMOD_H
-
-#include "stdtypes.h" // from llcommon
-
-#include "llstreamingaudio.h"
-
-class LLAudioStreamManagerFMOD;
-
-class LLStreamingAudio_FMOD : public LLStreamingAudioInterface
-{
- public:
-	LLStreamingAudio_FMOD();
-	/*virtual*/ ~LLStreamingAudio_FMOD();
-
-	/*virtual*/ void start(const std::string& url);
-	/*virtual*/ void stop();
-	/*virtual*/ void pause(int pause);
-	/*virtual*/ void update();
-	/*virtual*/ int isPlaying();
-	/*virtual*/ void setGain(F32 vol);
-	/*virtual*/ F32 getGain();
-	/*virtual*/ std::string getURL();
-
-private:
-	LLAudioStreamManagerFMOD *mCurrentInternetStreamp;
-	int mFMODInternetStreamChannel;
-	std::list<LLAudioStreamManagerFMOD *> mDeadStreams;
-
-	std::string mURL;
-	F32 mGain;
-};
-
-
-#endif // LL_STREAMINGAUDIO_FMOD_H
diff --git a/indra/llaudio/llstreamingaudio_fmodex.h b/indra/llaudio/llstreamingaudio_fmodex.h
index 3751dd60ad0..42b6b3aaa8f 100644
--- a/indra/llaudio/llstreamingaudio_fmodex.h
+++ b/indra/llaudio/llstreamingaudio_fmodex.h
@@ -24,8 +24,8 @@
  * $/LicenseInfo$
  */
 
-#ifndef LL_STREAMINGAUDIO_FMOD_H
-#define LL_STREAMINGAUDIO_FMOD_H
+#ifndef LL_STREAMINGAUDIO_FMODEX_H
+#define LL_STREAMINGAUDIO_FMODEX_H
 
 #include "stdtypes.h" // from llcommon
 
@@ -72,4 +72,4 @@ class LLStreamingAudio_FMODEX : public LLStreamingAudioInterface
 };
 
 
-#endif // LL_STREAMINGAUDIO_FMOD_H
+#endif // LL_STREAMINGAUDIO_FMODEX_H
diff --git a/indra/llaudio/llvorbisencode.cpp b/indra/llaudio/llvorbisencode.cpp
index 0e0c80a4567..dfd5da12b3f 100644
--- a/indra/llaudio/llvorbisencode.cpp
+++ b/indra/llaudio/llvorbisencode.cpp
@@ -35,7 +35,7 @@
 #include "llapr.h"
 
 //#if LL_DARWIN
-// MBW -- XXX -- Getting rid of SecondLifeVorbis for now -- no fmod means no name collisions.
+// MBW -- XXX -- Getting rid of SecondLifeVorbis for now
 #if 0
 #include "VorbisFramework.h"
 
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 793b01baa10..24a35bf8a27 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -11,7 +11,6 @@ include(OpenSSL)
 include(DragDrop)
 include(EXPAT)
 include(FMODEX)
-set(FMOD OFF)
 include(OPENAL)
 include(FindOpenGL)
 include(Hunspell)
@@ -57,10 +56,6 @@ if(FMODEX)
   include_directories(${FMODEX_INCLUDE_DIR})
 endif(FMODEX)
 
-if(FMOD)
-  include_directories(${FMOD_INCLUDE_DIR})
-endif(FMOD)
-
 include_directories(
     ${DBUSGLIB_INCLUDE_DIRS}
     ${JSONCPP_INCLUDE_DIR}
@@ -1527,20 +1522,15 @@ endif (WINDOWS)
 
 if (OPENAL)
   set(LLSTARTUP_COMPILE_FLAGS "${LLSTARTUP_COMPILE_FLAGS} -DLL_OPENAL")
-endif (OPENAL)
+endif (OPENAL)          
 
-if (FMOD OR FMODEX)
-  if (FMODEX)
-    set(LLSTARTUP_COMPILE_FLAGS "${LLSTARTUP_COMPILE_FLAGS} -DLL_FMODEX")
-  endif (FMODEX)
-  if (FMOD)
-    set(LLSTARTUP_COMPILE_FLAGS "${LLSTARTUP_COMPILE_FLAGS} -DLL_FMOD")
-  endif (FMOD)
+if (FMODEX)
+  set(LLSTARTUP_COMPILE_FLAGS "${LLSTARTUP_COMPILE_FLAGS} -DLL_FMODEX")
 
-  if (DARWIN AND FMOD)
+  if (DARWIN)
     set(fmodwrapper_SOURCE_FILES fmodwrapper.cpp)
     add_library(fmodwrapper SHARED ${fmodwrapper_SOURCE_FILES})
-    set(fmodwrapper_needed_LIBRARIES ${FMOD_LIBRARY} ${CARBON_LIBRARY})
+    set(fmodwrapper_needed_LIBRARIES ${FMODEX_LIBRARY} ${CARBON_LIBRARY})
     set_target_properties(
       fmodwrapper
       PROPERTIES
@@ -1550,16 +1540,11 @@ if (FMOD OR FMODEX)
       )
     set(FMODWRAPPER_LIBRARY fmodwrapper)
     target_link_libraries(fmodwrapper ${fmodwrapper_needed_LIBRARIES})
-  else (DARWIN AND FMOD)
-    # fmodwrapper unnecessary on linux or windows for fmod and darwin for fmodex
-    if (FMODEX)
-       set(FMODWRAPPER_LIBRARY ${FMODEX_LIBRARY})
-    endif (FMODEX)
-    if (FMOD)
-       set(FMODWRAPPER_LIBRARY ${FMOD_LIBRARY})
-    endif (FMOD)
-  endif (DARWIN AND FMOD)
-endif (FMOD OR FMODEX)
+  else (DARWIN)
+    # fmodwrapper unnecessary on linux or windows
+    set(FMODWRAPPER_LIBRARY ${FMODEX_LIBRARY})
+  endif (DARWIN)
+endif (FMODEX)
 
 set_source_files_properties(llstartup.cpp PROPERTIES COMPILE_FLAGS "${LLSTARTUP_COMPILE_FLAGS}")
 
@@ -1705,15 +1690,7 @@ if (WINDOWS)
            ${SHARED_LIB_STAGING_DIR}/Debug/fmodexL.dll
           )
     endif (FMODEX)
-
-    if (FMOD)
-      list(APPEND COPY_INPUT_DEPENDENCIES
-           ${SHARED_LIB_STAGING_DIR}/Release/fmod.dll
-           ${SHARED_LIB_STAGING_DIR}/RelWithDebInfo/fmod.dll
-           ${SHARED_LIB_STAGING_DIR}/Debug/fmod.dll
-          )
-    endif (FMOD)
-
+    
     add_custom_command(
       OUTPUT  ${CMAKE_CFG_INTDIR}/copy_touched.bat
       COMMAND ${PYTHON_EXECUTABLE}
diff --git a/indra/newview/fmodwrapper.cpp b/indra/newview/fmodwrapper.cpp
index 16f1d19a786..e74c4a1d7c9 100644
--- a/indra/newview/fmodwrapper.cpp
+++ b/indra/newview/fmodwrapper.cpp
@@ -26,12 +26,12 @@
 
 extern "C"
 {
-	void FSOUND_Init(void);
+	void FMOD_System_Init(void);
 }
 
 void* fmodwrapper(void)
 {
 	// When building the fmodwrapper library, the linker doesn't seem to want to bring in libfmod.a unless I explicitly
 	// reference at least one symbol in the library.  This seemed like the simplest way.
-	return (void*)&FSOUND_Init;
+	return (void*)&FMOD_System_Init;
 }
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index 1000c0e1e8a..55d7a5d45dd 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -1677,19 +1677,7 @@ bool LLAppViewer::cleanup()
 		gAudiop->setStreamingAudioImpl(NULL);
 
 		// shut down the audio subsystem
-
-		bool want_longname = false;
-		if (gAudiop->getDriverName(want_longname) == "FMOD")
-		{
-			// This hack exists because fmod likes to occasionally
-			// crash or hang forever when shutting down, for no
-			// apparent reason.
-			llwarns << "Hack, skipping FMOD audio engine cleanup" << llendflush;
-		}
-		else
-		{
-			gAudiop->shutdown();
-		}
+        gAudiop->shutdown();
 
 		delete gAudiop;
 		gAudiop = NULL;
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index 6a874d1af58..18ef36a8934 100644
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -41,10 +41,6 @@
 # include "llaudioengine_fmodex.h"
 #endif
 
-#ifdef LL_FMOD
-# include "llaudioengine_fmod.h"
-#endif
-
 #ifdef LL_OPENAL
 #include "llaudioengine_openal.h"
 #endif
@@ -648,22 +644,11 @@ bool idle_startup()
 				gAudiop = (LLAudioEngine *) new LLAudioEngine_OpenAL();
 			}
 #endif
-
-#ifdef LL_FMOD			
-			if (!gAudiop
-#if !LL_WINDOWS
-			    && NULL == getenv("LL_BAD_FMOD_DRIVER")
-#endif // !LL_WINDOWS
-			    )
-			{
-				gAudiop = (LLAudioEngine *) new LLAudioEngine_FMOD();
-			}
-#endif
-
+            
 			if (gAudiop)
 			{
 #if LL_WINDOWS
-				// FMOD on Windows needs the window handle to stop playing audio
+				// FMOD Ex on Windows needs the window handle to stop playing audio
 				// when window is minimized. JC
 				void* window_handle = (HWND)gViewerWindow->getPlatformWindow();
 #else
diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py
index cdd227e9fe1..37b119041f2 100644
--- a/indra/newview/viewer_manifest.py
+++ b/indra/newview/viewer_manifest.py
@@ -376,10 +376,6 @@ def construct(self):
             except:
                 print "Skipping fmodex audio library(assuming other audio engine)"
 
-            # Get fmod dll, continue if missing
-            if not self.path("fmod.dll"):
-                print "Skipping fmod.dll"
-
             # For textures
             if self.args['configuration'].lower() == 'debug':
                 self.path("openjpegd.dll")
-- 
GitLab


From 3822600e27c043975407a6b47f18e1af6f3f0847 Mon Sep 17 00:00:00 2001
From: "Graham Madarasz (Graham)" <graham@lindenlab.com>
Date: Fri, 1 Feb 2013 09:33:57 -0800
Subject: [PATCH 258/436] Added copy of libfmodex .so for linux

---
 indra/cmake/Copy3rdPartyLibs.cmake | 750 +++++++++++++++--------------
 1 file changed, 377 insertions(+), 373 deletions(-)

diff --git a/indra/cmake/Copy3rdPartyLibs.cmake b/indra/cmake/Copy3rdPartyLibs.cmake
index f9e2013483b..b267ab9d4e5 100644
--- a/indra/cmake/Copy3rdPartyLibs.cmake
+++ b/indra/cmake/Copy3rdPartyLibs.cmake
@@ -1,373 +1,377 @@
-# -*- cmake -*-
-
-# The copy_win_libs folder contains file lists and a script used to
-# copy dlls, exes and such needed to run the SecondLife from within
-# VisualStudio.
-
-include(CMakeCopyIfDifferent)
-include(Linking)
-
-###################################################################
-# set up platform specific lists of files that need to be copied
-###################################################################
-if(WINDOWS)
-    set(SHARED_LIB_STAGING_DIR_DEBUG            "${SHARED_LIB_STAGING_DIR}/Debug")
-    set(SHARED_LIB_STAGING_DIR_RELWITHDEBINFO   "${SHARED_LIB_STAGING_DIR}/RelWithDebInfo")
-    set(SHARED_LIB_STAGING_DIR_RELEASE          "${SHARED_LIB_STAGING_DIR}/Release")
-
-    #*******************************
-    # VIVOX - *NOTE: no debug version
-    set(vivox_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}")
-    set(vivox_files
-        SLVoice.exe
-        libsndfile-1.dll
-        vivoxplatform.dll
-        vivoxsdk.dll
-        ortp.dll
-        zlib1.dll
-        vivoxoal.dll
-        )
-
-    #*******************************
-    # Misc shared libs 
-
-    set(debug_src_dir "${ARCH_PREBUILT_DIRS_DEBUG}")
-    set(debug_files
-        openjpegd.dll
-        libapr-1.dll
-        libaprutil-1.dll
-        libapriconv-1.dll
-        ssleay32.dll
-        libeay32.dll
-        libcollada14dom22-d.dll
-        glod.dll    
-        libhunspell.dll
-        )
-
-    set(release_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}")
-    set(release_files
-        openjpeg.dll
-        libapr-1.dll
-        libaprutil-1.dll
-        libapriconv-1.dll
-        ssleay32.dll
-        libeay32.dll
-        libcollada14dom22.dll
-        glod.dll
-        libhunspell.dll
-        )
-
-    if(USE_TCMALLOC)
-      set(debug_files ${debug_files} libtcmalloc_minimal-debug.dll)
-      set(release_files ${release_files} libtcmalloc_minimal.dll)
-    endif(USE_TCMALLOC)
-
-    if (FMODEX)
-      set(debug_files ${debug_files} fmodexL.dll)
-      set(release_files ${release_files} fmodex.dll)
-    endif (FMODEX)
-
-#*******************************
-# Copy MS C runtime dlls, required for packaging.
-# *TODO - Adapt this to support VC9
-if (MSVC80)
-    FIND_PATH(debug_msvc8_redist_path msvcr80d.dll
-        PATHS
-        ${MSVC_DEBUG_REDIST_PATH}
-         [HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\8.0\\Setup\\VC;ProductDir]/redist/Debug_NonRedist/x86/Microsoft.VC80.DebugCRT
-        NO_DEFAULT_PATH
-        NO_DEFAULT_PATH
-        )
-
-    if(EXISTS ${debug_msvc8_redist_path})
-        set(debug_msvc8_files
-            msvcr80d.dll
-            msvcp80d.dll
-            Microsoft.VC80.DebugCRT.manifest
-            )
-
-        copy_if_different(
-            ${debug_msvc8_redist_path}
-            "${SHARED_LIB_STAGING_DIR_DEBUG}"
-            out_targets
-            ${debug_msvc8_files}
-            )
-        set(third_party_targets ${third_party_targets} ${out_targets})
-
-    endif (EXISTS ${debug_msvc8_redist_path})
-
-    FIND_PATH(release_msvc8_redist_path msvcr80.dll
-        PATHS
-        ${MSVC_REDIST_PATH}
-         [HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\8.0\\Setup\\VC;ProductDir]/redist/x86/Microsoft.VC80.CRT
-        NO_DEFAULT_PATH
-        NO_DEFAULT_PATH
-        )
-
-    if(EXISTS ${release_msvc8_redist_path})
-        set(release_msvc8_files
-            msvcr80.dll
-            msvcp80.dll
-            Microsoft.VC80.CRT.manifest
-            )
-
-        copy_if_different(
-            ${release_msvc8_redist_path}
-            "${SHARED_LIB_STAGING_DIR_RELEASE}"
-            out_targets
-            ${release_msvc8_files}
-            )
-        set(third_party_targets ${third_party_targets} ${out_targets})
-
-        copy_if_different(
-            ${release_msvc8_redist_path}
-            "${SHARED_LIB_STAGING_DIR_RELWITHDEBINFO}"
-            out_targets
-            ${release_msvc8_files}
-            )
-        set(third_party_targets ${third_party_targets} ${out_targets})
-          
-    endif (EXISTS ${release_msvc8_redist_path})
-elseif (MSVC_VERSION EQUAL 1600) # VisualStudio 2010
-    FIND_PATH(debug_msvc10_redist_path msvcr100d.dll
-        PATHS
-        ${MSVC_DEBUG_REDIST_PATH}
-         [HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\10.0\\Setup\\VC;ProductDir]/redist/Debug_NonRedist/x86/Microsoft.VC100.DebugCRT
-        [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Windows;Directory]/SysWOW64
-        [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Windows;Directory]/System32
-        NO_DEFAULT_PATH
-        )
-
-    if(EXISTS ${debug_msvc10_redist_path})
-        set(debug_msvc10_files
-            msvcr100d.dll
-            msvcp100d.dll
-            )
-
-        copy_if_different(
-            ${debug_msvc10_redist_path}
-            "${SHARED_LIB_STAGING_DIR_DEBUG}"
-            out_targets
-            ${debug_msvc10_files}
-            )
-        set(third_party_targets ${third_party_targets} ${out_targets})
-
-    endif ()
-
-    FIND_PATH(release_msvc10_redist_path msvcr100.dll
-        PATHS
-        ${MSVC_REDIST_PATH}
-         [HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\10.0\\Setup\\VC;ProductDir]/redist/x86/Microsoft.VC100.CRT
-        [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Windows;Directory]/SysWOW64
-        [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Windows;Directory]/System32
-        NO_DEFAULT_PATH
-        )
-
-    if(EXISTS ${release_msvc10_redist_path})
-        set(release_msvc10_files
-            msvcr100.dll
-            msvcp100.dll
-            )
-
-        copy_if_different(
-            ${release_msvc10_redist_path}
-            "${SHARED_LIB_STAGING_DIR_RELEASE}"
-            out_targets
-            ${release_msvc10_files}
-            )
-        set(third_party_targets ${third_party_targets} ${out_targets})
-
-        copy_if_different(
-            ${release_msvc10_redist_path}
-            "${SHARED_LIB_STAGING_DIR_RELWITHDEBINFO}"
-            out_targets
-            ${release_msvc10_files}
-            )
-        set(third_party_targets ${third_party_targets} ${out_targets})
-          
-    endif ()
-endif (MSVC80)
-
-elseif(DARWIN)
-    set(SHARED_LIB_STAGING_DIR_DEBUG            "${SHARED_LIB_STAGING_DIR}/Debug/Resources")
-    set(SHARED_LIB_STAGING_DIR_RELWITHDEBINFO   "${SHARED_LIB_STAGING_DIR}/RelWithDebInfo/Resources")
-    set(SHARED_LIB_STAGING_DIR_RELEASE          "${SHARED_LIB_STAGING_DIR}/Release/Resources")
-
-    set(vivox_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}")
-    set(vivox_files
-        SLVoice
-        libsndfile.dylib
-        libvivoxoal.dylib
-        libortp.dylib
-        libvivoxplatform.dylib
-        libvivoxsdk.dylib
-       )
-    set(debug_src_dir "${ARCH_PREBUILT_DIRS_DEBUG}")
-    set(debug_files
-       )
-    set(release_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}")
-    set(release_files
-        libapr-1.0.dylib
-        libapr-1.dylib
-        libaprutil-1.0.dylib
-        libaprutil-1.dylib
-        libexpat.1.5.2.dylib
-        libexpat.dylib
-        libGLOD.dylib
-        libllqtwebkit.dylib
-        libminizip.a
-        libndofdev.dylib
-        libhunspell-1.3.0.dylib
-        libexception_handler.dylib
-        libcollada14dom.dylib
-       )
-
-    if (FMODEX)
-      #set(debug_files ${debug_files} libfmodexL.dylib)
-      set(release_files ${release_files} libfmodex.dylib)
-    endif (FMODEX)
-
-elseif(LINUX)
-    # linux is weird, multiple side by side configurations aren't supported
-    # and we don't seem to have any debug shared libs built yet anyways...
-    set(SHARED_LIB_STAGING_DIR_DEBUG            "${SHARED_LIB_STAGING_DIR}")
-    set(SHARED_LIB_STAGING_DIR_RELWITHDEBINFO   "${SHARED_LIB_STAGING_DIR}")
-    set(SHARED_LIB_STAGING_DIR_RELEASE          "${SHARED_LIB_STAGING_DIR}")
-
-    set(vivox_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}")
-    set(vivox_files
-        libsndfile.so.1
-        libortp.so
-        libvivoxoal.so.1
-        libvivoxplatform.so
-        libvivoxsdk.so
-        SLVoice
-       )
-    # *TODO - update this to use LIBS_PREBUILT_DIR and LL_ARCH_DIR variables
-    # or ARCH_PREBUILT_DIRS
-    set(debug_src_dir "${ARCH_PREBUILT_DIRS_DEBUG}")
-    set(debug_files
-       )
-    # *TODO - update this to use LIBS_PREBUILT_DIR and LL_ARCH_DIR variables
-    # or ARCH_PREBUILT_DIRS
-    set(release_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}")
-    # *FIX - figure out what to do with duplicate libalut.so here -brad
-    set(release_files
-        libapr-1.so.0
-        libaprutil-1.so.0
-        libatk-1.0.so
-        libboost_program_options-mt.so.${BOOST_VERSION}.0
-        libboost_regex-mt.so.${BOOST_VERSION}.0
-        libboost_thread-mt.so.${BOOST_VERSION}.0
-        libboost_filesystem-mt.so.${BOOST_VERSION}.0
-        libboost_signals-mt.so.${BOOST_VERSION}.0
-        libboost_system-mt.so.${BOOST_VERSION}.0
-        libbreakpad_client.so.0
-        libcollada14dom.so
-        libcrypto.so.1.0.0
-        libdb-5.1.so
-        libexpat.so
-        libexpat.so.1
-        libglod.so
-        libgmock_main.so
-        libgmock.so.0
-        libgmodule-2.0.so
-        libgobject-2.0.so
-        libgtest_main.so
-        libgtest.so.0
-        libhunspell-1.3.so.0.0.0
-        libminizip.so
-        libopenal.so
-        libopenjpeg.so
-        libssl.so
-        libuuid.so.16
-        libuuid.so.16.0.22
-        libssl.so.1.0.0
-        libfontconfig.so.1.4.4
-       )
-
-    if (USE_TCMALLOC)
-      set(release_files ${release_files} "libtcmalloc_minimal.so")
-    endif (USE_TCMALLOC)
-
-else(WINDOWS)
-    message(STATUS "WARNING: unrecognized platform for staging 3rd party libs, skipping...")
-    set(vivox_src_dir "${CMAKE_SOURCE_DIR}/newview/vivox-runtime/i686-linux")
-    set(vivox_files "")
-    # *TODO - update this to use LIBS_PREBUILT_DIR and LL_ARCH_DIR variables
-    # or ARCH_PREBUILT_DIRS
-    set(debug_src_dir "${CMAKE_SOURCE_DIR}/../libraries/i686-linux/lib/debug")
-    set(debug_files "")
-    # *TODO - update this to use LIBS_PREBUILT_DIR and LL_ARCH_DIR variables
-    # or ARCH_PREBUILT_DIRS
-    set(release_src_dir "${CMAKE_SOURCE_DIR}/../libraries/i686-linux/lib/release")
-    set(release_files "")
-
-    set(debug_llkdu_src "")
-    set(debug_llkdu_dst "")
-    set(release_llkdu_src "")
-    set(release_llkdu_dst "")
-    set(relwithdebinfo_llkdu_dst "")
-endif(WINDOWS)
-
-
-################################################################
-# Done building the file lists, now set up the copy commands.
-################################################################
-
-copy_if_different(
-    ${vivox_src_dir}
-    "${SHARED_LIB_STAGING_DIR_DEBUG}"
-    out_targets 
-    ${vivox_files}
-    )
-set(third_party_targets ${third_party_targets} ${out_targets})
-
-copy_if_different(
-    ${vivox_src_dir}
-    "${SHARED_LIB_STAGING_DIR_RELEASE}"
-    out_targets
-    ${vivox_files}
-    )
-set(third_party_targets ${third_party_targets} ${out_targets})
-
-copy_if_different(
-    ${vivox_src_dir}
-    "${SHARED_LIB_STAGING_DIR_RELWITHDEBINFO}"
-    out_targets
-    ${vivox_files}
-    )
-set(third_party_targets ${third_party_targets} ${out_targets})
-
-
-
-copy_if_different(
-    ${debug_src_dir}
-    "${SHARED_LIB_STAGING_DIR_DEBUG}"
-    out_targets
-    ${debug_files}
-    )
-set(third_party_targets ${third_party_targets} ${out_targets})
-
-copy_if_different(
-    ${release_src_dir}
-    "${SHARED_LIB_STAGING_DIR_RELEASE}"
-    out_targets
-    ${release_files}
-    )
-set(third_party_targets ${third_party_targets} ${out_targets})
-
-copy_if_different(
-    ${release_src_dir}
-    "${SHARED_LIB_STAGING_DIR_RELWITHDEBINFO}"
-    out_targets
-    ${release_files}
-    )
-set(third_party_targets ${third_party_targets} ${out_targets})
-
-if(NOT STANDALONE)
-  add_custom_target(
-      stage_third_party_libs ALL
-      DEPENDS ${third_party_targets}
-      )
-endif(NOT STANDALONE)
+# -*- cmake -*-
+
+# The copy_win_libs folder contains file lists and a script used to
+# copy dlls, exes and such needed to run the SecondLife from within
+# VisualStudio.
+
+include(CMakeCopyIfDifferent)
+include(Linking)
+
+###################################################################
+# set up platform specific lists of files that need to be copied
+###################################################################
+if(WINDOWS)
+    set(SHARED_LIB_STAGING_DIR_DEBUG            "${SHARED_LIB_STAGING_DIR}/Debug")
+    set(SHARED_LIB_STAGING_DIR_RELWITHDEBINFO   "${SHARED_LIB_STAGING_DIR}/RelWithDebInfo")
+    set(SHARED_LIB_STAGING_DIR_RELEASE          "${SHARED_LIB_STAGING_DIR}/Release")
+
+    #*******************************
+    # VIVOX - *NOTE: no debug version
+    set(vivox_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}")
+    set(vivox_files
+        SLVoice.exe
+        libsndfile-1.dll
+        vivoxplatform.dll
+        vivoxsdk.dll
+        ortp.dll
+        zlib1.dll
+        vivoxoal.dll
+        )
+
+    #*******************************
+    # Misc shared libs 
+
+    set(debug_src_dir "${ARCH_PREBUILT_DIRS_DEBUG}")
+    set(debug_files
+        openjpegd.dll
+        libapr-1.dll
+        libaprutil-1.dll
+        libapriconv-1.dll
+        ssleay32.dll
+        libeay32.dll
+        libcollada14dom22-d.dll
+        glod.dll    
+        libhunspell.dll
+        )
+
+    set(release_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}")
+    set(release_files
+        openjpeg.dll
+        libapr-1.dll
+        libaprutil-1.dll
+        libapriconv-1.dll
+        ssleay32.dll
+        libeay32.dll
+        libcollada14dom22.dll
+        glod.dll
+        libhunspell.dll
+        )
+
+    if(USE_TCMALLOC)
+      set(debug_files ${debug_files} libtcmalloc_minimal-debug.dll)
+      set(release_files ${release_files} libtcmalloc_minimal.dll)
+    endif(USE_TCMALLOC)
+
+    if (FMODEX)
+      set(debug_files ${debug_files} fmodexL.dll)
+      set(release_files ${release_files} fmodex.dll)
+    endif (FMODEX)
+
+#*******************************
+# Copy MS C runtime dlls, required for packaging.
+# *TODO - Adapt this to support VC9
+if (MSVC80)
+    FIND_PATH(debug_msvc8_redist_path msvcr80d.dll
+        PATHS
+        ${MSVC_DEBUG_REDIST_PATH}
+         [HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\8.0\\Setup\\VC;ProductDir]/redist/Debug_NonRedist/x86/Microsoft.VC80.DebugCRT
+        NO_DEFAULT_PATH
+        NO_DEFAULT_PATH
+        )
+
+    if(EXISTS ${debug_msvc8_redist_path})
+        set(debug_msvc8_files
+            msvcr80d.dll
+            msvcp80d.dll
+            Microsoft.VC80.DebugCRT.manifest
+            )
+
+        copy_if_different(
+            ${debug_msvc8_redist_path}
+            "${SHARED_LIB_STAGING_DIR_DEBUG}"
+            out_targets
+            ${debug_msvc8_files}
+            )
+        set(third_party_targets ${third_party_targets} ${out_targets})
+
+    endif (EXISTS ${debug_msvc8_redist_path})
+
+    FIND_PATH(release_msvc8_redist_path msvcr80.dll
+        PATHS
+        ${MSVC_REDIST_PATH}
+         [HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\8.0\\Setup\\VC;ProductDir]/redist/x86/Microsoft.VC80.CRT
+        NO_DEFAULT_PATH
+        NO_DEFAULT_PATH
+        )
+
+    if(EXISTS ${release_msvc8_redist_path})
+        set(release_msvc8_files
+            msvcr80.dll
+            msvcp80.dll
+            Microsoft.VC80.CRT.manifest
+            )
+
+        copy_if_different(
+            ${release_msvc8_redist_path}
+            "${SHARED_LIB_STAGING_DIR_RELEASE}"
+            out_targets
+            ${release_msvc8_files}
+            )
+        set(third_party_targets ${third_party_targets} ${out_targets})
+
+        copy_if_different(
+            ${release_msvc8_redist_path}
+            "${SHARED_LIB_STAGING_DIR_RELWITHDEBINFO}"
+            out_targets
+            ${release_msvc8_files}
+            )
+        set(third_party_targets ${third_party_targets} ${out_targets})
+          
+    endif (EXISTS ${release_msvc8_redist_path})
+elseif (MSVC_VERSION EQUAL 1600) # VisualStudio 2010
+    FIND_PATH(debug_msvc10_redist_path msvcr100d.dll
+        PATHS
+        ${MSVC_DEBUG_REDIST_PATH}
+         [HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\10.0\\Setup\\VC;ProductDir]/redist/Debug_NonRedist/x86/Microsoft.VC100.DebugCRT
+        [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Windows;Directory]/SysWOW64
+        [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Windows;Directory]/System32
+        NO_DEFAULT_PATH
+        )
+
+    if(EXISTS ${debug_msvc10_redist_path})
+        set(debug_msvc10_files
+            msvcr100d.dll
+            msvcp100d.dll
+            )
+
+        copy_if_different(
+            ${debug_msvc10_redist_path}
+            "${SHARED_LIB_STAGING_DIR_DEBUG}"
+            out_targets
+            ${debug_msvc10_files}
+            )
+        set(third_party_targets ${third_party_targets} ${out_targets})
+
+    endif ()
+
+    FIND_PATH(release_msvc10_redist_path msvcr100.dll
+        PATHS
+        ${MSVC_REDIST_PATH}
+         [HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\10.0\\Setup\\VC;ProductDir]/redist/x86/Microsoft.VC100.CRT
+        [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Windows;Directory]/SysWOW64
+        [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Windows;Directory]/System32
+        NO_DEFAULT_PATH
+        )
+
+    if(EXISTS ${release_msvc10_redist_path})
+        set(release_msvc10_files
+            msvcr100.dll
+            msvcp100.dll
+            )
+
+        copy_if_different(
+            ${release_msvc10_redist_path}
+            "${SHARED_LIB_STAGING_DIR_RELEASE}"
+            out_targets
+            ${release_msvc10_files}
+            )
+        set(third_party_targets ${third_party_targets} ${out_targets})
+
+        copy_if_different(
+            ${release_msvc10_redist_path}
+            "${SHARED_LIB_STAGING_DIR_RELWITHDEBINFO}"
+            out_targets
+            ${release_msvc10_files}
+            )
+        set(third_party_targets ${third_party_targets} ${out_targets})
+          
+    endif ()
+endif (MSVC80)
+
+elseif(DARWIN)
+    set(SHARED_LIB_STAGING_DIR_DEBUG            "${SHARED_LIB_STAGING_DIR}/Debug/Resources")
+    set(SHARED_LIB_STAGING_DIR_RELWITHDEBINFO   "${SHARED_LIB_STAGING_DIR}/RelWithDebInfo/Resources")
+    set(SHARED_LIB_STAGING_DIR_RELEASE          "${SHARED_LIB_STAGING_DIR}/Release/Resources")
+
+    set(vivox_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}")
+    set(vivox_files
+        SLVoice
+        libsndfile.dylib
+        libvivoxoal.dylib
+        libortp.dylib
+        libvivoxplatform.dylib
+        libvivoxsdk.dylib
+       )
+    set(debug_src_dir "${ARCH_PREBUILT_DIRS_DEBUG}")
+    set(debug_files
+       )
+    set(release_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}")
+    set(release_files
+        libapr-1.0.dylib
+        libapr-1.dylib
+        libaprutil-1.0.dylib
+        libaprutil-1.dylib
+        libexpat.1.5.2.dylib
+        libexpat.dylib
+        libGLOD.dylib
+        libllqtwebkit.dylib
+        libminizip.a
+        libndofdev.dylib
+        libhunspell-1.3.0.dylib
+        libexception_handler.dylib
+        libcollada14dom.dylib
+       )
+
+    if (FMODEX)
+      #set(debug_files ${debug_files} libfmodexL.dylib)
+      set(release_files ${release_files} libfmodex.dylib)
+    endif (FMODEX)
+
+elseif(LINUX)
+    # linux is weird, multiple side by side configurations aren't supported
+    # and we don't seem to have any debug shared libs built yet anyways...
+    set(SHARED_LIB_STAGING_DIR_DEBUG            "${SHARED_LIB_STAGING_DIR}")
+    set(SHARED_LIB_STAGING_DIR_RELWITHDEBINFO   "${SHARED_LIB_STAGING_DIR}")
+    set(SHARED_LIB_STAGING_DIR_RELEASE          "${SHARED_LIB_STAGING_DIR}")
+
+    set(vivox_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}")
+    set(vivox_files
+        libsndfile.so.1
+        libortp.so
+        libvivoxoal.so.1
+        libvivoxplatform.so
+        libvivoxsdk.so
+        SLVoice
+       )
+    # *TODO - update this to use LIBS_PREBUILT_DIR and LL_ARCH_DIR variables
+    # or ARCH_PREBUILT_DIRS
+    set(debug_src_dir "${ARCH_PREBUILT_DIRS_DEBUG}")
+    set(debug_files
+       )
+    # *TODO - update this to use LIBS_PREBUILT_DIR and LL_ARCH_DIR variables
+    # or ARCH_PREBUILT_DIRS
+    set(release_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}")
+    # *FIX - figure out what to do with duplicate libalut.so here -brad
+    set(release_files
+        libapr-1.so.0
+        libaprutil-1.so.0
+        libatk-1.0.so
+        libboost_program_options-mt.so.${BOOST_VERSION}.0
+        libboost_regex-mt.so.${BOOST_VERSION}.0
+        libboost_thread-mt.so.${BOOST_VERSION}.0
+        libboost_filesystem-mt.so.${BOOST_VERSION}.0
+        libboost_signals-mt.so.${BOOST_VERSION}.0
+        libboost_system-mt.so.${BOOST_VERSION}.0
+        libbreakpad_client.so.0
+        libcollada14dom.so
+        libcrypto.so.1.0.0
+        libdb-5.1.so
+        libexpat.so
+        libexpat.so.1
+        libglod.so
+        libgmock_main.so
+        libgmock.so.0
+        libgmodule-2.0.so
+        libgobject-2.0.so
+        libgtest_main.so
+        libgtest.so.0
+        libhunspell-1.3.so.0.0.0
+        libminizip.so
+        libopenal.so
+        libopenjpeg.so
+        libssl.so
+        libuuid.so.16
+        libuuid.so.16.0.22
+        libssl.so.1.0.0
+        libfontconfig.so.1.4.4
+       )
+
+    if (USE_TCMALLOC)
+      set(release_files ${release_files} "libtcmalloc_minimal.so")
+    endif (USE_TCMALLOC)
+
+    if (FMODEX)
+      set(release_file ${release_files} "libfmodex-4.44.so")
+    endif (FMODEX)
+
+else(WINDOWS)
+    message(STATUS "WARNING: unrecognized platform for staging 3rd party libs, skipping...")
+    set(vivox_src_dir "${CMAKE_SOURCE_DIR}/newview/vivox-runtime/i686-linux")
+    set(vivox_files "")
+    # *TODO - update this to use LIBS_PREBUILT_DIR and LL_ARCH_DIR variables
+    # or ARCH_PREBUILT_DIRS
+    set(debug_src_dir "${CMAKE_SOURCE_DIR}/../libraries/i686-linux/lib/debug")
+    set(debug_files "")
+    # *TODO - update this to use LIBS_PREBUILT_DIR and LL_ARCH_DIR variables
+    # or ARCH_PREBUILT_DIRS
+    set(release_src_dir "${CMAKE_SOURCE_DIR}/../libraries/i686-linux/lib/release")
+    set(release_files "")
+
+    set(debug_llkdu_src "")
+    set(debug_llkdu_dst "")
+    set(release_llkdu_src "")
+    set(release_llkdu_dst "")
+    set(relwithdebinfo_llkdu_dst "")
+endif(WINDOWS)
+
+
+################################################################
+# Done building the file lists, now set up the copy commands.
+################################################################
+
+copy_if_different(
+    ${vivox_src_dir}
+    "${SHARED_LIB_STAGING_DIR_DEBUG}"
+    out_targets 
+    ${vivox_files}
+    )
+set(third_party_targets ${third_party_targets} ${out_targets})
+
+copy_if_different(
+    ${vivox_src_dir}
+    "${SHARED_LIB_STAGING_DIR_RELEASE}"
+    out_targets
+    ${vivox_files}
+    )
+set(third_party_targets ${third_party_targets} ${out_targets})
+
+copy_if_different(
+    ${vivox_src_dir}
+    "${SHARED_LIB_STAGING_DIR_RELWITHDEBINFO}"
+    out_targets
+    ${vivox_files}
+    )
+set(third_party_targets ${third_party_targets} ${out_targets})
+
+
+
+copy_if_different(
+    ${debug_src_dir}
+    "${SHARED_LIB_STAGING_DIR_DEBUG}"
+    out_targets
+    ${debug_files}
+    )
+set(third_party_targets ${third_party_targets} ${out_targets})
+
+copy_if_different(
+    ${release_src_dir}
+    "${SHARED_LIB_STAGING_DIR_RELEASE}"
+    out_targets
+    ${release_files}
+    )
+set(third_party_targets ${third_party_targets} ${out_targets})
+
+copy_if_different(
+    ${release_src_dir}
+    "${SHARED_LIB_STAGING_DIR_RELWITHDEBINFO}"
+    out_targets
+    ${release_files}
+    )
+set(third_party_targets ${third_party_targets} ${out_targets})
+
+if(NOT STANDALONE)
+  add_custom_target(
+      stage_third_party_libs ALL
+      DEPENDS ${third_party_targets}
+      )
+endif(NOT STANDALONE)
-- 
GitLab


From 44308c110f0ed4323767493c409de5d0cf4f4c4f Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Fri, 1 Feb 2013 16:14:37 -0500
Subject: [PATCH 259/436] SH-3800 WIP - fixed bad case in appearance version
 computation

---
 indra/newview/llvoavatar.cpp | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 1ea1b027f02..cc1993fe408 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -6747,6 +6747,8 @@ void LLVOAvatar::parseAppearanceMessage(LLMessageSystem* mesgsys, LLAppearanceMe
 
 bool resolve_appearance_version(const LLAppearanceMessageContents& contents, S32& appearance_version)
 {
+	appearance_version = -1;
+	
 	if ((contents.mAppearanceVersion) >= 0 &&
 		(contents.mParamAppearanceVersion >= 0) &&
 		(contents.mAppearanceVersion != contents.mParamAppearanceVersion))
@@ -6763,7 +6765,7 @@ bool resolve_appearance_version(const LLAppearanceMessageContents& contents, S32
 	{
 		appearance_version = contents.mAppearanceVersion;
 	}
-	if (contents.mAppearanceVersion < 0) // still not set, go with 0.
+	if (appearance_version < 0) // still not set, go with 0.
 	{
 		appearance_version = 0;
 	}
@@ -6823,6 +6825,10 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 			return;
 		}
 	}
+	else
+	{
+		LL_DEBUGS("Avatar") << "appearance message received" << llendl;
+	}
 
 	// Check for stale update.
 	if (isSelf()
-- 
GitLab


From 8095292585088d277805e04d24d0d1450c5a3289 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Fri, 1 Feb 2013 17:21:59 -0500
Subject: [PATCH 260/436] SH-3800 WIP - additional log line

---
 indra/newview/llvoavatar.cpp | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index cc1993fe408..24dd0623efe 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -6780,6 +6780,8 @@ bool resolve_appearance_version(const LLAppearanceMessageContents& contents, S32
 //-----------------------------------------------------------------------------
 void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 {
+	LL_DEBUGS("Avatar") << starts << llendl;
+	
 	bool enable_verbose_dumps = gSavedSettings.getBOOL("DebugAvatarAppearanceMessage");
 	std::string dump_prefix = getFullname() + "_" + (isSelf()?"s":"o") + "_";
 	//if (enable_verbose_dumps) { dumpArchetypeXML(dump_prefix + "process_start"); }
-- 
GitLab


From 197b12d93b01efaa545d80b6cb36989b825e029c Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Fri, 1 Feb 2013 17:22:50 -0500
Subject: [PATCH 261/436] SH-3800 WIP - additional log line

---
 indra/newview/llvoavatar.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 24dd0623efe..483bc25b338 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -6780,7 +6780,7 @@ bool resolve_appearance_version(const LLAppearanceMessageContents& contents, S32
 //-----------------------------------------------------------------------------
 void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 {
-	LL_DEBUGS("Avatar") << starts << llendl;
+	LL_DEBUGS("Avatar") << "starts" << llendl;
 	
 	bool enable_verbose_dumps = gSavedSettings.getBOOL("DebugAvatarAppearanceMessage");
 	std::string dump_prefix = getFullname() + "_" + (isSelf()?"s":"o") + "_";
-- 
GitLab


From d6130d68d5ad39dacb24a72253ad1814dc38bec3 Mon Sep 17 00:00:00 2001
From: "Graham Madarasz (Graham Linden)" <graham@lindenlab.com>
Date: Sat, 2 Feb 2013 00:23:08 -0800
Subject: [PATCH 262/436] Updated fmodex download paths / md5sums from proxy
 for the first TC builds

---
 autobuild.xml | 20 ++++++++++++++++----
 1 file changed, 16 insertions(+), 4 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index caccdf7abc1..080ccb7d4cd 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -546,9 +546,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>c6f551e728295ff798d5804aa4e3671f</string>
+              <string>5b3e7ac9d43f317a78807ef42d0557cf</string>
               <key>url</key>
-              <string>http://private-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-fmodex-private/arch/Darwin/fmodex-4.44.04-darwin-20130122.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmodex-private/rev/269872/arch/Darwin/installer/fmodex-4.44-darwin-20130201.tar.bz2</string>
             </map>
             <key>name</key>
             <string>darwin</string>
@@ -558,13 +558,25 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>00f752f73774e0e72d737099860582af</string>
+              <string>b278ee4734ddb050ba2b67bbac709574</string>
               <key>url</key>
-              <string>http://private-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-fmodex-private/arch/CYGWIN/fmodex-4.44.04-windows-20130123.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmodex-private/rev/269873/arch/CYGWIN/installer/fmodex-4.44-windows-201300201.tar.bz2</string>
             </map>
             <key>name</key>
             <string>windows</string>
           </map>
+          <key>linux</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>2781f3e844a8c5e6a3633b4d77a018d7</string>
+              <key>url</key>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmodex-private/rev/269873/arch/Linux/installer/fmodex-4.44-linux-201300202.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>linux</string>
+          </map>
         </map>
       </map>
       <key>fontconfig</key>
-- 
GitLab


From bc161b040a5f6817a9adcec759e48bf590c2ed45 Mon Sep 17 00:00:00 2001
From: Sovereign Engineer <sovereign.engineer@outlook.com>
Date: Mon, 4 Feb 2013 08:21:19 -0500
Subject: [PATCH 263/436] Remove FMOD 3.75 leftovers

---
 indra/newview/fmod_hidden_symbols.exp | 240 --------------------------
 indra/newview/fmodwrapper.cpp         |  37 ----
 indra/newview/linux_tools/wrapper.sh  |   6 +-
 indra/newview/viewer_manifest.py      |   7 -
 4 files changed, 1 insertion(+), 289 deletions(-)
 delete mode 100644 indra/newview/fmod_hidden_symbols.exp
 delete mode 100644 indra/newview/fmodwrapper.cpp

diff --git a/indra/newview/fmod_hidden_symbols.exp b/indra/newview/fmod_hidden_symbols.exp
deleted file mode 100644
index 1e790255bc6..00000000000
--- a/indra/newview/fmod_hidden_symbols.exp
+++ /dev/null
@@ -1,240 +0,0 @@
-_CarbonSndPlayDoubleBuffer
-_ConvertFromIeeeExtended
-__book_maptype1_quantvals
-__book_unquantize
-__float32_pack
-__float32_unpack
-__ilog
-__make_words
-_lpc_clear
-_lpc_init
-__vorbis_block_alloc
-__vorbis_block_ripcord
-__vorbis_apply_window
-__vorbis_window_get
-_vorbis_analysis_blockout
-_vorbis_analysis_buffer
-_vorbis_analysis_wrote
-_vorbis_block_clear
-_vorbis_block_init
-_vorbis_dsp_clear
-_vorbis_synthesis_blockin
-_vorbis_synthesis_init
-_vorbis_synthesis_pcmout
-_vorbis_synthesis_read
-_vorbis_packet_blocksize
-_vorbis_synthesis
-_vorbis_book_clear
-_vorbis_book_decode
-_vorbis_book_decodev_add
-_vorbis_book_decodev_set
-_vorbis_book_decodevs_add
-_vorbis_book_decodevv_add
-_vorbis_book_init_decode
-_vorbis_comment_add
-_vorbis_comment_add_tag
-_vorbis_comment_clear
-_vorbis_comment_init
-_vorbis_comment_query
-_vorbis_comment_query_count
-_vorbis_coslook
-_vorbis_fromdBlook
-_vorbis_info_blocksize
-_vorbis_info_clear
-_vorbis_info_init
-_vorbis_invsq2explook
-_vorbis_invsqlook
-_vorbis_lpc_from_curve
-_vorbis_lpc_from_data
-_vorbis_lpc_predict
-_vorbis_lsp_to_curve
-_vorbis_staticbook_clear
-_vorbis_staticbook_destroy
-_vorbis_staticbook_unpack
-_vorbis_synthesis_headerin
-_vorbis_synthesis_lapout
-_vorbis_synthesis_restart
-_vorbis_synthesis_trackonly
-_vorbis_window
-_ogg_packet_clear
-_ogg_page_bos
-_ogg_page_checksum_set
-_ogg_page_continued
-_ogg_page_eos
-_ogg_page_granulepos
-_ogg_page_packets
-_ogg_page_pageno
-_ogg_page_serialno
-_ogg_page_version
-_ogg_stream_reset_serialno
-_ogg_stream_clear
-_ogg_stream_destroy
-_ogg_stream_eos
-_ogg_stream_flush
-_ogg_stream_init
-_ogg_stream_packetout
-_ogg_stream_packetpeek
-_ogg_stream_pagein
-_ogg_stream_pageout
-_ogg_stream_reset
-_ogg_sync_buffer
-_ogg_sync_clear
-_ogg_sync_destroy
-_ogg_sync_init
-_ogg_sync_pageout
-_ogg_sync_pageseek
-_ogg_sync_reset
-_ogg_sync_wrote
-_ov_bitrate
-_ov_bitrate_instant
-_ov_clear
-_ov_comment
-_ov_info
-_ov_open
-_ov_open_callbacks
-_ov_pcm_seek
-_ov_pcm_seek_page
-_ov_pcm_tell
-_ov_pcm_total
-_ov_raw_seek
-_ov_raw_tell
-_ov_raw_total
-_ov_read
-_ov_read_float
-_ov_seekable
-_ov_serialnumber
-_ov_streams
-_ov_test
-_ov_test_callbacks
-_ov_test_open
-_ov_time_seek
-_ov_time_seek_page
-_ov_time_tell
-_ov_time_total
-_ogg_toupper
-_oggpackB_adv
-_oggpackB_adv1
-_oggpackB_bits
-_oggpackB_bytes
-_oggpackB_get_buffer
-_oggpackB_look
-_oggpackB_look1
-_oggpackB_read
-_oggpackB_read1
-_oggpackB_readinit
-_oggpackB_reset
-_oggpack_adv
-_oggpack_adv1
-_oggpack_bits
-_oggpack_bytes
-_oggpack_get_buffer
-_oggpack_look
-_oggpack_look1
-_oggpack_read
-_oggpack_read1
-_oggpack_readinit
-_oggpack_reset
-_ov_crosslap
-_ov_pcm_seek_lap
-_ov_pcm_seek_page_lap
-_ov_raw_seek_lap
-_ov_time_seek_lap
-_ov_time_seek_page_lap
-_II_step_one
-_II_step_two
-_MyRecComp
-_SampleRates
-_Sinfo
-_ValidStepIndex
-__Z11fmodwrapperv
-__Z11fmodwrapperv.eh
-__floor_P
-__mapping_P
-__residue_P
-__ve_envelope_clear
-__ve_envelope_init
-__ve_envelope_mark
-__ve_envelope_search
-__ve_envelope_shift
-__vi_gpsy_free
-__vi_psy_free
-__vorbis_window_init
-__vp_ampmax_decay
-__vp_couple
-__vp_global_free
-__vp_global_look
-__vp_noise_normalize
-__vp_noise_normalize_sort
-__vp_noisemask
-__vp_offset_and_mix
-__vp_psy_clear
-__vp_psy_init
-__vp_quantize_couple_memo
-__vp_quantize_couple_sort
-__vp_remove_floor
-__vp_tonemask
-_alloc_0
-_alloc_1
-_alloc_2
-_alloc_3
-_alloc_4
-_bandInfo
-_cdcallback
-_cdchannel
-_cdmode
-_cdnumtracks
-_cdstream
-_cdtrack
-_drft_backward
-_drft_clear
-_drft_forward
-_drft_init
-_eatwhite
-_floor0_exportbundle
-_floor1_exportbundle
-_gFreeList
-_gNMRecBusy
-_gNMRecPtr
-_gSilenceOnes
-_gSilenceTwos
-_longLimit
-_mapping0_exportbundle
-_mdct_backward
-_mdct_clear
-_mdct_forward
-_mdct_init
-_muls
-_mystrdup
-_res0_free_info
-_res0_free_look
-_res0_inverse
-_res0_look
-_res0_unpack
-_res1_class
-_res1_inverse
-_res2_inverse
-_residue0_exportbundle
-_residue1_exportbundle
-_residue2_exportbundle
-_scale
-_shortLimit
-_tabsel_123
-_F_Free
-_F_Malloc
-_F_ReAlloc
-_F_memcmp
-_F_memmove
-_F_strcat
-_F_strchr
-_F_strcmp
-_F_strcpy
-_F_stricmp
-_F_strlen
-_F_strncat
-_F_strncmp
-_F_strncpy
-_F_strnicmp
-_F_strstr
-_F_strupr
-_F_tolower
-_F_toupper
diff --git a/indra/newview/fmodwrapper.cpp b/indra/newview/fmodwrapper.cpp
deleted file mode 100644
index e74c4a1d7c9..00000000000
--- a/indra/newview/fmodwrapper.cpp
+++ /dev/null
@@ -1,37 +0,0 @@
-/** 
- * @file fmodwrapper.cpp
- * @brief dummy source file for building a shared library to wrap libfmod.a
- *
- * $LicenseInfo:firstyear=2005&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- * 
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- * 
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- * 
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
- * $/LicenseInfo$
- */
-
-extern "C"
-{
-	void FMOD_System_Init(void);
-}
-
-void* fmodwrapper(void)
-{
-	// When building the fmodwrapper library, the linker doesn't seem to want to bring in libfmod.a unless I explicitly
-	// reference at least one symbol in the library.  This seemed like the simplest way.
-	return (void*)&FMOD_System_Init;
-}
diff --git a/indra/newview/linux_tools/wrapper.sh b/indra/newview/linux_tools/wrapper.sh
index 71b7e74c632..17f39aaa7e9 100755
--- a/indra/newview/linux_tools/wrapper.sh
+++ b/indra/newview/linux_tools/wrapper.sh
@@ -8,17 +8,13 @@
 #export LL_BAD_FMODEX_DRIVER=x
 ## - Avoids using any OpenAL audio driver.
 #export LL_BAD_OPENAL_DRIVER=x
-## - Avoids using any FMOD audio driver.
-#export LL_BAD_FMOD_DRIVER=x
-
+s
 ## - Avoids using the FMOD Ex PulseAudio audio driver.
 #export LL_BAD_FMOD_PULSEAUDIO=x
 ## - Avoids using the FMOD or FMOD Ex ALSA audio driver.
 #export LL_BAD_FMOD_ALSA=x
 ## - Avoids using the FMOD or FMOD Ex OSS audio driver.
 #export LL_BAD_FMOD_OSS=x
-## - Avoids using the FMOD ESD audio driver.
-#export LL_BAD_FMOD_ESD=x
 
 ## - Avoids the optional OpenGL extensions which have proven most problematic
 ##   on some hardware.  Disabling this option may cause BETTER PERFORMANCE but
diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py
index 37b119041f2..557c213787f 100644
--- a/indra/newview/viewer_manifest.py
+++ b/indra/newview/viewer_manifest.py
@@ -1124,13 +1124,6 @@ def construct(self):
                 print "tcmalloc files not found, skipping"
                 pass
 
-            try:
-                    self.path("libfmod-3.75.so")
-                    pass
-            except:
-                    print "Skipping libfmod-3.75.so - not found"
-                    pass
-
             try:
                     self.path("libfmodex-*.so")
                     self.path("libfmodex.so")
-- 
GitLab


From 8cf1d6af0d576ad460e441a45a455fbb45bcb9a7 Mon Sep 17 00:00:00 2001
From: Sovereign Engineer <sovereign.engineer@outlook.com>
Date: Mon, 4 Feb 2013 08:24:35 -0500
Subject: [PATCH 264/436] fmodwrapper uneeded with fmodex

---
 indra/newview/CMakeLists.txt     | 19 +------------------
 indra/newview/viewer_manifest.py |  6 +-----
 2 files changed, 2 insertions(+), 23 deletions(-)

diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 24a35bf8a27..b860b484dcc 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -1526,24 +1526,7 @@ endif (OPENAL)
 
 if (FMODEX)
   set(LLSTARTUP_COMPILE_FLAGS "${LLSTARTUP_COMPILE_FLAGS} -DLL_FMODEX")
-
-  if (DARWIN)
-    set(fmodwrapper_SOURCE_FILES fmodwrapper.cpp)
-    add_library(fmodwrapper SHARED ${fmodwrapper_SOURCE_FILES})
-    set(fmodwrapper_needed_LIBRARIES ${FMODEX_LIBRARY} ${CARBON_LIBRARY})
-    set_target_properties(
-      fmodwrapper
-      PROPERTIES
-      BUILD_WITH_INSTALL_RPATH 1
-      INSTALL_NAME_DIR "@executable_path/../Resources"
-      LINK_FLAGS "-unexported_symbols_list ${CMAKE_CURRENT_SOURCE_DIR}/fmod_hidden_symbols.exp"
-      )
-    set(FMODWRAPPER_LIBRARY fmodwrapper)
-    target_link_libraries(fmodwrapper ${fmodwrapper_needed_LIBRARIES})
-  else (DARWIN)
-    # fmodwrapper unnecessary on linux or windows
-    set(FMODWRAPPER_LIBRARY ${FMODEX_LIBRARY})
-  endif (DARWIN)
+  set(FMODWRAPPER_LIBRARY ${FMODEX_LIBRARY})
 endif (FMODEX)
 
 set_source_files_properties(llstartup.cpp PROPERTIES COMPILE_FLAGS "${LLSTARTUP_COMPILE_FLAGS}")
diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py
index 557c213787f..6333c650477 100644
--- a/indra/newview/viewer_manifest.py
+++ b/indra/newview/viewer_manifest.py
@@ -762,11 +762,7 @@ def path_optional(src, dst):
                                 'SLVoice',
                                 ):
                      self.path2basename(libdir, libfile)
-                
-                # FMOD for sound
-                libfile = "libfmodwrapper.dylib"
-                path_optional(os.path.join(self.args['configuration'], libfile), libfile)
-                
+
                 # our apps
                 for app_bld_dir, app in (("mac_crash_logger", "mac-crash-logger.app"),
                                          ("mac_updater", "mac-updater.app"),
-- 
GitLab


From 3ea6112843e2b83ed0e83976bae730ccaa23176a Mon Sep 17 00:00:00 2001
From: Sovereign Engineer <sovereign.engineer@outlook.com>
Date: Mon, 4 Feb 2013 08:30:42 -0500
Subject: [PATCH 265/436] Dos2Unix Line endings

---
 indra/cmake/Copy3rdPartyLibs.cmake | 754 ++++++++++++++---------------
 1 file changed, 377 insertions(+), 377 deletions(-)

diff --git a/indra/cmake/Copy3rdPartyLibs.cmake b/indra/cmake/Copy3rdPartyLibs.cmake
index b267ab9d4e5..1d83da4d879 100644
--- a/indra/cmake/Copy3rdPartyLibs.cmake
+++ b/indra/cmake/Copy3rdPartyLibs.cmake
@@ -1,377 +1,377 @@
-# -*- cmake -*-
-
-# The copy_win_libs folder contains file lists and a script used to
-# copy dlls, exes and such needed to run the SecondLife from within
-# VisualStudio.
-
-include(CMakeCopyIfDifferent)
-include(Linking)
-
-###################################################################
-# set up platform specific lists of files that need to be copied
-###################################################################
-if(WINDOWS)
-    set(SHARED_LIB_STAGING_DIR_DEBUG            "${SHARED_LIB_STAGING_DIR}/Debug")
-    set(SHARED_LIB_STAGING_DIR_RELWITHDEBINFO   "${SHARED_LIB_STAGING_DIR}/RelWithDebInfo")
-    set(SHARED_LIB_STAGING_DIR_RELEASE          "${SHARED_LIB_STAGING_DIR}/Release")
-
-    #*******************************
-    # VIVOX - *NOTE: no debug version
-    set(vivox_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}")
-    set(vivox_files
-        SLVoice.exe
-        libsndfile-1.dll
-        vivoxplatform.dll
-        vivoxsdk.dll
-        ortp.dll
-        zlib1.dll
-        vivoxoal.dll
-        )
-
-    #*******************************
-    # Misc shared libs 
-
-    set(debug_src_dir "${ARCH_PREBUILT_DIRS_DEBUG}")
-    set(debug_files
-        openjpegd.dll
-        libapr-1.dll
-        libaprutil-1.dll
-        libapriconv-1.dll
-        ssleay32.dll
-        libeay32.dll
-        libcollada14dom22-d.dll
-        glod.dll    
-        libhunspell.dll
-        )
-
-    set(release_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}")
-    set(release_files
-        openjpeg.dll
-        libapr-1.dll
-        libaprutil-1.dll
-        libapriconv-1.dll
-        ssleay32.dll
-        libeay32.dll
-        libcollada14dom22.dll
-        glod.dll
-        libhunspell.dll
-        )
-
-    if(USE_TCMALLOC)
-      set(debug_files ${debug_files} libtcmalloc_minimal-debug.dll)
-      set(release_files ${release_files} libtcmalloc_minimal.dll)
-    endif(USE_TCMALLOC)
-
-    if (FMODEX)
-      set(debug_files ${debug_files} fmodexL.dll)
-      set(release_files ${release_files} fmodex.dll)
-    endif (FMODEX)
-
-#*******************************
-# Copy MS C runtime dlls, required for packaging.
-# *TODO - Adapt this to support VC9
-if (MSVC80)
-    FIND_PATH(debug_msvc8_redist_path msvcr80d.dll
-        PATHS
-        ${MSVC_DEBUG_REDIST_PATH}
-         [HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\8.0\\Setup\\VC;ProductDir]/redist/Debug_NonRedist/x86/Microsoft.VC80.DebugCRT
-        NO_DEFAULT_PATH
-        NO_DEFAULT_PATH
-        )
-
-    if(EXISTS ${debug_msvc8_redist_path})
-        set(debug_msvc8_files
-            msvcr80d.dll
-            msvcp80d.dll
-            Microsoft.VC80.DebugCRT.manifest
-            )
-
-        copy_if_different(
-            ${debug_msvc8_redist_path}
-            "${SHARED_LIB_STAGING_DIR_DEBUG}"
-            out_targets
-            ${debug_msvc8_files}
-            )
-        set(third_party_targets ${third_party_targets} ${out_targets})
-
-    endif (EXISTS ${debug_msvc8_redist_path})
-
-    FIND_PATH(release_msvc8_redist_path msvcr80.dll
-        PATHS
-        ${MSVC_REDIST_PATH}
-         [HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\8.0\\Setup\\VC;ProductDir]/redist/x86/Microsoft.VC80.CRT
-        NO_DEFAULT_PATH
-        NO_DEFAULT_PATH
-        )
-
-    if(EXISTS ${release_msvc8_redist_path})
-        set(release_msvc8_files
-            msvcr80.dll
-            msvcp80.dll
-            Microsoft.VC80.CRT.manifest
-            )
-
-        copy_if_different(
-            ${release_msvc8_redist_path}
-            "${SHARED_LIB_STAGING_DIR_RELEASE}"
-            out_targets
-            ${release_msvc8_files}
-            )
-        set(third_party_targets ${third_party_targets} ${out_targets})
-
-        copy_if_different(
-            ${release_msvc8_redist_path}
-            "${SHARED_LIB_STAGING_DIR_RELWITHDEBINFO}"
-            out_targets
-            ${release_msvc8_files}
-            )
-        set(third_party_targets ${third_party_targets} ${out_targets})
-          
-    endif (EXISTS ${release_msvc8_redist_path})
-elseif (MSVC_VERSION EQUAL 1600) # VisualStudio 2010
-    FIND_PATH(debug_msvc10_redist_path msvcr100d.dll
-        PATHS
-        ${MSVC_DEBUG_REDIST_PATH}
-         [HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\10.0\\Setup\\VC;ProductDir]/redist/Debug_NonRedist/x86/Microsoft.VC100.DebugCRT
-        [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Windows;Directory]/SysWOW64
-        [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Windows;Directory]/System32
-        NO_DEFAULT_PATH
-        )
-
-    if(EXISTS ${debug_msvc10_redist_path})
-        set(debug_msvc10_files
-            msvcr100d.dll
-            msvcp100d.dll
-            )
-
-        copy_if_different(
-            ${debug_msvc10_redist_path}
-            "${SHARED_LIB_STAGING_DIR_DEBUG}"
-            out_targets
-            ${debug_msvc10_files}
-            )
-        set(third_party_targets ${third_party_targets} ${out_targets})
-
-    endif ()
-
-    FIND_PATH(release_msvc10_redist_path msvcr100.dll
-        PATHS
-        ${MSVC_REDIST_PATH}
-         [HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\10.0\\Setup\\VC;ProductDir]/redist/x86/Microsoft.VC100.CRT
-        [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Windows;Directory]/SysWOW64
-        [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Windows;Directory]/System32
-        NO_DEFAULT_PATH
-        )
-
-    if(EXISTS ${release_msvc10_redist_path})
-        set(release_msvc10_files
-            msvcr100.dll
-            msvcp100.dll
-            )
-
-        copy_if_different(
-            ${release_msvc10_redist_path}
-            "${SHARED_LIB_STAGING_DIR_RELEASE}"
-            out_targets
-            ${release_msvc10_files}
-            )
-        set(third_party_targets ${third_party_targets} ${out_targets})
-
-        copy_if_different(
-            ${release_msvc10_redist_path}
-            "${SHARED_LIB_STAGING_DIR_RELWITHDEBINFO}"
-            out_targets
-            ${release_msvc10_files}
-            )
-        set(third_party_targets ${third_party_targets} ${out_targets})
-          
-    endif ()
-endif (MSVC80)
-
-elseif(DARWIN)
-    set(SHARED_LIB_STAGING_DIR_DEBUG            "${SHARED_LIB_STAGING_DIR}/Debug/Resources")
-    set(SHARED_LIB_STAGING_DIR_RELWITHDEBINFO   "${SHARED_LIB_STAGING_DIR}/RelWithDebInfo/Resources")
-    set(SHARED_LIB_STAGING_DIR_RELEASE          "${SHARED_LIB_STAGING_DIR}/Release/Resources")
-
-    set(vivox_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}")
-    set(vivox_files
-        SLVoice
-        libsndfile.dylib
-        libvivoxoal.dylib
-        libortp.dylib
-        libvivoxplatform.dylib
-        libvivoxsdk.dylib
-       )
-    set(debug_src_dir "${ARCH_PREBUILT_DIRS_DEBUG}")
-    set(debug_files
-       )
-    set(release_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}")
-    set(release_files
-        libapr-1.0.dylib
-        libapr-1.dylib
-        libaprutil-1.0.dylib
-        libaprutil-1.dylib
-        libexpat.1.5.2.dylib
-        libexpat.dylib
-        libGLOD.dylib
-        libllqtwebkit.dylib
-        libminizip.a
-        libndofdev.dylib
-        libhunspell-1.3.0.dylib
-        libexception_handler.dylib
-        libcollada14dom.dylib
-       )
-
-    if (FMODEX)
-      #set(debug_files ${debug_files} libfmodexL.dylib)
-      set(release_files ${release_files} libfmodex.dylib)
-    endif (FMODEX)
-
-elseif(LINUX)
-    # linux is weird, multiple side by side configurations aren't supported
-    # and we don't seem to have any debug shared libs built yet anyways...
-    set(SHARED_LIB_STAGING_DIR_DEBUG            "${SHARED_LIB_STAGING_DIR}")
-    set(SHARED_LIB_STAGING_DIR_RELWITHDEBINFO   "${SHARED_LIB_STAGING_DIR}")
-    set(SHARED_LIB_STAGING_DIR_RELEASE          "${SHARED_LIB_STAGING_DIR}")
-
-    set(vivox_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}")
-    set(vivox_files
-        libsndfile.so.1
-        libortp.so
-        libvivoxoal.so.1
-        libvivoxplatform.so
-        libvivoxsdk.so
-        SLVoice
-       )
-    # *TODO - update this to use LIBS_PREBUILT_DIR and LL_ARCH_DIR variables
-    # or ARCH_PREBUILT_DIRS
-    set(debug_src_dir "${ARCH_PREBUILT_DIRS_DEBUG}")
-    set(debug_files
-       )
-    # *TODO - update this to use LIBS_PREBUILT_DIR and LL_ARCH_DIR variables
-    # or ARCH_PREBUILT_DIRS
-    set(release_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}")
-    # *FIX - figure out what to do with duplicate libalut.so here -brad
-    set(release_files
-        libapr-1.so.0
-        libaprutil-1.so.0
-        libatk-1.0.so
-        libboost_program_options-mt.so.${BOOST_VERSION}.0
-        libboost_regex-mt.so.${BOOST_VERSION}.0
-        libboost_thread-mt.so.${BOOST_VERSION}.0
-        libboost_filesystem-mt.so.${BOOST_VERSION}.0
-        libboost_signals-mt.so.${BOOST_VERSION}.0
-        libboost_system-mt.so.${BOOST_VERSION}.0
-        libbreakpad_client.so.0
-        libcollada14dom.so
-        libcrypto.so.1.0.0
-        libdb-5.1.so
-        libexpat.so
-        libexpat.so.1
-        libglod.so
-        libgmock_main.so
-        libgmock.so.0
-        libgmodule-2.0.so
-        libgobject-2.0.so
-        libgtest_main.so
-        libgtest.so.0
-        libhunspell-1.3.so.0.0.0
-        libminizip.so
-        libopenal.so
-        libopenjpeg.so
-        libssl.so
-        libuuid.so.16
-        libuuid.so.16.0.22
-        libssl.so.1.0.0
-        libfontconfig.so.1.4.4
-       )
-
-    if (USE_TCMALLOC)
-      set(release_files ${release_files} "libtcmalloc_minimal.so")
-    endif (USE_TCMALLOC)
-
-    if (FMODEX)
-      set(release_file ${release_files} "libfmodex-4.44.so")
-    endif (FMODEX)
-
-else(WINDOWS)
-    message(STATUS "WARNING: unrecognized platform for staging 3rd party libs, skipping...")
-    set(vivox_src_dir "${CMAKE_SOURCE_DIR}/newview/vivox-runtime/i686-linux")
-    set(vivox_files "")
-    # *TODO - update this to use LIBS_PREBUILT_DIR and LL_ARCH_DIR variables
-    # or ARCH_PREBUILT_DIRS
-    set(debug_src_dir "${CMAKE_SOURCE_DIR}/../libraries/i686-linux/lib/debug")
-    set(debug_files "")
-    # *TODO - update this to use LIBS_PREBUILT_DIR and LL_ARCH_DIR variables
-    # or ARCH_PREBUILT_DIRS
-    set(release_src_dir "${CMAKE_SOURCE_DIR}/../libraries/i686-linux/lib/release")
-    set(release_files "")
-
-    set(debug_llkdu_src "")
-    set(debug_llkdu_dst "")
-    set(release_llkdu_src "")
-    set(release_llkdu_dst "")
-    set(relwithdebinfo_llkdu_dst "")
-endif(WINDOWS)
-
-
-################################################################
-# Done building the file lists, now set up the copy commands.
-################################################################
-
-copy_if_different(
-    ${vivox_src_dir}
-    "${SHARED_LIB_STAGING_DIR_DEBUG}"
-    out_targets 
-    ${vivox_files}
-    )
-set(third_party_targets ${third_party_targets} ${out_targets})
-
-copy_if_different(
-    ${vivox_src_dir}
-    "${SHARED_LIB_STAGING_DIR_RELEASE}"
-    out_targets
-    ${vivox_files}
-    )
-set(third_party_targets ${third_party_targets} ${out_targets})
-
-copy_if_different(
-    ${vivox_src_dir}
-    "${SHARED_LIB_STAGING_DIR_RELWITHDEBINFO}"
-    out_targets
-    ${vivox_files}
-    )
-set(third_party_targets ${third_party_targets} ${out_targets})
-
-
-
-copy_if_different(
-    ${debug_src_dir}
-    "${SHARED_LIB_STAGING_DIR_DEBUG}"
-    out_targets
-    ${debug_files}
-    )
-set(third_party_targets ${third_party_targets} ${out_targets})
-
-copy_if_different(
-    ${release_src_dir}
-    "${SHARED_LIB_STAGING_DIR_RELEASE}"
-    out_targets
-    ${release_files}
-    )
-set(third_party_targets ${third_party_targets} ${out_targets})
-
-copy_if_different(
-    ${release_src_dir}
-    "${SHARED_LIB_STAGING_DIR_RELWITHDEBINFO}"
-    out_targets
-    ${release_files}
-    )
-set(third_party_targets ${third_party_targets} ${out_targets})
-
-if(NOT STANDALONE)
-  add_custom_target(
-      stage_third_party_libs ALL
-      DEPENDS ${third_party_targets}
-      )
-endif(NOT STANDALONE)
+# -*- cmake -*-
+
+# The copy_win_libs folder contains file lists and a script used to
+# copy dlls, exes and such needed to run the SecondLife from within
+# VisualStudio.
+
+include(CMakeCopyIfDifferent)
+include(Linking)
+
+###################################################################
+# set up platform specific lists of files that need to be copied
+###################################################################
+if(WINDOWS)
+    set(SHARED_LIB_STAGING_DIR_DEBUG            "${SHARED_LIB_STAGING_DIR}/Debug")
+    set(SHARED_LIB_STAGING_DIR_RELWITHDEBINFO   "${SHARED_LIB_STAGING_DIR}/RelWithDebInfo")
+    set(SHARED_LIB_STAGING_DIR_RELEASE          "${SHARED_LIB_STAGING_DIR}/Release")
+
+    #*******************************
+    # VIVOX - *NOTE: no debug version
+    set(vivox_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}")
+    set(vivox_files
+        SLVoice.exe
+        libsndfile-1.dll
+        vivoxplatform.dll
+        vivoxsdk.dll
+        ortp.dll
+        zlib1.dll
+        vivoxoal.dll
+        )
+
+    #*******************************
+    # Misc shared libs 
+
+    set(debug_src_dir "${ARCH_PREBUILT_DIRS_DEBUG}")
+    set(debug_files
+        openjpegd.dll
+        libapr-1.dll
+        libaprutil-1.dll
+        libapriconv-1.dll
+        ssleay32.dll
+        libeay32.dll
+        libcollada14dom22-d.dll
+        glod.dll    
+        libhunspell.dll
+        )
+
+    set(release_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}")
+    set(release_files
+        openjpeg.dll
+        libapr-1.dll
+        libaprutil-1.dll
+        libapriconv-1.dll
+        ssleay32.dll
+        libeay32.dll
+        libcollada14dom22.dll
+        glod.dll
+        libhunspell.dll
+        )
+
+    if(USE_TCMALLOC)
+      set(debug_files ${debug_files} libtcmalloc_minimal-debug.dll)
+      set(release_files ${release_files} libtcmalloc_minimal.dll)
+    endif(USE_TCMALLOC)
+
+    if (FMODEX)
+      set(debug_files ${debug_files} fmodexL.dll)
+      set(release_files ${release_files} fmodex.dll)
+    endif (FMODEX)
+
+#*******************************
+# Copy MS C runtime dlls, required for packaging.
+# *TODO - Adapt this to support VC9
+if (MSVC80)
+    FIND_PATH(debug_msvc8_redist_path msvcr80d.dll
+        PATHS
+        ${MSVC_DEBUG_REDIST_PATH}
+         [HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\8.0\\Setup\\VC;ProductDir]/redist/Debug_NonRedist/x86/Microsoft.VC80.DebugCRT
+        NO_DEFAULT_PATH
+        NO_DEFAULT_PATH
+        )
+
+    if(EXISTS ${debug_msvc8_redist_path})
+        set(debug_msvc8_files
+            msvcr80d.dll
+            msvcp80d.dll
+            Microsoft.VC80.DebugCRT.manifest
+            )
+
+        copy_if_different(
+            ${debug_msvc8_redist_path}
+            "${SHARED_LIB_STAGING_DIR_DEBUG}"
+            out_targets
+            ${debug_msvc8_files}
+            )
+        set(third_party_targets ${third_party_targets} ${out_targets})
+
+    endif (EXISTS ${debug_msvc8_redist_path})
+
+    FIND_PATH(release_msvc8_redist_path msvcr80.dll
+        PATHS
+        ${MSVC_REDIST_PATH}
+         [HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\8.0\\Setup\\VC;ProductDir]/redist/x86/Microsoft.VC80.CRT
+        NO_DEFAULT_PATH
+        NO_DEFAULT_PATH
+        )
+
+    if(EXISTS ${release_msvc8_redist_path})
+        set(release_msvc8_files
+            msvcr80.dll
+            msvcp80.dll
+            Microsoft.VC80.CRT.manifest
+            )
+
+        copy_if_different(
+            ${release_msvc8_redist_path}
+            "${SHARED_LIB_STAGING_DIR_RELEASE}"
+            out_targets
+            ${release_msvc8_files}
+            )
+        set(third_party_targets ${third_party_targets} ${out_targets})
+
+        copy_if_different(
+            ${release_msvc8_redist_path}
+            "${SHARED_LIB_STAGING_DIR_RELWITHDEBINFO}"
+            out_targets
+            ${release_msvc8_files}
+            )
+        set(third_party_targets ${third_party_targets} ${out_targets})
+          
+    endif (EXISTS ${release_msvc8_redist_path})
+elseif (MSVC_VERSION EQUAL 1600) # VisualStudio 2010
+    FIND_PATH(debug_msvc10_redist_path msvcr100d.dll
+        PATHS
+        ${MSVC_DEBUG_REDIST_PATH}
+         [HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\10.0\\Setup\\VC;ProductDir]/redist/Debug_NonRedist/x86/Microsoft.VC100.DebugCRT
+        [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Windows;Directory]/SysWOW64
+        [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Windows;Directory]/System32
+        NO_DEFAULT_PATH
+        )
+
+    if(EXISTS ${debug_msvc10_redist_path})
+        set(debug_msvc10_files
+            msvcr100d.dll
+            msvcp100d.dll
+            )
+
+        copy_if_different(
+            ${debug_msvc10_redist_path}
+            "${SHARED_LIB_STAGING_DIR_DEBUG}"
+            out_targets
+            ${debug_msvc10_files}
+            )
+        set(third_party_targets ${third_party_targets} ${out_targets})
+
+    endif ()
+
+    FIND_PATH(release_msvc10_redist_path msvcr100.dll
+        PATHS
+        ${MSVC_REDIST_PATH}
+         [HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\10.0\\Setup\\VC;ProductDir]/redist/x86/Microsoft.VC100.CRT
+        [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Windows;Directory]/SysWOW64
+        [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Windows;Directory]/System32
+        NO_DEFAULT_PATH
+        )
+
+    if(EXISTS ${release_msvc10_redist_path})
+        set(release_msvc10_files
+            msvcr100.dll
+            msvcp100.dll
+            )
+
+        copy_if_different(
+            ${release_msvc10_redist_path}
+            "${SHARED_LIB_STAGING_DIR_RELEASE}"
+            out_targets
+            ${release_msvc10_files}
+            )
+        set(third_party_targets ${third_party_targets} ${out_targets})
+
+        copy_if_different(
+            ${release_msvc10_redist_path}
+            "${SHARED_LIB_STAGING_DIR_RELWITHDEBINFO}"
+            out_targets
+            ${release_msvc10_files}
+            )
+        set(third_party_targets ${third_party_targets} ${out_targets})
+          
+    endif ()
+endif (MSVC80)
+
+elseif(DARWIN)
+    set(SHARED_LIB_STAGING_DIR_DEBUG            "${SHARED_LIB_STAGING_DIR}/Debug/Resources")
+    set(SHARED_LIB_STAGING_DIR_RELWITHDEBINFO   "${SHARED_LIB_STAGING_DIR}/RelWithDebInfo/Resources")
+    set(SHARED_LIB_STAGING_DIR_RELEASE          "${SHARED_LIB_STAGING_DIR}/Release/Resources")
+
+    set(vivox_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}")
+    set(vivox_files
+        SLVoice
+        libsndfile.dylib
+        libvivoxoal.dylib
+        libortp.dylib
+        libvivoxplatform.dylib
+        libvivoxsdk.dylib
+       )
+    set(debug_src_dir "${ARCH_PREBUILT_DIRS_DEBUG}")
+    set(debug_files
+       )
+    set(release_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}")
+    set(release_files
+        libapr-1.0.dylib
+        libapr-1.dylib
+        libaprutil-1.0.dylib
+        libaprutil-1.dylib
+        libexpat.1.5.2.dylib
+        libexpat.dylib
+        libGLOD.dylib
+        libllqtwebkit.dylib
+        libminizip.a
+        libndofdev.dylib
+        libhunspell-1.3.0.dylib
+        libexception_handler.dylib
+        libcollada14dom.dylib
+       )
+
+    if (FMODEX)
+      #set(debug_files ${debug_files} libfmodexL.dylib)
+      set(release_files ${release_files} libfmodex.dylib)
+    endif (FMODEX)
+
+elseif(LINUX)
+    # linux is weird, multiple side by side configurations aren't supported
+    # and we don't seem to have any debug shared libs built yet anyways...
+    set(SHARED_LIB_STAGING_DIR_DEBUG            "${SHARED_LIB_STAGING_DIR}")
+    set(SHARED_LIB_STAGING_DIR_RELWITHDEBINFO   "${SHARED_LIB_STAGING_DIR}")
+    set(SHARED_LIB_STAGING_DIR_RELEASE          "${SHARED_LIB_STAGING_DIR}")
+
+    set(vivox_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}")
+    set(vivox_files
+        libsndfile.so.1
+        libortp.so
+        libvivoxoal.so.1
+        libvivoxplatform.so
+        libvivoxsdk.so
+        SLVoice
+       )
+    # *TODO - update this to use LIBS_PREBUILT_DIR and LL_ARCH_DIR variables
+    # or ARCH_PREBUILT_DIRS
+    set(debug_src_dir "${ARCH_PREBUILT_DIRS_DEBUG}")
+    set(debug_files
+       )
+    # *TODO - update this to use LIBS_PREBUILT_DIR and LL_ARCH_DIR variables
+    # or ARCH_PREBUILT_DIRS
+    set(release_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}")
+    # *FIX - figure out what to do with duplicate libalut.so here -brad
+    set(release_files
+        libapr-1.so.0
+        libaprutil-1.so.0
+        libatk-1.0.so
+        libboost_program_options-mt.so.${BOOST_VERSION}.0
+        libboost_regex-mt.so.${BOOST_VERSION}.0
+        libboost_thread-mt.so.${BOOST_VERSION}.0
+        libboost_filesystem-mt.so.${BOOST_VERSION}.0
+        libboost_signals-mt.so.${BOOST_VERSION}.0
+        libboost_system-mt.so.${BOOST_VERSION}.0
+        libbreakpad_client.so.0
+        libcollada14dom.so
+        libcrypto.so.1.0.0
+        libdb-5.1.so
+        libexpat.so
+        libexpat.so.1
+        libglod.so
+        libgmock_main.so
+        libgmock.so.0
+        libgmodule-2.0.so
+        libgobject-2.0.so
+        libgtest_main.so
+        libgtest.so.0
+        libhunspell-1.3.so.0.0.0
+        libminizip.so
+        libopenal.so
+        libopenjpeg.so
+        libssl.so
+        libuuid.so.16
+        libuuid.so.16.0.22
+        libssl.so.1.0.0
+        libfontconfig.so.1.4.4
+       )
+
+    if (USE_TCMALLOC)
+      set(release_files ${release_files} "libtcmalloc_minimal.so")
+    endif (USE_TCMALLOC)
+
+    if (FMODEX)
+      set(release_file ${release_files} "libfmodex-4.44.so")
+    endif (FMODEX)
+
+else(WINDOWS)
+    message(STATUS "WARNING: unrecognized platform for staging 3rd party libs, skipping...")
+    set(vivox_src_dir "${CMAKE_SOURCE_DIR}/newview/vivox-runtime/i686-linux")
+    set(vivox_files "")
+    # *TODO - update this to use LIBS_PREBUILT_DIR and LL_ARCH_DIR variables
+    # or ARCH_PREBUILT_DIRS
+    set(debug_src_dir "${CMAKE_SOURCE_DIR}/../libraries/i686-linux/lib/debug")
+    set(debug_files "")
+    # *TODO - update this to use LIBS_PREBUILT_DIR and LL_ARCH_DIR variables
+    # or ARCH_PREBUILT_DIRS
+    set(release_src_dir "${CMAKE_SOURCE_DIR}/../libraries/i686-linux/lib/release")
+    set(release_files "")
+
+    set(debug_llkdu_src "")
+    set(debug_llkdu_dst "")
+    set(release_llkdu_src "")
+    set(release_llkdu_dst "")
+    set(relwithdebinfo_llkdu_dst "")
+endif(WINDOWS)
+
+
+################################################################
+# Done building the file lists, now set up the copy commands.
+################################################################
+
+copy_if_different(
+    ${vivox_src_dir}
+    "${SHARED_LIB_STAGING_DIR_DEBUG}"
+    out_targets 
+    ${vivox_files}
+    )
+set(third_party_targets ${third_party_targets} ${out_targets})
+
+copy_if_different(
+    ${vivox_src_dir}
+    "${SHARED_LIB_STAGING_DIR_RELEASE}"
+    out_targets
+    ${vivox_files}
+    )
+set(third_party_targets ${third_party_targets} ${out_targets})
+
+copy_if_different(
+    ${vivox_src_dir}
+    "${SHARED_LIB_STAGING_DIR_RELWITHDEBINFO}"
+    out_targets
+    ${vivox_files}
+    )
+set(third_party_targets ${third_party_targets} ${out_targets})
+
+
+
+copy_if_different(
+    ${debug_src_dir}
+    "${SHARED_LIB_STAGING_DIR_DEBUG}"
+    out_targets
+    ${debug_files}
+    )
+set(third_party_targets ${third_party_targets} ${out_targets})
+
+copy_if_different(
+    ${release_src_dir}
+    "${SHARED_LIB_STAGING_DIR_RELEASE}"
+    out_targets
+    ${release_files}
+    )
+set(third_party_targets ${third_party_targets} ${out_targets})
+
+copy_if_different(
+    ${release_src_dir}
+    "${SHARED_LIB_STAGING_DIR_RELWITHDEBINFO}"
+    out_targets
+    ${release_files}
+    )
+set(third_party_targets ${third_party_targets} ${out_targets})
+
+if(NOT STANDALONE)
+  add_custom_target(
+      stage_third_party_libs ALL
+      DEPENDS ${third_party_targets}
+      )
+endif(NOT STANDALONE)
-- 
GitLab


From 5030766cf2b16a6ae64c8cec712b3bf9c3cddd9b Mon Sep 17 00:00:00 2001
From: Sovereign Engineer <sovereign.engineer@outlook.com>
Date: Mon, 4 Feb 2013 21:36:12 +0800
Subject: [PATCH 266/436] Correct order of autobuild libs

---
 autobuild.xml | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index 8c3c6164338..9cb2719eb08 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -505,29 +505,29 @@
             <key>name</key>
             <string>darwin</string>
           </map>
-          <key>windows</key>
+          <key>linux</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>b278ee4734ddb050ba2b67bbac709574</string>
+              <string>2781f3e844a8c5e6a3633b4d77a018d7</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmodex-private/rev/269873/arch/CYGWIN/installer/fmodex-4.44-windows-201300201.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmodex-private/rev/269873/arch/Linux/installer/fmodex-4.44-linux-201300202.tar.bz2</string>
             </map>
             <key>name</key>
-            <string>windows</string>
+            <string>linux</string>
           </map>
-          <key>linux</key>
+          <key>windows</key>
           <map>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>2781f3e844a8c5e6a3633b4d77a018d7</string>
+              <string>b278ee4734ddb050ba2b67bbac709574</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmodex-private/rev/269873/arch/Linux/installer/fmodex-4.44-linux-201300202.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmodex-private/rev/269873/arch/CYGWIN/installer/fmodex-4.44-windows-201300201.tar.bz2</string>
             </map>
             <key>name</key>
-            <string>linux</string>
+            <string>windows</string>
           </map>
         </map>
       </map>
-- 
GitLab


From a05afe036cba1a85043db99e80045ae40e6a6d6c Mon Sep 17 00:00:00 2001
From: Sovereign Engineer <sovereign.engineer@outlook.com>
Date: Mon, 4 Feb 2013 10:07:06 -0500
Subject: [PATCH 267/436] Removed small typo in linux wrapper script

---
 indra/newview/linux_tools/wrapper.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/newview/linux_tools/wrapper.sh b/indra/newview/linux_tools/wrapper.sh
index 17f39aaa7e9..ef3746c90bc 100755
--- a/indra/newview/linux_tools/wrapper.sh
+++ b/indra/newview/linux_tools/wrapper.sh
@@ -8,7 +8,7 @@
 #export LL_BAD_FMODEX_DRIVER=x
 ## - Avoids using any OpenAL audio driver.
 #export LL_BAD_OPENAL_DRIVER=x
-s
+
 ## - Avoids using the FMOD Ex PulseAudio audio driver.
 #export LL_BAD_FMOD_PULSEAUDIO=x
 ## - Avoids using the FMOD or FMOD Ex ALSA audio driver.
-- 
GitLab


From 3a141d2ff33f21bcd7a8f772f52af9cf04d722b3 Mon Sep 17 00:00:00 2001
From: Sovereign Engineer <sovereign.engineer@outlook.com>
Date: Mon, 4 Feb 2013 10:25:23 -0500
Subject: [PATCH 268/436] Cleanup some left over comments in fmodex streaming

---
 indra/llaudio/llstreamingaudio_fmodex.cpp | 9 ---------
 1 file changed, 9 deletions(-)

diff --git a/indra/llaudio/llstreamingaudio_fmodex.cpp b/indra/llaudio/llstreamingaudio_fmodex.cpp
index 463d816331d..4a74267650b 100644
--- a/indra/llaudio/llstreamingaudio_fmodex.cpp
+++ b/indra/llaudio/llstreamingaudio_fmodex.cpp
@@ -291,11 +291,6 @@ LLAudioStreamManagerFMODEX::LLAudioStreamManagerFMODEX(FMOD::System *system, con
 {
 	mInternetStreamURL = url;
 
-	/*FMOD_CREATESOUNDEXINFO exinfo;
-	memset(&exinfo,0,sizeof(exinfo));
-	exinfo.cbsize = sizeof(exinfo);
-	exinfo.suggestedsoundtype = FMOD_SOUND_TYPE_OGGVORBIS;	//Hint to speed up loading.*/
-
 	FMOD_RESULT result = mSystem->createStream(url.c_str(), FMOD_2D | FMOD_NONBLOCKING | FMOD_MPEGSEARCH | FMOD_IGNORETAGS, 0, &mInternetStream);
 
 	if (result!= FMOD_OK)
@@ -338,10 +333,6 @@ bool LLAudioStreamManagerFMODEX::stopStream()
 		case FMOD_OPENSTATE_CONNECTING:
 			close = false;
 			break;
-		/*case FSOUND_STREAM_NET_NOTCONNECTED:
-		case FSOUND_STREAM_NET_BUFFERING:
-		case FSOUND_STREAM_NET_READY:
-		case FSOUND_STREAM_NET_ERROR:*/
 		default:
 			close = true;
 		}
-- 
GitLab


From c074456a1e8a99a604d6411629ea4fc2755dd6e6 Mon Sep 17 00:00:00 2001
From: "Graham Madarasz (Graham)" <graham@lindenlab.com>
Date: Mon, 4 Feb 2013 08:58:26 -0800
Subject: [PATCH 269/436] Updated md5sums and staged lib paths for FModEx

---
 autobuild.xml | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index 080ccb7d4cd..47a910686d2 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -558,9 +558,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>b278ee4734ddb050ba2b67bbac709574</string>
+	      <string>6d19913034d44784e82e5ff8e05da3d6</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmodex-private/rev/269873/arch/CYGWIN/installer/fmodex-4.44-windows-201300201.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmodex-private/rev/269881/arch/CYGWIN/installer/fmodex-4.44-windows-20130201.tar.bz2</string>
             </map>
             <key>name</key>
             <string>windows</string>
@@ -570,9 +570,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>2781f3e844a8c5e6a3633b4d77a018d7</string>
+	      <string>fc26cfdca9351b271a8a21ce002d7613</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmodex-private/rev/269873/arch/Linux/installer/fmodex-4.44-linux-201300202.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmodex-private/rev/269881/arch/Linux/installer/fmodex-4.44-linux-20130202.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
-- 
GitLab


From d5cafa98a30d13f5c9515a1d6c4e53ebc13d87ad Mon Sep 17 00:00:00 2001
From: "Graham Madarasz (Graham)" <graham@lindenlab.com>
Date: Mon, 4 Feb 2013 09:32:50 -0800
Subject: [PATCH 270/436] Point autobuild at latest Mac Fmod Ex package

---
 autobuild.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index 47a910686d2..9ee3e08850b 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -546,9 +546,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>5b3e7ac9d43f317a78807ef42d0557cf</string>
+	      <string>7c7d0d40327e8d94b45540f50246ec93</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmodex-private/rev/269872/arch/Darwin/installer/fmodex-4.44-darwin-20130201.tar.bz2</string>
+	      <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmodex-private/rev/269882/arch/Darwin/installer/fmodex-4.44-darwin-20130201.tar.bz2</string>
             </map>
             <key>name</key>
             <string>darwin</string>
-- 
GitLab


From c1ccf505b6c29601c9e368c799839a6575e804ce Mon Sep 17 00:00:00 2001
From: "Graham Madarasz (Graham)" <graham@lindenlab.com>
Date: Mon, 4 Feb 2013 10:54:56 -0800
Subject: [PATCH 271/436] Fix autobuild.xml to refer to md5sums and paths of
 newer 3p-fmodex-private

---
 autobuild.xml | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index dc3548c5c3e..6a1db984512 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -498,9 +498,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-	      <string>7c7d0d40327e8d94b45540f50246ec93</string>
+	      <string>39817c0f0961a8b82558d9cef1c759bd</string>
               <key>url</key>
-	      <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmodex-private/rev/269882/arch/Darwin/installer/fmodex-4.44-darwin-20130201.tar.bz2</string>
+	      <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmodex-private/rev/269882/arch/Darwin/installer/fmodex-4.44-darwin-20130204.tar.bz2</string>
             </map>
             <key>name</key>
             <string>darwin</string>
@@ -510,9 +510,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-	      <string>fc26cfdca9351b271a8a21ce002d7613</string>
+              <string>6edb8c10d6cada8af476c27659dcfb92</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmodex-private/rev/269881/arch/Linux/installer/fmodex-4.44-linux-20130202.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmodex-private/rev/269881/arch/Linux/installer/fmodex-4.44-linux-20130204.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
@@ -522,9 +522,10 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-	      <string>6d19913034d44784e82e5ff8e05da3d6</string>
+
+	      <string>a1713cb64a792b0ad44cf640e862dc33</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmodex-private/rev/269881/arch/CYGWIN/installer/fmodex-4.44-windows-20130201.tar.bz2</string>
+	      <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmodex-private/rev/269934/arch/CYGWIN/installer/fmodex-4.44-windows-20130204.tar.bz2</string>
             </map>
             <key>name</key>
             <string>windows</string>
-- 
GitLab


From 0b614a6098e337b97614a1f7881cc5efad6da24d Mon Sep 17 00:00:00 2001
From: Graham Madarasz <graham@lindenlab.com>
Date: Mon, 4 Feb 2013 11:11:12 -0800
Subject: [PATCH 272/436] Fixed rev numbers in paths for mac and linux

---
 autobuild.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index 6a1db984512..de4c28c5846 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -500,7 +500,7 @@
               <key>hash</key>
 	      <string>39817c0f0961a8b82558d9cef1c759bd</string>
               <key>url</key>
-	      <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmodex-private/rev/269882/arch/Darwin/installer/fmodex-4.44-darwin-20130204.tar.bz2</string>
+	      <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmodex-private/rev/269940/arch/Darwin/installer/fmodex-4.44-darwin-20130204.tar.bz2</string>
             </map>
             <key>name</key>
             <string>darwin</string>
@@ -512,7 +512,7 @@
               <key>hash</key>
               <string>6edb8c10d6cada8af476c27659dcfb92</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmodex-private/rev/269881/arch/Linux/installer/fmodex-4.44-linux-20130204.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmodex-private/rev/269934/arch/Linux/installer/fmodex-4.44-linux-20130204.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
-- 
GitLab


From 60448cac910ae7ea7f014976a1015ecb58b215ba Mon Sep 17 00:00:00 2001
From: "Graham Madarasz (Graham)" <graham@lindenlab.com>
Date: Mon, 4 Feb 2013 12:06:17 -0800
Subject: [PATCH 273/436] More path fixups in staging

---
 indra/cmake/Copy3rdPartyLibs.cmake | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/indra/cmake/Copy3rdPartyLibs.cmake b/indra/cmake/Copy3rdPartyLibs.cmake
index 1d83da4d879..b11078c9a53 100644
--- a/indra/cmake/Copy3rdPartyLibs.cmake
+++ b/indra/cmake/Copy3rdPartyLibs.cmake
@@ -223,7 +223,7 @@ elseif(DARWIN)
        )
 
     if (FMODEX)
-      #set(debug_files ${debug_files} libfmodexL.dylib)
+      set(debug_files ${debug_files} libfmodexL.dylib)
       set(release_files ${release_files} libfmodex.dylib)
     endif (FMODEX)
 
@@ -291,7 +291,7 @@ elseif(LINUX)
     endif (USE_TCMALLOC)
 
     if (FMODEX)
-      set(release_file ${release_files} "libfmodex-4.44.so")
+      set(release_file ${release_files} "libfmodex.so")
     endif (FMODEX)
 
 else(WINDOWS)
-- 
GitLab


From 4c6fc784a685445d22ce7b370d6e376da918e423 Mon Sep 17 00:00:00 2001
From: "Graham Madarasz (Graham)" <graham@lindenlab.com>
Date: Mon, 4 Feb 2013 14:04:22 -0800
Subject: [PATCH 274/436] Point autobuild at newer fmodex builds and fix
 warning being treated as error in llaudioengine_fmodex.cpp

---
 autobuild.xml                          | 11 +++++------
 indra/llaudio/llaudioengine_fmodex.cpp |  2 +-
 2 files changed, 6 insertions(+), 7 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index de4c28c5846..62fa341a067 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -498,9 +498,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-	      <string>39817c0f0961a8b82558d9cef1c759bd</string>
+	      <string>6ce79e860182dceb52bceea943b3cc2c</string>
               <key>url</key>
-	      <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmodex-private/rev/269940/arch/Darwin/installer/fmodex-4.44-darwin-20130204.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmodex-private/rev/269947/arch/Darwin/installer/fmodex-4.44-darwin-20130204.tar.bz2</string>
             </map>
             <key>name</key>
             <string>darwin</string>
@@ -510,7 +510,7 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>6edb8c10d6cada8af476c27659dcfb92</string>
+	      <string>33e494c9a7044c99bcd6ce2995316659</string>
               <key>url</key>
               <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmodex-private/rev/269934/arch/Linux/installer/fmodex-4.44-linux-20130204.tar.bz2</string>
             </map>
@@ -522,10 +522,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-
-	      <string>a1713cb64a792b0ad44cf640e862dc33</string>
+	      <string>3ae0fb5bdfda862f3e55644eaa9d09c2</string>
               <key>url</key>
-	      <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmodex-private/rev/269934/arch/CYGWIN/installer/fmodex-4.44-windows-20130204.tar.bz2</string>
+	      <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmodex-private/rev/269946/arch/CYGWIN/installer/fmodex-4.44-windows-20130204.tar.bz2</string>
             </map>
             <key>name</key>
             <string>windows</string>
diff --git a/indra/llaudio/llaudioengine_fmodex.cpp b/indra/llaudio/llaudioengine_fmodex.cpp
index c3c30d87fe7..40a43884a1a 100644
--- a/indra/llaudio/llaudioengine_fmodex.cpp
+++ b/indra/llaudio/llaudioengine_fmodex.cpp
@@ -260,7 +260,7 @@ bool LLAudioEngine_FMODEX::init(const S32 num_channels, void* userdata)
 	mSystem->getSoftwareFormat(&r_samplerate, NULL, &r_channels, NULL, NULL, &r_bits);
 	mSystem->getDriverInfo(0, r_name, 255, 0);
 	r_name[255] = '\0';
-	int latency = 1000.0 * r_bufferlength * r_numbuffers /r_samplerate;
+	int latency = (int)(1000.0f * r_bufferlength * r_numbuffers / r_samplerate);
 
 	LL_INFOS("AppInit") << "FMOD device: "<< r_name << "\n"
 		<< "FMOD Ex parameters: " << r_samplerate << " Hz * " << r_channels << " * " <<r_bits <<" bit\n"
-- 
GitLab


From c7d0a6d25995f2d977042bfe6e1bd7f1b8e889c8 Mon Sep 17 00:00:00 2001
From: "Graham Madarasz (Graham)" <graham@lindenlab.com>
Date: Mon, 4 Feb 2013 14:44:29 -0800
Subject: [PATCH 275/436] md5sum and path update redux

---
 autobuild.xml | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index 62fa341a067..139684be20b 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -498,9 +498,11 @@
             <key>archive</key>
             <map>
               <key>hash</key>
+
+	      <string>5c214f09e1f4f931e5b15b08223d779e</string>
 	      <string>6ce79e860182dceb52bceea943b3cc2c</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmodex-private/rev/269947/arch/Darwin/installer/fmodex-4.44-darwin-20130204.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmodex-private/rev/269965/arch/Darwin/installer/fmodex-4.44-darwin-20130204.tar.bz2</string>
             </map>
             <key>name</key>
             <string>darwin</string>
@@ -510,9 +512,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-	      <string>33e494c9a7044c99bcd6ce2995316659</string>
+	      <string>540c0dce069a223498b618727cbad0ba</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmodex-private/rev/269934/arch/Linux/installer/fmodex-4.44-linux-20130204.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmodex-private/rev/269967/arch/Linux/installer/fmodex-4.44-linux-20130204.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
@@ -522,9 +524,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-	      <string>3ae0fb5bdfda862f3e55644eaa9d09c2</string>
+	      <string>48f9f771fada89ba49f4c776337a9457</string>
               <key>url</key>
-	      <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmodex-private/rev/269946/arch/CYGWIN/installer/fmodex-4.44-windows-20130204.tar.bz2</string>
+	      <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmodex-private/rev/269965/arch/CYGWIN/installer/fmodex-4.44-windows-20130204.tar.bz2</string>
             </map>
             <key>name</key>
             <string>windows</string>
-- 
GitLab


From b99b9133f4420f0fdbac3fcc49823aa0e61e4cbf Mon Sep 17 00:00:00 2001
From: Graham Madarasz <graham@lindenlab.com>
Date: Mon, 4 Feb 2013 14:46:38 -0800
Subject: [PATCH 276/436] Fixed double hash sum entry

---
 autobuild.xml | 2 --
 1 file changed, 2 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index 139684be20b..e1df10c12c8 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -498,9 +498,7 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-
 	      <string>5c214f09e1f4f931e5b15b08223d779e</string>
-	      <string>6ce79e860182dceb52bceea943b3cc2c</string>
               <key>url</key>
               <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmodex-private/rev/269965/arch/Darwin/installer/fmodex-4.44-darwin-20130204.tar.bz2</string>
             </map>
-- 
GitLab


From efa7022c3aed38707782ec0ac0396f17c5fa63d9 Mon Sep 17 00:00:00 2001
From: "Graham Madarasz (Graham)" <graham@lindenlab.com>
Date: Mon, 4 Feb 2013 15:10:39 -0800
Subject: [PATCH 277/436] Nix trying to copy the debug fmod DLL

---
 autobuild.xml                      | 2 +-
 indra/cmake/Copy3rdPartyLibs.cmake | 1 -
 2 files changed, 1 insertion(+), 2 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index e1df10c12c8..bcd16b8ed61 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -524,7 +524,7 @@
               <key>hash</key>
 	      <string>48f9f771fada89ba49f4c776337a9457</string>
               <key>url</key>
-	      <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmodex-private/rev/269965/arch/CYGWIN/installer/fmodex-4.44-windows-20130204.tar.bz2</string>
+	      <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmodex-private/rev/269967/arch/CYGWIN/installer/fmodex-4.44-windows-20130204.tar.bz2</string>
             </map>
             <key>name</key>
             <string>windows</string>
diff --git a/indra/cmake/Copy3rdPartyLibs.cmake b/indra/cmake/Copy3rdPartyLibs.cmake
index b11078c9a53..b9101dbf537 100644
--- a/indra/cmake/Copy3rdPartyLibs.cmake
+++ b/indra/cmake/Copy3rdPartyLibs.cmake
@@ -63,7 +63,6 @@ if(WINDOWS)
     endif(USE_TCMALLOC)
 
     if (FMODEX)
-      set(debug_files ${debug_files} fmodexL.dll)
       set(release_files ${release_files} fmodex.dll)
     endif (FMODEX)
 
-- 
GitLab


From ace38913494c97674a9bc8fa0d55a45cfc45f22d Mon Sep 17 00:00:00 2001
From: "Graham Madarasz (Graham)" <graham@lindenlab.com>
Date: Mon, 4 Feb 2013 16:32:18 -0800
Subject: [PATCH 278/436] Point autobuild.xml at yet another 3p-fmodex-private
 OS X build.

---
 autobuild.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index bcd16b8ed61..3726712de45 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -498,9 +498,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-	      <string>5c214f09e1f4f931e5b15b08223d779e</string>
+	      <string>2709c5580e7f3a07b97622d7ce4ce002</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmodex-private/rev/269965/arch/Darwin/installer/fmodex-4.44-darwin-20130204.tar.bz2</string>
+	      <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmodex-private/rev/269975/arch/Darwin/installer/fmodex-4.44-darwin-20130204.tar.bz2</string>
             </map>
             <key>name</key>
             <string>darwin</string>
-- 
GitLab


From a6742f8e8dc95d76766f0f8e3e69b91c097df38b Mon Sep 17 00:00:00 2001
From: "Graham Madarasz (Graham Linden)" <graham@lindenlab.com>
Date: Mon, 4 Feb 2013 19:57:52 -0800
Subject: [PATCH 279/436] Update fmodex sums for new builds

---
 autobuild.xml | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index 3726712de45..67b8aa1ba8f 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -498,9 +498,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-	      <string>2709c5580e7f3a07b97622d7ce4ce002</string>
+          <string>00c7d964851121e61c2d0dc33e63ccac</string>
               <key>url</key>
-	      <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmodex-private/rev/269975/arch/Darwin/installer/fmodex-4.44-darwin-20130204.tar.bz2</string>
+	      <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmodex-private/rev/269985/arch/Darwin/installer/fmodex-4.44-darwin-20130204.tar.bz2</string>
             </map>
             <key>name</key>
             <string>darwin</string>
@@ -510,9 +510,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-	      <string>540c0dce069a223498b618727cbad0ba</string>
+          <string>fd787931f49ece9bf99f4d1d1596f04b</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmodex-private/rev/269967/arch/Linux/installer/fmodex-4.44-linux-20130204.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmodex-private/rev/269984/arch/Linux/installer/fmodex-4.44-linux-20130205.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
@@ -522,9 +522,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-	      <string>48f9f771fada89ba49f4c776337a9457</string>
+          <string>5a1286aa4a3485ec86c7657629a0f3d6</string>
               <key>url</key>
-	      <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmodex-private/rev/269967/arch/CYGWIN/installer/fmodex-4.44-windows-20130204.tar.bz2</string>
+	      <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmodex-private/rev/269984/arch/CYGWIN/installer/fmodex-4.44-windows-20130204.tar.bz2</string>
             </map>
             <key>name</key>
             <string>windows</string>
-- 
GitLab


From cd2a6e756eb7d98101fc77bb4f7cbfac9b910651 Mon Sep 17 00:00:00 2001
From: "Graham Madarasz (Graham)" <graham@lindenlab.com>
Date: Tue, 5 Feb 2013 09:50:44 -0800
Subject: [PATCH 280/436] Update windows fmodex sums and path for new build

---
 autobuild.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index 67b8aa1ba8f..f7b15b9530e 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -522,9 +522,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-          <string>5a1286aa4a3485ec86c7657629a0f3d6</string>
+	      <string>9e0f62be63e74af18f670f864cac93da</string>
               <key>url</key>
-	      <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmodex-private/rev/269984/arch/CYGWIN/installer/fmodex-4.44-windows-20130204.tar.bz2</string>
+	      <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmodex-private/rev/270026/arch/CYGWIN/installer/fmodex-4.44-windows-20130205.tar.bz2</string>
             </map>
             <key>name</key>
             <string>windows</string>
-- 
GitLab


From aed2e90312e932dd6319dabdd793eec064058ee7 Mon Sep 17 00:00:00 2001
From: "Graham Madarasz (Graham)" <graham@lindenlab.com>
Date: Tue, 5 Feb 2013 10:24:56 -0800
Subject: [PATCH 281/436] Update fmodex sums to refer to newest OS X
 3p-fmodex-private

---
 autobuild.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index f7b15b9530e..9c878fd7307 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -498,9 +498,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-          <string>00c7d964851121e61c2d0dc33e63ccac</string>
+	      <string>89a3df89da75444877cf3197416fed67</string>
               <key>url</key>
-	      <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmodex-private/rev/269985/arch/Darwin/installer/fmodex-4.44-darwin-20130204.tar.bz2</string>
+	      <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmodex-private/rev/270029/arch/Darwin/installer/fmodex-4.44-darwin-20130205.tar.bz2</string>
             </map>
             <key>name</key>
             <string>darwin</string>
-- 
GitLab


From 576659271251e15959c522b3fd45aebc856fb895 Mon Sep 17 00:00:00 2001
From: callum_linden <none@none>
Date: Wed, 6 Feb 2013 13:57:51 -0800
Subject: [PATCH 282/436] Updated contributions text file with people who
 worked on the FMOD upgrade patch

---
 doc/contributions.txt | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/doc/contributions.txt b/doc/contributions.txt
index 10d6818bd38..c879036b220 100644
--- a/doc/contributions.txt
+++ b/doc/contributions.txt
@@ -1065,10 +1065,12 @@ Sheet Spotter
 Shnurui Troughton
 Shyotl Kuhr
 	MAINT-1138
+	MAINT-2334
 Siana Gearz
 	STORM-960
 	STORM-1088
 	MAINT-1138
+	MAINT-2334
 sicarius Thorne
 Sicarius Toxx
 SignpostMarv Martin
@@ -1086,6 +1088,8 @@ SLB Wirefly
 Slee Mayo
     SEC-1075
 snowy Sidran
+Sovereign Engineer
+    MAINT-2334
 SpacedOut Frye
 	VWR-34
 	VWR-45
-- 
GitLab


From bfffedaec973948a35ad046769add4fc5ae6e2a1 Mon Sep 17 00:00:00 2001
From: callum_linden <none@none>
Date: Wed, 6 Feb 2013 15:09:44 -0800
Subject: [PATCH 283/436] Trivial whitespace change to ignite new Team City
 build after some admin work

---
 doc/contributions.txt | 1 +
 1 file changed, 1 insertion(+)

diff --git a/doc/contributions.txt b/doc/contributions.txt
index c879036b220..dd33cc5ae58 100644
--- a/doc/contributions.txt
+++ b/doc/contributions.txt
@@ -1342,3 +1342,4 @@ Zoex Flanagan
 
 
 
+
-- 
GitLab


From 1cf611b0592b1f91979bfbac7870b64f3623eef9 Mon Sep 17 00:00:00 2001
From: Nyx Linden <nyx@lindenlab.com>
Date: Wed, 6 Feb 2013 18:38:17 -0500
Subject: [PATCH 284/436] SH-3651 FIX Beard edits not applying on server bakes

Despite incrementing the COF version, beard edits were not updating the head hash.
We were not applying layers/parameters to the baked texture hashes for
layers that did not contain a user-defined image. However, many layers have standard
morph masks, etc that are affected by wearable parameters.

Edited the LLTexLayerInterface::getWearable() method to return the proper wearable type
if there is no associated local texture index, and all parameters in the wearable
refer to a particular wearable type. Should be safe even if some (but not all) params
have no wearable type defined.
---
 indra/llappearance/lltexlayer.cpp | 40 ++++++++++++++++++++++++++++++-
 1 file changed, 39 insertions(+), 1 deletion(-)

diff --git a/indra/llappearance/lltexlayer.cpp b/indra/llappearance/lltexlayer.cpp
index 15d531259fb..3c23f5f2930 100644
--- a/indra/llappearance/lltexlayer.cpp
+++ b/indra/llappearance/lltexlayer.cpp
@@ -932,7 +932,45 @@ LLWearableType::EType LLTexLayerInterface::getWearableType() const
 	ETextureIndex te = getLocalTextureIndex();
 	if (TEX_INVALID == te)
 	{
-		return LLWearableType::WT_INVALID;
+		LLWearableType::EType type = LLWearableType::WT_INVALID;
+		param_color_list_t::const_iterator color_iter = mParamColorList.begin();
+		param_alpha_list_t::const_iterator alpha_iter = mParamAlphaList.begin();
+
+		for (; color_iter != mParamColorList.end(); color_iter++)
+		{
+			LLTexLayerParamColor* param = *color_iter;
+			if (param) 
+			{
+				LLWearableType::EType new_type = (LLWearableType::EType)param->getWearableType();
+				if (new_type != LLWearableType::WT_INVALID && new_type != type) 
+				{
+					if (type != LLWearableType::WT_INVALID) 
+					{
+						return LLWearableType::WT_INVALID;
+					}
+					type = new_type;
+				}
+			}
+		}
+
+		for (; alpha_iter != mParamAlphaList.end(); alpha_iter++)
+		{
+			LLTexLayerParamAlpha* param = *alpha_iter;
+			if (param) 
+			{
+				LLWearableType::EType new_type = (LLWearableType::EType)param->getWearableType();
+				if (new_type != LLWearableType::WT_INVALID && new_type != type) 
+				{
+					if (type != LLWearableType::WT_INVALID) 
+					{
+						return LLWearableType::WT_INVALID;
+					}
+					type = new_type;
+				}
+			}
+		}
+
+		return type;
 	}
 	return LLAvatarAppearanceDictionary::getTEWearableType(te);
 }
-- 
GitLab


From 0897a291d16dc4002765c5eb4ed9e310ee1ba4a4 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Thu, 7 Feb 2013 11:14:37 -0500
Subject: [PATCH 285/436] SH-3852 WIP - small tweaks

---
 indra/newview/llagent.cpp        |  3 ++-
 indra/newview/llviewerstats.cpp  | 14 +++++++-------
 indra/newview/llviewerstats.h    |  4 ++--
 indra/newview/llvoavatarself.cpp | 15 +++++----------
 4 files changed, 16 insertions(+), 20 deletions(-)
 mode change 100644 => 100755 indra/newview/llviewerstats.cpp

diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index 60873cf41ff..abd83485af6 100755
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -4341,7 +4341,7 @@ void LLAgent::sendAgentSetAppearance()
 		gAgentAvatarp->getPhases().stopPhase("process_initial_wearables_update");
 		gAgentAvatarp->getPhases().stopPhase("wear_inventory_category");
 	}
-	
+
 	gAgentAvatarp->sendAppearanceChangeMetrics();
 
 	if (!isAgentAvatarValid() || (getRegion() && getRegion()->getCentralBakeVersion())) return;
@@ -4409,6 +4409,7 @@ void LLAgent::sendAgentSetAppearance()
 		// IMG_DEFAULT_AVATAR means not baked. 0 index should be ignored for baked textures
 		if (!gAgentAvatarp->isTextureDefined(texture_index, 0))
 		{
+			LL_DEBUGS("Avatar") << "texture not current for baked " << (S32)baked_index << " local " << (S32)texture_index << llendl;
 			textures_current = FALSE;
 			break;
 		}
diff --git a/indra/newview/llviewerstats.cpp b/indra/newview/llviewerstats.cpp
old mode 100644
new mode 100755
index 1627870262d..bccd4c1a60a
--- a/indra/newview/llviewerstats.cpp
+++ b/indra/newview/llviewerstats.cpp
@@ -733,23 +733,23 @@ void send_stats()
 	LLHTTPClient::post(url, body, new ViewerStatsResponder());
 }
 
-LLFrameTimer& LLViewerStats::PhaseMap::getPhaseTimer(const std::string& phase_name)
+LLTimer& LLViewerStats::PhaseMap::getPhaseTimer(const std::string& phase_name)
 {
 	phase_map_t::iterator iter = mPhaseMap.find(phase_name);
 	if (iter == mPhaseMap.end())
 	{
-		LLFrameTimer timer;
+		LLTimer timer;
 		mPhaseMap[phase_name] = timer;
 	}
-	LLFrameTimer& timer = mPhaseMap[phase_name];
+	LLTimer& timer = mPhaseMap[phase_name];
 	return timer;
 }
 
 void LLViewerStats::PhaseMap::startPhase(const std::string& phase_name)
 {
-	LLFrameTimer& timer = getPhaseTimer(phase_name);
+	LLTimer& timer = getPhaseTimer(phase_name);
 	lldebugs << "startPhase " << phase_name << llendl;
-	timer.unpause();
+	timer.start();
 }
 
 void LLViewerStats::PhaseMap::stopPhase(const std::string& phase_name)
@@ -763,7 +763,7 @@ void LLViewerStats::PhaseMap::stopPhase(const std::string& phase_name)
 			recordPhaseStat(phase_name,iter->second.getElapsedTimeF32());
 		}
 		lldebugs << "stopPhase " << phase_name << llendl;
-		iter->second.pause();
+		iter->second.stop();
 	}
 	else
 	{
@@ -783,7 +783,7 @@ void LLViewerStats::PhaseMap::stopAllPhases()
 			recordPhaseStat(phase_name,iter->second.getElapsedTimeF32());
 		}
 		lldebugs << "stopPhase (all) " << phase_name << llendl;
-		iter->second.pause();
+		iter->second.stop();
 	}
 }
 
diff --git a/indra/newview/llviewerstats.h b/indra/newview/llviewerstats.h
index e02a4ccdc70..bb11e8c5be3 100755
--- a/indra/newview/llviewerstats.h
+++ b/indra/newview/llviewerstats.h
@@ -279,7 +279,7 @@ class LLViewerStats : public LLSingleton<LLViewerStats>
 
 	// Phase tracking (originally put in for avatar rezzing), tracking
 	// progress of active/completed phases for activities like outfit changing.
-	typedef std::map<std::string,LLFrameTimer>	phase_map_t;
+	typedef std::map<std::string,LLTimer>	phase_map_t;
 	typedef std::map<std::string,StatsAccumulator>	phase_stats_t;
 	class PhaseMap
 	{
@@ -288,7 +288,7 @@ class LLViewerStats : public LLSingleton<LLViewerStats>
 		static phase_stats_t sStats;
 	public:
 		PhaseMap();
-		LLFrameTimer& 	getPhaseTimer(const std::string& phase_name);
+		LLTimer&	 	getPhaseTimer(const std::string& phase_name);
 		void			startPhase(const std::string& phase_name);
 		void			stopPhase(const std::string& phase_name);
 		void			stopAllPhases();
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index aeac478d4e7..a1c7cf97ff1 100755
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -1462,7 +1462,9 @@ BOOL LLVOAvatarSelf::isAllLocalTextureDataFinal() const
 			const U32 wearable_count = gAgentWearables.getWearableCount(wearable_type);
 			for (U32 wearable_index = 0; wearable_index < wearable_count; wearable_index++)
 			{
-				if (getLocalDiscardLevel(*local_tex_iter, wearable_index) > (S32)(desired_tex_discard_level))
+				S32 local_discard_level = getLocalDiscardLevel(*local_tex_iter, wearable_index);
+				if ((local_discard_level > (S32)(desired_tex_discard_level)) ||
+					(local_discard_level < 0 ))
 				{
 					return FALSE;
 				}
@@ -2177,20 +2179,13 @@ LLSD LLVOAvatarSelf::metricsData()
 	// runway - add region info
 	LLSD result;
 	result["rez_status"] = LLVOAvatar::rezStatusToString(getRezzedStatus());
-	std::vector<S32> rez_counts;
-	LLVOAvatar::getNearbyRezzedStats(rez_counts);
-	result["nearby"] = LLSD::emptyMap();
-	for (S32 i=0; i<rez_counts.size(); ++i)
-	{
-		std::string rez_status_name = LLVOAvatar::rezStatusToString(i);
-		result["nearby"][rez_status_name] = rez_counts[i];
-	}
 	result["timers"]["debug_existence"] = mDebugExistenceTimer.getElapsedTimeF32();
 	result["timers"]["ruth_debug"] = mRuthDebugTimer.getElapsedTimeF32();
 	result["timers"]["ruth"] = mRuthTimer.getElapsedTimeF32();
 	result["timers"]["invisible"] = mInvisibleTimer.getElapsedTimeF32();
 	result["timers"]["fully_loaded"] = mFullyLoadedTimer.getElapsedTimeF32();
 	result["startup"] = LLStartUp::getPhases().dumpPhases();
+	result["phases"] = getPhases().dumpPhases();
 	
 	return result;
 }
@@ -2261,7 +2256,7 @@ void LLVOAvatarSelf::sendAppearanceChangeMetrics()
 	if (S32_MAX == ++report_sequence)
 		report_sequence = 0;
 
-//	LL_DEBUGS("Avatar") << avString() << "message: " << ll_pretty_print_sd(msg) << LL_ENDL;
+	LL_DEBUGS("Avatar") << avString() << "message: " << ll_pretty_print_sd(msg) << LL_ENDL;
 	std::string	caps_url;
 	if (getRegion())
 	{
-- 
GitLab


From 3c5ac77a925e42b830aa58d12e8c20006ca9d76b Mon Sep 17 00:00:00 2001
From: Graham Madarasz <graham@lindenlab.com>
Date: Thu, 7 Feb 2013 09:02:51 -0800
Subject: [PATCH 286/436] For MAINT-2157 Codereview: DaveP

---
 indra/newview/llfeaturemanager.cpp | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/indra/newview/llfeaturemanager.cpp b/indra/newview/llfeaturemanager.cpp
index a4cadcd5dcf..ddb9d3bc436 100644
--- a/indra/newview/llfeaturemanager.cpp
+++ b/indra/newview/llfeaturemanager.cpp
@@ -705,6 +705,20 @@ void LLFeatureManager::setGraphicsLevel(S32 level, bool skipFeatures)
 	switch (level)
 	{
 		case 0:
+#if LL_DARWIN
+			// This Mac-specific change is to insure that we force 'Basic Shaders' for all Mac
+			// systems which support them instead of falling back to fixed-function unnecessarily
+			// MAINT-2157
+			//
+			if (gGLManager.mGLVersion < 2.1f)
+			{
+				maskFeatures("LowFixedFunction");			
+			}
+			else
+			{ //same as low, but with "Basic Shaders" enabled
+				maskFeatures("Low");
+			}
+#else
 			if (gGLManager.mGLVersion < 3.f || gGLManager.mIsIntel)
 			{ //only use fixed function by default if GL version < 3.0 or this is an intel graphics chip
 				maskFeatures("LowFixedFunction");			
@@ -713,6 +727,7 @@ void LLFeatureManager::setGraphicsLevel(S32 level, bool skipFeatures)
 			{ //same as low, but with "Basic Shaders" enabled
 				maskFeatures("Low");
 			}
+#endif
 			break;
 		case 1:
 			maskFeatures("LowMid");
-- 
GitLab


From b4dba269dc5e45992ba1e6126da0c01519c51f08 Mon Sep 17 00:00:00 2001
From: Graham Madarasz <graham@lindenlab.com>
Date: Thu, 7 Feb 2013 09:14:53 -0800
Subject: [PATCH 287/436] For MAINT-1255 Code Review: DaveP

---
 .../newview/app_settings/shaders/class1/deferred/waterF.glsl  | 4 ++--
 .../newview/app_settings/shaders/class1/deferred/waterV.glsl  | 2 +-
 .../app_settings/shaders/class1/environment/waterV.glsl       | 3 +--
 3 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl b/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl
index 3427d6db579..1ae006bc8aa 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl
@@ -151,8 +151,8 @@ void main()
 	//spec *= shadow;
 	//color.rgb += spec * specular;
 	
-	//color.rgb = atmosTransport(color.rgb);
-	//color.rgb = scaleSoftClip(color.rgb);
+	color.rgb = atmosTransport(color.rgb);
+	color.rgb = scaleSoftClip(color.rgb);
 	//color.a = spec * sunAngle2;
 
 	//wavef.z *= 0.1f;
diff --git a/indra/newview/app_settings/shaders/class1/deferred/waterV.glsl b/indra/newview/app_settings/shaders/class1/deferred/waterV.glsl
index 9734acf005a..ece34dcc4ed 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/waterV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/waterV.glsl
@@ -85,7 +85,7 @@ void main()
 	pos.w = 1.0;
 	pos = modelview_matrix*pos;
 	
-	calcAtmospherics(pos.xyz);
+	calcAtmospherics(view.xyz);
 		
 	//pass wave parameters to pixel shader
 	vec2 bigWave =  (v.xy) * vec2(0.04,0.04)  + d1 * time * 0.055;
diff --git a/indra/newview/app_settings/shaders/class1/environment/waterV.glsl b/indra/newview/app_settings/shaders/class1/environment/waterV.glsl
index f66ba1d2d94..fec8906fd07 100644
--- a/indra/newview/app_settings/shaders/class1/environment/waterV.glsl
+++ b/indra/newview/app_settings/shaders/class1/environment/waterV.glsl
@@ -81,8 +81,7 @@ void main()
 	pos.w = 1.0;
 	pos = modelview_matrix*pos;
 	
-	calcAtmospherics(pos.xyz);
-	
+	calcAtmospherics(view.xyz);
 	
 	//pass wave parameters to pixel shader
 	vec2 bigWave =  (v.xy) * vec2(0.04,0.04)  + d1 * time * 0.055;
-- 
GitLab


From 019c7566fb431a9bacfa6d1b778a3a7ec9f8fbf2 Mon Sep 17 00:00:00 2001
From: Graham Madarasz <graham@lindenlab.com>
Date: Thu, 7 Feb 2013 09:18:09 -0800
Subject: [PATCH 288/436] For MAINT-1291 Code Review: DaveP

---
 indra/llrender/llgl.cpp      |  2 +-
 indra/llrender/llimagegl.cpp | 57 ++++++++++++++++++++++++++----------
 2 files changed, 42 insertions(+), 17 deletions(-)

diff --git a/indra/llrender/llgl.cpp b/indra/llrender/llgl.cpp
index 9e4857b6bca..09e451c62a8 100644
--- a/indra/llrender/llgl.cpp
+++ b/indra/llrender/llgl.cpp
@@ -86,7 +86,7 @@ void APIENTRY gl_debug_callback(GLenum source,
 	}
 	else
 	{
-		llwarns << "----- GL WARNING -------" << llendl;
+		llwarns << "----- GL WARNING -------" << llendl;		
 	}
 	llwarns << "Type: " << std::hex << type << llendl;
 	llwarns << "ID: " << std::hex << id << llendl;
diff --git a/indra/llrender/llimagegl.cpp b/indra/llrender/llimagegl.cpp
index a4d7872ec25..552dac518a1 100644
--- a/indra/llrender/llimagegl.cpp
+++ b/indra/llrender/llimagegl.cpp
@@ -726,6 +726,12 @@ void LLImageGL::setImage(const U8* data_in, BOOL data_hasmips)
 						glPixelStorei(GL_UNPACK_SWAP_BYTES, 0);
 						stop_glerror();
 					}
+
+					if (LLRender::sGLCoreProfile)
+					{
+						glGenerateMipmap(mTarget);
+					}	
+					stop_glerror();
 				}
 			}
 			else
@@ -1084,27 +1090,46 @@ void LLImageGL::deleteTextures(LLTexUnit::eTextureType type, U32 format, S32 mip
 {
 	if (gGLManager.mInited)
 	{
-		if (format == 0 ||  type == LLTexUnit::TT_CUBE_MAP || mip_levels == -1)
-		{ //unknown internal format or unknown number of mip levels, not safe to reuse
-			glDeleteTextures(numTextures, textures);
-		}
-		else
+		switch (format)
 		{
-			for (S32 i = 0; i < numTextures; ++i)
-			{ //remove texture from VRAM by setting its size to zero
-				for (S32 j = 0; j <= mip_levels; j++)
-				{
-					gGL.getTexUnit(0)->bindManual(type, textures[i]);
+			case 0:
+
+			// We get ARB errors in debug when attempting to use glTexImage2D with these deprecated pix formats
+			//
+			case GL_LUMINANCE8:
+			case GL_INTENSITY8:
+			case GL_ALPHA8:
+				glDeleteTextures(numTextures, textures);
+			break;
 
-					glTexImage2D(LLTexUnit::getInternalType(type), j, format, 0, 0, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
+			default:
+			{
+				if (type == LLTexUnit::TT_CUBE_MAP || mip_levels == -1)
+				{ //unknown internal format or unknown number of mip levels, not safe to reuse
+					glDeleteTextures(numTextures, textures);
 				}
+				else
+				{
+					for (S32 i = 0; i < numTextures; ++i)
+					{ //remove texture from VRAM by setting its size to zero
+
+						for (S32 j = 0; j <= mip_levels; j++)
+						{
+							gGL.getTexUnit(0)->bindManual(type, textures[i]);
+							U32 internal_type = LLTexUnit::getInternalType(type);
+							glTexImage2D(internal_type, j, format, 0, 0, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
+							stop_glerror();
+						}
 
-				llassert(std::find(sDeadTextureList[type][format].begin(),
-								   sDeadTextureList[type][format].end(), textures[i]) == 
-								   sDeadTextureList[type][format].end());
+						llassert(std::find(sDeadTextureList[type][format].begin(),
+							sDeadTextureList[type][format].end(), textures[i]) == 
+							sDeadTextureList[type][format].end());
 
-				sDeadTextureList[type][format].push_back(textures[i]);
-			}	
+						sDeadTextureList[type][format].push_back(textures[i]);
+					}	
+				}				
+			}
+			break;
 		}
 	}
 	
-- 
GitLab


From 99d197d021482ab29ca518d2f2a40462f75fe5a3 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Thu, 7 Feb 2013 19:14:00 -0500
Subject: [PATCH 289/436] SH-3852 WIP - track per-timer stats

---
 indra/newview/llagent.cpp               |   6 +-
 indra/newview/llagentwearables.cpp      |   2 +-
 indra/newview/llagentwearablesfetch.cpp |   4 +-
 indra/newview/llappearancemgr.cpp       |   2 -
 indra/newview/llappviewer.cpp           |   6 ++
 indra/newview/llviewerstats.cpp         |  38 ++++-----
 indra/newview/llviewerstats.h           |   4 +-
 indra/newview/llvoavatar.cpp            | 101 +++++++++++++++++++++++-
 indra/newview/llvoavatar.h              |  12 ++-
 indra/newview/llvoavatarself.cpp        |  35 +++++---
 indra/newview/llvoavatarself.h          |   7 +-
 11 files changed, 164 insertions(+), 53 deletions(-)
 mode change 100644 => 100755 indra/newview/llappviewer.cpp

diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index abd83485af6..c86b75791da 100755
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -4338,12 +4338,10 @@ void LLAgent::sendAgentSetAppearance()
 	if (!gAgentWearables.changeInProgress())
 	{
 		// Change is fully resolved, can close some open phases.
-		gAgentAvatarp->getPhases().stopPhase("process_initial_wearables_update");
-		gAgentAvatarp->getPhases().stopPhase("wear_inventory_category");
+		gAgentAvatarp->stopPhase("process_initial_wearables_update");
+		gAgentAvatarp->stopPhase("wear_inventory_category");
 	}
 
-	gAgentAvatarp->sendAppearanceChangeMetrics();
-
 	if (!isAgentAvatarValid() || (getRegion() && getRegion()->getCentralBakeVersion())) return;
 
 	// At this point we have a complete appearance to send and are in a non-baking region.
diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp
index 70f4de8db24..0c79ac0ba3b 100755
--- a/indra/newview/llagentwearables.cpp
+++ b/indra/newview/llagentwearables.cpp
@@ -797,7 +797,7 @@ void LLAgentWearables::processAgentInitialWearablesUpdate(LLMessageSystem* mesgs
 	if (isAgentAvatarValid())
 	{
 		//gAgentAvatarp->clearPhases(); // reset phase timers for outfit loading.
-		gAgentAvatarp->getPhases().startPhase("process_initial_wearables_update");
+		gAgentAvatarp->startPhase("process_initial_wearables_update");
 		gAgentAvatarp->outputRezTiming("Received initial wearables update");
 	}
 
diff --git a/indra/newview/llagentwearablesfetch.cpp b/indra/newview/llagentwearablesfetch.cpp
index 2d622b380a1..6f1658d1cc5 100644
--- a/indra/newview/llagentwearablesfetch.cpp
+++ b/indra/newview/llagentwearablesfetch.cpp
@@ -80,7 +80,7 @@ LLInitialWearablesFetch::LLInitialWearablesFetch(const LLUUID& cof_id) :
 {
 	if (isAgentAvatarValid())
 	{
-		gAgentAvatarp->getPhases().startPhase("initial_wearables_fetch");
+		gAgentAvatarp->startPhase("initial_wearables_fetch");
 		gAgentAvatarp->outputRezTiming("Initial wearables fetch started");
 	}
 }
@@ -99,7 +99,7 @@ void LLInitialWearablesFetch::done()
 	doOnIdleOneTime(boost::bind(&LLInitialWearablesFetch::processContents,this));
 	if (isAgentAvatarValid())
 	{
-		gAgentAvatarp->getPhases().stopPhase("initial_wearables_fetch");
+		gAgentAvatarp->stopPhase("initial_wearables_fetch");
 		gAgentAvatarp->outputRezTiming("Initial wearables fetch done");
 	}
 }
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index f1ba4ad4532..1a6d49c7a29 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -2006,8 +2006,6 @@ void LLAppearanceMgr::updateAppearanceFromCOF(bool update_base_outfit_ordering)
 		llwarns << "Called updateAppearanceFromCOF inside updateAppearanceFromCOF, skipping" << llendl;
 		return;
 	}
-
-	LLVOAvatar::ScopedPhaseSetter(gAgentAvatarp,"update_appearance_from_cof");
 	
 	BoolSetter setIsInUpdateAppearanceFromCOF(mIsInUpdateAppearanceFromCOF);
 
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
old mode 100644
new mode 100755
index 03b11939a9b..2ee325a09e1
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -3612,6 +3612,12 @@ void LLAppViewer::requestQuit()
 
 	// Try to send metrics back to the grid
 	metricsSend(!gDisconnected);
+
+	// Try to send last batch of avatar rez metrics.
+	if (!gDisconnected && isAgentAvatarValid())
+	{
+		gAgentAvatarp->updateAvatarRezMetrics(true); // force a last packet to be sent.
+	}
 	
 	LLHUDEffectSpiral *effectp = (LLHUDEffectSpiral*)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_POINT, TRUE);
 	effectp->setPositionGlobal(gAgent.getPositionGlobal());
diff --git a/indra/newview/llviewerstats.cpp b/indra/newview/llviewerstats.cpp
index bccd4c1a60a..28c6b593912 100755
--- a/indra/newview/llviewerstats.cpp
+++ b/indra/newview/llviewerstats.cpp
@@ -733,6 +733,10 @@ void send_stats()
 	LLHTTPClient::post(url, body, new ViewerStatsResponder());
 }
 
+LLViewerStats::PhaseMap::PhaseMap()
+{
+}
+
 LLTimer& LLViewerStats::PhaseMap::getPhaseTimer(const std::string& phase_name)
 {
 	phase_map_t::iterator iter = mPhaseMap.find(phase_name);
@@ -761,32 +765,26 @@ void LLViewerStats::PhaseMap::stopPhase(const std::string& phase_name)
 		{
 			// Going from started to paused state - record stats.
 			recordPhaseStat(phase_name,iter->second.getElapsedTimeF32());
+			iter->second.stop();
 		}
-		lldebugs << "stopPhase " << phase_name << llendl;
-		iter->second.stop();
-	}
-	else
-	{
-		lldebugs << "stopPhase " << phase_name << " is not started, no-op" << llendl;
 	}
 }
 
-void LLViewerStats::PhaseMap::stopAllPhases()
+bool LLViewerStats::PhaseMap::getPhaseValues(const std::string& phase_name, F32& elapsed, bool& completed)
 {
-	for (phase_map_t::iterator iter = mPhaseMap.begin();
-		 iter != mPhaseMap.end(); ++iter)
+	phase_map_t::iterator iter = mPhaseMap.find(phase_name);
+	if (iter != mPhaseMap.end())
 	{
-		const std::string& phase_name = iter->first;
-		if (iter->second.getStarted())
-		{
-			// Going from started to paused state - record stats.
-			recordPhaseStat(phase_name,iter->second.getElapsedTimeF32());
-		}
-		lldebugs << "stopPhase (all) " << phase_name << llendl;
-		iter->second.stop();
+		elapsed =  iter->second.getElapsedTimeF32();
+		completed = !iter->second.getStarted();
+		return true;
+	}
+	else
+	{
+		return false;
 	}
 }
-
+	
 void LLViewerStats::PhaseMap::clearPhases()
 {
 	lldebugs << "clearPhases" << llendl;
@@ -810,10 +808,6 @@ LLSD LLViewerStats::PhaseMap::dumpPhases()
 //static
 LLViewerStats::phase_stats_t LLViewerStats::PhaseMap::sStats;
 
-LLViewerStats::PhaseMap::PhaseMap()
-{
-}
-
 // static
 LLViewerStats::StatsAccumulator& LLViewerStats::PhaseMap::getPhaseStats(const std::string& phase_name)
 {
diff --git a/indra/newview/llviewerstats.h b/indra/newview/llviewerstats.h
index bb11e8c5be3..084f5ae7d19 100755
--- a/indra/newview/llviewerstats.h
+++ b/indra/newview/llviewerstats.h
@@ -289,13 +289,15 @@ class LLViewerStats : public LLSingleton<LLViewerStats>
 	public:
 		PhaseMap();
 		LLTimer&	 	getPhaseTimer(const std::string& phase_name);
+		bool 			getPhaseValues(const std::string& phase_name, F32& elapsed, bool& completed);
 		void			startPhase(const std::string& phase_name);
 		void			stopPhase(const std::string& phase_name);
-		void			stopAllPhases();
 		void			clearPhases();
 		LLSD			dumpPhases();
 		static StatsAccumulator& getPhaseStats(const std::string& phase_name);
 		static void recordPhaseStat(const std::string& phase_name, F32 value);
+		phase_map_t::iterator begin() { return mPhaseMap.begin(); }
+		phase_map_t::iterator end() { return mPhaseMap.end(); }
 	};
 
 private:
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 483bc25b338..f7e19446603 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -5887,30 +5887,123 @@ void LLVOAvatar::updateRezzedStatusTimers()
 		if (is_cloud && !was_cloud)
 		{
 			// start cloud timer.
-			getPhases().startPhase("cloud");
+			startPhase("cloud");
 		}
 		else if (was_cloud && !is_cloud)
 		{
 			// stop cloud timer, which will capture stats.
-			getPhases().stopPhase("cloud");
+			stopPhase("cloud");
 		}
 
 		// Non-cloud-or-gray to cloud-or-gray
 		if (is_cloud_or_gray && !was_cloud_or_gray)
 		{
 			// start cloud-or-gray timer.
-			getPhases().startPhase("cloud-or-gray");
+			startPhase("cloud-or-gray");
 		}
 		else if (was_cloud_or_gray && !is_cloud_or_gray)
 		{
 			// stop cloud-or-gray timer, which will capture stats.
-			getPhases().stopPhase("cloud-or-gray");
+			stopPhase("cloud-or-gray");
 		}
 		
 		mLastRezzedStatus = rez_status;
 	}
 }
 
+void LLVOAvatar::clearPhases()
+{
+	getPhases().clearPhases();
+}
+
+void LLVOAvatar::startPhase(const std::string& phase_name)
+{
+	getPhases().startPhase(phase_name);
+}
+
+void LLVOAvatar::logPendingPhases()
+{
+	for (LLViewerStats::phase_map_t::iterator it = getPhases().begin();
+		 it != getPhases().end();
+		 ++it)
+	{
+		const std::string& phase_name = it->first;
+		F32 elapsed;
+		bool completed;
+		if (getPhases().getPhaseValues(phase_name, elapsed, completed))
+		{
+			if (!completed)
+			{
+				logMetricsTimerRecord(phase_name, elapsed, completed);
+			}
+			else
+			{
+				llwarns << "ignoring " << phase_name << llendl;
+			}
+		}
+	}
+}
+
+//static
+void LLVOAvatar::logPendingPhasesAllAvatars()
+{
+	for (std::vector<LLCharacter*>::iterator iter = LLCharacter::sInstances.begin();
+		 iter != LLCharacter::sInstances.end(); ++iter)
+	{
+		LLVOAvatar* inst = (LLVOAvatar*) *iter;
+		if( inst->isDead() )
+		{
+			continue;
+		}
+		inst->logPendingPhases();
+	}
+}
+
+void LLVOAvatar::logMetricsTimerRecord(const std::string& phase_name, F32 elapsed, bool completed)
+{
+	LLSD record;
+	record["timer_name"] = phase_name;
+	record["agent_id"] = gAgent.getID();
+	record["elapsed"] = elapsed;
+	record["completed"] = completed;
+	U32 grid_x(0), grid_y(0);
+	if (getRegion())
+	{
+		record["cbv"] = getRegion()->getCentralBakeVersion();
+		grid_from_region_handle(getRegion()->getHandle(), &grid_x, &grid_y);
+	}
+	record["grid_x"] = LLSD::Integer(grid_x);
+	record["grid_y"] = LLSD::Integer(grid_y);
+	record["is_using_server_bake"] = isUsingServerBakes();
+	record["is_self"] = isSelf();
+	
+	LL_DEBUGS("Avatar") << "record\n" << ll_pretty_print_sd(record) << llendl;
+}
+
+void LLVOAvatar::stopPhase(const std::string& phase_name)
+{
+	F32 elapsed;
+	bool completed;
+	if (getPhases().getPhaseValues(phase_name, elapsed, completed))
+	{
+		if (!completed)
+		{
+			getPhases().stopPhase(phase_name);
+			completed = true;
+
+		}
+		else
+		{
+			llwarns << "stop when stopped already for " << phase_name << llendl;
+		}
+		logMetricsTimerRecord(phase_name, elapsed, completed);
+	}
+	else
+	{
+		llwarns << "stop when not started for " << phase_name << llendl;
+	}
+}
+
 // call periodically to keep isFullyLoaded up to date.
 // returns true if the value has changed.
 BOOL LLVOAvatar::updateIsFullyLoaded()
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
index c14f18d00ed..8babcc3ef3b 100755
--- a/indra/newview/llvoavatar.h
+++ b/indra/newview/llvoavatar.h
@@ -292,12 +292,16 @@ class LLVOAvatar :
 
 	S32				mLastRezzedStatus;
 
-	LLViewerStats::PhaseMap& getPhases()
-	{
-		return mPhases;
-	}
+	
+	void 			startPhase(const std::string& phase_name);
+	void 			stopPhase(const std::string& phase_name);
+	void			clearPhases();
+	void 			logPendingPhases();
+	static void 	logPendingPhasesAllAvatars();
+	void 			logMetricsTimerRecord(const std::string& phase_name, F32 elapsed, bool completed);
 
 protected:
+	LLViewerStats::PhaseMap& getPhases() { return mPhases; }
 	BOOL			updateIsFullyLoaded();
 	BOOL			processFullyLoadedChange(bool loading);
 	void			updateRuthTimer(bool loading);
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index a1c7cf97ff1..3ae4f9bc71f 100755
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -81,7 +81,7 @@ void selfStartPhase(const std::string& phase_name)
 {
 	if (isAgentAvatarValid())
 	{
-		gAgentAvatarp->getPhases().startPhase(phase_name);
+		gAgentAvatarp->startPhase(phase_name);
 	}
 }
 
@@ -89,7 +89,7 @@ void selfStopPhase(const std::string& phase_name)
 {
 	if (isAgentAvatarValid())
 	{
-		gAgentAvatarp->getPhases().stopPhase(phase_name);
+		gAgentAvatarp->stopPhase(phase_name);
 	}
 }
 
@@ -97,19 +97,11 @@ void selfClearPhases()
 {
 	if (isAgentAvatarValid())
 	{
-		gAgentAvatarp->getPhases().clearPhases();
+		gAgentAvatarp->clearPhases();
 		gAgentAvatarp->mLastRezzedStatus = -1;
 	}
 }
 
-void selfStopAllPhases()
-{
-	if (isAgentAvatarValid())
-	{
-		gAgentAvatarp->getPhases().stopAllPhases();
-	}
-}
-
 using namespace LLAvatarAppearanceDefines;
 
 /*********************************************************************************
@@ -222,6 +214,7 @@ void LLVOAvatarSelf::initInstance()
 	}
 
 	//doPeriodically(output_self_av_texture_diagnostics, 30.0);
+	doPeriodically(boost::bind(&LLVOAvatarSelf::updateAvatarRezMetrics, this, false), 5.0);
 }
 
 // virtual
@@ -2238,6 +2231,22 @@ class ViewerAppearanceChangeMetricsResponder: public LLCurl::Responder
 	volatile bool & mReportingStarted;
 };
 
+bool LLVOAvatarSelf::updateAvatarRezMetrics(bool force_send)
+{
+	F32 send_period = 30.0;
+
+	if (force_send || mTimeSinceLastRezMessage.getElapsedTimeF32() > send_period)
+	{
+		// Stats for completed phases have been getting logged as they
+		// complete.  This will give us stats for any timers that
+		// haven't finished as of the metric's being sent.
+		LLVOAvatar::logPendingPhasesAllAvatars();
+		sendAppearanceChangeMetrics();
+	}
+
+	return false;
+}
+
 void LLVOAvatarSelf::sendAppearanceChangeMetrics()
 {
 	// gAgentAvatarp->stopAllPhases();
@@ -2251,7 +2260,9 @@ void LLVOAvatarSelf::sendAppearanceChangeMetrics()
 	msg["sequence"] = report_sequence;
 	msg["initial"] = !reporting_started;
 	msg["break"] = false;
-
+	msg["duration"] = mTimeSinceLastRezMessage.getElapsedTimeF32();
+	mTimeSinceLastRezMessage.reset();
+	
 	// Update sequence number
 	if (S32_MAX == ++report_sequence)
 		report_sequence = 0;
diff --git a/indra/newview/llvoavatarself.h b/indra/newview/llvoavatarself.h
index 74888e470d6..857c482f93c 100755
--- a/indra/newview/llvoavatarself.h
+++ b/indra/newview/llvoavatarself.h
@@ -379,6 +379,10 @@ class LLVOAvatarSelf :
 		LLUUID			mAvatarID;
 		LLAvatarAppearanceDefines::ETextureIndex	mIndex;
 	};
+
+	LLTimer					mTimeSinceLastRezMessage;
+	bool					updateAvatarRezMetrics(bool force_send);
+	
 	void 					debugWearablesLoaded() { mDebugTimeWearablesLoaded = mDebugSelfLoadTimer.getElapsedTimeF32(); }
 	void 					debugAvatarVisible() { mDebugTimeAvatarVisible = mDebugSelfLoadTimer.getElapsedTimeF32(); }
 	void 					outputRezDiagnostics() const;
@@ -416,7 +420,8 @@ BOOL isAgentAvatarValid();
 
 void selfStartPhase(const std::string& phase_name);
 void selfStopPhase(const std::string& phase_name);
-void selfStopAllPhases();
 void selfClearPhases();
 
+void update_avatar_rez_metrics(bool force_send);
+
 #endif // LL_VO_AVATARSELF_H
-- 
GitLab


From 3bab0b6153b77c2b428e5f7d2a767b77a55fef68 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Fri, 8 Feb 2013 15:51:01 -0500
Subject: [PATCH 290/436] SH-3852 WIP - bucketize stats by agent_id, grid
 coordinates and various other criteria

---
 indra/newview/llvoavatar.cpp     | 14 ++++-
 indra/newview/llvoavatarself.cpp | 89 +++++++++++++++++++++++++++++---
 indra/newview/llvoavatarself.h   |  6 ++-
 3 files changed, 99 insertions(+), 10 deletions(-)

diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index f7e19446603..e911e014205 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -99,6 +99,7 @@
 
 #include "lldebugmessagebox.h"
 #include "llsdutil.h"
+#include "llsdserialize.h"
 
 extern F32 SPEED_ADJUST_MAX;
 extern F32 SPEED_ADJUST_MAX_SEC;
@@ -5964,12 +5965,13 @@ void LLVOAvatar::logMetricsTimerRecord(const std::string& phase_name, F32 elapse
 	LLSD record;
 	record["timer_name"] = phase_name;
 	record["agent_id"] = gAgent.getID();
+	record["avatar_id"] = getID();
 	record["elapsed"] = elapsed;
 	record["completed"] = completed;
 	U32 grid_x(0), grid_y(0);
 	if (getRegion())
 	{
-		record["cbv"] = getRegion()->getCentralBakeVersion();
+		record["central_bake_version"] = getRegion()->getCentralBakeVersion();
 		grid_from_region_handle(getRegion()->getHandle(), &grid_x, &grid_y);
 	}
 	record["grid_x"] = LLSD::Integer(grid_x);
@@ -5977,7 +5979,15 @@ void LLVOAvatar::logMetricsTimerRecord(const std::string& phase_name, F32 elapse
 	record["is_using_server_bake"] = isUsingServerBakes();
 	record["is_self"] = isSelf();
 	
-	LL_DEBUGS("Avatar") << "record\n" << ll_pretty_print_sd(record) << llendl;
+
+	std::ostringstream ostr;
+	ostr << LLSDNotationStreamer(record);
+	LL_DEBUGS("Avatar") << "record\n" << ostr.str() << llendl;
+
+	if (isAgentAvatarValid())
+	{
+		gAgentAvatarp->addMetricsTimerRecord(record);
+	}
 }
 
 void LLVOAvatar::stopPhase(const std::string& phase_name)
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index 3ae4f9bc71f..4461ba32c55 100755
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -62,6 +62,7 @@
 #include "llvovolume.h"
 #include "llsdutil.h"
 #include "llstartup.h"
+#include "llsdserialize.h"
 
 #if LL_MSVC
 // disable boost::lexical_cast warning
@@ -2166,6 +2167,8 @@ const std::string LLVOAvatarSelf::debugDumpAllLocalTextureDataInfo() const
 	return text;
 }
 
+
+#if 0
 // Dump avatar metrics data.
 LLSD LLVOAvatarSelf::metricsData()
 {
@@ -2178,10 +2181,10 @@ LLSD LLVOAvatarSelf::metricsData()
 	result["timers"]["invisible"] = mInvisibleTimer.getElapsedTimeF32();
 	result["timers"]["fully_loaded"] = mFullyLoadedTimer.getElapsedTimeF32();
 	result["startup"] = LLStartUp::getPhases().dumpPhases();
-	result["phases"] = getPhases().dumpPhases();
 	
 	return result;
 }
+#endif
 
 class ViewerAppearanceChangeMetricsResponder: public LLCurl::Responder
 {
@@ -2241,19 +2244,65 @@ bool LLVOAvatarSelf::updateAvatarRezMetrics(bool force_send)
 		// complete.  This will give us stats for any timers that
 		// haven't finished as of the metric's being sent.
 		LLVOAvatar::logPendingPhasesAllAvatars();
-		sendAppearanceChangeMetrics();
+		sendViewerAppearanceChangeMetrics();
 	}
 
 	return false;
 }
 
-void LLVOAvatarSelf::sendAppearanceChangeMetrics()
+void LLVOAvatarSelf::addMetricsTimerRecord(const LLSD& record)
+{
+	mPendingTimerRecords.push_back(record);
+}
+
+bool operator<(const LLSD& a, const LLSD& b)
+{
+	std::ostringstream aout, bout;
+	aout << LLSDNotationStreamer(a);
+	bout << LLSDNotationStreamer(b);
+	return aout.str() < bout.str();
+
+}
+
+// Given a vector of LLSD records, return an LLSD array of bucketed stats for val_field.
+LLSD summarize_by_buckets(std::vector<LLSD> in_records,
+						  std::vector<std::string> by_fields,
+						  std::string& val_field)
+{
+	LLSD result = LLSD::emptyArray();
+	std::map<LLSD,LLViewerStats::StatsAccumulator> accum;
+	for (std::vector<LLSD>::iterator in_record_iter = in_records.begin();
+		 in_record_iter != in_records.end(); ++in_record_iter)
+	{
+		LLSD& record = *in_record_iter;
+		LLSD key;
+		for (std::vector<std::string>::iterator field_iter = by_fields.begin();
+			 field_iter != by_fields.end(); ++field_iter)
+		{
+			const std::string& field = *field_iter;
+			key[field] = record[field];
+			LLViewerStats::StatsAccumulator& stats = accum[key];
+			F32 value = record[val_field].asReal();
+			stats.push(value);
+		}
+	}
+	for (std::map<LLSD,LLViewerStats::StatsAccumulator>::iterator accum_it = accum.begin();
+		 accum_it != accum.end(); ++accum_it)
+	{
+		LLSD out_record = accum_it->first;
+		out_record["stats"] = accum_it->second.getData();
+		result.append(out_record);
+	}
+	return result;
+}
+
+void LLVOAvatarSelf::sendViewerAppearanceChangeMetrics()
 {
 	// gAgentAvatarp->stopAllPhases();
 	static volatile bool reporting_started(false);
 	static volatile S32 report_sequence(0);
 
-	LLSD msg = metricsData();
+	LLSD msg; // = metricsData();
 	msg["message"] = "ViewerAppearanceChangeMetrics";
 	msg["session_id"] = gAgentSessionID;
 	msg["agent_id"] = gAgentID;
@@ -2261,8 +2310,35 @@ void LLVOAvatarSelf::sendAppearanceChangeMetrics()
 	msg["initial"] = !reporting_started;
 	msg["break"] = false;
 	msg["duration"] = mTimeSinceLastRezMessage.getElapsedTimeF32();
-	mTimeSinceLastRezMessage.reset();
-	
+
+	// Status of our own rezzing.
+	msg["rez_status"] = LLVOAvatar::rezStatusToString(getRezzedStatus());
+
+	// Status of all nearby avs including ourself.
+	msg["nearby"] = LLSD::emptyArray();
+	std::vector<S32> rez_counts;
+	LLVOAvatar::getNearbyRezzedStats(rez_counts);
+	for (S32 rez_stat=0; rez_stat < rez_counts.size(); ++rez_stat)
+	{
+		std::string rez_status_name = LLVOAvatar::rezStatusToString(rez_stat);
+		msg["nearby"][rez_status_name] = rez_counts[rez_stat];
+	}
+
+	//	std::vector<std::string> bucket_fields("timer_name","agent_id","is_self","grid_x","grid_y","is_using_server_bake");
+	std::vector<std::string> by_fields;
+	by_fields.push_back("timer_name");
+	by_fields.push_back("agent_id");
+	by_fields.push_back("completed");
+	by_fields.push_back("grid_x");
+	by_fields.push_back("grid_y");
+	by_fields.push_back("is_using_server_bake");
+	by_fields.push_back("is_self");
+	by_fields.push_back("cbv");
+	LLSD summary = summarize_by_buckets(mPendingTimerRecords, by_fields, std::string("elapsed"));
+	msg["timers"] = summary;
+
+	mPendingTimerRecords.clear();
+
 	// Update sequence number
 	if (S32_MAX == ++report_sequence)
 		report_sequence = 0;
@@ -2282,6 +2358,7 @@ void LLVOAvatarSelf::sendAppearanceChangeMetrics()
 						   new ViewerAppearanceChangeMetricsResponder(report_sequence,
 																	  report_sequence,
 																	  reporting_started));
+		mTimeSinceLastRezMessage.reset();
 	}
 }
 
diff --git a/indra/newview/llvoavatarself.h b/indra/newview/llvoavatarself.h
index 857c482f93c..04b0fb760cc 100755
--- a/indra/newview/llvoavatarself.h
+++ b/indra/newview/llvoavatarself.h
@@ -382,6 +382,9 @@ class LLVOAvatarSelf :
 
 	LLTimer					mTimeSinceLastRezMessage;
 	bool					updateAvatarRezMetrics(bool force_send);
+
+	std::vector<LLSD>		mPendingTimerRecords;
+	void 					addMetricsTimerRecord(const LLSD& record);
 	
 	void 					debugWearablesLoaded() { mDebugTimeWearablesLoaded = mDebugSelfLoadTimer.getElapsedTimeF32(); }
 	void 					debugAvatarVisible() { mDebugTimeAvatarVisible = mDebugSelfLoadTimer.getElapsedTimeF32(); }
@@ -398,8 +401,7 @@ class LLVOAvatarSelf :
 	void					dumpAllTextures() const;
 	const std::string		debugDumpLocalTextureDataInfo(const LLViewerTexLayerSet* layerset) const; // Lists out state of this particular baked texture layer
 	const std::string		debugDumpAllLocalTextureDataInfo() const; // Lists out which baked textures are at highest LOD
-	LLSD					metricsData();
-	void					sendAppearanceChangeMetrics(); // send data associated with completing a change.
+	void					sendViewerAppearanceChangeMetrics(); // send data associated with completing a change.
 private:
 	LLFrameTimer    		mDebugSelfLoadTimer;
 	F32						mDebugTimeWearablesLoaded;
-- 
GitLab


From b342b96b3a80757f8772e921442f68c23dea592f Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Sat, 9 Feb 2013 00:43:56 +0000
Subject: [PATCH 291/436] Updating appearance utility

---
 autobuild.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index 67d1b4a27b6..35c31fbe392 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -1290,9 +1290,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>4d0fffe0780f3874cf95ef5a2f3c8489</string>
+              <string>16f094573285f4bb6eb53fd7db20970b</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/269731/arch/Linux/installer/llappearanceutility_source-0.1-linux-20130130.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/270202/arch/Linux/installer/llappearanceutility_source-0.1-linux-20130209.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
-- 
GitLab


From 93f07d4e2721d8bf163545ba2600aa5c3cd1c506 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Sat, 9 Feb 2013 01:18:36 +0000
Subject: [PATCH 292/436] Updating appearance utility

---
 autobuild.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index 35c31fbe392..41f9176f304 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -1290,9 +1290,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>16f094573285f4bb6eb53fd7db20970b</string>
+              <string>606926d8b873328149313ace29f5ab64</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/270202/arch/Linux/installer/llappearanceutility_source-0.1-linux-20130209.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/270205/arch/Linux/installer/llappearanceutility_source-0.1-linux-20130209.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
-- 
GitLab


From f3e407ae3f05e897de0b0d7daea4d31f09e73048 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Mon, 11 Feb 2013 13:50:26 -0500
Subject: [PATCH 293/436] SH-3852 WIP - removed avatar metrics from
 ViewerAssetMetrics

---
 indra/newview/llappviewer.cpp                 |  1 -
 indra/newview/llappviewerwin32.cpp            |  2 +-
 indra/newview/llviewerassetstats.cpp          | 42 +----------------
 indra/newview/llviewerassetstats.h            | 10 ----
 indra/newview/llviewerstats.cpp               | 25 ----------
 indra/newview/llviewerstats.h                 |  3 --
 indra/newview/llvoavatar.cpp                  |  4 +-
 indra/newview/llvoavatarself.cpp              | 22 ++++++---
 .../newview/tests/llviewerassetstats_test.cpp | 47 ++++---------------
 9 files changed, 29 insertions(+), 127 deletions(-)

diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index 2ee325a09e1..9a5010c7817 100755
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -4410,7 +4410,6 @@ void LLAppViewer::idle()
 			// The 5-second interval is nice for this purpose.  If the object debug
 			// bit moves or is disabled, please give this a suitable home.
 			LLViewerAssetStatsFF::record_fps_main(gFPSClamped);
-			LLViewerAssetStatsFF::record_avatar_stats();
 		}
 	}
 
diff --git a/indra/newview/llappviewerwin32.cpp b/indra/newview/llappviewerwin32.cpp
index 8326be433e9..82b93b52a2a 100644
--- a/indra/newview/llappviewerwin32.cpp
+++ b/indra/newview/llappviewerwin32.cpp
@@ -92,7 +92,7 @@ void nvapi_error(NvAPI_Status status)
 	llwarns << szDesc << llendl;
 
 	//should always trigger when asserts are enabled
-	llassert(status == NVAPI_OK);
+	//llassert(status == NVAPI_OK);
 }
 
 // Create app mutex creates a unique global windows object. 
diff --git a/indra/newview/llviewerassetstats.cpp b/indra/newview/llviewerassetstats.cpp
index 4c59fd03719..ed768eb0933 100755
--- a/indra/newview/llviewerassetstats.cpp
+++ b/indra/newview/llviewerassetstats.cpp
@@ -30,7 +30,6 @@
 #include "llregionhandle.h"
 
 #include "stdtypes.h"
-#include "llvoavatar.h"
 
 /*
  * Classes and utility functions for per-thread and per-region
@@ -127,8 +126,6 @@ LLViewerAssetStats::PerRegionStats::merge(const LLViewerAssetStats::PerRegionSta
 		mFPS.merge(src.mFPS);
 	}
 
-	// Avatar stats - data all comes from main thread, so leave alone.
-
 	// Requests
 	for (int i = 0; i < LL_ARRAY_SIZE(mRequests); ++i)
 	{
@@ -160,9 +157,7 @@ LLViewerAssetStats::LLViewerAssetStats()
 
 LLViewerAssetStats::LLViewerAssetStats(const LLViewerAssetStats & src)
 	: mRegionHandle(src.mRegionHandle),
-	  mResetTimestamp(src.mResetTimestamp),
-	  mPhaseStats(src.mPhaseStats),
-	  mAvatarRezStates(src.mAvatarRezStates)
+	  mResetTimestamp(src.mResetTimestamp)
 {
 	const PerRegionContainer::const_iterator it_end(src.mRegionStats.end());
 	for (PerRegionContainer::const_iterator it(src.mRegionStats.begin()); it_end != it; ++it)
@@ -258,17 +253,6 @@ LLViewerAssetStats::recordFPS(F32 fps)
 	mCurRegionStats->mFPS.record(fps);
 }
 
-void
-LLViewerAssetStats::recordAvatarStats()
-{
-	std::vector<S32> rez_counts;
-	LLVOAvatar::getNearbyRezzedStats(rez_counts);
-	mAvatarRezStates = rez_counts;
-	mPhaseStats.clear();
-	mPhaseStats["cloud"] = LLViewerStats::PhaseMap::getPhaseStats("cloud");
-	mPhaseStats["cloud-or-gray"] = LLViewerStats::PhaseMap::getPhaseStats("cloud-or-gray");
-}
-
 LLSD
 LLViewerAssetStats::asLLSD(bool compact_output)
 {
@@ -299,11 +283,6 @@ LLViewerAssetStats::asLLSD(bool compact_output)
 	static const LLSD::String max_tag("max");
 	static const LLSD::String mean_tag("mean");
 
-	// Avatar sub-tags
-	static const LLSD::String avatar_tag("avatar");
-	static const LLSD::String avatar_nearby_tag("nearby");
-	static const LLSD::String avatar_phase_stats_tag("phase_stats");
-	
 	const duration_t now = LLViewerAssetStatsFF::get_timestamp();
 	mCurRegionStats->accumulateTime(now);
 
@@ -362,16 +341,6 @@ LLViewerAssetStats::asLLSD(bool compact_output)
 	LLSD ret = LLSD::emptyMap();
 	ret["regions"] = regions;
 	ret["duration"] = LLSD::Real((now - mResetTimestamp) * 1.0e-6);
-	LLSD avatar_info;
-	avatar_info[avatar_nearby_tag] = LLSD::emptyArray();
-	for (S32 rez_stat=0; rez_stat < mAvatarRezStates.size(); ++rez_stat)
-	{
-		std::string rez_status_name = LLVOAvatar::rezStatusToString(rez_stat);
-		avatar_info[avatar_nearby_tag][rez_status_name] = mAvatarRezStates[rez_stat];
-	}
-	avatar_info[avatar_phase_stats_tag]["cloud"] = mPhaseStats["cloud"].getData();
-	avatar_info[avatar_phase_stats_tag]["cloud-or-gray"] = mPhaseStats["cloud-or-gray"].getData();
-	ret[avatar_tag] = avatar_info;
 	
 	return ret;
 }
@@ -470,15 +439,6 @@ record_fps_main(F32 fps)
 	gViewerAssetStatsMain->recordFPS(fps);
 }
 
-void
-record_avatar_stats()
-{
-	if (! gViewerAssetStatsMain)
-		return;
-
-	gViewerAssetStatsMain->recordAvatarStats();
-}
-
 // 'thread1' - should be for TextureFetch thread
 
 void
diff --git a/indra/newview/llviewerassetstats.h b/indra/newview/llviewerassetstats.h
index 83197522306..3381c01ed53 100755
--- a/indra/newview/llviewerassetstats.h
+++ b/indra/newview/llviewerassetstats.h
@@ -36,7 +36,6 @@
 #include "llviewerassetstorage.h"
 #include "llsimplestat.h"
 #include "llsd.h"
-#include "llvoavatar.h"
 
 /**
  * @class LLViewerAssetStats
@@ -182,9 +181,6 @@ class LLViewerAssetStats
 	// Frames-Per-Second Samples
 	void recordFPS(F32 fps);
 
-	// Avatar-related statistics
-	void recordAvatarStats();
-
 	// Merge a source instance into a destination instance.  This is
 	// conceptually an 'operator+=()' method:
 	// - counts are added
@@ -256,10 +252,6 @@ class LLViewerAssetStats
 
 	// Time of last reset
 	duration_t mResetTimestamp;
-
-	// Nearby avatar stats
-	std::vector<S32> mAvatarRezStates;
-	LLViewerStats::phase_stats_t mPhaseStats;
 };
 
 
@@ -318,8 +310,6 @@ void record_response_main(LLViewerAssetType::EType at, bool with_http, bool is_t
 
 void record_fps_main(F32 fps);
 
-void record_avatar_stats();
-
 /**
  * Region context, event and duration loggers for Thread 1.
  */
diff --git a/indra/newview/llviewerstats.cpp b/indra/newview/llviewerstats.cpp
index 28c6b593912..65cae9b3383 100755
--- a/indra/newview/llviewerstats.cpp
+++ b/indra/newview/llviewerstats.cpp
@@ -764,7 +764,6 @@ void LLViewerStats::PhaseMap::stopPhase(const std::string& phase_name)
 		if (iter->second.getStarted())
 		{
 			// Going from started to paused state - record stats.
-			recordPhaseStat(phase_name,iter->second.getElapsedTimeF32());
 			iter->second.stop();
 		}
 	}
@@ -803,27 +802,3 @@ LLSD LLViewerStats::PhaseMap::dumpPhases()
 	}
 	return result;
 }
-
-// static initializer
-//static
-LLViewerStats::phase_stats_t LLViewerStats::PhaseMap::sStats;
-
-// static
-LLViewerStats::StatsAccumulator& LLViewerStats::PhaseMap::getPhaseStats(const std::string& phase_name)
-{
-	phase_stats_t::iterator it = sStats.find(phase_name);
-	if (it == sStats.end())
-	{
-		LLViewerStats::StatsAccumulator new_stats;
-		sStats[phase_name] = new_stats;
-	}
-	return sStats[phase_name];
-}
-
-// static
-void LLViewerStats::PhaseMap::recordPhaseStat(const std::string& phase_name, F32 value)
-{
-	LLViewerStats::StatsAccumulator& stats = getPhaseStats(phase_name);
-	stats.push(value);
-}
-
diff --git a/indra/newview/llviewerstats.h b/indra/newview/llviewerstats.h
index 084f5ae7d19..e74fb36e979 100755
--- a/indra/newview/llviewerstats.h
+++ b/indra/newview/llviewerstats.h
@@ -285,7 +285,6 @@ class LLViewerStats : public LLSingleton<LLViewerStats>
 	{
 	private:
 		phase_map_t mPhaseMap;
-		static phase_stats_t sStats;
 	public:
 		PhaseMap();
 		LLTimer&	 	getPhaseTimer(const std::string& phase_name);
@@ -294,8 +293,6 @@ class LLViewerStats : public LLSingleton<LLViewerStats>
 		void			stopPhase(const std::string& phase_name);
 		void			clearPhases();
 		LLSD			dumpPhases();
-		static StatsAccumulator& getPhaseStats(const std::string& phase_name);
-		static void recordPhaseStat(const std::string& phase_name, F32 value);
 		phase_map_t::iterator begin() { return mPhaseMap.begin(); }
 		phase_map_t::iterator end() { return mPhaseMap.end(); }
 	};
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index e911e014205..e298ccdb9c4 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -5971,12 +5971,12 @@ void LLVOAvatar::logMetricsTimerRecord(const std::string& phase_name, F32 elapse
 	U32 grid_x(0), grid_y(0);
 	if (getRegion())
 	{
-		record["central_bake_version"] = getRegion()->getCentralBakeVersion();
+		record["central_bake_version"] = LLSD::Integer(getRegion()->getCentralBakeVersion());
 		grid_from_region_handle(getRegion()->getHandle(), &grid_x, &grid_y);
 	}
 	record["grid_x"] = LLSD::Integer(grid_x);
 	record["grid_y"] = LLSD::Integer(grid_y);
-	record["is_using_server_bake"] = isUsingServerBakes();
+	record["is_using_server_bakes"] = ((bool) isUsingServerBakes());
 	record["is_self"] = isSelf();
 	
 
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index 4461ba32c55..55e927652e8 100755
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -2236,7 +2236,12 @@ class ViewerAppearanceChangeMetricsResponder: public LLCurl::Responder
 
 bool LLVOAvatarSelf::updateAvatarRezMetrics(bool force_send)
 {
-	F32 send_period = 30.0;
+	const F32 AV_METRICS_INTERVAL_QA = 30.0;
+	F32 send_period = 300.0;
+	if (gSavedSettings.getBOOL("QAModeMetrics"))
+	{
+		send_period = AV_METRICS_INTERVAL_QA;
+	}
 
 	if (force_send || mTimeSinceLastRezMessage.getElapsedTimeF32() > send_period)
 	{
@@ -2260,7 +2265,10 @@ bool operator<(const LLSD& a, const LLSD& b)
 	std::ostringstream aout, bout;
 	aout << LLSDNotationStreamer(a);
 	bout << LLSDNotationStreamer(b);
-	return aout.str() < bout.str();
+	std::string astring = aout.str();
+	std::string bstring = bout.str();
+
+	return astring < bstring;
 
 }
 
@@ -2281,10 +2289,10 @@ LLSD summarize_by_buckets(std::vector<LLSD> in_records,
 		{
 			const std::string& field = *field_iter;
 			key[field] = record[field];
-			LLViewerStats::StatsAccumulator& stats = accum[key];
-			F32 value = record[val_field].asReal();
-			stats.push(value);
 		}
+		LLViewerStats::StatsAccumulator& stats = accum[key];
+		F32 value = record[val_field].asReal();
+		stats.push(value);
 	}
 	for (std::map<LLSD,LLViewerStats::StatsAccumulator>::iterator accum_it = accum.begin();
 		 accum_it != accum.end(); ++accum_it)
@@ -2331,9 +2339,9 @@ void LLVOAvatarSelf::sendViewerAppearanceChangeMetrics()
 	by_fields.push_back("completed");
 	by_fields.push_back("grid_x");
 	by_fields.push_back("grid_y");
-	by_fields.push_back("is_using_server_bake");
+	by_fields.push_back("is_using_server_bakes");
 	by_fields.push_back("is_self");
-	by_fields.push_back("cbv");
+	by_fields.push_back("central_bake_version");
 	LLSD summary = summarize_by_buckets(mPendingTimerRecords, by_fields, std::string("elapsed"));
 	msg["timers"] = summary;
 
diff --git a/indra/newview/tests/llviewerassetstats_test.cpp b/indra/newview/tests/llviewerassetstats_test.cpp
index f8923b98681..b55b6c13d4a 100755
--- a/indra/newview/tests/llviewerassetstats_test.cpp
+++ b/indra/newview/tests/llviewerassetstats_test.cpp
@@ -35,31 +35,6 @@
 #include "lluuid.h"
 #include "llsdutil.h"
 #include "llregionhandle.h"
-#include "../llvoavatar.h"
-
-void LLVOAvatar::getNearbyRezzedStats(std::vector<S32>& counts)
-{
-	counts.resize(3);
-	counts[0] = 0;
-	counts[1] = 0;
-	counts[2] = 1;
-}
-
-// static
-std::string LLVOAvatar::rezStatusToString(S32 rez_status)
-{
-	if (rez_status==0) return "cloud";
-	if (rez_status==1) return "gray";
-	if (rez_status==2) return "textured";
-	return "unknown";
-}
-
-// static
-LLViewerStats::StatsAccumulator& LLViewerStats::PhaseMap::getPhaseStats(const std::string& phase_name)
-{
-	static LLViewerStats::StatsAccumulator junk;
-	return junk;
-}
 
 static const char * all_keys[] = 
 {
@@ -117,7 +92,6 @@ static const U64 region2_handle(0x0000030000004200ULL);
 static const std::string region1_handle_str("0000040000003f00");
 static const std::string region2_handle_str("0000030000004200");
 
-#if 0
 static bool
 is_empty_map(const LLSD & sd)
 {
@@ -135,7 +109,6 @@ is_double_key_map(const LLSD & sd, const std::string & key1, const std::string &
 {
 	return sd.isMap() && 2 == sd.size() && sd.has(key1) && sd.has(key2);
 }
-#endif
 
 static bool
 is_triple_key_map(const LLSD & sd, const std::string & key1, const std::string & key2, const std::string& key3)
@@ -147,7 +120,7 @@ is_triple_key_map(const LLSD & sd, const std::string & key1, const std::string &
 static bool
 is_no_stats_map(const LLSD & sd)
 {
-	return is_triple_key_map(sd, "duration", "regions", "avatar");
+	return is_double_key_map(sd, "duration", "regions");
 }
 
 static bool
@@ -258,7 +231,7 @@ namespace tut
 		// Once the region is set, we will get a response even with no data collection
 		it->setRegion(region1_handle);
 		sd_full = it->asLLSD(false);
-		ensure("Correct single-key LLSD map root", is_triple_key_map(sd_full, "duration", "regions", "avatar"));
+		ensure("Correct single-key LLSD map root", is_double_key_map(sd_full, "duration", "regions"));
 		ensure("Correct single-slot LLSD array regions", is_single_slot_array(sd_full["regions"], region1_handle));
 		
 		LLSD sd = sd_full["regions"][0];
@@ -299,7 +272,7 @@ namespace tut
 		it->setRegion(region1_handle);
 		
 		LLSD sd = it->asLLSD(false);
-		ensure("Correct single-key LLSD map root", is_triple_key_map(sd, "regions", "duration", "avatar"));
+		ensure("Correct single-key LLSD map root", is_double_key_map(sd, "regions", "duration"));
 		ensure("Correct single-slot LLSD array regions", is_single_slot_array(sd["regions"], region1_handle));
 		sd = sd[0];
 		
@@ -324,7 +297,7 @@ namespace tut
 		LLViewerAssetStatsFF::record_dequeue_main(LLViewerAssetType::AT_BODYPART, false, false);
 
 		LLSD sd = gViewerAssetStatsMain->asLLSD(false);
-		ensure("Correct single-key LLSD map root", is_triple_key_map(sd, "regions", "duration", "avatar"));
+		ensure("Correct single-key LLSD map root", is_double_key_map(sd, "regions", "duration"));
 		ensure("Correct single-slot LLSD array regions", is_single_slot_array(sd["regions"], region1_handle));
 		sd = sd["regions"][0];
 		
@@ -364,7 +337,7 @@ namespace tut
 		LLSD sd = gViewerAssetStatsThread1->asLLSD(false);
 		ensure("Other collector is empty", is_no_stats_map(sd));
 		sd = gViewerAssetStatsMain->asLLSD(false);
-		ensure("Correct single-key LLSD map root", is_triple_key_map(sd, "regions", "duration", "avatar"));
+		ensure("Correct single-key LLSD map root", is_double_key_map(sd, "regions", "duration"));
 		ensure("Correct single-slot LLSD array regions", is_single_slot_array(sd["regions"], region1_handle));
 		sd = sd["regions"][0];
 		
@@ -414,7 +387,7 @@ namespace tut
 
 		// std::cout << sd << std::endl;
 		
-		ensure("Correct double-key LLSD map root", is_triple_key_map(sd, "duration", "regions", "avatar"));
+		ensure("Correct double-key LLSD map root", is_double_key_map(sd, "duration", "regions"));
 		ensure("Correct double-slot LLSD array regions", is_double_slot_array(sd["regions"], region1_handle, region2_handle));
 		LLSD sd1 = get_region(sd, region1_handle);
 		LLSD sd2 = get_region(sd, region2_handle);
@@ -437,7 +410,7 @@ namespace tut
 		// Reset leaves current region in place
 		gViewerAssetStatsMain->reset();
 		sd = gViewerAssetStatsMain->asLLSD(false);
-		ensure("Correct single-key LLSD map root", is_triple_key_map(sd, "regions", "duration", "avatar"));
+		ensure("Correct single-key LLSD map root", is_double_key_map(sd, "regions", "duration"));
 		ensure("Correct single-slot LLSD array regions (p2)", is_single_slot_array(sd["regions"], region2_handle));
 		sd2 = sd["regions"][0];
 		
@@ -486,7 +459,7 @@ namespace tut
 
 		LLSD sd = gViewerAssetStatsMain->asLLSD(false);
 
-		ensure("Correct double-key LLSD map root", is_triple_key_map(sd, "duration", "regions", "avatar"));
+		ensure("Correct double-key LLSD map root", is_double_key_map(sd, "duration", "regions"));
 		ensure("Correct double-slot LLSD array regions", is_double_slot_array(sd["regions"], region1_handle, region2_handle));
 		LLSD sd1 = get_region(sd, region1_handle);
 		LLSD sd2 = get_region(sd, region2_handle);
@@ -509,7 +482,7 @@ namespace tut
 		// Reset leaves current region in place
 		gViewerAssetStatsMain->reset();
 		sd = gViewerAssetStatsMain->asLLSD(false);
-		ensure("Correct single-key LLSD map root", is_triple_key_map(sd, "duration", "regions", "avatar"));
+		ensure("Correct single-key LLSD map root", is_double_key_map(sd, "duration", "regions"));
 		ensure("Correct single-slot LLSD array regions (p2)", is_single_slot_array(sd["regions"], region2_handle));
 		sd2 = get_region(sd, region2_handle);
 		ensure("Region2 is present in results", sd2.isMap());
@@ -555,7 +528,7 @@ namespace tut
 		LLSD sd = gViewerAssetStatsThread1->asLLSD(false);
 		ensure("Other collector is empty", is_no_stats_map(sd));
 		sd = gViewerAssetStatsMain->asLLSD(false);
-		ensure("Correct single-key LLSD map root", is_triple_key_map(sd, "regions", "duration", "avatar"));
+		ensure("Correct single-key LLSD map root", is_double_key_map(sd, "regions", "duration"));
 		ensure("Correct single-slot LLSD array regions", is_single_slot_array(sd["regions"], region1_handle));
 		sd = get_region(sd, region1_handle);
 		ensure("Region1 is present in results", sd.isMap());
-- 
GitLab


From be21b989c5a6d0353c868abc80d5c88f25033eb6 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Mon, 11 Feb 2013 19:52:07 +0000
Subject: [PATCH 294/436] Updating appearance util

---
 autobuild.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index 41f9176f304..67092cb04be 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -1290,9 +1290,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>606926d8b873328149313ace29f5ab64</string>
+              <string>e0dbab27a77d6a864658da4526d7a9c8</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/270205/arch/Linux/installer/llappearanceutility_source-0.1-linux-20130209.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/270227/arch/Linux/installer/llappearanceutility_source-0.1-linux-20130211.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
-- 
GitLab


From f6698ad956d7c168a997e91fc5bc7e9a9b7aba64 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Mon, 11 Feb 2013 15:09:53 -0500
Subject: [PATCH 295/436] fix for mac build failure

---
 indra/newview/llvoavatarself.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index 55e927652e8..21798d57742 100755
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -2275,7 +2275,7 @@ bool operator<(const LLSD& a, const LLSD& b)
 // Given a vector of LLSD records, return an LLSD array of bucketed stats for val_field.
 LLSD summarize_by_buckets(std::vector<LLSD> in_records,
 						  std::vector<std::string> by_fields,
-						  std::string& val_field)
+						  std::string val_field)
 {
 	LLSD result = LLSD::emptyArray();
 	std::map<LLSD,LLViewerStats::StatsAccumulator> accum;
-- 
GitLab


From 25edeb91385a227290b7892b2290e33431fb8737 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Mon, 11 Feb 2013 16:43:23 -0500
Subject: [PATCH 296/436] fix for build failure on test w/linux

---
 indra/newview/tests/llviewerassetstats_test.cpp | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/indra/newview/tests/llviewerassetstats_test.cpp b/indra/newview/tests/llviewerassetstats_test.cpp
index b55b6c13d4a..e72fa0fa707 100755
--- a/indra/newview/tests/llviewerassetstats_test.cpp
+++ b/indra/newview/tests/llviewerassetstats_test.cpp
@@ -92,17 +92,21 @@ static const U64 region2_handle(0x0000030000004200ULL);
 static const std::string region1_handle_str("0000040000003f00");
 static const std::string region2_handle_str("0000030000004200");
 
+#if 0
 static bool
 is_empty_map(const LLSD & sd)
 {
 	return sd.isMap() && 0 == sd.size();
 }
+#endif
 
+#if 0
 static bool
 is_single_key_map(const LLSD & sd, const std::string & key)
 {
 	return sd.isMap() && 1 == sd.size() && sd.has(key);
 }
+#endif
 
 static bool
 is_double_key_map(const LLSD & sd, const std::string & key1, const std::string & key2)
@@ -110,11 +114,13 @@ is_double_key_map(const LLSD & sd, const std::string & key1, const std::string &
 	return sd.isMap() && 2 == sd.size() && sd.has(key1) && sd.has(key2);
 }
 
+#if 0
 static bool
 is_triple_key_map(const LLSD & sd, const std::string & key1, const std::string & key2, const std::string& key3)
 {
 	return sd.isMap() && 3 == sd.size() && sd.has(key1) && sd.has(key2) && sd.has(key3);
 }
+#endif
 
 
 static bool
-- 
GitLab


From e11fd0a7eb9e5aa39aa719f6d349506348a06d18 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Tue, 12 Feb 2013 10:58:04 -0500
Subject: [PATCH 297/436] SH-3852 WIP - added more specific logging of
 completenesss of texture loading

---
 indra/newview/llappearancemgr.cpp |   2 +-
 indra/newview/llvoavatar.cpp      | 112 +++++++++++++++++++-----------
 indra/newview/llvoavatar.h        |  12 ++--
 indra/newview/llvoavatarself.cpp  |   7 +-
 4 files changed, 84 insertions(+), 49 deletions(-)

diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 1a6d49c7a29..caeaf0970b1 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -2006,7 +2006,7 @@ void LLAppearanceMgr::updateAppearanceFromCOF(bool update_base_outfit_ordering)
 		llwarns << "Called updateAppearanceFromCOF inside updateAppearanceFromCOF, skipping" << llendl;
 		return;
 	}
-	
+
 	BoolSetter setIsInUpdateAppearanceFromCOF(mIsInUpdateAppearanceFromCOF);
 
 	LL_INFOS("Avatar") << self_av_string() << "starting" << LL_ENDL;
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index e298ccdb9c4..0cd97283e93 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -818,6 +818,7 @@ BOOL LLVOAvatar::hasGray() const
 S32 LLVOAvatar::getRezzedStatus() const
 {
 	if (getIsCloud()) return 0;
+	if (isFullyTextured() && allBakedTexturesCompletelyDownloaded()) return 3;
 	if (isFullyTextured()) return 2;
 	llassert(hasGray());
 	return 1; // gray
@@ -873,7 +874,7 @@ BOOL LLVOAvatar::areAllNearbyInstancesBaked(S32& grey_avatars)
 void LLVOAvatar::getNearbyRezzedStats(std::vector<S32>& counts)
 {
 	counts.clear();
-	counts.resize(3);
+	counts.resize(4);
 	for (std::vector<LLCharacter*>::iterator iter = LLCharacter::sInstances.begin();
 		 iter != LLCharacter::sInstances.end(); ++iter)
 	{
@@ -891,6 +892,7 @@ std::string LLVOAvatar::rezStatusToString(S32 rez_status)
 	if (rez_status==0) return "cloud";
 	if (rez_status==1) return "gray";
 	if (rez_status==2) return "textured";
+	if (rez_status==3) return "textured_and_downloaded";
 	return "unknown";
 }
 
@@ -1814,10 +1816,7 @@ S32 LLVOAvatar::setTETexture(const U8 te, const LLUUID& uuid)
 {
 	if (!isIndexBakedTexture((ETextureIndex)te))
 	{
-		if (!uuid.isNull())
-		{
-			llinfos << "ignoring texture " << uuid << " in non-baked slot " << (S32)te << " - will use null " << llendl;
-		}
+		// Sim still sends some uuids for non-baked slots sometimes - ignore.
 		return LLViewerObject::setTETexture(te, LLUUID::null);
 	}
 
@@ -4034,7 +4033,7 @@ U32 LLVOAvatar::renderImpostor(LLColor4U color, S32 diffuse_channel)
 	return 6;
 }
 
-bool LLVOAvatar::allTexturesCompletelyDownloaded(std::set<LLUUID>& ids)
+bool LLVOAvatar::allTexturesCompletelyDownloaded(std::set<LLUUID>& ids) const
 {
 	for (std::set<LLUUID>::const_iterator it = ids.begin(); it != ids.end(); ++it)
 	{
@@ -4047,14 +4046,14 @@ bool LLVOAvatar::allTexturesCompletelyDownloaded(std::set<LLUUID>& ids)
 	return true;
 }
 
-bool LLVOAvatar::allLocalTexturesCompletelyDownloaded()
+bool LLVOAvatar::allLocalTexturesCompletelyDownloaded() const
 {
 	std::set<LLUUID> local_ids;
 	collectLocalTextureUUIDs(local_ids);
 	return allTexturesCompletelyDownloaded(local_ids);
 }
 
-bool LLVOAvatar::allBakedTexturesCompletelyDownloaded()
+bool LLVOAvatar::allBakedTexturesCompletelyDownloaded() const
 {
 	std::set<LLUUID> baked_ids;
 	collectBakedTextureUUIDs(baked_ids);
@@ -4129,7 +4128,7 @@ S32 LLVOAvatar::totalTextureMemForUUIDS(std::set<LLUUID>& ids)
 	return result;
 }
 	
-void LLVOAvatar::collectLocalTextureUUIDs(std::set<LLUUID>& ids)
+void LLVOAvatar::collectLocalTextureUUIDs(std::set<LLUUID>& ids) const
 {
 	for (U32 texture_index = 0; texture_index < getNumTEs(); texture_index++)
 	{
@@ -4155,7 +4154,7 @@ void LLVOAvatar::collectLocalTextureUUIDs(std::set<LLUUID>& ids)
 	ids.erase(IMG_INVISIBLE);
 }
 
-void LLVOAvatar::collectBakedTextureUUIDs(std::set<LLUUID>& ids)
+void LLVOAvatar::collectBakedTextureUUIDs(std::set<LLUUID>& ids) const
 {
 	for (U32 texture_index = 0; texture_index < getNumTEs(); texture_index++)
 	{
@@ -5873,8 +5872,9 @@ BOOL LLVOAvatar::getIsCloud() const
 
 void LLVOAvatar::updateRezzedStatusTimers()
 {
-	// State machine for rezzed status. Statuses are 0 = cloud, 1 = gray, 2 = textured.
+	// State machine for rezzed status. Statuses are -1 on startup, 0 = cloud, 1 = gray, 2 = textured, 3 = textured_and_downloaded.
 	// Purpose is to collect time data for each period of cloud or cloud+gray.
+
 	S32 rez_status = getRezzedStatus();
 	if (rez_status != mLastRezzedStatus)
 	{
@@ -5907,7 +5907,32 @@ void LLVOAvatar::updateRezzedStatusTimers()
 			// stop cloud-or-gray timer, which will capture stats.
 			stopPhase("cloud-or-gray");
 		}
-		
+
+		if (mLastRezzedStatus == -1 && rez_status != -1)
+		{
+			// First time initialization, start all timers.
+			for (S32 i = 1; i < 4; i++)
+			{
+				startPhase("load_" + LLVOAvatar::rezStatusToString(i));
+			}
+		}
+		if (rez_status < mLastRezzedStatus)
+		{
+			// load level has decreased. start phase timers for higher load levels.
+			for (S32 i = rez_status+1; i <= mLastRezzedStatus; i++)
+			{
+				startPhase("load_" + LLVOAvatar::rezStatusToString(i));
+			}
+		}
+		else if (rez_status > mLastRezzedStatus)
+		{
+			// load level has increased. stop phase timers for lower and equal load levels.
+			for (S32 i = llmax(mLastRezzedStatus+1,1); i <= rez_status; i++)
+			{
+				stopPhase("load_" + LLVOAvatar::rezStatusToString(i));
+			}
+		}
+
 		mLastRezzedStatus = rez_status;
 	}
 }
@@ -5919,9 +5944,44 @@ void LLVOAvatar::clearPhases()
 
 void LLVOAvatar::startPhase(const std::string& phase_name)
 {
+	F32 elapsed;
+	bool completed;
+	if (getPhases().getPhaseValues(phase_name, elapsed, completed))
+	{
+		if (!completed)
+		{
+			LL_DEBUGS("Avatar") << "start when started already for " << phase_name << llendl;
+			return;
+		}
+	}
+	LL_DEBUGS("Avatar") << "started phase " << phase_name << llendl;
 	getPhases().startPhase(phase_name);
 }
 
+void LLVOAvatar::stopPhase(const std::string& phase_name)
+{
+	F32 elapsed;
+	bool completed;
+	if (getPhases().getPhaseValues(phase_name, elapsed, completed))
+	{
+		if (!completed)
+		{
+			LL_DEBUGS("Avatar") << "stopped phase " << phase_name << llendl;
+			getPhases().stopPhase(phase_name);
+			completed = true;
+			logMetricsTimerRecord(phase_name, elapsed, completed);
+		}
+		else
+		{
+			LL_DEBUGS("Avatar") << "stop when stopped already for " << phase_name << llendl;
+		}
+	}
+	else
+	{
+		LL_DEBUGS("Avatar") << "stop when not started for " << phase_name << llendl;
+	}
+}
+
 void LLVOAvatar::logPendingPhases()
 {
 	for (LLViewerStats::phase_map_t::iterator it = getPhases().begin();
@@ -5937,10 +5997,6 @@ void LLVOAvatar::logPendingPhases()
 			{
 				logMetricsTimerRecord(phase_name, elapsed, completed);
 			}
-			else
-			{
-				llwarns << "ignoring " << phase_name << llendl;
-			}
 		}
 	}
 }
@@ -5990,30 +6046,6 @@ void LLVOAvatar::logMetricsTimerRecord(const std::string& phase_name, F32 elapse
 	}
 }
 
-void LLVOAvatar::stopPhase(const std::string& phase_name)
-{
-	F32 elapsed;
-	bool completed;
-	if (getPhases().getPhaseValues(phase_name, elapsed, completed))
-	{
-		if (!completed)
-		{
-			getPhases().stopPhase(phase_name);
-			completed = true;
-
-		}
-		else
-		{
-			llwarns << "stop when stopped already for " << phase_name << llendl;
-		}
-		logMetricsTimerRecord(phase_name, elapsed, completed);
-	}
-	else
-	{
-		llwarns << "stop when not started for " << phase_name << llendl;
-	}
-}
-
 // call periodically to keep isFullyLoaded up to date.
 // returns true if the value has changed.
 BOOL LLVOAvatar::updateIsFullyLoaded()
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
index 8babcc3ef3b..c8915383caa 100755
--- a/indra/newview/llvoavatar.h
+++ b/indra/newview/llvoavatar.h
@@ -136,14 +136,14 @@ class LLVOAvatar :
 	void						updateLODRiggedAttachments( void );
 	/*virtual*/ BOOL   	 	 	isActive() const; // Whether this object needs to do an idleUpdate.
 	S32 						totalTextureMemForUUIDS(std::set<LLUUID>& ids);
-	bool 						allTexturesCompletelyDownloaded(std::set<LLUUID>& ids);
-	bool 						allLocalTexturesCompletelyDownloaded();
-	bool 						allBakedTexturesCompletelyDownloaded();
+	bool 						allTexturesCompletelyDownloaded(std::set<LLUUID>& ids) const;
+	bool 						allLocalTexturesCompletelyDownloaded() const;
+	bool 						allBakedTexturesCompletelyDownloaded() const;
 	void 						bakedTextureOriginCounts(S32 &sb_count, S32 &host_count,
 														 S32 &both_count, S32 &neither_count);
 	std::string 				bakedTextureOriginInfo();
-	void 						collectLocalTextureUUIDs(std::set<LLUUID>& ids);
-	void 						collectBakedTextureUUIDs(std::set<LLUUID>& ids);
+	void 						collectLocalTextureUUIDs(std::set<LLUUID>& ids) const;
+	void 						collectBakedTextureUUIDs(std::set<LLUUID>& ids) const;
 	void 						collectTextureUUIDs(std::set<LLUUID>& ids);
 	void						releaseOldTextures();
 	/*virtual*/ void   	 	 	updateTextures();
@@ -287,7 +287,7 @@ class LLVOAvatar :
 	virtual BOOL	getIsCloud() const;
 	BOOL			isFullyTextured() const;
 	BOOL			hasGray() const; 
-	S32				getRezzedStatus() const; // 0 = cloud, 1 = gray, 2 = fully textured.
+	S32				getRezzedStatus() const; // 0 = cloud, 1 = gray, 2 = textured, 3 = textured and fully downloaded.
 	void			updateRezzedStatusTimers();
 
 	S32				mLastRezzedStatus;
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index 21798d57742..fedab5cd060 100755
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -99,7 +99,7 @@ void selfClearPhases()
 	if (isAgentAvatarValid())
 	{
 		gAgentAvatarp->clearPhases();
-		gAgentAvatarp->mLastRezzedStatus = -1;
+		//gAgentAvatarp->mLastRezzedStatus = -1;
 	}
 }
 
@@ -1426,7 +1426,9 @@ BOOL LLVOAvatarSelf::isLocalTextureDataFinal(const LLViewerTexLayerSet* layerset
 				const U32 wearable_count = gAgentWearables.getWearableCount(wearable_type);
 				for (U32 wearable_index = 0; wearable_index < wearable_count; wearable_index++)
 				{
-					if (getLocalDiscardLevel(*local_tex_iter, wearable_index) > (S32)(desired_tex_discard_level))
+					S32 local_discard_level = getLocalDiscardLevel(*local_tex_iter, wearable_index);
+					if ((local_discard_level > (S32)(desired_tex_discard_level)) ||
+						(local_discard_level < 0 ))
 					{
 						return FALSE;
 					}
@@ -1439,6 +1441,7 @@ BOOL LLVOAvatarSelf::isLocalTextureDataFinal(const LLViewerTexLayerSet* layerset
 	return FALSE;
 }
 
+
 BOOL LLVOAvatarSelf::isAllLocalTextureDataFinal() const
 {
 	const U32 desired_tex_discard_level = gSavedSettings.getU32("TextureDiscardLevel"); 
-- 
GitLab


From 02e9afd0e5d727ea0729fb2242b3a89247ae5b1a Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Tue, 12 Feb 2013 14:26:48 -0500
Subject: [PATCH 298/436] SH-2852 WIP - track avatar loading via load_<foo>
 timers, added distinction between partially and fully loaded textures

---
 indra/newview/llvoavatar.cpp     | 2 +-
 indra/newview/llvoavatarself.cpp | 1 -
 2 files changed, 1 insertion(+), 2 deletions(-)

diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 0cd97283e93..e2f455258d3 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -2908,7 +2908,7 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent)
 		bool all_baked_downloaded = allBakedTexturesCompletelyDownloaded();
 		bool all_local_downloaded = allLocalTexturesCompletelyDownloaded();
 		std::string debug_line = llformat("%s%s - mLocal: %d, mEdit: %d, mUSB: %d, CBV: %d",
-										  all_local_downloaded ? "L" : "l",
+										  isSelf() ? (all_local_downloaded ? "L" : "l") : "-",
 										  all_baked_downloaded ? "B" : "b",
 										  mUseLocalAppearance, mIsEditingAppearance,
 										  mUseServerBakes, central_bake_version);
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index fedab5cd060..8b29622fdb9 100755
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -99,7 +99,6 @@ void selfClearPhases()
 	if (isAgentAvatarValid())
 	{
 		gAgentAvatarp->clearPhases();
-		//gAgentAvatarp->mLastRezzedStatus = -1;
 	}
 }
 
-- 
GitLab


From 85af4c7b7169a0ea38aad5d3759fd36b8ff021f4 Mon Sep 17 00:00:00 2001
From: "Graham Madarasz (Graham)" <graham@lindenlab.com>
Date: Tue, 12 Feb 2013 11:38:40 -0800
Subject: [PATCH 299/436] For MAINT-576 fix water shader visual issues in
 non-deferred Review: DaveP

---
 .../shaders/class1/environment/waterV.glsl          | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/indra/newview/app_settings/shaders/class1/environment/waterV.glsl b/indra/newview/app_settings/shaders/class1/environment/waterV.glsl
index fec8906fd07..5aff156eae6 100644
--- a/indra/newview/app_settings/shaders/class1/environment/waterV.glsl
+++ b/indra/newview/app_settings/shaders/class1/environment/waterV.glsl
@@ -28,6 +28,7 @@ uniform mat4 modelview_projection_matrix;
 
 ATTRIBUTE vec3 position;
 
+
 void calcAtmospherics(vec3 inPositionEye);
 
 uniform vec2 d1;
@@ -48,35 +49,35 @@ float wave(vec2 v, float t, float f, vec2 d, float s)
 void main()
 {
 	//transform vertex
+	vec4 pos = vec4(position.xyz, 1.0);
 	mat4 modelViewProj = modelview_projection_matrix;
 	
 	vec4 oPosition;
 		    
 	//get view vector
 	vec3 oEyeVec;
-	oEyeVec.xyz = position.xyz-eyeVec;
+	oEyeVec.xyz = pos.xyz-eyeVec;
 		
 	float d = length(oEyeVec.xy);
 	float ld = min(d, 2560.0);
 	
-	vec3 lpos = position;
-	lpos.xy = eyeVec.xy + oEyeVec.xy/d*ld;
+	pos.xy = eyeVec.xy + oEyeVec.xy/d*ld;
 	view.xyz = oEyeVec;
 		
 	d = clamp(ld/1536.0-0.5, 0.0, 1.0);	
 	d *= d;
 		
-	oPosition = vec4(lpos, 1.0);
+	oPosition = vec4(position, 1.0);
 	oPosition.z = mix(oPosition.z, max(eyeVec.z*0.75, 0.0), d);
 	oPosition = modelViewProj * oPosition;
+	
 	refCoord.xyz = oPosition.xyz + vec3(0,0,0.2);
 	
 	//get wave position parameter (create sweeping horizontal waves)
-	vec3 v = lpos;
+	vec3 v = pos.xyz;
 	v.x += (cos(v.x*0.08/*+time*0.01*/)+sin(v.y*0.02))*6.0;
 	    
 	//push position for further horizon effect.
-	vec4 pos;
 	pos.xyz = oEyeVec.xyz*(waterHeight/oEyeVec.z);
 	pos.w = 1.0;
 	pos = modelview_matrix*pos;
-- 
GitLab


From 550ff94d6a30367c3ea3d2c597b9fea2911039c8 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Tue, 12 Feb 2013 16:49:50 -0500
Subject: [PATCH 300/436] removed some redundant or deprecated timers

---
 indra/newview/llvoavatar.cpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index e2f455258d3..346c55e5898 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -5879,6 +5879,7 @@ void LLVOAvatar::updateRezzedStatusTimers()
 	if (rez_status != mLastRezzedStatus)
 	{
 		LL_DEBUGS("Avatar") << avString() << "rez state change: " << mLastRezzedStatus << " -> " << rez_status << LL_ENDL;
+#if 0
 		bool is_cloud_or_gray = (rez_status==0 || rez_status==1);
 		bool was_cloud_or_gray = (mLastRezzedStatus==0 || mLastRezzedStatus==1);
 		bool is_cloud = (rez_status==0);
@@ -5907,6 +5908,7 @@ void LLVOAvatar::updateRezzedStatusTimers()
 			// stop cloud-or-gray timer, which will capture stats.
 			stopPhase("cloud-or-gray");
 		}
+#endif
 
 		if (mLastRezzedStatus == -1 && rez_status != -1)
 		{
@@ -6020,7 +6022,6 @@ void LLVOAvatar::logMetricsTimerRecord(const std::string& phase_name, F32 elapse
 {
 	LLSD record;
 	record["timer_name"] = phase_name;
-	record["agent_id"] = gAgent.getID();
 	record["avatar_id"] = getID();
 	record["elapsed"] = elapsed;
 	record["completed"] = completed;
-- 
GitLab


From 78016f4a8d9aea748a367da73b3aac0bd1690eec Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Tue, 12 Feb 2013 17:59:00 -0500
Subject: [PATCH 301/436] SH-3852 WIP - removed agent_id from summary packets

---
 indra/newview/llvoavatarself.cpp | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index 8b29622fdb9..e30d62869fb 100755
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -2334,10 +2334,9 @@ void LLVOAvatarSelf::sendViewerAppearanceChangeMetrics()
 		msg["nearby"][rez_status_name] = rez_counts[rez_stat];
 	}
 
-	//	std::vector<std::string> bucket_fields("timer_name","agent_id","is_self","grid_x","grid_y","is_using_server_bake");
+	//	std::vector<std::string> bucket_fields("timer_name","is_self","grid_x","grid_y","is_using_server_bake");
 	std::vector<std::string> by_fields;
 	by_fields.push_back("timer_name");
-	by_fields.push_back("agent_id");
 	by_fields.push_back("completed");
 	by_fields.push_back("grid_x");
 	by_fields.push_back("grid_y");
-- 
GitLab


From fe9fb67aea52b0c8ef900915ad41bb9728f23010 Mon Sep 17 00:00:00 2001
From: Nyx Linden <nyx@lindenlab.com>
Date: Tue, 12 Feb 2013 18:37:01 -0500
Subject: [PATCH 302/436] SH-3859 FIX adding or removing clothing in appearance
 edit mode are visible

Added check to cancel any appearance update requests that occur while in appearance edit mode.
Closing appearance edit mode does trigger an update, so should be safe to cancel intermediate
requests without further changes.
---
 indra/newview/llappearancemgr.cpp | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index caeaf0970b1..ecbb922adc4 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -3085,6 +3085,12 @@ class RequestAgentUpdateAppearanceResponder: public LLHTTPClient::Responder
 
 void LLAppearanceMgr::requestServerAppearanceUpdate(LLCurl::ResponderPtr responder_ptr)
 {
+	if (gAgentAvatarp->isEditingAppearance()) 
+	{
+		// don't send out appearance updates if in appearance editing mode
+		return;
+	}
+
 	if (!gAgent.getRegion())
 	{
 		llwarns << "Region not set, cannot request server appearance update" << llendl;
-- 
GitLab


From 9ef4c33772b3d358fd90125ea82a05ae70c01643 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Wed, 13 Feb 2013 07:47:24 -0500
Subject: [PATCH 303/436] SH-3852 WIP - modified metrics for
 update_appearance_from_cof and wear_inventory_category, end when bakes are
 fully loaded

---
 indra/newview/llagent.cpp         | 1 -
 indra/newview/llappearancemgr.cpp | 1 +
 indra/newview/llviewerstats.cpp   | 2 +-
 indra/newview/llvoavatar.cpp      | 6 ++++++
 4 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index c86b75791da..d10f76ea551 100755
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -4339,7 +4339,6 @@ void LLAgent::sendAgentSetAppearance()
 	{
 		// Change is fully resolved, can close some open phases.
 		gAgentAvatarp->stopPhase("process_initial_wearables_update");
-		gAgentAvatarp->stopPhase("wear_inventory_category");
 	}
 
 	if (!isAgentAvatarValid() || (getRegion() && getRegion()->getCentralBakeVersion())) return;
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index caeaf0970b1..e4686ffeed1 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -2008,6 +2008,7 @@ void LLAppearanceMgr::updateAppearanceFromCOF(bool update_base_outfit_ordering)
 	}
 
 	BoolSetter setIsInUpdateAppearanceFromCOF(mIsInUpdateAppearanceFromCOF);
+	selfStartPhase("update_appearance_from_cof");
 
 	LL_INFOS("Avatar") << self_av_string() << "starting" << LL_ENDL;
 
diff --git a/indra/newview/llviewerstats.cpp b/indra/newview/llviewerstats.cpp
index 65cae9b3383..17bb03b8890 100755
--- a/indra/newview/llviewerstats.cpp
+++ b/indra/newview/llviewerstats.cpp
@@ -763,7 +763,7 @@ void LLViewerStats::PhaseMap::stopPhase(const std::string& phase_name)
 	{
 		if (iter->second.getStarted())
 		{
-			// Going from started to paused state - record stats.
+			// Going from started to stopped state - record stats.
 			iter->second.stop();
 		}
 	}
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 346c55e5898..20d598d35b4 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -5933,6 +5933,12 @@ void LLVOAvatar::updateRezzedStatusTimers()
 			{
 				stopPhase("load_" + LLVOAvatar::rezStatusToString(i));
 			}
+			if (rez_status == 3)
+			{
+				// "fully loaded", mark any pending appearance change complete.
+				selfStopPhase("update_appearance_from_cof");
+				selfStopPhase("wear_inventory_category");
+			}
 		}
 
 		mLastRezzedStatus = rez_status;
-- 
GitLab


From 72dfb2abce5d5635e7f81436d65c8689d161eb37 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Wed, 13 Feb 2013 17:28:05 -0500
Subject: [PATCH 304/436] SH-3812 WIP, SH-3852 WIP - some metrics cleanup,
 added rebake when needed and sb system is unavailable, to avoid stale
 appearance problems

---
 indra/llprimitive/llprimitive.cpp  |  1 +
 indra/newview/llagent.cpp          | 16 +++---
 indra/newview/llagentwearables.cpp |  1 -
 indra/newview/llvoavatar.cpp       | 61 ++++++++--------------
 indra/newview/llvoavatar.h         | 20 +-------
 indra/newview/llvoavatarself.cpp   | 81 ++++++++++++++++++++++++++++--
 indra/newview/llvoavatarself.h     |  5 +-
 7 files changed, 114 insertions(+), 71 deletions(-)
 mode change 100644 => 100755 indra/llprimitive/llprimitive.cpp

diff --git a/indra/llprimitive/llprimitive.cpp b/indra/llprimitive/llprimitive.cpp
old mode 100644
new mode 100755
index 4e36723eec9..faf98883d96
--- a/indra/llprimitive/llprimitive.cpp
+++ b/indra/llprimitive/llprimitive.cpp
@@ -1246,6 +1246,7 @@ S32 LLPrimitive::parseTEMessage(LLMessageSystem* mesgsys, char const* block_name
 
 	if (tec.size == 0)
 	{
+		tec.face_count = 0;
 		return retval;
 	}
 
diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index d10f76ea551..e15c1a5104c 100755
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -812,6 +812,8 @@ void LLAgent::handleServerBakeRegionTransition(const LLUUID& region_id)
 {
 	llinfos << "called" << llendl;
 
+
+	// Old-style appearance entering a server-bake region.
 	if (isAgentAvatarValid() &&
 		!gAgentAvatarp->isUsingServerBakes() &&
 		(mRegionp->getCentralBakeVersion()>0))
@@ -819,6 +821,14 @@ void LLAgent::handleServerBakeRegionTransition(const LLUUID& region_id)
 		llinfos << "update requested due to region transition" << llendl;
 		LLAppearanceMgr::instance().requestServerAppearanceUpdate();
 	}
+	// new-style appearance entering a non-bake region,
+	// need to check for existence of the baking service.
+	else if (isAgentAvatarValid() &&
+			 gAgentAvatarp->isUsingServerBakes() &&
+			 mRegionp->getCentralBakeVersion()==0)
+	{
+		gAgentAvatarp->checkForUnsupportedServerBakeAppearance();
+	}
 }
 
 //-----------------------------------------------------------------------------
@@ -4335,12 +4345,6 @@ void LLAgent::sendAgentSetAppearance()
 		return;
 	}
 
-	if (!gAgentWearables.changeInProgress())
-	{
-		// Change is fully resolved, can close some open phases.
-		gAgentAvatarp->stopPhase("process_initial_wearables_update");
-	}
-
 	if (!isAgentAvatarValid() || (getRegion() && getRegion()->getCentralBakeVersion())) return;
 
 	// At this point we have a complete appearance to send and are in a non-baking region.
diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp
index 0c79ac0ba3b..ba04991a02f 100755
--- a/indra/newview/llagentwearables.cpp
+++ b/indra/newview/llagentwearables.cpp
@@ -796,7 +796,6 @@ void LLAgentWearables::processAgentInitialWearablesUpdate(LLMessageSystem* mesgs
 
 	if (isAgentAvatarValid())
 	{
-		//gAgentAvatarp->clearPhases(); // reset phase timers for outfit loading.
 		gAgentAvatarp->startPhase("process_initial_wearables_update");
 		gAgentAvatarp->outputRezTiming("Received initial wearables update");
 	}
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 20d598d35b4..5b4d57986ba 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -4456,6 +4456,7 @@ void LLVOAvatar::setTexEntry(const U8 index, const LLTextureEntry &te)
 
 const std::string LLVOAvatar::getImageURL(const U8 te, const LLUUID &uuid)
 {
+	llassert(isIndexBakedTexture(ETextureIndex(te)));
 	std::string url = "";
 	if (isUsingServerBakes())
 	{
@@ -5872,43 +5873,15 @@ BOOL LLVOAvatar::getIsCloud() const
 
 void LLVOAvatar::updateRezzedStatusTimers()
 {
-	// State machine for rezzed status. Statuses are -1 on startup, 0 = cloud, 1 = gray, 2 = textured, 3 = textured_and_downloaded.
-	// Purpose is to collect time data for each period of cloud or cloud+gray.
+	// State machine for rezzed status. Statuses are -1 on startup, 0
+	// = cloud, 1 = gray, 2 = textured, 3 = textured_and_downloaded.
+	// Purpose is to collect time data for each it takes avatar to reach
+	// various loading landmarks: gray, textured (partial), textured fully.
 
 	S32 rez_status = getRezzedStatus();
 	if (rez_status != mLastRezzedStatus)
 	{
 		LL_DEBUGS("Avatar") << avString() << "rez state change: " << mLastRezzedStatus << " -> " << rez_status << LL_ENDL;
-#if 0
-		bool is_cloud_or_gray = (rez_status==0 || rez_status==1);
-		bool was_cloud_or_gray = (mLastRezzedStatus==0 || mLastRezzedStatus==1);
-		bool is_cloud = (rez_status==0);
-		bool was_cloud = (mLastRezzedStatus==0);
-
-		// Non-cloud to cloud
-		if (is_cloud && !was_cloud)
-		{
-			// start cloud timer.
-			startPhase("cloud");
-		}
-		else if (was_cloud && !is_cloud)
-		{
-			// stop cloud timer, which will capture stats.
-			stopPhase("cloud");
-		}
-
-		// Non-cloud-or-gray to cloud-or-gray
-		if (is_cloud_or_gray && !was_cloud_or_gray)
-		{
-			// start cloud-or-gray timer.
-			startPhase("cloud-or-gray");
-		}
-		else if (was_cloud_or_gray && !is_cloud_or_gray)
-		{
-			// stop cloud-or-gray timer, which will capture stats.
-			stopPhase("cloud-or-gray");
-		}
-#endif
 
 		if (mLastRezzedStatus == -1 && rez_status != -1)
 		{
@@ -5937,7 +5910,8 @@ void LLVOAvatar::updateRezzedStatusTimers()
 			{
 				// "fully loaded", mark any pending appearance change complete.
 				selfStopPhase("update_appearance_from_cof");
-				selfStopPhase("wear_inventory_category");
+				selfStopPhase("wear_inventory_category", false);
+				selfStopPhase("process_initial_wearables_update", false);
 			}
 		}
 
@@ -5958,7 +5932,7 @@ void LLVOAvatar::startPhase(const std::string& phase_name)
 	{
 		if (!completed)
 		{
-			LL_DEBUGS("Avatar") << "start when started already for " << phase_name << llendl;
+			LL_DEBUGS("Avatar") << "no-op, start when started already for " << phase_name << llendl;
 			return;
 		}
 	}
@@ -5966,7 +5940,7 @@ void LLVOAvatar::startPhase(const std::string& phase_name)
 	getPhases().startPhase(phase_name);
 }
 
-void LLVOAvatar::stopPhase(const std::string& phase_name)
+void LLVOAvatar::stopPhase(const std::string& phase_name, bool err_check)
 {
 	F32 elapsed;
 	bool completed;
@@ -5974,19 +5948,25 @@ void LLVOAvatar::stopPhase(const std::string& phase_name)
 	{
 		if (!completed)
 		{
-			LL_DEBUGS("Avatar") << "stopped phase " << phase_name << llendl;
 			getPhases().stopPhase(phase_name);
 			completed = true;
 			logMetricsTimerRecord(phase_name, elapsed, completed);
+			LL_DEBUGS("Avatar") << "stopped phase " << phase_name << " elapsed " << elapsed << llendl;
 		}
 		else
 		{
-			LL_DEBUGS("Avatar") << "stop when stopped already for " << phase_name << llendl;
+			if (err_check)
+			{
+				LL_DEBUGS("Avatar") << "no-op, stop when stopped already for " << phase_name << llendl;
+			}
 		}
 	}
 	else
 	{
-		LL_DEBUGS("Avatar") << "stop when not started for " << phase_name << llendl;
+		if (err_check)
+		{
+			LL_DEBUGS("Avatar") << "no-op, stop when not started for " << phase_name << llendl;
+		}
 	}
 }
 
@@ -6043,9 +6023,11 @@ void LLVOAvatar::logMetricsTimerRecord(const std::string& phase_name, F32 elapse
 	record["is_self"] = isSelf();
 	
 
+#if 0 // verbose logging
 	std::ostringstream ostr;
 	ostr << LLSDNotationStreamer(record);
 	LL_DEBUGS("Avatar") << "record\n" << ostr.str() << llendl;
+#endif
 
 	if (isAgentAvatarValid())
 	{
@@ -6264,7 +6246,8 @@ void LLVOAvatar::updateMeshTextures()
 #ifndef LL_RELEASE_FOR_DOWNLOAD
 			LLViewerFetchedTexture* existing_baked_img = LLViewerTextureManager::getFetchedTexture(mBakedTextureDatas[i].mLastTextureID);
 #endif
-			const std::string url = getImageURL(i, mBakedTextureDatas[i].mLastTextureID);
+			ETextureIndex te = ETextureIndex(mBakedTextureDatas[i].mTextureIndex);
+			const std::string url = getImageURL(te, mBakedTextureDatas[i].mLastTextureID);
 			if (!url.empty())
 			{
 				baked_img = LLViewerTextureManager::getFetchedTextureFromUrl(url, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE, 0, 0, mBakedTextureDatas[i].mLastTextureID);
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
index c8915383caa..c989673cdfa 100755
--- a/indra/newview/llvoavatar.h
+++ b/indra/newview/llvoavatar.h
@@ -294,7 +294,7 @@ class LLVOAvatar :
 
 	
 	void 			startPhase(const std::string& phase_name);
-	void 			stopPhase(const std::string& phase_name);
+	void 			stopPhase(const std::string& phase_name, bool err_check = true);
 	void			clearPhases();
 	void 			logPendingPhases();
 	static void 	logPendingPhasesAllAvatars();
@@ -316,24 +316,6 @@ class LLVOAvatar :
 	LLFrameTimer	mFullyLoadedTimer;
 	LLFrameTimer	mRuthTimer;
 
-public:
-	class ScopedPhaseSetter
-	{
-	public:
-		ScopedPhaseSetter(LLVOAvatar *avatarp, std::string phase_name):
-			mAvatar(avatarp), mPhaseName(phase_name)
-		{
-			if (mAvatar) { mAvatar->getPhases().startPhase(mPhaseName); }
-		}
-		~ScopedPhaseSetter()
-		{
-			if (mAvatar) { mAvatar->getPhases().stopPhase(mPhaseName); }
-		}
-	private:
-		std::string mPhaseName;
-		LLVOAvatar* mAvatar;
-	};
-
 private:
 	LLViewerStats::PhaseMap mPhases;
 
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index e30d62869fb..2775c9442aa 100755
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -86,11 +86,11 @@ void selfStartPhase(const std::string& phase_name)
 	}
 }
 
-void selfStopPhase(const std::string& phase_name)
+void selfStopPhase(const std::string& phase_name, bool err_check)
 {
 	if (isAgentAvatarValid())
 	{
-		gAgentAvatarp->stopPhase(phase_name);
+		gAgentAvatarp->stopPhase(phase_name, err_check);
 	}
 }
 
@@ -179,6 +179,24 @@ bool output_self_av_texture_diagnostics()
 	return false;
 }
 
+bool update_avatar_rez_metrics()
+{
+	if (!isAgentAvatarValid())
+		return true;
+	
+	gAgentAvatarp->updateAvatarRezMetrics(false);
+	return false;
+}
+
+bool check_for_unsupported_baked_appearance()
+{
+	if (!isAgentAvatarValid())
+		return true;
+
+	gAgentAvatarp->checkForUnsupportedServerBakeAppearance();
+	return false;
+}
+
 void LLVOAvatarSelf::initInstance()
 {
 	BOOL status = TRUE;
@@ -214,7 +232,8 @@ void LLVOAvatarSelf::initInstance()
 	}
 
 	//doPeriodically(output_self_av_texture_diagnostics, 30.0);
-	doPeriodically(boost::bind(&LLVOAvatarSelf::updateAvatarRezMetrics, this, false), 5.0);
+	doPeriodically(update_avatar_rez_metrics, 5.0);
+	doPeriodically(check_for_unsupported_baked_appearance, 120.0);
 }
 
 // virtual
@@ -2371,6 +2390,62 @@ void LLVOAvatarSelf::sendViewerAppearanceChangeMetrics()
 	}
 }
 
+class CheckAgentAppearanceServiceResponder: public LLHTTPClient::Responder
+{
+public:
+	CheckAgentAppearanceServiceResponder()
+	{
+	}
+	
+	virtual ~CheckAgentAppearanceServiceResponder()
+	{
+	}
+
+	/* virtual */ void result(const LLSD& content)
+	{
+		LL_DEBUGS("Avatar") << "status OK" << llendl;
+	}
+
+	// Error
+	/*virtual*/ void error(U32 status, const std::string& reason)
+	{
+		if (isAgentAvatarValid())
+		{
+			LL_DEBUGS("Avatar") << "failed, will rebake" << llendl;
+			forceAppearanceUpdate();
+		}
+	}	
+
+	static void forceAppearanceUpdate()
+	{
+		// Trying to rebake immediately after crossing region boundary
+		// seems to be failure prone; adding a delay factor. Yes, this
+		// fix is ad-hoc and not guaranteed to work in all cases.
+		doAfterInterval(boost::bind(&LLVOAvatarSelf::forceBakeAllTextures,
+									gAgentAvatarp.get(), true), 5.0);
+	}
+};
+
+void LLVOAvatarSelf::checkForUnsupportedServerBakeAppearance()
+{
+	// Need to check only if we have a server baked appearance and are
+	// in a non-baking region.
+	if (!gAgentAvatarp->isUsingServerBakes())
+		return;
+	if (!gAgent.getRegion() || gAgent.getRegion()->getCentralBakeVersion()!=0)
+		return;
+
+	// if baked image service is unknown, need to refresh.
+	if (gSavedSettings.getString("AgentAppearanceServiceURL").empty())
+	{
+		CheckAgentAppearanceServiceResponder::forceAppearanceUpdate();
+	}
+	// query baked image service to check status.
+	std::string image_url = gAgentAvatarp->getImageURL(TEX_HEAD_BAKED,
+													   getTE(TEX_HEAD_BAKED)->getID());
+	LLHTTPClient::head(image_url, new CheckAgentAppearanceServiceResponder);
+}
+
 const LLUUID& LLVOAvatarSelf::grabBakedTexture(EBakedTextureIndex baked_index) const
 {
 	if (canGrabBakedTexture(baked_index))
diff --git a/indra/newview/llvoavatarself.h b/indra/newview/llvoavatarself.h
index 04b0fb760cc..78728cff20e 100755
--- a/indra/newview/llvoavatarself.h
+++ b/indra/newview/llvoavatarself.h
@@ -402,6 +402,7 @@ class LLVOAvatarSelf :
 	const std::string		debugDumpLocalTextureDataInfo(const LLViewerTexLayerSet* layerset) const; // Lists out state of this particular baked texture layer
 	const std::string		debugDumpAllLocalTextureDataInfo() const; // Lists out which baked textures are at highest LOD
 	void					sendViewerAppearanceChangeMetrics(); // send data associated with completing a change.
+	void 					checkForUnsupportedServerBakeAppearance();
 private:
 	LLFrameTimer    		mDebugSelfLoadTimer;
 	F32						mDebugTimeWearablesLoaded;
@@ -421,9 +422,7 @@ extern LLPointer<LLVOAvatarSelf> gAgentAvatarp;
 BOOL isAgentAvatarValid();
 
 void selfStartPhase(const std::string& phase_name);
-void selfStopPhase(const std::string& phase_name);
+void selfStopPhase(const std::string& phase_name, bool err_check = true);
 void selfClearPhases();
 
-void update_avatar_rez_metrics(bool force_send);
-
 #endif // LL_VO_AVATARSELF_H
-- 
GitLab


From c99e206374f6afdcc038a97934314dec1a742b2e Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Wed, 13 Feb 2013 18:37:15 -0500
Subject: [PATCH 305/436] SH-3852 WIP - send non-complete timers only on av
 destruction or last message, so they don't get multiply counted

---
 indra/newview/llvoavatar.cpp     | 16 +++++++++-------
 indra/newview/llvoavatarself.cpp |  6 +++++-
 2 files changed, 14 insertions(+), 8 deletions(-)

diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 5b4d57986ba..735589414d6 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -729,6 +729,8 @@ LLVOAvatar::~LLVOAvatar()
 		debugAvatarRezTime("AvatarRezLeftNotification","left sometime after declouding");
 	}
 
+	logPendingPhases();
+	
 	lldebugs << "LLVOAvatar Destructor (0x" << this << ") id:" << mID << llendl;
 
 	std::for_each(mAttachmentPoints.begin(), mAttachmentPoints.end(), DeletePairedPointer());
@@ -1796,13 +1798,13 @@ LLViewerFetchedTexture *LLVOAvatar::getBakedTextureImage(const U8 te, const LLUU
 		const std::string url = getImageURL(te,uuid);
 		if (!url.empty())
 		{
-			llinfos << "texture URL " << url << llendl;
+			LL_DEBUGS("Avatar") << avString() << "from URL " << url << llendl;
 			result = LLViewerTextureManager::getFetchedTextureFromUrl(
 				url, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE, 0, 0, uuid);
 		}
 		else
 		{
-			llinfos << "get texture from host " << uuid << llendl;
+			LL_DEBUGS("Avatar") << avString() << "from host " << uuid << llendl;
 			LLHost host = getObjectHost();
 			result = LLViewerTextureManager::getFetchedTexture(
 				uuid, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE, 0, 0, host);
@@ -4190,15 +4192,15 @@ void LLVOAvatar::releaseOldTextures()
 
 	std::set<LLUUID> local_texture_ids;
 	collectLocalTextureUUIDs(local_texture_ids);
-	S32 new_local_mem = totalTextureMemForUUIDS(local_texture_ids);
+	//S32 new_local_mem = totalTextureMemForUUIDS(local_texture_ids);
 
 	std::set<LLUUID> new_texture_ids;
 	new_texture_ids.insert(baked_texture_ids.begin(),baked_texture_ids.end());
 	new_texture_ids.insert(local_texture_ids.begin(),local_texture_ids.end());
 	S32 new_total_mem = totalTextureMemForUUIDS(new_texture_ids);
 
-	S32 old_total_mem = totalTextureMemForUUIDS(mTextureIDs);
-	LL_DEBUGS("Avatar") << getFullname() << " old_total_mem: " << old_total_mem << " new_total_mem (L/B): " << new_total_mem << " (" << new_local_mem <<", " << new_baked_mem << ")" << llendl;  
+	//S32 old_total_mem = totalTextureMemForUUIDS(mTextureIDs);
+	//LL_DEBUGS("Avatar") << getFullname() << " old_total_mem: " << old_total_mem << " new_total_mem (L/B): " << new_total_mem << " (" << new_local_mem <<", " << new_baked_mem << ")" << llendl;  
 	if (!isSelf() && new_total_mem > new_baked_mem)
 	{
 			llwarns << "extra local textures stored for non-self av" << llendl;
@@ -5932,7 +5934,7 @@ void LLVOAvatar::startPhase(const std::string& phase_name)
 	{
 		if (!completed)
 		{
-			LL_DEBUGS("Avatar") << "no-op, start when started already for " << phase_name << llendl;
+			LL_DEBUGS("Avatar") << avString() << "no-op, start when started already for " << phase_name << llendl;
 			return;
 		}
 	}
@@ -5951,7 +5953,7 @@ void LLVOAvatar::stopPhase(const std::string& phase_name, bool err_check)
 			getPhases().stopPhase(phase_name);
 			completed = true;
 			logMetricsTimerRecord(phase_name, elapsed, completed);
-			LL_DEBUGS("Avatar") << "stopped phase " << phase_name << " elapsed " << elapsed << llendl;
+			LL_DEBUGS("Avatar") << avString() << "stopped phase " << phase_name << " elapsed " << elapsed << llendl;
 		}
 		else
 		{
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index 2775c9442aa..1a1564e1a86 100755
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -2269,7 +2269,11 @@ bool LLVOAvatarSelf::updateAvatarRezMetrics(bool force_send)
 		// Stats for completed phases have been getting logged as they
 		// complete.  This will give us stats for any timers that
 		// haven't finished as of the metric's being sent.
-		LLVOAvatar::logPendingPhasesAllAvatars();
+		
+		if (force_send)
+		{
+			LLVOAvatar::logPendingPhasesAllAvatars();
+		}
 		sendViewerAppearanceChangeMetrics();
 	}
 
-- 
GitLab


From 705a23ac0d80da44e61b0b78515dca0768909b32 Mon Sep 17 00:00:00 2001
From: Nyx Linden <nyx@lindenlab.com>
Date: Thu, 14 Feb 2013 13:41:36 -0500
Subject: [PATCH 306/436] SH-3803 FIX Missing Wearable reported in sunshine
 viewer

Newly refactored wearable parsing did not account for extra whitespace cleanly.
Updated the code to handle extra blank lines in the wearable assets.
---
 indra/llappearance/llwearable.cpp | 50 ++++++++++++++++++-------------
 indra/llappearance/llwearable.h   |  1 +
 2 files changed, 30 insertions(+), 21 deletions(-)

diff --git a/indra/llappearance/llwearable.cpp b/indra/llappearance/llwearable.cpp
index b33adb254d5..9fb8b7749fc 100755
--- a/indra/llappearance/llwearable.cpp
+++ b/indra/llappearance/llwearable.cpp
@@ -191,7 +191,7 @@ LLWearable::EImportResult LLWearable::importStream( std::istream& input_stream,
 	// We are using a local max buffer size here to avoid issues
 	// if MAX_STRING size changes.
 	const U32 PARSE_BUFFER_SIZE = 2048;
-	char buffer[2048];		/* Flawfinder: ignore */
+	char buffer[PARSE_BUFFER_SIZE];		/* Flawfinder: ignore */
 	char uuid_buffer[37];	/* Flawfinder: ignore */
 
 	// This data is being generated on the viewer.
@@ -205,12 +205,11 @@ LLWearable::EImportResult LLWearable::importStream( std::istream& input_stream,
 	}
 
 	// read header and version 
-	if (!input_stream.good())
+	if (!getNextPopulatedLine(input_stream, buffer, PARSE_BUFFER_SIZE))
 	{
 		llwarns << "Failed to read wearable asset input stream." << llendl;
 		return LLWearable::FAILURE;
 	}
-	input_stream.getline(buffer, PARSE_BUFFER_SIZE);
 	if ( 1 != sscanf( /* Flawfinder: ignore */
 				buffer,
 				"LLWearable version %d\n",
@@ -230,8 +229,8 @@ LLWearable::EImportResult LLWearable::importStream( std::istream& input_stream,
 		return LLWearable::FAILURE;
 	}
 
-	// name
-	if (!input_stream.good())
+	// name may be empty
+    if (!input_stream.good())
 	{
 		llwarns << "Bad Wearable asset: early end of input stream " 
 				<< "while reading name" << llendl;
@@ -240,7 +239,7 @@ LLWearable::EImportResult LLWearable::importStream( std::istream& input_stream,
 	input_stream.getline(buffer, PARSE_BUFFER_SIZE);
 	mName = buffer;
 
-	// description
+	// description may be empty
 	if (!input_stream.good())
 	{
 		llwarns << "Bad Wearable asset: early end of input stream " 
@@ -250,14 +249,13 @@ LLWearable::EImportResult LLWearable::importStream( std::istream& input_stream,
 	input_stream.getline(buffer, PARSE_BUFFER_SIZE);
 	mDescription = buffer;
 
-	// permissions
-	if (!input_stream.good())
+	// permissions may have extra empty lines before the correct line
+	if (!getNextPopulatedLine(input_stream, buffer, PARSE_BUFFER_SIZE))
 	{
 		llwarns << "Bad Wearable asset: early end of input stream " 
 				<< "while reading permissions" << llendl;
 		return LLWearable::FAILURE;
 	}
-	input_stream.getline(buffer, PARSE_BUFFER_SIZE);
 	S32 perm_version = -1;
 	if ( 1 != sscanf( buffer, " permissions %d\n", &perm_version ) ||
 		 perm_version != 0 )
@@ -271,13 +269,12 @@ LLWearable::EImportResult LLWearable::importStream( std::istream& input_stream,
 	}
 
 	// sale info
-	if (!input_stream.good())
+	if (!getNextPopulatedLine(input_stream, buffer, PARSE_BUFFER_SIZE))
 	{
 		llwarns << "Bad Wearable asset: early end of input stream " 
 				<< "while reading sale info" << llendl;
 		return LLWearable::FAILURE;
 	}
-	input_stream.getline(buffer, PARSE_BUFFER_SIZE);
 	S32 sale_info_version = -1;
 	if ( 1 != sscanf( buffer, " sale_info %d\n", &sale_info_version ) ||
 		sale_info_version != 0 )
@@ -306,13 +303,12 @@ LLWearable::EImportResult LLWearable::importStream( std::istream& input_stream,
 	}
 
 	// wearable type
-	if (!input_stream.good())
+	if (!getNextPopulatedLine(input_stream, buffer, PARSE_BUFFER_SIZE))
 	{
 		llwarns << "Bad Wearable asset: early end of input stream " 
 				<< "while reading type" << llendl;
 		return LLWearable::FAILURE;
 	}
-	input_stream.getline(buffer, PARSE_BUFFER_SIZE);
 	S32 type = -1;
 	if ( 1 != sscanf( buffer, "type %d\n", &type ) )
 	{
@@ -331,13 +327,12 @@ LLWearable::EImportResult LLWearable::importStream( std::istream& input_stream,
 	}
 
 	// parameters header
-	if (!input_stream.good())
+	if (!getNextPopulatedLine(input_stream, buffer, PARSE_BUFFER_SIZE))
 	{
 		llwarns << "Bad Wearable asset: early end of input stream " 
 				<< "while reading parameters header" << llendl;
 		return LLWearable::FAILURE;
 	}
-	input_stream.getline(buffer, PARSE_BUFFER_SIZE);
 	S32 num_parameters = -1;
 	if ( 1 != sscanf( buffer, "parameters %d\n", &num_parameters ) )
 	{
@@ -363,13 +358,12 @@ LLWearable::EImportResult LLWearable::importStream( std::istream& input_stream,
 	S32 i;
 	for( i = 0; i < num_parameters; i++ )
 	{
-		if (!input_stream.good())
+		if (!getNextPopulatedLine(input_stream, buffer, PARSE_BUFFER_SIZE))
 		{
 			llwarns << "Bad Wearable asset: early end of input stream " 
 					<< "while reading parameter #" << i << llendl;
 			return LLWearable::FAILURE;
 		}
-		input_stream.getline(buffer, PARSE_BUFFER_SIZE);
 		S32 param_id = 0;
 		F32 param_weight = 0.f;
 		if ( 2 != sscanf( buffer, "%d %f\n", &param_id, &param_weight ) )
@@ -381,13 +375,12 @@ LLWearable::EImportResult LLWearable::importStream( std::istream& input_stream,
 	}
 
 	// textures header
-	if (!input_stream.good())
+	if (!getNextPopulatedLine(input_stream, buffer, PARSE_BUFFER_SIZE))
 	{
 		llwarns << "Bad Wearable asset: early end of input stream " 
 				<< "while reading textures header" << i << llendl;
 		return LLWearable::FAILURE;
 	}
-	input_stream.getline(buffer, PARSE_BUFFER_SIZE);
 	S32 num_textures = -1;
 	if ( 1 != sscanf( buffer, "textures %d\n", &num_textures) )
 	{
@@ -404,13 +397,12 @@ LLWearable::EImportResult LLWearable::importStream( std::istream& input_stream,
 	// textures
 	for( i = 0; i < num_textures; i++ )
 	{
-		if (!input_stream.good())
+		if (!getNextPopulatedLine(input_stream, buffer, PARSE_BUFFER_SIZE))
 		{
 			llwarns << "Bad Wearable asset: early end of input stream " 
 					<< "while reading textures #" << i << llendl;
 			return LLWearable::FAILURE;
 		}
-		input_stream.getline(buffer, PARSE_BUFFER_SIZE);
 		S32 te = 0;
 		if ( 2 != sscanf(   /* Flawfinder: ignore */
 				buffer,
@@ -450,6 +442,22 @@ LLWearable::EImportResult LLWearable::importStream( std::istream& input_stream,
 	return LLWearable::SUCCESS;
 }
 
+BOOL LLWearable::getNextPopulatedLine(std::istream& input_stream, char* buffer, U32 buffer_size)
+{
+	if (!input_stream.good())
+	{
+		return FALSE;
+	}
+
+	do 
+	{
+		input_stream.getline(buffer, buffer_size);
+	}
+	while (input_stream.good() && buffer[0]=='\0');
+
+	return input_stream.good(); 
+}
+
 
 void LLWearable::setType(LLWearableType::EType type, LLAvatarAppearance *avatarp) 
 { 
diff --git a/indra/llappearance/llwearable.h b/indra/llappearance/llwearable.h
index 4a598117957..6f5a1e14e8a 100644
--- a/indra/llappearance/llwearable.h
+++ b/indra/llappearance/llwearable.h
@@ -119,6 +119,7 @@ class LLWearable
 	void				destroyTextures();
 	void			 	createVisualParams(LLAvatarAppearance *avatarp);
 	void 				createLayers(S32 te, LLAvatarAppearance *avatarp);
+	BOOL				getNextPopulatedLine(std::istream& input_stream, char* buffer, U32 buffer_size);
 
 	static S32			sCurrentDefinitionVersion;	// Depends on the current state of the avatar_lad.xml.
 	S32					mDefinitionVersion;			// Depends on the state of the avatar_lad.xml when this asset was created.
-- 
GitLab


From 97fd1cc7d75a065ea7f852820e32fcad91201281 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Thu, 14 Feb 2013 13:46:24 -0500
Subject: [PATCH 307/436] removed some no-op code, enhanced display of
 DebugAvatarAppearanceMessage status line

---
 indra/newview/llvoavatar.cpp | 43 +++++++++++++-----------------------
 1 file changed, 15 insertions(+), 28 deletions(-)

diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 735589414d6..ce39bee42fd 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -4108,10 +4108,16 @@ std::string LLVOAvatar::bakedTextureOriginInfo()
 		{
 			has_host = true;
 		}
-		if (has_url && !has_host) result += "u"; // server-bake texture with url 
-		else if (has_host && !has_url) result += "h"; // old-style texture on sim
-		else if (has_host && has_url) result += "?"; // both origins?
-		else if (!has_host && !has_url) result += "n"; // no origin?
+		S32 discard = imagep->getDiscardLevel();
+		if (has_url && !has_host) result += discard ? "u" : "U"; // server-bake texture with url 
+		else if (has_host && !has_url) result += discard ? "h" : "H"; // old-style texture on sim
+		else if (has_host && has_url) result += discard ? "ERRx" : "ERRX"; // both origins?
+		else if (!has_host && !has_url) result += discard ? "ERRn" : "ERRN"; // no origin?
+		if (discard != 0)
+		{
+			result += llformat("(%d/%d)",discard,imagep->getDesiredDiscardLevel());
+		}
+
 	}
 	return result;
 }
@@ -6130,6 +6136,8 @@ LLMotion* LLVOAvatar::findMotion(const LLUUID& id) const
 	return mMotionController.findMotion(id);
 }
 
+// This is a semi-deprecated debugging tool - meshes will not show as
+// colorized if using deferred rendering.
 void LLVOAvatar::debugColorizeSubMeshes(U32 i, const LLColor4& color)
 {
 	if (gSavedSettings.getBOOL("DebugAvatarCompositeBaked"))
@@ -6244,29 +6252,7 @@ void LLVOAvatar::updateMeshTextures()
 		LLViewerTexLayerSet* layerset = getTexLayerSet(i);
 		if (use_lkg_baked_layer[i] && !isUsingLocalAppearance() )
 		{
-			LLViewerFetchedTexture* baked_img;
-#ifndef LL_RELEASE_FOR_DOWNLOAD
-			LLViewerFetchedTexture* existing_baked_img = LLViewerTextureManager::getFetchedTexture(mBakedTextureDatas[i].mLastTextureID);
-#endif
-			ETextureIndex te = ETextureIndex(mBakedTextureDatas[i].mTextureIndex);
-			const std::string url = getImageURL(te, mBakedTextureDatas[i].mLastTextureID);
-			if (!url.empty())
-			{
-				baked_img = LLViewerTextureManager::getFetchedTextureFromUrl(url, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE, 0, 0, mBakedTextureDatas[i].mLastTextureID);
-			}
-			else
-			{
-				// Baked textures should be requested from the sim this avatar is on. JC
-				const LLHost target_host = getObjectHost();
-				if (!target_host.isOk())
-				{
-					llwarns << "updateMeshTextures: invalid host for object: " << getID() << llendl;
-				}
-
-				baked_img = LLViewerTextureManager::getFetchedTextureFromHost( mBakedTextureDatas[i].mLastTextureID, target_host );
-			}
-			llassert(baked_img == existing_baked_img);
-
+			LLViewerFetchedTexture* baked_img = LLViewerTextureManager::getFetchedTexture(mBakedTextureDatas[i].mLastTextureID);
 			mBakedTextureDatas[i].mIsUsed = TRUE;
 
 			debugColorizeSubMeshes(i,LLColor4::red);
@@ -7131,6 +7117,7 @@ void LLVOAvatar::getAnimNames( LLDynamicArray<std::string>* names )
 	names->put( "enter_away_from_keyboard_state" );
 }
 
+// static
 void LLVOAvatar::onBakedTextureMasksLoaded( BOOL success, LLViewerFetchedTexture *src_vi, LLImageRaw* src, LLImageRaw* aux_src, S32 discard_level, BOOL final, void* userdata )
 {
 	if (!userdata) return;
@@ -7149,7 +7136,7 @@ void LLVOAvatar::onBakedTextureMasksLoaded( BOOL success, LLViewerFetchedTexture
 		{
 			if (!aux_src->getData())
 			{
-				llerrs << "No auxiliary source data for onBakedTextureMasksLoaded" << llendl;
+				llerrs << "No auxiliary source (morph mask) data for image id " << id << llendl;
 				return;
 			}
 
-- 
GitLab


From 852211e2c154763d9d86cc30b07c9f319e25df95 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Thu, 14 Feb 2013 17:52:50 -0500
Subject: [PATCH 308/436] tweaked and added some log messages, including more
 detail when an image is flagged as missing

---
 indra/newview/llviewertexture.cpp     | 4 ++++
 indra/newview/llviewertexturelist.cpp | 1 +
 indra/newview/llvoavatar.cpp          | 4 ++--
 3 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp
index 3304ff7ebec..e9501931eb8 100755
--- a/indra/newview/llviewertexture.cpp
+++ b/indra/newview/llviewertexture.cpp
@@ -1050,6 +1050,7 @@ void LLViewerFetchedTexture::loadFromFastCache()
 		{ 
 			//discard all oversized textures.
 			destroyRawImage();
+			llwarns << "oversized, setting as missing" << llendl;
 			setIsMissingAsset();
 			mRawDiscardLevel = INVALID_DISCARD_LEVEL ;
 		}
@@ -1316,6 +1317,7 @@ BOOL LLViewerFetchedTexture::createTexture(S32 usename/*= 0*/)
 		// An inappropriately-sized image was uploaded (through a non standard client)
 		// We treat these images as missing assets which causes them to
 		// be renderd as 'missing image' and to stop requesting data
+		llwarns << "!size_ok, setting as missing" << llendl;
 		setIsMissingAsset();
 		destroyRawImage();
 		return FALSE;
@@ -1774,6 +1776,7 @@ bool LLViewerFetchedTexture::updateFetch()
 				{ 
 					//discard all oversized textures.
 					destroyRawImage();
+					llwarns << "oversize, setting as missing" << llendl;
 					setIsMissingAsset();
 					mRawDiscardLevel = INVALID_DISCARD_LEVEL ;
 					mIsFetching = FALSE ;
@@ -1803,6 +1806,7 @@ bool LLViewerFetchedTexture::updateFetch()
 				// We finished but received no data
 				if (current_discard < 0)
 				{
+					llwarns << "!mIsFetching, setting as missing" << llendl;
 					setIsMissingAsset();
 					desired_discard = -1;
 				}
diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp
index 6e7f6c9b32c..beadef34ba9 100755
--- a/indra/newview/llviewertexturelist.cpp
+++ b/indra/newview/llviewertexturelist.cpp
@@ -1491,6 +1491,7 @@ void LLViewerTextureList::processImageNotInDatabase(LLMessageSystem *msg,void **
 	LLViewerFetchedTexture* image = gTextureList.findImage( image_id );
 	if( image )
 	{
+		llwarns << "not in db" << llendl;
 		image->setIsMissingAsset();
 	}
 }
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index ce39bee42fd..c654d9ea647 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -7188,7 +7188,7 @@ void LLVOAvatar::onBakedTextureMasksLoaded( BOOL success, LLViewerFetchedTexture
 			}
 			if (!found_texture_id)
 			{
-				llinfos << "onBakedTextureMasksLoaded(): unexpected image id: " << id << llendl;
+				llinfos << "unexpected image id: " << id << llendl;
 			}
 			self->dirtyMesh();
 		}
@@ -7196,7 +7196,7 @@ void LLVOAvatar::onBakedTextureMasksLoaded( BOOL success, LLViewerFetchedTexture
 		{
             // this can happen when someone uses an old baked texture possibly provided by 
             // viewer-side baked texture caching
-			llwarns << "Masks loaded callback but NO aux source!" << llendl;
+			llwarns << "Masks loaded callback but NO aux source, id " << id << llendl;
 		}
 	}
 
-- 
GitLab


From 741821eb6a8717896307da44b1b8e7078a865fff Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Fri, 15 Feb 2013 09:52:11 -0500
Subject: [PATCH 309/436] SH-3867 FIX - on logout, wait for any pending metrics
 uploads to complete

---
 indra/newview/llappviewer.cpp    | 9 +++++++++
 indra/newview/llappviewer.h      | 2 ++
 indra/newview/llvoavatarself.cpp | 7 ++-----
 3 files changed, 13 insertions(+), 5 deletions(-)
 mode change 100644 => 100755 indra/newview/llappviewer.h

diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index 9a5010c7817..70c5527b233 100755
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -291,6 +291,8 @@ LLTimer gLogoutTimer;
 static const F32 LOGOUT_REQUEST_TIME = 6.f;  // this will be cut short by the LogoutReply msg.
 F32 gLogoutMaxTime = LOGOUT_REQUEST_TIME;
 
+S32 gPendingMetricsUploads = 0;
+
 BOOL				gDisconnected = FALSE;
 
 // used to restore texture state after a mode switch
@@ -4725,6 +4727,13 @@ void LLAppViewer::idleShutdown()
 		return;
 	}
 
+	if (gPendingMetricsUploads > 0
+		&& gLogoutTimer.getElapsedTimeF32() < SHUTDOWN_UPLOAD_SAVE_TIME
+		&& !logoutRequestSent())
+	{
+		return;
+	}
+
 	// All floaters are closed.  Tell server we want to quit.
 	if( !logoutRequestSent() )
 	{
diff --git a/indra/newview/llappviewer.h b/indra/newview/llappviewer.h
old mode 100644
new mode 100755
index be72421c583..b69a1944a62
--- a/indra/newview/llappviewer.h
+++ b/indra/newview/llappviewer.h
@@ -341,6 +341,8 @@ extern LLFrameTimer gLoggedInTime;
 extern F32 gLogoutMaxTime;
 extern LLTimer gLogoutTimer;
 
+extern S32 gPendingMetricsUploads;
+
 extern F32 gSimLastTime; 
 extern F32 gSimFrames;
 
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index 1a1564e1a86..7e24c430170 100755
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -2223,6 +2223,7 @@ class ViewerAppearanceChangeMetricsResponder: public LLCurl::Responder
 						   const std::string& reason,
 						   const LLSD& content)
 	{
+		gPendingMetricsUploads--; // if we add retry, this should be moved to the isGoodStatus case.
 		if (isGoodStatus(status))
 		{
 			LL_DEBUGS("Avatar") << "OK" << LL_ENDL;
@@ -2235,11 +2236,6 @@ class ViewerAppearanceChangeMetricsResponder: public LLCurl::Responder
 		}
 	}
 
-	// virtual
-	void error(U32 status_num, const std::string & reason)
-	{
-	}
-
 	// virtual
 	void result(const LLSD & content)
 	{
@@ -2384,6 +2380,7 @@ void LLVOAvatarSelf::sendViewerAppearanceChangeMetrics()
 	}
 	if (!caps_url.empty())
 	{
+		gPendingMetricsUploads++;
 		LLCurlRequest::headers_t headers;
 		LLHTTPClient::post(caps_url,
 						   msg,
-- 
GitLab


From 354ccc1640dd223ccea20908183cc05a00ecaf6f Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Fri, 15 Feb 2013 13:44:21 -0500
Subject: [PATCH 310/436] additional safety check for bad appearance messages

---
 indra/llprimitive/llprimitive.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/llprimitive/llprimitive.cpp b/indra/llprimitive/llprimitive.cpp
index faf98883d96..cf6a3f97d2d 100755
--- a/indra/llprimitive/llprimitive.cpp
+++ b/indra/llprimitive/llprimitive.cpp
@@ -1259,7 +1259,7 @@ S32 LLPrimitive::parseTEMessage(LLMessageSystem* mesgsys, char const* block_name
 		mesgsys->getBinaryDataFast(block_name, _PREHASH_TextureEntry, tec.packed_buffer, 0, block_num, LLTEContents::MAX_TE_BUFFER);
 	}
 
-	tec.face_count = getNumTEs();
+	tec.face_count = llmin((U32)getNumTEs(),LLTEContents::MAX_TES);
 
 	U8 *cur_ptr = tec.packed_buffer;
 	cur_ptr += unpackTEField(cur_ptr, tec.packed_buffer+tec.size, (U8 *)tec.image_data, 16, tec.face_count, MVT_LLUUID);
-- 
GitLab


From e34d93e29eee07843476aed7db46b178a3462e95 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Fri, 15 Feb 2013 21:30:56 +0000
Subject: [PATCH 311/436] Fix to allow horde bots to render other avatars in
 the area

---
 indra/newview/llvoavatar.cpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index c654d9ea647..3681040acc1 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -1870,7 +1870,8 @@ void LLVOAvatar::idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time)
 		return;
 	}	
 
- 	if (!(gPipeline.hasRenderType(LLPipeline::RENDER_TYPE_AVATAR)))
+	if (!(gPipeline.hasRenderType(LLPipeline::RENDER_TYPE_AVATAR))
+		&& !(gSavedSettings.getBOOL("DisableAllRenderTypes")))
 	{
 		return;
 	}
-- 
GitLab


From ce9a15bf989224ccda03d2d8461a3c619ae4339d Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Tue, 19 Feb 2013 10:09:38 -0500
Subject: [PATCH 312/436] SH-3792 WIP - changed local texture loading to be
 consistent with viewer_development - this fixes the gray head issue. There is
 still some remaining issue with bakes not uploading at full resolution,
 probably due to a bad image asset.

---
 indra/newview/app_settings/settings.xml |  2 +-
 indra/newview/llvoavatar.cpp            | 44 ++++++++++++++++---------
 indra/newview/llvoavatarself.cpp        | 41 +++++++++++------------
 3 files changed, 49 insertions(+), 38 deletions(-)
 mode change 100644 => 100755 indra/newview/app_settings/settings.xml

diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
old mode 100644
new mode 100755
index eaad45ee9e1..5db8d4e6a17
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -7258,7 +7258,7 @@
       <key>Type</key>
       <string>Boolean</string>
       <key>Value</key>
-      <integer>0</integer>
+      <integer>1</integer>
     </map>
     <key>QuietSnapshotsToDisk</key>
     <map>
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index c654d9ea647..58c0a412edf 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -4096,26 +4096,38 @@ std::string LLVOAvatar::bakedTextureOriginInfo()
 	
 	std::set<LLUUID> baked_ids;
 	collectBakedTextureUUIDs(baked_ids);
-	for (std::set<LLUUID>::const_iterator it = baked_ids.begin(); it != baked_ids.end(); ++it)
+	for (U32 i = 0; i < mBakedTextureDatas.size(); i++)
 	{
-		LLViewerFetchedTexture *imagep = gTextureList.findImage(*it);
-		bool has_url = false, has_host = false;
-		if (!imagep->getUrl().empty())
-		{
-			has_url = true;
-		}
-		if (imagep->getTargetHost().isOk())
+		ETextureIndex texture_index = mBakedTextureDatas[i].mTextureIndex;
+		LLViewerFetchedTexture *imagep =
+			LLViewerTextureManager::staticCastToFetchedTexture(getImage(texture_index,0), TRUE);
+		if (!imagep ||
+			imagep->getID() == IMG_DEFAULT ||
+			imagep->getID() == IMG_DEFAULT_AVATAR)
+			
 		{
-			has_host = true;
+			result += "-";
 		}
-		S32 discard = imagep->getDiscardLevel();
-		if (has_url && !has_host) result += discard ? "u" : "U"; // server-bake texture with url 
-		else if (has_host && !has_url) result += discard ? "h" : "H"; // old-style texture on sim
-		else if (has_host && has_url) result += discard ? "ERRx" : "ERRX"; // both origins?
-		else if (!has_host && !has_url) result += discard ? "ERRn" : "ERRN"; // no origin?
-		if (discard != 0)
+		else
 		{
-			result += llformat("(%d/%d)",discard,imagep->getDesiredDiscardLevel());
+			bool has_url = false, has_host = false;
+			if (!imagep->getUrl().empty())
+			{
+				has_url = true;
+			}
+			if (imagep->getTargetHost().isOk())
+			{
+				has_host = true;
+			}
+			S32 discard = imagep->getDiscardLevel();
+			if (has_url && !has_host) result += discard ? "u" : "U"; // server-bake texture with url 
+			else if (has_host && !has_url) result += discard ? "h" : "H"; // old-style texture on sim
+			else if (has_host && has_url) result += discard ? "x" : "X"; // both origins?
+			else if (!has_host && !has_url) result += discard ? "n" : "N"; // no origin?
+			if (discard != 0)
+			{
+				result += llformat("(%d/%d)",discard,imagep->getDesiredDiscardLevel());
+			}
 		}
 
 	}
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index 7e24c430170..0e8e48099e1 100755
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -2540,34 +2540,33 @@ void LLVOAvatarSelf::addLocalTextureStats( ETextureIndex type, LLViewerFetchedTe
 {
 	if (!isIndexLocalTexture(type)) return;
 
-	if (getLocalTextureID(type, index) != IMG_DEFAULT_AVATAR)
+	if (!covered_by_baked)
 	{
-		imagep->setNoDelete();
-		if (imagep->getDiscardLevel() != 0)
+		if (getLocalTextureID(type, index) != IMG_DEFAULT_AVATAR)
 		{
-			F32 desired_pixels;
-			desired_pixels = llmin(mPixelArea, (F32)getTexImageArea());
-
-			// DRANO what priority should wearable-based textures have?
-			if (isUsingLocalAppearance())
+			imagep->setNoDelete();
+			if (imagep->getDiscardLevel() != 0)
 			{
+				F32 desired_pixels;
+				desired_pixels = llmin(mPixelArea, (F32)getTexImageArea());
+				
 				imagep->setBoostLevel(getAvatarBoostLevel());
 				imagep->setAdditionalDecodePriority(SELF_ADDITIONAL_PRI) ;
-			}
-			imagep->resetTextureStats();
-			imagep->setMaxVirtualSizeResetInterval(MAX_TEXTURE_VIRTURE_SIZE_RESET_INTERVAL);
-			imagep->addTextureStats( desired_pixels / texel_area_ratio );
-			imagep->forceUpdateBindStats() ;
-			if (imagep->getDiscardLevel() < 0)
-			{
-				mHasGrey = TRUE; // for statistics gathering
+				imagep->resetTextureStats();
+				imagep->setMaxVirtualSizeResetInterval(MAX_TEXTURE_VIRTURE_SIZE_RESET_INTERVAL);
+				imagep->addTextureStats( desired_pixels / texel_area_ratio );
+				imagep->forceUpdateBindStats() ;
+				if (imagep->getDiscardLevel() < 0)
+				{
+					mHasGrey = TRUE; // for statistics gathering
+				}
 			}
 		}
-	}
-	else
-	{
-		// texture asset is missing
-		mHasGrey = TRUE; // for statistics gathering
+		else
+		{
+			// texture asset is missing
+			mHasGrey = TRUE; // for statistics gathering
+		}
 	}
 }
 
-- 
GitLab


From 429d8250ddfae3806b49fe9eb299220dd994ed80 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Tue, 19 Feb 2013 23:05:31 +0000
Subject: [PATCH 313/436] Updating appearance utility

---
 autobuild.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index 67092cb04be..22de4a7047f 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -1290,9 +1290,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>e0dbab27a77d6a864658da4526d7a9c8</string>
+              <string>088a1c30e499289e94bc1738fd3d6a25</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/270227/arch/Linux/installer/llappearanceutility_source-0.1-linux-20130211.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/270564/arch/Linux/installer/llappearanceutility_source-0.1-linux-20130219.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
-- 
GitLab


From b6f814af25a957e71dc8d9dd314ac15e3cbe6cd9 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Wed, 20 Feb 2013 13:24:58 -0500
Subject: [PATCH 314/436] SH-3891 WIP - separate first-time rezzing stats from
 subsequent state changes

---
 indra/newview/llvoavatar.cpp | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 95d4be17b5b..266b9fecd5f 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -5910,6 +5910,7 @@ void LLVOAvatar::updateRezzedStatusTimers()
 			for (S32 i = 1; i < 4; i++)
 			{
 				startPhase("load_" + LLVOAvatar::rezStatusToString(i));
+				startPhase("first_load_" + LLVOAvatar::rezStatusToString(i));
 			}
 		}
 		if (rez_status < mLastRezzedStatus)
@@ -5926,6 +5927,7 @@ void LLVOAvatar::updateRezzedStatusTimers()
 			for (S32 i = llmax(mLastRezzedStatus+1,1); i <= rez_status; i++)
 			{
 				stopPhase("load_" + LLVOAvatar::rezStatusToString(i));
+				stopPhase("first_load_" + LLVOAvatar::rezStatusToString(i), false);
 			}
 			if (rez_status == 3)
 			{
-- 
GitLab


From 756ab4cad5908f30c29a9e86f6905745dbec616c Mon Sep 17 00:00:00 2001
From: Richard Linden <none@none>
Date: Thu, 21 Feb 2013 16:50:11 -0800
Subject: [PATCH 315/436] SH-3864 FIX Closing the Inventory window exits outfit
 editing. cleaned up logic when closing floatersidepanels

---
 indra/newview/llfloatersidepanelcontainer.cpp | 24 +++++++------------
 1 file changed, 8 insertions(+), 16 deletions(-)

diff --git a/indra/newview/llfloatersidepanelcontainer.cpp b/indra/newview/llfloatersidepanelcontainer.cpp
index 02150819a00..ce5ea664717 100755
--- a/indra/newview/llfloatersidepanelcontainer.cpp
+++ b/indra/newview/llfloatersidepanelcontainer.cpp
@@ -59,30 +59,22 @@ void LLFloaterSidePanelContainer::onOpen(const LLSD& key)
 
 void LLFloaterSidePanelContainer::onClickCloseBtn()
 {
-	llinfos << "close clicked" << llendl;
-
 	LLPanelOutfitEdit* panel_outfit_edit =
 		dynamic_cast<LLPanelOutfitEdit*>(LLFloaterSidePanelContainer::getPanel("appearance", "panel_outfit_edit"));
-	if (panel_outfit_edit && panel_outfit_edit->getVisible())
+	if (panel_outfit_edit)
 	{
 		LLFloater *parent = gFloaterView->getParentFloater(panel_outfit_edit);
-		if (parent == this)
+		if (parent == this )
 		{
-			LLSidepanelAppearance* panel_appearance =
-				dynamic_cast<LLSidepanelAppearance*>(getPanel("appearance"));
-			panel_appearance->showOutfitsInventoryPanel();
+			LLSidepanelAppearance* panel_appearance = dynamic_cast<LLSidepanelAppearance*>(getPanel("appearance"));
+			if ( panel_appearance )
+			{
+				panel_appearance->getWearable()->onClose();
+				panel_appearance->showOutfitsInventoryPanel();
+			}
 		}
 	}
 	
-	if ( panel_outfit_edit )
-	{
-		LLSidepanelAppearance* panel_appearance = dynamic_cast<LLSidepanelAppearance*>(getPanel("appearance"));
-		if ( panel_appearance )
-		{
-			panel_appearance->getWearable()->onClose();
-			panel_appearance->showOutfitsInventoryPanel();
-		}
-	}
 	LLFloater::onClickCloseBtn();
 }
 
-- 
GitLab


From 9233f08ddb8ecfffb56638533a4089f13ad7fb12 Mon Sep 17 00:00:00 2001
From: Nyx Linden <nyx@lindenlab.com>
Date: Mon, 25 Feb 2013 18:19:08 -0500
Subject: [PATCH 316/436] SH-3892 SH-3896 SUN-28 FIX add to outfit behaves like
 replace outfit

Conversion away from retry mechanism missed one case which was not supporting
the 'add' operation properly. Changed code to use linkAll instead, as it
did previously.
---
 indra/newview/llappearancemgr.cpp | 10 +++-------
 1 file changed, 3 insertions(+), 7 deletions(-)

diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 10523ca9987..23a908c0fff 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -1814,17 +1814,13 @@ void LLAppearanceMgr::updateCOF(const LLUUID& category, bool append)
 	all_items += gest_items;
 
 	// Will link all the above items.
-	bool update_base_outfit_ordering = !append;
-	LLCallAfterInventoryLinkMgr *link_waiter =
-		new LLCallAfterInventoryLinkMgr(all_items,cof,"update_appearance_on_destroy",
-										boost::bind(&LLAppearanceMgr::updateAppearanceFromCOF,
-													LLAppearanceMgr::getInstance(),
-													update_base_outfit_ordering));
+	LLPointer<LLInventoryCallback> link_waiter = new LLUpdateAppearanceOnDestroy;
+	linkAll(cof,all_items,link_waiter);
 
 	// Add link to outfit if category is an outfit. 
 	if (!append)
 	{
-		link_waiter->addItem(category);
+		createBaseOutfitLink(category, NULL);
 	}
 
 	// Remove current COF contents.  Have to do this after creating
-- 
GitLab


From b16dcda6a387774a446c04f63e1a55bd35ec7afe Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Mon, 25 Feb 2013 19:12:36 -0500
Subject: [PATCH 317/436] SH-3860 WIP, SH-3899 WIP - make folder version
 management more debuggable, log appearance request results

---
 indra/llcommon/llsdutil.cpp         |  0
 indra/newview/llagent.cpp           |  4 ----
 indra/newview/llappearancemgr.cpp   | 24 +++++++++++++++++++++---
 indra/newview/llinventorymodel.cpp  | 11 +++++++++++
 indra/newview/llstartup.cpp         |  0
 indra/newview/llviewerinventory.cpp | 19 +++++++++++++++++--
 indra/newview/llviewerinventory.h   |  4 ++--
 indra/newview/llvoavatar.cpp        |  5 -----
 indra/newview/llvoavatar.h          |  4 ++++
 indra/newview/llvoavatarself.cpp    |  2 --
 10 files changed, 55 insertions(+), 18 deletions(-)
 mode change 100644 => 100755 indra/llcommon/llsdutil.cpp
 mode change 100644 => 100755 indra/newview/llstartup.cpp

diff --git a/indra/llcommon/llsdutil.cpp b/indra/llcommon/llsdutil.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index e15c1a5104c..6c082a7e9cd 100755
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -4292,10 +4292,6 @@ void LLAgent::requestLeaveGodMode()
 	sendReliableMessage();
 }
 
-extern void dump_visual_param(apr_file_t* file, LLVisualParam* viewer_param, F32 value);
-extern std::string get_sequential_numbered_file_name(const std::string& prefix,
-													 const std::string& suffix);
-
 // For debugging, trace agent state at times appearance message are sent out.
 void LLAgent::dumpSentAppearance(const std::string& dump_prefix)
 {
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 10523ca9987..d0f28b8c101 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -50,6 +50,7 @@
 #include "llviewerregion.h"
 #include "llwearablelist.h"
 #include "llsdutil.h"
+#include "llsdserialize.h"
 
 std::string self_av_string()
 {
@@ -3049,6 +3050,10 @@ class RequestAgentUpdateAppearanceResponder: public LLHTTPClient::Responder
 		if (content["success"].asBoolean())
 		{
 			LL_DEBUGS("Avatar") << "OK" << LL_ENDL;
+			if (gSavedSettings.getBOOL("DebugAvatarAppearanceMessage"))
+			{
+				dumpContents("appearance_request_ok", content);
+			}
 		}
 		else
 		{
@@ -3056,11 +3061,23 @@ class RequestAgentUpdateAppearanceResponder: public LLHTTPClient::Responder
 		}
 	}
 
+	void dumpContents(const std::string outprefix, const LLSD& content)
+	{
+		std::string outfilename = get_sequential_numbered_file_name(outprefix,".xml");
+		std::string fullpath = gDirUtilp->getExpandedFilename(LL_PATH_LOGS,outfilename);
+		std::ofstream ofs(fullpath);
+		ofs << LLSDOStreamer<LLSDXMLFormatter>(content, LLSDFormatter::OPTIONS_PRETTY);
+		LL_DEBUGS("Avatar") << "results saved to: " << fullpath << LL_ENDL;
+	}
+	
 	// Error
 	/*virtual*/ void errorWithContent(U32 status, const std::string& reason, const LLSD& content)
 	{
-		llwarns << "appearance update request failed, status: " << status << " reason: " << reason << llendl;
-		LL_DEBUGS("Avatar") << "content: " << ll_pretty_print_sd(content) << LL_ENDL;
+		llwarns << "appearance update request failed, status: " << status << " reason: " << reason << " code: " << content["code"].asInteger() << " error: \"" << content["error"].asString() << "\"" << llendl;
+		if (gSavedSettings.getBOOL("DebugAvatarAppearanceMessage"))
+		{
+			dumpContents("appearance_request_error", content);
+		}
 		onFailure(status);
 	}	
 
@@ -3095,6 +3112,7 @@ void LLAppearanceMgr::requestServerAppearanceUpdate(LLCurl::ResponderPtr respond
 	if (!gAgent.getRegion())
 	{
 		llwarns << "Region not set, cannot request server appearance update" << llendl;
+		return;
 	}
 	if (gAgent.getRegion()->getCentralBakeVersion()==0)
 	{
@@ -3110,7 +3128,7 @@ void LLAppearanceMgr::requestServerAppearanceUpdate(LLCurl::ResponderPtr respond
 	LLSD body;
 	S32 cof_version = getCOFVersion();
 	body["cof_version"] = cof_version;
-	LL_DEBUGS("Avatar") << "my_cof_version " << cof_version << llendl;
+	LL_DEBUGS("Avatar") << "request url " << url << " my_cof_version " << cof_version << llendl;
 	
 	//LLCurl::ResponderPtr responder_ptr;
 	if (!responder_ptr.get())
diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp
index ac1f40b4862..171a2cd043a 100755
--- a/indra/newview/llinventorymodel.cpp
+++ b/indra/newview/llinventorymodel.cpp
@@ -1922,7 +1922,18 @@ bool LLInventoryModel::loadSkeleton(
 			for(cat_set_t::iterator it = temp_cats.begin(); it != temp_cats.end(); ++it)
 			{
 				LLViewerInventoryCategory *llvic = (*it);
+#if 1
 				llvic->setVersion(NO_VERSION);
+#else
+				if (llvic->getPreferredType()==LLFolderType::FT_CURRENT_OUTFIT && llvic->getVersion()==1)
+				{
+					llinfos << "preserving empty COF for first-time login" << llendl;
+				}
+				else
+				{
+					llvic->setVersion(NO_VERSION);
+				}
+#endif
 				addCategory(*it);
 			}
 		}
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerinventory.cpp b/indra/newview/llviewerinventory.cpp
index d6f0874a58a..59efcfa7fac 100755
--- a/indra/newview/llviewerinventory.cpp
+++ b/indra/newview/llviewerinventory.cpp
@@ -592,7 +592,7 @@ void LLViewerInventoryCategory::copyViewerCategory(const LLViewerInventoryCatego
 {
 	copyCategory(other);
 	mOwnerID = other->mOwnerID;
-	mVersion = other->mVersion;
+	setVersion(other->getVersion());
 	mDescendentCount = other->mDescendentCount;
 	mDescendentsRequested = other->mDescendentsRequested;
 }
@@ -660,9 +660,19 @@ void LLViewerInventoryCategory::removeFromServer( void )
 	gAgent.sendReliableMessage();
 }
 
+S32 LLViewerInventoryCategory::getVersion() const
+{
+	return mVersion;
+}
+
+void LLViewerInventoryCategory::setVersion(S32 version)
+{
+	mVersion = version;
+}
+
 bool LLViewerInventoryCategory::fetch()
 {
-	if((VERSION_UNKNOWN == mVersion)
+	if((VERSION_UNKNOWN == getVersion())
 	   && mDescendentsRequested.hasExpired())	//Expired check prevents multiple downloads.
 	{
 		LL_DEBUGS("InventoryFetch") << "Fetching category children: " << mName << ", UUID: " << mUUID << LL_ENDL;
@@ -1127,6 +1137,11 @@ void link_inventory_item(
 		}
 	}
 
+#if 1 // debugging stuff
+	LLViewerInventoryCategory* cat = gInventory.getCategory(parent_id);
+	lldebugs << "cat: " << cat << llendl;
+	
+#endif
 	LLMessageSystem* msg = gMessageSystem;
 	msg->newMessageFast(_PREHASH_LinkInventoryItem);
 	msg->nextBlock(_PREHASH_AgentData);
diff --git a/indra/newview/llviewerinventory.h b/indra/newview/llviewerinventory.h
index 13e95c57cbf..812b3b27397 100755
--- a/indra/newview/llviewerinventory.h
+++ b/indra/newview/llviewerinventory.h
@@ -205,8 +205,8 @@ class LLViewerInventoryCategory  : public LLInventoryCategory
 
 	// Version handling
 	enum { VERSION_UNKNOWN = -1, VERSION_INITIAL = 1 };
-	S32 getVersion() const { return mVersion; }
-	void setVersion(S32 version) { mVersion = version; }
+	S32 getVersion() const;
+	void setVersion(S32 version);
 
 	// Returns true if a fetch was issued.
 	bool fetch();
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 266b9fecd5f..04458da5293 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -190,11 +190,6 @@ enum ERenderName
 	RENDER_NAME_FADE
 };
 
-
-// Utility func - FIXME move out of avatar.
-std::string get_sequential_numbered_file_name(const std::string& prefix,
-											  const std::string& suffix);
-
 //-----------------------------------------------------------------------------
 // Callback data
 //-----------------------------------------------------------------------------
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
index c989673cdfa..3382a1ef17b 100755
--- a/indra/newview/llvoavatar.h
+++ b/indra/newview/llvoavatar.h
@@ -980,5 +980,9 @@ class LLVOAvatar :
 extern const F32 SELF_ADDITIONAL_PRI;
 extern const S32 MAX_TEXTURE_VIRTURE_SIZE_RESET_INTERVAL;
 
+std::string get_sequential_numbered_file_name(const std::string& prefix,
+											  const std::string& suffix);
+void dump_visual_param(apr_file_t* file, LLVisualParam* viewer_param, F32 value);
+
 #endif // LL_VOAVATAR_H
 
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index 0e8e48099e1..c069488a37e 100755
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -3049,8 +3049,6 @@ void LLVOAvatarSelf::dumpScratchTextureByteCount()
 	llinfos << "Scratch Texture GL: " << (sScratchTexBytes/1024) << "KB" << llendl;
 }
 
-void dump_visual_param(apr_file_t* file, LLVisualParam* viewer_param, F32 value);
-
 void LLVOAvatarSelf::dumpWearableInfo(LLAPRFile& outfile)
 {
 	apr_file_t* file = outfile.getFileHandle();
-- 
GitLab


From d679ad47d524f73bdde0204b91607f9221dc41ab Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Tue, 26 Feb 2013 07:45:50 -0500
Subject: [PATCH 318/436] cleaned up old message

---
 indra/newview/llappearancemgr.cpp | 2 --
 1 file changed, 2 deletions(-)

diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 131bef69589..bd4e8ddf72a 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -1806,8 +1806,6 @@ void LLAppearanceMgr::updateCOF(const LLUUID& category, bool append)
 	removeDuplicateItems(gest_items);
 	
 	// Create links to new COF contents.
-	LL_DEBUGS("Avatar") << self_av_string() << "creating LLCallAfterInventoryLinkMgr" << LL_ENDL;
-
 	LLInventoryModel::item_array_t all_items;
 	all_items += body_items;
 	all_items += wear_items;
-- 
GitLab


From 998c31ef9e0631eefe07e4e678032ee90c56c859 Mon Sep 17 00:00:00 2001
From: Nyx Linden <nyx@lindenlab.com>
Date: Tue, 26 Feb 2013 15:29:23 -0500
Subject: [PATCH 319/436] BUILDFIX fixing undefined reference in build

---
 indra/llprimitive/llprimitive.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/llprimitive/llprimitive.cpp b/indra/llprimitive/llprimitive.cpp
index cf6a3f97d2d..c340fc2d353 100755
--- a/indra/llprimitive/llprimitive.cpp
+++ b/indra/llprimitive/llprimitive.cpp
@@ -1259,7 +1259,7 @@ S32 LLPrimitive::parseTEMessage(LLMessageSystem* mesgsys, char const* block_name
 		mesgsys->getBinaryDataFast(block_name, _PREHASH_TextureEntry, tec.packed_buffer, 0, block_num, LLTEContents::MAX_TE_BUFFER);
 	}
 
-	tec.face_count = llmin((U32)getNumTEs(),LLTEContents::MAX_TES);
+	tec.face_count = llmin((U32)getNumTEs(),(U32)LLTEContents::MAX_TES);
 
 	U8 *cur_ptr = tec.packed_buffer;
 	cur_ptr += unpackTEField(cur_ptr, tec.packed_buffer+tec.size, (U8 *)tec.image_data, 16, tec.face_count, MVT_LLUUID);
-- 
GitLab


From 26ac1097729ce801e61523e3e42d7a868ddcde13 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Tue, 26 Feb 2013 22:00:50 -0500
Subject: [PATCH 320/436] SH-3899 WIP - more logging of appearance message info

---
 indra/newview/llappearancemgr.cpp |  9 ++++++
 indra/newview/llvoavatar.cpp      | 52 ++++++++++++++++++-------------
 indra/newview/llvoavatar.h        |  3 +-
 3 files changed, 41 insertions(+), 23 deletions(-)

diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index bd4e8ddf72a..8d41edf6afd 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -3063,6 +3063,13 @@ class RequestAgentUpdateAppearanceResponder: public LLHTTPClient::Responder
 		ofs << LLSDOStreamer<LLSDXMLFormatter>(content, LLSDFormatter::OPTIONS_PRETTY);
 		LL_DEBUGS("Avatar") << "results saved to: " << fullpath << LL_ENDL;
 	}
+
+	void debugCOF(const LLSD& content)
+	{
+		//S32 cof_version = content["cof_version"];
+		//S32 cof_expected = content["expected"];
+		//S32 cof_observed = content["observed"];
+	}
 	
 	// Error
 	/*virtual*/ void errorWithContent(U32 status, const std::string& reason, const LLSD& content)
@@ -3071,6 +3078,8 @@ class RequestAgentUpdateAppearanceResponder: public LLHTTPClient::Responder
 		if (gSavedSettings.getBOOL("DebugAvatarAppearanceMessage"))
 		{
 			dumpContents("appearance_request_error", content);
+			debugCOF(content);
+		
 		}
 		onFailure(status);
 	}	
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 04458da5293..afe8a037b71 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -210,6 +210,24 @@ struct LLTextureMaskData
  **
  **/
 
+struct LLAppearanceMessageContents
+{
+	LLAppearanceMessageContents():
+		mAppearanceVersion(-1),
+		mParamAppearanceVersion(-1),
+		mCOFVersion(LLViewerInventoryCategory::VERSION_UNKNOWN)
+	{
+	}
+	LLTEContents mTEContents;
+	S32 mAppearanceVersion;
+	S32 mParamAppearanceVersion;
+	S32 mCOFVersion;
+	// For future use:
+	//U32 appearance_flags = 0;
+	std::vector<F32> mParamWeights;
+	std::vector<LLVisualParam*> mParams;
+};
+
 //-----------------------------------------------------------------------------
 // class LLBodyNoiseMotion
 //-----------------------------------------------------------------------------
@@ -6725,10 +6743,11 @@ void dump_visual_param(apr_file_t* file, LLVisualParam* viewer_param, F32 value)
 
 
 void LLVOAvatar::dumpAppearanceMsgParams( const std::string& dump_prefix,
-										  const std::vector<F32>& params_for_dump,
-										  const LLTEContents& tec)
+										  const LLAppearanceMessageContents& contents)
 {
 	std::string outfilename = get_sequential_numbered_file_name(dump_prefix,".xml");
+	const std::vector<F32>& params_for_dump = contents.mParamWeights;
+	const LLTEContents& tec = contents.mTEContents;
 
 	LLAPRFile outfile;
 	std::string fullpath = gDirUtilp->getExpandedFilename(LL_PATH_LOGS,outfilename);
@@ -6743,7 +6762,12 @@ void LLVOAvatar::dumpAppearanceMsgParams( const std::string& dump_prefix,
 		LL_DEBUGS("Avatar") << "dumping appearance message to " << fullpath << llendl;
 	}
 
+	apr_file_printf(file, "<header>\n");
+	apr_file_printf(file, "\t\t<cof_version %i />\n", contents.mCOFVersion);
+	apr_file_printf(file, "\t\t<appearance_version %i />\n", contents.mAppearanceVersion);
+	apr_file_printf(file, "</header>\n");
 
+	apr_file_printf(file, "\n<params>\n");
 	LLVisualParam* param = getFirstVisualParam();
 	for (S32 i = 0; i < params_for_dump.size(); i++)
 	{
@@ -6756,32 +6780,18 @@ void LLVOAvatar::dumpAppearanceMsgParams( const std::string& dump_prefix,
 		dump_visual_param(file, viewer_param, value);
 		param = getNextVisualParam();
 	}
+	apr_file_printf(file, "</params>\n");
+
+	apr_file_printf(file, "\n<textures>\n");
 	for (U32 i = 0; i < tec.face_count; i++)
 	{
 		std::string uuid_str;
 		((LLUUID*)tec.image_data)[i].toString(uuid_str);
 		apr_file_printf( file, "\t\t<texture te=\"%i\" uuid=\"%s\"/>\n", i, uuid_str.c_str());
 	}
+	apr_file_printf(file, "</textures>\n");
 }
 
-struct LLAppearanceMessageContents
-{
-	LLAppearanceMessageContents():
-		mAppearanceVersion(-1),
-		mParamAppearanceVersion(-1),
-		mCOFVersion(LLViewerInventoryCategory::VERSION_UNKNOWN)
-	{
-	}
-	LLTEContents mTEContents;
-	S32 mAppearanceVersion;
-	S32 mParamAppearanceVersion;
-	S32 mCOFVersion;
-	// For future use:
-	//U32 appearance_flags = 0;
-	std::vector<F32> mParamWeights;
-	std::vector<LLVisualParam*> mParams;
-};
-
 void LLVOAvatar::parseAppearanceMessage(LLMessageSystem* mesgsys, LLAppearanceMessageContents& contents)
 {
 	parseTEMessage(mesgsys, _PREHASH_ObjectData, -1, contents.mTEContents);
@@ -6920,7 +6930,7 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 	parseAppearanceMessage(mesgsys, contents);
 	if (enable_verbose_dumps)
 	{
-		dumpAppearanceMsgParams(dump_prefix + "appearance_msg", contents.mParamWeights, contents.mTEContents);
+		dumpAppearanceMsgParams(dump_prefix + "appearance_msg", contents);
 	}
 
 	S32 appearance_version;
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
index 3382a1ef17b..5ebd8d03993 100755
--- a/indra/newview/llvoavatar.h
+++ b/indra/newview/llvoavatar.h
@@ -928,8 +928,7 @@ class LLVOAvatar :
 public:
 	void				dumpArchetypeXML(const std::string& prefix, bool group_by_wearables = false);
 	void 				dumpAppearanceMsgParams( const std::string& dump_prefix,
-												 const std::vector<F32>& paramsForDump,
-												 const LLTEContents& tec);
+												 const LLAppearanceMessageContents& contents);
 	static void			dumpBakedStatus();
 	const std::string 	getBakedStatusForPrintout() const;
 	void				dumpAvatarTEs(const std::string& context) const;
-- 
GitLab


From d9d5c7e0ccec47d57743304c800c5137dd50aa22 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Wed, 27 Feb 2013 11:38:12 -0500
Subject: [PATCH 321/436] SH-3899 WIP - more verbose logging of appearance
 request status, debug option to force failures for testing

---
 indra/newview/app_settings/settings.xml | 11 +++++++
 indra/newview/llappearancemgr.cpp       | 41 ++++++++++++++-----------
 2 files changed, 34 insertions(+), 18 deletions(-)

diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 5db8d4e6a17..826a79b455c 100755
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -1982,6 +1982,17 @@
       <key>Value</key>
       <integer>1</integer>
     </map>
+    <key>DebugForceAppearanceRequestFailure</key>
+    <map>
+      <key>Comment</key>
+      <string>Request wrong cof version to test the failure path for server appearance update requests.</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>Boolean</string>
+      <key>Value</key>
+      <integer>0</integer>
+    </map>
     <key>DebugHideEmptySystemFolders</key>
     <map>
       <key>Comment</key>
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 8d41edf6afd..30e7f32ef78 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -3046,7 +3046,7 @@ class RequestAgentUpdateAppearanceResponder: public LLHTTPClient::Responder
 			LL_DEBUGS("Avatar") << "OK" << LL_ENDL;
 			if (gSavedSettings.getBOOL("DebugAvatarAppearanceMessage"))
 			{
-				dumpContents("appearance_request_ok", content);
+				dumpContents(gAgentAvatarp->getFullname() + "_appearance_request_ok", content);
 			}
 		}
 		else
@@ -3055,29 +3055,13 @@ class RequestAgentUpdateAppearanceResponder: public LLHTTPClient::Responder
 		}
 	}
 
-	void dumpContents(const std::string outprefix, const LLSD& content)
-	{
-		std::string outfilename = get_sequential_numbered_file_name(outprefix,".xml");
-		std::string fullpath = gDirUtilp->getExpandedFilename(LL_PATH_LOGS,outfilename);
-		std::ofstream ofs(fullpath);
-		ofs << LLSDOStreamer<LLSDXMLFormatter>(content, LLSDFormatter::OPTIONS_PRETTY);
-		LL_DEBUGS("Avatar") << "results saved to: " << fullpath << LL_ENDL;
-	}
-
-	void debugCOF(const LLSD& content)
-	{
-		//S32 cof_version = content["cof_version"];
-		//S32 cof_expected = content["expected"];
-		//S32 cof_observed = content["observed"];
-	}
-	
 	// Error
 	/*virtual*/ void errorWithContent(U32 status, const std::string& reason, const LLSD& content)
 	{
 		llwarns << "appearance update request failed, status: " << status << " reason: " << reason << " code: " << content["code"].asInteger() << " error: \"" << content["error"].asString() << "\"" << llendl;
 		if (gSavedSettings.getBOOL("DebugAvatarAppearanceMessage"))
 		{
-			dumpContents("appearance_request_error", content);
+			dumpContents(gAgentAvatarp->getFullname() + "_appearance_request_error", content);
 			debugCOF(content);
 		
 		}
@@ -3101,6 +3085,23 @@ class RequestAgentUpdateAppearanceResponder: public LLHTTPClient::Responder
 		}
 	}
 
+	void dumpContents(const std::string outprefix, const LLSD& content)
+	{
+		std::string outfilename = get_sequential_numbered_file_name(outprefix,".xml");
+		std::string fullpath = gDirUtilp->getExpandedFilename(LL_PATH_LOGS,outfilename);
+		std::ofstream ofs(fullpath);
+		ofs << LLSDOStreamer<LLSDXMLFormatter>(content, LLSDFormatter::OPTIONS_PRETTY);
+		LL_DEBUGS("Avatar") << "results saved to: " << fullpath << LL_ENDL;
+	}
+
+	void debugCOF(const LLSD& content)
+	{
+		//S32 cof_version = content["cof_version"];
+		//S32 cof_expected = content["expected"];
+		//S32 cof_observed = content["observed"];
+	}
+	
+
 	LLPointer<LLHTTPRetryPolicy> mRetryPolicy;
 };
 
@@ -3131,6 +3132,10 @@ void LLAppearanceMgr::requestServerAppearanceUpdate(LLCurl::ResponderPtr respond
 	LLSD body;
 	S32 cof_version = getCOFVersion();
 	body["cof_version"] = cof_version;
+	if (gSavedSettings.getBOOL("DebugForceAppearanceRequestFailure"))
+	{
+		body["cof_version"] = cof_version+1;
+	}
 	LL_DEBUGS("Avatar") << "request url " << url << " my_cof_version " << cof_version << llendl;
 	
 	//LLCurl::ResponderPtr responder_ptr;
-- 
GitLab


From 72412e1b42325c35c02aef43a87b8907ca591d1f Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Wed, 27 Feb 2013 11:55:08 -0500
Subject: [PATCH 322/436] Fix for mac build failure

---
 indra/newview/llappearancemgr.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 30e7f32ef78..a87be175051 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -3089,7 +3089,7 @@ class RequestAgentUpdateAppearanceResponder: public LLHTTPClient::Responder
 	{
 		std::string outfilename = get_sequential_numbered_file_name(outprefix,".xml");
 		std::string fullpath = gDirUtilp->getExpandedFilename(LL_PATH_LOGS,outfilename);
-		std::ofstream ofs(fullpath);
+		std::ofstream ofs(fullpath, std::ios_base::out);
 		ofs << LLSDOStreamer<LLSDXMLFormatter>(content, LLSDFormatter::OPTIONS_PRETTY);
 		LL_DEBUGS("Avatar") << "results saved to: " << fullpath << LL_ENDL;
 	}
-- 
GitLab


From df3f6f6cacd3803748af569ad76ae1131ad1b1b9 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Wed, 27 Feb 2013 11:59:44 -0500
Subject: [PATCH 323/436] Fix for mac build failure this time for sure

---
 indra/newview/llappearancemgr.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index a87be175051..2e71f15a783 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -3089,7 +3089,7 @@ class RequestAgentUpdateAppearanceResponder: public LLHTTPClient::Responder
 	{
 		std::string outfilename = get_sequential_numbered_file_name(outprefix,".xml");
 		std::string fullpath = gDirUtilp->getExpandedFilename(LL_PATH_LOGS,outfilename);
-		std::ofstream ofs(fullpath, std::ios_base::out);
+		std::ofstream ofs(fullpath.c_str(), std::ios_base::out);
 		ofs << LLSDOStreamer<LLSDXMLFormatter>(content, LLSDFormatter::OPTIONS_PRETTY);
 		LL_DEBUGS("Avatar") << "results saved to: " << fullpath << LL_ENDL;
 	}
-- 
GitLab


From 41d3b428e1cfbaf8e21a335e1a9ee9a12ad46c33 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Wed, 27 Feb 2013 15:17:31 -0500
Subject: [PATCH 324/436] Increase number of retries for
 requestServerAppearanceUpdate()

---
 indra/newview/llappearancemgr.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index a87be175051..adfdb7d93d6 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -3030,7 +3030,7 @@ class RequestAgentUpdateAppearanceResponder: public LLHTTPClient::Responder
 public:
 	RequestAgentUpdateAppearanceResponder()
 	{
-		mRetryPolicy = new LLAdaptiveRetryPolicy(1.0, 16.0, 2.0, 5);
+		mRetryPolicy = new LLAdaptiveRetryPolicy(1.0, 32.0, 2.0, 10);
 	}
 
 	virtual ~RequestAgentUpdateAppearanceResponder()
-- 
GitLab


From 2b6d7e50053a7efd2a20032c801d4b7db3b49dc1 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Wed, 27 Feb 2013 17:58:43 -0500
Subject: [PATCH 325/436] SH-3860 WIP - fixes for initial COF loading and
 config

---
 indra/newview/llappearancemgr.cpp  | 2 +-
 indra/newview/llinventorymodel.cpp | 4 ++--
 indra/newview/llstartup.cpp        | 9 +++++++++
 3 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index adfdb7d93d6..0177f6d83c7 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -1819,7 +1819,7 @@ void LLAppearanceMgr::updateCOF(const LLUUID& category, bool append)
 	// Add link to outfit if category is an outfit. 
 	if (!append)
 	{
-		createBaseOutfitLink(category, NULL);
+		createBaseOutfitLink(category, link_waiter);
 	}
 
 	// Remove current COF contents.  Have to do this after creating
diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp
index 171a2cd043a..f0bfc688665 100755
--- a/indra/newview/llinventorymodel.cpp
+++ b/indra/newview/llinventorymodel.cpp
@@ -1922,9 +1922,9 @@ bool LLInventoryModel::loadSkeleton(
 			for(cat_set_t::iterator it = temp_cats.begin(); it != temp_cats.end(); ++it)
 			{
 				LLViewerInventoryCategory *llvic = (*it);
-#if 1
+#if 0
 				llvic->setVersion(NO_VERSION);
-#else
+#else // SH-3860 WIP
 				if (llvic->getPreferredType()==LLFolderType::FT_CURRENT_OUTFIT && llvic->getVersion()==1)
 				{
 					llinfos << "preserving empty COF for first-time login" << llendl;
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index 9d0df5e83ef..717f578ddbc 100755
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -2572,12 +2572,21 @@ void LLStartUp::loadInitialOutfit( const std::string& outfit_folder_name,
 	}
 	else
 	{
+		// FIXME SH-3860 - this creates a race condition, where COF
+		// changes (base outfit link added) after appearance update
+		// request has been submitted.
 		sWearablesLoadedCon = gAgentWearables.addLoadedCallback(LLStartUp::saveInitialOutfit);
 
 		bool do_copy = true;
 		bool do_append = false;
 		LLViewerInventoryCategory *cat = gInventory.getCategory(cat_id);
+#if 0 // SH-3860 WIP
+		// Need to fetch cof contents before we can wear.
+		callAfterCategoryFetch(LLAppearanceMgr::instance().getCOF(),
+							   boost::bind(&LLAppearanceMgr::wearInventoryCategory, LLAppearanceMgr::getInstance(), cat, do_copy, do_append));
+#else
 		LLAppearanceMgr::instance().wearInventoryCategory(cat, do_copy, do_append);
+#endif
 		lldebugs << "initial outfit category id: " << cat_id << llendl;
 	}
 
-- 
GitLab


From 03b51b779fd545e63b6f2fa2ef5ba28f21f1ae62 Mon Sep 17 00:00:00 2001
From: prep <prep@lindenlab.com>
Date: Thu, 28 Feb 2013 10:56:12 -0500
Subject: [PATCH 326/436] SH-3895. Added code to recognize if the second
 incoming regions seed caps differ in size from the initial region caps. Also
 avoid starting a inventory fetch responder if the requisite cap is missing"

---
 .../llinventorymodelbackgroundfetch.cpp       | 28 ++++----
 indra/newview/llviewerregion.cpp              | 70 +++++++++++++++++--
 indra/newview/llviewerregion.h                |  5 +-
 3 files changed, 84 insertions(+), 19 deletions(-)

diff --git a/indra/newview/llinventorymodelbackgroundfetch.cpp b/indra/newview/llinventorymodelbackgroundfetch.cpp
index eb92902de9a..024d34519f2 100644
--- a/indra/newview/llinventorymodelbackgroundfetch.cpp
+++ b/indra/newview/llinventorymodelbackgroundfetch.cpp
@@ -564,7 +564,6 @@ BOOL LLInventoryModelFetchDescendentsResponder::getIsRecursive(const LLUUID& cat
 {
 	return (std::find(mRecursiveCatUUIDs.begin(),mRecursiveCatUUIDs.end(), cat_id) != mRecursiveCatUUIDs.end());
 }
-
 // Bundle up a bunch of requests to send all at once.
 // static   
 void LLInventoryModelBackgroundFetch::bulkFetch()
@@ -687,20 +686,23 @@ void LLInventoryModelBackgroundFetch::bulkFetch()
 	{
 		if (folder_count)
 		{
-			std::string url = region->getCapability("FetchInventoryDescendents2");   
-			mFetchCount++;
-			if (folder_request_body["folders"].size())
-			{
-				LLInventoryModelFetchDescendentsResponder *fetcher = new LLInventoryModelFetchDescendentsResponder(folder_request_body, recursive_cats);
-				LLHTTPClient::post(url, folder_request_body, fetcher, 300.0);
-			}
-			if (folder_request_body_lib["folders"].size())
+			std::string url = region->getCapability("FetchInventoryDescendents2");   			
+			if ( !url.empty() )
 			{
-				std::string url_lib = gAgent.getRegion()->getCapability("FetchLibDescendents2");
+				mFetchCount++;
+				if (folder_request_body["folders"].size())
+				{
+					LLInventoryModelFetchDescendentsResponder *fetcher = new LLInventoryModelFetchDescendentsResponder(folder_request_body, recursive_cats);
+					LLHTTPClient::post(url, folder_request_body, fetcher, 300.0);
+				}
+				if (folder_request_body_lib["folders"].size())
+				{
+					std::string url_lib = gAgent.getRegion()->getCapability("FetchLibDescendents2");
 
-				LLInventoryModelFetchDescendentsResponder *fetcher = new LLInventoryModelFetchDescendentsResponder(folder_request_body_lib, recursive_cats);
-				LLHTTPClient::post(url_lib, folder_request_body_lib, fetcher, 300.0);
-			}
+					LLInventoryModelFetchDescendentsResponder *fetcher = new LLInventoryModelFetchDescendentsResponder(folder_request_body_lib, recursive_cats);
+					LLHTTPClient::post(url_lib, folder_request_body_lib, fetcher, 300.0);
+				}
+			}					
 		}
 		if (item_count)
 		{
diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp
index d60ec04578b..db5bba89e24 100755
--- a/indra/newview/llviewerregion.cpp
+++ b/indra/newview/llviewerregion.cpp
@@ -142,7 +142,8 @@ class LLViewerRegionImpl {
 	LLUUID mCacheID;
 
 	CapabilityMap mCapabilities;
-	
+	CapabilityMap mSecondCapabilitiesTracker; 
+
 	LLEventPoll* mEventPoll;
 
 	S32 mSeedCapMaxAttempts;
@@ -219,7 +220,7 @@ class BaseCapabilitiesComplete : public LLHTTPClient::Responder
 		}
     }
 
-    void result(const LLSD& content)
+   void result(const LLSD& content)
     {
 		LLViewerRegion *regionp = LLWorld::getInstance()->getRegionFromHandle(mRegionHandle);
 		if(!regionp) //region was removed
@@ -237,6 +238,7 @@ class BaseCapabilitiesComplete : public LLHTTPClient::Responder
 		for(iter = content.beginMap(); iter != content.endMap(); ++iter)
 		{
 			regionp->setCapability(iter->first, iter->second);
+			
 			LL_DEBUGS2("AppInit", "Capabilities") << "got capability for " 
 				<< iter->first << LL_ENDL;
 
@@ -265,6 +267,53 @@ class BaseCapabilitiesComplete : public LLHTTPClient::Responder
 	S32 mID;
 };
 
+class BaseCapabilitiesCompleteDebug :  public LLHTTPClient::Responder
+{
+	LOG_CLASS(BaseCapabilitiesCompleteDebug);
+public:
+	BaseCapabilitiesCompleteDebug( U64 region_handle, S32 id )
+	: mRegionHandle(region_handle), mID(id)
+	{ }
+	
+	virtual ~BaseCapabilitiesCompleteDebug()
+	{ }
+
+	void error(U32 statusNum, const std::string& reason)
+	{ }
+
+	void result(const LLSD& content)
+	{
+		LLViewerRegion *regionp = LLWorld::getInstance()->getRegionFromHandle(mRegionHandle);
+		if(!regionp || mID != regionp->getHttpResponderID())
+		{			
+			return ;
+		}		
+		LLSD::map_const_iterator iter;
+		for(iter = content.beginMap(); iter != content.endMap(); ++iter)
+		{
+			regionp->setCapabilityDebug(iter->first, iter->second);		
+		}
+		
+		if ( regionp->getRegionImpl()->mCapabilities.size() != regionp->getRegionImpl()->mSecondCapabilitiesTracker.size() )
+		{
+			llwarns<<"Sim sent duplicate seed caps that differ in size - most likely content."<<llendl;			
+			//todo#add cap debug versus original check?
+			regionp->getRegionImplNC()->mSecondCapabilitiesTracker.clear();
+		}
+
+	}
+
+	static BaseCapabilitiesCompleteDebug* build( U64 region_handle, S32 id )
+	{
+		return new BaseCapabilitiesCompleteDebug( region_handle, id );
+	}
+
+private:
+	U64 mRegionHandle;
+	S32 mID;
+
+};
+
 
 LLViewerRegion::LLViewerRegion(const U64 &handle,
 							   const LLHost &host,
@@ -1529,7 +1578,7 @@ void LLViewerRegionImpl::buildCapabilityNames(LLSD& capabilityNames)
 	capabilityNames.append("EventQueueGet");
 
 	if (gSavedSettings.getBOOL("UseHTTPInventory"))
-	{
+	{	
 		capabilityNames.append("FetchLib2");
 		capabilityNames.append("FetchLibDescendents2");
 		capabilityNames.append("FetchInventory2");
@@ -1595,8 +1644,14 @@ void LLViewerRegionImpl::buildCapabilityNames(LLSD& capabilityNames)
 void LLViewerRegion::setSeedCapability(const std::string& url)
 {
 	if (getCapability("Seed") == url)
-    {
-		// llwarns << "Ignoring duplicate seed capability" << llendl;
+    {	
+		//llwarns << "Ignoring duplicate seed capability" << llendl;
+		//Instead of just returning we build up a second set of seed caps and compare them 
+		//to the "original" seed cap received and determine why there is problem!
+		LLSD capabilityNames = LLSD::emptyArray();
+		mImpl->buildCapabilityNames( capabilityNames );
+		LLHTTPClient::post( url, capabilityNames, BaseCapabilitiesCompleteDebug::build(getHandle(), ++mImpl->mHttpResponderID ),
+							LLSD(), CAP_REQUEST_TIMEOUT );
 		return;
     }
 	
@@ -1732,6 +1787,11 @@ void LLViewerRegion::setCapability(const std::string& name, const std::string& u
 	}
 }
 
+void LLViewerRegion::setCapabilityDebug(const std::string& name, const std::string& url)
+{
+	mImpl->mSecondCapabilitiesTracker[name] = url;
+}
+
 bool LLViewerRegion::isSpecialCapabilityName(const std::string &name)
 {
 	return name == "EventQueueGet" || name == "UntrustedSimulatorMessage";
diff --git a/indra/newview/llviewerregion.h b/indra/newview/llviewerregion.h
index 20d96ad9ac6..b5fe4677b76 100644
--- a/indra/newview/llviewerregion.h
+++ b/indra/newview/llviewerregion.h
@@ -241,6 +241,7 @@ class LLViewerRegion: public LLCapabilityProvider // implements this interface
 	void failedSeedCapability();
 	S32 getNumSeedCapRetries();
 	void setCapability(const std::string& name, const std::string& url);
+	void setCapabilityDebug(const std::string& name, const std::string& url);
 	// implements LLCapabilityProvider
     virtual std::string getCapability(const std::string& name) const;
 
@@ -339,7 +340,9 @@ class LLViewerRegion: public LLCapabilityProvider // implements this interface
 
 	void getNeighboringRegions( std::vector<LLViewerRegion*>& uniqueRegions );
 	void getNeighboringRegionsStatus( std::vector<S32>& regions );
-	
+	const LLViewerRegionImpl * getRegionImpl() const { return mImpl; }
+	LLViewerRegionImpl * getRegionImplNC() { return mImpl; }
+
 public:
 	struct CompareDistance
 	{
-- 
GitLab


From eae5cd57eb76fb65e36a69df90fa0aedeaa26ec1 Mon Sep 17 00:00:00 2001
From: prep <prep@lindenlab.com>
Date: Thu, 28 Feb 2013 11:19:19 -0500
Subject: [PATCH 327/436] Renamed seedcap tracker class

---
 indra/newview/llviewerregion.cpp | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp
index a7595a56d31..0033be2dbfa 100755
--- a/indra/newview/llviewerregion.cpp
+++ b/indra/newview/llviewerregion.cpp
@@ -267,15 +267,15 @@ class BaseCapabilitiesComplete : public LLHTTPClient::Responder
 	S32 mID;
 };
 
-class BaseCapabilitiesCompleteDebug :  public LLHTTPClient::Responder
+class BaseCapabilitiesCompleteTracker :  public LLHTTPClient::Responder
 {
-	LOG_CLASS(BaseCapabilitiesCompleteDebug);
+	LOG_CLASS(BaseCapabilitiesCompleteTracker);
 public:
-	BaseCapabilitiesCompleteDebug( U64 region_handle, S32 id )
+	BaseCapabilitiesCompleteTracker( U64 region_handle, S32 id )
 	: mRegionHandle(region_handle), mID(id)
 	{ }
 	
-	virtual ~BaseCapabilitiesCompleteDebug()
+	virtual ~BaseCapabilitiesCompleteTracker()
 	{ }
 
 	void error(U32 statusNum, const std::string& reason)
@@ -296,16 +296,16 @@ class BaseCapabilitiesCompleteDebug :  public LLHTTPClient::Responder
 		
 		if ( regionp->getRegionImpl()->mCapabilities.size() != regionp->getRegionImpl()->mSecondCapabilitiesTracker.size() )
 		{
-			llwarns<<"Sim sent duplicate seed caps that differ in size - most likely content."<<llendl;			
+			llwarns<<"Sim sent duplicate seed caps that differs in size - most likely content."<<llendl;			
 			//todo#add cap debug versus original check?
 			regionp->getRegionImplNC()->mSecondCapabilitiesTracker.clear();
 		}
 
 	}
 
-	static BaseCapabilitiesCompleteDebug* build( U64 region_handle, S32 id )
+	static BaseCapabilitiesCompleteTracker* build( U64 region_handle, S32 id )
 	{
-		return new BaseCapabilitiesCompleteDebug( region_handle, id );
+		return new BaseCapabilitiesCompleteTracker( region_handle, id );
 	}
 
 private:
@@ -1651,7 +1651,7 @@ void LLViewerRegion::setSeedCapability(const std::string& url)
 		//to the "original" seed cap received and determine why there is problem!
 		LLSD capabilityNames = LLSD::emptyArray();
 		mImpl->buildCapabilityNames( capabilityNames );
-		LLHTTPClient::post( url, capabilityNames, BaseCapabilitiesCompleteDebug::build(getHandle(), ++mImpl->mHttpResponderID ),
+		LLHTTPClient::post( url, capabilityNames, BaseCapabilitiesCompleteTracker::build(getHandle(), ++mImpl->mHttpResponderID ),
 							LLSD(), CAP_REQUEST_TIMEOUT );
 		return;
     }
-- 
GitLab


From c14b43b5bf21365573608a4bac98b99cddd61d4d Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Thu, 28 Feb 2013 11:47:14 -0500
Subject: [PATCH 328/436] SH-3899 WIP - detailed logging of cof mismatch errors

---
 indra/newview/llappearancemgr.cpp | 70 ++++++++++++++++++++++++++++---
 1 file changed, 65 insertions(+), 5 deletions(-)

diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 6df48221354..e12ecea7601 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -3096,11 +3096,71 @@ class RequestAgentUpdateAppearanceResponder: public LLHTTPClient::Responder
 
 	void debugCOF(const LLSD& content)
 	{
-		//S32 cof_version = content["cof_version"];
-		//S32 cof_expected = content["expected"];
-		//S32 cof_observed = content["observed"];
+		LL_DEBUGS("Avatar") << "AIS COF, version found: " << content["expected"].asInteger() << llendl;
+		std::set<LLUUID> ais_items, local_items;
+		const LLSD& cof_raw = content["cof_raw"];
+		for (LLSD::array_const_iterator it = cof_raw.beginArray();
+			 it != cof_raw.endArray(); ++it)
+		{
+			const LLSD& item = *it;
+			if (item["parent_id"].asUUID() == LLAppearanceMgr::instance().getCOF())
+			{
+				ais_items.insert(item["item_id"].asUUID());
+				if (item["type"].asInteger() == 24) // link
+				{
+					LL_DEBUGS("Avatar") << "Link: item_id: " << item["item_id"].asUUID()
+										<< " linked_item_id: " << item["asset_id"].asUUID()
+										<< " name: " << item["name"].asString()
+										<< llendl; 
+				}
+				else if (item["type"].asInteger() == 25) // folder link
+				{
+					LL_DEBUGS("Avatar") << "Folder link: item_id: " << item["item_id"].asUUID()
+										<< " linked_item_id: " << item["asset_id"].asUUID()
+										<< " name: " << item["name"].asString()
+										<< llendl; 
+					
+				}
+				else
+				{
+					LL_DEBUGS("Avatar") << "Other: item_id: " << item["item_id"].asUUID()
+										<< " linked_item_id: " << item["asset_id"].asUUID()
+										<< " name: " << item["name"].asString()
+										<< llendl; 
+				}
+			}
+		}
+		LL_DEBUGS("Avatar") << llendl;
+		LL_DEBUGS("Avatar") << "Local COF, version req: " << content["observed"] << llendl;
+		LLInventoryModel::cat_array_t cat_array;
+		LLInventoryModel::item_array_t item_array;
+		gInventory.collectDescendents(LLAppearanceMgr::instance().getCOF(),
+									  cat_array,item_array,LLInventoryModel::EXCLUDE_TRASH);
+		for (S32 i=0; i<item_array.count(); i++)
+		{
+			const LLViewerInventoryItem* inv_item = item_array.get(i).get();
+			local_items.insert(inv_item->getUUID());
+			LL_DEBUGS("Avatar") << "item_id: " << inv_item->getUUID()
+								<< " linked_item_id: " << inv_item->getLinkedUUID()
+								<< " name: " << inv_item->getName()
+								<< llendl;
+		}
+		LL_DEBUGS("Avatar") << llendl;
+		for (std::set<LLUUID>::iterator it = local_items.begin(); it != local_items.end(); ++it)
+		{
+			if (ais_items.find(*it) == ais_items.end())
+			{
+				LL_DEBUGS("Avatar") << "LOCAL ONLY: " << *it << llendl;
+			}
+		}
+		for (std::set<LLUUID>::iterator it = ais_items.begin(); it != ais_items.end(); ++it)
+		{
+			if (local_items.find(*it) == local_items.end())
+			{
+				LL_DEBUGS("Avatar") << "AIS ONLY: " << *it << llendl;
+			}
+		}
 	}
-	
 
 	LLPointer<LLHTTPRetryPolicy> mRetryPolicy;
 };
@@ -3134,7 +3194,7 @@ void LLAppearanceMgr::requestServerAppearanceUpdate(LLCurl::ResponderPtr respond
 	body["cof_version"] = cof_version;
 	if (gSavedSettings.getBOOL("DebugForceAppearanceRequestFailure"))
 	{
-		body["cof_version"] = cof_version+1;
+		body["cof_version"] = cof_version+999;
 	}
 	LL_DEBUGS("Avatar") << "request url " << url << " my_cof_version " << cof_version << llendl;
 	
-- 
GitLab


From f92a830730b8acf8930a439ed874f27f77102260 Mon Sep 17 00:00:00 2001
From: prep <prep@lindenlab.com>
Date: Thu, 28 Feb 2013 13:40:36 -0500
Subject: [PATCH 329/436] Bug fix# we don't want to be incrementing the
 responderid in the base responder

---
 indra/newview/llviewerregion.cpp | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp
index 0033be2dbfa..9a1c5f89ef9 100755
--- a/indra/newview/llviewerregion.cpp
+++ b/indra/newview/llviewerregion.cpp
@@ -1651,7 +1651,9 @@ void LLViewerRegion::setSeedCapability(const std::string& url)
 		//to the "original" seed cap received and determine why there is problem!
 		LLSD capabilityNames = LLSD::emptyArray();
 		mImpl->buildCapabilityNames( capabilityNames );
-		LLHTTPClient::post( url, capabilityNames, BaseCapabilitiesCompleteTracker::build(getHandle(), ++mImpl->mHttpResponderID ),
+		S32 responderID = mImpl->mHttpResponderID+1;
+
+		LLHTTPClient::post( url, capabilityNames, BaseCapabilitiesCompleteTracker::build(getHandle(), responderID ),
 							LLSD(), CAP_REQUEST_TIMEOUT );
 		return;
     }
-- 
GitLab


From 22f05155990176ece57390e69de71deae9f34ed4 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Thu, 28 Feb 2013 14:53:53 -0500
Subject: [PATCH 330/436] SH-3899 WIP

---
 indra/newview/llappearancemgr.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index e12ecea7601..48a2ab0eb2a 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -3131,7 +3131,7 @@ class RequestAgentUpdateAppearanceResponder: public LLHTTPClient::Responder
 			}
 		}
 		LL_DEBUGS("Avatar") << llendl;
-		LL_DEBUGS("Avatar") << "Local COF, version req: " << content["observed"] << llendl;
+		LL_DEBUGS("Avatar") << "Local COF, version requested: " << content["observed"].asInteger() << llendl;
 		LLInventoryModel::cat_array_t cat_array;
 		LLInventoryModel::item_array_t item_array;
 		gInventory.collectDescendents(LLAppearanceMgr::instance().getCOF(),
-- 
GitLab


From ecb3d1d64d035f22c6d85864131cae6a1108fc68 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Thu, 28 Feb 2013 15:58:56 -0500
Subject: [PATCH 331/436] SH-3932 FIX - added LLSD blob for viewer-side cof
 contents, optionally included with request appearance update

---
 indra/newview/llappearancemgr.cpp | 25 +++++++++++++++++++++++++
 indra/newview/llappearancemgr.h   |  3 +++
 2 files changed, 28 insertions(+)

diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 48a2ab0eb2a..6c3858b947f 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -3165,6 +3165,27 @@ class RequestAgentUpdateAppearanceResponder: public LLHTTPClient::Responder
 	LLPointer<LLHTTPRetryPolicy> mRetryPolicy;
 };
 
+LLSD LLAppearanceMgr::dumpCOF() const
+{
+	LLSD result = LLSD::emptyArray();
+	
+	LLInventoryModel::cat_array_t cat_array;
+	LLInventoryModel::item_array_t item_array;
+	gInventory.collectDescendents(getCOF(),cat_array,item_array,LLInventoryModel::EXCLUDE_TRASH);
+	for (S32 i=0; i<item_array.count(); i++)
+	{
+		const LLViewerInventoryItem* inv_item = item_array.get(i).get();
+		LLSD item;
+		item["item_id"] = inv_item->getUUID();
+		item["linked_item_id"] = inv_item->getLinkedUUID();
+		item["name"] = inv_item->getName();
+		item["description"] = inv_item->getActualDescription();
+		item["type"] = inv_item->getActualType();
+		result.append(item);
+	}
+	return result;
+}
+
 void LLAppearanceMgr::requestServerAppearanceUpdate(LLCurl::ResponderPtr responder_ptr)
 {
 	if (gAgentAvatarp->isEditingAppearance()) 
@@ -3196,6 +3217,10 @@ void LLAppearanceMgr::requestServerAppearanceUpdate(LLCurl::ResponderPtr respond
 	{
 		body["cof_version"] = cof_version+999;
 	}
+	if (gSavedSettings.getBOOL("DebugAvatarAppearanceMessage"))
+	{
+		body["debug_cof"] = dumpCOF(); 	
+	}
 	LL_DEBUGS("Avatar") << "request url " << url << " my_cof_version " << cof_version << llendl;
 	
 	//LLCurl::ResponderPtr responder_ptr;
diff --git a/indra/newview/llappearancemgr.h b/indra/newview/llappearancemgr.h
index b35504eb1fa..84e08db4c8e 100755
--- a/indra/newview/llappearancemgr.h
+++ b/indra/newview/llappearancemgr.h
@@ -94,6 +94,9 @@ class LLAppearanceMgr: public LLSingleton<LLAppearanceMgr>
 	const LLUUID getCOF() const;
 	S32 getCOFVersion() const;
 
+	// Debugging - get truncated LLSD summary of COF contents.
+	LLSD dumpCOF() const;
+
 	// COF version of last viewer-initiated appearance update request.
 	S32 mLastUpdateRequestCOFVersion;
 	S32 getLastUpdateRequestCOFVersion() const;
-- 
GitLab


From c9feefb714291fc80f9eadfda2e1ec5f68ad0a84 Mon Sep 17 00:00:00 2001
From: prep <prep@lindenlab.com>
Date: Thu, 28 Feb 2013 16:22:27 -0500
Subject: [PATCH 332/436] WIP: Removed caching of responder id. Code to dump
 the new and old seed caps when we receive multiple seedcaps for a region.

---
 indra/newview/llviewerregion.cpp | 32 ++++++++++++++++++--------------
 1 file changed, 18 insertions(+), 14 deletions(-)

diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp
index 9a1c5f89ef9..e940dda010c 100755
--- a/indra/newview/llviewerregion.cpp
+++ b/indra/newview/llviewerregion.cpp
@@ -271,8 +271,8 @@ class BaseCapabilitiesCompleteTracker :  public LLHTTPClient::Responder
 {
 	LOG_CLASS(BaseCapabilitiesCompleteTracker);
 public:
-	BaseCapabilitiesCompleteTracker( U64 region_handle, S32 id )
-	: mRegionHandle(region_handle), mID(id)
+	BaseCapabilitiesCompleteTracker( U64 region_handle)
+	: mRegionHandle(region_handle)
 	{ }
 	
 	virtual ~BaseCapabilitiesCompleteTracker()
@@ -284,34 +284,40 @@ class BaseCapabilitiesCompleteTracker :  public LLHTTPClient::Responder
 	void result(const LLSD& content)
 	{
 		LLViewerRegion *regionp = LLWorld::getInstance()->getRegionFromHandle(mRegionHandle);
-		if(!regionp || mID != regionp->getHttpResponderID())
-		{			
+		if( !regionp ) 
+		{
 			return ;
 		}		
 		LLSD::map_const_iterator iter;
 		for(iter = content.beginMap(); iter != content.endMap(); ++iter)
 		{
-			regionp->setCapabilityDebug(iter->first, iter->second);		
+			regionp->setCapabilityDebug(iter->first, iter->second);	
+			//llinfos<<"BaseCapabilitiesCompleteTracker New Caps "<<iter->first<<" "<< iter->second<<llendl;
 		}
 		
 		if ( regionp->getRegionImpl()->mCapabilities.size() != regionp->getRegionImpl()->mSecondCapabilitiesTracker.size() )
 		{
-			llwarns<<"Sim sent duplicate seed caps that differs in size - most likely content."<<llendl;			
+			llinfos<<"BaseCapabilitiesCompleteTracker "<<"Sim sent duplicate seed caps that differs in size - most likely content."<<llendl;			
 			//todo#add cap debug versus original check?
+			/*CapabilityMap::const_iterator iter = regionp->getRegionImpl()->mCapabilities.begin();
+			while (iter!=regionp->getRegionImpl()->mCapabilities.end() )
+			{
+				llinfos<<"BaseCapabilitiesCompleteTracker Original "<<iter->first<<" "<< iter->second<<llendl;
+				++iter;
+			}
+			*/
 			regionp->getRegionImplNC()->mSecondCapabilitiesTracker.clear();
 		}
 
 	}
 
-	static BaseCapabilitiesCompleteTracker* build( U64 region_handle, S32 id )
+	static BaseCapabilitiesCompleteTracker* build( U64 region_handle )
 	{
-		return new BaseCapabilitiesCompleteTracker( region_handle, id );
+		return new BaseCapabilitiesCompleteTracker( region_handle );
 	}
 
 private:
-	U64 mRegionHandle;
-	S32 mID;
-
+	U64 mRegionHandle;	
 };
 
 
@@ -1651,9 +1657,7 @@ void LLViewerRegion::setSeedCapability(const std::string& url)
 		//to the "original" seed cap received and determine why there is problem!
 		LLSD capabilityNames = LLSD::emptyArray();
 		mImpl->buildCapabilityNames( capabilityNames );
-		S32 responderID = mImpl->mHttpResponderID+1;
-
-		LLHTTPClient::post( url, capabilityNames, BaseCapabilitiesCompleteTracker::build(getHandle(), responderID ),
+		LLHTTPClient::post( url, capabilityNames, BaseCapabilitiesCompleteTracker::build(getHandle() ),
 							LLSD(), CAP_REQUEST_TIMEOUT );
 		return;
     }
-- 
GitLab


From d1c144519306cae7eff7f781417482c85068988c Mon Sep 17 00:00:00 2001
From: Nyx Linden <nyx@lindenlab.com>
Date: Thu, 28 Feb 2013 17:25:37 -0500
Subject: [PATCH 333/436] SH-3909 Support avatar height offset

Adding a new visual param that allows users to manually adjust an offset for
how far off the ground (+ or -) their avatar's root bone is.

Supports the +-2m range people are used to adjusting in their viewers, but
new implementation should support server-generated appearances.
---
 indra/llappearance/llavatarappearance.cpp      |  9 ++++++++-
 indra/llappearance/llavatarappearance.h        |  1 +
 indra/newview/character/avatar_lad.xml         | 17 +++++++++++++++++
 indra/newview/llagent.cpp                      |  4 ++--
 indra/newview/llcallingcard.cpp                |  3 ++-
 indra/newview/llvoavatar.cpp                   | 10 ++++++----
 indra/newview/skins/default/xui/en/strings.xml |  1 +
 7 files changed, 37 insertions(+), 8 deletions(-)

diff --git a/indra/llappearance/llavatarappearance.cpp b/indra/llappearance/llavatarappearance.cpp
index 89e64822f8a..2d5744bb5ea 100755
--- a/indra/llappearance/llavatarappearance.cpp
+++ b/indra/llappearance/llavatarappearance.cpp
@@ -462,6 +462,10 @@ void LLAvatarAppearance::computeBodySize()
 
 	LLVector3 foot  = mFootLeftp->getPosition();
 
+	F32 old_offset = mAvatarOffset.mV[VZ];
+
+	mAvatarOffset.mV[VZ] = getVisualParamWeight(11001);
+
 	mPelvisToFoot = hip.mV[VZ] * pelvis_scale.mV[VZ] -
 				 	knee.mV[VZ] * hip_scale.mV[VZ] -
 				 	ankle.mV[VZ] * knee_scale.mV[VZ] -
@@ -481,7 +485,10 @@ void LLAvatarAppearance::computeBodySize()
 	new_body_size.mV[VX] = DEFAULT_AGENT_DEPTH;
 	new_body_size.mV[VY] = DEFAULT_AGENT_WIDTH;
 
-	if (new_body_size != mBodySize)
+	mAvatarOffset.mV[VX] = 0.0f;
+	mAvatarOffset.mV[VY] = 0.0f;
+
+	if (new_body_size != mBodySize || old_offset != mAvatarOffset.mV[VZ])
 	{
 		mBodySize = new_body_size;
 		bodySizeChanged();
diff --git a/indra/llappearance/llavatarappearance.h b/indra/llappearance/llavatarappearance.h
index 11ea5e5a464..bce25402581 100755
--- a/indra/llappearance/llavatarappearance.h
+++ b/indra/llappearance/llavatarappearance.h
@@ -160,6 +160,7 @@ class LLAvatarAppearance : public LLCharacter
 	//--------------------------------------------------------------------
 public:
 	LLVector3			mBodySize;
+	LLVector3			mAvatarOffset;
 protected:
 	F32					mPelvisToFoot;
 
diff --git a/indra/newview/character/avatar_lad.xml b/indra/newview/character/avatar_lad.xml
index 2b090c4fa4d..284e9c44b28 100755
--- a/indra/newview/character/avatar_lad.xml
+++ b/indra/newview/character/avatar_lad.xml
@@ -1084,6 +1084,23 @@
          scale="0 0 .5" />
       </param_skeleton>
     </param>
+
+    <param
+     id="11001"
+     group="0"
+     name="Hover"
+     wearable="shape"
+     edit_group="shape_body"
+     edit_group_order="4"
+     label_min="Lower"
+     label_max="Higher"
+     value_min="-2"
+     value_max="2"
+     value_default="0"
+     camera_distance="2.5">
+      <param_skeleton />
+    </param>
+
   </skeleton>
 
   <mesh
diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index e15c1a5104c..48faeb81e09 100755
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -2332,7 +2332,7 @@ void LLAgent::setStartPosition( U32 location_id )
     if (isAgentAvatarValid())
     {
         // the z height is at the agent's feet
-        agent_pos.mV[VZ] -= 0.5f * gAgentAvatarp->mBodySize.mV[VZ];
+        agent_pos.mV[VZ] -= 0.5f * (gAgentAvatarp->mBodySize.mV[VZ] + gAgentAvatarp->mAvatarOffset.mV[VZ]);
     }
 
     agent_pos.mV[VX] = llclamp( agent_pos.mV[VX], INSET, REGION_WIDTH - INSET );
@@ -4385,7 +4385,7 @@ void LLAgent::sendAgentSetAppearance()
 	// NOTE -- when we start correcting all of the other Havok geometry 
 	// to compensate for the COLLISION_TOLERANCE ugliness we will have 
 	// to tweak this number again
-	const LLVector3 body_size = gAgentAvatarp->mBodySize;
+	const LLVector3 body_size = gAgentAvatarp->mBodySize + gAgentAvatarp->mAvatarOffset;
 	msg->addVector3Fast(_PREHASH_Size, body_size);	
 
 	// To guard against out of order packets
diff --git a/indra/newview/llcallingcard.cpp b/indra/newview/llcallingcard.cpp
index 0d55c4429af..0b8f863e75b 100644
--- a/indra/newview/llcallingcard.cpp
+++ b/indra/newview/llcallingcard.cpp
@@ -183,7 +183,8 @@ LLVector3d LLAvatarTracker::getGlobalPos()
 		global_pos = object->getPositionGlobal();
 		// HACK - for making the tracker point above the avatar's head
 		// rather than its groin
-		global_pos.mdV[VZ] += 0.7f * ((LLVOAvatar *)object)->mBodySize.mV[VZ];
+		LLVOAvatar* av = (LLVOAvatar*)object;
+		global_pos.mdV[VZ] += 0.7f * (av->mBodySize.mV[VZ] + av->mAvatarOffset.mV[VZ]);
 
 		mTrackingData->mGlobalPositionEstimate = global_pos;
 	}
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 266b9fecd5f..aa90cbc5d27 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -2061,7 +2061,7 @@ void LLVOAvatar::idleUpdateVoiceVisualizer(bool voice_enabled)
 		{
 			LLVector3 tagPos = mRoot->getWorldPosition();
 			tagPos[VZ] -= mPelvisToFoot;
-			tagPos[VZ] += ( mBodySize[VZ] + 0.125f );
+			tagPos[VZ] += ( mBodySize[VZ] + mAvatarOffset[VZ] + 0.125f );
 			mVoiceVisualizer->setVoiceSourceWorldPosition( tagPos );
 		}
 	}//if ( voiceEnabled )
@@ -2805,12 +2805,12 @@ LLVector3 LLVOAvatar::idleUpdateNameTagPosition(const LLVector3& root_pos_last)
 	local_camera_up.normalize();
 	local_camera_up = local_camera_up * ~root_rot;
 
-	local_camera_up.scaleVec(mBodySize * 0.5f);
-	local_camera_at.scaleVec(mBodySize * 0.5f);
+	local_camera_up.scaleVec((mBodySize + mAvatarOffset) * 0.5f);
+	local_camera_at.scaleVec((mBodySize + mAvatarOffset) * 0.5f);
 
 	LLVector3 name_position = mRoot->getWorldPosition();
 	name_position[VZ] -= mPelvisToFoot;
-	name_position[VZ] += (mBodySize[VZ]* 0.55f);
+	name_position[VZ] += ((mBodySize[VZ] + mAvatarOffset[VZ])* 0.55f);
 	name_position += (local_camera_up * root_rot) - (projected_vec(local_camera_at * root_rot, camera_to_av));	
 	name_position += pixel_up_vec * 15.f;
 
@@ -3110,6 +3110,8 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent)
 		}
 
 		root_pos = gAgent.getPosGlobalFromAgent(getRenderPosition());
+		root_pos.mdV[VZ] += getVisualParamWeight(11001);
+
 
 		resolveHeightGlobal(root_pos, ground_under_pelvis, normal);
 		F32 foot_to_ground = (F32) (root_pos.mdV[VZ] - mPelvisToFoot - ground_under_pelvis.mdV[VZ]);				
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index 4383b985921..883a06d5e18 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -2991,6 +2991,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 <string name="Higher">Higher</string>
 <string name="Hip Length">Hip Length</string>
 <string name="Hip Width">Hip Width</string>
+<string name="Hover">Hover</string>
 <string name="In">In</string>
 <string name="In Shdw Color">Inner Shadow Color</string>
 <string name="In Shdw Opacity">Inner Shadow Opacity</string>
-- 
GitLab


From fa3f91e454ac82beffe4aca3789445e8ddf2b27f Mon Sep 17 00:00:00 2001
From: Nyx Linden <nyx@lindenlab.com>
Date: Thu, 28 Feb 2013 23:32:00 +0000
Subject: [PATCH 334/436] SH-3798 FIX avatar skins look dull

Wearable parsing error caused last texture in some assets to fail to parse.
Parser now does not throw an error if the wearable does not end in a newline
---
 indra/llappearance/llwearable.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/llappearance/llwearable.cpp b/indra/llappearance/llwearable.cpp
index 9fb8b7749fc..4028c1dfad2 100755
--- a/indra/llappearance/llwearable.cpp
+++ b/indra/llappearance/llwearable.cpp
@@ -455,7 +455,7 @@ BOOL LLWearable::getNextPopulatedLine(std::istream& input_stream, char* buffer,
 	}
 	while (input_stream.good() && buffer[0]=='\0');
 
-	return input_stream.good(); 
+	return (buffer[0] != '\0'); 
 }
 
 
-- 
GitLab


From 70e22de2bb9bf8515d7e3cd68c7328beb75409d6 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Fri, 1 Mar 2013 09:06:40 -0500
Subject: [PATCH 335/436] SH-3860 WIP - fixes the cloud on initial login, still
 have a COF version rae condition due to creation of the base outfit link

---
 indra/newview/llappearancemgr.cpp  |  9 ++++-----
 indra/newview/llinventorymodel.cpp | 11 -----------
 indra/newview/llstartup.cpp        |  4 ----
 3 files changed, 4 insertions(+), 20 deletions(-)
 mode change 100644 => 100755 indra/newview/llstartup.cpp

diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 6c3858b947f..d8ba4239b70 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -3658,9 +3658,9 @@ class CallAfterCategoryFetchStage1: public LLInventoryFetchDescendentsObserver
 	}
 	virtual void done()
 	{
-		// What we do here is get the complete information on the items in
-		// the library, and set up an observer that will wait for that to
-		// happen.
+		// What we do here is get the complete information on the
+		// items in the requested category, and set up an observer
+		// that will wait for that to happen.
 		LLInventoryModel::cat_array_t cat_array;
 		LLInventoryModel::item_array_t item_array;
 		gInventory.collectDescendents(mComplete.front(),
@@ -3674,9 +3674,8 @@ class CallAfterCategoryFetchStage1: public LLInventoryFetchDescendentsObserver
 					<< llendl;
 			//dec_busy_count();
 			gInventory.removeObserver(this);
+			doOnIdleOneTime(mCallable);
 
-			// lets notify observers that loading is finished.
-			gAgentWearables.notifyLoadingFinished();
 			delete this;
 			return;
 		}
diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp
index f0bfc688665..ac1f40b4862 100755
--- a/indra/newview/llinventorymodel.cpp
+++ b/indra/newview/llinventorymodel.cpp
@@ -1922,18 +1922,7 @@ bool LLInventoryModel::loadSkeleton(
 			for(cat_set_t::iterator it = temp_cats.begin(); it != temp_cats.end(); ++it)
 			{
 				LLViewerInventoryCategory *llvic = (*it);
-#if 0
 				llvic->setVersion(NO_VERSION);
-#else // SH-3860 WIP
-				if (llvic->getPreferredType()==LLFolderType::FT_CURRENT_OUTFIT && llvic->getVersion()==1)
-				{
-					llinfos << "preserving empty COF for first-time login" << llendl;
-				}
-				else
-				{
-					llvic->setVersion(NO_VERSION);
-				}
-#endif
 				addCategory(*it);
 			}
 		}
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
old mode 100644
new mode 100755
index 717f578ddbc..156aa252746
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -2580,13 +2580,9 @@ void LLStartUp::loadInitialOutfit( const std::string& outfit_folder_name,
 		bool do_copy = true;
 		bool do_append = false;
 		LLViewerInventoryCategory *cat = gInventory.getCategory(cat_id);
-#if 0 // SH-3860 WIP
 		// Need to fetch cof contents before we can wear.
 		callAfterCategoryFetch(LLAppearanceMgr::instance().getCOF(),
 							   boost::bind(&LLAppearanceMgr::wearInventoryCategory, LLAppearanceMgr::getInstance(), cat, do_copy, do_append));
-#else
-		LLAppearanceMgr::instance().wearInventoryCategory(cat, do_copy, do_append);
-#endif
 		lldebugs << "initial outfit category id: " << cat_id << llendl;
 	}
 
-- 
GitLab


From 312b2563548c19837707b6598932d8ef19430f73 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Fri, 1 Mar 2013 13:50:21 -0500
Subject: [PATCH 336/436] Periodic log messages to explain why user is still
 clouded, if they are

---
 indra/newview/llvoavatarself.cpp | 50 ++++++++++++++++++++++++++------
 1 file changed, 41 insertions(+), 9 deletions(-)

diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index c069488a37e..d3c91f3339b 100755
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -1946,19 +1946,41 @@ void LLVOAvatarSelf::dumpTotalLocalTextureByteCount()
 
 BOOL LLVOAvatarSelf::getIsCloud() const
 {
+	// Let people know why they're clouded without spamming them into oblivion.
+	bool do_warn = false;
+	static LLTimer time_since_notice;
+	F32 update_freq = 30.0;
+	if (time_since_notice.getElapsedTimeF32() > update_freq)
+	{
+		time_since_notice.reset();
+		do_warn = true;
+	}
+	
 	// do we have our body parts?
-	if (gAgentWearables.getWearableCount(LLWearableType::WT_SHAPE) == 0 ||
-		gAgentWearables.getWearableCount(LLWearableType::WT_HAIR) == 0 ||
-		gAgentWearables.getWearableCount(LLWearableType::WT_EYES) == 0 ||
-		gAgentWearables.getWearableCount(LLWearableType::WT_SKIN) == 0)	
+	S32 shape_count = gAgentWearables.getWearableCount(LLWearableType::WT_SHAPE);
+	S32 hair_count = gAgentWearables.getWearableCount(LLWearableType::WT_HAIR);
+	S32 eye_count = gAgentWearables.getWearableCount(LLWearableType::WT_EYES);
+	S32 skin_count = gAgentWearables.getWearableCount(LLWearableType::WT_SKIN);
+	if (!shape_count || !hair_count || !eye_count || !skin_count)
 	{
-		lldebugs << "No body parts" << llendl;
+		if (do_warn)
+		{
+			llinfos << "Self is clouded due to missing one or more required body parts: "
+					<< (shape_count ? "" : "SHAPE ")
+					<< (hair_count ? "" : "HAIR ")
+					<< (eye_count ? "" : "EYES ")
+					<< (skin_count ? "" : "SKIN ")
+					<< llendl;
+		}
 		return TRUE;
 	}
 
 	if (!isTextureDefined(TEX_HAIR, 0))
 	{
-		lldebugs << "No hair texture" << llendl;
+		if (do_warn)
+		{
+			llinfos << "Self is clouded because of no hair texture" << llendl;
+		}
 		return TRUE;
 	}
 
@@ -1967,14 +1989,20 @@ BOOL LLVOAvatarSelf::getIsCloud() const
 		if (!isLocalTextureDataAvailable(getLayerSet(BAKED_LOWER)) &&
 			(!isTextureDefined(TEX_LOWER_BAKED, 0)))
 		{
-			lldebugs << "Lower textures not baked" << llendl;
+			if (do_warn)
+			{
+				llinfos << "Self is clouded because lower textures not baked" << llendl;
+			}
 			return TRUE;
 		}
 
 		if (!isLocalTextureDataAvailable(getLayerSet(BAKED_UPPER)) &&
 			(!isTextureDefined(TEX_UPPER_BAKED, 0)))
 		{
-			lldebugs << "Upper textures not baked" << llendl;
+			if (do_warn)
+			{
+				llinfos << "Self is clouded because upper textures not baked" << llendl;
+			}
 			return TRUE;
 		}
 
@@ -1991,7 +2019,11 @@ BOOL LLVOAvatarSelf::getIsCloud() const
 			const LLViewerTexture* baked_img = getImage( texture_data.mTextureIndex, 0 );
 			if (!baked_img || !baked_img->hasGLTexture())
 			{
-				lldebugs << "Texture at index " << i << " (texture index is " << texture_data.mTextureIndex << ") is not loaded" << llendl;
+				if (do_warn)
+				{
+					llinfos << "Self is clouded because texture at index " << i
+							<< " (texture index is " << texture_data.mTextureIndex << ") is not loaded" << llendl;
+				}
 				return TRUE;
 			}
 		}
-- 
GitLab


From 3e5599a827238faa4fcccfad9702428ce4ea6f46 Mon Sep 17 00:00:00 2001
From: Nyx Linden <nyx@lindenlab.com>
Date: Fri, 1 Mar 2013 19:39:47 -0500
Subject: [PATCH 337/436] SH-3649  WIP newly created pants do not show up on
 mac/windows.

Added an initializer for the wearable definition version when creating a new wearable.
Should fix the issue but need to test.
---
 indra/newview/llwearablelist.cpp | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/indra/newview/llwearablelist.cpp b/indra/newview/llwearablelist.cpp
index 507ce57e794..ef1a953f59d 100755
--- a/indra/newview/llwearablelist.cpp
+++ b/indra/newview/llwearablelist.cpp
@@ -249,6 +249,8 @@ LLViewerWearable* LLWearableList::createNewWearable( LLWearableType::EType type,
 	perm.initMasks(PERM_ALL, PERM_ALL, PERM_NONE, PERM_NONE, PERM_MOVE | PERM_TRANSFER);
 	wearable->setPermissions(perm);
 
+	wearable->setDefinitionVersion(LLWearable::getCurrentDefinitionVersion());
+
 	// Description and sale info have default values.
 	wearable->setParamsToDefaults();
 	wearable->setTexturesToDefaults();
-- 
GitLab


From 8410887e2e8327f3a24e74f6bc89a4feddcbff62 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Sun, 3 Mar 2013 23:32:48 -0800
Subject: [PATCH 338/436] Adding DebugAvatarExperimentalServerAppearanceUpdate
 setting to test sending full cof contents

---
 indra/newview/app_settings/settings.xml | 11 ++++++
 indra/newview/llappearancemgr.cpp       | 48 +++++++++++++++++++++----
 2 files changed, 52 insertions(+), 7 deletions(-)

diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 826a79b455c..215fcf4eab3 100755
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -1937,6 +1937,17 @@
     <string>Boolean</string>
     <key>Value</key>
     <integer>0</integer>
+  </map>
+  <key>DebugAvatarExperimentalServerAppearanceUpdate</key>
+  <map>
+    <key>Comment</key>
+    <string>Experiment with sending full cof_contents instead of cof_version</string>
+    <key>Persist</key>
+    <integer>1</integer>
+    <key>Type</key>
+    <string>Boolean</string>
+    <key>Value</key>
+    <integer>0</integer>
   </map>
 	<key>DebugAvatarRezTime</key>
 	<map>
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index d8ba4239b70..cc78d5a2fc4 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -3177,10 +3177,41 @@ LLSD LLAppearanceMgr::dumpCOF() const
 		const LLViewerInventoryItem* inv_item = item_array.get(i).get();
 		LLSD item;
 		item["item_id"] = inv_item->getUUID();
-		item["linked_item_id"] = inv_item->getLinkedUUID();
 		item["name"] = inv_item->getName();
 		item["description"] = inv_item->getActualDescription();
-		item["type"] = inv_item->getActualType();
+		item["asset_type"] = inv_item->getActualType();
+		item["inv_type"] = inv_item->getInventoryType();
+		item["linked_id"] = inv_item->getLinkedUUID();
+
+		if (LLAssetType::AT_LINK == inv_item->getActualType())
+		{
+			const LLViewerInventoryItem* linked_item = inv_item->getLinkedItem();
+			if (NULL == linked_item)
+			{
+				llwarns << "Broken link for item '" << inv_item->getName()
+						<< "' (" << inv_item->getUUID()
+						<< ") during requestServerAppearanceUpdate" << llendl;
+				continue;
+			}
+			if (linked_item->getAssetUUID().isNull())
+			{
+				llwarns << "Broken link (null asset) for item '" << inv_item->getName()
+						<< "' (" << inv_item->getUUID()
+						<< ") during requestServerAppearanceUpdate" << llendl;
+				continue;
+			}
+			item["linked_asset_id"] = linked_item->getAssetUUID();
+			item["linked_asset_type"] = linked_item->getType();
+			item["linked_flags"] = LLSD::Integer(linked_item->getFlags());
+		}
+		else if (LLAssetType::AT_LINK_FOLDER != inv_item->getActualType())
+		{
+			llwarns << "Non-link item '" << inv_item->getName()
+					<< "' (" << inv_item->getUUID()
+					<< ") type " << (S32) inv_item->getActualType()
+					<< " during requestServerAppearanceUpdate" << llendl;
+			continue;
+		}
 		result.append(item);
 	}
 	return result;
@@ -3212,14 +3243,17 @@ void LLAppearanceMgr::requestServerAppearanceUpdate(LLCurl::ResponderPtr respond
 	
 	LLSD body;
 	S32 cof_version = getCOFVersion();
-	body["cof_version"] = cof_version;
-	if (gSavedSettings.getBOOL("DebugForceAppearanceRequestFailure"))
+	if (gSavedSettings.getBOOL("DebugAvatarExperimentalServerAppearanceUpdate"))
 	{
-		body["cof_version"] = cof_version+999;
+		body["cof_contents"] = dumpCOF();
 	}
-	if (gSavedSettings.getBOOL("DebugAvatarAppearanceMessage"))
+	else
 	{
-		body["debug_cof"] = dumpCOF(); 	
+		body["cof_version"] = cof_version;
+		if (gSavedSettings.getBOOL("DebugForceAppearanceRequestFailure"))
+		{
+			body["cof_version"] = cof_version+999;
+		}
 	}
 	LL_DEBUGS("Avatar") << "request url " << url << " my_cof_version " << cof_version << llendl;
 	
-- 
GitLab


From ec1bc19d01715299209d9f00230e4681917bde12 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Mon, 4 Mar 2013 01:09:45 -0800
Subject: [PATCH 339/436] Adding md5sum calculation to experimental server
 appearance update message

---
 indra/newview/llappearancemgr.cpp | 36 +++++++++++++++++++++++++------
 1 file changed, 29 insertions(+), 7 deletions(-)

diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index cc78d5a2fc4..2cebf6863ee 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -26,6 +26,7 @@
 
 #include "llviewerprecompiledheaders.h"
 
+#include <boost/lexical_cast.hpp>
 #include "llaccordionctrltab.h"
 #include "llagent.h"
 #include "llagentcamera.h"
@@ -52,6 +53,11 @@
 #include "llsdutil.h"
 #include "llsdserialize.h"
 
+#if LL_MSVC
+// disable boost::lexical_cast warning
+#pragma warning (disable:4702)
+#endif
+
 std::string self_av_string()
 {
 	// On logout gAgentAvatarp can already be invalid
@@ -3167,7 +3173,8 @@ class RequestAgentUpdateAppearanceResponder: public LLHTTPClient::Responder
 
 LLSD LLAppearanceMgr::dumpCOF() const
 {
-	LLSD result = LLSD::emptyArray();
+	LLSD links = LLSD::emptyArray();
+	LLMD5 md5;
 	
 	LLInventoryModel::cat_array_t cat_array;
 	LLInventoryModel::item_array_t item_array;
@@ -3176,12 +3183,17 @@ LLSD LLAppearanceMgr::dumpCOF() const
 	{
 		const LLViewerInventoryItem* inv_item = item_array.get(i).get();
 		LLSD item;
-		item["item_id"] = inv_item->getUUID();
+		LLUUID item_id(inv_item->getUUID());
+		item["item_id"] = item_id;
+		md5.update((unsigned char*)item_id.mData, 16);
 		item["name"] = inv_item->getName();
 		item["description"] = inv_item->getActualDescription();
+		md5.update(inv_item->getActualDescription());
 		item["asset_type"] = inv_item->getActualType();
 		item["inv_type"] = inv_item->getInventoryType();
-		item["linked_id"] = inv_item->getLinkedUUID();
+		LLUUID linked_id(inv_item->getLinkedUUID());
+		item["linked_id"] = linked_id;
+		md5.update((unsigned char*)linked_id.mData, 16);
 
 		if (LLAssetType::AT_LINK == inv_item->getActualType())
 		{
@@ -3200,9 +3212,13 @@ LLSD LLAppearanceMgr::dumpCOF() const
 						<< ") during requestServerAppearanceUpdate" << llendl;
 				continue;
 			}
-			item["linked_asset_id"] = linked_item->getAssetUUID();
+			LLUUID linked_asset_id(linked_item->getAssetUUID());
+			item["linked_asset_id"] = linked_asset_id;
+			md5.update((unsigned char*)linked_asset_id.mData, 16);
 			item["linked_asset_type"] = linked_item->getType();
-			item["linked_flags"] = LLSD::Integer(linked_item->getFlags());
+			U32 flags = linked_item->getFlags();
+			item["linked_flags"] = LLSD::Integer(flags);
+			md5.update(boost::lexical_cast<std::string>(flags));
 		}
 		else if (LLAssetType::AT_LINK_FOLDER != inv_item->getActualType())
 		{
@@ -3212,8 +3228,14 @@ LLSD LLAppearanceMgr::dumpCOF() const
 					<< " during requestServerAppearanceUpdate" << llendl;
 			continue;
 		}
-		result.append(item);
+		links.append(item);
 	}
+	LLSD result = LLSD::emptyMap();
+	result["cof_contents"] = links;
+	char cof_md5sum[MD5HEX_STR_SIZE];
+	md5.finalize();
+	md5.hex_digest(cof_md5sum);
+	result["cof_md5sum"] = std::string(cof_md5sum);
 	return result;
 }
 
@@ -3245,7 +3267,7 @@ void LLAppearanceMgr::requestServerAppearanceUpdate(LLCurl::ResponderPtr respond
 	S32 cof_version = getCOFVersion();
 	if (gSavedSettings.getBOOL("DebugAvatarExperimentalServerAppearanceUpdate"))
 	{
-		body["cof_contents"] = dumpCOF();
+		body = dumpCOF();
 	}
 	else
 	{
-- 
GitLab


From 2e942026865e921ad5bc89cc5d8311abf0924163 Mon Sep 17 00:00:00 2001
From: prep <prep@lindenlab.com>
Date: Mon, 4 Mar 2013 13:14:35 -0500
Subject: [PATCH 340/436] Removed deprecated calls to incrementCofVersion

---
 indra/newview/llpaneleditwearable.cpp | 10 +---------
 1 file changed, 1 insertion(+), 9 deletions(-)

diff --git a/indra/newview/llpaneleditwearable.cpp b/indra/newview/llpaneleditwearable.cpp
index a49bbcd924a..e71dba5caee 100755
--- a/indra/newview/llpaneleditwearable.cpp
+++ b/indra/newview/llpaneleditwearable.cpp
@@ -1105,15 +1105,7 @@ void LLPanelEditWearable::saveChanges(bool force_save_as)
                 gAgentWearables.saveWearable(mWearablePtr->getType(), index, TRUE, new_name);
         }
 
-	if (gAgent.getRegion() && gAgent.getRegion()->getCentralBakeVersion() > 0)
-	{
-		LLAppearanceMgr::getInstance()->incrementCofVersion();
-	}
-	else
-	{
-		// *HACK This should be removed when all regions support the IncrementCOFVersion capability.
-		incrementCofVersionLegacy();
-	}
+	
 }
 
 void LLPanelEditWearable::revertChanges()
-- 
GitLab


From 2efe411a4fd8d76e9a153ed4aad9235819738328 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Mon, 4 Mar 2013 12:02:02 -0800
Subject: [PATCH 341/436] Reducing amount of cof link data sent to appearance
 update service.  Allowing links to items with 'null' asset ids to be passed

---
 indra/newview/llappearancemgr.cpp | 21 ++++++++-------------
 1 file changed, 8 insertions(+), 13 deletions(-)

diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 2cebf6863ee..fa239e2c8a2 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -3184,13 +3184,10 @@ LLSD LLAppearanceMgr::dumpCOF() const
 		const LLViewerInventoryItem* inv_item = item_array.get(i).get();
 		LLSD item;
 		LLUUID item_id(inv_item->getUUID());
-		item["item_id"] = item_id;
 		md5.update((unsigned char*)item_id.mData, 16);
-		item["name"] = inv_item->getName();
 		item["description"] = inv_item->getActualDescription();
 		md5.update(inv_item->getActualDescription());
 		item["asset_type"] = inv_item->getActualType();
-		item["inv_type"] = inv_item->getInventoryType();
 		LLUUID linked_id(inv_item->getLinkedUUID());
 		item["linked_id"] = linked_id;
 		md5.update((unsigned char*)linked_id.mData, 16);
@@ -3205,19 +3202,17 @@ LLSD LLAppearanceMgr::dumpCOF() const
 						<< ") during requestServerAppearanceUpdate" << llendl;
 				continue;
 			}
-			if (linked_item->getAssetUUID().isNull())
-			{
-				llwarns << "Broken link (null asset) for item '" << inv_item->getName()
-						<< "' (" << inv_item->getUUID()
-						<< ") during requestServerAppearanceUpdate" << llendl;
-				continue;
-			}
+			// Some assets may be 'hidden' and show up as null in the viewer.
+			//if (linked_item->getAssetUUID().isNull())
+			//{
+			//	llwarns << "Broken link (null asset) for item '" << inv_item->getName()
+			//			<< "' (" << inv_item->getUUID()
+			//			<< ") during requestServerAppearanceUpdate" << llendl;
+			//	continue;
+			//}
 			LLUUID linked_asset_id(linked_item->getAssetUUID());
-			item["linked_asset_id"] = linked_asset_id;
 			md5.update((unsigned char*)linked_asset_id.mData, 16);
-			item["linked_asset_type"] = linked_item->getType();
 			U32 flags = linked_item->getFlags();
-			item["linked_flags"] = LLSD::Integer(flags);
 			md5.update(boost::lexical_cast<std::string>(flags));
 		}
 		else if (LLAssetType::AT_LINK_FOLDER != inv_item->getActualType())
-- 
GitLab


From 9a0c52a247ecbd79f5f872ceb97a6be3e0499bea Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Tue, 5 Mar 2013 11:28:06 -0800
Subject: [PATCH 342/436] Adding debug setting to allow overriding appearance
 service url

---
 indra/newview/app_settings/settings.xml | 22 +++++++++++-----------
 indra/newview/llappearancemgr.cpp       |  9 +++++++++
 indra/newview/llappearancemgr.h         |  7 +++++++
 indra/newview/llstartup.cpp             |  2 +-
 indra/newview/llvoavatar.cpp            |  7 ++++---
 indra/newview/llvoavatarself.cpp        |  2 +-
 6 files changed, 33 insertions(+), 16 deletions(-)

diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 215fcf4eab3..089bc7d4cdb 100755
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -71,17 +71,6 @@
       <key>Value</key>
       <integer>0</integer>
     </map>
-    <key>AgentAppearanceServiceURL</key>
-    <map>
-      <key>Comment</key>
-      <string>Current Session Agent Appearance Service URL</string>
-      <key>Persist</key>
-      <integer>0</integer>
-      <key>Type</key>
-      <string>String</string>
-      <key>Value</key>
-      <string></string>
-    </map>
     <key>AlertedUnsupportedHardware</key>
     <map>
       <key>Comment</key>
@@ -1949,6 +1938,17 @@
     <key>Value</key>
     <integer>0</integer>
   </map>
+    <key>DebugAvatarAppearanceServiceURLOverride</key>
+    <map>
+      <key>Comment</key>
+      <string>URL to use for baked texture requests; overrides value returned by login server.</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>String</string>
+      <key>Value</key>
+      <string />
+    </map>
 	<key>DebugAvatarRezTime</key>
 	<map>
 		<key>Comment</key>
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index fa239e2c8a2..1561f8d74ca 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -3359,6 +3359,15 @@ void LLAppearanceMgr::incrementCofVersion(LLHTTPClient::ResponderPtr responder_p
 	LLHTTPClient::get(url, body, responder_ptr, headers, 30.0f);
 }
 
+std::string LLAppearanceMgr::getAppearanceServiceURL() const
+{
+	if (gSavedSettings.getString("DebugAvatarAppearanceServiceURLOverride").empty())
+	{
+		return mAppearanceServiceURL;
+	}
+	return gSavedSettings.getString("DebugAvatarAppearanceServiceURLOverride");
+}
+
 void show_created_outfit(LLUUID& folder_id, bool show_panel = true)
 {
 	if (!LLApp::isRunning())
diff --git a/indra/newview/llappearancemgr.h b/indra/newview/llappearancemgr.h
index 84e08db4c8e..d49f5d6c155 100755
--- a/indra/newview/llappearancemgr.h
+++ b/indra/newview/llappearancemgr.h
@@ -205,6 +205,13 @@ class LLAppearanceMgr: public LLSingleton<LLAppearanceMgr>
 	// *HACK Remove this after server side texture baking is deployed on all sims.
 	void incrementCofVersionLegacy();
 
+	void setAppearanceServiceURL(const std::string& url) { mAppearanceServiceURL = url; }
+	std::string getAppearanceServiceURL() const;
+
+private:
+	std::string		mAppearanceServiceURL;
+	
+
 protected:
 	LLAppearanceMgr();
 	~LLAppearanceMgr();
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index 156aa252746..e6e7b8650c0 100755
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -3449,7 +3449,7 @@ bool process_login_success_response()
 	std::string agent_appearance_url = response["agent_appearance_service"];
 	if (!agent_appearance_url.empty())
 	{
-		gSavedSettings.setString("AgentAppearanceServiceURL", agent_appearance_url);
+		LLAppearanceMgr::instance().setAppearanceServiceURL(agent_appearance_url);
 	}
 
 	// Set the location of the snapshot sharing config endpoint
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index f6fd8b24092..df44251c323 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -4496,7 +4496,8 @@ const std::string LLVOAvatar::getImageURL(const U8 te, const LLUUID &uuid)
 	std::string url = "";
 	if (isUsingServerBakes())
 	{
-		if (gSavedSettings.getString("AgentAppearanceServiceURL").empty())
+		const std::string& appearance_service_url = LLAppearanceMgr::instance().getAppearanceServiceURL();
+		if (appearance_service_url.empty())
 		{
 			// Probably a server-side issue if we get here:
 			llwarns << "AgentAppearanceServiceURL not set - Baked texture requests will fail" << llendl;
@@ -4506,7 +4507,7 @@ const std::string LLVOAvatar::getImageURL(const U8 te, const LLUUID &uuid)
 		const LLAvatarAppearanceDictionary::TextureEntry* texture_entry = LLAvatarAppearanceDictionary::getInstance()->getTexture((ETextureIndex)te);
 		if (texture_entry != NULL)
 		{
-			url = gSavedSettings.getString("AgentAppearanceServiceURL") + "texture/" + getID().asString() + "/" + texture_entry->mDefaultImageName + "/" + uuid.asString();
+			url = appearance_service_url + "texture/" + getID().asString() + "/" + texture_entry->mDefaultImageName + "/" + uuid.asString();
 			//llinfos << "baked texture url: " << url << llendl;
 		}
 	}
@@ -7256,7 +7257,7 @@ void LLVOAvatar::onBakedTextureLoaded(BOOL success,
 									  LLViewerFetchedTexture *src_vi, LLImageRaw* src, LLImageRaw* aux_src,
 									  S32 discard_level, BOOL final, void* userdata)
 {
-	// llinfos << "onBakedTextureLoaded: " << src_vi->getID() << llendl;
+	LL_DEBUGS("Avatar") << "onBakedTextureLoaded: " << src_vi->getID() << LL_ENDL;
 
 	LLUUID id = src_vi->getID();
 	LLUUID *avatar_idp = (LLUUID *)userdata;
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index d3c91f3339b..3605383c5ce 100755
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -2469,7 +2469,7 @@ void LLVOAvatarSelf::checkForUnsupportedServerBakeAppearance()
 		return;
 
 	// if baked image service is unknown, need to refresh.
-	if (gSavedSettings.getString("AgentAppearanceServiceURL").empty())
+	if (LLAppearanceMgr::instance().getAppearanceServiceURL().empty())
 	{
 		CheckAgentAppearanceServiceResponder::forceAppearanceUpdate();
 	}
-- 
GitLab


From 54cdc322b8f2bd35b289cacf3493622e7cc51194 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Tue, 5 Mar 2013 22:05:22 -0800
Subject: [PATCH 343/436] Fixing issues with not detecting when LLSD XML
 parsing fails.  Changing most http error handlers to understand LLSD error
 responses.  Fleshing out most http error handler message spam.

---
 indra/llcommon/llmetricperformancetester.cpp  |  2 +-
 indra/llcommon/llsdserialize.h                | 16 ++---
 indra/llcommon/llsdserialize_xml.cpp          | 18 ++++--
 indra/llcrashlogger/llcrashlogger.cpp         |  2 +-
 indra/llmessage/llavatarnamecache.cpp         |  6 +-
 indra/llmessage/llcachename.cpp               |  4 +-
 indra/llmessage/llcurl.cpp                    |  4 +-
 indra/llplugin/llpluginprocessparent.cpp      |  3 +-
 indra/llui/llspellcheck.cpp                   |  8 ++-
 indra/llxml/llcontrol.cpp                     |  6 +-
 indra/newview/llaccountingcostmanager.cpp     |  4 +-
 indra/newview/llagent.cpp                     | 13 ++--
 indra/newview/llagentpilot.cpp                |  2 +-
 indra/newview/llappearancemgr.cpp             |  6 +-
 indra/newview/llassetuploadqueue.cpp          |  7 ++-
 indra/newview/llassetuploadresponders.cpp     | 15 ++---
 indra/newview/llassetuploadresponders.h       |  6 +-
 indra/newview/llclassifiedstatsresponder.cpp  |  5 +-
 indra/newview/llclassifiedstatsresponder.h    |  2 +-
 indra/newview/llestateinfomodel.cpp           |  4 +-
 indra/newview/lleventpoll.cpp                 | 12 ++--
 indra/newview/llfasttimerview.cpp             |  6 +-
 indra/newview/llfloateravatarpicker.cpp       |  3 +-
 indra/newview/llfloaterregiondebugconsole.cpp |  2 +-
 indra/newview/llfloaterregioninfo.cpp         | 16 ++---
 indra/newview/llfloaterreporter.cpp           |  2 +-
 indra/newview/llfloaterscriptlimits.cpp       | 16 ++---
 indra/newview/llfloaterscriptlimits.h         |  8 +--
 indra/newview/llgroupmgr.cpp                  |  7 ++-
 indra/newview/llhomelocationresponder.cpp     |  4 +-
 indra/newview/llhomelocationresponder.h       |  2 +-
 indra/newview/llimfloater.cpp                 |  5 +-
 indra/newview/llimpanel.cpp                   |  5 +-
 indra/newview/llimview.cpp                    | 11 +++-
 indra/newview/llinspectavatar.cpp             |  4 +-
 indra/newview/llinventorymodel.cpp            | 10 ++--
 indra/newview/llinventorymodel.h              |  2 +-
 .../llinventorymodelbackgroundfetch.cpp       | 14 ++---
 indra/newview/llmediadataclient.cpp           | 10 ++--
 indra/newview/llmediadataclient.h             |  4 +-
 indra/newview/llpathfindingmanager.cpp        | 59 +++++++++++--------
 indra/newview/llpathfindingnavmesh.cpp        |  5 +-
 indra/newview/llpathfindingnavmesh.h          |  2 +-
 indra/newview/llproductinforequest.cpp        |  6 +-
 indra/newview/llremoteparcelrequest.cpp       |  6 +-
 indra/newview/llremoteparcelrequest.h         |  2 +-
 indra/newview/llspeakers.cpp                  |  4 +-
 indra/newview/lluploadfloaterobservers.cpp    |  5 +-
 indra/newview/lluploadfloaterobservers.h      |  2 +-
 indra/newview/llviewerdisplayname.cpp         |  4 +-
 indra/newview/llviewerobjectlist.cpp          | 12 ++--
 indra/newview/llviewerregion.cpp              | 15 +++--
 indra/newview/llviewerstats.cpp               |  6 +-
 indra/newview/llvoavatarself.cpp              |  7 ++-
 indra/newview/llvoicechannel.cpp              | 10 ++--
 indra/newview/llvoicevivox.cpp                | 21 +++----
 indra/newview/llwebsharing.cpp                | 16 ++---
 indra/newview/llwlhandlers.cpp                | 17 +++---
 indra/newview/llwlhandlers.h                  |  5 +-
 .../newview/tests/llmediadataclient_test.cpp  |  4 +-
 60 files changed, 267 insertions(+), 217 deletions(-)

diff --git a/indra/llcommon/llmetricperformancetester.cpp b/indra/llcommon/llmetricperformancetester.cpp
index 41d3eb0bf36..731e58bd20e 100644
--- a/indra/llcommon/llmetricperformancetester.cpp
+++ b/indra/llcommon/llmetricperformancetester.cpp
@@ -100,7 +100,7 @@ LLSD LLMetricPerformanceTesterBasic::analyzeMetricPerformanceLog(std::istream& i
 	LLSD ret;
 	LLSD cur;
 	
-	while (!is.eof() && LLSDSerialize::fromXML(cur, is))
+	while (!is.eof() && LLSDParser::PARSE_FAILURE != LLSDSerialize::fromXML(cur, is))
 	{
 		for (LLSD::map_iterator iter = cur.beginMap(); iter != cur.endMap(); ++iter)
 		{
diff --git a/indra/llcommon/llsdserialize.h b/indra/llcommon/llsdserialize.h
index 86e3fc864c0..e7a5507385c 100644
--- a/indra/llcommon/llsdserialize.h
+++ b/indra/llcommon/llsdserialize.h
@@ -300,7 +300,7 @@ class LL_COMMON_API LLSDXMLParser : public LLSDParser
 	/** 
 	 * @brief Constructor
 	 */
-	LLSDXMLParser();
+	LLSDXMLParser(bool emit_errors=true);
 
 protected:
 	/** 
@@ -747,25 +747,25 @@ class LL_COMMON_API LLSDSerialize
 		return f->format(sd, str, LLSDFormatter::OPTIONS_PRETTY);
 	}
 
-	static S32 fromXMLEmbedded(LLSD& sd, std::istream& str)
+	static S32 fromXMLEmbedded(LLSD& sd, std::istream& str, bool emit_errors=true)
 	{
 		// no need for max_bytes since xml formatting is not
 		// subvertable by bad sizes.
-		LLPointer<LLSDXMLParser> p = new LLSDXMLParser;
+		LLPointer<LLSDXMLParser> p = new LLSDXMLParser(emit_errors);
 		return p->parse(str, sd, LLSDSerialize::SIZE_UNLIMITED);
 	}
 	// Line oriented parser, 30% faster than fromXML(), but can
 	// only be used when you know you have the complete XML
 	// document available in the stream.
-	static S32 fromXMLDocument(LLSD& sd, std::istream& str)
+	static S32 fromXMLDocument(LLSD& sd, std::istream& str, bool emit_errors=true)
 	{
-		LLPointer<LLSDXMLParser> p = new LLSDXMLParser();
+		LLPointer<LLSDXMLParser> p = new LLSDXMLParser(emit_errors);
 		return p->parseLines(str, sd);
 	}
-	static S32 fromXML(LLSD& sd, std::istream& str)
+	static S32 fromXML(LLSD& sd, std::istream& str, bool emit_errors=true)
 	{
-		return fromXMLEmbedded(sd, str);
-//		return fromXMLDocument(sd, str);
+		return fromXMLEmbedded(sd, str, emit_errors);
+//		return fromXMLDocument(sd, str, emit_errors);
 	}
 
 	/*
diff --git a/indra/llcommon/llsdserialize_xml.cpp b/indra/llcommon/llsdserialize_xml.cpp
index 34b3dbb99a3..cef743a7bea 100644
--- a/indra/llcommon/llsdserialize_xml.cpp
+++ b/indra/llcommon/llsdserialize_xml.cpp
@@ -250,7 +250,7 @@ std::string LLSDXMLFormatter::escapeString(const std::string& in)
 class LLSDXMLParser::Impl
 {
 public:
-	Impl();
+	Impl(bool emit_errors);
 	~Impl();
 	
 	S32 parse(std::istream& input, LLSD& data);
@@ -294,6 +294,7 @@ class LLSDXMLParser::Impl
 	
 	static const XML_Char* findAttribute(const XML_Char* name, const XML_Char** pairs);
 	
+	bool mEmitErrors;
 
 	XML_Parser	mParser;
 
@@ -315,7 +316,8 @@ class LLSDXMLParser::Impl
 };
 
 
-LLSDXMLParser::Impl::Impl()
+LLSDXMLParser::Impl::Impl(bool emit_errors)
+	: mEmitErrors(emit_errors)
 {
 	mParser = XML_ParserCreate(NULL);
 	reset();
@@ -402,7 +404,10 @@ S32 LLSDXMLParser::Impl::parse(std::istream& input, LLSD& data)
 		{
 			((char*) buffer)[count ? count - 1 : 0] = '\0';
 		}
-		llinfos << "LLSDXMLParser::Impl::parse: XML_STATUS_ERROR parsing:" << (char*) buffer << llendl;
+		if (mEmitErrors)
+		{
+			llinfos << "LLSDXMLParser::Impl::parse: XML_STATUS_ERROR parsing:" << (char*) buffer << llendl;
+		}
 		data = LLSD();
 		return LLSDParser::PARSE_FAILURE;
 	}
@@ -480,7 +485,10 @@ S32 LLSDXMLParser::Impl::parseLines(std::istream& input, LLSD& data)
 	if (status == XML_STATUS_ERROR  
 		&& !mGracefullStop)
 	{
-		llinfos << "LLSDXMLParser::Impl::parseLines: XML_STATUS_ERROR" << llendl;
+		if (mEmitErrors)
+		{
+			llinfos << "LLSDXMLParser::Impl::parseLines: XML_STATUS_ERROR" << llendl;
+		}
 		return LLSDParser::PARSE_FAILURE;
 	}
 
@@ -897,7 +905,7 @@ LLSDXMLParser::Impl::Element LLSDXMLParser::Impl::readElement(const XML_Char* na
 /**
  * LLSDXMLParser
  */
-LLSDXMLParser::LLSDXMLParser() : impl(* new Impl)
+LLSDXMLParser::LLSDXMLParser(bool emit_errors /* = true */) : impl(* new Impl(emit_errors))
 {
 }
 
diff --git a/indra/llcrashlogger/llcrashlogger.cpp b/indra/llcrashlogger/llcrashlogger.cpp
index 34e25a8a715..fb2d43e3b0d 100644
--- a/indra/llcrashlogger/llcrashlogger.cpp
+++ b/indra/llcrashlogger/llcrashlogger.cpp
@@ -147,7 +147,7 @@ void LLCrashLogger::gatherFiles()
 
 	// Look for it in the debug_info.log file
 	if (debug_log_file.is_open())
-	{		
+	{
 		LLSDSerialize::fromXML(mDebugLog, debug_log_file);
 
 		mCrashInPreviousExec = mDebugLog["CrashNotHandled"].asBoolean();
diff --git a/indra/llmessage/llavatarnamecache.cpp b/indra/llmessage/llavatarnamecache.cpp
index a6e2c89ba48..f9e3ad26f74 100644
--- a/indra/llmessage/llavatarnamecache.cpp
+++ b/indra/llmessage/llavatarnamecache.cpp
@@ -443,8 +443,10 @@ void LLAvatarNameCache::cleanupClass()
 void LLAvatarNameCache::importFile(std::istream& istr)
 {
 	LLSD data;
-	S32 parse_count = LLSDSerialize::fromXMLDocument(data, istr);
-	if (parse_count < 1) return;
+	if (LLSDParser::PARSE_FAILURE == LLSDSerialize::fromXMLDocument(data, istr))
+	{
+		return;
+	}
 
 	// by convention LLSD storage is a map
 	// we only store one entry in the map
diff --git a/indra/llmessage/llcachename.cpp b/indra/llmessage/llcachename.cpp
index 8f4af1984c7..d9eb65ff598 100644
--- a/indra/llmessage/llcachename.cpp
+++ b/indra/llmessage/llcachename.cpp
@@ -308,8 +308,10 @@ boost::signals2::connection LLCacheName::addObserver(const LLCacheNameCallback&
 bool LLCacheName::importFile(std::istream& istr)
 {
 	LLSD data;
-	if(LLSDSerialize::fromXMLDocument(data, istr) < 1)
+	if(LLSDParser::PARSE_FAILURE == LLSDSerialize::fromXMLDocument(data, istr))
+	{
 		return false;
+	}
 
 	// We'll expire entries more than a week old
 	U32 now = (U32)time(NULL);
diff --git a/indra/llmessage/llcurl.cpp b/indra/llmessage/llcurl.cpp
index 8ffa8e42711..47041a28807 100644
--- a/indra/llmessage/llcurl.cpp
+++ b/indra/llmessage/llcurl.cpp
@@ -175,9 +175,11 @@ void LLCurl::Responder::completedRaw(
 {
 	LLSD content;
 	LLBufferStream istr(channels, buffer.get());
-	if (!LLSDSerialize::fromXML(content, istr))
+	const bool emit_errors = false;
+	if (LLSDParser::PARSE_FAILURE == LLSDSerialize::fromXML(content, istr, emit_errors))
 	{
 		llinfos << "Failed to deserialize LLSD. " << mURL << " [" << status << "]: " << reason << llendl;
+		content["reason"] = reason;
 	}
 
 	completed(status, reason, content);
diff --git a/indra/llplugin/llpluginprocessparent.cpp b/indra/llplugin/llpluginprocessparent.cpp
index 71a6145b581..a4da7674d59 100644
--- a/indra/llplugin/llpluginprocessparent.cpp
+++ b/indra/llplugin/llpluginprocessparent.cpp
@@ -31,6 +31,7 @@
 #include "llpluginprocessparent.h"
 #include "llpluginmessagepipe.h"
 #include "llpluginmessageclasses.h"
+#include "llsdserialize.h"
 #include "stringize.h"
 
 #include "llapr.h"
@@ -836,7 +837,7 @@ void LLPluginProcessParent::receiveMessageRaw(const std::string &message)
 	LL_DEBUGS("Plugin") << "Received: " << message << LL_ENDL;
 	
 	LLPluginMessage parsed;
-	if(parsed.parse(message) != -1)
+	if(LLSDParser::PARSE_FAILURE != parsed.parse(message))
 	{
 		if(parsed.hasValue("blocking_request"))
 		{
diff --git a/indra/llui/llspellcheck.cpp b/indra/llui/llspellcheck.cpp
index a189375fbea..250372da5ba 100644
--- a/indra/llui/llspellcheck.cpp
+++ b/indra/llui/llspellcheck.cpp
@@ -145,10 +145,14 @@ void LLSpellChecker::refreshDictionaryMap()
 
 	// Load dictionary information (file name, friendly name, ...)
 	llifstream user_file(user_path + DICT_FILE_MAIN, std::ios::binary);
-	if ( (!user_file.is_open()) || (0 == LLSDSerialize::fromXMLDocument(sDictMap, user_file)) || (0 == sDictMap.size()) )
+	if ( (!user_file.is_open()) 
+		|| (LLSDParser::PARSE_FAILURE == LLSDSerialize::fromXMLDocument(sDictMap, user_file)) 
+		|| (0 == sDictMap.size()) )
 	{
 		llifstream app_file(app_path + DICT_FILE_MAIN, std::ios::binary);
-		if ( (!app_file.is_open()) || (0 == LLSDSerialize::fromXMLDocument(sDictMap, app_file)) || (0 == sDictMap.size()) )
+		if ( (!app_file.is_open()) 
+			|| (LLSDParser::PARSE_FAILURE == LLSDSerialize::fromXMLDocument(sDictMap, app_file)) 
+			|| (0 == sDictMap.size()) )
 		{
 			return;
 		}
diff --git a/indra/llxml/llcontrol.cpp b/indra/llxml/llcontrol.cpp
index 53d9380f4f8..666c03e9fff 100644
--- a/indra/llxml/llcontrol.cpp
+++ b/indra/llxml/llcontrol.cpp
@@ -850,12 +850,10 @@ U32 LLControlGroup::loadFromFile(const std::string& filename, bool set_default_v
 		return 0;
 	}
 
-	S32 ret = LLSDSerialize::fromXML(settings, infile);
-
-	if (ret <= 0)
+	if (LLSDParser::PARSE_FAILURE == LLSDSerialize::fromXML(settings, infile))
 	{
 		infile.close();
-		llwarns << "Unable to open LLSD control file " << filename << ". Trying Legacy Method." << llendl;		
+		llwarns << "Unable to parse LLSD control file " << filename << ". Trying Legacy Method." << llendl;
 		return loadFromFileLegacy(filename, TRUE, TYPE_STRING);
 	}
 
diff --git a/indra/newview/llaccountingcostmanager.cpp b/indra/newview/llaccountingcostmanager.cpp
index 8767955fcb5..7662a9689da 100644
--- a/indra/newview/llaccountingcostmanager.cpp
+++ b/indra/newview/llaccountingcostmanager.cpp
@@ -56,9 +56,9 @@ class LLAccountingCostResponder : public LLCurl::Responder
 		}
 	}
 	
-	void error( U32 statusNum, const std::string& reason )
+	void errorWithContent( U32 statusNum, const std::string& reason, const LLSD& content )
 	{
-		llwarns	<< "Transport error "<<reason<<llendl;	
+		llwarns << "Transport error [status:" << statusNum << "]: " << content <<llendl;
 		clearPendingRequests();
 
 		LLAccountingCostObserver* observer = mObserverHandle.get();
diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index 99b79aadc45..20954e4baef 100755
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -2551,7 +2551,7 @@ class LLMaturityPreferencesResponder : public LLHTTPClient::Responder
 	virtual ~LLMaturityPreferencesResponder();
 
 	virtual void result(const LLSD &pContent);
-	virtual void error(U32 pStatus, const std::string& pReason);
+	virtual void errorWithContent(U32 pStatus, const std::string& pReason, const LLSD& pContent);
 
 protected:
 
@@ -2589,11 +2589,11 @@ void LLMaturityPreferencesResponder::result(const LLSD &pContent)
 	mAgent->handlePreferredMaturityResult(actualMaturity);
 }
 
-void LLMaturityPreferencesResponder::error(U32 pStatus, const std::string& pReason)
+void LLMaturityPreferencesResponder::errorWithContent(U32 pStatus, const std::string& pReason, const LLSD& pContent)
 {
 	llwarns << "while attempting to change maturity preference from '" << LLViewerRegion::accessToString(mPreviousMaturity)
-		<< "' to '" << LLViewerRegion::accessToString(mPreferredMaturity) << "', we got an error because '"
-		<< pReason << "' [status:" << pStatus << "]" << llendl;
+		<< "' to '" << LLViewerRegion::accessToString(mPreferredMaturity) << "', we got an error with [status:"
+		<< pStatus << "]: " << (pContent.isDefined() ? pContent : LLSD(pReason)) << llendl;
 	mAgent->handlePreferredMaturityError();
 }
 
@@ -2783,7 +2783,7 @@ void LLAgent::sendMaturityPreferenceToServer(U8 pPreferredMaturity)
 		// If we don't have a region, report it as an error
 		if (getRegion() == NULL)
 		{
-			responderPtr->error(0U, "region is not defined");
+			responderPtr->errorWithContent(0U, "region is not defined", LLSD());
 		}
 		else
 		{
@@ -2793,7 +2793,8 @@ void LLAgent::sendMaturityPreferenceToServer(U8 pPreferredMaturity)
 			// If the capability is not defined, report it as an error
 			if (url.empty())
 			{
-				responderPtr->error(0U, "capability 'UpdateAgentInformation' is not defined for region");
+				responderPtr->errorWithContent(0U, 
+							"capability 'UpdateAgentInformation' is not defined for region", LLSD());
 			}
 			else
 			{
diff --git a/indra/newview/llagentpilot.cpp b/indra/newview/llagentpilot.cpp
index 734c502fcf6..c7872fc5f61 100644
--- a/indra/newview/llagentpilot.cpp
+++ b/indra/newview/llagentpilot.cpp
@@ -139,7 +139,7 @@ void LLAgentPilot::loadXML(const std::string& filename)
 
 	mActions.reset();
 	LLSD record;
-	while (!file.eof() && LLSDSerialize::fromXML(record, file))
+	while (!file.eof() && LLSDParser::PARSE_FAILURE != LLSDSerialize::fromXML(record, file))
 	{
 		Action action;
 		action.mTime = record["time"].asReal();
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 1561f8d74ca..2c76efc7fb8 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -3308,10 +3308,10 @@ class LLIncrementCofVersionResponder : public LLHTTPClient::Responder
 
 		app_mgr->mLastUpdateRequestCOFVersion = new_version;
 	}
-	virtual void error(U32 pStatus, const std::string& pReason)
+	virtual void errorWithContent(U32 pStatus, const std::string& pReason, const LLSD& content)
 	{
-		llwarns << "While attempting to increment the agent's cof we got an error because '"
-			<< pReason << "' [status:" << pStatus << "]" << llendl;
+		llwarns << "While attempting to increment the agent's cof we got an error with [status:"
+				<< pStatus << "]: " << content << llendl;
 		F32 seconds_to_wait;
 		if (mRetryPolicy->shouldRetry(pStatus,seconds_to_wait))
 		{
diff --git a/indra/newview/llassetuploadqueue.cpp b/indra/newview/llassetuploadqueue.cpp
index f943759bb89..4bdb690225d 100644
--- a/indra/newview/llassetuploadqueue.cpp
+++ b/indra/newview/llassetuploadqueue.cpp
@@ -69,10 +69,11 @@ class LLAssetUploadChainResponder : public LLUpdateTaskInventoryResponder
 		delete mData;
    	}
 	
-	virtual void error(U32 statusNum, const std::string& reason)
+	virtual void errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content)
    	{
-		llwarns << "Error: " << reason << llendl;
-		LLUpdateTaskInventoryResponder::error(statusNum, reason);
+		llwarns << "LLAssetUploadChainResponder Error [status:" 
+				<< statusNum << "]: " << content << llendl;
+		LLUpdateTaskInventoryResponder::errorWithContent(statusNum, reason, content);
    		LLAssetUploadQueue *queue = mSupplier->get();
    		if (queue)
 		{
diff --git a/indra/newview/llassetuploadresponders.cpp b/indra/newview/llassetuploadresponders.cpp
index 694bbdfb671..25648023879 100644
--- a/indra/newview/llassetuploadresponders.cpp
+++ b/indra/newview/llassetuploadresponders.cpp
@@ -225,10 +225,10 @@ LLAssetUploadResponder::~LLAssetUploadResponder()
 }
 
 // virtual
-void LLAssetUploadResponder::error(U32 statusNum, const std::string& reason)
+void LLAssetUploadResponder::errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content)
 {
-	llinfos << "LLAssetUploadResponder::error " << statusNum 
-			<< " reason: " << reason << llendl;
+	llinfos << "LLAssetUploadResponder::error [status:" 
+			<< statusNum << "]: " << content << llendl;
 	LLSD args;
 	switch(statusNum)
 	{
@@ -340,9 +340,9 @@ LLNewAgentInventoryResponder::LLNewAgentInventoryResponder(
 }
 
 // virtual
-void LLNewAgentInventoryResponder::error(U32 statusNum, const std::string& reason)
+void LLNewAgentInventoryResponder::errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content)
 {
-	LLAssetUploadResponder::error(statusNum, reason);
+	LLAssetUploadResponder::errorWithContent(statusNum, reason, content);
 	//LLImportColladaAssetCache::getInstance()->assetUploaded(mVFileID, LLUUID(), FALSE);
 }
 
@@ -487,9 +487,10 @@ void LLSendTexLayerResponder::uploadComplete(const LLSD& content)
 	}
 }
 
-void LLSendTexLayerResponder::error(U32 statusNum, const std::string& reason)
+void LLSendTexLayerResponder::errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content)
 {
-	llinfos << "status: " << statusNum << " reason: " << reason << llendl;
+	llinfos << "LLSendTexLayerResponder error [status:"
+			<< statusNum << "]: " << content << llendl;
 	
 	// Invoke the original callback with an error result
 	LLViewerTexLayerSetBuffer::onTextureUploadComplete(LLUUID(), (void*) mBakedUploadData, -1, LL_EXSTAT_NONE);
diff --git a/indra/newview/llassetuploadresponders.h b/indra/newview/llassetuploadresponders.h
index 381b919c4a4..a6d1016136c 100644
--- a/indra/newview/llassetuploadresponders.h
+++ b/indra/newview/llassetuploadresponders.h
@@ -42,7 +42,7 @@ class LLAssetUploadResponder : public LLHTTPClient::Responder
 							LLAssetType::EType asset_type);
 	~LLAssetUploadResponder();
 
-    virtual void error(U32 statusNum, const std::string& reason);
+    virtual void errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content);
 	virtual void result(const LLSD& content);
 	virtual void uploadUpload(const LLSD& content);
 	virtual void uploadComplete(const LLSD& content);
@@ -67,7 +67,7 @@ class LLNewAgentInventoryResponder : public LLAssetUploadResponder
 		const LLSD& post_data,
 		const std::string& file_name,
 		LLAssetType::EType asset_type);
-    virtual void error(U32 statusNum, const std::string& reason);
+    virtual void errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content);
 	virtual void uploadComplete(const LLSD& content);
 	virtual void uploadFailure(const LLSD& content);
 };
@@ -122,7 +122,7 @@ class LLSendTexLayerResponder : public LLAssetUploadResponder
 	~LLSendTexLayerResponder();
 
 	virtual void uploadComplete(const LLSD& content);
-	virtual void error(U32 statusNum, const std::string& reason);
+	virtual void errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content);
 
 	LLBakedUploadData * mBakedUploadData;
 };
diff --git a/indra/newview/llclassifiedstatsresponder.cpp b/indra/newview/llclassifiedstatsresponder.cpp
index b4da31895fc..e3cd83e1742 100644
--- a/indra/newview/llclassifiedstatsresponder.cpp
+++ b/indra/newview/llclassifiedstatsresponder.cpp
@@ -62,8 +62,7 @@ void LLClassifiedStatsResponder::result(const LLSD& content)
 }
 
 /*virtual*/
-void LLClassifiedStatsResponder::error(U32 status, const std::string& reason)
+void LLClassifiedStatsResponder::errorWithContent(U32 status, const std::string& reason, const LLSD& content)
 {
-	llinfos << "LLClassifiedStatsResponder::error("
-		<< status << ": " << reason << ")" << llendl;
+	llinfos << "LLClassifiedStatsResponder::error [status:" << status << "]: " << content << llendl;
 }
diff --git a/indra/newview/llclassifiedstatsresponder.h b/indra/newview/llclassifiedstatsresponder.h
index 3db1868cb28..06dcb62fd05 100644
--- a/indra/newview/llclassifiedstatsresponder.h
+++ b/indra/newview/llclassifiedstatsresponder.h
@@ -39,7 +39,7 @@ class LLClassifiedStatsResponder : public LLHTTPClient::Responder
 	virtual void result(const LLSD& content);
 	//If we get back an error (not found, etc...), handle it here
 	
-	virtual void error(U32 status, const std::string& reason);
+	virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content);
 
 protected:
 	LLUUID mClassifiedID;
diff --git a/indra/newview/llestateinfomodel.cpp b/indra/newview/llestateinfomodel.cpp
index 0faa8883988..2669b0340fb 100644
--- a/indra/newview/llestateinfomodel.cpp
+++ b/indra/newview/llestateinfomodel.cpp
@@ -122,9 +122,9 @@ class LLEstateChangeInfoResponder : public LLHTTPClient::Responder
 	}
 
 	// if we get an error response
-	virtual void error(U32 status, const std::string& reason)
+	virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content)
 	{
-		llwarns << "Failed to commit estate info (" << status << "): " << reason << llendl;
+		llwarns << "Failed to commit estate info [status:" << status << "]: " << content << llendl;
 	}
 };
 
diff --git a/indra/newview/lleventpoll.cpp b/indra/newview/lleventpoll.cpp
index 2c786b7f8be..e0f7223a8ce 100644
--- a/indra/newview/lleventpoll.cpp
+++ b/indra/newview/lleventpoll.cpp
@@ -62,7 +62,7 @@ namespace
 
 		
 		void handleMessage(const LLSD& content);
-		virtual	void error(U32 status, const std::string& reason);
+		virtual	void errorWithContent(U32 status, const std::string& reason, const LLSD& content);
 		virtual	void result(const LLSD&	content);
 
 		virtual void completedRaw(U32 status,
@@ -187,7 +187,7 @@ namespace
 	}
 
 	//virtual
-	void LLEventPollResponder::error(U32 status, const	std::string& reason)
+	void LLEventPollResponder::errorWithContent(U32 status, const std::string& reason, const LLSD& content)
 	{
 		if (mDone) return;
 
@@ -207,13 +207,13 @@ namespace
 										+ mErrorCount * EVENT_POLL_ERROR_RETRY_SECONDS_INC
 									, this);
 
-			llwarns << "Unexpected HTTP error.  status: " << status << ", reason: " << reason << llendl;
+			llwarns << "LLEventPollResponder error [status:" << status << "]: " << content << llendl;
 		}
 		else
 		{
-			llwarns <<	"LLEventPollResponder::error: <" << mCount << "> got "
-					<<	status << ": " << reason
-					<<	(mDone ? " -- done"	: "") << llendl;
+			llwarns << "LLEventPollResponder error <" << mCount 
+					<< "> [status:" << status << "]: " << content
+					<< (mDone ? " -- done" : "") << llendl;
 			stop();
 
 			// At this point we have given up and the viewer will not receive HTTP messages from the simulator.
diff --git a/indra/newview/llfasttimerview.cpp b/indra/newview/llfasttimerview.cpp
index 19fca9b95d8..fbf72b1a852 100644
--- a/indra/newview/llfasttimerview.cpp
+++ b/indra/newview/llfasttimerview.cpp
@@ -1070,7 +1070,7 @@ void LLFastTimerView::exportCharts(const std::string& base, const std::string& t
 	{ //read base log into memory
 		S32 i = 0;
 		std::ifstream is(base.c_str());
-		while (!is.eof() && LLSDSerialize::fromXML(cur, is))
+		while (!is.eof() && LLSDParser::PARSE_FAILURE != LLSDSerialize::fromXML(cur, is))
 		{
 			base_data[i++] = cur;
 		}
@@ -1083,7 +1083,7 @@ void LLFastTimerView::exportCharts(const std::string& base, const std::string& t
 	{ //read current log into memory
 		S32 i = 0;
 		std::ifstream is(target.c_str());
-		while (!is.eof() && LLSDSerialize::fromXML(cur, is))
+		while (!is.eof() && LLSDParser::PARSE_FAILURE != LLSDSerialize::fromXML(cur, is))
 		{
 			cur_data[i++] = cur;
 
@@ -1374,7 +1374,7 @@ LLSD LLFastTimerView::analyzePerformanceLogDefault(std::istream& is)
 	stats_map_t time_stats;
 	stats_map_t sample_stats;
 
-	while (!is.eof() && LLSDSerialize::fromXML(cur, is))
+	while (!is.eof() && LLSDParser::PARSE_FAILURE != LLSDSerialize::fromXML(cur, is))
 	{
 		for (LLSD::map_iterator iter = cur.beginMap(); iter != cur.endMap(); ++iter)
 		{
diff --git a/indra/newview/llfloateravatarpicker.cpp b/indra/newview/llfloateravatarpicker.cpp
index 0290e7cdf08..752aba5e160 100644
--- a/indra/newview/llfloateravatarpicker.cpp
+++ b/indra/newview/llfloateravatarpicker.cpp
@@ -404,8 +404,7 @@ class LLAvatarPickerResponder : public LLHTTPClient::Responder
 		}
 		else
 		{
-			llinfos << "avatar picker failed " << status
-					<< " reason " << reason << llendl;
+			llwarns << "avatar picker failed [status:" << status << "]: " << content << llendl;
 			
 		}
 	}
diff --git a/indra/newview/llfloaterregiondebugconsole.cpp b/indra/newview/llfloaterregiondebugconsole.cpp
index c7fab2573f2..0cde878055d 100644
--- a/indra/newview/llfloaterregiondebugconsole.cpp
+++ b/indra/newview/llfloaterregiondebugconsole.cpp
@@ -75,7 +75,7 @@ namespace
 	{
 	public:
 		/* virtual */
-		void error(U32 status, const std::string& reason)
+		void errorWithContent(U32 status, const std::string& reason)
 		{
 			sConsoleReplySignal(UNABLE_TO_SEND_COMMAND);
 		}
diff --git a/indra/newview/llfloaterregioninfo.cpp b/indra/newview/llfloaterregioninfo.cpp
index a36021f9717..4a9ea5acf00 100644
--- a/indra/newview/llfloaterregioninfo.cpp
+++ b/indra/newview/llfloaterregioninfo.cpp
@@ -756,9 +756,10 @@ class ConsoleRequestResponder : public LLHTTPClient::Responder
 {
 public:
 	/*virtual*/
-	void error(U32 status, const std::string& reason)
+	void errorWithContent(U32 status, const std::string& reason, const LLSD& content)
 	{
-		llwarns << "requesting mesh_rez_enabled failed" << llendl;
+		llwarns << "ConsoleRequestResponder error requesting mesh_rez_enabled [status:"
+				<< status << "]: " << content << llendl;
 	}
 };
 
@@ -768,9 +769,10 @@ class ConsoleUpdateResponder : public LLHTTPClient::Responder
 {
 public:
 	/* virtual */
-	void error(U32 status, const std::string& reason)
+	void errorWithContent(U32 status, const std::string& reason, const LLSD& content)
 	{
-		llwarns << "Updating mesh enabled region setting failed" << llendl;
+		llwarns << "ConsoleRequestResponder error updating mesh enabled region setting [status:"
+				<< status << "]: " << content << llendl;
 	}
 };
 
@@ -2207,10 +2209,10 @@ class LLEstateChangeInfoResponder : public LLHTTPClient::Responder
 	}
 	
 	// if we get an error response
-	virtual void error(U32 status, const std::string& reason)
+	virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content)
 	{
-		llinfos << "LLEstateChangeInfoResponder::error "
-			<< status << ": " << reason << llendl;
+		llinfos << "LLEstateChangeInfoResponder::error [status:"
+			<< status << "]: " << content << llendl;
 	}
 private:
 	LLHandle<LLPanel> mpPanel;
diff --git a/indra/newview/llfloaterreporter.cpp b/indra/newview/llfloaterreporter.cpp
index 86bd15b2174..685b566fa89 100644
--- a/indra/newview/llfloaterreporter.cpp
+++ b/indra/newview/llfloaterreporter.cpp
@@ -695,7 +695,7 @@ class LLUserReportResponder : public LLHTTPClient::Responder
 public:
 	LLUserReportResponder(): LLHTTPClient::Responder()  {}
 
-	void error(U32 status, const std::string& reason)
+	void errorWithContent(U32 status, const std::string& reason, const LLSD& content)
 	{
 		// *TODO do some user messaging here
 		LLUploadDialog::modalUploadFinished();
diff --git a/indra/newview/llfloaterscriptlimits.cpp b/indra/newview/llfloaterscriptlimits.cpp
index a50907601c5..17c34f1da05 100644
--- a/indra/newview/llfloaterscriptlimits.cpp
+++ b/indra/newview/llfloaterscriptlimits.cpp
@@ -221,9 +221,9 @@ void fetchScriptLimitsRegionInfoResponder::result(const LLSD& content)
 	}
 }
 
-void fetchScriptLimitsRegionInfoResponder::error(U32 status, const std::string& reason)
+void fetchScriptLimitsRegionInfoResponder::errorWithContent(U32 status, const std::string& reason, const LLSD& content)
 {
-	llwarns << "Error from responder " << reason << llendl;
+	llwarns << "fetchScriptLimitsRegionInfoResponder error [status:" << status << "]: " << content << llendl;
 }
 
 void fetchScriptLimitsRegionSummaryResponder::result(const LLSD& content_ref)
@@ -308,9 +308,9 @@ void fetchScriptLimitsRegionSummaryResponder::result(const LLSD& content_ref)
 	}
 }
 
-void fetchScriptLimitsRegionSummaryResponder::error(U32 status, const std::string& reason)
+void fetchScriptLimitsRegionSummaryResponder::errorWithContent(U32 status, const std::string& reason, const LLSD& content)
 {
-	llwarns << "Error from responder " << reason << llendl;
+	llwarns << "fetchScriptLimitsRegionSummaryResponder error [status:" << status << "]: " << content << llendl;
 }
 
 void fetchScriptLimitsRegionDetailsResponder::result(const LLSD& content_ref)
@@ -417,9 +417,9 @@ result (map)
 	}
 }
 
-void fetchScriptLimitsRegionDetailsResponder::error(U32 status, const std::string& reason)
+void fetchScriptLimitsRegionDetailsResponder::errorWithContent(U32 status, const std::string& reason, const LLSD& content)
 {
-	llwarns << "Error from responder " << reason << llendl;
+	llwarns << "fetchScriptLimitsRegionDetailsResponder error [status:" << status << "]: " << content << llendl;
 }
 
 void fetchScriptLimitsAttachmentInfoResponder::result(const LLSD& content_ref)
@@ -513,9 +513,9 @@ void fetchScriptLimitsAttachmentInfoResponder::result(const LLSD& content_ref)
 	}
 }
 
-void fetchScriptLimitsAttachmentInfoResponder::error(U32 status, const std::string& reason)
+void fetchScriptLimitsAttachmentInfoResponder::errorWithContent(U32 status, const std::string& reason, const LLSD& content)
 {
-	llwarns << "Error from responder " << reason << llendl;
+	llwarns << "fetchScriptLimitsAttachmentInfoResponder error [status:" << status << "]: " << content << llendl;
 }
 
 ///----------------------------------------------------------------------------
diff --git a/indra/newview/llfloaterscriptlimits.h b/indra/newview/llfloaterscriptlimits.h
index 9bcfa5fe142..f8732ef94bb 100644
--- a/indra/newview/llfloaterscriptlimits.h
+++ b/indra/newview/llfloaterscriptlimits.h
@@ -89,7 +89,7 @@ class fetchScriptLimitsRegionInfoResponder: public LLHTTPClient::Responder
 		fetchScriptLimitsRegionInfoResponder(const LLSD& info) : mInfo(info) {};
 
 		void result(const LLSD& content);
-		void error(U32 status, const std::string& reason);
+		void errorWithContent(U32 status, const std::string& reason, const LLSD& content);
 	public:
 	protected:
 		LLSD mInfo;
@@ -101,7 +101,7 @@ class fetchScriptLimitsRegionSummaryResponder: public LLHTTPClient::Responder
 		fetchScriptLimitsRegionSummaryResponder(const LLSD& info) : mInfo(info) {};
 
 		void result(const LLSD& content);
-		void error(U32 status, const std::string& reason);
+		void errorWithContent(U32 status, const std::string& reason, const LLSD& content);
 	public:
 	protected:
 		LLSD mInfo;
@@ -113,7 +113,7 @@ class fetchScriptLimitsRegionDetailsResponder: public LLHTTPClient::Responder
 		fetchScriptLimitsRegionDetailsResponder(const LLSD& info) : mInfo(info) {};
 
 		void result(const LLSD& content);
-		void error(U32 status, const std::string& reason);
+		void errorWithContent(U32 status, const std::string& reason, const LLSD& content);
 	public:
 	protected:
 		LLSD mInfo;
@@ -125,7 +125,7 @@ class fetchScriptLimitsAttachmentInfoResponder: public LLHTTPClient::Responder
 		fetchScriptLimitsAttachmentInfoResponder() {};
 
 		void result(const LLSD& content);
-		void error(U32 status, const std::string& reason);
+		void errorWithContent(U32 status, const std::string& reason, const LLSD& content);
 	public:
 	protected:
 };
diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp
index 81eb1d397e8..cbd844cdac0 100644
--- a/indra/newview/llgroupmgr.cpp
+++ b/indra/newview/llgroupmgr.cpp
@@ -1847,14 +1847,15 @@ class GroupMemberDataResponder : public LLHTTPClient::Responder
 		GroupMemberDataResponder() {}
 		virtual ~GroupMemberDataResponder() {}
 		virtual void result(const LLSD& pContent);
-		virtual void error(U32 pStatus, const std::string& pReason);
+		virtual void errorWithContent(U32 pStatus, const std::string& pReason, const LLSD& pContent);
 private:
 		LLSD mMemberData;
 };
 
-void GroupMemberDataResponder::error(U32 pStatus, const std::string& pReason)
+void GroupMemberDataResponder::errorWithContent(U32 pStatus, const std::string& pReason, const LLSD& pContent)
 {
-	LL_WARNS("GrpMgr") << "Error receiving group member data." << LL_ENDL;
+	LL_WARNS("GrpMgr") << "Error receiving group member data [status:" 
+		<< pStatus << "]: " << pContent << LL_ENDL;
 }
 
 void GroupMemberDataResponder::result(const LLSD& content)
diff --git a/indra/newview/llhomelocationresponder.cpp b/indra/newview/llhomelocationresponder.cpp
index 4850d18d994..37428c4a44b 100644
--- a/indra/newview/llhomelocationresponder.cpp
+++ b/indra/newview/llhomelocationresponder.cpp
@@ -97,7 +97,7 @@ void LLHomeLocationResponder::result( const LLSD& content )
   }
 }
 
-void LLHomeLocationResponder::error( U32 status, const std::string& reason )
+void LLHomeLocationResponder::errorWithContent( U32 status, const std::string& reason, const LLSD& content )
 {
-  llinfos << "received error(" << reason  << ")" << llendl;
+	llwarns << "LLHomeLocationResponder error [status:" << status << "]: " << content << llendl;
 }
diff --git a/indra/newview/llhomelocationresponder.h b/indra/newview/llhomelocationresponder.h
index d640b9c894b..9bf4b12c4e9 100644
--- a/indra/newview/llhomelocationresponder.h
+++ b/indra/newview/llhomelocationresponder.h
@@ -36,7 +36,7 @@
 class LLHomeLocationResponder : public LLHTTPClient::Responder
 {
 	virtual void result( const LLSD& content );
-	virtual void error( U32 status, const std::string& reason );
+	virtual void errorWithContent( U32 status, const std::string& reason, const LLSD& content );
 };
 
 #endif
diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp
index 63eedcdfeae..fff178f8fee 100644
--- a/indra/newview/llimfloater.cpp
+++ b/indra/newview/llimfloater.cpp
@@ -985,9 +985,10 @@ class LLSessionInviteResponder : public LLHTTPClient::Responder
 		mSessionID = session_id;
 	}
 
-	void error(U32 statusNum, const std::string& reason)
+	void errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content)
 	{
-		llinfos << "Error inviting all agents to session" << llendl;
+		llwarns << "Error inviting all agents to session [status:" 
+				<< statusNum << "]: " << content << llendl;
 		//throw something back to the viewer here?
 	}
 
diff --git a/indra/newview/llimpanel.cpp b/indra/newview/llimpanel.cpp
index 0250af6a0ef..1dab0e67bf8 100644
--- a/indra/newview/llimpanel.cpp
+++ b/indra/newview/llimpanel.cpp
@@ -394,9 +394,10 @@ class LLSessionInviteResponder : public LLHTTPClient::Responder
 		mSessionID = session_id;
 	}
 
-	void error(U32 statusNum, const std::string& reason)
+	void errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content)
 	{
-		llinfos << "Error inviting all agents to session" << llendl;
+		llwarns << "Error inviting all agents to session [status:" 
+				<< statusNum << "]: " << content << llendl;
 		//throw something back to the viewer here?
 	}
 
diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index 57373704efa..20b33c5d084 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -1227,7 +1227,7 @@ class LLStartConferenceChatResponder : public LLHTTPClient::Responder
 		mAgents = agents_to_invite;
 	}
 
-	virtual void error(U32 statusNum, const std::string& reason)
+	virtual void errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content)
 	{
 		//try an "old school" way.
 		if ( statusNum == 400 )
@@ -1239,6 +1239,9 @@ class LLStartConferenceChatResponder : public LLHTTPClient::Responder
 				mAgents);
 		}
 
+		llwarns << "LLStartConferenceChatResponder error [status:"
+				<< statusNum << "]: " << content << llendl;
+
 		//else throw an error back to the client?
 		//in theory we should have just have these error strings
 		//etc. set up in this file as opposed to the IMMgr,
@@ -1384,8 +1387,10 @@ class LLViewerChatterBoxInvitationAcceptResponder :
 		}
 	}
 
-	void error(U32 statusNum, const std::string& reason)
-	{		
+	void errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content)
+	{
+		llwarns << "LLViewerChatterBoxInvitationAcceptResponder error [status:"
+				<< statusNum << "]: " << content << llendl;
 		//throw something back to the viewer here?
 		if ( gIMMgr )
 		{
diff --git a/indra/newview/llinspectavatar.cpp b/indra/newview/llinspectavatar.cpp
index 17d0b0ffbb4..aafc43b02db 100644
--- a/indra/newview/llinspectavatar.cpp
+++ b/indra/newview/llinspectavatar.cpp
@@ -501,9 +501,9 @@ void LLInspectAvatar::toggleSelectedVoice(bool enabled)
 				mSessionID = session_id;
 			}
 
-			virtual void error(U32 status, const std::string& reason)
+			virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content)
 			{
-				llwarns << status << ": " << reason << llendl;
+				llwarns << "MuteVoiceResponder error [status:" << status << "]: " << content << llendl;
 
 				if ( gIMMgr )
 				{
diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp
index ac1f40b4862..99e72cdb22e 100755
--- a/indra/newview/llinventorymodel.cpp
+++ b/indra/newview/llinventorymodel.cpp
@@ -424,9 +424,10 @@ class LLCreateInventoryCategoryResponder : public LLHTTPClient::Responder
 	{
 	}
 	
-	virtual void error(U32 status, const std::string& reason)
+	virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content)
 	{
-		LL_WARNS("InvAPI") << "CreateInventoryCategory failed.   status = " << status << ", reasion = \"" << reason << "\"" << LL_ENDL;
+		LL_WARNS("InvAPI") << "CreateInventoryCategory failed [status:"
+				<< status << "]: " << content << LL_ENDL;
 	}
 	
 	virtual void result(const LLSD& content)
@@ -1399,10 +1400,9 @@ void  LLInventoryModel::fetchInventoryResponder::result(const LLSD& content)
 }
 
 //If we get back an error (not found, etc...), handle it here
-void LLInventoryModel::fetchInventoryResponder::error(U32 status, const std::string& reason)
+void LLInventoryModel::fetchInventoryResponder::errorWithContent(U32 status, const std::string& reason, const LLSD& content)
 {
-	llinfos << "fetchInventory::error "
-		<< status << ": " << reason << llendl;
+	llwarns << "fetchInventory error [status:" << status << "]: " << content << llendl;
 	gInventory.notifyObservers();
 }
 
diff --git a/indra/newview/llinventorymodel.h b/indra/newview/llinventorymodel.h
index 8382e875b48..dfdd237c959 100644
--- a/indra/newview/llinventorymodel.h
+++ b/indra/newview/llinventorymodel.h
@@ -84,7 +84,7 @@ class LLInventoryModel
 	public:
 		fetchInventoryResponder(const LLSD& request_sd) : mRequestSD(request_sd) {};
 		void result(const LLSD& content);			
-		void error(U32 status, const std::string& reason);
+		void errorWithContent(U32 status, const std::string& reason, const LLSD& content);
 	protected:
 		LLSD mRequestSD;
 	};
diff --git a/indra/newview/llinventorymodelbackgroundfetch.cpp b/indra/newview/llinventorymodelbackgroundfetch.cpp
index 024d34519f2..f2b39e71863 100644
--- a/indra/newview/llinventorymodelbackgroundfetch.cpp
+++ b/indra/newview/llinventorymodelbackgroundfetch.cpp
@@ -366,7 +366,7 @@ class LLInventoryModelFetchItemResponder : public LLInventoryModel::fetchInvento
 public:
 	LLInventoryModelFetchItemResponder(const LLSD& request_sd) : LLInventoryModel::fetchInventoryResponder(request_sd) {};
 	void result(const LLSD& content);			
-	void error(U32 status, const std::string& reason);
+	void errorWithContent(U32 status, const std::string& reason, const LLSD& content);
 };
 
 void LLInventoryModelFetchItemResponder::result( const LLSD& content )
@@ -375,9 +375,9 @@ void LLInventoryModelFetchItemResponder::result( const LLSD& content )
 	LLInventoryModelBackgroundFetch::instance().incrFetchCount(-1);
 }
 
-void LLInventoryModelFetchItemResponder::error( U32 status, const std::string& reason )
+void LLInventoryModelFetchItemResponder::errorWithContent( U32 status, const std::string& reason, const LLSD& content )
 {
-	LLInventoryModel::fetchInventoryResponder::error(status, reason);
+	LLInventoryModel::fetchInventoryResponder::errorWithContent(status, reason, content);
 	LLInventoryModelBackgroundFetch::instance().incrFetchCount(-1);
 }
 
@@ -391,7 +391,7 @@ class LLInventoryModelFetchDescendentsResponder: public LLHTTPClient::Responder
 	{};
 	//LLInventoryModelFetchDescendentsResponder() {};
 	void result(const LLSD& content);
-	void error(U32 status, const std::string& reason);
+	void errorWithContent(U32 status, const std::string& reason, const LLSD& content);
 protected:
 	BOOL getIsRecursive(const LLUUID& cat_id) const;
 private:
@@ -529,12 +529,12 @@ void LLInventoryModelFetchDescendentsResponder::result(const LLSD& content)
 }
 
 // If we get back an error (not found, etc...), handle it here.
-void LLInventoryModelFetchDescendentsResponder::error(U32 status, const std::string& reason)
+void LLInventoryModelFetchDescendentsResponder::errorWithContent(U32 status, const std::string& reason, const LLSD& content)
 {
 	LLInventoryModelBackgroundFetch *fetcher = LLInventoryModelBackgroundFetch::getInstance();
 
-	llinfos << "LLInventoryModelFetchDescendentsResponder::error "
-		<< status << ": " << reason << llendl;
+	llinfos << "LLInventoryModelFetchDescendentsResponder::error [status:"
+			<< status << "]: " << content << llendl;
 						
 	fetcher->incrFetchCount(-1);
 
diff --git a/indra/newview/llmediadataclient.cpp b/indra/newview/llmediadataclient.cpp
index 31038b4aaca..e3b46d5d2f3 100644
--- a/indra/newview/llmediadataclient.cpp
+++ b/indra/newview/llmediadataclient.cpp
@@ -564,7 +564,7 @@ LLMediaDataClient::Responder::Responder(const request_ptr_t &request)
 }
 
 /*virtual*/
-void LLMediaDataClient::Responder::error(U32 status, const std::string& reason)
+void LLMediaDataClient::Responder::errorWithContent(U32 status, const std::string& reason, const LLSD& content)
 {
 	mRequest->stopTracking();
 
@@ -596,8 +596,8 @@ void LLMediaDataClient::Responder::error(U32 status, const std::string& reason)
 	}
 	else 
 	{
-		std::string msg = boost::lexical_cast<std::string>(status) + ": " + reason;
-		LL_WARNS("LLMediaDataClient") << *mRequest << " http error(" << msg << ")" << LL_ENDL;
+		LL_WARNS("LLMediaDataClient") << *mRequest << " http error [status:" 
+				<< status << "]:" << content << ")" << LL_ENDL;
 	}
 }
 
@@ -1003,7 +1003,7 @@ LLMediaDataClient::Responder *LLObjectMediaNavigateClient::RequestNavigate::crea
 }
 
 /*virtual*/
-void LLObjectMediaNavigateClient::Responder::error(U32 status, const std::string& reason)
+void LLObjectMediaNavigateClient::Responder::errorWithContent(U32 status, const std::string& reason, const LLSD& content)
 {
 	getRequest()->stopTracking();
 
@@ -1017,7 +1017,7 @@ void LLObjectMediaNavigateClient::Responder::error(U32 status, const std::string
 	// class
 	if (status == HTTP_SERVICE_UNAVAILABLE)
 	{
-		LLMediaDataClient::Responder::error(status, reason);
+		LLMediaDataClient::Responder::errorWithContent(status, reason, content);
 	}
 	else
 	{
diff --git a/indra/newview/llmediadataclient.h b/indra/newview/llmediadataclient.h
index ab90915c555..89e20a28d09 100644
--- a/indra/newview/llmediadataclient.h
+++ b/indra/newview/llmediadataclient.h
@@ -195,7 +195,7 @@ class LLMediaDataClient : public LLRefCount
 	public:
 		Responder(const request_ptr_t &request);
 		//If we get back an error (not found, etc...), handle it here
-		virtual void error(U32 status, const std::string& reason);
+		virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content);
 		//If we get back a normal response, handle it here.	 Default just logs it.
 		virtual void result(const LLSD& content);
 
@@ -400,7 +400,7 @@ class LLObjectMediaNavigateClient : public LLMediaDataClient
     public:
         Responder(const request_ptr_t &request)
             : LLMediaDataClient::Responder(request) {}
-		virtual void error(U32 status, const std::string& reason);
+		virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content);
         virtual void result(const LLSD &content);
     private:
         void mediaNavigateBounceBack();
diff --git a/indra/newview/llpathfindingmanager.cpp b/indra/newview/llpathfindingmanager.cpp
index 2dd01e931e0..c2773591332 100644
--- a/indra/newview/llpathfindingmanager.cpp
+++ b/indra/newview/llpathfindingmanager.cpp
@@ -108,7 +108,7 @@ class NavMeshStatusResponder : public LLHTTPClient::Responder
 	virtual ~NavMeshStatusResponder();
 
 	virtual void result(const LLSD &pContent);
-	virtual void error(U32 pStatus, const std::string& pReason);
+	virtual void errorWithContent(U32 pStatus, const std::string& pReason, const LLSD& pContent);
 
 protected:
 
@@ -130,7 +130,7 @@ class NavMeshResponder : public LLHTTPClient::Responder
 	virtual ~NavMeshResponder();
 
 	virtual void result(const LLSD &pContent);
-	virtual void error(U32 pStatus, const std::string& pReason);
+	virtual void errorWithContent(U32 pStatus, const std::string& pReason, const LLSD& pContent);
 
 protected:
 
@@ -151,7 +151,7 @@ class AgentStateResponder : public LLHTTPClient::Responder
 	virtual ~AgentStateResponder();
 
 	virtual void result(const LLSD &pContent);
-	virtual void error(U32 pStatus, const std::string& pReason);
+	virtual void errorWithContent(U32 pStatus, const std::string& pReason, const LLSD& pContent);
 
 protected:
 
@@ -170,7 +170,7 @@ class NavMeshRebakeResponder : public LLHTTPClient::Responder
 	virtual ~NavMeshRebakeResponder();
 
 	virtual void result(const LLSD &pContent);
-	virtual void error(U32 pStatus, const std::string& pReason);
+	virtual void errorWithContent(U32 pStatus, const std::string& pReason, const LLSD& pContent);
 
 protected:
 
@@ -190,9 +190,11 @@ class LinksetsResponder
 	virtual ~LinksetsResponder();
 
 	void handleObjectLinksetsResult(const LLSD &pContent);
-	void handleObjectLinksetsError(U32 pStatus, const std::string &pReason, const std::string &pURL);
+	void handleObjectLinksetsError(U32 pStatus, const std::string &pReason, 
+								   const LLSD& pContent, const std::string &pURL);
 	void handleTerrainLinksetsResult(const LLSD &pContent);
-	void handleTerrainLinksetsError(U32 pStatus, const std::string &pReason, const std::string &pURL);
+	void handleTerrainLinksetsError(U32 pStatus, const std::string &pReason,
+									const LLSD& pContent, const std::string &pURL);
 
 protected:
 
@@ -230,7 +232,7 @@ class ObjectLinksetsResponder : public LLHTTPClient::Responder
 	virtual ~ObjectLinksetsResponder();
 
 	virtual void result(const LLSD &pContent);
-	virtual void error(U32 pStatus, const std::string &pReason);
+	virtual void errorWithContent(U32 pStatus, const std::string &pReason, const LLSD& pContent);
 
 protected:
 
@@ -250,7 +252,7 @@ class TerrainLinksetsResponder : public LLHTTPClient::Responder
 	virtual ~TerrainLinksetsResponder();
 
 	virtual void result(const LLSD &pContent);
-	virtual void error(U32 pStatus, const std::string &pReason);
+	virtual void errorWithContent(U32 pStatus, const std::string &pReason, const LLSD& pContent);
 
 protected:
 
@@ -270,7 +272,7 @@ class CharactersResponder : public LLHTTPClient::Responder
 	virtual ~CharactersResponder();
 
 	virtual void result(const LLSD &pContent);
-	virtual void error(U32 pStatus, const std::string &pReason);
+	virtual void errorWithContent(U32 pStatus, const std::string &pReason, const LLSD& pContent);
 
 protected:
 
@@ -800,9 +802,9 @@ void NavMeshStatusResponder::result(const LLSD &pContent)
 	LLPathfindingManager::getInstance()->handleNavMeshStatusRequest(navMeshStatus, mRegion, mIsGetStatusOnly);
 }
 
-void NavMeshStatusResponder::error(U32 pStatus, const std::string& pReason)
+void NavMeshStatusResponder::errorWithContent(U32 pStatus, const std::string& pReason, const LLSD& pContent)
 {
-	llwarns << "error with request to URL '" << mCapabilityURL << "' because " << pReason << " (statusCode:" << pStatus << ")" << llendl;
+	llwarns << "NavMeshStatusResponder error [status:" << pStatus << "]: " << pContent << llendl;
 	LLPathfindingNavMeshStatus navMeshStatus(mRegionUUID);
 	LLPathfindingManager::getInstance()->handleNavMeshStatusRequest(navMeshStatus, mRegion, mIsGetStatusOnly);
 }
@@ -828,9 +830,9 @@ void NavMeshResponder::result(const LLSD &pContent)
 	mNavMeshPtr->handleNavMeshResult(pContent, mNavMeshVersion);
 }
 
-void NavMeshResponder::error(U32 pStatus, const std::string& pReason)
+void NavMeshResponder::errorWithContent(U32 pStatus, const std::string& pReason, const LLSD& pContent)
 {
-	mNavMeshPtr->handleNavMeshError(pStatus, pReason, mCapabilityURL, mNavMeshVersion);
+	mNavMeshPtr->handleNavMeshError(pStatus, pReason, pContent, mCapabilityURL, mNavMeshVersion);
 }
 
 //---------------------------------------------------------------------------
@@ -855,9 +857,9 @@ void AgentStateResponder::result(const LLSD &pContent)
 	LLPathfindingManager::getInstance()->handleAgentState(canRebakeRegion);
 }
 
-void AgentStateResponder::error(U32 pStatus, const std::string &pReason)
+void AgentStateResponder::errorWithContent(U32 pStatus, const std::string &pReason, const LLSD& pContent)
 {
-	llwarns << "error with request to URL '" << mCapabilityURL << "' because " << pReason << " (statusCode:" << pStatus << ")" << llendl;
+	llwarns << "AgentStateResponder error [status:" << pStatus << "]: " << pContent << llendl;
 	LLPathfindingManager::getInstance()->handleAgentState(FALSE);
 }
 
@@ -881,9 +883,9 @@ void NavMeshRebakeResponder::result(const LLSD &pContent)
 	mRebakeNavMeshCallback(true);
 }
 
-void NavMeshRebakeResponder::error(U32 pStatus, const std::string &pReason)
+void NavMeshRebakeResponder::errorWithContent(U32 pStatus, const std::string &pReason, const LLSD& pContent)
 {
-	llwarns << "error with request to URL '" << mCapabilityURL << "' because " << pReason << " (statusCode:" << pStatus << ")" << llendl;
+	llwarns << "NavMeshRebakeResponder error [status:" << pStatus << "]: " << pContent << llendl;
 	mRebakeNavMeshCallback(false);
 }
 
@@ -916,9 +918,11 @@ void LinksetsResponder::handleObjectLinksetsResult(const LLSD &pContent)
 	}
 }
 
-void LinksetsResponder::handleObjectLinksetsError(U32 pStatus, const std::string &pReason, const std::string &pURL)
+void LinksetsResponder::handleObjectLinksetsError(U32 pStatus, const std::string &pReason,
+												 const LLSD& pContent, const std::string &pURL)
 {
-	llwarns << "error with request to URL '" << pURL << "' because " << pReason << " (statusCode:" << pStatus << ")" << llendl;
+	llwarns << "LinksetsResponder object linksets error with request to URL '" << pURL << "' [status:"
+			<< pStatus << "]: " << pContent << llendl;
 	mObjectMessagingState = kReceivedError;
 	if (mTerrainMessagingState != kWaiting)
 	{
@@ -937,8 +941,11 @@ void LinksetsResponder::handleTerrainLinksetsResult(const LLSD &pContent)
 	}
 }
 
-void LinksetsResponder::handleTerrainLinksetsError(U32 pStatus, const std::string &pReason, const std::string &pURL)
+void LinksetsResponder::handleTerrainLinksetsError(U32 pStatus, const std::string &pReason,
+												   const LLSD& pContent, const std::string &pURL)
 {
+	llwarns << "LinksetsResponder terrain linksets error with request to URL '" << pURL << "' [status:"
+			<< pStatus << "]: " << pContent << llendl;
 	mTerrainMessagingState = kReceivedError;
 	if (mObjectMessagingState != kWaiting)
 	{
@@ -988,9 +995,9 @@ void ObjectLinksetsResponder::result(const LLSD &pContent)
 	mLinksetsResponsderPtr->handleObjectLinksetsResult(pContent);
 }
 
-void ObjectLinksetsResponder::error(U32 pStatus, const std::string &pReason)
+void ObjectLinksetsResponder::errorWithContent(U32 pStatus, const std::string &pReason, const LLSD& pContent)
 {
-	mLinksetsResponsderPtr->handleObjectLinksetsError(pStatus, pReason, mCapabilityURL);
+	mLinksetsResponsderPtr->handleObjectLinksetsError(pStatus, pReason, pContent, mCapabilityURL);
 }
 
 //---------------------------------------------------------------------------
@@ -1013,9 +1020,9 @@ void TerrainLinksetsResponder::result(const LLSD &pContent)
 	mLinksetsResponsderPtr->handleTerrainLinksetsResult(pContent);
 }
 
-void TerrainLinksetsResponder::error(U32 pStatus, const std::string &pReason)
+void TerrainLinksetsResponder::errorWithContent(U32 pStatus, const std::string &pReason, const LLSD& pContent)
 {
-	mLinksetsResponsderPtr->handleTerrainLinksetsError(pStatus, pReason, mCapabilityURL);
+	mLinksetsResponsderPtr->handleTerrainLinksetsError(pStatus, pReason, pContent, mCapabilityURL);
 }
 
 //---------------------------------------------------------------------------
@@ -1040,9 +1047,9 @@ void CharactersResponder::result(const LLSD &pContent)
 	mCharactersCallback(mRequestId, LLPathfindingManager::kRequestCompleted, characterListPtr);
 }
 
-void CharactersResponder::error(U32 pStatus, const std::string &pReason)
+void CharactersResponder::errorWithContent(U32 pStatus, const std::string &pReason, const LLSD& pContent)
 {
-	llwarns << "error with request to URL '" << mCapabilityURL << "' because " << pReason << " (statusCode:" << pStatus << ")" << llendl;
+	llwarns << "CharactersResponder error [status:" << pStatus << "]: " << pContent << llendl;
 
 	LLPathfindingObjectListPtr characterListPtr =  LLPathfindingObjectListPtr(new LLPathfindingCharacterList());
 	mCharactersCallback(mRequestId, LLPathfindingManager::kRequestError, characterListPtr);
diff --git a/indra/newview/llpathfindingnavmesh.cpp b/indra/newview/llpathfindingnavmesh.cpp
index e01dd3a152f..0c23e5ac923 100644
--- a/indra/newview/llpathfindingnavmesh.cpp
+++ b/indra/newview/llpathfindingnavmesh.cpp
@@ -184,9 +184,10 @@ void LLPathfindingNavMesh::handleNavMeshError()
 	setRequestStatus(kNavMeshRequestError);
 }
 
-void LLPathfindingNavMesh::handleNavMeshError(U32 pStatus, const std::string &pReason, const std::string &pURL, U32 pNavMeshVersion)
+void LLPathfindingNavMesh::handleNavMeshError(U32 pStatus, const std::string &pReason, const LLSD& pContent, const std::string &pURL, U32 pNavMeshVersion)
 {
-	llwarns << "error with request to URL '" << pURL << "' because " << pReason << " (statusCode:" << pStatus << ")" << llendl;
+	llwarns << "LLPathfindingNavMesh error with request to URL '" << pURL << "' [status:"
+			<< pStatus << "]: " << pContent << llendl;
 	if (mNavMeshStatus.getVersion() == pNavMeshVersion)
 	{
 		handleNavMeshError();
diff --git a/indra/newview/llpathfindingnavmesh.h b/indra/newview/llpathfindingnavmesh.h
index 7a844f54ceb..b872ccad7cb 100644
--- a/indra/newview/llpathfindingnavmesh.h
+++ b/indra/newview/llpathfindingnavmesh.h
@@ -74,7 +74,7 @@ class LLPathfindingNavMesh
 	void handleNavMeshResult(const LLSD &pContent, U32 pNavMeshVersion);
 	void handleNavMeshNotEnabled();
 	void handleNavMeshError();
-	void handleNavMeshError(U32 pStatus, const std::string &pReason, const std::string &pURL, U32 pNavMeshVersion);
+	void handleNavMeshError(U32 pStatus, const std::string &pReason, const LLSD& pContent, const std::string &pURL, U32 pNavMeshVersion);
 
 protected:
 
diff --git a/indra/newview/llproductinforequest.cpp b/indra/newview/llproductinforequest.cpp
index 93bf8b23289..1390000fc50 100644
--- a/indra/newview/llproductinforequest.cpp
+++ b/indra/newview/llproductinforequest.cpp
@@ -43,10 +43,10 @@ class LLProductInfoRequestResponder : public LLHTTPClient::Responder
 	}
 
 	//If we get back an error (not found, etc...), handle it here
-	virtual void error(U32 status, const std::string& reason)
+	virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content)
 	{
-		llwarns << "LLProductInfoRequest::error("
-		<< status << ": " << reason << ")" << llendl;
+		llwarns << "LLProductInfoRequest error [status:"
+				<< status << ":] " << content << llendl;
 	}
 };
 
diff --git a/indra/newview/llremoteparcelrequest.cpp b/indra/newview/llremoteparcelrequest.cpp
index 3862dac340d..500dec7ee58 100644
--- a/indra/newview/llremoteparcelrequest.cpp
+++ b/indra/newview/llremoteparcelrequest.cpp
@@ -62,10 +62,10 @@ void LLRemoteParcelRequestResponder::result(const LLSD& content)
 
 //If we get back an error (not found, etc...), handle it here
 //virtual
-void LLRemoteParcelRequestResponder::error(U32 status, const std::string& reason)
+void LLRemoteParcelRequestResponder::errorWithContent(U32 status, const std::string& reason, const LLSD& content)
 {
-	llinfos << "LLRemoteParcelRequest::error("
-		<< status << ": " << reason << ")" << llendl;
+	llwarns << "LLRemoteParcelRequest error [status:"
+			<< status << "]: " << content << llendl;
 
 	// Panel inspecting the information may be closed and destroyed
 	// before this response is received.
diff --git a/indra/newview/llremoteparcelrequest.h b/indra/newview/llremoteparcelrequest.h
index 74cf1616dfa..b87056573b1 100644
--- a/indra/newview/llremoteparcelrequest.h
+++ b/indra/newview/llremoteparcelrequest.h
@@ -44,7 +44,7 @@ class LLRemoteParcelRequestResponder : public LLHTTPClient::Responder
 	/*virtual*/ void result(const LLSD& content);
 
 	//If we get back an error (not found, etc...), handle it here
-	/*virtual*/ void error(U32 status, const std::string& reason);
+	/*virtual*/ void errorWithContent(U32 status, const std::string& reason, const LLSD& content);
 
 protected:
 	LLHandle<LLRemoteParcelInfoObserver> mObserverHandle;
diff --git a/indra/newview/llspeakers.cpp b/indra/newview/llspeakers.cpp
index 1c7c6450c70..890bc0f42d4 100644
--- a/indra/newview/llspeakers.cpp
+++ b/indra/newview/llspeakers.cpp
@@ -726,9 +726,9 @@ class ModerationResponder : public LLHTTPClient::Responder
 		mSessionID = session_id;
 	}
 
-	virtual void error(U32 status, const std::string& reason)
+	virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content)
 	{
-		llwarns << status << ": " << reason << llendl;
+		llwarns << "ModerationResponder error [status:" << status << "]: " << content << llendl;
 
 		if ( gIMMgr )
 		{
diff --git a/indra/newview/lluploadfloaterobservers.cpp b/indra/newview/lluploadfloaterobservers.cpp
index 5a6a17fbca8..1d777b3f7f3 100644
--- a/indra/newview/lluploadfloaterobservers.cpp
+++ b/indra/newview/lluploadfloaterobservers.cpp
@@ -33,9 +33,10 @@ LLUploadModelPremissionsResponder::LLUploadModelPremissionsResponder(const LLHan
 {
 }
 
-void LLUploadModelPremissionsResponder::error(U32 status, const std::string& reason)
+void LLUploadModelPremissionsResponder::errorWithContent(U32 status, const std::string& reason, const LLSD& content)
 {
-	llwarns << "LLUploadModelPremissionsResponder::error("<< status << ": " << reason << ")" << llendl;
+	llwarns << "LLUploadModelPremissionsResponder error [status:"
+			<< status << "]: " << content << llendl;
 
 	LLUploadPermissionsObserver* observer = mObserverHandle.get();
 
diff --git a/indra/newview/lluploadfloaterobservers.h b/indra/newview/lluploadfloaterobservers.h
index 79aad282d71..b43ddb44d95 100644
--- a/indra/newview/lluploadfloaterobservers.h
+++ b/indra/newview/lluploadfloaterobservers.h
@@ -86,7 +86,7 @@ class LLUploadModelPremissionsResponder : public LLHTTPClient::Responder
 
 	LLUploadModelPremissionsResponder(const LLHandle<LLUploadPermissionsObserver>& observer);
 
-	void error(U32 status, const std::string& reason);
+	void errorWithContent(U32 status, const std::string& reason, const LLSD& content);
 
 	void result(const LLSD& content);
 
diff --git a/indra/newview/llviewerdisplayname.cpp b/indra/newview/llviewerdisplayname.cpp
index 5741fab29ae..1ac6a90894a 100644
--- a/indra/newview/llviewerdisplayname.cpp
+++ b/indra/newview/llviewerdisplayname.cpp
@@ -59,8 +59,10 @@ class LLSetDisplayNameResponder : public LLHTTPClient::Responder
 {
 public:
 	// only care about errors
-	/*virtual*/ void error(U32 status, const std::string& reason)
+	/*virtual*/ void errorWithContent(U32 status, const std::string& reason, const LLSD& content)
 	{
+		llwarns << "LLSetDisplayNameResponder error [status:"
+				<< status << "]: " << content << llendl;
 		LLViewerDisplayName::sSetDisplayNameSignal(false, "", LLSD());
 		LLViewerDisplayName::sSetDisplayNameSignal.disconnect_all_slots();
 	}
diff --git a/indra/newview/llviewerobjectlist.cpp b/indra/newview/llviewerobjectlist.cpp
index eec44c7a742..0561e731e79 100644
--- a/indra/newview/llviewerobjectlist.cpp
+++ b/indra/newview/llviewerobjectlist.cpp
@@ -691,12 +691,12 @@ class LLObjectCostResponder : public LLCurl::Responder
 		}
 	}
 
-	void error(U32 statusNum, const std::string& reason)
+	void errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content)
 	{
 		llwarns
 			<< "Transport error requesting object cost "
-			<< "HTTP status: " << statusNum << ", reason: "
-			<< reason << "." << llendl;
+			<< "[status: " << statusNum << "]: "
+			<< content << llendl;
 
 		// TODO*: Error message to user
 		// For now just clear the request from the pending list
@@ -780,12 +780,12 @@ class LLPhysicsFlagsResponder : public LLCurl::Responder
 		}
 	}
 
-	void error(U32 statusNum, const std::string& reason)
+	void errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content)
 	{
 		llwarns
 			<< "Transport error requesting object physics flags "
-			<< "HTTP status: " << statusNum << ", reason: "
-			<< reason << "." << llendl;
+			<< "[status: " << statusNum << "]: "
+			<< content << llendl;
 
 		// TODO*: Error message to user
 		// For now just clear the request from the pending list
diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp
index e940dda010c..b8b53aa6e45 100755
--- a/indra/newview/llviewerregion.cpp
+++ b/indra/newview/llviewerregion.cpp
@@ -210,9 +210,9 @@ class BaseCapabilitiesComplete : public LLHTTPClient::Responder
 	virtual ~BaseCapabilitiesComplete()
 	{ }
 
-    void error(U32 statusNum, const std::string& reason)
+    void errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content)
     {
-		LL_WARNS2("AppInit", "Capabilities") << statusNum << ": " << reason << LL_ENDL;
+		LL_WARNS2("AppInit", "Capabilities") << "[status:" << statusNum << ":] " << content << LL_ENDL;
 		LLViewerRegion *regionp = LLWorld::getInstance()->getRegionFromHandle(mRegionHandle);
 		if (regionp)
 		{
@@ -278,8 +278,11 @@ class BaseCapabilitiesCompleteTracker :  public LLHTTPClient::Responder
 	virtual ~BaseCapabilitiesCompleteTracker()
 	{ }
 
-	void error(U32 statusNum, const std::string& reason)
-	{ }
+	void errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content)
+	{
+		llwarns << "BaseCapabilitiesCompleteTracker error [status:"
+				<< statusNum << "]: " << content << llendl;
+	}
 
 	void result(const LLSD& content)
 	{
@@ -1731,9 +1734,9 @@ class SimulatorFeaturesReceived : public LLHTTPClient::Responder
     { }
 	
 	
-    void error(U32 statusNum, const std::string& reason)
+    void errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content)
     {
-		LL_WARNS2("AppInit", "SimulatorFeatures") << statusNum << ": " << reason << LL_ENDL;
+		LL_WARNS2("AppInit", "SimulatorFeatures") << "[status:" << statusNum << "]: " << content << LL_ENDL;
 		retry();
     }
 
diff --git a/indra/newview/llviewerstats.cpp b/indra/newview/llviewerstats.cpp
index 17bb03b8890..4ed01f36ab7 100755
--- a/indra/newview/llviewerstats.cpp
+++ b/indra/newview/llviewerstats.cpp
@@ -530,10 +530,10 @@ class ViewerStatsResponder : public LLHTTPClient::Responder
 public:
     ViewerStatsResponder() { }
 
-    void error(U32 statusNum, const std::string& reason)
+    void errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content)
     {
-		llinfos << "ViewerStatsResponder::error " << statusNum << " "
-				<< reason << llendl;
+		llwarns << "ViewerStatsResponder error [status:" << statusNum << "]: "
+				<< content << llendl;
     }
 
     void result(const LLSD& content)
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index 3605383c5ce..9be1de4f0e1 100755
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -2264,7 +2264,7 @@ class ViewerAppearanceChangeMetricsResponder: public LLCurl::Responder
 		else
 		{
 			LL_WARNS("Avatar") << "Failed " << status << " reason " << reason << LL_ENDL;
-			error(status,reason);
+			errorWithContent(status,reason,content);
 		}
 	}
 
@@ -2440,11 +2440,12 @@ class CheckAgentAppearanceServiceResponder: public LLHTTPClient::Responder
 	}
 
 	// Error
-	/*virtual*/ void error(U32 status, const std::string& reason)
+	/*virtual*/ void errorWithContent(U32 status, const std::string& reason, const LLSD& content)
 	{
 		if (isAgentAvatarValid())
 		{
-			LL_DEBUGS("Avatar") << "failed, will rebake" << llendl;
+			LL_DEBUGS("Avatar") << "failed, will rebake [status:"
+					<< status << "]: " << content << llendl;
 			forceAppearanceUpdate();
 		}
 	}	
diff --git a/indra/newview/llvoicechannel.cpp b/indra/newview/llvoicechannel.cpp
index bd12328a6bc..181735ee309 100644
--- a/indra/newview/llvoicechannel.cpp
+++ b/indra/newview/llvoicechannel.cpp
@@ -56,7 +56,8 @@ class LLVoiceCallCapResponder : public LLHTTPClient::Responder
 public:
 	LLVoiceCallCapResponder(const LLUUID& session_id) : mSessionID(session_id) {};
 
-	virtual void error(U32 status, const std::string& reason);	// called with bad status codes
+	// called with bad status codes
+	virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content);
 	virtual void result(const LLSD& content);
 
 private:
@@ -64,11 +65,10 @@ class LLVoiceCallCapResponder : public LLHTTPClient::Responder
 };
 
 
-void LLVoiceCallCapResponder::error(U32 status, const std::string& reason)
+void LLVoiceCallCapResponder::errorWithContent(U32 status, const std::string& reason, const LLSD& content)
 {
-	LL_WARNS("Voice") << "LLVoiceCallCapResponder::error("
-		<< status << ": " << reason << ")"
-		<< LL_ENDL;
+	LL_WARNS("Voice") << "LLVoiceCallCapResponder error [status:"
+		<< status << "]: " << content << LL_ENDL;
 	LLVoiceChannel* channelp = LLVoiceChannel::getChannelByID(mSessionID);
 	if ( channelp )
 	{
diff --git a/indra/newview/llvoicevivox.cpp b/indra/newview/llvoicevivox.cpp
index db0fc3dca73..e112c589e90 100644
--- a/indra/newview/llvoicevivox.cpp
+++ b/indra/newview/llvoicevivox.cpp
@@ -126,17 +126,18 @@ class LLVivoxVoiceAccountProvisionResponder :
 		mRetries = retries;
 	}
 
-	virtual void error(U32 status, const std::string& reason)
+	virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content)
 	{
+		LL_WARNS("Voice") << "ProvisionVoiceAccountRequest returned an error, "
+			<<  ( (mRetries > 0) ? "retrying" : "too many retries (giving up)" )
+			<< status << "]: " << content << LL_ENDL;
+
 		if ( mRetries > 0 )
 		{
-			LL_WARNS("Voice") << "ProvisionVoiceAccountRequest returned an error, retrying.  status = " << status << ", reason = \"" << reason << "\"" << LL_ENDL;
-			LLVivoxVoiceClient::getInstance()->requestVoiceAccountProvision(
-				mRetries - 1);
+			LLVivoxVoiceClient::getInstance()->requestVoiceAccountProvision(mRetries - 1);
 		}
 		else
 		{
-			LL_WARNS("Voice") << "ProvisionVoiceAccountRequest returned an error, too many retries (giving up).  status = " << status << ", reason = \"" << reason << "\"" << LL_ENDL;
 			LLVivoxVoiceClient::getInstance()->giveUp();
 		}
 	}
@@ -195,18 +196,18 @@ class LLVivoxVoiceClientCapResponder : public LLHTTPClient::Responder
 public:
 	LLVivoxVoiceClientCapResponder(LLVivoxVoiceClient::state requesting_state) : mRequestingState(requesting_state) {};
 
-	virtual void error(U32 status, const std::string& reason);	// called with bad status codes
+	// called with bad status codes
+	virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content);
 	virtual void result(const LLSD& content);
 
 private:
 	LLVivoxVoiceClient::state mRequestingState;  // state 
 };
 
-void LLVivoxVoiceClientCapResponder::error(U32 status, const std::string& reason)
+void LLVivoxVoiceClientCapResponder::errorWithContent(U32 status, const std::string& reason, const LLSD& content)
 {
-	LL_WARNS("Voice") << "LLVivoxVoiceClientCapResponder::error("
-		<< status << ": " << reason << ")"
-		<< LL_ENDL;
+	LL_WARNS("Voice") << "LLVivoxVoiceClientCapResponder error [status:"
+		<< status << "]: " << content << LL_ENDL;
 	LLVivoxVoiceClient::getInstance()->sessionTerminate();
 }
 
diff --git a/indra/newview/llwebsharing.cpp b/indra/newview/llwebsharing.cpp
index 43b1a320c34..3a80051b9b7 100644
--- a/indra/newview/llwebsharing.cpp
+++ b/indra/newview/llwebsharing.cpp
@@ -68,9 +68,9 @@ class LLWebSharingConfigResponder : public LLHTTPClient::Responder
 		}
 	}
 
-	virtual void error(U32 status, const std::string& reason)
+	virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content)
 	{
-		LL_WARNS("WebSharing") << "Error [" << status << "]: " << reason << LL_ENDL;
+		LL_WARNS("WebSharing") << "Error [status:" << status << "]: " << content << LL_ENDL;
 	}
 
 	virtual void result(const LLSD& content)
@@ -99,7 +99,7 @@ class LLWebSharingOpenIDAuthResponder : public LLHTTPClient::Responder
 		/// Left empty to override the default LLSD parsing behaviour.
 	}
 
-	virtual void error(U32 status, const std::string& reason)
+	virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content)
 	{
 		if (HTTP_UNAUTHORIZED == status)
 		{
@@ -108,7 +108,7 @@ class LLWebSharingOpenIDAuthResponder : public LLHTTPClient::Responder
 		}
 		else
 		{
-			LL_WARNS("WebSharing") << "Error [" << status << "]: " << reason << LL_ENDL;
+			LL_WARNS("WebSharing") << "Error [status:" << status << "]: " << content << LL_ENDL;
 			LLWebSharing::instance().retryOpenIDAuth();
 		}
 
@@ -152,9 +152,9 @@ class LLWebSharingSecurityTokenResponder : public LLHTTPClient::Responder
 		}
 	}
 
-	virtual void error(U32 status, const std::string& reason)
+	virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content)
 	{
-		LL_WARNS("WebSharing") << "Error [" << status << "]: " << reason << LL_ENDL;
+		LL_WARNS("WebSharing") << "Error [status:" << status << "]: " << content << LL_ENDL;
 		LLWebSharing::instance().retryOpenIDAuth();
 	}
 
@@ -221,9 +221,9 @@ class LLWebSharingUploadResponder : public LLHTTPClient::Responder
 		}
 	}
 
-	virtual void error(U32 status, const std::string& reason)
+	virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content)
 	{
-		LL_WARNS("WebSharing") << "Error [" << status << "]: " << reason << LL_ENDL;
+		LL_WARNS("WebSharing") << "Error [status:" << status << "]: " << content << LL_ENDL;
 	}
 
 	virtual void result(const LLSD& content)
diff --git a/indra/newview/llwlhandlers.cpp b/indra/newview/llwlhandlers.cpp
index be3e3ff30e0..93eba5b6048 100644
--- a/indra/newview/llwlhandlers.cpp
+++ b/indra/newview/llwlhandlers.cpp
@@ -121,9 +121,11 @@ LLEnvironmentRequestResponder::LLEnvironmentRequestResponder()
 
 	LLEnvManagerNew::getInstance()->onRegionSettingsResponse(unvalidated_content);
 }
-/*virtual*/ void LLEnvironmentRequestResponder::error(U32 status, const std::string& reason)
+/*virtual*/
+void LLEnvironmentRequestResponder::errorWithContent(U32 status, const std::string& reason, const LLSD& content)
 {
-	LL_INFOS("WindlightCaps") << "Got an error, not using region windlight..." << LL_ENDL;
+	LL_INFOS("WindlightCaps") << "Got an error, not using region windlight... [status:" 
+		<< status << "]: " << content << LL_ENDL;
 	LLEnvManagerNew::getInstance()->onRegionSettingsResponse(LLSD());
 }
 
@@ -190,14 +192,15 @@ bool LLEnvironmentApply::initiateRequest(const LLSD& content)
 		LLEnvManagerNew::instance().onRegionSettingsApplyResponse(false);
 	}
 }
-/*virtual*/ void LLEnvironmentApplyResponder::error(U32 status, const std::string& reason)
+/*virtual*/
+void LLEnvironmentApplyResponder::errorWithContent(U32 status, const std::string& reason, const LLSD& content)
 {
-	std::stringstream msg;
-	msg << reason << " (Code " << status << ")";
-
-	LL_WARNS("WindlightCaps") << "Couldn't apply windlight settings to region!  Reason: " << msg << LL_ENDL;
+	LL_WARNS("WindlightCaps") << "Couldn't apply windlight settings to region!  [status:"
+		<< status << "]: " << content << LL_ENDL;
 
 	LLSD args(LLSD::emptyMap());
+	std::stringstream msg;
+	msg << reason << " (Code " << status << ")";
 	args["FAIL_REASON"] = msg.str();
 	LLNotificationsUtil::add("WLRegionApplyFail", args);
 }
diff --git a/indra/newview/llwlhandlers.h b/indra/newview/llwlhandlers.h
index 23558876da7..598ce6d52ac 100644
--- a/indra/newview/llwlhandlers.h
+++ b/indra/newview/llwlhandlers.h
@@ -47,7 +47,7 @@ class LLEnvironmentRequestResponder: public LLHTTPClient::Responder
 	LOG_CLASS(LLEnvironmentRequestResponder);
 public:
 	virtual void result(const LLSD& content);
-	virtual void error(U32 status, const std::string& reason);
+	virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content);
 
 private:
 	friend class LLEnvironmentRequest;
@@ -89,7 +89,8 @@ class LLEnvironmentApplyResponder: public LLHTTPClient::Responder
 	 */
 	virtual void result(const LLSD& content);
 
-	virtual void error(U32 status, const std::string& reason); // non-200 errors only
+	// non-200 errors only
+	virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content);
 
 private:
 	friend class LLEnvironmentApply;
diff --git a/indra/newview/tests/llmediadataclient_test.cpp b/indra/newview/tests/llmediadataclient_test.cpp
index 0254c5881f7..41cb3448083 100644
--- a/indra/newview/tests/llmediadataclient_test.cpp
+++ b/indra/newview/tests/llmediadataclient_test.cpp
@@ -126,7 +126,9 @@ void LLHTTPClient::post(
 	result[LLTextureEntry::OBJECT_ID_KEY] = body[LLTextureEntry::OBJECT_ID_KEY];
 	if ( url == FAKE_OBJECT_MEDIA_CAP_URL_503 )
 	{
-		responder->error(HTTP_SERVICE_UNAVAILABLE, "fake reason");
+		LLSD content;
+		content["reason"] = "fake reason";
+		responder->errorWithContent(HTTP_SERVICE_UNAVAILABLE, "fake reason", content);
 		return;
 	}
 	else if (url == FAKE_OBJECT_MEDIA_NAVIGATE_CAP_URL_ERROR) 
-- 
GitLab


From 7b0b5726dd2fcf5b79ed1b112891655fad0f96eb Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Wed, 6 Mar 2013 09:53:11 -0500
Subject: [PATCH 344/436] make it clearer when
 DebugForceAppearanceRequestFailure is on

---
 indra/newview/llvoavatar.cpp | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index f6fd8b24092..1bc26a7133b 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -2937,6 +2937,10 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent)
 			S32 last_received_cof_version = LLAppearanceMgr::instance().getLastAppearanceUpdateCOFVersion();
 			debug_line += llformat(" - cof: %d req: %d rcv:%d",
 								   curr_cof_version, last_request_cof_version, last_received_cof_version);
+			if (gSavedSettings.getBOOL("DebugForceAppearanceRequestFailure"))
+			{
+				debug_line += " FORCING ERRS";
+			}
 		}
 		addDebugText(debug_line);
 	}
-- 
GitLab


From fe042430b03667abcd6b72ef9cc27d82d85f4242 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Wed, 6 Mar 2013 10:46:43 -0500
Subject: [PATCH 345/436] Fix for windows build failure

---
 indra/newview/llfloaterregiondebugconsole.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/newview/llfloaterregiondebugconsole.cpp b/indra/newview/llfloaterregiondebugconsole.cpp
index 0cde878055d..3a7ca17b73d 100644
--- a/indra/newview/llfloaterregiondebugconsole.cpp
+++ b/indra/newview/llfloaterregiondebugconsole.cpp
@@ -75,7 +75,7 @@ namespace
 	{
 	public:
 		/* virtual */
-		void errorWithContent(U32 status, const std::string& reason)
+		void errorWithContent(U32 status, const std::string& reason, const LLSD& content)
 		{
 			sConsoleReplySignal(UNABLE_TO_SEND_COMMAND);
 		}
-- 
GitLab


From 2784a515b0e725f74bf0e5fab47153ba358b26d6 Mon Sep 17 00:00:00 2001
From: Nyx Linden <nyx@lindenlab.com>
Date: Wed, 6 Mar 2013 17:20:33 -0500
Subject: [PATCH 346/436] SH-3954 SH-3941 SH-3910 FIX local appearance does not
 update

We suppress texture downloads for local textures not needed with server side
baking. We need to explicitly re-set texture priority for local textures
when entering appearance mode.
---
 indra/newview/llvoavatarself.cpp | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index d3c91f3339b..66ad4ec3949 100755
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -2963,8 +2963,9 @@ void LLVOAvatarSelf::onCustomizeStart(bool disable_camera_switch)
 		gAgentAvatarp->idleUpdateAppearanceAnimation();
 #endif
 		
-		gAgentAvatarp->invalidateAll();
-		gAgentAvatarp->updateMeshTextures();
+		gAgentAvatarp->updateTextures(); // call updateTextureStats
+		gAgentAvatarp->invalidateAll(); // mark all bakes as dirty, request updates
+		gAgentAvatarp->updateMeshTextures(); // make sure correct textures are applied to the avatar mesh.
 	}
 }
 
-- 
GitLab


From 5a436e46f6893719fc91a1cb70813671cb2a6d44 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Fri, 8 Mar 2013 17:07:17 -0500
Subject: [PATCH 347/436] SH-3959 WIP - pass information about type of fetched
 image - server bake, host bake, map tile, etc - down the chain so
 LLTextureFetchWorker can adjust behavior as needed

---
 indra/llappearance/lltexturemanagerbridge.h |  0
 indra/newview/llcolorswatch.cpp             |  2 +-
 indra/newview/lldrawpoolterrain.cpp         |  2 +
 indra/newview/lldrawpoolwater.cpp           |  4 +-
 indra/newview/llfloatermodelpreview.cpp     |  2 +-
 indra/newview/llfloaterreporter.cpp         |  2 +-
 indra/newview/llfloaterscriptdebug.cpp      |  2 +-
 indra/newview/lllocalbitmaps.cpp            |  6 +--
 indra/newview/llpreviewtexture.cpp          |  2 +-
 indra/newview/llselectmgr.cpp               |  6 +--
 indra/newview/lltexturectrl.cpp             |  4 +-
 indra/newview/lltexturefetch.cpp            | 16 ++++--
 indra/newview/lltexturefetch.h              |  3 +-
 indra/newview/llviewerobject.cpp            |  6 +--
 indra/newview/llviewertexture.cpp           | 47 +++++++++++------
 indra/newview/llviewertexture.h             | 29 ++++++++---
 indra/newview/llviewertexturelist.cpp       | 58 ++++++++++++---------
 indra/newview/llviewertexturelist.h         |  8 ++-
 indra/newview/llviewerwearable.cpp          |  2 +-
 indra/newview/llvoavatar.cpp                |  6 +--
 indra/newview/llvoavatarself.cpp            |  2 +-
 indra/newview/llvograss.cpp                 |  2 +-
 indra/newview/llvoicevisualizer.cpp         |  2 +-
 indra/newview/llvosky.cpp                   |  8 +--
 indra/newview/llvotree.cpp                  |  2 +-
 indra/newview/llvovolume.cpp                |  4 +-
 indra/newview/llworldmap.cpp                |  4 +-
 indra/newview/llworldmipmap.cpp             |  2 +-
 28 files changed, 142 insertions(+), 91 deletions(-)
 mode change 100644 => 100755 indra/llappearance/lltexturemanagerbridge.h
 mode change 100644 => 100755 indra/newview/lltexturefetch.h
 mode change 100644 => 100755 indra/newview/llviewertexture.h
 mode change 100644 => 100755 indra/newview/llviewertexturelist.h

diff --git a/indra/llappearance/lltexturemanagerbridge.h b/indra/llappearance/lltexturemanagerbridge.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llcolorswatch.cpp b/indra/newview/llcolorswatch.cpp
index 87fd47cb2c6..f1f7da5fd1f 100644
--- a/indra/newview/llcolorswatch.cpp
+++ b/indra/newview/llcolorswatch.cpp
@@ -241,7 +241,7 @@ void LLColorSwatchCtrl::draw()
 	{
 		if (!mFallbackImageName.empty())
 		{
-			LLPointer<LLViewerFetchedTexture> fallback_image = LLViewerTextureManager::getFetchedTextureFromFile(mFallbackImageName, TRUE, 
+			LLPointer<LLViewerFetchedTexture> fallback_image = LLViewerTextureManager::getFetchedTextureFromFile(mFallbackImageName, FTT_LOCAL_FILE, TRUE, 
 				LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
 			if( fallback_image->getComponents() == 4 )
 			{	
diff --git a/indra/newview/lldrawpoolterrain.cpp b/indra/newview/lldrawpoolterrain.cpp
index 809f34bdffd..0adb42428d4 100644
--- a/indra/newview/lldrawpoolterrain.cpp
+++ b/indra/newview/lldrawpoolterrain.cpp
@@ -69,6 +69,7 @@ LLDrawPoolTerrain::LLDrawPoolTerrain(LLViewerTexture *texturep) :
 	sDetailScale = 1.f/gSavedSettings.getF32("RenderTerrainScale");
 	sDetailMode = gSavedSettings.getS32("RenderTerrainDetail");
 	mAlphaRampImagep = LLViewerTextureManager::getFetchedTextureFromFile("alpha_gradient.tga", 
+													FTT_LOCAL_FILE,
 													TRUE, LLGLTexture::BOOST_UI, 
 													LLViewerTexture::FETCHED_TEXTURE,
 													format, int_format,
@@ -78,6 +79,7 @@ LLDrawPoolTerrain::LLDrawPoolTerrain(LLViewerTexture *texturep) :
 	mAlphaRampImagep->setAddressMode(LLTexUnit::TAM_CLAMP);
 
 	m2DAlphaRampImagep = LLViewerTextureManager::getFetchedTextureFromFile("alpha_gradient_2d.j2c", 
+													FTT_LOCAL_FILE,
 													TRUE, LLGLTexture::BOOST_UI, 
 													LLViewerTexture::FETCHED_TEXTURE,
 													format, int_format,
diff --git a/indra/newview/lldrawpoolwater.cpp b/indra/newview/lldrawpoolwater.cpp
index 26890bd75f7..5ddc15df427 100644
--- a/indra/newview/lldrawpoolwater.cpp
+++ b/indra/newview/lldrawpoolwater.cpp
@@ -66,11 +66,11 @@ LLVector3 LLDrawPoolWater::sLightDir;
 LLDrawPoolWater::LLDrawPoolWater() :
 	LLFacePool(POOL_WATER)
 {
-	mHBTex[0] = LLViewerTextureManager::getFetchedTexture(gSunTextureID, TRUE, LLGLTexture::BOOST_UI);
+	mHBTex[0] = LLViewerTextureManager::getFetchedTexture(gSunTextureID, FTT_DEFAULT, TRUE, LLGLTexture::BOOST_UI);
 	gGL.getTexUnit(0)->bind(mHBTex[0]) ;
 	mHBTex[0]->setAddressMode(LLTexUnit::TAM_CLAMP);
 
-	mHBTex[1] = LLViewerTextureManager::getFetchedTexture(gMoonTextureID, TRUE, LLGLTexture::BOOST_UI);
+	mHBTex[1] = LLViewerTextureManager::getFetchedTexture(gMoonTextureID, FTT_DEFAULT, TRUE, LLGLTexture::BOOST_UI);
 	gGL.getTexUnit(0)->bind(mHBTex[1]);
 	mHBTex[1]->setAddressMode(LLTexUnit::TAM_CLAMP);
 
diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp
index c9f5b42b205..100f1d580b9 100755
--- a/indra/newview/llfloatermodelpreview.cpp
+++ b/indra/newview/llfloatermodelpreview.cpp
@@ -2496,7 +2496,7 @@ void LLModelLoader::loadTextures()
 				if(!material.mDiffuseMapFilename.empty())
 				{
 					material.mDiffuseMap = 
-						LLViewerTextureManager::getFetchedTextureFromUrl("file://" + material.mDiffuseMapFilename, TRUE, LLGLTexture::BOOST_PREVIEW);
+						LLViewerTextureManager::getFetchedTextureFromUrl("file://" + material.mDiffuseMapFilename, FTT_LOCAL_FILE, TRUE, LLGLTexture::BOOST_PREVIEW);
 					material.mDiffuseMap->setLoadedCallback(LLModelPreview::textureLoadedCallback, 0, TRUE, FALSE, mPreview, NULL, FALSE);
 					material.mDiffuseMap->forceToSaveRawImage(0, F32_MAX);
 					mNumOfFetchingTextures++ ;
diff --git a/indra/newview/llfloaterreporter.cpp b/indra/newview/llfloaterreporter.cpp
index 685b566fa89..25e92dc17e4 100644
--- a/indra/newview/llfloaterreporter.cpp
+++ b/indra/newview/llfloaterreporter.cpp
@@ -765,7 +765,7 @@ void LLFloaterReporter::takeScreenshot()
 
 	// store in the image list so it doesn't try to fetch from the server
 	LLPointer<LLViewerFetchedTexture> image_in_list = 
-		LLViewerTextureManager::getFetchedTexture(mResourceDatap->mAssetInfo.mUuid, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::FETCHED_TEXTURE);
+		LLViewerTextureManager::getFetchedTexture(mResourceDatap->mAssetInfo.mUuid);
 	image_in_list->createGLTexture(0, raw, 0, TRUE, LLGLTexture::OTHER);
 	
 	// the texture picker then uses that texture
diff --git a/indra/newview/llfloaterscriptdebug.cpp b/indra/newview/llfloaterscriptdebug.cpp
index c987dbb4fb8..6c17f62c1e8 100644
--- a/indra/newview/llfloaterscriptdebug.cpp
+++ b/indra/newview/llfloaterscriptdebug.cpp
@@ -105,7 +105,7 @@ void LLFloaterScriptDebug::addScriptLine(const std::string &utf8mesg, const std:
 
 	if (objectp)
 	{
-		objectp->setIcon(LLViewerTextureManager::getFetchedTextureFromFile("script_error.j2c", TRUE, LLGLTexture::BOOST_UI));
+		objectp->setIcon(LLViewerTextureManager::getFetchedTextureFromFile("script_error.j2c", FTT_LOCAL_FILE, TRUE, LLGLTexture::BOOST_UI));
 		floater_label = llformat("%s(%.0f, %.0f, %.0f)",
 						user_name.c_str(),
 						objectp->getPositionRegion().mV[VX],
diff --git a/indra/newview/lllocalbitmaps.cpp b/indra/newview/lllocalbitmaps.cpp
index 48f784838cb..25df4889b0d 100644
--- a/indra/newview/lllocalbitmaps.cpp
+++ b/indra/newview/lllocalbitmaps.cpp
@@ -195,7 +195,7 @@ bool LLLocalBitmap::updateSelf(EUpdateType optional_firstupdate)
 					mLastModified = new_last_modified;
 
 					LLPointer<LLViewerFetchedTexture> texture = new LLViewerFetchedTexture
-						("file://"+mFilename, mWorldID, LL_LOCAL_USE_MIPMAPS);
+						("file://"+mFilename, FTT_LOCAL_FILE, mWorldID, LL_LOCAL_USE_MIPMAPS);
 
 					texture->createGLTexture(LL_LOCAL_DISCARD_LEVEL, raw_image);
 					texture->setCachedRawImage(LL_LOCAL_DISCARD_LEVEL, raw_image);
@@ -437,8 +437,8 @@ void LLLocalBitmap::updateUserPrims(LLUUID old_id, LLUUID new_id)
 					LLFace* face = object->mDrawable->getFace(face_iter);
 					if (face && face->getTexture() && face->getTexture()->getID() == old_id)
 					{
-						object->setTEImage(face_iter, LLViewerTextureManager::getFetchedTexture
-							(new_id, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE));
+						object->setTEImage(face_iter, LLViewerTextureManager::getFetchedTexture(
+							new_id, FTT_DEFAULT, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE));
 
 						update_obj = true;
 					}
diff --git a/indra/newview/llpreviewtexture.cpp b/indra/newview/llpreviewtexture.cpp
index 3784208e372..91a98792eb5 100644
--- a/indra/newview/llpreviewtexture.cpp
+++ b/indra/newview/llpreviewtexture.cpp
@@ -468,7 +468,7 @@ void LLPreviewTexture::onAspectRatioCommit(LLUICtrl* ctrl, void* userdata)
 
 void LLPreviewTexture::loadAsset()
 {
-	mImage = LLViewerTextureManager::getFetchedTexture(mImageID, MIPMAP_TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
+	mImage = LLViewerTextureManager::getFetchedTexture(mImageID, FTT_DEFAULT, MIPMAP_TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
 	mImageOldBoostLevel = mImage->getBoostLevel();
 	mImage->setBoostLevel(LLGLTexture::BOOST_PREVIEW);
 	mImage->forceToSaveRawImage(0) ;
diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp
index 1ee9b377ba8..4681efd3e59 100644
--- a/indra/newview/llselectmgr.cpp
+++ b/indra/newview/llselectmgr.cpp
@@ -1603,7 +1603,7 @@ void LLSelectMgr::selectionSetImage(const LLUUID& imageid)
 				// Texture picker defaults aren't inventory items
 				// * Don't need to worry about permissions for them
 				// * Can just apply the texture and be done with it.
-				objectp->setTEImage(te, LLViewerTextureManager::getFetchedTexture(mImageID, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE));
+				objectp->setTEImage(te, LLViewerTextureManager::getFetchedTexture(mImageID, FTT_DEFAULT, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE));
 			}
 			return true;
 		}
@@ -1769,7 +1769,7 @@ BOOL LLSelectMgr::selectionRevertTextures()
 					}
 					else
 					{
-						object->setTEImage(te, LLViewerTextureManager::getFetchedTexture(id, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE));
+						object->setTEImage(te, LLViewerTextureManager::getFetchedTexture(id, FTT_DEFAULT, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE));
 					}
 				}
 			}
@@ -5183,7 +5183,7 @@ void LLSelectMgr::updateSilhouettes()
 
 	if (!mSilhouetteImagep)
 	{
-		mSilhouetteImagep = LLViewerTextureManager::getFetchedTextureFromFile("silhouette.j2c", TRUE, LLGLTexture::BOOST_UI);
+		mSilhouetteImagep = LLViewerTextureManager::getFetchedTextureFromFile("silhouette.j2c", FTT_LOCAL_FILE, TRUE, LLGLTexture::BOOST_UI);
 	}
 
 	mHighlightedObjects->cleanupNodes();
diff --git a/indra/newview/lltexturectrl.cpp b/indra/newview/lltexturectrl.cpp
index 3dc506d2654..d8438967a24 100644
--- a/indra/newview/lltexturectrl.cpp
+++ b/indra/newview/lltexturectrl.cpp
@@ -570,7 +570,7 @@ void LLFloaterTexturePicker::draw()
 		mTexturep = NULL;
 		if(mImageAssetID.notNull())
 		{
-			mTexturep = LLViewerTextureManager::getFetchedTexture(mImageAssetID, MIPMAP_YES);
+			mTexturep = LLViewerTextureManager::getFetchedTexture(mImageAssetID);
 			mTexturep->setBoostLevel(LLGLTexture::BOOST_PREVIEW);
 		}
 
@@ -1456,7 +1456,7 @@ void LLTextureCtrl::draw()
 	}
 	else if (!mImageAssetID.isNull())
 	{
-		LLPointer<LLViewerFetchedTexture> texture = LLViewerTextureManager::getFetchedTexture(mImageAssetID, MIPMAP_YES,LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
+		LLPointer<LLViewerFetchedTexture> texture = LLViewerTextureManager::getFetchedTexture(mImageAssetID, FTT_DEFAULT, MIPMAP_YES,LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
 		
 		texture->setBoostLevel(LLGLTexture::BOOST_PREVIEW);
 		texture->forceToSaveRawImage(0) ;
diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp
index 81bc70906dd..6f31d768d67 100755
--- a/indra/newview/lltexturefetch.cpp
+++ b/indra/newview/lltexturefetch.cpp
@@ -389,7 +389,8 @@ class LLTextureFetchWorker : public LLWorkerClass, public LLCore::HttpHandler
 	virtual void onCompleted(LLCore::HttpHandle handle, LLCore::HttpResponse * response);
 	
 protected:
-	LLTextureFetchWorker(LLTextureFetch* fetcher, const std::string& url, const LLUUID& id, const LLHost& host,
+	LLTextureFetchWorker(LLTextureFetch* fetcher, FTType f_type,
+						 const std::string& url, const LLUUID& id, const LLHost& host,
 						 F32 priority, S32 discard, S32 size);
 
 private:
@@ -506,6 +507,7 @@ class LLTextureFetchWorker : public LLWorkerClass, public LLCore::HttpHandler
 	LLPointer<LLImageFormatted> mFormattedImage;
 	LLPointer<LLImageRaw> mRawImage;
 	LLPointer<LLImageRaw> mAuxImage;
+	FTType mFTType;
 	LLUUID mID;
 	LLHost mHost;
 	std::string mUrl;
@@ -827,6 +829,7 @@ volatile bool LLTextureFetch::svMetricsDataBreak(true);	// Start with a data bre
 // called from MAIN THREAD
 
 LLTextureFetchWorker::LLTextureFetchWorker(LLTextureFetch* fetcher,
+										   FTType f_type, // Fetched image type
 										   const std::string& url, // Optional URL
 										   const LLUUID& id,	// Image UUID
 										   const LLHost& host,	// Simulator host
@@ -838,6 +841,7 @@ LLTextureFetchWorker::LLTextureFetchWorker(LLTextureFetch* fetcher,
 	  mState(INIT),
 	  mWriteToCacheState(NOT_WRITE),
 	  mFetcher(fetcher),
+	  mFTType(f_type),
 	  mID(id),
 	  mHost(host),
 	  mUrl(url),
@@ -1171,7 +1175,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
 																		  offset, size, responder);
 				mCacheReadTimer.reset();
 			}
-			else if (mUrl.empty() && mFetcher->canLoadFromCache())
+			else if ((mUrl.empty()||mFTType==FTT_SERVER_BAKE) && mFetcher->canLoadFromCache())
 			{
 				setPriority(LLWorkerThread::PRIORITY_LOW | mWorkPriority); // Set priority first since Responder may change it
 
@@ -1285,6 +1289,10 @@ bool LLTextureFetchWorker::doWork(S32 param)
 				mCanUseHTTP = false;
 			}
 		}
+		if (mFTType == FTT_SERVER_BAKE)
+		{
+			mWriteToCacheState = CAN_WRITE;
+		}
 		if (mCanUseHTTP && !mUrl.empty())
 		{
 			mState = WAIT_HTTP_RESOURCE;
@@ -2396,7 +2404,7 @@ LLTextureFetch::~LLTextureFetch()
 	// ~LLQueuedThread() called here
 }
 
-bool LLTextureFetch::createRequest(const std::string& url, const LLUUID& id, const LLHost& host, F32 priority,
+bool LLTextureFetch::createRequest(FTType f_type, const std::string& url, const LLUUID& id, const LLHost& host, F32 priority,
 								   S32 w, S32 h, S32 c, S32 desired_discard, bool needs_aux, bool can_use_http)
 {
 	if(mFetcherLocked)
@@ -2479,7 +2487,7 @@ bool LLTextureFetch::createRequest(const std::string& url, const LLUUID& id, con
 	}
 	else
 	{
-		worker = new LLTextureFetchWorker(this, url, id, host, priority, desired_discard, desired_size);
+		worker = new LLTextureFetchWorker(this, f_type, url, id, host, priority, desired_discard, desired_size);
 		lockQueue();													// +Mfq
 		mRequestMap[id] = worker;
 		unlockQueue();													// -Mfq
diff --git a/indra/newview/lltexturefetch.h b/indra/newview/lltexturefetch.h
old mode 100644
new mode 100755
index 1e58ba35d40..544499232dc
--- a/indra/newview/lltexturefetch.h
+++ b/indra/newview/lltexturefetch.h
@@ -52,6 +52,7 @@ class LLHost;
 class LLViewerAssetStats;
 class LLTextureFetchDebugger;
 class LLTextureCache;
+enum FTType;
 
 // Interface class
 
@@ -77,7 +78,7 @@ class LLTextureFetch : public LLWorkerThread
 	void shutDownImageDecodeThread();
 
 	// Threads:  T* (but Tmain mostly)
-	bool createRequest(const std::string& url, const LLUUID& id, const LLHost& host, F32 priority,
+	bool createRequest(FTType f_type, const std::string& url, const LLUUID& id, const LLHost& host, F32 priority,
 					   S32 w, S32 h, S32 c, S32 discard, bool needs_aux, bool can_use_http);
 
 	// Requests that a fetch operation be deleted from the queue.
diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp
index c4b370a4b43..fcf5af76ff4 100755
--- a/indra/newview/llviewerobject.cpp
+++ b/indra/newview/llviewerobject.cpp
@@ -3273,7 +3273,7 @@ void LLViewerObject::boostTexturePriority(BOOL boost_children /* = TRUE */)
 	{
 		LLSculptParams *sculpt_params = (LLSculptParams *)getParameterEntry(LLNetworkData::PARAMS_SCULPT);
 		LLUUID sculpt_id = sculpt_params->getSculptTexture();
-		LLViewerTextureManager::getFetchedTexture(sculpt_id, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE)->setBoostLevel(LLGLTexture::BOOST_SELECTED);
+		LLViewerTextureManager::getFetchedTexture(sculpt_id, FTT_DEFAULT, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE)->setBoostLevel(LLGLTexture::BOOST_SELECTED);
 	}
 	
 	if (boost_children)
@@ -4016,7 +4016,7 @@ void LLViewerObject::setTE(const U8 te, const LLTextureEntry &texture_entry)
 //	if (mDrawable.notNull() && mDrawable->isVisible())
 //	{
 		const LLUUID& image_id = getTE(te)->getID();
-		mTEImages[te] = LLViewerTextureManager::getFetchedTexture(image_id, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
+		mTEImages[te] = LLViewerTextureManager::getFetchedTexture(image_id, FTT_DEFAULT, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
 //	}
 }
 
@@ -4066,7 +4066,7 @@ S32 LLViewerObject::setTETexture(const U8 te, const LLUUID& uuid)
 {
 	// Invalid host == get from the agent's sim
 	LLViewerFetchedTexture *image = LLViewerTextureManager::getFetchedTexture(
-		uuid, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE, 0, 0, LLHost::invalid);
+		uuid, FTT_DEFAULT, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE, 0, 0, LLHost::invalid);
 	return setTETextureCore(te,image);
 }
 
diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp
index e9501931eb8..1d0bda34a7d 100755
--- a/indra/newview/llviewertexture.cpp
+++ b/indra/newview/llviewertexture.cpp
@@ -265,6 +265,7 @@ LLPointer<LLViewerTexture> LLViewerTextureManager::getLocalTexture(const U32 wid
 
 LLViewerFetchedTexture* LLViewerTextureManager::getFetchedTexture(
 	                                               const LLUUID &image_id,											       
+												   FTType f_type,
 												   BOOL usemipmaps,
 												   LLViewerTexture::EBoostLevel boost_priority,
 												   S8 texture_type,
@@ -272,11 +273,12 @@ LLViewerFetchedTexture* LLViewerTextureManager::getFetchedTexture(
 												   LLGLenum primary_format,
 												   LLHost request_from_host)
 {
-	return gTextureList.getImage(image_id, usemipmaps, boost_priority, texture_type, internal_format, primary_format, request_from_host) ;
+	return gTextureList.getImage(image_id, f_type, usemipmaps, boost_priority, texture_type, internal_format, primary_format, request_from_host) ;
 }
 	
 LLViewerFetchedTexture* LLViewerTextureManager::getFetchedTextureFromFile(
-	                                               const std::string& filename,												   
+	                                               const std::string& filename,
+												   FTType f_type,
 												   BOOL usemipmaps,
 												   LLViewerTexture::EBoostLevel boost_priority,
 												   S8 texture_type,
@@ -284,11 +286,12 @@ LLViewerFetchedTexture* LLViewerTextureManager::getFetchedTextureFromFile(
 												   LLGLenum primary_format, 
 												   const LLUUID& force_id)
 {
-	return gTextureList.getImageFromFile(filename, usemipmaps, boost_priority, texture_type, internal_format, primary_format, force_id) ;
+	return gTextureList.getImageFromFile(filename, f_type, usemipmaps, boost_priority, texture_type, internal_format, primary_format, force_id) ;
 }
 
 //static 
-LLViewerFetchedTexture* LLViewerTextureManager::getFetchedTextureFromUrl(const std::string& url,									 
+LLViewerFetchedTexture* LLViewerTextureManager::getFetchedTextureFromUrl(const std::string& url,
+									 FTType f_type,
 									 BOOL usemipmaps,
 									 LLViewerTexture::EBoostLevel boost_priority,
 									 S8 texture_type,
@@ -297,12 +300,12 @@ LLViewerFetchedTexture* LLViewerTextureManager::getFetchedTextureFromUrl(const s
 									 const LLUUID& force_id
 									 )
 {
-	return gTextureList.getImageFromUrl(url, usemipmaps, boost_priority, texture_type, internal_format, primary_format, force_id) ;
+	return gTextureList.getImageFromUrl(url, f_type, usemipmaps, boost_priority, texture_type, internal_format, primary_format, force_id) ;
 }
 
-LLViewerFetchedTexture* LLViewerTextureManager::getFetchedTextureFromHost(const LLUUID& image_id, LLHost host) 
+LLViewerFetchedTexture* LLViewerTextureManager::getFetchedTextureFromHost(const LLUUID& image_id, FTType f_type, LLHost host) 
 {
-	return gTextureList.getImageFromHost(image_id, host) ;
+	return gTextureList.getImageFromHost(image_id, f_type, host) ;
 }
 
 // Create a bridge to the viewer texture manager.
@@ -375,7 +378,7 @@ void LLViewerTextureManager::init()
 	LLViewerFetchedTexture::sDefaultImagep->dontDiscard();
 	LLViewerFetchedTexture::sDefaultImagep->setCategory(LLGLTexture::OTHER) ;
 
- 	LLViewerFetchedTexture::sSmokeImagep = LLViewerTextureManager::getFetchedTexture(IMG_SMOKE, TRUE, LLGLTexture::BOOST_UI);
+ 	LLViewerFetchedTexture::sSmokeImagep = LLViewerTextureManager::getFetchedTexture(IMG_SMOKE, FTT_DEFAULT, TRUE, LLGLTexture::BOOST_UI);
 	LLViewerFetchedTexture::sSmokeImagep->setNoDelete() ;
 
 	image_raw = new LLImageRaw(32,32,3);
@@ -396,7 +399,7 @@ void LLViewerTextureManager::init()
 	LLViewerTexture::initClass() ;
 	
 	// Create a texture manager bridge.
-	gTextureManagerBridgep = new LLViewerTextureManagerBridge();
+	gTextureManagerBridgep = new LLViewerTextureManagerBridge;
 
 	if (LLMetricPerformanceTesterBasic::isMetricLogRequested(sTesterName) && !LLMetricPerformanceTesterBasic::getTester(sTesterName))
 	{
@@ -902,25 +905,28 @@ void LLViewerTexture::updateBindStatsForTester()
 //start of LLViewerFetchedTexture
 //----------------------------------------------------------------------------------------------
 
-LLViewerFetchedTexture::LLViewerFetchedTexture(const LLUUID& id, const LLHost& host, BOOL usemipmaps)
+LLViewerFetchedTexture::LLViewerFetchedTexture(const LLUUID& id, FTType f_type, const LLHost& host, BOOL usemipmaps)
 	: LLViewerTexture(id, usemipmaps),
 	mTargetHost(host)
 {
 	init(TRUE) ;
+	mFTType = f_type;
 	generateGLTexture() ;
 }
 	
-LLViewerFetchedTexture::LLViewerFetchedTexture(const LLImageRaw* raw, BOOL usemipmaps)
+LLViewerFetchedTexture::LLViewerFetchedTexture(const LLImageRaw* raw, FTType f_type, BOOL usemipmaps)
 	: LLViewerTexture(raw, usemipmaps)
 {
 	init(TRUE) ;
+	mFTType = f_type;
 }
 	
-LLViewerFetchedTexture::LLViewerFetchedTexture(const std::string& url, const LLUUID& id, BOOL usemipmaps)
+LLViewerFetchedTexture::LLViewerFetchedTexture(const std::string& url, FTType f_type, const LLUUID& id, BOOL usemipmaps)
 	: LLViewerTexture(id, usemipmaps),
 	mUrl(url)
 {
 	init(TRUE) ;
+	mFTType = f_type;
 	generateGLTexture() ;
 }
 
@@ -986,6 +992,8 @@ void LLViewerFetchedTexture::init(bool firstinit)
 	mLastCallBackActiveTime = 0.f;
 
 	mInDebug = FALSE;
+
+	mFTType = FTT_UNKNOWN;
 }
 
 LLViewerFetchedTexture::~LLViewerFetchedTexture()
@@ -1006,6 +1014,11 @@ S8 LLViewerFetchedTexture::getType() const
 	return LLViewerTexture::FETCHED_TEXTURE ;
 }
 
+FTType LLViewerFetchedTexture::getFTType() const
+{
+	return mFTType;
+}
+
 void LLViewerFetchedTexture::cleanup()
 {
 	for(callback_list_t::iterator iter = mLoadedCallbackList.begin();
@@ -1922,7 +1935,7 @@ bool LLViewerFetchedTexture::updateFetch()
 		
 		// bypass texturefetch directly by pulling from LLTextureCache
 		bool fetch_request_created = false;
-		fetch_request_created = LLAppViewer::getTextureFetch()->createRequest(mUrl, getID(),getTargetHost(), decode_priority,
+		fetch_request_created = LLAppViewer::getTextureFetch()->createRequest(mFTType, mUrl, getID(), getTargetHost(), decode_priority,
 																			  w, h, c, desired_discard, needsAux(), mCanUseHTTP);
 		
 		if (fetch_request_created)
@@ -2909,14 +2922,14 @@ BOOL LLViewerFetchedTexture::insertToAtlas()
 //----------------------------------------------------------------------------------------------
 //start of LLViewerLODTexture
 //----------------------------------------------------------------------------------------------
-LLViewerLODTexture::LLViewerLODTexture(const LLUUID& id, const LLHost& host, BOOL usemipmaps)
-	: LLViewerFetchedTexture(id, host, usemipmaps)
+LLViewerLODTexture::LLViewerLODTexture(const LLUUID& id, FTType f_type, const LLHost& host, BOOL usemipmaps)
+	: LLViewerFetchedTexture(id, f_type, host, usemipmaps)
 {
 	init(TRUE) ;
 }
 
-LLViewerLODTexture::LLViewerLODTexture(const std::string& url, const LLUUID& id, BOOL usemipmaps)
-	: LLViewerFetchedTexture(url, id, usemipmaps)
+LLViewerLODTexture::LLViewerLODTexture(const std::string& url, FTType f_type, const LLUUID& id, BOOL usemipmaps)
+	: LLViewerFetchedTexture(url, f_type, id, usemipmaps)
 {
 	init(TRUE) ;
 }
diff --git a/indra/newview/llviewertexture.h b/indra/newview/llviewertexture.h
old mode 100644
new mode 100755
index ba6beec883c..f2e1a90713a
--- a/indra/newview/llviewertexture.h
+++ b/indra/newview/llviewertexture.h
@@ -232,6 +232,16 @@ class LLViewerTexture : public LLGLTexture
 };
 
 
+enum FTType
+{
+	FTT_UNKNOWN = -1,
+	FTT_DEFAULT = 0, // standard texture fetched by id.
+	FTT_SERVER_BAKE, // texture produced by appearance service and fetched from there.
+	FTT_HOST_BAKE, // old-style baked texture uploaded by viewer and fetched from avatar's host.
+	FTT_MAP_TILE, // tiles are fetched from map server directly.
+	FTT_LOCAL_FILE // fetch directly from a local file.
+};
+
 //
 //textures are managed in gTextureList.
 //raw image data is fetched from remote or local cache
@@ -245,9 +255,9 @@ class LLViewerFetchedTexture : public LLViewerTexture
 protected:
 	/*virtual*/ ~LLViewerFetchedTexture();
 public:
-	LLViewerFetchedTexture(const LLUUID& id, const LLHost& host = LLHost::invalid, BOOL usemipmaps = TRUE);
-	LLViewerFetchedTexture(const LLImageRaw* raw, BOOL usemipmaps);
-	LLViewerFetchedTexture(const std::string& url, const LLUUID& id, BOOL usemipmaps = TRUE);
+	LLViewerFetchedTexture(const LLUUID& id, FTType f_type, const LLHost& host = LLHost::invalid, BOOL usemipmaps = TRUE);
+	LLViewerFetchedTexture(const LLImageRaw* raw, FTType f_type, BOOL usemipmaps);
+	LLViewerFetchedTexture(const std::string& url, FTType f_type, const LLUUID& id, BOOL usemipmaps = TRUE);
 
 public:
 	static F32 maxDecodePriority();
@@ -272,6 +282,7 @@ class LLViewerFetchedTexture : public LLViewerTexture
 
 public:
 	/*virtual*/ S8 getType() const ;
+	FTType getFTType() const;
 	/*virtual*/ void forceImmediateUpdate() ;
 	/*virtual*/ void dump() ;
 
@@ -436,7 +447,8 @@ class LLViewerFetchedTexture : public LLViewerTexture
 	S8  mHasFetcher;				// We've made a fecth request
 	S8  mIsFetching;				// Fetch request is active
 	bool mCanUseHTTP ;              //This texture can be fetched through http if true.
-	
+
+	FTType mFTType; // What category of image is this - map tile, server bake, etc?
 	mutable S8 mIsMissingAsset;		// True if we know that there is no image asset with this image id in the database.		
 
 	typedef std::list<LLLoadedCallbackEntry*> callback_list_t;
@@ -496,8 +508,8 @@ class LLViewerLODTexture : public LLViewerFetchedTexture
 	/*virtual*/ ~LLViewerLODTexture(){}
 
 public:
-	LLViewerLODTexture(const LLUUID& id, const LLHost& host = LLHost::invalid, BOOL usemipmaps = TRUE);
-	LLViewerLODTexture(const std::string& url, const LLUUID& id, BOOL usemipmaps = TRUE);
+	LLViewerLODTexture(const LLUUID& id, FTType f_type, const LLHost& host = LLHost::invalid, BOOL usemipmaps = TRUE);
+	LLViewerLODTexture(const std::string& url, FTType f_type, const LLUUID& id, BOOL usemipmaps = TRUE);
 
 	/*virtual*/ S8 getType() const;
 	// Process image stats to determine priority/quality requirements.
@@ -611,6 +623,7 @@ class LLViewerTextureManager
 	static LLPointer<LLViewerTexture> getLocalTexture(const U32 width, const U32 height, const U8 components, BOOL usemipmaps, BOOL generate_gl_tex = TRUE) ;
 
 	static LLViewerFetchedTexture* getFetchedTexture(const LLUUID &image_id,									 
+									 FTType f_type = FTT_DEFAULT,
 									 BOOL usemipmap = TRUE,
 									 LLViewerTexture::EBoostLevel boost_priority = LLGLTexture::BOOST_NONE,		// Get the requested level immediately upon creation.
 									 S8 texture_type = LLViewerTexture::FETCHED_TEXTURE,
@@ -620,6 +633,7 @@ class LLViewerTextureManager
 									 );
 	
 	static LLViewerFetchedTexture* getFetchedTextureFromFile(const std::string& filename,									 
+									 FTType f_type = FTT_LOCAL_FILE,
 									 BOOL usemipmap = TRUE,
 									 LLViewerTexture::EBoostLevel boost_priority = LLGLTexture::BOOST_NONE,
 									 S8 texture_type = LLViewerTexture::FETCHED_TEXTURE,
@@ -629,6 +643,7 @@ class LLViewerTextureManager
 									 );
 
 	static LLViewerFetchedTexture* getFetchedTextureFromUrl(const std::string& url,									 
+									 FTType f_type,
 									 BOOL usemipmap = TRUE,
 									 LLViewerTexture::EBoostLevel boost_priority = LLGLTexture::BOOST_NONE,
 									 S8 texture_type = LLViewerTexture::FETCHED_TEXTURE,
@@ -637,7 +652,7 @@ class LLViewerTextureManager
 									 const LLUUID& force_id = LLUUID::null
 									 );
 
-	static LLViewerFetchedTexture* getFetchedTextureFromHost(const LLUUID& image_id, LLHost host) ;
+	static LLViewerFetchedTexture* getFetchedTextureFromHost(const LLUUID& image_id, FTType f_type, LLHost host) ;
 
 	static void init() ;
 	static void cleanup() ;
diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp
index beadef34ba9..d2af48f5286 100755
--- a/indra/newview/llviewertexturelist.cpp
+++ b/indra/newview/llviewertexturelist.cpp
@@ -112,10 +112,10 @@ void LLViewerTextureList::doPreloadImages()
 	llassert_always(mUUIDMap.empty()) ;
 
 	// Set the "missing asset" image
-	LLViewerFetchedTexture::sMissingAssetImagep = LLViewerTextureManager::getFetchedTextureFromFile("missing_asset.tga", MIPMAP_NO, LLViewerFetchedTexture::BOOST_UI);
+	LLViewerFetchedTexture::sMissingAssetImagep = LLViewerTextureManager::getFetchedTextureFromFile("missing_asset.tga", FTT_LOCAL_FILE, MIPMAP_NO, LLViewerFetchedTexture::BOOST_UI);
 	
 	// Set the "white" image
-	LLViewerFetchedTexture::sWhiteImagep = LLViewerTextureManager::getFetchedTextureFromFile("white.tga", MIPMAP_NO, LLViewerFetchedTexture::BOOST_UI);
+	LLViewerFetchedTexture::sWhiteImagep = LLViewerTextureManager::getFetchedTextureFromFile("white.tga", FTT_LOCAL_FILE, MIPMAP_NO, LLViewerFetchedTexture::BOOST_UI);
 	LLTexUnit::sWhiteTexture = LLViewerFetchedTexture::sWhiteImagep->getTexName();
 	LLUIImageList* image_list = LLUIImageList::getInstance();
 
@@ -130,33 +130,33 @@ void LLViewerTextureList::doPreloadImages()
 	//uv_test->setMipFilterNearest(TRUE, TRUE);
 
 	// prefetch specific UUIDs
-	LLViewerTextureManager::getFetchedTexture(IMG_SHOT, TRUE);
-	LLViewerTextureManager::getFetchedTexture(IMG_SMOKE_POOF, TRUE);
-	LLViewerFetchedTexture* image = LLViewerTextureManager::getFetchedTextureFromFile("silhouette.j2c", MIPMAP_YES, LLViewerFetchedTexture::BOOST_UI);
+	LLViewerTextureManager::getFetchedTexture(IMG_SHOT);
+	LLViewerTextureManager::getFetchedTexture(IMG_SMOKE_POOF);
+	LLViewerFetchedTexture* image = LLViewerTextureManager::getFetchedTextureFromFile("silhouette.j2c", FTT_LOCAL_FILE, MIPMAP_YES, LLViewerFetchedTexture::BOOST_UI);
 	if (image) 
 	{
 		image->setAddressMode(LLTexUnit::TAM_WRAP);
 		mImagePreloads.insert(image);
 	}
-	image = LLViewerTextureManager::getFetchedTextureFromFile("world/NoEntryLines.png", MIPMAP_YES, LLViewerFetchedTexture::BOOST_UI);
+	image = LLViewerTextureManager::getFetchedTextureFromFile("world/NoEntryLines.png", FTT_LOCAL_FILE, MIPMAP_YES, LLViewerFetchedTexture::BOOST_UI);
 	if (image) 
 	{
 		image->setAddressMode(LLTexUnit::TAM_WRAP);	
 		mImagePreloads.insert(image);
 	}
-	image = LLViewerTextureManager::getFetchedTextureFromFile("world/NoEntryPassLines.png", MIPMAP_YES, LLViewerFetchedTexture::BOOST_UI);
+	image = LLViewerTextureManager::getFetchedTextureFromFile("world/NoEntryPassLines.png", FTT_LOCAL_FILE, MIPMAP_YES, LLViewerFetchedTexture::BOOST_UI);
 	if (image) 
 	{
 		image->setAddressMode(LLTexUnit::TAM_WRAP);
 		mImagePreloads.insert(image);
 	}
-	image = LLViewerTextureManager::getFetchedTexture(DEFAULT_WATER_NORMAL, MIPMAP_YES, LLViewerFetchedTexture::BOOST_UI);
+	image = LLViewerTextureManager::getFetchedTexture(DEFAULT_WATER_NORMAL, FTT_DEFAULT, MIPMAP_YES, LLViewerFetchedTexture::BOOST_UI);
 	if (image) 
 	{
 		image->setAddressMode(LLTexUnit::TAM_WRAP);	
 		mImagePreloads.insert(image);
 	}
-	image = LLViewerTextureManager::getFetchedTextureFromFile("transparent.j2c", MIPMAP_YES, LLViewerFetchedTexture::BOOST_UI, LLViewerTexture::FETCHED_TEXTURE,
+	image = LLViewerTextureManager::getFetchedTextureFromFile("transparent.j2c", FTT_LOCAL_FILE, MIPMAP_YES, LLViewerFetchedTexture::BOOST_UI, LLViewerTexture::FETCHED_TEXTURE,
 		0,0,LLUUID("8dcd4a48-2d37-4909-9f78-f7a9eb4ef903"));
 	if (image) 
 	{
@@ -198,7 +198,7 @@ void LLViewerTextureList::doPrefetchImages()
 
 		if(LLViewerTexture::FETCHED_TEXTURE == texture_type || LLViewerTexture::LOD_TEXTURE == texture_type)
 		{
-			LLViewerFetchedTexture* image = LLViewerTextureManager::getFetchedTexture(uuid, MIPMAP_TRUE, LLGLTexture::BOOST_NONE, texture_type);
+			LLViewerFetchedTexture* image = LLViewerTextureManager::getFetchedTexture(uuid, FTT_DEFAULT, MIPMAP_TRUE, LLGLTexture::BOOST_NONE, texture_type);
 			if (image)
 			{
 				image->addTextureStats((F32)pixel_area);
@@ -324,7 +324,8 @@ void LLViewerTextureList::restoreGL()
 
 ///////////////////////////////////////////////////////////////////////////////
 
-LLViewerFetchedTexture* LLViewerTextureList::getImageFromFile(const std::string& filename,												   
+LLViewerFetchedTexture* LLViewerTextureList::getImageFromFile(const std::string& filename,
+												   FTType f_type,
 												   BOOL usemipmaps,
 												   LLViewerTexture::EBoostLevel boost_priority,
 												   S8 texture_type,
@@ -341,15 +342,16 @@ LLViewerFetchedTexture* LLViewerTextureList::getImageFromFile(const std::string&
 	if (full_path.empty())
 	{
 		llwarns << "Failed to find local image file: " << filename << llendl;
-		return LLViewerTextureManager::getFetchedTexture(IMG_DEFAULT, TRUE, LLGLTexture::BOOST_UI);
+		return LLViewerTextureManager::getFetchedTexture(IMG_DEFAULT, FTT_DEFAULT, TRUE, LLGLTexture::BOOST_UI);
 	}
 
 	std::string url = "file://" + full_path;
 
-	return getImageFromUrl(url, usemipmaps, boost_priority, texture_type, internal_format, primary_format, force_id);
+	return getImageFromUrl(url, f_type, usemipmaps, boost_priority, texture_type, internal_format, primary_format, force_id);
 }
 
 LLViewerFetchedTexture* LLViewerTextureList::getImageFromUrl(const std::string& url,
+												   FTType f_type,
 												   BOOL usemipmaps,
 												   LLViewerTexture::EBoostLevel boost_priority,
 												   S8 texture_type,
@@ -397,10 +399,10 @@ LLViewerFetchedTexture* LLViewerTextureList::getImageFromUrl(const std::string&
 		switch(texture_type)
 		{
 		case LLViewerTexture::FETCHED_TEXTURE:
-			imagep = new LLViewerFetchedTexture(url, new_id, usemipmaps);
+			imagep = new LLViewerFetchedTexture(url, f_type, new_id, usemipmaps);
 			break ;
 		case LLViewerTexture::LOD_TEXTURE:
-			imagep = new LLViewerLODTexture(url, new_id, usemipmaps);
+			imagep = new LLViewerLODTexture(url, f_type, new_id, usemipmaps);
 			break ;
 		default:
 			llerrs << "Invalid texture type " << texture_type << llendl ;
@@ -430,7 +432,8 @@ LLViewerFetchedTexture* LLViewerTextureList::getImageFromUrl(const std::string&
 }
 
 
-LLViewerFetchedTexture* LLViewerTextureList::getImage(const LLUUID &image_id,											       
+LLViewerFetchedTexture* LLViewerTextureList::getImage(const LLUUID &image_id,
+												   FTType f_type,
 												   BOOL usemipmaps,
 												   LLViewerTexture::EBoostLevel boost_priority,
 												   S8 texture_type,
@@ -449,7 +452,7 @@ LLViewerFetchedTexture* LLViewerTextureList::getImage(const LLUUID &image_id,
 	
 	if ((&image_id == NULL) || image_id.isNull())
 	{
-		return (LLViewerTextureManager::getFetchedTexture(IMG_DEFAULT, TRUE, LLGLTexture::BOOST_UI));
+		return (LLViewerTextureManager::getFetchedTexture(IMG_DEFAULT, FTT_DEFAULT, TRUE, LLGLTexture::BOOST_UI));
 	}
 	
 	LLPointer<LLViewerFetchedTexture> imagep = findImage(image_id);
@@ -468,11 +471,15 @@ LLViewerFetchedTexture* LLViewerTextureList::getImage(const LLUUID &image_id,
 			llwarns << "Requested texture " << image_id << " already exists with a different target host, requested: " 
 					<< request_from_host << " current: " << texture->getTargetHost() << llendl;
 		}
+		if (f_type != FTT_DEFAULT && imagep->getFTType() != f_type)
+		{
+			llwarns << "FTType mismatch: requested " << f_type << " image has " << imagep->getFTType() << llendl;
+		}
 		
 	}
 	if (imagep.isNull())
 	{
-		imagep = createImage(image_id, usemipmaps, boost_priority, texture_type, internal_format, primary_format, request_from_host) ;
+		imagep = createImage(image_id, f_type, usemipmaps, boost_priority, texture_type, internal_format, primary_format, request_from_host) ;
 	}
 
 	imagep->setGLTextureCreated(true);
@@ -481,7 +488,8 @@ LLViewerFetchedTexture* LLViewerTextureList::getImage(const LLUUID &image_id,
 }
 
 //when this function is called, there is no such texture in the gTextureList with image_id.
-LLViewerFetchedTexture* LLViewerTextureList::createImage(const LLUUID &image_id,											       
+LLViewerFetchedTexture* LLViewerTextureList::createImage(const LLUUID &image_id,
+												   FTType f_type,
 												   BOOL usemipmaps,
 												   LLViewerTexture::EBoostLevel boost_priority,
 												   S8 texture_type,
@@ -495,10 +503,10 @@ LLViewerFetchedTexture* LLViewerTextureList::createImage(const LLUUID &image_id,
 	switch(texture_type)
 	{
 	case LLViewerTexture::FETCHED_TEXTURE:
-		imagep = new LLViewerFetchedTexture(image_id, request_from_host, usemipmaps);
+		imagep = new LLViewerFetchedTexture(image_id, f_type, request_from_host, usemipmaps);
 		break ;
 	case LLViewerTexture::LOD_TEXTURE:
-		imagep = new LLViewerLODTexture(image_id, request_from_host, usemipmaps);
+		imagep = new LLViewerLODTexture(image_id, f_type, request_from_host, usemipmaps);
 		break ;
 	default:
 		llerrs << "Invalid texture type " << texture_type << llendl ;
@@ -1388,7 +1396,7 @@ void LLViewerTextureList::receiveImageHeader(LLMessageSystem *msg, void **user_d
 	U8 *data = new U8[data_size];
 	msg->getBinaryDataFast(_PREHASH_ImageData, _PREHASH_Data, data, data_size);
 	
-	LLViewerFetchedTexture *image = LLViewerTextureManager::getFetchedTexture(id, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
+	LLViewerFetchedTexture *image = LLViewerTextureManager::getFetchedTexture(id, FTT_DEFAULT, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
 	if (!image)
 	{
 		delete [] data;
@@ -1460,7 +1468,7 @@ void LLViewerTextureList::receiveImagePacket(LLMessageSystem *msg, void **user_d
 	U8 *data = new U8[data_size];
 	msg->getBinaryDataFast(_PREHASH_ImageData, _PREHASH_Data, data, data_size);
 	
-	LLViewerFetchedTexture *image = LLViewerTextureManager::getFetchedTexture(id, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
+	LLViewerFetchedTexture *image = LLViewerTextureManager::getFetchedTexture(id, FTT_DEFAULT, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
 	if (!image)
 	{
 		delete [] data;
@@ -1565,7 +1573,7 @@ LLUIImagePtr LLUIImageList::loadUIImageByName(const std::string& name, const std
 	{
 		boost_priority = LLGLTexture::BOOST_UI;
 	}
-	LLViewerFetchedTexture* imagep = LLViewerTextureManager::getFetchedTextureFromFile(filename, MIPMAP_NO, boost_priority);
+	LLViewerFetchedTexture* imagep = LLViewerTextureManager::getFetchedTextureFromFile(filename, FTT_LOCAL_FILE, MIPMAP_NO, boost_priority);
 	return loadUIImage(imagep, name, use_mips, scale_rect, clip_rect);
 }
 
@@ -1576,7 +1584,7 @@ LLUIImagePtr LLUIImageList::loadUIImageByID(const LLUUID& id,
 	{
 		boost_priority = LLGLTexture::BOOST_UI;
 	}
-	LLViewerFetchedTexture* imagep = LLViewerTextureManager::getFetchedTexture(id, MIPMAP_NO, boost_priority);
+	LLViewerFetchedTexture* imagep = LLViewerTextureManager::getFetchedTexture(id, FTT_DEFAULT, MIPMAP_NO, boost_priority);
 	return loadUIImage(imagep, id.asString(), use_mips, scale_rect, clip_rect);
 }
 
diff --git a/indra/newview/llviewertexturelist.h b/indra/newview/llviewertexturelist.h
old mode 100644
new mode 100755
index 05c7c35f7cf..136042620d5
--- a/indra/newview/llviewertexturelist.h
+++ b/indra/newview/llviewertexturelist.h
@@ -130,6 +130,7 @@ class LLViewerTextureList
 	void removeImageFromList(LLViewerFetchedTexture *image);
 
 	LLViewerFetchedTexture * getImage(const LLUUID &image_id,									 
+									 FTType f_type = FTT_DEFAULT,
 									 BOOL usemipmap = TRUE,
 									 LLViewerTexture::EBoostLevel boost_priority = LLGLTexture::BOOST_NONE,		// Get the requested level immediately upon creation.
 									 S8 texture_type = LLViewerTexture::FETCHED_TEXTURE,
@@ -139,6 +140,7 @@ class LLViewerTextureList
 									 );
 	
 	LLViewerFetchedTexture * getImageFromFile(const std::string& filename,									 
+									 FTType f_type = FTT_LOCAL_FILE,
 									 BOOL usemipmap = TRUE,
 									 LLViewerTexture::EBoostLevel boost_priority = LLGLTexture::BOOST_NONE,		// Get the requested level immediately upon creation.
 									 S8 texture_type = LLViewerTexture::FETCHED_TEXTURE,
@@ -148,6 +150,7 @@ class LLViewerTextureList
 									 );
 	
 	LLViewerFetchedTexture* getImageFromUrl(const std::string& url,
+									 FTType f_type,
 									 BOOL usemipmap = TRUE,
 									 LLViewerTexture::EBoostLevel boost_priority = LLGLTexture::BOOST_NONE,		// Get the requested level immediately upon creation.
 									 S8 texture_type = LLViewerTexture::FETCHED_TEXTURE,
@@ -157,6 +160,7 @@ class LLViewerTextureList
 									 );
 
 	LLViewerFetchedTexture* createImage(const LLUUID &image_id,
+									 FTType f_type,
 									 BOOL usemipmap = TRUE,
 									 LLViewerTexture::EBoostLevel boost_priority = LLGLTexture::BOOST_NONE,		// Get the requested level immediately upon creation.
 									 S8 texture_type = LLViewerTexture::FETCHED_TEXTURE,
@@ -167,8 +171,8 @@ class LLViewerTextureList
 	
 	// Request image from a specific host, used for baked avatar textures.
 	// Implemented in header in case someone changes default params above. JC
-	LLViewerFetchedTexture* getImageFromHost(const LLUUID& image_id, LLHost host)
-	{ return getImage(image_id, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE, 0, 0, host); }	
+	LLViewerFetchedTexture* getImageFromHost(const LLUUID& image_id, FTType f_type, LLHost host)
+	{ return getImage(image_id, f_type, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE, 0, 0, host); }	
 
 public:
 	typedef std::set<LLPointer<LLViewerFetchedTexture> > image_list_t;	
diff --git a/indra/newview/llviewerwearable.cpp b/indra/newview/llviewerwearable.cpp
index 4477893063e..e8425dc76a1 100755
--- a/indra/newview/llviewerwearable.cpp
+++ b/indra/newview/llviewerwearable.cpp
@@ -350,7 +350,7 @@ void LLViewerWearable::writeToAvatar(LLAvatarAppearance *avatarp)
 			{	
 				image_id = getDefaultTextureImageID((ETextureIndex) te);
 			}
-			LLViewerTexture* image = LLViewerTextureManager::getFetchedTexture( image_id, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE );
+			LLViewerTexture* image = LLViewerTextureManager::getFetchedTexture( image_id, FTT_DEFAULT, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE );
 			// MULTI-WEARABLE: assume index 0 will be used when writing to avatar. TODO: eliminate the need for this.
 			viewer_avatar->setLocalTextureTE(te, image, 0);
 		}
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index cec1dc677fc..8cc3416d0e2 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -1813,14 +1813,14 @@ LLViewerFetchedTexture *LLVOAvatar::getBakedTextureImage(const U8 te, const LLUU
 		{
 			LL_DEBUGS("Avatar") << avString() << "from URL " << url << llendl;
 			result = LLViewerTextureManager::getFetchedTextureFromUrl(
-				url, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE, 0, 0, uuid);
+				url, FTT_SERVER_BAKE, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE, 0, 0, uuid);
 		}
 		else
 		{
 			LL_DEBUGS("Avatar") << avString() << "from host " << uuid << llendl;
 			LLHost host = getObjectHost();
 			result = LLViewerTextureManager::getFetchedTexture(
-				uuid, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE, 0, 0, host);
+				uuid, FTT_HOST_BAKE, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE, 0, 0, host);
 		}
 	}
 	return result;
@@ -7011,7 +7011,7 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 			&& baked_index != BAKED_SKIRT)
 		{
 			setTEImage(mBakedTextureDatas[baked_index].mTextureIndex, 
-				LLViewerTextureManager::getFetchedTexture(mBakedTextureDatas[baked_index].mLastTextureID, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE));
+				LLViewerTextureManager::getFetchedTexture(mBakedTextureDatas[baked_index].mLastTextureID, FTT_DEFAULT, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE));
 		}
 	}
 
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index f7902c5302b..240ab202f8d 100755
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -2648,7 +2648,7 @@ void LLVOAvatarSelf::setNewBakedTexture( ETextureIndex te, const LLUUID& uuid )
 {
 	// Baked textures live on other sims.
 	LLHost target_host = getObjectHost();	
-	setTEImage( te, LLViewerTextureManager::getFetchedTextureFromHost( uuid, target_host ) );
+	setTEImage( te, LLViewerTextureManager::getFetchedTextureFromHost( uuid, FTT_HOST_BAKE, target_host ) );
 	updateMeshTextures();
 	dirtyMesh();
 
diff --git a/indra/newview/llvograss.cpp b/indra/newview/llvograss.cpp
index 2a7b7cfa378..6a25b765cf8 100644
--- a/indra/newview/llvograss.cpp
+++ b/indra/newview/llvograss.cpp
@@ -102,7 +102,7 @@ void LLVOGrass::updateSpecies()
 		SpeciesMap::const_iterator it = sSpeciesTable.begin();
 		mSpecies = (*it).first;
 	}
-	setTEImage(0, LLViewerTextureManager::getFetchedTexture(sSpeciesTable[mSpecies]->mTextureID, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE));
+	setTEImage(0, LLViewerTextureManager::getFetchedTexture(sSpeciesTable[mSpecies]->mTextureID, FTT_DEFAULT, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE));
 }
 
 
diff --git a/indra/newview/llvoicevisualizer.cpp b/indra/newview/llvoicevisualizer.cpp
index 315e618132a..2241537aafc 100644
--- a/indra/newview/llvoicevisualizer.cpp
+++ b/indra/newview/llvoicevisualizer.cpp
@@ -136,7 +136,7 @@ LLVoiceVisualizer::LLVoiceVisualizer( const U8 type )
 	for (int i=0; i<NUM_VOICE_SYMBOL_WAVES; i++)
 	{
 		mSoundSymbol.mWaveFadeOutStartTime	[i] = mCurrentTime;
-		mSoundSymbol.mTexture				[i] = LLViewerTextureManager::getFetchedTextureFromFile(sound_level_img[i], FALSE, LLGLTexture::BOOST_UI);
+		mSoundSymbol.mTexture				[i] = LLViewerTextureManager::getFetchedTextureFromFile(sound_level_img[i], FTT_LOCAL_FILE, FALSE, LLGLTexture::BOOST_UI);
 		mSoundSymbol.mWaveActive			[i] = false;
 		mSoundSymbol.mWaveOpacity			[i] = 1.0f;
 		mSoundSymbol.mWaveExpansion			[i] = 1.0f;
diff --git a/indra/newview/llvosky.cpp b/indra/newview/llvosky.cpp
index bf09e6550d4..36793017ed9 100644
--- a/indra/newview/llvosky.cpp
+++ b/indra/newview/llvosky.cpp
@@ -384,9 +384,9 @@ LLVOSky::LLVOSky(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp)
 	mSun.setIntensity(SUN_INTENSITY);
 	mMoon.setIntensity(0.1f * SUN_INTENSITY);
 
-	mSunTexturep = LLViewerTextureManager::getFetchedTexture(gSunTextureID, TRUE, LLGLTexture::BOOST_UI);
+	mSunTexturep = LLViewerTextureManager::getFetchedTexture(gSunTextureID, FTT_DEFAULT, TRUE, LLGLTexture::BOOST_UI);
 	mSunTexturep->setAddressMode(LLTexUnit::TAM_CLAMP);
-	mMoonTexturep = LLViewerTextureManager::getFetchedTexture(gMoonTextureID, TRUE, LLGLTexture::BOOST_UI);
+	mMoonTexturep = LLViewerTextureManager::getFetchedTexture(gMoonTextureID, FTT_DEFAULT, TRUE, LLGLTexture::BOOST_UI);
 	mMoonTexturep->setAddressMode(LLTexUnit::TAM_CLAMP);
 	mBloomTexturep = LLViewerTextureManager::getFetchedTexture(IMG_BLOOM1);
 	mBloomTexturep->setNoDelete() ;
@@ -478,9 +478,9 @@ void LLVOSky::restoreGL()
 	{
 		mSkyTex[i].restoreGL();
 	}
-	mSunTexturep = LLViewerTextureManager::getFetchedTexture(gSunTextureID, TRUE, LLGLTexture::BOOST_UI);
+	mSunTexturep = LLViewerTextureManager::getFetchedTexture(gSunTextureID, FTT_DEFAULT, TRUE, LLGLTexture::BOOST_UI);
 	mSunTexturep->setAddressMode(LLTexUnit::TAM_CLAMP);
-	mMoonTexturep = LLViewerTextureManager::getFetchedTexture(gMoonTextureID, TRUE, LLGLTexture::BOOST_UI);
+	mMoonTexturep = LLViewerTextureManager::getFetchedTexture(gMoonTextureID, FTT_DEFAULT, TRUE, LLGLTexture::BOOST_UI);
 	mMoonTexturep->setAddressMode(LLTexUnit::TAM_CLAMP);
 	mBloomTexturep = LLViewerTextureManager::getFetchedTexture(IMG_BLOOM1);
 	mBloomTexturep->setNoDelete() ;
diff --git a/indra/newview/llvotree.cpp b/indra/newview/llvotree.cpp
index 68bb40d7276..145a0380d68 100644
--- a/indra/newview/llvotree.cpp
+++ b/indra/newview/llvotree.cpp
@@ -316,7 +316,7 @@ U32 LLVOTree::processUpdateMessage(LLMessageSystem *mesgsys,
 	//  Load Species-Specific data 
 	//
 	static const S32 MAX_TREE_TEXTURE_VIRTURE_SIZE_RESET_INTERVAL = 32 ; //frames.
-	mTreeImagep = LLViewerTextureManager::getFetchedTexture(sSpeciesTable[mSpecies]->mTextureID, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
+	mTreeImagep = LLViewerTextureManager::getFetchedTexture(sSpeciesTable[mSpecies]->mTextureID, FTT_DEFAULT, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
 	mTreeImagep->setMaxVirtualSizeResetInterval(MAX_TREE_TEXTURE_VIRTURE_SIZE_RESET_INTERVAL); //allow to wait for at most 16 frames to reset virtual size.
 
 	mBranchLength = sSpeciesTable[mSpecies]->mBranchLength;
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
index 0e65df939ac..8730ef66bba 100644
--- a/indra/newview/llvovolume.cpp
+++ b/indra/newview/llvovolume.cpp
@@ -1006,7 +1006,7 @@ BOOL LLVOVolume::setVolume(const LLVolumeParams &params_in, const S32 detail, bo
 	
 	if (is404)
 	{
-		setIcon(LLViewerTextureManager::getFetchedTextureFromFile("icons/Inv_Mesh.png", TRUE, LLGLTexture::BOOST_UI));
+		setIcon(LLViewerTextureManager::getFetchedTextureFromFile("icons/Inv_Mesh.png", FTT_LOCAL_FILE, TRUE, LLGLTexture::BOOST_UI));
 		//render prim proxy when mesh loading attempts give up
 		volume_params.setSculptID(LLUUID::null, LL_SCULPT_TYPE_NONE);
 
@@ -1090,7 +1090,7 @@ void LLVOVolume::updateSculptTexture()
 		LLUUID id =  sculpt_params->getSculptTexture();
 		if (id.notNull())
 		{
-			mSculptTexture = LLViewerTextureManager::getFetchedTexture(id, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
+			mSculptTexture = LLViewerTextureManager::getFetchedTexture(id, FTT_DEFAULT, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
 		}
 	}
 	else
diff --git a/indra/newview/llworldmap.cpp b/indra/newview/llworldmap.cpp
index 4d52f23ddb5..c89a00f3a49 100644
--- a/indra/newview/llworldmap.cpp
+++ b/indra/newview/llworldmap.cpp
@@ -78,7 +78,7 @@ void LLSimInfo::setLandForSaleImage (LLUUID image_id)
 	// Fetch the image
 	if (mMapImageID.notNull())
 	{
-		mOverlayImage = LLViewerTextureManager::getFetchedTexture(mMapImageID, MIPMAP_TRUE, LLGLTexture::BOOST_MAP, LLViewerTexture::LOD_TEXTURE);
+		mOverlayImage = LLViewerTextureManager::getFetchedTexture(mMapImageID, FTT_DEFAULT, MIPMAP_TRUE, LLGLTexture::BOOST_MAP, LLViewerTexture::LOD_TEXTURE);
 		mOverlayImage->setAddressMode(LLTexUnit::TAM_CLAMP);
 	}
 	else
@@ -92,7 +92,7 @@ LLPointer<LLViewerFetchedTexture> LLSimInfo::getLandForSaleImage ()
 	if (mOverlayImage.isNull() && mMapImageID.notNull())
 	{
 		// Fetch the image if it hasn't been done yet (unlikely but...)
-		mOverlayImage = LLViewerTextureManager::getFetchedTexture(mMapImageID, MIPMAP_TRUE, LLGLTexture::BOOST_MAP, LLViewerTexture::LOD_TEXTURE);
+		mOverlayImage = LLViewerTextureManager::getFetchedTexture(mMapImageID, FTT_DEFAULT, MIPMAP_TRUE, LLGLTexture::BOOST_MAP, LLViewerTexture::LOD_TEXTURE);
 		mOverlayImage->setAddressMode(LLTexUnit::TAM_CLAMP);
 	}
 	if (!mOverlayImage.isNull())
diff --git a/indra/newview/llworldmipmap.cpp b/indra/newview/llworldmipmap.cpp
index c9d2a24a4ee..895ccaef5a1 100644
--- a/indra/newview/llworldmipmap.cpp
+++ b/indra/newview/llworldmipmap.cpp
@@ -189,7 +189,7 @@ LLPointer<LLViewerFetchedTexture> LLWorldMipmap::loadObjectsTile(U32 grid_x, U32
 	// END DEBUG
 	//LL_INFOS("World Map") << "LLWorldMipmap::loadObjectsTile(), URL = " << imageurl << LL_ENDL;
 
-	LLPointer<LLViewerFetchedTexture> img = LLViewerTextureManager::getFetchedTextureFromUrl(imageurl, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
+	LLPointer<LLViewerFetchedTexture> img = LLViewerTextureManager::getFetchedTextureFromUrl(imageurl, FTT_MAP_TILE, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
 	img->setBoostLevel(LLGLTexture::BOOST_MAP);
 
 	// Return the smart pointer
-- 
GitLab


From 7e967ce2fd78078fb4284f2d61171bc90a669375 Mon Sep 17 00:00:00 2001
From: Nyx Linden <nyx@lindenlab.com>
Date: Fri, 8 Mar 2013 18:45:33 -0500
Subject: [PATCH 348/436] SH-3941 SH-3954 FIX local appearance does not update
 properly

We were using an indicator of whether there *was* a baked texture to whether we
were *using* a baked texture. Switched to one of the (several) proper indicators
of whether a baked texture was in use. This should allow local texture data to
get marked for download when we enter appearance mode.

Local testing confirms that old apperances linger for a second or two, but are
soon replaced by the correct local renders.
---
 indra/newview/llvoavatar.cpp     | 2 +-
 indra/newview/llvoavatarself.cpp | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index cec1dc677fc..5bc45b35513 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -4342,7 +4342,7 @@ void LLVOAvatar::updateTextures()
 				const EBakedTextureIndex baked_index = texture_dict->mBakedTextureIndex;
 				if (texture_dict->mIsLocalTexture)
 				{
-					addLocalTextureStats((ETextureIndex)texture_index, imagep, texel_area_ratio, render_avatar, layer_baked[baked_index]);
+					addLocalTextureStats((ETextureIndex)texture_index, imagep, texel_area_ratio, render_avatar, mBakedTextureDatas[baked_index].mIsUsed);
 				}
 			}
 		}
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index f7902c5302b..36229e51ec1 100755
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -2964,9 +2964,9 @@ void LLVOAvatarSelf::onCustomizeStart(bool disable_camera_switch)
 		gAgentAvatarp->idleUpdateAppearanceAnimation();
 #endif
 		
-		gAgentAvatarp->updateTextures(); // call updateTextureStats
 		gAgentAvatarp->invalidateAll(); // mark all bakes as dirty, request updates
 		gAgentAvatarp->updateMeshTextures(); // make sure correct textures are applied to the avatar mesh.
+		gAgentAvatarp->updateTextures(); // call updateTextureStats
 	}
 }
 
-- 
GitLab


From 175190ac7aa32b71b3f8bed55a98176e030f9eb4 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Mon, 11 Mar 2013 13:52:29 -0400
Subject: [PATCH 349/436] Fix for build failure in tests

---
 indra/newview/tests/llworldmap_test.cpp    | 3 ++-
 indra/newview/tests/llworldmipmap_test.cpp | 3 ++-
 2 files changed, 4 insertions(+), 2 deletions(-)
 mode change 100644 => 100755 indra/newview/tests/llworldmap_test.cpp

diff --git a/indra/newview/tests/llworldmap_test.cpp b/indra/newview/tests/llworldmap_test.cpp
old mode 100644
new mode 100755
index 3c68890c36e..1ab7d67fce5
--- a/indra/newview/tests/llworldmap_test.cpp
+++ b/indra/newview/tests/llworldmap_test.cpp
@@ -49,7 +49,8 @@
 // Stub image calls
 void LLGLTexture::setBoostLevel(S32 ) { }
 void LLGLTexture::setAddressMode(LLTexUnit::eTextureAddressMode ) { }
-LLViewerFetchedTexture* LLViewerTextureManager::getFetchedTexture(const LLUUID&, BOOL, LLGLTexture::EBoostLevel, S8,
+enum FTType;
+LLViewerFetchedTexture* LLViewerTextureManager::getFetchedTexture(const LLUUID&, FTType, BOOL, LLGLTexture::EBoostLevel, S8,
 																  LLGLint, LLGLenum, LLHost ) { return NULL; }
 
 // Stub related map calls
diff --git a/indra/newview/tests/llworldmipmap_test.cpp b/indra/newview/tests/llworldmipmap_test.cpp
index 22ebf28f557..0edb1b98093 100644
--- a/indra/newview/tests/llworldmipmap_test.cpp
+++ b/indra/newview/tests/llworldmipmap_test.cpp
@@ -43,7 +43,8 @@
 // * A simulator for a class can be implemented here. Please comment and document thoroughly.
 
 void LLGLTexture::setBoostLevel(S32 ) { }
-LLViewerFetchedTexture* LLViewerTextureManager::getFetchedTextureFromUrl(const std::string&, BOOL, LLGLTexture::EBoostLevel, S8, 
+enum FTType;
+LLViewerFetchedTexture* LLViewerTextureManager::getFetchedTextureFromUrl(const std::string&, FTType, BOOL, LLGLTexture::EBoostLevel, S8, 
 																		 LLGLint, LLGLenum, const LLUUID& ) { return NULL; }
 
 LLControlGroup::LLControlGroup(const std::string& name) : LLInstanceTracker<LLControlGroup, std::string>(name) { }
-- 
GitLab


From 957c8303be6bef4182cff3b51fe3ffa06467d6a2 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Mon, 11 Mar 2013 14:51:45 -0400
Subject: [PATCH 350/436] Added gratuitous coupling to stop gcc from
 complaining

---
 indra/newview/lltexturefetch.h | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/indra/newview/lltexturefetch.h b/indra/newview/lltexturefetch.h
index 544499232dc..618784c8edc 100755
--- a/indra/newview/lltexturefetch.h
+++ b/indra/newview/lltexturefetch.h
@@ -44,15 +44,14 @@
 #include "httpoptions.h"
 #include "httpheaders.h"
 #include "httphandler.h"
+#include "llviewertexture.h"
 
-class LLViewerTexture;
 class LLTextureFetchWorker;
 class LLImageDecodeThread;
 class LLHost;
 class LLViewerAssetStats;
 class LLTextureFetchDebugger;
 class LLTextureCache;
-enum FTType;
 
 // Interface class
 
-- 
GitLab


From 9514210beb1ae2ec49f1cf15e5a4f7af5ae56657 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Mon, 11 Mar 2013 14:58:55 -0400
Subject: [PATCH 351/436] more test build fix

---
 indra/newview/tests/llworldmap_test.cpp    | 1 -
 indra/newview/tests/llworldmipmap_test.cpp | 1 -
 2 files changed, 2 deletions(-)

diff --git a/indra/newview/tests/llworldmap_test.cpp b/indra/newview/tests/llworldmap_test.cpp
index 1ab7d67fce5..84194adb5df 100755
--- a/indra/newview/tests/llworldmap_test.cpp
+++ b/indra/newview/tests/llworldmap_test.cpp
@@ -49,7 +49,6 @@
 // Stub image calls
 void LLGLTexture::setBoostLevel(S32 ) { }
 void LLGLTexture::setAddressMode(LLTexUnit::eTextureAddressMode ) { }
-enum FTType;
 LLViewerFetchedTexture* LLViewerTextureManager::getFetchedTexture(const LLUUID&, FTType, BOOL, LLGLTexture::EBoostLevel, S8,
 																  LLGLint, LLGLenum, LLHost ) { return NULL; }
 
diff --git a/indra/newview/tests/llworldmipmap_test.cpp b/indra/newview/tests/llworldmipmap_test.cpp
index 0edb1b98093..142d75bcfd5 100644
--- a/indra/newview/tests/llworldmipmap_test.cpp
+++ b/indra/newview/tests/llworldmipmap_test.cpp
@@ -43,7 +43,6 @@
 // * A simulator for a class can be implemented here. Please comment and document thoroughly.
 
 void LLGLTexture::setBoostLevel(S32 ) { }
-enum FTType;
 LLViewerFetchedTexture* LLViewerTextureManager::getFetchedTextureFromUrl(const std::string&, FTType, BOOL, LLGLTexture::EBoostLevel, S8, 
 																		 LLGLint, LLGLenum, const LLUUID& ) { return NULL; }
 
-- 
GitLab


From 9ea6a96be9a5fda489d5e5ce28fc2df7c6f4c309 Mon Sep 17 00:00:00 2001
From: prep <prep@lindenlab.com>
Date: Mon, 11 Mar 2013 17:29:05 -0400
Subject: [PATCH 352/436] LLWindow merge fixes for Mac

---
 indra/llwindow/llwindowmacosx.cpp       |  3 ++-
 indra/llwindow/llwindowmacosx.h         |  2 +-
 indra/llwindow/llwindowmesaheadless.cpp | 29 ++++++++++++++-----------
 indra/llwindow/llwindowmesaheadless.h   |  3 +--
 indra/llwindow/llwindowsdl.cpp          | 13 ++++++-----
 indra/llwindow/llwindowsdl.h            |  2 +-
 6 files changed, 28 insertions(+), 24 deletions(-)

diff --git a/indra/llwindow/llwindowmacosx.cpp b/indra/llwindow/llwindowmacosx.cpp
index 413a9df6169..97637c937fe 100644
--- a/indra/llwindow/llwindowmacosx.cpp
+++ b/indra/llwindow/llwindowmacosx.cpp
@@ -210,7 +210,7 @@ LLWindowMacOSX::LLWindowMacOSX(LLWindowCallbacks* callbacks,
 							   const std::string& title, const std::string& name, S32 x, S32 y, S32 width,
 							   S32 height, U32 flags,
 							   BOOL fullscreen, BOOL clearBg,
-							   BOOL disable_vsync,
+							   BOOL disable_vsync, BOOL use_gl,
 							   BOOL ignore_pixel_depth,
 							   U32 fsaa_samples)
 	: LLWindow(NULL, fullscreen, flags)
@@ -228,6 +228,7 @@ LLWindowMacOSX::LLWindowMacOSX(LLWindowCallbacks* callbacks,
 	gKeyboard = new LLKeyboardMacOSX();
 	gKeyboard->setCallbacks(callbacks);
 
+	// Ignore use_gl for now, only used for drones on PC
 	mWindow = NULL;
 	mContext = NULL;
 	mPixelFormat = NULL;
diff --git a/indra/llwindow/llwindowmacosx.h b/indra/llwindow/llwindowmacosx.h
index fcb738ed0f2..af83b500976 100644
--- a/indra/llwindow/llwindowmacosx.h
+++ b/indra/llwindow/llwindowmacosx.h
@@ -122,7 +122,7 @@ class LLWindowMacOSX : public LLWindow
 protected:
 	LLWindowMacOSX(LLWindowCallbacks* callbacks,
 		const std::string& title, const std::string& name, int x, int y, int width, int height, U32 flags,
-		BOOL fullscreen, BOOL clearBg, BOOL disable_vsync,
+		BOOL fullscreen, BOOL clearBg, BOOL disable_vsync, BOOL use_gl,
 		BOOL ignore_pixel_depth,
 		U32 fsaa_samples);
 	~LLWindowMacOSX();
diff --git a/indra/llwindow/llwindowmesaheadless.cpp b/indra/llwindow/llwindowmesaheadless.cpp
index 2b668d3fc42..11c22ac94e5 100644
--- a/indra/llwindow/llwindowmesaheadless.cpp
+++ b/indra/llwindow/llwindowmesaheadless.cpp
@@ -41,25 +41,28 @@ U16 *gMesaBuffer = NULL;
 LLWindowMesaHeadless::LLWindowMesaHeadless(LLWindowCallbacks* callbacks,
                                            const std::string& title, const std::string& name, S32 x, S32 y, S32 width, S32 height,
 							 U32 flags,  BOOL fullscreen, BOOL clearBg,
-							 BOOL disable_vsync, BOOL ignore_pixel_depth)
+							 BOOL disable_vsync, BOOL use_gl, BOOL ignore_pixel_depth)
 	: LLWindow(callbacks, fullscreen, flags)
 {
-	llinfos << "MESA Init" << llendl;
-	mMesaContext = OSMesaCreateContextExt( GL_RGBA, 32, 0, 0, NULL );
+	if (use_gl)
+	{
+		llinfos << "MESA Init" << llendl;
+		mMesaContext = OSMesaCreateContextExt( GL_RGBA, 32, 0, 0, NULL );
 
-	/* Allocate the image buffer */
-	mMesaBuffer = new unsigned char [width * height * 4 * MESA_CHANNEL_SIZE];
-	llassert(mMesaBuffer);
+		/* Allocate the image buffer */
+		mMesaBuffer = new unsigned char [width * height * 4 * MESA_CHANNEL_SIZE];
+		llassert(mMesaBuffer);
 
-	gMesaBuffer = (U16*)mMesaBuffer;
+		gMesaBuffer = (U16*)mMesaBuffer;
 
-	/* Bind the buffer to the context and make it current */
-	if (!OSMesaMakeCurrent( mMesaContext, mMesaBuffer, MESA_CHANNEL_TYPE, width, height ))
-	{
-		llerrs << "MESA: OSMesaMakeCurrent failed!" << llendl;
-	}
+		/* Bind the buffer to the context and make it current */
+		if (!OSMesaMakeCurrent( mMesaContext, mMesaBuffer, MESA_CHANNEL_TYPE, width, height ))
+		{
+			llerrs << "MESA: OSMesaMakeCurrent failed!" << llendl;
+		}
 
-	llverify(gGLManager.initGL());
+		llverify(gGLManager.initGL());
+	}
 }
 
 
diff --git a/indra/llwindow/llwindowmesaheadless.h b/indra/llwindow/llwindowmesaheadless.h
index c8d2bf28240..8f70aee4f61 100644
--- a/indra/llwindow/llwindowmesaheadless.h
+++ b/indra/llwindow/llwindowmesaheadless.h
@@ -51,7 +51,6 @@ class LLWindowMesaHeadless : public LLWindow
 	/*virtual*/ BOOL getSize(LLCoordWindow *size) {return FALSE;};
 	/*virtual*/ BOOL setPosition(LLCoordScreen position) {return FALSE;};
 	/*virtual*/ BOOL setSizeImpl(LLCoordScreen size) {return FALSE;};
-	/*virtual*/ BOOL setSizeImpl(LLCoordWindow size) {return FALSE;};	
 	/*virtual*/ BOOL switchContext(BOOL fullscreen, const LLCoordScreen &size, BOOL disable_vsync, const LLCoordScreen * const posp = NULL) {return FALSE;};
 	/*virtual*/ BOOL setCursorPosition(LLCoordWindow position) {return FALSE;};
 	/*virtual*/ BOOL getCursorPosition(LLCoordWindow *position) {return FALSE;};
@@ -98,7 +97,7 @@ class LLWindowMesaHeadless : public LLWindow
 	LLWindowMesaHeadless(LLWindowCallbacks* callbacks,
                          const std::string& title, const std::string& name, S32 x, S32 y, S32 width, S32 height,
 				  U32 flags,  BOOL fullscreen, BOOL clearBg,
-				  BOOL disable_vsync, BOOL ignore_pixel_depth);
+				  BOOL disable_vsync, BOOL use_gl, BOOL ignore_pixel_depth);
 	~LLWindowMesaHeadless();
 
 private:
diff --git a/indra/llwindow/llwindowsdl.cpp b/indra/llwindow/llwindowsdl.cpp
index 0d2e0f78c12..a15114cb9bc 100644
--- a/indra/llwindow/llwindowsdl.cpp
+++ b/indra/llwindow/llwindowsdl.cpp
@@ -186,7 +186,7 @@ LLWindowSDL::LLWindowSDL(LLWindowCallbacks* callbacks,
 			 const std::string& title, S32 x, S32 y, S32 width,
 			 S32 height, U32 flags,
 			 BOOL fullscreen, BOOL clearBg,
-			 BOOL disable_vsync,
+			 BOOL disable_vsync, BOOL use_gl,
 			 BOOL ignore_pixel_depth, U32 fsaa_samples)
 	: LLWindow(callbacks, fullscreen, flags),
 	  Lock_Display(NULL),
@@ -197,6 +197,7 @@ LLWindowSDL::LLWindowSDL(LLWindowCallbacks* callbacks,
 	gKeyboard->setCallbacks(callbacks);
 	// Note that we can't set up key-repeat until after SDL has init'd video
 
+	// Ignore use_gl for now, only used for drones on PC
 	mWindow = NULL;
 	mNeedsResize = FALSE;
 	mOverrideAspectRatio = 0.f;
@@ -1643,24 +1644,24 @@ void check_vm_bloat()
 		const long long significant_vm_difference = 250 * 1024*1024;
 		const long long significant_rss_difference = 50 * 1024*1024;
 
+		ssize_t res;
 		size_t dummy;
 		char *ptr;
-		size_t delim_result = 0;
-		for (int i=0; i<22 && delim_result > -1; ++i) // parse past the values we don't want
+		for (int i=0; i<22; ++i) // parse past the values we don't want
 		{
 			ptr = NULL;
-			delim_result = getdelim(&ptr, &dummy, ' ', fp);
+			res = getdelim(&ptr, &dummy, ' ', fp);
 			free(ptr);
 		}
 		// 23rd space-delimited entry is vsize
 		ptr = NULL;
-		delim_result = getdelim(&ptr, &dummy, ' ', fp);
+		res = getdelim(&ptr, &dummy, ' ', fp);
 		llassert(ptr);
 		long long this_vm_size = atoll(ptr);
 		free(ptr);
 		// 24th space-delimited entry is RSS
 		ptr = NULL;
-		delim_result = getdelim(&ptr, &dummy, ' ', fp);
+		res = getdelim(&ptr, &dummy, ' ', fp);
 		llassert(ptr);
 		long long this_rss_size = getpagesize() * atoll(ptr);
 		free(ptr);
diff --git a/indra/llwindow/llwindowsdl.h b/indra/llwindow/llwindowsdl.h
index d430e3d83b9..c5ce892a042 100644
--- a/indra/llwindow/llwindowsdl.h
+++ b/indra/llwindow/llwindowsdl.h
@@ -147,7 +147,7 @@ class LLWindowSDL : public LLWindow
 protected:
 	LLWindowSDL(LLWindowCallbacks* callbacks,
 		const std::string& title, int x, int y, int width, int height, U32 flags,
-		BOOL fullscreen, BOOL clearBg, BOOL disable_vsync,
+		BOOL fullscreen, BOOL clearBg, BOOL disable_vsync, BOOL use_gl,
 		BOOL ignore_pixel_depth, U32 fsaa_samples);
 	~LLWindowSDL();
 
-- 
GitLab


From 46ab23c94be164cb174a97bde11cc38067f9edd0 Mon Sep 17 00:00:00 2001
From: prep <prep@lindenlab.com>
Date: Mon, 11 Mar 2013 18:02:16 -0400
Subject: [PATCH 353/436] llinventory merge fixes

---
 indra/llappearance/llwearable.cpp   |   8 +-
 indra/llinventory/CMakeLists.txt    |  10 --
 indra/llinventory/llinventory.cpp   |  26 ++--
 indra/llinventory/llpermissions.cpp | 193 +++++++++++++++++++++++-----
 indra/llinventory/llpermissions.h   |   4 +-
 indra/llinventory/llsaleinfo.cpp    |  95 ++++++++++----
 indra/llinventory/llsaleinfo.h      |   4 +-
 indra/test/llpermissions_tut.cpp    |   4 +-
 indra/test/llsaleinfo_tut.cpp       |   4 +-
 9 files changed, 251 insertions(+), 97 deletions(-)

diff --git a/indra/llappearance/llwearable.cpp b/indra/llappearance/llwearable.cpp
index 4028c1dfad2..d86a460511f 100644
--- a/indra/llappearance/llwearable.cpp
+++ b/indra/llappearance/llwearable.cpp
@@ -81,13 +81,13 @@ BOOL LLWearable::exportStream( std::ostream& output_stream ) const
 	output_stream << mDescription << "\n";
 
 	// permissions
-	if( !mPermissions.exportStream( output_stream ) )
+	if( !mPermissions.exportLegacyStream( output_stream ) )
 	{
 		return FALSE;
 	}
 
 	// sale info
-	if( !mSaleInfo.exportStream( output_stream ) )
+	if( !mSaleInfo.exportLegacyStream( output_stream ) )
 	{
 		return FALSE;
 	}
@@ -263,7 +263,7 @@ LLWearable::EImportResult LLWearable::importStream( std::istream& input_stream,
 		llwarns << "Bad Wearable asset: missing valid permissions" << llendl;
 		return LLWearable::FAILURE;
 	}
-	if( !mPermissions.importStream( input_stream ) )
+	if( !mPermissions.importLegacyStream( input_stream ) )
 	{
 		return LLWearable::FAILURE;
 	}
@@ -288,7 +288,7 @@ LLWearable::EImportResult LLWearable::importStream( std::istream& input_stream,
 	// up the vast majority of the tasks.
 	BOOL has_perm_mask = FALSE;
 	U32 perm_mask = 0;
-	if( !mSaleInfo.importStream(input_stream, has_perm_mask, perm_mask) )
+	if( !mSaleInfo.importLegacyStream(input_stream, has_perm_mask, perm_mask) )
 	{
 		return LLWearable::FAILURE;
 	}
diff --git a/indra/llinventory/CMakeLists.txt b/indra/llinventory/CMakeLists.txt
index c69e153dec3..e45c809e7e5 100644
--- a/indra/llinventory/CMakeLists.txt
+++ b/indra/llinventory/CMakeLists.txt
@@ -15,10 +15,6 @@ include_directories(
     ${LLMESSAGE_INCLUDE_DIRS}
     ${LLXML_INCLUDE_DIRS}
     )
-include_directories(SYSTEM
-    ${LLCOMMON_SYSTEM_INCLUDE_DIRS}
-    ${LLXML_SYSTEM_INCLUDE_DIRS}
-    )
 
 set(llinventory_SOURCE_FILES
     llcategory.cpp
@@ -62,12 +58,6 @@ list(APPEND llinventory_SOURCE_FILES ${llinventory_HEADER_FILES})
 
 add_library (llinventory ${llinventory_SOURCE_FILES})
 
-target_link_libraries(llinventory
-    ${LLCOMMON_LIBRARIES}
-    ${LLMATH_LIBRARIES}
-    ${LLMESSAGE_LIBRARIES}
-    ${LLXML_LIBRARIES}
-    )
 
 
 #add unit tests
diff --git a/indra/llinventory/llinventory.cpp b/indra/llinventory/llinventory.cpp
index ddeca53fc7c..41d58c6deb5 100644
--- a/indra/llinventory/llinventory.cpp
+++ b/indra/llinventory/llinventory.cpp
@@ -288,7 +288,15 @@ void LLInventoryObject::setCreationDate(time_t creation_date_utc)
 }
 
 
+const std::string& LLInventoryItem::getDescription() const
+{
+	return mDescription;
+}
 
+const std::string& LLInventoryItem::getActualDescription() const
+{
+	return mDescription;
+}
 
 ///----------------------------------------------------------------------------
 /// Class LLInventoryItem
@@ -389,16 +397,6 @@ void LLInventoryItem::setAssetUUID(const LLUUID& asset_id)
 }
 
 
-const std::string& LLInventoryItem::getDescription() const
-{
-	return mDescription;
-}
-
-const std::string& LLInventoryItem::getActualDescription() const
-{
-	return mDescription;
-}
-
 U32 LLInventoryItem::getCRC32() const
 {
 	// *FIX: Not a real crc - more of a checksum.
@@ -840,7 +838,7 @@ BOOL LLInventoryItem::importLegacyStream(std::istream& input_stream)
 		}
 		else if(0 == strcmp("permissions", keyword))
 		{
-			success = mPermissions.importStream(input_stream);
+			success = mPermissions.importLegacyStream(input_stream);
 		}
 		else if(0 == strcmp("sale_info", keyword))
 		{
@@ -850,7 +848,7 @@ BOOL LLInventoryItem::importLegacyStream(std::istream& input_stream)
 			// should pick up the vast majority of the tasks.
 			BOOL has_perm_mask = FALSE;
 			U32 perm_mask = 0;
-			success = mSaleInfo.importStream(input_stream, has_perm_mask, perm_mask);
+			success = mSaleInfo.importLegacyStream(input_stream, has_perm_mask, perm_mask);
 			if(has_perm_mask)
 			{
 				if(perm_mask == PERM_NONE)
@@ -966,7 +964,7 @@ BOOL LLInventoryItem::exportLegacyStream(std::ostream& output_stream, BOOL inclu
 	output_stream << "\t\titem_id\t" << uuid_str << "\n";
 	mParentUUID.toString(uuid_str);
 	output_stream << "\t\tparent_id\t" << uuid_str << "\n";
-	mPermissions.exportStream(output_stream);
+	mPermissions.exportLegacyStream(output_stream);
 
 	// Check for permissions to see the asset id, and if so write it
 	// out as an asset id. Otherwise, apply our cheesy encryption.
@@ -1000,7 +998,7 @@ BOOL LLInventoryItem::exportLegacyStream(std::ostream& output_stream, BOOL inclu
 	std::string buffer;
 	buffer = llformat( "\t\tflags\t%08x\n", mFlags);
 	output_stream << buffer;
-	mSaleInfo.exportStream(output_stream);
+	mSaleInfo.exportLegacyStream(output_stream);
 	output_stream << "\t\tname\t" << mName.c_str() << "|\n";
 	output_stream << "\t\tdesc\t" << mDescription.c_str() << "|\n";
 	output_stream << "\t\tcreation_date\t" << mCreationDate << "\n";
diff --git a/indra/llinventory/llpermissions.cpp b/indra/llinventory/llpermissions.cpp
index 34354e3e8c5..7e013de11a1 100644
--- a/indra/llinventory/llpermissions.cpp
+++ b/indra/llinventory/llpermissions.cpp
@@ -572,17 +572,143 @@ void LLPermissions::unpackMessage(LLMessageSystem* msg, const char* block, S32 b
 
 BOOL LLPermissions::importFile(LLFILE* fp)
 {
-	llifstream ifs(fp);
-	return importStream(ifs);
+	init(LLUUID::null, LLUUID::null, LLUUID::null, LLUUID::null);
+	const S32 BUFSIZE = 16384;
+
+	// *NOTE: Changing the buffer size will require changing the scanf
+	// calls below.
+	char buffer[BUFSIZE];	/* Flawfinder: ignore */
+	char keyword[256];	/* Flawfinder: ignore */
+	char valuestr[256];	/* Flawfinder: ignore */
+	char uuid_str[256];	/* Flawfinder: ignore */
+	U32 mask;
+
+	keyword[0]  = '\0';
+	valuestr[0] = '\0';
+
+	while (!feof(fp))
+	{
+		if (fgets(buffer, BUFSIZE, fp) == NULL)
+		{
+			buffer[0] = '\0';
+		}
+		
+		sscanf( /* Flawfinder: ignore */
+			buffer,
+			" %255s %255s",
+			keyword, valuestr);
+		if (!strcmp("{", keyword))
+		{
+			continue;
+		}
+		if (!strcmp("}",keyword))
+		{
+			break;
+		}
+		else if (!strcmp("creator_mask", keyword))
+		{
+			// legacy support for "creator" masks
+			sscanf(valuestr, "%x", &mask);
+			mMaskBase = mask;
+			fixFairUse();
+		}
+		else if (!strcmp("base_mask", keyword))
+		{
+			sscanf(valuestr, "%x", &mask);
+			mMaskBase = mask;
+			//fixFairUse();
+		}
+		else if (!strcmp("owner_mask", keyword))
+		{
+			sscanf(valuestr, "%x", &mask);
+			mMaskOwner = mask;
+		}
+		else if (!strcmp("group_mask", keyword))
+		{
+			sscanf(valuestr, "%x", &mask);
+			mMaskGroup = mask;
+		}
+		else if (!strcmp("everyone_mask", keyword))
+		{
+			sscanf(valuestr, "%x", &mask);
+			mMaskEveryone = mask;
+		}
+		else if (!strcmp("next_owner_mask", keyword))
+		{
+			sscanf(valuestr, "%x", &mask);
+			mMaskNextOwner = mask;
+		}
+		else if (!strcmp("creator_id", keyword))
+		{
+			sscanf(valuestr, "%255s", uuid_str); /* Flawfinder: ignore */
+			mCreator.set(uuid_str);
+		}
+		else if (!strcmp("owner_id", keyword))
+		{
+			sscanf(valuestr, "%255s", uuid_str); /* Flawfinder: ignore */
+			mOwner.set(uuid_str);
+		}
+		else if (!strcmp("last_owner_id", keyword))
+		{
+			sscanf(valuestr, "%255s", uuid_str); /* Flawfinder: ignore */
+			mLastOwner.set(uuid_str);
+		}
+		else if (!strcmp("group_id", keyword))
+		{
+			sscanf(valuestr, "%255s", uuid_str); /* Flawfinder: ignore */
+			mGroup.set(uuid_str);
+		}
+		else if (!strcmp("group_owned", keyword))
+		{
+			sscanf(valuestr, "%d", &mask);
+			if(mask) mIsGroupOwned = true;
+			else mIsGroupOwned = false;
+		}
+		else
+		{
+			llinfos << "unknown keyword " << keyword << " in permissions import" << llendl;
+		}
+	}
+	fix();
+	return TRUE;
 }
 
+
 BOOL LLPermissions::exportFile(LLFILE* fp) const
 {
-	llofstream ofs(fp);
-	return exportStream(ofs);
+	std::string uuid_str;
+
+	fprintf(fp, "\tpermissions 0\n");
+	fprintf(fp, "\t{\n");
+
+	fprintf(fp, "\t\tbase_mask\t%08x\n",		mMaskBase);
+	fprintf(fp, "\t\towner_mask\t%08x\n",		mMaskOwner);
+	fprintf(fp, "\t\tgroup_mask\t%08x\n",		mMaskGroup);
+	fprintf(fp, "\t\teveryone_mask\t%08x\n",	mMaskEveryone);
+	fprintf(fp, "\t\tnext_owner_mask\t%08x\n",	mMaskNextOwner);
+
+	mCreator.toString(uuid_str);
+	fprintf(fp, "\t\tcreator_id\t%s\n",			uuid_str.c_str());
+
+	mOwner.toString(uuid_str);
+	fprintf(fp, "\t\towner_id\t%s\n",			uuid_str.c_str());
+
+	mLastOwner.toString(uuid_str);
+	fprintf(fp, "\t\tlast_owner_id\t%s\n",		uuid_str.c_str());
+
+	mGroup.toString(uuid_str);
+	fprintf(fp, "\t\tgroup_id\t%s\n",			uuid_str.c_str());
+
+	if(mIsGroupOwned)
+	{
+		fprintf(fp, "\t\tgroup_owned\t1\n");
+	}
+	fprintf(fp,"\t}\n");
+	return TRUE;
 }
 
-BOOL LLPermissions::importStream(std::istream& input_stream)
+
+BOOL LLPermissions::importLegacyStream(std::istream& input_stream)
 {
 	init(LLUUID::null, LLUUID::null, LLUUID::null, LLUUID::null);
 	const S32 BUFSIZE = 16384;
@@ -601,18 +727,6 @@ BOOL LLPermissions::importStream(std::istream& input_stream)
 	while (input_stream.good())
 	{
 		input_stream.getline(buffer, BUFSIZE);
-		if (input_stream.eof())
-		{
-			llwarns << "Bad permissions: early end of input stream"
-					<< llendl;
-			return FALSE;
-		}
-		if (input_stream.fail())
-		{
-			llwarns << "Bad permissions: failed to read from input stream"
-					<< llendl;
-			return FALSE;
-		}
 		sscanf( /* Flawfinder: ignore */
 			buffer,
 			" %255s %255s",
@@ -686,8 +800,7 @@ BOOL LLPermissions::importStream(std::istream& input_stream)
 		}
 		else
 		{
-			llwarns << "unknown keyword " << keyword 
-					<< " in permissions import" << llendl;
+			llinfos << "unknown keyword " << keyword << " in permissions import" << llendl;
 		}
 	}
 	fix();
@@ -695,26 +808,36 @@ BOOL LLPermissions::importStream(std::istream& input_stream)
 }
 
 
-BOOL LLPermissions::exportStream(std::ostream& output_stream) const
+BOOL LLPermissions::exportLegacyStream(std::ostream& output_stream) const
 {
-	if (!output_stream.good()) return FALSE;
+	std::string uuid_str;
+
 	output_stream <<  "\tpermissions 0\n";
 	output_stream <<  "\t{\n";
 
-	char prev_fill = output_stream.fill('0');
-	output_stream << std::hex;
-	output_stream << "\t\tbase_mask\t" << std::setw(8) << mMaskBase << "\n";
-	output_stream << "\t\towner_mask\t" << std::setw(8) << mMaskOwner << "\n";
-	output_stream << "\t\tgroup_mask\t" << std::setw(8) << mMaskGroup << "\n";
-	output_stream << "\t\teveryone_mask\t" << std::setw(8) << mMaskEveryone << "\n";
-	output_stream << "\t\tnext_owner_mask\t" << std::setw(8) << mMaskNextOwner << "\n";
-	output_stream << std::dec;
-	output_stream.fill(prev_fill);
-
-	output_stream <<  "\t\tcreator_id\t" << mCreator << "\n";
-	output_stream <<  "\t\towner_id\t" << mOwner << "\n";
-	output_stream <<  "\t\tlast_owner_id\t" << mLastOwner << "\n";
-	output_stream <<  "\t\tgroup_id\t" << mGroup << "\n";
+	std::string buffer;
+	buffer = llformat( "\t\tbase_mask\t%08x\n",		mMaskBase);
+	output_stream << buffer;
+	buffer = llformat( "\t\towner_mask\t%08x\n",		mMaskOwner);
+	output_stream << buffer;
+	buffer = llformat( "\t\tgroup_mask\t%08x\n",		mMaskGroup);
+	output_stream << buffer;
+	buffer = llformat( "\t\teveryone_mask\t%08x\n",	mMaskEveryone);
+	output_stream << buffer;
+	buffer = llformat( "\t\tnext_owner_mask\t%08x\n",	mMaskNextOwner);
+	output_stream << buffer;
+
+	mCreator.toString(uuid_str);
+	output_stream <<  "\t\tcreator_id\t" << uuid_str << "\n";
+
+	mOwner.toString(uuid_str);
+	output_stream <<  "\t\towner_id\t" << uuid_str << "\n";
+
+	mLastOwner.toString(uuid_str);
+	output_stream <<  "\t\tlast_owner_id\t" << uuid_str << "\n";
+
+	mGroup.toString(uuid_str);
+	output_stream <<  "\t\tgroup_id\t" << uuid_str << "\n";
 
 	if(mIsGroupOwned)
 	{
diff --git a/indra/llinventory/llpermissions.h b/indra/llinventory/llpermissions.h
index 7d3a68d3533..3ecc922370a 100644
--- a/indra/llinventory/llpermissions.h
+++ b/indra/llinventory/llpermissions.h
@@ -316,8 +316,8 @@ class LLPermissions : public LLReflective
 	BOOL	importFile(LLFILE* fp);
 	BOOL	exportFile(LLFILE* fp) const;
 
-	BOOL	importStream(std::istream& input_stream);
-	BOOL	exportStream(std::ostream& output_stream) const;
+	BOOL	importLegacyStream(std::istream& input_stream);
+	BOOL	exportLegacyStream(std::ostream& output_stream) const;
 
 	bool operator==(const LLPermissions &rhs) const;
 	bool operator!=(const LLPermissions &rhs) const;
diff --git a/indra/llinventory/llsaleinfo.cpp b/indra/llinventory/llsaleinfo.cpp
index a8296679337..dd408a8efea 100644
--- a/indra/llinventory/llsaleinfo.cpp
+++ b/indra/llinventory/llsaleinfo.cpp
@@ -81,13 +81,15 @@ U32 LLSaleInfo::getCRC32() const
 
 BOOL LLSaleInfo::exportFile(LLFILE* fp) const
 {
-	llofstream ofs(fp);
-	return exportStream(ofs);
+	fprintf(fp, "\tsale_info\t0\n\t{\n");
+	fprintf(fp, "\t\tsale_type\t%s\n", lookup(mSaleType));
+	fprintf(fp, "\t\tsale_price\t%d\n", mSalePrice);
+	fprintf(fp,"\t}\n");
+	return TRUE;
 }
 
-BOOL LLSaleInfo::exportStream(std::ostream& output_stream) const
+BOOL LLSaleInfo::exportLegacyStream(std::ostream& output_stream) const
 {
-	if (!output_stream.good()) return FALSE;
 	output_stream << "\tsale_info\t0\n\t{\n";
 	output_stream << "\t\tsale_type\t" << lookup(mSaleType) << "\n";
 	output_stream << "\t\tsale_price\t" << mSalePrice << "\n";
@@ -131,40 +133,81 @@ bool LLSaleInfo::fromLLSD(const LLSD& sd, BOOL& has_perm_mask, U32& perm_mask)
 // because I can't find any non-test code references to it. 2009-05-04 JC
 
 BOOL LLSaleInfo::importFile(LLFILE* fp, BOOL& has_perm_mask, U32& perm_mask)
-{
-	llifstream ifs(fp);
-	return importStream(ifs, has_perm_mask, perm_mask);
-}
-
-BOOL LLSaleInfo::importStream(std::istream& input_stream, BOOL& has_perm_mask, U32& perm_mask)
 {
 	has_perm_mask = FALSE;
 
-	const S32 BUFSIZE = 16384;
-
 	// *NOTE: Changing the buffer size will require changing the scanf
 	// calls below.
-	char buffer[BUFSIZE];	/* Flawfinder: ignore */
-	char keyword[255];	/* Flawfinder: ignore */
-	char valuestr[255];	/* Flawfinder: ignore */
+	char buffer[MAX_STRING];	/* Flawfinder: ignore */
+	char keyword[MAX_STRING];	/* Flawfinder: ignore */
+	char valuestr[MAX_STRING];	/* Flawfinder: ignore */
+	BOOL success = TRUE;
 
 	keyword[0] = '\0';
 	valuestr[0] = '\0';
-	while(input_stream.good())
+	while(success && (!feof(fp)))
 	{
-		input_stream.getline(buffer, MAX_STRING);
-		if (input_stream.eof())
+		if (fgets(buffer, MAX_STRING, fp) == NULL)
+		{
+			buffer[0] = '\0';
+		}
+
+		sscanf(	/* Flawfinder: ignore */
+			buffer,
+			" %254s %254s",
+			keyword, valuestr);
+		if(!keyword[0])
 		{
-			llwarns << "Bad sale info: early end of input stream"
-					<< llendl;
-			return FALSE;
+			continue;
+		}
+		if(0 == strcmp("{",keyword))
+		{
+			continue;
+		}
+		if(0 == strcmp("}", keyword))
+		{
+			break;
 		}
-		if (input_stream.fail())
+		else if(0 == strcmp("sale_type", keyword))
 		{
-			llwarns << "Bad sale info: failed to read from input stream"
-					<< llendl;
-			return FALSE;
+			mSaleType = lookup(valuestr);
 		}
+		else if(0 == strcmp("sale_price", keyword))
+		{
+			sscanf(valuestr, "%d", &mSalePrice);
+			mSalePrice = llclamp(mSalePrice, 0, S32_MAX);
+		}
+		else if (!strcmp("perm_mask", keyword))
+		{
+			//llinfos << "found deprecated keyword perm_mask" << llendl;
+			has_perm_mask = TRUE;
+			sscanf(valuestr, "%x", &perm_mask);
+		}
+		else
+		{
+			llwarns << "unknown keyword '" << keyword
+					<< "' in sale info import" << llendl;
+		}
+	}
+	return success;
+}
+
+BOOL LLSaleInfo::importLegacyStream(std::istream& input_stream, BOOL& has_perm_mask, U32& perm_mask)
+{
+	has_perm_mask = FALSE;
+
+	// *NOTE: Changing the buffer size will require changing the scanf
+	// calls below.
+	char buffer[MAX_STRING];	/* Flawfinder: ignore */
+	char keyword[MAX_STRING];	/* Flawfinder: ignore */
+	char valuestr[MAX_STRING];	/* Flawfinder: ignore */
+	BOOL success = TRUE;
+
+	keyword[0] = '\0';
+	valuestr[0] = '\0';
+	while(success && input_stream.good())
+	{
+		input_stream.getline(buffer, MAX_STRING);
 		sscanf(	/* Flawfinder: ignore */
 			buffer,
 			" %254s %254s",
@@ -202,7 +245,7 @@ BOOL LLSaleInfo::importStream(std::istream& input_stream, BOOL& has_perm_mask, U
 					<< "' in sale info import" << llendl;
 		}
 	}
-	return TRUE;
+	return success;
 }
 
 void LLSaleInfo::setSalePrice(S32 price)
diff --git a/indra/llinventory/llsaleinfo.h b/indra/llinventory/llsaleinfo.h
index f7f3f9269c1..4e98ccf6ff4 100644
--- a/indra/llinventory/llsaleinfo.h
+++ b/indra/llinventory/llsaleinfo.h
@@ -89,11 +89,11 @@ class LLSaleInfo
 	BOOL exportFile(LLFILE* fp) const;
 	BOOL importFile(LLFILE* fp, BOOL& has_perm_mask, U32& perm_mask);
 
-	BOOL exportStream(std::ostream& output_stream) const;
+	BOOL exportLegacyStream(std::ostream& output_stream) const;
 	LLSD asLLSD() const;
 	operator LLSD() const { return asLLSD(); }
 	bool fromLLSD(const LLSD& sd, BOOL& has_perm_mask, U32& perm_mask);
-	BOOL importStream(std::istream& input_stream, BOOL& has_perm_mask, U32& perm_mask);
+	BOOL importLegacyStream(std::istream& input_stream, BOOL& has_perm_mask, U32& perm_mask);
 
 	LLSD packMessage() const;
 	void unpackMessage(LLSD sales);
diff --git a/indra/test/llpermissions_tut.cpp b/indra/test/llpermissions_tut.cpp
index dff8bca53fc..bc2c87ba46d 100644
--- a/indra/test/llpermissions_tut.cpp
+++ b/indra/test/llpermissions_tut.cpp
@@ -457,9 +457,9 @@ namespace tut
 		perm.initMasks(base, ownerp, everyone, groupp, next);
 
 		std::ostringstream ostream;
-		perm.exportStream(ostream);
+		perm.exportLegacyStream(ostream);
 		std::istringstream istream(ostream.str());
-		perm1.importStream(istream);
+		perm1.importLegacyStream(istream);
 
 		ensure_equals("exportStream()/importStream():failed to export and import the data ", perm1, perm);
 	}
diff --git a/indra/test/llsaleinfo_tut.cpp b/indra/test/llsaleinfo_tut.cpp
index d5468039476..2689eaa15e5 100644
--- a/indra/test/llsaleinfo_tut.cpp
+++ b/indra/test/llsaleinfo_tut.cpp
@@ -146,13 +146,13 @@ namespace tut
 		LLSaleInfo llsaleinfo(LLSaleInfo::FS_ORIGINAL, sale_price);
 		
 		std::ostringstream ostream;
-		llsaleinfo.exportStream(ostream);
+		llsaleinfo.exportLegacyStream(ostream);
 		
 		std::istringstream istream(ostream.str());
 		LLSaleInfo llsaleinfo1;
 		U32 perm_mask = 0;
 		BOOL has_perm_mask = FALSE;
-		llsaleinfo1.importStream(istream, has_perm_mask, perm_mask);
+		llsaleinfo1.importLegacyStream(istream, has_perm_mask, perm_mask);
 					
 		ensure("importStream() fn failed ",
 			llsaleinfo.getSalePrice() == llsaleinfo1.getSalePrice() &&
-- 
GitLab


From 0cda978db922f7ddbe94809e6ea6bd5256cea027 Mon Sep 17 00:00:00 2001
From: prep <prep@lindenlab.com>
Date: Mon, 11 Mar 2013 18:15:40 -0400
Subject: [PATCH 354/436] #include fix

---
 indra/llappearance/lltexlayer.cpp       | 3 +--
 indra/llappearance/lltexlayerparams.cpp | 3 +--
 2 files changed, 2 insertions(+), 4 deletions(-)

diff --git a/indra/llappearance/lltexlayer.cpp b/indra/llappearance/lltexlayer.cpp
index c075035226c..f951a982e5b 100644
--- a/indra/llappearance/lltexlayer.cpp
+++ b/indra/llappearance/lltexlayer.cpp
@@ -38,8 +38,7 @@
 #include "llvfs.h"
 #include "lltexlayerparams.h"
 #include "lltexturemanagerbridge.h"
-//#include "llrender2dutils.h"
-#include "..\llui\llui.h"
+#include "../llui/llui.h"
 #include "llwearable.h"
 #include "llwearabledata.h"
 #include "llvertexbuffer.h"
diff --git a/indra/llappearance/lltexlayerparams.cpp b/indra/llappearance/lltexlayerparams.cpp
index 1adc2947056..6aae9a8cc11 100644
--- a/indra/llappearance/lltexlayerparams.cpp
+++ b/indra/llappearance/lltexlayerparams.cpp
@@ -33,8 +33,7 @@
 #include "llquantize.h"
 #include "lltexlayer.h"
 #include "lltexturemanagerbridge.h"
-//#include "llrender2dutils.h"
-#include "..\llui\llui.h"
+#include "../llui/llui.h"
 #include "llwearable.h"
 
 //-----------------------------------------------------------------------------
-- 
GitLab


From 0123ab0dc67dd9de266f1edac2cadbd43ef0aa4d Mon Sep 17 00:00:00 2001
From: prep linden <prep@lindenlab.com>
Date: Tue, 12 Mar 2013 11:02:00 -0400
Subject: [PATCH 355/436] Removed unneeded code.

---
 indra/newview/llinventorymodel.cpp | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp
index 3debdf5ac98..5fa4ebaf979 100644
--- a/indra/newview/llinventorymodel.cpp
+++ b/indra/newview/llinventorymodel.cpp
@@ -3324,11 +3324,11 @@ class LLViewerInventoryItemSort
  *
  * @param[in, out] items - array of items, not sorted.
  */
-static void rearrange_item_order_by_sort_field(LLInventoryModel::item_array_t& items)
-{
-	static LLViewerInventoryItemSort sort_functor;
-	std::sort(items.begin(), items.end(), sort_functor);
-}
+//static void rearrange_item_order_by_sort_field(LLInventoryModel::item_array_t& items)
+//{
+//	static LLViewerInventoryItemSort sort_functor;
+//	std::sort(items.begin(), items.end(), sort_functor);
+//}
 
 // * @param source_item_id - LLUUID of the source item to be moved into new position
 // * @param target_item_id - LLUUID of the target item before which source item should be placed.
-- 
GitLab


From 1586107e87f20da7a3eb8b14beffaed03ffc5db5 Mon Sep 17 00:00:00 2001
From: Nyx Linden <nyx@lindenlab.com>
Date: Tue, 12 Mar 2013 22:34:15 +0000
Subject: [PATCH 356/436] SH-3944 WIP CHUI merge fixing

re-introduced don's refactor of low-level openGL calls pulling out of llui
and putting them into llrender. Took the new code from their updated versions
from the CHUI merge, but put them in a place accessible to appearance utility.
---
 indra/llrender/CMakeLists.txt          |    4 +
 indra/llrender/llrender2dutils.cpp     | 1608 ++++++++++++++++++++++++
 indra/llrender/llrender2dutils.h       |  163 +++
 indra/{llui => llrender}/lluiimage.cpp |   10 +-
 indra/{llui => llrender}/lluiimage.h   |    0
 indra/llui/CMakeLists.txt              |    2 -
 indra/llui/llcombobox.cpp              |    2 +-
 indra/llui/lllineeditor.cpp            |    6 +-
 indra/llui/lllocalcliprect.cpp         |    8 +-
 indra/llui/lltextbase.cpp              |    4 +-
 indra/llui/lltexteditor.cpp            |    2 +-
 indra/llui/llui.cpp                    | 1567 +----------------------
 indra/llui/llui.h                      |  130 +-
 indra/newview/llappviewer.cpp          |    2 +-
 indra/newview/llglsandbox.cpp          |    8 +-
 indra/newview/llmediactrl.cpp          |   18 +-
 indra/newview/llviewerdisplay.cpp      |   10 +-
 indra/newview/llviewerwindow.cpp       |   12 +-
 indra/newview/llworldmapview.cpp       |    4 +-
 19 files changed, 1846 insertions(+), 1714 deletions(-)
 create mode 100644 indra/llrender/llrender2dutils.cpp
 create mode 100644 indra/llrender/llrender2dutils.h
 rename indra/{llui => llrender}/lluiimage.cpp (97%)
 rename indra/{llui => llrender}/lluiimage.h (100%)

diff --git a/indra/llrender/CMakeLists.txt b/indra/llrender/CMakeLists.txt
index 904f5587b7f..669b70aa433 100644
--- a/indra/llrender/CMakeLists.txt
+++ b/indra/llrender/CMakeLists.txt
@@ -43,11 +43,13 @@ set(llrender_SOURCE_FILES
     llimagegl.cpp
     llpostprocess.cpp
     llrender.cpp
+    llrender2dutils.cpp
     llrendernavprim.cpp
     llrendersphere.cpp
     llrendertarget.cpp
     llshadermgr.cpp
     lltexture.cpp
+    lluiimage.cpp
     llvertexbuffer.cpp
     )
     
@@ -69,10 +71,12 @@ set(llrender_HEADER_FILES
     llimagegl.h
     llpostprocess.h
     llrender.h
+    llrender2dutils.h
     llrendernavprim.h
     llrendersphere.h
     llshadermgr.h
     lltexture.h
+    lluiimage.h
     llvertexbuffer.h
     )
 
diff --git a/indra/llrender/llrender2dutils.cpp b/indra/llrender/llrender2dutils.cpp
new file mode 100644
index 00000000000..d3cfbaf03a7
--- /dev/null
+++ b/indra/llrender/llrender2dutils.cpp
@@ -0,0 +1,1608 @@
+/** 
+ * @file llrender2dutils.cpp
+ * @brief GL function implementations for immediate-mode gl drawing.
+ *
+ * $LicenseInfo:firstyear=2001&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+#include "linden_common.h"
+
+// Linden library includes
+#include "v2math.h"
+#include "m3math.h"
+#include "v4color.h"
+#include "llfontgl.h"
+#include "llrender.h"
+#include "llrect.h"
+#include "llgl.h"
+#include "lltexture.h"
+
+// Project includes
+#include "llrender2dutils.h"
+#include "lluiimage.h"
+
+
+//
+// Globals
+//
+const LLColor4 UI_VERTEX_COLOR(1.f, 1.f, 1.f, 1.f);
+/*static*/ LLVector2		LLRender2D::sGLScaleFactor(1.f, 1.f);
+/*static*/ LLImageProviderInterface* LLRender2D::sImageProvider = NULL;
+
+//
+// Functions
+//
+
+BOOL ui_point_in_rect(S32 x, S32 y, S32 left, S32 top, S32 right, S32 bottom)
+{
+	if (x < left || right < x) return FALSE;
+	if (y < bottom || top < y) return FALSE;
+	return TRUE;
+}
+
+
+// Puts GL into 2D drawing mode by turning off lighting, setting to an
+// orthographic projection, etc.
+void gl_state_for_2d(S32 width, S32 height)
+{
+	stop_glerror();
+	F32 window_width = (F32) width;//gViewerWindow->getWindowWidth();
+	F32 window_height = (F32) height;//gViewerWindow->getWindowHeight();
+
+	gGL.matrixMode(LLRender::MM_PROJECTION);
+	gGL.loadIdentity();
+	gGL.ortho(0.0f, llmax(window_width, 1.f), 0.0f, llmax(window_height,1.f), -1.0f, 1.0f);
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
+	gGL.loadIdentity();
+	stop_glerror();
+}
+
+
+void gl_draw_x(const LLRect& rect, const LLColor4& color)
+{
+	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
+
+	gGL.color4fv( color.mV );
+
+	gGL.begin( LLRender::LINES );
+		gGL.vertex2i( rect.mLeft,		rect.mTop );
+		gGL.vertex2i( rect.mRight,	rect.mBottom );
+		gGL.vertex2i( rect.mLeft,		rect.mBottom );
+		gGL.vertex2i( rect.mRight,	rect.mTop );
+	gGL.end();
+}
+
+
+void gl_rect_2d_offset_local( S32 left, S32 top, S32 right, S32 bottom, const LLColor4 &color, S32 pixel_offset, BOOL filled)
+{
+	gGL.color4fv(color.mV);
+	gl_rect_2d_offset_local(left, top, right, bottom, pixel_offset, filled);
+}
+
+void gl_rect_2d_offset_local( S32 left, S32 top, S32 right, S32 bottom, S32 pixel_offset, BOOL filled)
+{
+	gGL.pushUIMatrix();
+	left += LLFontGL::sCurOrigin.mX;
+	right += LLFontGL::sCurOrigin.mX;
+	bottom += LLFontGL::sCurOrigin.mY;
+	top += LLFontGL::sCurOrigin.mY;
+
+	gGL.loadUIIdentity();
+	gl_rect_2d(llfloor((F32)left * LLRender2D::sGLScaleFactor.mV[VX]) - pixel_offset,
+				llfloor((F32)top * LLRender2D::sGLScaleFactor.mV[VY]) + pixel_offset,
+				llfloor((F32)right * LLRender2D::sGLScaleFactor.mV[VX]) + pixel_offset,
+				llfloor((F32)bottom * LLRender2D::sGLScaleFactor.mV[VY]) - pixel_offset,
+				filled);
+	gGL.popUIMatrix();
+}
+
+
+void gl_rect_2d(S32 left, S32 top, S32 right, S32 bottom, BOOL filled )
+{
+	stop_glerror();
+	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
+
+	// Counterclockwise quad will face the viewer
+	if( filled )
+	{ 
+		gGL.begin( LLRender::QUADS );
+			gGL.vertex2i(left, top);
+			gGL.vertex2i(left, bottom);
+			gGL.vertex2i(right, bottom);
+			gGL.vertex2i(right, top);
+		gGL.end();
+	}
+	else
+	{
+		if( gGLManager.mATIOffsetVerticalLines )
+		{
+			// Work around bug in ATI driver: vertical lines are offset by (-1,-1)
+			gGL.begin( LLRender::LINES );
+
+				// Verticals 
+				gGL.vertex2i(left + 1, top);
+				gGL.vertex2i(left + 1, bottom);
+
+				gGL.vertex2i(right, bottom);
+				gGL.vertex2i(right, top);
+
+				// Horizontals
+				top--;
+				right--;
+				gGL.vertex2i(left, bottom);
+				gGL.vertex2i(right, bottom);
+
+				gGL.vertex2i(left, top);
+				gGL.vertex2i(right, top);
+			gGL.end();
+		}
+		else
+		{
+			top--;
+			right--;
+			gGL.begin( LLRender::LINE_STRIP );
+				gGL.vertex2i(left, top);
+				gGL.vertex2i(left, bottom);
+				gGL.vertex2i(right, bottom);
+				gGL.vertex2i(right, top);
+				gGL.vertex2i(left, top);
+			gGL.end();
+		}
+	}
+	stop_glerror();
+}
+
+void gl_rect_2d(S32 left, S32 top, S32 right, S32 bottom, const LLColor4 &color, BOOL filled )
+{
+	gGL.color4fv( color.mV );
+	gl_rect_2d( left, top, right, bottom, filled );
+}
+
+
+void gl_rect_2d( const LLRect& rect, const LLColor4& color, BOOL filled )
+{
+	gGL.color4fv( color.mV );
+	gl_rect_2d( rect.mLeft, rect.mTop, rect.mRight, rect.mBottom, filled );
+}
+
+// Given a rectangle on the screen, draws a drop shadow _outside_
+// the right and bottom edges of it.  Along the right it has width "lines"
+// and along the bottom it has height "lines".
+void gl_drop_shadow(S32 left, S32 top, S32 right, S32 bottom, const LLColor4 &start_color, S32 lines)
+{
+	stop_glerror();
+	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
+	
+	// HACK: Overlap with the rectangle by a single pixel.
+	right--;
+	bottom++;
+	lines++;
+
+	LLColor4 end_color = start_color;
+	end_color.mV[VALPHA] = 0.f;
+
+	gGL.begin(LLRender::QUADS);
+
+	// Right edge, CCW faces screen
+	gGL.color4fv(start_color.mV);
+	gGL.vertex2i(right,		top-lines);
+	gGL.vertex2i(right,		bottom);
+	gGL.color4fv(end_color.mV);
+	gGL.vertex2i(right+lines, bottom);
+	gGL.vertex2i(right+lines, top-lines);
+
+	// Bottom edge, CCW faces screen
+	gGL.color4fv(start_color.mV);
+	gGL.vertex2i(right,		bottom);
+	gGL.vertex2i(left+lines,	bottom);
+	gGL.color4fv(end_color.mV);
+	gGL.vertex2i(left+lines,	bottom-lines);
+	gGL.vertex2i(right,		bottom-lines);
+
+	// bottom left Corner
+	gGL.color4fv(start_color.mV);
+	gGL.vertex2i(left+lines,	bottom);
+	gGL.color4fv(end_color.mV);
+	gGL.vertex2i(left,		bottom);
+	// make the bottom left corner not sharp
+	gGL.vertex2i(left+1,		bottom-lines+1);
+	gGL.vertex2i(left+lines,	bottom-lines);
+
+	// bottom right corner
+	gGL.color4fv(start_color.mV);
+	gGL.vertex2i(right,		bottom);
+	gGL.color4fv(end_color.mV);
+	gGL.vertex2i(right,		bottom-lines);
+	// make the rightmost corner not sharp
+	gGL.vertex2i(right+lines-1,	bottom-lines+1);
+	gGL.vertex2i(right+lines,	bottom);
+
+	// top right corner
+	gGL.color4fv(start_color.mV);
+	gGL.vertex2i( right,			top-lines );
+	gGL.color4fv(end_color.mV);
+	gGL.vertex2i( right+lines,	top-lines );
+	// make the corner not sharp
+	gGL.vertex2i( right+lines-1,	top-1 );
+	gGL.vertex2i( right,			top );
+
+	gGL.end();
+	stop_glerror();
+}
+
+void gl_line_2d(S32 x1, S32 y1, S32 x2, S32 y2 )
+{
+	// Work around bug in ATI driver: vertical lines are offset by (-1,-1)
+	if( (x1 == x2) && gGLManager.mATIOffsetVerticalLines )
+	{
+		x1++;
+		x2++;
+		y1++;
+		y2++;
+	}
+
+	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
+	
+	gGL.begin(LLRender::LINES);
+		gGL.vertex2i(x1, y1);
+		gGL.vertex2i(x2, y2);
+	gGL.end();
+}
+
+void gl_line_2d(S32 x1, S32 y1, S32 x2, S32 y2, const LLColor4 &color )
+{
+	// Work around bug in ATI driver: vertical lines are offset by (-1,-1)
+	if( (x1 == x2) && gGLManager.mATIOffsetVerticalLines )
+	{
+		x1++;
+		x2++;
+		y1++;
+		y2++;
+	}
+
+	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
+
+	gGL.color4fv( color.mV );
+
+	gGL.begin(LLRender::LINES);
+		gGL.vertex2i(x1, y1);
+		gGL.vertex2i(x2, y2);
+	gGL.end();
+}
+
+void gl_triangle_2d(S32 x1, S32 y1, S32 x2, S32 y2, S32 x3, S32 y3, const LLColor4& color, BOOL filled)
+{
+	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
+
+	gGL.color4fv(color.mV);
+
+	if (filled)
+	{
+		gGL.begin(LLRender::TRIANGLES);
+	}
+	else
+	{
+		gGL.begin(LLRender::LINE_LOOP);
+	}
+	gGL.vertex2i(x1, y1);
+	gGL.vertex2i(x2, y2);
+	gGL.vertex2i(x3, y3);
+	gGL.end();
+}
+
+void gl_corners_2d(S32 left, S32 top, S32 right, S32 bottom, S32 length, F32 max_frac)
+{
+	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
+
+	length = llmin((S32)(max_frac*(right - left)), length);
+	length = llmin((S32)(max_frac*(top - bottom)), length);
+	gGL.begin(LLRender::LINES);
+	gGL.vertex2i(left, top);
+	gGL.vertex2i(left + length, top);
+	
+	gGL.vertex2i(left, top);
+	gGL.vertex2i(left, top - length);
+
+	gGL.vertex2i(left, bottom);
+	gGL.vertex2i(left + length, bottom);
+	
+	gGL.vertex2i(left, bottom);
+	gGL.vertex2i(left, bottom + length);
+
+	gGL.vertex2i(right, top);
+	gGL.vertex2i(right - length, top);
+
+	gGL.vertex2i(right, top);
+	gGL.vertex2i(right, top - length);
+
+	gGL.vertex2i(right, bottom);
+	gGL.vertex2i(right - length, bottom);
+
+	gGL.vertex2i(right, bottom);
+	gGL.vertex2i(right, bottom + length);
+	gGL.end();
+}
+
+
+void gl_draw_image( S32 x, S32 y, LLTexture* image, const LLColor4& color, const LLRectf& uv_rect )
+{
+	if (NULL == image)
+	{
+		llwarns << "image == NULL; aborting function" << llendl;
+		return;
+	}
+	gl_draw_scaled_rotated_image( x, y, image->getWidth(0), image->getHeight(0), 0.f, image, color, uv_rect );
+}
+
+void gl_draw_scaled_image(S32 x, S32 y, S32 width, S32 height, LLTexture* image, const LLColor4& color, const LLRectf& uv_rect)
+{
+	if (NULL == image)
+	{
+		llwarns << "image == NULL; aborting function" << llendl;
+		return;
+	}
+	gl_draw_scaled_rotated_image( x, y, width, height, 0.f, image, color, uv_rect );
+}
+
+void gl_draw_scaled_image_with_border(S32 x, S32 y, S32 border_width, S32 border_height, S32 width, S32 height, LLTexture* image, const LLColor4& color, BOOL solid_color, const LLRectf& uv_rect)
+{
+	if (NULL == image)
+	{
+		llwarns << "image == NULL; aborting function" << llendl;
+		return;
+	}
+
+	// scale screen size of borders down
+	F32 border_width_fraction = (F32)border_width / (F32)image->getWidth(0);
+	F32 border_height_fraction = (F32)border_height / (F32)image->getHeight(0);
+
+	LLRectf scale_rect(border_width_fraction, 1.f - border_height_fraction, 1.f - border_width_fraction, border_height_fraction);
+	gl_draw_scaled_image_with_border(x, y, width, height, image, color, solid_color, uv_rect, scale_rect);
+}
+
+void gl_draw_scaled_image_with_border(S32 x, S32 y, S32 width, S32 height, LLTexture* image, const LLColor4& color, BOOL solid_color, const LLRectf& uv_outer_rect, const LLRectf& center_rect)
+{
+	stop_glerror();
+
+	if (NULL == image)
+	{
+		llwarns << "image == NULL; aborting function" << llendl;
+		return;
+	}
+
+	// add in offset of current image to current UI translation
+	const LLVector3 ui_scale = gGL.getUIScale();
+	const LLVector3 ui_translation = (gGL.getUITranslation() + LLVector3(x, y, 0.f)).scaledVec(ui_scale);
+
+	F32 uv_width = uv_outer_rect.getWidth();
+	F32 uv_height = uv_outer_rect.getHeight();
+
+	// shrink scaling region to be proportional to clipped image region
+	LLRectf uv_center_rect(
+		uv_outer_rect.mLeft + (center_rect.mLeft * uv_width),
+		uv_outer_rect.mBottom + (center_rect.mTop * uv_height),
+		uv_outer_rect.mLeft + (center_rect.mRight * uv_width),
+		uv_outer_rect.mBottom + (center_rect.mBottom * uv_height));
+
+	F32 image_width = image->getWidth(0);
+	F32 image_height = image->getHeight(0);
+
+	S32 image_natural_width = llround(image_width * uv_width);
+	S32 image_natural_height = llround(image_height * uv_height);
+
+	LLRectf draw_center_rect(	uv_center_rect.mLeft * image_width,
+								uv_center_rect.mTop * image_height,
+								uv_center_rect.mRight * image_width,
+								uv_center_rect.mBottom * image_height);
+
+	{	// scale fixed region of image to drawn region
+		draw_center_rect.mRight += width - image_natural_width;
+		draw_center_rect.mTop += height - image_natural_height;
+
+		F32 border_shrink_width = llmax(0.f, draw_center_rect.mLeft - draw_center_rect.mRight);
+		F32 border_shrink_height = llmax(0.f, draw_center_rect.mBottom - draw_center_rect.mTop);
+
+		F32 shrink_width_ratio = center_rect.getWidth() == 1.f ? 0.f : border_shrink_width / ((F32)image_natural_width * (1.f - center_rect.getWidth()));
+		F32 shrink_height_ratio = center_rect.getHeight() == 1.f ? 0.f : border_shrink_height / ((F32)image_natural_height * (1.f - center_rect.getHeight()));
+
+		F32 shrink_scale = 1.f - llmax(shrink_width_ratio, shrink_height_ratio);
+
+		draw_center_rect.mLeft = llround(ui_translation.mV[VX] + (F32)draw_center_rect.mLeft * shrink_scale * ui_scale.mV[VX]);
+		draw_center_rect.mTop = llround(ui_translation.mV[VY] + lerp((F32)height, (F32)draw_center_rect.mTop, shrink_scale) * ui_scale.mV[VY]);
+		draw_center_rect.mRight = llround(ui_translation.mV[VX] + lerp((F32)width, (F32)draw_center_rect.mRight, shrink_scale) * ui_scale.mV[VX]);
+		draw_center_rect.mBottom = llround(ui_translation.mV[VY] + (F32)draw_center_rect.mBottom * shrink_scale * ui_scale.mV[VY]);
+	}
+
+	LLRectf draw_outer_rect(ui_translation.mV[VX], 
+							ui_translation.mV[VY] + height * ui_scale.mV[VY], 
+							ui_translation.mV[VX] + width * ui_scale.mV[VX], 
+							ui_translation.mV[VY]);
+
+	LLGLSUIDefault gls_ui;
+	
+	if (solid_color)
+	{
+		if (LLGLSLShader::sNoFixedFunction)
+		{
+			gSolidColorProgram.bind();
+		}
+		else
+		{
+			gGL.getTexUnit(0)->setTextureColorBlend(LLTexUnit::TBO_REPLACE, LLTexUnit::TBS_PREV_COLOR);
+			gGL.getTexUnit(0)->setTextureAlphaBlend(LLTexUnit::TBO_MULT, LLTexUnit::TBS_TEX_ALPHA, LLTexUnit::TBS_VERT_ALPHA);
+		}
+	}
+
+	gGL.getTexUnit(0)->bind(image, true);
+
+	gGL.color4fv(color.mV);
+	
+	const S32 NUM_VERTICES = 9 * 4; // 9 quads
+	LLVector2 uv[NUM_VERTICES];
+	LLVector3 pos[NUM_VERTICES];
+
+	S32 index = 0;
+
+	gGL.begin(LLRender::QUADS);
+	{
+		// draw bottom left
+		uv[index] = LLVector2(uv_outer_rect.mLeft, uv_outer_rect.mBottom);
+		pos[index] = LLVector3(draw_outer_rect.mLeft, draw_outer_rect.mBottom, 0.f);
+		index++;
+
+		uv[index] = LLVector2(uv_center_rect.mLeft, uv_outer_rect.mBottom);
+		pos[index] = LLVector3(draw_center_rect.mLeft, draw_outer_rect.mBottom, 0.f);
+		index++;
+
+		uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mBottom);
+		pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mBottom, 0.f);
+		index++;
+
+		uv[index] = LLVector2(uv_outer_rect.mLeft, uv_center_rect.mBottom);
+		pos[index] = LLVector3(draw_outer_rect.mLeft, draw_center_rect.mBottom, 0.f);
+		index++;
+
+		// draw bottom middle
+		uv[index] = LLVector2(uv_center_rect.mLeft, uv_outer_rect.mBottom);
+		pos[index] = LLVector3(draw_center_rect.mLeft, draw_outer_rect.mBottom, 0.f);
+		index++;
+
+		uv[index] = LLVector2(uv_center_rect.mRight, uv_outer_rect.mBottom);
+		pos[index] = LLVector3(draw_center_rect.mRight, draw_outer_rect.mBottom, 0.f);
+		index++;
+
+		uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mBottom);
+		pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mBottom, 0.f);
+		index++;
+
+		uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mBottom);
+		pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mBottom, 0.f);
+		index++;
+
+		// draw bottom right
+		uv[index] = LLVector2(uv_center_rect.mRight, uv_outer_rect.mBottom);
+		pos[index] = LLVector3(draw_center_rect.mRight, draw_outer_rect.mBottom, 0.f);
+		index++;
+
+		uv[index] = LLVector2(uv_outer_rect.mRight, uv_outer_rect.mBottom);
+		pos[index] = LLVector3(draw_outer_rect.mRight, draw_outer_rect.mBottom, 0.f);
+		index++;
+
+		uv[index] = LLVector2(uv_outer_rect.mRight, uv_center_rect.mBottom);
+		pos[index] = LLVector3(draw_outer_rect.mRight, draw_center_rect.mBottom, 0.f);
+		index++;
+
+		uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mBottom);
+		pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mBottom, 0.f);
+		index++;
+
+		// draw left 
+		uv[index] = LLVector2(uv_outer_rect.mLeft, uv_center_rect.mBottom);
+		pos[index] = LLVector3(draw_outer_rect.mLeft, draw_center_rect.mBottom, 0.f);
+		index++;
+
+		uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mBottom);
+		pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mBottom, 0.f);
+		index++;
+
+		uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mTop);
+		pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mTop, 0.f);
+		index++;
+
+		uv[index] = LLVector2(uv_outer_rect.mLeft, uv_center_rect.mTop);
+		pos[index] = LLVector3(draw_outer_rect.mLeft, draw_center_rect.mTop, 0.f);
+		index++;
+
+		// draw middle
+		uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mBottom);
+		pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mBottom, 0.f);
+		index++;
+
+		uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mBottom);
+		pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mBottom, 0.f);
+		index++;
+
+		uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mTop);
+		pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mTop, 0.f);
+		index++;
+
+		uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mTop);
+		pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mTop, 0.f);
+		index++;
+
+		// draw right 
+		uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mBottom);
+		pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mBottom, 0.f);
+		index++;
+
+		uv[index] = LLVector2(uv_outer_rect.mRight, uv_center_rect.mBottom);
+		pos[index] = LLVector3(draw_outer_rect.mRight, draw_center_rect.mBottom, 0.f);
+		index++;
+
+		uv[index] = LLVector2(uv_outer_rect.mRight, uv_center_rect.mTop);
+		pos[index] = LLVector3(draw_outer_rect.mRight, draw_center_rect.mTop, 0.f);
+		index++;
+
+		uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mTop);
+		pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mTop, 0.f);
+		index++;
+
+		// draw top left
+		uv[index] = LLVector2(uv_outer_rect.mLeft, uv_center_rect.mTop);
+		pos[index] = LLVector3(draw_outer_rect.mLeft, draw_center_rect.mTop, 0.f);
+		index++;
+
+		uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mTop);
+		pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mTop, 0.f);
+		index++;
+
+		uv[index] = LLVector2(uv_center_rect.mLeft, uv_outer_rect.mTop);
+		pos[index] = LLVector3(draw_center_rect.mLeft, draw_outer_rect.mTop, 0.f);
+		index++;
+
+		uv[index] = LLVector2(uv_outer_rect.mLeft, uv_outer_rect.mTop);
+		pos[index] = LLVector3(draw_outer_rect.mLeft, draw_outer_rect.mTop, 0.f);
+		index++;
+
+		// draw top middle
+		uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mTop);
+		pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mTop, 0.f);
+		index++;
+
+		uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mTop);
+		pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mTop, 0.f);
+		index++;
+
+		uv[index] = LLVector2(uv_center_rect.mRight, uv_outer_rect.mTop);
+		pos[index] = LLVector3(draw_center_rect.mRight, draw_outer_rect.mTop, 0.f);
+		index++;
+
+		uv[index] = LLVector2(uv_center_rect.mLeft, uv_outer_rect.mTop);
+		pos[index] = LLVector3(draw_center_rect.mLeft, draw_outer_rect.mTop, 0.f);
+		index++;
+
+		// draw top right
+		uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mTop);
+		pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mTop, 0.f);
+		index++;
+
+		uv[index] = LLVector2(uv_outer_rect.mRight, uv_center_rect.mTop);
+		pos[index] = LLVector3(draw_outer_rect.mRight, draw_center_rect.mTop, 0.f);
+		index++;
+
+		uv[index] = LLVector2(uv_outer_rect.mRight, uv_outer_rect.mTop);
+		pos[index] = LLVector3(draw_outer_rect.mRight, draw_outer_rect.mTop, 0.f);
+		index++;
+
+		uv[index] = LLVector2(uv_center_rect.mRight, uv_outer_rect.mTop);
+		pos[index] = LLVector3(draw_center_rect.mRight, draw_outer_rect.mTop, 0.f);
+		index++;
+
+		gGL.vertexBatchPreTransformed(pos, uv, NUM_VERTICES);
+	}
+	gGL.end();
+
+	if (solid_color)
+	{
+		if (LLGLSLShader::sNoFixedFunction)
+		{
+			gUIProgram.bind();
+		}
+		else
+		{
+			gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
+		}
+	}
+}
+
+void gl_draw_rotated_image(S32 x, S32 y, F32 degrees, LLTexture* image, const LLColor4& color, const LLRectf& uv_rect)
+{
+	gl_draw_scaled_rotated_image( x, y, image->getWidth(0), image->getHeight(0), degrees, image, color, uv_rect );
+}
+
+void gl_draw_scaled_rotated_image(S32 x, S32 y, S32 width, S32 height, F32 degrees, LLTexture* image, const LLColor4& color, const LLRectf& uv_rect)
+{
+	if (NULL == image)
+	{
+		llwarns << "image == NULL; aborting function" << llendl;
+		return;
+	}
+
+	LLGLSUIDefault gls_ui;
+
+
+	gGL.getTexUnit(0)->bind(image, true);
+
+	gGL.color4fv(color.mV);
+
+	if (degrees == 0.f)
+	{
+		const S32 NUM_VERTICES = 4; // 9 quads
+		LLVector2 uv[NUM_VERTICES];
+		LLVector3 pos[NUM_VERTICES];
+
+		gGL.begin(LLRender::QUADS);
+		{
+			LLVector3 ui_scale = gGL.getUIScale();
+			LLVector3 ui_translation = gGL.getUITranslation();
+			ui_translation.mV[VX] += x;
+			ui_translation.mV[VY] += y;
+			ui_translation.scaleVec(ui_scale);
+			S32 index = 0;
+			S32 scaled_width = llround(width * ui_scale.mV[VX]);
+			S32 scaled_height = llround(height * ui_scale.mV[VY]);
+
+			uv[index] = LLVector2(uv_rect.mRight, uv_rect.mTop);
+			pos[index] = LLVector3(ui_translation.mV[VX] + scaled_width, ui_translation.mV[VY] + scaled_height, 0.f);
+			index++;
+
+			uv[index] = LLVector2(uv_rect.mLeft, uv_rect.mTop);
+			pos[index] = LLVector3(ui_translation.mV[VX], ui_translation.mV[VY] + scaled_height, 0.f);
+			index++;
+
+			uv[index] = LLVector2(uv_rect.mLeft, uv_rect.mBottom);
+			pos[index] = LLVector3(ui_translation.mV[VX], ui_translation.mV[VY], 0.f);
+			index++;
+
+			uv[index] = LLVector2(uv_rect.mRight, uv_rect.mBottom);
+			pos[index] = LLVector3(ui_translation.mV[VX] + scaled_width, ui_translation.mV[VY], 0.f);
+			index++;
+
+			gGL.vertexBatchPreTransformed(pos, uv, NUM_VERTICES);
+		}
+		gGL.end();
+	}
+	else
+	{
+		gGL.pushUIMatrix();
+		gGL.translateUI((F32)x, (F32)y, 0.f);
+	
+		F32 offset_x = F32(width/2);
+		F32 offset_y = F32(height/2);
+
+		gGL.translateUI(offset_x, offset_y, 0.f);
+
+		LLMatrix3 quat(0.f, 0.f, degrees*DEG_TO_RAD);
+		
+		gGL.getTexUnit(0)->bind(image, true);
+
+		gGL.color4fv(color.mV);
+		
+		gGL.begin(LLRender::QUADS);
+		{
+			LLVector3 v;
+
+			v = LLVector3(offset_x, offset_y, 0.f) * quat;
+			gGL.texCoord2f(uv_rect.mRight, uv_rect.mTop);
+			gGL.vertex2f(v.mV[0], v.mV[1] );
+
+			v = LLVector3(-offset_x, offset_y, 0.f) * quat;
+			gGL.texCoord2f(uv_rect.mLeft, uv_rect.mTop);
+			gGL.vertex2f(v.mV[0], v.mV[1] );
+
+			v = LLVector3(-offset_x, -offset_y, 0.f) * quat;
+			gGL.texCoord2f(uv_rect.mLeft, uv_rect.mBottom);
+			gGL.vertex2f(v.mV[0], v.mV[1] );
+
+			v = LLVector3(offset_x, -offset_y, 0.f) * quat;
+			gGL.texCoord2f(uv_rect.mRight, uv_rect.mBottom);
+			gGL.vertex2f(v.mV[0], v.mV[1] );
+		}
+		gGL.end();
+		gGL.popUIMatrix();
+	}
+}
+
+
+void gl_stippled_line_3d( const LLVector3& start, const LLVector3& end, const LLColor4& color, F32 phase )
+{
+	phase = fmod(phase, 1.f);
+
+	S32 shift = S32(phase * 4.f) % 4;
+
+	// Stippled line
+	LLGLEnable stipple(GL_LINE_STIPPLE);
+	
+	gGL.color4f(color.mV[VRED], color.mV[VGREEN], color.mV[VBLUE], color.mV[VALPHA]);
+
+	gGL.flush();
+	glLineWidth(2.5f);
+
+	if (!LLGLSLShader::sNoFixedFunction)
+	{
+		glLineStipple(2, 0x3333 << shift);
+	}
+
+	gGL.begin(LLRender::LINES);
+	{
+		gGL.vertex3fv( start.mV );
+		gGL.vertex3fv( end.mV );
+	}
+	gGL.end();
+
+	LLRender2D::setLineWidth(1.f);
+}
+
+void gl_arc_2d(F32 center_x, F32 center_y, F32 radius, S32 steps, BOOL filled, F32 start_angle, F32 end_angle)
+{
+	if (end_angle < start_angle)
+	{
+		end_angle += F_TWO_PI;
+	}
+
+	gGL.pushUIMatrix();
+	{
+		gGL.translateUI(center_x, center_y, 0.f);
+
+		// Inexact, but reasonably fast.
+		F32 delta = (end_angle - start_angle) / steps;
+		F32 sin_delta = sin( delta );
+		F32 cos_delta = cos( delta );
+		F32 x = cosf(start_angle) * radius;
+		F32 y = sinf(start_angle) * radius;
+
+		if (filled)
+		{
+			gGL.begin(LLRender::TRIANGLE_FAN);
+			gGL.vertex2f(0.f, 0.f);
+			// make sure circle is complete
+			steps += 1;
+		}
+		else
+		{
+			gGL.begin(LLRender::LINE_STRIP);
+		}
+
+		while( steps-- )
+		{
+			// Successive rotations
+			gGL.vertex2f( x, y );
+			F32 x_new = x * cos_delta - y * sin_delta;
+			y = x * sin_delta +  y * cos_delta;
+			x = x_new;
+		}
+		gGL.end();
+	}
+	gGL.popUIMatrix();
+}
+
+void gl_circle_2d(F32 center_x, F32 center_y, F32 radius, S32 steps, BOOL filled)
+{
+	gGL.pushUIMatrix();
+	{
+		gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
+		gGL.translateUI(center_x, center_y, 0.f);
+
+		// Inexact, but reasonably fast.
+		F32 delta = F_TWO_PI / steps;
+		F32 sin_delta = sin( delta );
+		F32 cos_delta = cos( delta );
+		F32 x = radius;
+		F32 y = 0.f;
+
+		if (filled)
+		{
+			gGL.begin(LLRender::TRIANGLE_FAN);
+			gGL.vertex2f(0.f, 0.f);
+			// make sure circle is complete
+			steps += 1;
+		}
+		else
+		{
+			gGL.begin(LLRender::LINE_LOOP);
+		}
+
+		while( steps-- )
+		{
+			// Successive rotations
+			gGL.vertex2f( x, y );
+			F32 x_new = x * cos_delta - y * sin_delta;
+			y = x * sin_delta +  y * cos_delta;
+			x = x_new;
+		}
+		gGL.end();
+	}
+	gGL.popUIMatrix();
+}
+
+// Renders a ring with sides (tube shape)
+void gl_deep_circle( F32 radius, F32 depth, S32 steps )
+{
+	F32 x = radius;
+	F32 y = 0.f;
+	F32 angle_delta = F_TWO_PI / (F32)steps;
+	gGL.begin( LLRender::TRIANGLE_STRIP  );
+	{
+		S32 step = steps + 1; // An extra step to close the circle.
+		while( step-- )
+		{
+			gGL.vertex3f( x, y, depth );
+			gGL.vertex3f( x, y, 0.f );
+
+			F32 x_new = x * cosf(angle_delta) - y * sinf(angle_delta);
+			y = x * sinf(angle_delta) +  y * cosf(angle_delta);
+			x = x_new;
+		}
+	}
+	gGL.end();
+}
+
+void gl_ring( F32 radius, F32 width, const LLColor4& center_color, const LLColor4& side_color, S32 steps, BOOL render_center )
+{
+	gGL.pushUIMatrix();
+	{
+		gGL.translateUI(0.f, 0.f, -width / 2);
+		if( render_center )
+		{
+			gGL.color4fv(center_color.mV);
+			gGL.diffuseColor4fv(center_color.mV);
+			gl_deep_circle( radius, width, steps );
+		}
+		else
+		{
+			gGL.diffuseColor4fv(side_color.mV);
+			gl_washer_2d(radius, radius - width, steps, side_color, side_color);
+			gGL.translateUI(0.f, 0.f, width);
+			gl_washer_2d(radius - width, radius, steps, side_color, side_color);
+		}
+	}
+	gGL.popUIMatrix();
+}
+
+// Draw gray and white checkerboard with black border
+void gl_rect_2d_checkerboard(const LLRect& rect, GLfloat alpha)
+{
+	if (!LLGLSLShader::sNoFixedFunction)
+	{ 
+	// Initialize the first time this is called.
+	const S32 PIXELS = 32;
+	static GLubyte checkerboard[PIXELS * PIXELS];
+	static BOOL first = TRUE;
+	if( first )
+	{
+		for( S32 i = 0; i < PIXELS; i++ )
+		{
+			for( S32 j = 0; j < PIXELS; j++ )
+			{
+				checkerboard[i * PIXELS + j] = ((i & 1) ^ (j & 1)) * 0xFF;
+			}
+		}
+		first = FALSE;
+	}
+	
+	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
+
+	// ...white squares
+	gGL.color4f( 1.f, 1.f, 1.f, alpha );
+	gl_rect_2d(rect);
+
+	// ...gray squares
+	gGL.color4f( .7f, .7f, .7f, alpha );
+	gGL.flush();
+
+		glPolygonStipple( checkerboard );
+
+		LLGLEnable polygon_stipple(GL_POLYGON_STIPPLE);
+		gl_rect_2d(rect);
+	}
+	else
+	{ //polygon stipple is deprecated, use "Checker" texture
+		LLPointer<LLUIImage> img = LLRender2D::getUIImage("Checker");
+		gGL.getTexUnit(0)->bind(img->getImage());
+		gGL.getTexUnit(0)->setTextureAddressMode(LLTexUnit::TAM_WRAP);
+		gGL.getTexUnit(0)->setTextureFilteringOption(LLTexUnit::TFO_POINT);
+
+		LLColor4 color(1.f, 1.f, 1.f, alpha);
+		LLRectf uv_rect(0, 0, rect.getWidth()/32.f, rect.getHeight()/32.f);
+
+		gl_draw_scaled_image(rect.mLeft, rect.mBottom, rect.getWidth(), rect.getHeight(),
+			img->getImage(), color, uv_rect);
+	}
+	
+	gGL.flush();
+}
+
+
+// Draws the area between two concentric circles, like
+// a doughnut or washer.
+void gl_washer_2d(F32 outer_radius, F32 inner_radius, S32 steps, const LLColor4& inner_color, const LLColor4& outer_color)
+{
+	const F32 DELTA = F_TWO_PI / steps;
+	const F32 SIN_DELTA = sin( DELTA );
+	const F32 COS_DELTA = cos( DELTA );
+
+	F32 x1 = outer_radius;
+	F32 y1 = 0.f;
+	F32 x2 = inner_radius;
+	F32 y2 = 0.f;
+
+	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
+
+	gGL.begin( LLRender::TRIANGLE_STRIP  );
+	{
+		steps += 1; // An extra step to close the circle.
+		while( steps-- )
+		{
+			gGL.color4fv(outer_color.mV);
+			gGL.vertex2f( x1, y1 );
+			gGL.color4fv(inner_color.mV);
+			gGL.vertex2f( x2, y2 );
+
+			F32 x1_new = x1 * COS_DELTA - y1 * SIN_DELTA;
+			y1 = x1 * SIN_DELTA +  y1 * COS_DELTA;
+			x1 = x1_new;
+
+			F32 x2_new = x2 * COS_DELTA - y2 * SIN_DELTA;
+			y2 = x2 * SIN_DELTA +  y2 * COS_DELTA;
+			x2 = x2_new;
+		}
+	}
+	gGL.end();
+}
+
+// Draws the area between two concentric circles, like
+// a doughnut or washer.
+void gl_washer_segment_2d(F32 outer_radius, F32 inner_radius, F32 start_radians, F32 end_radians, S32 steps, const LLColor4& inner_color, const LLColor4& outer_color)
+{
+	const F32 DELTA = (end_radians - start_radians) / steps;
+	const F32 SIN_DELTA = sin( DELTA );
+	const F32 COS_DELTA = cos( DELTA );
+
+	F32 x1 = outer_radius * cos( start_radians );
+	F32 y1 = outer_radius * sin( start_radians );
+	F32 x2 = inner_radius * cos( start_radians );
+	F32 y2 = inner_radius * sin( start_radians );
+
+	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
+	gGL.begin( LLRender::TRIANGLE_STRIP  );
+	{
+		steps += 1; // An extra step to close the circle.
+		while( steps-- )
+		{
+			gGL.color4fv(outer_color.mV);
+			gGL.vertex2f( x1, y1 );
+			gGL.color4fv(inner_color.mV);
+			gGL.vertex2f( x2, y2 );
+
+			F32 x1_new = x1 * COS_DELTA - y1 * SIN_DELTA;
+			y1 = x1 * SIN_DELTA +  y1 * COS_DELTA;
+			x1 = x1_new;
+
+			F32 x2_new = x2 * COS_DELTA - y2 * SIN_DELTA;
+			y2 = x2 * SIN_DELTA +  y2 * COS_DELTA;
+			x2 = x2_new;
+		}
+	}
+	gGL.end();
+}
+
+void gl_rect_2d_simple_tex( S32 width, S32 height )
+{
+	gGL.begin( LLRender::QUADS );
+
+		gGL.texCoord2f(1.f, 1.f);
+		gGL.vertex2i(width, height);
+
+		gGL.texCoord2f(0.f, 1.f);
+		gGL.vertex2i(0, height);
+
+		gGL.texCoord2f(0.f, 0.f);
+		gGL.vertex2i(0, 0);
+
+		gGL.texCoord2f(1.f, 0.f);
+		gGL.vertex2i(width, 0);
+	
+	gGL.end();
+}
+
+void gl_rect_2d_simple( S32 width, S32 height )
+{
+	gGL.begin( LLRender::QUADS );
+		gGL.vertex2i(width, height);
+		gGL.vertex2i(0, height);
+		gGL.vertex2i(0, 0);
+		gGL.vertex2i(width, 0);
+	gGL.end();
+}
+
+void gl_segmented_rect_2d_tex(const S32 left, 
+							  const S32 top, 
+							  const S32 right, 
+							  const S32 bottom, 
+							  const S32 texture_width, 
+							  const S32 texture_height, 
+							  const S32 border_size, 
+							  const U32 edges)
+{
+	S32 width = llabs(right - left);
+	S32 height = llabs(top - bottom);
+
+	gGL.pushUIMatrix();
+
+	gGL.translateUI((F32)left, (F32)bottom, 0.f);
+	LLVector2 border_uv_scale((F32)border_size / (F32)texture_width, (F32)border_size / (F32)texture_height);
+
+	if (border_uv_scale.mV[VX] > 0.5f)
+	{
+		border_uv_scale *= 0.5f / border_uv_scale.mV[VX];
+	}
+	if (border_uv_scale.mV[VY] > 0.5f)
+	{
+		border_uv_scale *= 0.5f / border_uv_scale.mV[VY];
+	}
+
+	F32 border_scale = llmin((F32)border_size, (F32)width * 0.5f, (F32)height * 0.5f);
+	LLVector2 border_width_left = ((edges & (~(U32)ROUNDED_RECT_RIGHT)) != 0) ? LLVector2(border_scale, 0.f) : LLVector2::zero;
+	LLVector2 border_width_right = ((edges & (~(U32)ROUNDED_RECT_LEFT)) != 0) ? LLVector2(border_scale, 0.f) : LLVector2::zero;
+	LLVector2 border_height_bottom = ((edges & (~(U32)ROUNDED_RECT_TOP)) != 0) ? LLVector2(0.f, border_scale) : LLVector2::zero;
+	LLVector2 border_height_top = ((edges & (~(U32)ROUNDED_RECT_BOTTOM)) != 0) ? LLVector2(0.f, border_scale) : LLVector2::zero;
+	LLVector2 width_vec((F32)width, 0.f);
+	LLVector2 height_vec(0.f, (F32)height);
+
+	gGL.begin(LLRender::QUADS);
+	{
+		// draw bottom left
+		gGL.texCoord2f(0.f, 0.f);
+		gGL.vertex2f(0.f, 0.f);
+
+		gGL.texCoord2f(border_uv_scale.mV[VX], 0.f);
+		gGL.vertex2fv(border_width_left.mV);
+
+		gGL.texCoord2f(border_uv_scale.mV[VX], border_uv_scale.mV[VY]);
+		gGL.vertex2fv((border_width_left + border_height_bottom).mV);
+
+		gGL.texCoord2f(0.f, border_uv_scale.mV[VY]);
+		gGL.vertex2fv(border_height_bottom.mV);
+
+		// draw bottom middle
+		gGL.texCoord2f(border_uv_scale.mV[VX], 0.f);
+		gGL.vertex2fv(border_width_left.mV);
+
+		gGL.texCoord2f(1.f - border_uv_scale.mV[VX], 0.f);
+		gGL.vertex2fv((width_vec - border_width_right).mV);
+
+		gGL.texCoord2f(1.f - border_uv_scale.mV[VX], border_uv_scale.mV[VY]);
+		gGL.vertex2fv((width_vec - border_width_right + border_height_bottom).mV);
+
+		gGL.texCoord2f(border_uv_scale.mV[VX], border_uv_scale.mV[VY]);
+		gGL.vertex2fv((border_width_left + border_height_bottom).mV);
+
+		// draw bottom right
+		gGL.texCoord2f(1.f - border_uv_scale.mV[VX], 0.f);
+		gGL.vertex2fv((width_vec - border_width_right).mV);
+
+		gGL.texCoord2f(1.f, 0.f);
+		gGL.vertex2fv(width_vec.mV);
+
+		gGL.texCoord2f(1.f, border_uv_scale.mV[VY]);
+		gGL.vertex2fv((width_vec + border_height_bottom).mV);
+
+		gGL.texCoord2f(1.f - border_uv_scale.mV[VX], border_uv_scale.mV[VY]);
+		gGL.vertex2fv((width_vec - border_width_right + border_height_bottom).mV);
+
+		// draw left 
+		gGL.texCoord2f(0.f, border_uv_scale.mV[VY]);
+		gGL.vertex2fv(border_height_bottom.mV);
+
+		gGL.texCoord2f(border_uv_scale.mV[VX], border_uv_scale.mV[VY]);
+		gGL.vertex2fv((border_width_left + border_height_bottom).mV);
+
+		gGL.texCoord2f(border_uv_scale.mV[VX], 1.f - border_uv_scale.mV[VY]);
+		gGL.vertex2fv((border_width_left + height_vec - border_height_top).mV);
+
+		gGL.texCoord2f(0.f, 1.f - border_uv_scale.mV[VY]);
+		gGL.vertex2fv((height_vec - border_height_top).mV);
+
+		// draw middle
+		gGL.texCoord2f(border_uv_scale.mV[VX], border_uv_scale.mV[VY]);
+		gGL.vertex2fv((border_width_left + border_height_bottom).mV);
+
+		gGL.texCoord2f(1.f - border_uv_scale.mV[VX], border_uv_scale.mV[VY]);
+		gGL.vertex2fv((width_vec - border_width_right + border_height_bottom).mV);
+
+		gGL.texCoord2f(1.f - border_uv_scale.mV[VX], 1.f - border_uv_scale.mV[VY]);
+		gGL.vertex2fv((width_vec - border_width_right + height_vec - border_height_top).mV);
+
+		gGL.texCoord2f(border_uv_scale.mV[VX], 1.f - border_uv_scale.mV[VY]);
+		gGL.vertex2fv((border_width_left + height_vec - border_height_top).mV);
+
+		// draw right 
+		gGL.texCoord2f(1.f - border_uv_scale.mV[VX], border_uv_scale.mV[VY]);
+		gGL.vertex2fv((width_vec - border_width_right + border_height_bottom).mV);
+
+		gGL.texCoord2f(1.f, border_uv_scale.mV[VY]);
+		gGL.vertex2fv((width_vec + border_height_bottom).mV);
+
+		gGL.texCoord2f(1.f, 1.f - border_uv_scale.mV[VY]);
+		gGL.vertex2fv((width_vec + height_vec - border_height_top).mV);
+
+		gGL.texCoord2f(1.f - border_uv_scale.mV[VX], 1.f - border_uv_scale.mV[VY]);
+		gGL.vertex2fv((width_vec - border_width_right + height_vec - border_height_top).mV);
+
+		// draw top left
+		gGL.texCoord2f(0.f, 1.f - border_uv_scale.mV[VY]);
+		gGL.vertex2fv((height_vec - border_height_top).mV);
+
+		gGL.texCoord2f(border_uv_scale.mV[VX], 1.f - border_uv_scale.mV[VY]);
+		gGL.vertex2fv((border_width_left + height_vec - border_height_top).mV);
+
+		gGL.texCoord2f(border_uv_scale.mV[VX], 1.f);
+		gGL.vertex2fv((border_width_left + height_vec).mV);
+
+		gGL.texCoord2f(0.f, 1.f);
+		gGL.vertex2fv((height_vec).mV);
+
+		// draw top middle
+		gGL.texCoord2f(border_uv_scale.mV[VX], 1.f - border_uv_scale.mV[VY]);
+		gGL.vertex2fv((border_width_left + height_vec - border_height_top).mV);
+
+		gGL.texCoord2f(1.f - border_uv_scale.mV[VX], 1.f - border_uv_scale.mV[VY]);
+		gGL.vertex2fv((width_vec - border_width_right + height_vec - border_height_top).mV);
+
+		gGL.texCoord2f(1.f - border_uv_scale.mV[VX], 1.f);
+		gGL.vertex2fv((width_vec - border_width_right + height_vec).mV);
+
+		gGL.texCoord2f(border_uv_scale.mV[VX], 1.f);
+		gGL.vertex2fv((border_width_left + height_vec).mV);
+
+		// draw top right
+		gGL.texCoord2f(1.f - border_uv_scale.mV[VX], 1.f - border_uv_scale.mV[VY]);
+		gGL.vertex2fv((width_vec - border_width_right + height_vec - border_height_top).mV);
+
+		gGL.texCoord2f(1.f, 1.f - border_uv_scale.mV[VY]);
+		gGL.vertex2fv((width_vec + height_vec - border_height_top).mV);
+
+		gGL.texCoord2f(1.f, 1.f);
+		gGL.vertex2fv((width_vec + height_vec).mV);
+
+		gGL.texCoord2f(1.f - border_uv_scale.mV[VX], 1.f);
+		gGL.vertex2fv((width_vec - border_width_right + height_vec).mV);
+	}
+	gGL.end();
+
+	gGL.popUIMatrix();
+}
+
+//FIXME: rewrite to use scissor?
+void gl_segmented_rect_2d_fragment_tex(const S32 left, 
+									   const S32 top, 
+									   const S32 right, 
+									   const S32 bottom, 
+									   const S32 texture_width, 
+									   const S32 texture_height, 
+									   const S32 border_size, 
+									   const F32 start_fragment, 
+									   const F32 end_fragment, 
+									   const U32 edges)
+{
+	S32 width = llabs(right - left);
+	S32 height = llabs(top - bottom);
+
+	gGL.pushUIMatrix();
+
+	gGL.translateUI((F32)left, (F32)bottom, 0.f);
+	LLVector2 border_uv_scale((F32)border_size / (F32)texture_width, (F32)border_size / (F32)texture_height);
+
+	if (border_uv_scale.mV[VX] > 0.5f)
+	{
+		border_uv_scale *= 0.5f / border_uv_scale.mV[VX];
+	}
+	if (border_uv_scale.mV[VY] > 0.5f)
+	{
+		border_uv_scale *= 0.5f / border_uv_scale.mV[VY];
+	}
+
+	F32 border_scale = llmin((F32)border_size, (F32)width * 0.5f, (F32)height * 0.5f);
+	LLVector2 border_width_left = ((edges & (~(U32)ROUNDED_RECT_RIGHT)) != 0) ? LLVector2(border_scale, 0.f) : LLVector2::zero;
+	LLVector2 border_width_right = ((edges & (~(U32)ROUNDED_RECT_LEFT)) != 0) ? LLVector2(border_scale, 0.f) : LLVector2::zero;
+	LLVector2 border_height_bottom = ((edges & (~(U32)ROUNDED_RECT_TOP)) != 0) ? LLVector2(0.f, border_scale) : LLVector2::zero;
+	LLVector2 border_height_top = ((edges & (~(U32)ROUNDED_RECT_BOTTOM)) != 0) ? LLVector2(0.f, border_scale) : LLVector2::zero;
+	LLVector2 width_vec((F32)width, 0.f);
+	LLVector2 height_vec(0.f, (F32)height);
+
+	F32 middle_start = border_scale / (F32)width;
+	F32 middle_end = 1.f - middle_start;
+
+	F32 u_min;
+	F32 u_max;
+	LLVector2 x_min;
+	LLVector2 x_max;
+
+	gGL.begin(LLRender::QUADS);
+	{
+		if (start_fragment < middle_start)
+		{
+			u_min = (start_fragment / middle_start) * border_uv_scale.mV[VX];
+			u_max = llmin(end_fragment / middle_start, 1.f) * border_uv_scale.mV[VX];
+			x_min = (start_fragment / middle_start) * border_width_left;
+			x_max = llmin(end_fragment / middle_start, 1.f) * border_width_left;
+
+			// draw bottom left
+			gGL.texCoord2f(u_min, 0.f);
+			gGL.vertex2fv(x_min.mV);
+
+			gGL.texCoord2f(border_uv_scale.mV[VX], 0.f);
+			gGL.vertex2fv(x_max.mV);
+
+			gGL.texCoord2f(u_max, border_uv_scale.mV[VY]);
+			gGL.vertex2fv((x_max + border_height_bottom).mV);
+
+			gGL.texCoord2f(u_min, border_uv_scale.mV[VY]);
+			gGL.vertex2fv((x_min + border_height_bottom).mV);
+
+			// draw left 
+			gGL.texCoord2f(u_min, border_uv_scale.mV[VY]);
+			gGL.vertex2fv((x_min + border_height_bottom).mV);
+
+			gGL.texCoord2f(u_max, border_uv_scale.mV[VY]);
+			gGL.vertex2fv((x_max + border_height_bottom).mV);
+
+			gGL.texCoord2f(u_max, 1.f - border_uv_scale.mV[VY]);
+			gGL.vertex2fv((x_max + height_vec - border_height_top).mV);
+
+			gGL.texCoord2f(u_min, 1.f - border_uv_scale.mV[VY]);
+			gGL.vertex2fv((x_min + height_vec - border_height_top).mV);
+			
+			// draw top left
+			gGL.texCoord2f(u_min, 1.f - border_uv_scale.mV[VY]);
+			gGL.vertex2fv((x_min + height_vec - border_height_top).mV);
+
+			gGL.texCoord2f(u_max, 1.f - border_uv_scale.mV[VY]);
+			gGL.vertex2fv((x_max + height_vec - border_height_top).mV);
+
+			gGL.texCoord2f(u_max, 1.f);
+			gGL.vertex2fv((x_max + height_vec).mV);
+
+			gGL.texCoord2f(u_min, 1.f);
+			gGL.vertex2fv((x_min + height_vec).mV);
+		}
+
+		if (end_fragment > middle_start || start_fragment < middle_end)
+		{
+			x_min = border_width_left + ((llclamp(start_fragment, middle_start, middle_end) - middle_start)) * width_vec;
+			x_max = border_width_left + ((llclamp(end_fragment, middle_start, middle_end) - middle_start)) * width_vec;
+
+			// draw bottom middle
+			gGL.texCoord2f(border_uv_scale.mV[VX], 0.f);
+			gGL.vertex2fv(x_min.mV);
+
+			gGL.texCoord2f(1.f - border_uv_scale.mV[VX], 0.f);
+			gGL.vertex2fv((x_max).mV);
+
+			gGL.texCoord2f(1.f - border_uv_scale.mV[VX], border_uv_scale.mV[VY]);
+			gGL.vertex2fv((x_max + border_height_bottom).mV);
+
+			gGL.texCoord2f(border_uv_scale.mV[VX], border_uv_scale.mV[VY]);
+			gGL.vertex2fv((x_min + border_height_bottom).mV);
+
+			// draw middle
+			gGL.texCoord2f(border_uv_scale.mV[VX], border_uv_scale.mV[VY]);
+			gGL.vertex2fv((x_min + border_height_bottom).mV);
+
+			gGL.texCoord2f(1.f - border_uv_scale.mV[VX], border_uv_scale.mV[VY]);
+			gGL.vertex2fv((x_max + border_height_bottom).mV);
+
+			gGL.texCoord2f(1.f - border_uv_scale.mV[VX], 1.f - border_uv_scale.mV[VY]);
+			gGL.vertex2fv((x_max + height_vec - border_height_top).mV);
+
+			gGL.texCoord2f(border_uv_scale.mV[VX], 1.f - border_uv_scale.mV[VY]);
+			gGL.vertex2fv((x_min + height_vec - border_height_top).mV);
+
+			// draw top middle
+			gGL.texCoord2f(border_uv_scale.mV[VX], 1.f - border_uv_scale.mV[VY]);
+			gGL.vertex2fv((x_min + height_vec - border_height_top).mV);
+
+			gGL.texCoord2f(1.f - border_uv_scale.mV[VX], 1.f - border_uv_scale.mV[VY]);
+			gGL.vertex2fv((x_max + height_vec - border_height_top).mV);
+
+			gGL.texCoord2f(1.f - border_uv_scale.mV[VX], 1.f);
+			gGL.vertex2fv((x_max + height_vec).mV);
+
+			gGL.texCoord2f(border_uv_scale.mV[VX], 1.f);
+			gGL.vertex2fv((x_min + height_vec).mV);
+		}
+
+		if (end_fragment > middle_end)
+		{
+			u_min = (1.f - llmax(0.f, ((start_fragment - middle_end) / middle_start))) * border_uv_scale.mV[VX];
+			u_max = (1.f - ((end_fragment - middle_end) / middle_start)) * border_uv_scale.mV[VX];
+			x_min = width_vec - ((1.f - llmax(0.f, ((start_fragment - middle_end) / middle_start))) * border_width_right);
+			x_max = width_vec - ((1.f - ((end_fragment - middle_end) / middle_start)) * border_width_right);
+
+			// draw bottom right
+			gGL.texCoord2f(u_min, 0.f);
+			gGL.vertex2fv((x_min).mV);
+
+			gGL.texCoord2f(u_max, 0.f);
+			gGL.vertex2fv(x_max.mV);
+
+			gGL.texCoord2f(u_max, border_uv_scale.mV[VY]);
+			gGL.vertex2fv((x_max + border_height_bottom).mV);
+
+			gGL.texCoord2f(u_min, border_uv_scale.mV[VY]);
+			gGL.vertex2fv((x_min + border_height_bottom).mV);
+
+			// draw right 
+			gGL.texCoord2f(u_min, border_uv_scale.mV[VY]);
+			gGL.vertex2fv((x_min + border_height_bottom).mV);
+
+			gGL.texCoord2f(u_max, border_uv_scale.mV[VY]);
+			gGL.vertex2fv((x_max + border_height_bottom).mV);
+
+			gGL.texCoord2f(u_max, 1.f - border_uv_scale.mV[VY]);
+			gGL.vertex2fv((x_max + height_vec - border_height_top).mV);
+
+			gGL.texCoord2f(u_min, 1.f - border_uv_scale.mV[VY]);
+			gGL.vertex2fv((x_min + height_vec - border_height_top).mV);
+
+			// draw top right
+			gGL.texCoord2f(u_min, 1.f - border_uv_scale.mV[VY]);
+			gGL.vertex2fv((x_min + height_vec - border_height_top).mV);
+
+			gGL.texCoord2f(u_max, 1.f - border_uv_scale.mV[VY]);
+			gGL.vertex2fv((x_max + height_vec - border_height_top).mV);
+
+			gGL.texCoord2f(u_max, 1.f);
+			gGL.vertex2fv((x_max + height_vec).mV);
+
+			gGL.texCoord2f(u_min, 1.f);
+			gGL.vertex2fv((x_min + height_vec).mV);
+		}
+	}
+	gGL.end();
+
+	gGL.popUIMatrix();
+}
+
+void gl_segmented_rect_3d_tex(const LLRectf& clip_rect, const LLRectf& center_uv_rect, const LLRectf& center_draw_rect, 
+							 const LLVector3& width_vec, const LLVector3& height_vec)
+{
+	gGL.begin(LLRender::QUADS);
+	{
+		// draw bottom left
+		gGL.texCoord2f(clip_rect.mLeft, clip_rect.mBottom);
+		gGL.vertex3f(0.f, 0.f, 0.f);
+
+		gGL.texCoord2f(center_uv_rect.mLeft, clip_rect.mBottom);
+		gGL.vertex3fv((center_draw_rect.mLeft * width_vec).mV);
+
+		gGL.texCoord2f(center_uv_rect.mLeft, center_uv_rect.mBottom);
+		gGL.vertex3fv((center_draw_rect.mLeft * width_vec + center_draw_rect.mBottom * height_vec).mV);
+
+		gGL.texCoord2f(clip_rect.mLeft, center_uv_rect.mBottom);
+		gGL.vertex3fv((center_draw_rect.mBottom * height_vec).mV);
+
+		// draw bottom middle
+		gGL.texCoord2f(center_uv_rect.mLeft, clip_rect.mBottom);
+		gGL.vertex3fv((center_draw_rect.mLeft * width_vec).mV);
+
+		gGL.texCoord2f(center_uv_rect.mRight, clip_rect.mBottom);
+		gGL.vertex3fv((center_draw_rect.mRight * width_vec).mV);
+
+		gGL.texCoord2f(center_uv_rect.mRight, center_uv_rect.mBottom);
+		gGL.vertex3fv((center_draw_rect.mRight * width_vec + center_draw_rect.mBottom * height_vec).mV);
+
+		gGL.texCoord2f(center_uv_rect.mLeft, center_uv_rect.mBottom);
+		gGL.vertex3fv((center_draw_rect.mLeft * width_vec + center_draw_rect.mBottom * height_vec).mV);
+
+		// draw bottom right
+		gGL.texCoord2f(center_uv_rect.mRight, clip_rect.mBottom);
+		gGL.vertex3fv((center_draw_rect.mRight * width_vec).mV);
+
+		gGL.texCoord2f(clip_rect.mRight, clip_rect.mBottom);
+		gGL.vertex3fv(width_vec.mV);
+
+		gGL.texCoord2f(clip_rect.mRight, center_uv_rect.mBottom);
+		gGL.vertex3fv((width_vec + center_draw_rect.mBottom * height_vec).mV);
+
+		gGL.texCoord2f(center_uv_rect.mRight, center_uv_rect.mBottom);
+		gGL.vertex3fv((center_draw_rect.mRight * width_vec + center_draw_rect.mBottom * height_vec).mV);
+
+		// draw left 
+		gGL.texCoord2f(clip_rect.mLeft, center_uv_rect.mBottom);
+		gGL.vertex3fv((center_draw_rect.mBottom * height_vec).mV);
+
+		gGL.texCoord2f(center_uv_rect.mLeft, center_uv_rect.mBottom);
+		gGL.vertex3fv((center_draw_rect.mLeft * width_vec + center_draw_rect.mBottom * height_vec).mV);
+
+		gGL.texCoord2f(center_uv_rect.mLeft, center_uv_rect.mTop);
+		gGL.vertex3fv((center_draw_rect.mLeft * width_vec + center_draw_rect.mTop * height_vec).mV);
+
+		gGL.texCoord2f(clip_rect.mLeft, center_uv_rect.mTop);
+		gGL.vertex3fv((center_draw_rect.mTop * height_vec).mV);
+
+		// draw middle
+		gGL.texCoord2f(center_uv_rect.mLeft, center_uv_rect.mBottom);
+		gGL.vertex3fv((center_draw_rect.mLeft * width_vec + center_draw_rect.mBottom * height_vec).mV);
+
+		gGL.texCoord2f(center_uv_rect.mRight, center_uv_rect.mBottom);
+		gGL.vertex3fv((center_draw_rect.mRight * width_vec + center_draw_rect.mBottom * height_vec).mV);
+
+		gGL.texCoord2f(center_uv_rect.mRight, center_uv_rect.mTop);
+		gGL.vertex3fv((center_draw_rect.mRight * width_vec + center_draw_rect.mTop * height_vec).mV);
+
+		gGL.texCoord2f(center_uv_rect.mLeft, center_uv_rect.mTop);
+		gGL.vertex3fv((center_draw_rect.mLeft * width_vec + center_draw_rect.mTop * height_vec).mV);
+
+		// draw right 
+		gGL.texCoord2f(center_uv_rect.mRight, center_uv_rect.mBottom);
+		gGL.vertex3fv((center_draw_rect.mRight * width_vec + center_draw_rect.mBottom * height_vec).mV);
+
+		gGL.texCoord2f(clip_rect.mRight, center_uv_rect.mBottom);
+		gGL.vertex3fv((width_vec + center_draw_rect.mBottom * height_vec).mV);
+
+		gGL.texCoord2f(clip_rect.mRight, center_uv_rect.mTop);
+		gGL.vertex3fv((width_vec + center_draw_rect.mTop * height_vec).mV);
+
+		gGL.texCoord2f(center_uv_rect.mRight, center_uv_rect.mTop);
+		gGL.vertex3fv((center_draw_rect.mRight * width_vec + center_draw_rect.mTop * height_vec).mV);
+
+		// draw top left
+		gGL.texCoord2f(clip_rect.mLeft, center_uv_rect.mTop);
+		gGL.vertex3fv((center_draw_rect.mTop * height_vec).mV);
+
+		gGL.texCoord2f(center_uv_rect.mLeft, center_uv_rect.mTop);
+		gGL.vertex3fv((center_draw_rect.mLeft * width_vec + center_draw_rect.mTop * height_vec).mV);
+
+		gGL.texCoord2f(center_uv_rect.mLeft, clip_rect.mTop);
+		gGL.vertex3fv((center_draw_rect.mLeft * width_vec + height_vec).mV);
+
+		gGL.texCoord2f(clip_rect.mLeft, clip_rect.mTop);
+		gGL.vertex3fv((height_vec).mV);
+
+		// draw top middle
+		gGL.texCoord2f(center_uv_rect.mLeft, center_uv_rect.mTop);
+		gGL.vertex3fv((center_draw_rect.mLeft * width_vec + center_draw_rect.mTop * height_vec).mV);
+
+		gGL.texCoord2f(center_uv_rect.mRight, center_uv_rect.mTop);
+		gGL.vertex3fv((center_draw_rect.mRight * width_vec + center_draw_rect.mTop * height_vec).mV);
+
+		gGL.texCoord2f(center_uv_rect.mRight, clip_rect.mTop);
+		gGL.vertex3fv((center_draw_rect.mRight * width_vec + height_vec).mV);
+
+		gGL.texCoord2f(center_uv_rect.mLeft, clip_rect.mTop);
+		gGL.vertex3fv((center_draw_rect.mLeft * width_vec + height_vec).mV);
+
+		// draw top right
+		gGL.texCoord2f(center_uv_rect.mRight, center_uv_rect.mTop);
+		gGL.vertex3fv((center_draw_rect.mRight * width_vec + center_draw_rect.mTop * height_vec).mV);
+
+		gGL.texCoord2f(clip_rect.mRight, center_uv_rect.mTop);
+		gGL.vertex3fv((width_vec + center_draw_rect.mTop * height_vec).mV);
+
+		gGL.texCoord2f(clip_rect.mRight, clip_rect.mTop);
+		gGL.vertex3fv((width_vec + height_vec).mV);
+
+		gGL.texCoord2f(center_uv_rect.mRight, clip_rect.mTop);
+		gGL.vertex3fv((center_draw_rect.mRight * width_vec + height_vec).mV);
+	}
+	gGL.end();
+
+}
+
+// static
+void LLRender2D::initClass(LLImageProviderInterface* image_provider,
+						   const LLVector2* scale_factor)
+{
+	sGLScaleFactor = (scale_factor == NULL) ? LLVector2(1.f, 1.f) : *scale_factor;
+	sImageProvider = image_provider;
+}
+
+// static
+void LLRender2D::cleanupClass()
+{
+	if(sImageProvider)
+	{
+		sImageProvider->cleanUp();
+	}
+}
+
+
+//static
+void LLRender2D::translate(F32 x, F32 y, F32 z)
+{
+	gGL.translateUI(x,y,z);
+	LLFontGL::sCurOrigin.mX += (S32) x;
+	LLFontGL::sCurOrigin.mY += (S32) y;
+	LLFontGL::sCurDepth += z;
+}
+
+//static
+void LLRender2D::pushMatrix()
+{
+	gGL.pushUIMatrix();
+	LLFontGL::sOriginStack.push_back(std::make_pair(LLFontGL::sCurOrigin, LLFontGL::sCurDepth));
+}
+
+//static
+void LLRender2D::popMatrix()
+{
+	gGL.popUIMatrix();
+	LLFontGL::sCurOrigin = LLFontGL::sOriginStack.back().first;
+	LLFontGL::sCurDepth = LLFontGL::sOriginStack.back().second;
+	LLFontGL::sOriginStack.pop_back();
+}
+
+//static 
+void LLRender2D::loadIdentity()
+{
+	gGL.loadUIIdentity(); 
+	LLFontGL::sCurOrigin.mX = 0;
+	LLFontGL::sCurOrigin.mY = 0;
+	LLFontGL::sCurDepth = 0.f;
+}
+
+//static
+void LLRender2D::setScaleFactor(const LLVector2 &scale_factor)
+{
+	sGLScaleFactor = scale_factor;
+}
+
+//static
+void LLRender2D::setLineWidth(F32 width)
+{
+	gGL.flush();
+	glLineWidth(width * lerp(sGLScaleFactor.mV[VX], sGLScaleFactor.mV[VY], 0.5f));
+}
+
+//static
+LLPointer<LLUIImage> LLRender2D::getUIImageByID(const LLUUID& image_id, S32 priority)
+{
+	if (sImageProvider)
+	{
+		return sImageProvider->getUIImageByID(image_id, priority);
+	}
+	else
+	{
+		return NULL;
+	}
+}
+
+//static 
+LLPointer<LLUIImage> LLRender2D::getUIImage(const std::string& name, S32 priority)
+{
+	if (!name.empty() && sImageProvider)
+		return sImageProvider->getUIImage(name, priority);
+	else
+		return NULL;
+}
+
diff --git a/indra/llrender/llrender2dutils.h b/indra/llrender/llrender2dutils.h
new file mode 100644
index 00000000000..4884422c580
--- /dev/null
+++ b/indra/llrender/llrender2dutils.h
@@ -0,0 +1,163 @@
+/** 
+ * @file llrender2dutils.h
+ * @brief GL function declarations for immediate-mode gl drawing.
+ *
+ * $LicenseInfo:firstyear=2012&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+// All immediate-mode gl drawing should happen here.
+
+
+#ifndef LL_RENDER2DUTILS_H
+#define LL_RENDER2DUTILS_H
+
+#include "llpointer.h"		// LLPointer<>
+#include "llrect.h"
+#include "llglslshader.h"
+
+class LLColor4; 
+class LLVector3;
+class LLVector2;
+class LLUIImage;
+class LLUUID;
+
+extern const LLColor4 UI_VERTEX_COLOR;
+
+BOOL ui_point_in_rect(S32 x, S32 y, S32 left, S32 top, S32 right, S32 bottom);
+void gl_state_for_2d(S32 width, S32 height);
+
+void gl_line_2d(S32 x1, S32 y1, S32 x2, S32 y2);
+void gl_line_2d(S32 x1, S32 y1, S32 x2, S32 y2, const LLColor4 &color );
+void gl_triangle_2d(S32 x1, S32 y1, S32 x2, S32 y2, S32 x3, S32 y3, const LLColor4& color, BOOL filled);
+void gl_rect_2d_simple( S32 width, S32 height );
+
+void gl_draw_x(const LLRect& rect, const LLColor4& color);
+
+void gl_rect_2d(S32 left, S32 top, S32 right, S32 bottom, BOOL filled = TRUE );
+void gl_rect_2d(S32 left, S32 top, S32 right, S32 bottom, const LLColor4 &color, BOOL filled = TRUE );
+void gl_rect_2d_offset_local( S32 left, S32 top, S32 right, S32 bottom, const LLColor4 &color, S32 pixel_offset = 0, BOOL filled = TRUE );
+void gl_rect_2d_offset_local( S32 left, S32 top, S32 right, S32 bottom, S32 pixel_offset = 0, BOOL filled = TRUE );
+void gl_rect_2d(const LLRect& rect, BOOL filled = TRUE );
+void gl_rect_2d(const LLRect& rect, const LLColor4& color, BOOL filled = TRUE );
+void gl_rect_2d_checkerboard(const LLRect& rect, GLfloat alpha = 1.0f);
+
+void gl_drop_shadow(S32 left, S32 top, S32 right, S32 bottom, const LLColor4 &start_color, S32 lines);
+
+void gl_circle_2d(F32 x, F32 y, F32 radius, S32 steps, BOOL filled);
+void gl_arc_2d(F32 center_x, F32 center_y, F32 radius, S32 steps, BOOL filled, F32 start_angle, F32 end_angle);
+void gl_deep_circle( F32 radius, F32 depth );
+void gl_ring( F32 radius, F32 width, const LLColor4& center_color, const LLColor4& side_color, S32 steps, BOOL render_center );
+void gl_corners_2d(S32 left, S32 top, S32 right, S32 bottom, S32 length, F32 max_frac);
+void gl_washer_2d(F32 outer_radius, F32 inner_radius, S32 steps, const LLColor4& inner_color, const LLColor4& outer_color);
+void gl_washer_segment_2d(F32 outer_radius, F32 inner_radius, F32 start_radians, F32 end_radians, S32 steps, const LLColor4& inner_color, const LLColor4& outer_color);
+
+void gl_draw_image(S32 x, S32 y, LLTexture* image, const LLColor4& color = UI_VERTEX_COLOR, const LLRectf& uv_rect = LLRectf(0.f, 1.f, 1.f, 0.f));
+void gl_draw_scaled_image(S32 x, S32 y, S32 width, S32 height, LLTexture* image, const LLColor4& color = UI_VERTEX_COLOR, const LLRectf& uv_rect = LLRectf(0.f, 1.f, 1.f, 0.f));
+void gl_draw_rotated_image(S32 x, S32 y, F32 degrees, LLTexture* image, const LLColor4& color = UI_VERTEX_COLOR, const LLRectf& uv_rect = LLRectf(0.f, 1.f, 1.f, 0.f));
+void gl_draw_scaled_rotated_image(S32 x, S32 y, S32 width, S32 height, F32 degrees,LLTexture* image, const LLColor4& color = UI_VERTEX_COLOR, const LLRectf& uv_rect = LLRectf(0.f, 1.f, 1.f, 0.f));
+void gl_draw_scaled_image_with_border(S32 x, S32 y, S32 border_width, S32 border_height, S32 width, S32 height, LLTexture* image, const LLColor4 &color, BOOL solid_color = FALSE, const LLRectf& uv_rect = LLRectf(0.f, 1.f, 1.f, 0.f));
+void gl_draw_scaled_image_with_border(S32 x, S32 y, S32 width, S32 height, LLTexture* image, const LLColor4 &color, BOOL solid_color = FALSE, const LLRectf& uv_rect = LLRectf(0.f, 1.f, 1.f, 0.f), const LLRectf& scale_rect = LLRectf(0.f, 1.f, 1.f, 0.f));
+
+void gl_stippled_line_3d( const LLVector3& start, const LLVector3& end, const LLColor4& color, F32 phase = 0.f ); 
+
+void gl_rect_2d_simple_tex( S32 width, S32 height );
+
+// segmented rectangles
+
+/*
+   TL |______TOP_________| TR 
+     /|                  |\  
+   _/_|__________________|_\_
+   L| |    MIDDLE        | |R
+   _|_|__________________|_|_
+    \ |    BOTTOM        | /  
+   BL\|__________________|/ BR
+      |                  |    
+*/
+
+typedef enum e_rounded_edge
+{
+	ROUNDED_RECT_LEFT	= 0x1, 
+	ROUNDED_RECT_TOP	= 0x2, 
+	ROUNDED_RECT_RIGHT	= 0x4, 
+	ROUNDED_RECT_BOTTOM	= 0x8,
+	ROUNDED_RECT_ALL	= 0xf
+}ERoundedEdge;
+
+
+void gl_segmented_rect_2d_tex(const S32 left, const S32 top, const S32 right, const S32 bottom, const S32 texture_width, const S32 texture_height, const S32 border_size, const U32 edges = ROUNDED_RECT_ALL);
+void gl_segmented_rect_2d_fragment_tex(const S32 left, const S32 top, const S32 right, const S32 bottom, const S32 texture_width, const S32 texture_height, const S32 border_size, const F32 start_fragment, const F32 end_fragment, const U32 edges = ROUNDED_RECT_ALL);
+void gl_segmented_rect_3d_tex(const LLRectf& clip_rect, const LLRectf& center_uv_rect, const LLRectf& center_draw_rect, const LLVector3& width_vec, const LLVector3& height_vec);
+
+inline void gl_rect_2d( const LLRect& rect, BOOL filled )
+{
+	gl_rect_2d( rect.mLeft, rect.mTop, rect.mRight, rect.mBottom, filled );
+}
+
+inline void gl_rect_2d_offset_local( const LLRect& rect, S32 pixel_offset, BOOL filled)
+{
+	gl_rect_2d_offset_local( rect.mLeft, rect.mTop, rect.mRight, rect.mBottom, pixel_offset, filled );
+}
+
+class LLImageProviderInterface;
+
+class LLRender2D
+{
+	LOG_CLASS(LLRender2D);
+public:
+	static void initClass(LLImageProviderInterface* image_provider,
+						  const LLVector2* scale_factor);
+	static void cleanupClass();
+
+	static void pushMatrix();
+	static void popMatrix();
+	static void loadIdentity();
+	static void translate(F32 x, F32 y, F32 z = 0.0f);
+
+	static void setLineWidth(F32 width);
+	static void setScaleFactor(const LLVector2& scale_factor);
+
+	static LLPointer<LLUIImage> getUIImageByID(const LLUUID& image_id, S32 priority = 0);
+	static LLPointer<LLUIImage> getUIImage(const std::string& name, S32 priority = 0);
+
+	static LLVector2		sGLScaleFactor;
+private:
+	static LLImageProviderInterface* sImageProvider;
+};
+
+class LLImageProviderInterface
+{
+protected:
+	LLImageProviderInterface() {};
+	virtual ~LLImageProviderInterface() {};
+public:
+	virtual LLPointer<LLUIImage> getUIImage(const std::string& name, S32 priority) = 0;
+	virtual LLPointer<LLUIImage> getUIImageByID(const LLUUID& id, S32 priority) = 0;
+	virtual void cleanUp() = 0;
+};
+
+
+extern LLGLSLShader gSolidColorProgram;
+extern LLGLSLShader gUIProgram;
+
+#endif // LL_RENDER2DUTILS_H
+
diff --git a/indra/llui/lluiimage.cpp b/indra/llrender/lluiimage.cpp
similarity index 97%
rename from indra/llui/lluiimage.cpp
rename to indra/llrender/lluiimage.cpp
index 9ed98f941f6..b954b66350c 100644
--- a/indra/llui/lluiimage.cpp
+++ b/indra/llrender/lluiimage.cpp
@@ -31,7 +31,7 @@
 
 // Project includes
 #include "lluiimage.h"
-#include "llui.h"
+#include "llrender2dutils.h"
 
 LLUIImage::LLUIImage(const std::string& name, LLPointer<LLTexture> image)
 :	mName(name),
@@ -130,10 +130,10 @@ void LLUIImage::draw3D(const LLVector3& origin_agent, const LLVector3& x_axis, c
 		 }
 	}
 
-	LLUI::pushMatrix();
+	LLRender2D::pushMatrix();
 	{ 
 		LLVector3 rect_origin = origin_agent + (rect.mLeft * x_axis) + (rect.mBottom * y_axis); 
-		LLUI::translate(rect_origin.mV[VX],
+		LLRender2D::translate(rect_origin.mV[VX],
 						rect_origin.mV[VY], 
 						rect_origin.mV[VZ]);
 		gGL.getTexUnit(0)->bind(getImage());
@@ -152,7 +152,7 @@ void LLUIImage::draw3D(const LLVector3& origin_agent, const LLVector3& x_axis, c
 								rect.getWidth() * x_axis, 
 								rect.getHeight() * y_axis);
 		
-	} LLUI::popMatrix();
+	} LLRender2D::popMatrix();
 }
 
 
@@ -209,7 +209,7 @@ namespace LLInitParam
 			return;
 		}
 
-		LLUIImage* imagep =  LLUI::getUIImage(name());
+		LLUIImage* imagep =  LLRender2D::getUIImage(name());
 		if (imagep)
 		{
 			updateValue(imagep);
diff --git a/indra/llui/lluiimage.h b/indra/llrender/lluiimage.h
similarity index 100%
rename from indra/llui/lluiimage.h
rename to indra/llrender/lluiimage.h
diff --git a/indra/llui/CMakeLists.txt b/indra/llui/CMakeLists.txt
index 01c42e07a2d..34a08603fab 100644
--- a/indra/llui/CMakeLists.txt
+++ b/indra/llui/CMakeLists.txt
@@ -117,7 +117,6 @@ set(llui_SOURCE_FILES
     lluicolortable.cpp
     lluictrl.cpp
     lluictrlfactory.cpp
-	lluiimage.cpp
     lluistring.cpp
     llundo.cpp
     llurlaction.cpp
@@ -231,7 +230,6 @@ set(llui_HEADER_FILES
     lluifwd.h
     llui.h
     lluicolor.h
-	lluiimage.h
     lluistring.h
     llundo.h
     llurlaction.h
diff --git a/indra/llui/llcombobox.cpp b/indra/llui/llcombobox.cpp
index 41e5d74042f..d4e14d94190 100644
--- a/indra/llui/llcombobox.cpp
+++ b/indra/llui/llcombobox.cpp
@@ -551,7 +551,7 @@ void LLComboBox::showList()
 	LLCoordWindow window_size;
 	getWindow()->getSize(&window_size);
 	//HACK: shouldn't have to know about scale here
-	mList->fitContents( 192, llfloor((F32)window_size.mY / LLUI::sGLScaleFactor.mV[VY]) - 50 );
+	mList->fitContents( 192, llfloor((F32)window_size.mY / LLUI::getScaleFactor().mV[VY]) - 50 );
 
 	// Make sure that we can see the whole list
 	LLRect root_view_local;
diff --git a/indra/llui/lllineeditor.cpp b/indra/llui/lllineeditor.cpp
index 2e64be89fae..f8b84e39b58 100644
--- a/indra/llui/lllineeditor.cpp
+++ b/indra/llui/lllineeditor.cpp
@@ -2015,8 +2015,8 @@ void LLLineEditor::draw()
 				LLRect screen_pos = calcScreenRect();
 				LLCoordGL ime_pos( screen_pos.mLeft + pixels_after_scroll, screen_pos.mTop - lineeditor_v_pad );
 
-				ime_pos.mX = (S32) (ime_pos.mX * LLUI::sGLScaleFactor.mV[VX]);
-				ime_pos.mY = (S32) (ime_pos.mY * LLUI::sGLScaleFactor.mV[VY]);
+				ime_pos.mX = (S32) (ime_pos.mX * LLUI::getScaleFactor().mV[VX]);
+				ime_pos.mY = (S32) (ime_pos.mY * LLUI::getScaleFactor().mV[VY]);
 				getWindow()->setLanguageTextInput( ime_pos );
 			}
 		}
@@ -2563,7 +2563,7 @@ void LLLineEditor::markAsPreedit(S32 position, S32 length)
 
 S32 LLLineEditor::getPreeditFontSize() const
 {
-	return llround(mGLFont->getLineHeight() * LLUI::sGLScaleFactor.mV[VY]);
+	return llround(mGLFont->getLineHeight() * LLUI::getScaleFactor().mV[VY]);
 }
 
 void LLLineEditor::setReplaceNewlinesWithSpaces(BOOL replace)
diff --git a/indra/llui/lllocalcliprect.cpp b/indra/llui/lllocalcliprect.cpp
index 31ceb0766a5..0620e0f52d9 100644
--- a/indra/llui/lllocalcliprect.cpp
+++ b/indra/llui/lllocalcliprect.cpp
@@ -88,10 +88,10 @@ void LLScreenClipRect::updateScissorRegion()
 	LLRect rect = sClipRectStack.top();
 	stop_glerror();
 	S32 x,y,w,h;
-	x = llfloor(rect.mLeft * LLUI::sGLScaleFactor.mV[VX]);
-	y = llfloor(rect.mBottom * LLUI::sGLScaleFactor.mV[VY]);
-	w = llmax(0, llceil(rect.getWidth() * LLUI::sGLScaleFactor.mV[VX])) + 1;
-	h = llmax(0, llceil(rect.getHeight() * LLUI::sGLScaleFactor.mV[VY])) + 1;
+	x = llfloor(rect.mLeft * LLUI::getScaleFactor().mV[VX]);
+	y = llfloor(rect.mBottom * LLUI::getScaleFactor().mV[VY]);
+	w = llmax(0, llceil(rect.getWidth() * LLUI::getScaleFactor().mV[VX])) + 1;
+	h = llmax(0, llceil(rect.getHeight() * LLUI::getScaleFactor().mV[VY])) + 1;
 	glScissor( x,y,w,h );
 	stop_glerror();
 }
diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp
index 7cee9f5b462..e22b806a746 100644
--- a/indra/llui/lltextbase.cpp
+++ b/indra/llui/lltextbase.cpp
@@ -521,8 +521,8 @@ void LLTextBase::drawCursor()
 			LLRect screen_pos = calcScreenRect();
 			LLCoordGL ime_pos( screen_pos.mLeft + llfloor(cursor_rect.mLeft), screen_pos.mBottom + llfloor(cursor_rect.mTop) );
 
-			ime_pos.mX = (S32) (ime_pos.mX * LLUI::sGLScaleFactor.mV[VX]);
-			ime_pos.mY = (S32) (ime_pos.mY * LLUI::sGLScaleFactor.mV[VY]);
+			ime_pos.mX = (S32) (ime_pos.mX * LLUI::getScaleFactor().mV[VX]);
+			ime_pos.mY = (S32) (ime_pos.mY * LLUI::getScaleFactor().mV[VY]);
 			getWindow()->setLanguageTextInput( ime_pos );
 		}
 	}
diff --git a/indra/llui/lltexteditor.cpp b/indra/llui/lltexteditor.cpp
index d5e08fa29b6..3dc1b99edb7 100644
--- a/indra/llui/lltexteditor.cpp
+++ b/indra/llui/lltexteditor.cpp
@@ -2911,7 +2911,7 @@ void LLTextEditor::markAsPreedit(S32 position, S32 length)
 
 S32 LLTextEditor::getPreeditFontSize() const
 {
-	return llround((F32)mFont->getLineHeight() * LLUI::sGLScaleFactor.mV[VY]);
+	return llround((F32)mFont->getLineHeight() * LLUI::getScaleFactor().mV[VY]);
 }
 
 BOOL LLTextEditor::isDirty() const
diff --git a/indra/llui/llui.cpp b/indra/llui/llui.cpp
index 2a774d54a3a..0ddb1497383 100644
--- a/indra/llui/llui.cpp
+++ b/indra/llui/llui.cpp
@@ -39,6 +39,7 @@
 #include "llrect.h"
 #include "lldir.h"
 #include "llgl.h"
+#include "llsd.h"
 
 // Project includes
 #include "llcommandmanager.h"
@@ -69,16 +70,13 @@
 //
 // Globals
 //
-const LLColor4 UI_VERTEX_COLOR(1.f, 1.f, 1.f, 1.f);
 
 // Language for UI construction
 std::map<std::string, std::string> gTranslation;
 std::list<std::string> gUntranslated;
 /*static*/ LLUI::settings_map_t LLUI::sSettingGroups;
-/*static*/ LLImageProviderInterface* LLUI::sImageProvider = NULL;
 /*static*/ LLUIAudioCallback LLUI::sAudioCallback = NULL;
 /*static*/ LLUIAudioCallback LLUI::sDeferredAudioCallback = NULL;
-/*static*/ LLVector2		LLUI::sGLScaleFactor(1.f, 1.f);
 /*static*/ LLWindow*		LLUI::sWindow = NULL;
 /*static*/ LLView*			LLUI::sRootView = NULL;
 /*static*/ BOOL                         LLUI::sDirty = FALSE;
@@ -158,1474 +156,6 @@ void make_ui_sound_deferred(const char* namep)
 	}
 }
 
-BOOL ui_point_in_rect(S32 x, S32 y, S32 left, S32 top, S32 right, S32 bottom)
-{
-	if (x < left || right < x) return FALSE;
-	if (y < bottom || top < y) return FALSE;
-	return TRUE;
-}
-
-
-// Puts GL into 2D drawing mode by turning off lighting, setting to an
-// orthographic projection, etc.
-void gl_state_for_2d(S32 width, S32 height)
-{
-	stop_glerror();
-	F32 window_width = (F32) width;//gViewerWindow->getWindowWidth();
-	F32 window_height = (F32) height;//gViewerWindow->getWindowHeight();
-
-	gGL.matrixMode(LLRender::MM_PROJECTION);
-	gGL.loadIdentity();
-	gGL.ortho(0.0f, llmax(window_width, 1.f), 0.0f, llmax(window_height,1.f), -1.0f, 1.0f);
-	gGL.matrixMode(LLRender::MM_MODELVIEW);
-	gGL.loadIdentity();
-	stop_glerror();
-}
-
-
-void gl_draw_x(const LLRect& rect, const LLColor4& color)
-{
-	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
-
-	gGL.color4fv( color.mV );
-
-	gGL.begin( LLRender::LINES );
-		gGL.vertex2i( rect.mLeft,		rect.mTop );
-		gGL.vertex2i( rect.mRight,	rect.mBottom );
-		gGL.vertex2i( rect.mLeft,		rect.mBottom );
-		gGL.vertex2i( rect.mRight,	rect.mTop );
-	gGL.end();
-}
-
-
-void gl_rect_2d_offset_local( S32 left, S32 top, S32 right, S32 bottom, const LLColor4 &color, S32 pixel_offset, BOOL filled)
-{
-	gGL.color4fv(color.mV);
-	gl_rect_2d_offset_local(left, top, right, bottom, pixel_offset, filled);
-}
-
-void gl_rect_2d_offset_local( S32 left, S32 top, S32 right, S32 bottom, S32 pixel_offset, BOOL filled)
-{
-	gGL.pushUIMatrix();
-	left += LLFontGL::sCurOrigin.mX;
-	right += LLFontGL::sCurOrigin.mX;
-	bottom += LLFontGL::sCurOrigin.mY;
-	top += LLFontGL::sCurOrigin.mY;
-
-	gGL.loadUIIdentity();
-	gl_rect_2d(llfloor((F32)left * LLUI::sGLScaleFactor.mV[VX]) - pixel_offset,
-				llfloor((F32)top * LLUI::sGLScaleFactor.mV[VY]) + pixel_offset,
-				llfloor((F32)right * LLUI::sGLScaleFactor.mV[VX]) + pixel_offset,
-				llfloor((F32)bottom * LLUI::sGLScaleFactor.mV[VY]) - pixel_offset,
-				filled);
-	gGL.popUIMatrix();
-}
-
-
-void gl_rect_2d(S32 left, S32 top, S32 right, S32 bottom, BOOL filled )
-{
-	stop_glerror();
-	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
-
-	// Counterclockwise quad will face the viewer
-	if( filled )
-	{ 
-		gGL.begin( LLRender::QUADS );
-			gGL.vertex2i(left, top);
-			gGL.vertex2i(left, bottom);
-			gGL.vertex2i(right, bottom);
-			gGL.vertex2i(right, top);
-		gGL.end();
-	}
-	else
-	{
-		if( gGLManager.mATIOffsetVerticalLines )
-		{
-			// Work around bug in ATI driver: vertical lines are offset by (-1,-1)
-			gGL.begin( LLRender::LINES );
-
-				// Verticals 
-				gGL.vertex2i(left + 1, top);
-				gGL.vertex2i(left + 1, bottom);
-
-				gGL.vertex2i(right, bottom);
-				gGL.vertex2i(right, top);
-
-				// Horizontals
-				top--;
-				right--;
-				gGL.vertex2i(left, bottom);
-				gGL.vertex2i(right, bottom);
-
-				gGL.vertex2i(left, top);
-				gGL.vertex2i(right, top);
-			gGL.end();
-		}
-		else
-		{
-			top--;
-			right--;
-			gGL.begin( LLRender::LINE_STRIP );
-				gGL.vertex2i(left, top);
-				gGL.vertex2i(left, bottom);
-				gGL.vertex2i(right, bottom);
-				gGL.vertex2i(right, top);
-				gGL.vertex2i(left, top);
-			gGL.end();
-		}
-	}
-	stop_glerror();
-}
-
-void gl_rect_2d(S32 left, S32 top, S32 right, S32 bottom, const LLColor4 &color, BOOL filled )
-{
-	gGL.color4fv( color.mV );
-	gl_rect_2d( left, top, right, bottom, filled );
-}
-
-
-void gl_rect_2d( const LLRect& rect, const LLColor4& color, BOOL filled )
-{
-	gGL.color4fv( color.mV );
-	gl_rect_2d( rect.mLeft, rect.mTop, rect.mRight, rect.mBottom, filled );
-}
-
-// Given a rectangle on the screen, draws a drop shadow _outside_
-// the right and bottom edges of it.  Along the right it has width "lines"
-// and along the bottom it has height "lines".
-void gl_drop_shadow(S32 left, S32 top, S32 right, S32 bottom, const LLColor4 &start_color, S32 lines)
-{
-	stop_glerror();
-	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
-	
-	// HACK: Overlap with the rectangle by a single pixel.
-	right--;
-	bottom++;
-	lines++;
-
-	LLColor4 end_color = start_color;
-	end_color.mV[VALPHA] = 0.f;
-
-	gGL.begin(LLRender::QUADS);
-
-	// Right edge, CCW faces screen
-	gGL.color4fv(start_color.mV);
-	gGL.vertex2i(right,		top-lines);
-	gGL.vertex2i(right,		bottom);
-	gGL.color4fv(end_color.mV);
-	gGL.vertex2i(right+lines, bottom);
-	gGL.vertex2i(right+lines, top-lines);
-
-	// Bottom edge, CCW faces screen
-	gGL.color4fv(start_color.mV);
-	gGL.vertex2i(right,		bottom);
-	gGL.vertex2i(left+lines,	bottom);
-	gGL.color4fv(end_color.mV);
-	gGL.vertex2i(left+lines,	bottom-lines);
-	gGL.vertex2i(right,		bottom-lines);
-
-	// bottom left Corner
-	gGL.color4fv(start_color.mV);
-	gGL.vertex2i(left+lines,	bottom);
-	gGL.color4fv(end_color.mV);
-	gGL.vertex2i(left,		bottom);
-	// make the bottom left corner not sharp
-	gGL.vertex2i(left+1,		bottom-lines+1);
-	gGL.vertex2i(left+lines,	bottom-lines);
-
-	// bottom right corner
-	gGL.color4fv(start_color.mV);
-	gGL.vertex2i(right,		bottom);
-	gGL.color4fv(end_color.mV);
-	gGL.vertex2i(right,		bottom-lines);
-	// make the rightmost corner not sharp
-	gGL.vertex2i(right+lines-1,	bottom-lines+1);
-	gGL.vertex2i(right+lines,	bottom);
-
-	// top right corner
-	gGL.color4fv(start_color.mV);
-	gGL.vertex2i( right,			top-lines );
-	gGL.color4fv(end_color.mV);
-	gGL.vertex2i( right+lines,	top-lines );
-	// make the corner not sharp
-	gGL.vertex2i( right+lines-1,	top-1 );
-	gGL.vertex2i( right,			top );
-
-	gGL.end();
-	stop_glerror();
-}
-
-void gl_line_2d(S32 x1, S32 y1, S32 x2, S32 y2 )
-{
-	// Work around bug in ATI driver: vertical lines are offset by (-1,-1)
-	if( (x1 == x2) && gGLManager.mATIOffsetVerticalLines )
-	{
-		x1++;
-		x2++;
-		y1++;
-		y2++;
-	}
-
-	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
-	
-	gGL.begin(LLRender::LINES);
-		gGL.vertex2i(x1, y1);
-		gGL.vertex2i(x2, y2);
-	gGL.end();
-}
-
-void gl_line_2d(S32 x1, S32 y1, S32 x2, S32 y2, const LLColor4 &color )
-{
-	// Work around bug in ATI driver: vertical lines are offset by (-1,-1)
-	if( (x1 == x2) && gGLManager.mATIOffsetVerticalLines )
-	{
-		x1++;
-		x2++;
-		y1++;
-		y2++;
-	}
-
-	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
-
-	gGL.color4fv( color.mV );
-
-	gGL.begin(LLRender::LINES);
-		gGL.vertex2i(x1, y1);
-		gGL.vertex2i(x2, y2);
-	gGL.end();
-}
-
-void gl_triangle_2d(S32 x1, S32 y1, S32 x2, S32 y2, S32 x3, S32 y3, const LLColor4& color, BOOL filled)
-{
-	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
-
-	gGL.color4fv(color.mV);
-
-	if (filled)
-	{
-		gGL.begin(LLRender::TRIANGLES);
-	}
-	else
-	{
-		gGL.begin(LLRender::LINE_LOOP);
-	}
-	gGL.vertex2i(x1, y1);
-	gGL.vertex2i(x2, y2);
-	gGL.vertex2i(x3, y3);
-	gGL.end();
-}
-
-void gl_corners_2d(S32 left, S32 top, S32 right, S32 bottom, S32 length, F32 max_frac)
-{
-	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
-
-	length = llmin((S32)(max_frac*(right - left)), length);
-	length = llmin((S32)(max_frac*(top - bottom)), length);
-	gGL.begin(LLRender::LINES);
-	gGL.vertex2i(left, top);
-	gGL.vertex2i(left + length, top);
-	
-	gGL.vertex2i(left, top);
-	gGL.vertex2i(left, top - length);
-
-	gGL.vertex2i(left, bottom);
-	gGL.vertex2i(left + length, bottom);
-	
-	gGL.vertex2i(left, bottom);
-	gGL.vertex2i(left, bottom + length);
-
-	gGL.vertex2i(right, top);
-	gGL.vertex2i(right - length, top);
-
-	gGL.vertex2i(right, top);
-	gGL.vertex2i(right, top - length);
-
-	gGL.vertex2i(right, bottom);
-	gGL.vertex2i(right - length, bottom);
-
-	gGL.vertex2i(right, bottom);
-	gGL.vertex2i(right, bottom + length);
-	gGL.end();
-}
-
-
-void gl_draw_image( S32 x, S32 y, LLTexture* image, const LLColor4& color, const LLRectf& uv_rect )
-{
-	if (NULL == image)
-	{
-		llwarns << "image == NULL; aborting function" << llendl;
-		return;
-	}
-	gl_draw_scaled_rotated_image( x, y, image->getWidth(0), image->getHeight(0), 0.f, image, color, uv_rect );
-}
-
-void gl_draw_scaled_image(S32 x, S32 y, S32 width, S32 height, LLTexture* image, const LLColor4& color, const LLRectf& uv_rect)
-{
-	if (NULL == image)
-	{
-		llwarns << "image == NULL; aborting function" << llendl;
-		return;
-	}
-	gl_draw_scaled_rotated_image( x, y, width, height, 0.f, image, color, uv_rect );
-}
-
-void gl_draw_scaled_image_with_border(S32 x, S32 y, S32 border_width, S32 border_height, S32 width, S32 height, LLTexture* image, const LLColor4& color, BOOL solid_color, const LLRectf& uv_rect)
-{
-	if (NULL == image)
-	{
-		llwarns << "image == NULL; aborting function" << llendl;
-		return;
-	}
-
-	// scale screen size of borders down
-	F32 border_width_fraction = (F32)border_width / (F32)image->getWidth(0);
-	F32 border_height_fraction = (F32)border_height / (F32)image->getHeight(0);
-
-	LLRectf scale_rect(border_width_fraction, 1.f - border_height_fraction, 1.f - border_width_fraction, border_height_fraction);
-	gl_draw_scaled_image_with_border(x, y, width, height, image, color, solid_color, uv_rect, scale_rect);
-}
-
-void gl_draw_scaled_image_with_border(S32 x, S32 y, S32 width, S32 height, LLTexture* image, const LLColor4& color, BOOL solid_color, const LLRectf& uv_outer_rect, const LLRectf& center_rect)
-{
-	stop_glerror();
-
-	if (NULL == image)
-	{
-		llwarns << "image == NULL; aborting function" << llendl;
-		return;
-	}
-
-	// add in offset of current image to current UI translation
-	const LLVector3 ui_scale = gGL.getUIScale();
-	const LLVector3 ui_translation = (gGL.getUITranslation() + LLVector3(x, y, 0.f)).scaledVec(ui_scale);
-
-	F32 uv_width = uv_outer_rect.getWidth();
-	F32 uv_height = uv_outer_rect.getHeight();
-
-	// shrink scaling region to be proportional to clipped image region
-	LLRectf uv_center_rect(
-		uv_outer_rect.mLeft + (center_rect.mLeft * uv_width),
-		uv_outer_rect.mBottom + (center_rect.mTop * uv_height),
-		uv_outer_rect.mLeft + (center_rect.mRight * uv_width),
-		uv_outer_rect.mBottom + (center_rect.mBottom * uv_height));
-
-	F32 image_width = image->getWidth(0);
-	F32 image_height = image->getHeight(0);
-
-	S32 image_natural_width = llround(image_width * uv_width);
-	S32 image_natural_height = llround(image_height * uv_height);
-
-	LLRectf draw_center_rect(	uv_center_rect.mLeft * image_width,
-								uv_center_rect.mTop * image_height,
-								uv_center_rect.mRight * image_width,
-								uv_center_rect.mBottom * image_height);
-
-	{	// scale fixed region of image to drawn region
-		draw_center_rect.mRight += width - image_natural_width;
-		draw_center_rect.mTop += height - image_natural_height;
-
-		F32 border_shrink_width = llmax(0.f, draw_center_rect.mLeft - draw_center_rect.mRight);
-		F32 border_shrink_height = llmax(0.f, draw_center_rect.mBottom - draw_center_rect.mTop);
-
-		F32 shrink_width_ratio = center_rect.getWidth() == 1.f ? 0.f : border_shrink_width / ((F32)image_natural_width * (1.f - center_rect.getWidth()));
-		F32 shrink_height_ratio = center_rect.getHeight() == 1.f ? 0.f : border_shrink_height / ((F32)image_natural_height * (1.f - center_rect.getHeight()));
-
-		F32 shrink_scale = 1.f - llmax(shrink_width_ratio, shrink_height_ratio);
-
-		draw_center_rect.mLeft = llround(ui_translation.mV[VX] + (F32)draw_center_rect.mLeft * shrink_scale * ui_scale.mV[VX]);
-		draw_center_rect.mTop = llround(ui_translation.mV[VY] + lerp((F32)height, (F32)draw_center_rect.mTop, shrink_scale) * ui_scale.mV[VY]);
-		draw_center_rect.mRight = llround(ui_translation.mV[VX] + lerp((F32)width, (F32)draw_center_rect.mRight, shrink_scale) * ui_scale.mV[VX]);
-		draw_center_rect.mBottom = llround(ui_translation.mV[VY] + (F32)draw_center_rect.mBottom * shrink_scale * ui_scale.mV[VY]);
-	}
-
-	LLRectf draw_outer_rect(ui_translation.mV[VX], 
-							ui_translation.mV[VY] + height * ui_scale.mV[VY], 
-							ui_translation.mV[VX] + width * ui_scale.mV[VX], 
-							ui_translation.mV[VY]);
-
-	LLGLSUIDefault gls_ui;
-	
-	if (solid_color)
-	{
-		if (LLGLSLShader::sNoFixedFunction)
-		{
-			gSolidColorProgram.bind();
-		}
-		else
-		{
-			gGL.getTexUnit(0)->setTextureColorBlend(LLTexUnit::TBO_REPLACE, LLTexUnit::TBS_PREV_COLOR);
-			gGL.getTexUnit(0)->setTextureAlphaBlend(LLTexUnit::TBO_MULT, LLTexUnit::TBS_TEX_ALPHA, LLTexUnit::TBS_VERT_ALPHA);
-		}
-	}
-
-	gGL.getTexUnit(0)->bind(image, true);
-
-	gGL.color4fv(color.mV);
-	
-	const S32 NUM_VERTICES = 9 * 4; // 9 quads
-	LLVector2 uv[NUM_VERTICES];
-	LLVector3 pos[NUM_VERTICES];
-
-	S32 index = 0;
-
-	gGL.begin(LLRender::QUADS);
-	{
-		// draw bottom left
-		uv[index] = LLVector2(uv_outer_rect.mLeft, uv_outer_rect.mBottom);
-		pos[index] = LLVector3(draw_outer_rect.mLeft, draw_outer_rect.mBottom, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_center_rect.mLeft, uv_outer_rect.mBottom);
-		pos[index] = LLVector3(draw_center_rect.mLeft, draw_outer_rect.mBottom, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mBottom);
-		pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mBottom, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_outer_rect.mLeft, uv_center_rect.mBottom);
-		pos[index] = LLVector3(draw_outer_rect.mLeft, draw_center_rect.mBottom, 0.f);
-		index++;
-
-		// draw bottom middle
-		uv[index] = LLVector2(uv_center_rect.mLeft, uv_outer_rect.mBottom);
-		pos[index] = LLVector3(draw_center_rect.mLeft, draw_outer_rect.mBottom, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_center_rect.mRight, uv_outer_rect.mBottom);
-		pos[index] = LLVector3(draw_center_rect.mRight, draw_outer_rect.mBottom, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mBottom);
-		pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mBottom, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mBottom);
-		pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mBottom, 0.f);
-		index++;
-
-		// draw bottom right
-		uv[index] = LLVector2(uv_center_rect.mRight, uv_outer_rect.mBottom);
-		pos[index] = LLVector3(draw_center_rect.mRight, draw_outer_rect.mBottom, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_outer_rect.mRight, uv_outer_rect.mBottom);
-		pos[index] = LLVector3(draw_outer_rect.mRight, draw_outer_rect.mBottom, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_outer_rect.mRight, uv_center_rect.mBottom);
-		pos[index] = LLVector3(draw_outer_rect.mRight, draw_center_rect.mBottom, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mBottom);
-		pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mBottom, 0.f);
-		index++;
-
-		// draw left 
-		uv[index] = LLVector2(uv_outer_rect.mLeft, uv_center_rect.mBottom);
-		pos[index] = LLVector3(draw_outer_rect.mLeft, draw_center_rect.mBottom, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mBottom);
-		pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mBottom, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mTop);
-		pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mTop, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_outer_rect.mLeft, uv_center_rect.mTop);
-		pos[index] = LLVector3(draw_outer_rect.mLeft, draw_center_rect.mTop, 0.f);
-		index++;
-
-		// draw middle
-		uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mBottom);
-		pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mBottom, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mBottom);
-		pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mBottom, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mTop);
-		pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mTop, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mTop);
-		pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mTop, 0.f);
-		index++;
-
-		// draw right 
-		uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mBottom);
-		pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mBottom, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_outer_rect.mRight, uv_center_rect.mBottom);
-		pos[index] = LLVector3(draw_outer_rect.mRight, draw_center_rect.mBottom, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_outer_rect.mRight, uv_center_rect.mTop);
-		pos[index] = LLVector3(draw_outer_rect.mRight, draw_center_rect.mTop, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mTop);
-		pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mTop, 0.f);
-		index++;
-
-		// draw top left
-		uv[index] = LLVector2(uv_outer_rect.mLeft, uv_center_rect.mTop);
-		pos[index] = LLVector3(draw_outer_rect.mLeft, draw_center_rect.mTop, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mTop);
-		pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mTop, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_center_rect.mLeft, uv_outer_rect.mTop);
-		pos[index] = LLVector3(draw_center_rect.mLeft, draw_outer_rect.mTop, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_outer_rect.mLeft, uv_outer_rect.mTop);
-		pos[index] = LLVector3(draw_outer_rect.mLeft, draw_outer_rect.mTop, 0.f);
-		index++;
-
-		// draw top middle
-		uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mTop);
-		pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mTop, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mTop);
-		pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mTop, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_center_rect.mRight, uv_outer_rect.mTop);
-		pos[index] = LLVector3(draw_center_rect.mRight, draw_outer_rect.mTop, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_center_rect.mLeft, uv_outer_rect.mTop);
-		pos[index] = LLVector3(draw_center_rect.mLeft, draw_outer_rect.mTop, 0.f);
-		index++;
-
-		// draw top right
-		uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mTop);
-		pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mTop, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_outer_rect.mRight, uv_center_rect.mTop);
-		pos[index] = LLVector3(draw_outer_rect.mRight, draw_center_rect.mTop, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_outer_rect.mRight, uv_outer_rect.mTop);
-		pos[index] = LLVector3(draw_outer_rect.mRight, draw_outer_rect.mTop, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_center_rect.mRight, uv_outer_rect.mTop);
-		pos[index] = LLVector3(draw_center_rect.mRight, draw_outer_rect.mTop, 0.f);
-		index++;
-
-		gGL.vertexBatchPreTransformed(pos, uv, NUM_VERTICES);
-	}
-	gGL.end();
-
-	if (solid_color)
-	{
-		if (LLGLSLShader::sNoFixedFunction)
-		{
-			gUIProgram.bind();
-		}
-		else
-		{
-			gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
-		}
-	}
-}
-
-void gl_draw_rotated_image(S32 x, S32 y, F32 degrees, LLTexture* image, const LLColor4& color, const LLRectf& uv_rect)
-{
-	gl_draw_scaled_rotated_image( x, y, image->getWidth(0), image->getHeight(0), degrees, image, color, uv_rect );
-}
-
-void gl_draw_scaled_rotated_image(S32 x, S32 y, S32 width, S32 height, F32 degrees, LLTexture* image, const LLColor4& color, const LLRectf& uv_rect)
-{
-	if (NULL == image)
-	{
-		llwarns << "image == NULL; aborting function" << llendl;
-		return;
-	}
-
-	LLGLSUIDefault gls_ui;
-
-
-	gGL.getTexUnit(0)->bind(image, true);
-
-	gGL.color4fv(color.mV);
-
-	if (degrees == 0.f)
-	{
-		const S32 NUM_VERTICES = 4; // 9 quads
-		LLVector2 uv[NUM_VERTICES];
-		LLVector3 pos[NUM_VERTICES];
-
-		gGL.begin(LLRender::QUADS);
-		{
-			LLVector3 ui_scale = gGL.getUIScale();
-			LLVector3 ui_translation = gGL.getUITranslation();
-			ui_translation.mV[VX] += x;
-			ui_translation.mV[VY] += y;
-			ui_translation.scaleVec(ui_scale);
-			S32 index = 0;
-			S32 scaled_width = llround(width * ui_scale.mV[VX]);
-			S32 scaled_height = llround(height * ui_scale.mV[VY]);
-
-			uv[index] = LLVector2(uv_rect.mRight, uv_rect.mTop);
-			pos[index] = LLVector3(ui_translation.mV[VX] + scaled_width, ui_translation.mV[VY] + scaled_height, 0.f);
-			index++;
-
-			uv[index] = LLVector2(uv_rect.mLeft, uv_rect.mTop);
-			pos[index] = LLVector3(ui_translation.mV[VX], ui_translation.mV[VY] + scaled_height, 0.f);
-			index++;
-
-			uv[index] = LLVector2(uv_rect.mLeft, uv_rect.mBottom);
-			pos[index] = LLVector3(ui_translation.mV[VX], ui_translation.mV[VY], 0.f);
-			index++;
-
-			uv[index] = LLVector2(uv_rect.mRight, uv_rect.mBottom);
-			pos[index] = LLVector3(ui_translation.mV[VX] + scaled_width, ui_translation.mV[VY], 0.f);
-			index++;
-
-			gGL.vertexBatchPreTransformed(pos, uv, NUM_VERTICES);
-		}
-		gGL.end();
-	}
-	else
-	{
-		gGL.pushUIMatrix();
-		gGL.translateUI((F32)x, (F32)y, 0.f);
-	
-		F32 offset_x = F32(width/2);
-		F32 offset_y = F32(height/2);
-
-		gGL.translateUI(offset_x, offset_y, 0.f);
-
-		LLMatrix3 quat(0.f, 0.f, degrees*DEG_TO_RAD);
-		
-		gGL.getTexUnit(0)->bind(image, true);
-
-		gGL.color4fv(color.mV);
-		
-		gGL.begin(LLRender::QUADS);
-		{
-			LLVector3 v;
-
-			v = LLVector3(offset_x, offset_y, 0.f) * quat;
-			gGL.texCoord2f(uv_rect.mRight, uv_rect.mTop);
-			gGL.vertex2f(v.mV[0], v.mV[1] );
-
-			v = LLVector3(-offset_x, offset_y, 0.f) * quat;
-			gGL.texCoord2f(uv_rect.mLeft, uv_rect.mTop);
-			gGL.vertex2f(v.mV[0], v.mV[1] );
-
-			v = LLVector3(-offset_x, -offset_y, 0.f) * quat;
-			gGL.texCoord2f(uv_rect.mLeft, uv_rect.mBottom);
-			gGL.vertex2f(v.mV[0], v.mV[1] );
-
-			v = LLVector3(offset_x, -offset_y, 0.f) * quat;
-			gGL.texCoord2f(uv_rect.mRight, uv_rect.mBottom);
-			gGL.vertex2f(v.mV[0], v.mV[1] );
-		}
-		gGL.end();
-		gGL.popUIMatrix();
-	}
-}
-
-
-void gl_stippled_line_3d( const LLVector3& start, const LLVector3& end, const LLColor4& color, F32 phase )
-{
-	phase = fmod(phase, 1.f);
-
-	S32 shift = S32(phase * 4.f) % 4;
-
-	// Stippled line
-	LLGLEnable stipple(GL_LINE_STIPPLE);
-	
-	gGL.color4f(color.mV[VRED], color.mV[VGREEN], color.mV[VBLUE], color.mV[VALPHA]);
-
-	gGL.flush();
-	glLineWidth(2.5f);
-
-	if (!LLGLSLShader::sNoFixedFunction)
-	{
-		glLineStipple(2, 0x3333 << shift);
-	}
-
-	gGL.begin(LLRender::LINES);
-	{
-		gGL.vertex3fv( start.mV );
-		gGL.vertex3fv( end.mV );
-	}
-	gGL.end();
-
-	LLUI::setLineWidth(1.f);
-}
-
-void gl_arc_2d(F32 center_x, F32 center_y, F32 radius, S32 steps, BOOL filled, F32 start_angle, F32 end_angle)
-{
-	if (end_angle < start_angle)
-	{
-		end_angle += F_TWO_PI;
-	}
-
-	gGL.pushUIMatrix();
-	{
-		gGL.translateUI(center_x, center_y, 0.f);
-
-		// Inexact, but reasonably fast.
-		F32 delta = (end_angle - start_angle) / steps;
-		F32 sin_delta = sin( delta );
-		F32 cos_delta = cos( delta );
-		F32 x = cosf(start_angle) * radius;
-		F32 y = sinf(start_angle) * radius;
-
-		if (filled)
-		{
-			gGL.begin(LLRender::TRIANGLE_FAN);
-			gGL.vertex2f(0.f, 0.f);
-			// make sure circle is complete
-			steps += 1;
-		}
-		else
-		{
-			gGL.begin(LLRender::LINE_STRIP);
-		}
-
-		while( steps-- )
-		{
-			// Successive rotations
-			gGL.vertex2f( x, y );
-			F32 x_new = x * cos_delta - y * sin_delta;
-			y = x * sin_delta +  y * cos_delta;
-			x = x_new;
-		}
-		gGL.end();
-	}
-	gGL.popUIMatrix();
-}
-
-void gl_circle_2d(F32 center_x, F32 center_y, F32 radius, S32 steps, BOOL filled)
-{
-	gGL.pushUIMatrix();
-	{
-		gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
-		gGL.translateUI(center_x, center_y, 0.f);
-
-		// Inexact, but reasonably fast.
-		F32 delta = F_TWO_PI / steps;
-		F32 sin_delta = sin( delta );
-		F32 cos_delta = cos( delta );
-		F32 x = radius;
-		F32 y = 0.f;
-
-		if (filled)
-		{
-			gGL.begin(LLRender::TRIANGLE_FAN);
-			gGL.vertex2f(0.f, 0.f);
-			// make sure circle is complete
-			steps += 1;
-		}
-		else
-		{
-			gGL.begin(LLRender::LINE_LOOP);
-		}
-
-		while( steps-- )
-		{
-			// Successive rotations
-			gGL.vertex2f( x, y );
-			F32 x_new = x * cos_delta - y * sin_delta;
-			y = x * sin_delta +  y * cos_delta;
-			x = x_new;
-		}
-		gGL.end();
-	}
-	gGL.popUIMatrix();
-}
-
-// Renders a ring with sides (tube shape)
-void gl_deep_circle( F32 radius, F32 depth, S32 steps )
-{
-	F32 x = radius;
-	F32 y = 0.f;
-	F32 angle_delta = F_TWO_PI / (F32)steps;
-	gGL.begin( LLRender::TRIANGLE_STRIP  );
-	{
-		S32 step = steps + 1; // An extra step to close the circle.
-		while( step-- )
-		{
-			gGL.vertex3f( x, y, depth );
-			gGL.vertex3f( x, y, 0.f );
-
-			F32 x_new = x * cosf(angle_delta) - y * sinf(angle_delta);
-			y = x * sinf(angle_delta) +  y * cosf(angle_delta);
-			x = x_new;
-		}
-	}
-	gGL.end();
-}
-
-void gl_ring( F32 radius, F32 width, const LLColor4& center_color, const LLColor4& side_color, S32 steps, BOOL render_center )
-{
-	gGL.pushUIMatrix();
-	{
-		gGL.translateUI(0.f, 0.f, -width / 2);
-		if( render_center )
-		{
-			gGL.color4fv(center_color.mV);
-			gGL.diffuseColor4fv(center_color.mV);
-			gl_deep_circle( radius, width, steps );
-		}
-		else
-		{
-			gGL.diffuseColor4fv(side_color.mV);
-			gl_washer_2d(radius, radius - width, steps, side_color, side_color);
-			gGL.translateUI(0.f, 0.f, width);
-			gl_washer_2d(radius - width, radius, steps, side_color, side_color);
-		}
-	}
-	gGL.popUIMatrix();
-}
-
-// Draw gray and white checkerboard with black border
-void gl_rect_2d_checkerboard(const LLRect& rect, GLfloat alpha)
-{
-	if (!LLGLSLShader::sNoFixedFunction)
-	{ 
-	// Initialize the first time this is called.
-	const S32 PIXELS = 32;
-	static GLubyte checkerboard[PIXELS * PIXELS];
-	static BOOL first = TRUE;
-	if( first )
-	{
-		for( S32 i = 0; i < PIXELS; i++ )
-		{
-			for( S32 j = 0; j < PIXELS; j++ )
-			{
-				checkerboard[i * PIXELS + j] = ((i & 1) ^ (j & 1)) * 0xFF;
-			}
-		}
-		first = FALSE;
-	}
-	
-	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
-
-	// ...white squares
-	gGL.color4f( 1.f, 1.f, 1.f, alpha );
-	gl_rect_2d(rect);
-
-	// ...gray squares
-	gGL.color4f( .7f, .7f, .7f, alpha );
-	gGL.flush();
-
-		glPolygonStipple( checkerboard );
-
-		LLGLEnable polygon_stipple(GL_POLYGON_STIPPLE);
-		gl_rect_2d(rect);
-	}
-	else
-	{ //polygon stipple is deprecated, use "Checker" texture
-		LLPointer<LLUIImage> img = LLUI::getUIImage("Checker");
-		gGL.getTexUnit(0)->bind(img->getImage());
-		gGL.getTexUnit(0)->setTextureAddressMode(LLTexUnit::TAM_WRAP);
-		gGL.getTexUnit(0)->setTextureFilteringOption(LLTexUnit::TFO_POINT);
-
-		LLColor4 color(1.f, 1.f, 1.f, alpha);
-		LLRectf uv_rect(0, 0, rect.getWidth()/32.f, rect.getHeight()/32.f);
-
-		gl_draw_scaled_image(rect.mLeft, rect.mBottom, rect.getWidth(), rect.getHeight(),
-			img->getImage(), color, uv_rect);
-	}
-	
-	gGL.flush();
-}
-
-
-// Draws the area between two concentric circles, like
-// a doughnut or washer.
-void gl_washer_2d(F32 outer_radius, F32 inner_radius, S32 steps, const LLColor4& inner_color, const LLColor4& outer_color)
-{
-	const F32 DELTA = F_TWO_PI / steps;
-	const F32 SIN_DELTA = sin( DELTA );
-	const F32 COS_DELTA = cos( DELTA );
-
-	F32 x1 = outer_radius;
-	F32 y1 = 0.f;
-	F32 x2 = inner_radius;
-	F32 y2 = 0.f;
-
-	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
-
-	gGL.begin( LLRender::TRIANGLE_STRIP  );
-	{
-		steps += 1; // An extra step to close the circle.
-		while( steps-- )
-		{
-			gGL.color4fv(outer_color.mV);
-			gGL.vertex2f( x1, y1 );
-			gGL.color4fv(inner_color.mV);
-			gGL.vertex2f( x2, y2 );
-
-			F32 x1_new = x1 * COS_DELTA - y1 * SIN_DELTA;
-			y1 = x1 * SIN_DELTA +  y1 * COS_DELTA;
-			x1 = x1_new;
-
-			F32 x2_new = x2 * COS_DELTA - y2 * SIN_DELTA;
-			y2 = x2 * SIN_DELTA +  y2 * COS_DELTA;
-			x2 = x2_new;
-		}
-	}
-	gGL.end();
-}
-
-// Draws the area between two concentric circles, like
-// a doughnut or washer.
-void gl_washer_segment_2d(F32 outer_radius, F32 inner_radius, F32 start_radians, F32 end_radians, S32 steps, const LLColor4& inner_color, const LLColor4& outer_color)
-{
-	const F32 DELTA = (end_radians - start_radians) / steps;
-	const F32 SIN_DELTA = sin( DELTA );
-	const F32 COS_DELTA = cos( DELTA );
-
-	F32 x1 = outer_radius * cos( start_radians );
-	F32 y1 = outer_radius * sin( start_radians );
-	F32 x2 = inner_radius * cos( start_radians );
-	F32 y2 = inner_radius * sin( start_radians );
-
-	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
-	gGL.begin( LLRender::TRIANGLE_STRIP  );
-	{
-		steps += 1; // An extra step to close the circle.
-		while( steps-- )
-		{
-			gGL.color4fv(outer_color.mV);
-			gGL.vertex2f( x1, y1 );
-			gGL.color4fv(inner_color.mV);
-			gGL.vertex2f( x2, y2 );
-
-			F32 x1_new = x1 * COS_DELTA - y1 * SIN_DELTA;
-			y1 = x1 * SIN_DELTA +  y1 * COS_DELTA;
-			x1 = x1_new;
-
-			F32 x2_new = x2 * COS_DELTA - y2 * SIN_DELTA;
-			y2 = x2 * SIN_DELTA +  y2 * COS_DELTA;
-			x2 = x2_new;
-		}
-	}
-	gGL.end();
-}
-
-void gl_rect_2d_simple_tex( S32 width, S32 height )
-{
-	gGL.begin( LLRender::QUADS );
-
-		gGL.texCoord2f(1.f, 1.f);
-		gGL.vertex2i(width, height);
-
-		gGL.texCoord2f(0.f, 1.f);
-		gGL.vertex2i(0, height);
-
-		gGL.texCoord2f(0.f, 0.f);
-		gGL.vertex2i(0, 0);
-
-		gGL.texCoord2f(1.f, 0.f);
-		gGL.vertex2i(width, 0);
-	
-	gGL.end();
-}
-
-void gl_rect_2d_simple( S32 width, S32 height )
-{
-	gGL.begin( LLRender::QUADS );
-		gGL.vertex2i(width, height);
-		gGL.vertex2i(0, height);
-		gGL.vertex2i(0, 0);
-		gGL.vertex2i(width, 0);
-	gGL.end();
-}
-
-void gl_segmented_rect_2d_tex(const S32 left, 
-							  const S32 top, 
-							  const S32 right, 
-							  const S32 bottom, 
-							  const S32 texture_width, 
-							  const S32 texture_height, 
-							  const S32 border_size, 
-							  const U32 edges)
-{
-	S32 width = llabs(right - left);
-	S32 height = llabs(top - bottom);
-
-	gGL.pushUIMatrix();
-
-	gGL.translateUI((F32)left, (F32)bottom, 0.f);
-	LLVector2 border_uv_scale((F32)border_size / (F32)texture_width, (F32)border_size / (F32)texture_height);
-
-	if (border_uv_scale.mV[VX] > 0.5f)
-	{
-		border_uv_scale *= 0.5f / border_uv_scale.mV[VX];
-	}
-	if (border_uv_scale.mV[VY] > 0.5f)
-	{
-		border_uv_scale *= 0.5f / border_uv_scale.mV[VY];
-	}
-
-	F32 border_scale = llmin((F32)border_size, (F32)width * 0.5f, (F32)height * 0.5f);
-	LLVector2 border_width_left = ((edges & (~(U32)ROUNDED_RECT_RIGHT)) != 0) ? LLVector2(border_scale, 0.f) : LLVector2::zero;
-	LLVector2 border_width_right = ((edges & (~(U32)ROUNDED_RECT_LEFT)) != 0) ? LLVector2(border_scale, 0.f) : LLVector2::zero;
-	LLVector2 border_height_bottom = ((edges & (~(U32)ROUNDED_RECT_TOP)) != 0) ? LLVector2(0.f, border_scale) : LLVector2::zero;
-	LLVector2 border_height_top = ((edges & (~(U32)ROUNDED_RECT_BOTTOM)) != 0) ? LLVector2(0.f, border_scale) : LLVector2::zero;
-	LLVector2 width_vec((F32)width, 0.f);
-	LLVector2 height_vec(0.f, (F32)height);
-
-	gGL.begin(LLRender::QUADS);
-	{
-		// draw bottom left
-		gGL.texCoord2f(0.f, 0.f);
-		gGL.vertex2f(0.f, 0.f);
-
-		gGL.texCoord2f(border_uv_scale.mV[VX], 0.f);
-		gGL.vertex2fv(border_width_left.mV);
-
-		gGL.texCoord2f(border_uv_scale.mV[VX], border_uv_scale.mV[VY]);
-		gGL.vertex2fv((border_width_left + border_height_bottom).mV);
-
-		gGL.texCoord2f(0.f, border_uv_scale.mV[VY]);
-		gGL.vertex2fv(border_height_bottom.mV);
-
-		// draw bottom middle
-		gGL.texCoord2f(border_uv_scale.mV[VX], 0.f);
-		gGL.vertex2fv(border_width_left.mV);
-
-		gGL.texCoord2f(1.f - border_uv_scale.mV[VX], 0.f);
-		gGL.vertex2fv((width_vec - border_width_right).mV);
-
-		gGL.texCoord2f(1.f - border_uv_scale.mV[VX], border_uv_scale.mV[VY]);
-		gGL.vertex2fv((width_vec - border_width_right + border_height_bottom).mV);
-
-		gGL.texCoord2f(border_uv_scale.mV[VX], border_uv_scale.mV[VY]);
-		gGL.vertex2fv((border_width_left + border_height_bottom).mV);
-
-		// draw bottom right
-		gGL.texCoord2f(1.f - border_uv_scale.mV[VX], 0.f);
-		gGL.vertex2fv((width_vec - border_width_right).mV);
-
-		gGL.texCoord2f(1.f, 0.f);
-		gGL.vertex2fv(width_vec.mV);
-
-		gGL.texCoord2f(1.f, border_uv_scale.mV[VY]);
-		gGL.vertex2fv((width_vec + border_height_bottom).mV);
-
-		gGL.texCoord2f(1.f - border_uv_scale.mV[VX], border_uv_scale.mV[VY]);
-		gGL.vertex2fv((width_vec - border_width_right + border_height_bottom).mV);
-
-		// draw left 
-		gGL.texCoord2f(0.f, border_uv_scale.mV[VY]);
-		gGL.vertex2fv(border_height_bottom.mV);
-
-		gGL.texCoord2f(border_uv_scale.mV[VX], border_uv_scale.mV[VY]);
-		gGL.vertex2fv((border_width_left + border_height_bottom).mV);
-
-		gGL.texCoord2f(border_uv_scale.mV[VX], 1.f - border_uv_scale.mV[VY]);
-		gGL.vertex2fv((border_width_left + height_vec - border_height_top).mV);
-
-		gGL.texCoord2f(0.f, 1.f - border_uv_scale.mV[VY]);
-		gGL.vertex2fv((height_vec - border_height_top).mV);
-
-		// draw middle
-		gGL.texCoord2f(border_uv_scale.mV[VX], border_uv_scale.mV[VY]);
-		gGL.vertex2fv((border_width_left + border_height_bottom).mV);
-
-		gGL.texCoord2f(1.f - border_uv_scale.mV[VX], border_uv_scale.mV[VY]);
-		gGL.vertex2fv((width_vec - border_width_right + border_height_bottom).mV);
-
-		gGL.texCoord2f(1.f - border_uv_scale.mV[VX], 1.f - border_uv_scale.mV[VY]);
-		gGL.vertex2fv((width_vec - border_width_right + height_vec - border_height_top).mV);
-
-		gGL.texCoord2f(border_uv_scale.mV[VX], 1.f - border_uv_scale.mV[VY]);
-		gGL.vertex2fv((border_width_left + height_vec - border_height_top).mV);
-
-		// draw right 
-		gGL.texCoord2f(1.f - border_uv_scale.mV[VX], border_uv_scale.mV[VY]);
-		gGL.vertex2fv((width_vec - border_width_right + border_height_bottom).mV);
-
-		gGL.texCoord2f(1.f, border_uv_scale.mV[VY]);
-		gGL.vertex2fv((width_vec + border_height_bottom).mV);
-
-		gGL.texCoord2f(1.f, 1.f - border_uv_scale.mV[VY]);
-		gGL.vertex2fv((width_vec + height_vec - border_height_top).mV);
-
-		gGL.texCoord2f(1.f - border_uv_scale.mV[VX], 1.f - border_uv_scale.mV[VY]);
-		gGL.vertex2fv((width_vec - border_width_right + height_vec - border_height_top).mV);
-
-		// draw top left
-		gGL.texCoord2f(0.f, 1.f - border_uv_scale.mV[VY]);
-		gGL.vertex2fv((height_vec - border_height_top).mV);
-
-		gGL.texCoord2f(border_uv_scale.mV[VX], 1.f - border_uv_scale.mV[VY]);
-		gGL.vertex2fv((border_width_left + height_vec - border_height_top).mV);
-
-		gGL.texCoord2f(border_uv_scale.mV[VX], 1.f);
-		gGL.vertex2fv((border_width_left + height_vec).mV);
-
-		gGL.texCoord2f(0.f, 1.f);
-		gGL.vertex2fv((height_vec).mV);
-
-		// draw top middle
-		gGL.texCoord2f(border_uv_scale.mV[VX], 1.f - border_uv_scale.mV[VY]);
-		gGL.vertex2fv((border_width_left + height_vec - border_height_top).mV);
-
-		gGL.texCoord2f(1.f - border_uv_scale.mV[VX], 1.f - border_uv_scale.mV[VY]);
-		gGL.vertex2fv((width_vec - border_width_right + height_vec - border_height_top).mV);
-
-		gGL.texCoord2f(1.f - border_uv_scale.mV[VX], 1.f);
-		gGL.vertex2fv((width_vec - border_width_right + height_vec).mV);
-
-		gGL.texCoord2f(border_uv_scale.mV[VX], 1.f);
-		gGL.vertex2fv((border_width_left + height_vec).mV);
-
-		// draw top right
-		gGL.texCoord2f(1.f - border_uv_scale.mV[VX], 1.f - border_uv_scale.mV[VY]);
-		gGL.vertex2fv((width_vec - border_width_right + height_vec - border_height_top).mV);
-
-		gGL.texCoord2f(1.f, 1.f - border_uv_scale.mV[VY]);
-		gGL.vertex2fv((width_vec + height_vec - border_height_top).mV);
-
-		gGL.texCoord2f(1.f, 1.f);
-		gGL.vertex2fv((width_vec + height_vec).mV);
-
-		gGL.texCoord2f(1.f - border_uv_scale.mV[VX], 1.f);
-		gGL.vertex2fv((width_vec - border_width_right + height_vec).mV);
-	}
-	gGL.end();
-
-	gGL.popUIMatrix();
-}
-
-//FIXME: rewrite to use scissor?
-void gl_segmented_rect_2d_fragment_tex(const S32 left, 
-									   const S32 top, 
-									   const S32 right, 
-									   const S32 bottom, 
-									   const S32 texture_width, 
-									   const S32 texture_height, 
-									   const S32 border_size, 
-									   const F32 start_fragment, 
-									   const F32 end_fragment, 
-									   const U32 edges)
-{
-	S32 width = llabs(right - left);
-	S32 height = llabs(top - bottom);
-
-	gGL.pushUIMatrix();
-
-	gGL.translateUI((F32)left, (F32)bottom, 0.f);
-	LLVector2 border_uv_scale((F32)border_size / (F32)texture_width, (F32)border_size / (F32)texture_height);
-
-	if (border_uv_scale.mV[VX] > 0.5f)
-	{
-		border_uv_scale *= 0.5f / border_uv_scale.mV[VX];
-	}
-	if (border_uv_scale.mV[VY] > 0.5f)
-	{
-		border_uv_scale *= 0.5f / border_uv_scale.mV[VY];
-	}
-
-	F32 border_scale = llmin((F32)border_size, (F32)width * 0.5f, (F32)height * 0.5f);
-	LLVector2 border_width_left = ((edges & (~(U32)ROUNDED_RECT_RIGHT)) != 0) ? LLVector2(border_scale, 0.f) : LLVector2::zero;
-	LLVector2 border_width_right = ((edges & (~(U32)ROUNDED_RECT_LEFT)) != 0) ? LLVector2(border_scale, 0.f) : LLVector2::zero;
-	LLVector2 border_height_bottom = ((edges & (~(U32)ROUNDED_RECT_TOP)) != 0) ? LLVector2(0.f, border_scale) : LLVector2::zero;
-	LLVector2 border_height_top = ((edges & (~(U32)ROUNDED_RECT_BOTTOM)) != 0) ? LLVector2(0.f, border_scale) : LLVector2::zero;
-	LLVector2 width_vec((F32)width, 0.f);
-	LLVector2 height_vec(0.f, (F32)height);
-
-	F32 middle_start = border_scale / (F32)width;
-	F32 middle_end = 1.f - middle_start;
-
-	F32 u_min;
-	F32 u_max;
-	LLVector2 x_min;
-	LLVector2 x_max;
-
-	gGL.begin(LLRender::QUADS);
-	{
-		if (start_fragment < middle_start)
-		{
-			u_min = (start_fragment / middle_start) * border_uv_scale.mV[VX];
-			u_max = llmin(end_fragment / middle_start, 1.f) * border_uv_scale.mV[VX];
-			x_min = (start_fragment / middle_start) * border_width_left;
-			x_max = llmin(end_fragment / middle_start, 1.f) * border_width_left;
-
-			// draw bottom left
-			gGL.texCoord2f(u_min, 0.f);
-			gGL.vertex2fv(x_min.mV);
-
-			gGL.texCoord2f(border_uv_scale.mV[VX], 0.f);
-			gGL.vertex2fv(x_max.mV);
-
-			gGL.texCoord2f(u_max, border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_max + border_height_bottom).mV);
-
-			gGL.texCoord2f(u_min, border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_min + border_height_bottom).mV);
-
-			// draw left 
-			gGL.texCoord2f(u_min, border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_min + border_height_bottom).mV);
-
-			gGL.texCoord2f(u_max, border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_max + border_height_bottom).mV);
-
-			gGL.texCoord2f(u_max, 1.f - border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_max + height_vec - border_height_top).mV);
-
-			gGL.texCoord2f(u_min, 1.f - border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_min + height_vec - border_height_top).mV);
-			
-			// draw top left
-			gGL.texCoord2f(u_min, 1.f - border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_min + height_vec - border_height_top).mV);
-
-			gGL.texCoord2f(u_max, 1.f - border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_max + height_vec - border_height_top).mV);
-
-			gGL.texCoord2f(u_max, 1.f);
-			gGL.vertex2fv((x_max + height_vec).mV);
-
-			gGL.texCoord2f(u_min, 1.f);
-			gGL.vertex2fv((x_min + height_vec).mV);
-		}
-
-		if (end_fragment > middle_start || start_fragment < middle_end)
-		{
-			x_min = border_width_left + ((llclamp(start_fragment, middle_start, middle_end) - middle_start)) * width_vec;
-			x_max = border_width_left + ((llclamp(end_fragment, middle_start, middle_end) - middle_start)) * width_vec;
-
-			// draw bottom middle
-			gGL.texCoord2f(border_uv_scale.mV[VX], 0.f);
-			gGL.vertex2fv(x_min.mV);
-
-			gGL.texCoord2f(1.f - border_uv_scale.mV[VX], 0.f);
-			gGL.vertex2fv((x_max).mV);
-
-			gGL.texCoord2f(1.f - border_uv_scale.mV[VX], border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_max + border_height_bottom).mV);
-
-			gGL.texCoord2f(border_uv_scale.mV[VX], border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_min + border_height_bottom).mV);
-
-			// draw middle
-			gGL.texCoord2f(border_uv_scale.mV[VX], border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_min + border_height_bottom).mV);
-
-			gGL.texCoord2f(1.f - border_uv_scale.mV[VX], border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_max + border_height_bottom).mV);
-
-			gGL.texCoord2f(1.f - border_uv_scale.mV[VX], 1.f - border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_max + height_vec - border_height_top).mV);
-
-			gGL.texCoord2f(border_uv_scale.mV[VX], 1.f - border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_min + height_vec - border_height_top).mV);
-
-			// draw top middle
-			gGL.texCoord2f(border_uv_scale.mV[VX], 1.f - border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_min + height_vec - border_height_top).mV);
-
-			gGL.texCoord2f(1.f - border_uv_scale.mV[VX], 1.f - border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_max + height_vec - border_height_top).mV);
-
-			gGL.texCoord2f(1.f - border_uv_scale.mV[VX], 1.f);
-			gGL.vertex2fv((x_max + height_vec).mV);
-
-			gGL.texCoord2f(border_uv_scale.mV[VX], 1.f);
-			gGL.vertex2fv((x_min + height_vec).mV);
-		}
-
-		if (end_fragment > middle_end)
-		{
-			u_min = (1.f - llmax(0.f, ((start_fragment - middle_end) / middle_start))) * border_uv_scale.mV[VX];
-			u_max = (1.f - ((end_fragment - middle_end) / middle_start)) * border_uv_scale.mV[VX];
-			x_min = width_vec - ((1.f - llmax(0.f, ((start_fragment - middle_end) / middle_start))) * border_width_right);
-			x_max = width_vec - ((1.f - ((end_fragment - middle_end) / middle_start)) * border_width_right);
-
-			// draw bottom right
-			gGL.texCoord2f(u_min, 0.f);
-			gGL.vertex2fv((x_min).mV);
-
-			gGL.texCoord2f(u_max, 0.f);
-			gGL.vertex2fv(x_max.mV);
-
-			gGL.texCoord2f(u_max, border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_max + border_height_bottom).mV);
-
-			gGL.texCoord2f(u_min, border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_min + border_height_bottom).mV);
-
-			// draw right 
-			gGL.texCoord2f(u_min, border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_min + border_height_bottom).mV);
-
-			gGL.texCoord2f(u_max, border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_max + border_height_bottom).mV);
-
-			gGL.texCoord2f(u_max, 1.f - border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_max + height_vec - border_height_top).mV);
-
-			gGL.texCoord2f(u_min, 1.f - border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_min + height_vec - border_height_top).mV);
-
-			// draw top right
-			gGL.texCoord2f(u_min, 1.f - border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_min + height_vec - border_height_top).mV);
-
-			gGL.texCoord2f(u_max, 1.f - border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_max + height_vec - border_height_top).mV);
-
-			gGL.texCoord2f(u_max, 1.f);
-			gGL.vertex2fv((x_max + height_vec).mV);
-
-			gGL.texCoord2f(u_min, 1.f);
-			gGL.vertex2fv((x_min + height_vec).mV);
-		}
-	}
-	gGL.end();
-
-	gGL.popUIMatrix();
-}
-
-void gl_segmented_rect_3d_tex(const LLRectf& clip_rect, const LLRectf& center_uv_rect, const LLRectf& center_draw_rect, 
-							 const LLVector3& width_vec, const LLVector3& height_vec)
-{
-	gGL.begin(LLRender::QUADS);
-	{
-		// draw bottom left
-		gGL.texCoord2f(clip_rect.mLeft, clip_rect.mBottom);
-		gGL.vertex3f(0.f, 0.f, 0.f);
-
-		gGL.texCoord2f(center_uv_rect.mLeft, clip_rect.mBottom);
-		gGL.vertex3fv((center_draw_rect.mLeft * width_vec).mV);
-
-		gGL.texCoord2f(center_uv_rect.mLeft, center_uv_rect.mBottom);
-		gGL.vertex3fv((center_draw_rect.mLeft * width_vec + center_draw_rect.mBottom * height_vec).mV);
-
-		gGL.texCoord2f(clip_rect.mLeft, center_uv_rect.mBottom);
-		gGL.vertex3fv((center_draw_rect.mBottom * height_vec).mV);
-
-		// draw bottom middle
-		gGL.texCoord2f(center_uv_rect.mLeft, clip_rect.mBottom);
-		gGL.vertex3fv((center_draw_rect.mLeft * width_vec).mV);
-
-		gGL.texCoord2f(center_uv_rect.mRight, clip_rect.mBottom);
-		gGL.vertex3fv((center_draw_rect.mRight * width_vec).mV);
-
-		gGL.texCoord2f(center_uv_rect.mRight, center_uv_rect.mBottom);
-		gGL.vertex3fv((center_draw_rect.mRight * width_vec + center_draw_rect.mBottom * height_vec).mV);
-
-		gGL.texCoord2f(center_uv_rect.mLeft, center_uv_rect.mBottom);
-		gGL.vertex3fv((center_draw_rect.mLeft * width_vec + center_draw_rect.mBottom * height_vec).mV);
-
-		// draw bottom right
-		gGL.texCoord2f(center_uv_rect.mRight, clip_rect.mBottom);
-		gGL.vertex3fv((center_draw_rect.mRight * width_vec).mV);
-
-		gGL.texCoord2f(clip_rect.mRight, clip_rect.mBottom);
-		gGL.vertex3fv(width_vec.mV);
-
-		gGL.texCoord2f(clip_rect.mRight, center_uv_rect.mBottom);
-		gGL.vertex3fv((width_vec + center_draw_rect.mBottom * height_vec).mV);
-
-		gGL.texCoord2f(center_uv_rect.mRight, center_uv_rect.mBottom);
-		gGL.vertex3fv((center_draw_rect.mRight * width_vec + center_draw_rect.mBottom * height_vec).mV);
-
-		// draw left 
-		gGL.texCoord2f(clip_rect.mLeft, center_uv_rect.mBottom);
-		gGL.vertex3fv((center_draw_rect.mBottom * height_vec).mV);
-
-		gGL.texCoord2f(center_uv_rect.mLeft, center_uv_rect.mBottom);
-		gGL.vertex3fv((center_draw_rect.mLeft * width_vec + center_draw_rect.mBottom * height_vec).mV);
-
-		gGL.texCoord2f(center_uv_rect.mLeft, center_uv_rect.mTop);
-		gGL.vertex3fv((center_draw_rect.mLeft * width_vec + center_draw_rect.mTop * height_vec).mV);
-
-		gGL.texCoord2f(clip_rect.mLeft, center_uv_rect.mTop);
-		gGL.vertex3fv((center_draw_rect.mTop * height_vec).mV);
-
-		// draw middle
-		gGL.texCoord2f(center_uv_rect.mLeft, center_uv_rect.mBottom);
-		gGL.vertex3fv((center_draw_rect.mLeft * width_vec + center_draw_rect.mBottom * height_vec).mV);
-
-		gGL.texCoord2f(center_uv_rect.mRight, center_uv_rect.mBottom);
-		gGL.vertex3fv((center_draw_rect.mRight * width_vec + center_draw_rect.mBottom * height_vec).mV);
-
-		gGL.texCoord2f(center_uv_rect.mRight, center_uv_rect.mTop);
-		gGL.vertex3fv((center_draw_rect.mRight * width_vec + center_draw_rect.mTop * height_vec).mV);
-
-		gGL.texCoord2f(center_uv_rect.mLeft, center_uv_rect.mTop);
-		gGL.vertex3fv((center_draw_rect.mLeft * width_vec + center_draw_rect.mTop * height_vec).mV);
-
-		// draw right 
-		gGL.texCoord2f(center_uv_rect.mRight, center_uv_rect.mBottom);
-		gGL.vertex3fv((center_draw_rect.mRight * width_vec + center_draw_rect.mBottom * height_vec).mV);
-
-		gGL.texCoord2f(clip_rect.mRight, center_uv_rect.mBottom);
-		gGL.vertex3fv((width_vec + center_draw_rect.mBottom * height_vec).mV);
-
-		gGL.texCoord2f(clip_rect.mRight, center_uv_rect.mTop);
-		gGL.vertex3fv((width_vec + center_draw_rect.mTop * height_vec).mV);
-
-		gGL.texCoord2f(center_uv_rect.mRight, center_uv_rect.mTop);
-		gGL.vertex3fv((center_draw_rect.mRight * width_vec + center_draw_rect.mTop * height_vec).mV);
-
-		// draw top left
-		gGL.texCoord2f(clip_rect.mLeft, center_uv_rect.mTop);
-		gGL.vertex3fv((center_draw_rect.mTop * height_vec).mV);
-
-		gGL.texCoord2f(center_uv_rect.mLeft, center_uv_rect.mTop);
-		gGL.vertex3fv((center_draw_rect.mLeft * width_vec + center_draw_rect.mTop * height_vec).mV);
-
-		gGL.texCoord2f(center_uv_rect.mLeft, clip_rect.mTop);
-		gGL.vertex3fv((center_draw_rect.mLeft * width_vec + height_vec).mV);
-
-		gGL.texCoord2f(clip_rect.mLeft, clip_rect.mTop);
-		gGL.vertex3fv((height_vec).mV);
-
-		// draw top middle
-		gGL.texCoord2f(center_uv_rect.mLeft, center_uv_rect.mTop);
-		gGL.vertex3fv((center_draw_rect.mLeft * width_vec + center_draw_rect.mTop * height_vec).mV);
-
-		gGL.texCoord2f(center_uv_rect.mRight, center_uv_rect.mTop);
-		gGL.vertex3fv((center_draw_rect.mRight * width_vec + center_draw_rect.mTop * height_vec).mV);
-
-		gGL.texCoord2f(center_uv_rect.mRight, clip_rect.mTop);
-		gGL.vertex3fv((center_draw_rect.mRight * width_vec + height_vec).mV);
-
-		gGL.texCoord2f(center_uv_rect.mLeft, clip_rect.mTop);
-		gGL.vertex3fv((center_draw_rect.mLeft * width_vec + height_vec).mV);
-
-		// draw top right
-		gGL.texCoord2f(center_uv_rect.mRight, center_uv_rect.mTop);
-		gGL.vertex3fv((center_draw_rect.mRight * width_vec + center_draw_rect.mTop * height_vec).mV);
-
-		gGL.texCoord2f(clip_rect.mRight, center_uv_rect.mTop);
-		gGL.vertex3fv((width_vec + center_draw_rect.mTop * height_vec).mV);
-
-		gGL.texCoord2f(clip_rect.mRight, clip_rect.mTop);
-		gGL.vertex3fv((width_vec + height_vec).mV);
-
-		gGL.texCoord2f(center_uv_rect.mRight, clip_rect.mTop);
-		gGL.vertex3fv((center_draw_rect.mRight * width_vec + height_vec).mV);
-	}
-	gGL.end();
-
-}
-
-
 void LLUI::initClass(const settings_map_t& settings,
 					 LLImageProviderInterface* image_provider,
 					 LLUIAudioCallback audio_callback,
@@ -1633,6 +163,7 @@ void LLUI::initClass(const settings_map_t& settings,
 					 const LLVector2* scale_factor,
 					 const std::string& language)
 {
+	LLRender2D::initClass(image_provider,scale_factor);
 	sSettingGroups = settings;
 
 	if ((get_ptr_in_map(sSettingGroups, std::string("config")) == NULL) ||
@@ -1642,10 +173,8 @@ void LLUI::initClass(const settings_map_t& settings,
 		llerrs << "Failure to initialize configuration groups" << llendl;
 	}
 
-	sImageProvider = image_provider;
 	sAudioCallback = audio_callback;
 	sDeferredAudioCallback = deferred_audio_callback;
-	sGLScaleFactor = (scale_factor == NULL) ? LLVector2(1.f, 1.f) : *scale_factor;
 	sWindow = NULL; // set later in startup
 	LLFontGL::sShadowColor = LLUIColorTable::instance().getColor("ColorDropShadow");
 
@@ -1679,10 +208,7 @@ void LLUI::initClass(const settings_map_t& settings,
 
 void LLUI::cleanupClass()
 {
-	if(sImageProvider)
-	{
-	sImageProvider->cleanUp();
-}
+	LLRender2D::cleanupClass();
 }
 
 void LLUI::setPopupFuncs(const add_popup_t& add_popup, const remove_popup_t& remove_popup,  const clear_popups_t& clear_popups)
@@ -1706,60 +232,12 @@ void LLUI::dirtyRect(LLRect rect)
 	}		
 }
  
-
-//static
-void LLUI::translate(F32 x, F32 y, F32 z)
-{
-	gGL.translateUI(x,y,z);
-	LLFontGL::sCurOrigin.mX += (S32) x;
-	LLFontGL::sCurOrigin.mY += (S32) y;
-	LLFontGL::sCurDepth += z;
-}
-
-//static
-void LLUI::pushMatrix()
-{
-	gGL.pushUIMatrix();
-	LLFontGL::sOriginStack.push_back(std::make_pair(LLFontGL::sCurOrigin, LLFontGL::sCurDepth));
-}
-
-//static
-void LLUI::popMatrix()
-{
-	gGL.popUIMatrix();
-	LLFontGL::sCurOrigin = LLFontGL::sOriginStack.back().first;
-	LLFontGL::sCurDepth = LLFontGL::sOriginStack.back().second;
-	LLFontGL::sOriginStack.pop_back();
-}
-
-//static 
-void LLUI::loadIdentity()
-{
-	gGL.loadUIIdentity(); 
-	LLFontGL::sCurOrigin.mX = 0;
-	LLFontGL::sCurOrigin.mY = 0;
-	LLFontGL::sCurDepth = 0.f;
-}
-
-//static
-void LLUI::setScaleFactor(const LLVector2 &scale_factor)
-{
-	sGLScaleFactor = scale_factor;
-}
-
-//static
-void LLUI::setLineWidth(F32 width)
-{
-	gGL.flush();
-	glLineWidth(width * lerp(sGLScaleFactor.mV[VX], sGLScaleFactor.mV[VY], 0.5f));
-}
-
 //static 
 void LLUI::setMousePositionScreen(S32 x, S32 y)
 {
 	S32 screen_x, screen_y;
-	screen_x = llround((F32)x * sGLScaleFactor.mV[VX]);
-	screen_y = llround((F32)y * sGLScaleFactor.mV[VY]);
+	screen_x = llround((F32)x * getScaleFactor().mV[VX]);
+	screen_y = llround((F32)y * getScaleFactor().mV[VY]);
 	
 	LLView::getWindow()->setCursorPosition(LLCoordGL(screen_x, screen_y).convert());
 }
@@ -1770,8 +248,8 @@ void LLUI::getMousePositionScreen(S32 *x, S32 *y)
 	LLCoordWindow cursor_pos_window;
 	getWindow()->getCursorPosition(&cursor_pos_window);
 	LLCoordGL cursor_pos_gl(cursor_pos_window.convert());
-	*x = llround((F32)cursor_pos_gl.mX / sGLScaleFactor.mV[VX]);
-	*y = llround((F32)cursor_pos_gl.mY / sGLScaleFactor.mV[VX]);
+	*x = llround((F32)cursor_pos_gl.mX / getScaleFactor().mV[VX]);
+	*y = llround((F32)cursor_pos_gl.mY / getScaleFactor().mV[VX]);
 }
 
 //static 
@@ -1885,21 +363,21 @@ LLVector2 LLUI::getWindowSize()
 	LLCoordWindow window_rect;
 	sWindow->getSize(&window_rect);
 
-	return LLVector2(window_rect.mX / sGLScaleFactor.mV[VX], window_rect.mY / sGLScaleFactor.mV[VY]);
+	return LLVector2(window_rect.mX / getScaleFactor().mV[VX], window_rect.mY / getScaleFactor().mV[VY]);
 }
 
 //static
 void LLUI::screenPointToGL(S32 screen_x, S32 screen_y, S32 *gl_x, S32 *gl_y)
 {
-	*gl_x = llround((F32)screen_x * sGLScaleFactor.mV[VX]);
-	*gl_y = llround((F32)screen_y * sGLScaleFactor.mV[VY]);
+	*gl_x = llround((F32)screen_x * getScaleFactor().mV[VX]);
+	*gl_y = llround((F32)screen_y * getScaleFactor().mV[VY]);
 }
 
 //static
 void LLUI::glPointToScreen(S32 gl_x, S32 gl_y, S32 *screen_x, S32 *screen_y)
 {
-	*screen_x = llround((F32)gl_x / sGLScaleFactor.mV[VX]);
-	*screen_y = llround((F32)gl_y / sGLScaleFactor.mV[VY]);
+	*screen_x = llround((F32)gl_x / getScaleFactor().mV[VX]);
+	*screen_y = llround((F32)gl_y / getScaleFactor().mV[VY]);
 }
 
 //static
@@ -1916,27 +394,6 @@ void LLUI::glRectToScreen(const LLRect& gl, LLRect *screen)
 	glPointToScreen(gl.mRight, gl.mBottom, &screen->mRight, &screen->mBottom);
 }
 
-//static
-LLPointer<LLUIImage> LLUI::getUIImageByID(const LLUUID& image_id, S32 priority)
-{
-	if (sImageProvider)
-	{
-		return sImageProvider->getUIImageByID(image_id, priority);
-	}
-	else
-	{
-		return NULL;
-	}
-}
-
-//static 
-LLPointer<LLUIImage> LLUI::getUIImage(const std::string& name, S32 priority)
-{
-	if (!name.empty() && sImageProvider)
-		return sImageProvider->getUIImage(name, priority);
-	else
-		return NULL;
-}
 
 LLControlGroup& LLUI::getControlControlGroup (const std::string& controlname)
 {
diff --git a/indra/llui/llui.h b/indra/llui/llui.h
index 4c1703392a1..83831e47996 100644
--- a/indra/llui/llui.h
+++ b/indra/llui/llui.h
@@ -1,6 +1,6 @@
 /** 
  * @file llui.h
- * @brief GL function declarations and other general static UI services.
+ * @brief General static UI services.
  *
  * $LicenseInfo:firstyear=2001&license=viewerlgpl$
  * Second Life Viewer Source Code
@@ -24,122 +24,38 @@
  * $/LicenseInfo$
  */
 
-// All immediate-mode gl drawing should happen here.
 
 #ifndef LL_LLUI_H
 #define LL_LLUI_H
 
-#include "llpointer.h"		// LLPointer<>
 #include "llrect.h"
 #include "llcontrol.h"
 #include "llcoord.h"
-#include "llglslshader.h"
+#include "v2math.h"
 #include "llinitparam.h"
 #include "llregistry.h"
+#include "llrender2dutils.h"
+#include "llpointer.h"
 #include "lluicolor.h"
 #include "lluicolortable.h"
+#include "lluiimage.h"
 #include <boost/signals2.hpp>
 #include "lllazyvalue.h"
 #include "llframetimer.h"
 #include <limits>
 
-// LLUIFactory
-#include "llsd.h"
-
 // for initparam specialization
 #include "llfontgl.h"
 
 
-class LLColor4; 
-class LLVector3;
-class LLVector2;
-class LLUIImage;
 class LLUUID;
 class LLWindow;
 class LLView;
 class LLHelp;
 
-// UI colors
-extern const LLColor4 UI_VERTEX_COLOR;
 void make_ui_sound(const char* name);
 void make_ui_sound_deferred(const char * name);
 
-BOOL ui_point_in_rect(S32 x, S32 y, S32 left, S32 top, S32 right, S32 bottom);
-void gl_state_for_2d(S32 width, S32 height);
-
-void gl_line_2d(S32 x1, S32 y1, S32 x2, S32 y2);
-void gl_line_2d(S32 x1, S32 y1, S32 x2, S32 y2, const LLColor4 &color );
-void gl_triangle_2d(S32 x1, S32 y1, S32 x2, S32 y2, S32 x3, S32 y3, const LLColor4& color, BOOL filled);
-void gl_rect_2d_simple( S32 width, S32 height );
-
-void gl_draw_x(const LLRect& rect, const LLColor4& color);
-
-void gl_rect_2d(S32 left, S32 top, S32 right, S32 bottom, BOOL filled = TRUE );
-void gl_rect_2d(S32 left, S32 top, S32 right, S32 bottom, const LLColor4 &color, BOOL filled = TRUE );
-void gl_rect_2d_offset_local( S32 left, S32 top, S32 right, S32 bottom, const LLColor4 &color, S32 pixel_offset = 0, BOOL filled = TRUE );
-void gl_rect_2d_offset_local( S32 left, S32 top, S32 right, S32 bottom, S32 pixel_offset = 0, BOOL filled = TRUE );
-void gl_rect_2d(const LLRect& rect, BOOL filled = TRUE );
-void gl_rect_2d(const LLRect& rect, const LLColor4& color, BOOL filled = TRUE );
-void gl_rect_2d_checkerboard(const LLRect& rect, GLfloat alpha = 1.0f);
-
-void gl_drop_shadow(S32 left, S32 top, S32 right, S32 bottom, const LLColor4 &start_color, S32 lines);
-
-void gl_circle_2d(F32 x, F32 y, F32 radius, S32 steps, BOOL filled);
-void gl_arc_2d(F32 center_x, F32 center_y, F32 radius, S32 steps, BOOL filled, F32 start_angle, F32 end_angle);
-void gl_deep_circle( F32 radius, F32 depth );
-void gl_ring( F32 radius, F32 width, const LLColor4& center_color, const LLColor4& side_color, S32 steps, BOOL render_center );
-void gl_corners_2d(S32 left, S32 top, S32 right, S32 bottom, S32 length, F32 max_frac);
-void gl_washer_2d(F32 outer_radius, F32 inner_radius, S32 steps, const LLColor4& inner_color, const LLColor4& outer_color);
-void gl_washer_segment_2d(F32 outer_radius, F32 inner_radius, F32 start_radians, F32 end_radians, S32 steps, const LLColor4& inner_color, const LLColor4& outer_color);
-
-void gl_draw_image(S32 x, S32 y, LLTexture* image, const LLColor4& color = UI_VERTEX_COLOR, const LLRectf& uv_rect = LLRectf(0.f, 1.f, 1.f, 0.f));
-void gl_draw_scaled_image(S32 x, S32 y, S32 width, S32 height, LLTexture* image, const LLColor4& color = UI_VERTEX_COLOR, const LLRectf& uv_rect = LLRectf(0.f, 1.f, 1.f, 0.f));
-void gl_draw_rotated_image(S32 x, S32 y, F32 degrees, LLTexture* image, const LLColor4& color = UI_VERTEX_COLOR, const LLRectf& uv_rect = LLRectf(0.f, 1.f, 1.f, 0.f));
-void gl_draw_scaled_rotated_image(S32 x, S32 y, S32 width, S32 height, F32 degrees,LLTexture* image, const LLColor4& color = UI_VERTEX_COLOR, const LLRectf& uv_rect = LLRectf(0.f, 1.f, 1.f, 0.f));
-void gl_draw_scaled_image_with_border(S32 x, S32 y, S32 border_width, S32 border_height, S32 width, S32 height, LLTexture* image, const LLColor4 &color, BOOL solid_color = FALSE, const LLRectf& uv_rect = LLRectf(0.f, 1.f, 1.f, 0.f));
-void gl_draw_scaled_image_with_border(S32 x, S32 y, S32 width, S32 height, LLTexture* image, const LLColor4 &color, BOOL solid_color = FALSE, const LLRectf& uv_rect = LLRectf(0.f, 1.f, 1.f, 0.f), const LLRectf& scale_rect = LLRectf(0.f, 1.f, 1.f, 0.f));
-
-void gl_stippled_line_3d( const LLVector3& start, const LLVector3& end, const LLColor4& color, F32 phase = 0.f ); 
-
-void gl_rect_2d_simple_tex( S32 width, S32 height );
-
-// segmented rectangles
-
-/*
-   TL |______TOP_________| TR 
-     /|                  |\  
-   _/_|__________________|_\_
-   L| |    MIDDLE        | |R
-   _|_|__________________|_|_
-    \ |    BOTTOM        | /  
-   BL\|__________________|/ BR
-      |                  |    
-*/
-
-typedef enum e_rounded_edge
-{
-	ROUNDED_RECT_LEFT	= 0x1, 
-	ROUNDED_RECT_TOP	= 0x2, 
-	ROUNDED_RECT_RIGHT	= 0x4, 
-	ROUNDED_RECT_BOTTOM	= 0x8,
-	ROUNDED_RECT_ALL	= 0xf
-}ERoundedEdge;
-
-
-void gl_segmented_rect_2d_tex(const S32 left, const S32 top, const S32 right, const S32 bottom, const S32 texture_width, const S32 texture_height, const S32 border_size, const U32 edges = ROUNDED_RECT_ALL);
-void gl_segmented_rect_2d_fragment_tex(const S32 left, const S32 top, const S32 right, const S32 bottom, const S32 texture_width, const S32 texture_height, const S32 border_size, const F32 start_fragment, const F32 end_fragment, const U32 edges = ROUNDED_RECT_ALL);
-void gl_segmented_rect_3d_tex(const LLRectf& clip_rect, const LLRectf& center_uv_rect, const LLRectf& center_draw_rect, const LLVector3& width_vec, const LLVector3& height_vec);
-
-inline void gl_rect_2d( const LLRect& rect, BOOL filled )
-{
-	gl_rect_2d( rect.mLeft, rect.mTop, rect.mRight, rect.mBottom, filled );
-}
-
-inline void gl_rect_2d_offset_local( const LLRect& rect, S32 pixel_offset, BOOL filled)
-{
-	gl_rect_2d_offset_local( rect.mLeft, rect.mTop, rect.mRight, rect.mBottom, pixel_offset, filled );
-}
-
 class LLImageProviderInterface;
 
 typedef	void (*LLUIAudioCallback)(const LLUUID& uuid);
@@ -281,10 +197,10 @@ class LLUI
 	static void cleanupClass();
 	static void setPopupFuncs(const add_popup_t& add_popup, const remove_popup_t&, const clear_popups_t& );
 
-	static void pushMatrix();
-	static void popMatrix();
-	static void loadIdentity();
-	static void translate(F32 x, F32 y, F32 z = 0.0f);
+	static void pushMatrix() { LLRender2D::pushMatrix(); }
+	static void popMatrix() { LLRender2D::popMatrix(); }
+	static void loadIdentity() { LLRender2D::loadIdentity(); }
+	static void translate(F32 x, F32 y, F32 z = 0.0f) { LLRender2D::translate(x, y, z); }
 
 	static LLRect	sDirtyRect;
 	static BOOL		sDirty;
@@ -329,10 +245,13 @@ class LLUI
 	static void getMousePositionScreen(S32 *x, S32 *y);
 	static void setMousePositionLocal(const LLView* viewp, S32 x, S32 y);
 	static void getMousePositionLocal(const LLView* viewp, S32 *x, S32 *y);
-	static void setScaleFactor(const LLVector2& scale_factor);
-	static void setLineWidth(F32 width);
-	static LLPointer<LLUIImage> getUIImageByID(const LLUUID& image_id, S32 priority = 0);
-	static LLPointer<LLUIImage> getUIImage(const std::string& name, S32 priority = 0);
+	static LLVector2& getScaleFactor() { return LLRender2D::sGLScaleFactor; }
+	static void setScaleFactor(const LLVector2& scale_factor) { LLRender2D::setScaleFactor(scale_factor); }
+	static void setLineWidth(F32 width) { LLRender2D::setLineWidth(width); }
+	static LLPointer<LLUIImage> getUIImageByID(const LLUUID& image_id, S32 priority = 0)
+		{ return LLRender2D::getUIImageByID(image_id, priority); }
+	static LLPointer<LLUIImage> getUIImage(const std::string& name, S32 priority = 0)
+		{ return LLRender2D::getUIImage(name, priority); }
 	static LLVector2 getWindowSize();
 	static void screenPointToGL(S32 screen_x, S32 screen_y, S32 *gl_x, S32 *gl_y);
 	static void glPointToScreen(S32 gl_x, S32 gl_y, S32 *screen_x, S32 *screen_y);
@@ -362,12 +281,10 @@ class LLUI
 	static settings_map_t sSettingGroups;
 	static LLUIAudioCallback sAudioCallback;
 	static LLUIAudioCallback sDeferredAudioCallback;
-	static LLVector2		sGLScaleFactor;
 	static LLWindow*		sWindow;
 	static LLView*			sRootView;
 	static LLHelp*			sHelpImpl;
 private:
-	static LLImageProviderInterface* sImageProvider;
 	static std::vector<std::string> sXUIPaths;
 	static LLFrameTimer		sMouseIdleTimer;
 	static add_popup_t		sAddPopupFunc;
@@ -378,18 +295,6 @@ class LLUI
 
 // Moved LLLocalClipRect to lllocalcliprect.h
 
-//RN: maybe this needs to moved elsewhere?
-class LLImageProviderInterface
-{
-protected:
-	LLImageProviderInterface() {};
-	virtual ~LLImageProviderInterface() {};
-public:
-	virtual LLPointer<LLUIImage> getUIImage(const std::string& name, S32 priority) = 0;
-	virtual LLPointer<LLUIImage> getUIImageByID(const LLUUID& id, S32 priority) = 0;
-	virtual void cleanUp() = 0;
-};
-
 class LLCallbackRegistry
 {
 public:
@@ -600,7 +505,4 @@ namespace LLInitParam
 	};
 }
 
-extern LLGLSLShader gSolidColorProgram;
-extern LLGLSLShader gUIProgram;
-
 #endif
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index 0f77c68ec86..dac268ec922 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -803,7 +803,7 @@ bool LLAppViewer::init()
 		LLUIImageList::getInstance(),
 		ui_audio_callback,
 		deferred_ui_audio_callback,
-		&LLUI::sGLScaleFactor);
+		&LLUI::getScaleFactor());
 	LL_INFOS("InitInfo") << "UI initialized." << LL_ENDL ;
 
 	// NOW LLUI::getLanguage() should work. gDirUtilp must know the language
diff --git a/indra/newview/llglsandbox.cpp b/indra/newview/llglsandbox.cpp
index 1208c9378e9..60fa53f491c 100644
--- a/indra/newview/llglsandbox.cpp
+++ b/indra/newview/llglsandbox.cpp
@@ -79,10 +79,10 @@ void LLToolSelectRect::handleRectangleSelection(S32 x, S32 y, MASK mask)
 	S32 top =	llmax(y, mDragStartY);
 	S32 bottom =llmin(y, mDragStartY);
 
-	left = llround((F32) left * LLUI::sGLScaleFactor.mV[VX]);
-	right = llround((F32) right * LLUI::sGLScaleFactor.mV[VX]);
-	top = llround((F32) top * LLUI::sGLScaleFactor.mV[VY]);
-	bottom = llround((F32) bottom * LLUI::sGLScaleFactor.mV[VY]);
+	left = llround((F32) left * LLUI::getScaleFactor().mV[VX]);
+	right = llround((F32) right * LLUI::getScaleFactor().mV[VX]);
+	top = llround((F32) top * LLUI::getScaleFactor().mV[VY]);
+	bottom = llround((F32) bottom * LLUI::getScaleFactor().mV[VY]);
 
 	F32 old_far_plane = LLViewerCamera::getInstance()->getFar();
 	F32 old_near_plane = LLViewerCamera::getInstance()->getNear();
diff --git a/indra/newview/llmediactrl.cpp b/indra/newview/llmediactrl.cpp
index 99b4707158f..2075aeed632 100644
--- a/indra/newview/llmediactrl.cpp
+++ b/indra/newview/llmediactrl.cpp
@@ -119,8 +119,8 @@ LLMediaCtrl::LLMediaCtrl( const Params& p) :
 
 	if(!getDecoupleTextureSize())
 	{
-		S32 screen_width = llround((F32)getRect().getWidth() * LLUI::sGLScaleFactor.mV[VX]);
-		S32 screen_height = llround((F32)getRect().getHeight() * LLUI::sGLScaleFactor.mV[VY]);
+		S32 screen_width = llround((F32)getRect().getWidth() * LLUI::getScaleFactor().mV[VX]);
+		S32 screen_height = llround((F32)getRect().getHeight() * LLUI::getScaleFactor().mV[VY]);
 			
 		setTextureSize(screen_width, screen_height);
 	}
@@ -469,8 +469,8 @@ void LLMediaCtrl::reshape( S32 width, S32 height, BOOL called_from_parent )
 {
 	if(!getDecoupleTextureSize())
 	{
-		S32 screen_width = llround((F32)width * LLUI::sGLScaleFactor.mV[VX]);
-		S32 screen_height = llround((F32)height * LLUI::sGLScaleFactor.mV[VY]);
+		S32 screen_width = llround((F32)width * LLUI::getScaleFactor().mV[VX]);
+		S32 screen_height = llround((F32)height * LLUI::getScaleFactor().mV[VY]);
 
 		// when floater is minimized, these sizes are negative
 		if ( screen_height > 0 && screen_width > 0 )
@@ -667,7 +667,7 @@ bool LLMediaCtrl::ensureMediaSourceExists()
 			mMediaSource->addObserver( this );
 			mMediaSource->setBackgroundColor( getBackgroundColor() );
 			mMediaSource->setTrustedBrowser(mTrusted);
-			mMediaSource->setPageZoomFactor( LLUI::sGLScaleFactor.mV[ VX ] );
+			mMediaSource->setPageZoomFactor( LLUI::getScaleFactor().mV[ VX ] );
 
 			if(mClearCache)
 			{
@@ -750,7 +750,7 @@ void LLMediaCtrl::draw()
 	{
 		gGL.pushUIMatrix();
 		{
-			mMediaSource->setPageZoomFactor( LLUI::sGLScaleFactor.mV[ VX ] );
+			mMediaSource->setPageZoomFactor( LLUI::getScaleFactor().mV[ VX ] );
 
 			// scale texture to fit the space using texture coords
 			gGL.getTexUnit(0)->bind(media_texture);
@@ -864,14 +864,14 @@ void LLMediaCtrl::convertInputCoords(S32& x, S32& y)
 		coords_opengl = mMediaSource->getMediaPlugin()->getTextureCoordsOpenGL();
 	}
 	
-	x = llround((F32)x * LLUI::sGLScaleFactor.mV[VX]);
+	x = llround((F32)x * LLUI::getScaleFactor().mV[VX]);
 	if ( ! coords_opengl )
 	{
-		y = llround((F32)(y) * LLUI::sGLScaleFactor.mV[VY]);
+		y = llround((F32)(y) * LLUI::getScaleFactor().mV[VY]);
 	}
 	else
 	{
-		y = llround((F32)(getRect().getHeight() - y) * LLUI::sGLScaleFactor.mV[VY]);
+		y = llround((F32)(getRect().getHeight() - y) * LLUI::getScaleFactor().mV[VY]);
 	};
 }
 
diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp
index ffeea2f4df9..02f82aba639 100644
--- a/indra/newview/llviewerdisplay.cpp
+++ b/indra/newview/llviewerdisplay.cpp
@@ -1425,7 +1425,7 @@ void render_ui_2d()
 		gGL.pushMatrix();
 		S32 half_width = (gViewerWindow->getWorldViewWidthScaled() / 2);
 		S32 half_height = (gViewerWindow->getWorldViewHeightScaled() / 2);
-		gGL.scalef(LLUI::sGLScaleFactor.mV[0], LLUI::sGLScaleFactor.mV[1], 1.f);
+		gGL.scalef(LLUI::getScaleFactor().mV[0], LLUI::getScaleFactor().mV[1], 1.f);
 		gGL.translatef((F32)half_width, (F32)half_height, 0.f);
 		F32 zoom = gAgentCamera.mHUDCurZoom;
 		gGL.scalef(zoom,zoom,1.f);
@@ -1463,10 +1463,10 @@ void render_ui_2d()
 				LLUI::sDirtyRect = last_rect;
 				last_rect = t_rect;
 			
-				last_rect.mLeft = LLRect::tCoordType(last_rect.mLeft / LLUI::sGLScaleFactor.mV[0]);
-				last_rect.mRight = LLRect::tCoordType(last_rect.mRight / LLUI::sGLScaleFactor.mV[0]);
-				last_rect.mTop = LLRect::tCoordType(last_rect.mTop / LLUI::sGLScaleFactor.mV[1]);
-				last_rect.mBottom = LLRect::tCoordType(last_rect.mBottom / LLUI::sGLScaleFactor.mV[1]);
+				last_rect.mLeft = LLRect::tCoordType(last_rect.mLeft / LLUI::getScaleFactor().mV[0]);
+				last_rect.mRight = LLRect::tCoordType(last_rect.mRight / LLUI::getScaleFactor().mV[0]);
+				last_rect.mTop = LLRect::tCoordType(last_rect.mTop / LLUI::getScaleFactor().mV[1]);
+				last_rect.mBottom = LLRect::tCoordType(last_rect.mBottom / LLUI::getScaleFactor().mV[1]);
 
 				LLRect clip_rect(last_rect);
 				
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 383eb3c9e4c..db3476850be 100755
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -2157,7 +2157,7 @@ void LLViewerWindow::reshape(S32 width, S32 height)
 
 		calcDisplayScale();
 	
-		BOOL display_scale_changed = mDisplayScale != LLUI::sGLScaleFactor;
+		BOOL display_scale_changed = mDisplayScale != LLUI::getScaleFactor();
 		LLUI::setScaleFactor(mDisplayScale);
 
 		// update our window rectangle
@@ -2363,7 +2363,7 @@ void LLViewerWindow::draw()
 		// scale view by UI global scale factor and aspect ratio correction factor
 		gGL.scaleUI(mDisplayScale.mV[VX], mDisplayScale.mV[VY], 1.f);
 
-		LLVector2 old_scale_factor = LLUI::sGLScaleFactor;
+		LLVector2 old_scale_factor = LLUI::getScaleFactor();
 		// apply camera zoom transform (for high res screenshots)
 		F32 zoom_factor = LLViewerCamera::getInstance()->getZoomFactor();
 		S16 sub_region = LLViewerCamera::getInstance()->getZoomSubRegion();
@@ -2377,7 +2377,7 @@ void LLViewerWindow::draw()
 						(F32)getWindowHeightScaled() * -(F32)pos_y, 
 						0.f);
 			gGL.scalef(zoom_factor, zoom_factor, 1.f);
-			LLUI::sGLScaleFactor *= zoom_factor;
+			LLUI::getScaleFactor() *= zoom_factor;
 		}
 
 		// Draw tool specific overlay on world
@@ -2425,7 +2425,7 @@ void LLViewerWindow::draw()
 				LLFontGL::HCENTER, LLFontGL::TOP);
 		}
 
-		LLUI::sGLScaleFactor = old_scale_factor;
+		LLUI::setScaleFactor(old_scale_factor);
 	}
 	LLUI::popMatrix();
 	gGL.popMatrix();
@@ -3230,8 +3230,8 @@ void LLViewerWindow::updateLayout()
 
 void LLViewerWindow::updateMouseDelta()
 {
-	S32 dx = lltrunc((F32) (mCurrentMousePoint.mX - mLastMousePoint.mX) * LLUI::sGLScaleFactor.mV[VX]);
-	S32 dy = lltrunc((F32) (mCurrentMousePoint.mY - mLastMousePoint.mY) * LLUI::sGLScaleFactor.mV[VY]);
+	S32 dx = lltrunc((F32) (mCurrentMousePoint.mX - mLastMousePoint.mX) * LLUI::getScaleFactor().mV[VX]);
+	S32 dy = lltrunc((F32) (mCurrentMousePoint.mY - mLastMousePoint.mY) * LLUI::getScaleFactor().mV[VY]);
 
 	//RN: fix for asynchronous notification of mouse leaving window not working
 	LLCoordWindow mouse_pos;
diff --git a/indra/newview/llworldmapview.cpp b/indra/newview/llworldmapview.cpp
index ccc513b80d6..ffb0964499c 100644
--- a/indra/newview/llworldmapview.cpp
+++ b/indra/newview/llworldmapview.cpp
@@ -421,7 +421,7 @@ void LLWorldMapView::draw()
 			{
 				// Inform the fetch mechanism of the size we need
 				S32 draw_size = llround(sMapScale);
-				overlayimage->setKnownDrawSize(llround(draw_size * LLUI::sGLScaleFactor.mV[VX]), llround(draw_size * LLUI::sGLScaleFactor.mV[VY]));
+				overlayimage->setKnownDrawSize(llround(draw_size * LLUI::getScaleFactor().mV[VX]), llround(draw_size * LLUI::getScaleFactor().mV[VY]));
 				// Draw something whenever we have enough info
 				if (overlayimage->hasGLTexture())
 				{
@@ -1320,7 +1320,7 @@ void LLWorldMapView::drawTrackingCircle( const LLRect& rect, S32 x, S32 y, const
 
 	gGL.matrixMode(LLRender::MM_MODELVIEW);
 	gGL.pushMatrix();
-	gGL.translatef((F32)x * LLUI::sGLScaleFactor.mV[VX], (F32)y * LLUI::sGLScaleFactor.mV[VY], 0.f);
+	gGL.translatef((F32)x * LLUI::getScaleFactor().mV[VX], (F32)y * LLUI::getScaleFactor().mV[VY], 0.f);
 	gl_washer_segment_2d(inner_radius, outer_radius, start_theta, end_theta, 40, color, color);
 	gGL.popMatrix();
 
-- 
GitLab


From 74055542902b590cd4d7868aa1c14bf4da7c6399 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Wed, 13 Mar 2013 08:49:26 +0000
Subject: [PATCH 357/436] Fixed potential memory leak in LLHTTPClient.  Fixed
 potential hanging http requests in LLHTTPClient.  Fixed munging of "Pragma"
 headers in LLHTTPClientAdapter

---
 indra/llmessage/llhttpclient.cpp        | 15 ++++++++++++---
 indra/llmessage/llhttpclientadapter.cpp |  7 +++++--
 2 files changed, 17 insertions(+), 5 deletions(-)

diff --git a/indra/llmessage/llhttpclient.cpp b/indra/llmessage/llhttpclient.cpp
index 0c325a68aae..46b0311cce3 100644
--- a/indra/llmessage/llhttpclient.cpp
+++ b/indra/llmessage/llhttpclient.cpp
@@ -222,7 +222,11 @@ static void request(
 {
 	if (!LLHTTPClient::hasPump())
 	{
-		responder->completed(U32_MAX, "No pump", LLSD());
+		if (responder)
+		{
+			responder->completed(U32_MAX, "No pump", LLSD());
+		}
+		delete body_injector;
 		return;
 	}
 	LLPumpIO::chain_t chain;
@@ -230,8 +234,13 @@ static void request(
 	LLURLRequest* req = new LLURLRequest(method, url);
 	if(!req->isValid())//failed
 	{
-		delete req ;
-		return ;
+		if (responder)
+		{
+			responder->completed(498, "Internal Error - curl failure");
+		}
+		delete req;
+		delete body_injector;
+		return;
 	}
 
 	req->setSSLVerifyCallback(LLHTTPClient::getCertVerifyCallback(), (void *)req);
diff --git a/indra/llmessage/llhttpclientadapter.cpp b/indra/llmessage/llhttpclientadapter.cpp
index f5d7a9abb60..0b59209af1b 100644
--- a/indra/llmessage/llhttpclientadapter.cpp
+++ b/indra/llmessage/llhttpclientadapter.cpp
@@ -43,8 +43,11 @@ void LLHTTPClientAdapter::get(const std::string& url, LLCurl::ResponderPtr respo
 void LLHTTPClientAdapter::get(const std::string& url, LLCurl::ResponderPtr responder, const LLSD& headers) 
 {
 	LLSD empty_pragma_header = headers;
-	// as above
-	empty_pragma_header["Pragma"] = " ";
+	if (!empty_pragma_header.has("Pragma"))
+	{
+		// as above
+		empty_pragma_header["Pragma"] = " ";
+	}
 	LLHTTPClient::get(url, responder, empty_pragma_header);
 }
 
-- 
GitLab


From 45838b8b07a61af9b85ab9bc3013f1ac867e70d8 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Wed, 13 Mar 2013 11:19:21 -0400
Subject: [PATCH 358/436] fix for build failure

---
 indra/llmessage/llhttpclient.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
 mode change 100644 => 100755 indra/llmessage/llhttpclient.cpp

diff --git a/indra/llmessage/llhttpclient.cpp b/indra/llmessage/llhttpclient.cpp
old mode 100644
new mode 100755
index 46b0311cce3..3561459bb40
--- a/indra/llmessage/llhttpclient.cpp
+++ b/indra/llmessage/llhttpclient.cpp
@@ -236,7 +236,7 @@ static void request(
 	{
 		if (responder)
 		{
-			responder->completed(498, "Internal Error - curl failure");
+			responder->completed(498, "Internal Error - curl failure", LLSD());
 		}
 		delete req;
 		delete body_injector;
-- 
GitLab


From 71f2032caa090efbcd0c4ad1715848ef85ebb304 Mon Sep 17 00:00:00 2001
From: prep <prep@lindenlab.com>
Date: Wed, 13 Mar 2013 13:36:45 -0400
Subject: [PATCH 359/436] Ported sunshine-internal fixes (Commits: 5271cc5 and
 b37c09)

---
 indra/llrender/CMakeLists.txt       |    4 +
 indra/llui/CMakeLists.txt           |    2 -
 indra/llui/llcombobox.cpp           |    2 +-
 indra/llui/lllineeditor.cpp         |    6 +-
 indra/llui/lllocalcliprect.cpp      |    8 +-
 indra/llui/lltextbase.cpp           |    4 +-
 indra/llui/lltexteditor.cpp         |    2 +-
 indra/llui/llui.cpp                 | 1567 +--------------------------
 indra/llui/llui.h                   |  130 +--
 indra/newview/llappviewer.cpp       |    2 +-
 indra/newview/llglsandbox.cpp       |    8 +-
 indra/newview/llmediactrl.cpp       |   18 +-
 indra/newview/lloutputmonitorctrl.h |    2 +-
 indra/newview/llviewerdisplay.cpp   |   10 +-
 indra/newview/llviewerwindow.cpp    |   12 +-
 indra/newview/llworldmapview.cpp    |    4 +-
 16 files changed, 71 insertions(+), 1710 deletions(-)

diff --git a/indra/llrender/CMakeLists.txt b/indra/llrender/CMakeLists.txt
index 904f5587b7f..669b70aa433 100644
--- a/indra/llrender/CMakeLists.txt
+++ b/indra/llrender/CMakeLists.txt
@@ -43,11 +43,13 @@ set(llrender_SOURCE_FILES
     llimagegl.cpp
     llpostprocess.cpp
     llrender.cpp
+    llrender2dutils.cpp
     llrendernavprim.cpp
     llrendersphere.cpp
     llrendertarget.cpp
     llshadermgr.cpp
     lltexture.cpp
+    lluiimage.cpp
     llvertexbuffer.cpp
     )
     
@@ -69,10 +71,12 @@ set(llrender_HEADER_FILES
     llimagegl.h
     llpostprocess.h
     llrender.h
+    llrender2dutils.h
     llrendernavprim.h
     llrendersphere.h
     llshadermgr.h
     lltexture.h
+    lluiimage.h
     llvertexbuffer.h
     )
 
diff --git a/indra/llui/CMakeLists.txt b/indra/llui/CMakeLists.txt
index 01c42e07a2d..34a08603fab 100644
--- a/indra/llui/CMakeLists.txt
+++ b/indra/llui/CMakeLists.txt
@@ -117,7 +117,6 @@ set(llui_SOURCE_FILES
     lluicolortable.cpp
     lluictrl.cpp
     lluictrlfactory.cpp
-	lluiimage.cpp
     lluistring.cpp
     llundo.cpp
     llurlaction.cpp
@@ -231,7 +230,6 @@ set(llui_HEADER_FILES
     lluifwd.h
     llui.h
     lluicolor.h
-	lluiimage.h
     lluistring.h
     llundo.h
     llurlaction.h
diff --git a/indra/llui/llcombobox.cpp b/indra/llui/llcombobox.cpp
index 41e5d74042f..d4e14d94190 100644
--- a/indra/llui/llcombobox.cpp
+++ b/indra/llui/llcombobox.cpp
@@ -551,7 +551,7 @@ void LLComboBox::showList()
 	LLCoordWindow window_size;
 	getWindow()->getSize(&window_size);
 	//HACK: shouldn't have to know about scale here
-	mList->fitContents( 192, llfloor((F32)window_size.mY / LLUI::sGLScaleFactor.mV[VY]) - 50 );
+	mList->fitContents( 192, llfloor((F32)window_size.mY / LLUI::getScaleFactor().mV[VY]) - 50 );
 
 	// Make sure that we can see the whole list
 	LLRect root_view_local;
diff --git a/indra/llui/lllineeditor.cpp b/indra/llui/lllineeditor.cpp
index 2e64be89fae..f8b84e39b58 100644
--- a/indra/llui/lllineeditor.cpp
+++ b/indra/llui/lllineeditor.cpp
@@ -2015,8 +2015,8 @@ void LLLineEditor::draw()
 				LLRect screen_pos = calcScreenRect();
 				LLCoordGL ime_pos( screen_pos.mLeft + pixels_after_scroll, screen_pos.mTop - lineeditor_v_pad );
 
-				ime_pos.mX = (S32) (ime_pos.mX * LLUI::sGLScaleFactor.mV[VX]);
-				ime_pos.mY = (S32) (ime_pos.mY * LLUI::sGLScaleFactor.mV[VY]);
+				ime_pos.mX = (S32) (ime_pos.mX * LLUI::getScaleFactor().mV[VX]);
+				ime_pos.mY = (S32) (ime_pos.mY * LLUI::getScaleFactor().mV[VY]);
 				getWindow()->setLanguageTextInput( ime_pos );
 			}
 		}
@@ -2563,7 +2563,7 @@ void LLLineEditor::markAsPreedit(S32 position, S32 length)
 
 S32 LLLineEditor::getPreeditFontSize() const
 {
-	return llround(mGLFont->getLineHeight() * LLUI::sGLScaleFactor.mV[VY]);
+	return llround(mGLFont->getLineHeight() * LLUI::getScaleFactor().mV[VY]);
 }
 
 void LLLineEditor::setReplaceNewlinesWithSpaces(BOOL replace)
diff --git a/indra/llui/lllocalcliprect.cpp b/indra/llui/lllocalcliprect.cpp
index 31ceb0766a5..0620e0f52d9 100644
--- a/indra/llui/lllocalcliprect.cpp
+++ b/indra/llui/lllocalcliprect.cpp
@@ -88,10 +88,10 @@ void LLScreenClipRect::updateScissorRegion()
 	LLRect rect = sClipRectStack.top();
 	stop_glerror();
 	S32 x,y,w,h;
-	x = llfloor(rect.mLeft * LLUI::sGLScaleFactor.mV[VX]);
-	y = llfloor(rect.mBottom * LLUI::sGLScaleFactor.mV[VY]);
-	w = llmax(0, llceil(rect.getWidth() * LLUI::sGLScaleFactor.mV[VX])) + 1;
-	h = llmax(0, llceil(rect.getHeight() * LLUI::sGLScaleFactor.mV[VY])) + 1;
+	x = llfloor(rect.mLeft * LLUI::getScaleFactor().mV[VX]);
+	y = llfloor(rect.mBottom * LLUI::getScaleFactor().mV[VY]);
+	w = llmax(0, llceil(rect.getWidth() * LLUI::getScaleFactor().mV[VX])) + 1;
+	h = llmax(0, llceil(rect.getHeight() * LLUI::getScaleFactor().mV[VY])) + 1;
 	glScissor( x,y,w,h );
 	stop_glerror();
 }
diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp
index 7cee9f5b462..e22b806a746 100644
--- a/indra/llui/lltextbase.cpp
+++ b/indra/llui/lltextbase.cpp
@@ -521,8 +521,8 @@ void LLTextBase::drawCursor()
 			LLRect screen_pos = calcScreenRect();
 			LLCoordGL ime_pos( screen_pos.mLeft + llfloor(cursor_rect.mLeft), screen_pos.mBottom + llfloor(cursor_rect.mTop) );
 
-			ime_pos.mX = (S32) (ime_pos.mX * LLUI::sGLScaleFactor.mV[VX]);
-			ime_pos.mY = (S32) (ime_pos.mY * LLUI::sGLScaleFactor.mV[VY]);
+			ime_pos.mX = (S32) (ime_pos.mX * LLUI::getScaleFactor().mV[VX]);
+			ime_pos.mY = (S32) (ime_pos.mY * LLUI::getScaleFactor().mV[VY]);
 			getWindow()->setLanguageTextInput( ime_pos );
 		}
 	}
diff --git a/indra/llui/lltexteditor.cpp b/indra/llui/lltexteditor.cpp
index d5e08fa29b6..3dc1b99edb7 100644
--- a/indra/llui/lltexteditor.cpp
+++ b/indra/llui/lltexteditor.cpp
@@ -2911,7 +2911,7 @@ void LLTextEditor::markAsPreedit(S32 position, S32 length)
 
 S32 LLTextEditor::getPreeditFontSize() const
 {
-	return llround((F32)mFont->getLineHeight() * LLUI::sGLScaleFactor.mV[VY]);
+	return llround((F32)mFont->getLineHeight() * LLUI::getScaleFactor().mV[VY]);
 }
 
 BOOL LLTextEditor::isDirty() const
diff --git a/indra/llui/llui.cpp b/indra/llui/llui.cpp
index 2a774d54a3a..0ddb1497383 100644
--- a/indra/llui/llui.cpp
+++ b/indra/llui/llui.cpp
@@ -39,6 +39,7 @@
 #include "llrect.h"
 #include "lldir.h"
 #include "llgl.h"
+#include "llsd.h"
 
 // Project includes
 #include "llcommandmanager.h"
@@ -69,16 +70,13 @@
 //
 // Globals
 //
-const LLColor4 UI_VERTEX_COLOR(1.f, 1.f, 1.f, 1.f);
 
 // Language for UI construction
 std::map<std::string, std::string> gTranslation;
 std::list<std::string> gUntranslated;
 /*static*/ LLUI::settings_map_t LLUI::sSettingGroups;
-/*static*/ LLImageProviderInterface* LLUI::sImageProvider = NULL;
 /*static*/ LLUIAudioCallback LLUI::sAudioCallback = NULL;
 /*static*/ LLUIAudioCallback LLUI::sDeferredAudioCallback = NULL;
-/*static*/ LLVector2		LLUI::sGLScaleFactor(1.f, 1.f);
 /*static*/ LLWindow*		LLUI::sWindow = NULL;
 /*static*/ LLView*			LLUI::sRootView = NULL;
 /*static*/ BOOL                         LLUI::sDirty = FALSE;
@@ -158,1474 +156,6 @@ void make_ui_sound_deferred(const char* namep)
 	}
 }
 
-BOOL ui_point_in_rect(S32 x, S32 y, S32 left, S32 top, S32 right, S32 bottom)
-{
-	if (x < left || right < x) return FALSE;
-	if (y < bottom || top < y) return FALSE;
-	return TRUE;
-}
-
-
-// Puts GL into 2D drawing mode by turning off lighting, setting to an
-// orthographic projection, etc.
-void gl_state_for_2d(S32 width, S32 height)
-{
-	stop_glerror();
-	F32 window_width = (F32) width;//gViewerWindow->getWindowWidth();
-	F32 window_height = (F32) height;//gViewerWindow->getWindowHeight();
-
-	gGL.matrixMode(LLRender::MM_PROJECTION);
-	gGL.loadIdentity();
-	gGL.ortho(0.0f, llmax(window_width, 1.f), 0.0f, llmax(window_height,1.f), -1.0f, 1.0f);
-	gGL.matrixMode(LLRender::MM_MODELVIEW);
-	gGL.loadIdentity();
-	stop_glerror();
-}
-
-
-void gl_draw_x(const LLRect& rect, const LLColor4& color)
-{
-	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
-
-	gGL.color4fv( color.mV );
-
-	gGL.begin( LLRender::LINES );
-		gGL.vertex2i( rect.mLeft,		rect.mTop );
-		gGL.vertex2i( rect.mRight,	rect.mBottom );
-		gGL.vertex2i( rect.mLeft,		rect.mBottom );
-		gGL.vertex2i( rect.mRight,	rect.mTop );
-	gGL.end();
-}
-
-
-void gl_rect_2d_offset_local( S32 left, S32 top, S32 right, S32 bottom, const LLColor4 &color, S32 pixel_offset, BOOL filled)
-{
-	gGL.color4fv(color.mV);
-	gl_rect_2d_offset_local(left, top, right, bottom, pixel_offset, filled);
-}
-
-void gl_rect_2d_offset_local( S32 left, S32 top, S32 right, S32 bottom, S32 pixel_offset, BOOL filled)
-{
-	gGL.pushUIMatrix();
-	left += LLFontGL::sCurOrigin.mX;
-	right += LLFontGL::sCurOrigin.mX;
-	bottom += LLFontGL::sCurOrigin.mY;
-	top += LLFontGL::sCurOrigin.mY;
-
-	gGL.loadUIIdentity();
-	gl_rect_2d(llfloor((F32)left * LLUI::sGLScaleFactor.mV[VX]) - pixel_offset,
-				llfloor((F32)top * LLUI::sGLScaleFactor.mV[VY]) + pixel_offset,
-				llfloor((F32)right * LLUI::sGLScaleFactor.mV[VX]) + pixel_offset,
-				llfloor((F32)bottom * LLUI::sGLScaleFactor.mV[VY]) - pixel_offset,
-				filled);
-	gGL.popUIMatrix();
-}
-
-
-void gl_rect_2d(S32 left, S32 top, S32 right, S32 bottom, BOOL filled )
-{
-	stop_glerror();
-	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
-
-	// Counterclockwise quad will face the viewer
-	if( filled )
-	{ 
-		gGL.begin( LLRender::QUADS );
-			gGL.vertex2i(left, top);
-			gGL.vertex2i(left, bottom);
-			gGL.vertex2i(right, bottom);
-			gGL.vertex2i(right, top);
-		gGL.end();
-	}
-	else
-	{
-		if( gGLManager.mATIOffsetVerticalLines )
-		{
-			// Work around bug in ATI driver: vertical lines are offset by (-1,-1)
-			gGL.begin( LLRender::LINES );
-
-				// Verticals 
-				gGL.vertex2i(left + 1, top);
-				gGL.vertex2i(left + 1, bottom);
-
-				gGL.vertex2i(right, bottom);
-				gGL.vertex2i(right, top);
-
-				// Horizontals
-				top--;
-				right--;
-				gGL.vertex2i(left, bottom);
-				gGL.vertex2i(right, bottom);
-
-				gGL.vertex2i(left, top);
-				gGL.vertex2i(right, top);
-			gGL.end();
-		}
-		else
-		{
-			top--;
-			right--;
-			gGL.begin( LLRender::LINE_STRIP );
-				gGL.vertex2i(left, top);
-				gGL.vertex2i(left, bottom);
-				gGL.vertex2i(right, bottom);
-				gGL.vertex2i(right, top);
-				gGL.vertex2i(left, top);
-			gGL.end();
-		}
-	}
-	stop_glerror();
-}
-
-void gl_rect_2d(S32 left, S32 top, S32 right, S32 bottom, const LLColor4 &color, BOOL filled )
-{
-	gGL.color4fv( color.mV );
-	gl_rect_2d( left, top, right, bottom, filled );
-}
-
-
-void gl_rect_2d( const LLRect& rect, const LLColor4& color, BOOL filled )
-{
-	gGL.color4fv( color.mV );
-	gl_rect_2d( rect.mLeft, rect.mTop, rect.mRight, rect.mBottom, filled );
-}
-
-// Given a rectangle on the screen, draws a drop shadow _outside_
-// the right and bottom edges of it.  Along the right it has width "lines"
-// and along the bottom it has height "lines".
-void gl_drop_shadow(S32 left, S32 top, S32 right, S32 bottom, const LLColor4 &start_color, S32 lines)
-{
-	stop_glerror();
-	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
-	
-	// HACK: Overlap with the rectangle by a single pixel.
-	right--;
-	bottom++;
-	lines++;
-
-	LLColor4 end_color = start_color;
-	end_color.mV[VALPHA] = 0.f;
-
-	gGL.begin(LLRender::QUADS);
-
-	// Right edge, CCW faces screen
-	gGL.color4fv(start_color.mV);
-	gGL.vertex2i(right,		top-lines);
-	gGL.vertex2i(right,		bottom);
-	gGL.color4fv(end_color.mV);
-	gGL.vertex2i(right+lines, bottom);
-	gGL.vertex2i(right+lines, top-lines);
-
-	// Bottom edge, CCW faces screen
-	gGL.color4fv(start_color.mV);
-	gGL.vertex2i(right,		bottom);
-	gGL.vertex2i(left+lines,	bottom);
-	gGL.color4fv(end_color.mV);
-	gGL.vertex2i(left+lines,	bottom-lines);
-	gGL.vertex2i(right,		bottom-lines);
-
-	// bottom left Corner
-	gGL.color4fv(start_color.mV);
-	gGL.vertex2i(left+lines,	bottom);
-	gGL.color4fv(end_color.mV);
-	gGL.vertex2i(left,		bottom);
-	// make the bottom left corner not sharp
-	gGL.vertex2i(left+1,		bottom-lines+1);
-	gGL.vertex2i(left+lines,	bottom-lines);
-
-	// bottom right corner
-	gGL.color4fv(start_color.mV);
-	gGL.vertex2i(right,		bottom);
-	gGL.color4fv(end_color.mV);
-	gGL.vertex2i(right,		bottom-lines);
-	// make the rightmost corner not sharp
-	gGL.vertex2i(right+lines-1,	bottom-lines+1);
-	gGL.vertex2i(right+lines,	bottom);
-
-	// top right corner
-	gGL.color4fv(start_color.mV);
-	gGL.vertex2i( right,			top-lines );
-	gGL.color4fv(end_color.mV);
-	gGL.vertex2i( right+lines,	top-lines );
-	// make the corner not sharp
-	gGL.vertex2i( right+lines-1,	top-1 );
-	gGL.vertex2i( right,			top );
-
-	gGL.end();
-	stop_glerror();
-}
-
-void gl_line_2d(S32 x1, S32 y1, S32 x2, S32 y2 )
-{
-	// Work around bug in ATI driver: vertical lines are offset by (-1,-1)
-	if( (x1 == x2) && gGLManager.mATIOffsetVerticalLines )
-	{
-		x1++;
-		x2++;
-		y1++;
-		y2++;
-	}
-
-	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
-	
-	gGL.begin(LLRender::LINES);
-		gGL.vertex2i(x1, y1);
-		gGL.vertex2i(x2, y2);
-	gGL.end();
-}
-
-void gl_line_2d(S32 x1, S32 y1, S32 x2, S32 y2, const LLColor4 &color )
-{
-	// Work around bug in ATI driver: vertical lines are offset by (-1,-1)
-	if( (x1 == x2) && gGLManager.mATIOffsetVerticalLines )
-	{
-		x1++;
-		x2++;
-		y1++;
-		y2++;
-	}
-
-	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
-
-	gGL.color4fv( color.mV );
-
-	gGL.begin(LLRender::LINES);
-		gGL.vertex2i(x1, y1);
-		gGL.vertex2i(x2, y2);
-	gGL.end();
-}
-
-void gl_triangle_2d(S32 x1, S32 y1, S32 x2, S32 y2, S32 x3, S32 y3, const LLColor4& color, BOOL filled)
-{
-	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
-
-	gGL.color4fv(color.mV);
-
-	if (filled)
-	{
-		gGL.begin(LLRender::TRIANGLES);
-	}
-	else
-	{
-		gGL.begin(LLRender::LINE_LOOP);
-	}
-	gGL.vertex2i(x1, y1);
-	gGL.vertex2i(x2, y2);
-	gGL.vertex2i(x3, y3);
-	gGL.end();
-}
-
-void gl_corners_2d(S32 left, S32 top, S32 right, S32 bottom, S32 length, F32 max_frac)
-{
-	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
-
-	length = llmin((S32)(max_frac*(right - left)), length);
-	length = llmin((S32)(max_frac*(top - bottom)), length);
-	gGL.begin(LLRender::LINES);
-	gGL.vertex2i(left, top);
-	gGL.vertex2i(left + length, top);
-	
-	gGL.vertex2i(left, top);
-	gGL.vertex2i(left, top - length);
-
-	gGL.vertex2i(left, bottom);
-	gGL.vertex2i(left + length, bottom);
-	
-	gGL.vertex2i(left, bottom);
-	gGL.vertex2i(left, bottom + length);
-
-	gGL.vertex2i(right, top);
-	gGL.vertex2i(right - length, top);
-
-	gGL.vertex2i(right, top);
-	gGL.vertex2i(right, top - length);
-
-	gGL.vertex2i(right, bottom);
-	gGL.vertex2i(right - length, bottom);
-
-	gGL.vertex2i(right, bottom);
-	gGL.vertex2i(right, bottom + length);
-	gGL.end();
-}
-
-
-void gl_draw_image( S32 x, S32 y, LLTexture* image, const LLColor4& color, const LLRectf& uv_rect )
-{
-	if (NULL == image)
-	{
-		llwarns << "image == NULL; aborting function" << llendl;
-		return;
-	}
-	gl_draw_scaled_rotated_image( x, y, image->getWidth(0), image->getHeight(0), 0.f, image, color, uv_rect );
-}
-
-void gl_draw_scaled_image(S32 x, S32 y, S32 width, S32 height, LLTexture* image, const LLColor4& color, const LLRectf& uv_rect)
-{
-	if (NULL == image)
-	{
-		llwarns << "image == NULL; aborting function" << llendl;
-		return;
-	}
-	gl_draw_scaled_rotated_image( x, y, width, height, 0.f, image, color, uv_rect );
-}
-
-void gl_draw_scaled_image_with_border(S32 x, S32 y, S32 border_width, S32 border_height, S32 width, S32 height, LLTexture* image, const LLColor4& color, BOOL solid_color, const LLRectf& uv_rect)
-{
-	if (NULL == image)
-	{
-		llwarns << "image == NULL; aborting function" << llendl;
-		return;
-	}
-
-	// scale screen size of borders down
-	F32 border_width_fraction = (F32)border_width / (F32)image->getWidth(0);
-	F32 border_height_fraction = (F32)border_height / (F32)image->getHeight(0);
-
-	LLRectf scale_rect(border_width_fraction, 1.f - border_height_fraction, 1.f - border_width_fraction, border_height_fraction);
-	gl_draw_scaled_image_with_border(x, y, width, height, image, color, solid_color, uv_rect, scale_rect);
-}
-
-void gl_draw_scaled_image_with_border(S32 x, S32 y, S32 width, S32 height, LLTexture* image, const LLColor4& color, BOOL solid_color, const LLRectf& uv_outer_rect, const LLRectf& center_rect)
-{
-	stop_glerror();
-
-	if (NULL == image)
-	{
-		llwarns << "image == NULL; aborting function" << llendl;
-		return;
-	}
-
-	// add in offset of current image to current UI translation
-	const LLVector3 ui_scale = gGL.getUIScale();
-	const LLVector3 ui_translation = (gGL.getUITranslation() + LLVector3(x, y, 0.f)).scaledVec(ui_scale);
-
-	F32 uv_width = uv_outer_rect.getWidth();
-	F32 uv_height = uv_outer_rect.getHeight();
-
-	// shrink scaling region to be proportional to clipped image region
-	LLRectf uv_center_rect(
-		uv_outer_rect.mLeft + (center_rect.mLeft * uv_width),
-		uv_outer_rect.mBottom + (center_rect.mTop * uv_height),
-		uv_outer_rect.mLeft + (center_rect.mRight * uv_width),
-		uv_outer_rect.mBottom + (center_rect.mBottom * uv_height));
-
-	F32 image_width = image->getWidth(0);
-	F32 image_height = image->getHeight(0);
-
-	S32 image_natural_width = llround(image_width * uv_width);
-	S32 image_natural_height = llround(image_height * uv_height);
-
-	LLRectf draw_center_rect(	uv_center_rect.mLeft * image_width,
-								uv_center_rect.mTop * image_height,
-								uv_center_rect.mRight * image_width,
-								uv_center_rect.mBottom * image_height);
-
-	{	// scale fixed region of image to drawn region
-		draw_center_rect.mRight += width - image_natural_width;
-		draw_center_rect.mTop += height - image_natural_height;
-
-		F32 border_shrink_width = llmax(0.f, draw_center_rect.mLeft - draw_center_rect.mRight);
-		F32 border_shrink_height = llmax(0.f, draw_center_rect.mBottom - draw_center_rect.mTop);
-
-		F32 shrink_width_ratio = center_rect.getWidth() == 1.f ? 0.f : border_shrink_width / ((F32)image_natural_width * (1.f - center_rect.getWidth()));
-		F32 shrink_height_ratio = center_rect.getHeight() == 1.f ? 0.f : border_shrink_height / ((F32)image_natural_height * (1.f - center_rect.getHeight()));
-
-		F32 shrink_scale = 1.f - llmax(shrink_width_ratio, shrink_height_ratio);
-
-		draw_center_rect.mLeft = llround(ui_translation.mV[VX] + (F32)draw_center_rect.mLeft * shrink_scale * ui_scale.mV[VX]);
-		draw_center_rect.mTop = llround(ui_translation.mV[VY] + lerp((F32)height, (F32)draw_center_rect.mTop, shrink_scale) * ui_scale.mV[VY]);
-		draw_center_rect.mRight = llround(ui_translation.mV[VX] + lerp((F32)width, (F32)draw_center_rect.mRight, shrink_scale) * ui_scale.mV[VX]);
-		draw_center_rect.mBottom = llround(ui_translation.mV[VY] + (F32)draw_center_rect.mBottom * shrink_scale * ui_scale.mV[VY]);
-	}
-
-	LLRectf draw_outer_rect(ui_translation.mV[VX], 
-							ui_translation.mV[VY] + height * ui_scale.mV[VY], 
-							ui_translation.mV[VX] + width * ui_scale.mV[VX], 
-							ui_translation.mV[VY]);
-
-	LLGLSUIDefault gls_ui;
-	
-	if (solid_color)
-	{
-		if (LLGLSLShader::sNoFixedFunction)
-		{
-			gSolidColorProgram.bind();
-		}
-		else
-		{
-			gGL.getTexUnit(0)->setTextureColorBlend(LLTexUnit::TBO_REPLACE, LLTexUnit::TBS_PREV_COLOR);
-			gGL.getTexUnit(0)->setTextureAlphaBlend(LLTexUnit::TBO_MULT, LLTexUnit::TBS_TEX_ALPHA, LLTexUnit::TBS_VERT_ALPHA);
-		}
-	}
-
-	gGL.getTexUnit(0)->bind(image, true);
-
-	gGL.color4fv(color.mV);
-	
-	const S32 NUM_VERTICES = 9 * 4; // 9 quads
-	LLVector2 uv[NUM_VERTICES];
-	LLVector3 pos[NUM_VERTICES];
-
-	S32 index = 0;
-
-	gGL.begin(LLRender::QUADS);
-	{
-		// draw bottom left
-		uv[index] = LLVector2(uv_outer_rect.mLeft, uv_outer_rect.mBottom);
-		pos[index] = LLVector3(draw_outer_rect.mLeft, draw_outer_rect.mBottom, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_center_rect.mLeft, uv_outer_rect.mBottom);
-		pos[index] = LLVector3(draw_center_rect.mLeft, draw_outer_rect.mBottom, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mBottom);
-		pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mBottom, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_outer_rect.mLeft, uv_center_rect.mBottom);
-		pos[index] = LLVector3(draw_outer_rect.mLeft, draw_center_rect.mBottom, 0.f);
-		index++;
-
-		// draw bottom middle
-		uv[index] = LLVector2(uv_center_rect.mLeft, uv_outer_rect.mBottom);
-		pos[index] = LLVector3(draw_center_rect.mLeft, draw_outer_rect.mBottom, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_center_rect.mRight, uv_outer_rect.mBottom);
-		pos[index] = LLVector3(draw_center_rect.mRight, draw_outer_rect.mBottom, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mBottom);
-		pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mBottom, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mBottom);
-		pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mBottom, 0.f);
-		index++;
-
-		// draw bottom right
-		uv[index] = LLVector2(uv_center_rect.mRight, uv_outer_rect.mBottom);
-		pos[index] = LLVector3(draw_center_rect.mRight, draw_outer_rect.mBottom, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_outer_rect.mRight, uv_outer_rect.mBottom);
-		pos[index] = LLVector3(draw_outer_rect.mRight, draw_outer_rect.mBottom, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_outer_rect.mRight, uv_center_rect.mBottom);
-		pos[index] = LLVector3(draw_outer_rect.mRight, draw_center_rect.mBottom, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mBottom);
-		pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mBottom, 0.f);
-		index++;
-
-		// draw left 
-		uv[index] = LLVector2(uv_outer_rect.mLeft, uv_center_rect.mBottom);
-		pos[index] = LLVector3(draw_outer_rect.mLeft, draw_center_rect.mBottom, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mBottom);
-		pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mBottom, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mTop);
-		pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mTop, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_outer_rect.mLeft, uv_center_rect.mTop);
-		pos[index] = LLVector3(draw_outer_rect.mLeft, draw_center_rect.mTop, 0.f);
-		index++;
-
-		// draw middle
-		uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mBottom);
-		pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mBottom, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mBottom);
-		pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mBottom, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mTop);
-		pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mTop, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mTop);
-		pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mTop, 0.f);
-		index++;
-
-		// draw right 
-		uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mBottom);
-		pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mBottom, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_outer_rect.mRight, uv_center_rect.mBottom);
-		pos[index] = LLVector3(draw_outer_rect.mRight, draw_center_rect.mBottom, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_outer_rect.mRight, uv_center_rect.mTop);
-		pos[index] = LLVector3(draw_outer_rect.mRight, draw_center_rect.mTop, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mTop);
-		pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mTop, 0.f);
-		index++;
-
-		// draw top left
-		uv[index] = LLVector2(uv_outer_rect.mLeft, uv_center_rect.mTop);
-		pos[index] = LLVector3(draw_outer_rect.mLeft, draw_center_rect.mTop, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mTop);
-		pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mTop, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_center_rect.mLeft, uv_outer_rect.mTop);
-		pos[index] = LLVector3(draw_center_rect.mLeft, draw_outer_rect.mTop, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_outer_rect.mLeft, uv_outer_rect.mTop);
-		pos[index] = LLVector3(draw_outer_rect.mLeft, draw_outer_rect.mTop, 0.f);
-		index++;
-
-		// draw top middle
-		uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mTop);
-		pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mTop, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mTop);
-		pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mTop, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_center_rect.mRight, uv_outer_rect.mTop);
-		pos[index] = LLVector3(draw_center_rect.mRight, draw_outer_rect.mTop, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_center_rect.mLeft, uv_outer_rect.mTop);
-		pos[index] = LLVector3(draw_center_rect.mLeft, draw_outer_rect.mTop, 0.f);
-		index++;
-
-		// draw top right
-		uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mTop);
-		pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mTop, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_outer_rect.mRight, uv_center_rect.mTop);
-		pos[index] = LLVector3(draw_outer_rect.mRight, draw_center_rect.mTop, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_outer_rect.mRight, uv_outer_rect.mTop);
-		pos[index] = LLVector3(draw_outer_rect.mRight, draw_outer_rect.mTop, 0.f);
-		index++;
-
-		uv[index] = LLVector2(uv_center_rect.mRight, uv_outer_rect.mTop);
-		pos[index] = LLVector3(draw_center_rect.mRight, draw_outer_rect.mTop, 0.f);
-		index++;
-
-		gGL.vertexBatchPreTransformed(pos, uv, NUM_VERTICES);
-	}
-	gGL.end();
-
-	if (solid_color)
-	{
-		if (LLGLSLShader::sNoFixedFunction)
-		{
-			gUIProgram.bind();
-		}
-		else
-		{
-			gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
-		}
-	}
-}
-
-void gl_draw_rotated_image(S32 x, S32 y, F32 degrees, LLTexture* image, const LLColor4& color, const LLRectf& uv_rect)
-{
-	gl_draw_scaled_rotated_image( x, y, image->getWidth(0), image->getHeight(0), degrees, image, color, uv_rect );
-}
-
-void gl_draw_scaled_rotated_image(S32 x, S32 y, S32 width, S32 height, F32 degrees, LLTexture* image, const LLColor4& color, const LLRectf& uv_rect)
-{
-	if (NULL == image)
-	{
-		llwarns << "image == NULL; aborting function" << llendl;
-		return;
-	}
-
-	LLGLSUIDefault gls_ui;
-
-
-	gGL.getTexUnit(0)->bind(image, true);
-
-	gGL.color4fv(color.mV);
-
-	if (degrees == 0.f)
-	{
-		const S32 NUM_VERTICES = 4; // 9 quads
-		LLVector2 uv[NUM_VERTICES];
-		LLVector3 pos[NUM_VERTICES];
-
-		gGL.begin(LLRender::QUADS);
-		{
-			LLVector3 ui_scale = gGL.getUIScale();
-			LLVector3 ui_translation = gGL.getUITranslation();
-			ui_translation.mV[VX] += x;
-			ui_translation.mV[VY] += y;
-			ui_translation.scaleVec(ui_scale);
-			S32 index = 0;
-			S32 scaled_width = llround(width * ui_scale.mV[VX]);
-			S32 scaled_height = llround(height * ui_scale.mV[VY]);
-
-			uv[index] = LLVector2(uv_rect.mRight, uv_rect.mTop);
-			pos[index] = LLVector3(ui_translation.mV[VX] + scaled_width, ui_translation.mV[VY] + scaled_height, 0.f);
-			index++;
-
-			uv[index] = LLVector2(uv_rect.mLeft, uv_rect.mTop);
-			pos[index] = LLVector3(ui_translation.mV[VX], ui_translation.mV[VY] + scaled_height, 0.f);
-			index++;
-
-			uv[index] = LLVector2(uv_rect.mLeft, uv_rect.mBottom);
-			pos[index] = LLVector3(ui_translation.mV[VX], ui_translation.mV[VY], 0.f);
-			index++;
-
-			uv[index] = LLVector2(uv_rect.mRight, uv_rect.mBottom);
-			pos[index] = LLVector3(ui_translation.mV[VX] + scaled_width, ui_translation.mV[VY], 0.f);
-			index++;
-
-			gGL.vertexBatchPreTransformed(pos, uv, NUM_VERTICES);
-		}
-		gGL.end();
-	}
-	else
-	{
-		gGL.pushUIMatrix();
-		gGL.translateUI((F32)x, (F32)y, 0.f);
-	
-		F32 offset_x = F32(width/2);
-		F32 offset_y = F32(height/2);
-
-		gGL.translateUI(offset_x, offset_y, 0.f);
-
-		LLMatrix3 quat(0.f, 0.f, degrees*DEG_TO_RAD);
-		
-		gGL.getTexUnit(0)->bind(image, true);
-
-		gGL.color4fv(color.mV);
-		
-		gGL.begin(LLRender::QUADS);
-		{
-			LLVector3 v;
-
-			v = LLVector3(offset_x, offset_y, 0.f) * quat;
-			gGL.texCoord2f(uv_rect.mRight, uv_rect.mTop);
-			gGL.vertex2f(v.mV[0], v.mV[1] );
-
-			v = LLVector3(-offset_x, offset_y, 0.f) * quat;
-			gGL.texCoord2f(uv_rect.mLeft, uv_rect.mTop);
-			gGL.vertex2f(v.mV[0], v.mV[1] );
-
-			v = LLVector3(-offset_x, -offset_y, 0.f) * quat;
-			gGL.texCoord2f(uv_rect.mLeft, uv_rect.mBottom);
-			gGL.vertex2f(v.mV[0], v.mV[1] );
-
-			v = LLVector3(offset_x, -offset_y, 0.f) * quat;
-			gGL.texCoord2f(uv_rect.mRight, uv_rect.mBottom);
-			gGL.vertex2f(v.mV[0], v.mV[1] );
-		}
-		gGL.end();
-		gGL.popUIMatrix();
-	}
-}
-
-
-void gl_stippled_line_3d( const LLVector3& start, const LLVector3& end, const LLColor4& color, F32 phase )
-{
-	phase = fmod(phase, 1.f);
-
-	S32 shift = S32(phase * 4.f) % 4;
-
-	// Stippled line
-	LLGLEnable stipple(GL_LINE_STIPPLE);
-	
-	gGL.color4f(color.mV[VRED], color.mV[VGREEN], color.mV[VBLUE], color.mV[VALPHA]);
-
-	gGL.flush();
-	glLineWidth(2.5f);
-
-	if (!LLGLSLShader::sNoFixedFunction)
-	{
-		glLineStipple(2, 0x3333 << shift);
-	}
-
-	gGL.begin(LLRender::LINES);
-	{
-		gGL.vertex3fv( start.mV );
-		gGL.vertex3fv( end.mV );
-	}
-	gGL.end();
-
-	LLUI::setLineWidth(1.f);
-}
-
-void gl_arc_2d(F32 center_x, F32 center_y, F32 radius, S32 steps, BOOL filled, F32 start_angle, F32 end_angle)
-{
-	if (end_angle < start_angle)
-	{
-		end_angle += F_TWO_PI;
-	}
-
-	gGL.pushUIMatrix();
-	{
-		gGL.translateUI(center_x, center_y, 0.f);
-
-		// Inexact, but reasonably fast.
-		F32 delta = (end_angle - start_angle) / steps;
-		F32 sin_delta = sin( delta );
-		F32 cos_delta = cos( delta );
-		F32 x = cosf(start_angle) * radius;
-		F32 y = sinf(start_angle) * radius;
-
-		if (filled)
-		{
-			gGL.begin(LLRender::TRIANGLE_FAN);
-			gGL.vertex2f(0.f, 0.f);
-			// make sure circle is complete
-			steps += 1;
-		}
-		else
-		{
-			gGL.begin(LLRender::LINE_STRIP);
-		}
-
-		while( steps-- )
-		{
-			// Successive rotations
-			gGL.vertex2f( x, y );
-			F32 x_new = x * cos_delta - y * sin_delta;
-			y = x * sin_delta +  y * cos_delta;
-			x = x_new;
-		}
-		gGL.end();
-	}
-	gGL.popUIMatrix();
-}
-
-void gl_circle_2d(F32 center_x, F32 center_y, F32 radius, S32 steps, BOOL filled)
-{
-	gGL.pushUIMatrix();
-	{
-		gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
-		gGL.translateUI(center_x, center_y, 0.f);
-
-		// Inexact, but reasonably fast.
-		F32 delta = F_TWO_PI / steps;
-		F32 sin_delta = sin( delta );
-		F32 cos_delta = cos( delta );
-		F32 x = radius;
-		F32 y = 0.f;
-
-		if (filled)
-		{
-			gGL.begin(LLRender::TRIANGLE_FAN);
-			gGL.vertex2f(0.f, 0.f);
-			// make sure circle is complete
-			steps += 1;
-		}
-		else
-		{
-			gGL.begin(LLRender::LINE_LOOP);
-		}
-
-		while( steps-- )
-		{
-			// Successive rotations
-			gGL.vertex2f( x, y );
-			F32 x_new = x * cos_delta - y * sin_delta;
-			y = x * sin_delta +  y * cos_delta;
-			x = x_new;
-		}
-		gGL.end();
-	}
-	gGL.popUIMatrix();
-}
-
-// Renders a ring with sides (tube shape)
-void gl_deep_circle( F32 radius, F32 depth, S32 steps )
-{
-	F32 x = radius;
-	F32 y = 0.f;
-	F32 angle_delta = F_TWO_PI / (F32)steps;
-	gGL.begin( LLRender::TRIANGLE_STRIP  );
-	{
-		S32 step = steps + 1; // An extra step to close the circle.
-		while( step-- )
-		{
-			gGL.vertex3f( x, y, depth );
-			gGL.vertex3f( x, y, 0.f );
-
-			F32 x_new = x * cosf(angle_delta) - y * sinf(angle_delta);
-			y = x * sinf(angle_delta) +  y * cosf(angle_delta);
-			x = x_new;
-		}
-	}
-	gGL.end();
-}
-
-void gl_ring( F32 radius, F32 width, const LLColor4& center_color, const LLColor4& side_color, S32 steps, BOOL render_center )
-{
-	gGL.pushUIMatrix();
-	{
-		gGL.translateUI(0.f, 0.f, -width / 2);
-		if( render_center )
-		{
-			gGL.color4fv(center_color.mV);
-			gGL.diffuseColor4fv(center_color.mV);
-			gl_deep_circle( radius, width, steps );
-		}
-		else
-		{
-			gGL.diffuseColor4fv(side_color.mV);
-			gl_washer_2d(radius, radius - width, steps, side_color, side_color);
-			gGL.translateUI(0.f, 0.f, width);
-			gl_washer_2d(radius - width, radius, steps, side_color, side_color);
-		}
-	}
-	gGL.popUIMatrix();
-}
-
-// Draw gray and white checkerboard with black border
-void gl_rect_2d_checkerboard(const LLRect& rect, GLfloat alpha)
-{
-	if (!LLGLSLShader::sNoFixedFunction)
-	{ 
-	// Initialize the first time this is called.
-	const S32 PIXELS = 32;
-	static GLubyte checkerboard[PIXELS * PIXELS];
-	static BOOL first = TRUE;
-	if( first )
-	{
-		for( S32 i = 0; i < PIXELS; i++ )
-		{
-			for( S32 j = 0; j < PIXELS; j++ )
-			{
-				checkerboard[i * PIXELS + j] = ((i & 1) ^ (j & 1)) * 0xFF;
-			}
-		}
-		first = FALSE;
-	}
-	
-	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
-
-	// ...white squares
-	gGL.color4f( 1.f, 1.f, 1.f, alpha );
-	gl_rect_2d(rect);
-
-	// ...gray squares
-	gGL.color4f( .7f, .7f, .7f, alpha );
-	gGL.flush();
-
-		glPolygonStipple( checkerboard );
-
-		LLGLEnable polygon_stipple(GL_POLYGON_STIPPLE);
-		gl_rect_2d(rect);
-	}
-	else
-	{ //polygon stipple is deprecated, use "Checker" texture
-		LLPointer<LLUIImage> img = LLUI::getUIImage("Checker");
-		gGL.getTexUnit(0)->bind(img->getImage());
-		gGL.getTexUnit(0)->setTextureAddressMode(LLTexUnit::TAM_WRAP);
-		gGL.getTexUnit(0)->setTextureFilteringOption(LLTexUnit::TFO_POINT);
-
-		LLColor4 color(1.f, 1.f, 1.f, alpha);
-		LLRectf uv_rect(0, 0, rect.getWidth()/32.f, rect.getHeight()/32.f);
-
-		gl_draw_scaled_image(rect.mLeft, rect.mBottom, rect.getWidth(), rect.getHeight(),
-			img->getImage(), color, uv_rect);
-	}
-	
-	gGL.flush();
-}
-
-
-// Draws the area between two concentric circles, like
-// a doughnut or washer.
-void gl_washer_2d(F32 outer_radius, F32 inner_radius, S32 steps, const LLColor4& inner_color, const LLColor4& outer_color)
-{
-	const F32 DELTA = F_TWO_PI / steps;
-	const F32 SIN_DELTA = sin( DELTA );
-	const F32 COS_DELTA = cos( DELTA );
-
-	F32 x1 = outer_radius;
-	F32 y1 = 0.f;
-	F32 x2 = inner_radius;
-	F32 y2 = 0.f;
-
-	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
-
-	gGL.begin( LLRender::TRIANGLE_STRIP  );
-	{
-		steps += 1; // An extra step to close the circle.
-		while( steps-- )
-		{
-			gGL.color4fv(outer_color.mV);
-			gGL.vertex2f( x1, y1 );
-			gGL.color4fv(inner_color.mV);
-			gGL.vertex2f( x2, y2 );
-
-			F32 x1_new = x1 * COS_DELTA - y1 * SIN_DELTA;
-			y1 = x1 * SIN_DELTA +  y1 * COS_DELTA;
-			x1 = x1_new;
-
-			F32 x2_new = x2 * COS_DELTA - y2 * SIN_DELTA;
-			y2 = x2 * SIN_DELTA +  y2 * COS_DELTA;
-			x2 = x2_new;
-		}
-	}
-	gGL.end();
-}
-
-// Draws the area between two concentric circles, like
-// a doughnut or washer.
-void gl_washer_segment_2d(F32 outer_radius, F32 inner_radius, F32 start_radians, F32 end_radians, S32 steps, const LLColor4& inner_color, const LLColor4& outer_color)
-{
-	const F32 DELTA = (end_radians - start_radians) / steps;
-	const F32 SIN_DELTA = sin( DELTA );
-	const F32 COS_DELTA = cos( DELTA );
-
-	F32 x1 = outer_radius * cos( start_radians );
-	F32 y1 = outer_radius * sin( start_radians );
-	F32 x2 = inner_radius * cos( start_radians );
-	F32 y2 = inner_radius * sin( start_radians );
-
-	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
-	gGL.begin( LLRender::TRIANGLE_STRIP  );
-	{
-		steps += 1; // An extra step to close the circle.
-		while( steps-- )
-		{
-			gGL.color4fv(outer_color.mV);
-			gGL.vertex2f( x1, y1 );
-			gGL.color4fv(inner_color.mV);
-			gGL.vertex2f( x2, y2 );
-
-			F32 x1_new = x1 * COS_DELTA - y1 * SIN_DELTA;
-			y1 = x1 * SIN_DELTA +  y1 * COS_DELTA;
-			x1 = x1_new;
-
-			F32 x2_new = x2 * COS_DELTA - y2 * SIN_DELTA;
-			y2 = x2 * SIN_DELTA +  y2 * COS_DELTA;
-			x2 = x2_new;
-		}
-	}
-	gGL.end();
-}
-
-void gl_rect_2d_simple_tex( S32 width, S32 height )
-{
-	gGL.begin( LLRender::QUADS );
-
-		gGL.texCoord2f(1.f, 1.f);
-		gGL.vertex2i(width, height);
-
-		gGL.texCoord2f(0.f, 1.f);
-		gGL.vertex2i(0, height);
-
-		gGL.texCoord2f(0.f, 0.f);
-		gGL.vertex2i(0, 0);
-
-		gGL.texCoord2f(1.f, 0.f);
-		gGL.vertex2i(width, 0);
-	
-	gGL.end();
-}
-
-void gl_rect_2d_simple( S32 width, S32 height )
-{
-	gGL.begin( LLRender::QUADS );
-		gGL.vertex2i(width, height);
-		gGL.vertex2i(0, height);
-		gGL.vertex2i(0, 0);
-		gGL.vertex2i(width, 0);
-	gGL.end();
-}
-
-void gl_segmented_rect_2d_tex(const S32 left, 
-							  const S32 top, 
-							  const S32 right, 
-							  const S32 bottom, 
-							  const S32 texture_width, 
-							  const S32 texture_height, 
-							  const S32 border_size, 
-							  const U32 edges)
-{
-	S32 width = llabs(right - left);
-	S32 height = llabs(top - bottom);
-
-	gGL.pushUIMatrix();
-
-	gGL.translateUI((F32)left, (F32)bottom, 0.f);
-	LLVector2 border_uv_scale((F32)border_size / (F32)texture_width, (F32)border_size / (F32)texture_height);
-
-	if (border_uv_scale.mV[VX] > 0.5f)
-	{
-		border_uv_scale *= 0.5f / border_uv_scale.mV[VX];
-	}
-	if (border_uv_scale.mV[VY] > 0.5f)
-	{
-		border_uv_scale *= 0.5f / border_uv_scale.mV[VY];
-	}
-
-	F32 border_scale = llmin((F32)border_size, (F32)width * 0.5f, (F32)height * 0.5f);
-	LLVector2 border_width_left = ((edges & (~(U32)ROUNDED_RECT_RIGHT)) != 0) ? LLVector2(border_scale, 0.f) : LLVector2::zero;
-	LLVector2 border_width_right = ((edges & (~(U32)ROUNDED_RECT_LEFT)) != 0) ? LLVector2(border_scale, 0.f) : LLVector2::zero;
-	LLVector2 border_height_bottom = ((edges & (~(U32)ROUNDED_RECT_TOP)) != 0) ? LLVector2(0.f, border_scale) : LLVector2::zero;
-	LLVector2 border_height_top = ((edges & (~(U32)ROUNDED_RECT_BOTTOM)) != 0) ? LLVector2(0.f, border_scale) : LLVector2::zero;
-	LLVector2 width_vec((F32)width, 0.f);
-	LLVector2 height_vec(0.f, (F32)height);
-
-	gGL.begin(LLRender::QUADS);
-	{
-		// draw bottom left
-		gGL.texCoord2f(0.f, 0.f);
-		gGL.vertex2f(0.f, 0.f);
-
-		gGL.texCoord2f(border_uv_scale.mV[VX], 0.f);
-		gGL.vertex2fv(border_width_left.mV);
-
-		gGL.texCoord2f(border_uv_scale.mV[VX], border_uv_scale.mV[VY]);
-		gGL.vertex2fv((border_width_left + border_height_bottom).mV);
-
-		gGL.texCoord2f(0.f, border_uv_scale.mV[VY]);
-		gGL.vertex2fv(border_height_bottom.mV);
-
-		// draw bottom middle
-		gGL.texCoord2f(border_uv_scale.mV[VX], 0.f);
-		gGL.vertex2fv(border_width_left.mV);
-
-		gGL.texCoord2f(1.f - border_uv_scale.mV[VX], 0.f);
-		gGL.vertex2fv((width_vec - border_width_right).mV);
-
-		gGL.texCoord2f(1.f - border_uv_scale.mV[VX], border_uv_scale.mV[VY]);
-		gGL.vertex2fv((width_vec - border_width_right + border_height_bottom).mV);
-
-		gGL.texCoord2f(border_uv_scale.mV[VX], border_uv_scale.mV[VY]);
-		gGL.vertex2fv((border_width_left + border_height_bottom).mV);
-
-		// draw bottom right
-		gGL.texCoord2f(1.f - border_uv_scale.mV[VX], 0.f);
-		gGL.vertex2fv((width_vec - border_width_right).mV);
-
-		gGL.texCoord2f(1.f, 0.f);
-		gGL.vertex2fv(width_vec.mV);
-
-		gGL.texCoord2f(1.f, border_uv_scale.mV[VY]);
-		gGL.vertex2fv((width_vec + border_height_bottom).mV);
-
-		gGL.texCoord2f(1.f - border_uv_scale.mV[VX], border_uv_scale.mV[VY]);
-		gGL.vertex2fv((width_vec - border_width_right + border_height_bottom).mV);
-
-		// draw left 
-		gGL.texCoord2f(0.f, border_uv_scale.mV[VY]);
-		gGL.vertex2fv(border_height_bottom.mV);
-
-		gGL.texCoord2f(border_uv_scale.mV[VX], border_uv_scale.mV[VY]);
-		gGL.vertex2fv((border_width_left + border_height_bottom).mV);
-
-		gGL.texCoord2f(border_uv_scale.mV[VX], 1.f - border_uv_scale.mV[VY]);
-		gGL.vertex2fv((border_width_left + height_vec - border_height_top).mV);
-
-		gGL.texCoord2f(0.f, 1.f - border_uv_scale.mV[VY]);
-		gGL.vertex2fv((height_vec - border_height_top).mV);
-
-		// draw middle
-		gGL.texCoord2f(border_uv_scale.mV[VX], border_uv_scale.mV[VY]);
-		gGL.vertex2fv((border_width_left + border_height_bottom).mV);
-
-		gGL.texCoord2f(1.f - border_uv_scale.mV[VX], border_uv_scale.mV[VY]);
-		gGL.vertex2fv((width_vec - border_width_right + border_height_bottom).mV);
-
-		gGL.texCoord2f(1.f - border_uv_scale.mV[VX], 1.f - border_uv_scale.mV[VY]);
-		gGL.vertex2fv((width_vec - border_width_right + height_vec - border_height_top).mV);
-
-		gGL.texCoord2f(border_uv_scale.mV[VX], 1.f - border_uv_scale.mV[VY]);
-		gGL.vertex2fv((border_width_left + height_vec - border_height_top).mV);
-
-		// draw right 
-		gGL.texCoord2f(1.f - border_uv_scale.mV[VX], border_uv_scale.mV[VY]);
-		gGL.vertex2fv((width_vec - border_width_right + border_height_bottom).mV);
-
-		gGL.texCoord2f(1.f, border_uv_scale.mV[VY]);
-		gGL.vertex2fv((width_vec + border_height_bottom).mV);
-
-		gGL.texCoord2f(1.f, 1.f - border_uv_scale.mV[VY]);
-		gGL.vertex2fv((width_vec + height_vec - border_height_top).mV);
-
-		gGL.texCoord2f(1.f - border_uv_scale.mV[VX], 1.f - border_uv_scale.mV[VY]);
-		gGL.vertex2fv((width_vec - border_width_right + height_vec - border_height_top).mV);
-
-		// draw top left
-		gGL.texCoord2f(0.f, 1.f - border_uv_scale.mV[VY]);
-		gGL.vertex2fv((height_vec - border_height_top).mV);
-
-		gGL.texCoord2f(border_uv_scale.mV[VX], 1.f - border_uv_scale.mV[VY]);
-		gGL.vertex2fv((border_width_left + height_vec - border_height_top).mV);
-
-		gGL.texCoord2f(border_uv_scale.mV[VX], 1.f);
-		gGL.vertex2fv((border_width_left + height_vec).mV);
-
-		gGL.texCoord2f(0.f, 1.f);
-		gGL.vertex2fv((height_vec).mV);
-
-		// draw top middle
-		gGL.texCoord2f(border_uv_scale.mV[VX], 1.f - border_uv_scale.mV[VY]);
-		gGL.vertex2fv((border_width_left + height_vec - border_height_top).mV);
-
-		gGL.texCoord2f(1.f - border_uv_scale.mV[VX], 1.f - border_uv_scale.mV[VY]);
-		gGL.vertex2fv((width_vec - border_width_right + height_vec - border_height_top).mV);
-
-		gGL.texCoord2f(1.f - border_uv_scale.mV[VX], 1.f);
-		gGL.vertex2fv((width_vec - border_width_right + height_vec).mV);
-
-		gGL.texCoord2f(border_uv_scale.mV[VX], 1.f);
-		gGL.vertex2fv((border_width_left + height_vec).mV);
-
-		// draw top right
-		gGL.texCoord2f(1.f - border_uv_scale.mV[VX], 1.f - border_uv_scale.mV[VY]);
-		gGL.vertex2fv((width_vec - border_width_right + height_vec - border_height_top).mV);
-
-		gGL.texCoord2f(1.f, 1.f - border_uv_scale.mV[VY]);
-		gGL.vertex2fv((width_vec + height_vec - border_height_top).mV);
-
-		gGL.texCoord2f(1.f, 1.f);
-		gGL.vertex2fv((width_vec + height_vec).mV);
-
-		gGL.texCoord2f(1.f - border_uv_scale.mV[VX], 1.f);
-		gGL.vertex2fv((width_vec - border_width_right + height_vec).mV);
-	}
-	gGL.end();
-
-	gGL.popUIMatrix();
-}
-
-//FIXME: rewrite to use scissor?
-void gl_segmented_rect_2d_fragment_tex(const S32 left, 
-									   const S32 top, 
-									   const S32 right, 
-									   const S32 bottom, 
-									   const S32 texture_width, 
-									   const S32 texture_height, 
-									   const S32 border_size, 
-									   const F32 start_fragment, 
-									   const F32 end_fragment, 
-									   const U32 edges)
-{
-	S32 width = llabs(right - left);
-	S32 height = llabs(top - bottom);
-
-	gGL.pushUIMatrix();
-
-	gGL.translateUI((F32)left, (F32)bottom, 0.f);
-	LLVector2 border_uv_scale((F32)border_size / (F32)texture_width, (F32)border_size / (F32)texture_height);
-
-	if (border_uv_scale.mV[VX] > 0.5f)
-	{
-		border_uv_scale *= 0.5f / border_uv_scale.mV[VX];
-	}
-	if (border_uv_scale.mV[VY] > 0.5f)
-	{
-		border_uv_scale *= 0.5f / border_uv_scale.mV[VY];
-	}
-
-	F32 border_scale = llmin((F32)border_size, (F32)width * 0.5f, (F32)height * 0.5f);
-	LLVector2 border_width_left = ((edges & (~(U32)ROUNDED_RECT_RIGHT)) != 0) ? LLVector2(border_scale, 0.f) : LLVector2::zero;
-	LLVector2 border_width_right = ((edges & (~(U32)ROUNDED_RECT_LEFT)) != 0) ? LLVector2(border_scale, 0.f) : LLVector2::zero;
-	LLVector2 border_height_bottom = ((edges & (~(U32)ROUNDED_RECT_TOP)) != 0) ? LLVector2(0.f, border_scale) : LLVector2::zero;
-	LLVector2 border_height_top = ((edges & (~(U32)ROUNDED_RECT_BOTTOM)) != 0) ? LLVector2(0.f, border_scale) : LLVector2::zero;
-	LLVector2 width_vec((F32)width, 0.f);
-	LLVector2 height_vec(0.f, (F32)height);
-
-	F32 middle_start = border_scale / (F32)width;
-	F32 middle_end = 1.f - middle_start;
-
-	F32 u_min;
-	F32 u_max;
-	LLVector2 x_min;
-	LLVector2 x_max;
-
-	gGL.begin(LLRender::QUADS);
-	{
-		if (start_fragment < middle_start)
-		{
-			u_min = (start_fragment / middle_start) * border_uv_scale.mV[VX];
-			u_max = llmin(end_fragment / middle_start, 1.f) * border_uv_scale.mV[VX];
-			x_min = (start_fragment / middle_start) * border_width_left;
-			x_max = llmin(end_fragment / middle_start, 1.f) * border_width_left;
-
-			// draw bottom left
-			gGL.texCoord2f(u_min, 0.f);
-			gGL.vertex2fv(x_min.mV);
-
-			gGL.texCoord2f(border_uv_scale.mV[VX], 0.f);
-			gGL.vertex2fv(x_max.mV);
-
-			gGL.texCoord2f(u_max, border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_max + border_height_bottom).mV);
-
-			gGL.texCoord2f(u_min, border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_min + border_height_bottom).mV);
-
-			// draw left 
-			gGL.texCoord2f(u_min, border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_min + border_height_bottom).mV);
-
-			gGL.texCoord2f(u_max, border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_max + border_height_bottom).mV);
-
-			gGL.texCoord2f(u_max, 1.f - border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_max + height_vec - border_height_top).mV);
-
-			gGL.texCoord2f(u_min, 1.f - border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_min + height_vec - border_height_top).mV);
-			
-			// draw top left
-			gGL.texCoord2f(u_min, 1.f - border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_min + height_vec - border_height_top).mV);
-
-			gGL.texCoord2f(u_max, 1.f - border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_max + height_vec - border_height_top).mV);
-
-			gGL.texCoord2f(u_max, 1.f);
-			gGL.vertex2fv((x_max + height_vec).mV);
-
-			gGL.texCoord2f(u_min, 1.f);
-			gGL.vertex2fv((x_min + height_vec).mV);
-		}
-
-		if (end_fragment > middle_start || start_fragment < middle_end)
-		{
-			x_min = border_width_left + ((llclamp(start_fragment, middle_start, middle_end) - middle_start)) * width_vec;
-			x_max = border_width_left + ((llclamp(end_fragment, middle_start, middle_end) - middle_start)) * width_vec;
-
-			// draw bottom middle
-			gGL.texCoord2f(border_uv_scale.mV[VX], 0.f);
-			gGL.vertex2fv(x_min.mV);
-
-			gGL.texCoord2f(1.f - border_uv_scale.mV[VX], 0.f);
-			gGL.vertex2fv((x_max).mV);
-
-			gGL.texCoord2f(1.f - border_uv_scale.mV[VX], border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_max + border_height_bottom).mV);
-
-			gGL.texCoord2f(border_uv_scale.mV[VX], border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_min + border_height_bottom).mV);
-
-			// draw middle
-			gGL.texCoord2f(border_uv_scale.mV[VX], border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_min + border_height_bottom).mV);
-
-			gGL.texCoord2f(1.f - border_uv_scale.mV[VX], border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_max + border_height_bottom).mV);
-
-			gGL.texCoord2f(1.f - border_uv_scale.mV[VX], 1.f - border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_max + height_vec - border_height_top).mV);
-
-			gGL.texCoord2f(border_uv_scale.mV[VX], 1.f - border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_min + height_vec - border_height_top).mV);
-
-			// draw top middle
-			gGL.texCoord2f(border_uv_scale.mV[VX], 1.f - border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_min + height_vec - border_height_top).mV);
-
-			gGL.texCoord2f(1.f - border_uv_scale.mV[VX], 1.f - border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_max + height_vec - border_height_top).mV);
-
-			gGL.texCoord2f(1.f - border_uv_scale.mV[VX], 1.f);
-			gGL.vertex2fv((x_max + height_vec).mV);
-
-			gGL.texCoord2f(border_uv_scale.mV[VX], 1.f);
-			gGL.vertex2fv((x_min + height_vec).mV);
-		}
-
-		if (end_fragment > middle_end)
-		{
-			u_min = (1.f - llmax(0.f, ((start_fragment - middle_end) / middle_start))) * border_uv_scale.mV[VX];
-			u_max = (1.f - ((end_fragment - middle_end) / middle_start)) * border_uv_scale.mV[VX];
-			x_min = width_vec - ((1.f - llmax(0.f, ((start_fragment - middle_end) / middle_start))) * border_width_right);
-			x_max = width_vec - ((1.f - ((end_fragment - middle_end) / middle_start)) * border_width_right);
-
-			// draw bottom right
-			gGL.texCoord2f(u_min, 0.f);
-			gGL.vertex2fv((x_min).mV);
-
-			gGL.texCoord2f(u_max, 0.f);
-			gGL.vertex2fv(x_max.mV);
-
-			gGL.texCoord2f(u_max, border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_max + border_height_bottom).mV);
-
-			gGL.texCoord2f(u_min, border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_min + border_height_bottom).mV);
-
-			// draw right 
-			gGL.texCoord2f(u_min, border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_min + border_height_bottom).mV);
-
-			gGL.texCoord2f(u_max, border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_max + border_height_bottom).mV);
-
-			gGL.texCoord2f(u_max, 1.f - border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_max + height_vec - border_height_top).mV);
-
-			gGL.texCoord2f(u_min, 1.f - border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_min + height_vec - border_height_top).mV);
-
-			// draw top right
-			gGL.texCoord2f(u_min, 1.f - border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_min + height_vec - border_height_top).mV);
-
-			gGL.texCoord2f(u_max, 1.f - border_uv_scale.mV[VY]);
-			gGL.vertex2fv((x_max + height_vec - border_height_top).mV);
-
-			gGL.texCoord2f(u_max, 1.f);
-			gGL.vertex2fv((x_max + height_vec).mV);
-
-			gGL.texCoord2f(u_min, 1.f);
-			gGL.vertex2fv((x_min + height_vec).mV);
-		}
-	}
-	gGL.end();
-
-	gGL.popUIMatrix();
-}
-
-void gl_segmented_rect_3d_tex(const LLRectf& clip_rect, const LLRectf& center_uv_rect, const LLRectf& center_draw_rect, 
-							 const LLVector3& width_vec, const LLVector3& height_vec)
-{
-	gGL.begin(LLRender::QUADS);
-	{
-		// draw bottom left
-		gGL.texCoord2f(clip_rect.mLeft, clip_rect.mBottom);
-		gGL.vertex3f(0.f, 0.f, 0.f);
-
-		gGL.texCoord2f(center_uv_rect.mLeft, clip_rect.mBottom);
-		gGL.vertex3fv((center_draw_rect.mLeft * width_vec).mV);
-
-		gGL.texCoord2f(center_uv_rect.mLeft, center_uv_rect.mBottom);
-		gGL.vertex3fv((center_draw_rect.mLeft * width_vec + center_draw_rect.mBottom * height_vec).mV);
-
-		gGL.texCoord2f(clip_rect.mLeft, center_uv_rect.mBottom);
-		gGL.vertex3fv((center_draw_rect.mBottom * height_vec).mV);
-
-		// draw bottom middle
-		gGL.texCoord2f(center_uv_rect.mLeft, clip_rect.mBottom);
-		gGL.vertex3fv((center_draw_rect.mLeft * width_vec).mV);
-
-		gGL.texCoord2f(center_uv_rect.mRight, clip_rect.mBottom);
-		gGL.vertex3fv((center_draw_rect.mRight * width_vec).mV);
-
-		gGL.texCoord2f(center_uv_rect.mRight, center_uv_rect.mBottom);
-		gGL.vertex3fv((center_draw_rect.mRight * width_vec + center_draw_rect.mBottom * height_vec).mV);
-
-		gGL.texCoord2f(center_uv_rect.mLeft, center_uv_rect.mBottom);
-		gGL.vertex3fv((center_draw_rect.mLeft * width_vec + center_draw_rect.mBottom * height_vec).mV);
-
-		// draw bottom right
-		gGL.texCoord2f(center_uv_rect.mRight, clip_rect.mBottom);
-		gGL.vertex3fv((center_draw_rect.mRight * width_vec).mV);
-
-		gGL.texCoord2f(clip_rect.mRight, clip_rect.mBottom);
-		gGL.vertex3fv(width_vec.mV);
-
-		gGL.texCoord2f(clip_rect.mRight, center_uv_rect.mBottom);
-		gGL.vertex3fv((width_vec + center_draw_rect.mBottom * height_vec).mV);
-
-		gGL.texCoord2f(center_uv_rect.mRight, center_uv_rect.mBottom);
-		gGL.vertex3fv((center_draw_rect.mRight * width_vec + center_draw_rect.mBottom * height_vec).mV);
-
-		// draw left 
-		gGL.texCoord2f(clip_rect.mLeft, center_uv_rect.mBottom);
-		gGL.vertex3fv((center_draw_rect.mBottom * height_vec).mV);
-
-		gGL.texCoord2f(center_uv_rect.mLeft, center_uv_rect.mBottom);
-		gGL.vertex3fv((center_draw_rect.mLeft * width_vec + center_draw_rect.mBottom * height_vec).mV);
-
-		gGL.texCoord2f(center_uv_rect.mLeft, center_uv_rect.mTop);
-		gGL.vertex3fv((center_draw_rect.mLeft * width_vec + center_draw_rect.mTop * height_vec).mV);
-
-		gGL.texCoord2f(clip_rect.mLeft, center_uv_rect.mTop);
-		gGL.vertex3fv((center_draw_rect.mTop * height_vec).mV);
-
-		// draw middle
-		gGL.texCoord2f(center_uv_rect.mLeft, center_uv_rect.mBottom);
-		gGL.vertex3fv((center_draw_rect.mLeft * width_vec + center_draw_rect.mBottom * height_vec).mV);
-
-		gGL.texCoord2f(center_uv_rect.mRight, center_uv_rect.mBottom);
-		gGL.vertex3fv((center_draw_rect.mRight * width_vec + center_draw_rect.mBottom * height_vec).mV);
-
-		gGL.texCoord2f(center_uv_rect.mRight, center_uv_rect.mTop);
-		gGL.vertex3fv((center_draw_rect.mRight * width_vec + center_draw_rect.mTop * height_vec).mV);
-
-		gGL.texCoord2f(center_uv_rect.mLeft, center_uv_rect.mTop);
-		gGL.vertex3fv((center_draw_rect.mLeft * width_vec + center_draw_rect.mTop * height_vec).mV);
-
-		// draw right 
-		gGL.texCoord2f(center_uv_rect.mRight, center_uv_rect.mBottom);
-		gGL.vertex3fv((center_draw_rect.mRight * width_vec + center_draw_rect.mBottom * height_vec).mV);
-
-		gGL.texCoord2f(clip_rect.mRight, center_uv_rect.mBottom);
-		gGL.vertex3fv((width_vec + center_draw_rect.mBottom * height_vec).mV);
-
-		gGL.texCoord2f(clip_rect.mRight, center_uv_rect.mTop);
-		gGL.vertex3fv((width_vec + center_draw_rect.mTop * height_vec).mV);
-
-		gGL.texCoord2f(center_uv_rect.mRight, center_uv_rect.mTop);
-		gGL.vertex3fv((center_draw_rect.mRight * width_vec + center_draw_rect.mTop * height_vec).mV);
-
-		// draw top left
-		gGL.texCoord2f(clip_rect.mLeft, center_uv_rect.mTop);
-		gGL.vertex3fv((center_draw_rect.mTop * height_vec).mV);
-
-		gGL.texCoord2f(center_uv_rect.mLeft, center_uv_rect.mTop);
-		gGL.vertex3fv((center_draw_rect.mLeft * width_vec + center_draw_rect.mTop * height_vec).mV);
-
-		gGL.texCoord2f(center_uv_rect.mLeft, clip_rect.mTop);
-		gGL.vertex3fv((center_draw_rect.mLeft * width_vec + height_vec).mV);
-
-		gGL.texCoord2f(clip_rect.mLeft, clip_rect.mTop);
-		gGL.vertex3fv((height_vec).mV);
-
-		// draw top middle
-		gGL.texCoord2f(center_uv_rect.mLeft, center_uv_rect.mTop);
-		gGL.vertex3fv((center_draw_rect.mLeft * width_vec + center_draw_rect.mTop * height_vec).mV);
-
-		gGL.texCoord2f(center_uv_rect.mRight, center_uv_rect.mTop);
-		gGL.vertex3fv((center_draw_rect.mRight * width_vec + center_draw_rect.mTop * height_vec).mV);
-
-		gGL.texCoord2f(center_uv_rect.mRight, clip_rect.mTop);
-		gGL.vertex3fv((center_draw_rect.mRight * width_vec + height_vec).mV);
-
-		gGL.texCoord2f(center_uv_rect.mLeft, clip_rect.mTop);
-		gGL.vertex3fv((center_draw_rect.mLeft * width_vec + height_vec).mV);
-
-		// draw top right
-		gGL.texCoord2f(center_uv_rect.mRight, center_uv_rect.mTop);
-		gGL.vertex3fv((center_draw_rect.mRight * width_vec + center_draw_rect.mTop * height_vec).mV);
-
-		gGL.texCoord2f(clip_rect.mRight, center_uv_rect.mTop);
-		gGL.vertex3fv((width_vec + center_draw_rect.mTop * height_vec).mV);
-
-		gGL.texCoord2f(clip_rect.mRight, clip_rect.mTop);
-		gGL.vertex3fv((width_vec + height_vec).mV);
-
-		gGL.texCoord2f(center_uv_rect.mRight, clip_rect.mTop);
-		gGL.vertex3fv((center_draw_rect.mRight * width_vec + height_vec).mV);
-	}
-	gGL.end();
-
-}
-
-
 void LLUI::initClass(const settings_map_t& settings,
 					 LLImageProviderInterface* image_provider,
 					 LLUIAudioCallback audio_callback,
@@ -1633,6 +163,7 @@ void LLUI::initClass(const settings_map_t& settings,
 					 const LLVector2* scale_factor,
 					 const std::string& language)
 {
+	LLRender2D::initClass(image_provider,scale_factor);
 	sSettingGroups = settings;
 
 	if ((get_ptr_in_map(sSettingGroups, std::string("config")) == NULL) ||
@@ -1642,10 +173,8 @@ void LLUI::initClass(const settings_map_t& settings,
 		llerrs << "Failure to initialize configuration groups" << llendl;
 	}
 
-	sImageProvider = image_provider;
 	sAudioCallback = audio_callback;
 	sDeferredAudioCallback = deferred_audio_callback;
-	sGLScaleFactor = (scale_factor == NULL) ? LLVector2(1.f, 1.f) : *scale_factor;
 	sWindow = NULL; // set later in startup
 	LLFontGL::sShadowColor = LLUIColorTable::instance().getColor("ColorDropShadow");
 
@@ -1679,10 +208,7 @@ void LLUI::initClass(const settings_map_t& settings,
 
 void LLUI::cleanupClass()
 {
-	if(sImageProvider)
-	{
-	sImageProvider->cleanUp();
-}
+	LLRender2D::cleanupClass();
 }
 
 void LLUI::setPopupFuncs(const add_popup_t& add_popup, const remove_popup_t& remove_popup,  const clear_popups_t& clear_popups)
@@ -1706,60 +232,12 @@ void LLUI::dirtyRect(LLRect rect)
 	}		
 }
  
-
-//static
-void LLUI::translate(F32 x, F32 y, F32 z)
-{
-	gGL.translateUI(x,y,z);
-	LLFontGL::sCurOrigin.mX += (S32) x;
-	LLFontGL::sCurOrigin.mY += (S32) y;
-	LLFontGL::sCurDepth += z;
-}
-
-//static
-void LLUI::pushMatrix()
-{
-	gGL.pushUIMatrix();
-	LLFontGL::sOriginStack.push_back(std::make_pair(LLFontGL::sCurOrigin, LLFontGL::sCurDepth));
-}
-
-//static
-void LLUI::popMatrix()
-{
-	gGL.popUIMatrix();
-	LLFontGL::sCurOrigin = LLFontGL::sOriginStack.back().first;
-	LLFontGL::sCurDepth = LLFontGL::sOriginStack.back().second;
-	LLFontGL::sOriginStack.pop_back();
-}
-
-//static 
-void LLUI::loadIdentity()
-{
-	gGL.loadUIIdentity(); 
-	LLFontGL::sCurOrigin.mX = 0;
-	LLFontGL::sCurOrigin.mY = 0;
-	LLFontGL::sCurDepth = 0.f;
-}
-
-//static
-void LLUI::setScaleFactor(const LLVector2 &scale_factor)
-{
-	sGLScaleFactor = scale_factor;
-}
-
-//static
-void LLUI::setLineWidth(F32 width)
-{
-	gGL.flush();
-	glLineWidth(width * lerp(sGLScaleFactor.mV[VX], sGLScaleFactor.mV[VY], 0.5f));
-}
-
 //static 
 void LLUI::setMousePositionScreen(S32 x, S32 y)
 {
 	S32 screen_x, screen_y;
-	screen_x = llround((F32)x * sGLScaleFactor.mV[VX]);
-	screen_y = llround((F32)y * sGLScaleFactor.mV[VY]);
+	screen_x = llround((F32)x * getScaleFactor().mV[VX]);
+	screen_y = llround((F32)y * getScaleFactor().mV[VY]);
 	
 	LLView::getWindow()->setCursorPosition(LLCoordGL(screen_x, screen_y).convert());
 }
@@ -1770,8 +248,8 @@ void LLUI::getMousePositionScreen(S32 *x, S32 *y)
 	LLCoordWindow cursor_pos_window;
 	getWindow()->getCursorPosition(&cursor_pos_window);
 	LLCoordGL cursor_pos_gl(cursor_pos_window.convert());
-	*x = llround((F32)cursor_pos_gl.mX / sGLScaleFactor.mV[VX]);
-	*y = llround((F32)cursor_pos_gl.mY / sGLScaleFactor.mV[VX]);
+	*x = llround((F32)cursor_pos_gl.mX / getScaleFactor().mV[VX]);
+	*y = llround((F32)cursor_pos_gl.mY / getScaleFactor().mV[VX]);
 }
 
 //static 
@@ -1885,21 +363,21 @@ LLVector2 LLUI::getWindowSize()
 	LLCoordWindow window_rect;
 	sWindow->getSize(&window_rect);
 
-	return LLVector2(window_rect.mX / sGLScaleFactor.mV[VX], window_rect.mY / sGLScaleFactor.mV[VY]);
+	return LLVector2(window_rect.mX / getScaleFactor().mV[VX], window_rect.mY / getScaleFactor().mV[VY]);
 }
 
 //static
 void LLUI::screenPointToGL(S32 screen_x, S32 screen_y, S32 *gl_x, S32 *gl_y)
 {
-	*gl_x = llround((F32)screen_x * sGLScaleFactor.mV[VX]);
-	*gl_y = llround((F32)screen_y * sGLScaleFactor.mV[VY]);
+	*gl_x = llround((F32)screen_x * getScaleFactor().mV[VX]);
+	*gl_y = llround((F32)screen_y * getScaleFactor().mV[VY]);
 }
 
 //static
 void LLUI::glPointToScreen(S32 gl_x, S32 gl_y, S32 *screen_x, S32 *screen_y)
 {
-	*screen_x = llround((F32)gl_x / sGLScaleFactor.mV[VX]);
-	*screen_y = llround((F32)gl_y / sGLScaleFactor.mV[VY]);
+	*screen_x = llround((F32)gl_x / getScaleFactor().mV[VX]);
+	*screen_y = llround((F32)gl_y / getScaleFactor().mV[VY]);
 }
 
 //static
@@ -1916,27 +394,6 @@ void LLUI::glRectToScreen(const LLRect& gl, LLRect *screen)
 	glPointToScreen(gl.mRight, gl.mBottom, &screen->mRight, &screen->mBottom);
 }
 
-//static
-LLPointer<LLUIImage> LLUI::getUIImageByID(const LLUUID& image_id, S32 priority)
-{
-	if (sImageProvider)
-	{
-		return sImageProvider->getUIImageByID(image_id, priority);
-	}
-	else
-	{
-		return NULL;
-	}
-}
-
-//static 
-LLPointer<LLUIImage> LLUI::getUIImage(const std::string& name, S32 priority)
-{
-	if (!name.empty() && sImageProvider)
-		return sImageProvider->getUIImage(name, priority);
-	else
-		return NULL;
-}
 
 LLControlGroup& LLUI::getControlControlGroup (const std::string& controlname)
 {
diff --git a/indra/llui/llui.h b/indra/llui/llui.h
index 4c1703392a1..83831e47996 100644
--- a/indra/llui/llui.h
+++ b/indra/llui/llui.h
@@ -1,6 +1,6 @@
 /** 
  * @file llui.h
- * @brief GL function declarations and other general static UI services.
+ * @brief General static UI services.
  *
  * $LicenseInfo:firstyear=2001&license=viewerlgpl$
  * Second Life Viewer Source Code
@@ -24,122 +24,38 @@
  * $/LicenseInfo$
  */
 
-// All immediate-mode gl drawing should happen here.
 
 #ifndef LL_LLUI_H
 #define LL_LLUI_H
 
-#include "llpointer.h"		// LLPointer<>
 #include "llrect.h"
 #include "llcontrol.h"
 #include "llcoord.h"
-#include "llglslshader.h"
+#include "v2math.h"
 #include "llinitparam.h"
 #include "llregistry.h"
+#include "llrender2dutils.h"
+#include "llpointer.h"
 #include "lluicolor.h"
 #include "lluicolortable.h"
+#include "lluiimage.h"
 #include <boost/signals2.hpp>
 #include "lllazyvalue.h"
 #include "llframetimer.h"
 #include <limits>
 
-// LLUIFactory
-#include "llsd.h"
-
 // for initparam specialization
 #include "llfontgl.h"
 
 
-class LLColor4; 
-class LLVector3;
-class LLVector2;
-class LLUIImage;
 class LLUUID;
 class LLWindow;
 class LLView;
 class LLHelp;
 
-// UI colors
-extern const LLColor4 UI_VERTEX_COLOR;
 void make_ui_sound(const char* name);
 void make_ui_sound_deferred(const char * name);
 
-BOOL ui_point_in_rect(S32 x, S32 y, S32 left, S32 top, S32 right, S32 bottom);
-void gl_state_for_2d(S32 width, S32 height);
-
-void gl_line_2d(S32 x1, S32 y1, S32 x2, S32 y2);
-void gl_line_2d(S32 x1, S32 y1, S32 x2, S32 y2, const LLColor4 &color );
-void gl_triangle_2d(S32 x1, S32 y1, S32 x2, S32 y2, S32 x3, S32 y3, const LLColor4& color, BOOL filled);
-void gl_rect_2d_simple( S32 width, S32 height );
-
-void gl_draw_x(const LLRect& rect, const LLColor4& color);
-
-void gl_rect_2d(S32 left, S32 top, S32 right, S32 bottom, BOOL filled = TRUE );
-void gl_rect_2d(S32 left, S32 top, S32 right, S32 bottom, const LLColor4 &color, BOOL filled = TRUE );
-void gl_rect_2d_offset_local( S32 left, S32 top, S32 right, S32 bottom, const LLColor4 &color, S32 pixel_offset = 0, BOOL filled = TRUE );
-void gl_rect_2d_offset_local( S32 left, S32 top, S32 right, S32 bottom, S32 pixel_offset = 0, BOOL filled = TRUE );
-void gl_rect_2d(const LLRect& rect, BOOL filled = TRUE );
-void gl_rect_2d(const LLRect& rect, const LLColor4& color, BOOL filled = TRUE );
-void gl_rect_2d_checkerboard(const LLRect& rect, GLfloat alpha = 1.0f);
-
-void gl_drop_shadow(S32 left, S32 top, S32 right, S32 bottom, const LLColor4 &start_color, S32 lines);
-
-void gl_circle_2d(F32 x, F32 y, F32 radius, S32 steps, BOOL filled);
-void gl_arc_2d(F32 center_x, F32 center_y, F32 radius, S32 steps, BOOL filled, F32 start_angle, F32 end_angle);
-void gl_deep_circle( F32 radius, F32 depth );
-void gl_ring( F32 radius, F32 width, const LLColor4& center_color, const LLColor4& side_color, S32 steps, BOOL render_center );
-void gl_corners_2d(S32 left, S32 top, S32 right, S32 bottom, S32 length, F32 max_frac);
-void gl_washer_2d(F32 outer_radius, F32 inner_radius, S32 steps, const LLColor4& inner_color, const LLColor4& outer_color);
-void gl_washer_segment_2d(F32 outer_radius, F32 inner_radius, F32 start_radians, F32 end_radians, S32 steps, const LLColor4& inner_color, const LLColor4& outer_color);
-
-void gl_draw_image(S32 x, S32 y, LLTexture* image, const LLColor4& color = UI_VERTEX_COLOR, const LLRectf& uv_rect = LLRectf(0.f, 1.f, 1.f, 0.f));
-void gl_draw_scaled_image(S32 x, S32 y, S32 width, S32 height, LLTexture* image, const LLColor4& color = UI_VERTEX_COLOR, const LLRectf& uv_rect = LLRectf(0.f, 1.f, 1.f, 0.f));
-void gl_draw_rotated_image(S32 x, S32 y, F32 degrees, LLTexture* image, const LLColor4& color = UI_VERTEX_COLOR, const LLRectf& uv_rect = LLRectf(0.f, 1.f, 1.f, 0.f));
-void gl_draw_scaled_rotated_image(S32 x, S32 y, S32 width, S32 height, F32 degrees,LLTexture* image, const LLColor4& color = UI_VERTEX_COLOR, const LLRectf& uv_rect = LLRectf(0.f, 1.f, 1.f, 0.f));
-void gl_draw_scaled_image_with_border(S32 x, S32 y, S32 border_width, S32 border_height, S32 width, S32 height, LLTexture* image, const LLColor4 &color, BOOL solid_color = FALSE, const LLRectf& uv_rect = LLRectf(0.f, 1.f, 1.f, 0.f));
-void gl_draw_scaled_image_with_border(S32 x, S32 y, S32 width, S32 height, LLTexture* image, const LLColor4 &color, BOOL solid_color = FALSE, const LLRectf& uv_rect = LLRectf(0.f, 1.f, 1.f, 0.f), const LLRectf& scale_rect = LLRectf(0.f, 1.f, 1.f, 0.f));
-
-void gl_stippled_line_3d( const LLVector3& start, const LLVector3& end, const LLColor4& color, F32 phase = 0.f ); 
-
-void gl_rect_2d_simple_tex( S32 width, S32 height );
-
-// segmented rectangles
-
-/*
-   TL |______TOP_________| TR 
-     /|                  |\  
-   _/_|__________________|_\_
-   L| |    MIDDLE        | |R
-   _|_|__________________|_|_
-    \ |    BOTTOM        | /  
-   BL\|__________________|/ BR
-      |                  |    
-*/
-
-typedef enum e_rounded_edge
-{
-	ROUNDED_RECT_LEFT	= 0x1, 
-	ROUNDED_RECT_TOP	= 0x2, 
-	ROUNDED_RECT_RIGHT	= 0x4, 
-	ROUNDED_RECT_BOTTOM	= 0x8,
-	ROUNDED_RECT_ALL	= 0xf
-}ERoundedEdge;
-
-
-void gl_segmented_rect_2d_tex(const S32 left, const S32 top, const S32 right, const S32 bottom, const S32 texture_width, const S32 texture_height, const S32 border_size, const U32 edges = ROUNDED_RECT_ALL);
-void gl_segmented_rect_2d_fragment_tex(const S32 left, const S32 top, const S32 right, const S32 bottom, const S32 texture_width, const S32 texture_height, const S32 border_size, const F32 start_fragment, const F32 end_fragment, const U32 edges = ROUNDED_RECT_ALL);
-void gl_segmented_rect_3d_tex(const LLRectf& clip_rect, const LLRectf& center_uv_rect, const LLRectf& center_draw_rect, const LLVector3& width_vec, const LLVector3& height_vec);
-
-inline void gl_rect_2d( const LLRect& rect, BOOL filled )
-{
-	gl_rect_2d( rect.mLeft, rect.mTop, rect.mRight, rect.mBottom, filled );
-}
-
-inline void gl_rect_2d_offset_local( const LLRect& rect, S32 pixel_offset, BOOL filled)
-{
-	gl_rect_2d_offset_local( rect.mLeft, rect.mTop, rect.mRight, rect.mBottom, pixel_offset, filled );
-}
-
 class LLImageProviderInterface;
 
 typedef	void (*LLUIAudioCallback)(const LLUUID& uuid);
@@ -281,10 +197,10 @@ class LLUI
 	static void cleanupClass();
 	static void setPopupFuncs(const add_popup_t& add_popup, const remove_popup_t&, const clear_popups_t& );
 
-	static void pushMatrix();
-	static void popMatrix();
-	static void loadIdentity();
-	static void translate(F32 x, F32 y, F32 z = 0.0f);
+	static void pushMatrix() { LLRender2D::pushMatrix(); }
+	static void popMatrix() { LLRender2D::popMatrix(); }
+	static void loadIdentity() { LLRender2D::loadIdentity(); }
+	static void translate(F32 x, F32 y, F32 z = 0.0f) { LLRender2D::translate(x, y, z); }
 
 	static LLRect	sDirtyRect;
 	static BOOL		sDirty;
@@ -329,10 +245,13 @@ class LLUI
 	static void getMousePositionScreen(S32 *x, S32 *y);
 	static void setMousePositionLocal(const LLView* viewp, S32 x, S32 y);
 	static void getMousePositionLocal(const LLView* viewp, S32 *x, S32 *y);
-	static void setScaleFactor(const LLVector2& scale_factor);
-	static void setLineWidth(F32 width);
-	static LLPointer<LLUIImage> getUIImageByID(const LLUUID& image_id, S32 priority = 0);
-	static LLPointer<LLUIImage> getUIImage(const std::string& name, S32 priority = 0);
+	static LLVector2& getScaleFactor() { return LLRender2D::sGLScaleFactor; }
+	static void setScaleFactor(const LLVector2& scale_factor) { LLRender2D::setScaleFactor(scale_factor); }
+	static void setLineWidth(F32 width) { LLRender2D::setLineWidth(width); }
+	static LLPointer<LLUIImage> getUIImageByID(const LLUUID& image_id, S32 priority = 0)
+		{ return LLRender2D::getUIImageByID(image_id, priority); }
+	static LLPointer<LLUIImage> getUIImage(const std::string& name, S32 priority = 0)
+		{ return LLRender2D::getUIImage(name, priority); }
 	static LLVector2 getWindowSize();
 	static void screenPointToGL(S32 screen_x, S32 screen_y, S32 *gl_x, S32 *gl_y);
 	static void glPointToScreen(S32 gl_x, S32 gl_y, S32 *screen_x, S32 *screen_y);
@@ -362,12 +281,10 @@ class LLUI
 	static settings_map_t sSettingGroups;
 	static LLUIAudioCallback sAudioCallback;
 	static LLUIAudioCallback sDeferredAudioCallback;
-	static LLVector2		sGLScaleFactor;
 	static LLWindow*		sWindow;
 	static LLView*			sRootView;
 	static LLHelp*			sHelpImpl;
 private:
-	static LLImageProviderInterface* sImageProvider;
 	static std::vector<std::string> sXUIPaths;
 	static LLFrameTimer		sMouseIdleTimer;
 	static add_popup_t		sAddPopupFunc;
@@ -378,18 +295,6 @@ class LLUI
 
 // Moved LLLocalClipRect to lllocalcliprect.h
 
-//RN: maybe this needs to moved elsewhere?
-class LLImageProviderInterface
-{
-protected:
-	LLImageProviderInterface() {};
-	virtual ~LLImageProviderInterface() {};
-public:
-	virtual LLPointer<LLUIImage> getUIImage(const std::string& name, S32 priority) = 0;
-	virtual LLPointer<LLUIImage> getUIImageByID(const LLUUID& id, S32 priority) = 0;
-	virtual void cleanUp() = 0;
-};
-
 class LLCallbackRegistry
 {
 public:
@@ -600,7 +505,4 @@ namespace LLInitParam
 	};
 }
 
-extern LLGLSLShader gSolidColorProgram;
-extern LLGLSLShader gUIProgram;
-
 #endif
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index 0f77c68ec86..dac268ec922 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -803,7 +803,7 @@ bool LLAppViewer::init()
 		LLUIImageList::getInstance(),
 		ui_audio_callback,
 		deferred_ui_audio_callback,
-		&LLUI::sGLScaleFactor);
+		&LLUI::getScaleFactor());
 	LL_INFOS("InitInfo") << "UI initialized." << LL_ENDL ;
 
 	// NOW LLUI::getLanguage() should work. gDirUtilp must know the language
diff --git a/indra/newview/llglsandbox.cpp b/indra/newview/llglsandbox.cpp
index 1208c9378e9..60fa53f491c 100644
--- a/indra/newview/llglsandbox.cpp
+++ b/indra/newview/llglsandbox.cpp
@@ -79,10 +79,10 @@ void LLToolSelectRect::handleRectangleSelection(S32 x, S32 y, MASK mask)
 	S32 top =	llmax(y, mDragStartY);
 	S32 bottom =llmin(y, mDragStartY);
 
-	left = llround((F32) left * LLUI::sGLScaleFactor.mV[VX]);
-	right = llround((F32) right * LLUI::sGLScaleFactor.mV[VX]);
-	top = llround((F32) top * LLUI::sGLScaleFactor.mV[VY]);
-	bottom = llround((F32) bottom * LLUI::sGLScaleFactor.mV[VY]);
+	left = llround((F32) left * LLUI::getScaleFactor().mV[VX]);
+	right = llround((F32) right * LLUI::getScaleFactor().mV[VX]);
+	top = llround((F32) top * LLUI::getScaleFactor().mV[VY]);
+	bottom = llround((F32) bottom * LLUI::getScaleFactor().mV[VY]);
 
 	F32 old_far_plane = LLViewerCamera::getInstance()->getFar();
 	F32 old_near_plane = LLViewerCamera::getInstance()->getNear();
diff --git a/indra/newview/llmediactrl.cpp b/indra/newview/llmediactrl.cpp
index 99b4707158f..2075aeed632 100644
--- a/indra/newview/llmediactrl.cpp
+++ b/indra/newview/llmediactrl.cpp
@@ -119,8 +119,8 @@ LLMediaCtrl::LLMediaCtrl( const Params& p) :
 
 	if(!getDecoupleTextureSize())
 	{
-		S32 screen_width = llround((F32)getRect().getWidth() * LLUI::sGLScaleFactor.mV[VX]);
-		S32 screen_height = llround((F32)getRect().getHeight() * LLUI::sGLScaleFactor.mV[VY]);
+		S32 screen_width = llround((F32)getRect().getWidth() * LLUI::getScaleFactor().mV[VX]);
+		S32 screen_height = llround((F32)getRect().getHeight() * LLUI::getScaleFactor().mV[VY]);
 			
 		setTextureSize(screen_width, screen_height);
 	}
@@ -469,8 +469,8 @@ void LLMediaCtrl::reshape( S32 width, S32 height, BOOL called_from_parent )
 {
 	if(!getDecoupleTextureSize())
 	{
-		S32 screen_width = llround((F32)width * LLUI::sGLScaleFactor.mV[VX]);
-		S32 screen_height = llround((F32)height * LLUI::sGLScaleFactor.mV[VY]);
+		S32 screen_width = llround((F32)width * LLUI::getScaleFactor().mV[VX]);
+		S32 screen_height = llround((F32)height * LLUI::getScaleFactor().mV[VY]);
 
 		// when floater is minimized, these sizes are negative
 		if ( screen_height > 0 && screen_width > 0 )
@@ -667,7 +667,7 @@ bool LLMediaCtrl::ensureMediaSourceExists()
 			mMediaSource->addObserver( this );
 			mMediaSource->setBackgroundColor( getBackgroundColor() );
 			mMediaSource->setTrustedBrowser(mTrusted);
-			mMediaSource->setPageZoomFactor( LLUI::sGLScaleFactor.mV[ VX ] );
+			mMediaSource->setPageZoomFactor( LLUI::getScaleFactor().mV[ VX ] );
 
 			if(mClearCache)
 			{
@@ -750,7 +750,7 @@ void LLMediaCtrl::draw()
 	{
 		gGL.pushUIMatrix();
 		{
-			mMediaSource->setPageZoomFactor( LLUI::sGLScaleFactor.mV[ VX ] );
+			mMediaSource->setPageZoomFactor( LLUI::getScaleFactor().mV[ VX ] );
 
 			// scale texture to fit the space using texture coords
 			gGL.getTexUnit(0)->bind(media_texture);
@@ -864,14 +864,14 @@ void LLMediaCtrl::convertInputCoords(S32& x, S32& y)
 		coords_opengl = mMediaSource->getMediaPlugin()->getTextureCoordsOpenGL();
 	}
 	
-	x = llround((F32)x * LLUI::sGLScaleFactor.mV[VX]);
+	x = llround((F32)x * LLUI::getScaleFactor().mV[VX]);
 	if ( ! coords_opengl )
 	{
-		y = llround((F32)(y) * LLUI::sGLScaleFactor.mV[VY]);
+		y = llround((F32)(y) * LLUI::getScaleFactor().mV[VY]);
 	}
 	else
 	{
-		y = llround((F32)(getRect().getHeight() - y) * LLUI::sGLScaleFactor.mV[VY]);
+		y = llround((F32)(getRect().getHeight() - y) * LLUI::getScaleFactor().mV[VY]);
 	};
 }
 
diff --git a/indra/newview/lloutputmonitorctrl.h b/indra/newview/lloutputmonitorctrl.h
index a346909027d..0682af1278c 100644
--- a/indra/newview/lloutputmonitorctrl.h
+++ b/indra/newview/lloutputmonitorctrl.h
@@ -31,7 +31,7 @@
 #include "../llui/llview.h"
 #include "llmutelist.h"
 #include "llspeakingindicatormanager.h"
-#include "../llui/lluiimage.h"
+//#include "../llui/lluiimage.h"
 
 class LLTextBox;
 class LLUICtrlFactory;
diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp
index ffeea2f4df9..02f82aba639 100644
--- a/indra/newview/llviewerdisplay.cpp
+++ b/indra/newview/llviewerdisplay.cpp
@@ -1425,7 +1425,7 @@ void render_ui_2d()
 		gGL.pushMatrix();
 		S32 half_width = (gViewerWindow->getWorldViewWidthScaled() / 2);
 		S32 half_height = (gViewerWindow->getWorldViewHeightScaled() / 2);
-		gGL.scalef(LLUI::sGLScaleFactor.mV[0], LLUI::sGLScaleFactor.mV[1], 1.f);
+		gGL.scalef(LLUI::getScaleFactor().mV[0], LLUI::getScaleFactor().mV[1], 1.f);
 		gGL.translatef((F32)half_width, (F32)half_height, 0.f);
 		F32 zoom = gAgentCamera.mHUDCurZoom;
 		gGL.scalef(zoom,zoom,1.f);
@@ -1463,10 +1463,10 @@ void render_ui_2d()
 				LLUI::sDirtyRect = last_rect;
 				last_rect = t_rect;
 			
-				last_rect.mLeft = LLRect::tCoordType(last_rect.mLeft / LLUI::sGLScaleFactor.mV[0]);
-				last_rect.mRight = LLRect::tCoordType(last_rect.mRight / LLUI::sGLScaleFactor.mV[0]);
-				last_rect.mTop = LLRect::tCoordType(last_rect.mTop / LLUI::sGLScaleFactor.mV[1]);
-				last_rect.mBottom = LLRect::tCoordType(last_rect.mBottom / LLUI::sGLScaleFactor.mV[1]);
+				last_rect.mLeft = LLRect::tCoordType(last_rect.mLeft / LLUI::getScaleFactor().mV[0]);
+				last_rect.mRight = LLRect::tCoordType(last_rect.mRight / LLUI::getScaleFactor().mV[0]);
+				last_rect.mTop = LLRect::tCoordType(last_rect.mTop / LLUI::getScaleFactor().mV[1]);
+				last_rect.mBottom = LLRect::tCoordType(last_rect.mBottom / LLUI::getScaleFactor().mV[1]);
 
 				LLRect clip_rect(last_rect);
 				
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 383eb3c9e4c..db3476850be 100755
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -2157,7 +2157,7 @@ void LLViewerWindow::reshape(S32 width, S32 height)
 
 		calcDisplayScale();
 	
-		BOOL display_scale_changed = mDisplayScale != LLUI::sGLScaleFactor;
+		BOOL display_scale_changed = mDisplayScale != LLUI::getScaleFactor();
 		LLUI::setScaleFactor(mDisplayScale);
 
 		// update our window rectangle
@@ -2363,7 +2363,7 @@ void LLViewerWindow::draw()
 		// scale view by UI global scale factor and aspect ratio correction factor
 		gGL.scaleUI(mDisplayScale.mV[VX], mDisplayScale.mV[VY], 1.f);
 
-		LLVector2 old_scale_factor = LLUI::sGLScaleFactor;
+		LLVector2 old_scale_factor = LLUI::getScaleFactor();
 		// apply camera zoom transform (for high res screenshots)
 		F32 zoom_factor = LLViewerCamera::getInstance()->getZoomFactor();
 		S16 sub_region = LLViewerCamera::getInstance()->getZoomSubRegion();
@@ -2377,7 +2377,7 @@ void LLViewerWindow::draw()
 						(F32)getWindowHeightScaled() * -(F32)pos_y, 
 						0.f);
 			gGL.scalef(zoom_factor, zoom_factor, 1.f);
-			LLUI::sGLScaleFactor *= zoom_factor;
+			LLUI::getScaleFactor() *= zoom_factor;
 		}
 
 		// Draw tool specific overlay on world
@@ -2425,7 +2425,7 @@ void LLViewerWindow::draw()
 				LLFontGL::HCENTER, LLFontGL::TOP);
 		}
 
-		LLUI::sGLScaleFactor = old_scale_factor;
+		LLUI::setScaleFactor(old_scale_factor);
 	}
 	LLUI::popMatrix();
 	gGL.popMatrix();
@@ -3230,8 +3230,8 @@ void LLViewerWindow::updateLayout()
 
 void LLViewerWindow::updateMouseDelta()
 {
-	S32 dx = lltrunc((F32) (mCurrentMousePoint.mX - mLastMousePoint.mX) * LLUI::sGLScaleFactor.mV[VX]);
-	S32 dy = lltrunc((F32) (mCurrentMousePoint.mY - mLastMousePoint.mY) * LLUI::sGLScaleFactor.mV[VY]);
+	S32 dx = lltrunc((F32) (mCurrentMousePoint.mX - mLastMousePoint.mX) * LLUI::getScaleFactor().mV[VX]);
+	S32 dy = lltrunc((F32) (mCurrentMousePoint.mY - mLastMousePoint.mY) * LLUI::getScaleFactor().mV[VY]);
 
 	//RN: fix for asynchronous notification of mouse leaving window not working
 	LLCoordWindow mouse_pos;
diff --git a/indra/newview/llworldmapview.cpp b/indra/newview/llworldmapview.cpp
index ccc513b80d6..ffb0964499c 100644
--- a/indra/newview/llworldmapview.cpp
+++ b/indra/newview/llworldmapview.cpp
@@ -421,7 +421,7 @@ void LLWorldMapView::draw()
 			{
 				// Inform the fetch mechanism of the size we need
 				S32 draw_size = llround(sMapScale);
-				overlayimage->setKnownDrawSize(llround(draw_size * LLUI::sGLScaleFactor.mV[VX]), llround(draw_size * LLUI::sGLScaleFactor.mV[VY]));
+				overlayimage->setKnownDrawSize(llround(draw_size * LLUI::getScaleFactor().mV[VX]), llround(draw_size * LLUI::getScaleFactor().mV[VY]));
 				// Draw something whenever we have enough info
 				if (overlayimage->hasGLTexture())
 				{
@@ -1320,7 +1320,7 @@ void LLWorldMapView::drawTrackingCircle( const LLRect& rect, S32 x, S32 y, const
 
 	gGL.matrixMode(LLRender::MM_MODELVIEW);
 	gGL.pushMatrix();
-	gGL.translatef((F32)x * LLUI::sGLScaleFactor.mV[VX], (F32)y * LLUI::sGLScaleFactor.mV[VY], 0.f);
+	gGL.translatef((F32)x * LLUI::getScaleFactor().mV[VX], (F32)y * LLUI::getScaleFactor().mV[VY], 0.f);
 	gl_washer_segment_2d(inner_radius, outer_radius, start_theta, end_theta, 40, color, color);
 	gGL.popMatrix();
 
-- 
GitLab


From e42e9f897cae6fdb9db7c2742814c7df170e17a7 Mon Sep 17 00:00:00 2001
From: prep <prep@lindenlab.com>
Date: Wed, 13 Mar 2013 15:01:27 -0400
Subject: [PATCH 360/436] Fixed unit test compile error

---
 indra/llui/tests/llurlentry_test.cpp | 2 +-
 indra/llui/tests/llurlmatch_test.cpp | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/indra/llui/tests/llurlentry_test.cpp b/indra/llui/tests/llurlentry_test.cpp
index 438a2ca8ea2..c3f0e92cb07 100644
--- a/indra/llui/tests/llurlentry_test.cpp
+++ b/indra/llui/tests/llurlentry_test.cpp
@@ -31,7 +31,7 @@
 #include "llurlentry_stub.cpp"
 #include "lltut.h"
 #include "../lluicolortable.h"
-#include "../llui/lluiimage.h"
+#include "../llrender/lluiimage.h"
 
 #include <boost/regex.hpp>
 
diff --git a/indra/llui/tests/llurlmatch_test.cpp b/indra/llui/tests/llurlmatch_test.cpp
index 2f99212fa0e..55c1efefefd 100644
--- a/indra/llui/tests/llurlmatch_test.cpp
+++ b/indra/llui/tests/llurlmatch_test.cpp
@@ -28,7 +28,7 @@
 #include "linden_common.h"
 
 #include "../llurlmatch.h"
-#include "../llui/lluiimage.h"
+#include "../llrender/lluiimage.h"
 #include "lltut.h"
 
 // link seams
-- 
GitLab


From cec50f8c142f4ff5f8358d9fa27884dd14f77eff Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Wed, 13 Mar 2013 19:17:13 +0000
Subject: [PATCH 361/436] Fix for gcc 4.6 build failures on Linux in
 llwindowsdl.cpp

---
 indra/llwindow/llwindowsdl.cpp | 38 +++++++++++++++++++++++++++-------
 1 file changed, 31 insertions(+), 7 deletions(-)

diff --git a/indra/llwindow/llwindowsdl.cpp b/indra/llwindow/llwindowsdl.cpp
index a15114cb9bc..205466e9369 100644
--- a/indra/llwindow/llwindowsdl.cpp
+++ b/indra/llwindow/llwindowsdl.cpp
@@ -1636,35 +1636,53 @@ void check_vm_bloat()
 {
 #if LL_LINUX
 	// watch our own VM and RSS sizes, warn if we bloated rapidly
-	FILE *fp = fopen("/proc/self/stat", "r");
+	static const std::string STATS_FILE = "/proc/self/stat";
+	FILE *fp = fopen(STATS_FILE.c_str(), "r");
 	if (fp)
 	{
 		static long long last_vm_size = 0;
 		static long long last_rss_size = 0;
 		const long long significant_vm_difference = 250 * 1024*1024;
 		const long long significant_rss_difference = 50 * 1024*1024;
+		long long this_vm_size = 0;
+		long long this_rss_size = 0;
 
 		ssize_t res;
 		size_t dummy;
-		char *ptr;
+		char *ptr = NULL;
 		for (int i=0; i<22; ++i) // parse past the values we don't want
 		{
-			ptr = NULL;
 			res = getdelim(&ptr, &dummy, ' ', fp);
+			if (-1 == res)
+			{
+				llwarns << "Unable to parse " << STATS_FILE << llendl;
+				goto finally;
+			}
 			free(ptr);
+			ptr = NULL;
 		}
 		// 23rd space-delimited entry is vsize
-		ptr = NULL;
 		res = getdelim(&ptr, &dummy, ' ', fp);
 		llassert(ptr);
-		long long this_vm_size = atoll(ptr);
+		if (-1 == res)
+		{
+			llwarns << "Unable to parse " << STATS_FILE << llendl;
+			goto finally;
+		}
+		this_vm_size = atoll(ptr);
 		free(ptr);
-		// 24th space-delimited entry is RSS
 		ptr = NULL;
+		// 24th space-delimited entry is RSS
 		res = getdelim(&ptr, &dummy, ' ', fp);
 		llassert(ptr);
-		long long this_rss_size = getpagesize() * atoll(ptr);
+		if (-1 == res)
+		{
+			llwarns << "Unable to parse " << STATS_FILE << llendl;
+			goto finally;
+		}
+		this_rss_size = getpagesize() * atoll(ptr);
 		free(ptr);
+		ptr = NULL;
 
 		llinfos << "VM SIZE IS NOW " << (this_vm_size/(1024*1024)) << " MB, RSS SIZE IS NOW " << (this_rss_size/(1024*1024)) << " MB" << llendl;
 
@@ -1697,6 +1715,12 @@ void check_vm_bloat()
 		last_rss_size = this_rss_size;
 		last_vm_size = this_vm_size;
 
+finally:
+		if (NULL != ptr)
+		{
+			free(ptr);
+			ptr = NULL;
+		}
 		fclose(fp);
 	}
 #endif // LL_LINUX
-- 
GitLab


From 9150757c8179f06058c41b967a69f95e03c3e619 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Wed, 13 Mar 2013 21:01:50 +0000
Subject: [PATCH 362/436] More fixes for gcc-4.6 breakage

---
 indra/llrender/llgl.cpp           | 15 ++++++++-------
 indra/llui/lltextbase.cpp         |  7 ++++---
 indra/llui/llui.h                 |  3 ++-
 indra/newview/llchiclet.cpp       | 16 ++++++++--------
 indra/newview/llviewerdisplay.cpp |  2 +-
 indra/newview/llviewerwindow.cpp  |  4 ++--
 indra/newview/llworldmapview.cpp  |  4 ++--
 7 files changed, 27 insertions(+), 24 deletions(-)

diff --git a/indra/llrender/llgl.cpp b/indra/llrender/llgl.cpp
index 9e4857b6bca..87f81e05ee6 100644
--- a/indra/llrender/llgl.cpp
+++ b/indra/llrender/llgl.cpp
@@ -597,11 +597,11 @@ bool LLGLManager::initGL()
 	if (mGLVendor.substr(0,4) == "ATI ")
 	{
 		mGLVendorShort = "ATI";
-		BOOL mobile = FALSE;
-		if (mGLRenderer.find("MOBILITY") != std::string::npos)
-		{
-			mobile = TRUE;
-		}
+		//BOOL mobile = FALSE;
+		//if (mGLRenderer.find("MOBILITY") != std::string::npos)
+		//{
+		//	mobile = TRUE;
+		//}
 		mIsATI = TRUE;
 
 #if LL_WINDOWS && !LL_MESA_HEADLESS
@@ -1490,8 +1490,9 @@ void assert_glerror()
 void clear_glerror()
 {
 	//  Create or update texture to be used with this data 
-	GLenum error;
-	error = glGetError();
+	//GLenum error;
+	//error = glGetError();
+	glGetError();
 }
 
 ///////////////////////////////////////////////////////////////
diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp
index e22b806a746..49f0cb7dc8e 100644
--- a/indra/llui/lltextbase.cpp
+++ b/indra/llui/lltextbase.cpp
@@ -380,7 +380,7 @@ void LLTextBase::drawSelectionBackground()
 				S32 segment_offset;
 				getSegmentAndOffset(line_iter->mDocIndexStart, &segment_iter, &segment_offset);
 				
-				LLRect selection_rect;
+				//LLRect selection_rect;
 				selection_rect.mLeft = line_iter->mRect.mLeft;
 				selection_rect.mRight = line_iter->mRect.mLeft;
 				selection_rect.mBottom = line_iter->mRect.mBottom;
@@ -443,7 +443,8 @@ void LLTextBase::drawSelectionBackground()
 			rect_it != selection_rects.end();
 			++rect_it)
 		{
-			LLRect selection_rect = *rect_it;
+			//LLRect selection_rect = *rect_it;
+			selection_rect = *rect_it;
 			selection_rect.translate(mVisibleTextRect.mLeft - content_display_rect.mLeft, mVisibleTextRect.mBottom - content_display_rect.mBottom);
 			gl_rect_2d(selection_rect, selection_color);
 		}
@@ -2329,7 +2330,7 @@ const LLWString& LLTextBase::getWText() const
 S32 LLTextBase::getDocIndexFromLocalCoord( S32 local_x, S32 local_y, BOOL round, bool hit_past_end_of_line) const
 {
 	// Figure out which line we're nearest to.
-	LLRect visible_region = getVisibleDocumentRect();
+	//LLRect visible_region = getVisibleDocumentRect();
 	LLRect doc_rect = mDocumentView->getRect();
 
 	S32 doc_y = local_y - doc_rect.mBottom;
diff --git a/indra/llui/llui.h b/indra/llui/llui.h
index 83831e47996..0a0e0e164ec 100644
--- a/indra/llui/llui.h
+++ b/indra/llui/llui.h
@@ -343,10 +343,11 @@ class LLRegisterWith
 
 	// this avoids a MSVC bug where non-referenced static members are "optimized" away
 	// even if their constructors have side effects
-	void reference()
+	S32 reference()
 	{
 		S32 dummy;
 		dummy = 0;
+		return dummy;
 	}
 };
 
diff --git a/indra/newview/llchiclet.cpp b/indra/newview/llchiclet.cpp
index 3dbb43c6574..e34130aff2d 100644
--- a/indra/newview/llchiclet.cpp
+++ b/indra/newview/llchiclet.cpp
@@ -427,14 +427,14 @@ LLChicletPanel::~LLChicletPanel()
 
 void LLChicletPanel::onMessageCountChanged(const LLSD& data)
 {
-	LLUUID session_id = data["session_id"].asUUID();
-	S32 unread = data["participant_unread"].asInteger();
-
-	LLFloaterIMSession* im_floater = LLFloaterIMSession::findInstance(session_id);
-	if (im_floater && im_floater->getVisible() && im_floater->hasFocus())
-	{
-		unread = 0;
-	}
+	//LLUUID session_id = data["session_id"].asUUID();
+	//S32 unread = data["participant_unread"].asInteger();
+
+	//LLFloaterIMSession* im_floater = LLFloaterIMSession::findInstance(session_id);
+	//if (im_floater && im_floater->getVisible() && im_floater->hasFocus())
+	//{
+	//	unread = 0;
+	//}
 }
 
 void LLChicletPanel::objectChicletCallback(const LLSD& data)
diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp
index 02f82aba639..70256d0e78b 100644
--- a/indra/newview/llviewerdisplay.cpp
+++ b/indra/newview/llviewerdisplay.cpp
@@ -1038,7 +1038,7 @@ void render_hud_attachments()
 	if (LLPipeline::sShowHUDAttachments && !gDisconnected && setup_hud_matrices())
 	{
 		LLCamera hud_cam = *LLViewerCamera::getInstance();
-		LLVector3 origin = hud_cam.getOrigin();
+		//LLVector3 origin = hud_cam.getOrigin();
 		hud_cam.setOrigin(-1.f,0,0);
 		hud_cam.setAxes(LLVector3(1,0,0), LLVector3(0,1,0), LLVector3(0,0,1));
 		LLViewerCamera::updateFrustumPlanes(hud_cam, TRUE);
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index db3476850be..a6cd2c9ab71 100755
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -2837,7 +2837,7 @@ void LLViewerWindow::updateUI()
 
 	BOOL handled = FALSE;
 
-	BOOL handled_by_top_ctrl = FALSE;
+	//BOOL handled_by_top_ctrl = FALSE;
 	LLUICtrl* top_ctrl = gFocusMgr.getTopCtrl();
 	LLMouseHandler* mouse_captor = gFocusMgr.getMouseCapture();
 	LLView* captor_view = dynamic_cast<LLView*>(mouse_captor);
@@ -3022,7 +3022,7 @@ void LLViewerWindow::updateUI()
 				S32 local_x, local_y;
 				top_ctrl->screenPointToLocal( x, y, &local_x, &local_y );
 				handled = top_ctrl->pointInView(local_x, local_y) && top_ctrl->handleHover(local_x, local_y, mask);
-				handled_by_top_ctrl = TRUE;
+				//handled_by_top_ctrl = TRUE;
 			}
 
 			if ( !handled )
diff --git a/indra/newview/llworldmapview.cpp b/indra/newview/llworldmapview.cpp
index ffb0964499c..c82fc50812a 100644
--- a/indra/newview/llworldmapview.cpp
+++ b/indra/newview/llworldmapview.cpp
@@ -965,7 +965,7 @@ void LLWorldMapView::drawTracking(const LLVector3d& pos_global, const LLColor4&
 	S32 text_x = x;
 	S32 text_y = (S32)(y - sTrackCircleImage->getHeight()/2 - font->getLineHeight());
 
-	BOOL is_in_window = true;
+	//BOOL is_in_window = true;
 
 	if(    x < 0 
 		|| y < 0 
@@ -979,7 +979,7 @@ void LLWorldMapView::drawTracking(const LLVector3d& pos_global, const LLColor4&
 			text_x = sTrackingArrowX;
 			text_y = sTrackingArrowY;
 		}
-		is_in_window = false;
+		//is_in_window = false;
 	}
 	else if (LLTracker::getTrackingStatus() == LLTracker::TRACKING_LOCATION &&
 		LLTracker::getTrackedLocationType() != LLTracker::LOCATION_NOTHING)
-- 
GitLab


From dd1f89d3a9316a8486460f7f354d54083c8ca688 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Wed, 13 Mar 2013 17:21:26 -0400
Subject: [PATCH 363/436] SH-3975 WIP - consolidated texture fetch state
 changes to simplify tracking

---
 indra/newview/lltexturefetch.cpp | 103 +++++++++++++++++++------------
 1 file changed, 64 insertions(+), 39 deletions(-)

diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp
index 0e53fc81b80..ffb7eeab094 100755
--- a/indra/newview/lltexturefetch.cpp
+++ b/indra/newview/lltexturefetch.cpp
@@ -502,6 +502,7 @@ class LLTextureFetchWorker : public LLWorkerClass, public LLCore::HttpHandler
 	};
 	static const char* sStateDescs[];
 	e_state mState;
+	void setState(e_state new_state);
 	e_write_to_cache_state mWriteToCacheState;
 	LLTextureFetch* mFetcher;
 	LLPointer<LLImageFormatted> mFormattedImage;
@@ -1028,7 +1029,7 @@ void LLTextureFetchWorker::setDesiredDiscard(S32 discard, S32 size)
 	mDesiredSize = llmax(mDesiredSize, TEXTURE_CACHE_ENTRY_SIZE);
 	if ((prioritize && mState == INIT) || mState == DONE)
 	{
-		mState = INIT;
+		setState(INIT);
 		U32 work_priority = mWorkPriority | LLWorkerThread::PRIORITY_HIGH;
 		setPriority(work_priority);
 	}
@@ -1140,7 +1141,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
 		clearPackets(); // TODO: Shouldn't be necessary
 		mCacheReadHandle = LLTextureCache::nullHandle();
 		mCacheWriteHandle = LLTextureCache::nullHandle();
-		mState = LOAD_FROM_TEXTURE_CACHE;
+		setState(LOAD_FROM_TEXTURE_CACHE);
 		mInCache = FALSE;
 		mDesiredSize = llmax(mDesiredSize, TEXTURE_CACHE_ENTRY_SIZE); // min desired size is TEXTURE_CACHE_ENTRY_SIZE
 		LL_DEBUGS("Texture") << mID << ": Priority: " << llformat("%8.0f",mImagePriority)
@@ -1157,7 +1158,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
 			S32 size = mDesiredSize - offset;
 			if (size <= 0)
 			{
-				mState = CACHE_POST;
+				setState(CACHE_POST);
 				return false;
 			}
 			mFileSize = 0;
@@ -1188,12 +1189,12 @@ bool LLTextureFetchWorker::doWork(S32 param)
 			else if(!mUrl.empty() && mCanUseHTTP)
 			{
 				setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority);
-				mState = WAIT_HTTP_RESOURCE;
+				setState(WAIT_HTTP_RESOURCE);
 			}
 			else
 			{
 				setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority);
-				mState = LOAD_FROM_NETWORK;
+				setState(LOAD_FROM_NETWORK);
 			}
 		}
 
@@ -1203,7 +1204,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
 			if (mFetcher->mTextureCache->readComplete(mCacheReadHandle, false))
 			{
 				mCacheReadHandle = LLTextureCache::nullHandle();
-				mState = CACHE_POST;
+				setState(CACHE_POST);
 				// fall through
 			}
 			else
@@ -1229,7 +1230,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
 			// we have enough data, decode it
 			llassert_always(mFormattedImage->getDataSize() > 0);
 			mLoadedDiscard = mDesiredDiscard;
-			mState = DECODE_IMAGE;
+			setState(DECODE_IMAGE);
 			mInCache = TRUE;
 			mWriteToCacheState = NOT_WRITE ;
 			LL_DEBUGS("Texture") << mID << ": Cached. Bytes: " << mFormattedImage->getDataSize()
@@ -1248,7 +1249,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
 			else
 			{
 				LL_DEBUGS("Texture") << mID << ": Not in Cache" << LL_ENDL;
-				mState = LOAD_FROM_NETWORK;
+				setState(LOAD_FROM_NETWORK);
 			}
 			
 			// fall through
@@ -1295,7 +1296,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
 		}
 		if (mCanUseHTTP && !mUrl.empty())
 		{
-			mState = WAIT_HTTP_RESOURCE;
+			setState(WAIT_HTTP_RESOURCE);
 			setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority);
 			if(mWriteToCacheState != NOT_WRITE)
 			{
@@ -1346,7 +1347,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
 				return true; // failed
 			}
 			setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority);
-			mState = DECODE_IMAGE;
+			setState(DECODE_IMAGE);
 			mWriteToCacheState = SHOULD_WRITE;
 			recordTextureDone(false);
 		}
@@ -1370,14 +1371,14 @@ bool LLTextureFetchWorker::doWork(S32 param)
 		// Otherwise, advance into the HTTP states.
 		if (mFetcher->getHttpWaitersCount() || ! acquireHttpSemaphore())
 		{
-			mState = WAIT_HTTP_RESOURCE2;
+			setState(WAIT_HTTP_RESOURCE2);
 			setPriority(LLWorkerThread::PRIORITY_LOW | mWorkPriority);
 			mFetcher->addHttpWaiter(this->mID);
 			++mResourceWaitCount;
 			return false;
 		}
 		
-		mState = SEND_HTTP_REQ;
+		setState(SEND_HTTP_REQ);
 		// *NOTE:  You must invoke releaseHttpSemaphore() if you transition
 		// to a state other than SEND_HTTP_REQ or WAIT_HTTP_REQ or abort
 		// the request.
@@ -1410,7 +1411,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
 					// We already have all the data, just decode it
 					mLoadedDiscard = mFormattedImage->getDiscardLevel();
 					setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority);
-					mState = DECODE_IMAGE;
+					setState(DECODE_IMAGE);
 					releaseHttpSemaphore();
 					return false;
 				}
@@ -1474,7 +1475,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
 		mFetcher->addToHTTPQueue(mID);
 		recordTextureStart(true);
 		setPriority(LLWorkerThread::PRIORITY_LOW | mWorkPriority);
-		mState = WAIT_HTTP_REQ;	
+		setState(WAIT_HTTP_REQ);	
 		
 		// fall through
 	}
@@ -1492,7 +1493,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
 				{
 					if(mWriteToCacheState == NOT_WRITE) //map tiles
 					{
-						mState = DONE;
+						setState(DONE);
 						releaseHttpSemaphore();
 						return true; // failed, means no map tile on the empty region.
 					}
@@ -1502,7 +1503,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
 					// roll back to try UDP
 					if (mCanUseNET)
 					{
-						mState = INIT;
+						setState(INIT);
 						mCanUseHTTP = false;
 						mUrl.clear();
 						setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority);
@@ -1533,14 +1534,14 @@ bool LLTextureFetchWorker::doWork(S32 param)
 					// Use available data
 					mLoadedDiscard = mFormattedImage->getDiscardLevel();
 					setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority);
-					mState = DECODE_IMAGE;
+					setState(DECODE_IMAGE);
 					releaseHttpSemaphore();
 					return false; 
 				}
 
 				// Fail harder
 				resetFormattedData();
-				mState = DONE;
+				setState(DONE);
 				releaseHttpSemaphore();
 				return true; // failed
 			}
@@ -1563,7 +1564,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
 				}
 
 				// abort.
-				mState = DONE;
+				setState(DONE);
 				releaseHttpSemaphore();
 				return true;
 			}
@@ -1581,7 +1582,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
 				{
 					LL_WARNS("Texture") << "Partial HTTP response produces break in image data for texture "
 										<< mID << ".  Aborting load."  << LL_ENDL;
-					mState = DONE;
+					setState(DONE);
 					releaseHttpSemaphore();
 					return true;
 				}
@@ -1629,7 +1630,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
 			mHttpReplyOffset = 0;
 			
 			mLoadedDiscard = mRequestedDiscard;
-			mState = DECODE_IMAGE;
+			setState(DECODE_IMAGE);
 			if (mWriteToCacheState != NOT_WRITE)
 			{
 				mWriteToCacheState = SHOULD_WRITE ;
@@ -1660,31 +1661,31 @@ bool LLTextureFetchWorker::doWork(S32 param)
 		if (textures_decode_disabled)
 		{
 			// for debug use, don't decode
-			mState = DONE;
+			setState(DONE);
 			return true;
 		}
 
 		if (mDesiredDiscard < 0)
 		{
 			// We aborted, don't decode
-			mState = DONE;
+			setState(DONE);
 			return true;
 		}
 		
 		if (mFormattedImage->getDataSize() <= 0)
 		{
-			//llerrs << "Decode entered with invalid mFormattedImage. ID = " << mID << llendl;
+			llwarns << "Decode entered with invalid mFormattedImage. ID = " << mID << llendl;
 			
 			//abort, don't decode
-			mState = DONE;
+			setState(DONE);
 			return true;
 		}
 		if (mLoadedDiscard < 0)
 		{
-			//llerrs << "Decode entered with invalid mLoadedDiscard. ID = " << mID << llendl;
+			llwarns << "Decode entered with invalid mLoadedDiscard. ID = " << mID << llendl;
 
 			//abort, don't decode
-			mState = DONE;
+			setState(DONE);
 			return true;
 		}
 
@@ -1694,7 +1695,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
 		S32 discard = mHaveAllData ? 0 : mLoadedDiscard;
 		U32 image_priority = LLWorkerThread::PRIORITY_NORMAL | mWorkPriority;
 		mDecoded  = FALSE;
-		mState = DECODE_IMAGE_UPDATE;
+		setState(DECODE_IMAGE_UPDATE);
 		LL_DEBUGS("Texture") << mID << ": Decoding. Bytes: " << mFormattedImage->getDataSize() << " Discard: " << discard
 				<< " All Data: " << mHaveAllData << LL_ENDL;
 		mDecodeHandle = mFetcher->mImageDecodeThread->decodeImage(mFormattedImage, image_priority, discard, mNeedsAux,
@@ -1722,13 +1723,13 @@ bool LLTextureFetchWorker::doWork(S32 param)
 					mFormattedImage = NULL;
 					++mRetryAttempt;
 					setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority);
-					mState = INIT;
+					setState(INIT);
 					return false;
 				}
 				else
 				{
 // 					llwarns << "UNABLE TO LOAD TEXTURE: " << mID << " RETRIES: " << mRetryAttempt << llendl;
-					mState = DONE; // failed
+					setState(DONE); // failed
 				}
 			}
 			else
@@ -1737,7 +1738,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
 				LL_DEBUGS("Texture") << mID << ": Decoded. Discard: " << mDecodedDiscard
 						<< " Raw Image: " << llformat("%dx%d",mRawImage->getWidth(),mRawImage->getHeight()) << LL_ENDL;
 				setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority);
-				mState = WRITE_TO_CACHE;
+				setState(WRITE_TO_CACHE);
 			}
 			// fall through
 		}
@@ -1753,7 +1754,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
 		{
 			// If we're in a local cache or we didn't actually receive any new data,
 			// or we failed to load anything, skip
-			mState = DONE;
+			setState(DONE);
 			return false;
 		}
 		S32 datasize = mFormattedImage->getDataSize();
@@ -1772,7 +1773,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
 		setPriority(LLWorkerThread::PRIORITY_LOW | mWorkPriority); // Set priority first since Responder may change it
 		U32 cache_priority = mWorkPriority;
 		mWritten = FALSE;
-		mState = WAIT_ON_WRITE;
+		setState(WAIT_ON_WRITE);
 		++mCacheWriteCount;
 		CacheWriteResponder* responder = new CacheWriteResponder(mFetcher, mID);
 		mCacheWriteHandle = mFetcher->mTextureCache->writeToCache(mID, cache_priority,
@@ -1785,7 +1786,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
 	{
 		if (writeToCacheComplete())
 		{
-			mState = DONE;
+			setState(DONE);
 			// fall through
 		}
 		else
@@ -1806,7 +1807,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
 		if (mDecodedDiscard >= 0 && mDesiredDiscard < mDecodedDiscard)
 		{
 			// More data was requested, return to INIT
-			mState = INIT;
+			setState(INIT);
 			setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority);
 			return false;
 		}
@@ -2475,7 +2476,7 @@ bool LLTextureFetch::createRequest(FTType f_type, const std::string& url, const
 		worker->setCanUseHTTP(can_use_http) ;
 		if (!worker->haveWork())
 		{
-			worker->mState = LLTextureFetchWorker::INIT;
+			worker->setState(LLTextureFetchWorker::INIT);
 			worker->unlockWorkMutex();									// -Mw
 
 			worker->addWork(0, LLWorkerThread::PRIORITY_HIGH | worker->mWorkPriority);
@@ -3168,6 +3169,30 @@ bool LLTextureFetchWorker::insertPacket(S32 index, U8* data, S32 size)
 	return true;
 }
 
+void LLTextureFetchWorker::setState(e_state new_state)
+{
+	static char* e_state_name[] =
+	{
+		"INVALID",
+		"INIT",
+		"LOAD_FROM_TEXTURE_CACHE",
+		"CACHE_POST",
+		"LOAD_FROM_NETWORK",
+		"LOAD_FROM_SIMULATOR",
+		"WAIT_HTTP_RESOURCE",
+		"WAIT_HTTP_RESOURCE2",
+		"SEND_HTTP_REQ",
+		"WAIT_HTTP_REQ",
+		"DECODE_IMAGE",
+		"DECODE_IMAGE_UPDATE",
+		"WRITE_TO_CACHE",
+		"WAIT_ON_WRITE",
+		"DONE"
+	};
+	//llinfos << "id: " << mID << " FTType: " << mFTType << " disc: " << mDesiredDiscard << " sz: " << mDesiredSize << " state: " << e_state_name[mState] << " => " << e_state_name[new_state] << llendl;
+	mState = new_state;
+}
+
 // Threads:  T*
 bool LLTextureFetch::receiveImageHeader(const LLHost& host, const LLUUID& id, U8 codec, U16 packets, U32 totalbytes,
 										U16 data_size, U8* data)
@@ -3224,7 +3249,7 @@ bool LLTextureFetch::receiveImageHeader(const LLHost& host, const LLUUID& id, U8
 	llassert_always(data_size == FIRST_PACKET_SIZE || data_size == worker->mFileSize);
 	res = worker->insertPacket(0, data, data_size);
 	worker->setPriority(LLWorkerThread::PRIORITY_HIGH | worker->mWorkPriority);
-	worker->mState = LLTextureFetchWorker::LOAD_FROM_SIMULATOR;
+	worker->setState(LLTextureFetchWorker::LOAD_FROM_SIMULATOR);
 	worker->unlockWorkMutex();											// -Mw
 	return res;
 }
@@ -3274,7 +3299,7 @@ bool LLTextureFetch::receiveImagePacket(const LLHost& host, const LLUUID& id, U1
 		(worker->mState == LLTextureFetchWorker::LOAD_FROM_NETWORK))
 	{
 		worker->setPriority(LLWorkerThread::PRIORITY_HIGH | worker->mWorkPriority);
-		worker->mState = LLTextureFetchWorker::LOAD_FROM_SIMULATOR;
+		worker->setState(LLTextureFetchWorker::LOAD_FROM_SIMULATOR);
 	}
 	else
 	{
@@ -3537,7 +3562,7 @@ void LLTextureFetch::releaseHttpWaiters()
 			break;
 		}
 		
-		worker->mState = LLTextureFetchWorker::SEND_HTTP_REQ;
+		worker->setState(LLTextureFetchWorker::SEND_HTTP_REQ);
 		worker->setPriority(LLWorkerThread::PRIORITY_HIGH | worker->mWorkPriority);
 		worker->unlockWorkMutex();										// -Mw
 
-- 
GitLab


From 6f193d54da0b0eae2758b99e706cd127966aafa1 Mon Sep 17 00:00:00 2001
From: Nyx Linden <nyx@lindenlab.com>
Date: Wed, 13 Mar 2013 17:52:40 -0400
Subject: [PATCH 364/436] SH-3806 FIX test case for local bakes being wrong

Local bakes were following folder links in some cases, causing unworn items to be rendered.
Fixed the cof fetcher, now they should no longer show up.
---
 indra/newview/llappearancemgr.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index a944659e96d..c04d6bad94a 100644
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -2034,7 +2034,7 @@ void LLAppearanceMgr::updateAppearanceFromCOF(bool update_base_outfit_ordering)
 	
 	//dumpCat(getCOF(),"COF, start");
 
-	bool follow_folder_links = true;
+	bool follow_folder_links = false;
 	LLUUID current_outfit_id = getCOF();
 
 	// Find all the wearables that are in the COF's subtree.
-- 
GitLab


From 24a6c3fda2ba3aa1f40ee31b6f1fc025a6623833 Mon Sep 17 00:00:00 2001
From: prep <prep@lindenlab.com>
Date: Thu, 14 Mar 2013 14:43:11 -0400
Subject: [PATCH 365/436] modified_cof_cb() issues a updateAppearanceFromCOF()
 right before this function - removed extra update call. Sh-3650 & Sh-3985

---
 indra/newview/llvoavatarself.cpp | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index 64443f55af7..ea39d44c739 100644
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -2989,9 +2989,7 @@ void LLVOAvatarSelf::onCustomizeEnd(bool disable_camera_switch)
 		{
 			gAgentCamera.changeCameraToDefault();
 			gAgentCamera.resetView();
-		}
-
-		LLAppearanceMgr::instance().updateAppearanceFromCOF();
+		}		
 	}
 }
 
-- 
GitLab


From e288ff9695f4f2fbfc0f3963985c6e0fa61f6403 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Fri, 15 Mar 2013 13:26:31 -0400
Subject: [PATCH 366/436] SH-3850 WIP, SH-3959 WIP - added additional debug
 logging for texture loading

---
 indra/newview/app_settings/logcontrol.xml |  0
 indra/newview/lltexturefetch.cpp          | 29 +++++++++++++++++++----
 indra/newview/llviewertexture.cpp         |  5 ++--
 3 files changed, 27 insertions(+), 7 deletions(-)
 mode change 100644 => 100755 indra/newview/app_settings/logcontrol.xml
 mode change 100644 => 100755 indra/newview/llviewertexture.cpp

diff --git a/indra/newview/app_settings/logcontrol.xml b/indra/newview/app_settings/logcontrol.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp
index 0e53fc81b80..b9d80fe326a 100755
--- a/indra/newview/lltexturefetch.cpp
+++ b/indra/newview/lltexturefetch.cpp
@@ -1092,12 +1092,14 @@ bool LLTextureFetchWorker::doWork(S32 param)
 	{
 		if (mState == INIT || mState == LOAD_FROM_NETWORK || mState == LOAD_FROM_SIMULATOR)
 		{
+			LL_DEBUGS("Texture") << mID << " abort: mImagePriority < F_ALMOST_ZERO" << llendl;
 			return true; // abort
 		}
 	}
 	if(mState > CACHE_POST && !mCanUseNET && !mCanUseHTTP)
 	{
 		//nowhere to get data, abort.
+		LL_DEBUGS("Texture") << mID << " abort, nowhere to get data" << llendl;
 		return true ;
 	}
 
@@ -1211,6 +1213,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
 				//
 				//This should never happen
 				//
+				LL_DEBUGS("Texture") << mID << " this should never happen" << llendl;
 				return false;
 			}
 		}
@@ -1325,6 +1328,8 @@ bool LLTextureFetchWorker::doWork(S32 param)
 			//mFetcher->addToNetworkQueue(this);
 			//recordTextureStart(false);
 			//setPriority(LLWorkerThread::PRIORITY_LOW | mWorkPriority);
+
+			LL_DEBUGS("Texture") << mID << " does this happen?" << llendl;
 			return false;
 		}
 	}
@@ -1343,6 +1348,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
 			{
 				// processSimulatorPackets() failed
 // 				llwarns << "processSimulatorPackets() failed to load buffer" << llendl;
+				LL_DEBUGS("Texture") << mID << " processSimulatorPackets() failed to load buffer" << llendl;
 				return true; // failed
 			}
 			setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority);
@@ -1394,6 +1400,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
 		if (! mCanUseHTTP)
 		{
 			releaseHttpSemaphore();
+			LL_DEBUGS("Texture") << mID << " abort: SEND_HTTP_REQ but !mCanUseHTTP" << llendl;
 			return true; // abort
 		}
 
@@ -1417,6 +1424,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
 				else
 				{
 					releaseHttpSemaphore();
+					LL_DEBUGS("Texture") << mID << " SEND_HTTP_REQ abort: cur_size " << cur_size << " <=0" << llendl;
 					return true; // abort.
 				}
 			}
@@ -1494,6 +1502,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
 					{
 						mState = DONE;
 						releaseHttpSemaphore();
+						LL_DEBUGS("Texture") << mID << " abort: WAIT_HTTP_REQ not found" << llendl;
 						return true; // failed, means no map tile on the empty region.
 					}
 
@@ -1542,6 +1551,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
 				resetFormattedData();
 				mState = DONE;
 				releaseHttpSemaphore();
+				LL_DEBUGS("Texture") << mID << " abort: fail harder" << llendl;
 				return true; // failed
 			}
 			
@@ -1550,6 +1560,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
 			// next time the texture is requested, even if the data have already been fetched.
 			if(mWriteToCacheState != NOT_WRITE)
 			{
+				// Why do we want to keep url if NOT_WRITE - is this a proxy for map tiles?
 				mUrl.clear();
 			}
 			
@@ -1563,6 +1574,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
 				}
 
 				// abort.
+				LL_DEBUGS("Texture") << mID << " abort: no data received" << llendl;
 				mState = DONE;
 				releaseHttpSemaphore();
 				return true;
@@ -1667,6 +1679,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
 		if (mDesiredDiscard < 0)
 		{
 			// We aborted, don't decode
+			LL_DEBUGS("Texture") << mID << " DECODE_IMAGE abort: desired discard " << mDesiredDiscard << "<0" << llendl;
 			mState = DONE;
 			return true;
 		}
@@ -1677,6 +1690,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
 			
 			//abort, don't decode
 			mState = DONE;
+			LL_DEBUGS("Texture") << mID << " DECODE_IMAGE abort: (mFormattedImage->getDataSize() <= 0)" << llendl;
 			return true;
 		}
 		if (mLoadedDiscard < 0)
@@ -1684,6 +1698,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
 			//llerrs << "Decode entered with invalid mLoadedDiscard. ID = " << mID << llendl;
 
 			//abort, don't decode
+			LL_DEBUGS("Texture") << mID << " DECODE_IMAGE abort: mLoadedDiscard < 0" << llendl;
 			mState = DONE;
 			return true;
 		}
@@ -1806,6 +1821,9 @@ bool LLTextureFetchWorker::doWork(S32 param)
 		if (mDecodedDiscard >= 0 && mDesiredDiscard < mDecodedDiscard)
 		{
 			// More data was requested, return to INIT
+			LL_DEBUGS("Texture") << mID << " more data requested, returning to INIT: " 
+								 << " mDecodedDiscard " << mDecodedDiscard << ">= 0 && mDesiredDiscard " << mDesiredDiscard
+								 << "<" << " mDecodedDiscard " << mDecodedDiscard << llendl;
 			mState = INIT;
 			setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority);
 			return false;
@@ -1846,10 +1864,10 @@ void LLTextureFetchWorker::onCompleted(LLCore::HttpHandle handle, LLCore::HttpRe
 	bool partial = false;
 	LLCore::HttpStatus status(response->getStatus());
 	
-	lldebugs << "HTTP COMPLETE: " << mID
-			 << " status: " << status.toHex()
-			 << " '" << status.toString() << "'"
-			 << llendl;
+	LL_DEBUGS("Texture") << "HTTP COMPLETE: " << mID
+						 << " status: " << status.toHex()
+						 << " '" << status.toString() << "'"
+						 << llendl;
 //	unsigned int offset(0), length(0), full_length(0);
 //	response->getRange(&offset, &length, &full_length);
 // 	llwarns << "HTTP COMPLETE: " << mID << " handle: " << handle
@@ -2433,6 +2451,7 @@ bool LLTextureFetch::createRequest(FTType f_type, const std::string& url, const
 	std::string exten = gDirUtilp->getExtension(url);
 	if (!url.empty() && (!exten.empty() && LLImageBase::getCodecFromExtension(exten) != IMG_CODEC_J2C))
 	{
+		LL_DEBUGS("Texture") << "full request for " << id << " exten is not J2C: " << exten << llendl;
 		// Only do partial requests for J2C at the moment
 		desired_size = MAX_IMAGE_DATA_SIZE;
 		desired_discard = 0;
@@ -2499,7 +2518,7 @@ bool LLTextureFetch::createRequest(FTType f_type, const std::string& url, const
 		worker->unlockWorkMutex();										// -Mw
 	}
 	
-// 	llinfos << "REQUESTED: " << id << " Discard: " << desired_discard << llendl;
+ 	LL_DEBUGS("Texture") << "REQUESTED: " << id << " Discard: " << desired_discard << " size " << desired_size << llendl;
 	return true;
 }
 
diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp
old mode 100644
new mode 100755
index 1d0bda34a7d..e0e44cfa1e0
--- a/indra/newview/llviewertexture.cpp
+++ b/indra/newview/llviewertexture.cpp
@@ -1952,11 +1952,12 @@ bool LLViewerFetchedTexture::updateFetch()
 	}
 	else if (mHasFetcher && !mIsFetching)
 	{
-		// Only delete requests that haven't receeived any network data for a while
+		// Only delete requests that haven't received any network data for a while
 		const F32 FETCH_IDLE_TIME = 5.f;
 		if (mLastPacketTimer.getElapsedTimeF32() > FETCH_IDLE_TIME)
 		{
-// 			llinfos << "Deleting request: " << getID() << " Discard: " << current_discard << " <= min:" << mMinDiscardLevel << " or priority == 0: " << decode_priority << llendl;
+			llinfos << "idle timeout, deleting request: " << getID() << " - is discard: " << current_discard << " <= min:" << mMinDiscardLevel << " or priority == 0: " << decode_priority << "?" << llendl;
+ 			LL_DEBUGS("Texture") << "exceeded idle time " << FETCH_IDLE_TIME << ", deleting request: " << getID() << llendl;
 			LLAppViewer::getTextureFetch()->deleteRequest(getID(), true);
 			mHasFetcher = FALSE;
 		}
-- 
GitLab


From 34181d1566d91c8e5d659db0f64d6989c824fa1f Mon Sep 17 00:00:00 2001
From: Nyx Linden <nyx@lindenlab.com>
Date: Mon, 18 Mar 2013 11:36:37 -0400
Subject: [PATCH 367/436] BUILDFIX new appearance utility src for fixing a
 runtime error

---
 autobuild.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index 22de4a7047f..80a44ec75db 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -1290,9 +1290,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>088a1c30e499289e94bc1738fd3d6a25</string>
+              <string>5bc44db15eb3cca021382e40e04a9a38</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/270564/arch/Linux/installer/llappearanceutility_source-0.1-linux-20130219.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/271972/arch/Linux/installer/llappearanceutility_source-0.1-linux-20130315.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
-- 
GitLab


From 7d1bd682cdbe5c2ce3b0f18ae1f4bc74db60354e Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Mon, 18 Mar 2013 13:38:13 -0400
Subject: [PATCH 368/436] cut back log spam

---
 indra/newview/llviewertexture.cpp | 1 -
 1 file changed, 1 deletion(-)

diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp
index e0e44cfa1e0..baf01e55658 100755
--- a/indra/newview/llviewertexture.cpp
+++ b/indra/newview/llviewertexture.cpp
@@ -1956,7 +1956,6 @@ bool LLViewerFetchedTexture::updateFetch()
 		const F32 FETCH_IDLE_TIME = 5.f;
 		if (mLastPacketTimer.getElapsedTimeF32() > FETCH_IDLE_TIME)
 		{
-			llinfos << "idle timeout, deleting request: " << getID() << " - is discard: " << current_discard << " <= min:" << mMinDiscardLevel << " or priority == 0: " << decode_priority << "?" << llendl;
  			LL_DEBUGS("Texture") << "exceeded idle time " << FETCH_IDLE_TIME << ", deleting request: " << getID() << llendl;
 			LLAppViewer::getTextureFetch()->deleteRequest(getID(), true);
 			mHasFetcher = FALSE;
-- 
GitLab


From a365d7fb3fe3476b693b9547cd40be2d3e345d8c Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Mon, 18 Mar 2013 16:41:42 -0400
Subject: [PATCH 369/436] more urgent notification (DEBUG->WARN) for some
 texture fetch error cases

---
 indra/newview/lltexturefetch.cpp  | 13 +++++++------
 indra/newview/llviewertexture.cpp |  9 +++++++--
 2 files changed, 14 insertions(+), 8 deletions(-)

diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp
index 7137d4c6817..ceec0e27f1e 100755
--- a/indra/newview/lltexturefetch.cpp
+++ b/indra/newview/lltexturefetch.cpp
@@ -1100,7 +1100,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
 	if(mState > CACHE_POST && !mCanUseNET && !mCanUseHTTP)
 	{
 		//nowhere to get data, abort.
-		LL_DEBUGS("Texture") << mID << " abort, nowhere to get data" << llendl;
+		LL_WARNS("Texture") << mID << " abort, nowhere to get data" << llendl;
 		return true ;
 	}
 
@@ -1246,6 +1246,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
 			if (mUrl.compare(0, 7, "file://") == 0)
 			{
 				// failed to load local file, we're done.
+				LL_WARNS("Texture") << mID << ": abort, failed to load local file " << mUrl << LL_ENDL;
 				return true;
 			}
 			// need more data
@@ -1349,7 +1350,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
 			{
 				// processSimulatorPackets() failed
 // 				llwarns << "processSimulatorPackets() failed to load buffer" << llendl;
-				LL_DEBUGS("Texture") << mID << " processSimulatorPackets() failed to load buffer" << llendl;
+				LL_WARNS("Texture") << mID << " processSimulatorPackets() failed to load buffer" << llendl;
 				return true; // failed
 			}
 			setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority);
@@ -1401,7 +1402,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
 		if (! mCanUseHTTP)
 		{
 			releaseHttpSemaphore();
-			LL_DEBUGS("Texture") << mID << " abort: SEND_HTTP_REQ but !mCanUseHTTP" << llendl;
+			LL_WARNS("Texture") << mID << " abort: SEND_HTTP_REQ but !mCanUseHTTP" << llendl;
 			return true; // abort
 		}
 
@@ -1425,7 +1426,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
 				else
 				{
 					releaseHttpSemaphore();
-					LL_DEBUGS("Texture") << mID << " SEND_HTTP_REQ abort: cur_size " << cur_size << " <=0" << llendl;
+					LL_WARNS("Texture") << mID << " SEND_HTTP_REQ abort: cur_size " << cur_size << " <=0" << llendl;
 					return true; // abort.
 				}
 			}
@@ -1552,7 +1553,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
 				resetFormattedData();
 				setState(DONE);
 				releaseHttpSemaphore();
-				LL_DEBUGS("Texture") << mID << " abort: fail harder" << llendl;
+				LL_WARNS("Texture") << mID << " abort: fail harder" << llendl;
 				return true; // failed
 			}
 			
@@ -1576,7 +1577,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
 
 				// abort.
 				setState(DONE);
-				LL_DEBUGS("Texture") << mID << " abort: no data received" << llendl;
+				LL_WARNS("Texture") << mID << " abort: no data received" << llendl;
 				releaseHttpSemaphore();
 				return true;
 			}
diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp
index baf01e55658..236b95253c1 100755
--- a/indra/newview/llviewertexture.cpp
+++ b/indra/newview/llviewertexture.cpp
@@ -1819,7 +1819,10 @@ bool LLViewerFetchedTexture::updateFetch()
 				// We finished but received no data
 				if (current_discard < 0)
 				{
-					llwarns << "!mIsFetching, setting as missing" << llendl;
+					llwarns << "!mIsFetching, setting as missing, decode_priority " << decode_priority
+							<< " mRawDiscardLevel " << mRawDiscardLevel
+							<< " current_discard " << current_discard
+							<< llendl;
 					setIsMissingAsset();
 					desired_discard = -1;
 				}
@@ -1952,7 +1955,9 @@ bool LLViewerFetchedTexture::updateFetch()
 	}
 	else if (mHasFetcher && !mIsFetching)
 	{
-		// Only delete requests that haven't received any network data for a while
+		// Only delete requests that haven't received any network data
+		// for a while.  Note - this is the normal mechanism for
+		// deleting requests, not just a place to handle timeouts.
 		const F32 FETCH_IDLE_TIME = 5.f;
 		if (mLastPacketTimer.getElapsedTimeF32() > FETCH_IDLE_TIME)
 		{
-- 
GitLab


From ea9a71972dde8f61af06e92c3ed25e5ed5a27000 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Mon, 18 Mar 2013 17:00:48 -0400
Subject: [PATCH 370/436] Fix for build error

---
 indra/newview/lltexturefetch.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp
index ceec0e27f1e..3502a641cfa 100755
--- a/indra/newview/lltexturefetch.cpp
+++ b/indra/newview/lltexturefetch.cpp
@@ -3191,7 +3191,7 @@ bool LLTextureFetchWorker::insertPacket(S32 index, U8* data, S32 size)
 
 void LLTextureFetchWorker::setState(e_state new_state)
 {
-	static char* e_state_name[] =
+	static const char* e_state_name[] =
 	{
 		"INVALID",
 		"INIT",
-- 
GitLab


From d41e1cf171144a4903f60272dd09076aa5afa43c Mon Sep 17 00:00:00 2001
From: prep <prep@lindenlab.com>
Date: Mon, 18 Mar 2013 18:10:40 -0400
Subject: [PATCH 371/436] Fix for sh-4014. This was a regression caused by fix
 for sh-3650.

---
 indra/newview/llvoavatarself.cpp | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index ea39d44c739..d60ce6799bd 100644
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -2989,7 +2989,12 @@ void LLVOAvatarSelf::onCustomizeEnd(bool disable_camera_switch)
 		{
 			gAgentCamera.changeCameraToDefault();
 			gAgentCamera.resetView();
-		}		
+		}
+
+		if (gAgent.getRegion() && gAgent.getRegion()->getCentralBakeVersion())
+		{
+			LLAppearanceMgr::instance().requestServerAppearanceUpdate();
+		}
 	}
 }
 
-- 
GitLab


From 6fe98861335781973baf032bede81d4f2a55e965 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Mon, 18 Mar 2013 18:44:21 -0400
Subject: [PATCH 372/436] SH-3980 FIX - fixed most cases of server-bake
 blurring by disabling caching of server bakes. A better solution is
 desirable, may not be for initial release

---
 indra/newview/lltexturefetch.cpp | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp
index 3502a641cfa..38857abd47b 100755
--- a/indra/newview/lltexturefetch.cpp
+++ b/indra/newview/lltexturefetch.cpp
@@ -1178,7 +1178,9 @@ bool LLTextureFetchWorker::doWork(S32 param)
 																		  offset, size, responder);
 				mCacheReadTimer.reset();
 			}
-			else if ((mUrl.empty()||mFTType==FTT_SERVER_BAKE) && mFetcher->canLoadFromCache())
+/* SH-3980 - disabling caching of server bakes until we can fix the blurring problems */
+/*			else if ((mUrl.empty()||mFTType==FTT_SERVER_BAKE) && mFetcher->canLoadFromCache()) */
+			else if (mUrl.empty() && mFetcher->canLoadFromCache())
 			{
 				setPriority(LLWorkerThread::PRIORITY_LOW | mWorkPriority); // Set priority first since Responder may change it
 
@@ -1294,10 +1296,12 @@ bool LLTextureFetchWorker::doWork(S32 param)
 				mCanUseHTTP = false;
 			}
 		}
+#if 0 /* SH-3980 - disabling caching of server bakes until we can fix the blurring problems */
 		if (mFTType == FTT_SERVER_BAKE)
 		{
 			mWriteToCacheState = CAN_WRITE;
 		}
+#endif
 		if (mCanUseHTTP && !mUrl.empty())
 		{
 			setState(WAIT_HTTP_RESOURCE);
-- 
GitLab


From c7a7347a429653f2684752e887381cbc3a95e3a3 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Tue, 19 Mar 2013 09:34:58 -0400
Subject: [PATCH 373/436] still more build failure fixing

---
 indra/newview/lltexturefetch.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp
index 38857abd47b..1ee3dd5b1f1 100755
--- a/indra/newview/lltexturefetch.cpp
+++ b/indra/newview/lltexturefetch.cpp
@@ -3213,7 +3213,7 @@ void LLTextureFetchWorker::setState(e_state new_state)
 		"WAIT_ON_WRITE",
 		"DONE"
 	};
-	//llinfos << "id: " << mID << " FTType: " << mFTType << " disc: " << mDesiredDiscard << " sz: " << mDesiredSize << " state: " << e_state_name[mState] << " => " << e_state_name[new_state] << llendl;
+	LL_DEBUGS("Texture") << "id: " << mID << " FTType: " << mFTType << " disc: " << mDesiredDiscard << " sz: " << mDesiredSize << " state: " << e_state_name[mState] << " => " << e_state_name[new_state] << llendl;
 	mState = new_state;
 }
 
-- 
GitLab


From 5c19f15dcaab304b555bf659f2d309d0d2afbc89 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Wed, 20 Mar 2013 11:43:34 -0400
Subject: [PATCH 374/436] Removed avatar stuff from asset metrics, again. Must
 have gotten broken in a merge at some point.

---
 indra/newview/llappviewer.cpp                 |  1 -
 indra/newview/llviewerassetstats.cpp          | 39 +-------------
 indra/newview/llviewerassetstats.h            |  6 ---
 .../newview/tests/llviewerassetstats_test.cpp | 51 ++++++-------------
 4 files changed, 16 insertions(+), 81 deletions(-)
 mode change 100644 => 100755 indra/newview/llviewerassetstats.cpp
 mode change 100644 => 100755 indra/newview/llviewerassetstats.h
 mode change 100644 => 100755 indra/newview/tests/llviewerassetstats_test.cpp

diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index dac268ec922..3adf956ae3a 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -4392,7 +4392,6 @@ void LLAppViewer::idle()
 			// The 5-second interval is nice for this purpose.  If the object debug
 			// bit moves or is disabled, please give this a suitable home.
 			LLViewerAssetStatsFF::record_fps_main(gFPSClamped);
-			LLViewerAssetStatsFF::record_avatar_stats();
 		}
 	}
 
diff --git a/indra/newview/llviewerassetstats.cpp b/indra/newview/llviewerassetstats.cpp
old mode 100644
new mode 100755
index 4c59fd03719..aaa81c57d42
--- a/indra/newview/llviewerassetstats.cpp
+++ b/indra/newview/llviewerassetstats.cpp
@@ -160,9 +160,7 @@ LLViewerAssetStats::LLViewerAssetStats()
 
 LLViewerAssetStats::LLViewerAssetStats(const LLViewerAssetStats & src)
 	: mRegionHandle(src.mRegionHandle),
-	  mResetTimestamp(src.mResetTimestamp),
-	  mPhaseStats(src.mPhaseStats),
-	  mAvatarRezStates(src.mAvatarRezStates)
+	  mResetTimestamp(src.mResetTimestamp)
 {
 	const PerRegionContainer::const_iterator it_end(src.mRegionStats.end());
 	for (PerRegionContainer::const_iterator it(src.mRegionStats.begin()); it_end != it; ++it)
@@ -258,17 +256,6 @@ LLViewerAssetStats::recordFPS(F32 fps)
 	mCurRegionStats->mFPS.record(fps);
 }
 
-void
-LLViewerAssetStats::recordAvatarStats()
-{
-	std::vector<S32> rez_counts;
-	LLVOAvatar::getNearbyRezzedStats(rez_counts);
-	mAvatarRezStates = rez_counts;
-	mPhaseStats.clear();
-	mPhaseStats["cloud"] = LLViewerStats::PhaseMap::getPhaseStats("cloud");
-	mPhaseStats["cloud-or-gray"] = LLViewerStats::PhaseMap::getPhaseStats("cloud-or-gray");
-}
-
 LLSD
 LLViewerAssetStats::asLLSD(bool compact_output)
 {
@@ -299,11 +286,6 @@ LLViewerAssetStats::asLLSD(bool compact_output)
 	static const LLSD::String max_tag("max");
 	static const LLSD::String mean_tag("mean");
 
-	// Avatar sub-tags
-	static const LLSD::String avatar_tag("avatar");
-	static const LLSD::String avatar_nearby_tag("nearby");
-	static const LLSD::String avatar_phase_stats_tag("phase_stats");
-	
 	const duration_t now = LLViewerAssetStatsFF::get_timestamp();
 	mCurRegionStats->accumulateTime(now);
 
@@ -362,16 +344,6 @@ LLViewerAssetStats::asLLSD(bool compact_output)
 	LLSD ret = LLSD::emptyMap();
 	ret["regions"] = regions;
 	ret["duration"] = LLSD::Real((now - mResetTimestamp) * 1.0e-6);
-	LLSD avatar_info;
-	avatar_info[avatar_nearby_tag] = LLSD::emptyArray();
-	for (S32 rez_stat=0; rez_stat < mAvatarRezStates.size(); ++rez_stat)
-	{
-		std::string rez_status_name = LLVOAvatar::rezStatusToString(rez_stat);
-		avatar_info[avatar_nearby_tag][rez_status_name] = mAvatarRezStates[rez_stat];
-	}
-	avatar_info[avatar_phase_stats_tag]["cloud"] = mPhaseStats["cloud"].getData();
-	avatar_info[avatar_phase_stats_tag]["cloud-or-gray"] = mPhaseStats["cloud-or-gray"].getData();
-	ret[avatar_tag] = avatar_info;
 	
 	return ret;
 }
@@ -470,15 +442,6 @@ record_fps_main(F32 fps)
 	gViewerAssetStatsMain->recordFPS(fps);
 }
 
-void
-record_avatar_stats()
-{
-	if (! gViewerAssetStatsMain)
-		return;
-
-	gViewerAssetStatsMain->recordAvatarStats();
-}
-
 // 'thread1' - should be for TextureFetch thread
 
 void
diff --git a/indra/newview/llviewerassetstats.h b/indra/newview/llviewerassetstats.h
old mode 100644
new mode 100755
index 83197522306..e4581d21206
--- a/indra/newview/llviewerassetstats.h
+++ b/indra/newview/llviewerassetstats.h
@@ -256,10 +256,6 @@ class LLViewerAssetStats
 
 	// Time of last reset
 	duration_t mResetTimestamp;
-
-	// Nearby avatar stats
-	std::vector<S32> mAvatarRezStates;
-	LLViewerStats::phase_stats_t mPhaseStats;
 };
 
 
@@ -318,8 +314,6 @@ void record_response_main(LLViewerAssetType::EType at, bool with_http, bool is_t
 
 void record_fps_main(F32 fps);
 
-void record_avatar_stats();
-
 /**
  * Region context, event and duration loggers for Thread 1.
  */
diff --git a/indra/newview/tests/llviewerassetstats_test.cpp b/indra/newview/tests/llviewerassetstats_test.cpp
old mode 100644
new mode 100755
index f8923b98681..a331d9aa9e5
--- a/indra/newview/tests/llviewerassetstats_test.cpp
+++ b/indra/newview/tests/llviewerassetstats_test.cpp
@@ -37,30 +37,6 @@
 #include "llregionhandle.h"
 #include "../llvoavatar.h"
 
-void LLVOAvatar::getNearbyRezzedStats(std::vector<S32>& counts)
-{
-	counts.resize(3);
-	counts[0] = 0;
-	counts[1] = 0;
-	counts[2] = 1;
-}
-
-// static
-std::string LLVOAvatar::rezStatusToString(S32 rez_status)
-{
-	if (rez_status==0) return "cloud";
-	if (rez_status==1) return "gray";
-	if (rez_status==2) return "textured";
-	return "unknown";
-}
-
-// static
-LLViewerStats::StatsAccumulator& LLViewerStats::PhaseMap::getPhaseStats(const std::string& phase_name)
-{
-	static LLViewerStats::StatsAccumulator junk;
-	return junk;
-}
-
 static const char * all_keys[] = 
 {
 	"duration",
@@ -123,31 +99,34 @@ is_empty_map(const LLSD & sd)
 {
 	return sd.isMap() && 0 == sd.size();
 }
+#endif
 
+#if 0
 static bool
 is_single_key_map(const LLSD & sd, const std::string & key)
 {
 	return sd.isMap() && 1 == sd.size() && sd.has(key);
 }
+#endif
 
 static bool
 is_double_key_map(const LLSD & sd, const std::string & key1, const std::string & key2)
 {
 	return sd.isMap() && 2 == sd.size() && sd.has(key1) && sd.has(key2);
 }
-#endif
 
+#if 0
 static bool
 is_triple_key_map(const LLSD & sd, const std::string & key1, const std::string & key2, const std::string& key3)
 {
 	return sd.isMap() && 3 == sd.size() && sd.has(key1) && sd.has(key2) && sd.has(key3);
 }
-
+#endif
 
 static bool
 is_no_stats_map(const LLSD & sd)
 {
-	return is_triple_key_map(sd, "duration", "regions", "avatar");
+	return is_double_key_map(sd, "duration", "regions");
 }
 
 static bool
@@ -258,7 +237,7 @@ namespace tut
 		// Once the region is set, we will get a response even with no data collection
 		it->setRegion(region1_handle);
 		sd_full = it->asLLSD(false);
-		ensure("Correct single-key LLSD map root", is_triple_key_map(sd_full, "duration", "regions", "avatar"));
+		ensure("Correct single-key LLSD map root", is_double_key_map(sd_full, "duration", "regions"));
 		ensure("Correct single-slot LLSD array regions", is_single_slot_array(sd_full["regions"], region1_handle));
 		
 		LLSD sd = sd_full["regions"][0];
@@ -299,7 +278,7 @@ namespace tut
 		it->setRegion(region1_handle);
 		
 		LLSD sd = it->asLLSD(false);
-		ensure("Correct single-key LLSD map root", is_triple_key_map(sd, "regions", "duration", "avatar"));
+		ensure("Correct single-key LLSD map root", is_double_key_map(sd, "regions", "duration"));
 		ensure("Correct single-slot LLSD array regions", is_single_slot_array(sd["regions"], region1_handle));
 		sd = sd[0];
 		
@@ -324,7 +303,7 @@ namespace tut
 		LLViewerAssetStatsFF::record_dequeue_main(LLViewerAssetType::AT_BODYPART, false, false);
 
 		LLSD sd = gViewerAssetStatsMain->asLLSD(false);
-		ensure("Correct single-key LLSD map root", is_triple_key_map(sd, "regions", "duration", "avatar"));
+		ensure("Correct single-key LLSD map root", is_double_key_map(sd, "regions", "duration"));
 		ensure("Correct single-slot LLSD array regions", is_single_slot_array(sd["regions"], region1_handle));
 		sd = sd["regions"][0];
 		
@@ -364,7 +343,7 @@ namespace tut
 		LLSD sd = gViewerAssetStatsThread1->asLLSD(false);
 		ensure("Other collector is empty", is_no_stats_map(sd));
 		sd = gViewerAssetStatsMain->asLLSD(false);
-		ensure("Correct single-key LLSD map root", is_triple_key_map(sd, "regions", "duration", "avatar"));
+		ensure("Correct single-key LLSD map root", is_double_key_map(sd, "regions", "duration"));
 		ensure("Correct single-slot LLSD array regions", is_single_slot_array(sd["regions"], region1_handle));
 		sd = sd["regions"][0];
 		
@@ -414,7 +393,7 @@ namespace tut
 
 		// std::cout << sd << std::endl;
 		
-		ensure("Correct double-key LLSD map root", is_triple_key_map(sd, "duration", "regions", "avatar"));
+		ensure("Correct double-key LLSD map root", is_double_key_map(sd, "duration", "regions"));
 		ensure("Correct double-slot LLSD array regions", is_double_slot_array(sd["regions"], region1_handle, region2_handle));
 		LLSD sd1 = get_region(sd, region1_handle);
 		LLSD sd2 = get_region(sd, region2_handle);
@@ -437,7 +416,7 @@ namespace tut
 		// Reset leaves current region in place
 		gViewerAssetStatsMain->reset();
 		sd = gViewerAssetStatsMain->asLLSD(false);
-		ensure("Correct single-key LLSD map root", is_triple_key_map(sd, "regions", "duration", "avatar"));
+		ensure("Correct single-key LLSD map root", is_double_key_map(sd, "regions", "duration"));
 		ensure("Correct single-slot LLSD array regions (p2)", is_single_slot_array(sd["regions"], region2_handle));
 		sd2 = sd["regions"][0];
 		
@@ -486,7 +465,7 @@ namespace tut
 
 		LLSD sd = gViewerAssetStatsMain->asLLSD(false);
 
-		ensure("Correct double-key LLSD map root", is_triple_key_map(sd, "duration", "regions", "avatar"));
+		ensure("Correct double-key LLSD map root", is_double_key_map(sd, "duration", "regions"));
 		ensure("Correct double-slot LLSD array regions", is_double_slot_array(sd["regions"], region1_handle, region2_handle));
 		LLSD sd1 = get_region(sd, region1_handle);
 		LLSD sd2 = get_region(sd, region2_handle);
@@ -509,7 +488,7 @@ namespace tut
 		// Reset leaves current region in place
 		gViewerAssetStatsMain->reset();
 		sd = gViewerAssetStatsMain->asLLSD(false);
-		ensure("Correct single-key LLSD map root", is_triple_key_map(sd, "duration", "regions", "avatar"));
+		ensure("Correct single-key LLSD map root", is_double_key_map(sd, "duration", "regions"));
 		ensure("Correct single-slot LLSD array regions (p2)", is_single_slot_array(sd["regions"], region2_handle));
 		sd2 = get_region(sd, region2_handle);
 		ensure("Region2 is present in results", sd2.isMap());
@@ -555,7 +534,7 @@ namespace tut
 		LLSD sd = gViewerAssetStatsThread1->asLLSD(false);
 		ensure("Other collector is empty", is_no_stats_map(sd));
 		sd = gViewerAssetStatsMain->asLLSD(false);
-		ensure("Correct single-key LLSD map root", is_triple_key_map(sd, "regions", "duration", "avatar"));
+		ensure("Correct single-key LLSD map root", is_double_key_map(sd, "regions", "duration"));
 		ensure("Correct single-slot LLSD array regions", is_single_slot_array(sd["regions"], region1_handle));
 		sd = get_region(sd, region1_handle);
 		ensure("Region1 is present in results", sd.isMap());
-- 
GitLab


From 38970de543e7946ff1e9700e2f0f43f82e6dbb1a Mon Sep 17 00:00:00 2001
From: Nyx Linden <nyx@lindenlab.com>
Date: Wed, 20 Mar 2013 12:04:26 -0400
Subject: [PATCH 375/436] SH-3978 FIX Unsaved changes/save options not shown
 after adding new pants.

UI was incorrectly assuming that saving a wearable meant that the outfit
did not need to be saved as well. Updated panel switching to actually
check whether the outfit matches the base outfit.
---
 indra/newview/llsidepanelappearance.cpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/indra/newview/llsidepanelappearance.cpp b/indra/newview/llsidepanelappearance.cpp
index 025b20d6766..d25d203febc 100644
--- a/indra/newview/llsidepanelappearance.cpp
+++ b/indra/newview/llsidepanelappearance.cpp
@@ -375,7 +375,7 @@ void LLSidepanelAppearance::toggleOutfitEditPanel(BOOL visible, BOOL disable_cam
 		if (!disable_camera_switch)   // if we're just switching between outfit and wearable editing, don't end customization.
 		{
 			LLVOAvatarSelf::onCustomizeEnd(disable_camera_switch);
-			LLAppearanceMgr::getInstance()->setOutfitDirty( FALSE );
+			LLAppearanceMgr::getInstance()->updateIsDirty();
 		}
 	}
 }
@@ -410,7 +410,7 @@ void LLSidepanelAppearance::toggleWearableEditPanel(BOOL visible, LLViewerWearab
 	{
 		// Save changes if closing.
 		mEditWearable->saveChanges();
-		LLAppearanceMgr::getInstance()->setOutfitDirty( FALSE );
+		LLAppearanceMgr::getInstance()->updateIsDirty();
 		if (!disable_camera_switch)   // if we're just switching between outfit and wearable editing, don't end customization.
 		{
 			LLVOAvatarSelf::onCustomizeEnd(disable_camera_switch);
-- 
GitLab


From de2c88ca4334886ab48b3c3d474c6585036edb21 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Fri, 22 Mar 2013 12:17:06 -0400
Subject: [PATCH 376/436] Moved LastUpdateCOF stuff to avatar, so we can track
 last received for non-self avs

---
 indra/newview/llappearancemgr.cpp | 29 +++++------------------------
 indra/newview/llappearancemgr.h   |  9 ---------
 indra/newview/llvoavatar.cpp      | 20 +++++++++++++-------
 indra/newview/llvoavatar.h        | 11 +++++++++++
 indra/newview/llvoavatarself.cpp  |  0
 5 files changed, 29 insertions(+), 40 deletions(-)
 mode change 100644 => 100755 indra/newview/llappearancemgr.cpp
 mode change 100644 => 100755 indra/newview/llappearancemgr.h
 mode change 100644 => 100755 indra/newview/llvoavatar.cpp
 mode change 100644 => 100755 indra/newview/llvoavatar.h
 mode change 100644 => 100755 indra/newview/llvoavatarself.cpp

diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
old mode 100644
new mode 100755
index c04d6bad94a..59e07cd843d
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -1191,21 +1191,6 @@ S32 LLAppearanceMgr::getCOFVersion() const
 	}
 }
 
-S32 LLAppearanceMgr::getLastUpdateRequestCOFVersion() const
-{
-	return mLastUpdateRequestCOFVersion;
-}
-
-S32 LLAppearanceMgr::getLastAppearanceUpdateCOFVersion() const
-{
-	return mLastAppearanceUpdateCOFVersion;
-}
-
-void LLAppearanceMgr::setLastAppearanceUpdateCOFVersion(S32 new_val)
-{
-	mLastAppearanceUpdateCOFVersion = new_val;
-}
-
 const LLViewerInventoryItem* LLAppearanceMgr::getBaseOutfitLink()
 {
 	const LLUUID& current_outfit_cat = getCOF();
@@ -3275,8 +3260,8 @@ void LLAppearanceMgr::requestServerAppearanceUpdate(LLCurl::ResponderPtr respond
 		responder_ptr = new RequestAgentUpdateAppearanceResponder;
 	}
 	LLHTTPClient::post(url, body, responder_ptr);
-	llassert(cof_version >= mLastUpdateRequestCOFVersion);
-	mLastUpdateRequestCOFVersion = cof_version;
+	llassert(cof_version >= gAgentAvatarp->mLastUpdateRequestCOFVersion);
+	gAgentAvatarp->mLastUpdateRequestCOFVersion = cof_version;
 }
 
 class LLIncrementCofVersionResponder : public LLHTTPClient::Responder
@@ -3296,12 +3281,10 @@ class LLIncrementCofVersionResponder : public LLHTTPClient::Responder
 		llinfos << "Successfully incremented agent's COF." << llendl;
 		S32 new_version = pContent["category"]["version"].asInteger();
 
-		LLAppearanceMgr* app_mgr = LLAppearanceMgr::getInstance();
-
 		// cof_version should have increased
-		llassert(new_version > app_mgr->mLastUpdateRequestCOFVersion);
+		llassert(new_version > gAgentAvatarp->mLastUpdateRequestCOFVersion);
 
-		app_mgr->mLastUpdateRequestCOFVersion = new_version;
+		gAgentAvatarp->mLastUpdateRequestCOFVersion = new_version;
 	}
 	virtual void errorWithContent(U32 pStatus, const std::string& pReason, const LLSD& content)
 	{
@@ -3553,9 +3536,7 @@ LLAppearanceMgr::LLAppearanceMgr():
 	mAttachmentInvLinkEnabled(false),
 	mOutfitIsDirty(false),
 	mOutfitLocked(false),
-	mIsInUpdateAppearanceFromCOF(false),
-	mLastUpdateRequestCOFVersion(LLViewerInventoryCategory::VERSION_UNKNOWN),
-	mLastAppearanceUpdateCOFVersion(LLViewerInventoryCategory::VERSION_UNKNOWN)
+	mIsInUpdateAppearanceFromCOF(false)
 {
 	LLOutfitObserver& outfit_observer = LLOutfitObserver::instance();
 
diff --git a/indra/newview/llappearancemgr.h b/indra/newview/llappearancemgr.h
old mode 100644
new mode 100755
index d49f5d6c155..46252afbde1
--- a/indra/newview/llappearancemgr.h
+++ b/indra/newview/llappearancemgr.h
@@ -97,15 +97,6 @@ class LLAppearanceMgr: public LLSingleton<LLAppearanceMgr>
 	// Debugging - get truncated LLSD summary of COF contents.
 	LLSD dumpCOF() const;
 
-	// COF version of last viewer-initiated appearance update request.
-	S32 mLastUpdateRequestCOFVersion;
-	S32 getLastUpdateRequestCOFVersion() const;
-
-	// COF version of last appearance message received for self av.
-	S32 mLastAppearanceUpdateCOFVersion;
-	S32 getLastAppearanceUpdateCOFVersion() const;
-	void setLastAppearanceUpdateCOFVersion(S32 new_val);
-
 	// Finds the folder link to the currently worn outfit
 	const LLViewerInventoryItem *getBaseOutfitLink();
 	bool getBaseOutfitName(std::string &name);
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
old mode 100644
new mode 100755
index bc86bfd0a11..d4925247897
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -707,7 +707,9 @@ LLVOAvatar::LLVOAvatar(const LLUUID& id,
 	mLastRezzedStatus(-1),
 	mIsEditingAppearance(FALSE),
 	mUseLocalAppearance(FALSE),
-	mUseServerBakes(FALSE) // FIXME DRANO consider using boost::optional, defaulting to unknown.
+	mUseServerBakes(FALSE), // FIXME DRANO consider using boost::optional, defaulting to unknown.
+	mLastUpdateRequestCOFVersion(-1),
+	mLastUpdateReceivedCOFVersion(-1)
 {
 	//VTResume();  // VTune
 	
@@ -3006,11 +3008,11 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent)
 										  mUseServerBakes, central_bake_version);
 		std::string origin_string = bakedTextureOriginInfo();
 		debug_line += " [" + origin_string + "]";
+		S32 curr_cof_version = LLAppearanceMgr::instance().getCOFVersion();
+		S32 last_request_cof_version = mLastUpdateRequestCOFVersion;
+		S32 last_received_cof_version = mLastUpdateReceivedCOFVersion;
 		if (isSelf())
 		{
-			S32 curr_cof_version = LLAppearanceMgr::instance().getCOFVersion();
-			S32 last_request_cof_version = LLAppearanceMgr::instance().getLastUpdateRequestCOFVersion();
-			S32 last_received_cof_version = LLAppearanceMgr::instance().getLastAppearanceUpdateCOFVersion();
 			debug_line += llformat(" - cof: %d req: %d rcv:%d",
 								   curr_cof_version, last_request_cof_version, last_received_cof_version);
 			if (gSavedSettings.getBOOL("DebugForceAppearanceRequestFailure"))
@@ -3018,6 +3020,10 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent)
 				debug_line += " FORCING ERRS";
 			}
 		}
+		else
+		{
+			debug_line += llformat(" - cof rcv:%d", last_received_cof_version);
+		}
 		addDebugText(debug_line);
 	}
 	if (gSavedSettings.getBOOL("DebugAvatarCompositeBaked"))
@@ -6951,7 +6957,7 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 		return;
 	}
 	S32 this_update_cof_version = contents.mCOFVersion;
-	S32 last_update_request_cof_version = LLAppearanceMgr::instance().mLastUpdateRequestCOFVersion;
+	S32 last_update_request_cof_version = mLastUpdateRequestCOFVersion;
 
 	// Only now that we have result of appearance_version can we decide whether to bail out.
 	if( isSelf() )
@@ -6960,8 +6966,6 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 				<< " last_update_request_cof_version " << last_update_request_cof_version
 				<<  " my_cof_version " << LLAppearanceMgr::instance().getCOFVersion() << llendl;
 
-		LLAppearanceMgr::instance().setLastAppearanceUpdateCOFVersion(this_update_cof_version);
-		
 		if (getRegion() && (getRegion()->getCentralBakeVersion()==0))
 		{
 			llwarns << avString() << "Received AvatarAppearance message for self in non-server-bake region" << llendl;
@@ -7003,6 +7007,8 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 		return;
 	}
 
+	mLastUpdateReceivedCOFVersion = this_update_cof_version;
+		
 	setIsUsingServerBakes(appearance_version > 0);
 
 	applyParsedTEMessage(contents.mTEContents);
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
old mode 100644
new mode 100755
index 3a4cfa5800c..c2adaac18e8
--- a/indra/newview/llvoavatar.h
+++ b/indra/newview/llvoavatar.h
@@ -962,6 +962,17 @@ class LLVOAvatar :
 	LLFrameTimer	mRuthDebugTimer; // For tracking how long it takes for av to rez
 	LLFrameTimer	mDebugExistenceTimer; // Debugging for how long the avatar has been in memory.
 
+	//--------------------------------------------------------------------
+	// COF monitoring
+	//--------------------------------------------------------------------
+
+public:
+	// COF version of last viewer-initiated appearance update request. For non-self avs, this will remain at default.
+	S32 mLastUpdateRequestCOFVersion;
+
+	// COF version of last appearance message received for this av.
+	S32 mLastUpdateReceivedCOFVersion;
+
 /**                    Diagnostics
  **                                                                            **
  *******************************************************************************/
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
old mode 100644
new mode 100755
-- 
GitLab


From b3fc393d1672a96b511e2c07368251504cafac18 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Fri, 22 Mar 2013 12:21:24 -0400
Subject: [PATCH 377/436] SH-4001 FIX - made local texture loading universal.

---
 indra/newview/llvoavatarself.cpp | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index d60ce6799bd..b6dc4a1ff9b 100755
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -2573,7 +2573,11 @@ void LLVOAvatarSelf::addLocalTextureStats( ETextureIndex type, LLViewerFetchedTe
 {
 	if (!isIndexLocalTexture(type)) return;
 
-	if (!covered_by_baked)
+	// Sunshine - ignoring covered_by_baked will force local textures
+	// to always load.  Fix for SH-4001 and many related issues.  Do
+	// not restore this without some more targetted fix for the local
+	// textures failing to load issue.
+	//if (!covered_by_baked)
 	{
 		if (getLocalTextureID(type, index) != IMG_DEFAULT_AVATAR)
 		{
-- 
GitLab


From 1a75ba1f7474f55b9c2c27a44ff8ea8137a8cc86 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Fri, 22 Mar 2013 12:24:31 -0400
Subject: [PATCH 378/436] Disabled QAModeMetrics by default, prior to general
 release

---
 indra/newview/app_settings/settings.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
 mode change 100644 => 100755 indra/newview/app_settings/settings.xml

diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
old mode 100644
new mode 100755
index e3215aae703..f66d8fca5b5
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -7478,7 +7478,7 @@
       <key>Type</key>
       <string>Boolean</string>
       <key>Value</key>
-      <integer>1</integer>
+      <integer>0</integer>
     </map>
     <key>QuietSnapshotsToDisk</key>
     <map>
-- 
GitLab


From 144194b833fce60d4ed003267e132abaef54a5cd Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Fri, 22 Mar 2013 13:48:27 -0400
Subject: [PATCH 379/436] SH-3850 WIP - added some additional debugging output
 to try to catch gray textures

---
 indra/newview/lltexturefetch.cpp | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp
index 1ee3dd5b1f1..d39fcd81ab7 100755
--- a/indra/newview/lltexturefetch.cpp
+++ b/indra/newview/lltexturefetch.cpp
@@ -1235,6 +1235,11 @@ bool LLTextureFetchWorker::doWork(S32 param)
 			// we have enough data, decode it
 			llassert_always(mFormattedImage->getDataSize() > 0);
 			mLoadedDiscard = mDesiredDiscard;
+			if (mLoadedDiscard <= 0)
+			{
+				LL_WARNS("Texture") << mID << " mLoadedDiscard is " << mLoadedDiscard
+									<< ", should be >=0" << llendl;
+			}
 			setState(DECODE_IMAGE);
 			mInCache = TRUE;
 			mWriteToCacheState = NOT_WRITE ;
@@ -1358,6 +1363,11 @@ bool LLTextureFetchWorker::doWork(S32 param)
 				return true; // failed
 			}
 			setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority);
+			if (mLoadedDiscard <= 0)
+			{
+				LL_WARNS("Texture") << mID << " mLoadedDiscard is " << mLoadedDiscard
+									<< ", should be >=0" << llendl;
+			}
 			setState(DECODE_IMAGE);
 			mWriteToCacheState = SHOULD_WRITE;
 			recordTextureDone(false);
@@ -1423,6 +1433,11 @@ bool LLTextureFetchWorker::doWork(S32 param)
 					// We already have all the data, just decode it
 					mLoadedDiscard = mFormattedImage->getDiscardLevel();
 					setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority);
+					if (mLoadedDiscard <= 0)
+					{
+						LL_WARNS("Texture") << mID << " mLoadedDiscard is " << mLoadedDiscard
+											<< ", should be >=0" << llendl;
+					}
 					setState(DECODE_IMAGE);
 					releaseHttpSemaphore();
 					return false;
@@ -1548,6 +1563,11 @@ bool LLTextureFetchWorker::doWork(S32 param)
 					// Use available data
 					mLoadedDiscard = mFormattedImage->getDiscardLevel();
 					setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority);
+					if (mLoadedDiscard <= 0)
+					{
+						LL_WARNS("Texture") << mID << " mLoadedDiscard is " << mLoadedDiscard
+											<< ", should be >=0" << llendl;
+					}
 					setState(DECODE_IMAGE);
 					releaseHttpSemaphore();
 					return false; 
@@ -1647,6 +1667,11 @@ bool LLTextureFetchWorker::doWork(S32 param)
 			mHttpReplyOffset = 0;
 			
 			mLoadedDiscard = mRequestedDiscard;
+			if (mLoadedDiscard <= 0)
+			{
+				LL_WARNS("Texture") << mID << " mLoadedDiscard is " << mLoadedDiscard
+									<< ", should be >=0" << llendl;
+			}
 			setState(DECODE_IMAGE);
 			if (mWriteToCacheState != NOT_WRITE)
 			{
-- 
GitLab


From 41100ac9d36b4f4194f9409342700b410b94f1d5 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Fri, 22 Mar 2013 13:55:39 -0400
Subject: [PATCH 380/436] SH-3850 WIP - fixed some warnings

---
 indra/newview/lltexturefetch.cpp | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp
index d39fcd81ab7..be5fde9e2b0 100755
--- a/indra/newview/lltexturefetch.cpp
+++ b/indra/newview/lltexturefetch.cpp
@@ -1235,7 +1235,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
 			// we have enough data, decode it
 			llassert_always(mFormattedImage->getDataSize() > 0);
 			mLoadedDiscard = mDesiredDiscard;
-			if (mLoadedDiscard <= 0)
+			if (mLoadedDiscard < 0)
 			{
 				LL_WARNS("Texture") << mID << " mLoadedDiscard is " << mLoadedDiscard
 									<< ", should be >=0" << llendl;
@@ -1363,7 +1363,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
 				return true; // failed
 			}
 			setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority);
-			if (mLoadedDiscard <= 0)
+			if (mLoadedDiscard < 0)
 			{
 				LL_WARNS("Texture") << mID << " mLoadedDiscard is " << mLoadedDiscard
 									<< ", should be >=0" << llendl;
@@ -1433,7 +1433,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
 					// We already have all the data, just decode it
 					mLoadedDiscard = mFormattedImage->getDiscardLevel();
 					setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority);
-					if (mLoadedDiscard <= 0)
+					if (mLoadedDiscard < 0)
 					{
 						LL_WARNS("Texture") << mID << " mLoadedDiscard is " << mLoadedDiscard
 											<< ", should be >=0" << llendl;
@@ -1563,7 +1563,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
 					// Use available data
 					mLoadedDiscard = mFormattedImage->getDiscardLevel();
 					setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority);
-					if (mLoadedDiscard <= 0)
+					if (mLoadedDiscard < 0)
 					{
 						LL_WARNS("Texture") << mID << " mLoadedDiscard is " << mLoadedDiscard
 											<< ", should be >=0" << llendl;
@@ -1667,7 +1667,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
 			mHttpReplyOffset = 0;
 			
 			mLoadedDiscard = mRequestedDiscard;
-			if (mLoadedDiscard <= 0)
+			if (mLoadedDiscard < 0)
 			{
 				LL_WARNS("Texture") << mID << " mLoadedDiscard is " << mLoadedDiscard
 									<< ", should be >=0" << llendl;
-- 
GitLab


From ace5a9bf6c087a70d5183371d1aa988a1ee17a2a Mon Sep 17 00:00:00 2001
From: eli <none@none>
Date: Mon, 25 Mar 2013 14:41:42 -0700
Subject: [PATCH 381/436] sync with viewer-development

---
 .../default/xui/da/menu_im_well_button.xml    |   4 -
 .../default/xui/da/panel_nearby_chat_bar.xml  |   2 +-
 .../skins/default/xui/de/floater_chat_bar.xml |   2 +-
 .../default/xui/de/menu_im_well_button.xml    |   4 -
 .../default/xui/de/panel_nearby_chat_bar.xml  |   2 +-
 .../skins/default/xui/en/floater_camera.xml   |   4 +-
 .../skins/default/xui/en/floater_chat_bar.xml |  85 --
 .../xui/en/floater_conversation_log.xml       |  84 ++
 .../xui/en/floater_conversation_preview.xml   |  64 ++
 .../default/xui/en/floater_destinations.xml   |   6 +-
 .../default/xui/en/floater_im_container.xml   | 203 +++-
 .../default/xui/en/floater_im_session.xml     | 418 ++++++--
 .../default/xui/en/floater_incoming_call.xml  |  58 +-
 .../skins/default/xui/en/floater_moveview.xml |   4 +-
 .../xui/en/floater_pathfinding_console.xml    |   2 +-
 .../skins/default/xui/en/floater_people.xml   |  14 +-
 .../xui/en/floater_voice_chat_volume.xml      |  48 +
 .../default/xui/en/floater_voice_controls.xml | 155 ---
 .../default/xui/en/floater_voice_effect.xml   |   3 +-
 .../default/xui/en/floater_voice_volume.xml   |  59 ++
 .../skins/default/xui/en/inspect_avatar.xml   | 100 +-
 .../skins/default/xui/en/menu_cof_gear.xml    |   2 +-
 .../default/xui/en/menu_conversation.xml      | 203 ++++
 .../xui/en/menu_conversation_log_gear.xml     | 142 +++
 .../xui/en/menu_conversation_log_view.xml     |  45 +
 .../skins/default/xui/en/menu_group_plus.xml  |   4 +-
 .../default/xui/en/menu_im_conversation.xml   | 101 ++
 .../xui/en/menu_im_session_showmodes.xml      |  49 +
 .../default/xui/en/menu_im_well_button.xml    |  16 -
 .../xui/en/menu_inspect_avatar_gear.xml       | 143 ---
 .../default/xui/en/menu_inspect_self_gear.xml | 252 -----
 .../skins/default/xui/en/menu_object_icon.xml |  18 +
 .../default/xui/en/menu_participant_view.xml  | 112 +++
 .../xui/en/menu_people_blocked_gear.xml       |  26 +
 .../xui/en/menu_people_blocked_plus.xml       |  20 +
 .../xui/en/menu_people_blocked_view.xml       |  26 +
 ..._sort.xml => menu_people_friends_view.xml} |  12 +-
 .../default/xui/en/menu_people_groups.xml     |  27 +-
 ...w_sort.xml => menu_people_groups_view.xml} |   9 -
 .../default/xui/en/menu_people_nearby.xml     |  99 +-
 .../xui/en/menu_people_nearby_multiselect.xml |  14 +-
 .../xui/en/menu_people_nearby_view.xml        |  53 +
 .../xui/en/menu_people_nearby_view_sort.xml   |  57 --
 ...w_sort.xml => menu_people_recent_view.xml} |   4 -
 .../skins/default/xui/en/menu_url_agent.xml   |  20 +-
 .../default/xui/en/menu_url_objectim.xml      |   2 +-
 .../skins/default/xui/en/menu_viewer.xml      | 165 +++-
 .../skins/default/xui/en/notifications.xml    | 165 +++-
 .../default/xui/en/panel_activeim_row.xml     |  97 --
 .../xui/en/panel_adhoc_control_panel.xml      |  95 --
 .../default/xui/en/panel_avatar_list_item.xml |   1 +
 .../xui/en/panel_block_list_sidetray.xml      | 163 +--
 .../xui/en/panel_blocked_list_item.xml        |  71 ++
 .../default/xui/en/panel_bottomtray_lite.xml  |   2 +-
 .../default/xui/en/panel_chiclet_bar.xml      |  48 -
 .../xui/en/panel_conversation_list_item.xml   |  98 ++
 .../en/panel_conversation_log_list_item.xml   | 107 ++
 .../xui/en/panel_group_control_panel.xml      | 109 --
 .../default/xui/en/panel_group_list_item.xml  |   1 +
 .../default/xui/en/panel_im_control_panel.xml | 166 ----
 .../default/xui/en/panel_inbox_inventory.xml  |   2 +-
 .../skins/default/xui/en/panel_landmarks.xml  |  16 +-
 .../default/xui/en/panel_nearby_chat.xml      |  22 +-
 .../default/xui/en/panel_nearby_chat_bar.xml  |   2 +-
 .../default/xui/en/panel_outbox_inventory.xml |  25 +-
 .../skins/default/xui/en/panel_people.xml     | 929 ++++++++----------
 .../default/xui/en/panel_preferences_chat.xml | 693 ++++++++-----
 .../xui/en/panel_preferences_colors.xml       |   4 +-
 .../xui/en/panel_preferences_general.xml      |   6 +-
 .../xui/en/panel_preferences_graphics1.xml    |  15 +-
 .../xui/en/panel_preferences_privacy.xml      | 226 ++---
 .../newview/skins/default/xui/en/strings.xml  |  42 +-
 .../default/xui/en/widgets/chat_editor.xml    |   4 +
 .../xui/en/widgets/chiclet_im_adhoc.xml       |  55 --
 .../xui/en/widgets/chiclet_im_group.xml       |  56 --
 .../default/xui/en/widgets/chiclet_im_p2p.xml |  56 --
 .../widgets/conversation_view_participant.xml |  42 +
 .../en/widgets/conversation_view_session.xml  |  16 +
 .../xui/en/widgets/folder_view_item.xml       |   8 +-
 .../en/widgets/inbox_folder_view_folder.xml   |   8 +-
 .../xui/en/widgets/inbox_inventory_panel.xml  |   3 +-
 .../en/widgets/outbox_folder_view_folder.xml  |   9 -
 .../xui/en/widgets/outbox_inventory_panel.xml |   2 -
 .../skins/default/xui/en/widgets/text.xml     |   1 +
 .../skins/default/xui/en/widgets/toolbar.xml  |  12 +-
 .../skins/default/xui/es/floater_chat_bar.xml |   2 +-
 .../default/xui/es/menu_im_well_button.xml    |   4 -
 .../default/xui/es/panel_nearby_chat_bar.xml  |   2 +-
 .../skins/default/xui/fr/floater_chat_bar.xml |   2 +-
 .../default/xui/fr/menu_im_well_button.xml    |   4 -
 .../default/xui/fr/panel_nearby_chat_bar.xml  |   2 +-
 .../skins/default/xui/it/floater_chat_bar.xml |   2 +-
 .../default/xui/it/menu_im_well_button.xml    |   4 -
 .../default/xui/it/panel_nearby_chat_bar.xml  |   2 +-
 .../skins/default/xui/ja/floater_chat_bar.xml |   2 +-
 .../default/xui/ja/menu_im_well_button.xml    |   4 -
 .../default/xui/ja/panel_nearby_chat_bar.xml  |   2 +-
 .../default/xui/pl/menu_im_well_button.xml    |   4 -
 .../default/xui/pl/panel_nearby_chat_bar.xml  |   2 +-
 .../skins/default/xui/pt/floater_chat_bar.xml |   2 +-
 .../default/xui/pt/menu_im_well_button.xml    |   4 -
 .../default/xui/pt/panel_nearby_chat_bar.xml  |   2 +-
 .../skins/default/xui/ru/floater_chat_bar.xml |   2 +-
 .../default/xui/ru/menu_im_well_button.xml    |   4 -
 .../default/xui/ru/panel_nearby_chat_bar.xml  |   2 +-
 .../skins/default/xui/tr/floater_chat_bar.xml |   2 +-
 .../default/xui/tr/menu_im_well_button.xml    |   4 -
 .../default/xui/tr/panel_nearby_chat_bar.xml  |   2 +-
 .../default/xui/zh/menu_im_well_button.xml    |   4 -
 .../default/xui/zh/panel_nearby_chat_bar.xml  |   2 +-
 110 files changed, 3513 insertions(+), 2874 deletions(-)
 delete mode 100644 indra/newview/skins/default/xui/da/menu_im_well_button.xml
 delete mode 100644 indra/newview/skins/default/xui/de/menu_im_well_button.xml
 delete mode 100644 indra/newview/skins/default/xui/en/floater_chat_bar.xml
 create mode 100644 indra/newview/skins/default/xui/en/floater_conversation_log.xml
 create mode 100644 indra/newview/skins/default/xui/en/floater_conversation_preview.xml
 create mode 100644 indra/newview/skins/default/xui/en/floater_voice_chat_volume.xml
 delete mode 100644 indra/newview/skins/default/xui/en/floater_voice_controls.xml
 create mode 100644 indra/newview/skins/default/xui/en/floater_voice_volume.xml
 create mode 100644 indra/newview/skins/default/xui/en/menu_conversation.xml
 create mode 100644 indra/newview/skins/default/xui/en/menu_conversation_log_gear.xml
 create mode 100644 indra/newview/skins/default/xui/en/menu_conversation_log_view.xml
 create mode 100644 indra/newview/skins/default/xui/en/menu_im_conversation.xml
 create mode 100644 indra/newview/skins/default/xui/en/menu_im_session_showmodes.xml
 delete mode 100644 indra/newview/skins/default/xui/en/menu_im_well_button.xml
 delete mode 100644 indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml
 delete mode 100644 indra/newview/skins/default/xui/en/menu_inspect_self_gear.xml
 create mode 100644 indra/newview/skins/default/xui/en/menu_participant_view.xml
 create mode 100644 indra/newview/skins/default/xui/en/menu_people_blocked_gear.xml
 create mode 100644 indra/newview/skins/default/xui/en/menu_people_blocked_plus.xml
 create mode 100644 indra/newview/skins/default/xui/en/menu_people_blocked_view.xml
 rename indra/newview/skins/default/xui/en/{menu_people_friends_view_sort.xml => menu_people_friends_view.xml} (83%)
 rename indra/newview/skins/default/xui/en/{menu_people_groups_view_sort.xml => menu_people_groups_view.xml} (65%)
 create mode 100644 indra/newview/skins/default/xui/en/menu_people_nearby_view.xml
 delete mode 100644 indra/newview/skins/default/xui/en/menu_people_nearby_view_sort.xml
 rename indra/newview/skins/default/xui/en/{menu_people_recent_view_sort.xml => menu_people_recent_view.xml} (81%)
 delete mode 100644 indra/newview/skins/default/xui/en/panel_activeim_row.xml
 delete mode 100644 indra/newview/skins/default/xui/en/panel_adhoc_control_panel.xml
 create mode 100644 indra/newview/skins/default/xui/en/panel_blocked_list_item.xml
 create mode 100644 indra/newview/skins/default/xui/en/panel_conversation_list_item.xml
 create mode 100644 indra/newview/skins/default/xui/en/panel_conversation_log_list_item.xml
 delete mode 100644 indra/newview/skins/default/xui/en/panel_group_control_panel.xml
 delete mode 100644 indra/newview/skins/default/xui/en/panel_im_control_panel.xml
 create mode 100644 indra/newview/skins/default/xui/en/widgets/chat_editor.xml
 delete mode 100644 indra/newview/skins/default/xui/en/widgets/chiclet_im_adhoc.xml
 delete mode 100644 indra/newview/skins/default/xui/en/widgets/chiclet_im_group.xml
 delete mode 100644 indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml
 create mode 100644 indra/newview/skins/default/xui/en/widgets/conversation_view_participant.xml
 create mode 100644 indra/newview/skins/default/xui/en/widgets/conversation_view_session.xml
 delete mode 100644 indra/newview/skins/default/xui/en/widgets/outbox_folder_view_folder.xml
 delete mode 100644 indra/newview/skins/default/xui/en/widgets/outbox_inventory_panel.xml
 delete mode 100644 indra/newview/skins/default/xui/es/menu_im_well_button.xml
 delete mode 100644 indra/newview/skins/default/xui/fr/menu_im_well_button.xml
 delete mode 100644 indra/newview/skins/default/xui/it/menu_im_well_button.xml
 delete mode 100644 indra/newview/skins/default/xui/ja/menu_im_well_button.xml
 delete mode 100644 indra/newview/skins/default/xui/pl/menu_im_well_button.xml
 delete mode 100644 indra/newview/skins/default/xui/pt/menu_im_well_button.xml
 delete mode 100644 indra/newview/skins/default/xui/ru/menu_im_well_button.xml
 delete mode 100644 indra/newview/skins/default/xui/tr/menu_im_well_button.xml
 delete mode 100644 indra/newview/skins/default/xui/zh/menu_im_well_button.xml

diff --git a/indra/newview/skins/default/xui/da/menu_im_well_button.xml b/indra/newview/skins/default/xui/da/menu_im_well_button.xml
deleted file mode 100644
index 4889230919b..00000000000
--- a/indra/newview/skins/default/xui/da/menu_im_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="IM Well Button Context Menu">
-	<menu_item_call label="Luk alle" name="Close All"/>
-</context_menu>
diff --git a/indra/newview/skins/default/xui/da/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/da/panel_nearby_chat_bar.xml
index 949cbcbd7b4..eb104201f8a 100644
--- a/indra/newview/skins/default/xui/da/panel_nearby_chat_bar.xml
+++ b/indra/newview/skins/default/xui/da/panel_nearby_chat_bar.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="chat_bar">
+<panel name="nearby_chat">
 	<line_editor label="Klik her for at chatte." name="chat_box" tool_tip="Tryk på enter for at tale, Ctrl-Enter for at råbe."/>
 	<button name="show_nearby_chat" tool_tip="Viser/skjuler log for chat nærved"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/de/floater_chat_bar.xml b/indra/newview/skins/default/xui/de/floater_chat_bar.xml
index 2464a55665e..ab77d4dae50 100644
--- a/indra/newview/skins/default/xui/de/floater_chat_bar.xml
+++ b/indra/newview/skins/default/xui/de/floater_chat_bar.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="chat_bar" title="CHAT IN DER NÄHE">
+<floater name="nearby_chat" title="CHAT IN DER NÄHE">
 	<panel name="bottom_panel">
 		<line_editor label="Zum Chatten hier klicken." name="chat_box" tool_tip="Eingabetaste zum Sprechen, Strg+Eingabe zum Rufen"/>
 		<button name="show_nearby_chat" tool_tip="Chatprotokoll in der Nähe ein-/ausblenden"/>
diff --git a/indra/newview/skins/default/xui/de/menu_im_well_button.xml b/indra/newview/skins/default/xui/de/menu_im_well_button.xml
deleted file mode 100644
index f464b71f4a7..00000000000
--- a/indra/newview/skins/default/xui/de/menu_im_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="IM Well Button Context Menu">
-	<menu_item_call label="Alle schließen" name="Close All"/>
-</context_menu>
diff --git a/indra/newview/skins/default/xui/de/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/de/panel_nearby_chat_bar.xml
index 08cc0b0ec8a..69cf6d98de6 100644
--- a/indra/newview/skins/default/xui/de/panel_nearby_chat_bar.xml
+++ b/indra/newview/skins/default/xui/de/panel_nearby_chat_bar.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="chat_bar">
+<panel name="nearby_chat">
 	<line_editor label="Zum Chatten hier klicken." name="chat_box" tool_tip="Eingabe drücken, um zu sprechen, Strg-Eingabe drücken, um zu Rufen."/>
 	<button name="show_nearby_chat" tool_tip="Protokoll des Chats in der Nähe anzeigen/ausblenden"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/en/floater_camera.xml b/indra/newview/skins/default/xui/en/floater_camera.xml
index 22bc488a925..521389d7b3a 100644
--- a/indra/newview/skins/default/xui/en/floater_camera.xml
+++ b/indra/newview/skins/default/xui/en/floater_camera.xml
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <floater
  positioning="specified"
- left="458"
- bottom="-80"
+ right="-460"
+ bottom="-50"
  follows="left|bottom"
  legacy_header_height="18"
  can_minimize="true"
diff --git a/indra/newview/skins/default/xui/en/floater_chat_bar.xml b/indra/newview/skins/default/xui/en/floater_chat_bar.xml
deleted file mode 100644
index 405557242fa..00000000000
--- a/indra/newview/skins/default/xui/en/floater_chat_bar.xml
+++ /dev/null
@@ -1,85 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater
- positioning="specified"
- left="10"
- bottom="-10"
- height="60"
- layout="topleft"
- legacy_header_height="25"
- single_instance="true"
- title="NEARBY CHAT"
- save_rect="true"
- save_visibility="true"
- can_close="true"
- can_minimize="true"
- help_topic="chat_bar"
- min_height="60"
- min_width="150"
- can_resize="true"
- default_tab_group="1"
- name="chat_bar"
- width="300">
-    <panel
-        top="20"
-        class="panel_nearby_chat"
-        follow="all"
-        width="300"
-        height="0"
-        visible="false"
-        filename="panel_nearby_chat.xml"
-        name="nearby_chat" />
-    <panel width="300" 
-           height="31" 
-           left="0" 
-           name="bottom_panel"
-           bottom="-1" 
-           follows="left|right|bottom" 
-           tab_group="1">
-      <line_editor
-        border_style="line"
-        border_thickness="1"
-        follows="left|right"
-        height="23"
-        label="Click here to chat."
-        layout="topleft"
-        left_delta="7"
-        left="0"
-        max_length_bytes="1023"
-        name="chat_box"
-        spellcheck="true"
-        text_pad_left="5"
-        text_pad_right="25"
-        tool_tip="Press Enter to say, Ctrl+Enter to shout"
-        top="2"
-        width="255" />
-      <output_monitor
-        auto_update="true"
-        follows="right"
-        draw_border="false"
-        height="16"
-        layout="topleft"
-        left_pad="-24"
-        mouse_opaque="true"
-        name="chat_zone_indicator"
-        top="6"
-        visible="true"
-        width="20" />
-      <button
-        follows="right"
-        is_toggle="true"
-        width="20"
-        top="2"
-        layout="topleft"
-        left_pad="12"
-        image_disabled="ComboButton_UpOff"
-        image_unselected="ComboButton_UpOff"
-        image_selected="ComboButton_On"
-        image_pressed="ComboButton_UpSelected"
-        image_pressed_selected="ComboButton_Selected"
-        height="23"
-        chrome="true"
-        name="show_nearby_chat"
-        tool_tip="Shows/hides nearby chat log">
-      </button>
-    </panel>
-</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_conversation_log.xml b/indra/newview/skins/default/xui/en/floater_conversation_log.xml
new file mode 100644
index 00000000000..19a4cbc1198
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_conversation_log.xml
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+
+<floater
+ can_resize="true"
+ positioning="cascading"
+ help_topic="conversation_log"
+ height="200"
+ min_height="100"
+ min_width="230"
+ layout="topleft"
+ name="floater_conversation_log"
+ save_rect="true"
+ single_instance="true"
+ reuse_instance="true"
+ title="CONVERSATION LOG"
+ width="300">
+  <panel
+   follows="left|top|right"
+   height="32"
+   left="0"
+   name="buttons_panel"
+   top="0">
+    <filter_editor
+     follows="left|top|right"
+     height="23"
+     layout="topleft"
+     left="8"
+     label="Filter People"
+     max_length_chars="300"
+     name="people_filter_input"
+     text_color="Black"
+     text_pad_left="10"
+     top="4"
+     width="204" />
+    <menu_button
+     follows="top|right"
+     height="25"
+     image_hover_unselected="Toolbar_Middle_Over"
+     image_overlay="Conv_toolbar_sort"
+     image_selected="Toolbar_Middle_Selected"
+     image_unselected="Toolbar_Middle_Off"
+     layout="topleft"
+     left_pad="8"
+     menu_filename="menu_conversation_log_view.xml"
+     menu_position="bottomleft"
+     name="conversation_view_btn"
+     tool_tip="View/sort options"
+     top="3"
+     width="31" />
+    <menu_button
+     follows="top|right"
+     height="25"
+     image_hover_unselected="Toolbar_Middle_Over"
+     image_overlay="OptionsMenu_Off"
+     image_selected="Toolbar_Middle_Selected"
+     image_unselected="Toolbar_Middle_Off"
+     layout="topleft"
+     left_pad="8"
+     name="conversations_gear_btn"
+     tool_tip="Actions on selected person or group"
+     top="3"
+     width="31" />
+  </panel>
+  <panel
+   bottom="-1"
+   follows="all"
+   left="0"
+   name="log_panel"
+   right="-1"
+   top="32">
+    <conversation_log_list
+     allow_select="true"
+     bottom="-8"
+     opaque="true"
+     follows="all"
+     left="8"
+     keep_selection_visible_on_reshape="true"
+     item_pad="2"
+     multi_select="false"
+     name="conversation_log_list"
+     right="-8"
+     top="0" />
+  </panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_conversation_preview.xml b/indra/newview/skins/default/xui/en/floater_conversation_preview.xml
new file mode 100644
index 00000000000..764b9d83850
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_conversation_preview.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+ legacy_header_height="18"
+ can_resize="true"
+ default_tab_group="1"
+ help_topic="conversation_preview"
+ height="391"
+ layout="topleft"
+ min_height="243"
+ min_width="234"
+ name="preview_conversation"
+ title="CONVERSATION:"
+ width="400">
+    <floater.string
+     name="Title">
+        CONVERSATION: [NAME]
+    </floater.string>
+    <chat_history
+     font="SansSerifSmall"
+     follows="all"
+     visible="true"
+     height="330"
+     name="chat_history"
+     notify_unread_msg="false"
+     parse_highlights="true"
+     parse_urls="true"
+     left="5"
+     top_pad="25"
+     width="390">
+    </chat_history>
+    <text
+     follows="bottom|right"
+     font="SansSerif"
+     height="22"
+     layout="topleft"
+     name="page_label"
+     right="-110"
+     top_pad="7"
+     value="Page"
+     width="35">
+    </text>
+    <spinner
+     allow_digits_only="true"
+     decimal_digits="0"
+     follows="bottom|right"
+     height="23"
+     increment="1"
+     label_width="40"
+     layout="topleft"
+     left_pad="0"
+     name="history_page_spin"
+     top_delta="-3"
+     width="50"/>
+    <text
+     follows="bottom|right"
+     font="SansSerif"
+     height="22"
+     layout="topleft"
+     name="page_num_label"
+     left_pad="5"
+     top_delta="4"
+     width="40">
+    </text>
+</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_destinations.xml b/indra/newview/skins/default/xui/en/floater_destinations.xml
index 39aa8e07bb6..94ebaa9cb2e 100644
--- a/indra/newview/skins/default/xui/en/floater_destinations.xml
+++ b/indra/newview/skins/default/xui/en/floater_destinations.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <floater
- positioning="cascading"
+ positioning="cascading"	
  ignore_ui_scale="false"
  legacy_header_height="225"
  can_minimize="true"
@@ -17,11 +17,11 @@
  save_rect="true"
  save_visibility="true"
  title="DESTINATIONS"
- width="840">
+ width="550">
     <web_browser
       top="25"
       height="200"
-      width="840"
+      width="550"
       follows="all"
       name="destination_guide_contents"
       trusted_content="true"/>
diff --git a/indra/newview/skins/default/xui/en/floater_im_container.xml b/indra/newview/skins/default/xui/en/floater_im_container.xml
index e123de46c20..65f623a47e8 100644
--- a/indra/newview/skins/default/xui/en/floater_im_container.xml
+++ b/indra/newview/skins/default/xui/en/floater_im_container.xml
@@ -1,49 +1,180 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <multi_floater
- can_close="false"  
+ can_close="true"  
  can_minimize="true"
  can_resize="true"
- height="390"
+ height="210"
  layout="topleft"
  name="floater_im_box"
  help_topic="floater_im_box"
  save_rect="true"
  save_visibility="true"
  single_instance="true"
+ reuse_instance="true"
  title="CONVERSATIONS"
- width="396">
-    <tab_container
-     follows="left|right|top|bottom"
-     height="390"
+ bottom="-50"
+ right="-5"
+ width="450"
+ min_width="38">
+    <string
+     name="collapse_icon"
+     value="Conv_toolbar_collapse"/>
+    <string
+     name="expand_icon"
+     value="Conv_toolbar_expand"/>
+    <layout_stack
+     animate="true" 
+     bottom="-1"
+     follows="all"
      layout="topleft"
-     left="1"
-     name="im_box_tab_container"
-     tab_position="bottom"
-     tab_width="64"
-     tab_max_width = "134"
-     tab_height="16"
-     use_custom_icon_ctrl="true"
-     tab_icon_ctrl_pad="2"
-     halign="left"
-     use_ellipses="true"
-     top="0"
-     width="394">
-      <first_tab
-       tab_bottom_image_flash="Toolbar_Left_Flash"/>
-      <middle_tab
-       tab_bottom_image_flash="Toolbar_Middle_Flash"/>
-      <last_tab
-       tab_bottom_image_flash="Toolbar_Right_Flash"/>
-    </tab_container>
-    <icon
-     color="DefaultShadowLight"
-     enabled="false"
-     follows="left|right|bottom"
-     height="17"
-     image_name="tabarea.tga"
-     layout="bottomleft"
-     left="1"
-     name="im_box_tab_container_icon"
-     bottom="10"
-     width="394" />
+     left="0"
+     name="conversations_stack"
+     orientation="horizontal"
+     right="-1"
+     top="0">
+        <layout_panel
+         auto_resize="false"
+         user_resize="true"        
+         name="conversations_layout_panel"
+         min_dim="38"
+         expanded_min_dim="156">
+            <layout_stack
+             animate="false" 
+             follows="left|top|right"
+             height="35"
+             layout="topleft"
+             left="0"
+             name="conversations_pane_buttons_stack"
+             orientation="horizontal"
+             right="-1"
+             top="0">
+                <layout_panel
+                 auto_resize="true"
+                 height="35"
+                 name="conversations_pane_buttons_expanded">
+                    <menu_button
+                     follows="top|left"
+                     height="25"
+                     image_hover_unselected="Toolbar_Middle_Over"
+                     image_overlay="Conv_toolbar_sort"
+                     image_selected="Toolbar_Middle_Selected"
+                     image_unselected="Toolbar_Middle_Off"
+                     menu_filename="menu_participant_view.xml"
+                     layout="topleft"
+                     left="5"
+                     name="sort_btn"
+                     tool_tip="View/sort options"
+                     top="5"
+                     width="31" />
+                    <button
+                     follows="top|left"
+                     height="25"
+                     image_hover_unselected="Toolbar_Middle_Over"
+                     image_overlay="Conv_toolbar_plus"
+                     image_selected="Toolbar_Middle_Selected"
+                     image_unselected="Toolbar_Middle_Off"
+                     layout="topleft"
+                     top="5"
+                     left_pad="2"
+                     name="add_btn"
+                     tool_tip="Start a new conversation"
+                     width="31"/>
+                    <button
+                     follows="top|left"
+                     height="25"
+                     image_hover_unselected="Toolbar_Middle_Over"
+                     image_overlay="Command_Speak_Icon"
+                     image_selected="Toolbar_Middle_Selected"
+                     image_unselected="Toolbar_Middle_Off"
+                     layout="topleft"
+                     top="5"
+                     left_pad="2"
+                     name="speak_btn"
+                     tool_tip="Speak with people using your microphone"
+                     width="31"/>	
+                </layout_panel>
+                <layout_panel
+                 auto_resize="false"
+                 height="35"
+                 name="conversations_pane_buttons_collapsed"
+                 width="41">
+                    <button
+                     follows="right|top"
+                     height="25"
+                     image_hover_unselected="Toolbar_Middle_Over"
+                     image_overlay="Conv_toolbar_collapse"
+                     image_selected="Toolbar_Middle_Selected"
+                     image_unselected="Toolbar_Middle_Off"
+                     layout="topleft"
+                     top="5"
+                     left="1"
+                     name="expand_collapse_btn"
+                     tool_tip="Collapse/Expand this list"
+                     width="31" />
+                </layout_panel>
+            </layout_stack>
+            <panel
+             bottom="-1"
+             follows="all"
+             layout="topleft"
+             name="conversations_list_panel"
+             opaque="true"
+             top="35"
+             left="5"
+             right="-1"/>
+        </layout_panel>
+        <layout_panel
+         auto_resize="true"
+         user_resize="true"
+         name="messages_layout_panel"
+         expanded_min_dim="222">
+            <panel_container
+             bottom="-1"
+             follows="all"
+             layout="topleft"
+             left="0"
+             name="im_box_tab_container"
+             right="-1"
+             top="0">
+             <panel
+               bottom="-1"
+               follows="all"
+               layout="topleft"
+               name="stub_panel"
+               opaque="true"
+               top_pad="0"
+               left="0"
+               right="-1">
+                 <button
+                 follows="right|top"
+                 height="25"
+                 image_hover_unselected="Toolbar_Middle_Over"
+                 image_overlay="Conv_toolbar_collapse"
+                 image_selected="Toolbar_Middle_Selected"
+                 image_unselected="Toolbar_Middle_Off"
+                 layout="topleft"
+                 top="5"
+                 right="-10"
+                 name="stub_collapse_btn"
+                 tool_tip="Collapse this pane"
+                 width="31" />
+                 <text
+                   type="string"
+                   clip_partial="false"
+                   follows="left|top|right"
+                   layout="topleft"
+                   left="15"
+                   right="-15"
+                   name="stub_textbox"
+                   top="25"
+                   height="40"
+                   valign="center"
+                   parse_urls="true"
+                   wrap="true">
+                   This conversation is in a separate window.   [secondlife:/// Bring it back.]
+                 </text>
+             </panel>
+            </panel_container>
+        </layout_panel>
+    </layout_stack>
 </multi_floater>
diff --git a/indra/newview/skins/default/xui/en/floater_im_session.xml b/indra/newview/skins/default/xui/en/floater_im_session.xml
index 040b66623e7..d8b085063f7 100644
--- a/indra/newview/skins/default/xui/en/floater_im_session.xml
+++ b/indra/newview/skins/default/xui/en/floater_im_session.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <floater
- legacy_header_height="18"
  background_visible="true"
  default_tab_group="1"
  height="355"
@@ -10,84 +9,393 @@
  can_dock="false"
  can_minimize="true"
  can_close="true"
+ save_rect="true"
  visible="false"
  width="394"
  can_resize="true"
- min_width="250"
- min_height="190">
+ can_tear_off="false"
+ min_height="190"
+ positioning="relative">
+    <floater.string name="call_btn_start">Conv_toolbar_open_call</floater.string>
+    <floater.string name="call_btn_stop">Conv_toolbar_hang_up</floater.string>
+    <floater.string
+     name="collapseline_icon"
+     value="Conv_collapse_to_one_line"/>
+    <floater.string
+     name="expandline_icon"
+     value="Conv_expand_one_line"/>
+    <floater.string
+     name="collapse_icon"
+     value="Conv_toolbar_collapse"/>
+    <floater.string
+     name="expand_icon"
+     value="Conv_toolbar_expand"/>
+    <floater.string
+     name="tear_off_icon"
+     value="Conv_toolbar_arrow_ne"/>
+    <floater.string
+     name="return_icon"
+     value="Conv_toolbar_arrow_sw"/>
+    <floater.string
+     name="participant_added"
+     value="[NAME] was invited to the conversation."/>
+    <floater.string
+     name="multiple_participants_added"
+     value="[NAME] were invited to the conversation."/>
+     <floater.string
+     name="tooltip_to_separate_window"
+     value="Move this conversation to a separate window"/>
+     <floater.string
+     name="tooltip_to_main_window"
+     value="Move this conversation back to main window"/>
+  <floater.string
+     name="start_call_button_tooltip"
+     value="Open voice connection"/>
+  <floater.string
+     name="end_call_button_tooltip"
+     value="Close voice connection"/>
+   <floater.string
+     name="expcol_button_not_tearoff_tooltip"
+     value="Collapse this pane"/>
+   <floater.string
+     name="expcol_button_tearoff_and_expanded_tooltip"
+     value="Collapse participant list"/>
+   <floater.string
+     name="expcol_button_tearoff_and_collapsed_tooltip"
+     value="Expand participant list"/>
+    <view
+        follows="all"
+        layout="topleft"
+        name="contents_view"
+        top="0"
+        left="0"
+        height="355"
+        width="394">
+   <layout_stack
+   animate="false" 
+   default_tab_group="2"
+   follows="all"
+  height="355"
+  width="394"
+  layout="topleft"
+  orientation="vertical"
+   name="main_stack"
+  tab_group="1"
+  top="0"
+  left="0">
+  
+     <layout_panel
+         follows="left|top|right"
+         layout="topleft"
+         name="toolbar_panel"
+         top="0"
+         left="0"
+         height="35"
+         min_height="35"
+         width="394">         
+             <menu_button
+                 menu_filename="menu_im_session_showmodes.xml"
+                 follows="top|left"
+                 height="25"
+                 image_hover_unselected="Toolbar_Middle_Over"
+                 image_overlay="Conv_toolbar_sort"
+                 image_selected="Toolbar_Middle_Selected"
+                 image_unselected="Toolbar_Middle_Off"
+                 layout="topleft"
+                 left="5"
+                 name="view_options_btn"
+                 tool_tip="View/sort options"
+                 top="5"
+                 width="31" />
+             <menu_button
+				 menu_filename="menu_im_conversation.xml"
+				 follows="top|left"
+				 height="25"
+				 image_hover_unselected="Toolbar_Middle_Over"
+				 image_overlay="OptionsMenu_Off"
+				 image_selected="Toolbar_Middle_Selected"
+				 image_unselected="Toolbar_Middle_Off"
+				 layout="topleft"
+			 	 top="5"
+			 	 left_pad="2"
+				 name="gear_btn"
+				 visible="false"
+				 tool_tip="Actions on selected person"
+				 width="31"/>
+             <button
+                 enabled="false"
+                 follows="top|left"
+                 height="25"
+                 image_hover_unselected="Toolbar_Middle_Over"
+                 image_overlay="Conv_toolbar_add_person"
+                 image_selected="Toolbar_Middle_Selected"
+                 image_unselected="Toolbar_Middle_Off"
+                 layout="topleft"
+                 top="5"
+                 left_pad="2"
+                 name="add_btn"
+                 tool_tip="Add someone to this conversation"
+                 width="31"/>
+             <button
+                 follows="top|left"
+                 height="25"
+                 image_hover_unselected="Toolbar_Middle_Over"
+                 image_overlay="Conv_toolbar_open_call"
+                 image_selected="Toolbar_Middle_Selected"
+                 image_unselected="Toolbar_Middle_Off"
+                 layout="topleft"
+                 top="5"
+                 left_pad="2"
+                 name="voice_call_btn"
+                 tool_tip="Open voice connection"
+                 width="31"/>
+              <output_monitor
+                  auto_update="true"
+                  follows="top|left"
+                  draw_border="false"
+                  height="16"
+                  layout="topleft"
+                  top="10"
+                  left_pad="10"
+                  mouse_opaque="true"
+                  name="speaking_indicator"
+                  visible="false"
+                  width="20" />       
+             <button
+                 follows="right|top"
+                 height="25"
+                 image_hover_unselected="Toolbar_Middle_Over"
+                 image_overlay="Conv_toolbar_close"
+                 image_selected="Toolbar_Middle_Selected"
+                 image_unselected="Toolbar_Middle_Off"
+                 layout="topleft"
+                 top="5"
+                 left="292"
+                 name="close_btn"
+                 tool_tip="End this conversation"
+                 width="31" />
+             <button
+                 follows="right|top"
+                 height="25"
+                 image_hover_unselected="Toolbar_Middle_Over"
+                 image_overlay="Conv_toolbar_collapse"
+                 image_selected="Toolbar_Middle_Selected"
+             	 image_unselected="Toolbar_Middle_Off"
+                 layout="topleft"
+                 top="5"
+                 left_pad="2"
+                 name="expand_collapse_btn"
+                 tool_tip="Collapse/Expand this pane"
+                 width="31" />
+             <button
+                 follows="right|top"
+                 height="25"
+                 image_hover_unselected="Toolbar_Middle_Over"
+                 image_overlay="Conv_toolbar_arrow_ne"
+                 image_selected="Toolbar_Middle_Selected"
+             	 image_unselected="Toolbar_Middle_Off"
+                 layout="topleft"
+                 top="5"
+                 left_pad="2"
+                 name="tear_off_btn"
+                 width="31" />
+     </layout_panel>
+     <layout_panel
+      name="body_panel"
+      follows="all"
+      width="394" 
+      height="235" 
+      user_resize="false"
+      auto_resize="true">
   <layout_stack
    animate="true" 
    default_tab_group="2"
   follows="all"
-  height="320"
+  height="275"
   width="394"
   layout="topleft"
   orientation="horizontal"
   name="im_panels"
   tab_group="1"
-  top="20"
+  top_pad="0"
   left="0">
     <layout_panel
-      name="im_control_panel_holder"
-      min_width="115"
+      name="speakers_list_panel"
+      follows="all"
+      expanded_min_dim="115"
+      min_dim="0"
       width="150" 
-      height="320" 
+      height="275"
+      user_resize="true"
       auto_resize="false">
-      <panel
-        name="panel_im_control_panel"
-        layout="topleft"
-        height="320"
-        width="150" 
-        follows="all"/>
       </layout_panel>
     <layout_panel
        default_tab_group="3"
        left="0"
        tab_group="2"
+       follows="all"
        top="0"
-       height="200"
-	     width="244"
-       user_resize="true">
-        <button
-          height="20"
-          follows="left|top"
-          top="0"
-          left="2"
-          image_overlay="TabIcon_Open_Off"
+       height="275"
+	   width="244"
+       layout="topleft"
+       user_resize="true"
+       auto_resize="true"
+       visible="true"
+       name="right_part_holder"
+       min_width="221">
+        <panel
+         name="trnsAndChat_panel"
+         follows="all"
+         layout="topleft"
+         visible="true"
+         height="240"
+         width="244">
+         <layout_stack
+          animate="true" 
+          default_tab_group="2"
+          follows="all"
+          height="240"
+          width="244"
           layout="topleft"
-          width="25"
-          name="slide_left_btn" />
-         <button
-          height="20"
-          follows="left|top"
+          visible="true"
+          orientation="vertical"
+          name="translate_and_chat_stack"
+          tab_group="1"
+          left_pad="0"
           top="0"
-          left="2"
-          image_overlay="TabIcon_Close_Off"
-          width="25"
-          name="slide_right_btn" />
-        <chat_history
-	 font="SansSerifSmall"
-         follows="left|right|top|bottom"
-         height="150"
-         name="chat_history"
-         parse_highlights="true"
-         parse_urls="true"
-        left="1"
-         width="238">
-        </chat_history>
-        <line_editor
-         bottom="0"
-         left="3"
-         follows="left|right|bottom"
-	 font="SansSerifSmall"
-         height="20"
-         label="To"
-         layout="bottomleft"
-         name="chat_editor"
-         spellcheck="true"
-         tab_group="3"
-         width="236">
-        </line_editor>
+          left="0">
+            <layout_panel
+             auto_resize="false"
+             user_resize="false"
+             height="26"
+             layout="topleft"
+             left_delta="0"
+             name="translate_chat_checkbox_lp"
+             top_delta="0"
+             visible="true"
+             width="210">
+                <check_box
+                 top="10"
+                 control_name="TranslateChat"
+                 enabled="true"
+                 height="16"
+                 label="Translate chat"
+                 layout="topleft"
+                 left="5"
+                 name="translate_chat_checkbox"
+                 width="230" />
+            </layout_panel>
+            <layout_panel
+             width="210"
+             layout="topleft"
+             follows="all"
+             left_delta="0"
+             top_delta="0"
+             bottom="0"
+             visible="true"
+             user_resize="false"
+             auto_resize="true"
+             name="chat_holder">      
+               <chat_history
+                font="SansSerifSmall"
+                follows="all"
+                visible="true"
+                name="chat_history"
+                parse_highlights="true"
+                parse_urls="true"
+                layout="topleft"
+                right="-5"
+                left="5"
+                top="0"
+                bottom="1">
+               </chat_history>
+            </layout_panel>
+           </layout_stack>
+           </panel>
     </layout_panel>
   </layout_stack>
+  </layout_panel>
+  <layout_panel
+             height="35"
+             layout="topleft"
+             follows="left|right|bottom"
+             left_delta="0"
+             right="0"
+             top_delta="0"
+             bottom="0"
+             visible="true"
+             user_resize="false"
+             auto_resize="false"
+             name="chat_layout_panel">
+   <layout_stack
+   animate="true" 
+   default_tab_group="2"
+   follows="all"
+   height="35"
+   right="0"
+   layout="topleft"
+   orientation="horizontal"
+   name="input_panels"
+   top_pad="0"
+   left="0">
+     <layout_panel
+             height="35"
+             layout="topleft"
+             follows="left|right|bottom"
+             left_delta="0"
+             top_delta="0"
+             bottom="0"
+             visible="true"
+             user_resize="false"
+             auto_resize="true"
+             name="input_editor_layout_panel">
+              <chat_editor
+             expand_lines_count="5"
+             follows="left|right|bottom"
+               font="SansSerifSmall"
+             visible="true"
+             height="20"
+             is_expandable="true"
+             label="To"
+             text_tentative_color="TextFgTentativeColor"
+             layout="topleft"
+             name="chat_editor"
+             max_length="1023"
+             spellcheck="true"
+             tab_group="3"
+             width="160"
+             top="6"
+             left="5"
+             right="-5"
+             wrap="true">
+            </chat_editor>
+            </layout_panel>
+            <layout_panel             
+             height="35"
+             layout="topleft"
+             follows="left|right|bottom"
+             left_delta="0"
+             top_delta="0"
+             bottom="0"
+             width="35"
+             visible="true"
+             user_resize="false"
+             auto_resize="false"
+             name="input_button_layout_panel">
+            <button
+                 follows="left|right|bottom"
+                 height="25"
+                 image_hover_unselected="Toolbar_Middle_Over"
+                 image_overlay="Conv_expand_one_line"
+                 image_selected="Toolbar_Middle_Selected"
+                 image_unselected="Toolbar_Middle_Off"
+                 layout="topleft"
+                 name="minz_btn"
+                 tool_tip="Shows/hides message panel"
+                 width="28"/>
+           </layout_panel>
+  </layout_stack>
+  </layout_panel>
+  </layout_stack>
+    </view>
 </floater>
diff --git a/indra/newview/skins/default/xui/en/floater_incoming_call.xml b/indra/newview/skins/default/xui/en/floater_incoming_call.xml
index 81194f61cf5..a7864381a9b 100644
--- a/indra/newview/skins/default/xui/en/floater_incoming_call.xml
+++ b/indra/newview/skins/default/xui/en/floater_incoming_call.xml
@@ -8,8 +8,8 @@
  layout="topleft"
  name="incoming call"
  help_topic="incoming_call"
- title="Incoming call"
- width="410">
+ sound_flags="0"
+ width="550">
     <floater.string
      name="lifetime">
         5
@@ -24,7 +24,7 @@
     </floater.string>
     <floater.string
      name="VoiceInviteP2P">
-        is calling.
+        is calling you.
     </floater.string>
     <floater.string
      name="VoiceInviteAdHoc">
@@ -49,14 +49,14 @@
      image_name="icon_avatar_online.tga"
      layout="topleft"
      left_delta="19"
-     top="35"
+     top="20"
      width="36" />
     <group_icon
      enabled="false"
      follows="left|top"
      height="36"
      layout="topleft"
-     top="35"
+     top="20"
      width="36" />
     <text
      clip_partial="true"
@@ -67,43 +67,43 @@
      name="caller name"
      top="20"
      use_ellipses="true"
-     width="315"
+     width="475"
      word_wrap="true" />
-    <text
-     clip_partial="true"
-     font="SansSerif"
-     height="30"
-     layout="topleft"
-     left="77"
-     name="question"
-     top_pad="5"
-     use_ellipses="true"
-     width="315"
-     word_wrap="true">
-     Do you want to leave [CURRENT_CHAT] and join this voice chat?
-    </text>
-    <button
+     <button
      height="24"
-     label="Accept"
-     label_selected="Accept"
+     label="Answer"
+     label_selected="Answer"
      layout="topleft"
      left="70"
      name="Accept"
-     top="92"
-     width="100" />
+     top_pad="5"
+     width="120" />
     <button
      height="24"
-     label="Reject"
-     label_selected="Reject"
+     label="Ignore"
+     label_selected="Ignore"
      layout="topleft"
      name="Reject"
      left_pad="10"
-     width="100" />
+     width="120" />
     <button
      height="24"
-     label="Start IM"
+     label="Open IM instead"
      layout="topleft"
      name="Start IM"
      left_pad="10"
-     width="100" />
+     width="120" />
+    <text
+     clip_partial="true"
+     font="SansSerif"
+     height="30"
+     layout="topleft"
+     left="77"
+     name="question"
+     top_pad="5"
+     use_ellipses="true"
+     width="475"
+     word_wrap="true">
+     If you answer, you will be disconnected from your current voice conversation.
+    </text>
 </floater>
diff --git a/indra/newview/skins/default/xui/en/floater_moveview.xml b/indra/newview/skins/default/xui/en/floater_moveview.xml
index 4e7ee7913fb..5e84283ab05 100644
--- a/indra/newview/skins/default/xui/en/floater_moveview.xml
+++ b/indra/newview/skins/default/xui/en/floater_moveview.xml
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <floater
  positioning="specified"
- left="320"
- bottom="-80"
+ right="-693"
+ bottom="-50"
  legacy_header_height="18"
  can_dock="false"
  can_minimize="true"
diff --git a/indra/newview/skins/default/xui/en/floater_pathfinding_console.xml b/indra/newview/skins/default/xui/en/floater_pathfinding_console.xml
index 26293130699..79f2027c318 100644
--- a/indra/newview/skins/default/xui/en/floater_pathfinding_console.xml
+++ b/indra/newview/skins/default/xui/en/floater_pathfinding_console.xml
@@ -152,7 +152,7 @@
       </text>
       <check_box
           height="19"
-          label="World"
+          label="Test"
           layout="topleft"
           name="show_world"
           top_pad="4"
diff --git a/indra/newview/skins/default/xui/en/floater_people.xml b/indra/newview/skins/default/xui/en/floater_people.xml
index 08d0b00a835..701233ba4a0 100644
--- a/indra/newview/skins/default/xui/en/floater_people.xml
+++ b/indra/newview/skins/default/xui/en/floater_people.xml
@@ -6,21 +6,21 @@
   can_resize="true"
   height="570"
   help_topic="sidebar_people"
-  min_height="440"
-  min_width="333"
+  min_height="220"
+  min_width="260"
   layout="topleft"
   name="floater_people"
   save_rect="true"
   single_instance="true"
   reuse_instance="true"
   title="PEOPLE"
-  width="333">
+  width="370">
     <panel_container
       default_panel_name="panel_people"
       follows="all"
       height="570"
       name="main_panel"
-      width="333">
+      width="370">
       <panel
         class="panel_people"
         name="panel_people"
@@ -31,11 +31,5 @@
         filename="panel_group_info_sidetray.xml"
         label="Group Profile"
         font="SansSerifBold"/>
-      <panel
-        class="panel_block_list_sidetray"
-        name="panel_block_list_sidetray"
-        filename="panel_block_list_sidetray.xml"
-        label="Blocked Residents &amp; Objects"
-        font="SansSerifBold"/>
     </panel_container>
 </floater>
diff --git a/indra/newview/skins/default/xui/en/floater_voice_chat_volume.xml b/indra/newview/skins/default/xui/en/floater_voice_chat_volume.xml
new file mode 100644
index 00000000000..5c71fd3bc6d
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_voice_chat_volume.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+
+<floater
+ legacy_header_height="25"
+ bevel_style="in"
+ bg_opaque_image="Inspector_Background"
+ can_close="false"
+ can_minimize="false"
+ height="90"
+ layout="topleft"
+ name="floater_voice_volume"
+ single_instance="true"
+ sound_flags="0"
+ title="VOICE CHAT VOLUME"
+ visible="true"
+ width="245">
+	<slider
+		control_name="AudioLevelVoice"
+		disabled_control="MuteAudio"
+		follows="left|top"
+		height="16"
+		increment="0.025"
+		initial_value="0.5"
+		label="Voice Chat"
+		label_width="50"
+		layout="topleft"
+		left="15"
+		top="50"
+		name="chat_voice_volume"
+		show_text="false"
+		slider_label.halign="right"
+		volume="true"
+		width="200">
+	</slider>
+	<button
+		control_name="MuteVoice"
+		disabled_control="MuteAudio"
+		follows="top|left"
+		height="16"
+		image_selected="AudioMute_Off"
+		image_unselected="Audio_Off"
+		is_toggle="true"
+		layout="topleft"
+		left_pad="5"
+		name="mute_audio"
+		tab_stop="false"
+		width="16" />
+</floater>
\ No newline at end of file
diff --git a/indra/newview/skins/default/xui/en/floater_voice_controls.xml b/indra/newview/skins/default/xui/en/floater_voice_controls.xml
deleted file mode 100644
index dce2720cf8c..00000000000
--- a/indra/newview/skins/default/xui/en/floater_voice_controls.xml
+++ /dev/null
@@ -1,155 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater
- positioning="cascading"
- can_resize="true"
- can_minimize="true"
- can_close="true"
- chrome="true"
- height="205"
- layout="topleft"
- min_height="124"
- min_width="190"
- name="floater_voice_controls"
- help_topic="floater_voice_controls"
- title="VOICE CONTROLS"
- save_dock_state="true"
- save_visibility="true"
- save_rect="true"
- single_instance="true"
- width="282">
-    <string
-     name="title_nearby">
-        VOICE SETTINGS
-    </string>
-    <string
-     name="title_group">
-        GROUP CALL WITH [GROUP]
-    </string>
-    <string
-     name="title_adhoc">
-        CONFERENCE CALL
-    </string>
-    <string
-     name="title_peer_2_peer">
-        CALL WITH [NAME]
-    </string>
-    <string
-     name="no_one_near">
-        No one near has voice enabled
-    </string>
-      <layout_stack
-         clip="false"
-         follows="all"
-         height="189"
-         layout="topleft"
-         left="10"
-         mouse_opaque="false"
-         name="my_call_stack"
-         orientation="vertical"
-         width="263">
-        <layout_panel
-         follows="top|left|right"
-         auto_resize="false"
-         layout="topleft"
-         min_height="20"
-         height="20"
-         name="my_panel">
-            <avatar_icon
-             enabled="false"
-             follows="left|top"
-             height="18"
-             default_icon_name="Generic_Person"
-             layout="topleft"
-             left="5"
-             name="user_icon"
-             top="0"
-             width="18" />
-            <text
-             follows="top|left|right"
-             font="SansSerifSmallBold"
-             height="16"
-             layout="topleft"
-             left_pad="10"
-             name="user_text"
-             text_color="White"
-             top="4"
-             use_ellipses="true"
-             value="My Avatar:"
-             width="210" />
-            <output_monitor
-             auto_update="true"
-             draw_border="false"
-             follows="top|right"
-             height="16"
-             layout="topleft"
-             right="-3"
-             name="speaking_indicator"
-             left_pad="5"
-             visible="true"
-             width="20" />
-        </layout_panel>
-        <layout_panel name="leave_call_panel" height="26" min_height="26" auto_resize="false">
-        <layout_stack
-         clip="true"
-         follows="left|top|right"
-         height="26"
-         layout="topleft"
-         mouse_opaque="false"
-         name="voice_effect_and_leave_call_stack"
-         orientation="horizontal"
-         width="262">
-          <layout_panel
-            height="26"
-            width="200">
-            <panel
-             class="panel_voice_effect"
-             name="panel_voice_effect"
-             visiblity_control="VoiceMorphingEnabled"
-             filename="panel_voice_effect.xml" />
-          </layout_panel>
-          <layout_panel
-           auto_resize="false"
-           follows="top|right"
-           height="23"
-           visible="true"
-           layout="topleft"
-           name="leave_call_btn_panel"
-           width="100">
-            <button
-             follows="right|top"
-             height="23"
-             label="Leave Call"
-             name="leave_call_btn"
-             width="100" />
-          </layout_panel>
-        </layout_stack>
-          </layout_panel>
-      <layout_panel
-          follows="all"
-          layout="topleft"
-          left="2"
-          top_pad="0"
-          height="132"
-          name="callers_panel"
-          auto_resize="true"
-          width="280">
-        <avatar_list
-         follows="all"
-         height="132"
-         ignore_online_status="true"
-         layout="topleft"
-         multi_select="true"
-         name="speakers_list"
-         width="280" />
-        <panel
-         filename="panel_avatar_list_item.xml"
-         follows="left|right|top"
-         height="24"
-         layout="topleft"
-         left="0"
-         name="non_avatar_caller"
-         top="10"
-         width="276" />
-      </layout_panel>
-    </layout_stack>
-</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_voice_effect.xml b/indra/newview/skins/default/xui/en/floater_voice_effect.xml
index 35cb2670d09..146c3d7e30d 100644
--- a/indra/newview/skins/default/xui/en/floater_voice_effect.xml
+++ b/indra/newview/skins/default/xui/en/floater_voice_effect.xml
@@ -5,12 +5,13 @@
  height="500"
  name="voice_effects"
  help_topic="voice_effects"
- title="VOICE MORPHING"
+ title="VOICE MORPHING PREVIEW"
  background_visible="true"
  label="Places"
  layout="topleft"
  min_height="360"
  min_width="200"
+ save_rect="true"
  width="300">
   <string name="no_voice_effect">
     (No Voice Morph)
diff --git a/indra/newview/skins/default/xui/en/floater_voice_volume.xml b/indra/newview/skins/default/xui/en/floater_voice_volume.xml
new file mode 100644
index 00000000000..9346295d5b8
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_voice_volume.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<!--
+  Not can_close / no title to avoid window chrome
+  Single instance - only have one at a time, recycle it each spawn
+-->
+<floater
+ legacy_header_height="25"
+ bevel_style="in"
+ bg_opaque_image="Inspector_Background"
+ can_close="false"
+ can_minimize="false"
+ height="90"
+ layout="topleft"
+ name="floater_voice_volume"
+ single_instance="true"
+ sound_flags="0"
+ title="VOICE VOLUME"
+ visible="true"
+ width="245">
+    <text
+     follows="top|left|right"
+     font="SansSerifSmall"
+     height="21"
+     left="10"
+     name="avatar_name"
+     parse_urls="false"
+     top="35"
+     text_color="White"
+     translate="false"
+     use_ellipses="true"
+     value="TestString PleaseIgnore"
+     width="225" />
+    <slider
+     follows="top|left"
+     height="23"
+     increment="0.01"
+     left="1"
+     max_val="0.95"
+     min_val="0.05"
+     name="volume_slider"
+     show_text="false"
+     tool_tip="Voice volume"
+     top_pad="0"
+     value="0.5"
+     width="200" />
+    <button
+     follows="top|left"
+     height="16"
+     image_disabled="Audio_Off"
+     image_disabled_selected="AudioMute_Off"
+     image_hover_selected="AudioMute_Over"
+     image_selected="AudioMute_Off"
+     image_unselected="Audio_Off"
+     is_toggle="true"
+     left_pad="0"
+     top_delta="4"
+     name="mute_btn"
+     width="16" />
+</floater>
diff --git a/indra/newview/skins/default/xui/en/inspect_avatar.xml b/indra/newview/skins/default/xui/en/inspect_avatar.xml
index bc3bcd331b7..ef4f19cd4cd 100644
--- a/indra/newview/skins/default/xui/en/inspect_avatar.xml
+++ b/indra/newview/skins/default/xui/en/inspect_avatar.xml
@@ -2,14 +2,14 @@
 <!--
   Not can_close / no title to avoid window chrome
   Single instance - only have one at a time, recycle it each spawn
--->
+--> 
 <floater
  legacy_header_height="25"
  bevel_style="in"
  bg_opaque_image="Inspector_Background"
  can_close="false"
  can_minimize="false"
- height="164"
+ height="160"
  layout="topleft"
  name="inspect_avatar"
  single_instance="true"
@@ -98,13 +98,13 @@
      follows="top|left"
      height="23"
      increment="0.01"
-     left="1"
+     left="10"
      max_val="0.95"
      min_val="0.05"
      name="volume_slider"
      show_text="false"
      tool_tip="Voice volume"
-     top_pad="0"
+     top_pad="5"
      value="0.5"
      width="200" />
     <button
@@ -116,10 +116,21 @@
      image_selected="AudioMute_Off"
      image_unselected="Audio_Off"
      is_toggle="true"
-     left_pad="0"
+     left_pad="5"
      top_delta="4"
      name="mute_btn"
      width="16" />
+    <text
+     follows="top|left"
+     height="16"
+     left="8"
+     name="avatar_profile_link"
+     font="SansSerifSmall"
+     text_color="White"
+     top_pad="5"
+     translate="false"
+     value="[[LINK] View full profile]"
+     width="175" />
     <avatar_icon
      follows="top|left"
      height="38"
@@ -130,83 +141,4 @@
      name="avatar_icon"
      top="10"
      width="38" />
-<!-- Overlapping buttons for default actions
-    llinspectavatar.cpp makes visible the most likely default action 
--->
-    <button
-     follows="top|left"
-     height="20"
-     label="Add Friend"
-     left="8"
-     top="135"
-     name="add_friend_btn"
-     width="90" />
-    <button
-     follows="top|left"
-     height="20"
-     label="IM"
-     left_delta="0"
-     top_delta="0"
-     name="im_btn"
-     width="80"
-     commit_callback.function="InspectAvatar.IM"/>
-	<button
-     follows="top|left"
-     height="20"
-     label="Profile"
-     layout="topleft"
-     name="view_profile_btn"
-     left_delta="96"
-     top_delta="0"
-     tab_stop="false"
-     width="80" />
-      <!--  gear buttons here -->
-  <menu_button
-     follows="top|left"
-     height="20"
-     layout="topleft"
-     image_overlay="OptionsMenu_Off"
-     menu_filename="menu_inspect_avatar_gear.xml"
-     name="gear_btn"
-     right="-5"
-     top_delta="0"
-     width="35" />
-	<menu_button
-     follows="top|left"
-     height="20"
-     image_overlay="OptionsMenu_Off"
-     menu_filename="menu_inspect_self_gear.xml"
-     name="gear_self_btn"
-     right="-5"
-     top_delta="0"
-     width="35" />
-  <panel 
-    follows="top|left" 
-    top="164" 
-    left="0" 
-    height="60" 
-    width="228" 
-    visible="false"
-    background_visible="true"
-    name="moderator_panel"
-    background_opaque="true" 
-    bg_opaque_color="MouseGray">
-    <button
-      name="disable_voice"
-      label="Disable Voice"
-      top="20"
-      width="95"
-      height="20"
-      left="10"
-      commit_callback.function="InspectAvatar.DisableVoice"/>
-    <button
-      name="enable_voice"
-      label="Enable Voice"
-      top="20"
-      width="95"
-      height="20"
-      left="10"
-      visible="false" 
-      commit_callback.function="InspectAvatar.EnableVoice"/>
-  </panel>
 </floater>
diff --git a/indra/newview/skins/default/xui/en/menu_cof_gear.xml b/indra/newview/skins/default/xui/en/menu_cof_gear.xml
index a6e9a40e314..45cf780557b 100644
--- a/indra/newview/skins/default/xui/en/menu_cof_gear.xml
+++ b/indra/newview/skins/default/xui/en/menu_cof_gear.xml
@@ -9,5 +9,5 @@
     <menu
      label="New Body Parts"
      layout="topleft"
-     name="COF.Geear.New_Body_Parts" />
+     name="COF.Gear.New_Body_Parts" />
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/en/menu_conversation.xml b/indra/newview/skins/default/xui/en/menu_conversation.xml
new file mode 100644
index 00000000000..5a13ef0a592
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/menu_conversation.xml
@@ -0,0 +1,203 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<toggleable_menu
+ bottom="806"
+ layout="topleft"
+ left="0"
+ mouse_opaque="false"
+ name="menu_conversation_participant"
+ visible="false">
+     <menu_item_call
+     label="Close conversation"
+     layout="topleft"
+     name="close_conversation">
+        <on_click function="Avatar.DoToSelected" parameter="close_conversation"/>
+	 </menu_item_call>
+     <menu_item_call
+     label="Open voice conversation"
+     layout="topleft"
+     name="open_voice_conversation">
+        <on_click function="Avatar.DoToSelected" parameter="open_voice_conversation"/>
+     </menu_item_call>	
+     <menu_item_call
+     label="Disconnect from voice"
+     layout="topleft"
+     name="disconnect_from_voice">
+        <on_click function="Avatar.DoToSelected" parameter="disconnect_from_voice"/>
+    </menu_item_call>	
+	<menu_item_separator layout="topleft" name="separator_disconnect_from_voice"/>	
+    <menu_item_call
+     label="View Profile"
+     layout="topleft"
+     name="view_profile">
+        <on_click function="Avatar.DoToSelected" parameter="view_profile"/>
+        <on_enable function="Avatar.EnableItem" parameter="can_view_profile"/>
+    </menu_item_call>
+    <menu_item_call
+     label="IM"
+     layout="topleft"
+     name="im">
+        <on_click function="Avatar.DoToSelected" parameter="im"/>
+        <on_enable function="Avatar.EnableItem" parameter="can_im"/>
+    </menu_item_call>
+    <menu_item_call
+     label="Offer teleport"
+     layout="topleft"
+     name="offer_teleport">
+        <on_click function="Avatar.DoToSelected" parameter="offer_teleport"/>
+        <on_enable function="Avatar.EnableItem" parameter="can_offer_teleport"/>
+    </menu_item_call>
+    <menu_item_call
+     label="Voice call"
+     layout="topleft"
+     name="voice_call">
+        <on_click function="Avatar.DoToSelected" parameter="voice_call"/>
+        <on_enable function="Avatar.EnableItem" parameter="can_call" />
+    </menu_item_call>
+    <menu_item_call
+     label="Chat history..."
+     layout="topleft"
+     name="chat_history">
+        <on_click function="Avatar.DoToSelected" parameter="chat_history"/>
+        <on_enable function="Avatar.EnableItem" parameter="can_chat_history"/>
+    </menu_item_call>	
+    <menu_item_separator layout="topleft" name="separator_chat_history"/>	
+    <menu_item_call
+     label="Add friend"
+     layout="topleft"
+     name="add_friend">
+        <on_click function="Avatar.DoToSelected" parameter="add_friend"/>
+        <on_enable function="Avatar.EnableItem" parameter="can_add" />
+    </menu_item_call>
+    <menu_item_call
+     label="Remove friend"
+     layout="topleft"
+     name="remove_friend">
+        <on_click function="Avatar.DoToSelected" parameter="remove_friend" />
+        <on_enable function="Avatar.EnableItem" parameter="can_delete" />
+    </menu_item_call>	
+    <menu_item_call
+     label="Remove friends"
+     layout="topleft"
+     name="remove_friends">
+        <on_click function="Avatar.DoToSelected" parameter="remove_friend" />
+        <on_enable function="Avatar.EnableItem" parameter="can_delete" />
+    </menu_item_call>	
+    <menu_item_call
+     label="Invite to group..."
+     layout="topleft"
+     name="invite_to_group">
+        <on_click function="Avatar.DoToSelected" parameter="invite_to_group" />
+        <on_enable function="Avatar.EnableItem" parameter="can_invite" />
+    </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="Avatar.DoToSelected" parameter="zoom_in" />
+      <on_enable function="Avatar.EnableItem" parameter="can_zoom_in" />
+    </menu_item_call>
+    <menu_item_call
+     label="Map"
+     layout="topleft"
+     name="map">
+        <on_click function="Avatar.DoToSelected" parameter="map" />
+        <on_enable function="Avatar.EnableItem" parameter="can_show_on_map" />
+    </menu_item_call>
+    <menu_item_call
+     label="Share"
+     layout="topleft"
+     name="share">
+        <on_click function="Avatar.DoToSelected" parameter="share" />
+        <on_enable function="Avatar.EnableItem" parameter="can_share" />
+    </menu_item_call>
+    <menu_item_call
+     label="Pay"
+     layout="topleft"
+     name="pay">
+        <on_click function="Avatar.DoToSelected" parameter="pay" />
+        <on_enable function="Avatar.EnableItem" parameter="can_pay" />
+    </menu_item_call>
+    <menu_item_check
+     label="Block Voice"
+     layout="topleft"
+     name="block_unblock">
+        <on_click function="Avatar.DoToSelected" parameter="block_unblock" />
+		<on_check function="Avatar.CheckItem" parameter="is_blocked" />
+		<on_enable  function="Avatar.EnableItem" parameter="can_block" />
+    </menu_item_check>
+    <menu_item_check
+     label="Block Text"
+     layout="topleft"
+     name="MuteText">
+     <on_click function="Avatar.DoToSelected" parameter="mute_unmute" />
+     <on_check function="Avatar.CheckItem" parameter="is_muted" />
+     <on_enable  function="Avatar.EnableItem" parameter="can_block" />
+    </menu_item_check>
+    <menu_item_call
+     label="Group Profile"
+     layout="topleft"
+     name="group_profile">
+        <on_click function="Group.DoToSelected" parameter="group_profile"/>
+        <on_enable function="Avatar.EnableItem" parameter="can_group_profile" />
+    </menu_item_call>	
+    <menu_item_call
+     label="Activate Group"
+     layout="topleft"
+     name="activate_group">
+        <on_click function="Group.DoToSelected" parameter="activate_group"/>
+        <on_enable function="Avatar.EnableItem" parameter="can_activate_group" />
+    </menu_item_call>		
+    <menu_item_call
+     label="Leave Group"
+     layout="topleft"
+     name="leave_group">
+        <on_click function="Group.DoToSelected" parameter="leave_group"/>
+        <on_enable function="Avatar.EnableItem" parameter="can_leave_group" />
+    </menu_item_call>
+	<menu_item_separator layout="topleft" name="Moderator Options Separator"/>
+	<context_menu
+	 label="Moderator Options"
+	 layout="topleft"
+	 name="Moderator Options">
+		<menu_item_check
+		 label="Allow text chat"
+		 layout="topleft"
+		 name="AllowTextChat">
+			<on_check function="Avatar.CheckItem" parameter="is_allowed_text_chat" />
+			<on_click function="Avatar.DoToSelected" parameter="toggle_allow_text_chat" />
+			<on_enable function="Avatar.EnableItem" parameter="can_allow_text_chat" />
+		</menu_item_check>
+		<menu_item_separator layout="topleft" name="moderate_voice_separator" />
+		<menu_item_call
+		 label="Mute this participant"
+		 layout="topleft"
+		 name="ModerateVoiceMuteSelected">
+			<on_click function="Avatar.DoToSelected" parameter="selected" />
+      <on_enable function="Avatar.EnableItem" parameter="can_mute" />
+      <on_visible function="Avatar.VisibleItem" parameter="show_mute" />
+    </menu_item_call>
+    <menu_item_call
+		 label="Unmute this participant"
+		 layout="topleft"
+		 name="ModerateVoiceUnMuteSelected">
+      <on_click function="Avatar.DoToSelected" parameter="selected" />
+      <on_enable function="Avatar.EnableItem" parameter="can_unmute" />
+      <on_visible function="Avatar.VisibleItem" parameter="show_unmute" />
+		</menu_item_call>
+		<menu_item_call
+		 label="Mute everyone"
+		 layout="topleft"
+		 name="ModerateVoiceMute">
+			<on_click function="Avatar.DoToSelected" parameter="mute_all" />
+			<on_enable function="Avatar.EnableItem" parameter="can_moderate_voice" />
+		</menu_item_call>
+		<menu_item_call
+		 label="Unmute everyone"
+		 layout="topleft"
+		 name="ModerateVoiceUnmute">
+			<on_click function="Avatar.DoToSelected" parameter="unmute_all" />
+			<on_enable function="Avatar.EnableItem" parameter="can_moderate_voice" />
+		</menu_item_call>
+	</context_menu>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/en/menu_conversation_log_gear.xml b/indra/newview/skins/default/xui/en/menu_conversation_log_gear.xml
new file mode 100644
index 00000000000..8796b87955f
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/menu_conversation_log_gear.xml
@@ -0,0 +1,142 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<toggleable_menu
+ layout="topleft"
+ name="Conversation Context Menu">
+    <menu_item_call
+     label="IM..."
+     layout="topleft"
+     name="IM">
+        <on_click
+         function="Calllog.Action"
+         parameter="im" />
+        <on_enable
+         function="Calllog.Enable"
+         parameter="can_im" />
+    </menu_item_call>
+    <menu_item_call
+     label="Voice call..."
+     layout="topleft"
+     name="Call">
+        <on_click
+         function="Calllog.Action"
+         parameter="call" />
+        <on_enable
+         function="Calllog.Enable"
+         parameter="can_call" />
+    </menu_item_call>
+    <menu_item_call
+     label="Open chat history..."
+     layout="topleft"
+     name="Chat history">
+        <on_click
+         function="Calllog.Action"
+         parameter="chat_history" />
+        <on_enable
+         function="Calllog.Enable"
+         parameter="can_view_chat_history" />
+    </menu_item_call>
+    <menu_item_call
+     label="View Profile"
+     layout="topleft"
+     name="View Profile">
+        <on_click
+         function="Calllog.Action"
+         parameter="view_profile" />
+        <on_enable
+         function="Calllog.Enable"
+         parameter="can_view_profile" />
+    </menu_item_call>
+    <menu_item_call
+    label="Offer Teleport"
+    name="teleport">
+      <on_click
+       function="Calllog.Action"
+       parameter="offer_teleport"/>
+      <on_enable
+      function="Calllog.Enable"
+      parameter="can_offer_teleport"/>
+    </menu_item_call>
+    <menu_item_separator />
+    <menu_item_call
+     label="Add Friend"
+     layout="topleft"
+     name="add_friend">
+        <on_click
+         function="Calllog.Action"
+         parameter="add_friend"/>
+        <on_visible
+         function="Calllog.Check"
+         parameter="is_not_friend" />
+    </menu_item_call>
+    <menu_item_call
+     label="Remove Friend"
+     layout="topleft"
+     name="remove_friend">
+        <on_click
+         function="Calllog.Action"
+         parameter="remove_friend"/>
+        <on_visible
+         function="Calllog.Check"
+         parameter="is_friend" />
+    </menu_item_call>
+    <menu_item_call
+     label="Invite to group..."
+     layout="topleft"
+     name="Invite">
+        <on_click
+         function="Calllog.Action"
+         parameter="invite_to_group"/>
+        <on_enable
+         function="Calllog.Enable"
+         parameter="can_invite_to_group" />
+    </menu_item_call>
+    <menu_item_separator />
+    <menu_item_call
+     label="Map"
+     layout="topleft"
+     name="Map">
+        <on_click
+         function="Calllog.Action"
+         parameter="show_on_map" />
+        <on_enable
+         function="Calllog.Enable"
+         parameter="can_show_on_map" />
+    </menu_item_call>
+    <menu_item_call
+     label="Share"
+     layout="topleft"
+     name="Share">
+        <on_click
+         function="Calllog.Action"
+         parameter="share" />
+        <on_enable
+         function="Calllog.Enable"
+         parameter="can_share" />
+    </menu_item_call>
+    <menu_item_call
+     label="Pay"
+     layout="topleft"
+     name="Pay">
+        <on_click
+         function="Calllog.Action"
+         parameter="pay" />
+        <on_enable
+         function="Calllog.Enable"
+         parameter="can_pay" />
+    </menu_item_call>
+    <menu_item_check
+     label="Block/Unblock"
+     layout="topleft"
+     name="Block/Unblock">
+        <menu_item_check.on_click
+         function="Calllog.Action"
+         parameter="block"/>
+        <menu_item_check.on_check
+         function="Calllog.Check"
+         parameter="is_blocked" />
+        <menu_item_check.on_enable
+         function="Calllog.Enable"
+         parameter="can_block" />
+    </menu_item_check>
+
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/en/menu_conversation_log_view.xml b/indra/newview/skins/default/xui/en/menu_conversation_log_view.xml
new file mode 100644
index 00000000000..ce65b23971a
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/menu_conversation_log_view.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<toggleable_menu
+     name="menu_conversation_view"
+     left="0" bottom="0" visible="false"
+     mouse_opaque="false">
+  <menu_item_check
+   label="Sort by name"
+   name="sort_by_name">
+      <on_click
+       function="CallLog.Action"
+       parameter="sort_by_name"/>
+      <on_check
+       function="CallLog.Check"
+       parameter="sort_by_name"/>
+  </menu_item_check>
+  <menu_item_check
+   label="Sort by date"
+   name="sort_by_date">
+      <on_click
+       function="CallLog.Action"
+       parameter="sort_by_date" />
+      <on_check
+       function="CallLog.Check"
+       parameter="sort_by_date" />
+  </menu_item_check>
+  <menu_item_separator />
+  <menu_item_check
+   label="Sort friends on top"
+   name="sort_by_friends">
+      <on_click
+       function="CallLog.Action"
+       parameter="sort_friends_on_top" />
+      <on_check
+       function="CallLog.Check"
+       parameter="sort_friends_on_top" />
+  </menu_item_check>
+  <menu_item_separator />
+  <menu_item_call
+   label="View Nearby chat history..."
+   name="view_nearby_chat_history">
+      <on_click
+       function="CallLog.Action"
+       parameter="view_nearby_chat_history" />
+  </menu_item_call>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/en/menu_group_plus.xml b/indra/newview/skins/default/xui/en/menu_group_plus.xml
index fce7414d801..eca9e7f3c9f 100644
--- a/indra/newview/skins/default/xui/en/menu_group_plus.xml
+++ b/indra/newview/skins/default/xui/en/menu_group_plus.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu name="menu_group_plus"
+<toggleable_menu name="menu_group_plus"
      left="0" bottom="0" visible="false"
      mouse_opaque="false">
   <menu_item_call name="item_join" label="Join Group...">
@@ -8,4 +8,4 @@
   <menu_item_call name="item_new" label="New Group...">
     <menu_item_call.on_click function="People.Group.Plus.Action" userdata="new_group" />
   </menu_item_call>
-</menu>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/en/menu_im_conversation.xml b/indra/newview/skins/default/xui/en/menu_im_conversation.xml
new file mode 100644
index 00000000000..43287c6ec36
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/menu_im_conversation.xml
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<toggleable_menu
+ layout="topleft"
+ name="Conversation Gear Menu">
+    <menu_item_call
+     label="View Profile"
+     layout="topleft"
+     name="View Profile">
+        <on_click function="Avatar.GearDoToSelected" parameter="view_profile" />
+        <on_enable function="Avatar.EnableGearItem" parameter="can_view_profile" />
+    </menu_item_call>
+    <menu_item_call
+     label="Add Friend"
+     layout="topleft"
+     name="Add Friend">
+        <on_click function="Avatar.GearDoToSelected" parameter="add_friend" />
+        <on_enable function="Avatar.EnableGearItem" parameter="can_add" />
+    </menu_item_call>
+    <menu_item_call
+     label="Remove friend"
+     layout="topleft"
+     name="remove_friend">
+        <on_click function="Avatar.GearDoToSelected" parameter="remove_friend" />
+        <on_enable function="Avatar.EnableGearItem" parameter="can_delete" />
+    </menu_item_call>
+    <menu_item_call
+     label="Offer teleport"
+     layout="topleft"
+     name="offer_teleport">
+        <on_click function="Avatar.GearDoToSelected" parameter="offer_teleport"/>
+        <on_enable function="Avatar.EnableGearItem" parameter="can_offer_teleport"/>
+    </menu_item_call>
+    <menu_item_call
+     label="Invite to group..."
+     layout="topleft"
+     name="invite_to_group">
+        <on_click function="Avatar.GearDoToSelected" parameter="invite_to_group" />
+        <on_enable function="Avatar.EnableGearItem" parameter="can_invite" />
+    </menu_item_call>
+    <menu_item_separator
+     layout="topleft"
+     name="View Icons Separator" />
+    <menu_item_call
+     label="Chat history..."
+     layout="topleft"
+     name="chat_history">
+        <on_click function="Avatar.GearDoToSelected" parameter="chat_history"/>
+        <on_enable function="Avatar.EnableGearItem" parameter="can_chat_history"/>
+    </menu_item_call>
+    <menu_item_separator
+     layout="topleft"/>
+    <menu_item_call
+       label="Zoom In"
+       layout="topleft"
+       name="zoom_in">
+      <on_click function="Avatar.DoToSelected" parameter="zoom_in" />
+      <on_enable function="Avatar.EnableItem" parameter="can_zoom_in" />
+    </menu_item_call>
+    <menu_item_call
+     label="Map"
+     layout="topleft"
+     name="map">
+        <on_click function="Avatar.GearDoToSelected" parameter="map" />
+        <on_enable function="Avatar.EnableGearItem" parameter="can_show_on_map" />
+    </menu_item_call>
+    <menu_item_call
+     label="Share"
+     layout="topleft"
+     name="Share">
+        <on_click function="Avatar.GearDoToSelected" parameter="share" />
+        <on_enable function="Avatar.EnableGearItem" parameter="can_share" />
+    </menu_item_call>
+    <menu_item_call
+     label="Pay"
+     layout="topleft"
+     name="Pay">
+        <on_click function="Avatar.GearDoToSelected" parameter="pay" />
+        <on_enable function="Avatar.EnableGearItem" parameter="can_pay" />
+    </menu_item_call>
+    <menu_item_separator
+     layout="topleft"/>
+    <menu_item_check
+     label="Block Voice"
+     layout="topleft"
+     name="Block/Unblock">
+        <on_check function="Avatar.CheckGearItem" parameter="is_blocked" />
+        <on_click function="Avatar.GearDoToSelected" parameter="block_unblock" />
+        <on_enable function="Avatar.EnableGearItem" parameter="can_block" />
+    </menu_item_check>
+    <menu_item_check
+     label="Block Text"
+     layout="topleft"
+     name="MuteText">
+        <on_check function="Avatar.CheckGearItem" parameter="is_muted" />
+        <on_click function="Avatar.GearDoToSelected" parameter="mute_unmute" />
+        <on_enable function="Avatar.EnableGearItem" parameter="can_block" />
+    </menu_item_check>
+    <menu_item_separator
+     layout="topleft"/>
+</toggleable_menu>
+
diff --git a/indra/newview/skins/default/xui/en/menu_im_session_showmodes.xml b/indra/newview/skins/default/xui/en/menu_im_session_showmodes.xml
new file mode 100644
index 00000000000..b0adca0e0ec
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/menu_im_session_showmodes.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<toggleable_menu
+ name="menu_modes"
+ left="0" bottom="0" visible="false"
+ mouse_opaque="false">
+    <menu_item_check
+       label="Compact view"
+       name="compact_view">
+      <menu_item_check.on_click
+         function="IMSession.Menu.Action"
+         parameter="compact_view"/>
+      <menu_item_check.on_check
+         function="IMSession.Menu.CompactExpandedModes.CheckItem"
+         parameter="compact_view"/>
+    </menu_item_check>
+    <menu_item_check
+       label="Expanded view"
+       name="expanded_view">
+      <menu_item_check.on_click
+         function="IMSession.Menu.Action"
+         parameter="expanded_view"/>
+      <menu_item_check.on_check
+         function="IMSession.Menu.CompactExpandedModes.CheckItem"
+         parameter="expanded_view"/>
+    </menu_item_check>
+    <menu_item_separator layout="topleft" />
+    <menu_item_check name="IMShowTime" label="Show time">
+        <menu_item_check.on_click
+         function="IMSession.Menu.Action"
+         parameter="IMShowTime" />
+        <menu_item_check.on_check
+         function="IMSession.Menu.ShowModes.CheckItem"
+         parameter="IMShowTime" />
+        <menu_item_check.on_enable
+         function="IMSession.Menu.ShowModes.Enable"
+         parameter="IMShowTime" />
+    </menu_item_check>
+    <menu_item_check name="IMShowNamesForP2PConv" label="Show names in one-to-one conversations">
+        <menu_item_check.on_click
+         function="IMSession.Menu.Action"
+         parameter="IMShowNamesForP2PConv" />
+        <menu_item_check.on_check
+         function="IMSession.Menu.ShowModes.CheckItem"
+         parameter="IMShowNamesForP2PConv" />
+        <menu_item_check.on_enable
+         function="IMSession.Menu.ShowModes.Enable"
+         parameter="IMShowNamesForP2PConv" />    
+    </menu_item_check>      
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/en/menu_im_well_button.xml b/indra/newview/skins/default/xui/en/menu_im_well_button.xml
deleted file mode 100644
index f8dfba91ff1..00000000000
--- a/indra/newview/skins/default/xui/en/menu_im_well_button.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu
- layout="topleft"
- name="IM Well Button Context Menu">
-    <menu_item_call
-     label="Close All"
-     layout="topleft"
-     name="Close All">
-        <menu_item_call.on_click
-         function="IMWellChicletMenu.Action"
-         parameter="close all" />
-        <menu_item_call.on_enable
-         function="IMWellChicletMenu.EnableItem"
-         parameter="can close all" />
-    </menu_item_call>
-</context_menu>
diff --git a/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml
deleted file mode 100644
index 76b188220dd..00000000000
--- a/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml
+++ /dev/null
@@ -1,143 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<toggleable_menu
-         create_jump_keys="true"
-         layout="topleft"
-         mouse_opaque="false"
-         visible="false"
-         name="Gear Menu">
-  <menu_item_call
-   label="View Profile"
-   enabled="true" 
-   name="view_profile">
-    <menu_item_call.on_click
-     function="InspectAvatar.ViewProfile"/>
-  </menu_item_call>
-  <menu_item_call
-   label="Add Friend"
-   name="add_friend">
-    <menu_item_call.on_click
-     function="InspectAvatar.AddFriend"/>
-    <menu_item_call.on_enable
-     function="InspectAvatar.Gear.Enable"/>
-  </menu_item_call>
-  <menu_item_call
-   label="IM"
-   name="im">
-    <menu_item_call.on_click
-     function="InspectAvatar.IM"/>
-  </menu_item_call>
-  <menu_item_call
-   label="Call"
-   enabled="true"
-   name="call">
-    <menu_item_call.on_click
-     function="InspectAvatar.Call"/>
-    <menu_item_call.on_enable
-     function="InspectAvatar.Gear.EnableCall"/>
-  </menu_item_call>
-  <menu_item_call
-   label="Teleport"
-   name="teleport">
-    <menu_item_call.on_click
-     function="InspectAvatar.Teleport"/>
-    <menu_item_call.on_enable
-     function="InspectAvatar.Gear.EnableTeleportOffer"/>
-  </menu_item_call>
-  <menu_item_call
-   label="Invite to Group"
-   name="invite_to_group">
-    <menu_item_call.on_click
-     function="InspectAvatar.InviteToGroup"/>
-  </menu_item_call>
-  <menu_item_separator />
-  <menu_item_call
-   label="Block"
-   name="block">
-    <menu_item_call.on_click
-     function="InspectAvatar.ToggleMute"/>
-    <menu_item_call.on_visible
-     function="InspectAvatar.EnableMute" />
-  </menu_item_call>
-  <menu_item_call
-   label="Unblock"
-   name="unblock">
-    <menu_item_call.on_click
-     function="InspectAvatar.ToggleMute"/>
-    <menu_item_call.on_visible
-     function="InspectAvatar.EnableUnmute" />
-  </menu_item_call>
-  <menu_item_call
-   label="Report"
-   name="report">
-    <menu_item_call.on_click
-     function="InspectAvatar.Report"/>
-  </menu_item_call>  
-  <menu_item_call
-   label="Freeze"
-   name="freeze">
-    <menu_item_call.on_click
-     function="InspectAvatar.Freeze"/>
-    <menu_item_call.on_visible
-     function="InspectAvatar.VisibleFreeze"/>
-  </menu_item_call>
-  <menu_item_call
-   label="Eject"
-   name="eject">
-    <menu_item_call.on_click
-     function="InspectAvatar.Eject"/>
-    <menu_item_call.on_visible
-     function="InspectAvatar.VisibleEject"/>
-  </menu_item_call>
-  <menu_item_call
-   label="Kick"
-   name="kick">
-    <menu_item_call.on_click
-     function="InspectAvatar.Kick"/>
-    <menu_item_call.on_visible
-     function="InspectAvatar.EnableGod"/>
-  </menu_item_call>
-  <menu_item_call
-  label="CSR"
-  name="csr">
-    <menu_item_call.on_click
-     function="InspectAvatar.CSR" />
-    <menu_item_call.on_visible
-     function="InspectAvatar.EnableGod" />
-  </menu_item_call>
-  <menu_item_call
-   label="Debug Textures"
-   name="debug">
-    <menu_item_call.on_click
-     function="Avatar.Debug"/>
-    <menu_item_call.on_visible
-     function="IsGodCustomerService"/>
-  </menu_item_call>
-  <menu_item_call
-   label="Find On Map"
-   name="find_on_map">
-    <menu_item_call.on_click
-     function="InspectAvatar.FindOnMap"/>
-    <menu_item_call.on_visible
-     function="InspectAvatar.VisibleFindOnMap"/>
-  </menu_item_call>
-  <menu_item_call
-   label="Zoom In"
-   name="zoom_in">
-    <menu_item_call.on_click
-     function="InspectAvatar.ZoomIn"/>
-    <menu_item_call.on_visible
-     function="InspectAvatar.VisibleZoomIn"/>
-  </menu_item_call>  
-  <menu_item_call
-   label="Pay"
-   name="pay">
-    <menu_item_call.on_click
-     function="InspectAvatar.Pay"/>
-  </menu_item_call>
-  <menu_item_call
-   label="Share"
-   name="share">
-    <menu_item_call.on_click
-     function="InspectAvatar.Share"/>
-  </menu_item_call>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/en/menu_inspect_self_gear.xml b/indra/newview/skins/default/xui/en/menu_inspect_self_gear.xml
deleted file mode 100644
index 5e7b16ed4a2..00000000000
--- a/indra/newview/skins/default/xui/en/menu_inspect_self_gear.xml
+++ /dev/null
@@ -1,252 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<toggleable_menu
- layout="topleft"
- name="Self Pie">
-  <menu_item_call
-   label="Sit Down"
-   layout="topleft"
-   name="Sit Down Here">
-    <menu_item_call.on_click
-     function="Self.SitDown"
-     parameter="" />
-    <menu_item_call.on_enable
-     function="Self.EnableSitDown" />
-  </menu_item_call>
-  <menu_item_call
-   label="Stand Up"
-   layout="topleft"
-   name="Stand Up">
-    <menu_item_call.on_click
-     function="Self.StandUp"
-     parameter="" />
-    <menu_item_call.on_enable
-     function="Self.EnableStandUp" />
-  </menu_item_call>
-  <context_menu
-   label="Take Off"
-   layout="topleft"
-   name="Take Off &gt;">
-    <context_menu
-     label="Clothes"
-     layout="topleft"
-     name="Clothes &gt;">
-      <menu_item_call
-       enabled="false"
-       label="Shirt"
-       layout="topleft"
-       name="Shirt">
-        <menu_item_call.on_click
-         function="Edit.TakeOff"
-         parameter="shirt" />
-        <menu_item_call.on_enable
-         function="Edit.EnableTakeOff"
-         parameter="shirt" />
-      </menu_item_call>
-      <menu_item_call
-       enabled="false"
-       label="Pants"
-       layout="topleft"
-       name="Pants">
-        <menu_item_call.on_click
-         function="Edit.TakeOff"
-         parameter="pants" />
-        <menu_item_call.on_enable
-         function="Edit.EnableTakeOff"
-         parameter="pants" />
-      </menu_item_call>
-      <menu_item_call
-       enabled="false"
-       label="Skirt"
-       layout="topleft"
-       name="Skirt">
-        <menu_item_call.on_click
-         function="Edit.TakeOff"
-         parameter="skirt" />
-        <menu_item_call.on_enable
-         function="Edit.EnableTakeOff"
-         parameter="skirt" />
-      </menu_item_call>
-      <menu_item_call
-       enabled="false"
-       label="Shoes"
-       layout="topleft"
-       name="Shoes">
-        <menu_item_call.on_click
-         function="Edit.TakeOff"
-         parameter="shoes" />
-        <menu_item_call.on_enable
-         function="Edit.EnableTakeOff"
-         parameter="shoes" />
-      </menu_item_call>
-      <menu_item_call
-       enabled="false"
-       label="Socks"
-       layout="topleft"
-       name="Socks">
-        <menu_item_call.on_click
-         function="Edit.TakeOff"
-         parameter="socks" />
-        <menu_item_call.on_enable
-         function="Edit.EnableTakeOff"
-         parameter="socks" />
-      </menu_item_call>
-      <menu_item_call
-       enabled="false"
-       label="Jacket"
-       layout="topleft"
-       name="Jacket">
-        <menu_item_call.on_click
-         function="Edit.TakeOff"
-         parameter="jacket" />
-        <menu_item_call.on_enable
-         function="Edit.EnableTakeOff"
-         parameter="jacket" />
-      </menu_item_call>
-      <menu_item_call
-       enabled="false"
-       label="Gloves"
-       layout="topleft"
-       name="Gloves">
-        <menu_item_call.on_click
-         function="Edit.TakeOff"
-         parameter="gloves" />
-        <menu_item_call.on_enable
-         function="Edit.EnableTakeOff"
-         parameter="gloves" />
-      </menu_item_call>
-      <menu_item_call
-            enabled="false"
-            label="Undershirt"
-            layout="topleft"
-            name="Self Undershirt">
-        <menu_item_call.on_click
-         function="Edit.TakeOff"
-         parameter="undershirt" />
-        <menu_item_call.on_enable
-         function="Edit.EnableTakeOff"
-         parameter="undershirt" />
-      </menu_item_call>
-      <menu_item_call
-        enabled="false"
-        label="Underpants"
-        layout="topleft"
-        name="Self Underpants">
-        <menu_item_call.on_click
-         function="Edit.TakeOff"
-         parameter="underpants" />
-        <menu_item_call.on_enable
-         function="Edit.EnableTakeOff"
-         parameter="underpants" />
-      </menu_item_call>
-      <menu_item_call
-        enabled="false"
-        label="Tattoo"
-        layout="topleft"
-        name="Self Tattoo">
-        <menu_item_call.on_click
-         function="Edit.TakeOff"
-         parameter="tattoo" />
-        <menu_item_call.on_enable
-         function="Edit.EnableTakeOff"
-         parameter="tattoo" />
-      </menu_item_call>
-      <menu_item_call
-        enabled="false"
-        label="Alpha"
-        layout="topleft"
-        name="Self Alpha">
-        <menu_item_call.on_click
-         function="Edit.TakeOff"
-         parameter="alpha" />
-        <menu_item_call.on_enable
-         function="Edit.EnableTakeOff"
-         parameter="alpha" />
-      </menu_item_call>
-      <menu_item_separator
-       layout="topleft" />
-      <menu_item_call
-       label="All Clothes"
-       layout="topleft"
-       name="All Clothes">
-        <menu_item_call.on_click
-         function="Edit.TakeOff"
-         parameter="all" />
-      </menu_item_call>
-    </context_menu>
-    <context_menu
-     label="HUD"
-     layout="topleft"
-     name="Object Detach HUD" />
-    <context_menu
-     label="Detach"
-     layout="topleft"
-     name="Object Detach" />
-    <menu_item_call
-     label="Detach All"
-     layout="topleft"
-     name="Detach All">
-      <menu_item_call.on_click
-       function="Self.RemoveAllAttachments"
-       parameter="" />
-      <menu_item_call.on_enable
-       function="Self.EnableRemoveAllAttachments" />
-    </menu_item_call>
-  </context_menu>
-  <menu_item_call
-  label="Change Outfit"
-  layout="topleft"
-  name="Chenge Outfit">
-    <menu_item_call.on_click
-     function="CustomizeAvatar" />
-    <menu_item_call.on_enable
-     function="Edit.EnableCustomizeAvatar" />
-  </menu_item_call>
-  <menu_item_call label="Edit My Outfit"
-  layout="topleft"
-  name="Edit Outfit">
-    <menu_item_call.on_click
-     function="EditOutfit" />
-    <menu_item_call.on_enable
-     function="Edit.EnableCustomizeAvatar" />
-  </menu_item_call>
-  <menu_item_call label="Edit My Shape"
-  layout="topleft"
-  name="Edit My Shape">
-    <menu_item_call.on_click
-     function="EditShape" />
-    <menu_item_call.on_enable
-     function="Edit.EnableEditShape" />
-  </menu_item_call>
-  <menu_item_call
-    label="My Friends"
-    layout="topleft"
-    name="Friends...">
-    <menu_item_call.on_click
-     function="SideTray.PanelPeopleTab"
-     parameter="friends_panel" />
-  </menu_item_call>
-  <menu_item_call
-   label="My Groups"
-   layout="topleft"
-   name="Groups...">
-    <menu_item_call.on_click
-     function="SideTray.PanelPeopleTab"
-     parameter="groups_panel" />
-  </menu_item_call>
-  <menu_item_call
-    label="My Profile"
-    layout="topleft"
-    name="Profile...">
-    <menu_item_call.on_click
-     function="ShowAgentProfile"
-     parameter="agent" />
-  </menu_item_call>
-  <menu_item_call
-   label="Debug Textures"
-       name="Debug...">
-    <menu_item_call.on_click
-     function="Avatar.Debug" />
-    <menu_item_call.on_visible
-     function="IsGodCustomerService"/>
-  </menu_item_call>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/en/menu_object_icon.xml b/indra/newview/skins/default/xui/en/menu_object_icon.xml
index 0c8a2af0028..2d4f1792c29 100644
--- a/indra/newview/skins/default/xui/en/menu_object_icon.xml
+++ b/indra/newview/skins/default/xui/en/menu_object_icon.xml
@@ -24,4 +24,22 @@
          function="ObjectIcon.Action"
          parameter="block" />
     </menu_item_call>
+    <menu_item_separator
+     layout="topleft" />
+    <menu_item_call
+     label="Show on Map"
+     layout="topleft"
+     name="show_on_map">
+        <menu_item_call.on_click
+         function="ObjectIcon.Action" 
+         parameter="map" />
+    </menu_item_call>
+    <menu_item_call
+     label="Teleport to Object Location"
+     layout="topleft"
+     name="teleport_to_object">
+        <menu_item_call.on_click
+         function="ObjectIcon.Action"
+         parameter="teleport" />
+    </menu_item_call>
 </menu>
diff --git a/indra/newview/skins/default/xui/en/menu_participant_view.xml b/indra/newview/skins/default/xui/en/menu_participant_view.xml
new file mode 100644
index 00000000000..7ea87ee05c4
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/menu_participant_view.xml
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<toggleable_menu
+ layout="topleft"
+ name="participant_manu_view">
+    <menu_item_check
+     label="Sort conversations by type"
+     layout="topleft"
+     name="sort_sessions_by_type">
+        <on_click
+         function="IMFloaterContainer.Action"
+         parameter="sort_sessions_by_type" />
+        <on_check
+         function="IMFloaterContainer.Check"
+         parameter="sort_sessions_by_type" />
+    </menu_item_check>
+    <menu_item_check
+     label="Sort conversations by name"
+     layout="topleft"
+     name="sort_sessions_by_name">
+        <on_click
+         function="IMFloaterContainer.Action"
+         parameter="sort_sessions_by_name" />
+        <on_check
+         function="IMFloaterContainer.Check"
+         parameter="sort_sessions_by_name" />
+    </menu_item_check>
+    <menu_item_check
+     label="Sort conversations by recent activity"
+     layout="topleft"
+     name="sort_sessions_by_recent">
+        <on_click
+         function="IMFloaterContainer.Action"
+         parameter="sort_sessions_by_recent" />
+        <on_check
+         function="IMFloaterContainer.Check"
+         parameter="sort_sessions_by_recent" />
+    </menu_item_check>
+    <menu_item_separator
+     layout="topleft" />
+    <menu_item_check
+     label="Sort participants by name"
+     layout="topleft"
+     name="sort_participants_by_name">
+        <on_click
+         function="IMFloaterContainer.Action"
+         parameter="sort_participants_by_name" />
+        <on_check
+         function="IMFloaterContainer.Check"
+         parameter="sort_participants_by_name" />
+    </menu_item_check>
+    <menu_item_check
+     label="Sort participants by recent activity"
+     layout="topleft"
+     name="sort_participants_by_recent">
+        <on_click
+         function="IMFloaterContainer.Action"
+         parameter="sort_participants_by_recent" />
+        <on_check
+         function="IMFloaterContainer.Check"
+         parameter="sort_participants_by_recent" />
+    </menu_item_check>
+    <menu_item_separator
+     layout="topleft" />
+    <menu_item_call
+         label="Chat preferences..."
+         name="chat_preferences">
+        <on_click
+         function="IMFloaterContainer.Action"
+         parameter="chat_preferences" />
+      </menu_item_call>
+    <menu_item_call
+         label="Privacy preferences..."
+         name="privacy_preferences">
+        <on_click
+         function="IMFloaterContainer.Action"
+         parameter="privacy_preferences" />
+    </menu_item_call>
+    <menu_item_check
+         label="Conversation log..."
+         name="Conversation"
+         visible="true">
+        <menu_item_check.on_check
+         function="Floater.Visible"
+         parameter="conversation" />
+        <menu_item_check.on_click
+         function="Floater.Toggle"
+         parameter="conversation" />
+        <menu_item_check.on_enable
+         function="Avatar.EnableItem"
+         parameter="conversation_log" />
+    </menu_item_check>
+    <menu_item_separator layout="topleft" />
+    <menu_item_check name="Translate_chat" label="Translate Nearby chat">
+        <menu_item_check.on_click
+         function="IMFloaterContainer.Action" 
+         parameter="Translating.Toggle" />
+        <menu_item_check.on_check
+         function="IMFloaterContainer.Check" 
+         parameter="Translating.On" />
+        <menu_item_check.on_enable
+         function="IMFloaterContainer.Check" 
+         parameter="Translating.Enabled" />
+    </menu_item_check>
+    <menu_item_check name="Translation_settings" label="Translation settings...">
+    <menu_item_check.on_check
+         function="Floater.Visible"
+         parameter="prefs_translation" />
+        <menu_item_check.on_click
+         function="Floater.Toggle"
+         parameter="prefs_translation" />
+    </menu_item_check>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/en/menu_people_blocked_gear.xml b/indra/newview/skins/default/xui/en/menu_people_blocked_gear.xml
new file mode 100644
index 00000000000..63295ea27bb
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/menu_people_blocked_gear.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<toggleable_menu 
+     name="menu_blocked_gear"
+     left="0" bottom="0" visible="false"
+     mouse_opaque="false">
+  <menu_item_call
+   label="Unblock"
+   name="unblock">
+      <on_click
+       function="Block.Action"
+       parameter="unblock_item" />
+      <on_enable
+       function="Block.Enable"
+       parameter="unblock_item" /> 
+  </menu_item_call>
+  <menu_item_call
+   label="Profile..."
+   name="profile">
+      <on_click
+       function="Block.Action"
+       parameter="profile_item"/>
+      <on_enable
+       function="Block.Enable"
+       parameter="profile_item" />
+  </menu_item_call>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/en/menu_people_blocked_plus.xml b/indra/newview/skins/default/xui/en/menu_people_blocked_plus.xml
new file mode 100644
index 00000000000..0c7155667ed
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/menu_people_blocked_plus.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<toggleable_menu 
+     name="menu_blocked_plus"
+     left="0" bottom="0" visible="false"
+     mouse_opaque="false">
+  <menu_item_call
+   label="Block Resident by name..."
+   name="block_resident_by_name">
+      <on_click
+       function="Block.Action"
+       parameter="block_res_by_name"/>
+  </menu_item_call>
+  <menu_item_call
+   label="Block object by name"
+   name="block_object_by_name">
+      <on_click
+       function="Block.Action"
+       parameter="block_obj_by_name"/>
+  </menu_item_call>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/en/menu_people_blocked_view.xml b/indra/newview/skins/default/xui/en/menu_people_blocked_view.xml
new file mode 100644
index 00000000000..2efb70ee37b
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/menu_people_blocked_view.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<toggleable_menu 
+     name="menu_blocked_view"
+     left="0" bottom="0" visible="false"
+     mouse_opaque="false">
+  <menu_item_check
+   label="Sort by name"
+   name="sort_by_name">
+      <on_click
+       function="Block.Action"
+       parameter="sort_by_name"/>
+      <on_check
+       function="Block.Check"
+       parameter="sort_by_name"/>
+  </menu_item_check>
+  <menu_item_check
+   label="Sort by type"
+   name="sort_by_type">
+      <on_click
+       function="Block.Action"
+       parameter="sort_by_type" />
+      <on_check
+       function="Block.Check"
+       parameter="sort_by_type" />
+  </menu_item_check>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/en/menu_people_friends_view_sort.xml b/indra/newview/skins/default/xui/en/menu_people_friends_view.xml
similarity index 83%
rename from indra/newview/skins/default/xui/en/menu_people_friends_view_sort.xml
rename to indra/newview/skins/default/xui/en/menu_people_friends_view.xml
index b452f96e7a9..dde9432867a 100644
--- a/indra/newview/skins/default/xui/en/menu_people_friends_view_sort.xml
+++ b/indra/newview/skins/default/xui/en/menu_people_friends_view.xml
@@ -40,8 +40,12 @@
      function="CheckControl"
      parameter="FriendsListShowPermissions" />
   </menu_item_check>
-  <menu_item_separator layout="topleft" />
-  <menu_item_call name="show_blocked_list" label="Show Blocked Residents &amp; Objects">
-    <menu_item_call.on_click function="People.Friends.ViewSort.Action" parameter="panel_block_list_sidetray" />
-  </menu_item_call>
+  <menu_item_check name="view_conversation" label="View Conversation Log...">
+    <menu_item_check.on_check
+     function="Floater.Visible"
+     parameter="conversation" />
+    <menu_item_check.on_click
+     function="Floater.Toggle"
+     parameter="conversation" />
+  </menu_item_check>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/en/menu_people_groups.xml b/indra/newview/skins/default/xui/en/menu_people_groups.xml
index 8f89d37dbbe..1e0364b84eb 100644
--- a/indra/newview/skins/default/xui/en/menu_people_groups.xml
+++ b/indra/newview/skins/default/xui/en/menu_people_groups.xml
@@ -1,7 +1,17 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu name="menu_group_plus"
+<toggleable_menu name="menu_group_plus"
  left="0" bottom="0" visible="false"
  mouse_opaque="false" opaque="true" color="MenuDefaultBgColor">
+  <menu_item_call
+   label="Activate"
+   name="Activate">
+    <menu_item_call.on_click
+     function="People.Groups.Action"
+     parameter="activate" />
+    <menu_item_call.on_enable
+     function="People.Groups.Enable"
+     parameter="activate" />
+  </menu_item_call>
   <menu_item_call
    label="View Info"
    name="View Info">
@@ -23,7 +33,7 @@
      parameter="chat" />
   </menu_item_call>
   <menu_item_call
-   label="Call"
+   label="Voice call"
    name="Call">
     <menu_item_call.on_click
      function="People.Groups.Action"
@@ -33,17 +43,6 @@
      parameter="call" />
   </menu_item_call>
   <menu_item_separator />
-  <menu_item_call
-   label="Activate"
-   name="Activate">
-    <menu_item_call.on_click
-     function="People.Groups.Action"
-     parameter="activate" />
-    <menu_item_call.on_enable
-     function="People.Groups.Enable"
-     parameter="activate" />
-  </menu_item_call>
-  <menu_item_separator />
   <menu_item_call
    label="Leave"
    name="Leave">
@@ -54,4 +53,4 @@
      function="People.Groups.Enable"
      parameter="leave" />
   </menu_item_call>
-</menu>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/en/menu_people_groups_view_sort.xml b/indra/newview/skins/default/xui/en/menu_people_groups_view.xml
similarity index 65%
rename from indra/newview/skins/default/xui/en/menu_people_groups_view_sort.xml
rename to indra/newview/skins/default/xui/en/menu_people_groups_view.xml
index c710fe3b9b7..73f79f1e70d 100644
--- a/indra/newview/skins/default/xui/en/menu_people_groups_view_sort.xml
+++ b/indra/newview/skins/default/xui/en/menu_people_groups_view.xml
@@ -14,13 +14,4 @@
        function="CheckControl"
        parameter="GroupListShowIcons" />
   </menu_item_check>
-  <menu_item_call
-   label="Leave Selected Group"
-   layout="topleft"
-   name="Leave Selected Group">
-      <menu_item_call.on_click
-       function="People.Group.Minus.Action"/>
-      <menu_item_call.on_enable
-       function="People.Group.Minus.Enable"/>
-  </menu_item_call>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/en/menu_people_nearby.xml b/indra/newview/skins/default/xui/en/menu_people_nearby.xml
index d2e35e4cc00..3abb5f7bc8c 100644
--- a/indra/newview/skins/default/xui/en/menu_people_nearby.xml
+++ b/indra/newview/skins/default/xui/en/menu_people_nearby.xml
@@ -1,28 +1,69 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <context_menu
  layout="topleft"
- name="Avatar Context Menu">
+ name="Nearby People Context Menu">
     <menu_item_call
      label="View Profile"
      layout="topleft"
-     name="View Profile">
+     name="view_profile">
         <menu_item_call.on_click
          function="Avatar.Profile" />
     </menu_item_call>
+    <menu_item_call
+     label="IM"
+     layout="topleft"
+     name="im">
+        <menu_item_call.on_click
+         function="Avatar.IM" />
+        <menu_item_call.on_enable
+      	 function="Avatar.EnableItem"
+         parameter="can_im"/> 
+    </menu_item_call>
+    <menu_item_call
+    label="Offer Teleport"
+    name="offer_teleport">
+      <menu_item_call.on_click
+       function="Avatar.OfferTeleport"/>
+      <menu_item_call.on_enable
+      function="Avatar.EnableItem"
+      parameter="can_offer_teleport"/>
+    </menu_item_call>
+    <menu_item_call
+     label="Voice call"
+     layout="topleft"
+     name="voice_call">
+        <menu_item_call.on_click
+         function="Avatar.Call" />
+        <menu_item_call.on_enable
+         function="Avatar.EnableItem"
+         parameter="can_call" />
+    </menu_item_call>
+    <menu_item_separator />
+    <menu_item_call
+     label="View chat history..."
+     layout="topleft"
+     name="chat_history">
+        <menu_item_call.on_click
+         function="Avatar.Calllog" />
+        <menu_item_call.on_enable
+      	 function="Avatar.EnableItem"
+         parameter="can_callog"/>
+    </menu_item_call>
+    <menu_item_separator name="separator_chat_history"/>
     <menu_item_call
      label="Add Friend"
      layout="topleft"
-     name="Add Friend">
+     name="add_friend">
         <menu_item_call.on_click
          function="Avatar.AddFriend" />
-        <menu_item_call.on_enable
+        <menu_item_call.on_visible
          function="Avatar.EnableItem"
          parameter="can_add" />
     </menu_item_call>
     <menu_item_call
      label="Remove Friend"
      layout="topleft"
-     name="Remove Friend">
+     name="remove_friend">
         <menu_item_call.on_click
          function="Avatar.RemoveFriend" />
         <menu_item_call.on_enable
@@ -30,26 +71,30 @@
          parameter="can_delete" />
     </menu_item_call>
     <menu_item_call
-     label="IM"
+     label="Invite to group..."
      layout="topleft"
-     name="IM">
+     name="invite_to_group">
         <menu_item_call.on_click
-         function="Avatar.IM" />
+         function="Avatar.InviteToGroup" />
+        <menu_item_call.on_enable
+      	 function="Avatar.EnableItem"
+         parameter="can_invite"/>
     </menu_item_call>
+    <menu_item_separator name="separator_invite_to_group"/>
     <menu_item_call
-     label="Call"
+     label="Zoom In"
      layout="topleft"
-     name="Call">
-        <menu_item_call.on_click
-         function="Avatar.Call" />
-        <menu_item_call.on_enable
-         function="Avatar.EnableItem"
-         parameter="can_call" />
+     name="zoom_in">
+      <menu_item_call.on_click
+       function="Avatar.ZoomIn" />
+      <menu_item_call.on_enable
+       function="Avatar.EnableItem"
+       parameter="can_zoom_in"/>
     </menu_item_call>
     <menu_item_call
      label="Map"
      layout="topleft"
-     name="Map">
+     name="map">
         <menu_item_call.on_click
          function="Avatar.ShowOnMap" />
         <menu_item_call.on_enable
@@ -59,21 +104,27 @@
     <menu_item_call
      label="Share"
      layout="topleft"
-     name="Share">
+     name="share">
         <menu_item_call.on_click
          function="Avatar.Share" />
+        <menu_item_call.on_enable
+      	 function="Avatar.EnableItem"
+         parameter="can_share"/>
     </menu_item_call>
     <menu_item_call
      label="Pay"
      layout="topleft"
-     name="Pay">
+     name="pay">
         <menu_item_call.on_click
          function="Avatar.Pay" />
+        <menu_item_call.on_enable
+      	 function="Avatar.EnableItem"
+         parameter="can_pay"/> 
     </menu_item_call>
     <menu_item_check
      label="Block/Unblock"
      layout="topleft"
-     name="Block/Unblock">
+     name="block_unblock">
         <menu_item_check.on_click
          function="Avatar.BlockUnblock" />
         <menu_item_check.on_check
@@ -83,13 +134,5 @@
          function="Avatar.EnableItem"
          parameter="can_block" />
     </menu_item_check>
-    <menu_item_call
-    label="Offer Teleport"
-    name="teleport">
-      <menu_item_call.on_click
-       function="Avatar.OfferTeleport"/>
-      <menu_item_call.on_enable
-      function="Avatar.EnableItem"
-      parameter="can_offer_teleport"/>
-    </menu_item_call>
+    <menu_item_separator />
 </context_menu>
diff --git a/indra/newview/skins/default/xui/en/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/en/menu_people_nearby_multiselect.xml
index 5d58a9d2895..5f973088fdd 100644
--- a/indra/newview/skins/default/xui/en/menu_people_nearby_multiselect.xml
+++ b/indra/newview/skins/default/xui/en/menu_people_nearby_multiselect.xml
@@ -6,7 +6,7 @@
      enabled="false"
      label="Add Friends"
      layout="topleft"
-     name="Add Friends">
+     name="add_friends">
         <on_click
          function="Avatar.AddFriends" />
         <on_enable
@@ -16,7 +16,7 @@
     <menu_item_call
      label="Remove Friends"
      layout="topleft"
-     name="Remove Friend">
+     name="remove_friends">
         <menu_item_call.on_click
          function="Avatar.RemoveFriend" />
         <menu_item_call.on_enable
@@ -26,7 +26,7 @@
     <menu_item_call
      label="IM"
      layout="topleft"
-     name="IM">
+     name="im">
         <on_click
          function="Avatar.IM" />
     </menu_item_call>
@@ -34,7 +34,7 @@
      enabled="false"
      label="Call"
      layout="topleft"
-     name="Call">
+     name="call">
         <on_click
          function="Avatar.Call" />
         <on_enable
@@ -45,7 +45,7 @@
      enabled="false"
      label="Share"
      layout="topleft"
-     name="Share">
+     name="share">
         <on_click
          function="Avatar.Share" />
     </menu_item_call>
@@ -53,13 +53,13 @@
      enabled="false"
      label="Pay"
      layout="topleft"
-     name="Pay">
+     name="pay">
         <on_click
          function="Avatar.Pay" />
     </menu_item_call>
     <menu_item_call
     label="Offer Teleport"
-    name="teleport">
+    name="offer_teleport">
       <menu_item_call.on_click
        function="Avatar.OfferTeleport"/>
       <menu_item_call.on_enable
diff --git a/indra/newview/skins/default/xui/en/menu_people_nearby_view.xml b/indra/newview/skins/default/xui/en/menu_people_nearby_view.xml
new file mode 100644
index 00000000000..da88ca9f4d5
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/menu_people_nearby_view.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<toggleable_menu
+ name="menu_group_plus"
+ left="0" bottom="0" visible="false"
+ mouse_opaque="false">
+    <menu_item_check
+       label="Sort by Recent Speakers"
+       name="sort_by_recent_speakers">
+      <menu_item_check.on_click
+         function="People.Nearby.ViewSort.Action"
+       parameter="sort_by_recent_speakers"/>
+      <menu_item_check.on_check
+         function="People.Nearby.ViewSort.CheckItem"
+         parameter="sort_by_recent_speakers"/>
+    </menu_item_check>
+    <menu_item_check
+       label="Sort by Name"
+       name="sort_name">
+      <menu_item_check.on_click
+         function="People.Nearby.ViewSort.Action"
+         parameter="sort_name"/>
+      <menu_item_check.on_check
+         function="People.Nearby.ViewSort.CheckItem"
+         parameter="sort_name"/>
+    </menu_item_check>
+    <menu_item_check
+       label="Sort by Distance"
+       name="sort_distance">
+      <menu_item_check.on_click
+         function="People.Nearby.ViewSort.Action"
+         parameter="sort_distance"/>
+      <menu_item_check.on_check
+         function="People.Nearby.ViewSort.CheckItem"
+         parameter="sort_distance"/>
+    </menu_item_check>
+    <menu_item_separator layout="topleft" />
+    <menu_item_check name="view_icons" label="View People Icons">
+        <menu_item_check.on_click
+         function="People.Nearby.ViewSort.Action"
+         parameter="view_icons" />
+        <menu_item_check.on_check
+         function="CheckControl"
+         parameter="NearbyListShowIcons" />
+    </menu_item_check>
+    <menu_item_check name ="view_map" label="View Map">
+        <menu_item_check.on_check
+         function="CheckControl"
+         parameter="NearbyListShowMap" />
+        <menu_item_check.on_click
+         function="ToggleControl"
+         parameter="NearbyListShowMap" />
+    </menu_item_check>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/en/menu_people_nearby_view_sort.xml b/indra/newview/skins/default/xui/en/menu_people_nearby_view_sort.xml
deleted file mode 100644
index 614dd693c57..00000000000
--- a/indra/newview/skins/default/xui/en/menu_people_nearby_view_sort.xml
+++ /dev/null
@@ -1,57 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<toggleable_menu
-     name="menu_group_plus"
-     left="0" bottom="0" visible="false"
-     mouse_opaque="false">
-  <menu_item_check
-     label="Sort by Recent Speakers"
-     name="sort_by_recent_speakers">
-    <menu_item_check.on_click
-       function="People.Nearby.ViewSort.Action"
-       parameter="sort_by_recent_speakers"/>
-    <menu_item_check.on_check
-       function="People.Nearby.ViewSort.CheckItem"
-       parameter="sort_by_recent_speakers"/>
-  </menu_item_check>
-  <menu_item_check
-     label="Sort by Name"
-     name="sort_name">
-    <menu_item_check.on_click
-       function="People.Nearby.ViewSort.Action"
-       parameter="sort_name"/>
-    <menu_item_check.on_check
-       function="People.Nearby.ViewSort.CheckItem"
-       parameter="sort_name"/>
-  </menu_item_check>
-  <menu_item_check
-     label="Sort by Distance"
-     name="sort_distance">
-    <menu_item_check.on_click
-       function="People.Nearby.ViewSort.Action"
-       parameter="sort_distance"/>
-    <menu_item_check.on_check
-       function="People.Nearby.ViewSort.CheckItem"
-       parameter="sort_distance"/>
-  </menu_item_check>
-  <menu_item_separator layout="topleft" />
-  <menu_item_check name="view_icons" label="View People Icons">
-    <menu_item_check.on_click
-     function="People.Nearby.ViewSort.Action"
-     parameter="view_icons" />
-    <menu_item_check.on_check
-     function="CheckControl"
-     parameter="NearbyListShowIcons" />
-  </menu_item_check>
-  <menu_item_check name ="view_map" label="View Map">
-    <menu_item_check.on_check
-      function="CheckControl"
-      parameter="NearbyListShowMap" />
-    <menu_item_check.on_click
-      function="ToggleControl"
-      parameter="NearbyListShowMap" />
-  </menu_item_check>
-  <menu_item_separator layout="topleft" />
-  <menu_item_call name="show_blocked_list" label="Show Blocked Residents &amp; Objects">
-    <menu_item_call.on_click function="People.Nearby.ViewSort.Action" userdata="panel_block_list_sidetray" />
-  </menu_item_call>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/en/menu_people_recent_view_sort.xml b/indra/newview/skins/default/xui/en/menu_people_recent_view.xml
similarity index 81%
rename from indra/newview/skins/default/xui/en/menu_people_recent_view_sort.xml
rename to indra/newview/skins/default/xui/en/menu_people_recent_view.xml
index 485a5a658ca..1dbc90dd2be 100644
--- a/indra/newview/skins/default/xui/en/menu_people_recent_view_sort.xml
+++ b/indra/newview/skins/default/xui/en/menu_people_recent_view.xml
@@ -32,8 +32,4 @@
      function="CheckControl"
      parameter="RecentListShowIcons" />
   </menu_item_check>
-  <menu_item_separator layout="topleft" />
-  <menu_item_call name="show_blocked_list" label="Show Blocked Residents &amp; Objects">
-    <menu_item_call.on_click function="People.Recent.ViewSort.Action" userdata="panel_block_list_sidetray" />
-  </menu_item_call>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/en/menu_url_agent.xml b/indra/newview/skins/default/xui/en/menu_url_agent.xml
index 73f0fa79797..7cd56f257a8 100644
--- a/indra/newview/skins/default/xui/en/menu_url_agent.xml
+++ b/indra/newview/skins/default/xui/en/menu_url_agent.xml
@@ -1,13 +1,27 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <context_menu
  layout="topleft"
- name="Url Popup">
+ name="Url Popup">  
     <menu_item_call
-     label="Show Resident Profile"
+     label="View Profile"
      layout="topleft"
      name="show_agent">
         <menu_item_call.on_click
-         function="Url.ShowProfile" />
+         function="Url.ShowProfile" />         
+    </menu_item_call>
+    <menu_item_call
+     label="Send IM..."
+     layout="topleft"
+     name="send_im">
+        <menu_item_call.on_click
+         function="Url.SendIM" />        
+    </menu_item_call>
+    <menu_item_call
+     label="Add Friend..."
+     layout="topleft"
+     name="add_friend">
+        <menu_item_call.on_click
+         function="Url.AddFriend" />        
     </menu_item_call>
     <menu_item_separator
      layout="topleft" />
diff --git a/indra/newview/skins/default/xui/en/menu_url_objectim.xml b/indra/newview/skins/default/xui/en/menu_url_objectim.xml
index 35c2269b0d1..87ab58e622e 100644
--- a/indra/newview/skins/default/xui/en/menu_url_objectim.xml
+++ b/indra/newview/skins/default/xui/en/menu_url_objectim.xml
@@ -3,7 +3,7 @@
  layout="topleft"
  name="Url Popup">
     <menu_item_call
-     label="Show Object Information"
+     label="Object Profile..."
      layout="topleft"
      name="show_object">
         <menu_item_call.on_click
diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml
index caa36e7302c..544f06ac0c4 100644
--- a/indra/newview/skins/default/xui/en/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/en/menu_viewer.xml
@@ -130,19 +130,22 @@
        label="Status"
        name="Status"
        tear_off="true">
-        <menu_item_call
-         label="Away"
-         name="Set Away">
-          <menu_item_call.on_click
+        <menu_item_check
+         label="Away">
+          <menu_item_check.on_check
+           function="View.Status.CheckAway" />
+          <menu_item_check.on_click
            function="World.SetAway" />
-        </menu_item_call>
-        <menu_item_call
-         label="Busy"
-         name="Set Busy">
-          <menu_item_call.on_click
-           function="World.SetBusy"/>
-        </menu_item_call>
-      </menu>
+        </menu_item_check>
+        <menu_item_check
+         label="Do Not Disturb">
+          <menu_item_check.on_check
+           function="View.Status.CheckDoNotDisturb" />
+          <menu_item_check.on_click
+           function="World.SetDoNotDisturb"/>
+        </menu_item_check>
+      
+    </menu>
 
       <menu_item_separator/>
 
@@ -180,8 +183,7 @@
         </menu_item_call>
          <menu_item_call
          label="Toolbar buttons..."
-         name="Toolbars"
-         shortcut="control|T">
+         name="Toolbars">
             <menu_item_call.on_click
              function="Floater.Toggle"
              parameter="toybox" />
@@ -218,17 +220,28 @@
      label="Communicate"
      name="Communicate"
      tear_off="true">
-        <menu_item_check
-         label="Chat..."
+       <menu_item_check
+         label="Conversations..."
+         name="Conversations"
+         shortcut="control|T">
+            <menu_item_check.on_check
+             function="Floater.IsOpen"
+             parameter="im_container" />
+            <menu_item_check.on_click
+             function="Floater.ToggleOrBringToFront"
+             parameter="im_container" />
+	</menu_item_check>
+	<menu_item_check
+         label="Nearby Chat..."
          name="Nearby Chat"
          shortcut="control|H"
          use_mac_ctrl="true">
             <menu_item_check.on_check
              function="Floater.Visible"
-             parameter="chat_bar" />
+             parameter="nearby_chat" />
             <menu_item_check.on_click
-             function="Floater.Toggle"
-             parameter="chat_bar" />
+             function="Floater.ToggleOrBringToFront"
+             parameter="nearby_chat" />
         </menu_item_check>
         <menu_item_check
          label="Speak"
@@ -244,26 +257,47 @@
              parameter="speak" />
         </menu_item_check>
         <menu_item_check
-         label="Voice settings..."
-         name="Nearby Voice">
+         label="Conversation Log...">
             <menu_item_check.on_check
              function="Floater.Visible"
-             parameter="voice_controls" />
+             parameter="conversation" />
+            <menu_item_check.on_enable
+             function="Conversation.IsConversationLoggingAllowed" />
             <menu_item_check.on_click
              function="Floater.Toggle"
-             parameter="voice_controls" />
+             parameter="conversation" />
         </menu_item_check>
-        <menu_item_check
-         label="Voice morphing..."
-         name="ShowVoice"
+        <menu_item_separator/>
+        <menu
+         label="Voice morphing"
+         name="VoiceMorphing"
          visibility_control="VoiceMorphingEnabled">
-            <menu_item_check.on_check
-             function="Floater.Visible"
-             parameter="voice_effect" />
-            <menu_item_check.on_click
-             function="Floater.Toggle"
-             parameter="voice_effect" />
-        </menu_item_check>
+            <menu_item_check
+             label="No voice morphing"
+             name="NoVoiceMorphing">
+                <menu_item_check.on_check
+                 function="Communicate.VoiceMorphing.NoVoiceMorphing.Check" />
+                <menu_item_check.on_click
+                 function="Communicate.VoiceMorphing.NoVoiceMorphing.Click" />
+            </menu_item_check>
+            <menu_item_separator/>
+            <menu_item_check
+             label="Preview..."
+             name="Preview">
+                <menu_item_check.on_check
+                 function="Floater.Visible"
+                 parameter="voice_effect" />
+                <menu_item_check.on_click
+                 function="Floater.Toggle"
+                 parameter="voice_effect" />
+            </menu_item_check>
+            <menu_item_call
+             label="Subscribe..."
+             name="Subscribe">
+                <menu_item_call.on_click
+                 function="Communicate.VoiceMorphing.Subscribe" />
+            </menu_item_call>
+        </menu>
         <menu_item_check
          label="Gestures..."
          name="Gestures"
@@ -313,8 +347,18 @@
          label="Block List"
          name="Block List">
             <menu_item_call.on_click
-              function="Communicate.BlockList" />
+              function="SideTray.PanelPeopleTab"
+              parameter="blocked_panel" />
         </menu_item_call>
+      <menu_item_separator/>
+      <menu_item_check
+       label="Do Not Disturb">
+        <menu_item_check.on_check
+         function="View.Status.CheckDoNotDisturb" />
+        <menu_item_check.on_click
+         function="World.SetDoNotDisturb"/>
+      </menu_item_check>
+
     </menu>
     <menu
      create_jump_keys="true"
@@ -1251,7 +1295,58 @@
              function="Floater.Show"
              parameter="hud" />
         </menu_item_call>-->
-
+		<menu_item_separator/>
+		
+		<menu_item_call
+             label="User’s guide"
+             name="User’s guide">
+             <menu_item_call.on_click
+                 function="Advanced.ShowURL"
+                 parameter="http://community.secondlife.com/t5/English-Knowledge-Base/Second-Life-User-s-Guide/ta-p/1244857"/>
+        </menu_item_call>
+        <menu_item_call
+             label="Knowledge Base"
+             name="Knowledge Base">
+             <menu_item_call.on_click
+                 function="Advanced.ShowURL"
+                 parameter="http://community.secondlife.com/t5/tkb/communitypage"/>
+        </menu_item_call>
+        <menu_item_call
+             label="Wiki"
+             name="Wiki">
+             <menu_item_call.on_click
+                 function="Advanced.ShowURL"
+                 parameter="http://wiki.secondlife.com"/>
+        </menu_item_call>
+        <menu_item_call
+             label="Community Forums"
+             name="Community Forums">
+             <menu_item_call.on_click
+                 function="Advanced.ShowURL"
+                 parameter="http://community.secondlife.com/t5/Forums/ct-p/Forums"/>
+        </menu_item_call>         
+        <menu_item_call
+             label="Support portal"
+             name="Support portal">
+             <menu_item_call.on_click
+                 function="Advanced.ShowURL"
+                 parameter="https://support.secondlife.com/"/>         
+        </menu_item_call>
+        <menu_item_separator/>
+        <menu_item_call
+             label="[SECOND_LIFE] News"
+             name="Second Life News">
+             <menu_item_call.on_click
+                 function="Advanced.ShowURL"
+                 parameter="http://community.secondlife.com/t5/Featured-News/bg-p/blog_feature_news"/>  
+        </menu_item_call>
+        <menu_item_call
+             label="[SECOND_LIFE] Blogs"
+             name="Second Life Blogs">
+             <menu_item_call.on_click
+                 function="Advanced.ShowURL"
+                 parameter="http://community.secondlife.com/t5/Blogs/ct-p/Blogs"/>
+        </menu_item_call>
         <menu_item_separator/>
 
         <menu_item_call
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index c8f5cbb2b01..c681e390023 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -3085,6 +3085,7 @@ Would you like to trust this authority?
    icon="alertmodal.tga"
    name="GrantedModifyRights"
    persist="true"
+   log_to_im="true"   
    type="notify">
 [NAME] has given you permission to edit their objects.
   </notification>
@@ -3093,6 +3094,7 @@ Would you like to trust this authority?
    icon="alertmodal.tga"
    name="RevokedModifyRights"
    persist="true"
+   log_to_im="true"   
    type="notify">
 Your privilege to modify [NAME]&apos;s objects has been revoked
   </notification>
@@ -3726,12 +3728,15 @@ Cannot offer friendship at this time. Please try again in a moment.
 
   <notification
    icon="alert.tga"
-   name="BusyModeSet"
+   name="DoNotDisturbModeSet"
    type="alert">
-Busy mode is set.
-Chat and instant messages will be hidden. Instant messages will get your Busy mode response. All teleportation offers will be declined. All inventory offers will go to your Trash.
+Do Not Disturb is on.  You will not be notified of incoming communications.
+
+- Other residents will receive your Do Not Disturb response (set in Preferences &gt; General).
+- Teleportation offers will be declined.
+- Voice calls will be rejected.
     <usetemplate
-     ignoretext="I change my status to Busy mode"
+     ignoretext="I change my status to Do Not Disturb mode"
      name="okignore"
      yestext="OK"/>
   </notification>
@@ -4277,6 +4282,8 @@ Are you sure you want to change the Estate Covenant?
   <notification
    icon="notifytip.tga"
    name="RegionEntryAccessBlocked_Notify"
+   log_to_im="false"
+   log_to_chat="true"
    type="notifytip">
    <tag>fail</tag>
 The region you're trying to visit contains [REGIONMATURITY] content, but your current preferences are set to exclude [REGIONMATURITY] content.
@@ -4285,6 +4292,8 @@ The region you're trying to visit contains [REGIONMATURITY] content, but your cu
   <notification
    icon="notifytip.tga"
    name="RegionEntryAccessBlocked_NotifyAdultsOnly"
+   log_to_im="false"
+   log_to_chat="true"
    type="notifytip">
     <tag>fail</tag>
     The region you're trying to visit contains [REGIONMATURITY] content, which is accessible to adults only.
@@ -4356,6 +4365,8 @@ The region you're trying to visit contains [REGIONMATURITY] content, but your cu
   <notification
    icon="notifytip.tga"
    name="TeleportEntryAccessBlocked_Notify"
+   log_to_im="false"
+   log_to_chat="true"
    type="notifytip">
     <unique>
       <context>REGIONMATURITY</context>
@@ -4367,6 +4378,8 @@ The region you're trying to visit contains [REGIONMATURITY] content, but your cu
   <notification
    icon="notifytip.tga"
    name="TeleportEntryAccessBlocked_NotifyAdultsOnly"
+   log_to_im="false"
+   log_to_chat="true"
    type="notifytip">
     <unique>
       <context>REGIONMATURITY</context>
@@ -4487,6 +4500,8 @@ You won't receive any more notifications that you're about to visit a region wit
   <notification
    icon="notifytip.tga"
    name="LandClaimAccessBlocked_Notify"
+   log_to_im="false"
+   log_to_chat="true"
    type="notifytip">
     The land you're trying to claim contains [REGIONMATURITY] content, but your current preferences are set to exclude [REGIONMATURITY] content.
     <tag>fail</tag>
@@ -4495,6 +4510,8 @@ You won't receive any more notifications that you're about to visit a region wit
   <notification
    icon="notifytip.tga"
    name="LandClaimAccessBlocked_NotifyAdultsOnly"
+   log_to_im="false"
+   log_to_chat="true"
    type="notifytip">
     <tag>fail</tag>
     The land you're trying to claim contains [REGIONMATURITY] content, which is accessible to adults only.
@@ -4552,6 +4569,8 @@ You won't receive any more notifications that you're about to visit a region wit
   <notification
    icon="notifytip.tga"
    name="LandBuyAccessBlocked_Notify"
+   log_to_im="false"
+   log_to_chat="true"
    type="notifytip">
     The land you're trying to buy contains [REGIONMATURITY] content, but your current preferences are set to exclude [REGIONMATURITY] content.
     <tag>fail</tag>
@@ -4560,6 +4579,8 @@ You won't receive any more notifications that you're about to visit a region wit
   <notification
    icon="notifytip.tga"
    name="LandBuyAccessBlocked_NotifyAdultsOnly"
+   log_to_im="false"
+   log_to_chat="true"
    type="notifytip">
     <tag>fail</tag>
     The land you're trying to buy contains [REGIONMATURITY] content, which is accessible to adults only.
@@ -5003,6 +5024,20 @@ Go to your [http://secondlife.com/account/ Dashboard] to see your account histor
      yestext="Go to page"/>
   </notification>
 
+  <notification
+   icon="alertmodal.tga"
+   name="ConfirmAddingChatParticipants"
+   type="alertmodal">
+    <unique/>
+When you add a person to an existing conversation, a new conversation will be created.  All participants will receive new conversation notifications.
+    <tag>confirm</tag>
+    <usetemplate
+     ignoretext="Confirm adding chat paticipants"
+     name="okcancelignore"
+     notext="Cancel"
+     yestext="Ok"/>
+  </notification>
+ 
   <notification
    icon="alertmodal.tga"
    name="ConfirmQuit"
@@ -5172,25 +5207,25 @@ Do you want to replace it with the selected object?
 
   <notification
    icon="alert.tga"
-   label="Busy Mode Warning"
-   name="BusyModePay"
+   label="Do Not Disturb Mode Warning"
+   name="DoNotDisturbModePay"
    type="alert">
-You are in Busy Mode, which means you will not receive any items offered in exchange for this payment.
+You have turned on Do Not Disturb. You will not receive any items offered in exchange for this payment.
 
-Would you like to leave Busy Mode before completing this transaction?
+Would you like to turn off Do Not Disturb before completing this transaction?
     <tag>confirm</tag>
     <form name="form">
       <ignore name="ignore"
        save_option="true"
-       text="I am about to pay a person or object while I am in Busy mode"/>
+       text="I am about to pay a person or object while I am in Do Not Disturb mode"/>
       <button
        default="true"
-       ignore="Always leave Busy Mode"
+       ignore="Always leave Do Not Disturb Mode"
        index="0"
        name="Yes"
        text="OK"/>
       <button
-       ignore="Never leave Busy Mode"
+       ignore="Never leave Do Not Disturb Mode"
        index="1"
        name="No"
        text="Cancel"/>
@@ -5501,6 +5536,8 @@ The string [STRING_NAME] is missing from strings.xml
   <notification
    icon="notifytip.tga"
    name="IMSystemMessageTip"
+   log_to_im="true"   
+   log_to_chat="false"   
    type="notifytip">
 [MESSAGE]
   </notification>
@@ -5544,18 +5581,14 @@ Topic: [SUBJECT], Message: [MESSAGE]
 
   <notification
    icon="notifytip.tga"
-   name="FriendOnline"
+   name="FriendOnlineOffline"
+   log_to_chat="false"
    type="notifytip">
     <tag>friendship</tag>
-&lt;nolink&gt;[NAME]&lt;/nolink&gt; is Online
-  </notification>
-
-  <notification
-   icon="notifytip.tga"
-   name="FriendOffline"
-   type="notifytip">
-    <tag>friendship</tag>
-&lt;nolink&gt;[NAME]&lt;/nolink&gt; is Offline
+&lt;nolink&gt;[NAME]&lt;/nolink&gt; is [STATUS]
+    <unique combine="cancel_old">
+      <context>NAME</context>
+    </unique>
   </notification>
 
   <notification
@@ -5799,6 +5832,8 @@ You don&apos;t have permission to copy this.
   <notification
    icon="notifytip.tga"
    name="InventoryAccepted"
+   log_to_im="true"   
+   log_to_chat="false"
    type="notifytip">
 [NAME] received your inventory offer.
   </notification>
@@ -5806,6 +5841,8 @@ You don&apos;t have permission to copy this.
   <notification
    icon="notifytip.tga"
    name="InventoryDeclined"
+   log_to_im="true"   
+   log_to_chat="false"
    type="notifytip">
 [NAME] declined your inventory offer.
   </notification>
@@ -5887,6 +5924,7 @@ Please select at least one type of content to search (General, Moderate, or Adul
   <notification
    icon="notify.tga"
    name="PaymentReceived"
+   log_to_im="true"   
    persist="true"
    type="notify">
     <tag>funds</tag>
@@ -5896,6 +5934,7 @@ Please select at least one type of content to search (General, Moderate, or Adul
   <notification
    icon="notify.tga"
    name="PaymentSent"
+   log_to_im="true"   
    persist="true"
    type="notify">
     <tag>funds</tag>
@@ -6040,6 +6079,7 @@ The objects on the selected parcel that are NOT owned by you have been returned
   <notification
    icon="notify.tga"
    name="ServerObjectMessage"
+   log_to_im="true"   
    persist="true"
    type="notify">
 Message from [NAME]:
@@ -6438,7 +6478,9 @@ Your object named &lt;nolink&gt;[OBJECTFROMNAME]&lt;/nolink&gt; has given you th
   <notification
    icon="notify.tga"
    name="UserGiveItem"
-   type="offer">
+   log_to_im ="true"
+   type="offer"
+   sound="UISndNewIncomingIMSession">
 [NAME_SLURL] has given you this [OBJECTTYPE]:
 [ITEM_SLURL]
     <form name="form">
@@ -6493,7 +6535,10 @@ Your object named &lt;nolink&gt;[OBJECTFROMNAME]&lt;/nolink&gt; has given you th
   <notification
    icon="notify.tga"
    name="TeleportOffered"
-   type="offer">
+   log_to_im="true"
+   log_to_chat="false"
+   type="offer"
+   sound="UISndNewIncomingIMSession">
 [NAME_SLURL] has offered to teleport you to their location:
 
 “[MESSAGE]”
@@ -6514,6 +6559,8 @@ Your object named &lt;nolink&gt;[OBJECTFROMNAME]&lt;/nolink&gt; has given you th
   <notification
    icon="notify.tga"
    name="TeleportOffered_MaturityExceeded"
+   log_to_im="true"
+   log_to_chat="false"
    type="offer">
 [NAME_SLURL] has offered to teleport you to their location:
 
@@ -6537,6 +6584,8 @@ This region contains [REGION_CONTENT_MATURITY] content, but your current prefere
   <notification
    icon="notify.tga"
    name="TeleportOffered_MaturityBlocked"
+   log_to_im="true"
+   log_to_chat="false"
    type="notifytip">
 [NAME_SLURL] has offered to teleport you to their location:
 
@@ -6550,7 +6599,10 @@ However, this region contains content accessible to adults only.
   <notification
    icon="notify.tga"
    name="TeleportOfferSent"
-   type="offer">
+   log_to_im="true"
+   log_to_chat="false"
+   show_toast="false"
+   type="notify">
 	Teleport offer sent to [TO_NAME]
   </notification>
 
@@ -6577,6 +6629,7 @@ However, this region contains content accessible to adults only.
   <notification
    icon="notify.tga"
    name="OfferFriendship"
+   log_to_im="true"
    type="offer">
     <tag>friendship</tag>
     <tag>confirm</tag>
@@ -6600,7 +6653,9 @@ However, this region contains content accessible to adults only.
   <notification
    icon="notify.tga"
    name="FriendshipOffered"
-   type="offer">
+   log_to_im="true"   
+   show_toast="false"   
+   type="notify">
     <tag>friendship</tag>
 	You have offered friendship to [TO_NAME]
   </notification>
@@ -6629,7 +6684,8 @@ However, this region contains content accessible to adults only.
   <notification
    icon="notify.tga"
    name="FriendshipAccepted"
-   type="offer">
+   log_to_im="true"   
+   type="notify">
     <tag>friendship</tag>
 &lt;nolink&gt;[NAME]&lt;/nolink&gt; accepted your friendship offer.
   </notification>
@@ -6637,6 +6693,7 @@ However, this region contains content accessible to adults only.
   <notification
    icon="notify.tga"
    name="FriendshipDeclined"
+   log_to_im="true"   
    persist="true"
    type="notify">
     <tag>friendship</tag>
@@ -6646,7 +6703,9 @@ However, this region contains content accessible to adults only.
     <notification
    icon="notify.tga"
    name="FriendshipAcceptedByMe"
-   type="offer">
+   log_to_im="true"   
+   show_toast="false"
+   type="notify">
     <tag>friendship</tag>
 Friendship offer accepted.
   </notification>
@@ -6654,7 +6713,9 @@ Friendship offer accepted.
   <notification
    icon="notify.tga"
    name="FriendshipDeclinedByMe"
-   type="offer">
+   log_to_im="true"   
+   show_toast="false"   
+   type="notify">
     <tag>friendship</tag>
 Friendship offer declined.
   </notification>
@@ -6703,6 +6764,7 @@ If you stay in this region you will be logged out.
   <notification
    icon="notify.tga"
    name="LoadWebPage"
+   show_toast="false"
    type="notify">
 Load web page [URL]?
 
@@ -6805,6 +6867,7 @@ Do not allow access if you do not fully understand why it wants access to your a
   <notification
    icon="notify.tga"
    name="ScriptDialog"
+   show_toast="false"
    type="notify">
 [NAME]&apos;s &apos;&lt;nolink&gt;[TITLE]&lt;/nolink&gt;&apos;
 [MESSAGE]
@@ -6823,6 +6886,7 @@ Do not allow access if you do not fully understand why it wants access to your a
   <notification
    icon="notify.tga"
    name="ScriptDialogGroup"
+   show_toast="false"
    type="notify">
     <tag>group</tag>
 [GROUPNAME]&apos;s &apos;&lt;nolink&gt;[TITLE]&lt;/nolink&gt;&apos;
@@ -9642,14 +9706,6 @@ There is no suitable surface to sit on, try another spot.
 No room to sit here, try another spot.
   </notification>
 
-  <notification
-   icon="alertmodal.tga"
-   name="AutopilotCanceled"
-   type="notify">
-   <tag>fail</tag>
-Autopilot canceled
-  </notification>
-
   <notification
    icon="alertmodal.tga"
    name="ClaimObjectFailedNoPermission"
@@ -9938,4 +9994,41 @@ An internal error prevented us from properly updating your viewer.  The L$ balan
 Cannot create large prims that intersect other players.  Please re-try when other players have moved.
   </notification>
 
+  <notification
+   icon="alertmodal.tga"
+   name="PreferenceChatClearLog"
+   type="alertmodal">
+    This will delete the logs of previous conversations, and any backups of that file.
+    <tag>confirm</tag>
+    <usetemplate
+     ignoretext="Confirm before I delete the log of previous conversations."
+     name="okcancelignore"
+     notext="Cancel"
+     yestext="OK"/>
+  </notification>
+    
+  <notification
+   icon="alertmodal.tga"
+   name="PreferenceChatDeleteTranscripts"
+   type="alertmodal">
+    This will delete the transcripts for all previous conversations. The list of past conversations will not be affected. All files with the suffixes .txt and txt.backup in the folder [FOLDER] will be deleted.
+    <tag>confirm</tag>
+    <usetemplate
+     ignoretext="Confirm before I delete transcripts."
+     name="okcancelignore"
+     notext="Cancel"
+     yestext="OK"/>
+  </notification>
+
+  <notification
+   icon="alert.tga"
+   name="PreferenceChatPathChanged"
+   type="alert">
+   Unable to move files. Restored previous path.
+    <usetemplate
+     ignoretext="Unable to move files. Restored previous path."
+     name="okignore"
+     yestext="OK"/>
+  </notification>
+  
 </notifications>
diff --git a/indra/newview/skins/default/xui/en/panel_activeim_row.xml b/indra/newview/skins/default/xui/en/panel_activeim_row.xml
deleted file mode 100644
index 9369d1b5cf4..00000000000
--- a/indra/newview/skins/default/xui/en/panel_activeim_row.xml
+++ /dev/null
@@ -1,97 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel
-	name="panel_activeim_row"
-	layout="topleft"
-	follows="left|right"
-	top="0"
-	left="0"
-	height="35"
-	width="318"
-  background_opaque="false"
-  background_visible="true"
-  bg_alpha_color="0.0 0.0 0.0 0.0" >
-  <chiclet_im_p2p
-		name="p2p_chiclet"
-		layout="topleft"
-		follows="left"
-		top="3"
-		left="5"
-		height="25"
-		width="25"
-    visible="false"
-    speaker.name="speaker_p2p"
-    speaker.width="20"
-    speaker.height="25"
-    speaker.left="25"
-    speaker.top="25"
-    speaker.auto_update="true"
-    speaker.draw_border="false"
-    speaker.visible="false">
-  </chiclet_im_p2p>
-  <chiclet_im_group
-		name="group_chiclet"
-		layout="topleft"
-		follows="left"
-		top="3"
-		left="5"
-		height="25"
-		width="25"
-    visible="false"
-    speaker.name="speaker_grp"
-    speaker.width="20"
-    speaker.height="25"
-    speaker.left="25"
-    speaker.top="25"
-    speaker.auto_update="true"
-    speaker.draw_border="false"
-    speaker.visible="false">
-  </chiclet_im_group>
-  <chiclet_im_adhoc
-		name="adhoc_chiclet"
-		layout="topleft"
-		follows="left"
-		top="3"
-		left="5"
-		height="25"
-		width="25"
-    visible="false"
-    speaker.name="speaker_hoc"
-    speaker.width="20"
-    speaker.height="25"
-    speaker.left="25"
-    speaker.top="25"
-    speaker.auto_update="true"
-    speaker.draw_border="false"
-    speaker.visible="false">
-  </chiclet_im_adhoc>
-	<text
-	    translate="false"
-		type="string"
-		name="contact_name"
-		layout="topleft"
-		top="10"
-		left_pad="10"
-		height="14"
-		width="250"
-		length="1"
-		follows="right|left"
-		parse_urls="false"
-		use_ellipses="true"
-		font="SansSerifBold">
-    TestString PleaseIgnore
-  </text>
-  <button
-    top="10"
-    right="-5"
-    width="17"
-    height="17"
-    layout="topleft"
-    follows="right"
-    name="hide_btn"
-    mouse_opaque="true"
-    label=""
-    tab_stop="false"
-    image_unselected="Toast_CloseBtn"
-    image_selected="Toast_CloseBtn"
-  />
-</panel>
\ No newline at end of file
diff --git a/indra/newview/skins/default/xui/en/panel_adhoc_control_panel.xml b/indra/newview/skins/default/xui/en/panel_adhoc_control_panel.xml
deleted file mode 100644
index d68fa6ca6c2..00000000000
--- a/indra/newview/skins/default/xui/en/panel_adhoc_control_panel.xml
+++ /dev/null
@@ -1,95 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel
- border="false"
- follows="all"
- height="215"
- name="panel_im_control_panel"
- width="150">
-    <layout_stack
-     mouse_opaque="false"
-     border_size="0"
-     clip="false"
-     follows="all"
-     height="215"
-     layout="topleft"
-     left="3"
-     name="vertical_stack"
-     orientation="vertical"
-     top="0"
-     width="147">
-        <layout_panel
-         auto_resize="true"
-         follows="top|left"
-         height="130"
-         layout="topleft"
-         left="0"
-         min_height="0"
-         mouse_opaque="false"
-         width="147"
-         top="0"
-         name="speakers_list_panel">
-            <avatar_list
-             color="DkGray2"
-             follows="all"
-             height="130"
-             ignore_online_status="true"
-             layout="topleft"
-             name="speakers_list"
-             opaque="false"
-             show_info_btn="true"
-             show_profile_btn="false"
-             show_speaking_indicator="false"
-             width="147" />
-        </layout_panel>
-        <layout_panel
-         auto_resize="false"
-         follows="top|left|right"
-         height="25"
-         layout="topleft"
-         min_height="25"
-         width="130"
-         name="call_btn_panel"
-         visible="false">
-            <button
-             follows="all"
-             height="20"
-             label="Call"
-             name="call_btn"
-             width="130"
-             top="0" />
-        </layout_panel>
-        <layout_panel
-         auto_resize="false"
-         follows="top|left|right"
-         height="25"
-         layout="topleft"
-         min_height="25"
-         width="130"
-         name="end_call_btn_panel"
-         visible="false">
-            <button
-             follows="all"
-             height="20"
-             label="Leave Call"
-             name="end_call_btn"
-             top="0"/>
-        </layout_panel>
-        <layout_panel
-         auto_resize="false"
-         follows="top|left|right"
-         height="25"
-         layout="topleft"
-         min_height="25"
-         width="130"
-         name="voice_ctrls_btn_panel"
-         visible="false">
-            <button
-             follows="all"
-             height="20"
-             label="Voice Controls"
-             name="voice_ctrls_btn"
-             top="0"
-             use_ellipses="true" />
-        </layout_panel>
-    </layout_stack>
-</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/en/panel_avatar_list_item.xml
index b7c58eb6ab1..aa1b929412a 100644
--- a/indra/newview/skins/default/xui/en/panel_avatar_list_item.xml
+++ b/indra/newview/skins/default/xui/en/panel_avatar_list_item.xml
@@ -129,6 +129,7 @@
      left_pad="3"
      right="-53"
      name="info_btn"
+     tool_tip="More info"
      tab_stop="false"
      top_delta="0"
      width="16" />
diff --git a/indra/newview/skins/default/xui/en/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/en/panel_block_list_sidetray.xml
index 7c67fd7f835..53d0252215e 100644
--- a/indra/newview/skins/default/xui/en/panel_block_list_sidetray.xml
+++ b/indra/newview/skins/default/xui/en/panel_block_list_sidetray.xml
@@ -4,88 +4,99 @@
  follows="left|top|right|bottom"
  height="305"
  layout="topleft"
+ left="0"
  name="block_list_panel"
  help_topic="blocked_list"
  min_height="350"
  min_width="240"
- width="280">
-        <button
-     follows="top|left"
-     height="24"
-     image_hover_unselected="BackButton_Over"
-     image_pressed="BackButton_Press"
-     image_unselected="BackButton_Off"
-     layout="topleft"
-     name="back"
-     left="4"
-     tab_stop="false"
-     top="1"
-     width="30"/>
-    <text
-     follows="top|left|right"
-     font="SansSerifLargeBold"
-     height="20"
-     layout="topleft"
-     left_pad="10"
-     name="title_text"
-     text_color="White"
-     top="5"
-     width="250">
-        Block List
-     </text>
-    <scroll_list
+ width="323">
+     <panel
+      follows="left|top|right"
+      height="27"
+      label="bottom_panel"
+      layout="topleft"
+      left="0"
+      name="blocked_buttons_panel"
+      right="-1"
+      top="0">
+         <filter_editor
+          follows="left|top|right"
+          height="23"
+          layout="topleft"
+          left="6"
+          label="Filter"
+          max_length_chars="300"
+          name="blocked_filter_input"
+          text_color="Black"
+          text_pad_left="10"
+          top="4"
+          width="177" />
+         <menu_button
+          follows="right"
+          height="25"
+          image_hover_unselected="Toolbar_Middle_Over"
+          image_overlay="OptionsMenu_Off"
+          image_selected="Toolbar_Middle_Selected"
+          image_unselected="Toolbar_Middle_Off"
+          layout="topleft"
+          left_pad="8"
+          menu_filename="menu_people_blocked_gear.xml"
+          menu_position="bottomleft"
+          name="blocked_gear_btn"
+          tool_tip="Actions on selected person or object"
+          top="3"
+          width="31" />
+         <menu_button
+          follows="right"
+          height="25"
+          image_hover_unselected="Toolbar_Middle_Over"
+          image_overlay="Conv_toolbar_sort"
+          image_selected="Toolbar_Middle_Selected"
+          image_unselected="Toolbar_Middle_Off"
+          layout="topleft"
+          left_pad="2"
+          menu_filename="menu_people_blocked_view.xml"
+          menu_position="bottomleft"
+          name="view_btn"
+          tool_tip="Sort options"
+          top_delta="0"
+          width="31" />
+         <menu_button
+          follows="right"
+          height="25"
+          image_hover_unselected="Toolbar_Middle_Over"
+          image_overlay="AddItem_Off"
+          image_selected="Toolbar_Middle_Selected"
+          image_unselected="Toolbar_Middle_Off"
+          layout="topleft"
+          left_pad="2"
+          menu_filename="menu_people_blocked_plus.xml"
+          menu_position="bottomleft"
+          name="plus_btn"
+          tool_tip="Pick a Resident or an object to block"
+          top_delta="0"
+          width="31"/>
+          <button
+          follows="right"
+          height="25"
+          image_hover_unselected="Toolbar_Middle_Over"
+          image_overlay="TrashItem_Off"
+          image_selected="Toolbar_Middle_Selected"
+          image_unselected="Toolbar_Middle_Off"
+          left_pad="2"
+          layout="topleft"
+          name="unblock_btn"
+          tool_tip="Remove Resident or object from blocked list"
+          top_delta="0"
+          width="31"/>
+     </panel>
+    <block_list
      follows="all"
-     height="190"
+     height="273"
      layout="topleft"
-     left="5"
+     left="3"
      name="blocked"
      tool_tip="List of currently blocked Residents"
-     top="30"
-     width="270">
-        <scroll_list.columns
-         name="item_name" />
-        <scroll_list.columns
-         name="item_type"
-         width="96" />
-    </scroll_list>
-    <button
-     follows="left|bottom"
-     height="23"
-     label="Block person"
-     layout="topleft"
-     left_delta="0"
-     name="Block resident..."
-     tool_tip="Pick a Resident to block"
-     top_pad="4"
-     width="210">
-        <button.commit_callback
-         function="Block.ClickPick" />
-    </button>
-    <button
-     follows="left|bottom"
-     height="23"
-     label="Block object by name"
-     layout="topleft"
-     left_delta="0"
-     name="Block object by name..."
-     tool_tip="Pick an object to block by name"
-     top_pad="4"
-     width="210" >
-        <button.commit_callback
-         function="Block.ClickBlockByName" />
-    </button>
-    <button
-     enabled="false"
-     follows="left|bottom"
-     height="23"
-     label="Unblock"
-     layout="topleft"
-     left_delta="0"
-     name="Unblock"
-     tool_tip="Remove Resident or object from blocked list"
-     top_pad="4"
-     width="210" >
-        <button.commit_callback
-         function="Block.ClickRemove" />
-    </button>
+     top="31"
+  	 right="-1"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/en/panel_blocked_list_item.xml b/indra/newview/skins/default/xui/en/panel_blocked_list_item.xml
new file mode 100644
index 00000000000..752321b949f
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/panel_blocked_list_item.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<panel
+ follows="top|right|left"
+ height="23"
+ layout="topleft"
+ left="0"
+ name="blocked_list_item"
+ top="0"
+ width="380">
+    <icon
+     height="24"
+     follows="top|right|left"
+     image_name="ListItem_Select"
+     layout="topleft"
+     left="0"
+     name="selected_icon"
+     top="0"
+     visible="false"
+     width="380" />
+    <icon
+     follows="top|right|left"
+     height="24"
+     image_name="ListItem_Over"
+     layout="topleft"
+     left="0"
+     name="hovered_icon"
+     top="0"
+     visible="false"
+     width="380" />
+    <avatar_icon
+     default_icon_name="Generic_Person"
+     follows="top|left"
+     height="20"
+     layout="topleft"
+     left="5"
+     mouse_opaque="true"
+     top="2"
+     visible="false"
+     width="20" />
+    <group_icon
+     default_icon_name="Generic_Group"
+     follows="top|left"
+     height="20"
+     layout="topleft"
+     left="5"
+     mouse_opaque="true"
+     top="2"
+     visible="false"
+     width="20" />
+    <icon
+     follows="top|left"
+     height="16"
+     image_name="Inv_Object"
+     layout="topleft"
+     left="7"
+     name="object_icon"
+     top="4"
+     visible="false"
+     width="16" />
+    <text
+     follows="left|right"
+     font="SansSerifSmall"
+     height="15"
+     layout="topleft"
+     left_pad="5"
+     name="item_name"
+     parse_urls="false"
+     top="6"
+     use_ellipses="true"
+     width="180" />
+</panel>
\ No newline at end of file
diff --git a/indra/newview/skins/default/xui/en/panel_bottomtray_lite.xml b/indra/newview/skins/default/xui/en/panel_bottomtray_lite.xml
index f4722b05d69..27a27473d81 100644
--- a/indra/newview/skins/default/xui/en/panel_bottomtray_lite.xml
+++ b/indra/newview/skins/default/xui/en/panel_bottomtray_lite.xml
@@ -46,7 +46,7 @@
             follows="left|right"
             top="4"
             width="310"
-            name="chat_bar"
+            name="nearby_chat"
             mouse_opaque="false"/>
         </layout_panel>
         <layout_panel
diff --git a/indra/newview/skins/default/xui/en/panel_chiclet_bar.xml b/indra/newview/skins/default/xui/en/panel_chiclet_bar.xml
index ff0146490b9..fc321fdd235 100644
--- a/indra/newview/skins/default/xui/en/panel_chiclet_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_chiclet_bar.xml
@@ -80,54 +80,6 @@
     <layout_panel auto_resize="false"
                       width="4"
                       min_width="4"/>
-    <layout_panel
-         auto_resize="false"
-         follows="right"
-         height="28"
-         layout="topleft"
-         min_height="28"
-         min_width="37"
-         name="im_well_panel"
-         top="0"
-         width="37">
-      <chiclet_im_well
-             follows="right"
-             height="28"
-             layout="topleft"
-             left="0"
-             max_displayed_count="99"
-             name="im_well"
-             top="0"
-             width="35">
-        <!--
-Emulate 4 states of button by background images, see details in EXT-3147. The same should be for notification_well button
-xml attribute           Description
-image_unselected        "Unlit" - there are no new messages
-image_selected          "Unlit" + "Selected" - there are no new messages and the Well is open
-image_pressed           "Lit" - there are new messages
-image_pressed_selected  "Lit" + "Selected" - there are new messages and the Well is open
-             -->
-        <button
-                 auto_resize="false"
-                 follows="right"
-                 halign="center"
-                 height="23"
-                 image_overlay="Unread_IM"
-                 image_overlay_alignment="center"
-                 image_pressed="WellButton_Lit"
-                 image_pressed_selected="WellButton_Lit_Selected"
-                 image_selected="PushButton_Press"
-                 label_color="Black"
-                 left="0"
-                 name="Unread IM messages"
-                 tool_tip="Conversations"
-                 width="34">
-          <init_callback
-                     function="Button.SetDockableFloaterToggle"
-                     parameter="im_well_window" />
-        </button>
-      </chiclet_im_well>
-    </layout_panel>
     <layout_panel
          auto_resize="false"
          follows="right"
diff --git a/indra/newview/skins/default/xui/en/panel_conversation_list_item.xml b/indra/newview/skins/default/xui/en/panel_conversation_list_item.xml
new file mode 100644
index 00000000000..a054e71e347
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/panel_conversation_list_item.xml
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<panel
+ follows="left|top|right"
+ height="24"
+ layout="topleft"
+ name="conversation_list_item"
+ mouse_opaque="false"
+ width="120">
+    <avatar_icon
+     follows="top|left"
+     height="20"
+     default_icon_name="Generic_Person"
+     layout="topleft"
+     left="5"
+     top="2"
+     visible="false"
+     width="20" />
+    <group_icon
+     follows="top|left"
+     height="20"
+     default_icon_name="Generic_Group"
+     layout="topleft"
+     left="5"
+     top="2"
+     visible="false"
+     width="20" />
+    <icon
+     follows="top|left"
+     height="20"
+     image_name="Nearby_chat_icon"
+     layout="topleft"
+     left="5"
+     name="nearby_chat_icon"
+     top="2"
+     visible="false"
+     width="20"/>
+    <layout_stack
+     animate="false"
+     follows="all"
+     height="24"
+     layout="topleft"
+     left="30"
+     mouse_opaque="false"
+     name="conversation_item_stack"
+     orientation="horizontal"
+     top="0"
+     width="90">
+        <layout_panel
+         auto_resize="false"
+         user_resize="false"        
+         height="24"
+         mouse_opaque="false"
+         name="call_icon_panel"
+         visible="false"
+         width="20">
+            <icon
+             height="18"
+             follows="top|right|left"
+             image_name="Conv_toolbar_open_call"
+             layout="topleft"
+             left="0"
+             name="selected_icon"
+             top="3"
+             width="18" />
+        </layout_panel>
+        <layout_panel
+         auto_resize="true"
+         user_resize="false"    
+         height="24"
+         mouse_opaque="false"
+         name="conversation_title_panel"
+         width="70">
+		    <text
+		     follows="left|top|right"
+		     font="SansSerifSmall"
+		     height="15"
+		     layout="topleft"
+		     left="5"
+		     name="conversation_title"
+		     parse_urls="false"
+		     top="6"
+		     use_ellipses="true"
+		     value="(loading)"
+		     width="35" />
+		    <output_monitor
+		     auto_update="true"
+		     follows="top|right"
+		     draw_border="false"
+		     height="16"
+		     layout="topleft"
+		     left_pad="5"
+ 		     mouse_opaque="true"
+ 		     name="speaking_indicator"
+ 		     visible="false"
+ 		     width="20" />
+        </layout_panel>
+    </layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_conversation_log_list_item.xml b/indra/newview/skins/default/xui/en/panel_conversation_log_list_item.xml
new file mode 100644
index 00000000000..78d4c174d2c
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/panel_conversation_log_list_item.xml
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<panel
+ follows="top|right|left"
+ height="23"
+ layout="topleft"
+ left="0"
+ name="conversation_log_list_item"
+ top="0"
+ width="380">
+    <icon
+     height="24"
+     follows="top|right|left"
+     image_name="ListItem_Select"
+     layout="topleft"
+     left="0"
+     name="selected_icon"
+     top="0"
+     visible="false"
+     width="380" />
+    <icon
+     follows="top|right|left"
+     height="24"
+     image_name="ListItem_Over"
+     layout="topleft"
+     left="0"
+     name="hovered_icon"
+     top="0"
+     visible="false"
+     width="380" />
+    <icon
+     follows="top|left"
+     height="20"
+     layout="topleft"
+     left="5"
+     image_name="Conv_toolbar_open_call"
+     mouse_opaque="true"
+     name="voice_session_icon"
+     tool_tip="Included a voice conversation"
+     top="2"
+     visible="false"
+     width="20" />
+    <icon
+     follows="top|left"
+     height="20"
+     layout="topleft"
+     left="5"
+     image_name="Conv_log_inbox"
+     mouse_opaque="false"
+     name="unread_ims_icon"
+     tool_tip="Messages arrived while you were logged out"
+     top="2"
+     visible="false"
+     width="20" />
+    <avatar_icon
+     default_icon_name="Generic_Person"
+     follows="top|left"
+     height="20"
+     layout="topleft"
+     left_pad="5"
+     mouse_opaque="true"
+     top="2"
+     visible="false"
+     width="20" />
+    <group_icon
+     default_icon_name="Generic_Group"
+     follows="top|left"
+     height="20"
+     layout="topleft"
+     mouse_opaque="true"
+     top="2"
+     visible="false"
+     width="20" />
+    <text
+     follows="left|right"
+     font="SansSerifSmall"
+     height="15"
+     layout="topleft"
+     left_pad="5"
+     name="conversation_name"
+     parse_urls="false"
+     top="6"
+     use_ellipses="true"
+     width="180" />
+    <text
+     follows="right"
+     font="SansSerifSmall"
+     height="15"
+     layout="topleft"
+     left_pad="5"
+     name="date_time"
+     parse_urls="false"
+     top="6"
+     use_ellipses="true"
+     width="110"/>
+    <button
+     name="delete_btn"
+     tool_tip="Remove this entry"
+     layout="topleft"
+     follows="top|right"
+     image_unselected="Conv_toolbar_close"
+     image_selected="Conv_toolbar_close"
+     top="5"
+     left_pad="0"
+     height="14"
+     width="14"
+     tab_stop="false"/>
+</panel>
\ No newline at end of file
diff --git a/indra/newview/skins/default/xui/en/panel_group_control_panel.xml b/indra/newview/skins/default/xui/en/panel_group_control_panel.xml
deleted file mode 100644
index ad10e53a4e3..00000000000
--- a/indra/newview/skins/default/xui/en/panel_group_control_panel.xml
+++ /dev/null
@@ -1,109 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel
- border="false"
- follows="all"
- height="238"
- name="panel_im_control_panel"
- width="150">
-    <layout_stack
-     mouse_opaque="false"
-     border_size="0"
-     clip="false"
-     follows="all"
-     height="238"
-     layout="topleft"
-     left="5"
-     name="vertical_stack"
-     orientation="vertical"
-     top="0"
-     width="145">
-        <layout_panel
-         auto_resize="true"
-         follows="top|left"
-         height="100"
-         layout="topleft"
-         min_height="0"
-         mouse_opaque="false"
-         width="145"
-         top="0"
-         name="speakers_list_panel">
-            <avatar_list
-             color="DkGray2"
-             follows="all"
-             height="100"
-             ignore_online_status="true"
-             layout="topleft"
-             name="speakers_list"
-             opaque="false"
-             show_info_btn="true"
-             show_profile_btn="false"
-             show_speaking_indicator="false"
-             width="145" />
-        </layout_panel>
-        <layout_panel
-         auto_resize="false"
-         follows="top|left|right"
-         height="28"
-         layout="topleft"
-         min_height="28"
-         width="130"
-         name="group_info_btn_panel">
-            <button
-             follows="left|right|bottom"
-             height="23"
-             label="Group Profile"
-             name="group_info_btn"
-             use_ellipses="true"
-             top="5"
-             width="130" />
-        </layout_panel>
-        <layout_panel
-         auto_resize="false"
-         follows="top|left|right"
-         height="28"
-         layout="topleft"
-         min_height="28"
-         width="130"
-         name="call_btn_panel">
-            <button
-             follows="all"
-             height="23"
-             label="Call Group"
-             name="call_btn"
-             use_ellipses="true" 
-             width="130" />
-        </layout_panel>
-        <layout_panel
-         auto_resize="false"
-         follows="top|left|right"
-         height="28"
-         layout="topleft"
-         min_height="28"
-         width="130"
-         name="end_call_btn_panel"
-         visible="false">
-            <button
-             follows="all"
-             height="23"
-             label="Leave Call"
-             name="end_call_btn"
-             use_ellipses="true" />
-        </layout_panel>
-        <layout_panel
-         auto_resize="false"
-         follows="top|left|right"
-         height="28"
-         layout="topleft"
-         min_height="28"
-         width="130"
-         name="voice_ctrls_btn_panel"
-         visible="false">
-            <button
-             follows="all"
-             height="23"
-             label="Open Voice Controls"
-             name="voice_ctrls_btn"
-             use_ellipses="true" />
-        </layout_panel>
-    </layout_stack>
-</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_group_list_item.xml b/indra/newview/skins/default/xui/en/panel_group_list_item.xml
index 12735026fa0..cfe3aeb7c98 100644
--- a/indra/newview/skins/default/xui/en/panel_group_list_item.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_list_item.xml
@@ -56,6 +56,7 @@
      left_pad="3"
      right="-31"
      name="info_btn"
+     tool_tip="More info"
      tab_stop="false"
      top_delta="-2"
      width="16" />
diff --git a/indra/newview/skins/default/xui/en/panel_im_control_panel.xml b/indra/newview/skins/default/xui/en/panel_im_control_panel.xml
deleted file mode 100644
index 8fcd6ccbaf2..00000000000
--- a/indra/newview/skins/default/xui/en/panel_im_control_panel.xml
+++ /dev/null
@@ -1,166 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel
- border="false"
- height="300"
- name="panel_im_control_panel"
- width="150">
-    <avatar_icon
-     follows="left|top"
-     height="105"
-     left_delta="20"
-     name="avatar_icon"
-     top="-5"
-     width="114"/>
-    <layout_stack
-     mouse_opaque="false"
-     border_size="0"
-     clip="false"
-     follows="all"
-     height="183"
-     layout="topleft"
-     left="5"
-     name="button_stack"
-     orientation="vertical"
-     top_pad="5"
-     width="145">
-        <layout_panel
-         auto_resize="false"
-         follows="top|left|right"
-         height="20"
-         layout="topleft"
-         left="2" 
-         min_height="20"
-         width="140"
-         name="view_profile_btn_panel"
-         top="0" >
-            <button
-             follows="left|top|right"
-             height="23"
-             label="Profile"
-             name="view_profile_btn"
-             top="0"
-             width="140" />
-        </layout_panel>
-        <layout_panel
-         auto_resize="false"
-         follows="top|left|right"
-         height="25"
-         layout="topleft"
-         min_height="25"
-         width="140"
-         name="add_friend_btn_panel">
-            <button
-             follows="left|top|right"
-             height="23"
-             label="Add Friend"
-             name="add_friend_btn"
-             top="5"
-             width="140" />
-        </layout_panel>
-        <layout_panel
-         auto_resize="false"
-         follows="top|left|right"
-         height="25"
-         layout="topleft"
-         min_height="25"
-         width="140"
-         name="teleport_btn_panel">
-        <button
-             auto_resize="false"
-             follows="left|top|right"
-             height="23"
-             label="Teleport"
-             name="teleport_btn"
-             tool_tip = "Offer to teleport this person"
-             width="140" />
-        </layout_panel>
-        <layout_panel
-         auto_resize="false"
-         follows="top|left|right"
-         height="25"
-         layout="topleft"
-         min_height="25"
-         width="140"
-         name="share_btn_panel">
-           <button
-             auto_resize="true"
-             follows="left|top|right"
-             height="23"
-             label="Share"
-             name="share_btn"
-             width="140" />
-        </layout_panel>
-        <layout_panel
-         auto_resize="false"
-         follows="top|left|right"
-         height="25"
-         layout="topleft"
-         min_height="25"
-         width="140"
-         name="pay_btn_panel">
-           <button
-             auto_resize="true"
-             follows="left|top|right"
-             height="23"
-             label="Pay"
-             name="pay_btn"
-             width="140" />
-        </layout_panel>
-        <layout_panel
-         auto_resize="false"
-         follows="top|left|right"
-         height="25"
-         layout="topleft"
-         min_height="25"
-         width="140"
-         name="call_btn_panel">
-            <button
-             follows="left|top|right"
-             height="23"
-             label="Call"
-             name="call_btn"
-             width="140" />
-        </layout_panel>
-        <layout_panel
-         auto_resize="false"
-         follows="top|left|right"
-         height="25"
-         layout="topleft"
-         min_height="25"
-         width="140"
-         name="end_call_btn_panel"
-         visible="false">
-            <button
-             follows="left|top|right"
-             height="23"
-             label="End Call"
-             name="end_call_btn"
-             width="140" />
-        </layout_panel>
-        <layout_panel
-         auto_resize="false"
-         follows="top|left|right"
-         height="25"
-         layout="topleft"
-         min_height="25"
-         width="140"
-         name="voice_ctrls_btn_panel"
-         visible="false">
-            <button
-             follows="left|top|right"
-             height="23"
-             label="Voice Controls"
-             name="voice_ctrls_btn"
-             width="140" />
-        </layout_panel>
-      <layout_panel
-       mouse_opaque="false"
-       auto_resize="true"
-       follows="top|left"
-       height="0"
-       layout="topleft"
-       min_height="0"
-       width="140"
-       name="spacer"/>
-    </layout_stack>
-</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_inbox_inventory.xml b/indra/newview/skins/default/xui/en/panel_inbox_inventory.xml
index 413e22e4449..433a3181cd3 100644
--- a/indra/newview/skins/default/xui/en/panel_inbox_inventory.xml
+++ b/indra/newview/skins/default/xui/en/panel_inbox_inventory.xml
@@ -2,7 +2,7 @@
 <inbox_inventory_panel
     accepts_drag_and_drop="false"
     name="inventory_inbox"
-    start_folder="Received Items"
+    start_folder.type="inbox"
     follows="all" layout="topleft"
     top="0" left="0" height="165" width="308"
     top_pad="0"
diff --git a/indra/newview/skins/default/xui/en/panel_landmarks.xml b/indra/newview/skins/default/xui/en/panel_landmarks.xml
index 2a5933e3e93..67a09949cea 100644
--- a/indra/newview/skins/default/xui/en/panel_landmarks.xml
+++ b/indra/newview/skins/default/xui/en/panel_landmarks.xml
@@ -35,7 +35,9 @@
              left="0"
              mouse_opaque="true"
              name="favorites_list"
-             start_folder="Favorites"
+             scroll.hide_scrollbar="true"
+             folder_view.use_ellipses="true"
+             start_folder.name="Favorites"
              width="307"/>
         </accordion_tab>
         <accordion_tab
@@ -51,7 +53,9 @@
              left="0"
              mouse_opaque="true"
              name="landmarks_list"
-             start_folder="Landmarks"
+             scroll.hide_scrollbar="true"
+             folder_view.use_ellipses="true"
+             start_folder.name="Landmarks"
              width="307"/>
         </accordion_tab>
         <accordion_tab
@@ -67,7 +71,9 @@
              left="0"
              mouse_opaque="true"
              name="my_inventory_list"
-             start_folder="My Inventory"
+             scroll.hide_scrollbar="true"
+             folder_view.use_ellipses="true"
+             start_folder.name="My Inventory"
              width="307"/>
           </accordion_tab>
           <accordion_tab
@@ -83,7 +89,9 @@
              left="0"
              mouse_opaque="true"
              name="library_list"
-             start_folder="LIBRARY"
+             scroll.hide_scrollbar="true"
+             folder_view.use_ellipses="true"
+             start_folder.name="LIBRARY"
              width="313"/>
         </accordion_tab>
     </accordion>
diff --git a/indra/newview/skins/default/xui/en/panel_nearby_chat.xml b/indra/newview/skins/default/xui/en/panel_nearby_chat.xml
index d683116eb8b..4de56b424e1 100644
--- a/indra/newview/skins/default/xui/en/panel_nearby_chat.xml
+++ b/indra/newview/skins/default/xui/en/panel_nearby_chat.xml
@@ -1,20 +1,22 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  follows="all"
- height="300"
+ top="0"
+ bottom_delta="10"
  help_topic="nearby_chat"
  layout="topleft"
  name="nearby_chat"
- width="320">
+ width="242"
+ height="169">
   <layout_stack
    follows="all"
-   height="295"
+   height="164"
    layout="topleft"
    left="0"
    name="stack"
    top="5"
    orientation="vertical"
-   width="320">
+   width="242">
     <layout_panel
      auto_resize="false"
      height="26"
@@ -23,7 +25,7 @@
      name="translate_chat_checkbox_lp"
      top_delta="0"
      visible="true"
-     width="313">
+     width="230">
       <check_box
        top="10"
        control_name="TranslateChat"
@@ -33,15 +35,15 @@
        layout="topleft"
        left="5"
        name="translate_chat_checkbox"
-       width="300" />
+       width="230" />
     </layout_panel>
     <layout_panel
      auto_resize="true"
-     height="277"
+     height="138"
      left_delta="0"
      layout="topleft"
      name="chat_history_lp"
-     width="318">
+     width="242">
       <chat_history
        bg_readonly_color="ChatHistoryBgColor"
        bg_writeable_color="ChatHistoryBgColor"
@@ -49,7 +51,7 @@
        layout="topleft"
        left="5"
        left_widget_pad="0"
-       height="272"
+       height="138"
        name="chat_history"
        parse_highlights="true"
        parse_urls="true"
@@ -57,7 +59,7 @@
        text_color="ChatHistoryTextColor"
        text_readonly_color="ChatHistoryTextColor"
        top="0"
-       width="313" />
+       width="237" />
     </layout_panel>
   </layout_stack>
 </panel>
diff --git a/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml
index 6bc9c48729d..19143cef898 100644
--- a/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml
@@ -5,7 +5,7 @@
  height="25"
  layout="topleft"
  left="0"
- name="chat_bar"
+ name="nearby_chat"
  top="21"
  width="308">
     <line_editor
diff --git a/indra/newview/skins/default/xui/en/panel_outbox_inventory.xml b/indra/newview/skins/default/xui/en/panel_outbox_inventory.xml
index a3d39e55af5..c80e5b168a4 100644
--- a/indra/newview/skins/default/xui/en/panel_outbox_inventory.xml
+++ b/indra/newview/skins/default/xui/en/panel_outbox_inventory.xml
@@ -1,7 +1,10 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<outbox_inventory_panel
+<inventory_panel
     name="inventory_outbox"
-    start_folder="Outbox"
+    start_folder.name="Outbox"
+    show_empty_message="false"
+    show_load_status="false"
+    start_folder.type="outbox"
     follows="all" layout="topleft"
     top="0" left="0" height="165" width="308"
     top_pad="0"
@@ -12,6 +15,18 @@
     bevel_style="none"
     show_item_link_overlays="true"
     tool_tip="Drag and drop items here to prepare them for sale on your storefront"
-    >
-    <scroll reserve_scroll_corner="false" />
-</outbox_inventory_panel>
+    scroll.reserve_scroll_corner="false">
+      <folder folder_arrow_image="Folder_Arrow"
+              folder_indentation="8"
+              item_height="20"
+              item_top_pad="4"
+              selection_image="Rounded_Square"
+              left_pad="5"
+              icon_pad="2"
+              icon_width="16"
+              text_pad="1"
+              text_pad_right="4"
+              arrow_size="12"
+              max_folder_item_overlap="2"/>
+      <item allow_open="false"/>
+</inventory_panel>
diff --git a/indra/newview/skins/default/xui/en/panel_people.xml b/indra/newview/skins/default/xui/en/panel_people.xml
index 98c7c49ff47..7ce2627be99 100644
--- a/indra/newview/skins/default/xui/en/panel_people.xml
+++ b/indra/newview/skins/default/xui/en/panel_people.xml
@@ -38,12 +38,6 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
      name="no_filtered_friends_msg">
          Didn't find what you're looking for? Try [secondlife:///app/search/people/[SEARCH_TERM] Search].
     </string>
-    <string
-     name="people_filter_label"
-     value="Filter People" />
-    <string
-     name="groups_filter_label"
-     value="Filter Groups" />
      <!--
      *WORKAROUND: for group_list.no_items_msg & group_list.no_filtered_items_msg attributes.
      They are not defined as translatable in VLT. See EXT-5931
@@ -60,21 +54,9 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
 	<string
 	 name="AltMiniMapToolTipMsg"
 	 value="[REGION](Double-click to teleport, shift-drag to pan)"/>
-	<filter_editor
-     follows="left|top|right"
-     height="23"
-     layout="topleft"
-     left="10"
-     label="Filter"
-     max_length_chars="300"
-     name="filter_input"
-     text_color="Black"
-     text_pad_left="10"
-     top="3"
-     width="303" />
     <tab_container
+     bottom="-10"
      follows="all"
-     height="383"
      layout="topleft"
      left="3"
      name="tabs"
@@ -82,31 +64,120 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
      tab_min_width="70"
      tab_height="30"
      tab_position="top"
-     top_pad="10"
+     top="0"
      halign="center"
-     width="319">
-     	<panel
+     right="-5">
+
+<!-- ================================= NEARBY tab =========================== -->
+
+        <panel
          background_opaque="true"
          background_visible="true"
          bg_alpha_color="DkGray"
          bg_opaque_color="DkGray"
+         bottom="-1"
          follows="all"
-         height="383"
          label="NEARBY"
          layout="topleft"
          left="0"
          help_topic="people_nearby_tab"
          name="nearby_panel"
-         top="0"
-         width="313">
+         right="-1"
+         top="0">
+            <panel
+             follows="left|top|right"
+             height="27"
+             label="bottom_panel"
+             layout="topleft"
+             left="0"
+             name="nearby_buttons_panel"
+             right="-1"
+             top="0">
+                <filter_editor
+                 follows="left|top|right"
+                 height="23"
+                 layout="topleft"
+                 left="6"
+                 label="Filter People"
+                 max_length_chars="300"
+                 name="nearby_filter_input"
+                 text_color="Black"
+                 text_pad_left="10"
+                 top="4"
+                 width="178" />
+                <button
+                 commit_callback.function="People.Gear"
+                 follows="right"
+                 height="25"
+                 image_hover_unselected="Toolbar_Middle_Over"
+                 image_overlay="OptionsMenu_Off"
+                 image_selected="Toolbar_Middle_Selected"
+                 image_unselected="Toolbar_Middle_Off"
+                 layout="topleft"
+                 left_pad="7"
+                 name="gear_btn"
+                 tool_tip="Actions on selected person"
+                 top="3"
+                 width="31" />
+                <menu_button
+                 follows="right"
+                 height="25"
+                 image_hover_unselected="Toolbar_Middle_Over"
+                 image_overlay="Conv_toolbar_sort"
+                 image_selected="Toolbar_Middle_Selected"
+                 image_unselected="Toolbar_Middle_Off"
+                 layout="topleft"
+                 left_pad="2"
+                 menu_filename="menu_people_nearby_view.xml"
+                 menu_position="bottomleft"
+                 name="nearby_view_btn"
+                 tool_tip="View/sort options"
+                 top_delta="0"
+                 width="31" />
+                <button
+                 follows="right"
+                 height="25"
+                 image_hover_unselected="Toolbar_Middle_Over"
+                 image_overlay="AddItem_Off"
+                 image_selected="Toolbar_Middle_Selected"
+                 image_unselected="Toolbar_Middle_Off"
+                 layout="topleft"
+                 left_pad="2"
+                 name="add_friend_btn"
+                 tool_tip="Offer friendship to a resident"
+                 top_delta="0"
+                 width="31">
+                    <commit_callback
+                     function="People.AddFriend" />
+                </button>
+                <dnd_button
+                 enabled="false"
+                 follows="right"
+                 height="25"
+                 image_hover_unselected="Toolbar_Middle_Over"
+                 image_overlay="TrashItem_Off"
+                 image_selected="Toolbar_Middle_Selected"
+                 image_unselected="Toolbar_Middle_Off"
+                 left_pad="2"
+                 layout="topleft"
+                 name="nearby_del_btn"
+                 tool_tip="Remove selected person as a friend"
+                 top_delta="0"
+                 width="31">
+                    <commit_callback
+                     function="People.DelFriend" />
+                 </dnd_button>
+            </panel>
          <layout_stack
            clip="false"
            follows="all"
-           height="355"
+           height="410"
            layout="topleft"
+           left="0"
            mouse_opaque="false"
            orientation="vertical"
-           width="313">
+           right="-1"
+           top_pad="0">
            <layout_panel
              height="142"
              layout="topleft"
@@ -123,16 +194,16 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
                left="3"
                mouse_opaque="false"
                name="Net Map"
-               top="4"
-               width="305"/>
+               right="-1"
+               top="4" />
            </layout_panel>
            <layout_panel
              height="213"
              layout="topleft"
              min_dim="100"
              mouse_opaque="false"
-             user_resize="true"
-             width="313">
+             right="-1"
+             user_resize="true">
              <avatar_list
                allow_select="true"
                follows="all"
@@ -143,84 +214,122 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
                keep_one_selected="false"
                multi_select="true"
                name="avatar_list"
-               top="2"
-               width="306" />
+               right="-1"
+               top="2" />
            </layout_panel>
          </layout_stack>
-         <panel
-             background_visible="true"
-             follows="left|right|bottom"
-             height="27"
-             label="bottom_panel"
-             layout="topleft"
-             left="3"
-             name="bottom_panel"
-             top_pad="0"
-             width="313">
-             <menu_button
-             follows="bottom|left"
-             height="25"
-             image_hover_unselected="Toolbar_Left_Over"
-             image_overlay="OptionsMenu_Off"
-             image_selected="Toolbar_Left_Selected"
-             image_unselected="Toolbar_Left_Off"
-             layout="topleft"
-             left="0"
-             name="nearby_view_sort_btn"
-             tool_tip="Options"
-             top="1"
-             width="31" />
-             <button
-                 follows="bottom|left"
-                 height="25"
-                 image_hover_unselected="Toolbar_Middle_Over"
-             	 image_overlay="AddItem_Off"
-                 image_selected="Toolbar_Middle_Selected"
-             	 image_unselected="Toolbar_Middle_Off"
-                 layout="topleft"
-                 left_pad="1"
-                 name="add_friend_btn"
-                 tool_tip="Add selected Resident to your friends List"
-                 width="31">
-               <commit_callback
-                  function="People.addFriend" />
-             </button>
-             <icon
-             follows="bottom|left|right"
-             height="25"
-             image_name="Toolbar_Right_Off"
-             layout="topleft"
-             left_pad="1"
-             name="dummy_icon"
-             width="243"
-             />
-            </panel>
         </panel>
+
+<!-- ================================= FRIENDS tab ========================== -->
+
         <panel
          background_opaque="true"
        background_visible="true"
          bg_alpha_color="DkGray"
          bg_opaque_color="DkGray"
+         bottom="-1"
          follows="all"
-         height="383"
-         label="MY FRIENDS"
+         label="FRIENDS"
          layout="topleft"
          left="0"
          help_topic="people_friends_tab"
          name="friends_panel"
-         top="0"
-         width="313">
+         right="-1"
+         top="0">
+            <panel
+             follows="left|top|right"
+             height="27"
+             label="bottom_panel"
+             layout="topleft"
+             left="0"
+             name="friends_buttons_panel"
+             right="-1"
+             top="0">
+                <filter_editor
+                 follows="left|top|right"
+                 height="23"
+                 layout="topleft"
+                 left="6"
+                 label="Filter People"
+                 max_length_chars="300"
+                 name="friends_filter_input"
+                 text_color="Black"
+                 text_pad_left="10"
+                 top="4"
+                 width="177" />
+                <button
+                 commit_callback.function="People.Gear"
+                 follows="right"
+                 height="25"
+                 image_hover_unselected="Toolbar_Middle_Over"
+                 image_overlay="OptionsMenu_Off"
+                 image_selected="Toolbar_Middle_Selected"
+                 image_unselected="Toolbar_Middle_Off"
+                 layout="topleft"
+                 left_pad="8"
+                 name="gear_btn"
+                 tool_tip="Actions on selected person"
+                 top="3"
+                 width="31" />
+                <menu_button
+                 follows="right"
+                 height="25"
+                 image_hover_unselected="Toolbar_Middle_Over"
+                 image_overlay="Conv_toolbar_sort"
+                 image_selected="Toolbar_Middle_Selected"
+                 image_unselected="Toolbar_Middle_Off"
+                 layout="topleft"
+                 left_pad="2"
+                 menu_filename="menu_people_friends_view.xml"
+                 menu_position="bottomleft"
+                 name="friends_view_btn"
+                 tool_tip="View/sort options"
+                 top_delta="0"
+                 width="31" />
+                <button
+                 follows="right"
+                 height="25"
+                 image_hover_unselected="Toolbar_Middle_Over"
+                 image_overlay="AddItem_Off"
+                 image_selected="Toolbar_Middle_Selected"
+                 image_unselected="Toolbar_Middle_Off"
+                 layout="topleft"
+                 left_pad="2"
+                 name="friends_add_btn"
+                 tool_tip="Offer friendship to a resident"
+                 top_delta="0"
+                 width="31">
+                    <commit_callback
+                     function="People.AddFriendWizard" />
+                </button>
+                <dnd_button
+                 follows="right"
+                 height="25"
+                 image_hover_unselected="Toolbar_Middle_Over"
+                 image_overlay="TrashItem_Off"
+                 image_selected="Toolbar_Middle_Selected"
+                 image_unselected="Toolbar_Middle_Off"
+                 left_pad="2"
+                 layout="topleft"
+                 name="friends_del_btn"
+                 tool_tip="Remove selected person as a friend"
+                 top_delta="0"
+                 width="31">
+                    <commit_callback
+                     function="People.DelFriend" />
+                </dnd_button>
+            </panel>
             <accordion
        		 background_visible="true"
        		 bg_alpha_color="DkGray2"
        		 bg_opaque_color="DkGray2"
              follows="all"
-             height="356"
+             height="408"
              layout="topleft"
              left="3"
              name="friends_accordion"
-             top="0"
-             width="307">
+             right="-2"
+             top_pad="2">
                 <accordion_tab
                  layout="topleft"
                  height="172"
@@ -257,247 +366,133 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
                          width="307" />
                 </accordion_tab>
             </accordion>
-            <panel
-             background_visible="true"
-             follows="left|right|bottom"
-             height="27"
-             label="bottom_panel"
-             layout="topleft"
-             left="3"
-             name="bottom_panel"
-             top_pad="0"
-             width="313">
-             
-             	  <layout_stack
-				   animate="false"
-				   border_size="0"
-				   follows="left|right|bottom"
-				   height="25"
-				   layout="topleft"
-				   orientation="horizontal"
-				   top_pad="1"
-				   left="0"
-				   name="bottom_panel"
-				   width="308">
-				      <layout_panel
-				       auto_resize="false"
-				       height="25"
-				       layout="topleft"
-				       name="options_gear_btn_panel"
-				       width="32">
-				          <menu_button
-				           follows="bottom|left"
-				           tool_tip="Show additional options"
-				           height="25"
-				           image_hover_unselected="Toolbar_Left_Over"
-				           image_overlay="OptionsMenu_Off"
-				           image_selected="Toolbar_Left_Selected"
-				           image_unselected="Toolbar_Left_Off"
-				           layout="topleft"
-				           left="0"
-				           name="friends_viewsort_btn"
-				           top="0"
-				           width="31" />
-				      </layout_panel>
-				      <layout_panel
-				       auto_resize="false"
-				       height="25"
-				       layout="topleft"
-				       name="add_btn_panel"
-				       width="32">
-				          <button
-				           follows="bottom|left"
-				           height="25"
-				           image_hover_unselected="Toolbar_Middle_Over"
-				           image_overlay="AddItem_Off"
-				           image_selected="Toolbar_Middle_Selected"
-				           image_unselected="Toolbar_Middle_Off"
-				           layout="topleft"
-				           left="0"
-				           name="add_btn"
-				           tool_tip="Offer friendship to a Resident"
-				           top="0"
-				           width="31" />
-				      </layout_panel>
-				      <layout_panel
-				       auto_resize="true"
-				       height="25"
-				       layout="topleft"
-				       name="dummy_panel"
-				       width="210">
-				          <icon
-				           follows="bottom|left|right"
-				           height="25"
-				           image_name="Toolbar_Middle_Off"
-				           layout="topleft"
-				           left="0"
-				           top="0"
-				           name="dummy_icon"
-				           width="210" />
-				      </layout_panel>
-				      <layout_panel
-				       auto_resize="false"
-				       height="25"
-				       layout="topleft"
-				       name="trash_btn_panel"
-				       width="31">
-				          <dnd_button
-				           follows="bottom|left"
-				           height="25"
-				           image_hover_unselected="Toolbar_Right_Over"
-				           image_overlay="TrashItem_Off"
-				           image_selected="Toolbar_Right_Selected"
-				           image_unselected="Toolbar_Right_Off"
-				           left="0"
-				           layout="topleft"
-				           name="del_btn"
-				           tool_tip="Remove selected person from your Friends list"
-				           top="0"
-				           width="31"/>
-				      </layout_panel>
-				  </layout_stack><!--
-             
-               <button
-               follows="bottom|left"
-               tool_tip="Options"
-               height="25"
-               image_hover_unselected="Toolbar_Left_Over"
-               image_overlay="OptionsMenu_Off"
-               image_selected="Toolbar_Left_Selected"
-               image_unselected="Toolbar_Left_Off"
-               layout="topleft"
-               left="0"
-               name="friends_viewsort_btn"
-               top="1"
-               width="31" />
-                <button
-                 follows="bottom|left"
-                 height="25"
-                 image_hover_unselected="Toolbar_Middle_Over"
-             	 image_overlay="AddItem_Off"
-             	 image_selected="Toolbar_Middle_Selected"
-             	 image_unselected="Toolbar_Middle_Off"
-                 layout="topleft"
-                 left_pad="1"
-                 name="add_btn"
-                 tool_tip="Offer friendship to a Resident"
-                 width="31" />
-                <icon
-             	 follows="bottom|left|right"
-             	 height="25"
-             	 image_name="Toolbar_Middle_Off"
-             	 layout="topleft"
-             	 left_pad="1"
-             	 name="dummy_icon"
-             	 width="209"
-             />
-                <button
-                 follows="bottom|left"
-                 height="25"
-                 image_hover_unselected="Toolbar_Right_Over"
-                 image_overlay="TrashItem_Off"
-                 image_selected="Toolbar_Right_Selected"
-                 image_unselected="Toolbar_Right_Off"
-                 layout="topleft"
-                 left_pad="1"
-                 name="del_btn"
-                 tool_tip="Remove selected person from your Friends list"
-                 width="31" />
-            --></panel>
             <text
              follows="all"
              height="450"
              left="13"
              name="no_friends_help_text"
-             top="10"
-             width="293"
+             right="-13"
+             top="37"
              wrap="true" />
         </panel>
+
+<!-- ================================= GROUPS tab =========================== -->
+
         <panel
          background_opaque="true"
        background_visible="true"
          bg_alpha_color="DkGray"
          bg_opaque_color="DkGray"
+         bottom="-1"
          follows="all"
-         height="383"
-         label="MY GROUPS"
+         label="GROUPS"
          layout="topleft"
          left="0"
          help_topic="people_groups_tab"
          name="groups_panel"
-         top="0"
-         width="313">
+         right="-1"
+         top="0">
     <!--
      *NOTE: no_groups_msg & group_list attributes are not defined as translatable in VLT. See EXT-5931
      Values are set from appropriate strings at the top of file via LLPeoplePanel::postBuild()
     -->
-            <group_list
-             allow_select="true" 
-             follows="all"
-             height="356"
-             layout="topleft"
-             left="3"
-             name="group_list"
-             top="0"
-             width="307" />
             <panel
-             background_visible="true"
-             follows="left|right|bottom"
+             follows="left|top|right"
              height="27"
              label="bottom_panel"
              layout="topleft"
              left="0"
-             name="bottom_panel"
-             top_pad="0"
-             width="313">
-               <menu_button
-               follows="bottom|left"
-               tool_tip="Options"
-               height="25"
-               image_hover_unselected="Toolbar_Left_Over"
-               image_overlay="OptionsMenu_Off"
-               image_selected="Toolbar_Left_Selected"
-               image_unselected="Toolbar_Left_Off"
-               layout="topleft"
-               left="3"
-               name="groups_viewsort_btn"
-               top="1"
-               width="31" />
-                <button
-                 follows="bottom|left"
+             name="groups_buttons_panel"
+             right="-1"
+             top="0">
+                <filter_editor
+                 follows="left|top|right"
+                 height="23"
+                 layout="topleft"
+                 left="6"
+                 label="Filter Groups"
+                 max_length_chars="300"
+                 name="groups_filter_input"
+                 text_color="Black"
+                 text_pad_left="10"
+                 top="4"
+                 width="177" />
+                <menu_button
+                 follows="right"
+                 height="25"
+                 image_hover_unselected="Toolbar_Middle_Over"
+                 image_overlay="OptionsMenu_Off"
+                 image_selected="Toolbar_Middle_Selected"
+                 image_unselected="Toolbar_Middle_Off"
+                 layout="topleft"
+                 left_pad="8"
+                 name="groups_gear_btn"
+                 tool_tip="Actions on selected group"
+                 top="3"
+                 width="31" />
+                <menu_button
+                 follows="right"
+                 height="25"
+                 image_hover_unselected="Toolbar_Middle_Over"
+                 image_overlay="Conv_toolbar_sort"
+                 image_selected="Toolbar_Middle_Selected"
+                 image_unselected="Toolbar_Middle_Off"
+                 layout="topleft"
+                 left_pad="2"
+                 menu_filename="menu_people_groups_view.xml"
+                 menu_position="bottomleft"
+                 name="groups_view_btn"
+                 tool_tip="View/sort options"
+                 top_delta="0"
+                 width="31" />
+                <menu_button
+                 follows="right"
                  height="25"
                  image_hover_unselected="Toolbar_Middle_Over"
                  image_overlay="AddItem_Off"
                  image_selected="Toolbar_Middle_Selected"
                  image_unselected="Toolbar_Middle_Off"
                  layout="topleft"
-                 left_pad="1"
+                 left_pad="2"
+                 menu_filename="menu_group_plus.xml"
+                 menu_position="bottomleft"
                  name="plus_btn"
                  tool_tip="Join group/Create new group"
-                 width="31" />
-                <button
-                 follows="bottom|left"
+                 top_delta="0"
+                 width="31">
+                    <validate_callback
+                     function="People.Group.Plus.Validate" />
+                </menu_button>
+                <dnd_button
+                 follows="right"
                  height="25"
                  image_hover_unselected="Toolbar_Middle_Over"
-                 image_overlay="Activate_Checkmark"
+                 image_overlay="TrashItem_Off"
                  image_selected="Toolbar_Middle_Selected"
                  image_unselected="Toolbar_Middle_Off"
+                 left_pad="2"
                  layout="topleft"
-                 left_pad="1"
-                 name="activate_btn"
-                 tool_tip="Activate selected group"
-                 width="31" />
-                 <icon
-             	 follows="bottom|left|right"
-             	 height="25"
-             	 image_name="Toolbar_Right_Off"
-             	 layout="topleft"
-             	 left_pad="1"
-             	 name="dummy_icon"
-             	 width="212"
-             />
+                 name="minus_btn"
+                 tool_tip="Leave selected group"
+                 top_delta="0"
+                 width="31">
+                    <commit_callback
+                     function="People.Group.Minus" />
+                </dnd_button>
             </panel>
+            <group_list
+             allow_select="true" 
+             follows="all"
+             height="406"
+             layout="topleft"
+             left="3"
+             name="group_list"
+             right="-2"
+             top_pad="4" />
         </panel>
+
+<!-- ================================= RECENT tab =========================== -->
+
         <panel
          background_opaque="true"
        background_visible="true"
@@ -510,265 +505,133 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
          left="0"
          help_topic="people_recent_tab"
          name="recent_panel"
-         top="0"
-         width="313">
-            <avatar_list
-             allow_select="true"
-             follows="all"
-             height="356"
-             layout="topleft"
-             left="3"
-             multi_select="true"
-             name="avatar_list"
-             show_last_interaction_time="true"
-             top="0"
-             width="307" />
+         right="-1"
+         top="0">
             <panel
-             background_visible="true"
-             follows="left|right|bottom"
+             follows="left|top|right"
              height="27"
              label="bottom_panel"
              layout="topleft"
-             left="3"
-             name="bottom_panel"
-             top_pad="0"
-             width="313">
-               <menu_button
-               follows="bottom|left"
-               tool_tip="Options"
-               height="25"
-               image_hover_unselected="Toolbar_Left_Over"
-               image_overlay="OptionsMenu_Off"
-               image_selected="Toolbar_Left_Selected"
-               image_unselected="Toolbar_Left_Off"
-               layout="topleft"
-               name="recent_viewsort_btn"
-               top="1"
-               width="31" />
-              <button
-                 follows="bottom|left"
+             left="0"
+             name="recent_buttons_panel"
+             right="-1"
+             top="0">
+                <filter_editor
+                 follows="left|top|right"
+                 height="23"
+                 layout="topleft"
+                 left="6"
+                 label="Filter People"
+                 max_length_chars="300"
+                 name="recent_filter_input"
+                 text_color="Black"
+                 text_pad_left="10"
+                 top="4"
+                 width="177" />
+                <button
+                 commit_callback.function="People.Gear"
+                 follows="right"
+                 height="25"
+                 image_hover_unselected="Toolbar_Middle_Over"
+                 image_overlay="OptionsMenu_Off"
+                 image_selected="Toolbar_Middle_Selected"
+                 image_unselected="Toolbar_Middle_Off"
+                 layout="topleft"
+                 left_pad="8"
+                 name="gear_btn"
+                 tool_tip="Actions on selected person"
+                 top="3"
+                 width="31" />
+                <menu_button
+                 follows="right"
+                 height="25"
+                 image_hover_unselected="Toolbar_Middle_Over"
+                 image_overlay="Conv_toolbar_sort"
+                 image_selected="Toolbar_Middle_Selected"
+                 image_unselected="Toolbar_Middle_Off"
+                 layout="topleft"
+                 left_pad="2"
+                 menu_filename="menu_people_recent_view.xml"
+                 menu_position="bottomleft"
+                 name="recent_view_btn"
+                 tool_tip="View/sort options"
+                 top_delta="0"
+                 width="31" />
+                <button
+                 follows="right"
                  height="25"
                  image_hover_unselected="Toolbar_Middle_Over"
                  image_overlay="AddItem_Off"
                  image_selected="Toolbar_Middle_Selected"
                  image_unselected="Toolbar_Middle_Off"
                  layout="topleft"
-                 left_pad="1"
+                 left_pad="2"
                  name="add_friend_btn"
-                 tool_tip="Add selected Resident to your friends List"
+                 tool_tip="Offer friendship to a resident"
+                 top_delta="0"
                  width="31">
-                <commit_callback
-                   function="People.addFriend" />
-              </button>
-              <icon
-             	 follows="bottom|left|right"
-             	 height="25"
-             	 image_name="Toolbar_Right_Off"
-             	 layout="topleft"
-             	 left_pad="1"
-             	 name="dummy_icon"
-             	 width="244"
-             />
+                    <commit_callback
+                     function="People.AddFriend" />
+                </button>
+                <dnd_button
+                 enabled="false"
+                 follows="right"
+                 height="25"
+                 image_hover_unselected="Toolbar_Middle_Over"
+                 image_overlay="TrashItem_Off"
+                 image_selected="Toolbar_Middle_Selected"
+                 image_unselected="Toolbar_Middle_Off"
+                 left_pad="2"
+                 layout="topleft"
+                 name="recent_del_btn"
+                 tool_tip="Remove selected person as a friend"
+                 top_delta="0"
+                 width="31">
+                    <commit_callback
+                     function="People.DelFriend" />
+                 </dnd_button>
             </panel>
+            <avatar_list
+             allow_select="true"
+             follows="all"
+             height="351"
+             layout="topleft"
+             left="3"
+             multi_select="true"
+             name="avatar_list"
+             show_last_interaction_time="true"
+             right="-2"
+             top_pad="4" />
         </panel>
-    </tab_container>
-    <panel
-     follows="bottom|left|right"
-     height="23"
-     layout="topleft"
-     left="8"
-     top_pad="4"
-     name="button_bar"
-     width="313">
 
-<!--********************************Profile; IM; Call, Share, Teleport********************************--> 	
-     	<layout_stack
-     	follows="bottom|left|right"
-		height="23"
-		layout="topleft"
-		name="bottom_bar_ls"
-		left="0"
-		orientation="horizontal"
-		top_pad="0"
-		width="313">
+<!-- ================================= BLOCKED tab ========================== -->
 
-			<layout_panel
-			follows="bottom|left|right"
-			height="23"
-			layout="bottomleft"
-			left="0"
-			name="view_profile_btn_lp"
-		    auto_resize="true"
-			width="68">
-				<button
-		         follows="bottom|left|right"
-		         height="23"
-		         label="Profile"
-		         layout="topleft"
-		         left="1"
-		         name="view_profile_btn"
-		         tool_tip="Show picture, groups, and other Residents information"
-		         top="0"
-		         width="67" />	
-			</layout_panel>
-			
-			<layout_panel
-			follows="bottom|left|right"
-			height="23"
-			layout="bottomleft"
-			left_pad="3"
-			name="im_btn_lp"
-		    auto_resize="true"
-			width="41">
-				<button
-		         follows="bottom|left|right"
-		         left="1"
-		         height="23"
-		         label="IM"
-		         layout="topleft"
-		         name="im_btn"
-		         tool_tip="Open instant message session"
-		         top="0"
-		         width="40" />			
-			</layout_panel>
-			
-			<layout_panel
-			follows="bottom|left|right"
-			height="23"
-			layout="bottomleft"
-			left_pad="3"
-			name="call_btn_lp"
-		    auto_resize="true"
-			width="52">
-				<button
-		         follows="bottom|left|right"
-		         left="1"
-		         height="23"
-		         label="Call"
-		         layout="topleft"
-		         name="call_btn"
-		         tool_tip="Call this Resident"
-		         top="0"
-		         width="51" />		
-			</layout_panel>
-			
-			<layout_panel
-			follows="bottom|left|right"
-			height="23"
-			layout="bottomleft"
-			left_pad="3"
-			name="share_btn_lp"
-		    auto_resize="true"
-			width="66">
-				<button
-		         follows="bottom|left|right"
-		         left="1"
-		         height="23"
-		         label="Share"
-		         layout="topleft"
-		         name="share_btn"
-		         tool_tip="Share an inventory item"
-		         top="0"
-		         width="65" />	
-			</layout_panel>
-			
-			<layout_panel
-			follows="bottom|left|right"
-			height="23"
-			layout="bottomleft"
-			left_pad="3"
-			name="teleport_btn_lp"
-		    auto_resize="true"
-			width="77">
-				<button
-		         follows="bottom|left|right"
-		         left="1"
-		         height="23"
-		         label="Teleport"
-		         layout="topleft"
-		         name="teleport_btn"
-		         tool_tip="Offer teleport"
-		         top="0"
-		         width="76" />		
-			</layout_panel>
-		</layout_stack>
-		
-<!--********************************Group Profile; Group Chat; Group Call buttons************************-->			
-		<layout_stack
-     	follows="bottom|left|right"
-		height="23"
-		layout="topleft"
-		mouse_opaque="false"
-		name="bottom_bar_ls1"
-		left="0"
-		orientation="horizontal"
-		top="0"
-		width="313">	
-			<layout_panel
-			follows="bottom|left|right"
-			height="23"
-			layout="bottomleft"
-			left="0"			
-			mouse_opaque="false"
-			name="group_info_btn_lp"
-		    auto_resize="true"
-			width="108">
-				<button
-		        follows="bottom|left|right"
-		        left="1"
-		        height="23"
-		        label="Group Profile"
-		        layout="topleft"
-				mouse_opaque="false"
-		        name="group_info_btn"
-		        tool_tip="Show group information"
-		        top="0"
-		        width="107" />		
-			</layout_panel>
-			
-			<layout_panel
-			follows="bottom|left|right"
-			height="23"
-			layout="bottomleft"
-			left_pad="3"
-			mouse_opaque="false"
-			name="chat_btn_lp"
-		    auto_resize="true"
-			width="101">
-				<button
-		        follows="bottom|left|right"
-		        left="1"
-		        height="23"
-		        label="Group Chat"
-		        layout="topleft"
-				mouse_opaque="false"
-		        name="chat_btn"
-		        tool_tip="Open chat session"
-		        top="0"
-		        width="100" />			
-			</layout_panel>
-		
-			<layout_panel
-			follows="bottom|left|right"
-			height="23"
-			layout="bottomleft"
-			left_pad="3"
-			mouse_opaque="false"
-			name="group_call_btn_lp"
-		    auto_resize="true"
-			width="96">
-				<button
-				follows="bottom|left|right"
-				left="1"
-				height="23"
-         		label="Group Call"
-         		layout="topleft"
-				mouse_opaque="false"
-         		name="group_call_btn"
-         		tool_tip="Call this group"
-		        top="0"
-         		width="95" />			
-			</layout_panel>		
-		</layout_stack>
-    </panel>
+        <panel
+         background_opaque="true"
+         background_visible="true"
+         bg_alpha_color="DkGray"
+         bg_opaque_color="DkGray"
+         follows="all"
+         height="383"
+         label="BLOCKED"
+         layout="topleft"
+         left="0"
+         help_topic="people_blocked_tab"
+         name="blocked_panel"
+         right="-1"
+         top="0">
+          <panel
+           class="panel_block_list_sidetray"
+           height="383"
+           name="panel_block_list_sidetray"
+           filename="panel_block_list_sidetray.xml"
+           follows="all"
+           label="Blocked Residents &amp; Objects"
+           layout="topleft"
+           left="0"
+           font="SansSerifBold"
+           top="0"
+           right="-1" />
+        </panel>
+    </tab_container>
 </panel>
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_chat.xml b/indra/newview/skins/default/xui/en/panel_preferences_chat.xml
index 27193a984f0..bd096ebb885 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_chat.xml
@@ -1,242 +1,493 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <panel
- border="true"
- follows="left|top|right|bottom"
- height="408"
- label="Text Chat"
- layout="topleft"
- left="102"
- name="chat"
- top="1"
- width="517">
-  <text
-   follows="left|top"
-   layout="topleft"
-   left="30"
-   height="12"
-   name="font_size"
-   width="120"
-   top="10">
-    Font size:
-  </text>
-  <radio_group
-     height="30"
-     layout="topleft"
-     left="40"
-	 control_name="ChatFontSize"
-     name="chat_font_size"
-     top_pad="0"
-     width="440">
-        <radio_item
-         height="16"
-         label="Small"
-         layout="topleft"
-         left="0"
-         name="radio"
-         value="0"
-         top="10"
-         width="125" />
-        <radio_item
-         height="16"
-         label="Medium"
-         layout="topleft"
-         left_delta="145"
-         name="radio2"
-         value="1"
-         top_delta="0"
-         width="125" />
-        <radio_item
-         height="16"
-         label="Large"
-         layout="topleft"
-         left_delta="170"
-         name="radio3"
-         value="2"
-         top_delta="0"
-         width="125" />
-    </radio_group>
-    
+    border="true"
+    has_border="true"
+    height="408"
+    label="Text Chat"
+    layout="topleft"
+    left="102"
+    name="chat"
+    top="1"
+    width="517">
+
+  <panel
+      border="false"
+      height="60"
+      layout="topleft"
+      top="10"
+      left="13"
+      width="517">
+
     <check_box
-     control_name="PlayTypingAnim"
-     height="16"
-     initial_value="true"
-     label="Play typing animation when chatting"
-     layout="topleft"
-     left="30"
-     name="play_typing_animation"
-     top_pad="10"
-     width="400" />
+        control_name="PlayTypingAnim"
+        height="16"
+        initial_value="true"
+        label="Play typing animation when chatting"
+        layout="topleft"
+        top="0"
+        name="play_typing_animation"
+        width="330">
+    </check_box>
+
     <check_box
-     enabled="false"
-     height="16"
-     label="Email me IMs when I'm offline"
-     layout="topleft"
-     left_delta="0"
-     name="send_im_to_email"
-     top_pad="5"
-     width="400" />
+        enabled="false"
+        height="16"
+        label="Email me IMs when I'm offline"
+        layout="topleft"
+        name="send_im_to_email"
+        top_pad="6"
+        width="330">
+    </check_box>
+
     <check_box
-     enabled="false"
-     height="16"
-     label="Enable plain text IM and chat history"
-     layout="topleft"
-     left_delta="0"
-     name="plain_text_chat_history"
-     top_pad="5"
-     width="400" />
+        control_name="VoiceCallsFriendsOnly"
+        height="16"
+        label="Only friends and groups can call or IM me"
+        layout="topleft"
+        name="voice_call_friends_only_check"
+        top_pad="6"
+        width="350">     
+    </check_box>
+
+    <text
+        layout="topleft"
+        left="345"
+        height="12"
+        name="font_size"
+        width="120"
+        top="0">
+      Font size:
+    </text>
+
+    <combo_box
+        control_name="ChatFontSize"
+        height="23"
+        layout="topleft"
+        left="341"
+        name="chat_font_size"
+        top_pad="5"
+        width="100">
+      <item
+          label="Small"
+          name="Small"
+          value="0"/>
+      <item
+          label="Medium"
+          name="Medium"
+          value="1"/>
+      <item
+          label="Large"
+          name="Large"
+          value="2"/>  
+    </combo_box>
+
     <check_box
-     control_name="UseChatBubbles"
-     follows="left|top"
-     height="16"
-     label="Bubble Chat"
-     layout="topleft"
-     left_delta="0"
-     top_pad="5"
-     name="bubble_text_chat"
-     width="150" />     
+        control_name="UseChatBubbles"
+        height="16"
+        label="Bubble Chat"
+        layout="topleft"
+        top_pad="4"
+        name="bubble_text_chat"
+        width="330">
+    </check_box>
+      
+  </panel>
+
+  <panel
+      border="false"
+      height="165"
+      layout="topleft"
+      left="13"
+      width="517">
+
     <text
-     name="show_ims_in_label"
-     follows="left|top"
-     layout="topleft"
-     left="30"
-     height="20"
-     width="170"
-     top_pad="15">
-     Show IMs in:
+        layout="topleft"
+        height="12"
+        name="notifications"
+        left="0"
+        width="120">
+      Notifications
     </text>
     <text
-     name="requires_restart_label"
-     follows="left|top"
-     layout="topleft"
-     top_delta="0" 
-     left="170" 
-  	 height="20"
-	 width="130"
-     text_color="White_25">
-      (requires restart)
-      </text>
-    <radio_group
-     follows="left|top"
-     height="30"
-     left="40"
-     control_name="ChatWindow"
-     name="chat_window"
-     top_pad="0"
-     tool_tip="Show your Instant Messages in separate floaters, or in one floater with many tabs (Requires restart)"
-     width="150">
-     <radio_item
-      height="16"
-      label="Separate Windows"
-      layout="topleft"
-      left="0"
-      name="radio"
-      value="0"
-      top="0"
-      width="150" />
-     <radio_item
-      height="16"
-      label="Tabs"
+        layout="topleft"
+        height="12"
+        name="friend_ims"
+        width="145"
+        left="0"
+        top_pad="13">
+      Friend IMs:
+    </text>
+    <combo_box
+        control_name="NotificationFriendIMOptions"
+        height="23"
+        layout="topleft"
+        left_pad="5"
+        top_delta="-6"
+        name="FriendIMOptions"
+        width="223">
+      <item
+          label="Open Conversations window"
+          name="OpenConversationsWindow"
+          value="openconversations"/>      
+      <item
+          label="Pop up the message"
+          name="PopUpMessage"
+          value="toast"/>
+      <item
+          label="Flash toolbar button"
+          name="FlashToolbarButton"
+          value="flash"/>
+      <item
+          label="None"
+          name="None"
+          value="none"/>
+    </combo_box>
+    <text
+        layout="topleft"
+        height="12"
+        name="non_friend_ims"
+        width="145"
+        left="0"
+        top_pad="9">
+      Non-friend IMs:
+    </text>
+    <combo_box
+        control_name="NotificationNonFriendIMOptions"
+        height="23"
+        layout="topleft"
+        left_pad="5"
+        top_delta="-6"
+        name="NonFriendIMOptions"
+        width="223">
+      <item
+          label="Open Conversations window"
+          name="OpenConversationsWindow"
+          value="openconversations"/>
+      <item
+          label="Pop up the message"
+          name="PopUpMessage"
+          value="toast"/>
+      <item
+          label="Flash toolbar button"
+          name="FlashToolbarButton"
+          value="flash"/>
+      <item
+          label="None"
+          name="None"
+          value="none"/>
+    </combo_box>
+    <text
+        layout="topleft"
+        left="0"
+        height="13"
+        name="conference_ims"
+        width="145"
+        top_pad="9">
+      Conference IMs:
+    </text>
+    <combo_box
+        control_name="NotificationConferenceIMOptions"
+        height="23"
+        layout="topleft"
+        left_pad="5"
+        top_delta="-6"
+        name="ConferenceIMOptions"
+        width="223">
+      <item
+          label="Open Conversations window"
+          name="OpenConversationsWindow"
+          value="openconversations"/>
+      <item
+          label="Pop up the message"
+          name="PopUpMessage"
+          value="toast"/>
+      <item
+          label="Flash toolbar button"
+          name="FlashToolbarButton"
+          value="flash"/>
+      <item
+          label="None"
+          name="None"
+          value="none"/>
+    </combo_box>
+    <text
+        layout="topleft"
+        left="0"
+        height="13"
+        name="group_chat"
+        width="145"
+        top_pad="9">
+      Group chat:
+    </text>
+    <combo_box
+        control_name="NotificationGroupChatOptions"
+        height="23"
+        layout="topleft"
+        left_pad="5"
+        top_delta="-6"
+        name="GroupChatOptions"
+        width="223">
+      <item
+          label="Open Conversations window"
+          name="OpenConversationsWindow"
+          value="openconversations"/>
+      <item
+          label="Pop up the message"
+          name="PopUpMessage"
+          value="toast"/>
+      <item
+          label="Flash toolbar button"
+          name="FlashToolbarButton"
+          value="flash"/>
+      <item
+          label="None"
+          name="None"
+          value="none"/>
+    </combo_box>
+    <text
+        layout="topleft"
+        left="0"
+        height="12"
+        name="nearby_chat"
+        width="145"
+        top_pad="9">
+      Nearby chat:
+    </text>
+    <combo_box
+        control_name="NotificationNearbyChatOptions"
+        height="23"
+        layout="topleft"
+        left_pad="5"
+        top_delta="-6"
+        name="NearbyChatOptions"
+        width="223">
+      <item
+          label="Open Conversations window"
+          name="OpenConversationsWindow"
+          value="openconversations"/>
+      <item
+          label="Pop up the message"
+          name="PopUpMessage"
+          value="toast"/>
+      <item
+          label="Flash toolbar button"
+          name="FlashToolBarButton"
+          value="flash"/>
+      <item
+          label="None"
+          name="None"
+          value="none"/>
+    </combo_box>
+    <text
+        layout="topleft"
+        left="0"
+        height="13"
+        name="notifications_alert"
+        width="500"
+        top_pad="9"
+        visible="true"
+        text_color="DrYellow">
+      To temporarily stop all notifications, use Communicate &gt; Do Not Disturb.
+    </text>
+
+  </panel>
+
+  <panel
+      border="false"
+      height="50"
       layout="topleft"
-      left_delta="0"
-      name="radio2"
-      value="1"
-      top_pad="5"
-      width="150" />
-    </radio_group>
+      left="13"
+      top_pad="10"
+      width="517">
+
     <text
-     name="disable_toast_label"
-     follows="left|top"
-     layout="topleft"
-     top_pad="20" 
-     left="30" 
-     height="10"
-     width="400">
-      Enable incoming chat popups:
-      </text>
+        layout="topleft"
+        left="0"
+        name="play_sound"
+        width="100"
+        top_pad="8"
+        visible="true">
+      Play sound:
+    </text>
+    <check_box
+        control_name="PlaySoundNewConversation"
+        height="16"
+        label="New conversation"
+        layout="topleft"
+        left_pad="15"
+        top_pad="-10"
+        name="new_conversation"
+        width="150" />
     <check_box
-     control_name="EnableGroupChatPopups"
-     name="EnableGroupChatPopups"
-     label="Group Chats" 
-     layout="topleft"
-     top_pad="5" 
-     left_delta="10" 
-     height="20"
-     tool_tip="Check to see popups when a Group Chat message arrives"
-     width="400" />
+        control_name="PlaySoundIncomingVoiceCall"
+        height="16"
+        label="Incoming voice call"
+        layout="topleft"
+        top_pad="6"
+        name="incoming_voice_call"
+        width="150" />
     <check_box
-     control_name="EnableIMChatPopups"
-     name="EnableIMChatPopups"
-     label="IM Chats" 
-     layout="topleft"
-     top_pad="5"
-     height="16"
-     tool_tip="Check to see popups when an instant message arrives"
-     width="400" />
-    <spinner
-     control_name="NearbyToastLifeTime"
-     decimal_digits="0"
-     follows="left|top"
-     height="23"
-     increment="1"
-     initial_value="23"
-     label="Nearby chat toasts life time:"
-     label_width="285"
-     layout="topleft"
-     left="45"
-     max_val="60"
-     min_val="1"
-     name="nearby_toasts_lifetime"
-     top_pad="10"
-     width="325" />
-    <spinner
-     control_name="NearbyToastFadingTime"
-     decimal_digits="0"
-     follows="left|top"
-     height="23"
-     increment="1"
-     initial_value="3"
-     label="Nearby chat toasts fading time:"
-     label_width="285"
-     layout="topleft"
-     left_delta="0"
-     max_val="60"
-     min_val="0"
-     name="nearby_toasts_fadingtime"
-     top_pad="3"
-     width="325" />
+        control_name="PlaySoundTeleportOffer"
+        height="16"
+        label="Teleport offer"
+        layout="topleft"
+        left_pad="35"
+        top_pad="-38"
+        name="teleport_offer"
+        width="150" />
+    <check_box
+        control_name="PlaySoundInventoryOffer"
+        height="16"
+        label="Inventory offer"
+        layout="topleft"
+        top_pad="6"
+        name="inventory_offer"
+        width="150" />
+
+  </panel>
+
+  <view_border
+      bevel_style="none"
+      height="0"
+      layout="topleft"
+      left="13"
+      name="cost_text_border"
+      top_pad="5"
+      width="495"/>
+
+  <panel
+      height="50"
+      layout="topleft"
+      left="13"
+      top_pad="10"
+      width="505">
+
+    <text
+        layout="topleft"
+        left="0"
+        text_color="White"
+        height="12"
+        top="5"
+        width="55">
+        Save:
+    </text>
+
+    <combo_box
+        enabled="false"
+        control_name="KeepConversationLogTranscripts"
+        height="23"
+        layout="topleft"
+        left_pad="5"
+        name="chat_font_size"
+        top="0"
+        width="165">
+        <item
+            label="Log and transcripts"
+            value="2"/>
+        <item
+            label="Log only"
+            value="1"/>
+        <item
+            label="No log or transcripts"
+            value="0"/>
+    </combo_box>
+
+    <button
+        enabled="false"
+        height="23"
+        label="Clear log..."
+        layout="topleft"
+        left_pad="5"
+        top="0"
+        name="clear_log"
+        width="110">
+        <commit_callback
+            function="Pref.ClearLog" />
+    </button>
+  
+    <button
+        enabled="false"
+        height="23"
+        label="Delete transcripts..."
+        layout="topleft"
+        left_pad="5"
+        top="0"
+        name="delete_transcripts"
+        width="147">
+        <button.commit_callback
+            function="Pref.DeleteTranscripts" />
+    </button>
+  
+    <text
+        layout="topleft"
+        left="0"
+        text_color="White"
+        height="12"
+        top_pad="15"
+        width="55">
+        Location:
+    </text>
+  
+    <line_editor
+        control_name="InstantMessageLogPath"
+        border_style="line"
+        border_thickness="1"
+        font="SansSerif"
+        height="23"
+        layout="topleft"
+        left_pad="55"
+        max_length="4096"
+        name="log_path_string"
+        top_delta="-5"
+        width="185">
+    </line_editor>
+  
+    <button
+        enabled="false"
+        follows="left|top"
+        height="23"
+        label="Browse..."
+        label_selected="Browse"
+        layout="topleft"
+        left_pad="5"
+        name="log_path_button"
+        top_delta="0"
+        width="112">
+      <commit_callback function="Pref.LogPath" />
+    </button>
+
+  </panel>
+  
   <button
-   follows="left|top"
-   height="23"
-   label="Translation..."
-   layout="topleft"
-   left="30"
-   name="ok_btn"
-   top="-50"
-   width="170">
-   <button.commit_callback
-    function="Pref.TranslationSettings" />
+      height="23"
+      label="Translation..."
+      layout="topleft"
+      left="9"
+      name="ok_btn"
+      top="-29"
+      width="170">
+    <commit_callback
+        function="Pref.TranslationSettings" />
   </button>
   <button
-   follows="top|left"
-   height="23"
-   layout="topleft"
-   top_pad="-23"
-   left_pad="5"
-   name="autoreplace_showgui"
-   commit_callback.function="Pref.AutoReplace"
-   label="Auto-Replace..."
-   width="150">
+      height="23"
+      layout="topleft"
+      top_pad="-23"
+      left_pad="5"
+      name="autoreplace_showgui"
+      commit_callback.function="Pref.AutoReplace"
+      label="Auto-Replace..."
+      width="150">
   </button>
   <button
-   follows="top|left"
-   height="23"
-   layout="topleft"
-   top_pad="-23"
-   left_pad="5"
-   name="spellcheck_showgui"
-   commit_callback.function="Pref.SpellChecker"
-   label="Spell Checking..."
-   width="150">
+      height="23"
+      layout="topleft"
+      top_pad="-23"
+      left_pad="5"
+      name="spellcheck_showgui"
+      commit_callback.function="Pref.SpellChecker"
+      label="Spell Checking..."
+      width="150">
   </button>
 
 </panel>
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_colors.xml b/indra/newview/skins/default/xui/en/panel_preferences_colors.xml
index 2b22f0d6e31..9e825fe5168 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_colors.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_colors.xml
@@ -362,7 +362,7 @@
    follows="left|top"
    height="16"
    increment="0.01"
-   initial_value="0.8"
+   initial_value="1.0"
    layout="topleft"
    label_width="115"
    label="Active:"
@@ -380,7 +380,7 @@
    follows="left|top"
    height="16"
    increment="0.01"
-   initial_value="0.5"
+   initial_value="0.95"
    layout="topleft"
    label_width="115"
    label="Inactive:"
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_general.xml b/indra/newview/skins/default/xui/en/panel_preferences_general.xml
index 24882988b06..ea0f7d8593e 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_general.xml
@@ -409,10 +409,10 @@
      name="text_box3"
      top_pad="3"
      width="240">
-       Busy mode response:
+       Do Not Disturb response:
     </text>
     <text_editor
-     control_name="BusyModeResponse"
+     control_name="DoNotDisturbModeResponse"
       text_readonly_color="LabelDisabledColor"
       bg_writeable_color="LtGray"
       use_ellipses="false"
@@ -421,7 +421,7 @@
      height="29"
      layout="topleft"
      left="30"
-     name="busy_response"
+     name="do_not_disturb_response"
      width="470"
      word_wrap="true">
        log_in_to_change
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml
index 7eb0fac2beb..cd243d40a4e 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml
@@ -147,11 +147,24 @@
      height="12"
      layout="topleft"
      left_delta="87"
-     name="ShadersPrefText3"
+     name="ShadersPrefText2"
      top_delta="0"
      width="80">
         Mid
     </text>
+    <text
+     type="string"
+     length="1"
+     follows="left|top"
+     halign="center"
+     height="12"
+     layout="topleft"
+     left_delta="87"
+     name="ShadersPrefText3"
+     top_delta="0"
+     width="80">
+        High
+    </text>
     <text
      type="string"
      length="1"
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml
index 587c461bee9..78743d26bbe 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml
@@ -1,72 +1,69 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <panel
- border="true"
- follows="left|top|right|bottom"
- height="408"
- label="Communication"
- layout="topleft"
- left="102"
- name="im"
- top="1"
- width="517">
-    <panel.string
-     name="log_in_to_change">
-        log in to change
-    </panel.string>
-    <button
-     follows="left|bottom"
-     height="23"
-     label="Clear History"
-     tool_tip="Clear login image, last location, teleport history, web, and texture cache"
-     layout="topleft"
-     left="30"
-     name="clear_cache"
-     top="10"
-     width="145">
-        <button.commit_callback
-         function="Pref.WebClearCache" />
-    </button>
-    <text
-     type="string"
-     length="1"
-     follows="left|top"
-     height="10"
-     layout="topleft"
-     left_pad="10"
-     mouse_opaque="false"
-     name="cache_size_label_l"
-     top_delta="3"
-     text_color="LtGray_50"
-     width="300">
-       (Locations, images, web, search history)
-    </text>
-    <check_box
-	 height="16"
-     enabled="false"
-     label="Show me in Search results"
-     layout="topleft"
-     left="30"
-     name="online_searchresults"
-     top_pad="20"
-     width="350" />
-    <check_box
-	 height="16"
-	 enabled="false"
-     label="Only friends and groups know I'm online"
-     layout="topleft"
-     left="30"
-     name="online_visibility"
-     top_pad="30"
-     width="350" />
-    <check_box
-     control_name="VoiceCallsFriendsOnly"
-     height="16"
-     label="Only friends and groups can call or IM me"
-     layout="topleft"
-     left="30"
-     name="voice_call_friends_only_check"
-     top_pad="10"
-     width="350" />
+    border="true"
+    follows="left|top|right|bottom"
+    height="408"
+    label="Communication"
+    layout="topleft"
+    left="102"
+    name="im"
+    top="1"
+    width="517">
+
+  <panel.string
+      name="log_in_to_change">
+    log in to change
+  </panel.string>
+
+  <button
+      follows="left|bottom"
+      height="23"
+      label="Clear History"
+      tool_tip="Clear login image, last location, teleport history, web, and texture cache"
+      layout="topleft"
+      left="30"
+      name="clear_cache"
+      top="10"
+      width="145">
+    <button.commit_callback
+        function="Pref.WebClearCache" />
+  </button>
+
+  <text
+      type="string"
+      length="1"
+      follows="left|top"
+      height="10"
+      layout="topleft"
+      left_pad="10"
+      mouse_opaque="false"
+      name="cache_size_label_l"
+      top_delta="3"
+      text_color="LtGray_50"
+      width="300">
+    (Locations, images, web, search history)
+  </text>
+
+  <check_box
+      height="16"
+      enabled="false"
+      label="Show me in Search results"
+      layout="topleft"
+      left="30"
+      name="online_searchresults"
+      top_pad="20"
+      width="350" />
+
+  <check_box
+      height="16"
+      enabled="false"
+      label="Only friends and groups know I'm online"
+      layout="topleft"
+      left="30"
+      name="online_visibility"
+      top_pad="30"
+      width="350" />
+    
     <check_box
      enabled_control="EnableVoiceChat"
      control_name="AutoDisengageMic"
@@ -87,100 +84,7 @@
      name="favorites_on_login_check"
      top_pad="10"
      width="350" />
-	<text
-      type="string"
-    length="1"
-    follows="left|top"
-     height="10"
-     layout="topleft"
-     left="30"
-     mouse_opaque="false"
-     name="Logs:"
-     top_pad="20"
-     width="350">
-        Chat Logs:
-    </text>
-    <check_box
-	 enabled="false"
-     control_name="LogNearbyChat"
-     height="16"
-     label="Save nearby chat logs on my computer"
-     layout="topleft"
-     left="30"
-     name="log_nearby_chat"
-     top_pad="10"
-     width="350">
-    </check_box>
-    <check_box
-	 enabled="false"
-     control_name="LogInstantMessages"
-     height="16"
-     label="Save IM logs on my computer"
-     layout="topleft"
-     left="30"
-     name="log_instant_messages"
-     top_pad="10"
-     width="350">
-    </check_box>
-    <check_box
-     control_name="LogTimestamp"
-	 enabled="false"
-     height="16"
-     label="Add timestamp to each line in chat log"
-     layout="topleft"
-     left_delta="0"
-     name="show_timestamps_check_im"
-     top_pad="10"
-     width="237" />
-	<check_box
-     control_name="LogFileNamewithDate"
-     enabled="false"
-     height="16"
-     label="Add datestamp to log file name."
-     layout="topleft"
-     left_delta="5"
-     name="logfile_name_datestamp"
-     top_pad="10"
-     width="350"/>
-	<text
-     type="string"
-     length="1"
-     follows="left|top"
-     height="10"
-     layout="topleft"
-     left_delta="0"
-     mouse_opaque="false"
-     name="log_path_desc"
-     top_pad="30"
-     width="128">
-        Location of logs:
-    </text>    
-    <line_editor
-     bottom="366"
-     control_name="InstantMessageLogPath"
-     follows="top|left|right"
-     halign="right"
-     height="23"
-     layout="topleft"
-     left_delta="0"
-     mouse_opaque="false"
-     name="log_path_string"
-     top_pad="5"
-     width="250"/>
-    <button
-	 enabled="false"
-     follows="right|bottom"
-     height="23"
-     label="Browse"
-     label_selected="Browse"
-     layout="topleft"
-     left_pad="5"
-     name="log_path_button"
-     top_delta="0"
-     width="145">
-        <button.commit_callback
-         function="Pref.LogPath" />
-    </button>
+
     <button
      follows="left|bottom"
      height="23"
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index 4383b985921..5aa743b32d2 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -295,7 +295,7 @@ Please try logging in again in a minute.</string>
 	<!-- llvoavatar. Displayed in the avatar chat bubble -->
 	<string name="AvatarEditingAppearance">(Editing Appearance)</string>
 	<string name="AvatarAway">Away</string>
-	<string name="AvatarBusy">Busy</string>
+	<string name="AvatarDoNotDisturb">Do Not Disturb</string>
 	<string name="AvatarMuted">Blocked</string>
 
 	<!-- animations -->
@@ -384,6 +384,8 @@ Please try logging in again in a minute.</string>
 	<string name="ST_NO_JOINT">Can't find ROOT or JOINT.</string>
 
 	<!-- Chat -->
+	<string name="NearbyChatTitle">Nearby chat</string>
+  <string name="NearbyChatLabel">(Nearby chat)</string>
 	<string name="whisper">whispers:</string>
 	<string name="shout">shouts:</string>
 	<string name="ringing">Connecting to in-world Voice Chat...</string>
@@ -405,8 +407,9 @@ Please try logging in again in a minute.</string>
 	<string name="ChangePermissions">Change its permissions</string>
 	<string name="TrackYourCamera">Track your camera</string>
   <string name="ControlYourCamera">Control your camera</string>
+	<string name="NotConnected">Not Connected</string>
+	<string name="AgentNameSubst">(You)</string> <!-- Substitution for agent name -->
   <string name="TeleportYourAgent">Teleport you</string>
-  <string name="NotConnected">Not Connected</string>
 
 	<!-- Sim Access labels -->
 	<string name="SIM_ACCESS_PG">General</string>
@@ -2071,12 +2074,6 @@ For AI Character: Get the closest navigable point to the point provided.
 	</string>
 
 
-  <!-- Avatar busy/away mode -->
-	<string name="AvatarSetNotAway">Not Away</string>
-	<string name="AvatarSetAway">Away</string>
-	<string name="AvatarSetNotBusy">Not Busy</string>
-	<string name="AvatarSetBusy">Busy</string>
-
 	<!-- Wearable Types -->
 	<string name="shape">Shape</string>
 	<string name="skin">Skin</string>
@@ -2270,7 +2267,8 @@ Drag folders to this area and click "Send to Marketplace" to list them for sale
 	<string name="InvFolder Gestures">Gestures</string>
 	<string name="InvFolder Favorite">My Favorites</string>
   <!-- historically default name of the Favorites folder can start from either "f" or "F" letter.
-  We should localize both of them with the same value -->
+      Also, it can be written as "Favorite" or "Favorites".
+  We should localize all variants of them with the same value -->
 	<string name="InvFolder favorite">My Favorites</string>
 	<string name="InvFolder Favorites">My Favorites</string>
 	<string name="InvFolder favorites">My Favorites</string>
@@ -2284,6 +2282,7 @@ Drag folders to this area and click "Send to Marketplace" to list them for sale
 
   <!-- are used for Friends and Friends/All folders in Inventory "Calling cards" folder. See EXT-694-->
 	<string name="InvFolder Friends">Friends</string>
+	<string name="InvFolder Received Items">Received Items</string>
 	<string name="InvFolder All">All</string>
 
 	<string name="no_attachments">No attachments worn</string>
@@ -2524,7 +2523,7 @@ Drag folders to this area and click "Send to Marketplace" to list them for sale
 	<string name="PanelContentsNewScript">New Script</string>
 
   <!-- panel preferences general -->
-  <string name="BusyModeResponseDefault">The Resident you messaged is in &apos;busy mode&apos; which means they have requested not to be disturbed.  Your message will still be shown in their IM panel for later viewing.</string>
+  <string name="DoNotDisturbModeResponseDefault">This resident has turned on &apos;Do Not Disturb&apos; and will see your message later.</string>
 
 	<!-- Mute -->
 	<string name="MuteByName">(By name)</string>
@@ -2583,9 +2582,6 @@ Drag folders to this area and click "Send to Marketplace" to list them for sale
 	<string name="GroupMoneyDebits">Debits</string>
 	<string name="GroupMoneyDate">[weekday,datetime,utc] [mth,datetime,utc] [day,datetime,utc], [year,datetime,utc]</string>
 
-	<!-- viewer object -->
-	<string name="ViewerObjectContents">Contents</string>
-
 	<!-- Viewer menu -->
 	<string name="AcquiredItems">Acquired Items</string>
 	<string name="Cancel">Cancel</string>
@@ -3381,12 +3377,15 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 	<string name="IM_moderator_label">(Moderator)</string>
 	<string name="Saved_message">(Saved [LONG_TIMESTAMP])</string>
 	<string name="IM_unblock_only_groups_friends">To see this message, you must uncheck &apos;Only friends and groups can call or IM me&apos; in Preferences/Privacy.</string>
+  <string name="OnlineStatus">Online</string>
+  <string name="OfflineStatus">Offline</string>
 
 	<!-- voice calls -->
 	<string name="answered_call">Your call has been answered</string>
 	<string name="you_started_call">You started a voice call</string>
 	<string name="you_joined_call">You joined the voice call</string>
-	<string name="name_started_call">[NAME] started a voice call</string>
+  <string name="you_auto_rejected_call-im">You automatically rejected the voice call while &apos;Do Not Disturb&apos; was on.</string>
+  <string name="name_started_call">[NAME] started a voice call</string>
 
   <string name="ringing-im">
     Joining voice call...
@@ -3401,7 +3400,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
     Connecting...
   </string>
   <string name="conference-title">
-    Ad-hoc Conference
+    Multi-person chat
   </string>
   <string name="conference-title-incoming">
     Conference with [AGENT_NAME]
@@ -3827,6 +3826,7 @@ Try enclosing path to the editor with double quotes.
   <string name="Command_Avatar_Label">Avatar</string>
   <string name="Command_Build_Label">Build</string>
   <string name="Command_Chat_Label">Chat</string>
+  <string name="Command_Conversations_Label">Conversations</string>
   <string name="Command_Compass_Label">Compass</string>
   <string name="Command_Destinations_Label">Destinations</string>
   <string name="Command_Gestures_Label">Gestures</string>
@@ -3853,6 +3853,7 @@ Try enclosing path to the editor with double quotes.
   <string name="Command_Avatar_Tooltip">Choose a complete avatar</string>
   <string name="Command_Build_Tooltip">Building objects and reshaping terrain</string>
   <string name="Command_Chat_Tooltip">Chat with people nearby using text</string>
+  <string name="Command_Conversations_Tooltip">Converse with everyone</string>
   <string name="Command_Compass_Tooltip">Compass</string>
   <string name="Command_Destinations_Tooltip">Destinations of interest</string>
   <string name="Command_Gestures_Tooltip">Gestures for your avatar</string>
@@ -3907,4 +3908,15 @@ Try enclosing path to the editor with double quotes.
   <!-- Spell check settings floater -->
   <string name="UserDictionary">[User]</string>
   
+  <!-- Conversation log messages -->
+  <string name="logging_calls_disabled_log_empty">
+    Conversations are not being logged. To begin keeping a log, choose "Save: Log only" or "Save: Log and transcripts" under Preferences > Chat.
+  </string>
+  <string name="logging_calls_disabled_log_not_empty">
+    No more conversations will be logged. To resume keeping a log, choose "Save: Log only" or "Save: Log and transcripts" under Preferences > Chat.
+  </string>
+  <string name="logging_calls_enabled_log_empty">
+    There are no logged conversations. After you contact someone, or someone contacts you, a log entry will be shown here.
+  </string>
+  
   </strings>
diff --git a/indra/newview/skins/default/xui/en/widgets/chat_editor.xml b/indra/newview/skins/default/xui/en/widgets/chat_editor.xml
new file mode 100644
index 00000000000..f9facb593ac
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/widgets/chat_editor.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<chat_editor
+  name="chat_editor"
+  show_context_menu="true"/>
diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_im_adhoc.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_im_adhoc.xml
deleted file mode 100644
index 0e29ed0d0bf..00000000000
--- a/indra/newview/skins/default/xui/en/widgets/chiclet_im_adhoc.xml
+++ /dev/null
@@ -1,55 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<chiclet_im_adhoc
- height="23"
- name="im_adhoc_chiclet"
- show_speaker="false"
- width="25">
-    <chiclet_im_adhoc.chiclet_button
-     height="25"
-     image_selected="PushButton_On"
-     image_unselected="PushButton_Off"
-     name="chiclet_button"
-     tab_stop="false"
-     width="25" />
-    <chiclet_im_adhoc.speaker
-      image_mute="Parcel_VoiceNo_Light"
-      image_off="VoicePTT_Off_Dark"
-      image_on="VoicePTT_On_Dark"
-      image_level_1="VoicePTT_Lvl1_Dark"
-      image_level_2="VoicePTT_Lvl2_Dark"
-      image_level_3="VoicePTT_Lvl3_Dark"
-      auto_update="true"
-      draw_border="false"
-      height="24"
-      left="25"
-      bottom="1"      
-      name="speaker"
-      visible="false"
-      width="20" />
-    <chiclet_im_adhoc.avatar_icon
-     bottom="3"
-     follows="left|top|bottom"
-     height="20"
-     left="2"
-     mouse_opaque="false"
-     name="adhoc_icon"
-     width="21" />
-    <chiclet_im_adhoc.unread_notifications
-     halign="center"
-     height="23"
-     left="25"
-     mouse_opaque="false"
-     name="unread"
-     text_color="white"
-     v_pad="3"
-     visible="false"
-     width="20" />
-    <chiclet_im_adhoc.new_message_icon
-  bottom="11"
-  height="14"
-  image_name="Unread_Chiclet"
-  left="12"
-  name="new_message_icon"
-  visible="false"
-  width="14" />
-</chiclet_im_adhoc>
\ No newline at end of file
diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_im_group.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_im_group.xml
deleted file mode 100644
index 77011139bfe..00000000000
--- a/indra/newview/skins/default/xui/en/widgets/chiclet_im_group.xml
+++ /dev/null
@@ -1,56 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<chiclet_im_group
- height="23"
- name="im_group_chiclet"
- show_speaker="false"
- width="25">
-    <chiclet_im_group.chiclet_button
-     height="25"
-     image_selected="PushButton_On"
-     image_unselected="PushButton_Off"
-     name="chiclet_button"
-     tab_stop="false"
-     width="25" />
-    <chiclet_im_group.speaker
-      image_mute="Parcel_VoiceNo_Light"
-      image_off="VoicePTT_Off_Dark"
-      image_on="VoicePTT_On_Dark"
-      image_level_1="VoicePTT_Lvl1_Dark"
-      image_level_2="VoicePTT_Lvl2_Dark"
-      image_level_3="VoicePTT_Lvl3_Dark"
-      auto_update="true"
-      draw_border="false"
-      height="24"
-      left="25"
-      bottom="1"      
-      name="speaker"
-      visible="false"
-      width="20" />
-    <chiclet_im_group.group_icon
-     bottom="3"
-     default_icon="Generic_Group"
-     follows="left|top|bottom"
-     height="20"
-     left="2"
-     mouse_opaque="false"
-     name="group_icon"
-     width="21" />
-    <chiclet_im_group.unread_notifications
-     height="23"
-     halign="center"
-     left="25"
-     mouse_opaque="false"
-     name="unread"
-     text_color="white"
-     v_pad="3"
-     visible="false"
-     width="20"/>
-    <chiclet_im_group.new_message_icon
-bottom="11"
-  height="14"
-  image_name="Unread_Chiclet"
-  left="12"
-  name="new_message_icon"
-  visible="false"
-  width="14" />
-</chiclet_im_group>
\ No newline at end of file
diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml
deleted file mode 100644
index 8b56a8f0f69..00000000000
--- a/indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml
+++ /dev/null
@@ -1,56 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<chiclet_im_p2p
- height="23"
- name="im_p2p_chiclet"
- show_speaker="false"
- width="25">
-    <chiclet_im_p2p.chiclet_button
-     height="25"
-     image_selected="PushButton_On"
-     image_unselected="PushButton_Off"
-     name="chiclet_button"
-     tab_stop="false"
-     width="25"/>
-    <chiclet_im_p2p.speaker
-      image_mute="Parcel_VoiceNo_Light"
-      image_off="VoicePTT_Off_Dark"
-      image_on="VoicePTT_On_Dark"
-      image_level_1="VoicePTT_Lvl1_Dark"
-      image_level_2="VoicePTT_Lvl2_Dark"
-      image_level_3="VoicePTT_Lvl3_Dark"
-      auto_update="true"
-      draw_border="false"
-      height="24"
-      left="25"
-      bottom="1"
-      name="speaker"
-      visible="false"
-      width="20" />
-    <chiclet_im_p2p.avatar_icon
-     bottom="3"
-     color="white"
-     follows="left|top|bottom"
-     height="20"
-     left="2"
-     mouse_opaque="false"
-     name="avatar_icon"
-     width="21" />
-    <chiclet_im_p2p.unread_notifications
-     height="23"
-     halign="center"
-     left="25"
-     mouse_opaque="false"
-     name="unread"
-     text_color="white"
-     v_pad="3"
-     visible="false"
-     width="20"/>
-    <chiclet_im_p2p.new_message_icon
-  bottom="11"
-  height="14"
-  image_name="Unread_Chiclet"
-  left="12"
-  name="new_message_icon"
-  visible="false"
-  width="14" />
-</chiclet_im_p2p>
diff --git a/indra/newview/skins/default/xui/en/widgets/conversation_view_participant.xml b/indra/newview/skins/default/xui/en/widgets/conversation_view_participant.xml
new file mode 100644
index 00000000000..b83d9122f72
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/widgets/conversation_view_participant.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<conversation_view_participant
+  folder_arrow_image="Folder_Arrow"
+  item_height="24" 
+  item_top_pad="0"
+  selection_image="Rounded_Square"
+  mouse_opaque="true"
+  follows="left|top|right"
+  left_pad="0"
+  icon_pad="10"
+  icon_width="20"
+  text_pad="7"
+  text_pad_right="4"
+  arrow_size="12"
+  max_folder_item_overlap="2"
+>
+<avatar_icon
+	 follows="left"
+     height="20"
+     default_icon_name="Generic_Person"
+	 layout="topleft"
+	 top="2"
+     width="20" />
+<info_button
+	 follows="right"
+     height="16"
+     image_pressed="Info_Press"
+     image_unselected="Info_Over"
+     right="-28"
+     name="info_btn"
+     width="16" />
+<output_monitor
+	follows="right"
+	auto_update="true"
+	draw_border="false"
+	height="16"
+	right="-3"
+	mouse_opaque="true"
+	name="speaking_indicator"
+	visible="true"
+	width="20" />	 
+</conversation_view_participant>
diff --git a/indra/newview/skins/default/xui/en/widgets/conversation_view_session.xml b/indra/newview/skins/default/xui/en/widgets/conversation_view_session.xml
new file mode 100644
index 00000000000..b8c39eec1db
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/widgets/conversation_view_session.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<conversation_view_session
+  folder_arrow_image="Folder_Arrow"
+  folder_indentation="8"
+  item_height="24" 
+  item_top_pad="4"
+  selection_image="Rounded_Square"
+  mouse_opaque="true"
+  follows="left|top|right"
+  left_pad="5"
+  icon_pad="2"
+  icon_width="16"
+  text_pad="1"
+  text_pad_right="4"
+  arrow_size="12"
+  max_folder_item_overlap="2"/>
diff --git a/indra/newview/skins/default/xui/en/widgets/folder_view_item.xml b/indra/newview/skins/default/xui/en/widgets/folder_view_item.xml
index 6fa74f403d8..bbd53ccb121 100644
--- a/indra/newview/skins/default/xui/en/widgets/folder_view_item.xml
+++ b/indra/newview/skins/default/xui/en/widgets/folder_view_item.xml
@@ -7,4 +7,10 @@
   selection_image="Rounded_Square"
   mouse_opaque="true"
   follows="left|top|right"
-  />
+  left_pad="5"
+  icon_pad="2"
+  icon_width="16"
+  text_pad="1"
+  text_pad_right="4"
+  arrow_size="12"
+  max_folder_item_overlap="2"/>
diff --git a/indra/newview/skins/default/xui/en/widgets/inbox_folder_view_folder.xml b/indra/newview/skins/default/xui/en/widgets/inbox_folder_view_folder.xml
index 77d8024cb25..590a4730a9b 100644
--- a/indra/newview/skins/default/xui/en/widgets/inbox_folder_view_folder.xml
+++ b/indra/newview/skins/default/xui/en/widgets/inbox_folder_view_folder.xml
@@ -5,7 +5,13 @@
   item_height="20" 
   item_top_pad="4"
   selection_image="Rounded_Square"
-  >
+  left_pad="5"
+  icon_pad="2"
+  icon_width="16"
+  text_pad="1"
+  text_pad_right="4"
+  arrow_size="12"
+  max_folder_item_overlap="2">
 	<new_badge 
         label="New" 
         label_offset_horiz="-1"
diff --git a/indra/newview/skins/default/xui/en/widgets/inbox_inventory_panel.xml b/indra/newview/skins/default/xui/en/widgets/inbox_inventory_panel.xml
index 830c27bdac8..d5b10e7f51b 100644
--- a/indra/newview/skins/default/xui/en/widgets/inbox_inventory_panel.xml
+++ b/indra/newview/skins/default/xui/en/widgets/inbox_inventory_panel.xml
@@ -1,2 +1,3 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<inbox_inventory_panel show_load_status="false" />
+<inbox_inventory_panel show_load_status="false"
+                       start_folder.type="inbox"/>
diff --git a/indra/newview/skins/default/xui/en/widgets/outbox_folder_view_folder.xml b/indra/newview/skins/default/xui/en/widgets/outbox_folder_view_folder.xml
deleted file mode 100644
index d19c47f54f3..00000000000
--- a/indra/newview/skins/default/xui/en/widgets/outbox_folder_view_folder.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<outbox_folder_view_folder
-  folder_arrow_image="Folder_Arrow"
-  folder_indentation="8"
-  item_height="20" 
-  item_top_pad="4"
-  selection_image="Rounded_Square"
-  >
-</outbox_folder_view_folder>
diff --git a/indra/newview/skins/default/xui/en/widgets/outbox_inventory_panel.xml b/indra/newview/skins/default/xui/en/widgets/outbox_inventory_panel.xml
deleted file mode 100644
index 3964569da24..00000000000
--- a/indra/newview/skins/default/xui/en/widgets/outbox_inventory_panel.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<outbox_inventory_panel show_empty_message="false" show_load_status="false" />
diff --git a/indra/newview/skins/default/xui/en/widgets/text.xml b/indra/newview/skins/default/xui/en/widgets/text.xml
index 134f2d75229..21020746743 100644
--- a/indra/newview/skins/default/xui/en/widgets/text.xml
+++ b/indra/newview/skins/default/xui/en/widgets/text.xml
@@ -9,6 +9,7 @@
       h_pad="0" 
       allow_scroll="false"
       text_readonly_color="LabelTextColor"
+      text_tentative_color="TextFgTentativeColor"
       bg_writeable_color="FloaterDefaultBackgroundColor" 
       use_ellipses="false"
       bg_visible="false" 
diff --git a/indra/newview/skins/default/xui/en/widgets/toolbar.xml b/indra/newview/skins/default/xui/en/widgets/toolbar.xml
index 0aa478ace9f..0ace37a5dc1 100644
--- a/indra/newview/skins/default/xui/en/widgets/toolbar.xml
+++ b/indra/newview/skins/default/xui/en/widgets/toolbar.xml
@@ -30,9 +30,9 @@
                         image_overlay_alignment="left"
                         use_ellipses="true"
                         auto_resize="true"
-                        button_flash_count="99999"
-                        button_flash_rate="1.0"
-                        flash_color="EmphasisColor"/>
+                        button_flash_count="4"
+                        button_flash_rate="0.5"
+                        flash_color="BeaconColor"/>
   <button_icon pad_left="10"
                pad_right="10"
                image_bottom_pad="10"
@@ -51,7 +51,7 @@
                chrome="true"
                use_ellipses="true"
                auto_resize="true"
-               button_flash_count="99999"
-               button_flash_rate="1.0"
-               flash_color="EmphasisColor"/>
+               button_flash_count="4"
+               button_flash_rate="0.5"
+               flash_color="BeaconColor"/>
 </toolbar>
diff --git a/indra/newview/skins/default/xui/es/floater_chat_bar.xml b/indra/newview/skins/default/xui/es/floater_chat_bar.xml
index 2e948050570..02369c9a433 100644
--- a/indra/newview/skins/default/xui/es/floater_chat_bar.xml
+++ b/indra/newview/skins/default/xui/es/floater_chat_bar.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="chat_bar" title="CHAT">
+<floater name="nearby_chat" title="CHAT">
 	<panel name="bottom_panel">
 		<line_editor label="Pulsa aquí para chatear." name="chat_box" tool_tip="Pulsa Enter para decirlo o Ctrl+Enter para gritarlo"/>
 		<button name="show_nearby_chat" tool_tip="Muestra o esconde el registro del chat"/>
diff --git a/indra/newview/skins/default/xui/es/menu_im_well_button.xml b/indra/newview/skins/default/xui/es/menu_im_well_button.xml
deleted file mode 100644
index c8f6c217cc3..00000000000
--- a/indra/newview/skins/default/xui/es/menu_im_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="IM Well Button Context Menu">
-	<menu_item_call label="Cerrar todo" name="Close All"/>
-</context_menu>
diff --git a/indra/newview/skins/default/xui/es/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/es/panel_nearby_chat_bar.xml
index af2b6e920bc..e6ca59f9120 100644
--- a/indra/newview/skins/default/xui/es/panel_nearby_chat_bar.xml
+++ b/indra/newview/skins/default/xui/es/panel_nearby_chat_bar.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="chat_bar">
+<panel name="nearby_chat">
 	<line_editor label="Pulsa aquí para chatear." name="chat_box" tool_tip="Pulsa Enter para decirlo o Ctrl+Enter para gritarlo"/>
 	<button name="show_nearby_chat" tool_tip="Muestra o esconde el registro del chat"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/floater_chat_bar.xml b/indra/newview/skins/default/xui/fr/floater_chat_bar.xml
index 890411d0918..7dcb9a280d4 100644
--- a/indra/newview/skins/default/xui/fr/floater_chat_bar.xml
+++ b/indra/newview/skins/default/xui/fr/floater_chat_bar.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="chat_bar" title="CHAT PRÈS DE MOI">
+<floater name="nearby_chat" title="CHAT PRÈS DE MOI">
 	<panel name="bottom_panel">
 		<line_editor label="Cliquer ici pour chatter." name="chat_box" tool_tip="Appuyer sur Entrée pour dire, Ctrl+Entrée pour crier"/>
 		<button name="show_nearby_chat" tool_tip="Afficher/masquer le journal de chat près de vous."/>
diff --git a/indra/newview/skins/default/xui/fr/menu_im_well_button.xml b/indra/newview/skins/default/xui/fr/menu_im_well_button.xml
deleted file mode 100644
index 8ef1529e6b4..00000000000
--- a/indra/newview/skins/default/xui/fr/menu_im_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="IM Well Button Context Menu">
-	<menu_item_call label="Tout fermer" name="Close All"/>
-</context_menu>
diff --git a/indra/newview/skins/default/xui/fr/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/fr/panel_nearby_chat_bar.xml
index 82cdf292abb..762dee01bb4 100644
--- a/indra/newview/skins/default/xui/fr/panel_nearby_chat_bar.xml
+++ b/indra/newview/skins/default/xui/fr/panel_nearby_chat_bar.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="chat_bar">
+<panel name="nearby_chat">
 	<line_editor label="Cliquer ici pour chatter." name="chat_box" tool_tip="Appuyer sur Entrée pour dire, Ctrl-Entrée pour crier"/>
 	<button name="show_nearby_chat" tool_tip="Affiche/Masque le journal de chats près de vous"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/it/floater_chat_bar.xml b/indra/newview/skins/default/xui/it/floater_chat_bar.xml
index 94c85b50c81..b47e32ce90e 100644
--- a/indra/newview/skins/default/xui/it/floater_chat_bar.xml
+++ b/indra/newview/skins/default/xui/it/floater_chat_bar.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="chat_bar" title="CHAT NEI DINTORNI">
+<floater name="nearby_chat" title="CHAT NEI DINTORNI">
 	<panel name="bottom_panel">
 		<line_editor label="Clicca qui per la chat." name="chat_box" tool_tip="Premi Invio per parlare, Ctrl+Invio per gridare"/>
 		<button name="show_nearby_chat" tool_tip="Mostra/Nasconde il registro della chat nei dintorni"/>
diff --git a/indra/newview/skins/default/xui/it/menu_im_well_button.xml b/indra/newview/skins/default/xui/it/menu_im_well_button.xml
deleted file mode 100644
index 9e471b771c7..00000000000
--- a/indra/newview/skins/default/xui/it/menu_im_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="IM Well Button Context Menu">
-	<menu_item_call label="Chiudi tutto" name="Close All"/>
-</context_menu>
diff --git a/indra/newview/skins/default/xui/it/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/it/panel_nearby_chat_bar.xml
index 6317d3192ea..1fef88870aa 100644
--- a/indra/newview/skins/default/xui/it/panel_nearby_chat_bar.xml
+++ b/indra/newview/skins/default/xui/it/panel_nearby_chat_bar.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="chat_bar">
+<panel name="nearby_chat">
 	<string name="min_width">
 		192
 	</string>
diff --git a/indra/newview/skins/default/xui/ja/floater_chat_bar.xml b/indra/newview/skins/default/xui/ja/floater_chat_bar.xml
index 11f223ade63..9f5df6fb85e 100644
--- a/indra/newview/skins/default/xui/ja/floater_chat_bar.xml
+++ b/indra/newview/skins/default/xui/ja/floater_chat_bar.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="chat_bar" title="近くのチャット">
+<floater name="nearby_chat" title="近くのチャット">
 	<panel name="bottom_panel">
 		<line_editor label="ここをクリックしてチャットを開始します。" name="chat_box" tool_tip="Enter キーを押して話し、Ctrl + Enter キーで叫びます。"/>
 		<button name="show_nearby_chat" tool_tip="近くのチャットログを表示/非表示"/>
diff --git a/indra/newview/skins/default/xui/ja/menu_im_well_button.xml b/indra/newview/skins/default/xui/ja/menu_im_well_button.xml
deleted file mode 100644
index 3397004bd70..00000000000
--- a/indra/newview/skins/default/xui/ja/menu_im_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="IM Well Button Context Menu">
-	<menu_item_call label="すべて閉じる" name="Close All"/>
-</context_menu>
diff --git a/indra/newview/skins/default/xui/ja/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/ja/panel_nearby_chat_bar.xml
index 5998206f27c..201fb0a3768 100644
--- a/indra/newview/skins/default/xui/ja/panel_nearby_chat_bar.xml
+++ b/indra/newview/skins/default/xui/ja/panel_nearby_chat_bar.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="chat_bar">
+<panel name="nearby_chat">
 	<line_editor label="ここをクリックしてチャットを開始します。" name="chat_box" tool_tip="Enter キーを押して発言し、Ctrl + Enter キーで叫びます。"/>
 	<button name="show_nearby_chat" tool_tip="近くのチャットログを表示・非表示"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/pl/menu_im_well_button.xml b/indra/newview/skins/default/xui/pl/menu_im_well_button.xml
deleted file mode 100644
index 207bc2211b3..00000000000
--- a/indra/newview/skins/default/xui/pl/menu_im_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="IM Well Button Context Menu">
-	<menu_item_call label="Zamknij wszystkie" name="Close All"/>
-</context_menu>
diff --git a/indra/newview/skins/default/xui/pl/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/pl/panel_nearby_chat_bar.xml
index 63cf96b5710..4ed3ff669b0 100644
--- a/indra/newview/skins/default/xui/pl/panel_nearby_chat_bar.xml
+++ b/indra/newview/skins/default/xui/pl/panel_nearby_chat_bar.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="chat_bar">
+<panel name="nearby_chat">
 	<string name="min_width">
 		192
 	</string>
diff --git a/indra/newview/skins/default/xui/pt/floater_chat_bar.xml b/indra/newview/skins/default/xui/pt/floater_chat_bar.xml
index 72016c6b406..2eb2c949409 100644
--- a/indra/newview/skins/default/xui/pt/floater_chat_bar.xml
+++ b/indra/newview/skins/default/xui/pt/floater_chat_bar.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="chat_bar" title="BATE-PAPO LOCAL">
+<floater name="nearby_chat" title="BATE-PAPO LOCAL">
 	<panel name="bottom_panel">
 		<line_editor label="Clique aqui para bater papo." name="chat_box" tool_tip="Tecle Enter para falar, Ctrl+Enter para gritar"/>
 		<button name="show_nearby_chat" tool_tip="Mostra/oculta o histórico do bate-papo local"/>
diff --git a/indra/newview/skins/default/xui/pt/menu_im_well_button.xml b/indra/newview/skins/default/xui/pt/menu_im_well_button.xml
deleted file mode 100644
index 2d37cefd6fe..00000000000
--- a/indra/newview/skins/default/xui/pt/menu_im_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="IM Well Button Context Menu">
-	<menu_item_call label="Fechar tudo" name="Close All"/>
-</context_menu>
diff --git a/indra/newview/skins/default/xui/pt/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/pt/panel_nearby_chat_bar.xml
index 9b993488be1..5628a871090 100644
--- a/indra/newview/skins/default/xui/pt/panel_nearby_chat_bar.xml
+++ b/indra/newview/skins/default/xui/pt/panel_nearby_chat_bar.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="chat_bar">
+<panel name="nearby_chat">
 	<line_editor label="Clique aqui para bater papo." name="chat_box" tool_tip="Tecle Enter para falar, Ctrl+Enter para gritar"/>
 	<button name="show_nearby_chat" tool_tip="Mostra/oculta o histórico do bate-papo local"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/ru/floater_chat_bar.xml b/indra/newview/skins/default/xui/ru/floater_chat_bar.xml
index 79b7b033fb6..f6b2fc81e1e 100644
--- a/indra/newview/skins/default/xui/ru/floater_chat_bar.xml
+++ b/indra/newview/skins/default/xui/ru/floater_chat_bar.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="chat_bar" title="ЛОКАЛЬНЫЙ ЧАТ">
+<floater name="nearby_chat" title="ЛОКАЛЬНЫЙ ЧАТ">
 	<panel name="bottom_panel">
 		<line_editor label="Щелкните здесь для общения." name="chat_box" tool_tip="Нажмите Enter, чтобы сказать, Ctrl+Enter, чтобы прокричать"/>
 		<button name="show_nearby_chat" tool_tip="Показать/скрыть лог локального чата"/>
diff --git a/indra/newview/skins/default/xui/ru/menu_im_well_button.xml b/indra/newview/skins/default/xui/ru/menu_im_well_button.xml
deleted file mode 100644
index 5a5bde61b99..00000000000
--- a/indra/newview/skins/default/xui/ru/menu_im_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="IM Well Button Context Menu">
-	<menu_item_call label="Закрыть все" name="Close All"/>
-</context_menu>
diff --git a/indra/newview/skins/default/xui/ru/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/ru/panel_nearby_chat_bar.xml
index 804ba7def75..395c643b0be 100644
--- a/indra/newview/skins/default/xui/ru/panel_nearby_chat_bar.xml
+++ b/indra/newview/skins/default/xui/ru/panel_nearby_chat_bar.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="chat_bar">
+<panel name="nearby_chat">
 	<line_editor label="Щелкните здесь для общения" name="chat_box" tool_tip="Нажмите Enter, чтобы сказать, Ctrl+Enter, чтобы прокричать"/>
 	<button name="show_nearby_chat" tool_tip="Показать/скрыть лог локального чата"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/tr/floater_chat_bar.xml b/indra/newview/skins/default/xui/tr/floater_chat_bar.xml
index 988c845982f..cd999b4b7a0 100644
--- a/indra/newview/skins/default/xui/tr/floater_chat_bar.xml
+++ b/indra/newview/skins/default/xui/tr/floater_chat_bar.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="chat_bar" title="YAKINDAKÄ° SOHBET">
+<floater name="nearby_chat" title="YAKINDAKÄ° SOHBET">
 	<panel name="bottom_panel">
 		<line_editor label="Sohbet etmek için buraya tıklayın." name="chat_box" tool_tip="Söylemek için Enter, bağırmak için Ctrl+Enter yapın"/>
 		<button name="show_nearby_chat" tool_tip="Yakın sohbet günlüğünü gösterir/gizler"/>
diff --git a/indra/newview/skins/default/xui/tr/menu_im_well_button.xml b/indra/newview/skins/default/xui/tr/menu_im_well_button.xml
deleted file mode 100644
index c3e559a7231..00000000000
--- a/indra/newview/skins/default/xui/tr/menu_im_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="IM Well Button Context Menu">
-	<menu_item_call label="Tümünü Kapat" name="Close All"/>
-</context_menu>
diff --git a/indra/newview/skins/default/xui/tr/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/tr/panel_nearby_chat_bar.xml
index fd954475acd..7d191191c41 100644
--- a/indra/newview/skins/default/xui/tr/panel_nearby_chat_bar.xml
+++ b/indra/newview/skins/default/xui/tr/panel_nearby_chat_bar.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="chat_bar">
+<panel name="nearby_chat">
 	<line_editor label="Sohbet etmek için buraya tıklayın." name="chat_box" tool_tip="Söylemek için Enter, bağırmak için Ctrl+Enter yapın"/>
 	<button name="show_nearby_chat" tool_tip="yakın sohbet günlüğünü gösterir/gizler"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/zh/menu_im_well_button.xml b/indra/newview/skins/default/xui/zh/menu_im_well_button.xml
deleted file mode 100644
index 4b9b4b27587..00000000000
--- a/indra/newview/skins/default/xui/zh/menu_im_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="IM Well Button Context Menu">
-	<menu_item_call label="全部關閉" name="Close All"/>
-</context_menu>
diff --git a/indra/newview/skins/default/xui/zh/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/zh/panel_nearby_chat_bar.xml
index 4361b588d8c..9489113d093 100644
--- a/indra/newview/skins/default/xui/zh/panel_nearby_chat_bar.xml
+++ b/indra/newview/skins/default/xui/zh/panel_nearby_chat_bar.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="chat_bar">
+<panel name="nearby_chat">
 	<line_editor label="點按此處開始聊天。" name="chat_box" tool_tip="按下 Enter 鍵來說或按下 Ctrl+Enter 來喊叫"/>
 	<button name="show_nearby_chat" tool_tip="顯示 / 隱藏 附近的聊天紀錄"/>
 </panel>
-- 
GitLab


From ec525704e97c697be3714b150ca3cbd461930cf7 Mon Sep 17 00:00:00 2001
From: Nyx Linden <nyx@lindenlab.com>
Date: Mon, 25 Mar 2013 18:29:01 -0400
Subject: [PATCH 382/436] SH-4034 FIX Outfit changes broadcast without exiting
 appearance edit mode

Backing out MAINT-1099 fix. Added line causes us to temporarily exit and re-enter
outfit editing mode every time we edit a wearable, which has a host of unintended
consequences. Reviewed the original bug, and their fix should not have any
impact on the original bug.

Repro of the original bug does not repro, with or without the patch. The patch
causes regressions but not fixes so removing it. Will send MAINT-1099 back
to QA for verification - there is an alternate solution if this causes a regression.
---
 indra/newview/llsidepanelappearance.cpp | 1 -
 1 file changed, 1 deletion(-)

diff --git a/indra/newview/llsidepanelappearance.cpp b/indra/newview/llsidepanelappearance.cpp
index d25d203febc..74fa5a87bba 100644
--- a/indra/newview/llsidepanelappearance.cpp
+++ b/indra/newview/llsidepanelappearance.cpp
@@ -453,7 +453,6 @@ void LLSidepanelAppearance::editWearable(LLViewerWearable *wearable, LLView *dat
 	LLSidepanelAppearance *panel = dynamic_cast<LLSidepanelAppearance*>(data);
 	if (panel)
 	{
-		panel->showOutfitsInventoryPanel();
 		panel->showWearableEditPanel(wearable, disable_camera_switch);
 	}
 }
-- 
GitLab


From 8e6d2f8ddc3fe8a1eee3abe99eb5abd3575c5841 Mon Sep 17 00:00:00 2001
From: prep <prep@lindenlab.com>
Date: Thu, 28 Mar 2013 11:43:12 -0400
Subject: [PATCH 383/436] sh-4014: Don't send appearance updates while editing.

---
 indra/newview/llvoavatarself.cpp | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index b6dc4a1ff9b..e00802630ed 100755
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -2994,11 +2994,8 @@ void LLVOAvatarSelf::onCustomizeEnd(bool disable_camera_switch)
 			gAgentCamera.changeCameraToDefault();
 			gAgentCamera.resetView();
 		}
-
-		if (gAgent.getRegion() && gAgent.getRegion()->getCentralBakeVersion())
-		{
-			LLAppearanceMgr::instance().requestServerAppearanceUpdate();
-		}
+	
+		LLAppearanceMgr::instance().updateAppearanceFromCOF();	
 	}
 }
 
-- 
GitLab


From 903996e8d4ebc30c42d3c2d041fb7a1c8e530ab8 Mon Sep 17 00:00:00 2001
From: "Graham Madarasz (Graham Linden)" <graham@lindenlab.com>
Date: Thu, 28 Mar 2013 19:25:51 -0700
Subject: [PATCH 384/436] Google Breakpad Fix

---
 autobuild.xml                           | 28 ++++++------
 indra/cmake/Copy3rdPartyLibs.cmake      |  1 -
 indra/cmake/FreeType.cmake              |  6 ---
 indra/cmake/GoogleBreakpad.cmake        |  3 ++
 indra/linux_crash_logger/CMakeLists.txt |  3 ++
 indra/llcommon/llapp.cpp                | 59 +++++++++++++++++++++++--
 indra/llcommon/llapp.h                  |  2 +-
 indra/win_crash_logger/CMakeLists.txt   |  1 +
 8 files changed, 78 insertions(+), 25 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index 11c2da52dc2..37e59646793 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -606,9 +606,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>9f8a9dc39fd7c3da0fb3533782d1fddf</string>
+              <string>bd6f84f9fb3c2e68850676d06935373f</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-freetype/rev/226814/arch/Linux/installer/freetype-2.3.9-linux-20110418.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-freetype/rev/271684/arch/Linux/installer/freetype-2.4.4-linux-20130312.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
@@ -761,10 +761,10 @@
           <map>
             <key>archive</key>
             <map>
-              <key>hash</key>
-              <string>21babc394dbf8572830f2e85adec7b9f</string>
-              <key>url</key>
-              <string>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/google_breakpad-0.0.0-rev599-darwin-20110202.tar.bz2</string>
+           <key>hash</key>
+	      <string>79976b2f93ec5716709b752483ffa04a</string>
+          <key>url</key>
+          <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-google-breakpad/rev/273021/arch/Darwin/installer/google_breakpad-0.0.0-rev1099-darwin-20130328.tar.bz2</string>
             </map>
             <key>name</key>
             <string>darwin</string>
@@ -773,10 +773,10 @@
           <map>
             <key>archive</key>
             <map>
-              <key>hash</key>
-              <string>204b02a9480c411232255798839431a2</string>
-              <key>url</key>
-              <string>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/google_breakpad-0.0.0-rev599-linux-20110311.tar.bz2</string>
+             <key>hash</key>
+	         <string>1df1bb19a43a2d1a684ce9d4da9dc7bc</string>
+             <key>url</key>
+	         <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-google-breakpad/rev/273021/arch/Linux/installer/google_breakpad-0.0.0-rev1099-linux-20130328.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
@@ -786,9 +786,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>627c51136e14e64c5d39933f3abd3bdf</string>
+	      <string>cfd02d75dbd55327de71db81dc8a3f41</string>
               <key>url</key>
-              <string>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/google_breakpad-0.0.0-rev599-windows-20110218.tar.bz2</string>
+             <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-google-breakpad/rev/273021/arch/CYGWIN/installer/google_breakpad-0.0.0-rev1099-windows-20130328.tar.bz2</string>
             </map>
             <key>name</key>
             <string>windows</string>
@@ -834,9 +834,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>212701468920519f3989677cea9ca4f1</string>
+              <string>98994d5b0b4b3d43be22aa6a5c36e6fa</string>
               <key>url</key>
-              <string>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/gmock-1.5.0-windows-20110224.tar.bz2</string>
+		<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-google-mock-graham/rev/272961/arch/CYGWIN/installer/gmock-1.6.0-windows-20130327.tar.bz2</string>
             </map>
             <key>name</key>
             <string>windows</string>
diff --git a/indra/cmake/Copy3rdPartyLibs.cmake b/indra/cmake/Copy3rdPartyLibs.cmake
index c32e357da3d..2a73900c714 100644
--- a/indra/cmake/Copy3rdPartyLibs.cmake
+++ b/indra/cmake/Copy3rdPartyLibs.cmake
@@ -260,7 +260,6 @@ elseif(LINUX)
         libboost_filesystem-mt.so.${BOOST_VERSION}.0
         libboost_signals-mt.so.${BOOST_VERSION}.0
         libboost_system-mt.so.${BOOST_VERSION}.0
-        libbreakpad_client.so.0
         libcollada14dom.so
         libcrypto.so.1.0.0
         libdb-5.1.so
diff --git a/indra/cmake/FreeType.cmake b/indra/cmake/FreeType.cmake
index 43a9d282d0e..baa61d73c8f 100644
--- a/indra/cmake/FreeType.cmake
+++ b/indra/cmake/FreeType.cmake
@@ -7,13 +7,7 @@ if (STANDALONE)
   pkg_check_modules(FREETYPE REQUIRED freetype2)
 else (STANDALONE)
   use_prebuilt_binary(freetype)
-  if (LINUX)
-    set(FREETYPE_INCLUDE_DIRS
-        ${LIBS_PREBUILT_DIR}/include)
-  else (LINUX)
     set(FREETYPE_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include)
-  endif (LINUX)
-
   set(FREETYPE_LIBRARIES freetype)
 endif (STANDALONE)
 
diff --git a/indra/cmake/GoogleBreakpad.cmake b/indra/cmake/GoogleBreakpad.cmake
index 7498674042a..96e22791ec8 100644
--- a/indra/cmake/GoogleBreakpad.cmake
+++ b/indra/cmake/GoogleBreakpad.cmake
@@ -15,5 +15,8 @@ else (STANDALONE)
   if (WINDOWS)
     set(BREAKPAD_EXCEPTION_HANDLER_LIBRARIES exception_handler crash_generation_client common)
   endif (WINDOWS)
+  # yes, this does look dumb, no, it's not incorrect
+  #
+  set(BREAKPAD_INCLUDE_DIRECTORIES "${LIBS_PREBUILT_DIR}/include/google_breakpad" "${LIBS_PREBUILT_DIR}/include/google_breakpad/google_breakpad")
 endif (STANDALONE)
 
diff --git a/indra/linux_crash_logger/CMakeLists.txt b/indra/linux_crash_logger/CMakeLists.txt
index 98ebdc74873..a1f334ffada 100644
--- a/indra/linux_crash_logger/CMakeLists.txt
+++ b/indra/linux_crash_logger/CMakeLists.txt
@@ -12,6 +12,7 @@ include(LLVFS)
 include(LLXML)
 include(Linking)
 include(UI)
+include(FreeType)
 
 include_directories(
     ${LLCOMMON_INCLUDE_DIRS}
@@ -19,6 +20,7 @@ include_directories(
     ${LLMATH_INCLUDE_DIRS}
     ${LLVFS_INCLUDE_DIRS}
     ${LLXML_INCLUDE_DIRS}
+    ${FREETYPE_INCLUDE_DIRS}
     )
 
 set(linux_crash_logger_SOURCE_FILES
@@ -53,6 +55,7 @@ target_link_libraries(linux-crash-logger
     ${LLCOMMON_LIBRARIES}
     ${UI_LIBRARIES}
     ${DB_LIBRARIES}
+    ${FREETYPE_LIBRARIES}
     )
 
 add_custom_target(linux-crash-logger-target ALL
diff --git a/indra/llcommon/llapp.cpp b/indra/llcommon/llapp.cpp
index ca258900c7f..c6da205815c 100644
--- a/indra/llcommon/llapp.cpp
+++ b/indra/llcommon/llapp.cpp
@@ -69,10 +69,16 @@ bool windows_post_minidump_callback(const wchar_t* dump_path,
 void setup_signals();
 void default_unix_signal_handler(int signum, siginfo_t *info, void *);
 
+#if LL_LINUX
+#include "google_breakpad/minidump_descriptor.h"
+bool unix_minidump_callback(const google_breakpad::MinidumpDescriptor& minidump_desc, void* context, bool succeeded);
+#else
 // Called by breakpad exception handler after the minidump has been generated.
 bool unix_post_minidump_callback(const char *dump_dir,
 					  const char *minidump_id,
 					  void *context, bool succeeded);
+#endif
+
 # if LL_DARWIN
 /* OSX doesn't support SIGRT* */
 S32 LL_SMACKDOWN_SIGNAL = SIGUSR1;
@@ -313,7 +319,7 @@ void LLApp::setupErrorHandling()
 	
 	// Add google breakpad exception handler configured for Darwin/Linux.
 	bool installHandler = true;
-#ifdef LL_DARWIN
+#if LL_DARWIN
 	// For the special case of Darwin, we do not want to install the handler if
 	// the process is being debugged as the app will exit with value ABRT (6) if
 	// we do.  Unfortunately, the code below which performs that test relies on
@@ -346,14 +352,21 @@ void LLApp::setupErrorHandling()
 		installHandler = true;
 	}
 	#endif
-#endif
+
 	if(installHandler && (mExceptionHandler == 0))
 	{
 		std::string dumpPath = "/tmp/";
-		mExceptionHandler = new google_breakpad::ExceptionHandler(dumpPath, 0, &unix_post_minidump_callback, 0, true);
+		mExceptionHandler = new google_breakpad::ExceptionHandler(dumpPath, 0, &unix_post_minidump_callback, 0, true, 0);
+	}
+#elif LL_LINUX
+	if(installHandler && (mExceptionHandler == 0))
+	{
+		google_breakpad::MinidumpDescriptor desc("/tmp");
+	        new google_breakpad::ExceptionHandler(desc, 0, &unix_minidump_callback, 0, true, 0);
 	}
 #endif
 
+#endif
 	startErrorThread();
 }
 
@@ -410,6 +423,9 @@ void LLApp::setMiniDumpDir(const std::string &path)
 	wchar_t buffer[MAX_MINDUMP_PATH_LENGTH];
 	mbstowcs(buffer, path.c_str(), MAX_MINDUMP_PATH_LENGTH);
 	mExceptionHandler->set_dump_path(std::wstring(buffer));
+#elif LL_LINUX
+        google_breakpad::MinidumpDescriptor desc(path);
+	mExceptionHandler->set_minidump_descriptor(desc);
 #else
 	mExceptionHandler->set_dump_path(path);
 #endif
@@ -857,6 +873,43 @@ void default_unix_signal_handler(int signum, siginfo_t *info, void *)
 	}
 }
 
+#if LL_LINUX
+bool unix_minidump_callback(const google_breakpad::MinidumpDescriptor& minidump_desc, void* context, bool succeeded)
+{
+	// Copy minidump file path into fixed buffer in the app instance to avoid
+	// heap allocations in a crash handler.
+	
+	// path format: <dump_dir>/<minidump_id>.dmp
+	int dirPathLength = strlen(minidump_desc.path());
+	
+	// The path must not be truncated.
+	llassert((dirPathLength + 5) <= LLApp::MAX_MINDUMP_PATH_LENGTH);
+	
+	char * path = LLApp::instance()->getMiniDumpFilename();
+	S32 remaining = LLApp::MAX_MINDUMP_PATH_LENGTH;
+	strncpy(path, minidump_desc.path(), remaining);
+	remaining -= dirPathLength;
+	path += dirPathLength;
+	if (remaining > 0 && dirPathLength > 0 && path[-1] != '/')
+	{
+		*path++ = '/';
+		--remaining;
+	}
+	
+	llinfos << "generated minidump: " << LLApp::instance()->getMiniDumpFilename() << llendl;
+	LLApp::runErrorHandler();
+	
+#ifndef LL_RELEASE_FOR_DOWNLOAD
+	clear_signals();
+	return false;
+#else
+	return true;
+#endif
+
+}
+#endif
+
+
 bool unix_post_minidump_callback(const char *dump_dir,
 					  const char *minidump_id,
 					  void *context, bool succeeded)
diff --git a/indra/llcommon/llapp.h b/indra/llcommon/llapp.h
index a536a06ea5e..afa06df23e1 100644
--- a/indra/llcommon/llapp.h
+++ b/indra/llcommon/llapp.h
@@ -38,7 +38,7 @@ typedef LLAtomic32<U32> LLAtomicU32;
 class LLErrorThread;
 class LLLiveFile;
 #if LL_LINUX
-typedef struct siginfo siginfo_t;
+#include <signal.h>
 #endif
 
 typedef void (*LLAppErrorHandler)();
diff --git a/indra/win_crash_logger/CMakeLists.txt b/indra/win_crash_logger/CMakeLists.txt
index 5329c895542..50633599ab7 100644
--- a/indra/win_crash_logger/CMakeLists.txt
+++ b/indra/win_crash_logger/CMakeLists.txt
@@ -78,6 +78,7 @@ target_link_libraries(windows-crash-logger
     gdi32
     ole32
     oleaut32
+    wininet
     Wldap32
     )
     
-- 
GitLab


From bf6182daa8b4d7cea79310547f71d7a3155e17b0 Mon Sep 17 00:00:00 2001
From: Graham Madarasz <graham@lindenlab.com>
Date: Fri, 29 Mar 2013 07:50:08 -0700
Subject: [PATCH 385/436] Update Mac and Windows breakpad builds to latest

---
 .hgignore                                           |   0
 .hgtags                                             |   0
 BuildParams                                         |   0
 autobuild.xml                                       |   9 +++++----
 doc/LGPL-licence.txt                                |   0
 doc/LICENSE-logos.txt                               |   0
 doc/LICENSE-source.txt                              |   0
 doc/contributions.txt                               |   0
 doc/releasenotes-where.txt                          |   0
 doc/translations.txt                                |   0
 etc/message.xml                                     |   0
 indra/CMakeLists.txt                                |   0
 indra/cmake/00-Common.cmake                         |   0
 indra/cmake/APR.cmake                               |   0
 indra/cmake/Audio.cmake                             |   0
 indra/cmake/BerkeleyDB.cmake                        |   0
 indra/cmake/Boost.cmake                             |   0
 indra/cmake/BuildVersion.cmake                      |   0
 indra/cmake/CARes.cmake                             |   0
 indra/cmake/CMakeCopyIfDifferent.cmake              |   0
 indra/cmake/CMakeLists.txt                          |   0
 indra/cmake/CSharpMacros.cmake                      |   0
 indra/cmake/CURL.cmake                              |   0
 indra/cmake/Copy3rdPartyLibs.cmake                  |   0
 indra/cmake/CopyBackToSource.cmake                  |   0
 indra/cmake/DBusGlib.cmake                          |   0
 indra/cmake/DeploySharedLibs.cmake                  |   0
 indra/cmake/DirectX.cmake                           |   0
 indra/cmake/DragDrop.cmake                          |   0
 indra/cmake/EXPAT.cmake                             |   0
 indra/cmake/ExamplePlugin.cmake                     |   0
 indra/cmake/Externals.cmake                         |   0
 indra/cmake/FMOD.cmake                              |   0
 indra/cmake/FindAPR.cmake                           |   0
 indra/cmake/FindAutobuild.cmake                     |   0
 indra/cmake/FindBerkeleyDB.cmake                    |   0
 indra/cmake/FindCARes.cmake                         |   0
 indra/cmake/FindELFIO.cmake                         |   0
 indra/cmake/FindFMOD.cmake                          |   0
 indra/cmake/FindGLH.cmake                           |   0
 indra/cmake/FindGoogleBreakpad.cmake                |   0
 indra/cmake/FindGooglePerfTools.cmake               |   0
 indra/cmake/FindHUNSPELL.cmake                      |   0
 indra/cmake/FindJsonCpp.cmake                       |   0
 indra/cmake/FindLLQtWebkit.cmake                    |   0
 indra/cmake/FindMT.cmake                            |   0
 indra/cmake/FindMono.cmake                          |   0
 indra/cmake/FindMySQL.cmake                         |   0
 indra/cmake/FindNDOF.cmake                          |   0
 indra/cmake/FindOpenJPEG.cmake                      |   0
 indra/cmake/FindSCP.cmake                           |   0
 indra/cmake/FindSVN.cmake                           |   0
 indra/cmake/FindXmlRpcEpi.cmake                     |   0
 indra/cmake/FindZLIB.cmake                          |   0
 indra/cmake/FreeType.cmake                          |   0
 indra/cmake/GLH.cmake                               |   0
 indra/cmake/GLOD.cmake                              |   0
 indra/cmake/GStreamer010Plugin.cmake                |   0
 indra/cmake/GetPrerequisites_2_8.cmake              |   0
 indra/cmake/Glui.cmake                              |   0
 indra/cmake/Glut.cmake                              |   0
 indra/cmake/GoogleBreakpad.cmake                    |   0
 indra/cmake/GoogleMock.cmake                        |   0
 indra/cmake/GooglePerfTools.cmake                   |   0
 indra/cmake/Havok.cmake                             |   0
 indra/cmake/Hunspell.cmake                          |   0
 indra/cmake/JPEG.cmake                              |   0
 indra/cmake/JsonCpp.cmake                           |   0
 indra/cmake/LLAudio.cmake                           |   0
 indra/cmake/LLCharacter.cmake                       |   0
 indra/cmake/LLCommon.cmake                          |   0
 indra/cmake/LLCoreHttp.cmake                        |   0
 indra/cmake/LLCrashLogger.cmake                     |   0
 indra/cmake/LLDatabase.cmake                        |   0
 indra/cmake/LLImage.cmake                           |   0
 indra/cmake/LLImageJ2COJ.cmake                      |   0
 indra/cmake/LLInventory.cmake                       |   0
 indra/cmake/LLKDU.cmake                             |   0
 indra/cmake/LLLogin.cmake                           |   0
 indra/cmake/LLMath.cmake                            |   0
 indra/cmake/LLMessage.cmake                         |   0
 indra/cmake/LLPhysicsExtensions.cmake               |   0
 indra/cmake/LLPlugin.cmake                          |   0
 indra/cmake/LLPrimitive.cmake                       |   0
 indra/cmake/LLRender.cmake                          |   0
 indra/cmake/LLScene.cmake                           |   0
 indra/cmake/LLSharedLibs.cmake                      |   0
 indra/cmake/LLTestCommand.cmake                     |   0
 indra/cmake/LLUI.cmake                              |   0
 indra/cmake/LLVFS.cmake                             |   0
 indra/cmake/LLWindow.cmake                          |   0
 indra/cmake/LLXML.cmake                             |   0
 indra/cmake/LLXUIXML.cmake                          |   0
 indra/cmake/LScript.cmake                           |   0
 indra/cmake/Linking.cmake                           |   0
 indra/cmake/MediaPluginBase.cmake                   |   0
 indra/cmake/MonoDeps.cmake                          |   0
 indra/cmake/MonoEmbed.cmake                         |   0
 indra/cmake/MySQL.cmake                             |   0
 indra/cmake/NDOF.cmake                              |   0
 indra/cmake/NVAPI.cmake                             |   0
 indra/cmake/OPENAL.cmake                            |   0
 indra/cmake/OpenGL.cmake                            |   0
 indra/cmake/OpenJPEG.cmake                          |   0
 indra/cmake/OpenSSL.cmake                           |   0
 indra/cmake/PNG.cmake                               |   0
 indra/cmake/PluginAPI.cmake                         |   0
 indra/cmake/Prebuilt.cmake                          |   0
 indra/cmake/PulseAudio.cmake                        |   0
 indra/cmake/Python.cmake                            |   0
 indra/cmake/QuickTimePlugin.cmake                   |   0
 indra/cmake/TemplateCheck.cmake                     |   0
 indra/cmake/Tut.cmake                               |   0
 indra/cmake/UI.cmake                                |   0
 indra/cmake/UnixInstall.cmake                       |   0
 indra/cmake/Variables.cmake                         |   0
 indra/cmake/ViewerMiscLibs.cmake                    |   0
 indra/cmake/VisualLeakDetector.cmake                |   0
 indra/cmake/WebKitLibPlugin.cmake                   |   0
 indra/cmake/XmlRpcEpi.cmake                         |   0
 indra/cmake/ZLIB.cmake                              |   0
 indra/cmake/cmake_dummy.cpp                         |   0
 indra/cmake/run_build_test.py                       |   0
 indra/copy_win_scripts/CMakeLists.txt               |   0
 indra/copy_win_scripts/start-client.py              |   0
 indra/edit-me-to-trigger-new-build.txt              |   0
 indra/fix-incredibuild.py                           |   0
 indra/integration_tests/CMakeLists.txt              |   0
 .../llimage_libtest/CMakeLists.txt                  |   0
 .../llimage_libtest/llimage_libtest.cpp             |   0
 .../llimage_libtest/llimage_libtest.h               |   0
 indra/integration_tests/llui_libtest/CMakeLists.txt |   0
 .../integration_tests/llui_libtest/llui_libtest.cpp |   0
 indra/integration_tests/llui_libtest/llui_libtest.h |   0
 .../integration_tests/llui_libtest/llwidgetreg.cpp  |   0
 indra/integration_tests/llui_libtest/llwidgetreg.h  |   0
 indra/lib/python/indra/__init__.py                  |   0
 indra/lib/python/indra/base/__init__.py             |   0
 indra/lib/python/indra/base/cllsd_test.py           |   0
 indra/lib/python/indra/base/config.py               |   0
 indra/lib/python/indra/base/llsd.py                 |   0
 indra/lib/python/indra/base/lluuid.py               |   0
 indra/lib/python/indra/base/metrics.py              |   0
 indra/lib/python/indra/ipc/__init__.py              |   0
 indra/lib/python/indra/ipc/compatibility.py         |   0
 indra/lib/python/indra/ipc/httputil.py              |   0
 indra/lib/python/indra/ipc/llmessage.py             |   0
 indra/lib/python/indra/ipc/llsdhttp.py              |   0
 indra/lib/python/indra/ipc/mysql_pool.py            |   0
 indra/lib/python/indra/ipc/russ.py                  |   0
 indra/lib/python/indra/ipc/servicebuilder.py        |   0
 indra/lib/python/indra/ipc/siesta.py                |   0
 indra/lib/python/indra/ipc/siesta_test.py           |   0
 indra/lib/python/indra/ipc/tokenstream.py           |   0
 indra/lib/python/indra/ipc/webdav.py                |   0
 indra/lib/python/indra/ipc/xml_rpc.py               |   0
 indra/lib/python/indra/util/__init__.py             |   0
 indra/lib/python/indra/util/fastest_elementtree.py  |   0
 indra/lib/python/indra/util/helpformatter.py        |   0
 indra/lib/python/indra/util/iterators.py            |   0
 indra/lib/python/indra/util/llmanifest.py           |   0
 indra/lib/python/indra/util/llsubprocess.py         |   0
 indra/lib/python/indra/util/llversion.py            |   0
 indra/lib/python/indra/util/named_query.py          |   0
 indra/lib/python/indra/util/shutil2.py              |   0
 indra/lib/python/indra/util/term.py                 |   0
 indra/lib/python/indra/util/test_win32_manifest.py  |   0
 indra/lib/python/uuid.py                            |   0
 indra/linux_crash_logger/CMakeLists.txt             |   0
 indra/linux_crash_logger/linux_crash_logger.cpp     |   0
 indra/linux_crash_logger/llcrashloggerlinux.cpp     |   0
 indra/linux_crash_logger/llcrashloggerlinux.h       |   0
 indra/llaudio/CMakeLists.txt                        |   0
 indra/llaudio/llaudiodecodemgr.cpp                  |   0
 indra/llaudio/llaudiodecodemgr.h                    |   0
 indra/llaudio/llaudioengine.cpp                     |   0
 indra/llaudio/llaudioengine.h                       |   0
 indra/llaudio/llaudioengine_fmod.cpp                |   0
 indra/llaudio/llaudioengine_fmod.h                  |   0
 indra/llaudio/llaudioengine_openal.cpp              |   0
 indra/llaudio/llaudioengine_openal.h                |   0
 indra/llaudio/lllistener.cpp                        |   0
 indra/llaudio/lllistener.h                          |   0
 indra/llaudio/lllistener_ds3d.h                     |   0
 indra/llaudio/lllistener_fmod.cpp                   |   0
 indra/llaudio/lllistener_fmod.h                     |   0
 indra/llaudio/lllistener_openal.cpp                 |   0
 indra/llaudio/lllistener_openal.h                   |   0
 indra/llaudio/llstreamingaudio.h                    |   0
 indra/llaudio/llstreamingaudio_fmod.cpp             |   0
 indra/llaudio/llstreamingaudio_fmod.h               |   0
 indra/llaudio/llvorbisencode.cpp                    |   0
 indra/llaudio/llvorbisencode.h                      |   0
 indra/llaudio/llwindgen.h                           |   0
 indra/llcharacter/CMakeLists.txt                    |   0
 indra/llcharacter/llanimationstates.cpp             |   0
 indra/llcharacter/llanimationstates.h               |   0
 indra/llcharacter/llbvhconsts.h                     |   0
 indra/llcharacter/llbvhloader.cpp                   |   0
 indra/llcharacter/llbvhloader.h                     |   0
 indra/llcharacter/llcharacter.cpp                   |   0
 indra/llcharacter/llcharacter.h                     |   0
 indra/llcharacter/lleditingmotion.cpp               |   0
 indra/llcharacter/lleditingmotion.h                 |   0
 indra/llcharacter/llgesture.cpp                     |   0
 indra/llcharacter/llgesture.h                       |   0
 indra/llcharacter/llhandmotion.cpp                  |   0
 indra/llcharacter/llhandmotion.h                    |   0
 indra/llcharacter/llheadrotmotion.cpp               |   0
 indra/llcharacter/llheadrotmotion.h                 |   0
 indra/llcharacter/lljoint.cpp                       |   0
 indra/llcharacter/lljoint.h                         |   0
 indra/llcharacter/lljointsolverrp3.cpp              |   0
 indra/llcharacter/lljointsolverrp3.h                |   0
 indra/llcharacter/lljointstate.h                    |   0
 indra/llcharacter/llkeyframefallmotion.cpp          |   0
 indra/llcharacter/llkeyframefallmotion.h            |   0
 indra/llcharacter/llkeyframemotion.cpp              |   0
 indra/llcharacter/llkeyframemotion.h                |   0
 indra/llcharacter/llkeyframemotionparam.cpp         |   0
 indra/llcharacter/llkeyframemotionparam.h           |   0
 indra/llcharacter/llkeyframestandmotion.cpp         |   0
 indra/llcharacter/llkeyframestandmotion.h           |   0
 indra/llcharacter/llkeyframewalkmotion.cpp          |   0
 indra/llcharacter/llkeyframewalkmotion.h            |   0
 indra/llcharacter/llmotion.cpp                      |   0
 indra/llcharacter/llmotion.h                        |   0
 indra/llcharacter/llmotioncontroller.cpp            |   0
 indra/llcharacter/llmotioncontroller.h              |   0
 indra/llcharacter/llmultigesture.cpp                |   0
 indra/llcharacter/llmultigesture.h                  |   0
 indra/llcharacter/llpose.cpp                        |   0
 indra/llcharacter/llpose.h                          |   0
 indra/llcharacter/llstatemachine.cpp                |   0
 indra/llcharacter/llstatemachine.h                  |   0
 indra/llcharacter/lltargetingmotion.cpp             |   0
 indra/llcharacter/lltargetingmotion.h               |   0
 indra/llcharacter/llvisualparam.cpp                 |   0
 indra/llcharacter/llvisualparam.h                   |   0
 indra/llcharacter/tests/lljoint_test.cpp            |   0
 indra/llcommon/CMakeLists.txt                       |   0
 indra/llcommon/bitpack.cpp                          |   0
 indra/llcommon/bitpack.h                            |   0
 indra/llcommon/ctype_workaround.h                   |   0
 indra/llcommon/doublelinkedlist.h                   |   0
 indra/llcommon/fix_macros.h                         |   0
 indra/llcommon/imageids.cpp                         |   0
 indra/llcommon/imageids.h                           |   0
 indra/llcommon/indra_constants.cpp                  |   0
 indra/llcommon/indra_constants.h                    |   0
 indra/llcommon/is_approx_equal_fraction.h           |   0
 indra/llcommon/linden_common.h                      |   0
 indra/llcommon/linked_lists.h                       |   0
 indra/llcommon/ll_template_cast.h                   |   0
 indra/llcommon/llaccountingcost.h                   |   0
 indra/llcommon/llagentconstants.h                   |   0
 indra/llcommon/llallocator.cpp                      |   0
 indra/llcommon/llallocator.h                        |   0
 indra/llcommon/llallocator_heap_profile.cpp         |   0
 indra/llcommon/llallocator_heap_profile.h           |   0
 indra/llcommon/llapp.cpp                            |   0
 indra/llcommon/llapp.h                              |   0
 indra/llcommon/llapr.cpp                            |   0
 indra/llcommon/llapr.h                              |   0
 indra/llcommon/llassettype.cpp                      |   0
 indra/llcommon/llassettype.h                        |   0
 indra/llcommon/llassoclist.h                        |   0
 indra/llcommon/llavatarconstants.h                  |   0
 indra/llcommon/llavatarname.cpp                     |   0
 indra/llcommon/llavatarname.h                       |   0
 indra/llcommon/llbase32.cpp                         |   0
 indra/llcommon/llbase32.h                           |   0
 indra/llcommon/llbase64.cpp                         |   0
 indra/llcommon/llbase64.h                           |   0
 indra/llcommon/llboost.h                            |   0
 indra/llcommon/llchat.h                             |   0
 indra/llcommon/llclickaction.h                      |   0
 indra/llcommon/llcommon.cpp                         |   0
 indra/llcommon/llcommon.h                           |   0
 indra/llcommon/llcommonutils.cpp                    |   0
 indra/llcommon/llcommonutils.h                      |   0
 indra/llcommon/llcoros.cpp                          |   0
 indra/llcommon/llcoros.h                            |   0
 indra/llcommon/llcrc.cpp                            |   0
 indra/llcommon/llcrc.h                              |   0
 indra/llcommon/llcriticaldamp.cpp                   |   0
 indra/llcommon/llcriticaldamp.h                     |   0
 indra/llcommon/llcursortypes.cpp                    |   0
 indra/llcommon/llcursortypes.h                      |   0
 indra/llcommon/lldarray.h                           |   0
 indra/llcommon/lldarrayptr.h                        |   0
 indra/llcommon/lldate.cpp                           |   0
 indra/llcommon/lldate.h                             |   0
 indra/llcommon/lldefs.h                             |   0
 indra/llcommon/lldeleteutils.h                      |   0
 indra/llcommon/lldependencies.cpp                   |   0
 indra/llcommon/lldependencies.h                     |   0
 indra/llcommon/lldepthstack.h                       |   0
 indra/llcommon/lldictionary.cpp                     |   0
 indra/llcommon/lldictionary.h                       |   0
 indra/llcommon/lldlinked.h                          |   0
 indra/llcommon/lldoubledispatch.h                   |   0
 indra/llcommon/lldqueueptr.h                        |   0
 indra/llcommon/llendianswizzle.h                    |   0
 indra/llcommon/llenum.h                             |   0
 indra/llcommon/llerror.cpp                          |   0
 indra/llcommon/llerror.h                            |   0
 indra/llcommon/llerrorcontrol.h                     |   0
 indra/llcommon/llerrorlegacy.h                      |   0
 indra/llcommon/llerrorthread.cpp                    |   0
 indra/llcommon/llerrorthread.h                      |   0
 indra/llcommon/llevent.cpp                          |   0
 indra/llcommon/llevent.h                            |   0
 indra/llcommon/lleventapi.cpp                       |   0
 indra/llcommon/lleventapi.h                         |   0
 indra/llcommon/lleventcoro.cpp                      |   0
 indra/llcommon/lleventcoro.h                        |   0
 indra/llcommon/lleventdispatcher.cpp                |   0
 indra/llcommon/lleventdispatcher.h                  |   0
 indra/llcommon/lleventemitter.h                     |   0
 indra/llcommon/lleventfilter.cpp                    |   0
 indra/llcommon/lleventfilter.h                      |   0
 indra/llcommon/llevents.cpp                         |   0
 indra/llcommon/llevents.h                           |   0
 indra/llcommon/lleventtimer.cpp                     |   0
 indra/llcommon/lleventtimer.h                       |   0
 indra/llcommon/llextendedstatus.h                   |   0
 indra/llcommon/llfasttimer.cpp                      |   0
 indra/llcommon/llfasttimer.h                        |   0
 indra/llcommon/llfile.cpp                           |   0
 indra/llcommon/llfile.h                             |   0
 indra/llcommon/llfindlocale.cpp                     |   0
 indra/llcommon/llfindlocale.h                       |   0
 indra/llcommon/llfixedbuffer.cpp                    |   0
 indra/llcommon/llfixedbuffer.h                      |   0
 indra/llcommon/llfoldertype.cpp                     |   0
 indra/llcommon/llformat.cpp                         |   0
 indra/llcommon/llformat.h                           |   0
 indra/llcommon/llframetimer.cpp                     |   0
 indra/llcommon/llframetimer.h                       |   0
 indra/llcommon/llhandle.h                           |   0
 indra/llcommon/llhash.h                             |   0
 indra/llcommon/llheartbeat.cpp                      |   0
 indra/llcommon/llheartbeat.h                        |   0
 indra/llcommon/llhttpstatuscodes.h                  |   0
 indra/llcommon/llindexedqueue.h                     |   0
 indra/llcommon/llinitparam.cpp                      |   0
 indra/llcommon/llinitparam.h                        |   0
 indra/llcommon/llinstancetracker.cpp                |   0
 indra/llcommon/llinstancetracker.h                  |   0
 indra/llcommon/llkeythrottle.h                      |   0
 indra/llcommon/llkeyusetracker.h                    |   0
 indra/llcommon/lllazy.cpp                           |   0
 indra/llcommon/lllazy.h                             |   0
 indra/llcommon/llleap.cpp                           |   0
 indra/llcommon/llleap.h                             |   0
 indra/llcommon/llleaplistener.cpp                   |   0
 indra/llcommon/llleaplistener.h                     |   0
 indra/llcommon/lllinkedqueue.h                      |   0
 indra/llcommon/lllistenerwrapper.h                  |   0
 indra/llcommon/llliveappconfig.cpp                  |   0
 indra/llcommon/llliveappconfig.h                    |   0
 indra/llcommon/lllivefile.cpp                       |   0
 indra/llcommon/lllivefile.h                         |   0
 indra/llcommon/lllocalidhashmap.h                   |   0
 indra/llcommon/lllog.cpp                            |   0
 indra/llcommon/lllog.h                              |   0
 indra/llcommon/lllslconstants.h                     |   0
 indra/llcommon/llmap.h                              |   0
 indra/llcommon/llmd5.cpp                            |   0
 indra/llcommon/llmd5.h                              |   0
 indra/llcommon/llmemory.cpp                         |   0
 indra/llcommon/llmemory.h                           |   0
 indra/llcommon/llmemorystream.cpp                   |   0
 indra/llcommon/llmemorystream.h                     |   0
 indra/llcommon/llmetricperformancetester.cpp        |   0
 indra/llcommon/llmetricperformancetester.h          |   0
 indra/llcommon/llmetrics.cpp                        |   0
 indra/llcommon/llmetrics.h                          |   0
 indra/llcommon/llmortician.cpp                      |   0
 indra/llcommon/llmortician.h                        |   0
 indra/llcommon/llnametable.h                        |   0
 indra/llcommon/lloptioninterface.cpp                |   0
 indra/llcommon/lloptioninterface.h                  |   0
 indra/llcommon/llpointer.h                          |   0
 indra/llcommon/llpreprocessor.h                     |   0
 indra/llcommon/llpriqueuemap.h                      |   0
 indra/llcommon/llprocess.cpp                        |   0
 indra/llcommon/llprocess.h                          |   0
 indra/llcommon/llprocessor.cpp                      |   0
 indra/llcommon/llprocessor.h                        |   0
 indra/llcommon/llptrskiplist.h                      |   0
 indra/llcommon/llptrskipmap.h                       |   0
 indra/llcommon/llptrto.cpp                          |   0
 indra/llcommon/llptrto.h                            |   0
 indra/llcommon/llqueuedthread.cpp                   |   0
 indra/llcommon/llqueuedthread.h                     |   0
 indra/llcommon/llrand.cpp                           |   0
 indra/llcommon/llrand.h                             |   0
 indra/llcommon/llrefcount.cpp                       |   0
 indra/llcommon/llrefcount.h                         |   0
 indra/llcommon/llregistry.h                         |   0
 indra/llcommon/llrun.cpp                            |   0
 indra/llcommon/llrun.h                              |   0
 indra/llcommon/llsafehandle.h                       |   0
 indra/llcommon/llsd.cpp                             |   0
 indra/llcommon/llsd.h                               |   0
 indra/llcommon/llsdparam.cpp                        |   0
 indra/llcommon/llsdparam.h                          |   0
 indra/llcommon/llsdserialize.cpp                    |   0
 indra/llcommon/llsdserialize.h                      |   0
 indra/llcommon/llsdserialize_xml.cpp                |   0
 indra/llcommon/llsdserialize_xml.h                  |   0
 indra/llcommon/llsdutil.cpp                         |   0
 indra/llcommon/llsdutil.h                           |   0
 indra/llcommon/llsecondlifeurls.cpp                 |   0
 indra/llcommon/llsecondlifeurls.h                   |   0
 indra/llcommon/llsimplehash.h                       |   0
 indra/llcommon/llsingleton.cpp                      |   0
 indra/llcommon/llsingleton.h                        |   0
 indra/llcommon/llskiplist.h                         |   0
 indra/llcommon/llskipmap.h                          |   0
 indra/llcommon/llsmoothstep.h                       |   0
 indra/llcommon/llsortedvector.h                     |   0
 indra/llcommon/llstack.h                            |   0
 indra/llcommon/llstacktrace.cpp                     |   0
 indra/llcommon/llstacktrace.h                       |   0
 indra/llcommon/llstat.cpp                           |   0
 indra/llcommon/llstat.h                             |   0
 indra/llcommon/llstatenums.h                        |   0
 indra/llcommon/llstl.h                              |   0
 indra/llcommon/llstreamqueue.cpp                    |   0
 indra/llcommon/llstreamqueue.h                      |   0
 indra/llcommon/llstreamtools.cpp                    |   0
 indra/llcommon/llstreamtools.h                      |   0
 indra/llcommon/llstrider.h                          |   0
 indra/llcommon/llstring.cpp                         |   0
 indra/llcommon/llstring.h                           |   0
 indra/llcommon/llstringtable.cpp                    |   0
 indra/llcommon/llstringtable.h                      |   0
 indra/llcommon/llsys.cpp                            |   0
 indra/llcommon/llsys.h                              |   0
 indra/llcommon/llthread.cpp                         |   0
 indra/llcommon/llthread.h                           |   0
 indra/llcommon/llthreadsafequeue.cpp                |   0
 indra/llcommon/llthreadsafequeue.h                  |   0
 indra/llcommon/lltimer.cpp                          |   0
 indra/llcommon/lltimer.h                            |   0
 indra/llcommon/lltreeiterators.h                    |   0
 indra/llcommon/lltypeinfolookup.h                   |   0
 indra/llcommon/lluri.cpp                            |   0
 indra/llcommon/lluri.h                              |   0
 indra/llcommon/lluuid.cpp                           |   0
 indra/llcommon/lluuid.h                             |   0
 indra/llcommon/lluuidhashmap.h                      |   0
 indra/llcommon/llversionserver.h                    |   0
 indra/llcommon/llversionviewer.h                    |   0
 indra/llcommon/llworkerthread.cpp                   |   0
 indra/llcommon/llworkerthread.h                     |   0
 indra/llcommon/metaclass.cpp                        |   0
 indra/llcommon/metaclass.h                          |   0
 indra/llcommon/metaclasst.h                         |   0
 indra/llcommon/metaproperty.cpp                     |   0
 indra/llcommon/metaproperty.h                       |   0
 indra/llcommon/metapropertyt.h                      |   0
 indra/llcommon/reflective.cpp                       |   0
 indra/llcommon/reflective.h                         |   0
 indra/llcommon/reflectivet.h                        |   0
 indra/llcommon/roles_constants.h                    |   0
 indra/llcommon/stdenums.h                           |   0
 indra/llcommon/stdtypes.h                           |   0
 indra/llcommon/string_table.h                       |   0
 indra/llcommon/stringize.h                          |   0
 indra/llcommon/tests/StringVec.h                    |   0
 indra/llcommon/tests/bitpack_test.cpp               |   0
 indra/llcommon/tests/commonmisc_test.cpp            |   0
 indra/llcommon/tests/listener.h                     |   0
 .../tests/llallocator_heap_profile_test.cpp         |   0
 indra/llcommon/tests/llallocator_test.cpp           |   0
 indra/llcommon/tests/llbase64_test.cpp              |   0
 indra/llcommon/tests/lldate_test.cpp                |   0
 indra/llcommon/tests/lldependencies_test.cpp        |   0
 indra/llcommon/tests/llerror_test.cpp               |   0
 indra/llcommon/tests/lleventcoro_test.cpp           |   0
 indra/llcommon/tests/lleventdispatcher_test.cpp     |   0
 indra/llcommon/tests/lleventfilter_test.cpp         |   0
 indra/llcommon/tests/llframetimer_test.cpp          |   0
 indra/llcommon/tests/llinstancetracker_test.cpp     |   0
 indra/llcommon/tests/lllazy_test.cpp                |   0
 indra/llcommon/tests/llleap_test.cpp                |   0
 indra/llcommon/tests/llmemtype_test.cpp             |   0
 indra/llcommon/tests/llprocess_test.cpp             |   0
 indra/llcommon/tests/llprocessor_test.cpp           |   0
 indra/llcommon/tests/llrand_test.cpp                |   0
 indra/llcommon/tests/llsdserialize_test.cpp         |   0
 indra/llcommon/tests/llsingleton_test.cpp           |   0
 indra/llcommon/tests/llstreamqueue_test.cpp         |   0
 indra/llcommon/tests/llstring_test.cpp              |   0
 indra/llcommon/tests/lltreeiterators_test.cpp       |   0
 indra/llcommon/tests/lluri_test.cpp                 |   0
 indra/llcommon/tests/reflection_test.cpp            |   0
 indra/llcommon/tests/stringize_test.cpp             |   0
 indra/llcommon/tests/wrapllerrs.h                   |   0
 indra/llcommon/timer.h                              |   0
 indra/llcommon/timing.cpp                           |   0
 indra/llcommon/timing.h                             |   0
 indra/llcommon/u64.cpp                              |   0
 indra/llcommon/u64.h                                |   0
 indra/llcorehttp/CMakeLists.txt                     |   0
 indra/llcorehttp/_httpinternal.h                    |   0
 indra/llcorehttp/_httplibcurl.cpp                   |   0
 indra/llcorehttp/_httplibcurl.h                     |   0
 indra/llcorehttp/_httpopcancel.cpp                  |   0
 indra/llcorehttp/_httpopcancel.h                    |   0
 indra/llcorehttp/_httpoperation.cpp                 |   0
 indra/llcorehttp/_httpoperation.h                   |   0
 indra/llcorehttp/_httpoprequest.cpp                 |   0
 indra/llcorehttp/_httpoprequest.h                   |   0
 indra/llcorehttp/_httpopsetget.cpp                  |   0
 indra/llcorehttp/_httpopsetget.h                    |   0
 indra/llcorehttp/_httpopsetpriority.cpp             |   0
 indra/llcorehttp/_httpopsetpriority.h               |   0
 indra/llcorehttp/_httppolicy.cpp                    |   0
 indra/llcorehttp/_httppolicy.h                      |   0
 indra/llcorehttp/_httppolicyclass.cpp               |   0
 indra/llcorehttp/_httppolicyclass.h                 |   0
 indra/llcorehttp/_httppolicyglobal.cpp              |   0
 indra/llcorehttp/_httppolicyglobal.h                |   0
 indra/llcorehttp/_httpreadyqueue.h                  |   0
 indra/llcorehttp/_httpreplyqueue.cpp                |   0
 indra/llcorehttp/_httpreplyqueue.h                  |   0
 indra/llcorehttp/_httprequestqueue.cpp              |   0
 indra/llcorehttp/_httprequestqueue.h                |   0
 indra/llcorehttp/_httpretryqueue.h                  |   0
 indra/llcorehttp/_httpservice.cpp                   |   0
 indra/llcorehttp/_httpservice.h                     |   0
 indra/llcorehttp/_mutex.h                           |   0
 indra/llcorehttp/_refcounted.cpp                    |   0
 indra/llcorehttp/_refcounted.h                      |   0
 indra/llcorehttp/_thread.h                          |   0
 indra/llcorehttp/bufferarray.cpp                    |   0
 indra/llcorehttp/bufferarray.h                      |   0
 indra/llcorehttp/bufferstream.cpp                   |   0
 indra/llcorehttp/bufferstream.h                     |   0
 indra/llcorehttp/examples/http_texture_load.cpp     |   0
 indra/llcorehttp/httpcommon.cpp                     |   0
 indra/llcorehttp/httpcommon.h                       |   0
 indra/llcorehttp/httphandler.h                      |   0
 indra/llcorehttp/httpheaders.cpp                    |   0
 indra/llcorehttp/httpheaders.h                      |   0
 indra/llcorehttp/httpoptions.cpp                    |   0
 indra/llcorehttp/httpoptions.h                      |   0
 indra/llcorehttp/httprequest.cpp                    |   0
 indra/llcorehttp/httprequest.h                      |   0
 indra/llcorehttp/httpresponse.cpp                   |   0
 indra/llcorehttp/httpresponse.h                     |   0
 indra/llcorehttp/tests/llcorehttp_test.cpp          |   0
 indra/llcorehttp/tests/llcorehttp_test.h            |   0
 indra/llcorehttp/tests/test_allocator.cpp           |   0
 indra/llcorehttp/tests/test_allocator.h             |   0
 indra/llcorehttp/tests/test_bufferarray.hpp         |   0
 indra/llcorehttp/tests/test_bufferstream.hpp        |   0
 indra/llcorehttp/tests/test_httpheaders.hpp         |   0
 indra/llcorehttp/tests/test_httpoperation.hpp       |   0
 indra/llcorehttp/tests/test_httprequest.hpp         |   0
 indra/llcorehttp/tests/test_httprequestqueue.hpp    |   0
 indra/llcorehttp/tests/test_httpstatus.hpp          |   0
 indra/llcorehttp/tests/test_llcorehttp_peer.py      |   0
 indra/llcorehttp/tests/test_refcounted.hpp          |   0
 indra/llcorehttp/tests/testrunner.py                |   0
 indra/llcrashlogger/CMakeLists.txt                  |   0
 indra/llcrashlogger/llcrashlogger.cpp               |   0
 indra/llcrashlogger/llcrashlogger.h                 |   0
 indra/llimage/CMakeLists.txt                        |   0
 indra/llimage/llimage.cpp                           |   0
 indra/llimage/llimage.h                             |   0
 indra/llimage/llimagebmp.cpp                        |   0
 indra/llimage/llimagebmp.h                          |   0
 indra/llimage/llimagedimensionsinfo.cpp             |   0
 indra/llimage/llimagedimensionsinfo.h               |   0
 indra/llimage/llimagedxt.cpp                        |   0
 indra/llimage/llimagedxt.h                          |   0
 indra/llimage/llimagej2c.cpp                        |   0
 indra/llimage/llimagej2c.h                          |   0
 indra/llimage/llimagejpeg.cpp                       |   0
 indra/llimage/llimagejpeg.h                         |   0
 indra/llimage/llimagepng.cpp                        |   0
 indra/llimage/llimagepng.h                          |   0
 indra/llimage/llimagetga.cpp                        |   0
 indra/llimage/llimagetga.h                          |   0
 indra/llimage/llimageworker.cpp                     |   0
 indra/llimage/llimageworker.h                       |   0
 indra/llimage/llmapimagetype.h                      |   0
 indra/llimage/llpngwrapper.cpp                      |   0
 indra/llimage/llpngwrapper.h                        |   0
 indra/llimage/tests/llimageworker_test.cpp          |   0
 indra/llimagej2coj/CMakeLists.txt                   |   0
 indra/llimagej2coj/llimagej2coj.cpp                 |   0
 indra/llimagej2coj/llimagej2coj.h                   |   0
 indra/llinventory/CMakeLists.txt                    |   0
 indra/llinventory/llcategory.cpp                    |   0
 indra/llinventory/llcategory.h                      |   0
 indra/llinventory/lleconomy.cpp                     |   0
 indra/llinventory/lleconomy.h                       |   0
 indra/llinventory/llinventory.cpp                   |   0
 indra/llinventory/llinventory.h                     |   0
 indra/llinventory/llinventorydefines.cpp            |   0
 indra/llinventory/llinventorydefines.h              |   0
 indra/llinventory/llinventorytype.cpp               |   0
 indra/llinventory/llinventorytype.h                 |   0
 indra/llinventory/lllandmark.cpp                    |   0
 indra/llinventory/lllandmark.h                      |   0
 indra/llinventory/llnotecard.cpp                    |   0
 indra/llinventory/llnotecard.h                      |   0
 indra/llinventory/llparcel.cpp                      |   0
 indra/llinventory/llparcel.h                        |   0
 indra/llinventory/llparcelflags.h                   |   0
 indra/llinventory/llpermissions.cpp                 |   0
 indra/llinventory/llpermissions.h                   |   0
 indra/llinventory/llpermissionsflags.h              |   0
 indra/llinventory/llsaleinfo.cpp                    |   0
 indra/llinventory/llsaleinfo.h                      |   0
 indra/llinventory/lltransactionflags.cpp            |   0
 indra/llinventory/lltransactionflags.h              |   0
 indra/llinventory/lltransactiontypes.h              |   0
 indra/llinventory/lluserrelations.cpp               |   0
 indra/llinventory/lluserrelations.h                 |   0
 indra/llinventory/tests/inventorymisc_test.cpp      |   0
 indra/llinventory/tests/llparcel_test.cpp           |   0
 indra/llkdu/CMakeLists.txt                          |   0
 indra/llkdu/llimagej2ckdu.cpp                       |   0
 indra/llkdu/llimagej2ckdu.h                         |   0
 indra/llkdu/llkdumem.cpp                            |   0
 indra/llkdu/llkdumem.h                              |   0
 indra/llkdu/tests/llimagej2ckdu_test.cpp            |   0
 indra/llmath/CMakeLists.txt                         |   0
 indra/llmath/camera.h                               |   0
 indra/llmath/coordframe.h                           |   0
 indra/llmath/llbbox.cpp                             |   0
 indra/llmath/llbbox.h                               |   0
 indra/llmath/llbboxlocal.cpp                        |   0
 indra/llmath/llbboxlocal.h                          |   0
 indra/llmath/llcalc.cpp                             |   0
 indra/llmath/llcalc.h                               |   0
 indra/llmath/llcalcparser.cpp                       |   0
 indra/llmath/llcalcparser.h                         |   0
 indra/llmath/llcamera.cpp                           |   0
 indra/llmath/llcamera.h                             |   0
 indra/llmath/llcoord.h                              |   0
 indra/llmath/llcoordframe.cpp                       |   0
 indra/llmath/llcoordframe.h                         |   0
 indra/llmath/llinterp.h                             |   0
 indra/llmath/llline.cpp                             |   0
 indra/llmath/llline.h                               |   0
 indra/llmath/llmath.h                               |   0
 indra/llmath/llmatrix3a.cpp                         |   0
 indra/llmath/llmatrix3a.h                           |   0
 indra/llmath/llmatrix3a.inl                         |   0
 indra/llmath/llmatrix4a.h                           |   0
 indra/llmath/llmodularmath.cpp                      |   0
 indra/llmath/llmodularmath.h                        |   0
 indra/llmath/lloctree.h                             |   0
 indra/llmath/llperlin.cpp                           |   0
 indra/llmath/llperlin.h                             |   0
 indra/llmath/llplane.h                              |   0
 indra/llmath/llquantize.h                           |   0
 indra/llmath/llquaternion.cpp                       |   0
 indra/llmath/llquaternion.h                         |   0
 indra/llmath/llquaternion2.h                        |   0
 indra/llmath/llquaternion2.inl                      |   0
 indra/llmath/llrect.cpp                             |   0
 indra/llmath/llrect.h                               |   0
 indra/llmath/llsdutil_math.cpp                      |   0
 indra/llmath/llsdutil_math.h                        |   0
 indra/llmath/llsimdmath.h                           |   0
 indra/llmath/llsimdtypes.h                          |   0
 indra/llmath/llsimdtypes.inl                        |   0
 indra/llmath/llsphere.cpp                           |   0
 indra/llmath/llsphere.h                             |   0
 indra/llmath/lltreenode.h                           |   0
 indra/llmath/llvector4a.cpp                         |   0
 indra/llmath/llvector4a.h                           |   0
 indra/llmath/llvector4a.inl                         |   0
 indra/llmath/llvector4logical.h                     |   0
 indra/llmath/llvolume.cpp                           |   0
 indra/llmath/llvolume.h                             |   0
 indra/llmath/llvolumemgr.cpp                        |   0
 indra/llmath/llvolumemgr.h                          |   0
 indra/llmath/llvolumeoctree.cpp                     |   0
 indra/llmath/llvolumeoctree.h                       |   0
 indra/llmath/m3math.cpp                             |   0
 indra/llmath/m3math.h                               |   0
 indra/llmath/m4math.cpp                             |   0
 indra/llmath/m4math.h                               |   0
 indra/llmath/raytrace.cpp                           |   0
 indra/llmath/raytrace.h                             |   0
 indra/llmath/tests/alignment_test.cpp               |   0
 indra/llmath/tests/llbbox_test.cpp                  |   0
 indra/llmath/tests/llbboxlocal_test.cpp             |   0
 indra/llmath/tests/llmodularmath_test.cpp           |   0
 indra/llmath/tests/llquaternion_test.cpp            |   0
 indra/llmath/tests/llrect_test.cpp                  |   0
 indra/llmath/tests/m3math_test.cpp                  |   0
 indra/llmath/tests/mathmisc_test.cpp                |   0
 indra/llmath/tests/v2math_test.cpp                  |   0
 indra/llmath/tests/v3color_test.cpp                 |   0
 indra/llmath/tests/v3dmath_test.cpp                 |   0
 indra/llmath/tests/v3math_test.cpp                  |   0
 indra/llmath/tests/v4color_test.cpp                 |   0
 indra/llmath/tests/v4coloru_test.cpp                |   0
 indra/llmath/tests/v4math_test.cpp                  |   0
 indra/llmath/tests/xform_test.cpp                   |   0
 indra/llmath/v2math.cpp                             |   0
 indra/llmath/v2math.h                               |   0
 indra/llmath/v3color.cpp                            |   0
 indra/llmath/v3color.h                              |   0
 indra/llmath/v3dmath.cpp                            |   0
 indra/llmath/v3dmath.h                              |   0
 indra/llmath/v3math.cpp                             |   0
 indra/llmath/v3math.h                               |   0
 indra/llmath/v4color.cpp                            |   0
 indra/llmath/v4color.h                              |   0
 indra/llmath/v4coloru.cpp                           |   0
 indra/llmath/v4coloru.h                             |   0
 indra/llmath/v4math.cpp                             |   0
 indra/llmath/v4math.h                               |   0
 indra/llmath/xform.cpp                              |   0
 indra/llmath/xform.h                                |   0
 indra/llmessage/CMakeLists.txt                      |   0
 indra/llmessage/llares.cpp                          |   0
 indra/llmessage/llares.h                            |   0
 indra/llmessage/llareslistener.cpp                  |   0
 indra/llmessage/llareslistener.h                    |   0
 indra/llmessage/llassetstorage.cpp                  |   0
 indra/llmessage/llassetstorage.h                    |   0
 indra/llmessage/llavatarnamecache.cpp               |   0
 indra/llmessage/llavatarnamecache.h                 |   0
 indra/llmessage/llblowfishcipher.cpp                |   0
 indra/llmessage/llblowfishcipher.h                  |   0
 indra/llmessage/llbuffer.cpp                        |   0
 indra/llmessage/llbuffer.h                          |   0
 indra/llmessage/llbufferstream.cpp                  |   0
 indra/llmessage/llbufferstream.h                    |   0
 indra/llmessage/llcachename.cpp                     |   0
 indra/llmessage/llcachename.h                       |   0
 indra/llmessage/llchainio.cpp                       |   0
 indra/llmessage/llchainio.h                         |   0
 indra/llmessage/llcipher.h                          |   0
 indra/llmessage/llcircuit.cpp                       |   0
 indra/llmessage/llcircuit.h                         |   0
 indra/llmessage/llclassifiedflags.cpp               |   0
 indra/llmessage/llclassifiedflags.h                 |   0
 indra/llmessage/llcurl.cpp                          |   0
 indra/llmessage/llcurl.h                            |   0
 indra/llmessage/lldatapacker.cpp                    |   0
 indra/llmessage/lldatapacker.h                      |   0
 indra/llmessage/lldbstrings.h                       |   0
 indra/llmessage/lldispatcher.cpp                    |   0
 indra/llmessage/lldispatcher.h                      |   0
 indra/llmessage/lleventflags.h                      |   0
 indra/llmessage/llfiltersd2xmlrpc.cpp               |   0
 indra/llmessage/llfiltersd2xmlrpc.h                 |   0
 indra/llmessage/llfollowcamparams.h                 |   0
 indra/llmessage/llhost.cpp                          |   0
 indra/llmessage/llhost.h                            |   0
 indra/llmessage/llhttpassetstorage.cpp              |   0
 indra/llmessage/llhttpassetstorage.h                |   0
 indra/llmessage/llhttpclient.cpp                    |   0
 indra/llmessage/llhttpclient.h                      |   0
 indra/llmessage/llhttpclientadapter.cpp             |   0
 indra/llmessage/llhttpclientadapter.h               |   0
 indra/llmessage/llhttpclientinterface.h             |   0
 indra/llmessage/llhttpnode.cpp                      |   0
 indra/llmessage/llhttpnode.h                        |   0
 indra/llmessage/llhttpnodeadapter.h                 |   0
 indra/llmessage/llhttpsender.cpp                    |   0
 indra/llmessage/llhttpsender.h                      |   0
 indra/llmessage/llinstantmessage.cpp                |   0
 indra/llmessage/llinstantmessage.h                  |   0
 indra/llmessage/llinvite.h                          |   0
 indra/llmessage/lliobuffer.cpp                      |   0
 indra/llmessage/lliobuffer.h                        |   0
 indra/llmessage/lliohttpserver.cpp                  |   0
 indra/llmessage/lliohttpserver.h                    |   0
 indra/llmessage/lliopipe.cpp                        |   0
 indra/llmessage/lliopipe.h                          |   0
 indra/llmessage/lliosocket.cpp                      |   0
 indra/llmessage/lliosocket.h                        |   0
 indra/llmessage/llioutil.cpp                        |   0
 indra/llmessage/llioutil.h                          |   0
 indra/llmessage/llloginflags.h                      |   0
 indra/llmessage/llmail.cpp                          |   0
 indra/llmessage/llmail.h                            |   0
 indra/llmessage/llmessagebuilder.cpp                |   0
 indra/llmessage/llmessagebuilder.h                  |   0
 indra/llmessage/llmessageconfig.cpp                 |   0
 indra/llmessage/llmessageconfig.h                   |   0
 indra/llmessage/llmessagereader.cpp                 |   0
 indra/llmessage/llmessagereader.h                   |   0
 indra/llmessage/llmessagesenderinterface.h          |   0
 indra/llmessage/llmessagetemplate.cpp               |   0
 indra/llmessage/llmessagetemplate.h                 |   0
 indra/llmessage/llmessagetemplateparser.cpp         |   0
 indra/llmessage/llmessagetemplateparser.h           |   0
 indra/llmessage/llmessagethrottle.cpp               |   0
 indra/llmessage/llmessagethrottle.h                 |   0
 indra/llmessage/llmime.cpp                          |   0
 indra/llmessage/llmime.h                            |   0
 indra/llmessage/llmsgvariabletype.h                 |   0
 indra/llmessage/llnamevalue.cpp                     |   0
 indra/llmessage/llnamevalue.h                       |   0
 indra/llmessage/llnullcipher.cpp                    |   0
 indra/llmessage/llnullcipher.h                      |   0
 indra/llmessage/llpacketack.cpp                     |   0
 indra/llmessage/llpacketack.h                       |   0
 indra/llmessage/llpacketbuffer.cpp                  |   0
 indra/llmessage/llpacketbuffer.h                    |   0
 indra/llmessage/llpacketring.cpp                    |   0
 indra/llmessage/llpacketring.h                      |   0
 indra/llmessage/llpartdata.cpp                      |   0
 indra/llmessage/llpartdata.h                        |   0
 indra/llmessage/llproxy.cpp                         |   0
 indra/llmessage/llproxy.h                           |   0
 indra/llmessage/llpumpio.cpp                        |   0
 indra/llmessage/llpumpio.h                          |   0
 indra/llmessage/llqueryflags.h                      |   0
 indra/llmessage/llregionflags.h                     |   0
 indra/llmessage/llregionhandle.h                    |   0
 indra/llmessage/llregionpresenceverifier.cpp        |   0
 indra/llmessage/llregionpresenceverifier.h          |   0
 indra/llmessage/llsdappservices.cpp                 |   0
 indra/llmessage/llsdappservices.h                   |   0
 indra/llmessage/llsdhttpserver.cpp                  |   0
 indra/llmessage/llsdhttpserver.h                    |   0
 indra/llmessage/llsdmessage.cpp                     |   0
 indra/llmessage/llsdmessage.h                       |   0
 indra/llmessage/llsdmessagebuilder.cpp              |   0
 indra/llmessage/llsdmessagebuilder.h                |   0
 indra/llmessage/llsdmessagereader.cpp               |   0
 indra/llmessage/llsdmessagereader.h                 |   0
 indra/llmessage/llsdrpcclient.cpp                   |   0
 indra/llmessage/llsdrpcclient.h                     |   0
 indra/llmessage/llsdrpcserver.cpp                   |   0
 indra/llmessage/llsdrpcserver.h                     |   0
 indra/llmessage/llservice.cpp                       |   0
 indra/llmessage/llservice.h                         |   0
 indra/llmessage/llservicebuilder.cpp                |   0
 indra/llmessage/llservicebuilder.h                  |   0
 indra/llmessage/llstoredmessage.cpp                 |   0
 indra/llmessage/llstoredmessage.h                   |   0
 indra/llmessage/lltaskname.h                        |   0
 indra/llmessage/llteleportflags.h                   |   0
 indra/llmessage/lltemplatemessagebuilder.cpp        |   0
 indra/llmessage/lltemplatemessagebuilder.h          |   0
 indra/llmessage/lltemplatemessagedispatcher.cpp     |   0
 indra/llmessage/lltemplatemessagedispatcher.h       |   0
 indra/llmessage/lltemplatemessagereader.cpp         |   0
 indra/llmessage/lltemplatemessagereader.h           |   0
 indra/llmessage/llthrottle.cpp                      |   0
 indra/llmessage/llthrottle.h                        |   0
 indra/llmessage/lltransfermanager.cpp               |   0
 indra/llmessage/lltransfermanager.h                 |   0
 indra/llmessage/lltransfersourceasset.cpp           |   0
 indra/llmessage/lltransfersourceasset.h             |   0
 indra/llmessage/lltransfersourcefile.cpp            |   0
 indra/llmessage/lltransfersourcefile.h              |   0
 indra/llmessage/lltransfertargetfile.cpp            |   0
 indra/llmessage/lltransfertargetfile.h              |   0
 indra/llmessage/lltransfertargetvfile.cpp           |   0
 indra/llmessage/lltransfertargetvfile.h             |   0
 indra/llmessage/lltrustedmessageservice.cpp         |   0
 indra/llmessage/lltrustedmessageservice.h           |   0
 indra/llmessage/llurlrequest.cpp                    |   0
 indra/llmessage/llurlrequest.h                      |   0
 indra/llmessage/lluseroperation.cpp                 |   0
 indra/llmessage/lluseroperation.h                   |   0
 indra/llmessage/llvehicleparams.h                   |   0
 indra/llmessage/llxfer.cpp                          |   0
 indra/llmessage/llxfer.h                            |   0
 indra/llmessage/llxfer_file.cpp                     |   0
 indra/llmessage/llxfer_file.h                       |   0
 indra/llmessage/llxfer_mem.cpp                      |   0
 indra/llmessage/llxfer_mem.h                        |   0
 indra/llmessage/llxfer_vfile.cpp                    |   0
 indra/llmessage/llxfer_vfile.h                      |   0
 indra/llmessage/llxfermanager.cpp                   |   0
 indra/llmessage/llxfermanager.h                     |   0
 indra/llmessage/llxorcipher.cpp                     |   0
 indra/llmessage/llxorcipher.h                       |   0
 indra/llmessage/machine.cpp                         |   0
 indra/llmessage/machine.h                           |   0
 indra/llmessage/mean_collision_data.h               |   0
 indra/llmessage/message.cpp                         |   0
 indra/llmessage/message.h                           |   0
 indra/llmessage/message_prehash.cpp                 |   0
 indra/llmessage/message_prehash.h                   |   0
 indra/llmessage/message_string_table.cpp            |   0
 indra/llmessage/net.cpp                             |   0
 indra/llmessage/net.h                               |   0
 indra/llmessage/partsyspacket.cpp                   |   0
 indra/llmessage/partsyspacket.h                     |   0
 indra/llmessage/patch_code.cpp                      |   0
 indra/llmessage/patch_code.h                        |   0
 indra/llmessage/patch_dct.cpp                       |   0
 indra/llmessage/patch_dct.h                         |   0
 indra/llmessage/patch_idct.cpp                      |   0
 indra/llmessage/sound_ids.cpp                       |   0
 indra/llmessage/sound_ids.h                         |   0
 indra/llmessage/tests/commtest.h                    |   0
 indra/llmessage/tests/llareslistener_test.cpp       |   0
 indra/llmessage/tests/llavatarnamecache_test.cpp    |   0
 indra/llmessage/tests/llcurl_stub.cpp               |   0
 indra/llmessage/tests/llhost_test.cpp               |   0
 indra/llmessage/tests/llhttpclient_test.cpp         |   0
 indra/llmessage/tests/llhttpclientadapter_test.cpp  |   0
 indra/llmessage/tests/llmime_test.cpp               |   0
 indra/llmessage/tests/llmockhttpclient.h            |   0
 indra/llmessage/tests/llnamevalue_test.cpp          |   0
 indra/llmessage/tests/llpartdata_test.cpp           |   0
 .../tests/llregionpresenceverifier_test.cpp         |   0
 indra/llmessage/tests/llsdmessage_test.cpp          |   0
 .../tests/lltemplatemessagedispatcher_test.cpp      |   0
 indra/llmessage/tests/lltesthttpclientadapter.cpp   |   0
 indra/llmessage/tests/lltesthttpclientadapter.h     |   0
 indra/llmessage/tests/lltestmessagesender.cpp       |   0
 indra/llmessage/tests/lltestmessagesender.h         |   0
 .../tests/lltrustedmessageservice_test.cpp          |   0
 indra/llmessage/tests/llxfer_file_test.cpp          |   0
 indra/llmessage/tests/networkio.h                   |   0
 indra/llmessage/tests/test_llsdmessage_peer.py      |   0
 indra/llmessage/tests/testrunner.py                 |   0
 indra/llplugin/CMakeLists.txt                       |   0
 indra/llplugin/llpluginclassmedia.cpp               |   0
 indra/llplugin/llpluginclassmedia.h                 |   0
 indra/llplugin/llpluginclassmediaowner.h            |   0
 indra/llplugin/llplugincookiestore.cpp              |   0
 indra/llplugin/llplugincookiestore.h                |   0
 indra/llplugin/llplugininstance.cpp                 |   0
 indra/llplugin/llplugininstance.h                   |   0
 indra/llplugin/llpluginmessage.cpp                  |   0
 indra/llplugin/llpluginmessage.h                    |   0
 indra/llplugin/llpluginmessageclasses.h             |   0
 indra/llplugin/llpluginmessagepipe.cpp              |   0
 indra/llplugin/llpluginmessagepipe.h                |   0
 indra/llplugin/llpluginprocesschild.cpp             |   0
 indra/llplugin/llpluginprocesschild.h               |   0
 indra/llplugin/llpluginprocessparent.cpp            |   0
 indra/llplugin/llpluginprocessparent.h              |   0
 indra/llplugin/llpluginsharedmemory.cpp             |   0
 indra/llplugin/llpluginsharedmemory.h               |   0
 indra/llplugin/slplugin/CMakeLists.txt              |   0
 indra/llplugin/slplugin/slplugin-objc.h             |   0
 indra/llplugin/slplugin/slplugin-objc.mm            |   0
 indra/llplugin/slplugin/slplugin.cpp                |   0
 indra/llplugin/slplugin/slplugin_info.plist         |   0
 indra/llplugin/tests/llplugincookiestore_test.cpp   |   0
 indra/llprimitive/CMakeLists.txt                    |   0
 indra/llprimitive/legacy_object_types.h             |   0
 indra/llprimitive/llmaterialtable.cpp               |   0
 indra/llprimitive/llmaterialtable.h                 |   0
 indra/llprimitive/llmediaentry.cpp                  |   0
 indra/llprimitive/llmediaentry.h                    |   0
 indra/llprimitive/llmodel.cpp                       |   0
 indra/llprimitive/llmodel.h                         |   0
 indra/llprimitive/llprimitive.cpp                   |   0
 indra/llprimitive/llprimitive.h                     |   0
 indra/llprimitive/llprimlinkinfo.h                  |   0
 indra/llprimitive/llprimtexturelist.cpp             |   0
 indra/llprimitive/llprimtexturelist.h               |   0
 indra/llprimitive/lltextureanim.cpp                 |   0
 indra/llprimitive/lltextureanim.h                   |   0
 indra/llprimitive/lltextureentry.cpp                |   0
 indra/llprimitive/lltextureentry.h                  |   0
 indra/llprimitive/lltree_common.h                   |   0
 indra/llprimitive/lltreeparams.cpp                  |   0
 indra/llprimitive/lltreeparams.h                    |   0
 indra/llprimitive/llvolumemessage.cpp               |   0
 indra/llprimitive/llvolumemessage.h                 |   0
 indra/llprimitive/llvolumexml.cpp                   |   0
 indra/llprimitive/llvolumexml.h                     |   0
 indra/llprimitive/material_codes.cpp                |   0
 indra/llprimitive/material_codes.h                  |   0
 indra/llprimitive/object_flags.h                    |   0
 indra/llprimitive/tests/llmediaentry_test.cpp       |   0
 indra/llprimitive/tests/llmessagesystem_stub.cpp    |   0
 indra/llprimitive/tests/llprimitive_test.cpp        |   0
 indra/llrender/CMakeLists.txt                       |   0
 indra/llrender/llcubemap.cpp                        |   0
 indra/llrender/llcubemap.h                          |   0
 indra/llrender/llfontbitmapcache.cpp                |   0
 indra/llrender/llfontbitmapcache.h                  |   0
 indra/llrender/llfontfreetype.cpp                   |   0
 indra/llrender/llfontfreetype.h                     |   0
 indra/llrender/llfontgl.cpp                         |   0
 indra/llrender/llfontgl.h                           |   0
 indra/llrender/llfontregistry.cpp                   |   0
 indra/llrender/llfontregistry.h                     |   0
 indra/llrender/llgl.cpp                             |   0
 indra/llrender/llgl.h                               |   0
 indra/llrender/llgldbg.cpp                          |   0
 indra/llrender/llgldbg.h                            |   0
 indra/llrender/llglheaders.h                        |   0
 indra/llrender/llglslshader.cpp                     |   0
 indra/llrender/llglslshader.h                       |   0
 indra/llrender/llglstates.h                         |   0
 indra/llrender/llgltypes.h                          |   0
 indra/llrender/llimagegl.cpp                        |   0
 indra/llrender/llimagegl.h                          |   0
 indra/llrender/llpostprocess.cpp                    |   0
 indra/llrender/llpostprocess.h                      |   0
 indra/llrender/llrender.cpp                         |   0
 indra/llrender/llrender.h                           |   0
 indra/llrender/llrendernavprim.cpp                  |   0
 indra/llrender/llrendernavprim.h                    |   0
 indra/llrender/llrendersphere.cpp                   |   0
 indra/llrender/llrendersphere.h                     |   0
 indra/llrender/llrendertarget.cpp                   |   0
 indra/llrender/llrendertarget.h                     |   0
 indra/llrender/llshadermgr.cpp                      |   0
 indra/llrender/llshadermgr.h                        |   0
 indra/llrender/lltexture.cpp                        |   0
 indra/llrender/lltexture.h                          |   0
 indra/llrender/llvertexbuffer.cpp                   |   0
 indra/llrender/llvertexbuffer.h                     |   0
 indra/llui/CMakeLists.txt                           |   0
 indra/llui/llaccordionctrl.cpp                      |   0
 indra/llui/llaccordionctrl.h                        |   0
 indra/llui/llaccordionctrltab.cpp                   |   0
 indra/llui/llaccordionctrltab.h                     |   0
 indra/llui/llbadge.cpp                              |   0
 indra/llui/llbadge.h                                |   0
 indra/llui/llbadgeholder.cpp                        |   0
 indra/llui/llbadgeholder.h                          |   0
 indra/llui/llbadgeowner.cpp                         |   0
 indra/llui/llbadgeowner.h                           |   0
 indra/llui/llbutton.cpp                             |   0
 indra/llui/llbutton.h                               |   0
 indra/llui/llcallbackmap.h                          |   0
 indra/llui/llchatentry.cpp                          |   0
 indra/llui/llchatentry.h                            |   0
 indra/llui/llcheckboxctrl.cpp                       |   0
 indra/llui/llcheckboxctrl.h                         |   0
 indra/llui/llclipboard.cpp                          |   0
 indra/llui/llclipboard.h                            |   0
 indra/llui/llcombobox.cpp                           |   0
 indra/llui/llcombobox.h                             |   0
 indra/llui/llcommandmanager.cpp                     |   0
 indra/llui/llcommandmanager.h                       |   0
 indra/llui/llconsole.cpp                            |   0
 indra/llui/llconsole.h                              |   0
 indra/llui/llcontainerview.cpp                      |   0
 indra/llui/llcontainerview.h                        |   0
 indra/llui/llctrlselectioninterface.cpp             |   0
 indra/llui/llctrlselectioninterface.h               |   0
 indra/llui/lldockablefloater.cpp                    |   0
 indra/llui/lldockablefloater.h                      |   0
 indra/llui/lldockcontrol.cpp                        |   0
 indra/llui/lldockcontrol.h                          |   0
 indra/llui/lldraghandle.cpp                         |   0
 indra/llui/lldraghandle.h                           |   0
 indra/llui/lleditmenuhandler.cpp                    |   0
 indra/llui/lleditmenuhandler.h                      |   0
 indra/llui/llf32uictrl.cpp                          |   0
 indra/llui/llf32uictrl.h                            |   0
 indra/llui/llfiltereditor.cpp                       |   0
 indra/llui/llfiltereditor.h                         |   0
 indra/llui/llflashtimer.cpp                         |   0
 indra/llui/llflashtimer.h                           |   0
 indra/llui/llflatlistview.cpp                       |   0
 indra/llui/llflatlistview.h                         |   0
 indra/llui/llfloater.cpp                            |   0
 indra/llui/llfloater.h                              |   0
 indra/llui/llfloaterreg.cpp                         |   0
 indra/llui/llfloaterreg.h                           |   0
 indra/llui/llfloaterreglistener.cpp                 |   0
 indra/llui/llfloaterreglistener.h                   |   0
 indra/llui/llflyoutbutton.cpp                       |   0
 indra/llui/llflyoutbutton.h                         |   0
 indra/llui/llfocusmgr.cpp                           |   0
 indra/llui/llfocusmgr.h                             |   0
 indra/llui/llfolderview.cpp                         |   0
 indra/llui/llfolderview.h                           |   0
 indra/llui/llfolderviewmodel.cpp                    |   0
 indra/llui/llfolderviewmodel.h                      |   0
 indra/llui/llfunctorregistry.cpp                    |   0
 indra/llui/llfunctorregistry.h                      |   0
 indra/llui/llhelp.h                                 |   0
 indra/llui/lliconctrl.cpp                           |   0
 indra/llui/lliconctrl.h                             |   0
 indra/llui/llkeywords.cpp                           |   0
 indra/llui/llkeywords.h                             |   0
 indra/llui/lllayoutstack.cpp                        |   0
 indra/llui/lllayoutstack.h                          |   0
 indra/llui/lllazyvalue.h                            |   0
 indra/llui/lllineeditor.cpp                         |   0
 indra/llui/lllineeditor.h                           |   0
 indra/llui/llloadingindicator.cpp                   |   0
 indra/llui/llloadingindicator.h                     |   0
 indra/llui/lllocalcliprect.cpp                      |   0
 indra/llui/lllocalcliprect.h                        |   0
 indra/llui/llmenubutton.cpp                         |   0
 indra/llui/llmenubutton.h                           |   0
 indra/llui/llmenugl.cpp                             |   0
 indra/llui/llmenugl.h                               |   0
 indra/llui/llmodaldialog.cpp                        |   0
 indra/llui/llmodaldialog.h                          |   0
 indra/llui/llmultifloater.cpp                       |   0
 indra/llui/llmultifloater.h                         |   0
 indra/llui/llmultislider.cpp                        |   0
 indra/llui/llmultislider.h                          |   0
 indra/llui/llmultisliderctrl.cpp                    |   0
 indra/llui/llmultisliderctrl.h                      |   0
 indra/llui/llnotificationptr.h                      |   0
 indra/llui/llnotifications.cpp                      |   0
 indra/llui/llnotifications.h                        |   0
 indra/llui/llnotificationsutil.cpp                  |   0
 indra/llui/llnotificationsutil.h                    |   0
 indra/llui/llnotificationtemplate.h                 |   0
 indra/llui/llnotificationvisibilityrule.h           |   0
 indra/llui/llpanel.cpp                              |   0
 indra/llui/llpanel.h                                |   0
 indra/llui/llprogressbar.cpp                        |   0
 indra/llui/llprogressbar.h                          |   0
 indra/llui/llradiogroup.cpp                         |   0
 indra/llui/llradiogroup.h                           |   0
 indra/llui/llresizebar.cpp                          |   0
 indra/llui/llresizebar.h                            |   0
 indra/llui/llresizehandle.cpp                       |   0
 indra/llui/llresizehandle.h                         |   0
 indra/llui/llresmgr.cpp                             |   0
 indra/llui/llresmgr.h                               |   0
 indra/llui/llrngwriter.cpp                          |   0
 indra/llui/llrngwriter.h                            |   0
 indra/llui/llscrollbar.cpp                          |   0
 indra/llui/llscrollbar.h                            |   0
 indra/llui/llscrollcontainer.cpp                    |   0
 indra/llui/llscrollcontainer.h                      |   0
 indra/llui/llscrollingpanellist.cpp                 |   0
 indra/llui/llscrollingpanellist.h                   |   0
 indra/llui/llscrolllistcell.cpp                     |   0
 indra/llui/llscrolllistcell.h                       |   0
 indra/llui/llscrolllistcolumn.cpp                   |   0
 indra/llui/llscrolllistcolumn.h                     |   0
 indra/llui/llscrolllistctrl.cpp                     |   0
 indra/llui/llscrolllistctrl.h                       |   0
 indra/llui/llscrolllistitem.cpp                     |   0
 indra/llui/llscrolllistitem.h                       |   0
 indra/llui/llsearcheditor.cpp                       |   0
 indra/llui/llsearcheditor.h                         |   0
 indra/llui/llslider.cpp                             |   0
 indra/llui/llslider.h                               |   0
 indra/llui/llsliderctrl.cpp                         |   0
 indra/llui/llsliderctrl.h                           |   0
 indra/llui/llspellcheck.cpp                         |   0
 indra/llui/llspellcheck.h                           |   0
 indra/llui/llspellcheckmenuhandler.h                |   0
 indra/llui/llspinctrl.cpp                           |   0
 indra/llui/llspinctrl.h                             |   0
 indra/llui/llstatbar.cpp                            |   0
 indra/llui/llstatbar.h                              |   0
 indra/llui/llstatgraph.cpp                          |   0
 indra/llui/llstatgraph.h                            |   0
 indra/llui/llstatview.cpp                           |   0
 indra/llui/llstatview.h                             |   0
 indra/llui/llstyle.cpp                              |   0
 indra/llui/llstyle.h                                |   0
 indra/llui/lltabcontainer.cpp                       |   0
 indra/llui/lltabcontainer.h                         |   0
 indra/llui/lltextbase.cpp                           |   0
 indra/llui/lltextbase.h                             |   0
 indra/llui/lltextbox.cpp                            |   0
 indra/llui/lltextbox.h                              |   0
 indra/llui/lltexteditor.cpp                         |   0
 indra/llui/lltexteditor.h                           |   0
 indra/llui/lltextparser.cpp                         |   0
 indra/llui/lltextparser.h                           |   0
 indra/llui/lltextutil.cpp                           |   0
 indra/llui/lltextutil.h                             |   0
 indra/llui/lltextvalidate.cpp                       |   0
 indra/llui/lltextvalidate.h                         |   0
 indra/llui/lltimectrl.cpp                           |   0
 indra/llui/lltimectrl.h                             |   0
 indra/llui/lltoggleablemenu.cpp                     |   0
 indra/llui/lltoggleablemenu.h                       |   0
 indra/llui/lltoolbar.cpp                            |   0
 indra/llui/lltoolbar.h                              |   0
 indra/llui/lltooltip.cpp                            |   0
 indra/llui/lltooltip.h                              |   0
 indra/llui/lltrans.cpp                              |   0
 indra/llui/lltrans.h                                |   0
 indra/llui/lltransutil.cpp                          |   0
 indra/llui/lltransutil.h                            |   0
 indra/llui/llui.cpp                                 |   0
 indra/llui/llui.h                                   |   0
 indra/llui/lluicolor.cpp                            |   0
 indra/llui/lluicolor.h                              |   0
 indra/llui/lluicolortable.cpp                       |   0
 indra/llui/lluicolortable.h                         |   0
 indra/llui/lluiconstants.h                          |   0
 indra/llui/lluictrl.cpp                             |   0
 indra/llui/lluictrl.h                               |   0
 indra/llui/lluictrlfactory.cpp                      |   0
 indra/llui/lluictrlfactory.h                        |   0
 indra/llui/lluifwd.h                                |   0
 indra/llui/lluiimage.cpp                            |   0
 indra/llui/lluiimage.h                              |   0
 indra/llui/lluistring.cpp                           |   0
 indra/llui/lluistring.h                             |   0
 indra/llui/llundo.cpp                               |   0
 indra/llui/llundo.h                                 |   0
 indra/llui/llurlaction.cpp                          |   0
 indra/llui/llurlaction.h                            |   0
 indra/llui/llurlentry.cpp                           |   0
 indra/llui/llurlentry.h                             |   0
 indra/llui/llurlmatch.cpp                           |   0
 indra/llui/llurlmatch.h                             |   0
 indra/llui/llurlregistry.cpp                        |   0
 indra/llui/llurlregistry.h                          |   0
 indra/llui/llview.cpp                               |   0
 indra/llui/llview.h                                 |   0
 indra/llui/llviewborder.cpp                         |   0
 indra/llui/llviewborder.h                           |   0
 indra/llui/llviewinject.cpp                         |   0
 indra/llui/llviewinject.h                           |   0
 indra/llui/llviewmodel.cpp                          |   0
 indra/llui/llviewmodel.h                            |   0
 indra/llui/llviewquery.cpp                          |   0
 indra/llui/llviewquery.h                            |   0
 indra/llui/llwindowshade.cpp                        |   0
 indra/llui/llwindowshade.h                          |   0
 indra/llui/llxuiparser.cpp                          |   0
 indra/llui/llxuiparser.h                            |   0
 indra/llui/tests/llurlentry_stub.cpp                |   0
 indra/llui/tests/llurlentry_test.cpp                |   0
 indra/llui/tests/llurlmatch_test.cpp                |   0
 indra/llvfs/CMakeLists.txt                          |   0
 indra/llvfs/lldir.cpp                               |   0
 indra/llvfs/lldir.h                                 |   0
 indra/llvfs/lldir_linux.cpp                         |   0
 indra/llvfs/lldir_linux.h                           |   0
 indra/llvfs/lldir_mac.cpp                           |   0
 indra/llvfs/lldir_mac.h                             |   0
 indra/llvfs/lldir_solaris.cpp                       |   0
 indra/llvfs/lldir_solaris.h                         |   0
 indra/llvfs/lldir_win32.cpp                         |   0
 indra/llvfs/lldir_win32.h                           |   0
 indra/llvfs/lldirguard.h                            |   0
 indra/llvfs/lldiriterator.cpp                       |   0
 indra/llvfs/lldiriterator.h                         |   0
 indra/llvfs/lllfsthread.cpp                         |   0
 indra/llvfs/lllfsthread.h                           |   0
 indra/llvfs/llpidlock.cpp                           |   0
 indra/llvfs/llpidlock.h                             |   0
 indra/llvfs/llvfile.cpp                             |   0
 indra/llvfs/llvfile.h                               |   0
 indra/llvfs/llvfs.cpp                               |   0
 indra/llvfs/llvfs.h                                 |   0
 indra/llvfs/llvfs_objc.h                            |   0
 indra/llvfs/llvfs_objc.mm                           |   0
 indra/llvfs/llvfsthread.cpp                         |   0
 indra/llvfs/llvfsthread.h                           |   0
 indra/llvfs/tests/lldir_test.cpp                    |   0
 indra/llvfs/tests/lldiriterator_test.cpp            |   0
 indra/llwindow/CMakeLists.txt                       |   0
 indra/llwindow/GL/glh_extensions.h                  |   0
 indra/llwindow/GL/glh_genext.h                      |   0
 indra/llwindow/lldragdropwin32.cpp                  |   0
 indra/llwindow/lldragdropwin32.h                    |   0
 indra/llwindow/lldxhardware.cpp                     |   0
 indra/llwindow/lldxhardware.h                       |   0
 indra/llwindow/llkeyboard.cpp                       |   0
 indra/llwindow/llkeyboard.h                         |   0
 indra/llwindow/llkeyboardheadless.cpp               |   0
 indra/llwindow/llkeyboardheadless.h                 |   0
 indra/llwindow/llkeyboardmacosx.cpp                 |   0
 indra/llwindow/llkeyboardmacosx.h                   |   0
 indra/llwindow/llkeyboardsdl.cpp                    |   0
 indra/llwindow/llkeyboardsdl.h                      |   0
 indra/llwindow/llkeyboardwin32.cpp                  |   0
 indra/llwindow/llkeyboardwin32.h                    |   0
 indra/llwindow/llmousehandler.cpp                   |   0
 indra/llwindow/llmousehandler.h                     |   0
 indra/llwindow/llpreeditor.h                        |   0
 indra/llwindow/llwindow.cpp                         |   0
 indra/llwindow/llwindow.h                           |   0
 indra/llwindow/llwindowcallbacks.cpp                |   0
 indra/llwindow/llwindowcallbacks.h                  |   0
 indra/llwindow/llwindowheadless.cpp                 |   0
 indra/llwindow/llwindowheadless.h                   |   0
 indra/llwindow/llwindowmacosx-objc.h                |   0
 indra/llwindow/llwindowmacosx-objc.mm               |   0
 indra/llwindow/llwindowmacosx.cpp                   |   0
 indra/llwindow/llwindowmacosx.h                     |   0
 indra/llwindow/llwindowmesaheadless.cpp             |   0
 indra/llwindow/llwindowmesaheadless.h               |   0
 indra/llwindow/llwindowsdl.cpp                      |   0
 indra/llwindow/llwindowsdl.h                        |   0
 indra/llwindow/llwindowwin32.cpp                    |   0
 indra/llwindow/llwindowwin32.h                      |   0
 indra/llxml/CMakeLists.txt                          |   0
 indra/llxml/llcontrol.cpp                           |   0
 indra/llxml/llcontrol.h                             |   0
 indra/llxml/llcontrolgroupreader.h                  |   0
 indra/llxml/llxmlnode.cpp                           |   0
 indra/llxml/llxmlnode.h                             |   0
 indra/llxml/llxmlparser.cpp                         |   0
 indra/llxml/llxmlparser.h                           |   0
 indra/llxml/llxmltree.cpp                           |   0
 indra/llxml/llxmltree.h                             |   0
 indra/llxml/tests/llcontrol_test.cpp                |   0
 indra/lscript/CMakeLists.txt                        |   0
 indra/lscript/llscriptresource.h                    |   0
 indra/lscript/llscriptresourceconsumer.h            |   0
 indra/lscript/llscriptresourcepool.h                |   0
 indra/lscript/lscript_alloc.h                       |   0
 indra/lscript/lscript_byteconvert.h                 |   0
 indra/lscript/lscript_byteformat.h                  |   0
 indra/lscript/lscript_compile/CMakeLists.txt        |   0
 indra/lscript/lscript_compile/indra.l               |   0
 indra/lscript/lscript_compile/indra.y               |   0
 indra/lscript/lscript_compile/lscript_alloc.cpp     |   0
 indra/lscript/lscript_compile/lscript_bytecode.cpp  |   0
 indra/lscript/lscript_compile/lscript_bytecode.h    |   0
 indra/lscript/lscript_compile/lscript_error.cpp     |   0
 indra/lscript/lscript_compile/lscript_error.h       |   0
 indra/lscript/lscript_compile/lscript_heap.cpp      |   0
 indra/lscript/lscript_compile/lscript_heap.h        |   0
 indra/lscript/lscript_compile/lscript_resource.cpp  |   0
 indra/lscript/lscript_compile/lscript_resource.h    |   0
 indra/lscript/lscript_compile/lscript_scope.cpp     |   0
 indra/lscript/lscript_compile/lscript_scope.h       |   0
 indra/lscript/lscript_compile/lscript_tree.cpp      |   0
 indra/lscript/lscript_compile/lscript_tree.h        |   0
 indra/lscript/lscript_compile/lscript_typecheck.cpp |   0
 indra/lscript/lscript_compile/lscript_typecheck.h   |   0
 indra/lscript/lscript_compile/windows/unistd.h      |   0
 indra/lscript/lscript_execute.h                     |   0
 indra/lscript/lscript_execute/CMakeLists.txt        |   0
 indra/lscript/lscript_execute/llscriptresource.cpp  |   0
 .../lscript_execute/llscriptresourceconsumer.cpp    |   0
 .../lscript_execute/llscriptresourcepool.cpp        |   0
 indra/lscript/lscript_execute/lscript_execute.cpp   |   0
 .../lscript/lscript_execute/lscript_heapruntime.cpp |   0
 indra/lscript/lscript_execute/lscript_heapruntime.h |   0
 indra/lscript/lscript_execute/lscript_readlso.cpp   |   0
 indra/lscript/lscript_execute/lscript_readlso.h     |   0
 indra/lscript/lscript_export.h                      |   0
 indra/lscript/lscript_http.h                        |   0
 indra/lscript/lscript_library.h                     |   0
 indra/lscript/lscript_library/CMakeLists.txt        |   0
 indra/lscript/lscript_library/lscript_alloc.cpp     |   0
 indra/lscript/lscript_library/lscript_export.cpp    |   0
 indra/lscript/lscript_library/lscript_library.cpp   |   0
 indra/lscript/lscript_rt_interface.h                |   0
 indra/mac_crash_logger/CMakeLists.txt               |   0
 indra/mac_crash_logger/CrashReporter.nib            | Bin
 indra/mac_crash_logger/CrashReporter.xib            |   0
 indra/mac_crash_logger/Info.plist                   |   0
 indra/mac_crash_logger/llcrashloggermac.cpp         |   0
 indra/mac_crash_logger/llcrashloggermac.h           |   0
 indra/mac_crash_logger/llcrashloggermacdelegate.h   |   0
 indra/mac_crash_logger/llcrashloggermacdelegate.mm  |   0
 indra/mac_crash_logger/mac_crash_logger.cpp         |   0
 indra/mac_updater/AutoUpdater.nib/classes.nib       | Bin
 indra/mac_updater/AutoUpdater.nib/info.nib          | Bin
 indra/mac_updater/AutoUpdater.nib/objects.xib       |   0
 indra/mac_updater/CMakeLists.txt                    |   0
 indra/mac_updater/Info.plist                        |   0
 indra/mac_updater/mac_updater.cpp                   |   0
 indra/mac_updater/mac_updater.h                     |   0
 indra/media_plugins/CMakeLists.txt                  |   0
 indra/media_plugins/base/CMakeLists.txt             |   0
 indra/media_plugins/base/media_plugin_base.cpp      |   0
 indra/media_plugins/base/media_plugin_base.exp      |   0
 indra/media_plugins/base/media_plugin_base.h        |   0
 indra/media_plugins/example/CMakeLists.txt          |   0
 .../media_plugins/example/media_plugin_example.cpp  |   0
 indra/media_plugins/gstreamer010/CMakeLists.txt     |   0
 .../gstreamer010/llmediaimplgstreamer.h             |   0
 .../gstreamer010/llmediaimplgstreamer_syms.cpp      |   0
 .../gstreamer010/llmediaimplgstreamer_syms.h        |   0
 .../gstreamer010/llmediaimplgstreamer_syms_raw.inc  |   0
 .../gstreamer010/llmediaimplgstreamer_syms_rawv.inc |   0
 .../llmediaimplgstreamertriviallogging.h            |   0
 .../gstreamer010/llmediaimplgstreamervidplug.cpp    |   0
 .../gstreamer010/llmediaimplgstreamervidplug.h      |   0
 .../gstreamer010/media_plugin_gstreamer010.cpp      |   0
 indra/media_plugins/quicktime/CMakeLists.txt        |   0
 .../quicktime/media_plugin_quicktime.cpp            |   0
 indra/media_plugins/webkit/CMakeLists.txt           |   0
 indra/media_plugins/webkit/dummy_volume_catcher.cpp |   0
 indra/media_plugins/webkit/linux_volume_catcher.cpp |   0
 .../webkit/linux_volume_catcher_pa_syms.inc         |   0
 .../webkit/linux_volume_catcher_paglib_syms.inc     |   0
 indra/media_plugins/webkit/mac_volume_catcher.cpp   |   0
 indra/media_plugins/webkit/media_plugin_webkit.cpp  |   0
 indra/media_plugins/webkit/volume_catcher.h         |   0
 .../media_plugins/webkit/windows_volume_catcher.cpp |   0
 indra/media_plugins/winmmshim/CMakeLists.txt        |   0
 indra/media_plugins/winmmshim/forwarding_api.cpp    |   0
 indra/media_plugins/winmmshim/forwarding_api.h      |   0
 indra/media_plugins/winmmshim/winmm.def             |   0
 indra/media_plugins/winmmshim/winmm_shim.cpp        |   0
 indra/newview/CMakeLists.txt                        |   0
 indra/newview/English.lproj/InfoPlist.strings       |   0
 indra/newview/English.lproj/language.txt            |   0
 indra/newview/German.lproj/language.txt             |   0
 indra/newview/Info-SecondLife.plist                 |   0
 indra/newview/Info-SecondLifeVorbis.plist           |   0
 indra/newview/Japanese.lproj/language.txt           |   0
 indra/newview/Korean.lproj/language.txt             |   0
 indra/newview/SecondLife.nib/classes.nib            | Bin
 indra/newview/SecondLife.nib/info.nib               | Bin
 indra/newview/SecondLife.nib/objects.xib            |   0
 indra/newview/VertexCache.h                         |   0
 indra/newview/ViewerInstall.cmake                   |   0
 indra/newview/VorbisFramework.h                     |   0
 indra/newview/app_settings/CA.pem                   |   0
 indra/newview/app_settings/anim.ini                 |   0
 indra/newview/app_settings/autoreplace.xml          |   0
 indra/newview/app_settings/cmd_line.xml             |   0
 indra/newview/app_settings/commands.xml             |   0
 indra/newview/app_settings/foldertypes.xml          |   0
 indra/newview/app_settings/grass.xml                |   0
 indra/newview/app_settings/high_graphics.xml        |   0
 indra/newview/app_settings/ignorable_dialogs.xml    |   0
 indra/newview/app_settings/keys.xml                 |   0
 indra/newview/app_settings/keywords.ini             |   0
 indra/newview/app_settings/lindenlab.pem            |   0
 indra/newview/app_settings/llsd.xsd                 |   0
 indra/newview/app_settings/logcontrol.xml           |   0
 indra/newview/app_settings/low_graphics.xml         |   0
 indra/newview/app_settings/mid_graphics.xml         |   0
 indra/newview/app_settings/settings.xml             |   0
 .../app_settings/settings_crash_behavior.xml        |   0
 indra/newview/app_settings/settings_files.xml       |   0
 indra/newview/app_settings/settings_minimal.xml     |   0
 indra/newview/app_settings/settings_per_account.xml |   0
 .../app_settings/shaders/class1/avatar/avatarF.glsl |   0
 .../shaders/class1/avatar/avatarSkinV.glsl          |   0
 .../app_settings/shaders/class1/avatar/avatarV.glsl |   0
 .../shaders/class1/avatar/eyeballF.glsl             |   0
 .../shaders/class1/avatar/eyeballV.glsl             |   0
 .../shaders/class1/avatar/objectSkinV.glsl          |   0
 .../shaders/class1/avatar/pickAvatarF.glsl          |   0
 .../shaders/class1/avatar/pickAvatarV.glsl          |   0
 .../shaders/class1/deferred/alphaF.glsl             |   0
 .../shaders/class1/deferred/alphaNonIndexedF.glsl   |   0
 .../class1/deferred/alphaNonIndexedNoColorF.glsl    |   0
 .../shaders/class1/deferred/alphaSkinnedV.glsl      |   0
 .../shaders/class1/deferred/alphaV.glsl             |   0
 .../shaders/class1/deferred/attachmentShadowF.glsl  |   0
 .../shaders/class1/deferred/attachmentShadowV.glsl  |   0
 .../class1/deferred/avatarAlphaNoColorV.glsl        |   0
 .../shaders/class1/deferred/avatarAlphaV.glsl       |   0
 .../shaders/class1/deferred/avatarEyesV.glsl        |   0
 .../shaders/class1/deferred/avatarF.glsl            |   0
 .../shaders/class1/deferred/avatarShadowF.glsl      |   0
 .../shaders/class1/deferred/avatarShadowV.glsl      |   0
 .../shaders/class1/deferred/avatarV.glsl            |   0
 .../shaders/class1/deferred/blurLightF.glsl         |   0
 .../shaders/class1/deferred/blurLightV.glsl         |   0
 .../app_settings/shaders/class1/deferred/bumpF.glsl |   0
 .../shaders/class1/deferred/bumpSkinnedV.glsl       |   0
 .../app_settings/shaders/class1/deferred/bumpV.glsl |   0
 .../shaders/class1/deferred/cloudsF.glsl            |   0
 .../shaders/class1/deferred/cloudsV.glsl            |   0
 .../app_settings/shaders/class1/deferred/cofF.glsl  |   0
 .../shaders/class1/deferred/diffuseAlphaMaskF.glsl  |   0
 .../class1/deferred/diffuseAlphaMaskIndexedF.glsl   |   0
 .../class1/deferred/diffuseAlphaMaskNoColorF.glsl   |   0
 .../shaders/class1/deferred/diffuseF.glsl           |   0
 .../shaders/class1/deferred/diffuseIndexedF.glsl    |   0
 .../shaders/class1/deferred/diffuseNoColorV.glsl    |   0
 .../shaders/class1/deferred/diffuseSkinnedV.glsl    |   0
 .../shaders/class1/deferred/diffuseV.glsl           |   0
 .../shaders/class1/deferred/dofCombineF.glsl        |   0
 .../shaders/class1/deferred/emissiveF.glsl          |   0
 .../shaders/class1/deferred/emissiveV.glsl          |   0
 .../shaders/class1/deferred/fullbrightF.glsl        |   0
 .../shaders/class1/deferred/fullbrightV.glsl        |   0
 .../app_settings/shaders/class1/deferred/fxaaF.glsl |   0
 .../app_settings/shaders/class1/deferred/giF.glsl   |   0
 .../shaders/class1/deferred/impostorF.glsl          |   0
 .../shaders/class1/deferred/impostorV.glsl          |   0
 .../shaders/class1/deferred/luminanceF.glsl         |   0
 .../shaders/class1/deferred/luminanceV.glsl         |   0
 .../shaders/class1/deferred/multiPointLightF.glsl   |   0
 .../shaders/class1/deferred/multiPointLightV.glsl   |   0
 .../shaders/class1/deferred/multiSpotLightF.glsl    |   0
 .../shaders/class1/deferred/normgenF.glsl           |   0
 .../shaders/class1/deferred/normgenV.glsl           |   0
 .../shaders/class1/deferred/pointLightF.glsl        |   0
 .../shaders/class1/deferred/pointLightV.glsl        |   0
 .../shaders/class1/deferred/postDeferredF.glsl      |   0
 .../shaders/class1/deferred/postDeferredNoDoFF.glsl |   0
 .../shaders/class1/deferred/postDeferredNoTCV.glsl  |   0
 .../shaders/class1/deferred/postDeferredV.glsl      |   0
 .../shaders/class1/deferred/postgiF.glsl            |   0
 .../shaders/class1/deferred/shadowAlphaMaskF.glsl   |   0
 .../shaders/class1/deferred/shadowAlphaMaskV.glsl   |   0
 .../shaders/class1/deferred/shadowCubeV.glsl        |   0
 .../shaders/class1/deferred/shadowF.glsl            |   0
 .../shaders/class1/deferred/shadowV.glsl            |   0
 .../app_settings/shaders/class1/deferred/skyF.glsl  |   0
 .../app_settings/shaders/class1/deferred/skyV.glsl  |   0
 .../shaders/class1/deferred/softenLightF.glsl       |   0
 .../shaders/class1/deferred/softenLightV.glsl       |   0
 .../shaders/class1/deferred/spotLightF.glsl         |   0
 .../shaders/class1/deferred/starsF.glsl             |   0
 .../shaders/class1/deferred/starsV.glsl             |   0
 .../shaders/class1/deferred/sunLightF.glsl          |   0
 .../class1/deferred/sunLightNoFragCoordV.glsl       |   0
 .../shaders/class1/deferred/sunLightSSAOF.glsl      |   0
 .../shaders/class1/deferred/sunLightV.glsl          |   0
 .../shaders/class1/deferred/terrainF.glsl           |   0
 .../shaders/class1/deferred/terrainV.glsl           |   0
 .../app_settings/shaders/class1/deferred/treeF.glsl |   0
 .../shaders/class1/deferred/treeShadowF.glsl        |   0
 .../shaders/class1/deferred/treeShadowV.glsl        |   0
 .../app_settings/shaders/class1/deferred/treeV.glsl |   0
 .../shaders/class1/deferred/waterF.glsl             |   0
 .../shaders/class1/deferred/waterV.glsl             |   0
 .../shaders/class1/effects/glowExtractF.glsl        |   0
 .../shaders/class1/effects/glowExtractV.glsl        |   0
 .../app_settings/shaders/class1/effects/glowF.glsl  |   0
 .../app_settings/shaders/class1/effects/glowV.glsl  |   0
 .../shaders/class1/environment/terrainF.glsl        |   0
 .../shaders/class1/environment/terrainV.glsl        |   0
 .../shaders/class1/environment/terrainWaterF.glsl   |   0
 .../shaders/class1/environment/underWaterF.glsl     |   0
 .../shaders/class1/environment/waterF.glsl          |   0
 .../shaders/class1/environment/waterFogF.glsl       |   0
 .../shaders/class1/environment/waterV.glsl          |   0
 .../shaders/class1/interface/alphamaskF.glsl        |   0
 .../shaders/class1/interface/alphamaskV.glsl        |   0
 .../shaders/class1/interface/clipF.glsl             |   0
 .../shaders/class1/interface/clipV.glsl             |   0
 .../shaders/class1/interface/customalphaF.glsl      |   0
 .../shaders/class1/interface/customalphaV.glsl      |   0
 .../shaders/class1/interface/debugF.glsl            |   0
 .../shaders/class1/interface/debugV.glsl            |   0
 .../shaders/class1/interface/glowcombineF.glsl      |   0
 .../shaders/class1/interface/glowcombineFXAAF.glsl  |   0
 .../shaders/class1/interface/glowcombineFXAAV.glsl  |   0
 .../shaders/class1/interface/glowcombineV.glsl      |   0
 .../shaders/class1/interface/highlightF.glsl        |   0
 .../shaders/class1/interface/highlightV.glsl        |   0
 .../shaders/class1/interface/occlusionCubeV.glsl    |   0
 .../shaders/class1/interface/occlusionF.glsl        |   0
 .../shaders/class1/interface/occlusionV.glsl        |   0
 .../class1/interface/onetexturenocolorF.glsl        |   0
 .../class1/interface/onetexturenocolorV.glsl        |   0
 .../shaders/class1/interface/pathfindingF.glsl      |   0
 .../class1/interface/pathfindingNoNormalV.glsl      |   0
 .../shaders/class1/interface/pathfindingV.glsl      |   0
 .../shaders/class1/interface/solidcolorF.glsl       |   0
 .../shaders/class1/interface/solidcolorV.glsl       |   0
 .../shaders/class1/interface/splattexturerectF.glsl |   0
 .../shaders/class1/interface/splattexturerectV.glsl |   0
 .../shaders/class1/interface/twotextureaddF.glsl    |   0
 .../shaders/class1/interface/twotextureaddV.glsl    |   0
 .../app_settings/shaders/class1/interface/uiF.glsl  |   0
 .../app_settings/shaders/class1/interface/uiV.glsl  |   0
 .../shaders/class1/lighting/lightAlphaMaskF.glsl    |   0
 .../class1/lighting/lightAlphaMaskNonIndexedF.glsl  |   0
 .../shaders/class1/lighting/lightF.glsl             |   0
 .../class1/lighting/lightFullbrightAlphaMaskF.glsl  |   0
 .../shaders/class1/lighting/lightFullbrightF.glsl   |   0
 .../lightFullbrightNonIndexedAlphaMaskF.glsl        |   0
 .../class1/lighting/lightFullbrightNonIndexedF.glsl |   0
 .../class1/lighting/lightFullbrightShinyF.glsl      |   0
 .../lighting/lightFullbrightShinyNonIndexedF.glsl   |   0
 .../class1/lighting/lightFullbrightShinyWaterF.glsl |   0
 .../lightFullbrightShinyWaterNonIndexedF.glsl       |   0
 .../lighting/lightFullbrightWaterAlphaMaskF.glsl    |   0
 .../class1/lighting/lightFullbrightWaterF.glsl      |   0
 .../lightFullbrightWaterNonIndexedAlphaMaskF.glsl   |   0
 .../lighting/lightFullbrightWaterNonIndexedF.glsl   |   0
 .../shaders/class1/lighting/lightFuncSpecularV.glsl |   0
 .../shaders/class1/lighting/lightFuncV.glsl         |   0
 .../shaders/class1/lighting/lightNonIndexedF.glsl   |   0
 .../shaders/class1/lighting/lightShinyF.glsl        |   0
 .../class1/lighting/lightShinyNonIndexedF.glsl      |   0
 .../shaders/class1/lighting/lightShinyWaterF.glsl   |   0
 .../class1/lighting/lightShinyWaterNonIndexedF.glsl |   0
 .../shaders/class1/lighting/lightSpecularV.glsl     |   0
 .../shaders/class1/lighting/lightV.glsl             |   0
 .../class1/lighting/lightWaterAlphaMaskF.glsl       |   0
 .../lighting/lightWaterAlphaMaskNonIndexedF.glsl    |   0
 .../shaders/class1/lighting/lightWaterF.glsl        |   0
 .../class1/lighting/lightWaterNonIndexedF.glsl      |   0
 .../shaders/class1/lighting/sumLightsSpecularV.glsl |   0
 .../shaders/class1/lighting/sumLightsV.glsl         |   0
 .../app_settings/shaders/class1/objects/bumpF.glsl  |   0
 .../app_settings/shaders/class1/objects/bumpV.glsl  |   0
 .../shaders/class1/objects/emissiveSkinnedV.glsl    |   0
 .../shaders/class1/objects/emissiveV.glsl           |   0
 .../shaders/class1/objects/fullbrightF.glsl         |   0
 .../shaders/class1/objects/fullbrightNoColorV.glsl  |   0
 .../shaders/class1/objects/fullbrightShinyF.glsl    |   0
 .../class1/objects/fullbrightShinySkinnedV.glsl     |   0
 .../shaders/class1/objects/fullbrightShinyV.glsl    |   0
 .../class1/objects/fullbrightShinyWaterF.glsl       |   0
 .../shaders/class1/objects/fullbrightSkinnedV.glsl  |   0
 .../shaders/class1/objects/fullbrightV.glsl         |   0
 .../shaders/class1/objects/fullbrightWaterF.glsl    |   0
 .../shaders/class1/objects/impostorF.glsl           |   0
 .../shaders/class1/objects/impostorV.glsl           |   0
 .../shaders/class1/objects/indexedTextureF.glsl     |   0
 .../shaders/class1/objects/indexedTextureV.glsl     |   0
 .../shaders/class1/objects/nonindexedTextureV.glsl  |   0
 .../shaders/class1/objects/previewF.glsl            |   0
 .../shaders/class1/objects/previewV.glsl            |   0
 .../app_settings/shaders/class1/objects/shinyF.glsl |   0
 .../shaders/class1/objects/shinySimpleSkinnedV.glsl |   0
 .../app_settings/shaders/class1/objects/shinyV.glsl |   0
 .../shaders/class1/objects/shinyWaterF.glsl         |   0
 .../shaders/class1/objects/simpleF.glsl             |   0
 .../shaders/class1/objects/simpleNoColorV.glsl      |   0
 .../shaders/class1/objects/simpleNonIndexedV.glsl   |   0
 .../shaders/class1/objects/simpleSkinnedV.glsl      |   0
 .../shaders/class1/objects/simpleTexGenV.glsl       |   0
 .../shaders/class1/objects/simpleV.glsl             |   0
 .../shaders/class1/objects/simpleWaterF.glsl        |   0
 .../app_settings/shaders/class1/objects/treeV.glsl  |   0
 .../shaders/class1/transform/binormalV.glsl         |   0
 .../shaders/class1/transform/colorV.glsl            |   0
 .../shaders/class1/transform/normalV.glsl           |   0
 .../shaders/class1/transform/positionV.glsl         |   0
 .../shaders/class1/transform/texcoordV.glsl         |   0
 .../shaders/class1/windlight/atmosphericsF.glsl     |   0
 .../class1/windlight/atmosphericsHelpersV.glsl      |   0
 .../shaders/class1/windlight/atmosphericsV.glsl     |   0
 .../shaders/class1/windlight/atmosphericsVarsF.glsl |   0
 .../shaders/class1/windlight/atmosphericsVarsV.glsl |   0
 .../class1/windlight/atmosphericsVarsWaterF.glsl    |   0
 .../class1/windlight/atmosphericsVarsWaterV.glsl    |   0
 .../shaders/class1/windlight/gammaF.glsl            |   0
 .../shaders/class1/windlight/transportF.glsl        |   0
 .../shaders/class2/avatar/eyeballV.glsl             |   0
 .../shaders/class2/deferred/alphaF.glsl             |   0
 .../shaders/class2/deferred/alphaNonIndexedF.glsl   |   0
 .../class2/deferred/alphaNonIndexedNoColorF.glsl    |   0
 .../shaders/class2/deferred/alphaSkinnedV.glsl      |   0
 .../shaders/class2/deferred/alphaV.glsl             |   0
 .../shaders/class2/deferred/avatarAlphaV.glsl       |   0
 .../shaders/class2/deferred/multiSpotLightF.glsl    |   0
 .../shaders/class2/deferred/softenLightF.glsl       |   0
 .../shaders/class2/deferred/softenLightV.glsl       |   0
 .../shaders/class2/deferred/spotLightF.glsl         |   0
 .../shaders/class2/deferred/sunLightF.glsl          |   0
 .../shaders/class2/deferred/sunLightSSAOF.glsl      |   0
 .../shaders/class2/deferred/sunLightV.glsl          |   0
 .../shaders/class2/lighting/sumLightsSpecularV.glsl |   0
 .../shaders/class2/lighting/sumLightsV.glsl         |   0
 .../shaders/class2/windlight/atmosphericsF.glsl     |   0
 .../class2/windlight/atmosphericsHelpersV.glsl      |   0
 .../shaders/class2/windlight/atmosphericsV.glsl     |   0
 .../shaders/class2/windlight/atmosphericsVarsF.glsl |   0
 .../shaders/class2/windlight/atmosphericsVarsV.glsl |   0
 .../class2/windlight/atmosphericsVarsWaterF.glsl    |   0
 .../class2/windlight/atmosphericsVarsWaterV.glsl    |   0
 .../shaders/class2/windlight/cloudsF.glsl           |   0
 .../shaders/class2/windlight/cloudsV.glsl           |   0
 .../shaders/class2/windlight/gammaF.glsl            |   0
 .../app_settings/shaders/class2/windlight/skyF.glsl |   0
 .../app_settings/shaders/class2/windlight/skyV.glsl |   0
 .../shaders/class2/windlight/transportF.glsl        |   0
 .../app_settings/shaders/class3/avatar/avatarV.glsl |   0
 .../shaders/class3/lighting/sumLightsSpecularV.glsl |   0
 .../shaders/class3/lighting/sumLightsV.glsl         |   0
 .../app_settings/shaders/shader_hierarchy.txt       |   0
 indra/newview/app_settings/static_data.db2          | Bin
 indra/newview/app_settings/static_index.db2         | Bin
 indra/newview/app_settings/std_bump.ini             |   0
 indra/newview/app_settings/toolbars.xml             |   0
 indra/newview/app_settings/trees.xml                |   0
 indra/newview/app_settings/ultra_graphics.xml       |   0
 indra/newview/app_settings/viewerart.xml            |   0
 indra/newview/app_settings/windlight/clouds2.tga    | Bin
 .../app_settings/windlight/days/Colder%20Tones.xml  |   0
 .../newview/app_settings/windlight/days/Default.xml |   0
 .../windlight/days/Dynamic%20Richness.xml           |   0
 .../windlight/days/Pirate%27s%20Dream.xml           |   0
 .../windlight/days/Psycho%20Strobe%21.xml           |   0
 .../app_settings/windlight/days/Tropicalia.xml      |   0
 .../newview/app_settings/windlight/days/Weird-O.xml |   0
 .../app_settings/windlight/postprocesseffects.xml   |   0
 .../app_settings/windlight/skies/A%2D12AM.xml       |   0
 .../app_settings/windlight/skies/A%2D12PM.xml       |   0
 .../app_settings/windlight/skies/A%2D3AM.xml        |   0
 .../app_settings/windlight/skies/A%2D3PM.xml        |   0
 .../app_settings/windlight/skies/A%2D6AM.xml        |   0
 .../app_settings/windlight/skies/A%2D6PM.xml        |   0
 .../app_settings/windlight/skies/A%2D9AM.xml        |   0
 .../app_settings/windlight/skies/A%2D9PM.xml        |   0
 .../app_settings/windlight/skies/Barcelona.xml      |   0
 .../app_settings/windlight/skies/Blizzard.xml       |   0
 .../app_settings/windlight/skies/Blue%20Midday.xml  |   0
 .../windlight/skies/Coastal%20Afternoon.xml         |   0
 .../windlight/skies/Coastal%20Sunset.xml            |   0
 .../app_settings/windlight/skies/Default.xml        |   0
 .../windlight/skies/Desert%20Sunset.xml             |   0
 .../app_settings/windlight/skies/Fine%20Day.xml     |   0
 .../windlight/skies/Fluffy%20Big%20Clouds.xml       |   0
 .../newview/app_settings/windlight/skies/Foggy.xml  |   0
 .../windlight/skies/Funky%20Funky%20Funky.xml       |   0
 .../app_settings/windlight/skies/Funky%20Funky.xml  |   0
 .../app_settings/windlight/skies/Gelatto.xml        |   0
 .../newview/app_settings/windlight/skies/Ghost.xml  |   0
 .../windlight/skies/Incongruent%20Truths.xml        |   0
 .../app_settings/windlight/skies/Midday%201.xml     |   0
 .../app_settings/windlight/skies/Midday%202.xml     |   0
 .../app_settings/windlight/skies/Midday%203.xml     |   0
 .../app_settings/windlight/skies/Midday%204.xml     |   0
 .../newview/app_settings/windlight/skies/Midday.xml |   0
 .../app_settings/windlight/skies/Midnight.xml       |   0
 .../newview/app_settings/windlight/skies/Night.xml  |   0
 .../newview/app_settings/windlight/skies/Pirate.xml |   0
 .../newview/app_settings/windlight/skies/Purple.xml |   0
 .../windlight/skies/Sailor%27s%20Delight.xml        |   0
 .../windlight/skies/Sheer%20Surreality.xml          |   0
 .../app_settings/windlight/skies/Sunrise.xml        |   0
 .../newview/app_settings/windlight/skies/Sunset.xml |   0
 .../app_settings/windlight/water/Default.xml        |   0
 .../newview/app_settings/windlight/water/Glassy.xml |   0
 .../newview/app_settings/windlight/water/Murky.xml  |   0
 indra/newview/app_settings/windlight/water/Pond.xml |   0
 .../app_settings/windlight/water/SNAKE%21%21%21.xml |   0
 .../windlight/water/Second%20Plague.xml             |   0
 .../newview/app_settings/windlight/water/Valdez.xml |   0
 indra/newview/build_win32_appConfig.py              |   0
 indra/newview/character/attentions.xml              |   0
 indra/newview/character/attentionsN.xml             |   0
 indra/newview/character/avatar_eye.llm              | Bin
 indra/newview/character/avatar_eye_1.llm            | Bin
 indra/newview/character/avatar_eyelashes.llm        | Bin
 indra/newview/character/avatar_hair.llm             | Bin
 indra/newview/character/avatar_hair_1.llm           | Bin
 indra/newview/character/avatar_hair_2.llm           | Bin
 indra/newview/character/avatar_hair_3.llm           | Bin
 indra/newview/character/avatar_hair_4.llm           | Bin
 indra/newview/character/avatar_hair_5.llm           | Bin
 indra/newview/character/avatar_head.llm             | Bin
 indra/newview/character/avatar_head_1.llm           | Bin
 indra/newview/character/avatar_head_2.llm           | Bin
 indra/newview/character/avatar_head_3.llm           | Bin
 indra/newview/character/avatar_head_4.llm           | Bin
 indra/newview/character/avatar_lad.xml              |   0
 indra/newview/character/avatar_lower_body.llm       | Bin
 indra/newview/character/avatar_lower_body_1.llm     | Bin
 indra/newview/character/avatar_lower_body_2.llm     | Bin
 indra/newview/character/avatar_lower_body_3.llm     | Bin
 indra/newview/character/avatar_lower_body_4.llm     | Bin
 indra/newview/character/avatar_skeleton.xml         |   0
 indra/newview/character/avatar_skirt.llm            | Bin
 indra/newview/character/avatar_skirt_1.llm          | Bin
 indra/newview/character/avatar_skirt_2.llm          | Bin
 indra/newview/character/avatar_skirt_3.llm          | Bin
 indra/newview/character/avatar_skirt_4.llm          | Bin
 indra/newview/character/avatar_upper_body.llm       | Bin
 indra/newview/character/avatar_upper_body_1.llm     | Bin
 indra/newview/character/avatar_upper_body_2.llm     | Bin
 indra/newview/character/avatar_upper_body_3.llm     | Bin
 indra/newview/character/avatar_upper_body_4.llm     | Bin
 indra/newview/character/blush_alpha.tga             | Bin
 indra/newview/character/body_skingrain.tga          | Bin
 indra/newview/character/bodyfreckles_alpha.tga      | Bin
 indra/newview/character/bump_face_wrinkles.tga      | Bin
 indra/newview/character/bump_head_base.tga          | Bin
 indra/newview/character/bump_lowerbody_base.tga     | Bin
 indra/newview/character/bump_pants_wrinkles.tga     | Bin
 indra/newview/character/bump_shirt_wrinkles.tga     | Bin
 indra/newview/character/bump_upperbody_base.tga     | Bin
 indra/newview/character/checkerboard.tga            | Bin
 indra/newview/character/eyebrows_alpha.tga          | Bin
 indra/newview/character/eyeliner_alpha.tga          | Bin
 indra/newview/character/eyeshadow_inner_alpha.tga   | Bin
 indra/newview/character/eyeshadow_outer_alpha.tga   | Bin
 indra/newview/character/eyewhite.tga                | Bin
 .../character/facehair_chincurtains_alpha.tga       | Bin
 .../newview/character/facehair_moustache_alpha.tga  | Bin
 .../newview/character/facehair_sideburns_alpha.tga  | Bin
 .../newview/character/facehair_soulpatch_alpha.tga  | Bin
 indra/newview/character/freckles_alpha.tga          | Bin
 indra/newview/character/genepool.xml                |   0
 indra/newview/character/glove_length_alpha.tga      | Bin
 indra/newview/character/gloves_fingers_alpha.tga    | Bin
 indra/newview/character/head_alpha.tga              | Bin
 indra/newview/character/head_color.tga              | Bin
 indra/newview/character/head_hair.tga               | Bin
 indra/newview/character/head_highlights_alpha.tga   | Bin
 indra/newview/character/head_shading_alpha.tga      | Bin
 indra/newview/character/head_skingrain.tga          | Bin
 .../newview/character/jacket_length_lower_alpha.tga | Bin
 .../newview/character/jacket_length_upper_alpha.tga | Bin
 indra/newview/character/jacket_open_lower_alpha.tga | Bin
 indra/newview/character/jacket_open_upper_alpha.tga | Bin
 indra/newview/character/lipgloss_alpha.tga          | Bin
 indra/newview/character/lips_mask.tga               | Bin
 indra/newview/character/lipstick_alpha.tga          | Bin
 indra/newview/character/lowerbody_color.tga         | Bin
 .../character/lowerbody_highlights_alpha.tga        | Bin
 indra/newview/character/lowerbody_shading_alpha.tga | Bin
 indra/newview/character/nailpolish_alpha.tga        | Bin
 indra/newview/character/pants_length_alpha.tga      | Bin
 indra/newview/character/pants_waist_alpha.tga       | Bin
 indra/newview/character/rosyface_alpha.tga          | Bin
 indra/newview/character/rouge_alpha.tga             | Bin
 indra/newview/character/shirt_bottom_alpha.tga      | Bin
 indra/newview/character/shirt_collar_alpha.tga      | Bin
 indra/newview/character/shirt_collar_back_alpha.tga | Bin
 indra/newview/character/shirt_sleeve_alpha.tga      | Bin
 indra/newview/character/shoe_height_alpha.tga       | Bin
 indra/newview/character/skirt_length_alpha.tga      | Bin
 indra/newview/character/skirt_slit_back_alpha.tga   | Bin
 indra/newview/character/skirt_slit_front_alpha.tga  | Bin
 indra/newview/character/skirt_slit_left_alpha.tga   | Bin
 indra/newview/character/skirt_slit_right_alpha.tga  | Bin
 indra/newview/character/underpants_trial_female.tga | Bin
 indra/newview/character/underpants_trial_male.tga   | Bin
 indra/newview/character/undershirt_trial_female.tga | Bin
 indra/newview/character/upperbody_color.tga         | Bin
 .../character/upperbody_highlights_alpha.tga        | Bin
 indra/newview/character/upperbody_shading_alpha.tga | Bin
 indra/newview/character/upperbodyfreckles_alpha.tga | Bin
 indra/newview/cursors_mac/UI_CURSOR_ARROW.tif       | Bin
 indra/newview/cursors_mac/UI_CURSOR_ARROWDRAG.tif   | Bin
 indra/newview/cursors_mac/UI_CURSOR_ARROWLOCKED.tif | Bin
 indra/newview/cursors_mac/UI_CURSOR_GRABLOCKED.tif  | Bin
 indra/newview/cursors_mac/UI_CURSOR_NO.tif          | Bin
 indra/newview/cursors_mac/UI_CURSOR_NOLOCKED.tif    | Bin
 indra/newview/cursors_mac/UI_CURSOR_PATHFINDING.tif | Bin
 .../cursors_mac/UI_CURSOR_PATHFINDING_END.tif       | Bin
 .../cursors_mac/UI_CURSOR_PATHFINDING_END_ADD.tif   | Bin
 .../cursors_mac/UI_CURSOR_PATHFINDING_START.tif     | Bin
 .../cursors_mac/UI_CURSOR_PATHFINDING_START_ADD.tif | Bin
 indra/newview/cursors_mac/UI_CURSOR_SIZENESW.tif    | Bin
 indra/newview/cursors_mac/UI_CURSOR_SIZENS.tif      | Bin
 indra/newview/cursors_mac/UI_CURSOR_SIZENWSE.tif    | Bin
 indra/newview/cursors_mac/UI_CURSOR_SIZEWE.tif      | Bin
 indra/newview/cursors_mac/UI_CURSOR_TOOLBUY.tif     | Bin
 indra/newview/cursors_mac/UI_CURSOR_TOOLCAMERA.tif  | Bin
 indra/newview/cursors_mac/UI_CURSOR_TOOLCREATE.tif  | Bin
 indra/newview/cursors_mac/UI_CURSOR_TOOLFOCUS.tif   | Bin
 indra/newview/cursors_mac/UI_CURSOR_TOOLGRAB.tif    | Bin
 indra/newview/cursors_mac/UI_CURSOR_TOOLLAND.tif    | Bin
 .../newview/cursors_mac/UI_CURSOR_TOOLMEDIAOPEN.tif | Bin
 indra/newview/cursors_mac/UI_CURSOR_TOOLOPEN.tif    | Bin
 indra/newview/cursors_mac/UI_CURSOR_TOOLPAN.tif     | Bin
 indra/newview/cursors_mac/UI_CURSOR_TOOLPAUSE.tif   | Bin
 .../cursors_mac/UI_CURSOR_TOOLPICKOBJECT3.tif       | Bin
 indra/newview/cursors_mac/UI_CURSOR_TOOLPLAY.tif    | Bin
 indra/newview/cursors_mac/UI_CURSOR_TOOLROTATE.tif  | Bin
 indra/newview/cursors_mac/UI_CURSOR_TOOLSCALE.tif   | Bin
 indra/newview/cursors_mac/UI_CURSOR_TOOLSIT.tif     | Bin
 .../newview/cursors_mac/UI_CURSOR_TOOLTRANSLATE.tif | Bin
 indra/newview/cursors_mac/UI_CURSOR_TOOLZOOMIN.tif  | Bin
 indra/newview/cursors_mac/UI_CURSOR_WORKING.tif     | Bin
 indra/newview/da.lproj/language.txt                 |   0
 indra/newview/es.lproj/language.txt                 |   0
 indra/newview/featuretable.txt                      |   0
 indra/newview/featuretable_linux.txt                |   0
 indra/newview/featuretable_mac.txt                  |   0
 indra/newview/featuretable_solaris.txt              |   0
 indra/newview/featuretable_xp.txt                   |   0
 indra/newview/fmod_hidden_symbols.exp               |   0
 indra/newview/fmodwrapper.cpp                       |   0
 indra/newview/fonts/DejaVu-license.txt              |   0
 indra/newview/fonts/DejaVuSans-Bold.ttf             | Bin
 indra/newview/fonts/DejaVuSans-BoldOblique.ttf      | Bin
 indra/newview/fonts/DejaVuSans-Oblique.ttf          | Bin
 indra/newview/fonts/DejaVuSans.ttf                  | Bin
 indra/newview/fonts/DejaVuSansMono.ttf              | Bin
 indra/newview/fr.lproj/language.txt                 |   0
 indra/newview/generate_breakpad_symbols.py          |   0
 indra/newview/gpu_table.txt                         |   0
 indra/newview/groupchatlistener.cpp                 |   0
 indra/newview/groupchatlistener.h                   |   0
 indra/newview/hu.lproj/language.txt                 |   0
 indra/newview/icons/beta/secondlife.icns            | Bin
 indra/newview/icons/beta/secondlife.ico             | Bin
 indra/newview/icons/beta/secondlife_128.png         | Bin
 indra/newview/icons/beta/secondlife_16.png          | Bin
 indra/newview/icons/beta/secondlife_256.BMP         | Bin
 indra/newview/icons/beta/secondlife_256.png         | Bin
 indra/newview/icons/beta/secondlife_32.png          | Bin
 indra/newview/icons/beta/secondlife_48.png          | Bin
 indra/newview/icons/beta/secondlife_512.png         | Bin
 indra/newview/icons/development/secondlife.icns     | Bin
 indra/newview/icons/development/secondlife.ico      | Bin
 indra/newview/icons/development/secondlife_128.png  | Bin
 indra/newview/icons/development/secondlife_16.png   | Bin
 indra/newview/icons/development/secondlife_256.BMP  | Bin
 indra/newview/icons/development/secondlife_256.png  | Bin
 indra/newview/icons/development/secondlife_32.png   | Bin
 indra/newview/icons/development/secondlife_48.png   | Bin
 indra/newview/icons/development/secondlife_512.png  | Bin
 indra/newview/icons/project/secondlife.icns         | Bin
 indra/newview/icons/project/secondlife.ico          | Bin
 indra/newview/icons/project/secondlife_128.png      | Bin
 indra/newview/icons/project/secondlife_16.png       | Bin
 indra/newview/icons/project/secondlife_256.BMP      | Bin
 indra/newview/icons/project/secondlife_256.png      | Bin
 indra/newview/icons/project/secondlife_32.png       | Bin
 indra/newview/icons/project/secondlife_48.png       | Bin
 indra/newview/icons/project/secondlife_512.png      | Bin
 indra/newview/icons/release/secondlife.icns         | Bin
 indra/newview/icons/release/secondlife.ico          | Bin
 indra/newview/icons/release/secondlife_128.png      | Bin
 indra/newview/icons/release/secondlife_16.png       | Bin
 indra/newview/icons/release/secondlife_256.BMP      | Bin
 indra/newview/icons/release/secondlife_256.png      | Bin
 indra/newview/icons/release/secondlife_32.png       | Bin
 indra/newview/icons/release/secondlife_48.png       | Bin
 indra/newview/icons/release/secondlife_512.png      | Bin
 indra/newview/icons/test/secondlife.icns            | Bin
 indra/newview/icons/test/secondlife.ico             | Bin
 indra/newview/icons/test/secondlife_128.png         | Bin
 indra/newview/icons/test/secondlife_16.png          | Bin
 indra/newview/icons/test/secondlife_256.BMP         | Bin
 indra/newview/icons/test/secondlife_256.png         | Bin
 indra/newview/icons/test/secondlife_32.png          | Bin
 indra/newview/icons/test/secondlife_48.png          | Bin
 indra/newview/icons/test/secondlife_512.png         | Bin
 .../installers/darwin/dmg-cleanup.applescript       |   0
 .../darwin/fix_application_icon_position.sh         |   0
 .../darwin/release-dmg/Applications-alias.r         |   0
 .../newview/installers/darwin/release-dmg/_DS_Store | Bin
 .../installers/darwin/release-dmg/_VolumeIcon.icns  | Bin
 .../installers/darwin/release-dmg/background.jpg    | Bin
 .../windows/FILES_ARE_UNICODE_UTF-16LE.txt          |   0
 indra/newview/installers/windows/install_icon.BMP   | Bin
 indra/newview/installers/windows/install_icon.ico   | Bin
 .../installers/windows/installer_template.nsi       |   0
 indra/newview/installers/windows/lang_da.nsi        | Bin
 indra/newview/installers/windows/lang_de.nsi        | Bin
 indra/newview/installers/windows/lang_en-us.nsi     | Bin
 indra/newview/installers/windows/lang_es.nsi        | Bin
 indra/newview/installers/windows/lang_fr.nsi        | Bin
 indra/newview/installers/windows/lang_it.nsi        | Bin
 indra/newview/installers/windows/lang_ja.nsi        | Bin
 indra/newview/installers/windows/lang_pl.nsi        | Bin
 indra/newview/installers/windows/lang_pt-br.nsi     | Bin
 indra/newview/installers/windows/lang_ru.nsi        | Bin
 indra/newview/installers/windows/lang_tr.nsi        | Bin
 indra/newview/installers/windows/lang_zh.nsi        | Bin
 indra/newview/installers/windows/language_menu.nsi  | Bin
 indra/newview/installers/windows/uninstall_icon.BMP | Bin
 indra/newview/installers/windows/uninstall_icon.ico | Bin
 indra/newview/it.lproj/language.txt                 |   0
 indra/newview/licenses-linux.txt                    |   0
 indra/newview/licenses-mac.txt                      |   0
 indra/newview/licenses-solaris.txt                  |   0
 indra/newview/licenses-win32.txt                    |   0
 .../newview/linux_tools/client-readme-joystick.txt  |   0
 indra/newview/linux_tools/client-readme-voice.txt   |   0
 indra/newview/linux_tools/client-readme.txt         |   0
 indra/newview/llaccountingcostmanager.cpp           |   0
 indra/newview/llaccountingcostmanager.h             |   0
 indra/newview/llagent.h                             |   0
 indra/newview/llagentaccess.cpp                     |   0
 indra/newview/llagentaccess.h                       |   0
 indra/newview/llagentcamera.cpp                     |   0
 indra/newview/llagentcamera.h                       |   0
 indra/newview/llagentdata.cpp                       |   0
 indra/newview/llagentdata.h                         |   0
 indra/newview/llagentlanguage.cpp                   |   0
 indra/newview/llagentlanguage.h                     |   0
 indra/newview/llagentlistener.cpp                   |   0
 indra/newview/llagentlistener.h                     |   0
 indra/newview/llagentpicksinfo.cpp                  |   0
 indra/newview/llagentpicksinfo.h                    |   0
 indra/newview/llagentpilot.cpp                      |   0
 indra/newview/llagentpilot.h                        |   0
 indra/newview/llagentui.cpp                         |   0
 indra/newview/llagentui.h                           |   0
 indra/newview/llagentwearables.cpp                  |   0
 indra/newview/llagentwearables.h                    |   0
 indra/newview/llagentwearablesfetch.cpp             |   0
 indra/newview/llagentwearablesfetch.h               |   0
 indra/newview/llanimstatelabels.cpp                 |   0
 indra/newview/llanimstatelabels.h                   |   0
 indra/newview/llappcorehttp.cpp                     |   0
 indra/newview/llappcorehttp.h                       |   0
 indra/newview/llappearance.h                        |   0
 indra/newview/llappearancemgr.cpp                   |   0
 indra/newview/llappearancemgr.h                     |   0
 indra/newview/llappviewer.cpp                       |   0
 indra/newview/llappviewer.h                         |   0
 indra/newview/llappviewerlinux.cpp                  |   0
 indra/newview/llappviewerlinux.h                    |   0
 indra/newview/llappviewerlinux_api.h                |   0
 indra/newview/llappviewerlinux_api.xml              |   0
 indra/newview/llappviewerlinux_api_dbus.cpp         |   0
 indra/newview/llappviewerlinux_api_dbus.h           |   0
 .../newview/llappviewerlinux_api_dbus_syms_raw.inc  |   0
 indra/newview/llappviewerlistener.cpp               |   0
 indra/newview/llappviewerlistener.h                 |   0
 indra/newview/llappviewermacosx.cpp                 |   0
 indra/newview/llappviewermacosx.h                   |   0
 indra/newview/llappviewerwin32.cpp                  |   0
 indra/newview/llappviewerwin32.h                    |   0
 indra/newview/llassetuploadqueue.cpp                |   0
 indra/newview/llassetuploadqueue.h                  |   0
 indra/newview/llassetuploadresponders.cpp           |   0
 indra/newview/llassetuploadresponders.h             |   0
 indra/newview/llattachmentsmgr.cpp                  |   0
 indra/newview/llattachmentsmgr.h                    |   0
 indra/newview/llaudiosourcevo.cpp                   |   0
 indra/newview/llaudiosourcevo.h                     |   0
 indra/newview/llautoreplace.cpp                     |   0
 indra/newview/llautoreplace.h                       |   0
 indra/newview/llavataractions.h                     |   0
 indra/newview/llavatariconctrl.h                    |   0
 indra/newview/llavatarlist.cpp                      |   0
 indra/newview/llavatarlist.h                        |   0
 indra/newview/llavatarlistitem.cpp                  |   0
 indra/newview/llavatarlistitem.h                    |   0
 indra/newview/llavatarpropertiesprocessor.cpp       |   0
 indra/newview/llavatarpropertiesprocessor.h         |   0
 indra/newview/llblockedlistitem.cpp                 |   0
 indra/newview/llblockedlistitem.h                   |   0
 indra/newview/llblocklist.cpp                       |   0
 indra/newview/llblocklist.h                         |   0
 indra/newview/llbox.cpp                             |   0
 indra/newview/llbox.h                               |   0
 indra/newview/llbreadcrumbview.cpp                  |   0
 indra/newview/llbreadcrumbview.h                    |   0
 indra/newview/llbreastmotion.cpp                    |   0
 indra/newview/llbreastmotion.h                      |   0
 indra/newview/llbrowsernotification.cpp             |   0
 indra/newview/llbuycurrencyhtml.cpp                 |   0
 indra/newview/llbuycurrencyhtml.h                   |   0
 indra/newview/llcallbacklist.cpp                    |   0
 indra/newview/llcallbacklist.h                      |   0
 indra/newview/llcallingcard.cpp                     |   0
 indra/newview/llcallingcard.h                       |   0
 indra/newview/llcapabilitylistener.cpp              |   0
 indra/newview/llcapabilitylistener.h                |   0
 indra/newview/llcapabilityprovider.h                |   0
 indra/newview/llcaphttpsender.cpp                   |   0
 indra/newview/llcaphttpsender.h                     |   0
 indra/newview/llchannelmanager.cpp                  |   0
 indra/newview/llchannelmanager.h                    |   0
 indra/newview/llchatbar.cpp                         |   0
 indra/newview/llchatbar.h                           |   0
 indra/newview/llchathistory.cpp                     |   0
 indra/newview/llchathistory.h                       |   0
 indra/newview/llchatitemscontainerctrl.cpp          |   0
 indra/newview/llchatitemscontainerctrl.h            |   0
 indra/newview/llchatmsgbox.cpp                      |   0
 indra/newview/llchatmsgbox.h                        |   0
 indra/newview/llchiclet.cpp                         |   0
 indra/newview/llchiclet.h                           |   0
 indra/newview/llchicletbar.cpp                      |   0
 indra/newview/llchicletbar.h                        |   0
 indra/newview/llclassifiedinfo.cpp                  |   0
 indra/newview/llclassifiedinfo.h                    |   0
 indra/newview/llclassifiedstatsresponder.cpp        |   0
 indra/newview/llclassifiedstatsresponder.h          |   0
 indra/newview/llcofwearables.cpp                    |   0
 indra/newview/llcofwearables.h                      |   0
 indra/newview/llcolorswatch.cpp                     |   0
 indra/newview/llcolorswatch.h                       |   0
 indra/newview/llcommanddispatcherlistener.cpp       |   0
 indra/newview/llcommanddispatcherlistener.h         |   0
 indra/newview/llcommandhandler.h                    |   0
 indra/newview/llcommandlineparser.cpp               |   0
 indra/newview/llcommandlineparser.h                 |   0
 indra/newview/llcommunicationchannel.cpp            |   0
 indra/newview/llcommunicationchannel.h              |   0
 indra/newview/llcompilequeue.cpp                    |   0
 indra/newview/llcompilequeue.h                      |   0
 indra/newview/llconfirmationmanager.cpp             |   0
 indra/newview/llconfirmationmanager.h               |   0
 indra/newview/llconversationlog.cpp                 |   0
 indra/newview/llconversationlog.h                   |   0
 indra/newview/llconversationloglist.cpp             |   0
 indra/newview/llconversationloglist.h               |   0
 indra/newview/llconversationloglistitem.cpp         |   0
 indra/newview/llconversationloglistitem.h           |   0
 indra/newview/llconversationmodel.cpp               |   0
 indra/newview/llcurrencyuimanager.cpp               |   0
 indra/newview/llcurrencyuimanager.h                 |   0
 indra/newview/llcylinder.cpp                        |   0
 indra/newview/llcylinder.h                          |   0
 indra/newview/lldateutil.cpp                        |   0
 indra/newview/lldateutil.h                          |   0
 indra/newview/lldaycyclemanager.cpp                 |   0
 indra/newview/lldaycyclemanager.h                   |   0
 indra/newview/lldebugmessagebox.cpp                 |   0
 indra/newview/lldebugmessagebox.h                   |   0
 indra/newview/lldebugview.cpp                       |   0
 indra/newview/lldebugview.h                         |   0
 indra/newview/lldeferredsounds.cpp                  |   0
 indra/newview/lldeferredsounds.h                    |   0
 indra/newview/lldelayedgestureerror.cpp             |   0
 indra/newview/lldelayedgestureerror.h               |   0
 indra/newview/lldirpicker.cpp                       |   0
 indra/newview/lldirpicker.h                         |   0
 indra/newview/lldndbutton.cpp                       |   0
 indra/newview/lldndbutton.h                         |   0
 indra/newview/lldonotdisturbnotificationstorage.cpp |   0
 indra/newview/lldonotdisturbnotificationstorage.h   |   0
 indra/newview/lldrawable.cpp                        |   0
 indra/newview/lldrawable.h                          |   0
 indra/newview/lldrawpool.cpp                        |   0
 indra/newview/lldrawpool.h                          |   0
 indra/newview/lldrawpoolalpha.cpp                   |   0
 indra/newview/lldrawpoolalpha.h                     |   0
 indra/newview/lldrawpoolavatar.cpp                  |   0
 indra/newview/lldrawpoolavatar.h                    |   0
 indra/newview/lldrawpoolbump.cpp                    |   0
 indra/newview/lldrawpoolbump.h                      |   0
 indra/newview/lldrawpoolground.cpp                  |   0
 indra/newview/lldrawpoolground.h                    |   0
 indra/newview/lldrawpoolsimple.cpp                  |   0
 indra/newview/lldrawpoolsimple.h                    |   0
 indra/newview/lldrawpoolsky.cpp                     |   0
 indra/newview/lldrawpoolsky.h                       |   0
 indra/newview/lldrawpoolterrain.cpp                 |   0
 indra/newview/lldrawpoolterrain.h                   |   0
 indra/newview/lldrawpooltree.cpp                    |   0
 indra/newview/lldrawpooltree.h                      |   0
 indra/newview/lldrawpoolwater.cpp                   |   0
 indra/newview/lldrawpoolwater.h                     |   0
 indra/newview/lldrawpoolwlsky.cpp                   |   0
 indra/newview/lldrawpoolwlsky.h                     |   0
 indra/newview/lldriverparam.cpp                     |   0
 indra/newview/lldriverparam.h                       |   0
 indra/newview/lldynamictexture.cpp                  |   0
 indra/newview/lldynamictexture.h                    |   0
 indra/newview/llemote.cpp                           |   0
 indra/newview/llemote.h                             |   0
 indra/newview/llenvmanager.cpp                      |   0
 indra/newview/llenvmanager.h                        |   0
 indra/newview/llestateinfomodel.cpp                 |   0
 indra/newview/llestateinfomodel.h                   |   0
 indra/newview/lleventnotifier.cpp                   |   0
 indra/newview/lleventnotifier.h                     |   0
 indra/newview/lleventpoll.cpp                       |   0
 indra/newview/lleventpoll.h                         |   0
 indra/newview/llexpandabletextbox.cpp               |   0
 indra/newview/llexpandabletextbox.h                 |   0
 indra/newview/llexternaleditor.cpp                  |   0
 indra/newview/llexternaleditor.h                    |   0
 indra/newview/llface.cpp                            |   0
 indra/newview/llface.h                              |   0
 indra/newview/llface.inl                            |   0
 indra/newview/llfasttimerview.cpp                   |   0
 indra/newview/llfasttimerview.h                     |   0
 indra/newview/llfavoritesbar.cpp                    |   0
 indra/newview/llfavoritesbar.h                      |   0
 indra/newview/llfeaturemanager.cpp                  |   0
 indra/newview/llfeaturemanager.h                    |   0
 indra/newview/llfilepicker.cpp                      |   0
 indra/newview/llfilepicker.h                        |   0
 indra/newview/llfilteredwearablelist.cpp            |   0
 indra/newview/llfilteredwearablelist.h              |   0
 indra/newview/llfirstuse.cpp                        |   0
 indra/newview/llfirstuse.h                          |   0
 indra/newview/llflexibleobject.cpp                  |   0
 indra/newview/llflexibleobject.h                    |   0
 indra/newview/llfloaterabout.cpp                    |   0
 indra/newview/llfloaterabout.h                      |   0
 indra/newview/llfloaterauction.cpp                  |   0
 indra/newview/llfloaterauction.h                    |   0
 indra/newview/llfloaterautoreplacesettings.cpp      |   0
 indra/newview/llfloaterautoreplacesettings.h        |   0
 indra/newview/llfloateravatar.cpp                   |   0
 indra/newview/llfloateravatar.h                     |   0
 indra/newview/llfloateravatarpicker.cpp             |   0
 indra/newview/llfloateravatarpicker.h               |   0
 indra/newview/llfloateravatartextures.cpp           |   0
 indra/newview/llfloateravatartextures.h             |   0
 indra/newview/llfloaterbeacons.cpp                  |   0
 indra/newview/llfloaterbeacons.h                    |   0
 indra/newview/llfloaterbuildoptions.cpp             |   0
 indra/newview/llfloaterbuildoptions.h               |   0
 indra/newview/llfloaterbulkpermission.cpp           |   0
 indra/newview/llfloaterbulkpermission.h             |   0
 indra/newview/llfloaterbump.cpp                     |   0
 indra/newview/llfloaterbump.h                       |   0
 indra/newview/llfloaterbuy.cpp                      |   0
 indra/newview/llfloaterbuy.h                        |   0
 indra/newview/llfloaterbuycontents.cpp              |   0
 indra/newview/llfloaterbuycontents.h                |   0
 indra/newview/llfloaterbuycurrency.cpp              |   0
 indra/newview/llfloaterbuycurrency.h                |   0
 indra/newview/llfloaterbuycurrencyhtml.cpp          |   0
 indra/newview/llfloaterbuycurrencyhtml.h            |   0
 indra/newview/llfloaterbuyland.cpp                  |   0
 indra/newview/llfloaterbuyland.h                    |   0
 indra/newview/llfloaterbvhpreview.cpp               |   0
 indra/newview/llfloaterbvhpreview.h                 |   0
 indra/newview/llfloatercamera.cpp                   |   0
 indra/newview/llfloatercamera.h                     |   0
 indra/newview/llfloaterchatvoicevolume.cpp          |   0
 indra/newview/llfloaterchatvoicevolume.h            |   0
 indra/newview/llfloatercolorpicker.cpp              |   0
 indra/newview/llfloatercolorpicker.h                |   0
 indra/newview/llfloaterconversationlog.cpp          |   0
 indra/newview/llfloaterconversationlog.h            |   0
 indra/newview/llfloaterconversationpreview.cpp      |   0
 indra/newview/llfloaterconversationpreview.h        |   0
 indra/newview/llfloaterdeleteenvpreset.cpp          |   0
 indra/newview/llfloaterdeleteenvpreset.h            |   0
 indra/newview/llfloaterdestinations.cpp             |   0
 indra/newview/llfloaterdestinations.h               |   0
 indra/newview/llfloaterdisplayname.cpp              |   0
 indra/newview/llfloaterdisplayname.h                |   0
 indra/newview/llfloatereditdaycycle.cpp             |   0
 indra/newview/llfloatereditdaycycle.h               |   0
 indra/newview/llfloatereditsky.cpp                  |   0
 indra/newview/llfloatereditsky.h                    |   0
 indra/newview/llfloatereditwater.cpp                |   0
 indra/newview/llfloatereditwater.h                  |   0
 indra/newview/llfloaterenvironmentsettings.cpp      |   0
 indra/newview/llfloaterenvironmentsettings.h        |   0
 indra/newview/llfloaterevent.cpp                    |   0
 indra/newview/llfloaterevent.h                      |   0
 indra/newview/llfloaterfonttest.cpp                 |   0
 indra/newview/llfloaterfonttest.h                   |   0
 indra/newview/llfloatergesture.cpp                  |   0
 indra/newview/llfloatergesture.h                    |   0
 indra/newview/llfloatergodtools.cpp                 |   0
 indra/newview/llfloatergodtools.h                   |   0
 indra/newview/llfloatergroupinvite.cpp              |   0
 indra/newview/llfloatergroupinvite.h                |   0
 indra/newview/llfloatergroups.cpp                   |   0
 indra/newview/llfloatergroups.h                     |   0
 indra/newview/llfloaterhandler.cpp                  |   0
 indra/newview/llfloaterhandler.h                    |   0
 indra/newview/llfloaterhardwaresettings.cpp         |   0
 indra/newview/llfloaterhardwaresettings.h           |   0
 indra/newview/llfloaterhelpbrowser.cpp              |   0
 indra/newview/llfloaterhelpbrowser.h                |   0
 indra/newview/llfloaterhud.cpp                      |   0
 indra/newview/llfloaterhud.h                        |   0
 indra/newview/llfloaterimagepreview.cpp             |   0
 indra/newview/llfloaterimagepreview.h               |   0
 indra/newview/llfloaterimcontainer.cpp              |   0
 indra/newview/llfloaterimcontainer.h                |   0
 indra/newview/llfloaterimnearbychat.cpp             |   0
 indra/newview/llfloaterimnearbychat.h               |   0
 indra/newview/llfloaterimnearbychathandler.cpp      |   0
 indra/newview/llfloaterimnearbychathandler.h        |   0
 indra/newview/llfloaterimnearbychatlistener.cpp     |   0
 indra/newview/llfloaterimnearbychatlistener.h       |   0
 indra/newview/llfloaterimsession.cpp                |   0
 indra/newview/llfloaterimsession.h                  |   0
 indra/newview/llfloaterimsessiontab.cpp             |   0
 indra/newview/llfloaterimsessiontab.h               |   0
 indra/newview/llfloaterinspect.cpp                  |   0
 indra/newview/llfloaterinspect.h                    |   0
 indra/newview/llfloaterinventory.cpp                |   0
 indra/newview/llfloaterinventory.h                  |   0
 indra/newview/llfloaterjoystick.cpp                 |   0
 indra/newview/llfloaterjoystick.h                   |   0
 indra/newview/llfloaterlagmeter.cpp                 |   0
 indra/newview/llfloaterlagmeter.h                   |   0
 indra/newview/llfloaterland.cpp                     |   0
 indra/newview/llfloaterland.h                       |   0
 indra/newview/llfloaterlandholdings.cpp             |   0
 indra/newview/llfloaterlandholdings.h               |   0
 indra/newview/llfloatermap.cpp                      |   0
 indra/newview/llfloatermap.h                        |   0
 indra/newview/llfloatermediasettings.cpp            |   0
 indra/newview/llfloatermediasettings.h              |   0
 indra/newview/llfloatermemleak.cpp                  |   0
 indra/newview/llfloatermemleak.h                    |   0
 indra/newview/llfloatermodelpreview.h               |   0
 indra/newview/llfloatermodeluploadbase.cpp          |   0
 indra/newview/llfloatermodeluploadbase.h            |   0
 indra/newview/llfloaternamedesc.cpp                 |   0
 indra/newview/llfloaternamedesc.h                   |   0
 indra/newview/llfloaternotificationsconsole.cpp     |   0
 indra/newview/llfloaternotificationsconsole.h       |   0
 indra/newview/llfloaterobjectweights.cpp            |   0
 indra/newview/llfloaterobjectweights.h              |   0
 indra/newview/llfloateropenobject.cpp               |   0
 indra/newview/llfloateropenobject.h                 |   0
 indra/newview/llfloateroutbox.cpp                   |   0
 indra/newview/llfloateroutbox.h                     |   0
 indra/newview/llfloaterpathfindingcharacters.cpp    |   0
 indra/newview/llfloaterpathfindingcharacters.h      |   0
 indra/newview/llfloaterpathfindingconsole.cpp       |   0
 indra/newview/llfloaterpathfindingconsole.h         |   0
 indra/newview/llfloaterpathfindinglinksets.cpp      |   0
 indra/newview/llfloaterpathfindinglinksets.h        |   0
 indra/newview/llfloaterpathfindingobjects.cpp       |   0
 indra/newview/llfloaterpathfindingobjects.h         |   0
 indra/newview/llfloaterpay.cpp                      |   0
 indra/newview/llfloaterpay.h                        |   0
 indra/newview/llfloaterperms.cpp                    |   0
 indra/newview/llfloaterperms.h                      |   0
 indra/newview/llfloaterpostprocess.cpp              |   0
 indra/newview/llfloaterpostprocess.h                |   0
 indra/newview/llfloaterpreference.h                 |   0
 indra/newview/llfloaterproperties.cpp               |   0
 indra/newview/llfloaterproperties.h                 |   0
 indra/newview/llfloaterregiondebugconsole.cpp       |   0
 indra/newview/llfloaterregiondebugconsole.h         |   0
 indra/newview/llfloaterregioninfo.cpp               |   0
 indra/newview/llfloaterregioninfo.h                 |   0
 indra/newview/llfloaterreporter.cpp                 |   0
 indra/newview/llfloaterreporter.h                   |   0
 indra/newview/llfloaterscriptdebug.cpp              |   0
 indra/newview/llfloaterscriptdebug.h                |   0
 indra/newview/llfloaterscriptlimits.cpp             |   0
 indra/newview/llfloaterscriptlimits.h               |   0
 indra/newview/llfloatersearch.cpp                   |   0
 indra/newview/llfloatersearch.h                     |   0
 indra/newview/llfloatersellland.cpp                 |   0
 indra/newview/llfloatersellland.h                   |   0
 indra/newview/llfloatersettingsdebug.cpp            |   0
 indra/newview/llfloatersettingsdebug.h              |   0
 indra/newview/llfloatersidepanelcontainer.cpp       |   0
 indra/newview/llfloatersidepanelcontainer.h         |   0
 indra/newview/llfloatersnapshot.cpp                 |   0
 indra/newview/llfloatersnapshot.h                   |   0
 indra/newview/llfloatersounddevices.cpp             |   0
 indra/newview/llfloatersounddevices.h               |   0
 indra/newview/llfloaterspellchecksettings.cpp       |   0
 indra/newview/llfloaterspellchecksettings.h         |   0
 indra/newview/llfloatertelehub.cpp                  |   0
 indra/newview/llfloatertelehub.h                    |   0
 indra/newview/llfloatertestinspectors.cpp           |   0
 indra/newview/llfloatertestinspectors.h             |   0
 indra/newview/llfloatertestlistview.cpp             |   0
 indra/newview/llfloatertestlistview.h               |   0
 indra/newview/llfloatertexturefetchdebugger.cpp     |   0
 indra/newview/llfloatertexturefetchdebugger.h       |   0
 indra/newview/llfloatertools.cpp                    |   0
 indra/newview/llfloatertools.h                      |   0
 indra/newview/llfloatertopobjects.cpp               |   0
 indra/newview/llfloatertopobjects.h                 |   0
 indra/newview/llfloatertos.cpp                      |   0
 indra/newview/llfloatertos.h                        |   0
 indra/newview/llfloatertoybox.cpp                   |   0
 indra/newview/llfloatertoybox.h                     |   0
 indra/newview/llfloatertranslationsettings.cpp      |   0
 indra/newview/llfloatertranslationsettings.h        |   0
 indra/newview/llfloateruipreview.cpp                |   0
 indra/newview/llfloateruipreview.h                  |   0
 indra/newview/llfloaterurlentry.cpp                 |   0
 indra/newview/llfloaterurlentry.h                   |   0
 indra/newview/llfloatervoiceeffect.cpp              |   0
 indra/newview/llfloatervoiceeffect.h                |   0
 indra/newview/llfloatervoicevolume.cpp              |   0
 indra/newview/llfloatervoicevolume.h                |   0
 indra/newview/llfloaterwebcontent.cpp               |   0
 indra/newview/llfloaterwebcontent.h                 |   0
 indra/newview/llfloaterwebprofile.cpp               |   0
 indra/newview/llfloaterwebprofile.h                 |   0
 indra/newview/llfloaterwhitelistentry.cpp           |   0
 indra/newview/llfloaterwhitelistentry.h             |   0
 indra/newview/llfloaterwindowsize.cpp               |   0
 indra/newview/llfloaterwindowsize.h                 |   0
 indra/newview/llfloaterworldmap.h                   |   0
 indra/newview/llfolderviewmodelinventory.cpp        |   0
 indra/newview/llfolderviewmodelinventory.h          |   0
 indra/newview/llfollowcam.cpp                       |   0
 indra/newview/llfollowcam.h                         |   0
 indra/newview/llfriendcard.cpp                      |   0
 indra/newview/llfriendcard.h                        |   0
 indra/newview/llgesturelistener.cpp                 |   0
 indra/newview/llgesturelistener.h                   |   0
 indra/newview/llgesturemgr.cpp                      |   0
 indra/newview/llgesturemgr.h                        |   0
 indra/newview/llgiveinventory.cpp                   |   0
 indra/newview/llgiveinventory.h                     |   0
 indra/newview/llglsandbox.cpp                       |   0
 indra/newview/llgroupactions.cpp                    |   0
 indra/newview/llgroupactions.h                      |   0
 indra/newview/llgroupiconctrl.cpp                   |   0
 indra/newview/llgroupiconctrl.h                     |   0
 indra/newview/llgrouplist.cpp                       |   0
 indra/newview/llgrouplist.h                         |   0
 indra/newview/llgroupmgr.cpp                        |   0
 indra/newview/llgroupmgr.h                          |   0
 indra/newview/llhints.cpp                           |   0
 indra/newview/llhints.h                             |   0
 indra/newview/llhomelocationresponder.cpp           |   0
 indra/newview/llhomelocationresponder.h             |   0
 indra/newview/llhudeffect.cpp                       |   0
 indra/newview/llhudeffect.h                         |   0
 indra/newview/llhudeffectbeam.cpp                   |   0
 indra/newview/llhudeffectbeam.h                     |   0
 indra/newview/llhudeffectblob.cpp                   |   0
 indra/newview/llhudeffectblob.h                     |   0
 indra/newview/llhudeffectlookat.cpp                 |   0
 indra/newview/llhudeffectlookat.h                   |   0
 indra/newview/llhudeffectpointat.cpp                |   0
 indra/newview/llhudeffectpointat.h                  |   0
 indra/newview/llhudeffecttrail.cpp                  |   0
 indra/newview/llhudeffecttrail.h                    |   0
 indra/newview/llhudicon.cpp                         |   0
 indra/newview/llhudicon.h                           |   0
 indra/newview/llhudmanager.cpp                      |   0
 indra/newview/llhudmanager.h                        |   0
 indra/newview/llhudnametag.cpp                      |   0
 indra/newview/llhudnametag.h                        |   0
 indra/newview/llhudobject.cpp                       |   0
 indra/newview/llhudobject.h                         |   0
 indra/newview/llhudrender.cpp                       |   0
 indra/newview/llhudrender.h                         |   0
 indra/newview/llhudtext.cpp                         |   0
 indra/newview/llhudtext.h                           |   0
 indra/newview/llhudview.cpp                         |   0
 indra/newview/llhudview.h                           |   0
 indra/newview/llimhandler.cpp                       |   0
 indra/newview/llimpanel.cpp                         |   0
 indra/newview/llimpanel.h                           |   0
 indra/newview/llimview.cpp                          |   0
 indra/newview/llimview.h                            |   0
 indra/newview/llinspect.cpp                         |   0
 indra/newview/llinspect.h                           |   0
 indra/newview/llinspectavatar.cpp                   |   0
 indra/newview/llinspectavatar.h                     |   0
 indra/newview/llinspectgroup.cpp                    |   0
 indra/newview/llinspectgroup.h                      |   0
 indra/newview/llinspectobject.cpp                   |   0
 indra/newview/llinspectobject.h                     |   0
 indra/newview/llinspectremoteobject.cpp             |   0
 indra/newview/llinspectremoteobject.h               |   0
 indra/newview/llinspecttoast.cpp                    |   0
 indra/newview/llinspecttoast.h                      |   0
 indra/newview/llinventoryactions.h                  |   0
 indra/newview/llinventorybridge.cpp                 |   0
 indra/newview/llinventorybridge.h                   |   0
 indra/newview/llinventoryclipboard.cpp              |   0
 indra/newview/llinventoryclipboard.h                |   0
 indra/newview/llinventoryfilter.cpp                 |   0
 indra/newview/llinventoryfilter.h                   |   0
 indra/newview/llinventoryfunctions.cpp              |   0
 indra/newview/llinventoryfunctions.h                |   0
 indra/newview/llinventoryicon.cpp                   |   0
 indra/newview/llinventoryicon.h                     |   0
 indra/newview/llinventoryitemslist.cpp              |   0
 indra/newview/llinventoryitemslist.h                |   0
 indra/newview/llinventorylistitem.cpp               |   0
 indra/newview/llinventorylistitem.h                 |   0
 indra/newview/llinventorymodel.cpp                  |   0
 indra/newview/llinventorymodel.h                    |   0
 indra/newview/llinventorymodelbackgroundfetch.cpp   |   0
 indra/newview/llinventorymodelbackgroundfetch.h     |   0
 indra/newview/llinventoryobserver.cpp               |   0
 indra/newview/llinventoryobserver.h                 |   0
 indra/newview/llinventorypanel.cpp                  |   0
 indra/newview/llinventorypanel.h                    |   0
 indra/newview/lljoystickbutton.cpp                  |   0
 indra/newview/lljoystickbutton.h                    |   0
 indra/newview/lllandmarkactions.cpp                 |   0
 indra/newview/lllandmarkactions.h                   |   0
 indra/newview/lllandmarklist.cpp                    |   0
 indra/newview/lllandmarklist.h                      |   0
 indra/newview/lllightconstants.h                    |   0
 indra/newview/lllistbrowser.cpp                     |   0
 indra/newview/lllistbrowser.h                       |   0
 indra/newview/lllistcontextmenu.cpp                 |   0
 indra/newview/lllistcontextmenu.h                   |   0
 indra/newview/lllistview.cpp                        |   0
 indra/newview/lllistview.h                          |   0
 indra/newview/lllocalbitmaps.cpp                    |   0
 indra/newview/lllocalbitmaps.h                      |   0
 indra/newview/lllocaltextureobject.cpp              |   0
 indra/newview/lllocaltextureobject.h                |   0
 indra/newview/lllocationhistory.cpp                 |   0
 indra/newview/lllocationhistory.h                   |   0
 indra/newview/lllocationinputctrl.cpp               |   0
 indra/newview/lllocationinputctrl.h                 |   0
 indra/newview/lllogchat.cpp                         |   0
 indra/newview/lllogchat.h                           |   0
 indra/newview/llloginhandler.cpp                    |   0
 indra/newview/llloginhandler.h                      |   0
 indra/newview/lllogininstance.cpp                   |   0
 indra/newview/lllogininstance.h                     |   0
 indra/newview/lllookshistorypanel.h                 |   0
 indra/newview/llmachineid.cpp                       |   0
 indra/newview/llmachineid.h                         |   0
 indra/newview/llmainlooprepeater.cpp                |   0
 indra/newview/llmainlooprepeater.h                  |   0
 indra/newview/llmanip.cpp                           |   0
 indra/newview/llmanip.h                             |   0
 indra/newview/llmaniprotate.cpp                     |   0
 indra/newview/llmaniprotate.h                       |   0
 indra/newview/llmanipscale.cpp                      |   0
 indra/newview/llmanipscale.h                        |   0
 indra/newview/llmaniptranslate.cpp                  |   0
 indra/newview/llmaniptranslate.h                    |   0
 indra/newview/llmarketplacefunctions.cpp            |   0
 indra/newview/llmarketplacefunctions.h              |   0
 indra/newview/llmarketplacenotifications.cpp        |   0
 indra/newview/llmarketplacenotifications.h          |   0
 indra/newview/llmediactrl.cpp                       |   0
 indra/newview/llmediactrl.h                         |   0
 indra/newview/llmediadataclient.cpp                 |   0
 indra/newview/llmediadataclient.h                   |   0
 .../llmenuoptionpathfindingrebakenavmesh.cpp        |   0
 .../newview/llmenuoptionpathfindingrebakenavmesh.h  |   0
 indra/newview/llmeshrepository.h                    |   0
 indra/newview/llmimetypes.cpp                       |   0
 indra/newview/llmimetypes.h                         |   0
 indra/newview/llmorphview.cpp                       |   0
 indra/newview/llmorphview.h                         |   0
 indra/newview/llmoveview.cpp                        |   0
 indra/newview/llmoveview.h                          |   0
 indra/newview/llmutelist.cpp                        |   0
 indra/newview/llmutelist.h                          |   0
 indra/newview/llnamebox.cpp                         |   0
 indra/newview/llnamebox.h                           |   0
 indra/newview/llnameeditor.cpp                      |   0
 indra/newview/llnameeditor.h                        |   0
 indra/newview/llnamelistctrl.cpp                    |   0
 indra/newview/llnamelistctrl.h                      |   0
 indra/newview/llnavigationbar.cpp                   |   0
 indra/newview/llnavigationbar.h                     |   0
 indra/newview/llnetmap.cpp                          |   0
 indra/newview/llnetmap.h                            |   0
 indra/newview/llnotificationalerthandler.cpp        |   0
 indra/newview/llnotificationgrouphandler.cpp        |   0
 indra/newview/llnotificationhandler.h               |   0
 indra/newview/llnotificationhandlerutil.cpp         |   0
 indra/newview/llnotificationhinthandler.cpp         |   0
 indra/newview/llnotificationmanager.cpp             |   0
 indra/newview/llnotificationmanager.h               |   0
 indra/newview/llnotificationofferhandler.cpp        |   0
 indra/newview/llnotificationscripthandler.cpp       |   0
 indra/newview/llnotificationstorage.cpp             |   0
 indra/newview/llnotificationstorage.h               |   0
 indra/newview/llnotificationtiphandler.cpp          |   0
 indra/newview/lloutfitobserver.cpp                  |   0
 indra/newview/lloutfitobserver.h                    |   0
 indra/newview/lloutfitslist.cpp                     |   0
 indra/newview/lloutfitslist.h                       |   0
 indra/newview/lloutputmonitorctrl.cpp               |   0
 indra/newview/lloutputmonitorctrl.h                 |   0
 indra/newview/llpanelappearancetab.cpp              |   0
 indra/newview/llpanelappearancetab.h                |   0
 indra/newview/llpanelavatar.cpp                     |   0
 indra/newview/llpanelavatar.h                       |   0
 indra/newview/llpanelavatartag.cpp                  |   0
 indra/newview/llpanelavatartag.h                    |   0
 indra/newview/llpanelblockedlist.cpp                |   0
 indra/newview/llpanelblockedlist.h                  |   0
 indra/newview/llpanelclassified.cpp                 |   0
 indra/newview/llpanelclassified.h                   |   0
 indra/newview/llpanelcontents.cpp                   |   0
 indra/newview/llpanelcontents.h                     |   0
 indra/newview/llpaneleditwearable.cpp               |   0
 indra/newview/llpaneleditwearable.h                 |   0
 indra/newview/llpanelface.cpp                       |   0
 indra/newview/llpanelface.h                         |   0
 indra/newview/llpanelgenerictip.cpp                 |   0
 indra/newview/llpanelgenerictip.h                   |   0
 indra/newview/llpanelgroup.cpp                      |   0
 indra/newview/llpanelgroup.h                        |   0
 indra/newview/llpanelgroupgeneral.cpp               |   0
 indra/newview/llpanelgroupgeneral.h                 |   0
 indra/newview/llpanelgroupinvite.cpp                |   0
 indra/newview/llpanelgroupinvite.h                  |   0
 indra/newview/llpanelgrouplandmoney.cpp             |   0
 indra/newview/llpanelgrouplandmoney.h               |   0
 indra/newview/llpanelgroupnotices.cpp               |   0
 indra/newview/llpanelgroupnotices.h                 |   0
 indra/newview/llpanelgrouproles.cpp                 |   0
 indra/newview/llpanelgrouproles.h                   |   0
 indra/newview/llpanelhome.cpp                       |   0
 indra/newview/llpanelhome.h                         |   0
 indra/newview/llpanelimcontrolpanel.cpp             |   0
 indra/newview/llpanelimcontrolpanel.h               |   0
 indra/newview/llpanelland.cpp                       |   0
 indra/newview/llpanelland.h                         |   0
 indra/newview/llpanellandaudio.cpp                  |   0
 indra/newview/llpanellandaudio.h                    |   0
 indra/newview/llpanellandmarkinfo.cpp               |   0
 indra/newview/llpanellandmarkinfo.h                 |   0
 indra/newview/llpanellandmarks.cpp                  |   0
 indra/newview/llpanellandmarks.h                    |   0
 indra/newview/llpanellandmedia.cpp                  |   0
 indra/newview/llpanellandmedia.h                    |   0
 indra/newview/llpanellogin.cpp                      |   0
 indra/newview/llpanellogin.h                        |   0
 indra/newview/llpanelloginlistener.cpp              |   0
 indra/newview/llpanelloginlistener.h                |   0
 indra/newview/llpanelmaininventory.cpp              |   0
 indra/newview/llpanelmaininventory.h                |   0
 indra/newview/llpanelmarketplaceinbox.cpp           |   0
 indra/newview/llpanelmarketplaceinbox.h             |   0
 indra/newview/llpanelmarketplaceinboxinventory.cpp  |   0
 indra/newview/llpanelmarketplaceinboxinventory.h    |   0
 indra/newview/llpanelme.cpp                         |   0
 indra/newview/llpanelme.h                           |   0
 indra/newview/llpanelmediasettingsgeneral.cpp       |   0
 indra/newview/llpanelmediasettingsgeneral.h         |   0
 indra/newview/llpanelmediasettingspermissions.cpp   |   0
 indra/newview/llpanelmediasettingspermissions.h     |   0
 indra/newview/llpanelmediasettingssecurity.cpp      |   0
 indra/newview/llpanelmediasettingssecurity.h        |   0
 indra/newview/llpanelnearbymedia.cpp                |   0
 indra/newview/llpanelnearbymedia.h                  |   0
 indra/newview/llpanelobject.cpp                     |   0
 indra/newview/llpanelobject.h                       |   0
 indra/newview/llpanelobjectinventory.cpp            |   0
 indra/newview/llpanelobjectinventory.h              |   0
 indra/newview/llpanelonlinestatus.cpp               |   0
 indra/newview/llpanelonlinestatus.h                 |   0
 indra/newview/llpaneloutfitedit.cpp                 |   0
 indra/newview/llpaneloutfitedit.h                   |   0
 indra/newview/llpaneloutfitsinventory.cpp           |   0
 indra/newview/llpaneloutfitsinventory.h             |   0
 indra/newview/llpanelpeople.cpp                     |   0
 indra/newview/llpanelpeople.h                       |   0
 indra/newview/llpanelpeoplemenus.cpp                |   0
 indra/newview/llpanelpeoplemenus.h                  |   0
 indra/newview/llpanelpermissions.cpp                |   0
 indra/newview/llpanelpermissions.h                  |   0
 indra/newview/llpanelpick.cpp                       |   0
 indra/newview/llpanelpick.h                         |   0
 indra/newview/llpanelplaceinfo.cpp                  |   0
 indra/newview/llpanelplaceinfo.h                    |   0
 indra/newview/llpanelplaceprofile.cpp               |   0
 indra/newview/llpanelplaceprofile.h                 |   0
 indra/newview/llpanelplaces.cpp                     |   0
 indra/newview/llpanelplaces.h                       |   0
 indra/newview/llpanelplacestab.cpp                  |   0
 indra/newview/llpanelplacestab.h                    |   0
 indra/newview/llpanelprimmediacontrols.cpp          |   0
 indra/newview/llpanelprimmediacontrols.h            |   0
 indra/newview/llpanelsnapshot.cpp                   |   0
 indra/newview/llpanelsnapshot.h                     |   0
 indra/newview/llpanelsnapshotinventory.cpp          |   0
 indra/newview/llpanelsnapshotlocal.cpp              |   0
 indra/newview/llpanelsnapshotoptions.cpp            |   0
 indra/newview/llpanelsnapshotpostcard.cpp           |   0
 indra/newview/llpanelsnapshotprofile.cpp            |   0
 indra/newview/llpanelteleporthistory.cpp            |   0
 indra/newview/llpanelteleporthistory.h              |   0
 indra/newview/llpaneltiptoast.cpp                   |   0
 indra/newview/llpaneltiptoast.h                     |   0
 indra/newview/llpaneltopinfobar.cpp                 |   0
 indra/newview/llpaneltopinfobar.h                   |   0
 indra/newview/llpanelvoicedevicesettings.cpp        |   0
 indra/newview/llpanelvoicedevicesettings.h          |   0
 indra/newview/llpanelvoiceeffect.cpp                |   0
 indra/newview/llpanelvoiceeffect.h                  |   0
 indra/newview/llpanelvolume.cpp                     |   0
 indra/newview/llpanelvolume.h                       |   0
 indra/newview/llpanelvolumepulldown.cpp             |   0
 indra/newview/llpanelvolumepulldown.h               |   0
 indra/newview/llpanelwearing.cpp                    |   0
 indra/newview/llpanelwearing.h                      |   0
 indra/newview/llparcelselection.cpp                 |   0
 indra/newview/llparcelselection.h                   |   0
 indra/newview/llparticipantlist.cpp                 |   0
 indra/newview/llparticipantlist.h                   |   0
 indra/newview/llpatchvertexarray.cpp                |   0
 indra/newview/llpatchvertexarray.h                  |   0
 indra/newview/llpathfindingcharacter.cpp            |   0
 indra/newview/llpathfindingcharacter.h              |   0
 indra/newview/llpathfindingcharacterlist.cpp        |   0
 indra/newview/llpathfindingcharacterlist.h          |   0
 indra/newview/llpathfindinglinkset.cpp              |   0
 indra/newview/llpathfindinglinkset.h                |   0
 indra/newview/llpathfindinglinksetlist.cpp          |   0
 indra/newview/llpathfindinglinksetlist.h            |   0
 indra/newview/llpathfindingmanager.cpp              |   0
 indra/newview/llpathfindingmanager.h                |   0
 indra/newview/llpathfindingnavmesh.cpp              |   0
 indra/newview/llpathfindingnavmesh.h                |   0
 indra/newview/llpathfindingnavmeshstatus.cpp        |   0
 indra/newview/llpathfindingnavmeshstatus.h          |   0
 indra/newview/llpathfindingnavmeshzone.cpp          |   0
 indra/newview/llpathfindingnavmeshzone.h            |   0
 indra/newview/llpathfindingobject.cpp               |   0
 indra/newview/llpathfindingobject.h                 |   0
 indra/newview/llpathfindingobjectlist.cpp           |   0
 indra/newview/llpathfindingobjectlist.h             |   0
 indra/newview/llpathfindingpathtool.cpp             |   0
 indra/newview/llpathfindingpathtool.h               |   0
 indra/newview/llpersistentnotificationstorage.cpp   |   0
 indra/newview/llpersistentnotificationstorage.h     |   0
 indra/newview/llphysicsmotion.cpp                   |   0
 indra/newview/llphysicsmotion.h                     |   0
 indra/newview/llphysicsshapebuilderutil.cpp         |   0
 indra/newview/llphysicsshapebuilderutil.h           |   0
 indra/newview/llplacesfolderview.cpp                |   0
 indra/newview/llplacesfolderview.h                  |   0
 indra/newview/llplacesinventorybridge.cpp           |   0
 indra/newview/llplacesinventorybridge.h             |   0
 indra/newview/llplacesinventorypanel.cpp            |   0
 indra/newview/llplacesinventorypanel.h              |   0
 indra/newview/llpolymesh.cpp                        |   0
 indra/newview/llpolymesh.h                          |   0
 indra/newview/llpolymorph.cpp                       |   0
 indra/newview/llpolymorph.h                         |   0
 indra/newview/llpopupview.cpp                       |   0
 indra/newview/llpopupview.h                         |   0
 indra/newview/llpostcard.cpp                        |   0
 indra/newview/llpostcard.h                          |   0
 indra/newview/llpreview.cpp                         |   0
 indra/newview/llpreview.h                           |   0
 indra/newview/llpreviewanim.cpp                     |   0
 indra/newview/llpreviewanim.h                       |   0
 indra/newview/llpreviewgesture.cpp                  |   0
 indra/newview/llpreviewgesture.h                    |   0
 indra/newview/llpreviewnotecard.cpp                 |   0
 indra/newview/llpreviewnotecard.h                   |   0
 indra/newview/llpreviewscript.cpp                   |   0
 indra/newview/llpreviewscript.h                     |   0
 indra/newview/llpreviewsound.cpp                    |   0
 indra/newview/llpreviewsound.h                      |   0
 indra/newview/llpreviewtexture.cpp                  |   0
 indra/newview/llpreviewtexture.h                    |   0
 indra/newview/llproductinforequest.cpp              |   0
 indra/newview/llproductinforequest.h                |   0
 indra/newview/llprogressview.cpp                    |   0
 indra/newview/llprogressview.h                      |   0
 indra/newview/llrecentpeople.cpp                    |   0
 indra/newview/llrecentpeople.h                      |   0
 indra/newview/llregioninfomodel.cpp                 |   0
 indra/newview/llregioninfomodel.h                   |   0
 indra/newview/llregionposition.cpp                  |   0
 indra/newview/llregionposition.h                    |   0
 indra/newview/llremoteparcelrequest.cpp             |   0
 indra/newview/llremoteparcelrequest.h               |   0
 indra/newview/llresourcedata.h                      |   0
 indra/newview/llrootview.h                          |   0
 indra/newview/llsavedsettingsglue.cpp               |   0
 indra/newview/llsavedsettingsglue.h                 |   0
 indra/newview/llsaveoutfitcombobtn.cpp              |   0
 indra/newview/llsaveoutfitcombobtn.h                |   0
 indra/newview/llsceneview.cpp                       |   0
 indra/newview/llsceneview.h                         |   0
 indra/newview/llscreenchannel.cpp                   |   0
 indra/newview/llscreenchannel.h                     |   0
 indra/newview/llscriptfloater.cpp                   |   0
 indra/newview/llscriptfloater.h                     |   0
 indra/newview/llscrollingpanelparam.cpp             |   0
 indra/newview/llscrollingpanelparam.h               |   0
 indra/newview/llscrollingpanelparambase.cpp         |   0
 indra/newview/llscrollingpanelparambase.h           |   0
 indra/newview/llsearchcombobox.cpp                  |   0
 indra/newview/llsearchcombobox.h                    |   0
 indra/newview/llsearchhistory.cpp                   |   0
 indra/newview/llsearchhistory.h                     |   0
 indra/newview/llsecapi.cpp                          |   0
 indra/newview/llsecapi.h                            |   0
 indra/newview/llsechandler_basic.cpp                |   0
 indra/newview/llsechandler_basic.h                  |   0
 indra/newview/llselectmgr.cpp                       |   0
 indra/newview/llselectmgr.h                         |   0
 indra/newview/llshareavatarhandler.cpp              |   0
 indra/newview/llsidepanelappearance.cpp             |   0
 indra/newview/llsidepanelappearance.h               |   0
 indra/newview/llsidepanelinventory.cpp              |   0
 indra/newview/llsidepanelinventory.h                |   0
 indra/newview/llsidepanelinventorysubpanel.cpp      |   0
 indra/newview/llsidepanelinventorysubpanel.h        |   0
 indra/newview/llsidepaneliteminfo.cpp               |   0
 indra/newview/llsidepaneliteminfo.h                 |   0
 indra/newview/llsidepaneltaskinfo.cpp               |   0
 indra/newview/llsidepaneltaskinfo.h                 |   0
 indra/newview/llsidetraypanelcontainer.cpp          |   0
 indra/newview/llsidetraypanelcontainer.h            |   0
 indra/newview/llsimplestat.h                        |   0
 indra/newview/llsky.cpp                             |   0
 indra/newview/llsky.h                               |   0
 indra/newview/llslurl.cpp                           |   0
 indra/newview/llslurl.h                             |   0
 indra/newview/llspatialpartition.cpp                |   0
 indra/newview/llspatialpartition.h                  |   0
 indra/newview/llspeakers.cpp                        |   0
 indra/newview/llspeakers.h                          |   0
 indra/newview/llspeakingindicatormanager.cpp        |   0
 indra/newview/llspeakingindicatormanager.h          |   0
 indra/newview/llsplitbutton.cpp                     |   0
 indra/newview/llsplitbutton.h                       |   0
 indra/newview/llsprite.cpp                          |   0
 indra/newview/llsprite.h                            |   0
 indra/newview/llsrv.cpp                             |   0
 indra/newview/llsrv.h                               |   0
 indra/newview/llstartup.cpp                         |   0
 indra/newview/llstartup.h                           |   0
 indra/newview/llstartuplistener.cpp                 |   0
 indra/newview/llstartuplistener.h                   |   0
 indra/newview/llstatusbar.cpp                       |   0
 indra/newview/llstatusbar.h                         |   0
 indra/newview/llstylemap.cpp                        |   0
 indra/newview/llstylemap.h                          |   0
 indra/newview/llsurface.cpp                         |   0
 indra/newview/llsurface.h                           |   0
 indra/newview/llsurfacepatch.cpp                    |   0
 indra/newview/llsurfacepatch.h                      |   0
 indra/newview/llsyswellitem.cpp                     |   0
 indra/newview/llsyswellitem.h                       |   0
 indra/newview/llsyswellwindow.cpp                   |   0
 indra/newview/llsyswellwindow.h                     |   0
 indra/newview/lltable.h                             |   0
 indra/newview/llteleporthistory.cpp                 |   0
 indra/newview/llteleporthistory.h                   |   0
 indra/newview/llteleporthistorystorage.cpp          |   0
 indra/newview/llteleporthistorystorage.h            |   0
 indra/newview/lltexglobalcolor.cpp                  |   0
 indra/newview/lltexglobalcolor.h                    |   0
 indra/newview/lltexlayer.cpp                        |   0
 indra/newview/lltexlayer.h                          |   0
 indra/newview/lltexlayerparams.cpp                  |   0
 indra/newview/lltexlayerparams.h                    |   0
 indra/newview/lltextureatlas.cpp                    |   0
 indra/newview/lltextureatlas.h                      |   0
 indra/newview/lltextureatlasmanager.cpp             |   0
 indra/newview/lltextureatlasmanager.h               |   0
 indra/newview/lltexturecache.cpp                    |   0
 indra/newview/lltexturecache.h                      |   0
 indra/newview/lltexturectrl.cpp                     |   0
 indra/newview/lltexturectrl.h                       |   0
 indra/newview/lltexturefetch.h                      |   0
 indra/newview/lltextureinfo.cpp                     |   0
 indra/newview/lltextureinfo.h                       |   0
 indra/newview/lltextureinfodetails.cpp              |   0
 indra/newview/lltextureinfodetails.h                |   0
 indra/newview/lltexturestats.cpp                    |   0
 indra/newview/lltexturestats.h                      |   0
 indra/newview/lltexturestatsuploader.cpp            |   0
 indra/newview/lltexturestatsuploader.h              |   0
 indra/newview/lltextureview.cpp                     |   0
 indra/newview/lltextureview.h                       |   0
 indra/newview/lltoast.cpp                           |   0
 indra/newview/lltoast.h                             |   0
 indra/newview/lltoastalertpanel.cpp                 |   0
 indra/newview/lltoastalertpanel.h                   |   0
 indra/newview/lltoastgroupnotifypanel.cpp           |   0
 indra/newview/lltoastgroupnotifypanel.h             |   0
 indra/newview/lltoastimpanel.cpp                    |   0
 indra/newview/lltoastimpanel.h                      |   0
 indra/newview/lltoastnotifypanel.cpp                |   0
 indra/newview/lltoastnotifypanel.h                  |   0
 indra/newview/lltoastpanel.cpp                      |   0
 indra/newview/lltoastpanel.h                        |   0
 indra/newview/lltoastscriptquestion.cpp             |   0
 indra/newview/lltoastscriptquestion.h               |   0
 indra/newview/lltoastscripttextbox.cpp              |   0
 indra/newview/lltoastscripttextbox.h                |   0
 indra/newview/lltool.cpp                            |   0
 indra/newview/lltool.h                              |   0
 indra/newview/lltoolbarview.cpp                     |   0
 indra/newview/lltoolbarview.h                       |   0
 indra/newview/lltoolbrush.cpp                       |   0
 indra/newview/lltoolbrush.h                         |   0
 indra/newview/lltoolcomp.cpp                        |   0
 indra/newview/lltoolcomp.h                          |   0
 indra/newview/lltooldraganddrop.cpp                 |   0
 indra/newview/lltooldraganddrop.h                   |   0
 indra/newview/lltoolface.cpp                        |   0
 indra/newview/lltoolface.h                          |   0
 indra/newview/lltoolfocus.cpp                       |   0
 indra/newview/lltoolfocus.h                         |   0
 indra/newview/lltoolgrab.cpp                        |   0
 indra/newview/lltoolgrab.h                          |   0
 indra/newview/lltoolgun.cpp                         |   0
 indra/newview/lltoolgun.h                           |   0
 indra/newview/lltoolindividual.cpp                  |   0
 indra/newview/lltoolindividual.h                    |   0
 indra/newview/lltoolmgr.cpp                         |   0
 indra/newview/lltoolmgr.h                           |   0
 indra/newview/lltoolmorph.cpp                       |   0
 indra/newview/lltoolmorph.h                         |   0
 indra/newview/lltoolobjpicker.cpp                   |   0
 indra/newview/lltoolobjpicker.h                     |   0
 indra/newview/lltoolpie.cpp                         |   0
 indra/newview/lltoolpie.h                           |   0
 indra/newview/lltoolpipette.cpp                     |   0
 indra/newview/lltoolpipette.h                       |   0
 indra/newview/lltoolplacer.cpp                      |   0
 indra/newview/lltoolplacer.h                        |   0
 indra/newview/lltoolselect.cpp                      |   0
 indra/newview/lltoolselect.h                        |   0
 indra/newview/lltoolselectland.cpp                  |   0
 indra/newview/lltoolselectland.h                    |   0
 indra/newview/lltoolselectrect.cpp                  |   0
 indra/newview/lltoolselectrect.h                    |   0
 indra/newview/lltoolview.cpp                        |   0
 indra/newview/lltoolview.h                          |   0
 indra/newview/lltracker.cpp                         |   0
 indra/newview/lltracker.h                           |   0
 indra/newview/lltransientdockablefloater.cpp        |   0
 indra/newview/lltransientdockablefloater.h          |   0
 indra/newview/lltransientfloatermgr.cpp             |   0
 indra/newview/lltransientfloatermgr.h               |   0
 indra/newview/lluiconstants.h                       |   0
 indra/newview/lluilistener.cpp                      |   0
 indra/newview/lluilistener.h                        |   0
 indra/newview/lluploaddialog.cpp                    |   0
 indra/newview/lluploaddialog.h                      |   0
 indra/newview/lluploadfloaterobservers.cpp          |   0
 indra/newview/lluploadfloaterobservers.h            |   0
 indra/newview/llurl.cpp                             |   0
 indra/newview/llurl.h                               |   0
 indra/newview/llurldispatcher.cpp                   |   0
 indra/newview/llurldispatcher.h                     |   0
 indra/newview/llurldispatcherlistener.cpp           |   0
 indra/newview/llurldispatcherlistener.h             |   0
 indra/newview/llurlhistory.cpp                      |   0
 indra/newview/llurlhistory.h                        |   0
 indra/newview/llurllineeditorctrl.cpp               |   0
 indra/newview/llurllineeditorctrl.h                 |   0
 indra/newview/llurlwhitelist.cpp                    |   0
 indra/newview/llurlwhitelist.h                      |   0
 indra/newview/llvectorperfoptions.cpp               |   0
 indra/newview/llvectorperfoptions.h                 |   0
 indra/newview/llversioninfo.cpp                     |   0
 indra/newview/llversioninfo.h                       |   0
 indra/newview/llviewchildren.cpp                    |   0
 indra/newview/llviewchildren.h                      |   0
 indra/newview/llviewerassetstats.cpp                |   0
 indra/newview/llviewerassetstats.h                  |   0
 indra/newview/llviewerassetstorage.cpp              |   0
 indra/newview/llviewerassetstorage.h                |   0
 indra/newview/llviewerassettype.cpp                 |   0
 indra/newview/llviewerassettype.h                   |   0
 indra/newview/llviewerattachmenu.cpp                |   0
 indra/newview/llviewerattachmenu.h                  |   0
 indra/newview/llvieweraudio.cpp                     |   0
 indra/newview/llvieweraudio.h                       |   0
 indra/newview/llviewercamera.cpp                    |   0
 indra/newview/llviewercamera.h                      |   0
 indra/newview/llviewerchat.cpp                      |   0
 indra/newview/llviewerchat.h                        |   0
 indra/newview/llviewercontrol.cpp                   |   0
 indra/newview/llviewercontrol.h                     |   0
 indra/newview/llviewercontrollistener.cpp           |   0
 indra/newview/llviewercontrollistener.h             |   0
 indra/newview/llviewerdisplay.cpp                   |   0
 indra/newview/llviewerdisplay.h                     |   0
 indra/newview/llviewerdisplayname.cpp               |   0
 indra/newview/llviewerdisplayname.h                 |   0
 indra/newview/llviewerfloaterreg.cpp                |   0
 indra/newview/llviewerfloaterreg.h                  |   0
 indra/newview/llviewerfoldertype.h                  |   0
 indra/newview/llviewergenericmessage.cpp            |   0
 indra/newview/llviewergenericmessage.h              |   0
 indra/newview/llviewergesture.cpp                   |   0
 indra/newview/llviewergesture.h                     |   0
 indra/newview/llviewerhelp.cpp                      |   0
 indra/newview/llviewerhelp.h                        |   0
 indra/newview/llviewerhelputil.cpp                  |   0
 indra/newview/llviewerhelputil.h                    |   0
 indra/newview/llviewerhome.cpp                      |   0
 indra/newview/llviewerhome.h                        |   0
 indra/newview/llviewerinventory.cpp                 |   0
 indra/newview/llviewerinventory.h                   |   0
 indra/newview/llviewerjoint.cpp                     |   0
 indra/newview/llviewerjoint.h                       |   0
 indra/newview/llviewerjointattachment.cpp           |   0
 indra/newview/llviewerjointattachment.h             |   0
 indra/newview/llviewerjointmesh.cpp                 |   0
 indra/newview/llviewerjointmesh.h                   |   0
 indra/newview/llviewerjoystick.cpp                  |   0
 indra/newview/llviewerjoystick.h                    |   0
 indra/newview/llviewerkeyboard.cpp                  |   0
 indra/newview/llviewerkeyboard.h                    |   0
 indra/newview/llviewerlayer.cpp                     |   0
 indra/newview/llviewerlayer.h                       |   0
 indra/newview/llviewermedia.cpp                     |   0
 indra/newview/llviewermedia.h                       |   0
 indra/newview/llviewermedia_streamingaudio.cpp      |   0
 indra/newview/llviewermedia_streamingaudio.h        |   0
 indra/newview/llviewermediafocus.cpp                |   0
 indra/newview/llviewermediafocus.h                  |   0
 indra/newview/llviewermediaobserver.h               |   0
 indra/newview/llviewermenu.cpp                      |   0
 indra/newview/llviewermenu.h                        |   0
 indra/newview/llviewermenufile.cpp                  |   0
 indra/newview/llviewermenufile.h                    |   0
 indra/newview/llviewermessage.h                     |   0
 indra/newview/llviewernetwork.cpp                   |   0
 indra/newview/llviewernetwork.h                     |   0
 indra/newview/llviewerobject.cpp                    |   0
 indra/newview/llviewerobject.h                      |   0
 indra/newview/llviewerobjectlist.cpp                |   0
 indra/newview/llviewerobjectlist.h                  |   0
 indra/newview/llviewerparcelmedia.cpp               |   0
 indra/newview/llviewerparcelmedia.h                 |   0
 indra/newview/llviewerparcelmediaautoplay.cpp       |   0
 indra/newview/llviewerparcelmediaautoplay.h         |   0
 indra/newview/llviewerparcelmgr.cpp                 |   0
 indra/newview/llviewerparcelmgr.h                   |   0
 indra/newview/llviewerparceloverlay.cpp             |   0
 indra/newview/llviewerparceloverlay.h               |   0
 indra/newview/llviewerpartsim.cpp                   |   0
 indra/newview/llviewerpartsim.h                     |   0
 indra/newview/llviewerpartsource.cpp                |   0
 indra/newview/llviewerpartsource.h                  |   0
 indra/newview/llviewerprecompiledheaders.cpp        |   0
 indra/newview/llviewerprecompiledheaders.h          |   0
 indra/newview/llviewerregion.cpp                    |   0
 indra/newview/llviewerregion.h                      |   0
 indra/newview/llviewershadermgr.cpp                 |   0
 indra/newview/llviewershadermgr.h                   |   0
 indra/newview/llviewerstats.cpp                     |   0
 indra/newview/llviewerstats.h                       |   0
 indra/newview/llviewerstatsrecorder.cpp             |   0
 indra/newview/llviewerstatsrecorder.h               |   0
 indra/newview/llviewertexteditor.cpp                |   0
 indra/newview/llviewertexteditor.h                  |   0
 indra/newview/llviewertexture.cpp                   |   0
 indra/newview/llviewertexture.h                     |   0
 indra/newview/llviewertextureanim.cpp               |   0
 indra/newview/llviewertextureanim.h                 |   0
 indra/newview/llviewertexturelist.cpp               |   0
 indra/newview/llviewertexturelist.h                 |   0
 indra/newview/llviewerthrottle.cpp                  |   0
 indra/newview/llviewerthrottle.h                    |   0
 indra/newview/llviewervisualparam.cpp               |   0
 indra/newview/llviewervisualparam.h                 |   0
 indra/newview/llviewerwindow.h                      |   0
 indra/newview/llviewerwindowlistener.cpp            |   0
 indra/newview/llviewerwindowlistener.h              |   0
 indra/newview/llvlcomposition.cpp                   |   0
 indra/newview/llvlcomposition.h                     |   0
 indra/newview/llvlmanager.cpp                       |   0
 indra/newview/llvlmanager.h                         |   0
 indra/newview/llvoavatar.cpp                        |   0
 indra/newview/llvoavatar.h                          |   0
 indra/newview/llvoavatardefines.cpp                 |   0
 indra/newview/llvoavatardefines.h                   |   0
 indra/newview/llvoavatarself.cpp                    |   0
 indra/newview/llvoavatarself.h                      |   0
 indra/newview/llvocache.cpp                         |   0
 indra/newview/llvocache.h                           |   0
 indra/newview/llvograss.cpp                         |   0
 indra/newview/llvograss.h                           |   0
 indra/newview/llvoground.cpp                        |   0
 indra/newview/llvoground.h                          |   0
 indra/newview/llvoicecallhandler.cpp                |   0
 indra/newview/llvoicechannel.cpp                    |   0
 indra/newview/llvoicechannel.h                      |   0
 indra/newview/llvoiceclient.cpp                     |   0
 indra/newview/llvoiceclient.h                       |   0
 indra/newview/llvoicevisualizer.cpp                 |   0
 indra/newview/llvoicevisualizer.h                   |   0
 indra/newview/llvoicevivox.cpp                      |   0
 indra/newview/llvoicevivox.h                        |   0
 indra/newview/llvoinventorylistener.cpp             |   0
 indra/newview/llvoinventorylistener.h               |   0
 indra/newview/llvopartgroup.cpp                     |   0
 indra/newview/llvopartgroup.h                       |   0
 indra/newview/llvosky.cpp                           |   0
 indra/newview/llvosky.h                             |   0
 indra/newview/llvosurfacepatch.cpp                  |   0
 indra/newview/llvosurfacepatch.h                    |   0
 indra/newview/llvotree.cpp                          |   0
 indra/newview/llvotree.h                            |   0
 indra/newview/llvotreenew.h                         |   0
 indra/newview/llvovolume.cpp                        |   0
 indra/newview/llvovolume.h                          |   0
 indra/newview/llvowater.cpp                         |   0
 indra/newview/llvowater.h                           |   0
 indra/newview/llvowlsky.cpp                         |   0
 indra/newview/llvowlsky.h                           |   0
 indra/newview/llwatchdog.cpp                        |   0
 indra/newview/llwatchdog.h                          |   0
 indra/newview/llwaterparammanager.cpp               |   0
 indra/newview/llwaterparammanager.h                 |   0
 indra/newview/llwaterparamset.cpp                   |   0
 indra/newview/llwaterparamset.h                     |   0
 indra/newview/llwearable.cpp                        |   0
 indra/newview/llwearable.h                          |   0
 indra/newview/llwearableitemslist.cpp               |   0
 indra/newview/llwearableitemslist.h                 |   0
 indra/newview/llwearablelist.cpp                    |   0
 indra/newview/llwearablelist.h                      |   0
 indra/newview/llwearabletype.cpp                    |   0
 indra/newview/llwearabletype.h                      |   0
 indra/newview/llweb.cpp                             |   0
 indra/newview/llweb.h                               |   0
 indra/newview/llwebprofile.cpp                      |   0
 indra/newview/llwebprofile.h                        |   0
 indra/newview/llwebsharing.cpp                      |   0
 indra/newview/llwebsharing.h                        |   0
 indra/newview/llwind.cpp                            |   0
 indra/newview/llwind.h                              |   0
 indra/newview/llwindebug.cpp                        |   0
 indra/newview/llwindebug.h                          |   0
 indra/newview/llwindowlistener.cpp                  |   0
 indra/newview/llwindowlistener.h                    |   0
 indra/newview/llwlanimator.cpp                      |   0
 indra/newview/llwlanimator.h                        |   0
 indra/newview/llwldaycycle.cpp                      |   0
 indra/newview/llwldaycycle.h                        |   0
 indra/newview/llwlhandlers.cpp                      |   0
 indra/newview/llwlhandlers.h                        |   0
 indra/newview/llwlparammanager.cpp                  |   0
 indra/newview/llwlparammanager.h                    |   0
 indra/newview/llwlparamset.cpp                      |   0
 indra/newview/llwlparamset.h                        |   0
 indra/newview/llworld.cpp                           |   0
 indra/newview/llworld.h                             |   0
 indra/newview/llworldmap.cpp                        |   0
 indra/newview/llworldmap.h                          |   0
 indra/newview/llworldmapmessage.cpp                 |   0
 indra/newview/llworldmapmessage.h                   |   0
 indra/newview/llworldmapview.cpp                    |   0
 indra/newview/llworldmapview.h                      |   0
 indra/newview/llworldmipmap.cpp                     |   0
 indra/newview/llworldmipmap.h                       |   0
 indra/newview/llxmlrpclistener.cpp                  |   0
 indra/newview/llxmlrpclistener.h                    |   0
 indra/newview/llxmlrpctransaction.cpp               |   0
 indra/newview/llxmlrpctransaction.h                 |   0
 indra/newview/macmain.h                             |   0
 indra/newview/macutil_Prefix.h                      |   0
 indra/newview/macview.r                             |   0
 indra/newview/macview_Prefix.h                      |   0
 indra/newview/nl.lproj/language.txt                 |   0
 indra/newview/noise.cpp                             |   0
 indra/newview/noise.h                               |   0
 indra/newview/pipeline.cpp                          |   0
 indra/newview/pipeline.h                            |   0
 indra/newview/pl.lproj/language.txt                 |   0
 indra/newview/pt.lproj/language.txt                 |   0
 indra/newview/res-sdl/arrow.BMP                     | Bin
 indra/newview/res-sdl/arrowcop.BMP                  | Bin
 indra/newview/res-sdl/arrowcopmulti.BMP             | Bin
 indra/newview/res-sdl/arrowdrag.BMP                 | Bin
 indra/newview/res-sdl/circleandline.BMP             | Bin
 indra/newview/res-sdl/cross.BMP                     | Bin
 indra/newview/res-sdl/hand.BMP                      | Bin
 indra/newview/res-sdl/ibeam.BMP                     | Bin
 indra/newview/res-sdl/llarrow.BMP                   | Bin
 indra/newview/res-sdl/llarrowdrag.BMP               | Bin
 indra/newview/res-sdl/llarrowdragmulti.BMP          | Bin
 indra/newview/res-sdl/llarrowlocked.BMP             | Bin
 indra/newview/res-sdl/llgrablocked.BMP              | Bin
 indra/newview/res-sdl/llno.BMP                      | Bin
 indra/newview/res-sdl/llnolocked.BMP                | Bin
 indra/newview/res-sdl/lltoolcamera.BMP              | Bin
 indra/newview/res-sdl/lltoolcreate.BMP              | Bin
 indra/newview/res-sdl/lltoolfocus.BMP               | Bin
 indra/newview/res-sdl/lltoolgrab.BMP                | Bin
 indra/newview/res-sdl/lltoolland.BMP                | Bin
 indra/newview/res-sdl/lltoolpan.BMP                 | Bin
 indra/newview/res-sdl/lltoolpathfinding.BMP         | Bin
 indra/newview/res-sdl/lltoolpathfindingpathend.BMP  | Bin
 .../newview/res-sdl/lltoolpathfindingpathendadd.BMP | Bin
 .../newview/res-sdl/lltoolpathfindingpathstart.BMP  | Bin
 .../res-sdl/lltoolpathfindingpathstartadd.BMP       | Bin
 indra/newview/res-sdl/lltoolpipette.BMP             | Bin
 indra/newview/res-sdl/lltoolrotate.BMP              | Bin
 indra/newview/res-sdl/lltoolscale.BMP               | Bin
 indra/newview/res-sdl/lltooltranslate.BMP           | Bin
 indra/newview/res-sdl/lltoolzoomin.BMP              | Bin
 indra/newview/res-sdl/lltoolzoomout.BMP             | Bin
 indra/newview/res-sdl/sizenesw.BMP                  | Bin
 indra/newview/res-sdl/sizens.BMP                    | Bin
 indra/newview/res-sdl/sizenwse.BMP                  | Bin
 indra/newview/res-sdl/sizewe.BMP                    | Bin
 indra/newview/res-sdl/toolbuy.BMP                   | Bin
 indra/newview/res-sdl/toolmediaopen.BMP             | Bin
 indra/newview/res-sdl/toolopen.BMP                  | Bin
 indra/newview/res-sdl/toolpause.BMP                 | Bin
 indra/newview/res-sdl/toolpickobject.BMP            | Bin
 indra/newview/res-sdl/toolpickobject2.BMP           | Bin
 indra/newview/res-sdl/toolpickobject3.BMP           | Bin
 indra/newview/res-sdl/toolplay.BMP                  | Bin
 indra/newview/res-sdl/toolsit.BMP                   | Bin
 indra/newview/res-sdl/wait.BMP                      | Bin
 indra/newview/res-sdl/working.BMP                   | Bin
 indra/newview/res/arrow.cur                         | Bin
 indra/newview/res/arrowcop.cur                      | Bin
 indra/newview/res/arrowcopmulti.cur                 | Bin
 indra/newview/res/arrowdrag.cur                     | Bin
 indra/newview/res/bitmap2.bmp                       | Bin
 indra/newview/res/circleandline.cur                 | Bin
 indra/newview/res/have_artwork_bundle.marker        |   0
 indra/newview/res/icon1.ico                         | Bin
 indra/newview/res/install_icon.BMP                  | Bin
 indra/newview/res/llarrow.cur                       | Bin
 indra/newview/res/llarrowdrag.cur                   | Bin
 indra/newview/res/llarrowdragmulti.cur              | Bin
 indra/newview/res/llarrowlocked.cur                 | Bin
 indra/newview/res/llgrablocked.cur                  | Bin
 indra/newview/res/llno.cur                          | Bin
 indra/newview/res/llnolocked.cur                    | Bin
 indra/newview/res/lltoolcamera.cur                  | Bin
 indra/newview/res/lltoolcreate.cur                  | Bin
 indra/newview/res/lltoolfocus.cur                   | Bin
 indra/newview/res/lltoolgrab.cur                    | Bin
 indra/newview/res/lltoolland.cur                    | Bin
 indra/newview/res/lltoolpan.cur                     | Bin
 indra/newview/res/lltoolpathfinding.cur             | Bin
 indra/newview/res/lltoolpathfindingpathend.cur      | Bin
 indra/newview/res/lltoolpathfindingpathendadd.cur   | Bin
 indra/newview/res/lltoolpathfindingpathstart.cur    | Bin
 indra/newview/res/lltoolpathfindingpathstartadd.cur | Bin
 indra/newview/res/lltoolpipette.cur                 | Bin
 indra/newview/res/lltoolrotate.cur                  | Bin
 indra/newview/res/lltoolscale.cur                   | Bin
 indra/newview/res/lltooltranslate.cur               | Bin
 indra/newview/res/lltoolzoomin.cur                  | Bin
 indra/newview/res/lltoolzoomout.cur                 | Bin
 indra/newview/res/loginbackground.bmp               | Bin
 indra/newview/res/resource.h                        |   0
 indra/newview/res/toolbuy.cur                       | Bin
 indra/newview/res/toolmediaopen.cur                 | Bin
 indra/newview/res/toolopen.cur                      | Bin
 indra/newview/res/toolpause.cur                     | Bin
 indra/newview/res/toolpickobject.cur                | Bin
 indra/newview/res/toolpickobject2.cur               | Bin
 indra/newview/res/toolpickobject3.cur               | Bin
 indra/newview/res/toolpipette.cur                   | Bin
 indra/newview/res/toolplay.cur                      | Bin
 indra/newview/res/toolsit.cur                       | Bin
 indra/newview/res/uninstall_icon.BMP                | Bin
 indra/newview/res/viewerRes.rc                      |   0
 indra/newview/ru.lproj/language.txt                 |   0
 indra/newview/secondlife-i686.supp                  |   0
 indra/newview/secondlife.icns                       | Bin
 indra/newview/secondlife_firstlook.icns             | Bin
 indra/newview/skins/default/colors.xml              |   0
 .../skins/default/html/btn_purplepill_bg.png        | Bin
 .../skins/default/html/da/loading/loading.html      |   0
 .../skins/default/html/de/loading-error/index.html  |   0
 .../skins/default/html/de/loading/loading.html      |   0
 .../default/html/en-us/help-offline/index.html      |   0
 .../default/html/en-us/loading-error/index.html     |   0
 .../skins/default/html/en-us/loading/loading.html   |   0
 .../html/en-us/loading/sl_logo_rotate_black.gif     | Bin
 .../skins/default/html/es/loading-error/index.html  |   0
 .../skins/default/html/es/loading/loading.html      |   0
 .../skins/default/html/fr/loading-error/index.html  |   0
 .../skins/default/html/fr/loading/loading.html      |   0
 .../skins/default/html/hu/loading/loading.html      |   0
 .../skins/default/html/it/loading/loading.html      |   0
 .../skins/default/html/ja/loading-error/index.html  |   0
 .../skins/default/html/ja/loading/loading.html      |   0
 .../skins/default/html/ko/loading-error/index.html  |   0
 .../skins/default/html/nl/loading/loading.html      |   0
 .../skins/default/html/pl/loading/loading.html      |   0
 .../skins/default/html/pt/loading-error/index.html  |   0
 .../skins/default/html/pt/loading/loading.html      |   0
 .../skins/default/html/ru/loading/loading.html      |   0
 .../skins/default/html/tr/loading/loading.html      |   0
 .../skins/default/html/uk/loading/loading.html      |   0
 .../newview/skins/default/html/unabletoconnect.png  | Bin
 .../skins/default/html/zh/loading-error/index.html  |   0
 .../skins/default/html/zh/loading/loading.html      |   0
 indra/newview/skins/default/textures/Blank.png      | Bin
 .../newview/skins/default/textures/Rounded_Rect.png | Bin
 .../skins/default/textures/alpha_gradient.tga       | Bin
 .../skins/default/textures/alpha_gradient_2d.j2c    | Bin
 indra/newview/skins/default/textures/arrow_down.tga | Bin
 indra/newview/skins/default/textures/arrow_up.tga   | Bin
 .../skins/default/textures/avatar_thumb_bkgrnd.png  | Bin
 indra/newview/skins/default/textures/badge_note.j2c | Bin
 indra/newview/skins/default/textures/badge_ok.j2c   | Bin
 indra/newview/skins/default/textures/badge_warn.j2c | Bin
 .../default/textures/bottomtray/Cam_Avatar_Off.png  | Bin
 .../default/textures/bottomtray/Cam_FreeCam_Off.png | Bin
 .../default/textures/bottomtray/Cam_Orbit_Off.png   | Bin
 .../default/textures/bottomtray/Cam_Pan_Off.png     | Bin
 .../textures/bottomtray/Cam_Preset_Back_Off.png     | Bin
 .../textures/bottomtray/Cam_Preset_Back_On.png      | Bin
 .../textures/bottomtray/Cam_Preset_Eye_Off.png      | Bin
 .../textures/bottomtray/Cam_Preset_Front_Off.png    | Bin
 .../textures/bottomtray/Cam_Preset_Front_On.png     | Bin
 .../textures/bottomtray/Cam_Preset_Side_Off.png     | Bin
 .../textures/bottomtray/Cam_Preset_Side_On.png      | Bin
 .../default/textures/bottomtray/Cam_Rotate_In.png   | Bin
 .../default/textures/bottomtray/Cam_Rotate_Out.png  | Bin
 .../default/textures/bottomtray/Cam_Tracking_In.png | Bin
 .../textures/bottomtray/Cam_Tracking_Out.png        | Bin
 .../default/textures/bottomtray/ChatBarHandle.png   | Bin
 .../skins/default/textures/bottomtray/DownArrow.png | Bin
 .../textures/bottomtray/Mouselook_View_Off.png      | Bin
 .../textures/bottomtray/Mouselook_View_On.png       | Bin
 .../default/textures/bottomtray/Move_Fly_Off.png    | Bin
 .../default/textures/bottomtray/Move_Run_Off.png    | Bin
 .../default/textures/bottomtray/Move_Walk_Off.png   | Bin
 .../textures/bottomtray/Movement_Backward_Off.png   | Bin
 .../textures/bottomtray/Movement_Backward_On.png    | Bin
 .../textures/bottomtray/Movement_Down_Off.png       | Bin
 .../textures/bottomtray/Movement_Down_On.png        | Bin
 .../textures/bottomtray/Movement_Forward_Off.png    | Bin
 .../textures/bottomtray/Movement_Forward_On.png     | Bin
 .../textures/bottomtray/Movement_Left_Off.png       | Bin
 .../textures/bottomtray/Movement_Left_On.png        | Bin
 .../textures/bottomtray/Movement_Right_Off.png      | Bin
 .../textures/bottomtray/Movement_Right_On.png       | Bin
 .../textures/bottomtray/Movement_TurnLeft_Off.png   | Bin
 .../textures/bottomtray/Movement_TurnLeft_On.png    | Bin
 .../textures/bottomtray/Movement_TurnRight_Off.png  | Bin
 .../textures/bottomtray/Movement_TurnRight_On.png   | Bin
 .../default/textures/bottomtray/Movement_Up_Off.png | Bin
 .../default/textures/bottomtray/Movement_Up_On.png  | Bin
 .../default/textures/bottomtray/Notices_Unread.png  | Bin
 .../default/textures/bottomtray/Object_View_Off.png | Bin
 .../default/textures/bottomtray/Object_View_On.png  | Bin
 .../default/textures/bottomtray/PanOrbit_Off.png    | Bin
 .../default/textures/bottomtray/Snapshot_Off.png    | Bin
 .../default/textures/bottomtray/Unread_Chiclet.png  | Bin
 .../default/textures/bottomtray/VoicePTT_Lvl1.png   | Bin
 .../default/textures/bottomtray/VoicePTT_Lvl2.png   | Bin
 .../default/textures/bottomtray/VoicePTT_Lvl3.png   | Bin
 .../default/textures/bottomtray/VoicePTT_Off.png    | Bin
 .../default/textures/bottomtray/VoicePTT_On.png     | Bin
 .../default/textures/bottomtray/WellButton_Lit.png  | Bin
 .../textures/bottomtray/WellButton_Lit_Selected.png | Bin
 .../skins/default/textures/build/Object_Cone.png    | Bin
 .../default/textures/build/Object_Cone_Selected.png | Bin
 .../skins/default/textures/build/Object_Cube.png    | Bin
 .../default/textures/build/Object_Cube_Selected.png | Bin
 .../default/textures/build/Object_Cylinder.png      | Bin
 .../textures/build/Object_Cylinder_Selected.png     | Bin
 .../skins/default/textures/build/Object_Grass.png   | Bin
 .../textures/build/Object_Grass_Selected.png        | Bin
 .../default/textures/build/Object_Hemi_Cone.png     | Bin
 .../textures/build/Object_Hemi_Cone_Selected.png    | Bin
 .../default/textures/build/Object_Hemi_Cylinder.png | Bin
 .../build/Object_Hemi_Cylinder_Selected.png         | Bin
 .../default/textures/build/Object_Hemi_Sphere.png   | Bin
 .../textures/build/Object_Hemi_Sphere_Selected.png  | Bin
 .../skins/default/textures/build/Object_Prism.png   | Bin
 .../textures/build/Object_Prism_Selected.png        | Bin
 .../skins/default/textures/build/Object_Pyramid.png | Bin
 .../textures/build/Object_Pyramid_Selected.png      | Bin
 .../skins/default/textures/build/Object_Ring.png    | Bin
 .../default/textures/build/Object_Ring_Selected.png | Bin
 .../skins/default/textures/build/Object_Sphere.png  | Bin
 .../textures/build/Object_Sphere_Selected.png       | Bin
 .../default/textures/build/Object_Tetrahedron.png   | Bin
 .../textures/build/Object_Tetrahedron_Selected.png  | Bin
 .../skins/default/textures/build/Object_Torus.png   | Bin
 .../textures/build/Object_Torus_Selected.png        | Bin
 .../skins/default/textures/build/Object_Tree.png    | Bin
 .../default/textures/build/Object_Tree_Selected.png | Bin
 .../skins/default/textures/build/Object_Tube.png    | Bin
 .../default/textures/build/Object_Tube_Selected.png | Bin
 .../skins/default/textures/build/Tool_Create.png    | Bin
 .../skins/default/textures/build/Tool_Dozer.png     | Bin
 .../skins/default/textures/build/Tool_Face.png      | Bin
 .../skins/default/textures/build/Tool_Grab.png      | Bin
 .../skins/default/textures/build/Tool_Zoom.png      | Bin
 .../skins/default/textures/button_anim_pause.tga    | Bin
 .../default/textures/button_anim_pause_selected.tga | Bin
 .../skins/default/textures/button_anim_play.tga     | Bin
 .../default/textures/button_anim_play_selected.tga  | Bin
 indra/newview/skins/default/textures/checker.png    | Bin
 .../skins/default/textures/cloud-particle.j2c       | Bin
 .../skins/default/textures/color_swatch_alpha.tga   | Bin
 .../containers/Accordion_ArrowClosed_Off.png        | Bin
 .../containers/Accordion_ArrowClosed_Press.png      | Bin
 .../containers/Accordion_ArrowOpened_Off.png        | Bin
 .../containers/Accordion_ArrowOpened_Press.png      | Bin
 .../default/textures/containers/Accordion_Off.png   | Bin
 .../default/textures/containers/Accordion_Over.png  | Bin
 .../default/textures/containers/Accordion_Press.png | Bin
 .../textures/containers/Accordion_Selected.png      | Bin
 .../skins/default/textures/containers/Container.png | Bin
 .../default/textures/containers/TabTop_Left_Off.png | Bin
 .../textures/containers/TabTop_Left_Selected.png    | Bin
 .../textures/containers/TabTop_Middle_Off.png       | Bin
 .../textures/containers/TabTop_Middle_Selected.png  | Bin
 .../textures/containers/TabTop_Right_Off.png        | Bin
 .../textures/containers/TabTop_Right_Selected.png   | Bin
 .../textures/containers/Toolbar_Left_Flash.png      | Bin
 .../textures/containers/Toolbar_Left_Off.png        | Bin
 .../textures/containers/Toolbar_Left_Over.png       | Bin
 .../textures/containers/Toolbar_Left_Selected.png   | Bin
 .../textures/containers/Toolbar_Middle_Flash.png    | Bin
 .../textures/containers/Toolbar_Middle_Off.png      | Bin
 .../textures/containers/Toolbar_Middle_Over.png     | Bin
 .../textures/containers/Toolbar_Middle_Selected.png | Bin
 .../textures/containers/Toolbar_Right_Flash.png     | Bin
 .../textures/containers/Toolbar_Right_Off.png       | Bin
 .../textures/containers/Toolbar_Right_Over.png      | Bin
 .../textures/containers/Toolbar_Right_Selected.png  | Bin
 indra/newview/skins/default/textures/crosshairs.tga | Bin
 .../skins/default/textures/default_land_picture.j2c | Bin
 .../default/textures/default_profile_picture.j2c    | Bin
 .../skins/default/textures/direction_arrow.tga      | Bin
 indra/newview/skins/default/textures/down_arrow.png | Bin
 .../skins/default/textures/eye_button_active.tga    | Bin
 .../skins/default/textures/eye_button_inactive.tga  | Bin
 .../newview/skins/default/textures/folder_arrow.tga | Bin
 .../newview/skins/default/textures/foot_shadow.j2c  | Bin
 .../skins/default/textures/green_checkmark.png      | Bin
 .../skins/default/textures/icn_media_movie.tga      | Bin
 .../skins/default/textures/icn_media_web.tga        | Bin
 .../skins/default/textures/icon_avatar_offline.tga  | Bin
 .../skins/default/textures/icon_avatar_online.tga   | Bin
 .../newview/skins/default/textures/icon_diurnal.tga | Bin
 .../skins/default/textures/icon_for_sale_adult.tga  | Bin
 .../skins/default/textures/icon_top_pick.tga        | Bin
 .../default/textures/icons/AddItem_Disabled.png     | Bin
 .../skins/default/textures/icons/AddItem_Off.png    | Bin
 .../skins/default/textures/icons/AddItem_Press.png  | Bin
 .../skins/default/textures/icons/AudioMute_Off.png  | Bin
 .../skins/default/textures/icons/AudioMute_Over.png | Bin
 .../skins/default/textures/icons/Audio_Off.png      | Bin
 .../skins/default/textures/icons/Audio_Press.png    | Bin
 .../skins/default/textures/icons/BackArrow_Off.png  | Bin
 .../skins/default/textures/icons/Conv_log_inbox.png | Bin
 indra/newview/skins/default/textures/icons/Copy.png | Bin
 .../skins/default/textures/icons/DownArrow_Off.png  | Bin
 .../skins/default/textures/icons/Edit_Wrench.png    | Bin
 .../default/textures/icons/ExternalBrowser_Off.png  | Bin
 .../newview/skins/default/textures/icons/Female.png | Bin
 .../skins/default/textures/icons/ForSale_Badge.png  | Bin
 .../default/textures/icons/ForwardArrow_Off.png     | Bin
 .../default/textures/icons/ForwardArrow_Press.png   | Bin
 .../skins/default/textures/icons/Generic_Group.png  | Bin
 .../default/textures/icons/Generic_Group_Large.png  | Bin
 .../default/textures/icons/Generic_Object_Small.png | Bin
 .../skins/default/textures/icons/Generic_Person.png | Bin
 .../default/textures/icons/Generic_Person_Large.png | Bin
 .../textures/icons/Hierarchy_View_Disabled.png      | Bin
 .../default/textures/icons/Hierarchy_View_On.png    | Bin
 .../skins/default/textures/icons/Icon_For_Sale.png  | Bin
 indra/newview/skins/default/textures/icons/Info.png | Bin
 .../skins/default/textures/icons/Info_Over.png      | Bin
 .../skins/default/textures/icons/Info_Small.png     | Bin
 .../skins/default/textures/icons/Inv_Alpha.png      | Bin
 .../skins/default/textures/icons/Inv_Animation.png  | Bin
 .../skins/default/textures/icons/Inv_BodyShape.png  | Bin
 .../default/textures/icons/Inv_CallingCard.png      | Bin
 .../skins/default/textures/icons/Inv_Clothing.png   | Bin
 .../skins/default/textures/icons/Inv_Eye.png        | Bin
 .../default/textures/icons/Inv_FolderClosed.png     | Bin
 .../skins/default/textures/icons/Inv_FolderOpen.png | Bin
 .../skins/default/textures/icons/Inv_Gesture.png    | Bin
 .../skins/default/textures/icons/Inv_Gloves.png     | Bin
 .../skins/default/textures/icons/Inv_Hair.png       | Bin
 .../skins/default/textures/icons/Inv_Invalid.png    | Bin
 .../skins/default/textures/icons/Inv_Jacket.png     | Bin
 .../skins/default/textures/icons/Inv_Landmark.png   | Bin
 .../skins/default/textures/icons/Inv_Link.png       | Bin
 .../skins/default/textures/icons/Inv_LinkFolder.png | Bin
 .../skins/default/textures/icons/Inv_LinkItem.png   | Bin
 .../default/textures/icons/Inv_LookFolderClosed.png | Bin
 .../default/textures/icons/Inv_LookFolderOpen.png   | Bin
 .../skins/default/textures/icons/Inv_LostClosed.png | Bin
 .../skins/default/textures/icons/Inv_LostOpen.png   | Bin
 .../skins/default/textures/icons/Inv_Mesh.png       | Bin
 .../skins/default/textures/icons/Inv_Notecard.png   | Bin
 .../skins/default/textures/icons/Inv_Object.png     | Bin
 .../default/textures/icons/Inv_Object_Multi.png     | Bin
 .../skins/default/textures/icons/Inv_Pants.png      | Bin
 .../skins/default/textures/icons/Inv_Physics.png    | Bin
 .../skins/default/textures/icons/Inv_Script.png     | Bin
 .../skins/default/textures/icons/Inv_Shirt.png      | Bin
 .../skins/default/textures/icons/Inv_Shoe.png       | Bin
 .../skins/default/textures/icons/Inv_Skin.png       | Bin
 .../skins/default/textures/icons/Inv_Skirt.png      | Bin
 .../skins/default/textures/icons/Inv_Snapshot.png   | Bin
 .../skins/default/textures/icons/Inv_Socks.png      | Bin
 .../skins/default/textures/icons/Inv_Sound.png      | Bin
 .../skins/default/textures/icons/Inv_SysClosed.png  | Bin
 .../skins/default/textures/icons/Inv_SysOpen.png    | Bin
 .../skins/default/textures/icons/Inv_Tattoo.png     | Bin
 .../skins/default/textures/icons/Inv_Texture.png    | Bin
 .../default/textures/icons/Inv_TrashClosed.png      | Bin
 .../skins/default/textures/icons/Inv_TrashOpen.png  | Bin
 .../skins/default/textures/icons/Inv_Underpants.png | Bin
 .../skins/default/textures/icons/Inv_Undershirt.png | Bin
 .../default/textures/icons/List_View_Disabled.png   | Bin
 .../skins/default/textures/icons/List_View_On.png   | Bin
 indra/newview/skins/default/textures/icons/Lock.png | Bin
 .../skins/default/textures/icons/Locked_Icon.png    | Bin
 indra/newview/skins/default/textures/icons/Male.png | Bin
 .../skins/default/textures/icons/Microphone_On.png  | Bin
 .../default/textures/icons/MinusItem_Disabled.png   | Bin
 .../skins/default/textures/icons/MinusItem_Off.png  | Bin
 .../default/textures/icons/MinusItem_Press.png      | Bin
 .../default/textures/icons/OptionsMenu_Disabled.png | Bin
 .../default/textures/icons/OptionsMenu_Off.png      | Bin
 .../default/textures/icons/OptionsMenu_Press.png    | Bin
 .../default/textures/icons/OutboxPush_Disabled.png  | Bin
 .../skins/default/textures/icons/OutboxPush_Off.png | Bin
 .../skins/default/textures/icons/OutboxPush_On.png  | Bin
 .../default/textures/icons/OutboxPush_On_Over.png   | Bin
 .../default/textures/icons/OutboxPush_Over.png      | Bin
 .../default/textures/icons/OutboxPush_Press.png     | Bin
 .../textures/icons/OutboxPush_Progress_1.png        | Bin
 .../textures/icons/OutboxPush_Progress_2.png        | Bin
 .../textures/icons/OutboxPush_Progress_3.png        | Bin
 .../textures/icons/OutboxPush_Progress_4.png        | Bin
 .../textures/icons/OutboxPush_Progress_5.png        | Bin
 .../textures/icons/OutboxPush_Progress_6.png        | Bin
 .../default/textures/icons/OutboxPush_Selected.png  | Bin
 .../textures/icons/OutboxPush_Selected_Disabled.png | Bin
 .../textures/icons/OutboxPush_Selected_Over.png     | Bin
 .../textures/icons/OutboxPush_Selected_Press.png    | Bin
 .../default/textures/icons/Parcel_BuildNo_Dark.png  | Bin
 .../default/textures/icons/Parcel_BuildNo_Light.png | Bin
 .../default/textures/icons/Parcel_Build_Dark.png    | Bin
 .../default/textures/icons/Parcel_DamageNo_Dark.png | Bin
 .../default/textures/icons/Parcel_Damage_Dark.png   | Bin
 .../default/textures/icons/Parcel_Exp_Color.png     | Bin
 .../default/textures/icons/Parcel_FlyNo_Dark.png    | Bin
 .../default/textures/icons/Parcel_FlyNo_Light.png   | Bin
 .../default/textures/icons/Parcel_Fly_Dark.png      | Bin
 .../default/textures/icons/Parcel_ForSale_Light.png | Bin
 .../default/textures/icons/Parcel_Health_Dark.png   | Bin
 .../skins/default/textures/icons/Parcel_M_Dark.png  | Bin
 .../skins/default/textures/icons/Parcel_M_Light.png | Bin
 .../skins/default/textures/icons/Parcel_PG_Dark.png | Bin
 .../default/textures/icons/Parcel_PG_Light.png      | Bin
 .../default/textures/icons/Parcel_PushNo_Dark.png   | Bin
 .../default/textures/icons/Parcel_PushNo_Light.png  | Bin
 .../default/textures/icons/Parcel_Push_Dark.png     | Bin
 .../skins/default/textures/icons/Parcel_R_Dark.png  | Bin
 .../skins/default/textures/icons/Parcel_R_Light.png | Bin
 .../textures/icons/Parcel_ScriptsNo_Dark.png        | Bin
 .../default/textures/icons/Parcel_Scripts_Dark.png  | Bin
 .../textures/icons/Parcel_SeeAVsOff_Dark.png        | Bin
 .../textures/icons/Parcel_SeeAVsOff_Light.png       | Bin
 .../default/textures/icons/Parcel_SeeAVsOn_Dark.png | Bin
 .../textures/icons/Parcel_SeeAVsOn_Light.png        | Bin
 .../default/textures/icons/Parcel_VoiceNo_Dark.png  | Bin
 .../default/textures/icons/Parcel_VoiceNo_Light.png | Bin
 .../default/textures/icons/Parcel_Voice_Dark.png    | Bin
 .../default/textures/icons/Parcel_Voice_Light.png   | Bin
 .../default/textures/icons/Pathfinding_Dirty.png    | Bin
 .../default/textures/icons/Pathfinding_Disabled.png | Bin
 .../skins/default/textures/icons/Pause_Off.png      | Bin
 .../skins/default/textures/icons/Pause_Over.png     | Bin
 .../skins/default/textures/icons/Pause_Press.png    | Bin
 .../skins/default/textures/icons/Person_Check.png   | Bin
 .../skins/default/textures/icons/Person_Star.png    | Bin
 .../skins/default/textures/icons/Play_Off.png       | Bin
 .../skins/default/textures/icons/Play_Over.png      | Bin
 .../skins/default/textures/icons/Play_Press.png     | Bin
 .../skins/default/textures/icons/Progress_1.png     | Bin
 .../skins/default/textures/icons/Progress_10.png    | Bin
 .../skins/default/textures/icons/Progress_11.png    | Bin
 .../skins/default/textures/icons/Progress_12.png    | Bin
 .../skins/default/textures/icons/Progress_2.png     | Bin
 .../skins/default/textures/icons/Progress_3.png     | Bin
 .../skins/default/textures/icons/Progress_4.png     | Bin
 .../skins/default/textures/icons/Progress_5.png     | Bin
 .../skins/default/textures/icons/Progress_6.png     | Bin
 .../skins/default/textures/icons/Progress_7.png     | Bin
 .../skins/default/textures/icons/Progress_8.png     | Bin
 .../skins/default/textures/icons/Progress_9.png     | Bin
 .../skins/default/textures/icons/Refresh_Off.png    | Bin
 .../skins/default/textures/icons/SL_Logo.png        | Bin
 .../skins/default/textures/icons/Search_Icon.png    | Bin
 .../skins/default/textures/icons/Shirt_Large.png    | Bin
 indra/newview/skins/default/textures/icons/Shop.png | Bin
 .../default/textures/icons/SkipBackward_Off.png     | Bin
 .../default/textures/icons/SkipForward_Off.png      | Bin
 .../skins/default/textures/icons/StopReload_Off.png | Bin
 .../default/textures/icons/StopReload_Over.png      | Bin
 .../skins/default/textures/icons/Stop_Off.png       | Bin
 .../skins/default/textures/icons/Sync_Disabled.png  | Bin
 .../skins/default/textures/icons/Sync_Enabled.png   | Bin
 .../default/textures/icons/Sync_Progress_1.png      | Bin
 .../default/textures/icons/Sync_Progress_2.png      | Bin
 .../default/textures/icons/Sync_Progress_3.png      | Bin
 .../default/textures/icons/Sync_Progress_4.png      | Bin
 .../default/textures/icons/Sync_Progress_5.png      | Bin
 .../default/textures/icons/Sync_Progress_6.png      | Bin
 .../default/textures/icons/TrashItem_Disabled.png   | Bin
 .../skins/default/textures/icons/TrashItem_Off.png  | Bin
 .../default/textures/icons/TrashItem_Press.png      | Bin
 .../skins/default/textures/icons/UnZoom_Off.png     | Bin
 .../skins/default/textures/icons/UpArrow_Off.png    | Bin
 .../skins/default/textures/icons/VoicePTT_Lvl1.png  | Bin
 .../skins/default/textures/icons/VoicePTT_Lvl2.png  | Bin
 .../skins/default/textures/icons/VoicePTT_Lvl3.png  | Bin
 .../skins/default/textures/icons/VoicePTT_Off.png   | Bin
 .../skins/default/textures/icons/VoicePTT_On.png    | Bin
 .../default/textures/icons/Web_Profile_Off.png      | Bin
 .../default/textures/icons/YouAreHere_Badge.png     | Bin
 .../skins/default/textures/icons/Zoom_Off.png       | Bin
 .../default/textures/icons/avaline_default_icon.jpg | Bin
 .../skins/default/textures/icons/back_arrow_off.png | Bin
 .../default/textures/icons/back_arrow_over.png      | Bin
 .../default/textures/icons/back_arrow_press.png     | Bin
 .../skins/default/textures/icons/check_mark.png     | Bin
 .../default/textures/icons/collapse_to_one_line.png | Bin
 .../skins/default/textures/icons/edit_mine.png      | Bin
 .../skins/default/textures/icons/edit_theirs.png    | Bin
 .../default/textures/icons/expand_one_liner.png     | Bin
 .../default/textures/icons/nearby_chat_icon.png     | Bin
 .../skins/default/textures/icons/object_icon.png    | Bin
 .../skins/default/textures/icons/pop_up_caution.png | Bin
 .../skins/default/textures/icons/see_me_online.png  | Bin
 .../skins/default/textures/icons/see_on_map.png     | Bin
 .../skins/default/textures/icons/unknown_icon.png   | Bin
 .../newview/skins/default/textures/jump_left_in.tga | Bin
 .../skins/default/textures/jump_left_out.tga        | Bin
 .../skins/default/textures/jump_right_in.tga        | Bin
 .../skins/default/textures/jump_right_out.tga       | Bin
 .../skins/default/textures/lag_status_critical.tga  | Bin
 .../skins/default/textures/lag_status_good.tga      | Bin
 .../skins/default/textures/lag_status_warning.tga   | Bin
 indra/newview/skins/default/textures/legend.tga     | Bin
 .../newview/skins/default/textures/locked_image.j2c | Bin
 .../skins/default/textures/map_avatar_16.tga        | Bin
 .../skins/default/textures/map_avatar_32.tga        | Bin
 .../newview/skins/default/textures/map_avatar_8.tga | Bin
 .../skins/default/textures/map_avatar_above_32.tga  | Bin
 .../skins/default/textures/map_avatar_below_32.tga  | Bin
 .../default/textures/map_avatar_unknown_32.tga      | Bin
 .../skins/default/textures/map_avatar_you_32.tga    | Bin
 indra/newview/skins/default/textures/map_event.tga  | Bin
 indra/newview/skins/default/textures/map_home.tga   | Bin
 .../newview/skins/default/textures/map_infohub.tga  | Bin
 .../newview/skins/default/textures/map_telehub.tga  | Bin
 .../newview/skins/default/textures/map_track_16.tga | Bin
 .../skins/default/textures/menu_separator.png       | Bin
 .../skins/default/textures/missing_asset.tga        | Bin
 .../textures/model_wizard/progress_bar_bg.png       | Bin
 .../textures/model_wizard/progress_light.png        | Bin
 .../default/textures/navbar/Arrow_Left_Off.png      | Bin
 .../default/textures/navbar/Arrow_Right_Off.png     | Bin
 .../skins/default/textures/navbar/BuyArrow_Over.png | Bin
 .../default/textures/navbar/BuyArrow_Press.png      | Bin
 .../default/textures/navbar/Favorite_Link_Over.png  | Bin
 .../textures/navbar/Favorite_Star_Active.png        | Bin
 .../default/textures/navbar/Favorite_Star_Off.png   | Bin
 .../default/textures/navbar/Favorite_Star_Over.png  | Bin
 .../default/textures/navbar/Favorite_Star_Press.png | Bin
 .../default/textures/navbar/FileMenu_Divider.png    | Bin
 .../newview/skins/default/textures/navbar/Flag.png  | Bin
 .../skins/default/textures/navbar/Help_Press.png    | Bin
 .../skins/default/textures/navbar/Home_Off.png      | Bin
 .../skins/default/textures/navbar/Info_Off.png      | Bin
 .../skins/default/textures/navbar/Info_Over.png     | Bin
 .../skins/default/textures/navbar/Info_Press.png    | Bin
 .../newview/skins/default/textures/navbar/Lock.png  | Bin
 .../skins/default/textures/navbar/NavBar_BG.png     | Bin
 .../textures/navbar/NavBar_BG_NoFav_Bevel.png       | Bin
 .../textures/navbar/NavBar_BG_NoNav_Bevel.png       | Bin
 .../skins/default/textures/navbar/Row_Selection.png | Bin
 .../skins/default/textures/navbar/Search.png        | Bin
 .../skins/default/textures/navbar/separator.png     | Bin
 .../skins/default/textures/notify_caution_icon.tga  | Bin
 indra/newview/skins/default/textures/pixiesmall.j2c | Bin
 indra/newview/skins/default/textures/red_x.png      | Bin
 .../skins/default/textures/rounded_square.j2c       | Bin
 .../newview/skins/default/textures/script_error.j2c | Bin
 indra/newview/skins/default/textures/silhouette.j2c | Bin
 .../skins/default/textures/slim_icon_16_viewer.tga  | Bin
 .../skins/default/textures/snapshot_download.png    | Bin
 .../skins/default/textures/snapshot_email.png       | Bin
 indra/newview/skins/default/textures/spacer24.tga   | Bin
 indra/newview/skins/default/textures/tabarea.tga    | Bin
 .../textures/taskpanel/Activate_Checkmark.png       | Bin
 .../taskpanel/Sidebar_Icon_Dock_Foreground.png      | Bin
 .../textures/taskpanel/Sidebar_Icon_Dock_Press.png  | Bin
 .../taskpanel/Sidebar_Icon_Undock_Foreground.png    | Bin
 .../taskpanel/Sidebar_Icon_Undock_Press.png         | Bin
 .../textures/taskpanel/TabIcon_Close_Off.png        | Bin
 .../textures/taskpanel/TabIcon_Home_Selected.png    | Bin
 .../default/textures/taskpanel/TabIcon_Me_Off.png   | Bin
 .../default/textures/taskpanel/TabIcon_Open_Off.png | Bin
 .../textures/taskpanel/TabIcon_People_Off.png       | Bin
 .../textures/taskpanel/TabIcon_Places_Off.png       | Bin
 .../textures/taskpanel/TabIcon_Things_Off.png       | Bin
 .../textures/taskpanel/TaskPanel_Tab_Off.png        | Bin
 .../textures/taskpanel/TaskPanel_Tab_Selected.png   | Bin
 .../skins/default/textures/tearoff_pressed.tga      | Bin
 indra/newview/skins/default/textures/tearoffbox.tga | Bin
 indra/newview/skins/default/textures/textures.xml   |   0
 .../default/textures/toolbar_icons/appearance.png   | Bin
 .../default/textures/toolbar_icons/avatars.png      | Bin
 .../skins/default/textures/toolbar_icons/build.png  | Bin
 .../default/textures/toolbar_icons/caret_bottom.png | Bin
 .../default/textures/toolbar_icons/caret_left.png   | Bin
 .../default/textures/toolbar_icons/caret_right.png  | Bin
 .../skins/default/textures/toolbar_icons/chat.png   | Bin
 .../default/textures/toolbar_icons/destinations.png | Bin
 .../default/textures/toolbar_icons/gestures.png     | Bin
 .../skins/default/textures/toolbar_icons/howto.png  | Bin
 .../default/textures/toolbar_icons/inventory.png    | Bin
 .../skins/default/textures/toolbar_icons/land.png   | Bin
 .../skins/default/textures/toolbar_icons/map.png    | Bin
 .../default/textures/toolbar_icons/marketplace.png  | Bin
 .../default/textures/toolbar_icons/mini_cart.png    | Bin
 .../default/textures/toolbar_icons/mini_map.png     | Bin
 .../skins/default/textures/toolbar_icons/move.png   | Bin
 .../default/textures/toolbar_icons/nearbyvoice.png  | Bin
 .../skins/default/textures/toolbar_icons/outbox.png | Bin
 .../skins/default/textures/toolbar_icons/people.png | Bin
 .../skins/default/textures/toolbar_icons/picks.png  | Bin
 .../skins/default/textures/toolbar_icons/places.png | Bin
 .../default/textures/toolbar_icons/preferences.png  | Bin
 .../default/textures/toolbar_icons/profile.png      | Bin
 .../skins/default/textures/toolbar_icons/search.png | Bin
 .../default/textures/toolbar_icons/snapshot.png     | Bin
 .../skins/default/textures/toolbar_icons/speak.png  | Bin
 .../skins/default/textures/toolbar_icons/view.png   | Bin
 .../newview/skins/default/textures/transparent.j2c  | Bin
 indra/newview/skins/default/textures/up_arrow.png   | Bin
 indra/newview/skins/default/textures/uv_test1.j2c   | Bin
 indra/newview/skins/default/textures/uv_test2.tga   | Bin
 .../skins/default/textures/voice_meter_dot.j2c      | Bin
 .../skins/default/textures/voice_meter_rings.j2c    | Bin
 indra/newview/skins/default/textures/white.tga      | Bin
 .../skins/default/textures/widgets/Arrow_Down.png   | Bin
 .../skins/default/textures/widgets/Arrow_Left.png   | Bin
 .../skins/default/textures/widgets/Arrow_Right.png  | Bin
 .../default/textures/widgets/Arrow_Small_Left.png   | Bin
 .../default/textures/widgets/Arrow_Small_Right.png  | Bin
 .../default/textures/widgets/Arrow_Small_Up.png     | Bin
 .../skins/default/textures/widgets/Arrow_Up.png     | Bin
 .../default/textures/widgets/Badge_Background.png   | Bin
 .../skins/default/textures/widgets/Badge_Border.png | Bin
 .../widgets/BreadCrumbBtn_Left_Disabled.png         | Bin
 .../textures/widgets/BreadCrumbBtn_Left_Off.png     | Bin
 .../textures/widgets/BreadCrumbBtn_Left_Over.png    | Bin
 .../textures/widgets/BreadCrumbBtn_Left_Press.png   | Bin
 .../widgets/BreadCrumbBtn_Middle_Disabled.png       | Bin
 .../textures/widgets/BreadCrumbBtn_Middle_Off.png   | Bin
 .../textures/widgets/BreadCrumbBtn_Middle_Over.png  | Bin
 .../textures/widgets/BreadCrumbBtn_Middle_Press.png | Bin
 .../widgets/BreadCrumbBtn_Right_Disabled.png        | Bin
 .../textures/widgets/BreadCrumbBtn_Right_Off.png    | Bin
 .../textures/widgets/BreadCrumbBtn_Right_Over.png   | Bin
 .../textures/widgets/BreadCrumbBtn_Right_Press.png  | Bin
 .../default/textures/widgets/Checkbox_Disabled.png  | Bin
 .../skins/default/textures/widgets/Checkbox_Off.png | Bin
 .../skins/default/textures/widgets/Checkbox_On.png  | Bin
 .../textures/widgets/Checkbox_On_Disabled.png       | Bin
 .../default/textures/widgets/Checkbox_On_Press.png  | Bin
 .../default/textures/widgets/Checkbox_Press.png     | Bin
 .../textures/widgets/ComboButton_Disabled.png       | Bin
 .../default/textures/widgets/ComboButton_Off.png    | Bin
 .../default/textures/widgets/ComboButton_On.png     | Bin
 .../textures/widgets/ComboButton_Selected.png       | Bin
 .../default/textures/widgets/ComboButton_UpOff.png  | Bin
 .../textures/widgets/ComboButton_UpSelected.png     | Bin
 .../textures/widgets/DisclosureArrow_Opened_Off.png | Bin
 .../default/textures/widgets/DropDown_Disabled.png  | Bin
 .../skins/default/textures/widgets/DropDown_Off.png | Bin
 .../skins/default/textures/widgets/DropDown_On.png  | Bin
 .../default/textures/widgets/DropDown_Press.png     | Bin
 .../skins/default/textures/widgets/DropTarget.png   | Bin
 .../textures/widgets/Error_Tag_Background.png       | Bin
 .../textures/widgets/Linden_Dollar_Alert.png        | Bin
 .../textures/widgets/Linden_Dollar_Background.png   | Bin
 .../default/textures/widgets/ListItem_Over.png      | Bin
 .../default/textures/widgets/ListItem_Select.png    | Bin
 .../default/textures/widgets/MarketplaceBtn_Off.png | Bin
 .../textures/widgets/MarketplaceBtn_Selected.png    | Bin
 .../default/textures/widgets/New_Tag_Background.png | Bin
 .../default/textures/widgets/New_Tag_Border.png     | Bin
 .../skins/default/textures/widgets/ProgressBar.png  | Bin
 .../default/textures/widgets/ProgressTrack.png      | Bin
 .../textures/widgets/PushButton_Disabled.png        | Bin
 .../default/textures/widgets/PushButton_Off.png     | Bin
 .../default/textures/widgets/PushButton_On.png      | Bin
 .../textures/widgets/PushButton_On_Selected.png     | Bin
 .../default/textures/widgets/PushButton_Over.png    | Bin
 .../default/textures/widgets/PushButton_Press.png   | Bin
 .../textures/widgets/PushButton_Selected.png        | Bin
 .../widgets/PushButton_Selected_Disabled.png        | Bin
 .../textures/widgets/PushButton_Selected_Press.png  | Bin
 .../textures/widgets/RadioButton_Disabled.png       | Bin
 .../default/textures/widgets/RadioButton_Off.png    | Bin
 .../default/textures/widgets/RadioButton_On.png     | Bin
 .../textures/widgets/RadioButton_On_Disabled.png    | Bin
 .../textures/widgets/RadioButton_On_Press.png       | Bin
 .../default/textures/widgets/RadioButton_Press.png  | Bin
 .../default/textures/widgets/ScrollArrow_Down.png   | Bin
 .../textures/widgets/ScrollArrow_Down_Opaque.png    | Bin
 .../widgets/ScrollArrow_Down_Over_Opaque.png        | Bin
 .../default/textures/widgets/ScrollArrow_Left.png   | Bin
 .../textures/widgets/ScrollArrow_Left_Opaque.png    | Bin
 .../widgets/ScrollArrow_Left_Over_Opaque.png        | Bin
 .../default/textures/widgets/ScrollArrow_Right.png  | Bin
 .../textures/widgets/ScrollArrow_Right_Opaque.png   | Bin
 .../widgets/ScrollArrow_Right_Over_Opaque.png       | Bin
 .../default/textures/widgets/ScrollArrow_Up.png     | Bin
 .../textures/widgets/ScrollArrow_Up_Opaque.png      | Bin
 .../textures/widgets/ScrollArrow_Up_Over_Opaque.png | Bin
 .../default/textures/widgets/ScrollThumb_Horiz.png  | Bin
 .../default/textures/widgets/ScrollThumb_Vert.png   | Bin
 .../default/textures/widgets/ScrollTrack_Horiz.png  | Bin
 .../default/textures/widgets/ScrollTrack_Vert.png   | Bin
 .../textures/widgets/SegmentedBtn_Left_Disabled.png | Bin
 .../textures/widgets/SegmentedBtn_Left_Off.png      | Bin
 .../textures/widgets/SegmentedBtn_Left_Over.png     | Bin
 .../textures/widgets/SegmentedBtn_Left_Press.png    | Bin
 .../textures/widgets/SegmentedBtn_Left_Selected.png | Bin
 .../widgets/SegmentedBtn_Left_Selected_Disabled.png | Bin
 .../widgets/SegmentedBtn_Left_Selected_Over.png     | Bin
 .../widgets/SegmentedBtn_Left_Selected_Press.png    | Bin
 .../widgets/SegmentedBtn_Middle_Disabled.png        | Bin
 .../widgets/SegmentedBtn_Middle_Selected.png        | Bin
 .../SegmentedBtn_Middle_Selected_Disabled.png       | Bin
 .../widgets/SegmentedBtn_Middle_Selected_Press.png  | Bin
 .../widgets/SegmentedBtn_Right_Disabled.png         | Bin
 .../textures/widgets/SegmentedBtn_Right_Off.png     | Bin
 .../widgets/SegmentedBtn_Right_On_Selected.png      | Bin
 .../textures/widgets/SegmentedBtn_Right_Over.png    | Bin
 .../textures/widgets/SegmentedBtn_Right_Press.png   | Bin
 .../widgets/SegmentedBtn_Right_Selected.png         | Bin
 .../SegmentedBtn_Right_Selected_Disabled.png        | Bin
 .../widgets/SegmentedBtn_Right_Selected_Press.png   | Bin
 .../textures/widgets/SliderThumb_Disabled.png       | Bin
 .../default/textures/widgets/SliderThumb_Off.png    | Bin
 .../default/textures/widgets/SliderThumb_Press.png  | Bin
 .../default/textures/widgets/SliderTrack_Horiz.png  | Bin
 .../default/textures/widgets/SliderTrack_Vert.png   | Bin
 .../default/textures/widgets/Stepper_Down_Off.png   | Bin
 .../default/textures/widgets/Stepper_Down_Press.png | Bin
 .../default/textures/widgets/Stepper_Up_Off.png     | Bin
 .../default/textures/widgets/Stepper_Up_Press.png   | Bin
 .../default/textures/widgets/TextField_Active.png   | Bin
 .../default/textures/widgets/TextField_Disabled.png | Bin
 .../default/textures/widgets/TextField_Off.png      | Bin
 .../textures/widgets/TextField_Search_Active.png    | Bin
 .../textures/widgets/TextField_Search_Disabled.png  | Bin
 .../textures/widgets/TextField_Search_Off.png       | Bin
 .../skins/default/textures/widgets/Tooltip.png      | Bin
 .../default/textures/widgets/bevel_background.png   | Bin
 .../skins/default/textures/widgets/buy_off.png      | Bin
 .../skins/default/textures/widgets/buy_over.png     | Bin
 .../skins/default/textures/widgets/buy_press.png    | Bin
 .../skins/default/textures/widgets/jump_left_in.png | Bin
 .../default/textures/widgets/jump_left_out.png      | Bin
 .../default/textures/widgets/jump_right_in.png      | Bin
 .../default/textures/widgets/jump_right_out.png     | Bin
 .../skins/default/textures/windows/Dragbar.png      | Bin
 .../skins/default/textures/windows/Flyout_Left.png  | Bin
 .../default/textures/windows/Flyout_Pointer.png     | Bin
 .../skins/default/textures/windows/Flyout_Right.png | Bin
 .../textures/windows/Icon_Close_Foreground.png      | Bin
 .../default/textures/windows/Icon_Close_Press.png   | Bin
 .../default/textures/windows/Icon_Close_Toast.png   | Bin
 .../textures/windows/Icon_Dock_Foreground.png       | Bin
 .../default/textures/windows/Icon_Dock_Press.png    | Bin
 .../textures/windows/Icon_Gear_Background.png       | Bin
 .../textures/windows/Icon_Gear_Foreground.png       | Bin
 .../default/textures/windows/Icon_Gear_Press.png    | Bin
 .../textures/windows/Icon_Help_Foreground.png       | Bin
 .../default/textures/windows/Icon_Help_Press.png    | Bin
 .../textures/windows/Icon_Minimize_Foreground.png   | Bin
 .../textures/windows/Icon_Minimize_Press.png        | Bin
 .../textures/windows/Icon_Restore_Foreground.png    | Bin
 .../default/textures/windows/Icon_Restore_Press.png | Bin
 .../textures/windows/Icon_Undock_Foreground.png     | Bin
 .../textures/windows/Inspector_Background.png       | Bin
 .../default/textures/windows/Inspector_Hover.png    | Bin
 .../skins/default/textures/windows/Inspector_I.png  | Bin
 .../default/textures/windows/Resize_Corner.png      | Bin
 .../default/textures/windows/Toast_Background.png   | Bin
 .../default/textures/windows/Toast_CloseBtn.png     | Bin
 .../skins/default/textures/windows/Toast_Over.png   | Bin
 .../default/textures/windows/Volume_Background.png  | Bin
 .../default/textures/windows/Wearables_Divider.png  | Bin
 .../default/textures/windows/Window_Background.png  | Bin
 .../default/textures/windows/Window_Foreground.png  | Bin
 .../textures/windows/Window_NoTitle_Background.png  | Bin
 .../textures/windows/Window_NoTitle_Foreground.png  | Bin
 .../default/textures/windows/hint_arrow_down.png    | Bin
 .../default/textures/windows/hint_arrow_left.png    | Bin
 .../textures/windows/hint_arrow_lower_left.png      | Bin
 .../default/textures/windows/hint_arrow_right.png   | Bin
 .../default/textures/windows/hint_arrow_up.png      | Bin
 .../default/textures/windows/hint_background.png    | Bin
 .../skins/default/textures/windows/startup_logo.png | Bin
 .../default/textures/windows/yellow_gradient.png    | Bin
 .../skins/default/textures/world/BeaconArrow.png    | Bin
 .../skins/default/textures/world/CameraDragDot.png  | Bin
 .../skins/default/textures/world/NoEntryLines.png   | Bin
 .../default/textures/world/NoEntryPassLines.png     | Bin
 .../newview/skins/default/xui/da/floater_about.xml  |   0
 .../skins/default/xui/da/floater_about_land.xml     |   0
 .../skins/default/xui/da/floater_activeim.xml       |   0
 .../default/xui/da/floater_animation_preview.xml    |   0
 .../skins/default/xui/da/floater_auction.xml        |   0
 .../skins/default/xui/da/floater_avatar_picker.xml  |   0
 .../default/xui/da/floater_avatar_textures.xml      |   0
 .../skins/default/xui/da/floater_beacons.xml        |   0
 .../skins/default/xui/da/floater_build_options.xml  |   0
 .../skins/default/xui/da/floater_bulk_perms.xml     |   0
 .../newview/skins/default/xui/da/floater_bumps.xml  |   0
 .../skins/default/xui/da/floater_buy_contents.xml   |   0
 .../skins/default/xui/da/floater_buy_currency.xml   |   0
 .../default/xui/da/floater_buy_currency_html.xml    |   0
 .../skins/default/xui/da/floater_buy_land.xml       |   0
 .../skins/default/xui/da/floater_buy_object.xml     |   0
 .../newview/skins/default/xui/da/floater_camera.xml |   0
 .../skins/default/xui/da/floater_choose_group.xml   |   0
 .../skins/default/xui/da/floater_color_picker.xml   |   0
 .../skins/default/xui/da/floater_critical.xml       |   0
 .../skins/default/xui/da/floater_display_name.xml   |   0
 .../newview/skins/default/xui/da/floater_event.xml  |   0
 .../skins/default/xui/da/floater_font_test.xml      |   0
 .../skins/default/xui/da/floater_gesture.xml        |   0
 .../skins/default/xui/da/floater_god_tools.xml      |   0
 .../default/xui/da/floater_hardware_settings.xml    |   0
 .../skins/default/xui/da/floater_help_browser.xml   |   0
 indra/newview/skins/default/xui/da/floater_hud.xml  |   0
 .../skins/default/xui/da/floater_im_container.xml   |   0
 .../skins/default/xui/da/floater_im_session.xml     |   0
 .../skins/default/xui/da/floater_image_preview.xml  |   0
 .../skins/default/xui/da/floater_import_collada.xml |   0
 .../skins/default/xui/da/floater_incoming_call.xml  |   0
 .../skins/default/xui/da/floater_inspect.xml        |   0
 .../skins/default/xui/da/floater_inventory.xml      |   0
 .../xui/da/floater_inventory_item_properties.xml    |   0
 .../xui/da/floater_inventory_view_finder.xml        |   0
 .../skins/default/xui/da/floater_joystick.xml       |   0
 .../skins/default/xui/da/floater_lagmeter.xml       |   0
 .../skins/default/xui/da/floater_land_holdings.xml  |   0
 .../skins/default/xui/da/floater_live_lsleditor.xml |   0
 .../skins/default/xui/da/floater_lsl_guide.xml      |   0
 indra/newview/skins/default/xui/da/floater_map.xml  |   0
 .../skins/default/xui/da/floater_media_browser.xml  |   0
 .../skins/default/xui/da/floater_media_settings.xml |   0
 .../skins/default/xui/da/floater_mem_leaking.xml    |   0
 .../skins/default/xui/da/floater_model_preview.xml  |   0
 .../skins/default/xui/da/floater_moveview.xml       |   0
 .../skins/default/xui/da/floater_mute_object.xml    |   0
 .../skins/default/xui/da/floater_nearby_chat.xml    |   0
 .../skins/default/xui/da/floater_openobject.xml     |   0
 .../skins/default/xui/da/floater_outgoing_call.xml  |   0
 indra/newview/skins/default/xui/da/floater_pay.xml  |   0
 .../skins/default/xui/da/floater_pay_object.xml     |   0
 .../skins/default/xui/da/floater_perm_prefs.xml     |   0
 .../skins/default/xui/da/floater_postcard.xml       |   0
 .../skins/default/xui/da/floater_preferences.xml    |   0
 .../default/xui/da/floater_preview_animation.xml    |   0
 .../default/xui/da/floater_preview_gesture.xml      |   0
 .../default/xui/da/floater_preview_notecard.xml     |   0
 .../skins/default/xui/da/floater_preview_sound.xml  |   0
 .../default/xui/da/floater_preview_texture.xml      |   0
 .../default/xui/da/floater_price_for_listing.xml    |   0
 .../default/xui/da/floater_publish_classified.xml   |   0
 .../default/xui/da/floater_region_debug_console.xml |   0
 .../skins/default/xui/da/floater_region_info.xml    |   0
 .../skins/default/xui/da/floater_report_abuse.xml   |   0
 .../skins/default/xui/da/floater_script_debug.xml   |   0
 .../default/xui/da/floater_script_debug_panel.xml   |   0
 .../skins/default/xui/da/floater_script_limits.xml  |   0
 .../skins/default/xui/da/floater_script_preview.xml |   0
 .../skins/default/xui/da/floater_script_queue.xml   |   0
 .../skins/default/xui/da/floater_script_search.xml  |   0
 .../newview/skins/default/xui/da/floater_search.xml |   0
 .../skins/default/xui/da/floater_select_key.xml     |   0
 .../skins/default/xui/da/floater_sell_land.xml      |   0
 .../skins/default/xui/da/floater_settings_debug.xml |   0
 .../skins/default/xui/da/floater_snapshot.xml       |   0
 .../skins/default/xui/da/floater_sound_devices.xml  |   0
 .../skins/default/xui/da/floater_sound_preview.xml  |   0
 .../newview/skins/default/xui/da/floater_stats.xml  |   0
 .../skins/default/xui/da/floater_sys_well.xml       |   0
 .../skins/default/xui/da/floater_telehub.xml        |   0
 .../skins/default/xui/da/floater_texture_ctrl.xml   |   0
 .../newview/skins/default/xui/da/floater_tools.xml  |   0
 .../skins/default/xui/da/floater_top_objects.xml    |   0
 indra/newview/skins/default/xui/da/floater_tos.xml  |   0
 .../skins/default/xui/da/floater_url_entry.xml      |   0
 .../skins/default/xui/da/floater_voice_controls.xml |   0
 .../skins/default/xui/da/floater_voice_effect.xml   |   0
 .../skins/default/xui/da/floater_web_content.xml    |   0
 .../default/xui/da/floater_whitelist_entry.xml      |   0
 .../skins/default/xui/da/floater_window_size.xml    |   0
 .../skins/default/xui/da/floater_world_map.xml      |   0
 .../newview/skins/default/xui/da/inspect_avatar.xml |   0
 .../newview/skins/default/xui/da/inspect_group.xml  |   0
 .../newview/skins/default/xui/da/inspect_object.xml |   0
 .../skins/default/xui/da/inspect_remote_object.xml  |   0
 .../skins/default/xui/da/language_settings.xml      |   0
 .../skins/default/xui/da/menu_add_wearable_gear.xml |   0
 .../skins/default/xui/da/menu_attachment_other.xml  |   0
 .../skins/default/xui/da/menu_attachment_self.xml   |   0
 .../skins/default/xui/da/menu_avatar_icon.xml       |   0
 .../skins/default/xui/da/menu_avatar_other.xml      |   0
 .../skins/default/xui/da/menu_avatar_self.xml       |   0
 .../skins/default/xui/da/menu_bottomtray.xml        |   0
 .../skins/default/xui/da/menu_cof_attachment.xml    |   0
 .../skins/default/xui/da/menu_cof_body_part.xml     |   0
 .../skins/default/xui/da/menu_cof_clothing.xml      |   0
 .../newview/skins/default/xui/da/menu_cof_gear.xml  |   0
 indra/newview/skins/default/xui/da/menu_edit.xml    |   0
 .../newview/skins/default/xui/da/menu_favorites.xml |   0
 .../skins/default/xui/da/menu_gesture_gear.xml      |   0
 .../skins/default/xui/da/menu_group_plus.xml        |   0
 .../skins/default/xui/da/menu_hide_navbar.xml       |   0
 .../skins/default/xui/da/menu_imchiclet_adhoc.xml   |   0
 .../skins/default/xui/da/menu_imchiclet_group.xml   |   0
 .../skins/default/xui/da/menu_imchiclet_p2p.xml     |   0
 .../default/xui/da/menu_inspect_avatar_gear.xml     |   0
 .../default/xui/da/menu_inspect_object_gear.xml     |   0
 .../skins/default/xui/da/menu_inspect_self_gear.xml |   0
 .../skins/default/xui/da/menu_inv_offer_chiclet.xml |   0
 .../newview/skins/default/xui/da/menu_inventory.xml |   0
 .../skins/default/xui/da/menu_inventory_add.xml     |   0
 .../default/xui/da/menu_inventory_gear_default.xml  |   0
 indra/newview/skins/default/xui/da/menu_land.xml    |   0
 .../newview/skins/default/xui/da/menu_landmark.xml  |   0
 indra/newview/skins/default/xui/da/menu_login.xml   |   0
 .../skins/default/xui/da/menu_media_ctrl.xml        |   0
 .../newview/skins/default/xui/da/menu_mini_map.xml  |   0
 .../xui/da/menu_model_import_gear_default.xml       |   0
 indra/newview/skins/default/xui/da/menu_navbar.xml  |   0
 .../skins/default/xui/da/menu_nearby_chat.xml       |   0
 .../xui/da/menu_notification_well_button.xml        |   0
 indra/newview/skins/default/xui/da/menu_object.xml  |   0
 .../skins/default/xui/da/menu_object_icon.xml       |   0
 .../skins/default/xui/da/menu_outfit_gear.xml       |   0
 .../skins/default/xui/da/menu_outfit_tab.xml        |   0
 .../skins/default/xui/da/menu_participant_list.xml  |   0
 .../xui/da/menu_people_friends_view_sort.xml        |   0
 .../skins/default/xui/da/menu_people_groups.xml     |   0
 .../default/xui/da/menu_people_groups_view_sort.xml |   0
 .../skins/default/xui/da/menu_people_nearby.xml     |   0
 .../xui/da/menu_people_nearby_multiselect.xml       |   0
 .../default/xui/da/menu_people_nearby_view_sort.xml |   0
 .../default/xui/da/menu_people_recent_view_sort.xml |   0
 indra/newview/skins/default/xui/da/menu_picks.xml   |   0
 .../skins/default/xui/da/menu_picks_plus.xml        |   0
 indra/newview/skins/default/xui/da/menu_place.xml   |   0
 .../skins/default/xui/da/menu_place_add_button.xml  |   0
 .../default/xui/da/menu_places_gear_folder.xml      |   0
 .../default/xui/da/menu_places_gear_landmark.xml    |   0
 .../skins/default/xui/da/menu_profile_overflow.xml  |   0
 .../skins/default/xui/da/menu_save_outfit.xml       |   0
 .../skins/default/xui/da/menu_script_chiclet.xml    |   0
 indra/newview/skins/default/xui/da/menu_slurl.xml   |   0
 .../default/xui/da/menu_teleport_history_gear.xml   |   0
 .../default/xui/da/menu_teleport_history_item.xml   |   0
 .../default/xui/da/menu_teleport_history_tab.xml    |   0
 .../skins/default/xui/da/menu_text_editor.xml       |   0
 .../skins/default/xui/da/menu_topinfobar.xml        |   0
 .../newview/skins/default/xui/da/menu_url_agent.xml |   0
 .../newview/skins/default/xui/da/menu_url_group.xml |   0
 .../newview/skins/default/xui/da/menu_url_http.xml  |   0
 .../skins/default/xui/da/menu_url_inventory.xml     |   0
 indra/newview/skins/default/xui/da/menu_url_map.xml |   0
 .../skins/default/xui/da/menu_url_objectim.xml      |   0
 .../skins/default/xui/da/menu_url_parcel.xml        |   0
 .../newview/skins/default/xui/da/menu_url_slapp.xml |   0
 .../newview/skins/default/xui/da/menu_url_slurl.xml |   0
 .../skins/default/xui/da/menu_url_teleport.xml      |   0
 indra/newview/skins/default/xui/da/menu_viewer.xml  |   0
 .../default/xui/da/menu_wearable_list_item.xml      |   0
 .../skins/default/xui/da/menu_wearing_gear.xml      |   0
 .../skins/default/xui/da/menu_wearing_tab.xml       |   0
 indra/newview/skins/default/xui/da/mime_types.xml   |   0
 .../skins/default/xui/da/mime_types_linux.xml       |   0
 .../newview/skins/default/xui/da/mime_types_mac.xml |   0
 .../newview/skins/default/xui/da/notifications.xml  |   0
 .../skins/default/xui/da/outfit_accordion_tab.xml   |   0
 .../default/xui/da/panel_active_object_row.xml      |   0
 .../default/xui/da/panel_adhoc_control_panel.xml    |   0
 .../skins/default/xui/da/panel_avatar_list_item.xml |   0
 .../default/xui/da/panel_block_list_sidetray.xml    |   0
 .../default/xui/da/panel_body_parts_list_item.xml   |   0
 .../xui/da/panel_bodyparts_list_button_bar.xml      |   0
 .../skins/default/xui/da/panel_bottomtray.xml       |   0
 .../skins/default/xui/da/panel_bottomtray_lite.xml  |   0
 .../skins/default/xui/da/panel_classified_info.xml  |   0
 .../xui/da/panel_clothing_list_button_bar.xml       |   0
 .../default/xui/da/panel_clothing_list_item.xml     |   0
 .../skins/default/xui/da/panel_cof_wearables.xml    |   0
 .../xui/da/panel_deletable_wearable_list_item.xml   |   0
 .../xui/da/panel_dummy_clothing_list_item.xml       |   0
 .../skins/default/xui/da/panel_edit_alpha.xml       |   0
 .../skins/default/xui/da/panel_edit_classified.xml  |   0
 .../skins/default/xui/da/panel_edit_eyes.xml        |   0
 .../skins/default/xui/da/panel_edit_gloves.xml      |   0
 .../skins/default/xui/da/panel_edit_hair.xml        |   0
 .../skins/default/xui/da/panel_edit_jacket.xml      |   0
 .../skins/default/xui/da/panel_edit_pants.xml       |   0
 .../skins/default/xui/da/panel_edit_physics.xml     |   0
 .../skins/default/xui/da/panel_edit_pick.xml        |   0
 .../skins/default/xui/da/panel_edit_profile.xml     |   0
 .../skins/default/xui/da/panel_edit_shape.xml       |   0
 .../skins/default/xui/da/panel_edit_shirt.xml       |   0
 .../skins/default/xui/da/panel_edit_shoes.xml       |   0
 .../skins/default/xui/da/panel_edit_skin.xml        |   0
 .../skins/default/xui/da/panel_edit_skirt.xml       |   0
 .../skins/default/xui/da/panel_edit_socks.xml       |   0
 .../skins/default/xui/da/panel_edit_tattoo.xml      |   0
 .../skins/default/xui/da/panel_edit_underpants.xml  |   0
 .../skins/default/xui/da/panel_edit_undershirt.xml  |   0
 .../skins/default/xui/da/panel_edit_wearable.xml    |   0
 .../default/xui/da/panel_group_control_panel.xml    |   0
 .../skins/default/xui/da/panel_group_general.xml    |   0
 .../default/xui/da/panel_group_info_sidetray.xml    |   0
 .../skins/default/xui/da/panel_group_invite.xml     |   0
 .../skins/default/xui/da/panel_group_land_money.xml |   0
 .../skins/default/xui/da/panel_group_list_item.xml  |   0
 .../skins/default/xui/da/panel_group_notices.xml    |   0
 .../skins/default/xui/da/panel_group_notify.xml     |   0
 .../skins/default/xui/da/panel_group_roles.xml      |   0
 .../skins/default/xui/da/panel_im_control_panel.xml |   0
 .../skins/default/xui/da/panel_inventory_item.xml   |   0
 .../skins/default/xui/da/panel_landmark_info.xml    |   0
 .../skins/default/xui/da/panel_landmarks.xml        |   0
 indra/newview/skins/default/xui/da/panel_login.xml  |   0
 .../skins/default/xui/da/panel_main_inventory.xml   |   0
 indra/newview/skins/default/xui/da/panel_me.xml     |   0
 .../default/xui/da/panel_media_settings_general.xml |   0
 .../xui/da/panel_media_settings_permissions.xml     |   0
 .../xui/da/panel_media_settings_security.xml        |   0
 .../skins/default/xui/da/panel_navigation_bar.xml   |   0
 .../skins/default/xui/da/panel_nearby_chat_bar.xml  |   0
 .../skins/default/xui/da/panel_nearby_media.xml     |   0
 .../skins/default/xui/da/panel_notify_textbox.xml   |   0
 .../default/xui/da/panel_online_status_toast.xml    |   0
 .../skins/default/xui/da/panel_outfit_edit.xml      |   0
 .../default/xui/da/panel_outfits_inventory.xml      |   0
 .../xui/da/panel_outfits_inventory_gear_default.xml |   0
 .../skins/default/xui/da/panel_outfits_list.xml     |   0
 .../skins/default/xui/da/panel_outfits_wearing.xml  |   0
 indra/newview/skins/default/xui/da/panel_people.xml |   0
 .../skins/default/xui/da/panel_pick_info.xml        |   0
 indra/newview/skins/default/xui/da/panel_picks.xml  |   0
 .../skins/default/xui/da/panel_place_profile.xml    |   0
 indra/newview/skins/default/xui/da/panel_places.xml |   0
 .../default/xui/da/panel_preferences_advanced.xml   |   0
 .../default/xui/da/panel_preferences_alerts.xml     |   0
 .../skins/default/xui/da/panel_preferences_chat.xml |   0
 .../default/xui/da/panel_preferences_colors.xml     |   0
 .../default/xui/da/panel_preferences_general.xml    |   0
 .../default/xui/da/panel_preferences_graphics1.xml  |   0
 .../skins/default/xui/da/panel_preferences_move.xml |   0
 .../default/xui/da/panel_preferences_privacy.xml    |   0
 .../default/xui/da/panel_preferences_setup.xml      |   0
 .../default/xui/da/panel_preferences_sound.xml      |   0
 .../default/xui/da/panel_prim_media_controls.xml    |   0
 .../skins/default/xui/da/panel_region_covenant.xml  |   0
 .../skins/default/xui/da/panel_region_debug.xml     |   0
 .../skins/default/xui/da/panel_region_estate.xml    |   0
 .../skins/default/xui/da/panel_region_general.xml   |   0
 .../skins/default/xui/da/panel_region_terrain.xml   |   0
 .../skins/default/xui/da/panel_region_texture.xml   |   0
 .../skins/default/xui/da/panel_script_ed.xml        |   0
 .../xui/da/panel_script_limits_my_avatar.xml        |   0
 .../xui/da/panel_script_limits_region_memory.xml    |   0
 .../skins/default/xui/da/panel_scrolling_param.xml  |   0
 .../default/xui/da/panel_scrolling_param_base.xml   |   0
 .../skins/default/xui/da/panel_side_tray.xml        |   0
 .../default/xui/da/panel_side_tray_tab_caption.xml  |   0
 .../skins/default/xui/da/panel_sound_devices.xml    |   0
 .../default/xui/da/panel_stand_stop_flying.xml      |   0
 .../skins/default/xui/da/panel_status_bar.xml       |   0
 .../skins/default/xui/da/panel_teleport_history.xml |   0
 .../default/xui/da/panel_teleport_history_item.xml  |   0
 .../skins/default/xui/da/panel_voice_effect.xml     |   0
 .../skins/default/xui/da/panel_world_map.xml        |   0
 indra/newview/skins/default/xui/da/role_actions.xml |   0
 .../skins/default/xui/da/sidepanel_appearance.xml   |   0
 .../skins/default/xui/da/sidepanel_inventory.xml    |   0
 .../skins/default/xui/da/sidepanel_item_info.xml    |   0
 .../skins/default/xui/da/sidepanel_task_info.xml    |   0
 indra/newview/skins/default/xui/da/strings.xml      |   0
 .../skins/default/xui/da/teleport_strings.xml       |   0
 indra/newview/skins/default/xui/da/xui_version.xml  |   0
 .../newview/skins/default/xui/de/floater_about.xml  |   0
 .../skins/default/xui/de/floater_about_land.xml     |   0
 .../skins/default/xui/de/floater_activeim.xml       |   0
 .../xui/de/floater_animation_anim_preview.xml       |   0
 .../xui/de/floater_animation_bvh_preview.xml        |   0
 .../skins/default/xui/de/floater_auction.xml        |   0
 .../skins/default/xui/de/floater_autoreplace.xml    |   0
 .../newview/skins/default/xui/de/floater_avatar.xml |   0
 .../skins/default/xui/de/floater_avatar_picker.xml  |   0
 .../default/xui/de/floater_avatar_textures.xml      |   0
 .../skins/default/xui/de/floater_beacons.xml        |   0
 .../skins/default/xui/de/floater_build_options.xml  |   0
 .../skins/default/xui/de/floater_bulk_perms.xml     |   0
 .../newview/skins/default/xui/de/floater_bumps.xml  |   0
 .../skins/default/xui/de/floater_buy_contents.xml   |   0
 .../skins/default/xui/de/floater_buy_currency.xml   |   0
 .../default/xui/de/floater_buy_currency_html.xml    |   0
 .../skins/default/xui/de/floater_buy_land.xml       |   0
 .../skins/default/xui/de/floater_buy_object.xml     |   0
 .../newview/skins/default/xui/de/floater_camera.xml |   0
 .../skins/default/xui/de/floater_chat_bar.xml       |   0
 .../skins/default/xui/de/floater_choose_group.xml   |   0
 .../skins/default/xui/de/floater_color_picker.xml   |   0
 .../skins/default/xui/de/floater_critical.xml       |   0
 .../default/xui/de/floater_delete_env_preset.xml    |   0
 .../skins/default/xui/de/floater_destinations.xml   |   0
 .../skins/default/xui/de/floater_display_name.xml   |   0
 .../skins/default/xui/de/floater_edit_day_cycle.xml |   0
 .../default/xui/de/floater_edit_sky_preset.xml      |   0
 .../default/xui/de/floater_edit_water_preset.xml    |   0
 .../default/xui/de/floater_environment_settings.xml |   0
 .../newview/skins/default/xui/de/floater_event.xml  |   0
 .../skins/default/xui/de/floater_fast_timers.xml    |   0
 .../skins/default/xui/de/floater_font_test.xml      |   0
 .../skins/default/xui/de/floater_gesture.xml        |   0
 .../skins/default/xui/de/floater_god_tools.xml      |   0
 .../default/xui/de/floater_hardware_settings.xml    |   0
 .../skins/default/xui/de/floater_help_browser.xml   |   0
 .../newview/skins/default/xui/de/floater_how_to.xml |   0
 indra/newview/skins/default/xui/de/floater_hud.xml  |   0
 .../skins/default/xui/de/floater_im_container.xml   |   0
 .../skins/default/xui/de/floater_im_session.xml     |   0
 .../skins/default/xui/de/floater_image_preview.xml  |   0
 .../skins/default/xui/de/floater_import_collada.xml |   0
 .../skins/default/xui/de/floater_incoming_call.xml  |   0
 .../skins/default/xui/de/floater_inspect.xml        |   0
 .../xui/de/floater_inventory_item_properties.xml    |   0
 .../xui/de/floater_inventory_view_finder.xml        |   0
 .../skins/default/xui/de/floater_joystick.xml       |   0
 .../skins/default/xui/de/floater_lagmeter.xml       |   0
 .../skins/default/xui/de/floater_land_holdings.xml  |   0
 .../skins/default/xui/de/floater_live_lsleditor.xml |   0
 .../skins/default/xui/de/floater_lsl_guide.xml      |   0
 indra/newview/skins/default/xui/de/floater_map.xml  |   0
 .../skins/default/xui/de/floater_media_browser.xml  |   0
 .../skins/default/xui/de/floater_media_settings.xml |   0
 .../skins/default/xui/de/floater_mem_leaking.xml    |   0
 .../default/xui/de/floater_merchant_outbox.xml      |   0
 .../skins/default/xui/de/floater_model_preview.xml  |   0
 .../skins/default/xui/de/floater_moveview.xml       |   0
 .../skins/default/xui/de/floater_mute_object.xml    |   0
 .../skins/default/xui/de/floater_my_appearance.xml  |   0
 .../skins/default/xui/de/floater_my_inventory.xml   |   0
 .../skins/default/xui/de/floater_notification.xml   |   0
 .../xui/de/floater_notifications_console.xml        |   0
 .../skins/default/xui/de/floater_object_weights.xml |   0
 .../skins/default/xui/de/floater_openobject.xml     |   0
 .../skins/default/xui/de/floater_outfit_save_as.xml |   0
 .../skins/default/xui/de/floater_outgoing_call.xml  |   0
 .../xui/de/floater_pathfinding_characters.xml       |   0
 .../default/xui/de/floater_pathfinding_console.xml  |   0
 .../default/xui/de/floater_pathfinding_linksets.xml |   0
 indra/newview/skins/default/xui/de/floater_pay.xml  |   0
 .../skins/default/xui/de/floater_pay_object.xml     |   0
 .../newview/skins/default/xui/de/floater_people.xml |   0
 .../skins/default/xui/de/floater_perm_prefs.xml     |   0
 .../newview/skins/default/xui/de/floater_picks.xml  |   0
 .../newview/skins/default/xui/de/floater_places.xml |   0
 .../skins/default/xui/de/floater_post_process.xml   |   0
 .../skins/default/xui/de/floater_preferences.xml    |   0
 .../default/xui/de/floater_preferences_proxy.xml    |   0
 .../default/xui/de/floater_preview_animation.xml    |   0
 .../default/xui/de/floater_preview_gesture.xml      |   0
 .../default/xui/de/floater_preview_notecard.xml     |   0
 .../skins/default/xui/de/floater_preview_sound.xml  |   0
 .../default/xui/de/floater_preview_texture.xml      |   0
 .../default/xui/de/floater_price_for_listing.xml    |   0
 .../default/xui/de/floater_publish_classified.xml   |   0
 .../default/xui/de/floater_region_debug_console.xml |   0
 .../skins/default/xui/de/floater_region_info.xml    |   0
 .../skins/default/xui/de/floater_report_abuse.xml   |   0
 .../skins/default/xui/de/floater_script_debug.xml   |   0
 .../default/xui/de/floater_script_debug_panel.xml   |   0
 .../skins/default/xui/de/floater_script_limits.xml  |   0
 .../skins/default/xui/de/floater_script_preview.xml |   0
 .../skins/default/xui/de/floater_script_queue.xml   |   0
 .../skins/default/xui/de/floater_script_search.xml  |   0
 .../newview/skins/default/xui/de/floater_search.xml |   0
 .../skins/default/xui/de/floater_select_key.xml     |   0
 .../skins/default/xui/de/floater_sell_land.xml      |   0
 .../skins/default/xui/de/floater_settings_debug.xml |   0
 .../skins/default/xui/de/floater_snapshot.xml       |   0
 .../skins/default/xui/de/floater_sound_devices.xml  |   0
 .../skins/default/xui/de/floater_sound_preview.xml  |   0
 .../skins/default/xui/de/floater_spellcheck.xml     |   0
 .../default/xui/de/floater_spellcheck_import.xml    |   0
 .../newview/skins/default/xui/de/floater_stats.xml  |   0
 .../skins/default/xui/de/floater_sys_well.xml       |   0
 .../skins/default/xui/de/floater_telehub.xml        |   0
 .../default/xui/de/floater_test_layout_stacks.xml   |   0
 .../xui/de/floater_test_text_vertical_aligment.xml  |   0
 .../skins/default/xui/de/floater_texture_ctrl.xml   |   0
 .../xui/de/floater_texture_fetch_debugger.xml       |   0
 .../newview/skins/default/xui/de/floater_tools.xml  |   0
 .../skins/default/xui/de/floater_top_objects.xml    |   0
 indra/newview/skins/default/xui/de/floater_tos.xml  |   0
 .../newview/skins/default/xui/de/floater_toybox.xml |   0
 .../default/xui/de/floater_translation_settings.xml |   0
 .../skins/default/xui/de/floater_url_entry.xml      |   0
 .../skins/default/xui/de/floater_voice_controls.xml |   0
 .../skins/default/xui/de/floater_voice_effect.xml   |   0
 .../skins/default/xui/de/floater_web_content.xml    |   0
 .../default/xui/de/floater_whitelist_entry.xml      |   0
 .../skins/default/xui/de/floater_window_size.xml    |   0
 .../skins/default/xui/de/floater_world_map.xml      |   0
 .../newview/skins/default/xui/de/inspect_avatar.xml |   0
 .../newview/skins/default/xui/de/inspect_group.xml  |   0
 .../newview/skins/default/xui/de/inspect_object.xml |   0
 .../skins/default/xui/de/inspect_remote_object.xml  |   0
 .../skins/default/xui/de/language_settings.xml      |   0
 .../skins/default/xui/de/menu_add_wearable_gear.xml |   0
 .../skins/default/xui/de/menu_attachment_other.xml  |   0
 .../skins/default/xui/de/menu_attachment_self.xml   |   0
 .../skins/default/xui/de/menu_avatar_icon.xml       |   0
 .../skins/default/xui/de/menu_avatar_other.xml      |   0
 .../skins/default/xui/de/menu_avatar_self.xml       |   0
 .../skins/default/xui/de/menu_cof_attachment.xml    |   0
 .../skins/default/xui/de/menu_cof_body_part.xml     |   0
 .../skins/default/xui/de/menu_cof_clothing.xml      |   0
 .../newview/skins/default/xui/de/menu_cof_gear.xml  |   0
 indra/newview/skins/default/xui/de/menu_edit.xml    |   0
 .../newview/skins/default/xui/de/menu_favorites.xml |   0
 .../skins/default/xui/de/menu_gesture_gear.xml      |   0
 .../skins/default/xui/de/menu_group_plus.xml        |   0
 .../skins/default/xui/de/menu_hide_navbar.xml       |   0
 .../skins/default/xui/de/menu_imchiclet_adhoc.xml   |   0
 .../skins/default/xui/de/menu_imchiclet_group.xml   |   0
 .../skins/default/xui/de/menu_imchiclet_p2p.xml     |   0
 .../default/xui/de/menu_inspect_avatar_gear.xml     |   0
 .../default/xui/de/menu_inspect_object_gear.xml     |   0
 .../skins/default/xui/de/menu_inspect_self_gear.xml |   0
 .../skins/default/xui/de/menu_inv_offer_chiclet.xml |   0
 .../newview/skins/default/xui/de/menu_inventory.xml |   0
 .../skins/default/xui/de/menu_inventory_add.xml     |   0
 .../default/xui/de/menu_inventory_gear_default.xml  |   0
 indra/newview/skins/default/xui/de/menu_land.xml    |   0
 .../newview/skins/default/xui/de/menu_landmark.xml  |   0
 indra/newview/skins/default/xui/de/menu_login.xml   |   0
 .../skins/default/xui/de/menu_media_ctrl.xml        |   0
 .../newview/skins/default/xui/de/menu_mini_map.xml  |   0
 .../xui/de/menu_model_import_gear_default.xml       |   0
 indra/newview/skins/default/xui/de/menu_navbar.xml  |   0
 .../skins/default/xui/de/menu_nearby_chat.xml       |   0
 .../xui/de/menu_notification_well_button.xml        |   0
 indra/newview/skins/default/xui/de/menu_object.xml  |   0
 .../skins/default/xui/de/menu_object_icon.xml       |   0
 .../skins/default/xui/de/menu_outfit_gear.xml       |   0
 .../skins/default/xui/de/menu_outfit_tab.xml        |   0
 .../skins/default/xui/de/menu_participant_list.xml  |   0
 .../xui/de/menu_people_friends_view_sort.xml        |   0
 .../skins/default/xui/de/menu_people_groups.xml     |   0
 .../default/xui/de/menu_people_groups_view_sort.xml |   0
 .../skins/default/xui/de/menu_people_nearby.xml     |   0
 .../xui/de/menu_people_nearby_multiselect.xml       |   0
 .../default/xui/de/menu_people_nearby_view_sort.xml |   0
 .../default/xui/de/menu_people_recent_view_sort.xml |   0
 indra/newview/skins/default/xui/de/menu_picks.xml   |   0
 .../skins/default/xui/de/menu_picks_plus.xml        |   0
 indra/newview/skins/default/xui/de/menu_place.xml   |   0
 .../skins/default/xui/de/menu_place_add_button.xml  |   0
 .../default/xui/de/menu_places_gear_folder.xml      |   0
 .../default/xui/de/menu_places_gear_landmark.xml    |   0
 .../skins/default/xui/de/menu_profile_overflow.xml  |   0
 .../skins/default/xui/de/menu_save_outfit.xml       |   0
 .../skins/default/xui/de/menu_script_chiclet.xml    |   0
 indra/newview/skins/default/xui/de/menu_slurl.xml   |   0
 .../default/xui/de/menu_teleport_history_gear.xml   |   0
 .../default/xui/de/menu_teleport_history_item.xml   |   0
 .../default/xui/de/menu_teleport_history_tab.xml    |   0
 .../skins/default/xui/de/menu_text_editor.xml       |   0
 .../newview/skins/default/xui/de/menu_toolbars.xml  |   0
 .../skins/default/xui/de/menu_topinfobar.xml        |   0
 .../newview/skins/default/xui/de/menu_url_agent.xml |   0
 .../newview/skins/default/xui/de/menu_url_group.xml |   0
 .../newview/skins/default/xui/de/menu_url_http.xml  |   0
 .../skins/default/xui/de/menu_url_inventory.xml     |   0
 indra/newview/skins/default/xui/de/menu_url_map.xml |   0
 .../skins/default/xui/de/menu_url_objectim.xml      |   0
 .../skins/default/xui/de/menu_url_parcel.xml        |   0
 .../newview/skins/default/xui/de/menu_url_slapp.xml |   0
 .../newview/skins/default/xui/de/menu_url_slurl.xml |   0
 .../skins/default/xui/de/menu_url_teleport.xml      |   0
 indra/newview/skins/default/xui/de/menu_viewer.xml  |   0
 .../default/xui/de/menu_wearable_list_item.xml      |   0
 .../skins/default/xui/de/menu_wearing_gear.xml      |   0
 .../skins/default/xui/de/menu_wearing_tab.xml       |   0
 indra/newview/skins/default/xui/de/mime_types.xml   |   0
 .../skins/default/xui/de/mime_types_linux.xml       |   0
 .../newview/skins/default/xui/de/mime_types_mac.xml |   0
 .../newview/skins/default/xui/de/notifications.xml  |   0
 .../skins/default/xui/de/outfit_accordion_tab.xml   |   0
 .../default/xui/de/panel_active_object_row.xml      |   0
 .../default/xui/de/panel_adhoc_control_panel.xml    |   0
 .../skins/default/xui/de/panel_avatar_list_item.xml |   0
 .../skins/default/xui/de/panel_avatar_tag.xml       |   0
 .../default/xui/de/panel_block_list_sidetray.xml    |   0
 .../default/xui/de/panel_body_parts_list_item.xml   |   0
 .../xui/de/panel_bodyparts_list_button_bar.xml      |   0
 .../skins/default/xui/de/panel_bottomtray_lite.xml  |   0
 .../skins/default/xui/de/panel_chat_header.xml      |   0
 .../skins/default/xui/de/panel_chiclet_bar.xml      |   0
 .../skins/default/xui/de/panel_classified_info.xml  |   0
 .../xui/de/panel_clothing_list_button_bar.xml       |   0
 .../default/xui/de/panel_clothing_list_item.xml     |   0
 .../skins/default/xui/de/panel_cof_wearables.xml    |   0
 .../xui/de/panel_deletable_wearable_list_item.xml   |   0
 .../xui/de/panel_dummy_clothing_list_item.xml       |   0
 .../skins/default/xui/de/panel_edit_alpha.xml       |   0
 .../skins/default/xui/de/panel_edit_classified.xml  |   0
 .../skins/default/xui/de/panel_edit_eyes.xml        |   0
 .../skins/default/xui/de/panel_edit_gloves.xml      |   0
 .../skins/default/xui/de/panel_edit_hair.xml        |   0
 .../skins/default/xui/de/panel_edit_jacket.xml      |   0
 .../skins/default/xui/de/panel_edit_pants.xml       |   0
 .../skins/default/xui/de/panel_edit_physics.xml     |   0
 .../skins/default/xui/de/panel_edit_pick.xml        |   0
 .../skins/default/xui/de/panel_edit_profile.xml     |   0
 .../skins/default/xui/de/panel_edit_shape.xml       |   0
 .../skins/default/xui/de/panel_edit_shirt.xml       |   0
 .../skins/default/xui/de/panel_edit_shoes.xml       |   0
 .../skins/default/xui/de/panel_edit_skin.xml        |   0
 .../skins/default/xui/de/panel_edit_skirt.xml       |   0
 .../skins/default/xui/de/panel_edit_socks.xml       |   0
 .../skins/default/xui/de/panel_edit_tattoo.xml      |   0
 .../skins/default/xui/de/panel_edit_underpants.xml  |   0
 .../skins/default/xui/de/panel_edit_undershirt.xml  |   0
 .../skins/default/xui/de/panel_edit_wearable.xml    |   0
 .../default/xui/de/panel_group_control_panel.xml    |   0
 .../skins/default/xui/de/panel_group_general.xml    |   0
 .../default/xui/de/panel_group_info_sidetray.xml    |   0
 .../skins/default/xui/de/panel_group_invite.xml     |   0
 .../skins/default/xui/de/panel_group_land_money.xml |   0
 .../skins/default/xui/de/panel_group_list_item.xml  |   0
 .../skins/default/xui/de/panel_group_notices.xml    |   0
 .../skins/default/xui/de/panel_group_notify.xml     |   0
 .../skins/default/xui/de/panel_group_roles.xml      |   0
 .../skins/default/xui/de/panel_im_control_panel.xml |   0
 .../skins/default/xui/de/panel_instant_message.xml  |   0
 .../skins/default/xui/de/panel_inventory_item.xml   |   0
 .../skins/default/xui/de/panel_landmark_info.xml    |   0
 .../skins/default/xui/de/panel_landmarks.xml        |   0
 indra/newview/skins/default/xui/de/panel_login.xml  |   0
 .../skins/default/xui/de/panel_main_inventory.xml   |   0
 indra/newview/skins/default/xui/de/panel_me.xml     |   0
 .../default/xui/de/panel_media_settings_general.xml |   0
 .../xui/de/panel_media_settings_permissions.xml     |   0
 .../xui/de/panel_media_settings_security.xml        |   0
 .../skins/default/xui/de/panel_navigation_bar.xml   |   0
 .../skins/default/xui/de/panel_nearby_chat.xml      |   0
 .../skins/default/xui/de/panel_nearby_chat_bar.xml  |   0
 .../skins/default/xui/de/panel_nearby_media.xml     |   0
 .../default/xui/de/panel_notifications_channel.xml  |   0
 .../skins/default/xui/de/panel_notify_textbox.xml   |   0
 .../default/xui/de/panel_online_status_toast.xml    |   0
 .../skins/default/xui/de/panel_outbox_inventory.xml |   0
 .../skins/default/xui/de/panel_outfit_edit.xml      |   0
 .../default/xui/de/panel_outfits_inventory.xml      |   0
 .../xui/de/panel_outfits_inventory_gear_default.xml |   0
 .../skins/default/xui/de/panel_outfits_list.xml     |   0
 .../skins/default/xui/de/panel_outfits_wearing.xml  |   0
 indra/newview/skins/default/xui/de/panel_people.xml |   0
 .../skins/default/xui/de/panel_pick_info.xml        |   0
 indra/newview/skins/default/xui/de/panel_picks.xml  |   0
 .../skins/default/xui/de/panel_place_profile.xml    |   0
 indra/newview/skins/default/xui/de/panel_places.xml |   0
 .../skins/default/xui/de/panel_postcard_message.xml |   0
 .../default/xui/de/panel_postcard_settings.xml      |   0
 .../default/xui/de/panel_preferences_advanced.xml   |   0
 .../default/xui/de/panel_preferences_alerts.xml     |   0
 .../skins/default/xui/de/panel_preferences_chat.xml |   0
 .../default/xui/de/panel_preferences_colors.xml     |   0
 .../default/xui/de/panel_preferences_general.xml    |   0
 .../default/xui/de/panel_preferences_graphics1.xml  |   0
 .../skins/default/xui/de/panel_preferences_move.xml |   0
 .../default/xui/de/panel_preferences_privacy.xml    |   0
 .../default/xui/de/panel_preferences_setup.xml      |   0
 .../default/xui/de/panel_preferences_sound.xml      |   0
 .../default/xui/de/panel_prim_media_controls.xml    |   0
 .../skins/default/xui/de/panel_region_covenant.xml  |   0
 .../skins/default/xui/de/panel_region_debug.xml     |   0
 .../default/xui/de/panel_region_environment.xml     |   0
 .../skins/default/xui/de/panel_region_estate.xml    |   0
 .../skins/default/xui/de/panel_region_general.xml   |   0
 .../skins/default/xui/de/panel_region_terrain.xml   |   0
 .../skins/default/xui/de/panel_script_ed.xml        |   0
 .../xui/de/panel_script_limits_my_avatar.xml        |   0
 .../xui/de/panel_script_limits_region_memory.xml    |   0
 .../default/xui/de/panel_script_question_toast.xml  |   0
 .../skins/default/xui/de/panel_scrolling_param.xml  |   0
 .../default/xui/de/panel_scrolling_param_base.xml   |   0
 .../default/xui/de/panel_side_tray_tab_caption.xml  |   0
 .../default/xui/de/panel_sidetray_home_tab.xml      |   0
 .../default/xui/de/panel_snapshot_inventory.xml     |   0
 .../skins/default/xui/de/panel_snapshot_local.xml   |   0
 .../skins/default/xui/de/panel_snapshot_options.xml |   0
 .../default/xui/de/panel_snapshot_postcard.xml      |   0
 .../skins/default/xui/de/panel_snapshot_profile.xml |   0
 .../skins/default/xui/de/panel_sound_devices.xml    |   0
 .../default/xui/de/panel_stand_stop_flying.xml      |   0
 .../skins/default/xui/de/panel_status_bar.xml       |   0
 .../skins/default/xui/de/panel_sys_well_item.xml    |   0
 .../skins/default/xui/de/panel_teleport_history.xml |   0
 .../default/xui/de/panel_teleport_history_item.xml  |   0
 .../skins/default/xui/de/panel_voice_effect.xml     |   0
 .../skins/default/xui/de/panel_volume_pulldown.xml  |   0
 .../skins/default/xui/de/panel_world_map.xml        |   0
 indra/newview/skins/default/xui/de/role_actions.xml |   0
 .../skins/default/xui/de/sidepanel_appearance.xml   |   0
 .../skins/default/xui/de/sidepanel_inventory.xml    |   0
 .../skins/default/xui/de/sidepanel_item_info.xml    |   0
 .../skins/default/xui/de/sidepanel_task_info.xml    |   0
 indra/newview/skins/default/xui/de/strings.xml      |   0
 .../skins/default/xui/de/teleport_strings.xml       |   0
 indra/newview/skins/default/xui/de/xui_version.xml  |   0
 .../newview/skins/default/xui/en/accordion_drag.xml |   0
 .../skins/default/xui/en/accordion_parent.xml       |   0
 indra/newview/skins/default/xui/en/alert_button.xml |   0
 .../skins/default/xui/en/alert_check_box.xml        |   0
 indra/newview/skins/default/xui/en/alert_icon.xml   |   0
 .../skins/default/xui/en/alert_line_editor.xml      |   0
 .../skins/default/xui/en/favorites_bar_button.xml   |   0
 indra/newview/skins/default/xui/en/floater_aaa.xml  |   0
 .../newview/skins/default/xui/en/floater_about.xml  |   0
 .../skins/default/xui/en/floater_about_land.xml     |   0
 .../skins/default/xui/en/floater_activeim.xml       |   0
 .../xui/en/floater_animation_anim_preview.xml       |   0
 .../xui/en/floater_animation_bvh_preview.xml        |   0
 .../skins/default/xui/en/floater_auction.xml        |   0
 .../skins/default/xui/en/floater_autoreplace.xml    |   0
 .../newview/skins/default/xui/en/floater_avatar.xml |   0
 .../skins/default/xui/en/floater_avatar_picker.xml  |   0
 .../default/xui/en/floater_avatar_textures.xml      |   0
 .../skins/default/xui/en/floater_beacons.xml        |   0
 .../skins/default/xui/en/floater_build_options.xml  |   0
 .../skins/default/xui/en/floater_bulk_perms.xml     |   0
 .../newview/skins/default/xui/en/floater_bumps.xml  |   0
 .../skins/default/xui/en/floater_buy_contents.xml   |   0
 .../skins/default/xui/en/floater_buy_currency.xml   |   0
 .../default/xui/en/floater_buy_currency_html.xml    |   0
 .../skins/default/xui/en/floater_buy_land.xml       |   0
 .../skins/default/xui/en/floater_buy_object.xml     |   0
 .../newview/skins/default/xui/en/floater_camera.xml |   0
 .../skins/default/xui/en/floater_choose_group.xml   |   0
 .../skins/default/xui/en/floater_color_picker.xml   |   0
 .../default/xui/en/floater_conversation_log.xml     |   0
 .../default/xui/en/floater_conversation_preview.xml |   0
 .../skins/default/xui/en/floater_critical.xml       |   0
 .../default/xui/en/floater_delete_env_preset.xml    |   0
 .../skins/default/xui/en/floater_destinations.xml   |   0
 .../skins/default/xui/en/floater_display_name.xml   |   0
 .../skins/default/xui/en/floater_edit_day_cycle.xml |   0
 .../default/xui/en/floater_edit_sky_preset.xml      |   0
 .../default/xui/en/floater_edit_water_preset.xml    |   0
 .../default/xui/en/floater_environment_settings.xml |   0
 .../newview/skins/default/xui/en/floater_event.xml  |   0
 .../skins/default/xui/en/floater_fast_timers.xml    |   0
 .../skins/default/xui/en/floater_font_test.xml      |   0
 .../skins/default/xui/en/floater_gesture.xml        |   0
 .../skins/default/xui/en/floater_god_tools.xml      |   0
 .../default/xui/en/floater_hardware_settings.xml    |   0
 .../skins/default/xui/en/floater_help_browser.xml   |   0
 .../newview/skins/default/xui/en/floater_how_to.xml |   0
 indra/newview/skins/default/xui/en/floater_hud.xml  |   0
 .../skins/default/xui/en/floater_im_container.xml   |   0
 .../skins/default/xui/en/floater_im_session.xml     |   0
 .../skins/default/xui/en/floater_image_preview.xml  |   0
 .../skins/default/xui/en/floater_import_collada.xml |   0
 .../skins/default/xui/en/floater_incoming_call.xml  |   0
 .../skins/default/xui/en/floater_inspect.xml        |   0
 .../xui/en/floater_inventory_item_properties.xml    |   0
 .../xui/en/floater_inventory_view_finder.xml        |   0
 .../skins/default/xui/en/floater_joystick.xml       |   0
 .../skins/default/xui/en/floater_lagmeter.xml       |   0
 .../skins/default/xui/en/floater_land_holdings.xml  |   0
 .../skins/default/xui/en/floater_live_lsleditor.xml |   0
 .../skins/default/xui/en/floater_lsl_guide.xml      |   0
 indra/newview/skins/default/xui/en/floater_map.xml  |   0
 .../skins/default/xui/en/floater_media_browser.xml  |   0
 .../skins/default/xui/en/floater_media_settings.xml |   0
 .../skins/default/xui/en/floater_mem_leaking.xml    |   0
 .../default/xui/en/floater_merchant_outbox.xml      |   0
 .../skins/default/xui/en/floater_model_preview.xml  |   0
 .../skins/default/xui/en/floater_moveview.xml       |   0
 .../skins/default/xui/en/floater_mute_object.xml    |   0
 .../skins/default/xui/en/floater_my_appearance.xml  |   0
 .../skins/default/xui/en/floater_my_inventory.xml   |   0
 .../skins/default/xui/en/floater_my_web_profile.xml |   0
 .../skins/default/xui/en/floater_notification.xml   |   0
 .../xui/en/floater_notifications_console.xml        |   0
 .../skins/default/xui/en/floater_object_weights.xml |   0
 .../skins/default/xui/en/floater_openobject.xml     |   0
 .../skins/default/xui/en/floater_outfit_save_as.xml |   0
 .../skins/default/xui/en/floater_outgoing_call.xml  |   0
 .../xui/en/floater_pathfinding_characters.xml       |   0
 .../default/xui/en/floater_pathfinding_console.xml  |   0
 .../default/xui/en/floater_pathfinding_linksets.xml |   0
 indra/newview/skins/default/xui/en/floater_pay.xml  |   0
 .../skins/default/xui/en/floater_pay_object.xml     |   0
 .../newview/skins/default/xui/en/floater_people.xml |   0
 .../skins/default/xui/en/floater_perm_prefs.xml     |   0
 .../newview/skins/default/xui/en/floater_picks.xml  |   0
 .../newview/skins/default/xui/en/floater_places.xml |   0
 .../skins/default/xui/en/floater_post_process.xml   |   0
 .../skins/default/xui/en/floater_preferences.xml    |   0
 .../default/xui/en/floater_preferences_proxy.xml    |   0
 .../default/xui/en/floater_preview_animation.xml    |   0
 .../default/xui/en/floater_preview_gesture.xml      |   0
 .../default/xui/en/floater_preview_notecard.xml     |   0
 .../skins/default/xui/en/floater_preview_sound.xml  |   0
 .../default/xui/en/floater_preview_texture.xml      |   0
 .../default/xui/en/floater_price_for_listing.xml    |   0
 .../default/xui/en/floater_publish_classified.xml   |   0
 .../default/xui/en/floater_region_debug_console.xml |   0
 .../skins/default/xui/en/floater_region_info.xml    |   0
 .../skins/default/xui/en/floater_report_abuse.xml   |   0
 .../newview/skins/default/xui/en/floater_script.xml |   0
 .../skins/default/xui/en/floater_script_debug.xml   |   0
 .../default/xui/en/floater_script_debug_panel.xml   |   0
 .../skins/default/xui/en/floater_script_limits.xml  |   0
 .../skins/default/xui/en/floater_script_preview.xml |   0
 .../skins/default/xui/en/floater_script_queue.xml   |   0
 .../skins/default/xui/en/floater_script_search.xml  |   0
 .../newview/skins/default/xui/en/floater_search.xml |   0
 .../skins/default/xui/en/floater_select_key.xml     |   0
 .../skins/default/xui/en/floater_sell_land.xml      |   0
 .../skins/default/xui/en/floater_settings_debug.xml |   0
 .../skins/default/xui/en/floater_side_bar_tab.xml   |   0
 .../skins/default/xui/en/floater_snapshot.xml       |   0
 .../skins/default/xui/en/floater_sound_devices.xml  |   0
 .../skins/default/xui/en/floater_sound_preview.xml  |   0
 .../skins/default/xui/en/floater_spellcheck.xml     |   0
 .../default/xui/en/floater_spellcheck_import.xml    |   0
 .../newview/skins/default/xui/en/floater_stats.xml  |   0
 .../skins/default/xui/en/floater_sys_well.xml       |   0
 .../skins/default/xui/en/floater_telehub.xml        |   0
 .../skins/default/xui/en/floater_test_button.xml    |   0
 .../skins/default/xui/en/floater_test_checkbox.xml  |   0
 .../skins/default/xui/en/floater_test_combobox.xml  |   0
 .../default/xui/en/floater_test_inspectors.xml      |   0
 .../skins/default/xui/en/floater_test_layout.xml    |   0
 .../default/xui/en/floater_test_layout_stacks.xml   |   0
 .../default/xui/en/floater_test_line_editor.xml     |   0
 .../skins/default/xui/en/floater_test_list_view.xml |   0
 .../default/xui/en/floater_test_navigation_bar.xml  |   0
 .../default/xui/en/floater_test_radiogroup.xml      |   0
 .../skins/default/xui/en/floater_test_slider.xml    |   0
 .../skins/default/xui/en/floater_test_spinner.xml   |   0
 .../default/xui/en/floater_test_text_editor.xml     |   0
 .../xui/en/floater_test_text_vertical_aligment.xml  |   0
 .../skins/default/xui/en/floater_test_textbox.xml   |   0
 .../skins/default/xui/en/floater_test_toolbar.xml   |   0
 .../skins/default/xui/en/floater_test_widgets.xml   |   0
 .../skins/default/xui/en/floater_texture_ctrl.xml   |   0
 .../xui/en/floater_texture_fetch_debugger.xml       |   0
 .../newview/skins/default/xui/en/floater_tools.xml  |   0
 .../skins/default/xui/en/floater_top_objects.xml    |   0
 indra/newview/skins/default/xui/en/floater_tos.xml  |   0
 .../newview/skins/default/xui/en/floater_toybox.xml |   0
 .../default/xui/en/floater_translation_settings.xml |   0
 .../skins/default/xui/en/floater_ui_preview.xml     |   0
 .../skins/default/xui/en/floater_url_entry.xml      |   0
 .../default/xui/en/floater_voice_chat_volume.xml    |   0
 .../skins/default/xui/en/floater_voice_effect.xml   |   0
 .../skins/default/xui/en/floater_voice_volume.xml   |   0
 .../skins/default/xui/en/floater_web_content.xml    |   0
 .../skins/default/xui/en/floater_web_profile.xml    |   0
 .../default/xui/en/floater_whitelist_entry.xml      |   0
 .../skins/default/xui/en/floater_window_size.xml    |   0
 .../skins/default/xui/en/floater_world_map.xml      |   0
 indra/newview/skins/default/xui/en/fonts.xml        |   0
 .../newview/skins/default/xui/en/inspect_avatar.xml |   0
 .../newview/skins/default/xui/en/inspect_group.xml  |   0
 .../newview/skins/default/xui/en/inspect_object.xml |   0
 .../skins/default/xui/en/inspect_remote_object.xml  |   0
 .../newview/skins/default/xui/en/inspect_toast.xml  |   0
 .../skins/default/xui/en/inspector_info_ctrl.xml    |   0
 .../skins/default/xui/en/language_settings.xml      |   0
 indra/newview/skins/default/xui/en/main_view.xml    |   0
 .../skins/default/xui/en/menu_add_wearable_gear.xml |   0
 .../skins/default/xui/en/menu_attachment_other.xml  |   0
 .../skins/default/xui/en/menu_attachment_self.xml   |   0
 .../skins/default/xui/en/menu_avatar_icon.xml       |   0
 .../skins/default/xui/en/menu_avatar_other.xml      |   0
 .../skins/default/xui/en/menu_avatar_self.xml       |   0
 .../skins/default/xui/en/menu_cof_attachment.xml    |   0
 .../skins/default/xui/en/menu_cof_body_part.xml     |   0
 .../skins/default/xui/en/menu_cof_clothing.xml      |   0
 .../newview/skins/default/xui/en/menu_cof_gear.xml  |   0
 .../skins/default/xui/en/menu_conversation.xml      |   0
 .../default/xui/en/menu_conversation_log_gear.xml   |   0
 .../default/xui/en/menu_conversation_log_view.xml   |   0
 indra/newview/skins/default/xui/en/menu_edit.xml    |   0
 .../newview/skins/default/xui/en/menu_favorites.xml |   0
 .../skins/default/xui/en/menu_gesture_gear.xml      |   0
 .../skins/default/xui/en/menu_group_plus.xml        |   0
 .../skins/default/xui/en/menu_hide_navbar.xml       |   0
 .../skins/default/xui/en/menu_im_conversation.xml   |   0
 .../default/xui/en/menu_im_session_showmodes.xml    |   0
 .../skins/default/xui/en/menu_imchiclet_adhoc.xml   |   0
 .../skins/default/xui/en/menu_imchiclet_group.xml   |   0
 .../skins/default/xui/en/menu_imchiclet_p2p.xml     |   0
 .../default/xui/en/menu_inspect_object_gear.xml     |   0
 .../skins/default/xui/en/menu_inv_offer_chiclet.xml |   0
 .../newview/skins/default/xui/en/menu_inventory.xml |   0
 .../skins/default/xui/en/menu_inventory_add.xml     |   0
 .../default/xui/en/menu_inventory_gear_default.xml  |   0
 indra/newview/skins/default/xui/en/menu_land.xml    |   0
 .../newview/skins/default/xui/en/menu_landmark.xml  |   0
 indra/newview/skins/default/xui/en/menu_login.xml   |   0
 .../skins/default/xui/en/menu_media_ctrl.xml        |   0
 .../newview/skins/default/xui/en/menu_mini_map.xml  |   0
 .../xui/en/menu_model_import_gear_default.xml       |   0
 indra/newview/skins/default/xui/en/menu_navbar.xml  |   0
 .../skins/default/xui/en/menu_nearby_chat.xml       |   0
 .../xui/en/menu_notification_well_button.xml        |   0
 indra/newview/skins/default/xui/en/menu_object.xml  |   0
 .../skins/default/xui/en/menu_object_icon.xml       |   0
 .../skins/default/xui/en/menu_outfit_gear.xml       |   0
 .../skins/default/xui/en/menu_outfit_tab.xml        |   0
 .../skins/default/xui/en/menu_participant_list.xml  |   0
 .../skins/default/xui/en/menu_participant_view.xml  |   0
 .../default/xui/en/menu_people_blocked_gear.xml     |   0
 .../default/xui/en/menu_people_blocked_plus.xml     |   0
 .../default/xui/en/menu_people_blocked_view.xml     |   0
 .../default/xui/en/menu_people_friends_view.xml     |   0
 .../skins/default/xui/en/menu_people_groups.xml     |   0
 .../default/xui/en/menu_people_groups_view.xml      |   0
 .../skins/default/xui/en/menu_people_nearby.xml     |   0
 .../xui/en/menu_people_nearby_multiselect.xml       |   0
 .../default/xui/en/menu_people_nearby_view.xml      |   0
 .../default/xui/en/menu_people_recent_view.xml      |   0
 indra/newview/skins/default/xui/en/menu_picks.xml   |   0
 .../skins/default/xui/en/menu_picks_plus.xml        |   0
 indra/newview/skins/default/xui/en/menu_place.xml   |   0
 .../skins/default/xui/en/menu_place_add_button.xml  |   0
 .../default/xui/en/menu_places_gear_folder.xml      |   0
 .../default/xui/en/menu_places_gear_landmark.xml    |   0
 .../skins/default/xui/en/menu_profile_overflow.xml  |   0
 .../skins/default/xui/en/menu_save_outfit.xml       |   0
 .../skins/default/xui/en/menu_script_chiclet.xml    |   0
 indra/newview/skins/default/xui/en/menu_slurl.xml   |   0
 .../default/xui/en/menu_teleport_history_gear.xml   |   0
 .../default/xui/en/menu_teleport_history_item.xml   |   0
 .../default/xui/en/menu_teleport_history_tab.xml    |   0
 .../skins/default/xui/en/menu_text_editor.xml       |   0
 .../newview/skins/default/xui/en/menu_toolbars.xml  |   0
 .../skins/default/xui/en/menu_topinfobar.xml        |   0
 .../newview/skins/default/xui/en/menu_url_agent.xml |   0
 .../newview/skins/default/xui/en/menu_url_group.xml |   0
 .../newview/skins/default/xui/en/menu_url_http.xml  |   0
 .../skins/default/xui/en/menu_url_inventory.xml     |   0
 indra/newview/skins/default/xui/en/menu_url_map.xml |   0
 .../skins/default/xui/en/menu_url_objectim.xml      |   0
 .../skins/default/xui/en/menu_url_parcel.xml        |   0
 .../newview/skins/default/xui/en/menu_url_slapp.xml |   0
 .../newview/skins/default/xui/en/menu_url_slurl.xml |   0
 .../skins/default/xui/en/menu_url_teleport.xml      |   0
 indra/newview/skins/default/xui/en/menu_viewer.xml  |   0
 .../default/xui/en/menu_wearable_list_item.xml      |   0
 .../skins/default/xui/en/menu_wearing_gear.xml      |   0
 .../skins/default/xui/en/menu_wearing_tab.xml       |   0
 indra/newview/skins/default/xui/en/mime_types.xml   |   0
 .../skins/default/xui/en/mime_types_linux.xml       |   0
 .../newview/skins/default/xui/en/mime_types_mac.xml |   0
 .../default/xui/en/notification_visibility.xml      |   0
 .../newview/skins/default/xui/en/notifications.xml  |   0
 .../skins/default/xui/en/outfit_accordion_tab.xml   |   0
 .../default/xui/en/panel_active_object_row.xml      |   0
 .../skins/default/xui/en/panel_avatar_list_item.xml |   0
 .../skins/default/xui/en/panel_avatar_tag.xml       |   0
 .../default/xui/en/panel_block_list_sidetray.xml    |   0
 .../default/xui/en/panel_blocked_list_item.xml      |   0
 .../default/xui/en/panel_body_parts_list_item.xml   |   0
 .../xui/en/panel_bodyparts_list_button_bar.xml      |   0
 .../skins/default/xui/en/panel_bottomtray_lite.xml  |   0
 .../skins/default/xui/en/panel_chat_header.xml      |   0
 .../skins/default/xui/en/panel_chat_item.xml        |   0
 .../skins/default/xui/en/panel_chat_separator.xml   |   0
 .../skins/default/xui/en/panel_chiclet_bar.xml      |   0
 .../skins/default/xui/en/panel_classified_info.xml  |   0
 .../default/xui/en/panel_classifieds_list_item.xml  |   0
 .../xui/en/panel_clothing_list_button_bar.xml       |   0
 .../default/xui/en/panel_clothing_list_item.xml     |   0
 .../skins/default/xui/en/panel_cof_wearables.xml    |   0
 .../default/xui/en/panel_conversation_list_item.xml |   0
 .../xui/en/panel_conversation_log_list_item.xml     |   0
 .../xui/en/panel_deletable_wearable_list_item.xml   |   0
 .../xui/en/panel_dummy_clothing_list_item.xml       |   0
 .../skins/default/xui/en/panel_edit_alpha.xml       |   0
 .../skins/default/xui/en/panel_edit_classified.xml  |   0
 .../skins/default/xui/en/panel_edit_eyes.xml        |   0
 .../skins/default/xui/en/panel_edit_gloves.xml      |   0
 .../skins/default/xui/en/panel_edit_hair.xml        |   0
 .../skins/default/xui/en/panel_edit_jacket.xml      |   0
 .../skins/default/xui/en/panel_edit_pants.xml       |   0
 .../skins/default/xui/en/panel_edit_physics.xml     |   0
 .../skins/default/xui/en/panel_edit_pick.xml        |   0
 .../skins/default/xui/en/panel_edit_profile.xml     |   0
 .../skins/default/xui/en/panel_edit_shape.xml       |   0
 .../skins/default/xui/en/panel_edit_shirt.xml       |   0
 .../skins/default/xui/en/panel_edit_shoes.xml       |   0
 .../skins/default/xui/en/panel_edit_skin.xml        |   0
 .../skins/default/xui/en/panel_edit_skirt.xml       |   0
 .../skins/default/xui/en/panel_edit_socks.xml       |   0
 .../skins/default/xui/en/panel_edit_tattoo.xml      |   0
 .../skins/default/xui/en/panel_edit_underpants.xml  |   0
 .../skins/default/xui/en/panel_edit_undershirt.xml  |   0
 .../skins/default/xui/en/panel_edit_wearable.xml    |   0
 .../skins/default/xui/en/panel_generic_tip.xml      |   0
 .../skins/default/xui/en/panel_group_general.xml    |   0
 .../default/xui/en/panel_group_info_sidetray.xml    |   0
 .../skins/default/xui/en/panel_group_invite.xml     |   0
 .../skins/default/xui/en/panel_group_land_money.xml |   0
 .../skins/default/xui/en/panel_group_list_item.xml  |   0
 .../skins/default/xui/en/panel_group_notices.xml    |   0
 .../skins/default/xui/en/panel_group_notify.xml     |   0
 .../skins/default/xui/en/panel_group_roles.xml      |   0
 indra/newview/skins/default/xui/en/panel_hint.xml   |   0
 .../skins/default/xui/en/panel_hint_image.xml       |   0
 indra/newview/skins/default/xui/en/panel_hud.xml    |   0
 .../skins/default/xui/en/panel_inbox_inventory.xml  |   0
 .../skins/default/xui/en/panel_instant_message.xml  |   0
 .../skins/default/xui/en/panel_inventory_item.xml   |   0
 .../skins/default/xui/en/panel_landmark_info.xml    |   0
 .../skins/default/xui/en/panel_landmarks.xml        |   0
 indra/newview/skins/default/xui/en/panel_login.xml  |   0
 .../skins/default/xui/en/panel_main_inventory.xml   |   0
 indra/newview/skins/default/xui/en/panel_me.xml     |   0
 .../default/xui/en/panel_media_settings_general.xml |   0
 .../xui/en/panel_media_settings_permissions.xml     |   0
 .../xui/en/panel_media_settings_security.xml        |   0
 .../skins/default/xui/en/panel_navigation_bar.xml   |   0
 .../skins/default/xui/en/panel_nearby_chat.xml      |   0
 .../skins/default/xui/en/panel_nearby_chat_bar.xml  |   0
 .../skins/default/xui/en/panel_nearby_media.xml     |   0
 .../skins/default/xui/en/panel_notification.xml     |   0
 .../default/xui/en/panel_notifications_channel.xml  |   0
 .../skins/default/xui/en/panel_notify_textbox.xml   |   0
 .../default/xui/en/panel_online_status_toast.xml    |   0
 .../skins/default/xui/en/panel_outbox_inventory.xml |   0
 .../skins/default/xui/en/panel_outfit_edit.xml      |   0
 .../default/xui/en/panel_outfits_inventory.xml      |   0
 .../xui/en/panel_outfits_inventory_gear_default.xml |   0
 .../skins/default/xui/en/panel_outfits_list.xml     |   0
 .../skins/default/xui/en/panel_outfits_wearing.xml  |   0
 indra/newview/skins/default/xui/en/panel_people.xml |   0
 .../skins/default/xui/en/panel_pick_info.xml        |   0
 .../skins/default/xui/en/panel_pick_list_item.xml   |   0
 indra/newview/skins/default/xui/en/panel_picks.xml  |   0
 .../skins/default/xui/en/panel_place_profile.xml    |   0
 indra/newview/skins/default/xui/en/panel_places.xml |   0
 .../skins/default/xui/en/panel_postcard_message.xml |   0
 .../default/xui/en/panel_postcard_settings.xml      |   0
 .../default/xui/en/panel_preferences_advanced.xml   |   0
 .../default/xui/en/panel_preferences_alerts.xml     |   0
 .../skins/default/xui/en/panel_preferences_chat.xml |   0
 .../default/xui/en/panel_preferences_colors.xml     |   0
 .../default/xui/en/panel_preferences_general.xml    |   0
 .../default/xui/en/panel_preferences_graphics1.xml  |   0
 .../skins/default/xui/en/panel_preferences_move.xml |   0
 .../default/xui/en/panel_preferences_privacy.xml    |   0
 .../default/xui/en/panel_preferences_setup.xml      |   0
 .../default/xui/en/panel_preferences_sound.xml      |   0
 .../default/xui/en/panel_prim_media_controls.xml    |   0
 .../newview/skins/default/xui/en/panel_progress.xml |   0
 .../skins/default/xui/en/panel_region_covenant.xml  |   0
 .../skins/default/xui/en/panel_region_debug.xml     |   0
 .../default/xui/en/panel_region_environment.xml     |   0
 .../skins/default/xui/en/panel_region_estate.xml    |   0
 .../skins/default/xui/en/panel_region_general.xml   |   0
 .../skins/default/xui/en/panel_region_terrain.xml   |   0
 .../skins/default/xui/en/panel_script_ed.xml        |   0
 .../xui/en/panel_script_limits_my_avatar.xml        |   0
 .../xui/en/panel_script_limits_region_memory.xml    |   0
 .../default/xui/en/panel_script_question_toast.xml  |   0
 .../skins/default/xui/en/panel_scrolling_param.xml  |   0
 .../default/xui/en/panel_scrolling_param_base.xml   |   0
 .../default/xui/en/panel_side_tray_tab_caption.xml  |   0
 .../default/xui/en/panel_sidetray_home_tab.xml      |   0
 .../default/xui/en/panel_snapshot_inventory.xml     |   0
 .../skins/default/xui/en/panel_snapshot_local.xml   |   0
 .../skins/default/xui/en/panel_snapshot_options.xml |   0
 .../default/xui/en/panel_snapshot_postcard.xml      |   0
 .../skins/default/xui/en/panel_snapshot_profile.xml |   0
 .../skins/default/xui/en/panel_sound_devices.xml    |   0
 .../default/xui/en/panel_stand_stop_flying.xml      |   0
 .../skins/default/xui/en/panel_status_bar.xml       |   0
 .../skins/default/xui/en/panel_sys_well_item.xml    |   0
 .../skins/default/xui/en/panel_teleport_history.xml |   0
 .../default/xui/en/panel_teleport_history_item.xml  |   0
 indra/newview/skins/default/xui/en/panel_toast.xml  |   0
 .../skins/default/xui/en/panel_toolbar_view.xml     |   0
 .../skins/default/xui/en/panel_topinfo_bar.xml      |   0
 .../skins/default/xui/en/panel_voice_effect.xml     |   0
 .../skins/default/xui/en/panel_volume_pulldown.xml  |   0
 .../skins/default/xui/en/panel_world_map.xml        |   0
 indra/newview/skins/default/xui/en/role_actions.xml |   0
 .../skins/default/xui/en/sidepanel_appearance.xml   |   0
 .../skins/default/xui/en/sidepanel_inventory.xml    |   0
 .../skins/default/xui/en/sidepanel_item_info.xml    |   0
 .../skins/default/xui/en/sidepanel_task_info.xml    |   0
 indra/newview/skins/default/xui/en/strings.xml      |   0
 .../skins/default/xui/en/teleport_strings.xml       |   0
 .../skins/default/xui/en/widgets/accordion.xml      |   0
 .../skins/default/xui/en/widgets/accordion_tab.xml  |   0
 .../skins/default/xui/en/widgets/avatar_icon.xml    |   0
 .../default/xui/en/widgets/avatar_list_item.xml     |   0
 .../newview/skins/default/xui/en/widgets/badge.xml  |   0
 .../default/xui/en/widgets/bodyparts_list_item.xml  |   0
 .../newview/skins/default/xui/en/widgets/button.xml |   0
 .../skins/default/xui/en/widgets/chat_editor.xml    |   0
 .../skins/default/xui/en/widgets/chat_history.xml   |   0
 .../skins/default/xui/en/widgets/check_box.xml      |   0
 .../skins/default/xui/en/widgets/chiclet_offer.xml  |   0
 .../skins/default/xui/en/widgets/chiclet_panel.xml  |   0
 .../skins/default/xui/en/widgets/chiclet_script.xml |   0
 .../default/xui/en/widgets/clothing_list_item.xml   |   0
 .../skins/default/xui/en/widgets/color_swatch.xml   |   0
 .../skins/default/xui/en/widgets/combo_box.xml      |   0
 .../skins/default/xui/en/widgets/context_menu.xml   |   0
 .../xui/en/widgets/conversation_view_session.xml    |   0
 .../xui/en/widgets/deletable_wearable_list_item.xml |   0
 .../skins/default/xui/en/widgets/drop_down.xml      |   0
 .../xui/en/widgets/dummy_clothing_list_item.xml     |   0
 .../default/xui/en/widgets/expandable_text.xml      |   0
 .../skins/default/xui/en/widgets/filter_editor.xml  |   0
 .../skins/default/xui/en/widgets/flat_list_view.xml |   0
 .../skins/default/xui/en/widgets/floater.xml        |   0
 .../skins/default/xui/en/widgets/flyout_button.xml  |   0
 .../default/xui/en/widgets/folder_view_item.xml     |   0
 .../default/xui/en/widgets/gesture_combo_list.xml   |   0
 .../skins/default/xui/en/widgets/group_icon.xml     |   0
 .../skins/default/xui/en/widgets/hint_popup.xml     |   0
 indra/newview/skins/default/xui/en/widgets/icon.xml |   0
 .../xui/en/widgets/inbox_folder_view_folder.xml     |   0
 .../xui/en/widgets/inbox_folder_view_item.xml       |   0
 .../xui/en/widgets/inbox_inventory_panel.xml        |   0
 .../skins/default/xui/en/widgets/inspector.xml      |   0
 .../default/xui/en/widgets/inventory_list_item.xml  |   0
 .../default/xui/en/widgets/inventory_panel.xml      |   0
 .../default/xui/en/widgets/joystick_rotate.xml      |   0
 .../skins/default/xui/en/widgets/layout_stack.xml   |   0
 .../skins/default/xui/en/widgets/line_editor.xml    |   0
 .../skins/default/xui/en/widgets/list_view.xml      |   0
 .../default/xui/en/widgets/loading_indicator.xml    |   0
 .../skins/default/xui/en/widgets/location_input.xml |   0
 indra/newview/skins/default/xui/en/widgets/menu.xml |   0
 .../skins/default/xui/en/widgets/menu_bar.xml       |   0
 .../skins/default/xui/en/widgets/menu_item.xml      |   0
 .../skins/default/xui/en/widgets/menu_item_call.xml |   0
 .../default/xui/en/widgets/menu_item_check.xml      |   0
 .../default/xui/en/widgets/menu_item_separator.xml  |   0
 .../default/xui/en/widgets/menu_item_tear_off.xml   |   0
 .../skins/default/xui/en/widgets/multi_slider.xml   |   0
 .../default/xui/en/widgets/multi_slider_bar.xml     |   0
 .../skins/default/xui/en/widgets/name_editor.xml    |   0
 .../skins/default/xui/en/widgets/name_list.xml      |   0
 .../skins/default/xui/en/widgets/output_monitor.xml |   0
 .../newview/skins/default/xui/en/widgets/panel.xml  |   0
 .../default/xui/en/widgets/panel_camera_item.xml    |   0
 .../skins/default/xui/en/widgets/progress_bar.xml   |   0
 .../skins/default/xui/en/widgets/radio_group.xml    |   0
 .../skins/default/xui/en/widgets/radio_item.xml     |   0
 .../skins/default/xui/en/widgets/scroll_bar.xml     |   0
 .../default/xui/en/widgets/scroll_column_header.xml |   0
 .../default/xui/en/widgets/scroll_container.xml     |   0
 .../skins/default/xui/en/widgets/scroll_list.xml    |   0
 .../default/xui/en/widgets/scrolling_panel_list.xml |   0
 .../default/xui/en/widgets/search_combo_box.xml     |   0
 .../skins/default/xui/en/widgets/search_editor.xml  |   0
 .../skins/default/xui/en/widgets/side_tray.xml      |   0
 .../skins/default/xui/en/widgets/sidetray_tab.xml   |   0
 .../default/xui/en/widgets/simple_text_editor.xml   |   0
 .../newview/skins/default/xui/en/widgets/slider.xml |   0
 .../skins/default/xui/en/widgets/slider_bar.xml     |   0
 .../skins/default/xui/en/widgets/spinner.xml        |   0
 .../skins/default/xui/en/widgets/split_button.xml   |   0
 .../skins/default/xui/en/widgets/tab_container.xml  |   0
 .../skins/default/xui/en/widgets/talk_button.xml    |   0
 .../xui/en/widgets/teleport_history_menu_item.xml   |   0
 indra/newview/skins/default/xui/en/widgets/text.xml |   0
 .../skins/default/xui/en/widgets/text_editor.xml    |   0
 .../skins/default/xui/en/widgets/textbase.xml       |   0
 .../skins/default/xui/en/widgets/texture_picker.xml |   0
 indra/newview/skins/default/xui/en/widgets/time.xml |   0
 .../default/xui/en/widgets/toggleable_menu.xml      |   0
 .../skins/default/xui/en/widgets/tool_tip.xml       |   0
 .../skins/default/xui/en/widgets/toolbar.xml        |   0
 .../skins/default/xui/en/widgets/ui_ctrl.xml        |   0
 .../skins/default/xui/en/widgets/view_border.xml    |   0
 .../skins/default/xui/en/widgets/web_browser.xml    |   0
 .../skins/default/xui/en/widgets/window_shade.xml   |   0
 indra/newview/skins/default/xui/en/xui_version.xml  |   0
 .../newview/skins/default/xui/es/floater_about.xml  |   0
 .../skins/default/xui/es/floater_about_land.xml     |   0
 .../skins/default/xui/es/floater_activeim.xml       |   0
 .../skins/default/xui/es/floater_auction.xml        |   0
 .../skins/default/xui/es/floater_autoreplace.xml    |   0
 .../newview/skins/default/xui/es/floater_avatar.xml |   0
 .../skins/default/xui/es/floater_avatar_picker.xml  |   0
 .../default/xui/es/floater_avatar_textures.xml      |   0
 .../skins/default/xui/es/floater_beacons.xml        |   0
 .../skins/default/xui/es/floater_build_options.xml  |   0
 .../skins/default/xui/es/floater_bulk_perms.xml     |   0
 .../newview/skins/default/xui/es/floater_bumps.xml  |   0
 .../skins/default/xui/es/floater_buy_contents.xml   |   0
 .../skins/default/xui/es/floater_buy_currency.xml   |   0
 .../default/xui/es/floater_buy_currency_html.xml    |   0
 .../skins/default/xui/es/floater_buy_land.xml       |   0
 .../skins/default/xui/es/floater_buy_object.xml     |   0
 .../newview/skins/default/xui/es/floater_camera.xml |   0
 .../skins/default/xui/es/floater_chat_bar.xml       |   0
 .../skins/default/xui/es/floater_choose_group.xml   |   0
 .../skins/default/xui/es/floater_color_picker.xml   |   0
 .../skins/default/xui/es/floater_critical.xml       |   0
 .../default/xui/es/floater_delete_env_preset.xml    |   0
 .../skins/default/xui/es/floater_destinations.xml   |   0
 .../skins/default/xui/es/floater_display_name.xml   |   0
 .../skins/default/xui/es/floater_edit_day_cycle.xml |   0
 .../default/xui/es/floater_edit_sky_preset.xml      |   0
 .../default/xui/es/floater_edit_water_preset.xml    |   0
 .../default/xui/es/floater_environment_settings.xml |   0
 .../newview/skins/default/xui/es/floater_event.xml  |   0
 .../skins/default/xui/es/floater_fast_timers.xml    |   0
 .../skins/default/xui/es/floater_font_test.xml      |   0
 .../skins/default/xui/es/floater_gesture.xml        |   0
 .../skins/default/xui/es/floater_god_tools.xml      |   0
 .../default/xui/es/floater_hardware_settings.xml    |   0
 .../skins/default/xui/es/floater_help_browser.xml   |   0
 .../newview/skins/default/xui/es/floater_how_to.xml |   0
 indra/newview/skins/default/xui/es/floater_hud.xml  |   0
 .../skins/default/xui/es/floater_im_container.xml   |   0
 .../skins/default/xui/es/floater_im_session.xml     |   0
 .../skins/default/xui/es/floater_image_preview.xml  |   0
 .../skins/default/xui/es/floater_import_collada.xml |   0
 .../skins/default/xui/es/floater_incoming_call.xml  |   0
 .../skins/default/xui/es/floater_inspect.xml        |   0
 .../xui/es/floater_inventory_item_properties.xml    |   0
 .../xui/es/floater_inventory_view_finder.xml        |   0
 .../skins/default/xui/es/floater_joystick.xml       |   0
 .../skins/default/xui/es/floater_lagmeter.xml       |   0
 .../skins/default/xui/es/floater_land_holdings.xml  |   0
 .../skins/default/xui/es/floater_live_lsleditor.xml |   0
 .../skins/default/xui/es/floater_lsl_guide.xml      |   0
 indra/newview/skins/default/xui/es/floater_map.xml  |   0
 .../skins/default/xui/es/floater_media_browser.xml  |   0
 .../skins/default/xui/es/floater_media_settings.xml |   0
 .../skins/default/xui/es/floater_mem_leaking.xml    |   0
 .../default/xui/es/floater_merchant_outbox.xml      |   0
 .../skins/default/xui/es/floater_model_preview.xml  |   0
 .../skins/default/xui/es/floater_moveview.xml       |   0
 .../skins/default/xui/es/floater_mute_object.xml    |   0
 .../skins/default/xui/es/floater_my_appearance.xml  |   0
 .../skins/default/xui/es/floater_my_inventory.xml   |   0
 .../skins/default/xui/es/floater_object_weights.xml |   0
 .../skins/default/xui/es/floater_openobject.xml     |   0
 .../skins/default/xui/es/floater_outfit_save_as.xml |   0
 .../skins/default/xui/es/floater_outgoing_call.xml  |   0
 .../xui/es/floater_pathfinding_characters.xml       |   0
 .../default/xui/es/floater_pathfinding_console.xml  |   0
 .../default/xui/es/floater_pathfinding_linksets.xml |   0
 indra/newview/skins/default/xui/es/floater_pay.xml  |   0
 .../skins/default/xui/es/floater_pay_object.xml     |   0
 .../newview/skins/default/xui/es/floater_people.xml |   0
 .../skins/default/xui/es/floater_perm_prefs.xml     |   0
 .../newview/skins/default/xui/es/floater_picks.xml  |   0
 .../newview/skins/default/xui/es/floater_places.xml |   0
 .../skins/default/xui/es/floater_post_process.xml   |   0
 .../skins/default/xui/es/floater_preferences.xml    |   0
 .../default/xui/es/floater_preferences_proxy.xml    |   0
 .../default/xui/es/floater_preview_animation.xml    |   0
 .../default/xui/es/floater_preview_gesture.xml      |   0
 .../default/xui/es/floater_preview_notecard.xml     |   0
 .../skins/default/xui/es/floater_preview_sound.xml  |   0
 .../default/xui/es/floater_preview_texture.xml      |   0
 .../default/xui/es/floater_price_for_listing.xml    |   0
 .../default/xui/es/floater_publish_classified.xml   |   0
 .../default/xui/es/floater_region_debug_console.xml |   0
 .../skins/default/xui/es/floater_region_info.xml    |   0
 .../skins/default/xui/es/floater_report_abuse.xml   |   0
 .../skins/default/xui/es/floater_script_debug.xml   |   0
 .../default/xui/es/floater_script_debug_panel.xml   |   0
 .../skins/default/xui/es/floater_script_limits.xml  |   0
 .../skins/default/xui/es/floater_script_preview.xml |   0
 .../skins/default/xui/es/floater_script_queue.xml   |   0
 .../skins/default/xui/es/floater_script_search.xml  |   0
 .../newview/skins/default/xui/es/floater_search.xml |   0
 .../skins/default/xui/es/floater_select_key.xml     |   0
 .../skins/default/xui/es/floater_sell_land.xml      |   0
 .../skins/default/xui/es/floater_settings_debug.xml |   0
 .../skins/default/xui/es/floater_snapshot.xml       |   0
 .../skins/default/xui/es/floater_sound_devices.xml  |   0
 .../skins/default/xui/es/floater_sound_preview.xml  |   0
 .../skins/default/xui/es/floater_spellcheck.xml     |   0
 .../default/xui/es/floater_spellcheck_import.xml    |   0
 .../newview/skins/default/xui/es/floater_stats.xml  |   0
 .../skins/default/xui/es/floater_sys_well.xml       |   0
 .../skins/default/xui/es/floater_telehub.xml        |   0
 .../default/xui/es/floater_test_layout_stacks.xml   |   0
 .../skins/default/xui/es/floater_texture_ctrl.xml   |   0
 .../xui/es/floater_texture_fetch_debugger.xml       |   0
 .../newview/skins/default/xui/es/floater_tools.xml  |   0
 .../skins/default/xui/es/floater_top_objects.xml    |   0
 indra/newview/skins/default/xui/es/floater_tos.xml  |   0
 .../newview/skins/default/xui/es/floater_toybox.xml |   0
 .../default/xui/es/floater_translation_settings.xml |   0
 .../skins/default/xui/es/floater_url_entry.xml      |   0
 .../skins/default/xui/es/floater_voice_controls.xml |   0
 .../skins/default/xui/es/floater_voice_effect.xml   |   0
 .../skins/default/xui/es/floater_web_content.xml    |   0
 .../default/xui/es/floater_whitelist_entry.xml      |   0
 .../skins/default/xui/es/floater_window_size.xml    |   0
 .../skins/default/xui/es/floater_world_map.xml      |   0
 .../newview/skins/default/xui/es/inspect_avatar.xml |   0
 .../newview/skins/default/xui/es/inspect_group.xml  |   0
 .../newview/skins/default/xui/es/inspect_object.xml |   0
 .../skins/default/xui/es/inspect_remote_object.xml  |   0
 .../skins/default/xui/es/language_settings.xml      |   0
 .../skins/default/xui/es/menu_add_wearable_gear.xml |   0
 .../skins/default/xui/es/menu_attachment_other.xml  |   0
 .../skins/default/xui/es/menu_attachment_self.xml   |   0
 .../skins/default/xui/es/menu_avatar_icon.xml       |   0
 .../skins/default/xui/es/menu_avatar_other.xml      |   0
 .../skins/default/xui/es/menu_avatar_self.xml       |   0
 .../skins/default/xui/es/menu_cof_attachment.xml    |   0
 .../skins/default/xui/es/menu_cof_body_part.xml     |   0
 .../skins/default/xui/es/menu_cof_clothing.xml      |   0
 .../newview/skins/default/xui/es/menu_cof_gear.xml  |   0
 indra/newview/skins/default/xui/es/menu_edit.xml    |   0
 .../newview/skins/default/xui/es/menu_favorites.xml |   0
 .../skins/default/xui/es/menu_gesture_gear.xml      |   0
 .../skins/default/xui/es/menu_group_plus.xml        |   0
 .../skins/default/xui/es/menu_hide_navbar.xml       |   0
 .../skins/default/xui/es/menu_imchiclet_adhoc.xml   |   0
 .../skins/default/xui/es/menu_imchiclet_group.xml   |   0
 .../skins/default/xui/es/menu_imchiclet_p2p.xml     |   0
 .../default/xui/es/menu_inspect_avatar_gear.xml     |   0
 .../default/xui/es/menu_inspect_object_gear.xml     |   0
 .../skins/default/xui/es/menu_inspect_self_gear.xml |   0
 .../skins/default/xui/es/menu_inv_offer_chiclet.xml |   0
 .../newview/skins/default/xui/es/menu_inventory.xml |   0
 .../skins/default/xui/es/menu_inventory_add.xml     |   0
 .../default/xui/es/menu_inventory_gear_default.xml  |   0
 indra/newview/skins/default/xui/es/menu_land.xml    |   0
 .../newview/skins/default/xui/es/menu_landmark.xml  |   0
 indra/newview/skins/default/xui/es/menu_login.xml   |   0
 .../skins/default/xui/es/menu_media_ctrl.xml        |   0
 .../newview/skins/default/xui/es/menu_mini_map.xml  |   0
 .../xui/es/menu_model_import_gear_default.xml       |   0
 indra/newview/skins/default/xui/es/menu_navbar.xml  |   0
 .../skins/default/xui/es/menu_nearby_chat.xml       |   0
 .../xui/es/menu_notification_well_button.xml        |   0
 indra/newview/skins/default/xui/es/menu_object.xml  |   0
 .../skins/default/xui/es/menu_object_icon.xml       |   0
 .../skins/default/xui/es/menu_outfit_gear.xml       |   0
 .../skins/default/xui/es/menu_outfit_tab.xml        |   0
 .../skins/default/xui/es/menu_participant_list.xml  |   0
 .../xui/es/menu_people_friends_view_sort.xml        |   0
 .../skins/default/xui/es/menu_people_groups.xml     |   0
 .../default/xui/es/menu_people_groups_view_sort.xml |   0
 .../skins/default/xui/es/menu_people_nearby.xml     |   0
 .../xui/es/menu_people_nearby_multiselect.xml       |   0
 .../default/xui/es/menu_people_nearby_view_sort.xml |   0
 .../default/xui/es/menu_people_recent_view_sort.xml |   0
 indra/newview/skins/default/xui/es/menu_picks.xml   |   0
 .../skins/default/xui/es/menu_picks_plus.xml        |   0
 indra/newview/skins/default/xui/es/menu_place.xml   |   0
 .../skins/default/xui/es/menu_place_add_button.xml  |   0
 .../default/xui/es/menu_places_gear_folder.xml      |   0
 .../default/xui/es/menu_places_gear_landmark.xml    |   0
 .../skins/default/xui/es/menu_profile_overflow.xml  |   0
 .../skins/default/xui/es/menu_save_outfit.xml       |   0
 .../skins/default/xui/es/menu_script_chiclet.xml    |   0
 indra/newview/skins/default/xui/es/menu_slurl.xml   |   0
 .../default/xui/es/menu_teleport_history_gear.xml   |   0
 .../default/xui/es/menu_teleport_history_item.xml   |   0
 .../default/xui/es/menu_teleport_history_tab.xml    |   0
 .../skins/default/xui/es/menu_text_editor.xml       |   0
 .../newview/skins/default/xui/es/menu_toolbars.xml  |   0
 .../skins/default/xui/es/menu_topinfobar.xml        |   0
 .../newview/skins/default/xui/es/menu_url_agent.xml |   0
 .../newview/skins/default/xui/es/menu_url_group.xml |   0
 .../newview/skins/default/xui/es/menu_url_http.xml  |   0
 .../skins/default/xui/es/menu_url_inventory.xml     |   0
 indra/newview/skins/default/xui/es/menu_url_map.xml |   0
 .../skins/default/xui/es/menu_url_objectim.xml      |   0
 .../skins/default/xui/es/menu_url_parcel.xml        |   0
 .../newview/skins/default/xui/es/menu_url_slapp.xml |   0
 .../newview/skins/default/xui/es/menu_url_slurl.xml |   0
 .../skins/default/xui/es/menu_url_teleport.xml      |   0
 indra/newview/skins/default/xui/es/menu_viewer.xml  |   0
 .../default/xui/es/menu_wearable_list_item.xml      |   0
 .../skins/default/xui/es/menu_wearing_gear.xml      |   0
 .../skins/default/xui/es/menu_wearing_tab.xml       |   0
 indra/newview/skins/default/xui/es/mime_types.xml   |   0
 .../skins/default/xui/es/mime_types_linux.xml       |   0
 .../newview/skins/default/xui/es/mime_types_mac.xml |   0
 .../newview/skins/default/xui/es/notifications.xml  |   0
 .../skins/default/xui/es/outfit_accordion_tab.xml   |   0
 .../default/xui/es/panel_active_object_row.xml      |   0
 .../default/xui/es/panel_adhoc_control_panel.xml    |   0
 .../skins/default/xui/es/panel_avatar_list_item.xml |   0
 .../default/xui/es/panel_block_list_sidetray.xml    |   0
 .../default/xui/es/panel_body_parts_list_item.xml   |   0
 .../xui/es/panel_bodyparts_list_button_bar.xml      |   0
 .../skins/default/xui/es/panel_bottomtray_lite.xml  |   0
 .../skins/default/xui/es/panel_chiclet_bar.xml      |   0
 .../skins/default/xui/es/panel_classified_info.xml  |   0
 .../xui/es/panel_clothing_list_button_bar.xml       |   0
 .../default/xui/es/panel_clothing_list_item.xml     |   0
 .../skins/default/xui/es/panel_cof_wearables.xml    |   0
 .../xui/es/panel_deletable_wearable_list_item.xml   |   0
 .../xui/es/panel_dummy_clothing_list_item.xml       |   0
 .../skins/default/xui/es/panel_edit_alpha.xml       |   0
 .../skins/default/xui/es/panel_edit_classified.xml  |   0
 .../skins/default/xui/es/panel_edit_eyes.xml        |   0
 .../skins/default/xui/es/panel_edit_gloves.xml      |   0
 .../skins/default/xui/es/panel_edit_hair.xml        |   0
 .../skins/default/xui/es/panel_edit_jacket.xml      |   0
 .../skins/default/xui/es/panel_edit_pants.xml       |   0
 .../skins/default/xui/es/panel_edit_physics.xml     |   0
 .../skins/default/xui/es/panel_edit_pick.xml        |   0
 .../skins/default/xui/es/panel_edit_profile.xml     |   0
 .../skins/default/xui/es/panel_edit_shape.xml       |   0
 .../skins/default/xui/es/panel_edit_shirt.xml       |   0
 .../skins/default/xui/es/panel_edit_shoes.xml       |   0
 .../skins/default/xui/es/panel_edit_skin.xml        |   0
 .../skins/default/xui/es/panel_edit_skirt.xml       |   0
 .../skins/default/xui/es/panel_edit_socks.xml       |   0
 .../skins/default/xui/es/panel_edit_tattoo.xml      |   0
 .../skins/default/xui/es/panel_edit_underpants.xml  |   0
 .../skins/default/xui/es/panel_edit_undershirt.xml  |   0
 .../skins/default/xui/es/panel_edit_wearable.xml    |   0
 .../default/xui/es/panel_group_control_panel.xml    |   0
 .../skins/default/xui/es/panel_group_general.xml    |   0
 .../default/xui/es/panel_group_info_sidetray.xml    |   0
 .../skins/default/xui/es/panel_group_invite.xml     |   0
 .../skins/default/xui/es/panel_group_land_money.xml |   0
 .../skins/default/xui/es/panel_group_list_item.xml  |   0
 .../skins/default/xui/es/panel_group_notices.xml    |   0
 .../skins/default/xui/es/panel_group_notify.xml     |   0
 .../skins/default/xui/es/panel_group_roles.xml      |   0
 .../skins/default/xui/es/panel_im_control_panel.xml |   0
 .../skins/default/xui/es/panel_inventory_item.xml   |   0
 .../skins/default/xui/es/panel_landmark_info.xml    |   0
 .../skins/default/xui/es/panel_landmarks.xml        |   0
 indra/newview/skins/default/xui/es/panel_login.xml  |   0
 .../skins/default/xui/es/panel_main_inventory.xml   |   0
 indra/newview/skins/default/xui/es/panel_me.xml     |   0
 .../default/xui/es/panel_media_settings_general.xml |   0
 .../xui/es/panel_media_settings_permissions.xml     |   0
 .../xui/es/panel_media_settings_security.xml        |   0
 .../skins/default/xui/es/panel_navigation_bar.xml   |   0
 .../skins/default/xui/es/panel_nearby_chat.xml      |   0
 .../skins/default/xui/es/panel_nearby_chat_bar.xml  |   0
 .../skins/default/xui/es/panel_nearby_media.xml     |   0
 .../skins/default/xui/es/panel_notify_textbox.xml   |   0
 .../default/xui/es/panel_online_status_toast.xml    |   0
 .../skins/default/xui/es/panel_outbox_inventory.xml |   0
 .../skins/default/xui/es/panel_outfit_edit.xml      |   0
 .../default/xui/es/panel_outfits_inventory.xml      |   0
 .../xui/es/panel_outfits_inventory_gear_default.xml |   0
 .../skins/default/xui/es/panel_outfits_list.xml     |   0
 .../skins/default/xui/es/panel_outfits_wearing.xml  |   0
 indra/newview/skins/default/xui/es/panel_people.xml |   0
 .../skins/default/xui/es/panel_pick_info.xml        |   0
 indra/newview/skins/default/xui/es/panel_picks.xml  |   0
 .../skins/default/xui/es/panel_place_profile.xml    |   0
 indra/newview/skins/default/xui/es/panel_places.xml |   0
 .../skins/default/xui/es/panel_postcard_message.xml |   0
 .../default/xui/es/panel_postcard_settings.xml      |   0
 .../default/xui/es/panel_preferences_advanced.xml   |   0
 .../default/xui/es/panel_preferences_alerts.xml     |   0
 .../skins/default/xui/es/panel_preferences_chat.xml |   0
 .../default/xui/es/panel_preferences_colors.xml     |   0
 .../default/xui/es/panel_preferences_general.xml    |   0
 .../default/xui/es/panel_preferences_graphics1.xml  |   0
 .../skins/default/xui/es/panel_preferences_move.xml |   0
 .../default/xui/es/panel_preferences_privacy.xml    |   0
 .../default/xui/es/panel_preferences_setup.xml      |   0
 .../default/xui/es/panel_preferences_sound.xml      |   0
 .../default/xui/es/panel_prim_media_controls.xml    |   0
 .../skins/default/xui/es/panel_region_covenant.xml  |   0
 .../skins/default/xui/es/panel_region_debug.xml     |   0
 .../default/xui/es/panel_region_environment.xml     |   0
 .../skins/default/xui/es/panel_region_estate.xml    |   0
 .../skins/default/xui/es/panel_region_general.xml   |   0
 .../skins/default/xui/es/panel_region_terrain.xml   |   0
 .../skins/default/xui/es/panel_script_ed.xml        |   0
 .../xui/es/panel_script_limits_my_avatar.xml        |   0
 .../xui/es/panel_script_limits_region_memory.xml    |   0
 .../default/xui/es/panel_script_question_toast.xml  |   0
 .../skins/default/xui/es/panel_scrolling_param.xml  |   0
 .../default/xui/es/panel_scrolling_param_base.xml   |   0
 .../default/xui/es/panel_side_tray_tab_caption.xml  |   0
 .../default/xui/es/panel_snapshot_inventory.xml     |   0
 .../skins/default/xui/es/panel_snapshot_local.xml   |   0
 .../skins/default/xui/es/panel_snapshot_options.xml |   0
 .../default/xui/es/panel_snapshot_postcard.xml      |   0
 .../skins/default/xui/es/panel_snapshot_profile.xml |   0
 .../skins/default/xui/es/panel_sound_devices.xml    |   0
 .../default/xui/es/panel_stand_stop_flying.xml      |   0
 .../skins/default/xui/es/panel_status_bar.xml       |   0
 .../skins/default/xui/es/panel_teleport_history.xml |   0
 .../default/xui/es/panel_teleport_history_item.xml  |   0
 .../skins/default/xui/es/panel_voice_effect.xml     |   0
 .../skins/default/xui/es/panel_volume_pulldown.xml  |   0
 .../skins/default/xui/es/panel_world_map.xml        |   0
 indra/newview/skins/default/xui/es/role_actions.xml |   0
 .../skins/default/xui/es/sidepanel_appearance.xml   |   0
 .../skins/default/xui/es/sidepanel_inventory.xml    |   0
 .../skins/default/xui/es/sidepanel_item_info.xml    |   0
 .../skins/default/xui/es/sidepanel_task_info.xml    |   0
 indra/newview/skins/default/xui/es/strings.xml      |   0
 .../skins/default/xui/es/teleport_strings.xml       |   0
 indra/newview/skins/default/xui/es/xui_version.xml  |   0
 .../newview/skins/default/xui/fr/floater_about.xml  |   0
 .../skins/default/xui/fr/floater_about_land.xml     |   0
 .../skins/default/xui/fr/floater_activeim.xml       |   0
 .../xui/fr/floater_animation_anim_preview.xml       |   0
 .../xui/fr/floater_animation_bvh_preview.xml        |   0
 .../skins/default/xui/fr/floater_auction.xml        |   0
 .../skins/default/xui/fr/floater_autoreplace.xml    |   0
 .../newview/skins/default/xui/fr/floater_avatar.xml |   0
 .../skins/default/xui/fr/floater_avatar_picker.xml  |   0
 .../default/xui/fr/floater_avatar_textures.xml      |   0
 .../skins/default/xui/fr/floater_beacons.xml        |   0
 .../skins/default/xui/fr/floater_build_options.xml  |   0
 .../skins/default/xui/fr/floater_bulk_perms.xml     |   0
 .../newview/skins/default/xui/fr/floater_bumps.xml  |   0
 .../skins/default/xui/fr/floater_buy_contents.xml   |   0
 .../skins/default/xui/fr/floater_buy_currency.xml   |   0
 .../default/xui/fr/floater_buy_currency_html.xml    |   0
 .../skins/default/xui/fr/floater_buy_land.xml       |   0
 .../skins/default/xui/fr/floater_buy_object.xml     |   0
 .../newview/skins/default/xui/fr/floater_camera.xml |   0
 .../skins/default/xui/fr/floater_chat_bar.xml       |   0
 .../skins/default/xui/fr/floater_choose_group.xml   |   0
 .../skins/default/xui/fr/floater_color_picker.xml   |   0
 .../skins/default/xui/fr/floater_critical.xml       |   0
 .../default/xui/fr/floater_delete_env_preset.xml    |   0
 .../skins/default/xui/fr/floater_destinations.xml   |   0
 .../skins/default/xui/fr/floater_display_name.xml   |   0
 .../skins/default/xui/fr/floater_edit_day_cycle.xml |   0
 .../default/xui/fr/floater_edit_sky_preset.xml      |   0
 .../default/xui/fr/floater_edit_water_preset.xml    |   0
 .../default/xui/fr/floater_environment_settings.xml |   0
 .../newview/skins/default/xui/fr/floater_event.xml  |   0
 .../skins/default/xui/fr/floater_fast_timers.xml    |   0
 .../skins/default/xui/fr/floater_font_test.xml      |   0
 .../skins/default/xui/fr/floater_gesture.xml        |   0
 .../skins/default/xui/fr/floater_god_tools.xml      |   0
 .../default/xui/fr/floater_hardware_settings.xml    |   0
 .../skins/default/xui/fr/floater_help_browser.xml   |   0
 .../newview/skins/default/xui/fr/floater_how_to.xml |   0
 indra/newview/skins/default/xui/fr/floater_hud.xml  |   0
 .../skins/default/xui/fr/floater_im_container.xml   |   0
 .../skins/default/xui/fr/floater_im_session.xml     |   0
 .../skins/default/xui/fr/floater_image_preview.xml  |   0
 .../skins/default/xui/fr/floater_import_collada.xml |   0
 .../skins/default/xui/fr/floater_incoming_call.xml  |   0
 .../skins/default/xui/fr/floater_inspect.xml        |   0
 .../xui/fr/floater_inventory_item_properties.xml    |   0
 .../xui/fr/floater_inventory_view_finder.xml        |   0
 .../skins/default/xui/fr/floater_joystick.xml       |   0
 .../skins/default/xui/fr/floater_lagmeter.xml       |   0
 .../skins/default/xui/fr/floater_land_holdings.xml  |   0
 .../skins/default/xui/fr/floater_live_lsleditor.xml |   0
 .../skins/default/xui/fr/floater_lsl_guide.xml      |   0
 indra/newview/skins/default/xui/fr/floater_map.xml  |   0
 .../skins/default/xui/fr/floater_media_browser.xml  |   0
 .../skins/default/xui/fr/floater_media_settings.xml |   0
 .../skins/default/xui/fr/floater_mem_leaking.xml    |   0
 .../default/xui/fr/floater_merchant_outbox.xml      |   0
 .../skins/default/xui/fr/floater_model_preview.xml  |   0
 .../skins/default/xui/fr/floater_moveview.xml       |   0
 .../skins/default/xui/fr/floater_mute_object.xml    |   0
 .../skins/default/xui/fr/floater_my_appearance.xml  |   0
 .../skins/default/xui/fr/floater_my_inventory.xml   |   0
 .../skins/default/xui/fr/floater_notification.xml   |   0
 .../xui/fr/floater_notifications_console.xml        |   0
 .../skins/default/xui/fr/floater_object_weights.xml |   0
 .../skins/default/xui/fr/floater_openobject.xml     |   0
 .../skins/default/xui/fr/floater_outfit_save_as.xml |   0
 .../skins/default/xui/fr/floater_outgoing_call.xml  |   0
 .../xui/fr/floater_pathfinding_characters.xml       |   0
 .../default/xui/fr/floater_pathfinding_console.xml  |   0
 .../default/xui/fr/floater_pathfinding_linksets.xml |   0
 indra/newview/skins/default/xui/fr/floater_pay.xml  |   0
 .../skins/default/xui/fr/floater_pay_object.xml     |   0
 .../newview/skins/default/xui/fr/floater_people.xml |   0
 .../skins/default/xui/fr/floater_perm_prefs.xml     |   0
 .../newview/skins/default/xui/fr/floater_picks.xml  |   0
 .../newview/skins/default/xui/fr/floater_places.xml |   0
 .../skins/default/xui/fr/floater_post_process.xml   |   0
 .../skins/default/xui/fr/floater_preferences.xml    |   0
 .../default/xui/fr/floater_preferences_proxy.xml    |   0
 .../default/xui/fr/floater_preview_animation.xml    |   0
 .../default/xui/fr/floater_preview_gesture.xml      |   0
 .../default/xui/fr/floater_preview_notecard.xml     |   0
 .../skins/default/xui/fr/floater_preview_sound.xml  |   0
 .../default/xui/fr/floater_preview_texture.xml      |   0
 .../default/xui/fr/floater_price_for_listing.xml    |   0
 .../default/xui/fr/floater_publish_classified.xml   |   0
 .../default/xui/fr/floater_region_debug_console.xml |   0
 .../skins/default/xui/fr/floater_region_info.xml    |   0
 .../skins/default/xui/fr/floater_report_abuse.xml   |   0
 .../skins/default/xui/fr/floater_script_debug.xml   |   0
 .../default/xui/fr/floater_script_debug_panel.xml   |   0
 .../skins/default/xui/fr/floater_script_limits.xml  |   0
 .../skins/default/xui/fr/floater_script_preview.xml |   0
 .../skins/default/xui/fr/floater_script_queue.xml   |   0
 .../skins/default/xui/fr/floater_script_search.xml  |   0
 .../newview/skins/default/xui/fr/floater_search.xml |   0
 .../skins/default/xui/fr/floater_select_key.xml     |   0
 .../skins/default/xui/fr/floater_sell_land.xml      |   0
 .../skins/default/xui/fr/floater_settings_debug.xml |   0
 .../skins/default/xui/fr/floater_snapshot.xml       |   0
 .../skins/default/xui/fr/floater_sound_devices.xml  |   0
 .../skins/default/xui/fr/floater_sound_preview.xml  |   0
 .../skins/default/xui/fr/floater_spellcheck.xml     |   0
 .../default/xui/fr/floater_spellcheck_import.xml    |   0
 .../newview/skins/default/xui/fr/floater_stats.xml  |   0
 .../skins/default/xui/fr/floater_sys_well.xml       |   0
 .../skins/default/xui/fr/floater_telehub.xml        |   0
 .../default/xui/fr/floater_test_layout_stacks.xml   |   0
 .../xui/fr/floater_test_text_vertical_aligment.xml  |   0
 .../skins/default/xui/fr/floater_texture_ctrl.xml   |   0
 .../xui/fr/floater_texture_fetch_debugger.xml       |   0
 .../newview/skins/default/xui/fr/floater_tools.xml  |   0
 .../skins/default/xui/fr/floater_top_objects.xml    |   0
 indra/newview/skins/default/xui/fr/floater_tos.xml  |   0
 .../newview/skins/default/xui/fr/floater_toybox.xml |   0
 .../default/xui/fr/floater_translation_settings.xml |   0
 .../skins/default/xui/fr/floater_url_entry.xml      |   0
 .../skins/default/xui/fr/floater_voice_controls.xml |   0
 .../skins/default/xui/fr/floater_voice_effect.xml   |   0
 .../skins/default/xui/fr/floater_web_content.xml    |   0
 .../default/xui/fr/floater_whitelist_entry.xml      |   0
 .../skins/default/xui/fr/floater_window_size.xml    |   0
 .../skins/default/xui/fr/floater_world_map.xml      |   0
 indra/newview/skins/default/xui/fr/fonts.xml        |   0
 .../newview/skins/default/xui/fr/inspect_avatar.xml |   0
 .../newview/skins/default/xui/fr/inspect_group.xml  |   0
 .../newview/skins/default/xui/fr/inspect_object.xml |   0
 .../skins/default/xui/fr/inspect_remote_object.xml  |   0
 .../skins/default/xui/fr/language_settings.xml      |   0
 .../skins/default/xui/fr/menu_add_wearable_gear.xml |   0
 .../skins/default/xui/fr/menu_attachment_other.xml  |   0
 .../skins/default/xui/fr/menu_attachment_self.xml   |   0
 .../skins/default/xui/fr/menu_avatar_icon.xml       |   0
 .../skins/default/xui/fr/menu_avatar_other.xml      |   0
 .../skins/default/xui/fr/menu_avatar_self.xml       |   0
 .../skins/default/xui/fr/menu_cof_attachment.xml    |   0
 .../skins/default/xui/fr/menu_cof_body_part.xml     |   0
 .../skins/default/xui/fr/menu_cof_clothing.xml      |   0
 .../newview/skins/default/xui/fr/menu_cof_gear.xml  |   0
 indra/newview/skins/default/xui/fr/menu_edit.xml    |   0
 .../newview/skins/default/xui/fr/menu_favorites.xml |   0
 .../skins/default/xui/fr/menu_gesture_gear.xml      |   0
 .../skins/default/xui/fr/menu_group_plus.xml        |   0
 .../skins/default/xui/fr/menu_hide_navbar.xml       |   0
 .../skins/default/xui/fr/menu_imchiclet_adhoc.xml   |   0
 .../skins/default/xui/fr/menu_imchiclet_group.xml   |   0
 .../skins/default/xui/fr/menu_imchiclet_p2p.xml     |   0
 .../default/xui/fr/menu_inspect_avatar_gear.xml     |   0
 .../default/xui/fr/menu_inspect_object_gear.xml     |   0
 .../skins/default/xui/fr/menu_inspect_self_gear.xml |   0
 .../skins/default/xui/fr/menu_inv_offer_chiclet.xml |   0
 .../newview/skins/default/xui/fr/menu_inventory.xml |   0
 .../skins/default/xui/fr/menu_inventory_add.xml     |   0
 .../default/xui/fr/menu_inventory_gear_default.xml  |   0
 indra/newview/skins/default/xui/fr/menu_land.xml    |   0
 .../newview/skins/default/xui/fr/menu_landmark.xml  |   0
 indra/newview/skins/default/xui/fr/menu_login.xml   |   0
 .../skins/default/xui/fr/menu_media_ctrl.xml        |   0
 .../newview/skins/default/xui/fr/menu_mini_map.xml  |   0
 .../xui/fr/menu_model_import_gear_default.xml       |   0
 indra/newview/skins/default/xui/fr/menu_navbar.xml  |   0
 .../skins/default/xui/fr/menu_nearby_chat.xml       |   0
 .../xui/fr/menu_notification_well_button.xml        |   0
 indra/newview/skins/default/xui/fr/menu_object.xml  |   0
 .../skins/default/xui/fr/menu_object_icon.xml       |   0
 .../skins/default/xui/fr/menu_outfit_gear.xml       |   0
 .../skins/default/xui/fr/menu_outfit_tab.xml        |   0
 .../skins/default/xui/fr/menu_participant_list.xml  |   0
 .../xui/fr/menu_people_friends_view_sort.xml        |   0
 .../skins/default/xui/fr/menu_people_groups.xml     |   0
 .../default/xui/fr/menu_people_groups_view_sort.xml |   0
 .../skins/default/xui/fr/menu_people_nearby.xml     |   0
 .../xui/fr/menu_people_nearby_multiselect.xml       |   0
 .../default/xui/fr/menu_people_nearby_view_sort.xml |   0
 .../default/xui/fr/menu_people_recent_view_sort.xml |   0
 indra/newview/skins/default/xui/fr/menu_picks.xml   |   0
 .../skins/default/xui/fr/menu_picks_plus.xml        |   0
 indra/newview/skins/default/xui/fr/menu_place.xml   |   0
 .../skins/default/xui/fr/menu_place_add_button.xml  |   0
 .../default/xui/fr/menu_places_gear_folder.xml      |   0
 .../default/xui/fr/menu_places_gear_landmark.xml    |   0
 .../skins/default/xui/fr/menu_profile_overflow.xml  |   0
 .../skins/default/xui/fr/menu_save_outfit.xml       |   0
 .../skins/default/xui/fr/menu_script_chiclet.xml    |   0
 indra/newview/skins/default/xui/fr/menu_slurl.xml   |   0
 .../default/xui/fr/menu_teleport_history_gear.xml   |   0
 .../default/xui/fr/menu_teleport_history_item.xml   |   0
 .../default/xui/fr/menu_teleport_history_tab.xml    |   0
 .../skins/default/xui/fr/menu_text_editor.xml       |   0
 .../newview/skins/default/xui/fr/menu_toolbars.xml  |   0
 .../skins/default/xui/fr/menu_topinfobar.xml        |   0
 .../newview/skins/default/xui/fr/menu_url_agent.xml |   0
 .../newview/skins/default/xui/fr/menu_url_group.xml |   0
 .../newview/skins/default/xui/fr/menu_url_http.xml  |   0
 .../skins/default/xui/fr/menu_url_inventory.xml     |   0
 indra/newview/skins/default/xui/fr/menu_url_map.xml |   0
 .../skins/default/xui/fr/menu_url_objectim.xml      |   0
 .../skins/default/xui/fr/menu_url_parcel.xml        |   0
 .../newview/skins/default/xui/fr/menu_url_slapp.xml |   0
 .../newview/skins/default/xui/fr/menu_url_slurl.xml |   0
 .../skins/default/xui/fr/menu_url_teleport.xml      |   0
 indra/newview/skins/default/xui/fr/menu_viewer.xml  |   0
 .../default/xui/fr/menu_wearable_list_item.xml      |   0
 .../skins/default/xui/fr/menu_wearing_gear.xml      |   0
 .../skins/default/xui/fr/menu_wearing_tab.xml       |   0
 indra/newview/skins/default/xui/fr/mime_types.xml   |   0
 .../skins/default/xui/fr/mime_types_linux.xml       |   0
 .../newview/skins/default/xui/fr/mime_types_mac.xml |   0
 .../newview/skins/default/xui/fr/notifications.xml  |   0
 .../skins/default/xui/fr/outfit_accordion_tab.xml   |   0
 .../default/xui/fr/panel_active_object_row.xml      |   0
 .../default/xui/fr/panel_adhoc_control_panel.xml    |   0
 .../skins/default/xui/fr/panel_avatar_list_item.xml |   0
 .../skins/default/xui/fr/panel_avatar_tag.xml       |   0
 .../default/xui/fr/panel_block_list_sidetray.xml    |   0
 .../default/xui/fr/panel_body_parts_list_item.xml   |   0
 .../xui/fr/panel_bodyparts_list_button_bar.xml      |   0
 .../skins/default/xui/fr/panel_bottomtray_lite.xml  |   0
 .../skins/default/xui/fr/panel_chat_header.xml      |   0
 .../skins/default/xui/fr/panel_chiclet_bar.xml      |   0
 .../skins/default/xui/fr/panel_classified_info.xml  |   0
 .../xui/fr/panel_clothing_list_button_bar.xml       |   0
 .../default/xui/fr/panel_clothing_list_item.xml     |   0
 .../skins/default/xui/fr/panel_cof_wearables.xml    |   0
 .../xui/fr/panel_deletable_wearable_list_item.xml   |   0
 .../xui/fr/panel_dummy_clothing_list_item.xml       |   0
 .../skins/default/xui/fr/panel_edit_alpha.xml       |   0
 .../skins/default/xui/fr/panel_edit_classified.xml  |   0
 .../skins/default/xui/fr/panel_edit_eyes.xml        |   0
 .../skins/default/xui/fr/panel_edit_gloves.xml      |   0
 .../skins/default/xui/fr/panel_edit_hair.xml        |   0
 .../skins/default/xui/fr/panel_edit_jacket.xml      |   0
 .../skins/default/xui/fr/panel_edit_pants.xml       |   0
 .../skins/default/xui/fr/panel_edit_physics.xml     |   0
 .../skins/default/xui/fr/panel_edit_pick.xml        |   0
 .../skins/default/xui/fr/panel_edit_profile.xml     |   0
 .../skins/default/xui/fr/panel_edit_shape.xml       |   0
 .../skins/default/xui/fr/panel_edit_shirt.xml       |   0
 .../skins/default/xui/fr/panel_edit_shoes.xml       |   0
 .../skins/default/xui/fr/panel_edit_skin.xml        |   0
 .../skins/default/xui/fr/panel_edit_skirt.xml       |   0
 .../skins/default/xui/fr/panel_edit_socks.xml       |   0
 .../skins/default/xui/fr/panel_edit_tattoo.xml      |   0
 .../skins/default/xui/fr/panel_edit_underpants.xml  |   0
 .../skins/default/xui/fr/panel_edit_undershirt.xml  |   0
 .../skins/default/xui/fr/panel_edit_wearable.xml    |   0
 .../default/xui/fr/panel_group_control_panel.xml    |   0
 .../skins/default/xui/fr/panel_group_general.xml    |   0
 .../default/xui/fr/panel_group_info_sidetray.xml    |   0
 .../skins/default/xui/fr/panel_group_invite.xml     |   0
 .../skins/default/xui/fr/panel_group_land_money.xml |   0
 .../skins/default/xui/fr/panel_group_list_item.xml  |   0
 .../skins/default/xui/fr/panel_group_notices.xml    |   0
 .../skins/default/xui/fr/panel_group_notify.xml     |   0
 .../skins/default/xui/fr/panel_group_roles.xml      |   0
 .../skins/default/xui/fr/panel_im_control_panel.xml |   0
 .../skins/default/xui/fr/panel_instant_message.xml  |   0
 .../skins/default/xui/fr/panel_inventory_item.xml   |   0
 .../skins/default/xui/fr/panel_landmark_info.xml    |   0
 .../skins/default/xui/fr/panel_landmarks.xml        |   0
 indra/newview/skins/default/xui/fr/panel_login.xml  |   0
 .../skins/default/xui/fr/panel_main_inventory.xml   |   0
 indra/newview/skins/default/xui/fr/panel_me.xml     |   0
 .../default/xui/fr/panel_media_settings_general.xml |   0
 .../xui/fr/panel_media_settings_permissions.xml     |   0
 .../xui/fr/panel_media_settings_security.xml        |   0
 .../skins/default/xui/fr/panel_navigation_bar.xml   |   0
 .../skins/default/xui/fr/panel_nearby_chat.xml      |   0
 .../skins/default/xui/fr/panel_nearby_chat_bar.xml  |   0
 .../skins/default/xui/fr/panel_nearby_media.xml     |   0
 .../default/xui/fr/panel_notifications_channel.xml  |   0
 .../skins/default/xui/fr/panel_notify_textbox.xml   |   0
 .../default/xui/fr/panel_online_status_toast.xml    |   0
 .../skins/default/xui/fr/panel_outbox_inventory.xml |   0
 .../skins/default/xui/fr/panel_outfit_edit.xml      |   0
 .../default/xui/fr/panel_outfits_inventory.xml      |   0
 .../xui/fr/panel_outfits_inventory_gear_default.xml |   0
 .../skins/default/xui/fr/panel_outfits_list.xml     |   0
 .../skins/default/xui/fr/panel_outfits_wearing.xml  |   0
 indra/newview/skins/default/xui/fr/panel_people.xml |   0
 .../skins/default/xui/fr/panel_pick_info.xml        |   0
 indra/newview/skins/default/xui/fr/panel_picks.xml  |   0
 .../skins/default/xui/fr/panel_place_profile.xml    |   0
 indra/newview/skins/default/xui/fr/panel_places.xml |   0
 .../skins/default/xui/fr/panel_postcard_message.xml |   0
 .../default/xui/fr/panel_postcard_settings.xml      |   0
 .../default/xui/fr/panel_preferences_advanced.xml   |   0
 .../default/xui/fr/panel_preferences_alerts.xml     |   0
 .../skins/default/xui/fr/panel_preferences_chat.xml |   0
 .../default/xui/fr/panel_preferences_colors.xml     |   0
 .../default/xui/fr/panel_preferences_general.xml    |   0
 .../default/xui/fr/panel_preferences_graphics1.xml  |   0
 .../skins/default/xui/fr/panel_preferences_move.xml |   0
 .../default/xui/fr/panel_preferences_privacy.xml    |   0
 .../default/xui/fr/panel_preferences_setup.xml      |   0
 .../default/xui/fr/panel_preferences_sound.xml      |   0
 .../default/xui/fr/panel_prim_media_controls.xml    |   0
 .../skins/default/xui/fr/panel_region_covenant.xml  |   0
 .../skins/default/xui/fr/panel_region_debug.xml     |   0
 .../default/xui/fr/panel_region_environment.xml     |   0
 .../skins/default/xui/fr/panel_region_estate.xml    |   0
 .../skins/default/xui/fr/panel_region_general.xml   |   0
 .../skins/default/xui/fr/panel_region_terrain.xml   |   0
 .../skins/default/xui/fr/panel_script_ed.xml        |   0
 .../xui/fr/panel_script_limits_my_avatar.xml        |   0
 .../xui/fr/panel_script_limits_region_memory.xml    |   0
 .../default/xui/fr/panel_script_question_toast.xml  |   0
 .../skins/default/xui/fr/panel_scrolling_param.xml  |   0
 .../default/xui/fr/panel_scrolling_param_base.xml   |   0
 .../default/xui/fr/panel_side_tray_tab_caption.xml  |   0
 .../default/xui/fr/panel_sidetray_home_tab.xml      |   0
 .../default/xui/fr/panel_snapshot_inventory.xml     |   0
 .../skins/default/xui/fr/panel_snapshot_local.xml   |   0
 .../skins/default/xui/fr/panel_snapshot_options.xml |   0
 .../default/xui/fr/panel_snapshot_postcard.xml      |   0
 .../skins/default/xui/fr/panel_snapshot_profile.xml |   0
 .../skins/default/xui/fr/panel_sound_devices.xml    |   0
 .../default/xui/fr/panel_stand_stop_flying.xml      |   0
 .../skins/default/xui/fr/panel_status_bar.xml       |   0
 .../skins/default/xui/fr/panel_sys_well_item.xml    |   0
 .../skins/default/xui/fr/panel_teleport_history.xml |   0
 .../default/xui/fr/panel_teleport_history_item.xml  |   0
 .../skins/default/xui/fr/panel_voice_effect.xml     |   0
 .../skins/default/xui/fr/panel_volume_pulldown.xml  |   0
 .../skins/default/xui/fr/panel_world_map.xml        |   0
 indra/newview/skins/default/xui/fr/role_actions.xml |   0
 .../skins/default/xui/fr/sidepanel_appearance.xml   |   0
 .../skins/default/xui/fr/sidepanel_inventory.xml    |   0
 .../skins/default/xui/fr/sidepanel_item_info.xml    |   0
 .../skins/default/xui/fr/sidepanel_task_info.xml    |   0
 indra/newview/skins/default/xui/fr/strings.xml      |   0
 .../skins/default/xui/fr/teleport_strings.xml       |   0
 indra/newview/skins/default/xui/fr/xui_version.xml  |   0
 .../newview/skins/default/xui/it/floater_about.xml  |   0
 .../skins/default/xui/it/floater_about_land.xml     |   0
 .../skins/default/xui/it/floater_activeim.xml       |   0
 .../xui/it/floater_animation_anim_preview.xml       |   0
 .../xui/it/floater_animation_bvh_preview.xml        |   0
 .../skins/default/xui/it/floater_auction.xml        |   0
 .../skins/default/xui/it/floater_autoreplace.xml    |   0
 .../newview/skins/default/xui/it/floater_avatar.xml |   0
 .../skins/default/xui/it/floater_avatar_picker.xml  |   0
 .../default/xui/it/floater_avatar_textures.xml      |   0
 .../skins/default/xui/it/floater_beacons.xml        |   0
 .../skins/default/xui/it/floater_build_options.xml  |   0
 .../skins/default/xui/it/floater_bulk_perms.xml     |   0
 .../newview/skins/default/xui/it/floater_bumps.xml  |   0
 .../skins/default/xui/it/floater_buy_contents.xml   |   0
 .../skins/default/xui/it/floater_buy_currency.xml   |   0
 .../default/xui/it/floater_buy_currency_html.xml    |   0
 .../skins/default/xui/it/floater_buy_land.xml       |   0
 .../skins/default/xui/it/floater_buy_object.xml     |   0
 .../newview/skins/default/xui/it/floater_camera.xml |   0
 .../skins/default/xui/it/floater_chat_bar.xml       |   0
 .../skins/default/xui/it/floater_choose_group.xml   |   0
 .../skins/default/xui/it/floater_color_picker.xml   |   0
 .../skins/default/xui/it/floater_critical.xml       |   0
 .../default/xui/it/floater_delete_env_preset.xml    |   0
 .../skins/default/xui/it/floater_destinations.xml   |   0
 .../skins/default/xui/it/floater_display_name.xml   |   0
 .../skins/default/xui/it/floater_edit_day_cycle.xml |   0
 .../default/xui/it/floater_edit_sky_preset.xml      |   0
 .../default/xui/it/floater_edit_water_preset.xml    |   0
 .../default/xui/it/floater_environment_settings.xml |   0
 .../newview/skins/default/xui/it/floater_event.xml  |   0
 .../skins/default/xui/it/floater_fast_timers.xml    |   0
 .../skins/default/xui/it/floater_font_test.xml      |   0
 .../skins/default/xui/it/floater_gesture.xml        |   0
 .../skins/default/xui/it/floater_god_tools.xml      |   0
 .../default/xui/it/floater_hardware_settings.xml    |   0
 .../skins/default/xui/it/floater_help_browser.xml   |   0
 .../newview/skins/default/xui/it/floater_how_to.xml |   0
 indra/newview/skins/default/xui/it/floater_hud.xml  |   0
 .../skins/default/xui/it/floater_im_container.xml   |   0
 .../skins/default/xui/it/floater_im_session.xml     |   0
 .../skins/default/xui/it/floater_image_preview.xml  |   0
 .../skins/default/xui/it/floater_import_collada.xml |   0
 .../skins/default/xui/it/floater_incoming_call.xml  |   0
 .../skins/default/xui/it/floater_inspect.xml        |   0
 .../xui/it/floater_inventory_item_properties.xml    |   0
 .../xui/it/floater_inventory_view_finder.xml        |   0
 .../skins/default/xui/it/floater_joystick.xml       |   0
 .../skins/default/xui/it/floater_lagmeter.xml       |   0
 .../skins/default/xui/it/floater_land_holdings.xml  |   0
 .../skins/default/xui/it/floater_live_lsleditor.xml |   0
 .../skins/default/xui/it/floater_lsl_guide.xml      |   0
 indra/newview/skins/default/xui/it/floater_map.xml  |   0
 .../skins/default/xui/it/floater_media_browser.xml  |   0
 .../skins/default/xui/it/floater_media_settings.xml |   0
 .../skins/default/xui/it/floater_mem_leaking.xml    |   0
 .../default/xui/it/floater_merchant_outbox.xml      |   0
 .../skins/default/xui/it/floater_model_preview.xml  |   0
 .../skins/default/xui/it/floater_moveview.xml       |   0
 .../skins/default/xui/it/floater_mute_object.xml    |   0
 .../skins/default/xui/it/floater_my_appearance.xml  |   0
 .../skins/default/xui/it/floater_my_inventory.xml   |   0
 .../skins/default/xui/it/floater_object_weights.xml |   0
 .../skins/default/xui/it/floater_openobject.xml     |   0
 .../skins/default/xui/it/floater_outfit_save_as.xml |   0
 .../skins/default/xui/it/floater_outgoing_call.xml  |   0
 .../xui/it/floater_pathfinding_characters.xml       |   0
 .../default/xui/it/floater_pathfinding_console.xml  |   0
 .../default/xui/it/floater_pathfinding_linksets.xml |   0
 indra/newview/skins/default/xui/it/floater_pay.xml  |   0
 .../skins/default/xui/it/floater_pay_object.xml     |   0
 .../newview/skins/default/xui/it/floater_people.xml |   0
 .../skins/default/xui/it/floater_perm_prefs.xml     |   0
 .../newview/skins/default/xui/it/floater_picks.xml  |   0
 .../newview/skins/default/xui/it/floater_places.xml |   0
 .../skins/default/xui/it/floater_post_process.xml   |   0
 .../skins/default/xui/it/floater_preferences.xml    |   0
 .../default/xui/it/floater_preferences_proxy.xml    |   0
 .../default/xui/it/floater_preview_animation.xml    |   0
 .../default/xui/it/floater_preview_gesture.xml      |   0
 .../default/xui/it/floater_preview_notecard.xml     |   0
 .../skins/default/xui/it/floater_preview_sound.xml  |   0
 .../default/xui/it/floater_preview_texture.xml      |   0
 .../default/xui/it/floater_price_for_listing.xml    |   0
 .../default/xui/it/floater_publish_classified.xml   |   0
 .../default/xui/it/floater_region_debug_console.xml |   0
 .../skins/default/xui/it/floater_region_info.xml    |   0
 .../skins/default/xui/it/floater_report_abuse.xml   |   0
 .../skins/default/xui/it/floater_script_debug.xml   |   0
 .../default/xui/it/floater_script_debug_panel.xml   |   0
 .../skins/default/xui/it/floater_script_limits.xml  |   0
 .../skins/default/xui/it/floater_script_preview.xml |   0
 .../skins/default/xui/it/floater_script_queue.xml   |   0
 .../skins/default/xui/it/floater_script_search.xml  |   0
 .../newview/skins/default/xui/it/floater_search.xml |   0
 .../skins/default/xui/it/floater_select_key.xml     |   0
 .../skins/default/xui/it/floater_sell_land.xml      |   0
 .../skins/default/xui/it/floater_settings_debug.xml |   0
 .../skins/default/xui/it/floater_snapshot.xml       |   0
 .../skins/default/xui/it/floater_sound_devices.xml  |   0
 .../skins/default/xui/it/floater_sound_preview.xml  |   0
 .../skins/default/xui/it/floater_spellcheck.xml     |   0
 .../default/xui/it/floater_spellcheck_import.xml    |   0
 .../newview/skins/default/xui/it/floater_stats.xml  |   0
 .../skins/default/xui/it/floater_sys_well.xml       |   0
 .../skins/default/xui/it/floater_telehub.xml        |   0
 .../default/xui/it/floater_test_layout_stacks.xml   |   0
 .../xui/it/floater_test_text_vertical_aligment.xml  |   0
 .../skins/default/xui/it/floater_texture_ctrl.xml   |   0
 .../xui/it/floater_texture_fetch_debugger.xml       |   0
 .../newview/skins/default/xui/it/floater_tools.xml  |   0
 .../skins/default/xui/it/floater_top_objects.xml    |   0
 indra/newview/skins/default/xui/it/floater_tos.xml  |   0
 .../newview/skins/default/xui/it/floater_toybox.xml |   0
 .../default/xui/it/floater_translation_settings.xml |   0
 .../skins/default/xui/it/floater_url_entry.xml      |   0
 .../skins/default/xui/it/floater_voice_controls.xml |   0
 .../skins/default/xui/it/floater_voice_effect.xml   |   0
 .../skins/default/xui/it/floater_web_content.xml    |   0
 .../default/xui/it/floater_whitelist_entry.xml      |   0
 .../skins/default/xui/it/floater_window_size.xml    |   0
 .../skins/default/xui/it/floater_world_map.xml      |   0
 .../newview/skins/default/xui/it/inspect_avatar.xml |   0
 .../newview/skins/default/xui/it/inspect_group.xml  |   0
 .../newview/skins/default/xui/it/inspect_object.xml |   0
 .../skins/default/xui/it/inspect_remote_object.xml  |   0
 .../skins/default/xui/it/language_settings.xml      |   0
 .../skins/default/xui/it/menu_add_wearable_gear.xml |   0
 .../skins/default/xui/it/menu_attachment_other.xml  |   0
 .../skins/default/xui/it/menu_attachment_self.xml   |   0
 .../skins/default/xui/it/menu_avatar_icon.xml       |   0
 .../skins/default/xui/it/menu_avatar_other.xml      |   0
 .../skins/default/xui/it/menu_avatar_self.xml       |   0
 .../skins/default/xui/it/menu_cof_attachment.xml    |   0
 .../skins/default/xui/it/menu_cof_body_part.xml     |   0
 .../skins/default/xui/it/menu_cof_clothing.xml      |   0
 .../newview/skins/default/xui/it/menu_cof_gear.xml  |   0
 indra/newview/skins/default/xui/it/menu_edit.xml    |   0
 .../newview/skins/default/xui/it/menu_favorites.xml |   0
 .../skins/default/xui/it/menu_gesture_gear.xml      |   0
 .../skins/default/xui/it/menu_group_plus.xml        |   0
 .../skins/default/xui/it/menu_hide_navbar.xml       |   0
 .../skins/default/xui/it/menu_imchiclet_adhoc.xml   |   0
 .../skins/default/xui/it/menu_imchiclet_group.xml   |   0
 .../skins/default/xui/it/menu_imchiclet_p2p.xml     |   0
 .../default/xui/it/menu_inspect_avatar_gear.xml     |   0
 .../default/xui/it/menu_inspect_object_gear.xml     |   0
 .../skins/default/xui/it/menu_inspect_self_gear.xml |   0
 .../skins/default/xui/it/menu_inv_offer_chiclet.xml |   0
 .../newview/skins/default/xui/it/menu_inventory.xml |   0
 .../skins/default/xui/it/menu_inventory_add.xml     |   0
 .../default/xui/it/menu_inventory_gear_default.xml  |   0
 indra/newview/skins/default/xui/it/menu_land.xml    |   0
 .../newview/skins/default/xui/it/menu_landmark.xml  |   0
 indra/newview/skins/default/xui/it/menu_login.xml   |   0
 .../skins/default/xui/it/menu_media_ctrl.xml        |   0
 .../newview/skins/default/xui/it/menu_mini_map.xml  |   0
 .../xui/it/menu_model_import_gear_default.xml       |   0
 indra/newview/skins/default/xui/it/menu_navbar.xml  |   0
 .../skins/default/xui/it/menu_nearby_chat.xml       |   0
 .../xui/it/menu_notification_well_button.xml        |   0
 indra/newview/skins/default/xui/it/menu_object.xml  |   0
 .../skins/default/xui/it/menu_object_icon.xml       |   0
 .../skins/default/xui/it/menu_outfit_gear.xml       |   0
 .../skins/default/xui/it/menu_outfit_tab.xml        |   0
 .../skins/default/xui/it/menu_participant_list.xml  |   0
 .../xui/it/menu_people_friends_view_sort.xml        |   0
 .../skins/default/xui/it/menu_people_groups.xml     |   0
 .../default/xui/it/menu_people_groups_view_sort.xml |   0
 .../skins/default/xui/it/menu_people_nearby.xml     |   0
 .../xui/it/menu_people_nearby_multiselect.xml       |   0
 .../default/xui/it/menu_people_nearby_view_sort.xml |   0
 .../default/xui/it/menu_people_recent_view_sort.xml |   0
 indra/newview/skins/default/xui/it/menu_picks.xml   |   0
 .../skins/default/xui/it/menu_picks_plus.xml        |   0
 indra/newview/skins/default/xui/it/menu_place.xml   |   0
 .../skins/default/xui/it/menu_place_add_button.xml  |   0
 .../default/xui/it/menu_places_gear_folder.xml      |   0
 .../default/xui/it/menu_places_gear_landmark.xml    |   0
 .../skins/default/xui/it/menu_profile_overflow.xml  |   0
 .../skins/default/xui/it/menu_save_outfit.xml       |   0
 .../skins/default/xui/it/menu_script_chiclet.xml    |   0
 indra/newview/skins/default/xui/it/menu_slurl.xml   |   0
 .../default/xui/it/menu_teleport_history_gear.xml   |   0
 .../default/xui/it/menu_teleport_history_item.xml   |   0
 .../default/xui/it/menu_teleport_history_tab.xml    |   0
 .../skins/default/xui/it/menu_text_editor.xml       |   0
 .../newview/skins/default/xui/it/menu_toolbars.xml  |   0
 .../skins/default/xui/it/menu_topinfobar.xml        |   0
 .../newview/skins/default/xui/it/menu_url_agent.xml |   0
 .../newview/skins/default/xui/it/menu_url_group.xml |   0
 .../newview/skins/default/xui/it/menu_url_http.xml  |   0
 .../skins/default/xui/it/menu_url_inventory.xml     |   0
 indra/newview/skins/default/xui/it/menu_url_map.xml |   0
 .../skins/default/xui/it/menu_url_objectim.xml      |   0
 .../skins/default/xui/it/menu_url_parcel.xml        |   0
 .../newview/skins/default/xui/it/menu_url_slapp.xml |   0
 .../newview/skins/default/xui/it/menu_url_slurl.xml |   0
 .../skins/default/xui/it/menu_url_teleport.xml      |   0
 indra/newview/skins/default/xui/it/menu_viewer.xml  |   0
 .../default/xui/it/menu_wearable_list_item.xml      |   0
 .../skins/default/xui/it/menu_wearing_gear.xml      |   0
 .../skins/default/xui/it/menu_wearing_tab.xml       |   0
 indra/newview/skins/default/xui/it/mime_types.xml   |   0
 .../skins/default/xui/it/mime_types_linux.xml       |   0
 .../newview/skins/default/xui/it/mime_types_mac.xml |   0
 .../newview/skins/default/xui/it/notifications.xml  |   0
 .../skins/default/xui/it/outfit_accordion_tab.xml   |   0
 .../default/xui/it/panel_active_object_row.xml      |   0
 .../default/xui/it/panel_adhoc_control_panel.xml    |   0
 .../skins/default/xui/it/panel_avatar_list_item.xml |   0
 .../default/xui/it/panel_block_list_sidetray.xml    |   0
 .../default/xui/it/panel_body_parts_list_item.xml   |   0
 .../xui/it/panel_bodyparts_list_button_bar.xml      |   0
 .../skins/default/xui/it/panel_bottomtray_lite.xml  |   0
 .../skins/default/xui/it/panel_chiclet_bar.xml      |   0
 .../skins/default/xui/it/panel_classified_info.xml  |   0
 .../xui/it/panel_clothing_list_button_bar.xml       |   0
 .../default/xui/it/panel_clothing_list_item.xml     |   0
 .../skins/default/xui/it/panel_cof_wearables.xml    |   0
 .../xui/it/panel_deletable_wearable_list_item.xml   |   0
 .../xui/it/panel_dummy_clothing_list_item.xml       |   0
 .../skins/default/xui/it/panel_edit_alpha.xml       |   0
 .../skins/default/xui/it/panel_edit_classified.xml  |   0
 .../skins/default/xui/it/panel_edit_eyes.xml        |   0
 .../skins/default/xui/it/panel_edit_gloves.xml      |   0
 .../skins/default/xui/it/panel_edit_hair.xml        |   0
 .../skins/default/xui/it/panel_edit_jacket.xml      |   0
 .../skins/default/xui/it/panel_edit_pants.xml       |   0
 .../skins/default/xui/it/panel_edit_physics.xml     |   0
 .../skins/default/xui/it/panel_edit_pick.xml        |   0
 .../skins/default/xui/it/panel_edit_profile.xml     |   0
 .../skins/default/xui/it/panel_edit_shape.xml       |   0
 .../skins/default/xui/it/panel_edit_shirt.xml       |   0
 .../skins/default/xui/it/panel_edit_shoes.xml       |   0
 .../skins/default/xui/it/panel_edit_skin.xml        |   0
 .../skins/default/xui/it/panel_edit_skirt.xml       |   0
 .../skins/default/xui/it/panel_edit_socks.xml       |   0
 .../skins/default/xui/it/panel_edit_tattoo.xml      |   0
 .../skins/default/xui/it/panel_edit_underpants.xml  |   0
 .../skins/default/xui/it/panel_edit_undershirt.xml  |   0
 .../skins/default/xui/it/panel_edit_wearable.xml    |   0
 .../default/xui/it/panel_group_control_panel.xml    |   0
 .../skins/default/xui/it/panel_group_general.xml    |   0
 .../default/xui/it/panel_group_info_sidetray.xml    |   0
 .../skins/default/xui/it/panel_group_invite.xml     |   0
 .../skins/default/xui/it/panel_group_land_money.xml |   0
 .../skins/default/xui/it/panel_group_list_item.xml  |   0
 .../skins/default/xui/it/panel_group_notices.xml    |   0
 .../skins/default/xui/it/panel_group_notify.xml     |   0
 .../skins/default/xui/it/panel_group_roles.xml      |   0
 .../skins/default/xui/it/panel_im_control_panel.xml |   0
 .../skins/default/xui/it/panel_inventory_item.xml   |   0
 .../skins/default/xui/it/panel_landmark_info.xml    |   0
 .../skins/default/xui/it/panel_landmarks.xml        |   0
 indra/newview/skins/default/xui/it/panel_login.xml  |   0
 .../skins/default/xui/it/panel_main_inventory.xml   |   0
 indra/newview/skins/default/xui/it/panel_me.xml     |   0
 .../default/xui/it/panel_media_settings_general.xml |   0
 .../xui/it/panel_media_settings_permissions.xml     |   0
 .../xui/it/panel_media_settings_security.xml        |   0
 .../skins/default/xui/it/panel_navigation_bar.xml   |   0
 .../skins/default/xui/it/panel_nearby_chat.xml      |   0
 .../skins/default/xui/it/panel_nearby_chat_bar.xml  |   0
 .../skins/default/xui/it/panel_nearby_media.xml     |   0
 .../skins/default/xui/it/panel_notify_textbox.xml   |   0
 .../default/xui/it/panel_online_status_toast.xml    |   0
 .../skins/default/xui/it/panel_outbox_inventory.xml |   0
 .../skins/default/xui/it/panel_outfit_edit.xml      |   0
 .../default/xui/it/panel_outfits_inventory.xml      |   0
 .../xui/it/panel_outfits_inventory_gear_default.xml |   0
 .../skins/default/xui/it/panel_outfits_list.xml     |   0
 .../skins/default/xui/it/panel_outfits_wearing.xml  |   0
 indra/newview/skins/default/xui/it/panel_people.xml |   0
 .../skins/default/xui/it/panel_pick_info.xml        |   0
 indra/newview/skins/default/xui/it/panel_picks.xml  |   0
 .../skins/default/xui/it/panel_place_profile.xml    |   0
 indra/newview/skins/default/xui/it/panel_places.xml |   0
 .../skins/default/xui/it/panel_postcard_message.xml |   0
 .../default/xui/it/panel_postcard_settings.xml      |   0
 .../default/xui/it/panel_preferences_advanced.xml   |   0
 .../default/xui/it/panel_preferences_alerts.xml     |   0
 .../skins/default/xui/it/panel_preferences_chat.xml |   0
 .../default/xui/it/panel_preferences_colors.xml     |   0
 .../default/xui/it/panel_preferences_general.xml    |   0
 .../default/xui/it/panel_preferences_graphics1.xml  |   0
 .../skins/default/xui/it/panel_preferences_move.xml |   0
 .../default/xui/it/panel_preferences_privacy.xml    |   0
 .../default/xui/it/panel_preferences_setup.xml      |   0
 .../default/xui/it/panel_preferences_sound.xml      |   0
 .../default/xui/it/panel_prim_media_controls.xml    |   0
 .../skins/default/xui/it/panel_region_covenant.xml  |   0
 .../skins/default/xui/it/panel_region_debug.xml     |   0
 .../default/xui/it/panel_region_environment.xml     |   0
 .../skins/default/xui/it/panel_region_estate.xml    |   0
 .../skins/default/xui/it/panel_region_general.xml   |   0
 .../skins/default/xui/it/panel_region_terrain.xml   |   0
 .../skins/default/xui/it/panel_script_ed.xml        |   0
 .../xui/it/panel_script_limits_my_avatar.xml        |   0
 .../xui/it/panel_script_limits_region_memory.xml    |   0
 .../default/xui/it/panel_script_question_toast.xml  |   0
 .../skins/default/xui/it/panel_scrolling_param.xml  |   0
 .../default/xui/it/panel_scrolling_param_base.xml   |   0
 .../default/xui/it/panel_side_tray_tab_caption.xml  |   0
 .../default/xui/it/panel_snapshot_inventory.xml     |   0
 .../skins/default/xui/it/panel_snapshot_local.xml   |   0
 .../skins/default/xui/it/panel_snapshot_options.xml |   0
 .../default/xui/it/panel_snapshot_postcard.xml      |   0
 .../skins/default/xui/it/panel_snapshot_profile.xml |   0
 .../skins/default/xui/it/panel_sound_devices.xml    |   0
 .../default/xui/it/panel_stand_stop_flying.xml      |   0
 .../skins/default/xui/it/panel_status_bar.xml       |   0
 .../skins/default/xui/it/panel_teleport_history.xml |   0
 .../default/xui/it/panel_teleport_history_item.xml  |   0
 .../skins/default/xui/it/panel_voice_effect.xml     |   0
 .../skins/default/xui/it/panel_volume_pulldown.xml  |   0
 .../skins/default/xui/it/panel_world_map.xml        |   0
 indra/newview/skins/default/xui/it/role_actions.xml |   0
 .../skins/default/xui/it/sidepanel_appearance.xml   |   0
 .../skins/default/xui/it/sidepanel_inventory.xml    |   0
 .../skins/default/xui/it/sidepanel_item_info.xml    |   0
 .../skins/default/xui/it/sidepanel_task_info.xml    |   0
 indra/newview/skins/default/xui/it/strings.xml      |   0
 .../skins/default/xui/it/teleport_strings.xml       |   0
 .../newview/skins/default/xui/ja/floater_about.xml  |   0
 .../skins/default/xui/ja/floater_about_land.xml     |   0
 .../skins/default/xui/ja/floater_activeim.xml       |   0
 .../xui/ja/floater_animation_anim_preview.xml       |   0
 .../xui/ja/floater_animation_bvh_preview.xml        |   0
 .../skins/default/xui/ja/floater_auction.xml        |   0
 .../skins/default/xui/ja/floater_autoreplace.xml    |   0
 .../newview/skins/default/xui/ja/floater_avatar.xml |   0
 .../skins/default/xui/ja/floater_avatar_picker.xml  |   0
 .../default/xui/ja/floater_avatar_textures.xml      |   0
 .../skins/default/xui/ja/floater_beacons.xml        |   0
 .../skins/default/xui/ja/floater_build_options.xml  |   0
 .../skins/default/xui/ja/floater_bulk_perms.xml     |   0
 .../newview/skins/default/xui/ja/floater_bumps.xml  |   0
 .../skins/default/xui/ja/floater_buy_contents.xml   |   0
 .../skins/default/xui/ja/floater_buy_currency.xml   |   0
 .../default/xui/ja/floater_buy_currency_html.xml    |   0
 .../skins/default/xui/ja/floater_buy_land.xml       |   0
 .../skins/default/xui/ja/floater_buy_object.xml     |   0
 .../newview/skins/default/xui/ja/floater_camera.xml |   0
 .../skins/default/xui/ja/floater_chat_bar.xml       |   0
 .../skins/default/xui/ja/floater_choose_group.xml   |   0
 .../skins/default/xui/ja/floater_color_picker.xml   |   0
 .../skins/default/xui/ja/floater_critical.xml       |   0
 .../default/xui/ja/floater_delete_env_preset.xml    |   0
 .../skins/default/xui/ja/floater_destinations.xml   |   0
 .../skins/default/xui/ja/floater_display_name.xml   |   0
 .../skins/default/xui/ja/floater_edit_day_cycle.xml |   0
 .../default/xui/ja/floater_edit_sky_preset.xml      |   0
 .../default/xui/ja/floater_edit_water_preset.xml    |   0
 .../default/xui/ja/floater_environment_settings.xml |   0
 .../newview/skins/default/xui/ja/floater_event.xml  |   0
 .../skins/default/xui/ja/floater_fast_timers.xml    |   0
 .../skins/default/xui/ja/floater_font_test.xml      |   0
 .../skins/default/xui/ja/floater_gesture.xml        |   0
 .../skins/default/xui/ja/floater_god_tools.xml      |   0
 .../default/xui/ja/floater_hardware_settings.xml    |   0
 .../skins/default/xui/ja/floater_help_browser.xml   |   0
 .../newview/skins/default/xui/ja/floater_how_to.xml |   0
 indra/newview/skins/default/xui/ja/floater_hud.xml  |   0
 .../skins/default/xui/ja/floater_im_container.xml   |   0
 .../skins/default/xui/ja/floater_im_session.xml     |   0
 .../skins/default/xui/ja/floater_image_preview.xml  |   0
 .../skins/default/xui/ja/floater_import_collada.xml |   0
 .../skins/default/xui/ja/floater_incoming_call.xml  |   0
 .../skins/default/xui/ja/floater_inspect.xml        |   0
 .../xui/ja/floater_inventory_item_properties.xml    |   0
 .../xui/ja/floater_inventory_view_finder.xml        |   0
 .../skins/default/xui/ja/floater_joystick.xml       |   0
 .../skins/default/xui/ja/floater_lagmeter.xml       |   0
 .../skins/default/xui/ja/floater_land_holdings.xml  |   0
 .../skins/default/xui/ja/floater_live_lsleditor.xml |   0
 .../skins/default/xui/ja/floater_lsl_guide.xml      |   0
 indra/newview/skins/default/xui/ja/floater_map.xml  |   0
 .../skins/default/xui/ja/floater_media_browser.xml  |   0
 .../skins/default/xui/ja/floater_media_settings.xml |   0
 .../skins/default/xui/ja/floater_mem_leaking.xml    |   0
 .../default/xui/ja/floater_merchant_outbox.xml      |   0
 .../skins/default/xui/ja/floater_model_preview.xml  |   0
 .../skins/default/xui/ja/floater_moveview.xml       |   0
 .../skins/default/xui/ja/floater_mute_object.xml    |   0
 .../skins/default/xui/ja/floater_my_appearance.xml  |   0
 .../skins/default/xui/ja/floater_my_inventory.xml   |   0
 .../skins/default/xui/ja/floater_notification.xml   |   0
 .../xui/ja/floater_notifications_console.xml        |   0
 .../skins/default/xui/ja/floater_object_weights.xml |   0
 .../skins/default/xui/ja/floater_openobject.xml     |   0
 .../skins/default/xui/ja/floater_outfit_save_as.xml |   0
 .../skins/default/xui/ja/floater_outgoing_call.xml  |   0
 .../xui/ja/floater_pathfinding_characters.xml       |   0
 .../default/xui/ja/floater_pathfinding_console.xml  |   0
 .../default/xui/ja/floater_pathfinding_linksets.xml |   0
 indra/newview/skins/default/xui/ja/floater_pay.xml  |   0
 .../skins/default/xui/ja/floater_pay_object.xml     |   0
 .../newview/skins/default/xui/ja/floater_people.xml |   0
 .../skins/default/xui/ja/floater_perm_prefs.xml     |   0
 .../newview/skins/default/xui/ja/floater_picks.xml  |   0
 .../newview/skins/default/xui/ja/floater_places.xml |   0
 .../skins/default/xui/ja/floater_post_process.xml   |   0
 .../skins/default/xui/ja/floater_preferences.xml    |   0
 .../default/xui/ja/floater_preferences_proxy.xml    |   0
 .../default/xui/ja/floater_preview_animation.xml    |   0
 .../default/xui/ja/floater_preview_gesture.xml      |   0
 .../default/xui/ja/floater_preview_notecard.xml     |   0
 .../skins/default/xui/ja/floater_preview_sound.xml  |   0
 .../default/xui/ja/floater_preview_texture.xml      |   0
 .../default/xui/ja/floater_price_for_listing.xml    |   0
 .../default/xui/ja/floater_publish_classified.xml   |   0
 .../default/xui/ja/floater_region_debug_console.xml |   0
 .../skins/default/xui/ja/floater_region_info.xml    |   0
 .../skins/default/xui/ja/floater_report_abuse.xml   |   0
 .../skins/default/xui/ja/floater_script_debug.xml   |   0
 .../default/xui/ja/floater_script_debug_panel.xml   |   0
 .../skins/default/xui/ja/floater_script_limits.xml  |   0
 .../skins/default/xui/ja/floater_script_preview.xml |   0
 .../skins/default/xui/ja/floater_script_queue.xml   |   0
 .../skins/default/xui/ja/floater_script_search.xml  |   0
 .../newview/skins/default/xui/ja/floater_search.xml |   0
 .../skins/default/xui/ja/floater_select_key.xml     |   0
 .../skins/default/xui/ja/floater_sell_land.xml      |   0
 .../skins/default/xui/ja/floater_settings_debug.xml |   0
 .../skins/default/xui/ja/floater_snapshot.xml       |   0
 .../skins/default/xui/ja/floater_sound_devices.xml  |   0
 .../skins/default/xui/ja/floater_sound_preview.xml  |   0
 .../skins/default/xui/ja/floater_spellcheck.xml     |   0
 .../default/xui/ja/floater_spellcheck_import.xml    |   0
 .../newview/skins/default/xui/ja/floater_stats.xml  |   0
 .../skins/default/xui/ja/floater_sys_well.xml       |   0
 .../skins/default/xui/ja/floater_telehub.xml        |   0
 .../default/xui/ja/floater_test_layout_stacks.xml   |   0
 .../xui/ja/floater_test_text_vertical_aligment.xml  |   0
 .../skins/default/xui/ja/floater_texture_ctrl.xml   |   0
 .../xui/ja/floater_texture_fetch_debugger.xml       |   0
 .../newview/skins/default/xui/ja/floater_tools.xml  |   0
 .../skins/default/xui/ja/floater_top_objects.xml    |   0
 indra/newview/skins/default/xui/ja/floater_tos.xml  |   0
 .../newview/skins/default/xui/ja/floater_toybox.xml |   0
 .../default/xui/ja/floater_translation_settings.xml |   0
 .../skins/default/xui/ja/floater_url_entry.xml      |   0
 .../skins/default/xui/ja/floater_voice_controls.xml |   0
 .../skins/default/xui/ja/floater_voice_effect.xml   |   0
 .../skins/default/xui/ja/floater_web_content.xml    |   0
 .../default/xui/ja/floater_whitelist_entry.xml      |   0
 .../skins/default/xui/ja/floater_window_size.xml    |   0
 .../skins/default/xui/ja/floater_world_map.xml      |   0
 .../newview/skins/default/xui/ja/inspect_avatar.xml |   0
 .../newview/skins/default/xui/ja/inspect_group.xml  |   0
 .../newview/skins/default/xui/ja/inspect_object.xml |   0
 .../skins/default/xui/ja/inspect_remote_object.xml  |   0
 .../skins/default/xui/ja/language_settings.xml      |   0
 .../skins/default/xui/ja/menu_add_wearable_gear.xml |   0
 .../skins/default/xui/ja/menu_attachment_other.xml  |   0
 .../skins/default/xui/ja/menu_attachment_self.xml   |   0
 .../skins/default/xui/ja/menu_avatar_icon.xml       |   0
 .../skins/default/xui/ja/menu_avatar_other.xml      |   0
 .../skins/default/xui/ja/menu_avatar_self.xml       |   0
 .../skins/default/xui/ja/menu_cof_attachment.xml    |   0
 .../skins/default/xui/ja/menu_cof_body_part.xml     |   0
 .../skins/default/xui/ja/menu_cof_clothing.xml      |   0
 .../newview/skins/default/xui/ja/menu_cof_gear.xml  |   0
 indra/newview/skins/default/xui/ja/menu_edit.xml    |   0
 .../newview/skins/default/xui/ja/menu_favorites.xml |   0
 .../skins/default/xui/ja/menu_gesture_gear.xml      |   0
 .../skins/default/xui/ja/menu_group_plus.xml        |   0
 .../skins/default/xui/ja/menu_hide_navbar.xml       |   0
 .../skins/default/xui/ja/menu_imchiclet_adhoc.xml   |   0
 .../skins/default/xui/ja/menu_imchiclet_group.xml   |   0
 .../skins/default/xui/ja/menu_imchiclet_p2p.xml     |   0
 .../default/xui/ja/menu_inspect_avatar_gear.xml     |   0
 .../default/xui/ja/menu_inspect_object_gear.xml     |   0
 .../skins/default/xui/ja/menu_inspect_self_gear.xml |   0
 .../skins/default/xui/ja/menu_inv_offer_chiclet.xml |   0
 .../newview/skins/default/xui/ja/menu_inventory.xml |   0
 .../skins/default/xui/ja/menu_inventory_add.xml     |   0
 .../default/xui/ja/menu_inventory_gear_default.xml  |   0
 indra/newview/skins/default/xui/ja/menu_land.xml    |   0
 .../newview/skins/default/xui/ja/menu_landmark.xml  |   0
 indra/newview/skins/default/xui/ja/menu_login.xml   |   0
 .../skins/default/xui/ja/menu_media_ctrl.xml        |   0
 .../newview/skins/default/xui/ja/menu_mini_map.xml  |   0
 .../xui/ja/menu_model_import_gear_default.xml       |   0
 indra/newview/skins/default/xui/ja/menu_navbar.xml  |   0
 .../skins/default/xui/ja/menu_nearby_chat.xml       |   0
 .../xui/ja/menu_notification_well_button.xml        |   0
 indra/newview/skins/default/xui/ja/menu_object.xml  |   0
 .../skins/default/xui/ja/menu_object_icon.xml       |   0
 .../skins/default/xui/ja/menu_outfit_gear.xml       |   0
 .../skins/default/xui/ja/menu_outfit_tab.xml        |   0
 .../skins/default/xui/ja/menu_participant_list.xml  |   0
 .../xui/ja/menu_people_friends_view_sort.xml        |   0
 .../skins/default/xui/ja/menu_people_groups.xml     |   0
 .../default/xui/ja/menu_people_groups_view_sort.xml |   0
 .../skins/default/xui/ja/menu_people_nearby.xml     |   0
 .../xui/ja/menu_people_nearby_multiselect.xml       |   0
 .../default/xui/ja/menu_people_nearby_view_sort.xml |   0
 .../default/xui/ja/menu_people_recent_view_sort.xml |   0
 indra/newview/skins/default/xui/ja/menu_picks.xml   |   0
 .../skins/default/xui/ja/menu_picks_plus.xml        |   0
 indra/newview/skins/default/xui/ja/menu_place.xml   |   0
 .../skins/default/xui/ja/menu_place_add_button.xml  |   0
 .../default/xui/ja/menu_places_gear_folder.xml      |   0
 .../default/xui/ja/menu_places_gear_landmark.xml    |   0
 .../skins/default/xui/ja/menu_profile_overflow.xml  |   0
 .../skins/default/xui/ja/menu_save_outfit.xml       |   0
 .../skins/default/xui/ja/menu_script_chiclet.xml    |   0
 indra/newview/skins/default/xui/ja/menu_slurl.xml   |   0
 .../default/xui/ja/menu_teleport_history_gear.xml   |   0
 .../default/xui/ja/menu_teleport_history_item.xml   |   0
 .../default/xui/ja/menu_teleport_history_tab.xml    |   0
 .../skins/default/xui/ja/menu_text_editor.xml       |   0
 .../newview/skins/default/xui/ja/menu_toolbars.xml  |   0
 .../skins/default/xui/ja/menu_topinfobar.xml        |   0
 .../newview/skins/default/xui/ja/menu_url_agent.xml |   0
 .../newview/skins/default/xui/ja/menu_url_group.xml |   0
 .../newview/skins/default/xui/ja/menu_url_http.xml  |   0
 .../skins/default/xui/ja/menu_url_inventory.xml     |   0
 indra/newview/skins/default/xui/ja/menu_url_map.xml |   0
 .../skins/default/xui/ja/menu_url_objectim.xml      |   0
 .../skins/default/xui/ja/menu_url_parcel.xml        |   0
 .../newview/skins/default/xui/ja/menu_url_slapp.xml |   0
 .../newview/skins/default/xui/ja/menu_url_slurl.xml |   0
 .../skins/default/xui/ja/menu_url_teleport.xml      |   0
 indra/newview/skins/default/xui/ja/menu_viewer.xml  |   0
 .../default/xui/ja/menu_wearable_list_item.xml      |   0
 .../skins/default/xui/ja/menu_wearing_gear.xml      |   0
 .../skins/default/xui/ja/menu_wearing_tab.xml       |   0
 indra/newview/skins/default/xui/ja/mime_types.xml   |   0
 .../skins/default/xui/ja/mime_types_linux.xml       |   0
 .../newview/skins/default/xui/ja/mime_types_mac.xml |   0
 .../newview/skins/default/xui/ja/notifications.xml  |   0
 .../skins/default/xui/ja/outfit_accordion_tab.xml   |   0
 .../default/xui/ja/panel_active_object_row.xml      |   0
 .../default/xui/ja/panel_adhoc_control_panel.xml    |   0
 .../skins/default/xui/ja/panel_avatar_list_item.xml |   0
 .../skins/default/xui/ja/panel_avatar_tag.xml       |   0
 .../default/xui/ja/panel_block_list_sidetray.xml    |   0
 .../default/xui/ja/panel_body_parts_list_item.xml   |   0
 .../xui/ja/panel_bodyparts_list_button_bar.xml      |   0
 .../skins/default/xui/ja/panel_bottomtray_lite.xml  |   0
 .../skins/default/xui/ja/panel_chat_header.xml      |   0
 .../skins/default/xui/ja/panel_chiclet_bar.xml      |   0
 .../skins/default/xui/ja/panel_classified_info.xml  |   0
 .../xui/ja/panel_clothing_list_button_bar.xml       |   0
 .../default/xui/ja/panel_clothing_list_item.xml     |   0
 .../skins/default/xui/ja/panel_cof_wearables.xml    |   0
 .../xui/ja/panel_deletable_wearable_list_item.xml   |   0
 .../xui/ja/panel_dummy_clothing_list_item.xml       |   0
 .../skins/default/xui/ja/panel_edit_alpha.xml       |   0
 .../skins/default/xui/ja/panel_edit_classified.xml  |   0
 .../skins/default/xui/ja/panel_edit_eyes.xml        |   0
 .../skins/default/xui/ja/panel_edit_gloves.xml      |   0
 .../skins/default/xui/ja/panel_edit_hair.xml        |   0
 .../skins/default/xui/ja/panel_edit_jacket.xml      |   0
 .../skins/default/xui/ja/panel_edit_pants.xml       |   0
 .../skins/default/xui/ja/panel_edit_physics.xml     |   0
 .../skins/default/xui/ja/panel_edit_pick.xml        |   0
 .../skins/default/xui/ja/panel_edit_profile.xml     |   0
 .../skins/default/xui/ja/panel_edit_shape.xml       |   0
 .../skins/default/xui/ja/panel_edit_shirt.xml       |   0
 .../skins/default/xui/ja/panel_edit_shoes.xml       |   0
 .../skins/default/xui/ja/panel_edit_skin.xml        |   0
 .../skins/default/xui/ja/panel_edit_skirt.xml       |   0
 .../skins/default/xui/ja/panel_edit_socks.xml       |   0
 .../skins/default/xui/ja/panel_edit_tattoo.xml      |   0
 .../skins/default/xui/ja/panel_edit_underpants.xml  |   0
 .../skins/default/xui/ja/panel_edit_undershirt.xml  |   0
 .../skins/default/xui/ja/panel_edit_wearable.xml    |   0
 .../default/xui/ja/panel_group_control_panel.xml    |   0
 .../skins/default/xui/ja/panel_group_general.xml    |   0
 .../default/xui/ja/panel_group_info_sidetray.xml    |   0
 .../skins/default/xui/ja/panel_group_invite.xml     |   0
 .../skins/default/xui/ja/panel_group_land_money.xml |   0
 .../skins/default/xui/ja/panel_group_list_item.xml  |   0
 .../skins/default/xui/ja/panel_group_notices.xml    |   0
 .../skins/default/xui/ja/panel_group_notify.xml     |   0
 .../skins/default/xui/ja/panel_group_roles.xml      |   0
 .../skins/default/xui/ja/panel_im_control_panel.xml |   0
 .../skins/default/xui/ja/panel_instant_message.xml  |   0
 .../skins/default/xui/ja/panel_inventory_item.xml   |   0
 .../skins/default/xui/ja/panel_landmark_info.xml    |   0
 .../skins/default/xui/ja/panel_landmarks.xml        |   0
 indra/newview/skins/default/xui/ja/panel_login.xml  |   0
 .../skins/default/xui/ja/panel_main_inventory.xml   |   0
 indra/newview/skins/default/xui/ja/panel_me.xml     |   0
 .../default/xui/ja/panel_media_settings_general.xml |   0
 .../xui/ja/panel_media_settings_permissions.xml     |   0
 .../xui/ja/panel_media_settings_security.xml        |   0
 .../skins/default/xui/ja/panel_navigation_bar.xml   |   0
 .../skins/default/xui/ja/panel_nearby_chat.xml      |   0
 .../skins/default/xui/ja/panel_nearby_chat_bar.xml  |   0
 .../skins/default/xui/ja/panel_nearby_media.xml     |   0
 .../default/xui/ja/panel_notifications_channel.xml  |   0
 .../skins/default/xui/ja/panel_notify_textbox.xml   |   0
 .../default/xui/ja/panel_online_status_toast.xml    |   0
 .../skins/default/xui/ja/panel_outbox_inventory.xml |   0
 .../skins/default/xui/ja/panel_outfit_edit.xml      |   0
 .../default/xui/ja/panel_outfits_inventory.xml      |   0
 .../xui/ja/panel_outfits_inventory_gear_default.xml |   0
 .../skins/default/xui/ja/panel_outfits_list.xml     |   0
 .../skins/default/xui/ja/panel_outfits_wearing.xml  |   0
 indra/newview/skins/default/xui/ja/panel_people.xml |   0
 .../skins/default/xui/ja/panel_pick_info.xml        |   0
 indra/newview/skins/default/xui/ja/panel_picks.xml  |   0
 .../skins/default/xui/ja/panel_place_profile.xml    |   0
 indra/newview/skins/default/xui/ja/panel_places.xml |   0
 .../skins/default/xui/ja/panel_postcard_message.xml |   0
 .../default/xui/ja/panel_postcard_settings.xml      |   0
 .../default/xui/ja/panel_preferences_advanced.xml   |   0
 .../default/xui/ja/panel_preferences_alerts.xml     |   0
 .../skins/default/xui/ja/panel_preferences_chat.xml |   0
 .../default/xui/ja/panel_preferences_colors.xml     |   0
 .../default/xui/ja/panel_preferences_general.xml    |   0
 .../default/xui/ja/panel_preferences_graphics1.xml  |   0
 .../skins/default/xui/ja/panel_preferences_move.xml |   0
 .../default/xui/ja/panel_preferences_privacy.xml    |   0
 .../default/xui/ja/panel_preferences_setup.xml      |   0
 .../default/xui/ja/panel_preferences_sound.xml      |   0
 .../default/xui/ja/panel_prim_media_controls.xml    |   0
 .../skins/default/xui/ja/panel_region_covenant.xml  |   0
 .../skins/default/xui/ja/panel_region_debug.xml     |   0
 .../default/xui/ja/panel_region_environment.xml     |   0
 .../skins/default/xui/ja/panel_region_estate.xml    |   0
 .../skins/default/xui/ja/panel_region_general.xml   |   0
 .../skins/default/xui/ja/panel_region_terrain.xml   |   0
 .../skins/default/xui/ja/panel_script_ed.xml        |   0
 .../xui/ja/panel_script_limits_my_avatar.xml        |   0
 .../xui/ja/panel_script_limits_region_memory.xml    |   0
 .../default/xui/ja/panel_script_question_toast.xml  |   0
 .../skins/default/xui/ja/panel_scrolling_param.xml  |   0
 .../default/xui/ja/panel_scrolling_param_base.xml   |   0
 .../default/xui/ja/panel_side_tray_tab_caption.xml  |   0
 .../default/xui/ja/panel_sidetray_home_tab.xml      |   0
 .../default/xui/ja/panel_snapshot_inventory.xml     |   0
 .../skins/default/xui/ja/panel_snapshot_local.xml   |   0
 .../skins/default/xui/ja/panel_snapshot_options.xml |   0
 .../default/xui/ja/panel_snapshot_postcard.xml      |   0
 .../skins/default/xui/ja/panel_snapshot_profile.xml |   0
 .../skins/default/xui/ja/panel_sound_devices.xml    |   0
 .../default/xui/ja/panel_stand_stop_flying.xml      |   0
 .../skins/default/xui/ja/panel_status_bar.xml       |   0
 .../skins/default/xui/ja/panel_sys_well_item.xml    |   0
 .../skins/default/xui/ja/panel_teleport_history.xml |   0
 .../default/xui/ja/panel_teleport_history_item.xml  |   0
 .../skins/default/xui/ja/panel_voice_effect.xml     |   0
 .../skins/default/xui/ja/panel_volume_pulldown.xml  |   0
 .../skins/default/xui/ja/panel_world_map.xml        |   0
 indra/newview/skins/default/xui/ja/role_actions.xml |   0
 .../skins/default/xui/ja/sidepanel_appearance.xml   |   0
 .../skins/default/xui/ja/sidepanel_inventory.xml    |   0
 .../skins/default/xui/ja/sidepanel_item_info.xml    |   0
 .../skins/default/xui/ja/sidepanel_task_info.xml    |   0
 indra/newview/skins/default/xui/ja/strings.xml      |   0
 .../skins/default/xui/ja/teleport_strings.xml       |   0
 indra/newview/skins/default/xui/ja/xui_version.xml  |   0
 .../newview/skins/default/xui/pl/floater_about.xml  |   0
 .../skins/default/xui/pl/floater_about_land.xml     |   0
 .../skins/default/xui/pl/floater_activeim.xml       |   0
 .../default/xui/pl/floater_animation_preview.xml    |   0
 .../skins/default/xui/pl/floater_auction.xml        |   0
 .../skins/default/xui/pl/floater_avatar_picker.xml  |   0
 .../default/xui/pl/floater_avatar_textures.xml      |   0
 .../skins/default/xui/pl/floater_beacons.xml        |   0
 .../skins/default/xui/pl/floater_build_options.xml  |   0
 .../skins/default/xui/pl/floater_bulk_perms.xml     |   0
 .../newview/skins/default/xui/pl/floater_bumps.xml  |   0
 .../skins/default/xui/pl/floater_buy_contents.xml   |   0
 .../skins/default/xui/pl/floater_buy_currency.xml   |   0
 .../default/xui/pl/floater_buy_currency_html.xml    |   0
 .../skins/default/xui/pl/floater_buy_land.xml       |   0
 .../skins/default/xui/pl/floater_buy_object.xml     |   0
 .../newview/skins/default/xui/pl/floater_camera.xml |   0
 .../skins/default/xui/pl/floater_choose_group.xml   |   0
 .../skins/default/xui/pl/floater_color_picker.xml   |   0
 .../skins/default/xui/pl/floater_critical.xml       |   0
 .../skins/default/xui/pl/floater_display_name.xml   |   0
 .../newview/skins/default/xui/pl/floater_event.xml  |   0
 .../skins/default/xui/pl/floater_font_test.xml      |   0
 .../skins/default/xui/pl/floater_gesture.xml        |   0
 .../skins/default/xui/pl/floater_god_tools.xml      |   0
 .../default/xui/pl/floater_hardware_settings.xml    |   0
 .../skins/default/xui/pl/floater_help_browser.xml   |   0
 indra/newview/skins/default/xui/pl/floater_hud.xml  |   0
 .../skins/default/xui/pl/floater_im_container.xml   |   0
 .../skins/default/xui/pl/floater_im_session.xml     |   0
 .../skins/default/xui/pl/floater_image_preview.xml  |   0
 .../skins/default/xui/pl/floater_incoming_call.xml  |   0
 .../skins/default/xui/pl/floater_inspect.xml        |   0
 .../skins/default/xui/pl/floater_inventory.xml      |   0
 .../xui/pl/floater_inventory_item_properties.xml    |   0
 .../xui/pl/floater_inventory_view_finder.xml        |   0
 .../skins/default/xui/pl/floater_joystick.xml       |   0
 .../skins/default/xui/pl/floater_lagmeter.xml       |   0
 .../skins/default/xui/pl/floater_land_holdings.xml  |   0
 .../skins/default/xui/pl/floater_live_lsleditor.xml |   0
 .../skins/default/xui/pl/floater_lsl_guide.xml      |   0
 indra/newview/skins/default/xui/pl/floater_map.xml  |   0
 .../skins/default/xui/pl/floater_media_browser.xml  |   0
 .../skins/default/xui/pl/floater_media_settings.xml |   0
 .../skins/default/xui/pl/floater_mem_leaking.xml    |   0
 .../skins/default/xui/pl/floater_moveview.xml       |   0
 .../skins/default/xui/pl/floater_mute_object.xml    |   0
 .../skins/default/xui/pl/floater_nearby_chat.xml    |   0
 .../skins/default/xui/pl/floater_openobject.xml     |   0
 .../skins/default/xui/pl/floater_outgoing_call.xml  |   0
 indra/newview/skins/default/xui/pl/floater_pay.xml  |   0
 .../skins/default/xui/pl/floater_pay_object.xml     |   0
 .../skins/default/xui/pl/floater_perm_prefs.xml     |   0
 .../skins/default/xui/pl/floater_post_process.xml   |   0
 .../skins/default/xui/pl/floater_postcard.xml       |   0
 .../skins/default/xui/pl/floater_preferences.xml    |   0
 .../default/xui/pl/floater_preview_animation.xml    |   0
 .../default/xui/pl/floater_preview_gesture.xml      |   0
 .../default/xui/pl/floater_preview_notecard.xml     |   0
 .../skins/default/xui/pl/floater_preview_sound.xml  |   0
 .../default/xui/pl/floater_preview_texture.xml      |   0
 .../default/xui/pl/floater_publish_classified.xml   |   0
 .../default/xui/pl/floater_region_debug_console.xml |   0
 .../skins/default/xui/pl/floater_region_info.xml    |   0
 .../skins/default/xui/pl/floater_report_abuse.xml   |   0
 .../skins/default/xui/pl/floater_script_debug.xml   |   0
 .../default/xui/pl/floater_script_debug_panel.xml   |   0
 .../skins/default/xui/pl/floater_script_limits.xml  |   0
 .../skins/default/xui/pl/floater_script_preview.xml |   0
 .../skins/default/xui/pl/floater_script_queue.xml   |   0
 .../skins/default/xui/pl/floater_script_search.xml  |   0
 .../newview/skins/default/xui/pl/floater_search.xml |   0
 .../skins/default/xui/pl/floater_select_key.xml     |   0
 .../skins/default/xui/pl/floater_sell_land.xml      |   0
 .../skins/default/xui/pl/floater_settings_debug.xml |   0
 .../skins/default/xui/pl/floater_snapshot.xml       |   0
 .../skins/default/xui/pl/floater_sound_preview.xml  |   0
 .../newview/skins/default/xui/pl/floater_stats.xml  |   0
 .../skins/default/xui/pl/floater_sys_well.xml       |   0
 .../skins/default/xui/pl/floater_telehub.xml        |   0
 .../skins/default/xui/pl/floater_texture_ctrl.xml   |   0
 .../newview/skins/default/xui/pl/floater_tools.xml  |   0
 .../skins/default/xui/pl/floater_top_objects.xml    |   0
 indra/newview/skins/default/xui/pl/floater_tos.xml  |   0
 .../skins/default/xui/pl/floater_url_entry.xml      |   0
 .../skins/default/xui/pl/floater_voice_controls.xml |   0
 .../skins/default/xui/pl/floater_voice_effect.xml   |   0
 .../skins/default/xui/pl/floater_web_content.xml    |   0
 .../default/xui/pl/floater_whitelist_entry.xml      |   0
 .../skins/default/xui/pl/floater_window_size.xml    |   0
 .../skins/default/xui/pl/floater_world_map.xml      |   0
 .../newview/skins/default/xui/pl/inspect_avatar.xml |   0
 .../newview/skins/default/xui/pl/inspect_group.xml  |   0
 .../newview/skins/default/xui/pl/inspect_object.xml |   0
 .../skins/default/xui/pl/inspect_remote_object.xml  |   0
 .../skins/default/xui/pl/language_settings.xml      |   0
 .../skins/default/xui/pl/menu_add_wearable_gear.xml |   0
 .../skins/default/xui/pl/menu_attachment_other.xml  |   0
 .../skins/default/xui/pl/menu_attachment_self.xml   |   0
 .../skins/default/xui/pl/menu_avatar_icon.xml       |   0
 .../skins/default/xui/pl/menu_avatar_other.xml      |   0
 .../skins/default/xui/pl/menu_avatar_self.xml       |   0
 .../skins/default/xui/pl/menu_bottomtray.xml        |   0
 .../skins/default/xui/pl/menu_cof_attachment.xml    |   0
 .../skins/default/xui/pl/menu_cof_body_part.xml     |   0
 .../skins/default/xui/pl/menu_cof_clothing.xml      |   0
 .../newview/skins/default/xui/pl/menu_cof_gear.xml  |   0
 indra/newview/skins/default/xui/pl/menu_edit.xml    |   0
 .../newview/skins/default/xui/pl/menu_favorites.xml |   0
 .../skins/default/xui/pl/menu_gesture_gear.xml      |   0
 .../skins/default/xui/pl/menu_group_plus.xml        |   0
 .../skins/default/xui/pl/menu_hide_navbar.xml       |   0
 .../skins/default/xui/pl/menu_imchiclet_adhoc.xml   |   0
 .../skins/default/xui/pl/menu_imchiclet_group.xml   |   0
 .../skins/default/xui/pl/menu_imchiclet_p2p.xml     |   0
 .../default/xui/pl/menu_inspect_avatar_gear.xml     |   0
 .../default/xui/pl/menu_inspect_object_gear.xml     |   0
 .../skins/default/xui/pl/menu_inspect_self_gear.xml |   0
 .../skins/default/xui/pl/menu_inv_offer_chiclet.xml |   0
 .../newview/skins/default/xui/pl/menu_inventory.xml |   0
 .../skins/default/xui/pl/menu_inventory_add.xml     |   0
 .../default/xui/pl/menu_inventory_gear_default.xml  |   0
 indra/newview/skins/default/xui/pl/menu_land.xml    |   0
 .../newview/skins/default/xui/pl/menu_landmark.xml  |   0
 indra/newview/skins/default/xui/pl/menu_login.xml   |   0
 .../skins/default/xui/pl/menu_media_ctrl.xml        |   0
 .../newview/skins/default/xui/pl/menu_mini_map.xml  |   0
 indra/newview/skins/default/xui/pl/menu_navbar.xml  |   0
 .../skins/default/xui/pl/menu_nearby_chat.xml       |   0
 .../xui/pl/menu_notification_well_button.xml        |   0
 indra/newview/skins/default/xui/pl/menu_object.xml  |   0
 .../skins/default/xui/pl/menu_object_icon.xml       |   0
 .../skins/default/xui/pl/menu_outfit_gear.xml       |   0
 .../skins/default/xui/pl/menu_outfit_tab.xml        |   0
 .../skins/default/xui/pl/menu_participant_list.xml  |   0
 .../xui/pl/menu_people_friends_view_sort.xml        |   0
 .../skins/default/xui/pl/menu_people_groups.xml     |   0
 .../default/xui/pl/menu_people_groups_view_sort.xml |   0
 .../skins/default/xui/pl/menu_people_nearby.xml     |   0
 .../xui/pl/menu_people_nearby_multiselect.xml       |   0
 .../default/xui/pl/menu_people_nearby_view_sort.xml |   0
 .../default/xui/pl/menu_people_recent_view_sort.xml |   0
 indra/newview/skins/default/xui/pl/menu_picks.xml   |   0
 .../skins/default/xui/pl/menu_picks_plus.xml        |   0
 indra/newview/skins/default/xui/pl/menu_place.xml   |   0
 .../skins/default/xui/pl/menu_place_add_button.xml  |   0
 .../default/xui/pl/menu_places_gear_folder.xml      |   0
 .../default/xui/pl/menu_places_gear_landmark.xml    |   0
 .../skins/default/xui/pl/menu_profile_overflow.xml  |   0
 .../skins/default/xui/pl/menu_save_outfit.xml       |   0
 .../skins/default/xui/pl/menu_script_chiclet.xml    |   0
 indra/newview/skins/default/xui/pl/menu_slurl.xml   |   0
 .../default/xui/pl/menu_teleport_history_gear.xml   |   0
 .../default/xui/pl/menu_teleport_history_item.xml   |   0
 .../default/xui/pl/menu_teleport_history_tab.xml    |   0
 .../skins/default/xui/pl/menu_text_editor.xml       |   0
 .../skins/default/xui/pl/menu_topinfobar.xml        |   0
 .../newview/skins/default/xui/pl/menu_url_agent.xml |   0
 .../newview/skins/default/xui/pl/menu_url_group.xml |   0
 .../newview/skins/default/xui/pl/menu_url_http.xml  |   0
 .../skins/default/xui/pl/menu_url_inventory.xml     |   0
 indra/newview/skins/default/xui/pl/menu_url_map.xml |   0
 .../skins/default/xui/pl/menu_url_objectim.xml      |   0
 .../skins/default/xui/pl/menu_url_parcel.xml        |   0
 .../newview/skins/default/xui/pl/menu_url_slapp.xml |   0
 .../newview/skins/default/xui/pl/menu_url_slurl.xml |   0
 .../skins/default/xui/pl/menu_url_teleport.xml      |   0
 indra/newview/skins/default/xui/pl/menu_viewer.xml  |   0
 .../default/xui/pl/menu_wearable_list_item.xml      |   0
 .../skins/default/xui/pl/menu_wearing_gear.xml      |   0
 .../skins/default/xui/pl/menu_wearing_tab.xml       |   0
 indra/newview/skins/default/xui/pl/mime_types.xml   |   0
 .../skins/default/xui/pl/mime_types_linux.xml       |   0
 .../newview/skins/default/xui/pl/mime_types_mac.xml |   0
 .../newview/skins/default/xui/pl/notifications.xml  |   0
 .../skins/default/xui/pl/outfit_accordion_tab.xml   |   0
 .../default/xui/pl/panel_active_object_row.xml      |   0
 .../default/xui/pl/panel_adhoc_control_panel.xml    |   0
 .../skins/default/xui/pl/panel_avatar_list_item.xml |   0
 .../default/xui/pl/panel_block_list_sidetray.xml    |   0
 .../default/xui/pl/panel_body_parts_list_item.xml   |   0
 .../xui/pl/panel_bodyparts_list_button_bar.xml      |   0
 .../skins/default/xui/pl/panel_bottomtray.xml       |   0
 .../skins/default/xui/pl/panel_bottomtray_lite.xml  |   0
 .../skins/default/xui/pl/panel_classified_info.xml  |   0
 .../xui/pl/panel_clothing_list_button_bar.xml       |   0
 .../default/xui/pl/panel_clothing_list_item.xml     |   0
 .../skins/default/xui/pl/panel_cof_wearables.xml    |   0
 .../xui/pl/panel_deletable_wearable_list_item.xml   |   0
 .../xui/pl/panel_dummy_clothing_list_item.xml       |   0
 .../skins/default/xui/pl/panel_edit_alpha.xml       |   0
 .../skins/default/xui/pl/panel_edit_classified.xml  |   0
 .../skins/default/xui/pl/panel_edit_eyes.xml        |   0
 .../skins/default/xui/pl/panel_edit_gloves.xml      |   0
 .../skins/default/xui/pl/panel_edit_hair.xml        |   0
 .../skins/default/xui/pl/panel_edit_jacket.xml      |   0
 .../skins/default/xui/pl/panel_edit_pants.xml       |   0
 .../skins/default/xui/pl/panel_edit_physics.xml     |   0
 .../skins/default/xui/pl/panel_edit_pick.xml        |   0
 .../skins/default/xui/pl/panel_edit_profile.xml     |   0
 .../skins/default/xui/pl/panel_edit_shape.xml       |   0
 .../skins/default/xui/pl/panel_edit_shirt.xml       |   0
 .../skins/default/xui/pl/panel_edit_shoes.xml       |   0
 .../skins/default/xui/pl/panel_edit_skin.xml        |   0
 .../skins/default/xui/pl/panel_edit_skirt.xml       |   0
 .../skins/default/xui/pl/panel_edit_socks.xml       |   0
 .../skins/default/xui/pl/panel_edit_tattoo.xml      |   0
 .../skins/default/xui/pl/panel_edit_underpants.xml  |   0
 .../skins/default/xui/pl/panel_edit_undershirt.xml  |   0
 .../skins/default/xui/pl/panel_edit_wearable.xml    |   0
 .../default/xui/pl/panel_group_control_panel.xml    |   0
 .../skins/default/xui/pl/panel_group_general.xml    |   0
 .../default/xui/pl/panel_group_info_sidetray.xml    |   0
 .../skins/default/xui/pl/panel_group_invite.xml     |   0
 .../skins/default/xui/pl/panel_group_land_money.xml |   0
 .../skins/default/xui/pl/panel_group_list_item.xml  |   0
 .../skins/default/xui/pl/panel_group_notices.xml    |   0
 .../skins/default/xui/pl/panel_group_notify.xml     |   0
 .../skins/default/xui/pl/panel_group_roles.xml      |   0
 .../skins/default/xui/pl/panel_im_control_panel.xml |   0
 .../skins/default/xui/pl/panel_inventory_item.xml   |   0
 .../skins/default/xui/pl/panel_landmark_info.xml    |   0
 .../skins/default/xui/pl/panel_landmarks.xml        |   0
 indra/newview/skins/default/xui/pl/panel_login.xml  |   0
 .../skins/default/xui/pl/panel_main_inventory.xml   |   0
 indra/newview/skins/default/xui/pl/panel_me.xml     |   0
 .../default/xui/pl/panel_media_settings_general.xml |   0
 .../xui/pl/panel_media_settings_permissions.xml     |   0
 .../xui/pl/panel_media_settings_security.xml        |   0
 .../skins/default/xui/pl/panel_navigation_bar.xml   |   0
 .../skins/default/xui/pl/panel_nearby_chat_bar.xml  |   0
 .../skins/default/xui/pl/panel_nearby_media.xml     |   0
 .../skins/default/xui/pl/panel_notify_textbox.xml   |   0
 .../default/xui/pl/panel_online_status_toast.xml    |   0
 .../skins/default/xui/pl/panel_outfit_edit.xml      |   0
 .../default/xui/pl/panel_outfits_inventory.xml      |   0
 .../xui/pl/panel_outfits_inventory_gear_default.xml |   0
 .../skins/default/xui/pl/panel_outfits_list.xml     |   0
 .../skins/default/xui/pl/panel_outfits_wearing.xml  |   0
 indra/newview/skins/default/xui/pl/panel_people.xml |   0
 .../skins/default/xui/pl/panel_pick_info.xml        |   0
 indra/newview/skins/default/xui/pl/panel_picks.xml  |   0
 .../skins/default/xui/pl/panel_place_profile.xml    |   0
 indra/newview/skins/default/xui/pl/panel_places.xml |   0
 .../default/xui/pl/panel_preferences_advanced.xml   |   0
 .../default/xui/pl/panel_preferences_alerts.xml     |   0
 .../skins/default/xui/pl/panel_preferences_chat.xml |   0
 .../default/xui/pl/panel_preferences_colors.xml     |   0
 .../default/xui/pl/panel_preferences_general.xml    |   0
 .../default/xui/pl/panel_preferences_graphics1.xml  |   0
 .../skins/default/xui/pl/panel_preferences_move.xml |   0
 .../default/xui/pl/panel_preferences_privacy.xml    |   0
 .../default/xui/pl/panel_preferences_setup.xml      |   0
 .../default/xui/pl/panel_preferences_sound.xml      |   0
 .../default/xui/pl/panel_prim_media_controls.xml    |   0
 .../skins/default/xui/pl/panel_region_covenant.xml  |   0
 .../skins/default/xui/pl/panel_region_debug.xml     |   0
 .../skins/default/xui/pl/panel_region_estate.xml    |   0
 .../skins/default/xui/pl/panel_region_general.xml   |   0
 .../skins/default/xui/pl/panel_region_terrain.xml   |   0
 .../skins/default/xui/pl/panel_region_texture.xml   |   0
 .../skins/default/xui/pl/panel_script_ed.xml        |   0
 .../xui/pl/panel_script_limits_my_avatar.xml        |   0
 .../xui/pl/panel_script_limits_region_memory.xml    |   0
 .../skins/default/xui/pl/panel_scrolling_param.xml  |   0
 .../default/xui/pl/panel_scrolling_param_base.xml   |   0
 .../skins/default/xui/pl/panel_side_tray.xml        |   0
 .../default/xui/pl/panel_side_tray_tab_caption.xml  |   0
 .../default/xui/pl/panel_stand_stop_flying.xml      |   0
 .../skins/default/xui/pl/panel_status_bar.xml       |   0
 .../skins/default/xui/pl/panel_teleport_history.xml |   0
 .../default/xui/pl/panel_teleport_history_item.xml  |   0
 .../skins/default/xui/pl/panel_voice_effect.xml     |   0
 .../skins/default/xui/pl/panel_volume_pulldown.xml  |   0
 .../skins/default/xui/pl/panel_world_map.xml        |   0
 indra/newview/skins/default/xui/pl/role_actions.xml |   0
 .../skins/default/xui/pl/sidepanel_appearance.xml   |   0
 .../skins/default/xui/pl/sidepanel_inventory.xml    |   0
 .../skins/default/xui/pl/sidepanel_item_info.xml    |   0
 .../skins/default/xui/pl/sidepanel_task_info.xml    |   0
 indra/newview/skins/default/xui/pl/strings.xml      |   0
 .../skins/default/xui/pl/teleport_strings.xml       |   0
 indra/newview/skins/default/xui/pl/xui_version.xml  |   0
 .../newview/skins/default/xui/pt/floater_about.xml  |   0
 .../skins/default/xui/pt/floater_about_land.xml     |   0
 .../skins/default/xui/pt/floater_activeim.xml       |   0
 .../xui/pt/floater_animation_anim_preview.xml       |   0
 .../xui/pt/floater_animation_bvh_preview.xml        |   0
 .../skins/default/xui/pt/floater_auction.xml        |   0
 .../skins/default/xui/pt/floater_autoreplace.xml    |   0
 .../newview/skins/default/xui/pt/floater_avatar.xml |   0
 .../skins/default/xui/pt/floater_avatar_picker.xml  |   0
 .../default/xui/pt/floater_avatar_textures.xml      |   0
 .../skins/default/xui/pt/floater_beacons.xml        |   0
 .../skins/default/xui/pt/floater_build_options.xml  |   0
 .../skins/default/xui/pt/floater_bulk_perms.xml     |   0
 .../newview/skins/default/xui/pt/floater_bumps.xml  |   0
 .../skins/default/xui/pt/floater_buy_contents.xml   |   0
 .../skins/default/xui/pt/floater_buy_currency.xml   |   0
 .../default/xui/pt/floater_buy_currency_html.xml    |   0
 .../skins/default/xui/pt/floater_buy_land.xml       |   0
 .../skins/default/xui/pt/floater_buy_object.xml     |   0
 .../newview/skins/default/xui/pt/floater_camera.xml |   0
 .../skins/default/xui/pt/floater_chat_bar.xml       |   0
 .../skins/default/xui/pt/floater_choose_group.xml   |   0
 .../skins/default/xui/pt/floater_color_picker.xml   |   0
 .../skins/default/xui/pt/floater_critical.xml       |   0
 .../default/xui/pt/floater_delete_env_preset.xml    |   0
 .../skins/default/xui/pt/floater_destinations.xml   |   0
 .../skins/default/xui/pt/floater_display_name.xml   |   0
 .../skins/default/xui/pt/floater_edit_day_cycle.xml |   0
 .../default/xui/pt/floater_edit_sky_preset.xml      |   0
 .../default/xui/pt/floater_edit_water_preset.xml    |   0
 .../default/xui/pt/floater_environment_settings.xml |   0
 .../newview/skins/default/xui/pt/floater_event.xml  |   0
 .../skins/default/xui/pt/floater_fast_timers.xml    |   0
 .../skins/default/xui/pt/floater_font_test.xml      |   0
 .../skins/default/xui/pt/floater_gesture.xml        |   0
 .../skins/default/xui/pt/floater_god_tools.xml      |   0
 .../default/xui/pt/floater_hardware_settings.xml    |   0
 .../skins/default/xui/pt/floater_help_browser.xml   |   0
 .../newview/skins/default/xui/pt/floater_how_to.xml |   0
 indra/newview/skins/default/xui/pt/floater_hud.xml  |   0
 .../skins/default/xui/pt/floater_im_container.xml   |   0
 .../skins/default/xui/pt/floater_im_session.xml     |   0
 .../skins/default/xui/pt/floater_image_preview.xml  |   0
 .../skins/default/xui/pt/floater_import_collada.xml |   0
 .../skins/default/xui/pt/floater_incoming_call.xml  |   0
 .../skins/default/xui/pt/floater_inspect.xml        |   0
 .../xui/pt/floater_inventory_item_properties.xml    |   0
 .../xui/pt/floater_inventory_view_finder.xml        |   0
 .../skins/default/xui/pt/floater_joystick.xml       |   0
 .../skins/default/xui/pt/floater_lagmeter.xml       |   0
 .../skins/default/xui/pt/floater_land_holdings.xml  |   0
 .../skins/default/xui/pt/floater_live_lsleditor.xml |   0
 .../skins/default/xui/pt/floater_lsl_guide.xml      |   0
 indra/newview/skins/default/xui/pt/floater_map.xml  |   0
 .../skins/default/xui/pt/floater_media_browser.xml  |   0
 .../skins/default/xui/pt/floater_media_settings.xml |   0
 .../skins/default/xui/pt/floater_mem_leaking.xml    |   0
 .../default/xui/pt/floater_merchant_outbox.xml      |   0
 .../skins/default/xui/pt/floater_model_preview.xml  |   0
 .../skins/default/xui/pt/floater_moveview.xml       |   0
 .../skins/default/xui/pt/floater_mute_object.xml    |   0
 .../skins/default/xui/pt/floater_my_appearance.xml  |   0
 .../skins/default/xui/pt/floater_my_inventory.xml   |   0
 .../skins/default/xui/pt/floater_object_weights.xml |   0
 .../skins/default/xui/pt/floater_openobject.xml     |   0
 .../skins/default/xui/pt/floater_outfit_save_as.xml |   0
 .../skins/default/xui/pt/floater_outgoing_call.xml  |   0
 .../xui/pt/floater_pathfinding_characters.xml       |   0
 .../default/xui/pt/floater_pathfinding_console.xml  |   0
 .../default/xui/pt/floater_pathfinding_linksets.xml |   0
 indra/newview/skins/default/xui/pt/floater_pay.xml  |   0
 .../skins/default/xui/pt/floater_pay_object.xml     |   0
 .../newview/skins/default/xui/pt/floater_people.xml |   0
 .../skins/default/xui/pt/floater_perm_prefs.xml     |   0
 .../newview/skins/default/xui/pt/floater_picks.xml  |   0
 .../newview/skins/default/xui/pt/floater_places.xml |   0
 .../skins/default/xui/pt/floater_post_process.xml   |   0
 .../skins/default/xui/pt/floater_preferences.xml    |   0
 .../default/xui/pt/floater_preferences_proxy.xml    |   0
 .../default/xui/pt/floater_preview_animation.xml    |   0
 .../default/xui/pt/floater_preview_gesture.xml      |   0
 .../default/xui/pt/floater_preview_notecard.xml     |   0
 .../skins/default/xui/pt/floater_preview_sound.xml  |   0
 .../default/xui/pt/floater_preview_texture.xml      |   0
 .../default/xui/pt/floater_price_for_listing.xml    |   0
 .../default/xui/pt/floater_publish_classified.xml   |   0
 .../default/xui/pt/floater_region_debug_console.xml |   0
 .../skins/default/xui/pt/floater_region_info.xml    |   0
 .../skins/default/xui/pt/floater_report_abuse.xml   |   0
 .../skins/default/xui/pt/floater_script_debug.xml   |   0
 .../default/xui/pt/floater_script_debug_panel.xml   |   0
 .../skins/default/xui/pt/floater_script_limits.xml  |   0
 .../skins/default/xui/pt/floater_script_preview.xml |   0
 .../skins/default/xui/pt/floater_script_queue.xml   |   0
 .../skins/default/xui/pt/floater_script_search.xml  |   0
 .../newview/skins/default/xui/pt/floater_search.xml |   0
 .../skins/default/xui/pt/floater_select_key.xml     |   0
 .../skins/default/xui/pt/floater_sell_land.xml      |   0
 .../skins/default/xui/pt/floater_settings_debug.xml |   0
 .../skins/default/xui/pt/floater_snapshot.xml       |   0
 .../skins/default/xui/pt/floater_sound_devices.xml  |   0
 .../skins/default/xui/pt/floater_sound_preview.xml  |   0
 .../skins/default/xui/pt/floater_spellcheck.xml     |   0
 .../default/xui/pt/floater_spellcheck_import.xml    |   0
 .../newview/skins/default/xui/pt/floater_stats.xml  |   0
 .../skins/default/xui/pt/floater_sys_well.xml       |   0
 .../skins/default/xui/pt/floater_telehub.xml        |   0
 .../default/xui/pt/floater_test_layout_stacks.xml   |   0
 .../xui/pt/floater_test_text_vertical_aligment.xml  |   0
 .../skins/default/xui/pt/floater_texture_ctrl.xml   |   0
 .../xui/pt/floater_texture_fetch_debugger.xml       |   0
 .../newview/skins/default/xui/pt/floater_tools.xml  |   0
 .../skins/default/xui/pt/floater_top_objects.xml    |   0
 indra/newview/skins/default/xui/pt/floater_tos.xml  |   0
 .../newview/skins/default/xui/pt/floater_toybox.xml |   0
 .../default/xui/pt/floater_translation_settings.xml |   0
 .../skins/default/xui/pt/floater_url_entry.xml      |   0
 .../skins/default/xui/pt/floater_voice_controls.xml |   0
 .../skins/default/xui/pt/floater_voice_effect.xml   |   0
 .../skins/default/xui/pt/floater_web_content.xml    |   0
 .../default/xui/pt/floater_whitelist_entry.xml      |   0
 .../skins/default/xui/pt/floater_window_size.xml    |   0
 .../skins/default/xui/pt/floater_world_map.xml      |   0
 .../newview/skins/default/xui/pt/inspect_avatar.xml |   0
 .../newview/skins/default/xui/pt/inspect_group.xml  |   0
 .../newview/skins/default/xui/pt/inspect_object.xml |   0
 .../skins/default/xui/pt/inspect_remote_object.xml  |   0
 .../skins/default/xui/pt/language_settings.xml      |   0
 .../skins/default/xui/pt/menu_add_wearable_gear.xml |   0
 .../skins/default/xui/pt/menu_attachment_other.xml  |   0
 .../skins/default/xui/pt/menu_attachment_self.xml   |   0
 .../skins/default/xui/pt/menu_avatar_icon.xml       |   0
 .../skins/default/xui/pt/menu_avatar_other.xml      |   0
 .../skins/default/xui/pt/menu_avatar_self.xml       |   0
 .../skins/default/xui/pt/menu_cof_attachment.xml    |   0
 .../skins/default/xui/pt/menu_cof_body_part.xml     |   0
 .../skins/default/xui/pt/menu_cof_clothing.xml      |   0
 .../newview/skins/default/xui/pt/menu_cof_gear.xml  |   0
 indra/newview/skins/default/xui/pt/menu_edit.xml    |   0
 .../newview/skins/default/xui/pt/menu_favorites.xml |   0
 .../skins/default/xui/pt/menu_gesture_gear.xml      |   0
 .../skins/default/xui/pt/menu_group_plus.xml        |   0
 .../skins/default/xui/pt/menu_hide_navbar.xml       |   0
 .../skins/default/xui/pt/menu_imchiclet_adhoc.xml   |   0
 .../skins/default/xui/pt/menu_imchiclet_group.xml   |   0
 .../skins/default/xui/pt/menu_imchiclet_p2p.xml     |   0
 .../default/xui/pt/menu_inspect_avatar_gear.xml     |   0
 .../default/xui/pt/menu_inspect_object_gear.xml     |   0
 .../skins/default/xui/pt/menu_inspect_self_gear.xml |   0
 .../skins/default/xui/pt/menu_inv_offer_chiclet.xml |   0
 .../newview/skins/default/xui/pt/menu_inventory.xml |   0
 .../skins/default/xui/pt/menu_inventory_add.xml     |   0
 .../default/xui/pt/menu_inventory_gear_default.xml  |   0
 indra/newview/skins/default/xui/pt/menu_land.xml    |   0
 .../newview/skins/default/xui/pt/menu_landmark.xml  |   0
 indra/newview/skins/default/xui/pt/menu_login.xml   |   0
 .../skins/default/xui/pt/menu_media_ctrl.xml        |   0
 .../newview/skins/default/xui/pt/menu_mini_map.xml  |   0
 .../xui/pt/menu_model_import_gear_default.xml       |   0
 indra/newview/skins/default/xui/pt/menu_navbar.xml  |   0
 .../skins/default/xui/pt/menu_nearby_chat.xml       |   0
 .../xui/pt/menu_notification_well_button.xml        |   0
 indra/newview/skins/default/xui/pt/menu_object.xml  |   0
 .../skins/default/xui/pt/menu_object_icon.xml       |   0
 .../skins/default/xui/pt/menu_outfit_gear.xml       |   0
 .../skins/default/xui/pt/menu_outfit_tab.xml        |   0
 .../skins/default/xui/pt/menu_participant_list.xml  |   0
 .../xui/pt/menu_people_friends_view_sort.xml        |   0
 .../skins/default/xui/pt/menu_people_groups.xml     |   0
 .../default/xui/pt/menu_people_groups_view_sort.xml |   0
 .../skins/default/xui/pt/menu_people_nearby.xml     |   0
 .../xui/pt/menu_people_nearby_multiselect.xml       |   0
 .../default/xui/pt/menu_people_nearby_view_sort.xml |   0
 .../default/xui/pt/menu_people_recent_view_sort.xml |   0
 indra/newview/skins/default/xui/pt/menu_picks.xml   |   0
 .../skins/default/xui/pt/menu_picks_plus.xml        |   0
 indra/newview/skins/default/xui/pt/menu_place.xml   |   0
 .../skins/default/xui/pt/menu_place_add_button.xml  |   0
 .../default/xui/pt/menu_places_gear_folder.xml      |   0
 .../default/xui/pt/menu_places_gear_landmark.xml    |   0
 .../skins/default/xui/pt/menu_profile_overflow.xml  |   0
 .../skins/default/xui/pt/menu_save_outfit.xml       |   0
 .../skins/default/xui/pt/menu_script_chiclet.xml    |   0
 indra/newview/skins/default/xui/pt/menu_slurl.xml   |   0
 .../default/xui/pt/menu_teleport_history_gear.xml   |   0
 .../default/xui/pt/menu_teleport_history_item.xml   |   0
 .../default/xui/pt/menu_teleport_history_tab.xml    |   0
 .../skins/default/xui/pt/menu_text_editor.xml       |   0
 .../newview/skins/default/xui/pt/menu_toolbars.xml  |   0
 .../skins/default/xui/pt/menu_topinfobar.xml        |   0
 .../newview/skins/default/xui/pt/menu_url_agent.xml |   0
 .../newview/skins/default/xui/pt/menu_url_group.xml |   0
 .../newview/skins/default/xui/pt/menu_url_http.xml  |   0
 .../skins/default/xui/pt/menu_url_inventory.xml     |   0
 indra/newview/skins/default/xui/pt/menu_url_map.xml |   0
 .../skins/default/xui/pt/menu_url_objectim.xml      |   0
 .../skins/default/xui/pt/menu_url_parcel.xml        |   0
 .../newview/skins/default/xui/pt/menu_url_slapp.xml |   0
 .../newview/skins/default/xui/pt/menu_url_slurl.xml |   0
 .../skins/default/xui/pt/menu_url_teleport.xml      |   0
 indra/newview/skins/default/xui/pt/menu_viewer.xml  |   0
 .../default/xui/pt/menu_wearable_list_item.xml      |   0
 .../skins/default/xui/pt/menu_wearing_gear.xml      |   0
 .../skins/default/xui/pt/menu_wearing_tab.xml       |   0
 indra/newview/skins/default/xui/pt/mime_types.xml   |   0
 .../skins/default/xui/pt/mime_types_linux.xml       |   0
 .../newview/skins/default/xui/pt/mime_types_mac.xml |   0
 .../newview/skins/default/xui/pt/notifications.xml  |   0
 .../skins/default/xui/pt/outfit_accordion_tab.xml   |   0
 .../default/xui/pt/panel_active_object_row.xml      |   0
 .../default/xui/pt/panel_adhoc_control_panel.xml    |   0
 .../skins/default/xui/pt/panel_avatar_list_item.xml |   0
 .../default/xui/pt/panel_block_list_sidetray.xml    |   0
 .../default/xui/pt/panel_body_parts_list_item.xml   |   0
 .../xui/pt/panel_bodyparts_list_button_bar.xml      |   0
 .../skins/default/xui/pt/panel_bottomtray_lite.xml  |   0
 .../skins/default/xui/pt/panel_chiclet_bar.xml      |   0
 .../skins/default/xui/pt/panel_classified_info.xml  |   0
 .../xui/pt/panel_clothing_list_button_bar.xml       |   0
 .../default/xui/pt/panel_clothing_list_item.xml     |   0
 .../skins/default/xui/pt/panel_cof_wearables.xml    |   0
 .../xui/pt/panel_deletable_wearable_list_item.xml   |   0
 .../xui/pt/panel_dummy_clothing_list_item.xml       |   0
 .../skins/default/xui/pt/panel_edit_alpha.xml       |   0
 .../skins/default/xui/pt/panel_edit_classified.xml  |   0
 .../skins/default/xui/pt/panel_edit_eyes.xml        |   0
 .../skins/default/xui/pt/panel_edit_gloves.xml      |   0
 .../skins/default/xui/pt/panel_edit_hair.xml        |   0
 .../skins/default/xui/pt/panel_edit_jacket.xml      |   0
 .../skins/default/xui/pt/panel_edit_pants.xml       |   0
 .../skins/default/xui/pt/panel_edit_physics.xml     |   0
 .../skins/default/xui/pt/panel_edit_pick.xml        |   0
 .../skins/default/xui/pt/panel_edit_profile.xml     |   0
 .../skins/default/xui/pt/panel_edit_shape.xml       |   0
 .../skins/default/xui/pt/panel_edit_shirt.xml       |   0
 .../skins/default/xui/pt/panel_edit_shoes.xml       |   0
 .../skins/default/xui/pt/panel_edit_skin.xml        |   0
 .../skins/default/xui/pt/panel_edit_skirt.xml       |   0
 .../skins/default/xui/pt/panel_edit_socks.xml       |   0
 .../skins/default/xui/pt/panel_edit_tattoo.xml      |   0
 .../skins/default/xui/pt/panel_edit_underpants.xml  |   0
 .../skins/default/xui/pt/panel_edit_undershirt.xml  |   0
 .../skins/default/xui/pt/panel_edit_wearable.xml    |   0
 .../default/xui/pt/panel_group_control_panel.xml    |   0
 .../skins/default/xui/pt/panel_group_general.xml    |   0
 .../default/xui/pt/panel_group_info_sidetray.xml    |   0
 .../skins/default/xui/pt/panel_group_invite.xml     |   0
 .../skins/default/xui/pt/panel_group_land_money.xml |   0
 .../skins/default/xui/pt/panel_group_list_item.xml  |   0
 .../skins/default/xui/pt/panel_group_notices.xml    |   0
 .../skins/default/xui/pt/panel_group_notify.xml     |   0
 .../skins/default/xui/pt/panel_group_roles.xml      |   0
 .../skins/default/xui/pt/panel_im_control_panel.xml |   0
 .../skins/default/xui/pt/panel_inventory_item.xml   |   0
 .../skins/default/xui/pt/panel_landmark_info.xml    |   0
 .../skins/default/xui/pt/panel_landmarks.xml        |   0
 indra/newview/skins/default/xui/pt/panel_login.xml  |   0
 .../skins/default/xui/pt/panel_main_inventory.xml   |   0
 indra/newview/skins/default/xui/pt/panel_me.xml     |   0
 .../default/xui/pt/panel_media_settings_general.xml |   0
 .../xui/pt/panel_media_settings_permissions.xml     |   0
 .../xui/pt/panel_media_settings_security.xml        |   0
 .../skins/default/xui/pt/panel_navigation_bar.xml   |   0
 .../skins/default/xui/pt/panel_nearby_chat.xml      |   0
 .../skins/default/xui/pt/panel_nearby_chat_bar.xml  |   0
 .../skins/default/xui/pt/panel_nearby_media.xml     |   0
 .../skins/default/xui/pt/panel_notify_textbox.xml   |   0
 .../default/xui/pt/panel_online_status_toast.xml    |   0
 .../skins/default/xui/pt/panel_outbox_inventory.xml |   0
 .../skins/default/xui/pt/panel_outfit_edit.xml      |   0
 .../default/xui/pt/panel_outfits_inventory.xml      |   0
 .../xui/pt/panel_outfits_inventory_gear_default.xml |   0
 .../skins/default/xui/pt/panel_outfits_list.xml     |   0
 .../skins/default/xui/pt/panel_outfits_wearing.xml  |   0
 indra/newview/skins/default/xui/pt/panel_people.xml |   0
 .../skins/default/xui/pt/panel_pick_info.xml        |   0
 indra/newview/skins/default/xui/pt/panel_picks.xml  |   0
 .../skins/default/xui/pt/panel_place_profile.xml    |   0
 indra/newview/skins/default/xui/pt/panel_places.xml |   0
 .../skins/default/xui/pt/panel_postcard_message.xml |   0
 .../default/xui/pt/panel_postcard_settings.xml      |   0
 .../default/xui/pt/panel_preferences_advanced.xml   |   0
 .../default/xui/pt/panel_preferences_alerts.xml     |   0
 .../skins/default/xui/pt/panel_preferences_chat.xml |   0
 .../default/xui/pt/panel_preferences_colors.xml     |   0
 .../default/xui/pt/panel_preferences_general.xml    |   0
 .../default/xui/pt/panel_preferences_graphics1.xml  |   0
 .../skins/default/xui/pt/panel_preferences_move.xml |   0
 .../default/xui/pt/panel_preferences_privacy.xml    |   0
 .../default/xui/pt/panel_preferences_setup.xml      |   0
 .../default/xui/pt/panel_preferences_sound.xml      |   0
 .../default/xui/pt/panel_prim_media_controls.xml    |   0
 .../skins/default/xui/pt/panel_region_covenant.xml  |   0
 .../skins/default/xui/pt/panel_region_debug.xml     |   0
 .../default/xui/pt/panel_region_environment.xml     |   0
 .../skins/default/xui/pt/panel_region_estate.xml    |   0
 .../skins/default/xui/pt/panel_region_general.xml   |   0
 .../skins/default/xui/pt/panel_region_terrain.xml   |   0
 .../skins/default/xui/pt/panel_script_ed.xml        |   0
 .../xui/pt/panel_script_limits_my_avatar.xml        |   0
 .../xui/pt/panel_script_limits_region_memory.xml    |   0
 .../default/xui/pt/panel_script_question_toast.xml  |   0
 .../skins/default/xui/pt/panel_scrolling_param.xml  |   0
 .../default/xui/pt/panel_scrolling_param_base.xml   |   0
 .../default/xui/pt/panel_side_tray_tab_caption.xml  |   0
 .../default/xui/pt/panel_snapshot_inventory.xml     |   0
 .../skins/default/xui/pt/panel_snapshot_local.xml   |   0
 .../skins/default/xui/pt/panel_snapshot_options.xml |   0
 .../default/xui/pt/panel_snapshot_postcard.xml      |   0
 .../skins/default/xui/pt/panel_snapshot_profile.xml |   0
 .../skins/default/xui/pt/panel_sound_devices.xml    |   0
 .../default/xui/pt/panel_stand_stop_flying.xml      |   0
 .../skins/default/xui/pt/panel_status_bar.xml       |   0
 .../skins/default/xui/pt/panel_teleport_history.xml |   0
 .../default/xui/pt/panel_teleport_history_item.xml  |   0
 .../skins/default/xui/pt/panel_voice_effect.xml     |   0
 .../skins/default/xui/pt/panel_volume_pulldown.xml  |   0
 .../skins/default/xui/pt/panel_world_map.xml        |   0
 indra/newview/skins/default/xui/pt/role_actions.xml |   0
 .../skins/default/xui/pt/sidepanel_appearance.xml   |   0
 .../skins/default/xui/pt/sidepanel_inventory.xml    |   0
 .../skins/default/xui/pt/sidepanel_item_info.xml    |   0
 .../skins/default/xui/pt/sidepanel_task_info.xml    |   0
 indra/newview/skins/default/xui/pt/strings.xml      |   0
 .../skins/default/xui/pt/teleport_strings.xml       |   0
 indra/newview/skins/default/xui/pt/xui_version.xml  |   0
 indra/newview/skins/default/xui/ru/floater_aaa.xml  |   0
 .../newview/skins/default/xui/ru/floater_about.xml  |   0
 .../skins/default/xui/ru/floater_about_land.xml     |   0
 .../skins/default/xui/ru/floater_activeim.xml       |   0
 .../xui/ru/floater_animation_anim_preview.xml       |   0
 .../xui/ru/floater_animation_bvh_preview.xml        |   0
 .../skins/default/xui/ru/floater_auction.xml        |   0
 .../skins/default/xui/ru/floater_autoreplace.xml    |   0
 .../newview/skins/default/xui/ru/floater_avatar.xml |   0
 .../skins/default/xui/ru/floater_avatar_picker.xml  |   0
 .../default/xui/ru/floater_avatar_textures.xml      |   0
 .../skins/default/xui/ru/floater_beacons.xml        |   0
 .../skins/default/xui/ru/floater_build_options.xml  |   0
 .../skins/default/xui/ru/floater_bulk_perms.xml     |   0
 .../newview/skins/default/xui/ru/floater_bumps.xml  |   0
 .../skins/default/xui/ru/floater_buy_contents.xml   |   0
 .../skins/default/xui/ru/floater_buy_currency.xml   |   0
 .../default/xui/ru/floater_buy_currency_html.xml    |   0
 .../skins/default/xui/ru/floater_buy_land.xml       |   0
 .../skins/default/xui/ru/floater_buy_object.xml     |   0
 .../newview/skins/default/xui/ru/floater_camera.xml |   0
 .../skins/default/xui/ru/floater_chat_bar.xml       |   0
 .../skins/default/xui/ru/floater_choose_group.xml   |   0
 .../skins/default/xui/ru/floater_color_picker.xml   |   0
 .../skins/default/xui/ru/floater_critical.xml       |   0
 .../default/xui/ru/floater_delete_env_preset.xml    |   0
 .../skins/default/xui/ru/floater_destinations.xml   |   0
 .../skins/default/xui/ru/floater_display_name.xml   |   0
 .../skins/default/xui/ru/floater_edit_day_cycle.xml |   0
 .../default/xui/ru/floater_edit_sky_preset.xml      |   0
 .../default/xui/ru/floater_edit_water_preset.xml    |   0
 .../default/xui/ru/floater_environment_settings.xml |   0
 .../newview/skins/default/xui/ru/floater_event.xml  |   0
 .../skins/default/xui/ru/floater_fast_timers.xml    |   0
 .../skins/default/xui/ru/floater_font_test.xml      |   0
 .../skins/default/xui/ru/floater_gesture.xml        |   0
 .../skins/default/xui/ru/floater_god_tools.xml      |   0
 .../default/xui/ru/floater_hardware_settings.xml    |   0
 .../skins/default/xui/ru/floater_help_browser.xml   |   0
 .../newview/skins/default/xui/ru/floater_how_to.xml |   0
 indra/newview/skins/default/xui/ru/floater_hud.xml  |   0
 .../skins/default/xui/ru/floater_im_container.xml   |   0
 .../skins/default/xui/ru/floater_im_session.xml     |   0
 .../skins/default/xui/ru/floater_image_preview.xml  |   0
 .../skins/default/xui/ru/floater_import_collada.xml |   0
 .../skins/default/xui/ru/floater_incoming_call.xml  |   0
 .../skins/default/xui/ru/floater_inspect.xml        |   0
 .../xui/ru/floater_inventory_item_properties.xml    |   0
 .../xui/ru/floater_inventory_view_finder.xml        |   0
 .../skins/default/xui/ru/floater_joystick.xml       |   0
 .../skins/default/xui/ru/floater_lagmeter.xml       |   0
 .../skins/default/xui/ru/floater_land_holdings.xml  |   0
 .../skins/default/xui/ru/floater_live_lsleditor.xml |   0
 .../skins/default/xui/ru/floater_lsl_guide.xml      |   0
 indra/newview/skins/default/xui/ru/floater_map.xml  |   0
 .../skins/default/xui/ru/floater_media_browser.xml  |   0
 .../skins/default/xui/ru/floater_media_settings.xml |   0
 .../skins/default/xui/ru/floater_mem_leaking.xml    |   0
 .../default/xui/ru/floater_merchant_outbox.xml      |   0
 .../skins/default/xui/ru/floater_model_preview.xml  |   0
 .../skins/default/xui/ru/floater_moveview.xml       |   0
 .../skins/default/xui/ru/floater_mute_object.xml    |   0
 .../skins/default/xui/ru/floater_my_appearance.xml  |   0
 .../skins/default/xui/ru/floater_my_inventory.xml   |   0
 .../skins/default/xui/ru/floater_notification.xml   |   0
 .../xui/ru/floater_notifications_console.xml        |   0
 .../skins/default/xui/ru/floater_object_weights.xml |   0
 .../skins/default/xui/ru/floater_openobject.xml     |   0
 .../skins/default/xui/ru/floater_outfit_save_as.xml |   0
 .../skins/default/xui/ru/floater_outgoing_call.xml  |   0
 .../xui/ru/floater_pathfinding_characters.xml       |   0
 .../default/xui/ru/floater_pathfinding_console.xml  |   0
 .../default/xui/ru/floater_pathfinding_linksets.xml |   0
 indra/newview/skins/default/xui/ru/floater_pay.xml  |   0
 .../skins/default/xui/ru/floater_pay_object.xml     |   0
 .../newview/skins/default/xui/ru/floater_people.xml |   0
 .../skins/default/xui/ru/floater_perm_prefs.xml     |   0
 .../newview/skins/default/xui/ru/floater_picks.xml  |   0
 .../newview/skins/default/xui/ru/floater_places.xml |   0
 .../skins/default/xui/ru/floater_post_process.xml   |   0
 .../skins/default/xui/ru/floater_preferences.xml    |   0
 .../default/xui/ru/floater_preferences_proxy.xml    |   0
 .../default/xui/ru/floater_preview_animation.xml    |   0
 .../default/xui/ru/floater_preview_gesture.xml      |   0
 .../default/xui/ru/floater_preview_notecard.xml     |   0
 .../skins/default/xui/ru/floater_preview_sound.xml  |   0
 .../default/xui/ru/floater_preview_texture.xml      |   0
 .../default/xui/ru/floater_price_for_listing.xml    |   0
 .../default/xui/ru/floater_publish_classified.xml   |   0
 .../default/xui/ru/floater_region_debug_console.xml |   0
 .../skins/default/xui/ru/floater_region_info.xml    |   0
 .../skins/default/xui/ru/floater_report_abuse.xml   |   0
 .../skins/default/xui/ru/floater_script_debug.xml   |   0
 .../default/xui/ru/floater_script_debug_panel.xml   |   0
 .../skins/default/xui/ru/floater_script_limits.xml  |   0
 .../skins/default/xui/ru/floater_script_preview.xml |   0
 .../skins/default/xui/ru/floater_script_queue.xml   |   0
 .../skins/default/xui/ru/floater_script_search.xml  |   0
 .../newview/skins/default/xui/ru/floater_search.xml |   0
 .../skins/default/xui/ru/floater_select_key.xml     |   0
 .../skins/default/xui/ru/floater_sell_land.xml      |   0
 .../skins/default/xui/ru/floater_settings_debug.xml |   0
 .../skins/default/xui/ru/floater_snapshot.xml       |   0
 .../skins/default/xui/ru/floater_sound_devices.xml  |   0
 .../skins/default/xui/ru/floater_sound_preview.xml  |   0
 .../skins/default/xui/ru/floater_spellcheck.xml     |   0
 .../default/xui/ru/floater_spellcheck_import.xml    |   0
 .../newview/skins/default/xui/ru/floater_stats.xml  |   0
 .../skins/default/xui/ru/floater_sys_well.xml       |   0
 .../skins/default/xui/ru/floater_telehub.xml        |   0
 .../default/xui/ru/floater_test_layout_stacks.xml   |   0
 .../xui/ru/floater_test_text_vertical_aligment.xml  |   0
 .../skins/default/xui/ru/floater_texture_ctrl.xml   |   0
 .../xui/ru/floater_texture_fetch_debugger.xml       |   0
 .../newview/skins/default/xui/ru/floater_tools.xml  |   0
 .../skins/default/xui/ru/floater_top_objects.xml    |   0
 indra/newview/skins/default/xui/ru/floater_tos.xml  |   0
 .../newview/skins/default/xui/ru/floater_toybox.xml |   0
 .../default/xui/ru/floater_translation_settings.xml |   0
 .../skins/default/xui/ru/floater_url_entry.xml      |   0
 .../skins/default/xui/ru/floater_voice_controls.xml |   0
 .../skins/default/xui/ru/floater_voice_effect.xml   |   0
 .../skins/default/xui/ru/floater_web_content.xml    |   0
 .../default/xui/ru/floater_whitelist_entry.xml      |   0
 .../skins/default/xui/ru/floater_window_size.xml    |   0
 .../skins/default/xui/ru/floater_world_map.xml      |   0
 .../newview/skins/default/xui/ru/inspect_avatar.xml |   0
 .../newview/skins/default/xui/ru/inspect_group.xml  |   0
 .../newview/skins/default/xui/ru/inspect_object.xml |   0
 .../skins/default/xui/ru/inspect_remote_object.xml  |   0
 .../skins/default/xui/ru/menu_add_wearable_gear.xml |   0
 .../skins/default/xui/ru/menu_attachment_other.xml  |   0
 .../skins/default/xui/ru/menu_attachment_self.xml   |   0
 .../skins/default/xui/ru/menu_avatar_icon.xml       |   0
 .../skins/default/xui/ru/menu_avatar_other.xml      |   0
 .../skins/default/xui/ru/menu_avatar_self.xml       |   0
 .../skins/default/xui/ru/menu_cof_attachment.xml    |   0
 .../skins/default/xui/ru/menu_cof_body_part.xml     |   0
 .../skins/default/xui/ru/menu_cof_clothing.xml      |   0
 .../newview/skins/default/xui/ru/menu_cof_gear.xml  |   0
 indra/newview/skins/default/xui/ru/menu_edit.xml    |   0
 .../newview/skins/default/xui/ru/menu_favorites.xml |   0
 .../skins/default/xui/ru/menu_gesture_gear.xml      |   0
 .../skins/default/xui/ru/menu_group_plus.xml        |   0
 .../skins/default/xui/ru/menu_hide_navbar.xml       |   0
 .../skins/default/xui/ru/menu_imchiclet_adhoc.xml   |   0
 .../skins/default/xui/ru/menu_imchiclet_group.xml   |   0
 .../skins/default/xui/ru/menu_imchiclet_p2p.xml     |   0
 .../default/xui/ru/menu_inspect_avatar_gear.xml     |   0
 .../default/xui/ru/menu_inspect_object_gear.xml     |   0
 .../skins/default/xui/ru/menu_inspect_self_gear.xml |   0
 .../skins/default/xui/ru/menu_inv_offer_chiclet.xml |   0
 .../newview/skins/default/xui/ru/menu_inventory.xml |   0
 .../skins/default/xui/ru/menu_inventory_add.xml     |   0
 .../default/xui/ru/menu_inventory_gear_default.xml  |   0
 indra/newview/skins/default/xui/ru/menu_land.xml    |   0
 .../newview/skins/default/xui/ru/menu_landmark.xml  |   0
 indra/newview/skins/default/xui/ru/menu_login.xml   |   0
 .../skins/default/xui/ru/menu_media_ctrl.xml        |   0
 .../newview/skins/default/xui/ru/menu_mini_map.xml  |   0
 .../xui/ru/menu_model_import_gear_default.xml       |   0
 indra/newview/skins/default/xui/ru/menu_navbar.xml  |   0
 .../skins/default/xui/ru/menu_nearby_chat.xml       |   0
 .../xui/ru/menu_notification_well_button.xml        |   0
 indra/newview/skins/default/xui/ru/menu_object.xml  |   0
 .../skins/default/xui/ru/menu_object_icon.xml       |   0
 .../skins/default/xui/ru/menu_outfit_gear.xml       |   0
 .../skins/default/xui/ru/menu_outfit_tab.xml        |   0
 .../skins/default/xui/ru/menu_participant_list.xml  |   0
 .../xui/ru/menu_people_friends_view_sort.xml        |   0
 .../skins/default/xui/ru/menu_people_groups.xml     |   0
 .../default/xui/ru/menu_people_groups_view_sort.xml |   0
 .../skins/default/xui/ru/menu_people_nearby.xml     |   0
 .../xui/ru/menu_people_nearby_multiselect.xml       |   0
 .../default/xui/ru/menu_people_nearby_view_sort.xml |   0
 .../default/xui/ru/menu_people_recent_view_sort.xml |   0
 indra/newview/skins/default/xui/ru/menu_picks.xml   |   0
 .../skins/default/xui/ru/menu_picks_plus.xml        |   0
 indra/newview/skins/default/xui/ru/menu_place.xml   |   0
 .../skins/default/xui/ru/menu_place_add_button.xml  |   0
 .../default/xui/ru/menu_places_gear_folder.xml      |   0
 .../default/xui/ru/menu_places_gear_landmark.xml    |   0
 .../skins/default/xui/ru/menu_profile_overflow.xml  |   0
 .../skins/default/xui/ru/menu_save_outfit.xml       |   0
 .../skins/default/xui/ru/menu_script_chiclet.xml    |   0
 indra/newview/skins/default/xui/ru/menu_slurl.xml   |   0
 .../default/xui/ru/menu_teleport_history_gear.xml   |   0
 .../default/xui/ru/menu_teleport_history_item.xml   |   0
 .../default/xui/ru/menu_teleport_history_tab.xml    |   0
 .../skins/default/xui/ru/menu_text_editor.xml       |   0
 .../newview/skins/default/xui/ru/menu_toolbars.xml  |   0
 .../skins/default/xui/ru/menu_topinfobar.xml        |   0
 .../newview/skins/default/xui/ru/menu_url_agent.xml |   0
 .../newview/skins/default/xui/ru/menu_url_group.xml |   0
 .../newview/skins/default/xui/ru/menu_url_http.xml  |   0
 .../skins/default/xui/ru/menu_url_inventory.xml     |   0
 indra/newview/skins/default/xui/ru/menu_url_map.xml |   0
 .../skins/default/xui/ru/menu_url_objectim.xml      |   0
 .../skins/default/xui/ru/menu_url_parcel.xml        |   0
 .../newview/skins/default/xui/ru/menu_url_slapp.xml |   0
 .../newview/skins/default/xui/ru/menu_url_slurl.xml |   0
 .../skins/default/xui/ru/menu_url_teleport.xml      |   0
 indra/newview/skins/default/xui/ru/menu_viewer.xml  |   0
 .../default/xui/ru/menu_wearable_list_item.xml      |   0
 .../skins/default/xui/ru/menu_wearing_gear.xml      |   0
 .../skins/default/xui/ru/menu_wearing_tab.xml       |   0
 indra/newview/skins/default/xui/ru/mime_types.xml   |   0
 .../skins/default/xui/ru/mime_types_linux.xml       |   0
 .../newview/skins/default/xui/ru/mime_types_mac.xml |   0
 .../newview/skins/default/xui/ru/notifications.xml  |   0
 .../default/xui/ru/panel_active_object_row.xml      |   0
 .../default/xui/ru/panel_adhoc_control_panel.xml    |   0
 .../skins/default/xui/ru/panel_avatar_list_item.xml |   0
 .../skins/default/xui/ru/panel_avatar_tag.xml       |   0
 .../default/xui/ru/panel_block_list_sidetray.xml    |   0
 .../default/xui/ru/panel_body_parts_list_item.xml   |   0
 .../xui/ru/panel_bodyparts_list_button_bar.xml      |   0
 .../skins/default/xui/ru/panel_bottomtray_lite.xml  |   0
 .../skins/default/xui/ru/panel_chat_header.xml      |   0
 .../skins/default/xui/ru/panel_chiclet_bar.xml      |   0
 .../skins/default/xui/ru/panel_classified_info.xml  |   0
 .../xui/ru/panel_clothing_list_button_bar.xml       |   0
 .../default/xui/ru/panel_clothing_list_item.xml     |   0
 .../skins/default/xui/ru/panel_cof_wearables.xml    |   0
 .../xui/ru/panel_deletable_wearable_list_item.xml   |   0
 .../xui/ru/panel_dummy_clothing_list_item.xml       |   0
 .../skins/default/xui/ru/panel_edit_alpha.xml       |   0
 .../skins/default/xui/ru/panel_edit_classified.xml  |   0
 .../skins/default/xui/ru/panel_edit_eyes.xml        |   0
 .../skins/default/xui/ru/panel_edit_gloves.xml      |   0
 .../skins/default/xui/ru/panel_edit_hair.xml        |   0
 .../skins/default/xui/ru/panel_edit_jacket.xml      |   0
 .../skins/default/xui/ru/panel_edit_pants.xml       |   0
 .../skins/default/xui/ru/panel_edit_physics.xml     |   0
 .../skins/default/xui/ru/panel_edit_pick.xml        |   0
 .../skins/default/xui/ru/panel_edit_profile.xml     |   0
 .../skins/default/xui/ru/panel_edit_shape.xml       |   0
 .../skins/default/xui/ru/panel_edit_shirt.xml       |   0
 .../skins/default/xui/ru/panel_edit_shoes.xml       |   0
 .../skins/default/xui/ru/panel_edit_skin.xml        |   0
 .../skins/default/xui/ru/panel_edit_skirt.xml       |   0
 .../skins/default/xui/ru/panel_edit_socks.xml       |   0
 .../skins/default/xui/ru/panel_edit_tattoo.xml      |   0
 .../skins/default/xui/ru/panel_edit_underpants.xml  |   0
 .../skins/default/xui/ru/panel_edit_undershirt.xml  |   0
 .../skins/default/xui/ru/panel_edit_wearable.xml    |   0
 .../default/xui/ru/panel_group_control_panel.xml    |   0
 .../skins/default/xui/ru/panel_group_general.xml    |   0
 .../default/xui/ru/panel_group_info_sidetray.xml    |   0
 .../skins/default/xui/ru/panel_group_invite.xml     |   0
 .../skins/default/xui/ru/panel_group_land_money.xml |   0
 .../skins/default/xui/ru/panel_group_list_item.xml  |   0
 .../skins/default/xui/ru/panel_group_notices.xml    |   0
 .../skins/default/xui/ru/panel_group_notify.xml     |   0
 .../skins/default/xui/ru/panel_group_roles.xml      |   0
 .../skins/default/xui/ru/panel_im_control_panel.xml |   0
 .../skins/default/xui/ru/panel_instant_message.xml  |   0
 .../skins/default/xui/ru/panel_inventory_item.xml   |   0
 .../skins/default/xui/ru/panel_landmark_info.xml    |   0
 .../skins/default/xui/ru/panel_landmarks.xml        |   0
 indra/newview/skins/default/xui/ru/panel_login.xml  |   0
 .../skins/default/xui/ru/panel_main_inventory.xml   |   0
 indra/newview/skins/default/xui/ru/panel_me.xml     |   0
 .../default/xui/ru/panel_media_settings_general.xml |   0
 .../xui/ru/panel_media_settings_permissions.xml     |   0
 .../xui/ru/panel_media_settings_security.xml        |   0
 .../skins/default/xui/ru/panel_navigation_bar.xml   |   0
 .../skins/default/xui/ru/panel_nearby_chat.xml      |   0
 .../skins/default/xui/ru/panel_nearby_chat_bar.xml  |   0
 .../skins/default/xui/ru/panel_nearby_media.xml     |   0
 .../skins/default/xui/ru/panel_notify_textbox.xml   |   0
 .../default/xui/ru/panel_online_status_toast.xml    |   0
 .../skins/default/xui/ru/panel_outbox_inventory.xml |   0
 .../skins/default/xui/ru/panel_outfit_edit.xml      |   0
 .../default/xui/ru/panel_outfits_inventory.xml      |   0
 .../xui/ru/panel_outfits_inventory_gear_default.xml |   0
 .../skins/default/xui/ru/panel_outfits_list.xml     |   0
 .../skins/default/xui/ru/panel_outfits_wearing.xml  |   0
 indra/newview/skins/default/xui/ru/panel_people.xml |   0
 .../skins/default/xui/ru/panel_pick_info.xml        |   0
 indra/newview/skins/default/xui/ru/panel_picks.xml  |   0
 .../skins/default/xui/ru/panel_place_profile.xml    |   0
 indra/newview/skins/default/xui/ru/panel_places.xml |   0
 .../skins/default/xui/ru/panel_postcard_message.xml |   0
 .../default/xui/ru/panel_postcard_settings.xml      |   0
 .../default/xui/ru/panel_preferences_advanced.xml   |   0
 .../default/xui/ru/panel_preferences_alerts.xml     |   0
 .../skins/default/xui/ru/panel_preferences_chat.xml |   0
 .../default/xui/ru/panel_preferences_colors.xml     |   0
 .../default/xui/ru/panel_preferences_general.xml    |   0
 .../default/xui/ru/panel_preferences_graphics1.xml  |   0
 .../skins/default/xui/ru/panel_preferences_move.xml |   0
 .../default/xui/ru/panel_preferences_privacy.xml    |   0
 .../default/xui/ru/panel_preferences_setup.xml      |   0
 .../default/xui/ru/panel_preferences_sound.xml      |   0
 .../default/xui/ru/panel_prim_media_controls.xml    |   0
 .../skins/default/xui/ru/panel_region_covenant.xml  |   0
 .../skins/default/xui/ru/panel_region_debug.xml     |   0
 .../default/xui/ru/panel_region_environment.xml     |   0
 .../skins/default/xui/ru/panel_region_estate.xml    |   0
 .../skins/default/xui/ru/panel_region_general.xml   |   0
 .../skins/default/xui/ru/panel_region_terrain.xml   |   0
 .../skins/default/xui/ru/panel_script_ed.xml        |   0
 .../xui/ru/panel_script_limits_my_avatar.xml        |   0
 .../xui/ru/panel_script_limits_region_memory.xml    |   0
 .../default/xui/ru/panel_script_question_toast.xml  |   0
 .../skins/default/xui/ru/panel_scrolling_param.xml  |   0
 .../default/xui/ru/panel_scrolling_param_base.xml   |   0
 .../default/xui/ru/panel_side_tray_tab_caption.xml  |   0
 .../default/xui/ru/panel_snapshot_inventory.xml     |   0
 .../skins/default/xui/ru/panel_snapshot_local.xml   |   0
 .../skins/default/xui/ru/panel_snapshot_options.xml |   0
 .../default/xui/ru/panel_snapshot_postcard.xml      |   0
 .../skins/default/xui/ru/panel_snapshot_profile.xml |   0
 .../skins/default/xui/ru/panel_sound_devices.xml    |   0
 .../default/xui/ru/panel_stand_stop_flying.xml      |   0
 .../skins/default/xui/ru/panel_status_bar.xml       |   0
 .../skins/default/xui/ru/panel_teleport_history.xml |   0
 .../default/xui/ru/panel_teleport_history_item.xml  |   0
 .../skins/default/xui/ru/panel_voice_effect.xml     |   0
 .../skins/default/xui/ru/panel_volume_pulldown.xml  |   0
 .../skins/default/xui/ru/panel_world_map.xml        |   0
 indra/newview/skins/default/xui/ru/role_actions.xml |   0
 .../skins/default/xui/ru/sidepanel_appearance.xml   |   0
 .../skins/default/xui/ru/sidepanel_inventory.xml    |   0
 .../skins/default/xui/ru/sidepanel_item_info.xml    |   0
 .../skins/default/xui/ru/sidepanel_task_info.xml    |   0
 indra/newview/skins/default/xui/ru/strings.xml      |   0
 .../skins/default/xui/ru/teleport_strings.xml       |   0
 indra/newview/skins/default/xui/tr/floater_aaa.xml  |   0
 .../newview/skins/default/xui/tr/floater_about.xml  |   0
 .../skins/default/xui/tr/floater_about_land.xml     |   0
 .../skins/default/xui/tr/floater_activeim.xml       |   0
 .../xui/tr/floater_animation_anim_preview.xml       |   0
 .../xui/tr/floater_animation_bvh_preview.xml        |   0
 .../skins/default/xui/tr/floater_auction.xml        |   0
 .../skins/default/xui/tr/floater_autoreplace.xml    |   0
 .../newview/skins/default/xui/tr/floater_avatar.xml |   0
 .../skins/default/xui/tr/floater_avatar_picker.xml  |   0
 .../default/xui/tr/floater_avatar_textures.xml      |   0
 .../skins/default/xui/tr/floater_beacons.xml        |   0
 .../skins/default/xui/tr/floater_build_options.xml  |   0
 .../skins/default/xui/tr/floater_bulk_perms.xml     |   0
 .../newview/skins/default/xui/tr/floater_bumps.xml  |   0
 .../skins/default/xui/tr/floater_buy_contents.xml   |   0
 .../skins/default/xui/tr/floater_buy_currency.xml   |   0
 .../default/xui/tr/floater_buy_currency_html.xml    |   0
 .../skins/default/xui/tr/floater_buy_land.xml       |   0
 .../skins/default/xui/tr/floater_buy_object.xml     |   0
 .../newview/skins/default/xui/tr/floater_camera.xml |   0
 .../skins/default/xui/tr/floater_chat_bar.xml       |   0
 .../skins/default/xui/tr/floater_choose_group.xml   |   0
 .../skins/default/xui/tr/floater_color_picker.xml   |   0
 .../skins/default/xui/tr/floater_critical.xml       |   0
 .../default/xui/tr/floater_delete_env_preset.xml    |   0
 .../skins/default/xui/tr/floater_destinations.xml   |   0
 .../skins/default/xui/tr/floater_display_name.xml   |   0
 .../skins/default/xui/tr/floater_edit_day_cycle.xml |   0
 .../default/xui/tr/floater_edit_sky_preset.xml      |   0
 .../default/xui/tr/floater_edit_water_preset.xml    |   0
 .../default/xui/tr/floater_environment_settings.xml |   0
 .../newview/skins/default/xui/tr/floater_event.xml  |   0
 .../skins/default/xui/tr/floater_fast_timers.xml    |   0
 .../skins/default/xui/tr/floater_font_test.xml      |   0
 .../skins/default/xui/tr/floater_gesture.xml        |   0
 .../skins/default/xui/tr/floater_god_tools.xml      |   0
 .../default/xui/tr/floater_hardware_settings.xml    |   0
 .../skins/default/xui/tr/floater_help_browser.xml   |   0
 .../newview/skins/default/xui/tr/floater_how_to.xml |   0
 indra/newview/skins/default/xui/tr/floater_hud.xml  |   0
 .../skins/default/xui/tr/floater_im_container.xml   |   0
 .../skins/default/xui/tr/floater_im_session.xml     |   0
 .../skins/default/xui/tr/floater_image_preview.xml  |   0
 .../skins/default/xui/tr/floater_import_collada.xml |   0
 .../skins/default/xui/tr/floater_incoming_call.xml  |   0
 .../skins/default/xui/tr/floater_inspect.xml        |   0
 .../xui/tr/floater_inventory_item_properties.xml    |   0
 .../xui/tr/floater_inventory_view_finder.xml        |   0
 .../skins/default/xui/tr/floater_joystick.xml       |   0
 .../skins/default/xui/tr/floater_lagmeter.xml       |   0
 .../skins/default/xui/tr/floater_land_holdings.xml  |   0
 .../skins/default/xui/tr/floater_live_lsleditor.xml |   0
 .../skins/default/xui/tr/floater_lsl_guide.xml      |   0
 indra/newview/skins/default/xui/tr/floater_map.xml  |   0
 .../skins/default/xui/tr/floater_media_browser.xml  |   0
 .../skins/default/xui/tr/floater_media_settings.xml |   0
 .../skins/default/xui/tr/floater_mem_leaking.xml    |   0
 .../default/xui/tr/floater_merchant_outbox.xml      |   0
 .../skins/default/xui/tr/floater_model_preview.xml  |   0
 .../skins/default/xui/tr/floater_moveview.xml       |   0
 .../skins/default/xui/tr/floater_mute_object.xml    |   0
 .../skins/default/xui/tr/floater_my_appearance.xml  |   0
 .../skins/default/xui/tr/floater_my_inventory.xml   |   0
 .../skins/default/xui/tr/floater_notification.xml   |   0
 .../xui/tr/floater_notifications_console.xml        |   0
 .../skins/default/xui/tr/floater_object_weights.xml |   0
 .../skins/default/xui/tr/floater_openobject.xml     |   0
 .../skins/default/xui/tr/floater_outfit_save_as.xml |   0
 .../skins/default/xui/tr/floater_outgoing_call.xml  |   0
 .../xui/tr/floater_pathfinding_characters.xml       |   0
 .../default/xui/tr/floater_pathfinding_console.xml  |   0
 .../default/xui/tr/floater_pathfinding_linksets.xml |   0
 indra/newview/skins/default/xui/tr/floater_pay.xml  |   0
 .../skins/default/xui/tr/floater_pay_object.xml     |   0
 .../newview/skins/default/xui/tr/floater_people.xml |   0
 .../skins/default/xui/tr/floater_perm_prefs.xml     |   0
 .../newview/skins/default/xui/tr/floater_picks.xml  |   0
 .../newview/skins/default/xui/tr/floater_places.xml |   0
 .../skins/default/xui/tr/floater_post_process.xml   |   0
 .../skins/default/xui/tr/floater_preferences.xml    |   0
 .../default/xui/tr/floater_preferences_proxy.xml    |   0
 .../default/xui/tr/floater_preview_animation.xml    |   0
 .../default/xui/tr/floater_preview_gesture.xml      |   0
 .../default/xui/tr/floater_preview_notecard.xml     |   0
 .../skins/default/xui/tr/floater_preview_sound.xml  |   0
 .../default/xui/tr/floater_preview_texture.xml      |   0
 .../default/xui/tr/floater_price_for_listing.xml    |   0
 .../default/xui/tr/floater_publish_classified.xml   |   0
 .../default/xui/tr/floater_region_debug_console.xml |   0
 .../skins/default/xui/tr/floater_region_info.xml    |   0
 .../skins/default/xui/tr/floater_report_abuse.xml   |   0
 .../skins/default/xui/tr/floater_script_debug.xml   |   0
 .../default/xui/tr/floater_script_debug_panel.xml   |   0
 .../skins/default/xui/tr/floater_script_limits.xml  |   0
 .../skins/default/xui/tr/floater_script_preview.xml |   0
 .../skins/default/xui/tr/floater_script_queue.xml   |   0
 .../skins/default/xui/tr/floater_script_search.xml  |   0
 .../newview/skins/default/xui/tr/floater_search.xml |   0
 .../skins/default/xui/tr/floater_select_key.xml     |   0
 .../skins/default/xui/tr/floater_sell_land.xml      |   0
 .../skins/default/xui/tr/floater_settings_debug.xml |   0
 .../skins/default/xui/tr/floater_snapshot.xml       |   0
 .../skins/default/xui/tr/floater_sound_devices.xml  |   0
 .../skins/default/xui/tr/floater_sound_preview.xml  |   0
 .../skins/default/xui/tr/floater_spellcheck.xml     |   0
 .../default/xui/tr/floater_spellcheck_import.xml    |   0
 .../newview/skins/default/xui/tr/floater_stats.xml  |   0
 .../skins/default/xui/tr/floater_sys_well.xml       |   0
 .../skins/default/xui/tr/floater_telehub.xml        |   0
 .../default/xui/tr/floater_test_layout_stacks.xml   |   0
 .../xui/tr/floater_test_text_vertical_aligment.xml  |   0
 .../skins/default/xui/tr/floater_texture_ctrl.xml   |   0
 .../xui/tr/floater_texture_fetch_debugger.xml       |   0
 .../newview/skins/default/xui/tr/floater_tools.xml  |   0
 .../skins/default/xui/tr/floater_top_objects.xml    |   0
 indra/newview/skins/default/xui/tr/floater_tos.xml  |   0
 .../newview/skins/default/xui/tr/floater_toybox.xml |   0
 .../default/xui/tr/floater_translation_settings.xml |   0
 .../skins/default/xui/tr/floater_url_entry.xml      |   0
 .../skins/default/xui/tr/floater_voice_controls.xml |   0
 .../skins/default/xui/tr/floater_voice_effect.xml   |   0
 .../skins/default/xui/tr/floater_web_content.xml    |   0
 .../default/xui/tr/floater_whitelist_entry.xml      |   0
 .../skins/default/xui/tr/floater_window_size.xml    |   0
 .../skins/default/xui/tr/floater_world_map.xml      |   0
 .../newview/skins/default/xui/tr/inspect_avatar.xml |   0
 .../newview/skins/default/xui/tr/inspect_group.xml  |   0
 .../newview/skins/default/xui/tr/inspect_object.xml |   0
 .../skins/default/xui/tr/inspect_remote_object.xml  |   0
 .../skins/default/xui/tr/menu_add_wearable_gear.xml |   0
 .../skins/default/xui/tr/menu_attachment_other.xml  |   0
 .../skins/default/xui/tr/menu_attachment_self.xml   |   0
 .../skins/default/xui/tr/menu_avatar_icon.xml       |   0
 .../skins/default/xui/tr/menu_avatar_other.xml      |   0
 .../skins/default/xui/tr/menu_avatar_self.xml       |   0
 .../skins/default/xui/tr/menu_cof_attachment.xml    |   0
 .../skins/default/xui/tr/menu_cof_body_part.xml     |   0
 .../skins/default/xui/tr/menu_cof_clothing.xml      |   0
 .../newview/skins/default/xui/tr/menu_cof_gear.xml  |   0
 indra/newview/skins/default/xui/tr/menu_edit.xml    |   0
 .../newview/skins/default/xui/tr/menu_favorites.xml |   0
 .../skins/default/xui/tr/menu_gesture_gear.xml      |   0
 .../skins/default/xui/tr/menu_group_plus.xml        |   0
 .../skins/default/xui/tr/menu_hide_navbar.xml       |   0
 .../skins/default/xui/tr/menu_imchiclet_adhoc.xml   |   0
 .../skins/default/xui/tr/menu_imchiclet_group.xml   |   0
 .../skins/default/xui/tr/menu_imchiclet_p2p.xml     |   0
 .../default/xui/tr/menu_inspect_avatar_gear.xml     |   0
 .../default/xui/tr/menu_inspect_object_gear.xml     |   0
 .../skins/default/xui/tr/menu_inspect_self_gear.xml |   0
 .../skins/default/xui/tr/menu_inv_offer_chiclet.xml |   0
 .../newview/skins/default/xui/tr/menu_inventory.xml |   0
 .../skins/default/xui/tr/menu_inventory_add.xml     |   0
 .../default/xui/tr/menu_inventory_gear_default.xml  |   0
 indra/newview/skins/default/xui/tr/menu_land.xml    |   0
 .../newview/skins/default/xui/tr/menu_landmark.xml  |   0
 indra/newview/skins/default/xui/tr/menu_login.xml   |   0
 .../skins/default/xui/tr/menu_media_ctrl.xml        |   0
 .../newview/skins/default/xui/tr/menu_mini_map.xml  |   0
 .../xui/tr/menu_model_import_gear_default.xml       |   0
 indra/newview/skins/default/xui/tr/menu_navbar.xml  |   0
 .../skins/default/xui/tr/menu_nearby_chat.xml       |   0
 .../xui/tr/menu_notification_well_button.xml        |   0
 indra/newview/skins/default/xui/tr/menu_object.xml  |   0
 .../skins/default/xui/tr/menu_object_icon.xml       |   0
 .../skins/default/xui/tr/menu_outfit_gear.xml       |   0
 .../skins/default/xui/tr/menu_outfit_tab.xml        |   0
 .../skins/default/xui/tr/menu_participant_list.xml  |   0
 .../xui/tr/menu_people_friends_view_sort.xml        |   0
 .../skins/default/xui/tr/menu_people_groups.xml     |   0
 .../default/xui/tr/menu_people_groups_view_sort.xml |   0
 .../skins/default/xui/tr/menu_people_nearby.xml     |   0
 .../xui/tr/menu_people_nearby_multiselect.xml       |   0
 .../default/xui/tr/menu_people_nearby_view_sort.xml |   0
 .../default/xui/tr/menu_people_recent_view_sort.xml |   0
 indra/newview/skins/default/xui/tr/menu_picks.xml   |   0
 .../skins/default/xui/tr/menu_picks_plus.xml        |   0
 indra/newview/skins/default/xui/tr/menu_place.xml   |   0
 .../skins/default/xui/tr/menu_place_add_button.xml  |   0
 .../default/xui/tr/menu_places_gear_folder.xml      |   0
 .../default/xui/tr/menu_places_gear_landmark.xml    |   0
 .../skins/default/xui/tr/menu_profile_overflow.xml  |   0
 .../skins/default/xui/tr/menu_save_outfit.xml       |   0
 .../skins/default/xui/tr/menu_script_chiclet.xml    |   0
 indra/newview/skins/default/xui/tr/menu_slurl.xml   |   0
 .../default/xui/tr/menu_teleport_history_gear.xml   |   0
 .../default/xui/tr/menu_teleport_history_item.xml   |   0
 .../default/xui/tr/menu_teleport_history_tab.xml    |   0
 .../skins/default/xui/tr/menu_text_editor.xml       |   0
 .../newview/skins/default/xui/tr/menu_toolbars.xml  |   0
 .../skins/default/xui/tr/menu_topinfobar.xml        |   0
 .../newview/skins/default/xui/tr/menu_url_agent.xml |   0
 .../newview/skins/default/xui/tr/menu_url_group.xml |   0
 .../newview/skins/default/xui/tr/menu_url_http.xml  |   0
 .../skins/default/xui/tr/menu_url_inventory.xml     |   0
 indra/newview/skins/default/xui/tr/menu_url_map.xml |   0
 .../skins/default/xui/tr/menu_url_objectim.xml      |   0
 .../skins/default/xui/tr/menu_url_parcel.xml        |   0
 .../newview/skins/default/xui/tr/menu_url_slapp.xml |   0
 .../newview/skins/default/xui/tr/menu_url_slurl.xml |   0
 .../skins/default/xui/tr/menu_url_teleport.xml      |   0
 indra/newview/skins/default/xui/tr/menu_viewer.xml  |   0
 .../default/xui/tr/menu_wearable_list_item.xml      |   0
 .../skins/default/xui/tr/menu_wearing_gear.xml      |   0
 .../skins/default/xui/tr/menu_wearing_tab.xml       |   0
 indra/newview/skins/default/xui/tr/mime_types.xml   |   0
 .../skins/default/xui/tr/mime_types_linux.xml       |   0
 .../newview/skins/default/xui/tr/mime_types_mac.xml |   0
 .../newview/skins/default/xui/tr/notifications.xml  |   0
 .../default/xui/tr/panel_active_object_row.xml      |   0
 .../default/xui/tr/panel_adhoc_control_panel.xml    |   0
 .../skins/default/xui/tr/panel_avatar_list_item.xml |   0
 .../skins/default/xui/tr/panel_avatar_tag.xml       |   0
 .../default/xui/tr/panel_block_list_sidetray.xml    |   0
 .../default/xui/tr/panel_body_parts_list_item.xml   |   0
 .../xui/tr/panel_bodyparts_list_button_bar.xml      |   0
 .../skins/default/xui/tr/panel_bottomtray_lite.xml  |   0
 .../skins/default/xui/tr/panel_chat_header.xml      |   0
 .../skins/default/xui/tr/panel_chiclet_bar.xml      |   0
 .../skins/default/xui/tr/panel_classified_info.xml  |   0
 .../xui/tr/panel_clothing_list_button_bar.xml       |   0
 .../default/xui/tr/panel_clothing_list_item.xml     |   0
 .../skins/default/xui/tr/panel_cof_wearables.xml    |   0
 .../xui/tr/panel_deletable_wearable_list_item.xml   |   0
 .../xui/tr/panel_dummy_clothing_list_item.xml       |   0
 .../skins/default/xui/tr/panel_edit_alpha.xml       |   0
 .../skins/default/xui/tr/panel_edit_classified.xml  |   0
 .../skins/default/xui/tr/panel_edit_eyes.xml        |   0
 .../skins/default/xui/tr/panel_edit_gloves.xml      |   0
 .../skins/default/xui/tr/panel_edit_hair.xml        |   0
 .../skins/default/xui/tr/panel_edit_jacket.xml      |   0
 .../skins/default/xui/tr/panel_edit_pants.xml       |   0
 .../skins/default/xui/tr/panel_edit_physics.xml     |   0
 .../skins/default/xui/tr/panel_edit_pick.xml        |   0
 .../skins/default/xui/tr/panel_edit_profile.xml     |   0
 .../skins/default/xui/tr/panel_edit_shape.xml       |   0
 .../skins/default/xui/tr/panel_edit_shirt.xml       |   0
 .../skins/default/xui/tr/panel_edit_shoes.xml       |   0
 .../skins/default/xui/tr/panel_edit_skin.xml        |   0
 .../skins/default/xui/tr/panel_edit_skirt.xml       |   0
 .../skins/default/xui/tr/panel_edit_socks.xml       |   0
 .../skins/default/xui/tr/panel_edit_tattoo.xml      |   0
 .../skins/default/xui/tr/panel_edit_underpants.xml  |   0
 .../skins/default/xui/tr/panel_edit_undershirt.xml  |   0
 .../skins/default/xui/tr/panel_edit_wearable.xml    |   0
 .../default/xui/tr/panel_group_control_panel.xml    |   0
 .../skins/default/xui/tr/panel_group_general.xml    |   0
 .../default/xui/tr/panel_group_info_sidetray.xml    |   0
 .../skins/default/xui/tr/panel_group_invite.xml     |   0
 .../skins/default/xui/tr/panel_group_land_money.xml |   0
 .../skins/default/xui/tr/panel_group_list_item.xml  |   0
 .../skins/default/xui/tr/panel_group_notices.xml    |   0
 .../skins/default/xui/tr/panel_group_notify.xml     |   0
 .../skins/default/xui/tr/panel_group_roles.xml      |   0
 .../skins/default/xui/tr/panel_im_control_panel.xml |   0
 .../skins/default/xui/tr/panel_instant_message.xml  |   0
 .../skins/default/xui/tr/panel_inventory_item.xml   |   0
 .../skins/default/xui/tr/panel_landmark_info.xml    |   0
 .../skins/default/xui/tr/panel_landmarks.xml        |   0
 indra/newview/skins/default/xui/tr/panel_login.xml  |   0
 .../skins/default/xui/tr/panel_main_inventory.xml   |   0
 indra/newview/skins/default/xui/tr/panel_me.xml     |   0
 .../default/xui/tr/panel_media_settings_general.xml |   0
 .../xui/tr/panel_media_settings_permissions.xml     |   0
 .../xui/tr/panel_media_settings_security.xml        |   0
 .../skins/default/xui/tr/panel_navigation_bar.xml   |   0
 .../skins/default/xui/tr/panel_nearby_chat.xml      |   0
 .../skins/default/xui/tr/panel_nearby_chat_bar.xml  |   0
 .../skins/default/xui/tr/panel_nearby_media.xml     |   0
 .../skins/default/xui/tr/panel_notify_textbox.xml   |   0
 .../default/xui/tr/panel_online_status_toast.xml    |   0
 .../skins/default/xui/tr/panel_outbox_inventory.xml |   0
 .../skins/default/xui/tr/panel_outfit_edit.xml      |   0
 .../default/xui/tr/panel_outfits_inventory.xml      |   0
 .../xui/tr/panel_outfits_inventory_gear_default.xml |   0
 .../skins/default/xui/tr/panel_outfits_list.xml     |   0
 .../skins/default/xui/tr/panel_outfits_wearing.xml  |   0
 indra/newview/skins/default/xui/tr/panel_people.xml |   0
 .../skins/default/xui/tr/panel_pick_info.xml        |   0
 indra/newview/skins/default/xui/tr/panel_picks.xml  |   0
 .../skins/default/xui/tr/panel_place_profile.xml    |   0
 indra/newview/skins/default/xui/tr/panel_places.xml |   0
 .../skins/default/xui/tr/panel_postcard_message.xml |   0
 .../default/xui/tr/panel_postcard_settings.xml      |   0
 .../default/xui/tr/panel_preferences_advanced.xml   |   0
 .../default/xui/tr/panel_preferences_alerts.xml     |   0
 .../skins/default/xui/tr/panel_preferences_chat.xml |   0
 .../default/xui/tr/panel_preferences_colors.xml     |   0
 .../default/xui/tr/panel_preferences_general.xml    |   0
 .../default/xui/tr/panel_preferences_graphics1.xml  |   0
 .../skins/default/xui/tr/panel_preferences_move.xml |   0
 .../default/xui/tr/panel_preferences_privacy.xml    |   0
 .../default/xui/tr/panel_preferences_setup.xml      |   0
 .../default/xui/tr/panel_preferences_sound.xml      |   0
 .../default/xui/tr/panel_prim_media_controls.xml    |   0
 .../skins/default/xui/tr/panel_region_covenant.xml  |   0
 .../skins/default/xui/tr/panel_region_debug.xml     |   0
 .../default/xui/tr/panel_region_environment.xml     |   0
 .../skins/default/xui/tr/panel_region_estate.xml    |   0
 .../skins/default/xui/tr/panel_region_general.xml   |   0
 .../skins/default/xui/tr/panel_region_terrain.xml   |   0
 .../skins/default/xui/tr/panel_script_ed.xml        |   0
 .../xui/tr/panel_script_limits_my_avatar.xml        |   0
 .../xui/tr/panel_script_limits_region_memory.xml    |   0
 .../default/xui/tr/panel_script_question_toast.xml  |   0
 .../skins/default/xui/tr/panel_scrolling_param.xml  |   0
 .../default/xui/tr/panel_scrolling_param_base.xml   |   0
 .../default/xui/tr/panel_side_tray_tab_caption.xml  |   0
 .../default/xui/tr/panel_snapshot_inventory.xml     |   0
 .../skins/default/xui/tr/panel_snapshot_local.xml   |   0
 .../skins/default/xui/tr/panel_snapshot_options.xml |   0
 .../default/xui/tr/panel_snapshot_postcard.xml      |   0
 .../skins/default/xui/tr/panel_snapshot_profile.xml |   0
 .../skins/default/xui/tr/panel_sound_devices.xml    |   0
 .../default/xui/tr/panel_stand_stop_flying.xml      |   0
 .../skins/default/xui/tr/panel_status_bar.xml       |   0
 .../skins/default/xui/tr/panel_teleport_history.xml |   0
 .../default/xui/tr/panel_teleport_history_item.xml  |   0
 .../skins/default/xui/tr/panel_voice_effect.xml     |   0
 .../skins/default/xui/tr/panel_volume_pulldown.xml  |   0
 .../skins/default/xui/tr/panel_world_map.xml        |   0
 indra/newview/skins/default/xui/tr/role_actions.xml |   0
 .../skins/default/xui/tr/sidepanel_appearance.xml   |   0
 .../skins/default/xui/tr/sidepanel_inventory.xml    |   0
 .../skins/default/xui/tr/sidepanel_item_info.xml    |   0
 .../skins/default/xui/tr/sidepanel_task_info.xml    |   0
 indra/newview/skins/default/xui/tr/strings.xml      |   0
 .../skins/default/xui/tr/teleport_strings.xml       |   0
 indra/newview/skins/default/xui/zh/floater_aaa.xml  |   0
 .../newview/skins/default/xui/zh/floater_about.xml  |   0
 .../skins/default/xui/zh/floater_about_land.xml     |   0
 .../skins/default/xui/zh/floater_activeim.xml       |   0
 .../xui/zh/floater_animation_anim_preview.xml       |   0
 .../xui/zh/floater_animation_bvh_preview.xml        |   0
 .../skins/default/xui/zh/floater_auction.xml        |   0
 .../skins/default/xui/zh/floater_autoreplace.xml    |   0
 .../newview/skins/default/xui/zh/floater_avatar.xml |   0
 .../skins/default/xui/zh/floater_avatar_picker.xml  |   0
 .../default/xui/zh/floater_avatar_textures.xml      |   0
 .../skins/default/xui/zh/floater_beacons.xml        |   0
 .../skins/default/xui/zh/floater_build_options.xml  |   0
 .../skins/default/xui/zh/floater_bulk_perms.xml     |   0
 .../newview/skins/default/xui/zh/floater_bumps.xml  |   0
 .../skins/default/xui/zh/floater_buy_contents.xml   |   0
 .../skins/default/xui/zh/floater_buy_currency.xml   |   0
 .../default/xui/zh/floater_buy_currency_html.xml    |   0
 .../skins/default/xui/zh/floater_buy_land.xml       |   0
 .../skins/default/xui/zh/floater_buy_object.xml     |   0
 .../newview/skins/default/xui/zh/floater_camera.xml |   0
 .../skins/default/xui/zh/floater_chat_bar.xml       |   0
 .../skins/default/xui/zh/floater_choose_group.xml   |   0
 .../skins/default/xui/zh/floater_color_picker.xml   |   0
 .../skins/default/xui/zh/floater_critical.xml       |   0
 .../default/xui/zh/floater_delete_env_preset.xml    |   0
 .../skins/default/xui/zh/floater_destinations.xml   |   0
 .../skins/default/xui/zh/floater_display_name.xml   |   0
 .../skins/default/xui/zh/floater_edit_day_cycle.xml |   0
 .../default/xui/zh/floater_edit_sky_preset.xml      |   0
 .../default/xui/zh/floater_edit_water_preset.xml    |   0
 .../default/xui/zh/floater_environment_settings.xml |   0
 .../newview/skins/default/xui/zh/floater_event.xml  |   0
 .../skins/default/xui/zh/floater_fast_timers.xml    |   0
 .../skins/default/xui/zh/floater_font_test.xml      |   0
 .../skins/default/xui/zh/floater_gesture.xml        |   0
 .../skins/default/xui/zh/floater_god_tools.xml      |   0
 .../default/xui/zh/floater_hardware_settings.xml    |   0
 .../skins/default/xui/zh/floater_help_browser.xml   |   0
 .../newview/skins/default/xui/zh/floater_how_to.xml |   0
 indra/newview/skins/default/xui/zh/floater_hud.xml  |   0
 .../skins/default/xui/zh/floater_im_container.xml   |   0
 .../skins/default/xui/zh/floater_im_session.xml     |   0
 .../skins/default/xui/zh/floater_image_preview.xml  |   0
 .../skins/default/xui/zh/floater_import_collada.xml |   0
 .../skins/default/xui/zh/floater_incoming_call.xml  |   0
 .../skins/default/xui/zh/floater_inspect.xml        |   0
 .../xui/zh/floater_inventory_item_properties.xml    |   0
 .../xui/zh/floater_inventory_view_finder.xml        |   0
 .../skins/default/xui/zh/floater_joystick.xml       |   0
 .../skins/default/xui/zh/floater_lagmeter.xml       |   0
 .../skins/default/xui/zh/floater_land_holdings.xml  |   0
 .../skins/default/xui/zh/floater_live_lsleditor.xml |   0
 .../skins/default/xui/zh/floater_lsl_guide.xml      |   0
 indra/newview/skins/default/xui/zh/floater_map.xml  |   0
 .../skins/default/xui/zh/floater_media_browser.xml  |   0
 .../skins/default/xui/zh/floater_media_settings.xml |   0
 .../skins/default/xui/zh/floater_mem_leaking.xml    |   0
 .../default/xui/zh/floater_merchant_outbox.xml      |   0
 .../skins/default/xui/zh/floater_model_preview.xml  |   0
 .../skins/default/xui/zh/floater_moveview.xml       |   0
 .../skins/default/xui/zh/floater_mute_object.xml    |   0
 .../skins/default/xui/zh/floater_my_appearance.xml  |   0
 .../skins/default/xui/zh/floater_my_inventory.xml   |   0
 .../skins/default/xui/zh/floater_notification.xml   |   0
 .../xui/zh/floater_notifications_console.xml        |   0
 .../skins/default/xui/zh/floater_object_weights.xml |   0
 .../skins/default/xui/zh/floater_openobject.xml     |   0
 .../skins/default/xui/zh/floater_outfit_save_as.xml |   0
 .../skins/default/xui/zh/floater_outgoing_call.xml  |   0
 .../xui/zh/floater_pathfinding_characters.xml       |   0
 .../default/xui/zh/floater_pathfinding_console.xml  |   0
 .../default/xui/zh/floater_pathfinding_linksets.xml |   0
 indra/newview/skins/default/xui/zh/floater_pay.xml  |   0
 .../skins/default/xui/zh/floater_pay_object.xml     |   0
 .../newview/skins/default/xui/zh/floater_people.xml |   0
 .../skins/default/xui/zh/floater_perm_prefs.xml     |   0
 .../newview/skins/default/xui/zh/floater_picks.xml  |   0
 .../newview/skins/default/xui/zh/floater_places.xml |   0
 .../skins/default/xui/zh/floater_post_process.xml   |   0
 .../skins/default/xui/zh/floater_preferences.xml    |   0
 .../default/xui/zh/floater_preferences_proxy.xml    |   0
 .../default/xui/zh/floater_preview_animation.xml    |   0
 .../default/xui/zh/floater_preview_gesture.xml      |   0
 .../default/xui/zh/floater_preview_notecard.xml     |   0
 .../skins/default/xui/zh/floater_preview_sound.xml  |   0
 .../default/xui/zh/floater_preview_texture.xml      |   0
 .../default/xui/zh/floater_price_for_listing.xml    |   0
 .../default/xui/zh/floater_publish_classified.xml   |   0
 .../default/xui/zh/floater_region_debug_console.xml |   0
 .../skins/default/xui/zh/floater_region_info.xml    |   0
 .../skins/default/xui/zh/floater_report_abuse.xml   |   0
 .../skins/default/xui/zh/floater_script_debug.xml   |   0
 .../default/xui/zh/floater_script_debug_panel.xml   |   0
 .../skins/default/xui/zh/floater_script_limits.xml  |   0
 .../skins/default/xui/zh/floater_script_preview.xml |   0
 .../skins/default/xui/zh/floater_script_queue.xml   |   0
 .../skins/default/xui/zh/floater_script_search.xml  |   0
 .../newview/skins/default/xui/zh/floater_search.xml |   0
 .../skins/default/xui/zh/floater_select_key.xml     |   0
 .../skins/default/xui/zh/floater_sell_land.xml      |   0
 .../skins/default/xui/zh/floater_settings_debug.xml |   0
 .../skins/default/xui/zh/floater_snapshot.xml       |   0
 .../skins/default/xui/zh/floater_sound_devices.xml  |   0
 .../skins/default/xui/zh/floater_sound_preview.xml  |   0
 .../skins/default/xui/zh/floater_spellcheck.xml     |   0
 .../default/xui/zh/floater_spellcheck_import.xml    |   0
 .../newview/skins/default/xui/zh/floater_stats.xml  |   0
 .../skins/default/xui/zh/floater_sys_well.xml       |   0
 .../skins/default/xui/zh/floater_telehub.xml        |   0
 .../default/xui/zh/floater_test_layout_stacks.xml   |   0
 .../xui/zh/floater_test_text_vertical_aligment.xml  |   0
 .../skins/default/xui/zh/floater_texture_ctrl.xml   |   0
 .../xui/zh/floater_texture_fetch_debugger.xml       |   0
 .../newview/skins/default/xui/zh/floater_tools.xml  |   0
 .../skins/default/xui/zh/floater_top_objects.xml    |   0
 indra/newview/skins/default/xui/zh/floater_tos.xml  |   0
 .../newview/skins/default/xui/zh/floater_toybox.xml |   0
 .../default/xui/zh/floater_translation_settings.xml |   0
 .../skins/default/xui/zh/floater_url_entry.xml      |   0
 .../skins/default/xui/zh/floater_voice_controls.xml |   0
 .../skins/default/xui/zh/floater_voice_effect.xml   |   0
 .../skins/default/xui/zh/floater_web_content.xml    |   0
 .../default/xui/zh/floater_whitelist_entry.xml      |   0
 .../skins/default/xui/zh/floater_window_size.xml    |   0
 .../skins/default/xui/zh/floater_world_map.xml      |   0
 .../newview/skins/default/xui/zh/inspect_avatar.xml |   0
 .../newview/skins/default/xui/zh/inspect_group.xml  |   0
 .../newview/skins/default/xui/zh/inspect_object.xml |   0
 .../skins/default/xui/zh/inspect_remote_object.xml  |   0
 .../skins/default/xui/zh/menu_add_wearable_gear.xml |   0
 .../skins/default/xui/zh/menu_attachment_other.xml  |   0
 .../skins/default/xui/zh/menu_attachment_self.xml   |   0
 .../skins/default/xui/zh/menu_avatar_icon.xml       |   0
 .../skins/default/xui/zh/menu_avatar_other.xml      |   0
 .../skins/default/xui/zh/menu_avatar_self.xml       |   0
 .../skins/default/xui/zh/menu_cof_attachment.xml    |   0
 .../skins/default/xui/zh/menu_cof_body_part.xml     |   0
 .../skins/default/xui/zh/menu_cof_clothing.xml      |   0
 .../newview/skins/default/xui/zh/menu_cof_gear.xml  |   0
 indra/newview/skins/default/xui/zh/menu_edit.xml    |   0
 .../newview/skins/default/xui/zh/menu_favorites.xml |   0
 .../skins/default/xui/zh/menu_gesture_gear.xml      |   0
 .../skins/default/xui/zh/menu_group_plus.xml        |   0
 .../skins/default/xui/zh/menu_hide_navbar.xml       |   0
 .../skins/default/xui/zh/menu_imchiclet_adhoc.xml   |   0
 .../skins/default/xui/zh/menu_imchiclet_group.xml   |   0
 .../skins/default/xui/zh/menu_imchiclet_p2p.xml     |   0
 .../default/xui/zh/menu_inspect_avatar_gear.xml     |   0
 .../default/xui/zh/menu_inspect_object_gear.xml     |   0
 .../skins/default/xui/zh/menu_inspect_self_gear.xml |   0
 .../skins/default/xui/zh/menu_inv_offer_chiclet.xml |   0
 .../newview/skins/default/xui/zh/menu_inventory.xml |   0
 .../skins/default/xui/zh/menu_inventory_add.xml     |   0
 .../default/xui/zh/menu_inventory_gear_default.xml  |   0
 indra/newview/skins/default/xui/zh/menu_land.xml    |   0
 .../newview/skins/default/xui/zh/menu_landmark.xml  |   0
 indra/newview/skins/default/xui/zh/menu_login.xml   |   0
 .../skins/default/xui/zh/menu_media_ctrl.xml        |   0
 .../newview/skins/default/xui/zh/menu_mini_map.xml  |   0
 .../xui/zh/menu_model_import_gear_default.xml       |   0
 indra/newview/skins/default/xui/zh/menu_navbar.xml  |   0
 .../skins/default/xui/zh/menu_nearby_chat.xml       |   0
 .../xui/zh/menu_notification_well_button.xml        |   0
 indra/newview/skins/default/xui/zh/menu_object.xml  |   0
 .../skins/default/xui/zh/menu_object_icon.xml       |   0
 .../skins/default/xui/zh/menu_outfit_gear.xml       |   0
 .../skins/default/xui/zh/menu_outfit_tab.xml        |   0
 .../skins/default/xui/zh/menu_participant_list.xml  |   0
 .../xui/zh/menu_people_friends_view_sort.xml        |   0
 .../skins/default/xui/zh/menu_people_groups.xml     |   0
 .../default/xui/zh/menu_people_groups_view_sort.xml |   0
 .../skins/default/xui/zh/menu_people_nearby.xml     |   0
 .../xui/zh/menu_people_nearby_multiselect.xml       |   0
 .../default/xui/zh/menu_people_nearby_view_sort.xml |   0
 .../default/xui/zh/menu_people_recent_view_sort.xml |   0
 indra/newview/skins/default/xui/zh/menu_picks.xml   |   0
 .../skins/default/xui/zh/menu_picks_plus.xml        |   0
 indra/newview/skins/default/xui/zh/menu_place.xml   |   0
 .../skins/default/xui/zh/menu_place_add_button.xml  |   0
 .../default/xui/zh/menu_places_gear_folder.xml      |   0
 .../default/xui/zh/menu_places_gear_landmark.xml    |   0
 .../skins/default/xui/zh/menu_profile_overflow.xml  |   0
 .../skins/default/xui/zh/menu_save_outfit.xml       |   0
 .../skins/default/xui/zh/menu_script_chiclet.xml    |   0
 indra/newview/skins/default/xui/zh/menu_slurl.xml   |   0
 .../default/xui/zh/menu_teleport_history_gear.xml   |   0
 .../default/xui/zh/menu_teleport_history_item.xml   |   0
 .../default/xui/zh/menu_teleport_history_tab.xml    |   0
 .../skins/default/xui/zh/menu_text_editor.xml       |   0
 .../newview/skins/default/xui/zh/menu_toolbars.xml  |   0
 .../skins/default/xui/zh/menu_topinfobar.xml        |   0
 .../newview/skins/default/xui/zh/menu_url_agent.xml |   0
 .../newview/skins/default/xui/zh/menu_url_group.xml |   0
 .../newview/skins/default/xui/zh/menu_url_http.xml  |   0
 .../skins/default/xui/zh/menu_url_inventory.xml     |   0
 indra/newview/skins/default/xui/zh/menu_url_map.xml |   0
 .../skins/default/xui/zh/menu_url_objectim.xml      |   0
 .../skins/default/xui/zh/menu_url_parcel.xml        |   0
 .../newview/skins/default/xui/zh/menu_url_slapp.xml |   0
 .../newview/skins/default/xui/zh/menu_url_slurl.xml |   0
 .../skins/default/xui/zh/menu_url_teleport.xml      |   0
 indra/newview/skins/default/xui/zh/menu_viewer.xml  |   0
 .../default/xui/zh/menu_wearable_list_item.xml      |   0
 .../skins/default/xui/zh/menu_wearing_gear.xml      |   0
 .../skins/default/xui/zh/menu_wearing_tab.xml       |   0
 indra/newview/skins/default/xui/zh/mime_types.xml   |   0
 .../skins/default/xui/zh/mime_types_linux.xml       |   0
 .../newview/skins/default/xui/zh/mime_types_mac.xml |   0
 .../newview/skins/default/xui/zh/notifications.xml  |   0
 .../default/xui/zh/panel_active_object_row.xml      |   0
 .../default/xui/zh/panel_adhoc_control_panel.xml    |   0
 .../skins/default/xui/zh/panel_avatar_list_item.xml |   0
 .../skins/default/xui/zh/panel_avatar_tag.xml       |   0
 .../default/xui/zh/panel_block_list_sidetray.xml    |   0
 .../default/xui/zh/panel_body_parts_list_item.xml   |   0
 .../xui/zh/panel_bodyparts_list_button_bar.xml      |   0
 .../skins/default/xui/zh/panel_bottomtray_lite.xml  |   0
 .../skins/default/xui/zh/panel_chat_header.xml      |   0
 .../skins/default/xui/zh/panel_chiclet_bar.xml      |   0
 .../skins/default/xui/zh/panel_classified_info.xml  |   0
 .../xui/zh/panel_clothing_list_button_bar.xml       |   0
 .../default/xui/zh/panel_clothing_list_item.xml     |   0
 .../skins/default/xui/zh/panel_cof_wearables.xml    |   0
 .../xui/zh/panel_deletable_wearable_list_item.xml   |   0
 .../xui/zh/panel_dummy_clothing_list_item.xml       |   0
 .../skins/default/xui/zh/panel_edit_alpha.xml       |   0
 .../skins/default/xui/zh/panel_edit_classified.xml  |   0
 .../skins/default/xui/zh/panel_edit_eyes.xml        |   0
 .../skins/default/xui/zh/panel_edit_gloves.xml      |   0
 .../skins/default/xui/zh/panel_edit_hair.xml        |   0
 .../skins/default/xui/zh/panel_edit_jacket.xml      |   0
 .../skins/default/xui/zh/panel_edit_pants.xml       |   0
 .../skins/default/xui/zh/panel_edit_physics.xml     |   0
 .../skins/default/xui/zh/panel_edit_pick.xml        |   0
 .../skins/default/xui/zh/panel_edit_profile.xml     |   0
 .../skins/default/xui/zh/panel_edit_shape.xml       |   0
 .../skins/default/xui/zh/panel_edit_shirt.xml       |   0
 .../skins/default/xui/zh/panel_edit_shoes.xml       |   0
 .../skins/default/xui/zh/panel_edit_skin.xml        |   0
 .../skins/default/xui/zh/panel_edit_skirt.xml       |   0
 .../skins/default/xui/zh/panel_edit_socks.xml       |   0
 .../skins/default/xui/zh/panel_edit_tattoo.xml      |   0
 .../skins/default/xui/zh/panel_edit_underpants.xml  |   0
 .../skins/default/xui/zh/panel_edit_undershirt.xml  |   0
 .../skins/default/xui/zh/panel_edit_wearable.xml    |   0
 .../default/xui/zh/panel_group_control_panel.xml    |   0
 .../skins/default/xui/zh/panel_group_general.xml    |   0
 .../default/xui/zh/panel_group_info_sidetray.xml    |   0
 .../skins/default/xui/zh/panel_group_invite.xml     |   0
 .../skins/default/xui/zh/panel_group_land_money.xml |   0
 .../skins/default/xui/zh/panel_group_list_item.xml  |   0
 .../skins/default/xui/zh/panel_group_notices.xml    |   0
 .../skins/default/xui/zh/panel_group_notify.xml     |   0
 .../skins/default/xui/zh/panel_group_roles.xml      |   0
 .../skins/default/xui/zh/panel_im_control_panel.xml |   0
 .../skins/default/xui/zh/panel_instant_message.xml  |   0
 .../skins/default/xui/zh/panel_inventory_item.xml   |   0
 .../skins/default/xui/zh/panel_landmark_info.xml    |   0
 .../skins/default/xui/zh/panel_landmarks.xml        |   0
 indra/newview/skins/default/xui/zh/panel_login.xml  |   0
 .../skins/default/xui/zh/panel_main_inventory.xml   |   0
 indra/newview/skins/default/xui/zh/panel_me.xml     |   0
 .../default/xui/zh/panel_media_settings_general.xml |   0
 .../xui/zh/panel_media_settings_permissions.xml     |   0
 .../xui/zh/panel_media_settings_security.xml        |   0
 .../skins/default/xui/zh/panel_navigation_bar.xml   |   0
 .../skins/default/xui/zh/panel_navmesh_rebake.xml   |   0
 .../skins/default/xui/zh/panel_nearby_chat.xml      |   0
 .../skins/default/xui/zh/panel_nearby_chat_bar.xml  |   0
 .../skins/default/xui/zh/panel_nearby_media.xml     |   0
 .../skins/default/xui/zh/panel_notify_textbox.xml   |   0
 .../default/xui/zh/panel_online_status_toast.xml    |   0
 .../skins/default/xui/zh/panel_outbox_inventory.xml |   0
 .../skins/default/xui/zh/panel_outfit_edit.xml      |   0
 .../default/xui/zh/panel_outfits_inventory.xml      |   0
 .../xui/zh/panel_outfits_inventory_gear_default.xml |   0
 .../skins/default/xui/zh/panel_outfits_list.xml     |   0
 .../skins/default/xui/zh/panel_outfits_wearing.xml  |   0
 indra/newview/skins/default/xui/zh/panel_people.xml |   0
 .../skins/default/xui/zh/panel_pick_info.xml        |   0
 indra/newview/skins/default/xui/zh/panel_picks.xml  |   0
 .../skins/default/xui/zh/panel_place_profile.xml    |   0
 indra/newview/skins/default/xui/zh/panel_places.xml |   0
 .../skins/default/xui/zh/panel_postcard_message.xml |   0
 .../default/xui/zh/panel_postcard_settings.xml      |   0
 .../default/xui/zh/panel_preferences_advanced.xml   |   0
 .../default/xui/zh/panel_preferences_alerts.xml     |   0
 .../skins/default/xui/zh/panel_preferences_chat.xml |   0
 .../default/xui/zh/panel_preferences_colors.xml     |   0
 .../default/xui/zh/panel_preferences_general.xml    |   0
 .../default/xui/zh/panel_preferences_graphics1.xml  |   0
 .../skins/default/xui/zh/panel_preferences_move.xml |   0
 .../default/xui/zh/panel_preferences_privacy.xml    |   0
 .../default/xui/zh/panel_preferences_setup.xml      |   0
 .../default/xui/zh/panel_preferences_sound.xml      |   0
 .../default/xui/zh/panel_prim_media_controls.xml    |   0
 .../skins/default/xui/zh/panel_region_covenant.xml  |   0
 .../skins/default/xui/zh/panel_region_debug.xml     |   0
 .../default/xui/zh/panel_region_environment.xml     |   0
 .../skins/default/xui/zh/panel_region_estate.xml    |   0
 .../skins/default/xui/zh/panel_region_general.xml   |   0
 .../skins/default/xui/zh/panel_region_terrain.xml   |   0
 .../skins/default/xui/zh/panel_script_ed.xml        |   0
 .../xui/zh/panel_script_limits_my_avatar.xml        |   0
 .../xui/zh/panel_script_limits_region_memory.xml    |   0
 .../default/xui/zh/panel_script_question_toast.xml  |   0
 .../skins/default/xui/zh/panel_scrolling_param.xml  |   0
 .../default/xui/zh/panel_scrolling_param_base.xml   |   0
 .../default/xui/zh/panel_side_tray_tab_caption.xml  |   0
 .../default/xui/zh/panel_snapshot_inventory.xml     |   0
 .../skins/default/xui/zh/panel_snapshot_local.xml   |   0
 .../skins/default/xui/zh/panel_snapshot_options.xml |   0
 .../default/xui/zh/panel_snapshot_postcard.xml      |   0
 .../skins/default/xui/zh/panel_snapshot_profile.xml |   0
 .../skins/default/xui/zh/panel_sound_devices.xml    |   0
 .../default/xui/zh/panel_stand_stop_flying.xml      |   0
 .../skins/default/xui/zh/panel_status_bar.xml       |   0
 .../skins/default/xui/zh/panel_teleport_history.xml |   0
 .../default/xui/zh/panel_teleport_history_item.xml  |   0
 .../skins/default/xui/zh/panel_voice_effect.xml     |   0
 .../skins/default/xui/zh/panel_volume_pulldown.xml  |   0
 .../skins/default/xui/zh/panel_world_map.xml        |   0
 indra/newview/skins/default/xui/zh/role_actions.xml |   0
 .../skins/default/xui/zh/sidepanel_appearance.xml   |   0
 .../skins/default/xui/zh/sidepanel_inventory.xml    |   0
 .../skins/default/xui/zh/sidepanel_item_info.xml    |   0
 .../skins/default/xui/zh/sidepanel_task_info.xml    |   0
 indra/newview/skins/default/xui/zh/strings.xml      |   0
 .../skins/default/xui/zh/teleport_strings.xml       |   0
 indra/newview/tests/gpus_results.txt                |   0
 indra/newview/tests/gpus_seen.txt                   |   0
 indra/newview/tests/llagentaccess_test.cpp          |   0
 indra/newview/tests/llcapabilitylistener_test.cpp   |   0
 indra/newview/tests/lldateutil_test.cpp             |   0
 indra/newview/tests/lldir_stub.cpp                  |   0
 indra/newview/tests/llglslshader_stub.cpp           |   0
 indra/newview/tests/lllogininstance_test.cpp        |   0
 indra/newview/tests/llmediadataclient_test.cpp      |   0
 indra/newview/tests/llpipeline_stub.cpp             |   0
 indra/newview/tests/llremoteparcelrequest_test.cpp  |   0
 indra/newview/tests/llsecapi_test.cpp               |   0
 indra/newview/tests/llsechandler_basic_test.cpp     |   0
 indra/newview/tests/llsimplestat_test.cpp           |   0
 indra/newview/tests/llsky_stub.cpp                  |   0
 indra/newview/tests/llslurl_test.cpp                |   0
 indra/newview/tests/lltextureinfo_test.cpp          |   0
 indra/newview/tests/lltextureinfodetails_test.cpp   |   0
 indra/newview/tests/lltexturestatsuploader_test.cpp |   0
 indra/newview/tests/lltranslate_test.cpp            |   0
 indra/newview/tests/llversioninfo_test.cpp          |   0
 indra/newview/tests/llviewerassetstats_test.cpp     |   0
 indra/newview/tests/llviewerhelputil_test.cpp       |   0
 indra/newview/tests/llviewernetwork_test.cpp        |   0
 indra/newview/tests/llviewershadermgr_stub.cpp      |   0
 indra/newview/tests/llwlanimator_stub.cpp           |   0
 indra/newview/tests/llwldaycycle_stub.cpp           |   0
 indra/newview/tests/llwlparammanager_test.cpp       |   0
 indra/newview/tests/llwlparamset_stub.cpp           |   0
 indra/newview/tests/llworldmap_test.cpp             |   0
 indra/newview/tests/llworldmipmap_test.cpp          |   0
 indra/newview/tests/llxmlrpclistener_test.cpp       |   0
 indra/newview/tests/test_llxmlrpc_peer.py           |   0
 indra/newview/tr.lproj/language.txt                 |   0
 indra/newview/uk.lproj/language.txt                 |   0
 indra/newview/viewer_manifest.py                    |   0
 indra/newview/zh-Hans.lproj/language.txt            |   0
 indra/test/CMakeLists.txt                           |   0
 indra/test/blowfish.1.bin                           |   0
 indra/test/blowfish.2.bin                           | Bin
 indra/test/blowfish.digits.txt                      |   0
 indra/test/catch_and_store_what_in.h                |   0
 indra/test/debug.h                                  |   0
 indra/test/io.cpp                                   |   0
 indra/test/llapp_tut.cpp                            |   0
 indra/test/llassetuploadqueue_tut.cpp               |   0
 indra/test/llblowfish_tut.cpp                       |   0
 indra/test/llbuffer_tut.cpp                         |   0
 indra/test/lldatapacker_tut.cpp                     |   0
 indra/test/lldoubledispatch_tut.cpp                 |   0
 indra/test/llevents_tut.cpp                         |   0
 indra/test/llhttpdate_tut.cpp                       |   0
 indra/test/llhttpnode_tut.cpp                       |   0
 indra/test/lliohttpserver_tut.cpp                   |   0
 indra/test/llmessageconfig_tut.cpp                  |   0
 indra/test/llmessagetemplateparser_tut.cpp          |   0
 indra/test/llpermissions_tut.cpp                    |   0
 indra/test/llpipeutil.cpp                           |   0
 indra/test/llpipeutil.h                             |   0
 indra/test/llsaleinfo_tut.cpp                       |   0
 indra/test/llscriptresource_tut.cpp                 |   0
 indra/test/llsd_new_tut.cpp                         |   0
 indra/test/llsdmessagebuilder_tut.cpp               |   0
 indra/test/llsdmessagereader_tut.cpp                |   0
 indra/test/llsdtraits.h                             |   0
 indra/test/llsdutil_tut.cpp                         |   0
 indra/test/llservicebuilder_tut.cpp                 |   0
 indra/test/llstreamtools_tut.cpp                    |   0
 indra/test/lltemplatemessagebuilder_tut.cpp         |   0
 indra/test/lltimestampcache_tut.cpp                 |   0
 indra/test/lltranscode_tut.cpp                      |   0
 indra/test/lltut.cpp                                |   0
 indra/test/lltut.h                                  |   0
 indra/test/lluserrelations_tut.cpp                  |   0
 indra/test/lluuidhashmap_tut.cpp                    |   0
 indra/test/llxorcipher_tut.cpp                      |   0
 indra/test/manageapr.h                              |   0
 indra/test/message_tut.cpp                          |   0
 indra/test/mock_http_client.cpp                     |   0
 indra/test/mock_http_client.h                       |   0
 indra/test/namedtempfile.h                          |   0
 indra/test/prim_linkability_tut.cpp                 |   0
 indra/test/test.cpp                                 |   0
 indra/test/test.h                                   |   0
 indra/test/test_llmanifest.py                       |   0
 indra/test_apps/llplugintest/CMakeLists.txt         |   0
 indra/test_apps/llplugintest/bookmarks.txt          |   0
 indra/test_apps/llplugintest/llmediaplugintest.cpp  |   0
 indra/test_apps/llplugintest/llmediaplugintest.h    |   0
 indra/tools/vstool/README.txt                       |   0
 indra/tools/vstool/VSTool.csproj                    |   0
 indra/tools/vstool/VSTool.sln                       |   0
 indra/tools/vstool/main.cs                          |   0
 indra/viewer_components/CMakeLists.txt              |   0
 indra/viewer_components/login/CMakeLists.txt        |   0
 indra/viewer_components/login/lllogin.cpp           |   0
 indra/viewer_components/login/lllogin.h             |   0
 .../viewer_components/login/tests/lllogin_test.cpp  |   0
 indra/viewer_components/updater/CMakeLists.txt      |   0
 indra/viewer_components/updater/llupdatechecker.cpp |   0
 indra/viewer_components/updater/llupdatechecker.h   |   0
 .../updater/llupdatedownloader.cpp                  |   0
 .../viewer_components/updater/llupdatedownloader.h  |   0
 .../viewer_components/updater/llupdateinstaller.cpp |   0
 indra/viewer_components/updater/llupdateinstaller.h |   0
 .../viewer_components/updater/llupdaterservice.cpp  |   0
 indra/viewer_components/updater/llupdaterservice.h  |   0
 .../updater/scripts/darwin/update_install           |   0
 .../updater/scripts/linux/update_install            |   0
 .../updater/tests/llupdaterservice_test.cpp         |   0
 indra/win_crash_logger/CMakeLists.txt               |   0
 indra/win_crash_logger/StdAfx.cpp                   |   0
 indra/win_crash_logger/StdAfx.h                     |   0
 indra/win_crash_logger/ll_icon.ico                  | Bin
 indra/win_crash_logger/llcrashloggerwindows.cpp     |   0
 indra/win_crash_logger/llcrashloggerwindows.h       |   0
 indra/win_crash_logger/resource.h                   |   0
 indra/win_crash_logger/win_crash_logger.cpp         |   0
 indra/win_crash_logger/win_crash_logger.h           |   0
 indra/win_crash_logger/win_crash_logger.ico         | Bin
 indra/win_crash_logger/win_crash_logger.rc          |   0
 indra/win_updater/CMakeLists.txt                    |   0
 indra/win_updater/updater.cpp                       |   0
 scripts/messages/message_template.msg               |   0
 scripts/messages/message_template.msg.sha1          |   0
 scripts/setup-path.py                               |   0
 scripts/template_verifier.py                        |   0
 scripts/templates/template-cpp.cpp                  |   0
 scripts/templates/template-h.h                      |   0
 8018 files changed, 5 insertions(+), 4 deletions(-)
 mode change 100644 => 100755 .hgignore
 mode change 100644 => 100755 .hgtags
 mode change 100644 => 100755 BuildParams
 mode change 100644 => 100755 autobuild.xml
 mode change 100644 => 100755 doc/LGPL-licence.txt
 mode change 100644 => 100755 doc/LICENSE-logos.txt
 mode change 100644 => 100755 doc/LICENSE-source.txt
 mode change 100644 => 100755 doc/contributions.txt
 mode change 100644 => 100755 doc/releasenotes-where.txt
 mode change 100644 => 100755 doc/translations.txt
 mode change 100644 => 100755 etc/message.xml
 mode change 100644 => 100755 indra/CMakeLists.txt
 mode change 100644 => 100755 indra/cmake/00-Common.cmake
 mode change 100644 => 100755 indra/cmake/APR.cmake
 mode change 100644 => 100755 indra/cmake/Audio.cmake
 mode change 100644 => 100755 indra/cmake/BerkeleyDB.cmake
 mode change 100644 => 100755 indra/cmake/Boost.cmake
 mode change 100644 => 100755 indra/cmake/BuildVersion.cmake
 mode change 100644 => 100755 indra/cmake/CARes.cmake
 mode change 100644 => 100755 indra/cmake/CMakeCopyIfDifferent.cmake
 mode change 100644 => 100755 indra/cmake/CMakeLists.txt
 mode change 100644 => 100755 indra/cmake/CSharpMacros.cmake
 mode change 100644 => 100755 indra/cmake/CURL.cmake
 mode change 100644 => 100755 indra/cmake/Copy3rdPartyLibs.cmake
 mode change 100644 => 100755 indra/cmake/CopyBackToSource.cmake
 mode change 100644 => 100755 indra/cmake/DBusGlib.cmake
 mode change 100644 => 100755 indra/cmake/DeploySharedLibs.cmake
 mode change 100644 => 100755 indra/cmake/DirectX.cmake
 mode change 100644 => 100755 indra/cmake/DragDrop.cmake
 mode change 100644 => 100755 indra/cmake/EXPAT.cmake
 mode change 100644 => 100755 indra/cmake/ExamplePlugin.cmake
 mode change 100644 => 100755 indra/cmake/Externals.cmake
 mode change 100644 => 100755 indra/cmake/FMOD.cmake
 mode change 100644 => 100755 indra/cmake/FindAPR.cmake
 mode change 100644 => 100755 indra/cmake/FindAutobuild.cmake
 mode change 100644 => 100755 indra/cmake/FindBerkeleyDB.cmake
 mode change 100644 => 100755 indra/cmake/FindCARes.cmake
 mode change 100644 => 100755 indra/cmake/FindELFIO.cmake
 mode change 100644 => 100755 indra/cmake/FindFMOD.cmake
 mode change 100644 => 100755 indra/cmake/FindGLH.cmake
 mode change 100644 => 100755 indra/cmake/FindGoogleBreakpad.cmake
 mode change 100644 => 100755 indra/cmake/FindGooglePerfTools.cmake
 mode change 100644 => 100755 indra/cmake/FindHUNSPELL.cmake
 mode change 100644 => 100755 indra/cmake/FindJsonCpp.cmake
 mode change 100644 => 100755 indra/cmake/FindLLQtWebkit.cmake
 mode change 100644 => 100755 indra/cmake/FindMT.cmake
 mode change 100644 => 100755 indra/cmake/FindMono.cmake
 mode change 100644 => 100755 indra/cmake/FindMySQL.cmake
 mode change 100644 => 100755 indra/cmake/FindNDOF.cmake
 mode change 100644 => 100755 indra/cmake/FindOpenJPEG.cmake
 mode change 100644 => 100755 indra/cmake/FindSCP.cmake
 mode change 100644 => 100755 indra/cmake/FindSVN.cmake
 mode change 100644 => 100755 indra/cmake/FindXmlRpcEpi.cmake
 mode change 100644 => 100755 indra/cmake/FindZLIB.cmake
 mode change 100644 => 100755 indra/cmake/FreeType.cmake
 mode change 100644 => 100755 indra/cmake/GLH.cmake
 mode change 100644 => 100755 indra/cmake/GLOD.cmake
 mode change 100644 => 100755 indra/cmake/GStreamer010Plugin.cmake
 mode change 100644 => 100755 indra/cmake/GetPrerequisites_2_8.cmake
 mode change 100644 => 100755 indra/cmake/Glui.cmake
 mode change 100644 => 100755 indra/cmake/Glut.cmake
 mode change 100644 => 100755 indra/cmake/GoogleBreakpad.cmake
 mode change 100644 => 100755 indra/cmake/GoogleMock.cmake
 mode change 100644 => 100755 indra/cmake/GooglePerfTools.cmake
 mode change 100644 => 100755 indra/cmake/Havok.cmake
 mode change 100644 => 100755 indra/cmake/Hunspell.cmake
 mode change 100644 => 100755 indra/cmake/JPEG.cmake
 mode change 100644 => 100755 indra/cmake/JsonCpp.cmake
 mode change 100644 => 100755 indra/cmake/LLAudio.cmake
 mode change 100644 => 100755 indra/cmake/LLCharacter.cmake
 mode change 100644 => 100755 indra/cmake/LLCommon.cmake
 mode change 100644 => 100755 indra/cmake/LLCoreHttp.cmake
 mode change 100644 => 100755 indra/cmake/LLCrashLogger.cmake
 mode change 100644 => 100755 indra/cmake/LLDatabase.cmake
 mode change 100644 => 100755 indra/cmake/LLImage.cmake
 mode change 100644 => 100755 indra/cmake/LLImageJ2COJ.cmake
 mode change 100644 => 100755 indra/cmake/LLInventory.cmake
 mode change 100644 => 100755 indra/cmake/LLKDU.cmake
 mode change 100644 => 100755 indra/cmake/LLLogin.cmake
 mode change 100644 => 100755 indra/cmake/LLMath.cmake
 mode change 100644 => 100755 indra/cmake/LLMessage.cmake
 mode change 100644 => 100755 indra/cmake/LLPhysicsExtensions.cmake
 mode change 100644 => 100755 indra/cmake/LLPlugin.cmake
 mode change 100644 => 100755 indra/cmake/LLPrimitive.cmake
 mode change 100644 => 100755 indra/cmake/LLRender.cmake
 mode change 100644 => 100755 indra/cmake/LLScene.cmake
 mode change 100644 => 100755 indra/cmake/LLSharedLibs.cmake
 mode change 100644 => 100755 indra/cmake/LLTestCommand.cmake
 mode change 100644 => 100755 indra/cmake/LLUI.cmake
 mode change 100644 => 100755 indra/cmake/LLVFS.cmake
 mode change 100644 => 100755 indra/cmake/LLWindow.cmake
 mode change 100644 => 100755 indra/cmake/LLXML.cmake
 mode change 100644 => 100755 indra/cmake/LLXUIXML.cmake
 mode change 100644 => 100755 indra/cmake/LScript.cmake
 mode change 100644 => 100755 indra/cmake/Linking.cmake
 mode change 100644 => 100755 indra/cmake/MediaPluginBase.cmake
 mode change 100644 => 100755 indra/cmake/MonoDeps.cmake
 mode change 100644 => 100755 indra/cmake/MonoEmbed.cmake
 mode change 100644 => 100755 indra/cmake/MySQL.cmake
 mode change 100644 => 100755 indra/cmake/NDOF.cmake
 mode change 100644 => 100755 indra/cmake/NVAPI.cmake
 mode change 100644 => 100755 indra/cmake/OPENAL.cmake
 mode change 100644 => 100755 indra/cmake/OpenGL.cmake
 mode change 100644 => 100755 indra/cmake/OpenJPEG.cmake
 mode change 100644 => 100755 indra/cmake/OpenSSL.cmake
 mode change 100644 => 100755 indra/cmake/PNG.cmake
 mode change 100644 => 100755 indra/cmake/PluginAPI.cmake
 mode change 100644 => 100755 indra/cmake/Prebuilt.cmake
 mode change 100644 => 100755 indra/cmake/PulseAudio.cmake
 mode change 100644 => 100755 indra/cmake/Python.cmake
 mode change 100644 => 100755 indra/cmake/QuickTimePlugin.cmake
 mode change 100644 => 100755 indra/cmake/TemplateCheck.cmake
 mode change 100644 => 100755 indra/cmake/Tut.cmake
 mode change 100644 => 100755 indra/cmake/UI.cmake
 mode change 100644 => 100755 indra/cmake/UnixInstall.cmake
 mode change 100644 => 100755 indra/cmake/Variables.cmake
 mode change 100644 => 100755 indra/cmake/ViewerMiscLibs.cmake
 mode change 100644 => 100755 indra/cmake/VisualLeakDetector.cmake
 mode change 100644 => 100755 indra/cmake/WebKitLibPlugin.cmake
 mode change 100644 => 100755 indra/cmake/XmlRpcEpi.cmake
 mode change 100644 => 100755 indra/cmake/ZLIB.cmake
 mode change 100644 => 100755 indra/cmake/cmake_dummy.cpp
 mode change 100644 => 100755 indra/cmake/run_build_test.py
 mode change 100644 => 100755 indra/copy_win_scripts/CMakeLists.txt
 mode change 100644 => 100755 indra/copy_win_scripts/start-client.py
 mode change 100644 => 100755 indra/edit-me-to-trigger-new-build.txt
 mode change 100644 => 100755 indra/fix-incredibuild.py
 mode change 100644 => 100755 indra/integration_tests/CMakeLists.txt
 mode change 100644 => 100755 indra/integration_tests/llimage_libtest/CMakeLists.txt
 mode change 100644 => 100755 indra/integration_tests/llimage_libtest/llimage_libtest.cpp
 mode change 100644 => 100755 indra/integration_tests/llimage_libtest/llimage_libtest.h
 mode change 100644 => 100755 indra/integration_tests/llui_libtest/CMakeLists.txt
 mode change 100644 => 100755 indra/integration_tests/llui_libtest/llui_libtest.cpp
 mode change 100644 => 100755 indra/integration_tests/llui_libtest/llui_libtest.h
 mode change 100644 => 100755 indra/integration_tests/llui_libtest/llwidgetreg.cpp
 mode change 100644 => 100755 indra/integration_tests/llui_libtest/llwidgetreg.h
 mode change 100644 => 100755 indra/lib/python/indra/__init__.py
 mode change 100644 => 100755 indra/lib/python/indra/base/__init__.py
 mode change 100644 => 100755 indra/lib/python/indra/base/cllsd_test.py
 mode change 100644 => 100755 indra/lib/python/indra/base/config.py
 mode change 100644 => 100755 indra/lib/python/indra/base/llsd.py
 mode change 100644 => 100755 indra/lib/python/indra/base/lluuid.py
 mode change 100644 => 100755 indra/lib/python/indra/base/metrics.py
 mode change 100644 => 100755 indra/lib/python/indra/ipc/__init__.py
 mode change 100644 => 100755 indra/lib/python/indra/ipc/compatibility.py
 mode change 100644 => 100755 indra/lib/python/indra/ipc/httputil.py
 mode change 100644 => 100755 indra/lib/python/indra/ipc/llmessage.py
 mode change 100644 => 100755 indra/lib/python/indra/ipc/llsdhttp.py
 mode change 100644 => 100755 indra/lib/python/indra/ipc/mysql_pool.py
 mode change 100644 => 100755 indra/lib/python/indra/ipc/russ.py
 mode change 100644 => 100755 indra/lib/python/indra/ipc/servicebuilder.py
 mode change 100644 => 100755 indra/lib/python/indra/ipc/siesta.py
 mode change 100644 => 100755 indra/lib/python/indra/ipc/siesta_test.py
 mode change 100644 => 100755 indra/lib/python/indra/ipc/tokenstream.py
 mode change 100644 => 100755 indra/lib/python/indra/ipc/webdav.py
 mode change 100644 => 100755 indra/lib/python/indra/ipc/xml_rpc.py
 mode change 100644 => 100755 indra/lib/python/indra/util/__init__.py
 mode change 100644 => 100755 indra/lib/python/indra/util/fastest_elementtree.py
 mode change 100644 => 100755 indra/lib/python/indra/util/helpformatter.py
 mode change 100644 => 100755 indra/lib/python/indra/util/iterators.py
 mode change 100644 => 100755 indra/lib/python/indra/util/llmanifest.py
 mode change 100644 => 100755 indra/lib/python/indra/util/llsubprocess.py
 mode change 100644 => 100755 indra/lib/python/indra/util/llversion.py
 mode change 100644 => 100755 indra/lib/python/indra/util/named_query.py
 mode change 100644 => 100755 indra/lib/python/indra/util/shutil2.py
 mode change 100644 => 100755 indra/lib/python/indra/util/term.py
 mode change 100644 => 100755 indra/lib/python/indra/util/test_win32_manifest.py
 mode change 100644 => 100755 indra/lib/python/uuid.py
 mode change 100644 => 100755 indra/linux_crash_logger/CMakeLists.txt
 mode change 100644 => 100755 indra/linux_crash_logger/linux_crash_logger.cpp
 mode change 100644 => 100755 indra/linux_crash_logger/llcrashloggerlinux.cpp
 mode change 100644 => 100755 indra/linux_crash_logger/llcrashloggerlinux.h
 mode change 100644 => 100755 indra/llaudio/CMakeLists.txt
 mode change 100644 => 100755 indra/llaudio/llaudiodecodemgr.cpp
 mode change 100644 => 100755 indra/llaudio/llaudiodecodemgr.h
 mode change 100644 => 100755 indra/llaudio/llaudioengine.cpp
 mode change 100644 => 100755 indra/llaudio/llaudioengine.h
 mode change 100644 => 100755 indra/llaudio/llaudioengine_fmod.cpp
 mode change 100644 => 100755 indra/llaudio/llaudioengine_fmod.h
 mode change 100644 => 100755 indra/llaudio/llaudioengine_openal.cpp
 mode change 100644 => 100755 indra/llaudio/llaudioengine_openal.h
 mode change 100644 => 100755 indra/llaudio/lllistener.cpp
 mode change 100644 => 100755 indra/llaudio/lllistener.h
 mode change 100644 => 100755 indra/llaudio/lllistener_ds3d.h
 mode change 100644 => 100755 indra/llaudio/lllistener_fmod.cpp
 mode change 100644 => 100755 indra/llaudio/lllistener_fmod.h
 mode change 100644 => 100755 indra/llaudio/lllistener_openal.cpp
 mode change 100644 => 100755 indra/llaudio/lllistener_openal.h
 mode change 100644 => 100755 indra/llaudio/llstreamingaudio.h
 mode change 100644 => 100755 indra/llaudio/llstreamingaudio_fmod.cpp
 mode change 100644 => 100755 indra/llaudio/llstreamingaudio_fmod.h
 mode change 100644 => 100755 indra/llaudio/llvorbisencode.cpp
 mode change 100644 => 100755 indra/llaudio/llvorbisencode.h
 mode change 100644 => 100755 indra/llaudio/llwindgen.h
 mode change 100644 => 100755 indra/llcharacter/CMakeLists.txt
 mode change 100644 => 100755 indra/llcharacter/llanimationstates.cpp
 mode change 100644 => 100755 indra/llcharacter/llanimationstates.h
 mode change 100644 => 100755 indra/llcharacter/llbvhconsts.h
 mode change 100644 => 100755 indra/llcharacter/llbvhloader.cpp
 mode change 100644 => 100755 indra/llcharacter/llbvhloader.h
 mode change 100644 => 100755 indra/llcharacter/llcharacter.cpp
 mode change 100644 => 100755 indra/llcharacter/llcharacter.h
 mode change 100644 => 100755 indra/llcharacter/lleditingmotion.cpp
 mode change 100644 => 100755 indra/llcharacter/lleditingmotion.h
 mode change 100644 => 100755 indra/llcharacter/llgesture.cpp
 mode change 100644 => 100755 indra/llcharacter/llgesture.h
 mode change 100644 => 100755 indra/llcharacter/llhandmotion.cpp
 mode change 100644 => 100755 indra/llcharacter/llhandmotion.h
 mode change 100644 => 100755 indra/llcharacter/llheadrotmotion.cpp
 mode change 100644 => 100755 indra/llcharacter/llheadrotmotion.h
 mode change 100644 => 100755 indra/llcharacter/lljoint.cpp
 mode change 100644 => 100755 indra/llcharacter/lljoint.h
 mode change 100644 => 100755 indra/llcharacter/lljointsolverrp3.cpp
 mode change 100644 => 100755 indra/llcharacter/lljointsolverrp3.h
 mode change 100644 => 100755 indra/llcharacter/lljointstate.h
 mode change 100644 => 100755 indra/llcharacter/llkeyframefallmotion.cpp
 mode change 100644 => 100755 indra/llcharacter/llkeyframefallmotion.h
 mode change 100644 => 100755 indra/llcharacter/llkeyframemotion.cpp
 mode change 100644 => 100755 indra/llcharacter/llkeyframemotion.h
 mode change 100644 => 100755 indra/llcharacter/llkeyframemotionparam.cpp
 mode change 100644 => 100755 indra/llcharacter/llkeyframemotionparam.h
 mode change 100644 => 100755 indra/llcharacter/llkeyframestandmotion.cpp
 mode change 100644 => 100755 indra/llcharacter/llkeyframestandmotion.h
 mode change 100644 => 100755 indra/llcharacter/llkeyframewalkmotion.cpp
 mode change 100644 => 100755 indra/llcharacter/llkeyframewalkmotion.h
 mode change 100644 => 100755 indra/llcharacter/llmotion.cpp
 mode change 100644 => 100755 indra/llcharacter/llmotion.h
 mode change 100644 => 100755 indra/llcharacter/llmotioncontroller.cpp
 mode change 100644 => 100755 indra/llcharacter/llmotioncontroller.h
 mode change 100644 => 100755 indra/llcharacter/llmultigesture.cpp
 mode change 100644 => 100755 indra/llcharacter/llmultigesture.h
 mode change 100644 => 100755 indra/llcharacter/llpose.cpp
 mode change 100644 => 100755 indra/llcharacter/llpose.h
 mode change 100644 => 100755 indra/llcharacter/llstatemachine.cpp
 mode change 100644 => 100755 indra/llcharacter/llstatemachine.h
 mode change 100644 => 100755 indra/llcharacter/lltargetingmotion.cpp
 mode change 100644 => 100755 indra/llcharacter/lltargetingmotion.h
 mode change 100644 => 100755 indra/llcharacter/llvisualparam.cpp
 mode change 100644 => 100755 indra/llcharacter/llvisualparam.h
 mode change 100644 => 100755 indra/llcharacter/tests/lljoint_test.cpp
 mode change 100644 => 100755 indra/llcommon/CMakeLists.txt
 mode change 100644 => 100755 indra/llcommon/bitpack.cpp
 mode change 100644 => 100755 indra/llcommon/bitpack.h
 mode change 100644 => 100755 indra/llcommon/ctype_workaround.h
 mode change 100644 => 100755 indra/llcommon/doublelinkedlist.h
 mode change 100644 => 100755 indra/llcommon/fix_macros.h
 mode change 100644 => 100755 indra/llcommon/imageids.cpp
 mode change 100644 => 100755 indra/llcommon/imageids.h
 mode change 100644 => 100755 indra/llcommon/indra_constants.cpp
 mode change 100644 => 100755 indra/llcommon/indra_constants.h
 mode change 100644 => 100755 indra/llcommon/is_approx_equal_fraction.h
 mode change 100644 => 100755 indra/llcommon/linden_common.h
 mode change 100644 => 100755 indra/llcommon/linked_lists.h
 mode change 100644 => 100755 indra/llcommon/ll_template_cast.h
 mode change 100644 => 100755 indra/llcommon/llaccountingcost.h
 mode change 100644 => 100755 indra/llcommon/llagentconstants.h
 mode change 100644 => 100755 indra/llcommon/llallocator.cpp
 mode change 100644 => 100755 indra/llcommon/llallocator.h
 mode change 100644 => 100755 indra/llcommon/llallocator_heap_profile.cpp
 mode change 100644 => 100755 indra/llcommon/llallocator_heap_profile.h
 mode change 100644 => 100755 indra/llcommon/llapp.cpp
 mode change 100644 => 100755 indra/llcommon/llapp.h
 mode change 100644 => 100755 indra/llcommon/llapr.cpp
 mode change 100644 => 100755 indra/llcommon/llapr.h
 mode change 100644 => 100755 indra/llcommon/llassettype.cpp
 mode change 100644 => 100755 indra/llcommon/llassettype.h
 mode change 100644 => 100755 indra/llcommon/llassoclist.h
 mode change 100644 => 100755 indra/llcommon/llavatarconstants.h
 mode change 100644 => 100755 indra/llcommon/llavatarname.cpp
 mode change 100644 => 100755 indra/llcommon/llavatarname.h
 mode change 100644 => 100755 indra/llcommon/llbase32.cpp
 mode change 100644 => 100755 indra/llcommon/llbase32.h
 mode change 100644 => 100755 indra/llcommon/llbase64.cpp
 mode change 100644 => 100755 indra/llcommon/llbase64.h
 mode change 100644 => 100755 indra/llcommon/llboost.h
 mode change 100644 => 100755 indra/llcommon/llchat.h
 mode change 100644 => 100755 indra/llcommon/llclickaction.h
 mode change 100644 => 100755 indra/llcommon/llcommon.cpp
 mode change 100644 => 100755 indra/llcommon/llcommon.h
 mode change 100644 => 100755 indra/llcommon/llcommonutils.cpp
 mode change 100644 => 100755 indra/llcommon/llcommonutils.h
 mode change 100644 => 100755 indra/llcommon/llcoros.cpp
 mode change 100644 => 100755 indra/llcommon/llcoros.h
 mode change 100644 => 100755 indra/llcommon/llcrc.cpp
 mode change 100644 => 100755 indra/llcommon/llcrc.h
 mode change 100644 => 100755 indra/llcommon/llcriticaldamp.cpp
 mode change 100644 => 100755 indra/llcommon/llcriticaldamp.h
 mode change 100644 => 100755 indra/llcommon/llcursortypes.cpp
 mode change 100644 => 100755 indra/llcommon/llcursortypes.h
 mode change 100644 => 100755 indra/llcommon/lldarray.h
 mode change 100644 => 100755 indra/llcommon/lldarrayptr.h
 mode change 100644 => 100755 indra/llcommon/lldate.cpp
 mode change 100644 => 100755 indra/llcommon/lldate.h
 mode change 100644 => 100755 indra/llcommon/lldefs.h
 mode change 100644 => 100755 indra/llcommon/lldeleteutils.h
 mode change 100644 => 100755 indra/llcommon/lldependencies.cpp
 mode change 100644 => 100755 indra/llcommon/lldependencies.h
 mode change 100644 => 100755 indra/llcommon/lldepthstack.h
 mode change 100644 => 100755 indra/llcommon/lldictionary.cpp
 mode change 100644 => 100755 indra/llcommon/lldictionary.h
 mode change 100644 => 100755 indra/llcommon/lldlinked.h
 mode change 100644 => 100755 indra/llcommon/lldoubledispatch.h
 mode change 100644 => 100755 indra/llcommon/lldqueueptr.h
 mode change 100644 => 100755 indra/llcommon/llendianswizzle.h
 mode change 100644 => 100755 indra/llcommon/llenum.h
 mode change 100644 => 100755 indra/llcommon/llerror.cpp
 mode change 100644 => 100755 indra/llcommon/llerror.h
 mode change 100644 => 100755 indra/llcommon/llerrorcontrol.h
 mode change 100644 => 100755 indra/llcommon/llerrorlegacy.h
 mode change 100644 => 100755 indra/llcommon/llerrorthread.cpp
 mode change 100644 => 100755 indra/llcommon/llerrorthread.h
 mode change 100644 => 100755 indra/llcommon/llevent.cpp
 mode change 100644 => 100755 indra/llcommon/llevent.h
 mode change 100644 => 100755 indra/llcommon/lleventapi.cpp
 mode change 100644 => 100755 indra/llcommon/lleventapi.h
 mode change 100644 => 100755 indra/llcommon/lleventcoro.cpp
 mode change 100644 => 100755 indra/llcommon/lleventcoro.h
 mode change 100644 => 100755 indra/llcommon/lleventdispatcher.cpp
 mode change 100644 => 100755 indra/llcommon/lleventdispatcher.h
 mode change 100644 => 100755 indra/llcommon/lleventemitter.h
 mode change 100644 => 100755 indra/llcommon/lleventfilter.cpp
 mode change 100644 => 100755 indra/llcommon/lleventfilter.h
 mode change 100644 => 100755 indra/llcommon/llevents.cpp
 mode change 100644 => 100755 indra/llcommon/llevents.h
 mode change 100644 => 100755 indra/llcommon/lleventtimer.cpp
 mode change 100644 => 100755 indra/llcommon/lleventtimer.h
 mode change 100644 => 100755 indra/llcommon/llextendedstatus.h
 mode change 100644 => 100755 indra/llcommon/llfasttimer.cpp
 mode change 100644 => 100755 indra/llcommon/llfasttimer.h
 mode change 100644 => 100755 indra/llcommon/llfile.cpp
 mode change 100644 => 100755 indra/llcommon/llfile.h
 mode change 100644 => 100755 indra/llcommon/llfindlocale.cpp
 mode change 100644 => 100755 indra/llcommon/llfindlocale.h
 mode change 100644 => 100755 indra/llcommon/llfixedbuffer.cpp
 mode change 100644 => 100755 indra/llcommon/llfixedbuffer.h
 mode change 100644 => 100755 indra/llcommon/llfoldertype.cpp
 mode change 100644 => 100755 indra/llcommon/llformat.cpp
 mode change 100644 => 100755 indra/llcommon/llformat.h
 mode change 100644 => 100755 indra/llcommon/llframetimer.cpp
 mode change 100644 => 100755 indra/llcommon/llframetimer.h
 mode change 100644 => 100755 indra/llcommon/llhandle.h
 mode change 100644 => 100755 indra/llcommon/llhash.h
 mode change 100644 => 100755 indra/llcommon/llheartbeat.cpp
 mode change 100644 => 100755 indra/llcommon/llheartbeat.h
 mode change 100644 => 100755 indra/llcommon/llhttpstatuscodes.h
 mode change 100644 => 100755 indra/llcommon/llindexedqueue.h
 mode change 100644 => 100755 indra/llcommon/llinitparam.cpp
 mode change 100644 => 100755 indra/llcommon/llinitparam.h
 mode change 100644 => 100755 indra/llcommon/llinstancetracker.cpp
 mode change 100644 => 100755 indra/llcommon/llinstancetracker.h
 mode change 100644 => 100755 indra/llcommon/llkeythrottle.h
 mode change 100644 => 100755 indra/llcommon/llkeyusetracker.h
 mode change 100644 => 100755 indra/llcommon/lllazy.cpp
 mode change 100644 => 100755 indra/llcommon/lllazy.h
 mode change 100644 => 100755 indra/llcommon/llleap.cpp
 mode change 100644 => 100755 indra/llcommon/llleap.h
 mode change 100644 => 100755 indra/llcommon/llleaplistener.cpp
 mode change 100644 => 100755 indra/llcommon/llleaplistener.h
 mode change 100644 => 100755 indra/llcommon/lllinkedqueue.h
 mode change 100644 => 100755 indra/llcommon/lllistenerwrapper.h
 mode change 100644 => 100755 indra/llcommon/llliveappconfig.cpp
 mode change 100644 => 100755 indra/llcommon/llliveappconfig.h
 mode change 100644 => 100755 indra/llcommon/lllivefile.cpp
 mode change 100644 => 100755 indra/llcommon/lllivefile.h
 mode change 100644 => 100755 indra/llcommon/lllocalidhashmap.h
 mode change 100644 => 100755 indra/llcommon/lllog.cpp
 mode change 100644 => 100755 indra/llcommon/lllog.h
 mode change 100644 => 100755 indra/llcommon/lllslconstants.h
 mode change 100644 => 100755 indra/llcommon/llmap.h
 mode change 100644 => 100755 indra/llcommon/llmd5.cpp
 mode change 100644 => 100755 indra/llcommon/llmd5.h
 mode change 100644 => 100755 indra/llcommon/llmemory.cpp
 mode change 100644 => 100755 indra/llcommon/llmemory.h
 mode change 100644 => 100755 indra/llcommon/llmemorystream.cpp
 mode change 100644 => 100755 indra/llcommon/llmemorystream.h
 mode change 100644 => 100755 indra/llcommon/llmetricperformancetester.cpp
 mode change 100644 => 100755 indra/llcommon/llmetricperformancetester.h
 mode change 100644 => 100755 indra/llcommon/llmetrics.cpp
 mode change 100644 => 100755 indra/llcommon/llmetrics.h
 mode change 100644 => 100755 indra/llcommon/llmortician.cpp
 mode change 100644 => 100755 indra/llcommon/llmortician.h
 mode change 100644 => 100755 indra/llcommon/llnametable.h
 mode change 100644 => 100755 indra/llcommon/lloptioninterface.cpp
 mode change 100644 => 100755 indra/llcommon/lloptioninterface.h
 mode change 100644 => 100755 indra/llcommon/llpointer.h
 mode change 100644 => 100755 indra/llcommon/llpreprocessor.h
 mode change 100644 => 100755 indra/llcommon/llpriqueuemap.h
 mode change 100644 => 100755 indra/llcommon/llprocess.cpp
 mode change 100644 => 100755 indra/llcommon/llprocess.h
 mode change 100644 => 100755 indra/llcommon/llprocessor.cpp
 mode change 100644 => 100755 indra/llcommon/llprocessor.h
 mode change 100644 => 100755 indra/llcommon/llptrskiplist.h
 mode change 100644 => 100755 indra/llcommon/llptrskipmap.h
 mode change 100644 => 100755 indra/llcommon/llptrto.cpp
 mode change 100644 => 100755 indra/llcommon/llptrto.h
 mode change 100644 => 100755 indra/llcommon/llqueuedthread.cpp
 mode change 100644 => 100755 indra/llcommon/llqueuedthread.h
 mode change 100644 => 100755 indra/llcommon/llrand.cpp
 mode change 100644 => 100755 indra/llcommon/llrand.h
 mode change 100644 => 100755 indra/llcommon/llrefcount.cpp
 mode change 100644 => 100755 indra/llcommon/llrefcount.h
 mode change 100644 => 100755 indra/llcommon/llregistry.h
 mode change 100644 => 100755 indra/llcommon/llrun.cpp
 mode change 100644 => 100755 indra/llcommon/llrun.h
 mode change 100644 => 100755 indra/llcommon/llsafehandle.h
 mode change 100644 => 100755 indra/llcommon/llsd.cpp
 mode change 100644 => 100755 indra/llcommon/llsd.h
 mode change 100644 => 100755 indra/llcommon/llsdparam.cpp
 mode change 100644 => 100755 indra/llcommon/llsdparam.h
 mode change 100644 => 100755 indra/llcommon/llsdserialize.cpp
 mode change 100644 => 100755 indra/llcommon/llsdserialize.h
 mode change 100644 => 100755 indra/llcommon/llsdserialize_xml.cpp
 mode change 100644 => 100755 indra/llcommon/llsdserialize_xml.h
 mode change 100644 => 100755 indra/llcommon/llsdutil.cpp
 mode change 100644 => 100755 indra/llcommon/llsdutil.h
 mode change 100644 => 100755 indra/llcommon/llsecondlifeurls.cpp
 mode change 100644 => 100755 indra/llcommon/llsecondlifeurls.h
 mode change 100644 => 100755 indra/llcommon/llsimplehash.h
 mode change 100644 => 100755 indra/llcommon/llsingleton.cpp
 mode change 100644 => 100755 indra/llcommon/llsingleton.h
 mode change 100644 => 100755 indra/llcommon/llskiplist.h
 mode change 100644 => 100755 indra/llcommon/llskipmap.h
 mode change 100644 => 100755 indra/llcommon/llsmoothstep.h
 mode change 100644 => 100755 indra/llcommon/llsortedvector.h
 mode change 100644 => 100755 indra/llcommon/llstack.h
 mode change 100644 => 100755 indra/llcommon/llstacktrace.cpp
 mode change 100644 => 100755 indra/llcommon/llstacktrace.h
 mode change 100644 => 100755 indra/llcommon/llstat.cpp
 mode change 100644 => 100755 indra/llcommon/llstat.h
 mode change 100644 => 100755 indra/llcommon/llstatenums.h
 mode change 100644 => 100755 indra/llcommon/llstl.h
 mode change 100644 => 100755 indra/llcommon/llstreamqueue.cpp
 mode change 100644 => 100755 indra/llcommon/llstreamqueue.h
 mode change 100644 => 100755 indra/llcommon/llstreamtools.cpp
 mode change 100644 => 100755 indra/llcommon/llstreamtools.h
 mode change 100644 => 100755 indra/llcommon/llstrider.h
 mode change 100644 => 100755 indra/llcommon/llstring.cpp
 mode change 100644 => 100755 indra/llcommon/llstring.h
 mode change 100644 => 100755 indra/llcommon/llstringtable.cpp
 mode change 100644 => 100755 indra/llcommon/llstringtable.h
 mode change 100644 => 100755 indra/llcommon/llsys.cpp
 mode change 100644 => 100755 indra/llcommon/llsys.h
 mode change 100644 => 100755 indra/llcommon/llthread.cpp
 mode change 100644 => 100755 indra/llcommon/llthread.h
 mode change 100644 => 100755 indra/llcommon/llthreadsafequeue.cpp
 mode change 100644 => 100755 indra/llcommon/llthreadsafequeue.h
 mode change 100644 => 100755 indra/llcommon/lltimer.cpp
 mode change 100644 => 100755 indra/llcommon/lltimer.h
 mode change 100644 => 100755 indra/llcommon/lltreeiterators.h
 mode change 100644 => 100755 indra/llcommon/lltypeinfolookup.h
 mode change 100644 => 100755 indra/llcommon/lluri.cpp
 mode change 100644 => 100755 indra/llcommon/lluri.h
 mode change 100644 => 100755 indra/llcommon/lluuid.cpp
 mode change 100644 => 100755 indra/llcommon/lluuid.h
 mode change 100644 => 100755 indra/llcommon/lluuidhashmap.h
 mode change 100644 => 100755 indra/llcommon/llversionserver.h
 mode change 100644 => 100755 indra/llcommon/llversionviewer.h
 mode change 100644 => 100755 indra/llcommon/llworkerthread.cpp
 mode change 100644 => 100755 indra/llcommon/llworkerthread.h
 mode change 100644 => 100755 indra/llcommon/metaclass.cpp
 mode change 100644 => 100755 indra/llcommon/metaclass.h
 mode change 100644 => 100755 indra/llcommon/metaclasst.h
 mode change 100644 => 100755 indra/llcommon/metaproperty.cpp
 mode change 100644 => 100755 indra/llcommon/metaproperty.h
 mode change 100644 => 100755 indra/llcommon/metapropertyt.h
 mode change 100644 => 100755 indra/llcommon/reflective.cpp
 mode change 100644 => 100755 indra/llcommon/reflective.h
 mode change 100644 => 100755 indra/llcommon/reflectivet.h
 mode change 100644 => 100755 indra/llcommon/roles_constants.h
 mode change 100644 => 100755 indra/llcommon/stdenums.h
 mode change 100644 => 100755 indra/llcommon/stdtypes.h
 mode change 100644 => 100755 indra/llcommon/string_table.h
 mode change 100644 => 100755 indra/llcommon/stringize.h
 mode change 100644 => 100755 indra/llcommon/tests/StringVec.h
 mode change 100644 => 100755 indra/llcommon/tests/bitpack_test.cpp
 mode change 100644 => 100755 indra/llcommon/tests/commonmisc_test.cpp
 mode change 100644 => 100755 indra/llcommon/tests/listener.h
 mode change 100644 => 100755 indra/llcommon/tests/llallocator_heap_profile_test.cpp
 mode change 100644 => 100755 indra/llcommon/tests/llallocator_test.cpp
 mode change 100644 => 100755 indra/llcommon/tests/llbase64_test.cpp
 mode change 100644 => 100755 indra/llcommon/tests/lldate_test.cpp
 mode change 100644 => 100755 indra/llcommon/tests/lldependencies_test.cpp
 mode change 100644 => 100755 indra/llcommon/tests/llerror_test.cpp
 mode change 100644 => 100755 indra/llcommon/tests/lleventcoro_test.cpp
 mode change 100644 => 100755 indra/llcommon/tests/lleventdispatcher_test.cpp
 mode change 100644 => 100755 indra/llcommon/tests/lleventfilter_test.cpp
 mode change 100644 => 100755 indra/llcommon/tests/llframetimer_test.cpp
 mode change 100644 => 100755 indra/llcommon/tests/llinstancetracker_test.cpp
 mode change 100644 => 100755 indra/llcommon/tests/lllazy_test.cpp
 mode change 100644 => 100755 indra/llcommon/tests/llleap_test.cpp
 mode change 100644 => 100755 indra/llcommon/tests/llmemtype_test.cpp
 mode change 100644 => 100755 indra/llcommon/tests/llprocess_test.cpp
 mode change 100644 => 100755 indra/llcommon/tests/llprocessor_test.cpp
 mode change 100644 => 100755 indra/llcommon/tests/llrand_test.cpp
 mode change 100644 => 100755 indra/llcommon/tests/llsdserialize_test.cpp
 mode change 100644 => 100755 indra/llcommon/tests/llsingleton_test.cpp
 mode change 100644 => 100755 indra/llcommon/tests/llstreamqueue_test.cpp
 mode change 100644 => 100755 indra/llcommon/tests/llstring_test.cpp
 mode change 100644 => 100755 indra/llcommon/tests/lltreeiterators_test.cpp
 mode change 100644 => 100755 indra/llcommon/tests/lluri_test.cpp
 mode change 100644 => 100755 indra/llcommon/tests/reflection_test.cpp
 mode change 100644 => 100755 indra/llcommon/tests/stringize_test.cpp
 mode change 100644 => 100755 indra/llcommon/tests/wrapllerrs.h
 mode change 100644 => 100755 indra/llcommon/timer.h
 mode change 100644 => 100755 indra/llcommon/timing.cpp
 mode change 100644 => 100755 indra/llcommon/timing.h
 mode change 100644 => 100755 indra/llcommon/u64.cpp
 mode change 100644 => 100755 indra/llcommon/u64.h
 mode change 100644 => 100755 indra/llcorehttp/CMakeLists.txt
 mode change 100644 => 100755 indra/llcorehttp/_httpinternal.h
 mode change 100644 => 100755 indra/llcorehttp/_httplibcurl.cpp
 mode change 100644 => 100755 indra/llcorehttp/_httplibcurl.h
 mode change 100644 => 100755 indra/llcorehttp/_httpopcancel.cpp
 mode change 100644 => 100755 indra/llcorehttp/_httpopcancel.h
 mode change 100644 => 100755 indra/llcorehttp/_httpoperation.cpp
 mode change 100644 => 100755 indra/llcorehttp/_httpoperation.h
 mode change 100644 => 100755 indra/llcorehttp/_httpoprequest.cpp
 mode change 100644 => 100755 indra/llcorehttp/_httpoprequest.h
 mode change 100644 => 100755 indra/llcorehttp/_httpopsetget.cpp
 mode change 100644 => 100755 indra/llcorehttp/_httpopsetget.h
 mode change 100644 => 100755 indra/llcorehttp/_httpopsetpriority.cpp
 mode change 100644 => 100755 indra/llcorehttp/_httpopsetpriority.h
 mode change 100644 => 100755 indra/llcorehttp/_httppolicy.cpp
 mode change 100644 => 100755 indra/llcorehttp/_httppolicy.h
 mode change 100644 => 100755 indra/llcorehttp/_httppolicyclass.cpp
 mode change 100644 => 100755 indra/llcorehttp/_httppolicyclass.h
 mode change 100644 => 100755 indra/llcorehttp/_httppolicyglobal.cpp
 mode change 100644 => 100755 indra/llcorehttp/_httppolicyglobal.h
 mode change 100644 => 100755 indra/llcorehttp/_httpreadyqueue.h
 mode change 100644 => 100755 indra/llcorehttp/_httpreplyqueue.cpp
 mode change 100644 => 100755 indra/llcorehttp/_httpreplyqueue.h
 mode change 100644 => 100755 indra/llcorehttp/_httprequestqueue.cpp
 mode change 100644 => 100755 indra/llcorehttp/_httprequestqueue.h
 mode change 100644 => 100755 indra/llcorehttp/_httpretryqueue.h
 mode change 100644 => 100755 indra/llcorehttp/_httpservice.cpp
 mode change 100644 => 100755 indra/llcorehttp/_httpservice.h
 mode change 100644 => 100755 indra/llcorehttp/_mutex.h
 mode change 100644 => 100755 indra/llcorehttp/_refcounted.cpp
 mode change 100644 => 100755 indra/llcorehttp/_refcounted.h
 mode change 100644 => 100755 indra/llcorehttp/_thread.h
 mode change 100644 => 100755 indra/llcorehttp/bufferarray.cpp
 mode change 100644 => 100755 indra/llcorehttp/bufferarray.h
 mode change 100644 => 100755 indra/llcorehttp/bufferstream.cpp
 mode change 100644 => 100755 indra/llcorehttp/bufferstream.h
 mode change 100644 => 100755 indra/llcorehttp/examples/http_texture_load.cpp
 mode change 100644 => 100755 indra/llcorehttp/httpcommon.cpp
 mode change 100644 => 100755 indra/llcorehttp/httpcommon.h
 mode change 100644 => 100755 indra/llcorehttp/httphandler.h
 mode change 100644 => 100755 indra/llcorehttp/httpheaders.cpp
 mode change 100644 => 100755 indra/llcorehttp/httpheaders.h
 mode change 100644 => 100755 indra/llcorehttp/httpoptions.cpp
 mode change 100644 => 100755 indra/llcorehttp/httpoptions.h
 mode change 100644 => 100755 indra/llcorehttp/httprequest.cpp
 mode change 100644 => 100755 indra/llcorehttp/httprequest.h
 mode change 100644 => 100755 indra/llcorehttp/httpresponse.cpp
 mode change 100644 => 100755 indra/llcorehttp/httpresponse.h
 mode change 100644 => 100755 indra/llcorehttp/tests/llcorehttp_test.cpp
 mode change 100644 => 100755 indra/llcorehttp/tests/llcorehttp_test.h
 mode change 100644 => 100755 indra/llcorehttp/tests/test_allocator.cpp
 mode change 100644 => 100755 indra/llcorehttp/tests/test_allocator.h
 mode change 100644 => 100755 indra/llcorehttp/tests/test_bufferarray.hpp
 mode change 100644 => 100755 indra/llcorehttp/tests/test_bufferstream.hpp
 mode change 100644 => 100755 indra/llcorehttp/tests/test_httpheaders.hpp
 mode change 100644 => 100755 indra/llcorehttp/tests/test_httpoperation.hpp
 mode change 100644 => 100755 indra/llcorehttp/tests/test_httprequest.hpp
 mode change 100644 => 100755 indra/llcorehttp/tests/test_httprequestqueue.hpp
 mode change 100644 => 100755 indra/llcorehttp/tests/test_httpstatus.hpp
 mode change 100644 => 100755 indra/llcorehttp/tests/test_llcorehttp_peer.py
 mode change 100644 => 100755 indra/llcorehttp/tests/test_refcounted.hpp
 mode change 100644 => 100755 indra/llcorehttp/tests/testrunner.py
 mode change 100644 => 100755 indra/llcrashlogger/CMakeLists.txt
 mode change 100644 => 100755 indra/llcrashlogger/llcrashlogger.cpp
 mode change 100644 => 100755 indra/llcrashlogger/llcrashlogger.h
 mode change 100644 => 100755 indra/llimage/CMakeLists.txt
 mode change 100644 => 100755 indra/llimage/llimage.cpp
 mode change 100644 => 100755 indra/llimage/llimage.h
 mode change 100644 => 100755 indra/llimage/llimagebmp.cpp
 mode change 100644 => 100755 indra/llimage/llimagebmp.h
 mode change 100644 => 100755 indra/llimage/llimagedimensionsinfo.cpp
 mode change 100644 => 100755 indra/llimage/llimagedimensionsinfo.h
 mode change 100644 => 100755 indra/llimage/llimagedxt.cpp
 mode change 100644 => 100755 indra/llimage/llimagedxt.h
 mode change 100644 => 100755 indra/llimage/llimagej2c.cpp
 mode change 100644 => 100755 indra/llimage/llimagej2c.h
 mode change 100644 => 100755 indra/llimage/llimagejpeg.cpp
 mode change 100644 => 100755 indra/llimage/llimagejpeg.h
 mode change 100644 => 100755 indra/llimage/llimagepng.cpp
 mode change 100644 => 100755 indra/llimage/llimagepng.h
 mode change 100644 => 100755 indra/llimage/llimagetga.cpp
 mode change 100644 => 100755 indra/llimage/llimagetga.h
 mode change 100644 => 100755 indra/llimage/llimageworker.cpp
 mode change 100644 => 100755 indra/llimage/llimageworker.h
 mode change 100644 => 100755 indra/llimage/llmapimagetype.h
 mode change 100644 => 100755 indra/llimage/llpngwrapper.cpp
 mode change 100644 => 100755 indra/llimage/llpngwrapper.h
 mode change 100644 => 100755 indra/llimage/tests/llimageworker_test.cpp
 mode change 100644 => 100755 indra/llimagej2coj/CMakeLists.txt
 mode change 100644 => 100755 indra/llimagej2coj/llimagej2coj.cpp
 mode change 100644 => 100755 indra/llimagej2coj/llimagej2coj.h
 mode change 100644 => 100755 indra/llinventory/CMakeLists.txt
 mode change 100644 => 100755 indra/llinventory/llcategory.cpp
 mode change 100644 => 100755 indra/llinventory/llcategory.h
 mode change 100644 => 100755 indra/llinventory/lleconomy.cpp
 mode change 100644 => 100755 indra/llinventory/lleconomy.h
 mode change 100644 => 100755 indra/llinventory/llinventory.cpp
 mode change 100644 => 100755 indra/llinventory/llinventory.h
 mode change 100644 => 100755 indra/llinventory/llinventorydefines.cpp
 mode change 100644 => 100755 indra/llinventory/llinventorydefines.h
 mode change 100644 => 100755 indra/llinventory/llinventorytype.cpp
 mode change 100644 => 100755 indra/llinventory/llinventorytype.h
 mode change 100644 => 100755 indra/llinventory/lllandmark.cpp
 mode change 100644 => 100755 indra/llinventory/lllandmark.h
 mode change 100644 => 100755 indra/llinventory/llnotecard.cpp
 mode change 100644 => 100755 indra/llinventory/llnotecard.h
 mode change 100644 => 100755 indra/llinventory/llparcel.cpp
 mode change 100644 => 100755 indra/llinventory/llparcel.h
 mode change 100644 => 100755 indra/llinventory/llparcelflags.h
 mode change 100644 => 100755 indra/llinventory/llpermissions.cpp
 mode change 100644 => 100755 indra/llinventory/llpermissions.h
 mode change 100644 => 100755 indra/llinventory/llpermissionsflags.h
 mode change 100644 => 100755 indra/llinventory/llsaleinfo.cpp
 mode change 100644 => 100755 indra/llinventory/llsaleinfo.h
 mode change 100644 => 100755 indra/llinventory/lltransactionflags.cpp
 mode change 100644 => 100755 indra/llinventory/lltransactionflags.h
 mode change 100644 => 100755 indra/llinventory/lltransactiontypes.h
 mode change 100644 => 100755 indra/llinventory/lluserrelations.cpp
 mode change 100644 => 100755 indra/llinventory/lluserrelations.h
 mode change 100644 => 100755 indra/llinventory/tests/inventorymisc_test.cpp
 mode change 100644 => 100755 indra/llinventory/tests/llparcel_test.cpp
 mode change 100644 => 100755 indra/llkdu/CMakeLists.txt
 mode change 100644 => 100755 indra/llkdu/llimagej2ckdu.cpp
 mode change 100644 => 100755 indra/llkdu/llimagej2ckdu.h
 mode change 100644 => 100755 indra/llkdu/llkdumem.cpp
 mode change 100644 => 100755 indra/llkdu/llkdumem.h
 mode change 100644 => 100755 indra/llkdu/tests/llimagej2ckdu_test.cpp
 mode change 100644 => 100755 indra/llmath/CMakeLists.txt
 mode change 100644 => 100755 indra/llmath/camera.h
 mode change 100644 => 100755 indra/llmath/coordframe.h
 mode change 100644 => 100755 indra/llmath/llbbox.cpp
 mode change 100644 => 100755 indra/llmath/llbbox.h
 mode change 100644 => 100755 indra/llmath/llbboxlocal.cpp
 mode change 100644 => 100755 indra/llmath/llbboxlocal.h
 mode change 100644 => 100755 indra/llmath/llcalc.cpp
 mode change 100644 => 100755 indra/llmath/llcalc.h
 mode change 100644 => 100755 indra/llmath/llcalcparser.cpp
 mode change 100644 => 100755 indra/llmath/llcalcparser.h
 mode change 100644 => 100755 indra/llmath/llcamera.cpp
 mode change 100644 => 100755 indra/llmath/llcamera.h
 mode change 100644 => 100755 indra/llmath/llcoord.h
 mode change 100644 => 100755 indra/llmath/llcoordframe.cpp
 mode change 100644 => 100755 indra/llmath/llcoordframe.h
 mode change 100644 => 100755 indra/llmath/llinterp.h
 mode change 100644 => 100755 indra/llmath/llline.cpp
 mode change 100644 => 100755 indra/llmath/llline.h
 mode change 100644 => 100755 indra/llmath/llmath.h
 mode change 100644 => 100755 indra/llmath/llmatrix3a.cpp
 mode change 100644 => 100755 indra/llmath/llmatrix3a.h
 mode change 100644 => 100755 indra/llmath/llmatrix3a.inl
 mode change 100644 => 100755 indra/llmath/llmatrix4a.h
 mode change 100644 => 100755 indra/llmath/llmodularmath.cpp
 mode change 100644 => 100755 indra/llmath/llmodularmath.h
 mode change 100644 => 100755 indra/llmath/lloctree.h
 mode change 100644 => 100755 indra/llmath/llperlin.cpp
 mode change 100644 => 100755 indra/llmath/llperlin.h
 mode change 100644 => 100755 indra/llmath/llplane.h
 mode change 100644 => 100755 indra/llmath/llquantize.h
 mode change 100644 => 100755 indra/llmath/llquaternion.cpp
 mode change 100644 => 100755 indra/llmath/llquaternion.h
 mode change 100644 => 100755 indra/llmath/llquaternion2.h
 mode change 100644 => 100755 indra/llmath/llquaternion2.inl
 mode change 100644 => 100755 indra/llmath/llrect.cpp
 mode change 100644 => 100755 indra/llmath/llrect.h
 mode change 100644 => 100755 indra/llmath/llsdutil_math.cpp
 mode change 100644 => 100755 indra/llmath/llsdutil_math.h
 mode change 100644 => 100755 indra/llmath/llsimdmath.h
 mode change 100644 => 100755 indra/llmath/llsimdtypes.h
 mode change 100644 => 100755 indra/llmath/llsimdtypes.inl
 mode change 100644 => 100755 indra/llmath/llsphere.cpp
 mode change 100644 => 100755 indra/llmath/llsphere.h
 mode change 100644 => 100755 indra/llmath/lltreenode.h
 mode change 100644 => 100755 indra/llmath/llvector4a.cpp
 mode change 100644 => 100755 indra/llmath/llvector4a.h
 mode change 100644 => 100755 indra/llmath/llvector4a.inl
 mode change 100644 => 100755 indra/llmath/llvector4logical.h
 mode change 100644 => 100755 indra/llmath/llvolume.cpp
 mode change 100644 => 100755 indra/llmath/llvolume.h
 mode change 100644 => 100755 indra/llmath/llvolumemgr.cpp
 mode change 100644 => 100755 indra/llmath/llvolumemgr.h
 mode change 100644 => 100755 indra/llmath/llvolumeoctree.cpp
 mode change 100644 => 100755 indra/llmath/llvolumeoctree.h
 mode change 100644 => 100755 indra/llmath/m3math.cpp
 mode change 100644 => 100755 indra/llmath/m3math.h
 mode change 100644 => 100755 indra/llmath/m4math.cpp
 mode change 100644 => 100755 indra/llmath/m4math.h
 mode change 100644 => 100755 indra/llmath/raytrace.cpp
 mode change 100644 => 100755 indra/llmath/raytrace.h
 mode change 100644 => 100755 indra/llmath/tests/alignment_test.cpp
 mode change 100644 => 100755 indra/llmath/tests/llbbox_test.cpp
 mode change 100644 => 100755 indra/llmath/tests/llbboxlocal_test.cpp
 mode change 100644 => 100755 indra/llmath/tests/llmodularmath_test.cpp
 mode change 100644 => 100755 indra/llmath/tests/llquaternion_test.cpp
 mode change 100644 => 100755 indra/llmath/tests/llrect_test.cpp
 mode change 100644 => 100755 indra/llmath/tests/m3math_test.cpp
 mode change 100644 => 100755 indra/llmath/tests/mathmisc_test.cpp
 mode change 100644 => 100755 indra/llmath/tests/v2math_test.cpp
 mode change 100644 => 100755 indra/llmath/tests/v3color_test.cpp
 mode change 100644 => 100755 indra/llmath/tests/v3dmath_test.cpp
 mode change 100644 => 100755 indra/llmath/tests/v3math_test.cpp
 mode change 100644 => 100755 indra/llmath/tests/v4color_test.cpp
 mode change 100644 => 100755 indra/llmath/tests/v4coloru_test.cpp
 mode change 100644 => 100755 indra/llmath/tests/v4math_test.cpp
 mode change 100644 => 100755 indra/llmath/tests/xform_test.cpp
 mode change 100644 => 100755 indra/llmath/v2math.cpp
 mode change 100644 => 100755 indra/llmath/v2math.h
 mode change 100644 => 100755 indra/llmath/v3color.cpp
 mode change 100644 => 100755 indra/llmath/v3color.h
 mode change 100644 => 100755 indra/llmath/v3dmath.cpp
 mode change 100644 => 100755 indra/llmath/v3dmath.h
 mode change 100644 => 100755 indra/llmath/v3math.cpp
 mode change 100644 => 100755 indra/llmath/v3math.h
 mode change 100644 => 100755 indra/llmath/v4color.cpp
 mode change 100644 => 100755 indra/llmath/v4color.h
 mode change 100644 => 100755 indra/llmath/v4coloru.cpp
 mode change 100644 => 100755 indra/llmath/v4coloru.h
 mode change 100644 => 100755 indra/llmath/v4math.cpp
 mode change 100644 => 100755 indra/llmath/v4math.h
 mode change 100644 => 100755 indra/llmath/xform.cpp
 mode change 100644 => 100755 indra/llmath/xform.h
 mode change 100644 => 100755 indra/llmessage/CMakeLists.txt
 mode change 100644 => 100755 indra/llmessage/llares.cpp
 mode change 100644 => 100755 indra/llmessage/llares.h
 mode change 100644 => 100755 indra/llmessage/llareslistener.cpp
 mode change 100644 => 100755 indra/llmessage/llareslistener.h
 mode change 100644 => 100755 indra/llmessage/llassetstorage.cpp
 mode change 100644 => 100755 indra/llmessage/llassetstorage.h
 mode change 100644 => 100755 indra/llmessage/llavatarnamecache.cpp
 mode change 100644 => 100755 indra/llmessage/llavatarnamecache.h
 mode change 100644 => 100755 indra/llmessage/llblowfishcipher.cpp
 mode change 100644 => 100755 indra/llmessage/llblowfishcipher.h
 mode change 100644 => 100755 indra/llmessage/llbuffer.cpp
 mode change 100644 => 100755 indra/llmessage/llbuffer.h
 mode change 100644 => 100755 indra/llmessage/llbufferstream.cpp
 mode change 100644 => 100755 indra/llmessage/llbufferstream.h
 mode change 100644 => 100755 indra/llmessage/llcachename.cpp
 mode change 100644 => 100755 indra/llmessage/llcachename.h
 mode change 100644 => 100755 indra/llmessage/llchainio.cpp
 mode change 100644 => 100755 indra/llmessage/llchainio.h
 mode change 100644 => 100755 indra/llmessage/llcipher.h
 mode change 100644 => 100755 indra/llmessage/llcircuit.cpp
 mode change 100644 => 100755 indra/llmessage/llcircuit.h
 mode change 100644 => 100755 indra/llmessage/llclassifiedflags.cpp
 mode change 100644 => 100755 indra/llmessage/llclassifiedflags.h
 mode change 100644 => 100755 indra/llmessage/llcurl.cpp
 mode change 100644 => 100755 indra/llmessage/llcurl.h
 mode change 100644 => 100755 indra/llmessage/lldatapacker.cpp
 mode change 100644 => 100755 indra/llmessage/lldatapacker.h
 mode change 100644 => 100755 indra/llmessage/lldbstrings.h
 mode change 100644 => 100755 indra/llmessage/lldispatcher.cpp
 mode change 100644 => 100755 indra/llmessage/lldispatcher.h
 mode change 100644 => 100755 indra/llmessage/lleventflags.h
 mode change 100644 => 100755 indra/llmessage/llfiltersd2xmlrpc.cpp
 mode change 100644 => 100755 indra/llmessage/llfiltersd2xmlrpc.h
 mode change 100644 => 100755 indra/llmessage/llfollowcamparams.h
 mode change 100644 => 100755 indra/llmessage/llhost.cpp
 mode change 100644 => 100755 indra/llmessage/llhost.h
 mode change 100644 => 100755 indra/llmessage/llhttpassetstorage.cpp
 mode change 100644 => 100755 indra/llmessage/llhttpassetstorage.h
 mode change 100644 => 100755 indra/llmessage/llhttpclient.cpp
 mode change 100644 => 100755 indra/llmessage/llhttpclient.h
 mode change 100644 => 100755 indra/llmessage/llhttpclientadapter.cpp
 mode change 100644 => 100755 indra/llmessage/llhttpclientadapter.h
 mode change 100644 => 100755 indra/llmessage/llhttpclientinterface.h
 mode change 100644 => 100755 indra/llmessage/llhttpnode.cpp
 mode change 100644 => 100755 indra/llmessage/llhttpnode.h
 mode change 100644 => 100755 indra/llmessage/llhttpnodeadapter.h
 mode change 100644 => 100755 indra/llmessage/llhttpsender.cpp
 mode change 100644 => 100755 indra/llmessage/llhttpsender.h
 mode change 100644 => 100755 indra/llmessage/llinstantmessage.cpp
 mode change 100644 => 100755 indra/llmessage/llinstantmessage.h
 mode change 100644 => 100755 indra/llmessage/llinvite.h
 mode change 100644 => 100755 indra/llmessage/lliobuffer.cpp
 mode change 100644 => 100755 indra/llmessage/lliobuffer.h
 mode change 100644 => 100755 indra/llmessage/lliohttpserver.cpp
 mode change 100644 => 100755 indra/llmessage/lliohttpserver.h
 mode change 100644 => 100755 indra/llmessage/lliopipe.cpp
 mode change 100644 => 100755 indra/llmessage/lliopipe.h
 mode change 100644 => 100755 indra/llmessage/lliosocket.cpp
 mode change 100644 => 100755 indra/llmessage/lliosocket.h
 mode change 100644 => 100755 indra/llmessage/llioutil.cpp
 mode change 100644 => 100755 indra/llmessage/llioutil.h
 mode change 100644 => 100755 indra/llmessage/llloginflags.h
 mode change 100644 => 100755 indra/llmessage/llmail.cpp
 mode change 100644 => 100755 indra/llmessage/llmail.h
 mode change 100644 => 100755 indra/llmessage/llmessagebuilder.cpp
 mode change 100644 => 100755 indra/llmessage/llmessagebuilder.h
 mode change 100644 => 100755 indra/llmessage/llmessageconfig.cpp
 mode change 100644 => 100755 indra/llmessage/llmessageconfig.h
 mode change 100644 => 100755 indra/llmessage/llmessagereader.cpp
 mode change 100644 => 100755 indra/llmessage/llmessagereader.h
 mode change 100644 => 100755 indra/llmessage/llmessagesenderinterface.h
 mode change 100644 => 100755 indra/llmessage/llmessagetemplate.cpp
 mode change 100644 => 100755 indra/llmessage/llmessagetemplate.h
 mode change 100644 => 100755 indra/llmessage/llmessagetemplateparser.cpp
 mode change 100644 => 100755 indra/llmessage/llmessagetemplateparser.h
 mode change 100644 => 100755 indra/llmessage/llmessagethrottle.cpp
 mode change 100644 => 100755 indra/llmessage/llmessagethrottle.h
 mode change 100644 => 100755 indra/llmessage/llmime.cpp
 mode change 100644 => 100755 indra/llmessage/llmime.h
 mode change 100644 => 100755 indra/llmessage/llmsgvariabletype.h
 mode change 100644 => 100755 indra/llmessage/llnamevalue.cpp
 mode change 100644 => 100755 indra/llmessage/llnamevalue.h
 mode change 100644 => 100755 indra/llmessage/llnullcipher.cpp
 mode change 100644 => 100755 indra/llmessage/llnullcipher.h
 mode change 100644 => 100755 indra/llmessage/llpacketack.cpp
 mode change 100644 => 100755 indra/llmessage/llpacketack.h
 mode change 100644 => 100755 indra/llmessage/llpacketbuffer.cpp
 mode change 100644 => 100755 indra/llmessage/llpacketbuffer.h
 mode change 100644 => 100755 indra/llmessage/llpacketring.cpp
 mode change 100644 => 100755 indra/llmessage/llpacketring.h
 mode change 100644 => 100755 indra/llmessage/llpartdata.cpp
 mode change 100644 => 100755 indra/llmessage/llpartdata.h
 mode change 100644 => 100755 indra/llmessage/llproxy.cpp
 mode change 100644 => 100755 indra/llmessage/llproxy.h
 mode change 100644 => 100755 indra/llmessage/llpumpio.cpp
 mode change 100644 => 100755 indra/llmessage/llpumpio.h
 mode change 100644 => 100755 indra/llmessage/llqueryflags.h
 mode change 100644 => 100755 indra/llmessage/llregionflags.h
 mode change 100644 => 100755 indra/llmessage/llregionhandle.h
 mode change 100644 => 100755 indra/llmessage/llregionpresenceverifier.cpp
 mode change 100644 => 100755 indra/llmessage/llregionpresenceverifier.h
 mode change 100644 => 100755 indra/llmessage/llsdappservices.cpp
 mode change 100644 => 100755 indra/llmessage/llsdappservices.h
 mode change 100644 => 100755 indra/llmessage/llsdhttpserver.cpp
 mode change 100644 => 100755 indra/llmessage/llsdhttpserver.h
 mode change 100644 => 100755 indra/llmessage/llsdmessage.cpp
 mode change 100644 => 100755 indra/llmessage/llsdmessage.h
 mode change 100644 => 100755 indra/llmessage/llsdmessagebuilder.cpp
 mode change 100644 => 100755 indra/llmessage/llsdmessagebuilder.h
 mode change 100644 => 100755 indra/llmessage/llsdmessagereader.cpp
 mode change 100644 => 100755 indra/llmessage/llsdmessagereader.h
 mode change 100644 => 100755 indra/llmessage/llsdrpcclient.cpp
 mode change 100644 => 100755 indra/llmessage/llsdrpcclient.h
 mode change 100644 => 100755 indra/llmessage/llsdrpcserver.cpp
 mode change 100644 => 100755 indra/llmessage/llsdrpcserver.h
 mode change 100644 => 100755 indra/llmessage/llservice.cpp
 mode change 100644 => 100755 indra/llmessage/llservice.h
 mode change 100644 => 100755 indra/llmessage/llservicebuilder.cpp
 mode change 100644 => 100755 indra/llmessage/llservicebuilder.h
 mode change 100644 => 100755 indra/llmessage/llstoredmessage.cpp
 mode change 100644 => 100755 indra/llmessage/llstoredmessage.h
 mode change 100644 => 100755 indra/llmessage/lltaskname.h
 mode change 100644 => 100755 indra/llmessage/llteleportflags.h
 mode change 100644 => 100755 indra/llmessage/lltemplatemessagebuilder.cpp
 mode change 100644 => 100755 indra/llmessage/lltemplatemessagebuilder.h
 mode change 100644 => 100755 indra/llmessage/lltemplatemessagedispatcher.cpp
 mode change 100644 => 100755 indra/llmessage/lltemplatemessagedispatcher.h
 mode change 100644 => 100755 indra/llmessage/lltemplatemessagereader.cpp
 mode change 100644 => 100755 indra/llmessage/lltemplatemessagereader.h
 mode change 100644 => 100755 indra/llmessage/llthrottle.cpp
 mode change 100644 => 100755 indra/llmessage/llthrottle.h
 mode change 100644 => 100755 indra/llmessage/lltransfermanager.cpp
 mode change 100644 => 100755 indra/llmessage/lltransfermanager.h
 mode change 100644 => 100755 indra/llmessage/lltransfersourceasset.cpp
 mode change 100644 => 100755 indra/llmessage/lltransfersourceasset.h
 mode change 100644 => 100755 indra/llmessage/lltransfersourcefile.cpp
 mode change 100644 => 100755 indra/llmessage/lltransfersourcefile.h
 mode change 100644 => 100755 indra/llmessage/lltransfertargetfile.cpp
 mode change 100644 => 100755 indra/llmessage/lltransfertargetfile.h
 mode change 100644 => 100755 indra/llmessage/lltransfertargetvfile.cpp
 mode change 100644 => 100755 indra/llmessage/lltransfertargetvfile.h
 mode change 100644 => 100755 indra/llmessage/lltrustedmessageservice.cpp
 mode change 100644 => 100755 indra/llmessage/lltrustedmessageservice.h
 mode change 100644 => 100755 indra/llmessage/llurlrequest.cpp
 mode change 100644 => 100755 indra/llmessage/llurlrequest.h
 mode change 100644 => 100755 indra/llmessage/lluseroperation.cpp
 mode change 100644 => 100755 indra/llmessage/lluseroperation.h
 mode change 100644 => 100755 indra/llmessage/llvehicleparams.h
 mode change 100644 => 100755 indra/llmessage/llxfer.cpp
 mode change 100644 => 100755 indra/llmessage/llxfer.h
 mode change 100644 => 100755 indra/llmessage/llxfer_file.cpp
 mode change 100644 => 100755 indra/llmessage/llxfer_file.h
 mode change 100644 => 100755 indra/llmessage/llxfer_mem.cpp
 mode change 100644 => 100755 indra/llmessage/llxfer_mem.h
 mode change 100644 => 100755 indra/llmessage/llxfer_vfile.cpp
 mode change 100644 => 100755 indra/llmessage/llxfer_vfile.h
 mode change 100644 => 100755 indra/llmessage/llxfermanager.cpp
 mode change 100644 => 100755 indra/llmessage/llxfermanager.h
 mode change 100644 => 100755 indra/llmessage/llxorcipher.cpp
 mode change 100644 => 100755 indra/llmessage/llxorcipher.h
 mode change 100644 => 100755 indra/llmessage/machine.cpp
 mode change 100644 => 100755 indra/llmessage/machine.h
 mode change 100644 => 100755 indra/llmessage/mean_collision_data.h
 mode change 100644 => 100755 indra/llmessage/message.cpp
 mode change 100644 => 100755 indra/llmessage/message.h
 mode change 100644 => 100755 indra/llmessage/message_prehash.cpp
 mode change 100644 => 100755 indra/llmessage/message_prehash.h
 mode change 100644 => 100755 indra/llmessage/message_string_table.cpp
 mode change 100644 => 100755 indra/llmessage/net.cpp
 mode change 100644 => 100755 indra/llmessage/net.h
 mode change 100644 => 100755 indra/llmessage/partsyspacket.cpp
 mode change 100644 => 100755 indra/llmessage/partsyspacket.h
 mode change 100644 => 100755 indra/llmessage/patch_code.cpp
 mode change 100644 => 100755 indra/llmessage/patch_code.h
 mode change 100644 => 100755 indra/llmessage/patch_dct.cpp
 mode change 100644 => 100755 indra/llmessage/patch_dct.h
 mode change 100644 => 100755 indra/llmessage/patch_idct.cpp
 mode change 100644 => 100755 indra/llmessage/sound_ids.cpp
 mode change 100644 => 100755 indra/llmessage/sound_ids.h
 mode change 100644 => 100755 indra/llmessage/tests/commtest.h
 mode change 100644 => 100755 indra/llmessage/tests/llareslistener_test.cpp
 mode change 100644 => 100755 indra/llmessage/tests/llavatarnamecache_test.cpp
 mode change 100644 => 100755 indra/llmessage/tests/llcurl_stub.cpp
 mode change 100644 => 100755 indra/llmessage/tests/llhost_test.cpp
 mode change 100644 => 100755 indra/llmessage/tests/llhttpclient_test.cpp
 mode change 100644 => 100755 indra/llmessage/tests/llhttpclientadapter_test.cpp
 mode change 100644 => 100755 indra/llmessage/tests/llmime_test.cpp
 mode change 100644 => 100755 indra/llmessage/tests/llmockhttpclient.h
 mode change 100644 => 100755 indra/llmessage/tests/llnamevalue_test.cpp
 mode change 100644 => 100755 indra/llmessage/tests/llpartdata_test.cpp
 mode change 100644 => 100755 indra/llmessage/tests/llregionpresenceverifier_test.cpp
 mode change 100644 => 100755 indra/llmessage/tests/llsdmessage_test.cpp
 mode change 100644 => 100755 indra/llmessage/tests/lltemplatemessagedispatcher_test.cpp
 mode change 100644 => 100755 indra/llmessage/tests/lltesthttpclientadapter.cpp
 mode change 100644 => 100755 indra/llmessage/tests/lltesthttpclientadapter.h
 mode change 100644 => 100755 indra/llmessage/tests/lltestmessagesender.cpp
 mode change 100644 => 100755 indra/llmessage/tests/lltestmessagesender.h
 mode change 100644 => 100755 indra/llmessage/tests/lltrustedmessageservice_test.cpp
 mode change 100644 => 100755 indra/llmessage/tests/llxfer_file_test.cpp
 mode change 100644 => 100755 indra/llmessage/tests/networkio.h
 mode change 100644 => 100755 indra/llmessage/tests/test_llsdmessage_peer.py
 mode change 100644 => 100755 indra/llmessage/tests/testrunner.py
 mode change 100644 => 100755 indra/llplugin/CMakeLists.txt
 mode change 100644 => 100755 indra/llplugin/llpluginclassmedia.cpp
 mode change 100644 => 100755 indra/llplugin/llpluginclassmedia.h
 mode change 100644 => 100755 indra/llplugin/llpluginclassmediaowner.h
 mode change 100644 => 100755 indra/llplugin/llplugincookiestore.cpp
 mode change 100644 => 100755 indra/llplugin/llplugincookiestore.h
 mode change 100644 => 100755 indra/llplugin/llplugininstance.cpp
 mode change 100644 => 100755 indra/llplugin/llplugininstance.h
 mode change 100644 => 100755 indra/llplugin/llpluginmessage.cpp
 mode change 100644 => 100755 indra/llplugin/llpluginmessage.h
 mode change 100644 => 100755 indra/llplugin/llpluginmessageclasses.h
 mode change 100644 => 100755 indra/llplugin/llpluginmessagepipe.cpp
 mode change 100644 => 100755 indra/llplugin/llpluginmessagepipe.h
 mode change 100644 => 100755 indra/llplugin/llpluginprocesschild.cpp
 mode change 100644 => 100755 indra/llplugin/llpluginprocesschild.h
 mode change 100644 => 100755 indra/llplugin/llpluginprocessparent.cpp
 mode change 100644 => 100755 indra/llplugin/llpluginprocessparent.h
 mode change 100644 => 100755 indra/llplugin/llpluginsharedmemory.cpp
 mode change 100644 => 100755 indra/llplugin/llpluginsharedmemory.h
 mode change 100644 => 100755 indra/llplugin/slplugin/CMakeLists.txt
 mode change 100644 => 100755 indra/llplugin/slplugin/slplugin-objc.h
 mode change 100644 => 100755 indra/llplugin/slplugin/slplugin-objc.mm
 mode change 100644 => 100755 indra/llplugin/slplugin/slplugin.cpp
 mode change 100644 => 100755 indra/llplugin/slplugin/slplugin_info.plist
 mode change 100644 => 100755 indra/llplugin/tests/llplugincookiestore_test.cpp
 mode change 100644 => 100755 indra/llprimitive/CMakeLists.txt
 mode change 100644 => 100755 indra/llprimitive/legacy_object_types.h
 mode change 100644 => 100755 indra/llprimitive/llmaterialtable.cpp
 mode change 100644 => 100755 indra/llprimitive/llmaterialtable.h
 mode change 100644 => 100755 indra/llprimitive/llmediaentry.cpp
 mode change 100644 => 100755 indra/llprimitive/llmediaentry.h
 mode change 100644 => 100755 indra/llprimitive/llmodel.cpp
 mode change 100644 => 100755 indra/llprimitive/llmodel.h
 mode change 100644 => 100755 indra/llprimitive/llprimitive.cpp
 mode change 100644 => 100755 indra/llprimitive/llprimitive.h
 mode change 100644 => 100755 indra/llprimitive/llprimlinkinfo.h
 mode change 100644 => 100755 indra/llprimitive/llprimtexturelist.cpp
 mode change 100644 => 100755 indra/llprimitive/llprimtexturelist.h
 mode change 100644 => 100755 indra/llprimitive/lltextureanim.cpp
 mode change 100644 => 100755 indra/llprimitive/lltextureanim.h
 mode change 100644 => 100755 indra/llprimitive/lltextureentry.cpp
 mode change 100644 => 100755 indra/llprimitive/lltextureentry.h
 mode change 100644 => 100755 indra/llprimitive/lltree_common.h
 mode change 100644 => 100755 indra/llprimitive/lltreeparams.cpp
 mode change 100644 => 100755 indra/llprimitive/lltreeparams.h
 mode change 100644 => 100755 indra/llprimitive/llvolumemessage.cpp
 mode change 100644 => 100755 indra/llprimitive/llvolumemessage.h
 mode change 100644 => 100755 indra/llprimitive/llvolumexml.cpp
 mode change 100644 => 100755 indra/llprimitive/llvolumexml.h
 mode change 100644 => 100755 indra/llprimitive/material_codes.cpp
 mode change 100644 => 100755 indra/llprimitive/material_codes.h
 mode change 100644 => 100755 indra/llprimitive/object_flags.h
 mode change 100644 => 100755 indra/llprimitive/tests/llmediaentry_test.cpp
 mode change 100644 => 100755 indra/llprimitive/tests/llmessagesystem_stub.cpp
 mode change 100644 => 100755 indra/llprimitive/tests/llprimitive_test.cpp
 mode change 100644 => 100755 indra/llrender/CMakeLists.txt
 mode change 100644 => 100755 indra/llrender/llcubemap.cpp
 mode change 100644 => 100755 indra/llrender/llcubemap.h
 mode change 100644 => 100755 indra/llrender/llfontbitmapcache.cpp
 mode change 100644 => 100755 indra/llrender/llfontbitmapcache.h
 mode change 100644 => 100755 indra/llrender/llfontfreetype.cpp
 mode change 100644 => 100755 indra/llrender/llfontfreetype.h
 mode change 100644 => 100755 indra/llrender/llfontgl.cpp
 mode change 100644 => 100755 indra/llrender/llfontgl.h
 mode change 100644 => 100755 indra/llrender/llfontregistry.cpp
 mode change 100644 => 100755 indra/llrender/llfontregistry.h
 mode change 100644 => 100755 indra/llrender/llgl.cpp
 mode change 100644 => 100755 indra/llrender/llgl.h
 mode change 100644 => 100755 indra/llrender/llgldbg.cpp
 mode change 100644 => 100755 indra/llrender/llgldbg.h
 mode change 100644 => 100755 indra/llrender/llglheaders.h
 mode change 100644 => 100755 indra/llrender/llglslshader.cpp
 mode change 100644 => 100755 indra/llrender/llglslshader.h
 mode change 100644 => 100755 indra/llrender/llglstates.h
 mode change 100644 => 100755 indra/llrender/llgltypes.h
 mode change 100644 => 100755 indra/llrender/llimagegl.cpp
 mode change 100644 => 100755 indra/llrender/llimagegl.h
 mode change 100644 => 100755 indra/llrender/llpostprocess.cpp
 mode change 100644 => 100755 indra/llrender/llpostprocess.h
 mode change 100644 => 100755 indra/llrender/llrender.cpp
 mode change 100644 => 100755 indra/llrender/llrender.h
 mode change 100644 => 100755 indra/llrender/llrendernavprim.cpp
 mode change 100644 => 100755 indra/llrender/llrendernavprim.h
 mode change 100644 => 100755 indra/llrender/llrendersphere.cpp
 mode change 100644 => 100755 indra/llrender/llrendersphere.h
 mode change 100644 => 100755 indra/llrender/llrendertarget.cpp
 mode change 100644 => 100755 indra/llrender/llrendertarget.h
 mode change 100644 => 100755 indra/llrender/llshadermgr.cpp
 mode change 100644 => 100755 indra/llrender/llshadermgr.h
 mode change 100644 => 100755 indra/llrender/lltexture.cpp
 mode change 100644 => 100755 indra/llrender/lltexture.h
 mode change 100644 => 100755 indra/llrender/llvertexbuffer.cpp
 mode change 100644 => 100755 indra/llrender/llvertexbuffer.h
 mode change 100644 => 100755 indra/llui/CMakeLists.txt
 mode change 100644 => 100755 indra/llui/llaccordionctrl.cpp
 mode change 100644 => 100755 indra/llui/llaccordionctrl.h
 mode change 100644 => 100755 indra/llui/llaccordionctrltab.cpp
 mode change 100644 => 100755 indra/llui/llaccordionctrltab.h
 mode change 100644 => 100755 indra/llui/llbadge.cpp
 mode change 100644 => 100755 indra/llui/llbadge.h
 mode change 100644 => 100755 indra/llui/llbadgeholder.cpp
 mode change 100644 => 100755 indra/llui/llbadgeholder.h
 mode change 100644 => 100755 indra/llui/llbadgeowner.cpp
 mode change 100644 => 100755 indra/llui/llbadgeowner.h
 mode change 100644 => 100755 indra/llui/llbutton.cpp
 mode change 100644 => 100755 indra/llui/llbutton.h
 mode change 100644 => 100755 indra/llui/llcallbackmap.h
 mode change 100644 => 100755 indra/llui/llchatentry.cpp
 mode change 100644 => 100755 indra/llui/llchatentry.h
 mode change 100644 => 100755 indra/llui/llcheckboxctrl.cpp
 mode change 100644 => 100755 indra/llui/llcheckboxctrl.h
 mode change 100644 => 100755 indra/llui/llclipboard.cpp
 mode change 100644 => 100755 indra/llui/llclipboard.h
 mode change 100644 => 100755 indra/llui/llcombobox.cpp
 mode change 100644 => 100755 indra/llui/llcombobox.h
 mode change 100644 => 100755 indra/llui/llcommandmanager.cpp
 mode change 100644 => 100755 indra/llui/llcommandmanager.h
 mode change 100644 => 100755 indra/llui/llconsole.cpp
 mode change 100644 => 100755 indra/llui/llconsole.h
 mode change 100644 => 100755 indra/llui/llcontainerview.cpp
 mode change 100644 => 100755 indra/llui/llcontainerview.h
 mode change 100644 => 100755 indra/llui/llctrlselectioninterface.cpp
 mode change 100644 => 100755 indra/llui/llctrlselectioninterface.h
 mode change 100644 => 100755 indra/llui/lldockablefloater.cpp
 mode change 100644 => 100755 indra/llui/lldockablefloater.h
 mode change 100644 => 100755 indra/llui/lldockcontrol.cpp
 mode change 100644 => 100755 indra/llui/lldockcontrol.h
 mode change 100644 => 100755 indra/llui/lldraghandle.cpp
 mode change 100644 => 100755 indra/llui/lldraghandle.h
 mode change 100644 => 100755 indra/llui/lleditmenuhandler.cpp
 mode change 100644 => 100755 indra/llui/lleditmenuhandler.h
 mode change 100644 => 100755 indra/llui/llf32uictrl.cpp
 mode change 100644 => 100755 indra/llui/llf32uictrl.h
 mode change 100644 => 100755 indra/llui/llfiltereditor.cpp
 mode change 100644 => 100755 indra/llui/llfiltereditor.h
 mode change 100644 => 100755 indra/llui/llflashtimer.cpp
 mode change 100644 => 100755 indra/llui/llflashtimer.h
 mode change 100644 => 100755 indra/llui/llflatlistview.cpp
 mode change 100644 => 100755 indra/llui/llflatlistview.h
 mode change 100644 => 100755 indra/llui/llfloater.cpp
 mode change 100644 => 100755 indra/llui/llfloater.h
 mode change 100644 => 100755 indra/llui/llfloaterreg.cpp
 mode change 100644 => 100755 indra/llui/llfloaterreg.h
 mode change 100644 => 100755 indra/llui/llfloaterreglistener.cpp
 mode change 100644 => 100755 indra/llui/llfloaterreglistener.h
 mode change 100644 => 100755 indra/llui/llflyoutbutton.cpp
 mode change 100644 => 100755 indra/llui/llflyoutbutton.h
 mode change 100644 => 100755 indra/llui/llfocusmgr.cpp
 mode change 100644 => 100755 indra/llui/llfocusmgr.h
 mode change 100644 => 100755 indra/llui/llfolderview.cpp
 mode change 100644 => 100755 indra/llui/llfolderview.h
 mode change 100644 => 100755 indra/llui/llfolderviewmodel.cpp
 mode change 100644 => 100755 indra/llui/llfolderviewmodel.h
 mode change 100644 => 100755 indra/llui/llfunctorregistry.cpp
 mode change 100644 => 100755 indra/llui/llfunctorregistry.h
 mode change 100644 => 100755 indra/llui/llhelp.h
 mode change 100644 => 100755 indra/llui/lliconctrl.cpp
 mode change 100644 => 100755 indra/llui/lliconctrl.h
 mode change 100644 => 100755 indra/llui/llkeywords.cpp
 mode change 100644 => 100755 indra/llui/llkeywords.h
 mode change 100644 => 100755 indra/llui/lllayoutstack.cpp
 mode change 100644 => 100755 indra/llui/lllayoutstack.h
 mode change 100644 => 100755 indra/llui/lllazyvalue.h
 mode change 100644 => 100755 indra/llui/lllineeditor.cpp
 mode change 100644 => 100755 indra/llui/lllineeditor.h
 mode change 100644 => 100755 indra/llui/llloadingindicator.cpp
 mode change 100644 => 100755 indra/llui/llloadingindicator.h
 mode change 100644 => 100755 indra/llui/lllocalcliprect.cpp
 mode change 100644 => 100755 indra/llui/lllocalcliprect.h
 mode change 100644 => 100755 indra/llui/llmenubutton.cpp
 mode change 100644 => 100755 indra/llui/llmenubutton.h
 mode change 100644 => 100755 indra/llui/llmenugl.cpp
 mode change 100644 => 100755 indra/llui/llmenugl.h
 mode change 100644 => 100755 indra/llui/llmodaldialog.cpp
 mode change 100644 => 100755 indra/llui/llmodaldialog.h
 mode change 100644 => 100755 indra/llui/llmultifloater.cpp
 mode change 100644 => 100755 indra/llui/llmultifloater.h
 mode change 100644 => 100755 indra/llui/llmultislider.cpp
 mode change 100644 => 100755 indra/llui/llmultislider.h
 mode change 100644 => 100755 indra/llui/llmultisliderctrl.cpp
 mode change 100644 => 100755 indra/llui/llmultisliderctrl.h
 mode change 100644 => 100755 indra/llui/llnotificationptr.h
 mode change 100644 => 100755 indra/llui/llnotifications.cpp
 mode change 100644 => 100755 indra/llui/llnotifications.h
 mode change 100644 => 100755 indra/llui/llnotificationsutil.cpp
 mode change 100644 => 100755 indra/llui/llnotificationsutil.h
 mode change 100644 => 100755 indra/llui/llnotificationtemplate.h
 mode change 100644 => 100755 indra/llui/llnotificationvisibilityrule.h
 mode change 100644 => 100755 indra/llui/llpanel.cpp
 mode change 100644 => 100755 indra/llui/llpanel.h
 mode change 100644 => 100755 indra/llui/llprogressbar.cpp
 mode change 100644 => 100755 indra/llui/llprogressbar.h
 mode change 100644 => 100755 indra/llui/llradiogroup.cpp
 mode change 100644 => 100755 indra/llui/llradiogroup.h
 mode change 100644 => 100755 indra/llui/llresizebar.cpp
 mode change 100644 => 100755 indra/llui/llresizebar.h
 mode change 100644 => 100755 indra/llui/llresizehandle.cpp
 mode change 100644 => 100755 indra/llui/llresizehandle.h
 mode change 100644 => 100755 indra/llui/llresmgr.cpp
 mode change 100644 => 100755 indra/llui/llresmgr.h
 mode change 100644 => 100755 indra/llui/llrngwriter.cpp
 mode change 100644 => 100755 indra/llui/llrngwriter.h
 mode change 100644 => 100755 indra/llui/llscrollbar.cpp
 mode change 100644 => 100755 indra/llui/llscrollbar.h
 mode change 100644 => 100755 indra/llui/llscrollcontainer.cpp
 mode change 100644 => 100755 indra/llui/llscrollcontainer.h
 mode change 100644 => 100755 indra/llui/llscrollingpanellist.cpp
 mode change 100644 => 100755 indra/llui/llscrollingpanellist.h
 mode change 100644 => 100755 indra/llui/llscrolllistcell.cpp
 mode change 100644 => 100755 indra/llui/llscrolllistcell.h
 mode change 100644 => 100755 indra/llui/llscrolllistcolumn.cpp
 mode change 100644 => 100755 indra/llui/llscrolllistcolumn.h
 mode change 100644 => 100755 indra/llui/llscrolllistctrl.cpp
 mode change 100644 => 100755 indra/llui/llscrolllistctrl.h
 mode change 100644 => 100755 indra/llui/llscrolllistitem.cpp
 mode change 100644 => 100755 indra/llui/llscrolllistitem.h
 mode change 100644 => 100755 indra/llui/llsearcheditor.cpp
 mode change 100644 => 100755 indra/llui/llsearcheditor.h
 mode change 100644 => 100755 indra/llui/llslider.cpp
 mode change 100644 => 100755 indra/llui/llslider.h
 mode change 100644 => 100755 indra/llui/llsliderctrl.cpp
 mode change 100644 => 100755 indra/llui/llsliderctrl.h
 mode change 100644 => 100755 indra/llui/llspellcheck.cpp
 mode change 100644 => 100755 indra/llui/llspellcheck.h
 mode change 100644 => 100755 indra/llui/llspellcheckmenuhandler.h
 mode change 100644 => 100755 indra/llui/llspinctrl.cpp
 mode change 100644 => 100755 indra/llui/llspinctrl.h
 mode change 100644 => 100755 indra/llui/llstatbar.cpp
 mode change 100644 => 100755 indra/llui/llstatbar.h
 mode change 100644 => 100755 indra/llui/llstatgraph.cpp
 mode change 100644 => 100755 indra/llui/llstatgraph.h
 mode change 100644 => 100755 indra/llui/llstatview.cpp
 mode change 100644 => 100755 indra/llui/llstatview.h
 mode change 100644 => 100755 indra/llui/llstyle.cpp
 mode change 100644 => 100755 indra/llui/llstyle.h
 mode change 100644 => 100755 indra/llui/lltabcontainer.cpp
 mode change 100644 => 100755 indra/llui/lltabcontainer.h
 mode change 100644 => 100755 indra/llui/lltextbase.cpp
 mode change 100644 => 100755 indra/llui/lltextbase.h
 mode change 100644 => 100755 indra/llui/lltextbox.cpp
 mode change 100644 => 100755 indra/llui/lltextbox.h
 mode change 100644 => 100755 indra/llui/lltexteditor.cpp
 mode change 100644 => 100755 indra/llui/lltexteditor.h
 mode change 100644 => 100755 indra/llui/lltextparser.cpp
 mode change 100644 => 100755 indra/llui/lltextparser.h
 mode change 100644 => 100755 indra/llui/lltextutil.cpp
 mode change 100644 => 100755 indra/llui/lltextutil.h
 mode change 100644 => 100755 indra/llui/lltextvalidate.cpp
 mode change 100644 => 100755 indra/llui/lltextvalidate.h
 mode change 100644 => 100755 indra/llui/lltimectrl.cpp
 mode change 100644 => 100755 indra/llui/lltimectrl.h
 mode change 100644 => 100755 indra/llui/lltoggleablemenu.cpp
 mode change 100644 => 100755 indra/llui/lltoggleablemenu.h
 mode change 100644 => 100755 indra/llui/lltoolbar.cpp
 mode change 100644 => 100755 indra/llui/lltoolbar.h
 mode change 100644 => 100755 indra/llui/lltooltip.cpp
 mode change 100644 => 100755 indra/llui/lltooltip.h
 mode change 100644 => 100755 indra/llui/lltrans.cpp
 mode change 100644 => 100755 indra/llui/lltrans.h
 mode change 100644 => 100755 indra/llui/lltransutil.cpp
 mode change 100644 => 100755 indra/llui/lltransutil.h
 mode change 100644 => 100755 indra/llui/llui.cpp
 mode change 100644 => 100755 indra/llui/llui.h
 mode change 100644 => 100755 indra/llui/lluicolor.cpp
 mode change 100644 => 100755 indra/llui/lluicolor.h
 mode change 100644 => 100755 indra/llui/lluicolortable.cpp
 mode change 100644 => 100755 indra/llui/lluicolortable.h
 mode change 100644 => 100755 indra/llui/lluiconstants.h
 mode change 100644 => 100755 indra/llui/lluictrl.cpp
 mode change 100644 => 100755 indra/llui/lluictrl.h
 mode change 100644 => 100755 indra/llui/lluictrlfactory.cpp
 mode change 100644 => 100755 indra/llui/lluictrlfactory.h
 mode change 100644 => 100755 indra/llui/lluifwd.h
 mode change 100644 => 100755 indra/llui/lluiimage.cpp
 mode change 100644 => 100755 indra/llui/lluiimage.h
 mode change 100644 => 100755 indra/llui/lluistring.cpp
 mode change 100644 => 100755 indra/llui/lluistring.h
 mode change 100644 => 100755 indra/llui/llundo.cpp
 mode change 100644 => 100755 indra/llui/llundo.h
 mode change 100644 => 100755 indra/llui/llurlaction.cpp
 mode change 100644 => 100755 indra/llui/llurlaction.h
 mode change 100644 => 100755 indra/llui/llurlentry.cpp
 mode change 100644 => 100755 indra/llui/llurlentry.h
 mode change 100644 => 100755 indra/llui/llurlmatch.cpp
 mode change 100644 => 100755 indra/llui/llurlmatch.h
 mode change 100644 => 100755 indra/llui/llurlregistry.cpp
 mode change 100644 => 100755 indra/llui/llurlregistry.h
 mode change 100644 => 100755 indra/llui/llview.cpp
 mode change 100644 => 100755 indra/llui/llview.h
 mode change 100644 => 100755 indra/llui/llviewborder.cpp
 mode change 100644 => 100755 indra/llui/llviewborder.h
 mode change 100644 => 100755 indra/llui/llviewinject.cpp
 mode change 100644 => 100755 indra/llui/llviewinject.h
 mode change 100644 => 100755 indra/llui/llviewmodel.cpp
 mode change 100644 => 100755 indra/llui/llviewmodel.h
 mode change 100644 => 100755 indra/llui/llviewquery.cpp
 mode change 100644 => 100755 indra/llui/llviewquery.h
 mode change 100644 => 100755 indra/llui/llwindowshade.cpp
 mode change 100644 => 100755 indra/llui/llwindowshade.h
 mode change 100644 => 100755 indra/llui/llxuiparser.cpp
 mode change 100644 => 100755 indra/llui/llxuiparser.h
 mode change 100644 => 100755 indra/llui/tests/llurlentry_stub.cpp
 mode change 100644 => 100755 indra/llui/tests/llurlentry_test.cpp
 mode change 100644 => 100755 indra/llui/tests/llurlmatch_test.cpp
 mode change 100644 => 100755 indra/llvfs/CMakeLists.txt
 mode change 100644 => 100755 indra/llvfs/lldir.cpp
 mode change 100644 => 100755 indra/llvfs/lldir.h
 mode change 100644 => 100755 indra/llvfs/lldir_linux.cpp
 mode change 100644 => 100755 indra/llvfs/lldir_linux.h
 mode change 100644 => 100755 indra/llvfs/lldir_mac.cpp
 mode change 100644 => 100755 indra/llvfs/lldir_mac.h
 mode change 100644 => 100755 indra/llvfs/lldir_solaris.cpp
 mode change 100644 => 100755 indra/llvfs/lldir_solaris.h
 mode change 100644 => 100755 indra/llvfs/lldir_win32.cpp
 mode change 100644 => 100755 indra/llvfs/lldir_win32.h
 mode change 100644 => 100755 indra/llvfs/lldirguard.h
 mode change 100644 => 100755 indra/llvfs/lldiriterator.cpp
 mode change 100644 => 100755 indra/llvfs/lldiriterator.h
 mode change 100644 => 100755 indra/llvfs/lllfsthread.cpp
 mode change 100644 => 100755 indra/llvfs/lllfsthread.h
 mode change 100644 => 100755 indra/llvfs/llpidlock.cpp
 mode change 100644 => 100755 indra/llvfs/llpidlock.h
 mode change 100644 => 100755 indra/llvfs/llvfile.cpp
 mode change 100644 => 100755 indra/llvfs/llvfile.h
 mode change 100644 => 100755 indra/llvfs/llvfs.cpp
 mode change 100644 => 100755 indra/llvfs/llvfs.h
 mode change 100644 => 100755 indra/llvfs/llvfs_objc.h
 mode change 100644 => 100755 indra/llvfs/llvfs_objc.mm
 mode change 100644 => 100755 indra/llvfs/llvfsthread.cpp
 mode change 100644 => 100755 indra/llvfs/llvfsthread.h
 mode change 100644 => 100755 indra/llvfs/tests/lldir_test.cpp
 mode change 100644 => 100755 indra/llvfs/tests/lldiriterator_test.cpp
 mode change 100644 => 100755 indra/llwindow/CMakeLists.txt
 mode change 100644 => 100755 indra/llwindow/GL/glh_extensions.h
 mode change 100644 => 100755 indra/llwindow/GL/glh_genext.h
 mode change 100644 => 100755 indra/llwindow/lldragdropwin32.cpp
 mode change 100644 => 100755 indra/llwindow/lldragdropwin32.h
 mode change 100644 => 100755 indra/llwindow/lldxhardware.cpp
 mode change 100644 => 100755 indra/llwindow/lldxhardware.h
 mode change 100644 => 100755 indra/llwindow/llkeyboard.cpp
 mode change 100644 => 100755 indra/llwindow/llkeyboard.h
 mode change 100644 => 100755 indra/llwindow/llkeyboardheadless.cpp
 mode change 100644 => 100755 indra/llwindow/llkeyboardheadless.h
 mode change 100644 => 100755 indra/llwindow/llkeyboardmacosx.cpp
 mode change 100644 => 100755 indra/llwindow/llkeyboardmacosx.h
 mode change 100644 => 100755 indra/llwindow/llkeyboardsdl.cpp
 mode change 100644 => 100755 indra/llwindow/llkeyboardsdl.h
 mode change 100644 => 100755 indra/llwindow/llkeyboardwin32.cpp
 mode change 100644 => 100755 indra/llwindow/llkeyboardwin32.h
 mode change 100644 => 100755 indra/llwindow/llmousehandler.cpp
 mode change 100644 => 100755 indra/llwindow/llmousehandler.h
 mode change 100644 => 100755 indra/llwindow/llpreeditor.h
 mode change 100644 => 100755 indra/llwindow/llwindow.cpp
 mode change 100644 => 100755 indra/llwindow/llwindow.h
 mode change 100644 => 100755 indra/llwindow/llwindowcallbacks.cpp
 mode change 100644 => 100755 indra/llwindow/llwindowcallbacks.h
 mode change 100644 => 100755 indra/llwindow/llwindowheadless.cpp
 mode change 100644 => 100755 indra/llwindow/llwindowheadless.h
 mode change 100644 => 100755 indra/llwindow/llwindowmacosx-objc.h
 mode change 100644 => 100755 indra/llwindow/llwindowmacosx-objc.mm
 mode change 100644 => 100755 indra/llwindow/llwindowmacosx.cpp
 mode change 100644 => 100755 indra/llwindow/llwindowmacosx.h
 mode change 100644 => 100755 indra/llwindow/llwindowmesaheadless.cpp
 mode change 100644 => 100755 indra/llwindow/llwindowmesaheadless.h
 mode change 100644 => 100755 indra/llwindow/llwindowsdl.cpp
 mode change 100644 => 100755 indra/llwindow/llwindowsdl.h
 mode change 100644 => 100755 indra/llwindow/llwindowwin32.cpp
 mode change 100644 => 100755 indra/llwindow/llwindowwin32.h
 mode change 100644 => 100755 indra/llxml/CMakeLists.txt
 mode change 100644 => 100755 indra/llxml/llcontrol.cpp
 mode change 100644 => 100755 indra/llxml/llcontrol.h
 mode change 100644 => 100755 indra/llxml/llcontrolgroupreader.h
 mode change 100644 => 100755 indra/llxml/llxmlnode.cpp
 mode change 100644 => 100755 indra/llxml/llxmlnode.h
 mode change 100644 => 100755 indra/llxml/llxmlparser.cpp
 mode change 100644 => 100755 indra/llxml/llxmlparser.h
 mode change 100644 => 100755 indra/llxml/llxmltree.cpp
 mode change 100644 => 100755 indra/llxml/llxmltree.h
 mode change 100644 => 100755 indra/llxml/tests/llcontrol_test.cpp
 mode change 100644 => 100755 indra/lscript/CMakeLists.txt
 mode change 100644 => 100755 indra/lscript/llscriptresource.h
 mode change 100644 => 100755 indra/lscript/llscriptresourceconsumer.h
 mode change 100644 => 100755 indra/lscript/llscriptresourcepool.h
 mode change 100644 => 100755 indra/lscript/lscript_alloc.h
 mode change 100644 => 100755 indra/lscript/lscript_byteconvert.h
 mode change 100644 => 100755 indra/lscript/lscript_byteformat.h
 mode change 100644 => 100755 indra/lscript/lscript_compile/CMakeLists.txt
 mode change 100644 => 100755 indra/lscript/lscript_compile/indra.l
 mode change 100644 => 100755 indra/lscript/lscript_compile/indra.y
 mode change 100644 => 100755 indra/lscript/lscript_compile/lscript_alloc.cpp
 mode change 100644 => 100755 indra/lscript/lscript_compile/lscript_bytecode.cpp
 mode change 100644 => 100755 indra/lscript/lscript_compile/lscript_bytecode.h
 mode change 100644 => 100755 indra/lscript/lscript_compile/lscript_error.cpp
 mode change 100644 => 100755 indra/lscript/lscript_compile/lscript_error.h
 mode change 100644 => 100755 indra/lscript/lscript_compile/lscript_heap.cpp
 mode change 100644 => 100755 indra/lscript/lscript_compile/lscript_heap.h
 mode change 100644 => 100755 indra/lscript/lscript_compile/lscript_resource.cpp
 mode change 100644 => 100755 indra/lscript/lscript_compile/lscript_resource.h
 mode change 100644 => 100755 indra/lscript/lscript_compile/lscript_scope.cpp
 mode change 100644 => 100755 indra/lscript/lscript_compile/lscript_scope.h
 mode change 100644 => 100755 indra/lscript/lscript_compile/lscript_tree.cpp
 mode change 100644 => 100755 indra/lscript/lscript_compile/lscript_tree.h
 mode change 100644 => 100755 indra/lscript/lscript_compile/lscript_typecheck.cpp
 mode change 100644 => 100755 indra/lscript/lscript_compile/lscript_typecheck.h
 mode change 100644 => 100755 indra/lscript/lscript_compile/windows/unistd.h
 mode change 100644 => 100755 indra/lscript/lscript_execute.h
 mode change 100644 => 100755 indra/lscript/lscript_execute/CMakeLists.txt
 mode change 100644 => 100755 indra/lscript/lscript_execute/llscriptresource.cpp
 mode change 100644 => 100755 indra/lscript/lscript_execute/llscriptresourceconsumer.cpp
 mode change 100644 => 100755 indra/lscript/lscript_execute/llscriptresourcepool.cpp
 mode change 100644 => 100755 indra/lscript/lscript_execute/lscript_execute.cpp
 mode change 100644 => 100755 indra/lscript/lscript_execute/lscript_heapruntime.cpp
 mode change 100644 => 100755 indra/lscript/lscript_execute/lscript_heapruntime.h
 mode change 100644 => 100755 indra/lscript/lscript_execute/lscript_readlso.cpp
 mode change 100644 => 100755 indra/lscript/lscript_execute/lscript_readlso.h
 mode change 100644 => 100755 indra/lscript/lscript_export.h
 mode change 100644 => 100755 indra/lscript/lscript_http.h
 mode change 100644 => 100755 indra/lscript/lscript_library.h
 mode change 100644 => 100755 indra/lscript/lscript_library/CMakeLists.txt
 mode change 100644 => 100755 indra/lscript/lscript_library/lscript_alloc.cpp
 mode change 100644 => 100755 indra/lscript/lscript_library/lscript_export.cpp
 mode change 100644 => 100755 indra/lscript/lscript_library/lscript_library.cpp
 mode change 100644 => 100755 indra/lscript/lscript_rt_interface.h
 mode change 100644 => 100755 indra/mac_crash_logger/CMakeLists.txt
 mode change 100644 => 100755 indra/mac_crash_logger/CrashReporter.nib
 mode change 100644 => 100755 indra/mac_crash_logger/CrashReporter.xib
 mode change 100644 => 100755 indra/mac_crash_logger/Info.plist
 mode change 100644 => 100755 indra/mac_crash_logger/llcrashloggermac.cpp
 mode change 100644 => 100755 indra/mac_crash_logger/llcrashloggermac.h
 mode change 100644 => 100755 indra/mac_crash_logger/llcrashloggermacdelegate.h
 mode change 100644 => 100755 indra/mac_crash_logger/llcrashloggermacdelegate.mm
 mode change 100644 => 100755 indra/mac_crash_logger/mac_crash_logger.cpp
 mode change 100644 => 100755 indra/mac_updater/AutoUpdater.nib/classes.nib
 mode change 100644 => 100755 indra/mac_updater/AutoUpdater.nib/info.nib
 mode change 100644 => 100755 indra/mac_updater/AutoUpdater.nib/objects.xib
 mode change 100644 => 100755 indra/mac_updater/CMakeLists.txt
 mode change 100644 => 100755 indra/mac_updater/Info.plist
 mode change 100644 => 100755 indra/mac_updater/mac_updater.cpp
 mode change 100644 => 100755 indra/mac_updater/mac_updater.h
 mode change 100644 => 100755 indra/media_plugins/CMakeLists.txt
 mode change 100644 => 100755 indra/media_plugins/base/CMakeLists.txt
 mode change 100644 => 100755 indra/media_plugins/base/media_plugin_base.cpp
 mode change 100644 => 100755 indra/media_plugins/base/media_plugin_base.exp
 mode change 100644 => 100755 indra/media_plugins/base/media_plugin_base.h
 mode change 100644 => 100755 indra/media_plugins/example/CMakeLists.txt
 mode change 100644 => 100755 indra/media_plugins/example/media_plugin_example.cpp
 mode change 100644 => 100755 indra/media_plugins/gstreamer010/CMakeLists.txt
 mode change 100644 => 100755 indra/media_plugins/gstreamer010/llmediaimplgstreamer.h
 mode change 100644 => 100755 indra/media_plugins/gstreamer010/llmediaimplgstreamer_syms.cpp
 mode change 100644 => 100755 indra/media_plugins/gstreamer010/llmediaimplgstreamer_syms.h
 mode change 100644 => 100755 indra/media_plugins/gstreamer010/llmediaimplgstreamer_syms_raw.inc
 mode change 100644 => 100755 indra/media_plugins/gstreamer010/llmediaimplgstreamer_syms_rawv.inc
 mode change 100644 => 100755 indra/media_plugins/gstreamer010/llmediaimplgstreamertriviallogging.h
 mode change 100644 => 100755 indra/media_plugins/gstreamer010/llmediaimplgstreamervidplug.cpp
 mode change 100644 => 100755 indra/media_plugins/gstreamer010/llmediaimplgstreamervidplug.h
 mode change 100644 => 100755 indra/media_plugins/gstreamer010/media_plugin_gstreamer010.cpp
 mode change 100644 => 100755 indra/media_plugins/quicktime/CMakeLists.txt
 mode change 100644 => 100755 indra/media_plugins/quicktime/media_plugin_quicktime.cpp
 mode change 100644 => 100755 indra/media_plugins/webkit/CMakeLists.txt
 mode change 100644 => 100755 indra/media_plugins/webkit/dummy_volume_catcher.cpp
 mode change 100644 => 100755 indra/media_plugins/webkit/linux_volume_catcher.cpp
 mode change 100644 => 100755 indra/media_plugins/webkit/linux_volume_catcher_pa_syms.inc
 mode change 100644 => 100755 indra/media_plugins/webkit/linux_volume_catcher_paglib_syms.inc
 mode change 100644 => 100755 indra/media_plugins/webkit/mac_volume_catcher.cpp
 mode change 100644 => 100755 indra/media_plugins/webkit/media_plugin_webkit.cpp
 mode change 100644 => 100755 indra/media_plugins/webkit/volume_catcher.h
 mode change 100644 => 100755 indra/media_plugins/webkit/windows_volume_catcher.cpp
 mode change 100644 => 100755 indra/media_plugins/winmmshim/CMakeLists.txt
 mode change 100644 => 100755 indra/media_plugins/winmmshim/forwarding_api.cpp
 mode change 100644 => 100755 indra/media_plugins/winmmshim/forwarding_api.h
 mode change 100644 => 100755 indra/media_plugins/winmmshim/winmm.def
 mode change 100644 => 100755 indra/media_plugins/winmmshim/winmm_shim.cpp
 mode change 100644 => 100755 indra/newview/CMakeLists.txt
 mode change 100644 => 100755 indra/newview/English.lproj/InfoPlist.strings
 mode change 100644 => 100755 indra/newview/English.lproj/language.txt
 mode change 100644 => 100755 indra/newview/German.lproj/language.txt
 mode change 100644 => 100755 indra/newview/Info-SecondLife.plist
 mode change 100644 => 100755 indra/newview/Info-SecondLifeVorbis.plist
 mode change 100644 => 100755 indra/newview/Japanese.lproj/language.txt
 mode change 100644 => 100755 indra/newview/Korean.lproj/language.txt
 mode change 100644 => 100755 indra/newview/SecondLife.nib/classes.nib
 mode change 100644 => 100755 indra/newview/SecondLife.nib/info.nib
 mode change 100644 => 100755 indra/newview/SecondLife.nib/objects.xib
 mode change 100644 => 100755 indra/newview/VertexCache.h
 mode change 100644 => 100755 indra/newview/ViewerInstall.cmake
 mode change 100644 => 100755 indra/newview/VorbisFramework.h
 mode change 100644 => 100755 indra/newview/app_settings/CA.pem
 mode change 100644 => 100755 indra/newview/app_settings/anim.ini
 mode change 100644 => 100755 indra/newview/app_settings/autoreplace.xml
 mode change 100644 => 100755 indra/newview/app_settings/cmd_line.xml
 mode change 100644 => 100755 indra/newview/app_settings/commands.xml
 mode change 100644 => 100755 indra/newview/app_settings/foldertypes.xml
 mode change 100644 => 100755 indra/newview/app_settings/grass.xml
 mode change 100644 => 100755 indra/newview/app_settings/high_graphics.xml
 mode change 100644 => 100755 indra/newview/app_settings/ignorable_dialogs.xml
 mode change 100644 => 100755 indra/newview/app_settings/keys.xml
 mode change 100644 => 100755 indra/newview/app_settings/keywords.ini
 mode change 100644 => 100755 indra/newview/app_settings/lindenlab.pem
 mode change 100644 => 100755 indra/newview/app_settings/llsd.xsd
 mode change 100644 => 100755 indra/newview/app_settings/logcontrol.xml
 mode change 100644 => 100755 indra/newview/app_settings/low_graphics.xml
 mode change 100644 => 100755 indra/newview/app_settings/mid_graphics.xml
 mode change 100644 => 100755 indra/newview/app_settings/settings.xml
 mode change 100644 => 100755 indra/newview/app_settings/settings_crash_behavior.xml
 mode change 100644 => 100755 indra/newview/app_settings/settings_files.xml
 mode change 100644 => 100755 indra/newview/app_settings/settings_minimal.xml
 mode change 100644 => 100755 indra/newview/app_settings/settings_per_account.xml
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/avatar/avatarF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/avatar/avatarSkinV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/avatar/avatarV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/avatar/eyeballF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/avatar/eyeballV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/avatar/pickAvatarF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/avatar/pickAvatarV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/alphaNonIndexedF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/alphaNonIndexedNoColorF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/alphaSkinnedV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/attachmentShadowF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/attachmentShadowV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/avatarAlphaNoColorV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/avatarAlphaV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/avatarEyesV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/avatarF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/avatarShadowF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/avatarShadowV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/avatarV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/blurLightF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/blurLightV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/bumpF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/bumpSkinnedV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/bumpV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/cloudsF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/cloudsV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/cofF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/diffuseAlphaMaskF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/diffuseAlphaMaskIndexedF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/diffuseAlphaMaskNoColorF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/diffuseF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/diffuseIndexedF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/diffuseNoColorV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/diffuseSkinnedV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/diffuseV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/dofCombineF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/emissiveF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/emissiveV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/fullbrightV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/fxaaF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/giF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/impostorF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/impostorV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/luminanceF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/luminanceV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/multiPointLightV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/normgenF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/normgenV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/pointLightV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/postDeferredNoTCV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/postDeferredV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/postgiF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/shadowAlphaMaskF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/shadowAlphaMaskV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/shadowCubeV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/shadowF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/shadowV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/skyF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/skyV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/softenLightV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/starsF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/starsV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/sunLightF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/sunLightNoFragCoordV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/sunLightSSAOF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/sunLightV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/terrainF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/terrainV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/treeF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/treeShadowF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/treeShadowV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/treeV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/waterF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/deferred/waterV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/effects/glowExtractF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/effects/glowExtractV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/effects/glowF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/effects/glowV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/environment/terrainF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/environment/terrainV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/environment/terrainWaterF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/environment/underWaterF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/environment/waterF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/environment/waterFogF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/environment/waterV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/interface/alphamaskF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/interface/alphamaskV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/interface/clipF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/interface/clipV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/interface/customalphaF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/interface/customalphaV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/interface/debugF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/interface/debugV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/interface/glowcombineF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/interface/glowcombineFXAAF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/interface/glowcombineFXAAV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/interface/glowcombineV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/interface/highlightF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/interface/highlightV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/interface/occlusionCubeV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/interface/occlusionF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/interface/occlusionV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/interface/onetexturenocolorF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/interface/onetexturenocolorV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/interface/pathfindingF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/interface/pathfindingNoNormalV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/interface/pathfindingV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/interface/solidcolorF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/interface/solidcolorV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/interface/splattexturerectF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/interface/splattexturerectV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/interface/twotextureaddF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/interface/twotextureaddV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/interface/uiF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/interface/uiV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/lighting/lightAlphaMaskF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/lighting/lightAlphaMaskNonIndexedF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/lighting/lightF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/lighting/lightFullbrightAlphaMaskF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/lighting/lightFullbrightF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/lighting/lightFullbrightNonIndexedAlphaMaskF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/lighting/lightFullbrightNonIndexedF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyNonIndexedF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyWaterF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyWaterNonIndexedF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterAlphaMaskF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterNonIndexedAlphaMaskF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterNonIndexedF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/lighting/lightFuncSpecularV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/lighting/lightFuncV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/lighting/lightNonIndexedF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/lighting/lightShinyF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/lighting/lightShinyNonIndexedF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/lighting/lightShinyWaterF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/lighting/lightShinyWaterNonIndexedF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/lighting/lightSpecularV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/lighting/lightV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/lighting/lightWaterAlphaMaskF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/lighting/lightWaterAlphaMaskNonIndexedF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/lighting/lightWaterF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/lighting/lightWaterNonIndexedF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/lighting/sumLightsSpecularV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/lighting/sumLightsV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/objects/bumpF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/objects/bumpV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/objects/emissiveSkinnedV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/objects/emissiveV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/objects/fullbrightF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/objects/fullbrightNoColorV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/objects/fullbrightShinyF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/objects/fullbrightShinySkinnedV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/objects/fullbrightShinyV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/objects/fullbrightShinyWaterF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/objects/fullbrightSkinnedV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/objects/fullbrightV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/objects/fullbrightWaterF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/objects/impostorF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/objects/impostorV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/objects/indexedTextureF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/objects/indexedTextureV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/objects/nonindexedTextureV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/objects/previewF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/objects/previewV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/objects/shinyF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/objects/shinySimpleSkinnedV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/objects/shinyV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/objects/shinyWaterF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/objects/simpleF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/objects/simpleNoColorV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/objects/simpleNonIndexedV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/objects/simpleSkinnedV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/objects/simpleTexGenV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/objects/simpleV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/objects/simpleWaterF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/objects/treeV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/transform/binormalV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/transform/colorV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/transform/normalV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/transform/positionV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/transform/texcoordV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/windlight/atmosphericsF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/windlight/atmosphericsHelpersV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/windlight/atmosphericsV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsWaterF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsWaterV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/windlight/gammaF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class1/windlight/transportF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class2/avatar/eyeballV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedNoColorF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class2/deferred/alphaSkinnedV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class2/deferred/avatarAlphaV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class2/deferred/softenLightV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class2/deferred/sunLightV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class2/lighting/sumLightsSpecularV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class2/lighting/sumLightsV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class2/windlight/atmosphericsF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class2/windlight/atmosphericsHelpersV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class2/windlight/atmosphericsV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsWaterF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsWaterV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class2/windlight/cloudsF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class2/windlight/cloudsV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class2/windlight/gammaF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class2/windlight/skyF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class2/windlight/skyV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class2/windlight/transportF.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class3/avatar/avatarV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class3/lighting/sumLightsSpecularV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/class3/lighting/sumLightsV.glsl
 mode change 100644 => 100755 indra/newview/app_settings/shaders/shader_hierarchy.txt
 mode change 100644 => 100755 indra/newview/app_settings/static_data.db2
 mode change 100644 => 100755 indra/newview/app_settings/static_index.db2
 mode change 100644 => 100755 indra/newview/app_settings/std_bump.ini
 mode change 100644 => 100755 indra/newview/app_settings/toolbars.xml
 mode change 100644 => 100755 indra/newview/app_settings/trees.xml
 mode change 100644 => 100755 indra/newview/app_settings/ultra_graphics.xml
 mode change 100644 => 100755 indra/newview/app_settings/viewerart.xml
 mode change 100644 => 100755 indra/newview/app_settings/windlight/clouds2.tga
 mode change 100644 => 100755 indra/newview/app_settings/windlight/days/Colder%20Tones.xml
 mode change 100644 => 100755 indra/newview/app_settings/windlight/days/Default.xml
 mode change 100644 => 100755 indra/newview/app_settings/windlight/days/Dynamic%20Richness.xml
 mode change 100644 => 100755 indra/newview/app_settings/windlight/days/Pirate%27s%20Dream.xml
 mode change 100644 => 100755 indra/newview/app_settings/windlight/days/Psycho%20Strobe%21.xml
 mode change 100644 => 100755 indra/newview/app_settings/windlight/days/Tropicalia.xml
 mode change 100644 => 100755 indra/newview/app_settings/windlight/days/Weird-O.xml
 mode change 100644 => 100755 indra/newview/app_settings/windlight/postprocesseffects.xml
 mode change 100644 => 100755 indra/newview/app_settings/windlight/skies/A%2D12AM.xml
 mode change 100644 => 100755 indra/newview/app_settings/windlight/skies/A%2D12PM.xml
 mode change 100644 => 100755 indra/newview/app_settings/windlight/skies/A%2D3AM.xml
 mode change 100644 => 100755 indra/newview/app_settings/windlight/skies/A%2D3PM.xml
 mode change 100644 => 100755 indra/newview/app_settings/windlight/skies/A%2D6AM.xml
 mode change 100644 => 100755 indra/newview/app_settings/windlight/skies/A%2D6PM.xml
 mode change 100644 => 100755 indra/newview/app_settings/windlight/skies/A%2D9AM.xml
 mode change 100644 => 100755 indra/newview/app_settings/windlight/skies/A%2D9PM.xml
 mode change 100644 => 100755 indra/newview/app_settings/windlight/skies/Barcelona.xml
 mode change 100644 => 100755 indra/newview/app_settings/windlight/skies/Blizzard.xml
 mode change 100644 => 100755 indra/newview/app_settings/windlight/skies/Blue%20Midday.xml
 mode change 100644 => 100755 indra/newview/app_settings/windlight/skies/Coastal%20Afternoon.xml
 mode change 100644 => 100755 indra/newview/app_settings/windlight/skies/Coastal%20Sunset.xml
 mode change 100644 => 100755 indra/newview/app_settings/windlight/skies/Default.xml
 mode change 100644 => 100755 indra/newview/app_settings/windlight/skies/Desert%20Sunset.xml
 mode change 100644 => 100755 indra/newview/app_settings/windlight/skies/Fine%20Day.xml
 mode change 100644 => 100755 indra/newview/app_settings/windlight/skies/Fluffy%20Big%20Clouds.xml
 mode change 100644 => 100755 indra/newview/app_settings/windlight/skies/Foggy.xml
 mode change 100644 => 100755 indra/newview/app_settings/windlight/skies/Funky%20Funky%20Funky.xml
 mode change 100644 => 100755 indra/newview/app_settings/windlight/skies/Funky%20Funky.xml
 mode change 100644 => 100755 indra/newview/app_settings/windlight/skies/Gelatto.xml
 mode change 100644 => 100755 indra/newview/app_settings/windlight/skies/Ghost.xml
 mode change 100644 => 100755 indra/newview/app_settings/windlight/skies/Incongruent%20Truths.xml
 mode change 100644 => 100755 indra/newview/app_settings/windlight/skies/Midday%201.xml
 mode change 100644 => 100755 indra/newview/app_settings/windlight/skies/Midday%202.xml
 mode change 100644 => 100755 indra/newview/app_settings/windlight/skies/Midday%203.xml
 mode change 100644 => 100755 indra/newview/app_settings/windlight/skies/Midday%204.xml
 mode change 100644 => 100755 indra/newview/app_settings/windlight/skies/Midday.xml
 mode change 100644 => 100755 indra/newview/app_settings/windlight/skies/Midnight.xml
 mode change 100644 => 100755 indra/newview/app_settings/windlight/skies/Night.xml
 mode change 100644 => 100755 indra/newview/app_settings/windlight/skies/Pirate.xml
 mode change 100644 => 100755 indra/newview/app_settings/windlight/skies/Purple.xml
 mode change 100644 => 100755 indra/newview/app_settings/windlight/skies/Sailor%27s%20Delight.xml
 mode change 100644 => 100755 indra/newview/app_settings/windlight/skies/Sheer%20Surreality.xml
 mode change 100644 => 100755 indra/newview/app_settings/windlight/skies/Sunrise.xml
 mode change 100644 => 100755 indra/newview/app_settings/windlight/skies/Sunset.xml
 mode change 100644 => 100755 indra/newview/app_settings/windlight/water/Default.xml
 mode change 100644 => 100755 indra/newview/app_settings/windlight/water/Glassy.xml
 mode change 100644 => 100755 indra/newview/app_settings/windlight/water/Murky.xml
 mode change 100644 => 100755 indra/newview/app_settings/windlight/water/Pond.xml
 mode change 100644 => 100755 indra/newview/app_settings/windlight/water/SNAKE%21%21%21.xml
 mode change 100644 => 100755 indra/newview/app_settings/windlight/water/Second%20Plague.xml
 mode change 100644 => 100755 indra/newview/app_settings/windlight/water/Valdez.xml
 mode change 100644 => 100755 indra/newview/build_win32_appConfig.py
 mode change 100644 => 100755 indra/newview/character/attentions.xml
 mode change 100644 => 100755 indra/newview/character/attentionsN.xml
 mode change 100644 => 100755 indra/newview/character/avatar_eye.llm
 mode change 100644 => 100755 indra/newview/character/avatar_eye_1.llm
 mode change 100644 => 100755 indra/newview/character/avatar_eyelashes.llm
 mode change 100644 => 100755 indra/newview/character/avatar_hair.llm
 mode change 100644 => 100755 indra/newview/character/avatar_hair_1.llm
 mode change 100644 => 100755 indra/newview/character/avatar_hair_2.llm
 mode change 100644 => 100755 indra/newview/character/avatar_hair_3.llm
 mode change 100644 => 100755 indra/newview/character/avatar_hair_4.llm
 mode change 100644 => 100755 indra/newview/character/avatar_hair_5.llm
 mode change 100644 => 100755 indra/newview/character/avatar_head.llm
 mode change 100644 => 100755 indra/newview/character/avatar_head_1.llm
 mode change 100644 => 100755 indra/newview/character/avatar_head_2.llm
 mode change 100644 => 100755 indra/newview/character/avatar_head_3.llm
 mode change 100644 => 100755 indra/newview/character/avatar_head_4.llm
 mode change 100644 => 100755 indra/newview/character/avatar_lad.xml
 mode change 100644 => 100755 indra/newview/character/avatar_lower_body.llm
 mode change 100644 => 100755 indra/newview/character/avatar_lower_body_1.llm
 mode change 100644 => 100755 indra/newview/character/avatar_lower_body_2.llm
 mode change 100644 => 100755 indra/newview/character/avatar_lower_body_3.llm
 mode change 100644 => 100755 indra/newview/character/avatar_lower_body_4.llm
 mode change 100644 => 100755 indra/newview/character/avatar_skeleton.xml
 mode change 100644 => 100755 indra/newview/character/avatar_skirt.llm
 mode change 100644 => 100755 indra/newview/character/avatar_skirt_1.llm
 mode change 100644 => 100755 indra/newview/character/avatar_skirt_2.llm
 mode change 100644 => 100755 indra/newview/character/avatar_skirt_3.llm
 mode change 100644 => 100755 indra/newview/character/avatar_skirt_4.llm
 mode change 100644 => 100755 indra/newview/character/avatar_upper_body.llm
 mode change 100644 => 100755 indra/newview/character/avatar_upper_body_1.llm
 mode change 100644 => 100755 indra/newview/character/avatar_upper_body_2.llm
 mode change 100644 => 100755 indra/newview/character/avatar_upper_body_3.llm
 mode change 100644 => 100755 indra/newview/character/avatar_upper_body_4.llm
 mode change 100644 => 100755 indra/newview/character/blush_alpha.tga
 mode change 100644 => 100755 indra/newview/character/body_skingrain.tga
 mode change 100644 => 100755 indra/newview/character/bodyfreckles_alpha.tga
 mode change 100644 => 100755 indra/newview/character/bump_face_wrinkles.tga
 mode change 100644 => 100755 indra/newview/character/bump_head_base.tga
 mode change 100644 => 100755 indra/newview/character/bump_lowerbody_base.tga
 mode change 100644 => 100755 indra/newview/character/bump_pants_wrinkles.tga
 mode change 100644 => 100755 indra/newview/character/bump_shirt_wrinkles.tga
 mode change 100644 => 100755 indra/newview/character/bump_upperbody_base.tga
 mode change 100644 => 100755 indra/newview/character/checkerboard.tga
 mode change 100644 => 100755 indra/newview/character/eyebrows_alpha.tga
 mode change 100644 => 100755 indra/newview/character/eyeliner_alpha.tga
 mode change 100644 => 100755 indra/newview/character/eyeshadow_inner_alpha.tga
 mode change 100644 => 100755 indra/newview/character/eyeshadow_outer_alpha.tga
 mode change 100644 => 100755 indra/newview/character/eyewhite.tga
 mode change 100644 => 100755 indra/newview/character/facehair_chincurtains_alpha.tga
 mode change 100644 => 100755 indra/newview/character/facehair_moustache_alpha.tga
 mode change 100644 => 100755 indra/newview/character/facehair_sideburns_alpha.tga
 mode change 100644 => 100755 indra/newview/character/facehair_soulpatch_alpha.tga
 mode change 100644 => 100755 indra/newview/character/freckles_alpha.tga
 mode change 100644 => 100755 indra/newview/character/genepool.xml
 mode change 100644 => 100755 indra/newview/character/glove_length_alpha.tga
 mode change 100644 => 100755 indra/newview/character/gloves_fingers_alpha.tga
 mode change 100644 => 100755 indra/newview/character/head_alpha.tga
 mode change 100644 => 100755 indra/newview/character/head_color.tga
 mode change 100644 => 100755 indra/newview/character/head_hair.tga
 mode change 100644 => 100755 indra/newview/character/head_highlights_alpha.tga
 mode change 100644 => 100755 indra/newview/character/head_shading_alpha.tga
 mode change 100644 => 100755 indra/newview/character/head_skingrain.tga
 mode change 100644 => 100755 indra/newview/character/jacket_length_lower_alpha.tga
 mode change 100644 => 100755 indra/newview/character/jacket_length_upper_alpha.tga
 mode change 100644 => 100755 indra/newview/character/jacket_open_lower_alpha.tga
 mode change 100644 => 100755 indra/newview/character/jacket_open_upper_alpha.tga
 mode change 100644 => 100755 indra/newview/character/lipgloss_alpha.tga
 mode change 100644 => 100755 indra/newview/character/lips_mask.tga
 mode change 100644 => 100755 indra/newview/character/lipstick_alpha.tga
 mode change 100644 => 100755 indra/newview/character/lowerbody_color.tga
 mode change 100644 => 100755 indra/newview/character/lowerbody_highlights_alpha.tga
 mode change 100644 => 100755 indra/newview/character/lowerbody_shading_alpha.tga
 mode change 100644 => 100755 indra/newview/character/nailpolish_alpha.tga
 mode change 100644 => 100755 indra/newview/character/pants_length_alpha.tga
 mode change 100644 => 100755 indra/newview/character/pants_waist_alpha.tga
 mode change 100644 => 100755 indra/newview/character/rosyface_alpha.tga
 mode change 100644 => 100755 indra/newview/character/rouge_alpha.tga
 mode change 100644 => 100755 indra/newview/character/shirt_bottom_alpha.tga
 mode change 100644 => 100755 indra/newview/character/shirt_collar_alpha.tga
 mode change 100644 => 100755 indra/newview/character/shirt_collar_back_alpha.tga
 mode change 100644 => 100755 indra/newview/character/shirt_sleeve_alpha.tga
 mode change 100644 => 100755 indra/newview/character/shoe_height_alpha.tga
 mode change 100644 => 100755 indra/newview/character/skirt_length_alpha.tga
 mode change 100644 => 100755 indra/newview/character/skirt_slit_back_alpha.tga
 mode change 100644 => 100755 indra/newview/character/skirt_slit_front_alpha.tga
 mode change 100644 => 100755 indra/newview/character/skirt_slit_left_alpha.tga
 mode change 100644 => 100755 indra/newview/character/skirt_slit_right_alpha.tga
 mode change 100644 => 100755 indra/newview/character/underpants_trial_female.tga
 mode change 100644 => 100755 indra/newview/character/underpants_trial_male.tga
 mode change 100644 => 100755 indra/newview/character/undershirt_trial_female.tga
 mode change 100644 => 100755 indra/newview/character/upperbody_color.tga
 mode change 100644 => 100755 indra/newview/character/upperbody_highlights_alpha.tga
 mode change 100644 => 100755 indra/newview/character/upperbody_shading_alpha.tga
 mode change 100644 => 100755 indra/newview/character/upperbodyfreckles_alpha.tga
 mode change 100644 => 100755 indra/newview/cursors_mac/UI_CURSOR_ARROW.tif
 mode change 100644 => 100755 indra/newview/cursors_mac/UI_CURSOR_ARROWDRAG.tif
 mode change 100644 => 100755 indra/newview/cursors_mac/UI_CURSOR_ARROWLOCKED.tif
 mode change 100644 => 100755 indra/newview/cursors_mac/UI_CURSOR_GRABLOCKED.tif
 mode change 100644 => 100755 indra/newview/cursors_mac/UI_CURSOR_NO.tif
 mode change 100644 => 100755 indra/newview/cursors_mac/UI_CURSOR_NOLOCKED.tif
 mode change 100644 => 100755 indra/newview/cursors_mac/UI_CURSOR_PATHFINDING.tif
 mode change 100644 => 100755 indra/newview/cursors_mac/UI_CURSOR_PATHFINDING_END.tif
 mode change 100644 => 100755 indra/newview/cursors_mac/UI_CURSOR_PATHFINDING_END_ADD.tif
 mode change 100644 => 100755 indra/newview/cursors_mac/UI_CURSOR_PATHFINDING_START.tif
 mode change 100644 => 100755 indra/newview/cursors_mac/UI_CURSOR_PATHFINDING_START_ADD.tif
 mode change 100644 => 100755 indra/newview/cursors_mac/UI_CURSOR_SIZENESW.tif
 mode change 100644 => 100755 indra/newview/cursors_mac/UI_CURSOR_SIZENS.tif
 mode change 100644 => 100755 indra/newview/cursors_mac/UI_CURSOR_SIZENWSE.tif
 mode change 100644 => 100755 indra/newview/cursors_mac/UI_CURSOR_SIZEWE.tif
 mode change 100644 => 100755 indra/newview/cursors_mac/UI_CURSOR_TOOLBUY.tif
 mode change 100644 => 100755 indra/newview/cursors_mac/UI_CURSOR_TOOLCAMERA.tif
 mode change 100644 => 100755 indra/newview/cursors_mac/UI_CURSOR_TOOLCREATE.tif
 mode change 100644 => 100755 indra/newview/cursors_mac/UI_CURSOR_TOOLFOCUS.tif
 mode change 100644 => 100755 indra/newview/cursors_mac/UI_CURSOR_TOOLGRAB.tif
 mode change 100644 => 100755 indra/newview/cursors_mac/UI_CURSOR_TOOLLAND.tif
 mode change 100644 => 100755 indra/newview/cursors_mac/UI_CURSOR_TOOLMEDIAOPEN.tif
 mode change 100644 => 100755 indra/newview/cursors_mac/UI_CURSOR_TOOLOPEN.tif
 mode change 100644 => 100755 indra/newview/cursors_mac/UI_CURSOR_TOOLPAN.tif
 mode change 100644 => 100755 indra/newview/cursors_mac/UI_CURSOR_TOOLPAUSE.tif
 mode change 100644 => 100755 indra/newview/cursors_mac/UI_CURSOR_TOOLPICKOBJECT3.tif
 mode change 100644 => 100755 indra/newview/cursors_mac/UI_CURSOR_TOOLPLAY.tif
 mode change 100644 => 100755 indra/newview/cursors_mac/UI_CURSOR_TOOLROTATE.tif
 mode change 100644 => 100755 indra/newview/cursors_mac/UI_CURSOR_TOOLSCALE.tif
 mode change 100644 => 100755 indra/newview/cursors_mac/UI_CURSOR_TOOLSIT.tif
 mode change 100644 => 100755 indra/newview/cursors_mac/UI_CURSOR_TOOLTRANSLATE.tif
 mode change 100644 => 100755 indra/newview/cursors_mac/UI_CURSOR_TOOLZOOMIN.tif
 mode change 100644 => 100755 indra/newview/cursors_mac/UI_CURSOR_WORKING.tif
 mode change 100644 => 100755 indra/newview/da.lproj/language.txt
 mode change 100644 => 100755 indra/newview/es.lproj/language.txt
 mode change 100644 => 100755 indra/newview/featuretable.txt
 mode change 100644 => 100755 indra/newview/featuretable_linux.txt
 mode change 100644 => 100755 indra/newview/featuretable_mac.txt
 mode change 100644 => 100755 indra/newview/featuretable_solaris.txt
 mode change 100644 => 100755 indra/newview/featuretable_xp.txt
 mode change 100644 => 100755 indra/newview/fmod_hidden_symbols.exp
 mode change 100644 => 100755 indra/newview/fmodwrapper.cpp
 mode change 100644 => 100755 indra/newview/fonts/DejaVu-license.txt
 mode change 100644 => 100755 indra/newview/fonts/DejaVuSans-Bold.ttf
 mode change 100644 => 100755 indra/newview/fonts/DejaVuSans-BoldOblique.ttf
 mode change 100644 => 100755 indra/newview/fonts/DejaVuSans-Oblique.ttf
 mode change 100644 => 100755 indra/newview/fonts/DejaVuSans.ttf
 mode change 100644 => 100755 indra/newview/fonts/DejaVuSansMono.ttf
 mode change 100644 => 100755 indra/newview/fr.lproj/language.txt
 mode change 100644 => 100755 indra/newview/generate_breakpad_symbols.py
 mode change 100644 => 100755 indra/newview/gpu_table.txt
 mode change 100644 => 100755 indra/newview/groupchatlistener.cpp
 mode change 100644 => 100755 indra/newview/groupchatlistener.h
 mode change 100644 => 100755 indra/newview/hu.lproj/language.txt
 mode change 100644 => 100755 indra/newview/icons/beta/secondlife.icns
 mode change 100644 => 100755 indra/newview/icons/beta/secondlife.ico
 mode change 100644 => 100755 indra/newview/icons/beta/secondlife_128.png
 mode change 100644 => 100755 indra/newview/icons/beta/secondlife_16.png
 mode change 100644 => 100755 indra/newview/icons/beta/secondlife_256.BMP
 mode change 100644 => 100755 indra/newview/icons/beta/secondlife_256.png
 mode change 100644 => 100755 indra/newview/icons/beta/secondlife_32.png
 mode change 100644 => 100755 indra/newview/icons/beta/secondlife_48.png
 mode change 100644 => 100755 indra/newview/icons/beta/secondlife_512.png
 mode change 100644 => 100755 indra/newview/icons/development/secondlife.icns
 mode change 100644 => 100755 indra/newview/icons/development/secondlife.ico
 mode change 100644 => 100755 indra/newview/icons/development/secondlife_128.png
 mode change 100644 => 100755 indra/newview/icons/development/secondlife_16.png
 mode change 100644 => 100755 indra/newview/icons/development/secondlife_256.BMP
 mode change 100644 => 100755 indra/newview/icons/development/secondlife_256.png
 mode change 100644 => 100755 indra/newview/icons/development/secondlife_32.png
 mode change 100644 => 100755 indra/newview/icons/development/secondlife_48.png
 mode change 100644 => 100755 indra/newview/icons/development/secondlife_512.png
 mode change 100644 => 100755 indra/newview/icons/project/secondlife.icns
 mode change 100644 => 100755 indra/newview/icons/project/secondlife.ico
 mode change 100644 => 100755 indra/newview/icons/project/secondlife_128.png
 mode change 100644 => 100755 indra/newview/icons/project/secondlife_16.png
 mode change 100644 => 100755 indra/newview/icons/project/secondlife_256.BMP
 mode change 100644 => 100755 indra/newview/icons/project/secondlife_256.png
 mode change 100644 => 100755 indra/newview/icons/project/secondlife_32.png
 mode change 100644 => 100755 indra/newview/icons/project/secondlife_48.png
 mode change 100644 => 100755 indra/newview/icons/project/secondlife_512.png
 mode change 100644 => 100755 indra/newview/icons/release/secondlife.icns
 mode change 100644 => 100755 indra/newview/icons/release/secondlife.ico
 mode change 100644 => 100755 indra/newview/icons/release/secondlife_128.png
 mode change 100644 => 100755 indra/newview/icons/release/secondlife_16.png
 mode change 100644 => 100755 indra/newview/icons/release/secondlife_256.BMP
 mode change 100644 => 100755 indra/newview/icons/release/secondlife_256.png
 mode change 100644 => 100755 indra/newview/icons/release/secondlife_32.png
 mode change 100644 => 100755 indra/newview/icons/release/secondlife_48.png
 mode change 100644 => 100755 indra/newview/icons/release/secondlife_512.png
 mode change 100644 => 100755 indra/newview/icons/test/secondlife.icns
 mode change 100644 => 100755 indra/newview/icons/test/secondlife.ico
 mode change 100644 => 100755 indra/newview/icons/test/secondlife_128.png
 mode change 100644 => 100755 indra/newview/icons/test/secondlife_16.png
 mode change 100644 => 100755 indra/newview/icons/test/secondlife_256.BMP
 mode change 100644 => 100755 indra/newview/icons/test/secondlife_256.png
 mode change 100644 => 100755 indra/newview/icons/test/secondlife_32.png
 mode change 100644 => 100755 indra/newview/icons/test/secondlife_48.png
 mode change 100644 => 100755 indra/newview/icons/test/secondlife_512.png
 mode change 100644 => 100755 indra/newview/installers/darwin/dmg-cleanup.applescript
 mode change 100644 => 100755 indra/newview/installers/darwin/fix_application_icon_position.sh
 mode change 100644 => 100755 indra/newview/installers/darwin/release-dmg/Applications-alias.r
 mode change 100644 => 100755 indra/newview/installers/darwin/release-dmg/_DS_Store
 mode change 100644 => 100755 indra/newview/installers/darwin/release-dmg/_VolumeIcon.icns
 mode change 100644 => 100755 indra/newview/installers/darwin/release-dmg/background.jpg
 mode change 100644 => 100755 indra/newview/installers/windows/FILES_ARE_UNICODE_UTF-16LE.txt
 mode change 100644 => 100755 indra/newview/installers/windows/install_icon.BMP
 mode change 100644 => 100755 indra/newview/installers/windows/install_icon.ico
 mode change 100644 => 100755 indra/newview/installers/windows/installer_template.nsi
 mode change 100644 => 100755 indra/newview/installers/windows/lang_da.nsi
 mode change 100644 => 100755 indra/newview/installers/windows/lang_de.nsi
 mode change 100644 => 100755 indra/newview/installers/windows/lang_en-us.nsi
 mode change 100644 => 100755 indra/newview/installers/windows/lang_es.nsi
 mode change 100644 => 100755 indra/newview/installers/windows/lang_fr.nsi
 mode change 100644 => 100755 indra/newview/installers/windows/lang_it.nsi
 mode change 100644 => 100755 indra/newview/installers/windows/lang_ja.nsi
 mode change 100644 => 100755 indra/newview/installers/windows/lang_pl.nsi
 mode change 100644 => 100755 indra/newview/installers/windows/lang_pt-br.nsi
 mode change 100644 => 100755 indra/newview/installers/windows/lang_ru.nsi
 mode change 100644 => 100755 indra/newview/installers/windows/lang_tr.nsi
 mode change 100644 => 100755 indra/newview/installers/windows/lang_zh.nsi
 mode change 100644 => 100755 indra/newview/installers/windows/language_menu.nsi
 mode change 100644 => 100755 indra/newview/installers/windows/uninstall_icon.BMP
 mode change 100644 => 100755 indra/newview/installers/windows/uninstall_icon.ico
 mode change 100644 => 100755 indra/newview/it.lproj/language.txt
 mode change 100644 => 100755 indra/newview/licenses-linux.txt
 mode change 100644 => 100755 indra/newview/licenses-mac.txt
 mode change 100644 => 100755 indra/newview/licenses-solaris.txt
 mode change 100644 => 100755 indra/newview/licenses-win32.txt
 mode change 100644 => 100755 indra/newview/linux_tools/client-readme-joystick.txt
 mode change 100644 => 100755 indra/newview/linux_tools/client-readme-voice.txt
 mode change 100644 => 100755 indra/newview/linux_tools/client-readme.txt
 mode change 100644 => 100755 indra/newview/llaccountingcostmanager.cpp
 mode change 100644 => 100755 indra/newview/llaccountingcostmanager.h
 mode change 100644 => 100755 indra/newview/llagent.h
 mode change 100644 => 100755 indra/newview/llagentaccess.cpp
 mode change 100644 => 100755 indra/newview/llagentaccess.h
 mode change 100644 => 100755 indra/newview/llagentcamera.cpp
 mode change 100644 => 100755 indra/newview/llagentcamera.h
 mode change 100644 => 100755 indra/newview/llagentdata.cpp
 mode change 100644 => 100755 indra/newview/llagentdata.h
 mode change 100644 => 100755 indra/newview/llagentlanguage.cpp
 mode change 100644 => 100755 indra/newview/llagentlanguage.h
 mode change 100644 => 100755 indra/newview/llagentlistener.cpp
 mode change 100644 => 100755 indra/newview/llagentlistener.h
 mode change 100644 => 100755 indra/newview/llagentpicksinfo.cpp
 mode change 100644 => 100755 indra/newview/llagentpicksinfo.h
 mode change 100644 => 100755 indra/newview/llagentpilot.cpp
 mode change 100644 => 100755 indra/newview/llagentpilot.h
 mode change 100644 => 100755 indra/newview/llagentui.cpp
 mode change 100644 => 100755 indra/newview/llagentui.h
 mode change 100644 => 100755 indra/newview/llagentwearables.cpp
 mode change 100644 => 100755 indra/newview/llagentwearables.h
 mode change 100644 => 100755 indra/newview/llagentwearablesfetch.cpp
 mode change 100644 => 100755 indra/newview/llagentwearablesfetch.h
 mode change 100644 => 100755 indra/newview/llanimstatelabels.cpp
 mode change 100644 => 100755 indra/newview/llanimstatelabels.h
 mode change 100644 => 100755 indra/newview/llappcorehttp.cpp
 mode change 100644 => 100755 indra/newview/llappcorehttp.h
 mode change 100644 => 100755 indra/newview/llappearance.h
 mode change 100644 => 100755 indra/newview/llappearancemgr.cpp
 mode change 100644 => 100755 indra/newview/llappearancemgr.h
 mode change 100644 => 100755 indra/newview/llappviewer.cpp
 mode change 100644 => 100755 indra/newview/llappviewer.h
 mode change 100644 => 100755 indra/newview/llappviewerlinux.cpp
 mode change 100644 => 100755 indra/newview/llappviewerlinux.h
 mode change 100644 => 100755 indra/newview/llappviewerlinux_api.h
 mode change 100644 => 100755 indra/newview/llappviewerlinux_api.xml
 mode change 100644 => 100755 indra/newview/llappviewerlinux_api_dbus.cpp
 mode change 100644 => 100755 indra/newview/llappviewerlinux_api_dbus.h
 mode change 100644 => 100755 indra/newview/llappviewerlinux_api_dbus_syms_raw.inc
 mode change 100644 => 100755 indra/newview/llappviewerlistener.cpp
 mode change 100644 => 100755 indra/newview/llappviewerlistener.h
 mode change 100644 => 100755 indra/newview/llappviewermacosx.cpp
 mode change 100644 => 100755 indra/newview/llappviewermacosx.h
 mode change 100644 => 100755 indra/newview/llappviewerwin32.cpp
 mode change 100644 => 100755 indra/newview/llappviewerwin32.h
 mode change 100644 => 100755 indra/newview/llassetuploadqueue.cpp
 mode change 100644 => 100755 indra/newview/llassetuploadqueue.h
 mode change 100644 => 100755 indra/newview/llassetuploadresponders.cpp
 mode change 100644 => 100755 indra/newview/llassetuploadresponders.h
 mode change 100644 => 100755 indra/newview/llattachmentsmgr.cpp
 mode change 100644 => 100755 indra/newview/llattachmentsmgr.h
 mode change 100644 => 100755 indra/newview/llaudiosourcevo.cpp
 mode change 100644 => 100755 indra/newview/llaudiosourcevo.h
 mode change 100644 => 100755 indra/newview/llautoreplace.cpp
 mode change 100644 => 100755 indra/newview/llautoreplace.h
 mode change 100644 => 100755 indra/newview/llavataractions.h
 mode change 100644 => 100755 indra/newview/llavatariconctrl.h
 mode change 100644 => 100755 indra/newview/llavatarlist.cpp
 mode change 100644 => 100755 indra/newview/llavatarlist.h
 mode change 100644 => 100755 indra/newview/llavatarlistitem.cpp
 mode change 100644 => 100755 indra/newview/llavatarlistitem.h
 mode change 100644 => 100755 indra/newview/llavatarpropertiesprocessor.cpp
 mode change 100644 => 100755 indra/newview/llavatarpropertiesprocessor.h
 mode change 100644 => 100755 indra/newview/llblockedlistitem.cpp
 mode change 100644 => 100755 indra/newview/llblockedlistitem.h
 mode change 100644 => 100755 indra/newview/llblocklist.cpp
 mode change 100644 => 100755 indra/newview/llblocklist.h
 mode change 100644 => 100755 indra/newview/llbox.cpp
 mode change 100644 => 100755 indra/newview/llbox.h
 mode change 100644 => 100755 indra/newview/llbreadcrumbview.cpp
 mode change 100644 => 100755 indra/newview/llbreadcrumbview.h
 mode change 100644 => 100755 indra/newview/llbreastmotion.cpp
 mode change 100644 => 100755 indra/newview/llbreastmotion.h
 mode change 100644 => 100755 indra/newview/llbrowsernotification.cpp
 mode change 100644 => 100755 indra/newview/llbuycurrencyhtml.cpp
 mode change 100644 => 100755 indra/newview/llbuycurrencyhtml.h
 mode change 100644 => 100755 indra/newview/llcallbacklist.cpp
 mode change 100644 => 100755 indra/newview/llcallbacklist.h
 mode change 100644 => 100755 indra/newview/llcallingcard.cpp
 mode change 100644 => 100755 indra/newview/llcallingcard.h
 mode change 100644 => 100755 indra/newview/llcapabilitylistener.cpp
 mode change 100644 => 100755 indra/newview/llcapabilitylistener.h
 mode change 100644 => 100755 indra/newview/llcapabilityprovider.h
 mode change 100644 => 100755 indra/newview/llcaphttpsender.cpp
 mode change 100644 => 100755 indra/newview/llcaphttpsender.h
 mode change 100644 => 100755 indra/newview/llchannelmanager.cpp
 mode change 100644 => 100755 indra/newview/llchannelmanager.h
 mode change 100644 => 100755 indra/newview/llchatbar.cpp
 mode change 100644 => 100755 indra/newview/llchatbar.h
 mode change 100644 => 100755 indra/newview/llchathistory.cpp
 mode change 100644 => 100755 indra/newview/llchathistory.h
 mode change 100644 => 100755 indra/newview/llchatitemscontainerctrl.cpp
 mode change 100644 => 100755 indra/newview/llchatitemscontainerctrl.h
 mode change 100644 => 100755 indra/newview/llchatmsgbox.cpp
 mode change 100644 => 100755 indra/newview/llchatmsgbox.h
 mode change 100644 => 100755 indra/newview/llchiclet.cpp
 mode change 100644 => 100755 indra/newview/llchiclet.h
 mode change 100644 => 100755 indra/newview/llchicletbar.cpp
 mode change 100644 => 100755 indra/newview/llchicletbar.h
 mode change 100644 => 100755 indra/newview/llclassifiedinfo.cpp
 mode change 100644 => 100755 indra/newview/llclassifiedinfo.h
 mode change 100644 => 100755 indra/newview/llclassifiedstatsresponder.cpp
 mode change 100644 => 100755 indra/newview/llclassifiedstatsresponder.h
 mode change 100644 => 100755 indra/newview/llcofwearables.cpp
 mode change 100644 => 100755 indra/newview/llcofwearables.h
 mode change 100644 => 100755 indra/newview/llcolorswatch.cpp
 mode change 100644 => 100755 indra/newview/llcolorswatch.h
 mode change 100644 => 100755 indra/newview/llcommanddispatcherlistener.cpp
 mode change 100644 => 100755 indra/newview/llcommanddispatcherlistener.h
 mode change 100644 => 100755 indra/newview/llcommandhandler.h
 mode change 100644 => 100755 indra/newview/llcommandlineparser.cpp
 mode change 100644 => 100755 indra/newview/llcommandlineparser.h
 mode change 100644 => 100755 indra/newview/llcommunicationchannel.cpp
 mode change 100644 => 100755 indra/newview/llcommunicationchannel.h
 mode change 100644 => 100755 indra/newview/llcompilequeue.cpp
 mode change 100644 => 100755 indra/newview/llcompilequeue.h
 mode change 100644 => 100755 indra/newview/llconfirmationmanager.cpp
 mode change 100644 => 100755 indra/newview/llconfirmationmanager.h
 mode change 100644 => 100755 indra/newview/llconversationlog.cpp
 mode change 100644 => 100755 indra/newview/llconversationlog.h
 mode change 100644 => 100755 indra/newview/llconversationloglist.cpp
 mode change 100644 => 100755 indra/newview/llconversationloglist.h
 mode change 100644 => 100755 indra/newview/llconversationloglistitem.cpp
 mode change 100644 => 100755 indra/newview/llconversationloglistitem.h
 mode change 100644 => 100755 indra/newview/llconversationmodel.cpp
 mode change 100644 => 100755 indra/newview/llcurrencyuimanager.cpp
 mode change 100644 => 100755 indra/newview/llcurrencyuimanager.h
 mode change 100644 => 100755 indra/newview/llcylinder.cpp
 mode change 100644 => 100755 indra/newview/llcylinder.h
 mode change 100644 => 100755 indra/newview/lldateutil.cpp
 mode change 100644 => 100755 indra/newview/lldateutil.h
 mode change 100644 => 100755 indra/newview/lldaycyclemanager.cpp
 mode change 100644 => 100755 indra/newview/lldaycyclemanager.h
 mode change 100644 => 100755 indra/newview/lldebugmessagebox.cpp
 mode change 100644 => 100755 indra/newview/lldebugmessagebox.h
 mode change 100644 => 100755 indra/newview/lldebugview.cpp
 mode change 100644 => 100755 indra/newview/lldebugview.h
 mode change 100644 => 100755 indra/newview/lldeferredsounds.cpp
 mode change 100644 => 100755 indra/newview/lldeferredsounds.h
 mode change 100644 => 100755 indra/newview/lldelayedgestureerror.cpp
 mode change 100644 => 100755 indra/newview/lldelayedgestureerror.h
 mode change 100644 => 100755 indra/newview/lldirpicker.cpp
 mode change 100644 => 100755 indra/newview/lldirpicker.h
 mode change 100644 => 100755 indra/newview/lldndbutton.cpp
 mode change 100644 => 100755 indra/newview/lldndbutton.h
 mode change 100644 => 100755 indra/newview/lldonotdisturbnotificationstorage.cpp
 mode change 100644 => 100755 indra/newview/lldonotdisturbnotificationstorage.h
 mode change 100644 => 100755 indra/newview/lldrawable.cpp
 mode change 100644 => 100755 indra/newview/lldrawable.h
 mode change 100644 => 100755 indra/newview/lldrawpool.cpp
 mode change 100644 => 100755 indra/newview/lldrawpool.h
 mode change 100644 => 100755 indra/newview/lldrawpoolalpha.cpp
 mode change 100644 => 100755 indra/newview/lldrawpoolalpha.h
 mode change 100644 => 100755 indra/newview/lldrawpoolavatar.cpp
 mode change 100644 => 100755 indra/newview/lldrawpoolavatar.h
 mode change 100644 => 100755 indra/newview/lldrawpoolbump.cpp
 mode change 100644 => 100755 indra/newview/lldrawpoolbump.h
 mode change 100644 => 100755 indra/newview/lldrawpoolground.cpp
 mode change 100644 => 100755 indra/newview/lldrawpoolground.h
 mode change 100644 => 100755 indra/newview/lldrawpoolsimple.cpp
 mode change 100644 => 100755 indra/newview/lldrawpoolsimple.h
 mode change 100644 => 100755 indra/newview/lldrawpoolsky.cpp
 mode change 100644 => 100755 indra/newview/lldrawpoolsky.h
 mode change 100644 => 100755 indra/newview/lldrawpoolterrain.cpp
 mode change 100644 => 100755 indra/newview/lldrawpoolterrain.h
 mode change 100644 => 100755 indra/newview/lldrawpooltree.cpp
 mode change 100644 => 100755 indra/newview/lldrawpooltree.h
 mode change 100644 => 100755 indra/newview/lldrawpoolwater.cpp
 mode change 100644 => 100755 indra/newview/lldrawpoolwater.h
 mode change 100644 => 100755 indra/newview/lldrawpoolwlsky.cpp
 mode change 100644 => 100755 indra/newview/lldrawpoolwlsky.h
 mode change 100644 => 100755 indra/newview/lldriverparam.cpp
 mode change 100644 => 100755 indra/newview/lldriverparam.h
 mode change 100644 => 100755 indra/newview/lldynamictexture.cpp
 mode change 100644 => 100755 indra/newview/lldynamictexture.h
 mode change 100644 => 100755 indra/newview/llemote.cpp
 mode change 100644 => 100755 indra/newview/llemote.h
 mode change 100644 => 100755 indra/newview/llenvmanager.cpp
 mode change 100644 => 100755 indra/newview/llenvmanager.h
 mode change 100644 => 100755 indra/newview/llestateinfomodel.cpp
 mode change 100644 => 100755 indra/newview/llestateinfomodel.h
 mode change 100644 => 100755 indra/newview/lleventnotifier.cpp
 mode change 100644 => 100755 indra/newview/lleventnotifier.h
 mode change 100644 => 100755 indra/newview/lleventpoll.cpp
 mode change 100644 => 100755 indra/newview/lleventpoll.h
 mode change 100644 => 100755 indra/newview/llexpandabletextbox.cpp
 mode change 100644 => 100755 indra/newview/llexpandabletextbox.h
 mode change 100644 => 100755 indra/newview/llexternaleditor.cpp
 mode change 100644 => 100755 indra/newview/llexternaleditor.h
 mode change 100644 => 100755 indra/newview/llface.cpp
 mode change 100644 => 100755 indra/newview/llface.h
 mode change 100644 => 100755 indra/newview/llface.inl
 mode change 100644 => 100755 indra/newview/llfasttimerview.cpp
 mode change 100644 => 100755 indra/newview/llfasttimerview.h
 mode change 100644 => 100755 indra/newview/llfavoritesbar.cpp
 mode change 100644 => 100755 indra/newview/llfavoritesbar.h
 mode change 100644 => 100755 indra/newview/llfeaturemanager.cpp
 mode change 100644 => 100755 indra/newview/llfeaturemanager.h
 mode change 100644 => 100755 indra/newview/llfilepicker.cpp
 mode change 100644 => 100755 indra/newview/llfilepicker.h
 mode change 100644 => 100755 indra/newview/llfilteredwearablelist.cpp
 mode change 100644 => 100755 indra/newview/llfilteredwearablelist.h
 mode change 100644 => 100755 indra/newview/llfirstuse.cpp
 mode change 100644 => 100755 indra/newview/llfirstuse.h
 mode change 100644 => 100755 indra/newview/llflexibleobject.cpp
 mode change 100644 => 100755 indra/newview/llflexibleobject.h
 mode change 100644 => 100755 indra/newview/llfloaterabout.cpp
 mode change 100644 => 100755 indra/newview/llfloaterabout.h
 mode change 100644 => 100755 indra/newview/llfloaterauction.cpp
 mode change 100644 => 100755 indra/newview/llfloaterauction.h
 mode change 100644 => 100755 indra/newview/llfloaterautoreplacesettings.cpp
 mode change 100644 => 100755 indra/newview/llfloaterautoreplacesettings.h
 mode change 100644 => 100755 indra/newview/llfloateravatar.cpp
 mode change 100644 => 100755 indra/newview/llfloateravatar.h
 mode change 100644 => 100755 indra/newview/llfloateravatarpicker.cpp
 mode change 100644 => 100755 indra/newview/llfloateravatarpicker.h
 mode change 100644 => 100755 indra/newview/llfloateravatartextures.cpp
 mode change 100644 => 100755 indra/newview/llfloateravatartextures.h
 mode change 100644 => 100755 indra/newview/llfloaterbeacons.cpp
 mode change 100644 => 100755 indra/newview/llfloaterbeacons.h
 mode change 100644 => 100755 indra/newview/llfloaterbuildoptions.cpp
 mode change 100644 => 100755 indra/newview/llfloaterbuildoptions.h
 mode change 100644 => 100755 indra/newview/llfloaterbulkpermission.cpp
 mode change 100644 => 100755 indra/newview/llfloaterbulkpermission.h
 mode change 100644 => 100755 indra/newview/llfloaterbump.cpp
 mode change 100644 => 100755 indra/newview/llfloaterbump.h
 mode change 100644 => 100755 indra/newview/llfloaterbuy.cpp
 mode change 100644 => 100755 indra/newview/llfloaterbuy.h
 mode change 100644 => 100755 indra/newview/llfloaterbuycontents.cpp
 mode change 100644 => 100755 indra/newview/llfloaterbuycontents.h
 mode change 100644 => 100755 indra/newview/llfloaterbuycurrency.cpp
 mode change 100644 => 100755 indra/newview/llfloaterbuycurrency.h
 mode change 100644 => 100755 indra/newview/llfloaterbuycurrencyhtml.cpp
 mode change 100644 => 100755 indra/newview/llfloaterbuycurrencyhtml.h
 mode change 100644 => 100755 indra/newview/llfloaterbuyland.cpp
 mode change 100644 => 100755 indra/newview/llfloaterbuyland.h
 mode change 100644 => 100755 indra/newview/llfloaterbvhpreview.cpp
 mode change 100644 => 100755 indra/newview/llfloaterbvhpreview.h
 mode change 100644 => 100755 indra/newview/llfloatercamera.cpp
 mode change 100644 => 100755 indra/newview/llfloatercamera.h
 mode change 100644 => 100755 indra/newview/llfloaterchatvoicevolume.cpp
 mode change 100644 => 100755 indra/newview/llfloaterchatvoicevolume.h
 mode change 100644 => 100755 indra/newview/llfloatercolorpicker.cpp
 mode change 100644 => 100755 indra/newview/llfloatercolorpicker.h
 mode change 100644 => 100755 indra/newview/llfloaterconversationlog.cpp
 mode change 100644 => 100755 indra/newview/llfloaterconversationlog.h
 mode change 100644 => 100755 indra/newview/llfloaterconversationpreview.cpp
 mode change 100644 => 100755 indra/newview/llfloaterconversationpreview.h
 mode change 100644 => 100755 indra/newview/llfloaterdeleteenvpreset.cpp
 mode change 100644 => 100755 indra/newview/llfloaterdeleteenvpreset.h
 mode change 100644 => 100755 indra/newview/llfloaterdestinations.cpp
 mode change 100644 => 100755 indra/newview/llfloaterdestinations.h
 mode change 100644 => 100755 indra/newview/llfloaterdisplayname.cpp
 mode change 100644 => 100755 indra/newview/llfloaterdisplayname.h
 mode change 100644 => 100755 indra/newview/llfloatereditdaycycle.cpp
 mode change 100644 => 100755 indra/newview/llfloatereditdaycycle.h
 mode change 100644 => 100755 indra/newview/llfloatereditsky.cpp
 mode change 100644 => 100755 indra/newview/llfloatereditsky.h
 mode change 100644 => 100755 indra/newview/llfloatereditwater.cpp
 mode change 100644 => 100755 indra/newview/llfloatereditwater.h
 mode change 100644 => 100755 indra/newview/llfloaterenvironmentsettings.cpp
 mode change 100644 => 100755 indra/newview/llfloaterenvironmentsettings.h
 mode change 100644 => 100755 indra/newview/llfloaterevent.cpp
 mode change 100644 => 100755 indra/newview/llfloaterevent.h
 mode change 100644 => 100755 indra/newview/llfloaterfonttest.cpp
 mode change 100644 => 100755 indra/newview/llfloaterfonttest.h
 mode change 100644 => 100755 indra/newview/llfloatergesture.cpp
 mode change 100644 => 100755 indra/newview/llfloatergesture.h
 mode change 100644 => 100755 indra/newview/llfloatergodtools.cpp
 mode change 100644 => 100755 indra/newview/llfloatergodtools.h
 mode change 100644 => 100755 indra/newview/llfloatergroupinvite.cpp
 mode change 100644 => 100755 indra/newview/llfloatergroupinvite.h
 mode change 100644 => 100755 indra/newview/llfloatergroups.cpp
 mode change 100644 => 100755 indra/newview/llfloatergroups.h
 mode change 100644 => 100755 indra/newview/llfloaterhandler.cpp
 mode change 100644 => 100755 indra/newview/llfloaterhandler.h
 mode change 100644 => 100755 indra/newview/llfloaterhardwaresettings.cpp
 mode change 100644 => 100755 indra/newview/llfloaterhardwaresettings.h
 mode change 100644 => 100755 indra/newview/llfloaterhelpbrowser.cpp
 mode change 100644 => 100755 indra/newview/llfloaterhelpbrowser.h
 mode change 100644 => 100755 indra/newview/llfloaterhud.cpp
 mode change 100644 => 100755 indra/newview/llfloaterhud.h
 mode change 100644 => 100755 indra/newview/llfloaterimagepreview.cpp
 mode change 100644 => 100755 indra/newview/llfloaterimagepreview.h
 mode change 100644 => 100755 indra/newview/llfloaterimcontainer.cpp
 mode change 100644 => 100755 indra/newview/llfloaterimcontainer.h
 mode change 100644 => 100755 indra/newview/llfloaterimnearbychat.cpp
 mode change 100644 => 100755 indra/newview/llfloaterimnearbychat.h
 mode change 100644 => 100755 indra/newview/llfloaterimnearbychathandler.cpp
 mode change 100644 => 100755 indra/newview/llfloaterimnearbychathandler.h
 mode change 100644 => 100755 indra/newview/llfloaterimnearbychatlistener.cpp
 mode change 100644 => 100755 indra/newview/llfloaterimnearbychatlistener.h
 mode change 100644 => 100755 indra/newview/llfloaterimsession.cpp
 mode change 100644 => 100755 indra/newview/llfloaterimsession.h
 mode change 100644 => 100755 indra/newview/llfloaterimsessiontab.cpp
 mode change 100644 => 100755 indra/newview/llfloaterimsessiontab.h
 mode change 100644 => 100755 indra/newview/llfloaterinspect.cpp
 mode change 100644 => 100755 indra/newview/llfloaterinspect.h
 mode change 100644 => 100755 indra/newview/llfloaterinventory.cpp
 mode change 100644 => 100755 indra/newview/llfloaterinventory.h
 mode change 100644 => 100755 indra/newview/llfloaterjoystick.cpp
 mode change 100644 => 100755 indra/newview/llfloaterjoystick.h
 mode change 100644 => 100755 indra/newview/llfloaterlagmeter.cpp
 mode change 100644 => 100755 indra/newview/llfloaterlagmeter.h
 mode change 100644 => 100755 indra/newview/llfloaterland.cpp
 mode change 100644 => 100755 indra/newview/llfloaterland.h
 mode change 100644 => 100755 indra/newview/llfloaterlandholdings.cpp
 mode change 100644 => 100755 indra/newview/llfloaterlandholdings.h
 mode change 100644 => 100755 indra/newview/llfloatermap.cpp
 mode change 100644 => 100755 indra/newview/llfloatermap.h
 mode change 100644 => 100755 indra/newview/llfloatermediasettings.cpp
 mode change 100644 => 100755 indra/newview/llfloatermediasettings.h
 mode change 100644 => 100755 indra/newview/llfloatermemleak.cpp
 mode change 100644 => 100755 indra/newview/llfloatermemleak.h
 mode change 100644 => 100755 indra/newview/llfloatermodelpreview.h
 mode change 100644 => 100755 indra/newview/llfloatermodeluploadbase.cpp
 mode change 100644 => 100755 indra/newview/llfloatermodeluploadbase.h
 mode change 100644 => 100755 indra/newview/llfloaternamedesc.cpp
 mode change 100644 => 100755 indra/newview/llfloaternamedesc.h
 mode change 100644 => 100755 indra/newview/llfloaternotificationsconsole.cpp
 mode change 100644 => 100755 indra/newview/llfloaternotificationsconsole.h
 mode change 100644 => 100755 indra/newview/llfloaterobjectweights.cpp
 mode change 100644 => 100755 indra/newview/llfloaterobjectweights.h
 mode change 100644 => 100755 indra/newview/llfloateropenobject.cpp
 mode change 100644 => 100755 indra/newview/llfloateropenobject.h
 mode change 100644 => 100755 indra/newview/llfloateroutbox.cpp
 mode change 100644 => 100755 indra/newview/llfloateroutbox.h
 mode change 100644 => 100755 indra/newview/llfloaterpathfindingcharacters.cpp
 mode change 100644 => 100755 indra/newview/llfloaterpathfindingcharacters.h
 mode change 100644 => 100755 indra/newview/llfloaterpathfindingconsole.cpp
 mode change 100644 => 100755 indra/newview/llfloaterpathfindingconsole.h
 mode change 100644 => 100755 indra/newview/llfloaterpathfindinglinksets.cpp
 mode change 100644 => 100755 indra/newview/llfloaterpathfindinglinksets.h
 mode change 100644 => 100755 indra/newview/llfloaterpathfindingobjects.cpp
 mode change 100644 => 100755 indra/newview/llfloaterpathfindingobjects.h
 mode change 100644 => 100755 indra/newview/llfloaterpay.cpp
 mode change 100644 => 100755 indra/newview/llfloaterpay.h
 mode change 100644 => 100755 indra/newview/llfloaterperms.cpp
 mode change 100644 => 100755 indra/newview/llfloaterperms.h
 mode change 100644 => 100755 indra/newview/llfloaterpostprocess.cpp
 mode change 100644 => 100755 indra/newview/llfloaterpostprocess.h
 mode change 100644 => 100755 indra/newview/llfloaterpreference.h
 mode change 100644 => 100755 indra/newview/llfloaterproperties.cpp
 mode change 100644 => 100755 indra/newview/llfloaterproperties.h
 mode change 100644 => 100755 indra/newview/llfloaterregiondebugconsole.cpp
 mode change 100644 => 100755 indra/newview/llfloaterregiondebugconsole.h
 mode change 100644 => 100755 indra/newview/llfloaterregioninfo.cpp
 mode change 100644 => 100755 indra/newview/llfloaterregioninfo.h
 mode change 100644 => 100755 indra/newview/llfloaterreporter.cpp
 mode change 100644 => 100755 indra/newview/llfloaterreporter.h
 mode change 100644 => 100755 indra/newview/llfloaterscriptdebug.cpp
 mode change 100644 => 100755 indra/newview/llfloaterscriptdebug.h
 mode change 100644 => 100755 indra/newview/llfloaterscriptlimits.cpp
 mode change 100644 => 100755 indra/newview/llfloaterscriptlimits.h
 mode change 100644 => 100755 indra/newview/llfloatersearch.cpp
 mode change 100644 => 100755 indra/newview/llfloatersearch.h
 mode change 100644 => 100755 indra/newview/llfloatersellland.cpp
 mode change 100644 => 100755 indra/newview/llfloatersellland.h
 mode change 100644 => 100755 indra/newview/llfloatersettingsdebug.cpp
 mode change 100644 => 100755 indra/newview/llfloatersettingsdebug.h
 mode change 100644 => 100755 indra/newview/llfloatersidepanelcontainer.cpp
 mode change 100644 => 100755 indra/newview/llfloatersidepanelcontainer.h
 mode change 100644 => 100755 indra/newview/llfloatersnapshot.cpp
 mode change 100644 => 100755 indra/newview/llfloatersnapshot.h
 mode change 100644 => 100755 indra/newview/llfloatersounddevices.cpp
 mode change 100644 => 100755 indra/newview/llfloatersounddevices.h
 mode change 100644 => 100755 indra/newview/llfloaterspellchecksettings.cpp
 mode change 100644 => 100755 indra/newview/llfloaterspellchecksettings.h
 mode change 100644 => 100755 indra/newview/llfloatertelehub.cpp
 mode change 100644 => 100755 indra/newview/llfloatertelehub.h
 mode change 100644 => 100755 indra/newview/llfloatertestinspectors.cpp
 mode change 100644 => 100755 indra/newview/llfloatertestinspectors.h
 mode change 100644 => 100755 indra/newview/llfloatertestlistview.cpp
 mode change 100644 => 100755 indra/newview/llfloatertestlistview.h
 mode change 100644 => 100755 indra/newview/llfloatertexturefetchdebugger.cpp
 mode change 100644 => 100755 indra/newview/llfloatertexturefetchdebugger.h
 mode change 100644 => 100755 indra/newview/llfloatertools.cpp
 mode change 100644 => 100755 indra/newview/llfloatertools.h
 mode change 100644 => 100755 indra/newview/llfloatertopobjects.cpp
 mode change 100644 => 100755 indra/newview/llfloatertopobjects.h
 mode change 100644 => 100755 indra/newview/llfloatertos.cpp
 mode change 100644 => 100755 indra/newview/llfloatertos.h
 mode change 100644 => 100755 indra/newview/llfloatertoybox.cpp
 mode change 100644 => 100755 indra/newview/llfloatertoybox.h
 mode change 100644 => 100755 indra/newview/llfloatertranslationsettings.cpp
 mode change 100644 => 100755 indra/newview/llfloatertranslationsettings.h
 mode change 100644 => 100755 indra/newview/llfloateruipreview.cpp
 mode change 100644 => 100755 indra/newview/llfloateruipreview.h
 mode change 100644 => 100755 indra/newview/llfloaterurlentry.cpp
 mode change 100644 => 100755 indra/newview/llfloaterurlentry.h
 mode change 100644 => 100755 indra/newview/llfloatervoiceeffect.cpp
 mode change 100644 => 100755 indra/newview/llfloatervoiceeffect.h
 mode change 100644 => 100755 indra/newview/llfloatervoicevolume.cpp
 mode change 100644 => 100755 indra/newview/llfloatervoicevolume.h
 mode change 100644 => 100755 indra/newview/llfloaterwebcontent.cpp
 mode change 100644 => 100755 indra/newview/llfloaterwebcontent.h
 mode change 100644 => 100755 indra/newview/llfloaterwebprofile.cpp
 mode change 100644 => 100755 indra/newview/llfloaterwebprofile.h
 mode change 100644 => 100755 indra/newview/llfloaterwhitelistentry.cpp
 mode change 100644 => 100755 indra/newview/llfloaterwhitelistentry.h
 mode change 100644 => 100755 indra/newview/llfloaterwindowsize.cpp
 mode change 100644 => 100755 indra/newview/llfloaterwindowsize.h
 mode change 100644 => 100755 indra/newview/llfloaterworldmap.h
 mode change 100644 => 100755 indra/newview/llfolderviewmodelinventory.cpp
 mode change 100644 => 100755 indra/newview/llfolderviewmodelinventory.h
 mode change 100644 => 100755 indra/newview/llfollowcam.cpp
 mode change 100644 => 100755 indra/newview/llfollowcam.h
 mode change 100644 => 100755 indra/newview/llfriendcard.cpp
 mode change 100644 => 100755 indra/newview/llfriendcard.h
 mode change 100644 => 100755 indra/newview/llgesturelistener.cpp
 mode change 100644 => 100755 indra/newview/llgesturelistener.h
 mode change 100644 => 100755 indra/newview/llgesturemgr.cpp
 mode change 100644 => 100755 indra/newview/llgesturemgr.h
 mode change 100644 => 100755 indra/newview/llgiveinventory.cpp
 mode change 100644 => 100755 indra/newview/llgiveinventory.h
 mode change 100644 => 100755 indra/newview/llglsandbox.cpp
 mode change 100644 => 100755 indra/newview/llgroupactions.cpp
 mode change 100644 => 100755 indra/newview/llgroupactions.h
 mode change 100644 => 100755 indra/newview/llgroupiconctrl.cpp
 mode change 100644 => 100755 indra/newview/llgroupiconctrl.h
 mode change 100644 => 100755 indra/newview/llgrouplist.cpp
 mode change 100644 => 100755 indra/newview/llgrouplist.h
 mode change 100644 => 100755 indra/newview/llgroupmgr.cpp
 mode change 100644 => 100755 indra/newview/llgroupmgr.h
 mode change 100644 => 100755 indra/newview/llhints.cpp
 mode change 100644 => 100755 indra/newview/llhints.h
 mode change 100644 => 100755 indra/newview/llhomelocationresponder.cpp
 mode change 100644 => 100755 indra/newview/llhomelocationresponder.h
 mode change 100644 => 100755 indra/newview/llhudeffect.cpp
 mode change 100644 => 100755 indra/newview/llhudeffect.h
 mode change 100644 => 100755 indra/newview/llhudeffectbeam.cpp
 mode change 100644 => 100755 indra/newview/llhudeffectbeam.h
 mode change 100644 => 100755 indra/newview/llhudeffectblob.cpp
 mode change 100644 => 100755 indra/newview/llhudeffectblob.h
 mode change 100644 => 100755 indra/newview/llhudeffectlookat.cpp
 mode change 100644 => 100755 indra/newview/llhudeffectlookat.h
 mode change 100644 => 100755 indra/newview/llhudeffectpointat.cpp
 mode change 100644 => 100755 indra/newview/llhudeffectpointat.h
 mode change 100644 => 100755 indra/newview/llhudeffecttrail.cpp
 mode change 100644 => 100755 indra/newview/llhudeffecttrail.h
 mode change 100644 => 100755 indra/newview/llhudicon.cpp
 mode change 100644 => 100755 indra/newview/llhudicon.h
 mode change 100644 => 100755 indra/newview/llhudmanager.cpp
 mode change 100644 => 100755 indra/newview/llhudmanager.h
 mode change 100644 => 100755 indra/newview/llhudnametag.cpp
 mode change 100644 => 100755 indra/newview/llhudnametag.h
 mode change 100644 => 100755 indra/newview/llhudobject.cpp
 mode change 100644 => 100755 indra/newview/llhudobject.h
 mode change 100644 => 100755 indra/newview/llhudrender.cpp
 mode change 100644 => 100755 indra/newview/llhudrender.h
 mode change 100644 => 100755 indra/newview/llhudtext.cpp
 mode change 100644 => 100755 indra/newview/llhudtext.h
 mode change 100644 => 100755 indra/newview/llhudview.cpp
 mode change 100644 => 100755 indra/newview/llhudview.h
 mode change 100644 => 100755 indra/newview/llimhandler.cpp
 mode change 100644 => 100755 indra/newview/llimpanel.cpp
 mode change 100644 => 100755 indra/newview/llimpanel.h
 mode change 100644 => 100755 indra/newview/llimview.cpp
 mode change 100644 => 100755 indra/newview/llimview.h
 mode change 100644 => 100755 indra/newview/llinspect.cpp
 mode change 100644 => 100755 indra/newview/llinspect.h
 mode change 100644 => 100755 indra/newview/llinspectavatar.cpp
 mode change 100644 => 100755 indra/newview/llinspectavatar.h
 mode change 100644 => 100755 indra/newview/llinspectgroup.cpp
 mode change 100644 => 100755 indra/newview/llinspectgroup.h
 mode change 100644 => 100755 indra/newview/llinspectobject.cpp
 mode change 100644 => 100755 indra/newview/llinspectobject.h
 mode change 100644 => 100755 indra/newview/llinspectremoteobject.cpp
 mode change 100644 => 100755 indra/newview/llinspectremoteobject.h
 mode change 100644 => 100755 indra/newview/llinspecttoast.cpp
 mode change 100644 => 100755 indra/newview/llinspecttoast.h
 mode change 100644 => 100755 indra/newview/llinventoryactions.h
 mode change 100644 => 100755 indra/newview/llinventorybridge.cpp
 mode change 100644 => 100755 indra/newview/llinventorybridge.h
 mode change 100644 => 100755 indra/newview/llinventoryclipboard.cpp
 mode change 100644 => 100755 indra/newview/llinventoryclipboard.h
 mode change 100644 => 100755 indra/newview/llinventoryfilter.cpp
 mode change 100644 => 100755 indra/newview/llinventoryfilter.h
 mode change 100644 => 100755 indra/newview/llinventoryfunctions.cpp
 mode change 100644 => 100755 indra/newview/llinventoryfunctions.h
 mode change 100644 => 100755 indra/newview/llinventoryicon.cpp
 mode change 100644 => 100755 indra/newview/llinventoryicon.h
 mode change 100644 => 100755 indra/newview/llinventoryitemslist.cpp
 mode change 100644 => 100755 indra/newview/llinventoryitemslist.h
 mode change 100644 => 100755 indra/newview/llinventorylistitem.cpp
 mode change 100644 => 100755 indra/newview/llinventorylistitem.h
 mode change 100644 => 100755 indra/newview/llinventorymodel.cpp
 mode change 100644 => 100755 indra/newview/llinventorymodel.h
 mode change 100644 => 100755 indra/newview/llinventorymodelbackgroundfetch.cpp
 mode change 100644 => 100755 indra/newview/llinventorymodelbackgroundfetch.h
 mode change 100644 => 100755 indra/newview/llinventoryobserver.cpp
 mode change 100644 => 100755 indra/newview/llinventoryobserver.h
 mode change 100644 => 100755 indra/newview/llinventorypanel.cpp
 mode change 100644 => 100755 indra/newview/llinventorypanel.h
 mode change 100644 => 100755 indra/newview/lljoystickbutton.cpp
 mode change 100644 => 100755 indra/newview/lljoystickbutton.h
 mode change 100644 => 100755 indra/newview/lllandmarkactions.cpp
 mode change 100644 => 100755 indra/newview/lllandmarkactions.h
 mode change 100644 => 100755 indra/newview/lllandmarklist.cpp
 mode change 100644 => 100755 indra/newview/lllandmarklist.h
 mode change 100644 => 100755 indra/newview/lllightconstants.h
 mode change 100644 => 100755 indra/newview/lllistbrowser.cpp
 mode change 100644 => 100755 indra/newview/lllistbrowser.h
 mode change 100644 => 100755 indra/newview/lllistcontextmenu.cpp
 mode change 100644 => 100755 indra/newview/lllistcontextmenu.h
 mode change 100644 => 100755 indra/newview/lllistview.cpp
 mode change 100644 => 100755 indra/newview/lllistview.h
 mode change 100644 => 100755 indra/newview/lllocalbitmaps.cpp
 mode change 100644 => 100755 indra/newview/lllocalbitmaps.h
 mode change 100644 => 100755 indra/newview/lllocaltextureobject.cpp
 mode change 100644 => 100755 indra/newview/lllocaltextureobject.h
 mode change 100644 => 100755 indra/newview/lllocationhistory.cpp
 mode change 100644 => 100755 indra/newview/lllocationhistory.h
 mode change 100644 => 100755 indra/newview/lllocationinputctrl.cpp
 mode change 100644 => 100755 indra/newview/lllocationinputctrl.h
 mode change 100644 => 100755 indra/newview/lllogchat.cpp
 mode change 100644 => 100755 indra/newview/lllogchat.h
 mode change 100644 => 100755 indra/newview/llloginhandler.cpp
 mode change 100644 => 100755 indra/newview/llloginhandler.h
 mode change 100644 => 100755 indra/newview/lllogininstance.cpp
 mode change 100644 => 100755 indra/newview/lllogininstance.h
 mode change 100644 => 100755 indra/newview/lllookshistorypanel.h
 mode change 100644 => 100755 indra/newview/llmachineid.cpp
 mode change 100644 => 100755 indra/newview/llmachineid.h
 mode change 100644 => 100755 indra/newview/llmainlooprepeater.cpp
 mode change 100644 => 100755 indra/newview/llmainlooprepeater.h
 mode change 100644 => 100755 indra/newview/llmanip.cpp
 mode change 100644 => 100755 indra/newview/llmanip.h
 mode change 100644 => 100755 indra/newview/llmaniprotate.cpp
 mode change 100644 => 100755 indra/newview/llmaniprotate.h
 mode change 100644 => 100755 indra/newview/llmanipscale.cpp
 mode change 100644 => 100755 indra/newview/llmanipscale.h
 mode change 100644 => 100755 indra/newview/llmaniptranslate.cpp
 mode change 100644 => 100755 indra/newview/llmaniptranslate.h
 mode change 100644 => 100755 indra/newview/llmarketplacefunctions.cpp
 mode change 100644 => 100755 indra/newview/llmarketplacefunctions.h
 mode change 100644 => 100755 indra/newview/llmarketplacenotifications.cpp
 mode change 100644 => 100755 indra/newview/llmarketplacenotifications.h
 mode change 100644 => 100755 indra/newview/llmediactrl.cpp
 mode change 100644 => 100755 indra/newview/llmediactrl.h
 mode change 100644 => 100755 indra/newview/llmediadataclient.cpp
 mode change 100644 => 100755 indra/newview/llmediadataclient.h
 mode change 100644 => 100755 indra/newview/llmenuoptionpathfindingrebakenavmesh.cpp
 mode change 100644 => 100755 indra/newview/llmenuoptionpathfindingrebakenavmesh.h
 mode change 100644 => 100755 indra/newview/llmeshrepository.h
 mode change 100644 => 100755 indra/newview/llmimetypes.cpp
 mode change 100644 => 100755 indra/newview/llmimetypes.h
 mode change 100644 => 100755 indra/newview/llmorphview.cpp
 mode change 100644 => 100755 indra/newview/llmorphview.h
 mode change 100644 => 100755 indra/newview/llmoveview.cpp
 mode change 100644 => 100755 indra/newview/llmoveview.h
 mode change 100644 => 100755 indra/newview/llmutelist.cpp
 mode change 100644 => 100755 indra/newview/llmutelist.h
 mode change 100644 => 100755 indra/newview/llnamebox.cpp
 mode change 100644 => 100755 indra/newview/llnamebox.h
 mode change 100644 => 100755 indra/newview/llnameeditor.cpp
 mode change 100644 => 100755 indra/newview/llnameeditor.h
 mode change 100644 => 100755 indra/newview/llnamelistctrl.cpp
 mode change 100644 => 100755 indra/newview/llnamelistctrl.h
 mode change 100644 => 100755 indra/newview/llnavigationbar.cpp
 mode change 100644 => 100755 indra/newview/llnavigationbar.h
 mode change 100644 => 100755 indra/newview/llnetmap.cpp
 mode change 100644 => 100755 indra/newview/llnetmap.h
 mode change 100644 => 100755 indra/newview/llnotificationalerthandler.cpp
 mode change 100644 => 100755 indra/newview/llnotificationgrouphandler.cpp
 mode change 100644 => 100755 indra/newview/llnotificationhandler.h
 mode change 100644 => 100755 indra/newview/llnotificationhandlerutil.cpp
 mode change 100644 => 100755 indra/newview/llnotificationhinthandler.cpp
 mode change 100644 => 100755 indra/newview/llnotificationmanager.cpp
 mode change 100644 => 100755 indra/newview/llnotificationmanager.h
 mode change 100644 => 100755 indra/newview/llnotificationofferhandler.cpp
 mode change 100644 => 100755 indra/newview/llnotificationscripthandler.cpp
 mode change 100644 => 100755 indra/newview/llnotificationstorage.cpp
 mode change 100644 => 100755 indra/newview/llnotificationstorage.h
 mode change 100644 => 100755 indra/newview/llnotificationtiphandler.cpp
 mode change 100644 => 100755 indra/newview/lloutfitobserver.cpp
 mode change 100644 => 100755 indra/newview/lloutfitobserver.h
 mode change 100644 => 100755 indra/newview/lloutfitslist.cpp
 mode change 100644 => 100755 indra/newview/lloutfitslist.h
 mode change 100644 => 100755 indra/newview/lloutputmonitorctrl.cpp
 mode change 100644 => 100755 indra/newview/lloutputmonitorctrl.h
 mode change 100644 => 100755 indra/newview/llpanelappearancetab.cpp
 mode change 100644 => 100755 indra/newview/llpanelappearancetab.h
 mode change 100644 => 100755 indra/newview/llpanelavatar.cpp
 mode change 100644 => 100755 indra/newview/llpanelavatar.h
 mode change 100644 => 100755 indra/newview/llpanelavatartag.cpp
 mode change 100644 => 100755 indra/newview/llpanelavatartag.h
 mode change 100644 => 100755 indra/newview/llpanelblockedlist.cpp
 mode change 100644 => 100755 indra/newview/llpanelblockedlist.h
 mode change 100644 => 100755 indra/newview/llpanelclassified.cpp
 mode change 100644 => 100755 indra/newview/llpanelclassified.h
 mode change 100644 => 100755 indra/newview/llpanelcontents.cpp
 mode change 100644 => 100755 indra/newview/llpanelcontents.h
 mode change 100644 => 100755 indra/newview/llpaneleditwearable.cpp
 mode change 100644 => 100755 indra/newview/llpaneleditwearable.h
 mode change 100644 => 100755 indra/newview/llpanelface.cpp
 mode change 100644 => 100755 indra/newview/llpanelface.h
 mode change 100644 => 100755 indra/newview/llpanelgenerictip.cpp
 mode change 100644 => 100755 indra/newview/llpanelgenerictip.h
 mode change 100644 => 100755 indra/newview/llpanelgroup.cpp
 mode change 100644 => 100755 indra/newview/llpanelgroup.h
 mode change 100644 => 100755 indra/newview/llpanelgroupgeneral.cpp
 mode change 100644 => 100755 indra/newview/llpanelgroupgeneral.h
 mode change 100644 => 100755 indra/newview/llpanelgroupinvite.cpp
 mode change 100644 => 100755 indra/newview/llpanelgroupinvite.h
 mode change 100644 => 100755 indra/newview/llpanelgrouplandmoney.cpp
 mode change 100644 => 100755 indra/newview/llpanelgrouplandmoney.h
 mode change 100644 => 100755 indra/newview/llpanelgroupnotices.cpp
 mode change 100644 => 100755 indra/newview/llpanelgroupnotices.h
 mode change 100644 => 100755 indra/newview/llpanelgrouproles.cpp
 mode change 100644 => 100755 indra/newview/llpanelgrouproles.h
 mode change 100644 => 100755 indra/newview/llpanelhome.cpp
 mode change 100644 => 100755 indra/newview/llpanelhome.h
 mode change 100644 => 100755 indra/newview/llpanelimcontrolpanel.cpp
 mode change 100644 => 100755 indra/newview/llpanelimcontrolpanel.h
 mode change 100644 => 100755 indra/newview/llpanelland.cpp
 mode change 100644 => 100755 indra/newview/llpanelland.h
 mode change 100644 => 100755 indra/newview/llpanellandaudio.cpp
 mode change 100644 => 100755 indra/newview/llpanellandaudio.h
 mode change 100644 => 100755 indra/newview/llpanellandmarkinfo.cpp
 mode change 100644 => 100755 indra/newview/llpanellandmarkinfo.h
 mode change 100644 => 100755 indra/newview/llpanellandmarks.cpp
 mode change 100644 => 100755 indra/newview/llpanellandmarks.h
 mode change 100644 => 100755 indra/newview/llpanellandmedia.cpp
 mode change 100644 => 100755 indra/newview/llpanellandmedia.h
 mode change 100644 => 100755 indra/newview/llpanellogin.cpp
 mode change 100644 => 100755 indra/newview/llpanellogin.h
 mode change 100644 => 100755 indra/newview/llpanelloginlistener.cpp
 mode change 100644 => 100755 indra/newview/llpanelloginlistener.h
 mode change 100644 => 100755 indra/newview/llpanelmaininventory.cpp
 mode change 100644 => 100755 indra/newview/llpanelmaininventory.h
 mode change 100644 => 100755 indra/newview/llpanelmarketplaceinbox.cpp
 mode change 100644 => 100755 indra/newview/llpanelmarketplaceinbox.h
 mode change 100644 => 100755 indra/newview/llpanelmarketplaceinboxinventory.cpp
 mode change 100644 => 100755 indra/newview/llpanelmarketplaceinboxinventory.h
 mode change 100644 => 100755 indra/newview/llpanelme.cpp
 mode change 100644 => 100755 indra/newview/llpanelme.h
 mode change 100644 => 100755 indra/newview/llpanelmediasettingsgeneral.cpp
 mode change 100644 => 100755 indra/newview/llpanelmediasettingsgeneral.h
 mode change 100644 => 100755 indra/newview/llpanelmediasettingspermissions.cpp
 mode change 100644 => 100755 indra/newview/llpanelmediasettingspermissions.h
 mode change 100644 => 100755 indra/newview/llpanelmediasettingssecurity.cpp
 mode change 100644 => 100755 indra/newview/llpanelmediasettingssecurity.h
 mode change 100644 => 100755 indra/newview/llpanelnearbymedia.cpp
 mode change 100644 => 100755 indra/newview/llpanelnearbymedia.h
 mode change 100644 => 100755 indra/newview/llpanelobject.cpp
 mode change 100644 => 100755 indra/newview/llpanelobject.h
 mode change 100644 => 100755 indra/newview/llpanelobjectinventory.cpp
 mode change 100644 => 100755 indra/newview/llpanelobjectinventory.h
 mode change 100644 => 100755 indra/newview/llpanelonlinestatus.cpp
 mode change 100644 => 100755 indra/newview/llpanelonlinestatus.h
 mode change 100644 => 100755 indra/newview/llpaneloutfitedit.cpp
 mode change 100644 => 100755 indra/newview/llpaneloutfitedit.h
 mode change 100644 => 100755 indra/newview/llpaneloutfitsinventory.cpp
 mode change 100644 => 100755 indra/newview/llpaneloutfitsinventory.h
 mode change 100644 => 100755 indra/newview/llpanelpeople.cpp
 mode change 100644 => 100755 indra/newview/llpanelpeople.h
 mode change 100644 => 100755 indra/newview/llpanelpeoplemenus.cpp
 mode change 100644 => 100755 indra/newview/llpanelpeoplemenus.h
 mode change 100644 => 100755 indra/newview/llpanelpermissions.cpp
 mode change 100644 => 100755 indra/newview/llpanelpermissions.h
 mode change 100644 => 100755 indra/newview/llpanelpick.cpp
 mode change 100644 => 100755 indra/newview/llpanelpick.h
 mode change 100644 => 100755 indra/newview/llpanelplaceinfo.cpp
 mode change 100644 => 100755 indra/newview/llpanelplaceinfo.h
 mode change 100644 => 100755 indra/newview/llpanelplaceprofile.cpp
 mode change 100644 => 100755 indra/newview/llpanelplaceprofile.h
 mode change 100644 => 100755 indra/newview/llpanelplaces.cpp
 mode change 100644 => 100755 indra/newview/llpanelplaces.h
 mode change 100644 => 100755 indra/newview/llpanelplacestab.cpp
 mode change 100644 => 100755 indra/newview/llpanelplacestab.h
 mode change 100644 => 100755 indra/newview/llpanelprimmediacontrols.cpp
 mode change 100644 => 100755 indra/newview/llpanelprimmediacontrols.h
 mode change 100644 => 100755 indra/newview/llpanelsnapshot.cpp
 mode change 100644 => 100755 indra/newview/llpanelsnapshot.h
 mode change 100644 => 100755 indra/newview/llpanelsnapshotinventory.cpp
 mode change 100644 => 100755 indra/newview/llpanelsnapshotlocal.cpp
 mode change 100644 => 100755 indra/newview/llpanelsnapshotoptions.cpp
 mode change 100644 => 100755 indra/newview/llpanelsnapshotpostcard.cpp
 mode change 100644 => 100755 indra/newview/llpanelsnapshotprofile.cpp
 mode change 100644 => 100755 indra/newview/llpanelteleporthistory.cpp
 mode change 100644 => 100755 indra/newview/llpanelteleporthistory.h
 mode change 100644 => 100755 indra/newview/llpaneltiptoast.cpp
 mode change 100644 => 100755 indra/newview/llpaneltiptoast.h
 mode change 100644 => 100755 indra/newview/llpaneltopinfobar.cpp
 mode change 100644 => 100755 indra/newview/llpaneltopinfobar.h
 mode change 100644 => 100755 indra/newview/llpanelvoicedevicesettings.cpp
 mode change 100644 => 100755 indra/newview/llpanelvoicedevicesettings.h
 mode change 100644 => 100755 indra/newview/llpanelvoiceeffect.cpp
 mode change 100644 => 100755 indra/newview/llpanelvoiceeffect.h
 mode change 100644 => 100755 indra/newview/llpanelvolume.cpp
 mode change 100644 => 100755 indra/newview/llpanelvolume.h
 mode change 100644 => 100755 indra/newview/llpanelvolumepulldown.cpp
 mode change 100644 => 100755 indra/newview/llpanelvolumepulldown.h
 mode change 100644 => 100755 indra/newview/llpanelwearing.cpp
 mode change 100644 => 100755 indra/newview/llpanelwearing.h
 mode change 100644 => 100755 indra/newview/llparcelselection.cpp
 mode change 100644 => 100755 indra/newview/llparcelselection.h
 mode change 100644 => 100755 indra/newview/llparticipantlist.cpp
 mode change 100644 => 100755 indra/newview/llparticipantlist.h
 mode change 100644 => 100755 indra/newview/llpatchvertexarray.cpp
 mode change 100644 => 100755 indra/newview/llpatchvertexarray.h
 mode change 100644 => 100755 indra/newview/llpathfindingcharacter.cpp
 mode change 100644 => 100755 indra/newview/llpathfindingcharacter.h
 mode change 100644 => 100755 indra/newview/llpathfindingcharacterlist.cpp
 mode change 100644 => 100755 indra/newview/llpathfindingcharacterlist.h
 mode change 100644 => 100755 indra/newview/llpathfindinglinkset.cpp
 mode change 100644 => 100755 indra/newview/llpathfindinglinkset.h
 mode change 100644 => 100755 indra/newview/llpathfindinglinksetlist.cpp
 mode change 100644 => 100755 indra/newview/llpathfindinglinksetlist.h
 mode change 100644 => 100755 indra/newview/llpathfindingmanager.cpp
 mode change 100644 => 100755 indra/newview/llpathfindingmanager.h
 mode change 100644 => 100755 indra/newview/llpathfindingnavmesh.cpp
 mode change 100644 => 100755 indra/newview/llpathfindingnavmesh.h
 mode change 100644 => 100755 indra/newview/llpathfindingnavmeshstatus.cpp
 mode change 100644 => 100755 indra/newview/llpathfindingnavmeshstatus.h
 mode change 100644 => 100755 indra/newview/llpathfindingnavmeshzone.cpp
 mode change 100644 => 100755 indra/newview/llpathfindingnavmeshzone.h
 mode change 100644 => 100755 indra/newview/llpathfindingobject.cpp
 mode change 100644 => 100755 indra/newview/llpathfindingobject.h
 mode change 100644 => 100755 indra/newview/llpathfindingobjectlist.cpp
 mode change 100644 => 100755 indra/newview/llpathfindingobjectlist.h
 mode change 100644 => 100755 indra/newview/llpathfindingpathtool.cpp
 mode change 100644 => 100755 indra/newview/llpathfindingpathtool.h
 mode change 100644 => 100755 indra/newview/llpersistentnotificationstorage.cpp
 mode change 100644 => 100755 indra/newview/llpersistentnotificationstorage.h
 mode change 100644 => 100755 indra/newview/llphysicsmotion.cpp
 mode change 100644 => 100755 indra/newview/llphysicsmotion.h
 mode change 100644 => 100755 indra/newview/llphysicsshapebuilderutil.cpp
 mode change 100644 => 100755 indra/newview/llphysicsshapebuilderutil.h
 mode change 100644 => 100755 indra/newview/llplacesfolderview.cpp
 mode change 100644 => 100755 indra/newview/llplacesfolderview.h
 mode change 100644 => 100755 indra/newview/llplacesinventorybridge.cpp
 mode change 100644 => 100755 indra/newview/llplacesinventorybridge.h
 mode change 100644 => 100755 indra/newview/llplacesinventorypanel.cpp
 mode change 100644 => 100755 indra/newview/llplacesinventorypanel.h
 mode change 100644 => 100755 indra/newview/llpolymesh.cpp
 mode change 100644 => 100755 indra/newview/llpolymesh.h
 mode change 100644 => 100755 indra/newview/llpolymorph.cpp
 mode change 100644 => 100755 indra/newview/llpolymorph.h
 mode change 100644 => 100755 indra/newview/llpopupview.cpp
 mode change 100644 => 100755 indra/newview/llpopupview.h
 mode change 100644 => 100755 indra/newview/llpostcard.cpp
 mode change 100644 => 100755 indra/newview/llpostcard.h
 mode change 100644 => 100755 indra/newview/llpreview.cpp
 mode change 100644 => 100755 indra/newview/llpreview.h
 mode change 100644 => 100755 indra/newview/llpreviewanim.cpp
 mode change 100644 => 100755 indra/newview/llpreviewanim.h
 mode change 100644 => 100755 indra/newview/llpreviewgesture.cpp
 mode change 100644 => 100755 indra/newview/llpreviewgesture.h
 mode change 100644 => 100755 indra/newview/llpreviewnotecard.cpp
 mode change 100644 => 100755 indra/newview/llpreviewnotecard.h
 mode change 100644 => 100755 indra/newview/llpreviewscript.cpp
 mode change 100644 => 100755 indra/newview/llpreviewscript.h
 mode change 100644 => 100755 indra/newview/llpreviewsound.cpp
 mode change 100644 => 100755 indra/newview/llpreviewsound.h
 mode change 100644 => 100755 indra/newview/llpreviewtexture.cpp
 mode change 100644 => 100755 indra/newview/llpreviewtexture.h
 mode change 100644 => 100755 indra/newview/llproductinforequest.cpp
 mode change 100644 => 100755 indra/newview/llproductinforequest.h
 mode change 100644 => 100755 indra/newview/llprogressview.cpp
 mode change 100644 => 100755 indra/newview/llprogressview.h
 mode change 100644 => 100755 indra/newview/llrecentpeople.cpp
 mode change 100644 => 100755 indra/newview/llrecentpeople.h
 mode change 100644 => 100755 indra/newview/llregioninfomodel.cpp
 mode change 100644 => 100755 indra/newview/llregioninfomodel.h
 mode change 100644 => 100755 indra/newview/llregionposition.cpp
 mode change 100644 => 100755 indra/newview/llregionposition.h
 mode change 100644 => 100755 indra/newview/llremoteparcelrequest.cpp
 mode change 100644 => 100755 indra/newview/llremoteparcelrequest.h
 mode change 100644 => 100755 indra/newview/llresourcedata.h
 mode change 100644 => 100755 indra/newview/llrootview.h
 mode change 100644 => 100755 indra/newview/llsavedsettingsglue.cpp
 mode change 100644 => 100755 indra/newview/llsavedsettingsglue.h
 mode change 100644 => 100755 indra/newview/llsaveoutfitcombobtn.cpp
 mode change 100644 => 100755 indra/newview/llsaveoutfitcombobtn.h
 mode change 100644 => 100755 indra/newview/llsceneview.cpp
 mode change 100644 => 100755 indra/newview/llsceneview.h
 mode change 100644 => 100755 indra/newview/llscreenchannel.cpp
 mode change 100644 => 100755 indra/newview/llscreenchannel.h
 mode change 100644 => 100755 indra/newview/llscriptfloater.cpp
 mode change 100644 => 100755 indra/newview/llscriptfloater.h
 mode change 100644 => 100755 indra/newview/llscrollingpanelparam.cpp
 mode change 100644 => 100755 indra/newview/llscrollingpanelparam.h
 mode change 100644 => 100755 indra/newview/llscrollingpanelparambase.cpp
 mode change 100644 => 100755 indra/newview/llscrollingpanelparambase.h
 mode change 100644 => 100755 indra/newview/llsearchcombobox.cpp
 mode change 100644 => 100755 indra/newview/llsearchcombobox.h
 mode change 100644 => 100755 indra/newview/llsearchhistory.cpp
 mode change 100644 => 100755 indra/newview/llsearchhistory.h
 mode change 100644 => 100755 indra/newview/llsecapi.cpp
 mode change 100644 => 100755 indra/newview/llsecapi.h
 mode change 100644 => 100755 indra/newview/llsechandler_basic.cpp
 mode change 100644 => 100755 indra/newview/llsechandler_basic.h
 mode change 100644 => 100755 indra/newview/llselectmgr.cpp
 mode change 100644 => 100755 indra/newview/llselectmgr.h
 mode change 100644 => 100755 indra/newview/llshareavatarhandler.cpp
 mode change 100644 => 100755 indra/newview/llsidepanelappearance.cpp
 mode change 100644 => 100755 indra/newview/llsidepanelappearance.h
 mode change 100644 => 100755 indra/newview/llsidepanelinventory.cpp
 mode change 100644 => 100755 indra/newview/llsidepanelinventory.h
 mode change 100644 => 100755 indra/newview/llsidepanelinventorysubpanel.cpp
 mode change 100644 => 100755 indra/newview/llsidepanelinventorysubpanel.h
 mode change 100644 => 100755 indra/newview/llsidepaneliteminfo.cpp
 mode change 100644 => 100755 indra/newview/llsidepaneliteminfo.h
 mode change 100644 => 100755 indra/newview/llsidepaneltaskinfo.cpp
 mode change 100644 => 100755 indra/newview/llsidepaneltaskinfo.h
 mode change 100644 => 100755 indra/newview/llsidetraypanelcontainer.cpp
 mode change 100644 => 100755 indra/newview/llsidetraypanelcontainer.h
 mode change 100644 => 100755 indra/newview/llsimplestat.h
 mode change 100644 => 100755 indra/newview/llsky.cpp
 mode change 100644 => 100755 indra/newview/llsky.h
 mode change 100644 => 100755 indra/newview/llslurl.cpp
 mode change 100644 => 100755 indra/newview/llslurl.h
 mode change 100644 => 100755 indra/newview/llspatialpartition.cpp
 mode change 100644 => 100755 indra/newview/llspatialpartition.h
 mode change 100644 => 100755 indra/newview/llspeakers.cpp
 mode change 100644 => 100755 indra/newview/llspeakers.h
 mode change 100644 => 100755 indra/newview/llspeakingindicatormanager.cpp
 mode change 100644 => 100755 indra/newview/llspeakingindicatormanager.h
 mode change 100644 => 100755 indra/newview/llsplitbutton.cpp
 mode change 100644 => 100755 indra/newview/llsplitbutton.h
 mode change 100644 => 100755 indra/newview/llsprite.cpp
 mode change 100644 => 100755 indra/newview/llsprite.h
 mode change 100644 => 100755 indra/newview/llsrv.cpp
 mode change 100644 => 100755 indra/newview/llsrv.h
 mode change 100644 => 100755 indra/newview/llstartup.cpp
 mode change 100644 => 100755 indra/newview/llstartup.h
 mode change 100644 => 100755 indra/newview/llstartuplistener.cpp
 mode change 100644 => 100755 indra/newview/llstartuplistener.h
 mode change 100644 => 100755 indra/newview/llstatusbar.cpp
 mode change 100644 => 100755 indra/newview/llstatusbar.h
 mode change 100644 => 100755 indra/newview/llstylemap.cpp
 mode change 100644 => 100755 indra/newview/llstylemap.h
 mode change 100644 => 100755 indra/newview/llsurface.cpp
 mode change 100644 => 100755 indra/newview/llsurface.h
 mode change 100644 => 100755 indra/newview/llsurfacepatch.cpp
 mode change 100644 => 100755 indra/newview/llsurfacepatch.h
 mode change 100644 => 100755 indra/newview/llsyswellitem.cpp
 mode change 100644 => 100755 indra/newview/llsyswellitem.h
 mode change 100644 => 100755 indra/newview/llsyswellwindow.cpp
 mode change 100644 => 100755 indra/newview/llsyswellwindow.h
 mode change 100644 => 100755 indra/newview/lltable.h
 mode change 100644 => 100755 indra/newview/llteleporthistory.cpp
 mode change 100644 => 100755 indra/newview/llteleporthistory.h
 mode change 100644 => 100755 indra/newview/llteleporthistorystorage.cpp
 mode change 100644 => 100755 indra/newview/llteleporthistorystorage.h
 mode change 100644 => 100755 indra/newview/lltexglobalcolor.cpp
 mode change 100644 => 100755 indra/newview/lltexglobalcolor.h
 mode change 100644 => 100755 indra/newview/lltexlayer.cpp
 mode change 100644 => 100755 indra/newview/lltexlayer.h
 mode change 100644 => 100755 indra/newview/lltexlayerparams.cpp
 mode change 100644 => 100755 indra/newview/lltexlayerparams.h
 mode change 100644 => 100755 indra/newview/lltextureatlas.cpp
 mode change 100644 => 100755 indra/newview/lltextureatlas.h
 mode change 100644 => 100755 indra/newview/lltextureatlasmanager.cpp
 mode change 100644 => 100755 indra/newview/lltextureatlasmanager.h
 mode change 100644 => 100755 indra/newview/lltexturecache.cpp
 mode change 100644 => 100755 indra/newview/lltexturecache.h
 mode change 100644 => 100755 indra/newview/lltexturectrl.cpp
 mode change 100644 => 100755 indra/newview/lltexturectrl.h
 mode change 100644 => 100755 indra/newview/lltexturefetch.h
 mode change 100644 => 100755 indra/newview/lltextureinfo.cpp
 mode change 100644 => 100755 indra/newview/lltextureinfo.h
 mode change 100644 => 100755 indra/newview/lltextureinfodetails.cpp
 mode change 100644 => 100755 indra/newview/lltextureinfodetails.h
 mode change 100644 => 100755 indra/newview/lltexturestats.cpp
 mode change 100644 => 100755 indra/newview/lltexturestats.h
 mode change 100644 => 100755 indra/newview/lltexturestatsuploader.cpp
 mode change 100644 => 100755 indra/newview/lltexturestatsuploader.h
 mode change 100644 => 100755 indra/newview/lltextureview.cpp
 mode change 100644 => 100755 indra/newview/lltextureview.h
 mode change 100644 => 100755 indra/newview/lltoast.cpp
 mode change 100644 => 100755 indra/newview/lltoast.h
 mode change 100644 => 100755 indra/newview/lltoastalertpanel.cpp
 mode change 100644 => 100755 indra/newview/lltoastalertpanel.h
 mode change 100644 => 100755 indra/newview/lltoastgroupnotifypanel.cpp
 mode change 100644 => 100755 indra/newview/lltoastgroupnotifypanel.h
 mode change 100644 => 100755 indra/newview/lltoastimpanel.cpp
 mode change 100644 => 100755 indra/newview/lltoastimpanel.h
 mode change 100644 => 100755 indra/newview/lltoastnotifypanel.cpp
 mode change 100644 => 100755 indra/newview/lltoastnotifypanel.h
 mode change 100644 => 100755 indra/newview/lltoastpanel.cpp
 mode change 100644 => 100755 indra/newview/lltoastpanel.h
 mode change 100644 => 100755 indra/newview/lltoastscriptquestion.cpp
 mode change 100644 => 100755 indra/newview/lltoastscriptquestion.h
 mode change 100644 => 100755 indra/newview/lltoastscripttextbox.cpp
 mode change 100644 => 100755 indra/newview/lltoastscripttextbox.h
 mode change 100644 => 100755 indra/newview/lltool.cpp
 mode change 100644 => 100755 indra/newview/lltool.h
 mode change 100644 => 100755 indra/newview/lltoolbarview.cpp
 mode change 100644 => 100755 indra/newview/lltoolbarview.h
 mode change 100644 => 100755 indra/newview/lltoolbrush.cpp
 mode change 100644 => 100755 indra/newview/lltoolbrush.h
 mode change 100644 => 100755 indra/newview/lltoolcomp.cpp
 mode change 100644 => 100755 indra/newview/lltoolcomp.h
 mode change 100644 => 100755 indra/newview/lltooldraganddrop.cpp
 mode change 100644 => 100755 indra/newview/lltooldraganddrop.h
 mode change 100644 => 100755 indra/newview/lltoolface.cpp
 mode change 100644 => 100755 indra/newview/lltoolface.h
 mode change 100644 => 100755 indra/newview/lltoolfocus.cpp
 mode change 100644 => 100755 indra/newview/lltoolfocus.h
 mode change 100644 => 100755 indra/newview/lltoolgrab.cpp
 mode change 100644 => 100755 indra/newview/lltoolgrab.h
 mode change 100644 => 100755 indra/newview/lltoolgun.cpp
 mode change 100644 => 100755 indra/newview/lltoolgun.h
 mode change 100644 => 100755 indra/newview/lltoolindividual.cpp
 mode change 100644 => 100755 indra/newview/lltoolindividual.h
 mode change 100644 => 100755 indra/newview/lltoolmgr.cpp
 mode change 100644 => 100755 indra/newview/lltoolmgr.h
 mode change 100644 => 100755 indra/newview/lltoolmorph.cpp
 mode change 100644 => 100755 indra/newview/lltoolmorph.h
 mode change 100644 => 100755 indra/newview/lltoolobjpicker.cpp
 mode change 100644 => 100755 indra/newview/lltoolobjpicker.h
 mode change 100644 => 100755 indra/newview/lltoolpie.cpp
 mode change 100644 => 100755 indra/newview/lltoolpie.h
 mode change 100644 => 100755 indra/newview/lltoolpipette.cpp
 mode change 100644 => 100755 indra/newview/lltoolpipette.h
 mode change 100644 => 100755 indra/newview/lltoolplacer.cpp
 mode change 100644 => 100755 indra/newview/lltoolplacer.h
 mode change 100644 => 100755 indra/newview/lltoolselect.cpp
 mode change 100644 => 100755 indra/newview/lltoolselect.h
 mode change 100644 => 100755 indra/newview/lltoolselectland.cpp
 mode change 100644 => 100755 indra/newview/lltoolselectland.h
 mode change 100644 => 100755 indra/newview/lltoolselectrect.cpp
 mode change 100644 => 100755 indra/newview/lltoolselectrect.h
 mode change 100644 => 100755 indra/newview/lltoolview.cpp
 mode change 100644 => 100755 indra/newview/lltoolview.h
 mode change 100644 => 100755 indra/newview/lltracker.cpp
 mode change 100644 => 100755 indra/newview/lltracker.h
 mode change 100644 => 100755 indra/newview/lltransientdockablefloater.cpp
 mode change 100644 => 100755 indra/newview/lltransientdockablefloater.h
 mode change 100644 => 100755 indra/newview/lltransientfloatermgr.cpp
 mode change 100644 => 100755 indra/newview/lltransientfloatermgr.h
 mode change 100644 => 100755 indra/newview/lluiconstants.h
 mode change 100644 => 100755 indra/newview/lluilistener.cpp
 mode change 100644 => 100755 indra/newview/lluilistener.h
 mode change 100644 => 100755 indra/newview/lluploaddialog.cpp
 mode change 100644 => 100755 indra/newview/lluploaddialog.h
 mode change 100644 => 100755 indra/newview/lluploadfloaterobservers.cpp
 mode change 100644 => 100755 indra/newview/lluploadfloaterobservers.h
 mode change 100644 => 100755 indra/newview/llurl.cpp
 mode change 100644 => 100755 indra/newview/llurl.h
 mode change 100644 => 100755 indra/newview/llurldispatcher.cpp
 mode change 100644 => 100755 indra/newview/llurldispatcher.h
 mode change 100644 => 100755 indra/newview/llurldispatcherlistener.cpp
 mode change 100644 => 100755 indra/newview/llurldispatcherlistener.h
 mode change 100644 => 100755 indra/newview/llurlhistory.cpp
 mode change 100644 => 100755 indra/newview/llurlhistory.h
 mode change 100644 => 100755 indra/newview/llurllineeditorctrl.cpp
 mode change 100644 => 100755 indra/newview/llurllineeditorctrl.h
 mode change 100644 => 100755 indra/newview/llurlwhitelist.cpp
 mode change 100644 => 100755 indra/newview/llurlwhitelist.h
 mode change 100644 => 100755 indra/newview/llvectorperfoptions.cpp
 mode change 100644 => 100755 indra/newview/llvectorperfoptions.h
 mode change 100644 => 100755 indra/newview/llversioninfo.cpp
 mode change 100644 => 100755 indra/newview/llversioninfo.h
 mode change 100644 => 100755 indra/newview/llviewchildren.cpp
 mode change 100644 => 100755 indra/newview/llviewchildren.h
 mode change 100644 => 100755 indra/newview/llviewerassetstats.cpp
 mode change 100644 => 100755 indra/newview/llviewerassetstats.h
 mode change 100644 => 100755 indra/newview/llviewerassetstorage.cpp
 mode change 100644 => 100755 indra/newview/llviewerassetstorage.h
 mode change 100644 => 100755 indra/newview/llviewerassettype.cpp
 mode change 100644 => 100755 indra/newview/llviewerassettype.h
 mode change 100644 => 100755 indra/newview/llviewerattachmenu.cpp
 mode change 100644 => 100755 indra/newview/llviewerattachmenu.h
 mode change 100644 => 100755 indra/newview/llvieweraudio.cpp
 mode change 100644 => 100755 indra/newview/llvieweraudio.h
 mode change 100644 => 100755 indra/newview/llviewercamera.cpp
 mode change 100644 => 100755 indra/newview/llviewercamera.h
 mode change 100644 => 100755 indra/newview/llviewerchat.cpp
 mode change 100644 => 100755 indra/newview/llviewerchat.h
 mode change 100644 => 100755 indra/newview/llviewercontrol.cpp
 mode change 100644 => 100755 indra/newview/llviewercontrol.h
 mode change 100644 => 100755 indra/newview/llviewercontrollistener.cpp
 mode change 100644 => 100755 indra/newview/llviewercontrollistener.h
 mode change 100644 => 100755 indra/newview/llviewerdisplay.cpp
 mode change 100644 => 100755 indra/newview/llviewerdisplay.h
 mode change 100644 => 100755 indra/newview/llviewerdisplayname.cpp
 mode change 100644 => 100755 indra/newview/llviewerdisplayname.h
 mode change 100644 => 100755 indra/newview/llviewerfloaterreg.cpp
 mode change 100644 => 100755 indra/newview/llviewerfloaterreg.h
 mode change 100644 => 100755 indra/newview/llviewerfoldertype.h
 mode change 100644 => 100755 indra/newview/llviewergenericmessage.cpp
 mode change 100644 => 100755 indra/newview/llviewergenericmessage.h
 mode change 100644 => 100755 indra/newview/llviewergesture.cpp
 mode change 100644 => 100755 indra/newview/llviewergesture.h
 mode change 100644 => 100755 indra/newview/llviewerhelp.cpp
 mode change 100644 => 100755 indra/newview/llviewerhelp.h
 mode change 100644 => 100755 indra/newview/llviewerhelputil.cpp
 mode change 100644 => 100755 indra/newview/llviewerhelputil.h
 mode change 100644 => 100755 indra/newview/llviewerhome.cpp
 mode change 100644 => 100755 indra/newview/llviewerhome.h
 mode change 100644 => 100755 indra/newview/llviewerinventory.cpp
 mode change 100644 => 100755 indra/newview/llviewerinventory.h
 mode change 100644 => 100755 indra/newview/llviewerjoint.cpp
 mode change 100644 => 100755 indra/newview/llviewerjoint.h
 mode change 100644 => 100755 indra/newview/llviewerjointattachment.cpp
 mode change 100644 => 100755 indra/newview/llviewerjointattachment.h
 mode change 100644 => 100755 indra/newview/llviewerjointmesh.cpp
 mode change 100644 => 100755 indra/newview/llviewerjointmesh.h
 mode change 100644 => 100755 indra/newview/llviewerjoystick.cpp
 mode change 100644 => 100755 indra/newview/llviewerjoystick.h
 mode change 100644 => 100755 indra/newview/llviewerkeyboard.cpp
 mode change 100644 => 100755 indra/newview/llviewerkeyboard.h
 mode change 100644 => 100755 indra/newview/llviewerlayer.cpp
 mode change 100644 => 100755 indra/newview/llviewerlayer.h
 mode change 100644 => 100755 indra/newview/llviewermedia.cpp
 mode change 100644 => 100755 indra/newview/llviewermedia.h
 mode change 100644 => 100755 indra/newview/llviewermedia_streamingaudio.cpp
 mode change 100644 => 100755 indra/newview/llviewermedia_streamingaudio.h
 mode change 100644 => 100755 indra/newview/llviewermediafocus.cpp
 mode change 100644 => 100755 indra/newview/llviewermediafocus.h
 mode change 100644 => 100755 indra/newview/llviewermediaobserver.h
 mode change 100644 => 100755 indra/newview/llviewermenu.cpp
 mode change 100644 => 100755 indra/newview/llviewermenu.h
 mode change 100644 => 100755 indra/newview/llviewermenufile.cpp
 mode change 100644 => 100755 indra/newview/llviewermenufile.h
 mode change 100644 => 100755 indra/newview/llviewermessage.h
 mode change 100644 => 100755 indra/newview/llviewernetwork.cpp
 mode change 100644 => 100755 indra/newview/llviewernetwork.h
 mode change 100644 => 100755 indra/newview/llviewerobject.cpp
 mode change 100644 => 100755 indra/newview/llviewerobject.h
 mode change 100644 => 100755 indra/newview/llviewerobjectlist.cpp
 mode change 100644 => 100755 indra/newview/llviewerobjectlist.h
 mode change 100644 => 100755 indra/newview/llviewerparcelmedia.cpp
 mode change 100644 => 100755 indra/newview/llviewerparcelmedia.h
 mode change 100644 => 100755 indra/newview/llviewerparcelmediaautoplay.cpp
 mode change 100644 => 100755 indra/newview/llviewerparcelmediaautoplay.h
 mode change 100644 => 100755 indra/newview/llviewerparcelmgr.cpp
 mode change 100644 => 100755 indra/newview/llviewerparcelmgr.h
 mode change 100644 => 100755 indra/newview/llviewerparceloverlay.cpp
 mode change 100644 => 100755 indra/newview/llviewerparceloverlay.h
 mode change 100644 => 100755 indra/newview/llviewerpartsim.cpp
 mode change 100644 => 100755 indra/newview/llviewerpartsim.h
 mode change 100644 => 100755 indra/newview/llviewerpartsource.cpp
 mode change 100644 => 100755 indra/newview/llviewerpartsource.h
 mode change 100644 => 100755 indra/newview/llviewerprecompiledheaders.cpp
 mode change 100644 => 100755 indra/newview/llviewerprecompiledheaders.h
 mode change 100644 => 100755 indra/newview/llviewerregion.cpp
 mode change 100644 => 100755 indra/newview/llviewerregion.h
 mode change 100644 => 100755 indra/newview/llviewershadermgr.cpp
 mode change 100644 => 100755 indra/newview/llviewershadermgr.h
 mode change 100644 => 100755 indra/newview/llviewerstats.cpp
 mode change 100644 => 100755 indra/newview/llviewerstats.h
 mode change 100644 => 100755 indra/newview/llviewerstatsrecorder.cpp
 mode change 100644 => 100755 indra/newview/llviewerstatsrecorder.h
 mode change 100644 => 100755 indra/newview/llviewertexteditor.cpp
 mode change 100644 => 100755 indra/newview/llviewertexteditor.h
 mode change 100644 => 100755 indra/newview/llviewertexture.cpp
 mode change 100644 => 100755 indra/newview/llviewertexture.h
 mode change 100644 => 100755 indra/newview/llviewertextureanim.cpp
 mode change 100644 => 100755 indra/newview/llviewertextureanim.h
 mode change 100644 => 100755 indra/newview/llviewertexturelist.cpp
 mode change 100644 => 100755 indra/newview/llviewertexturelist.h
 mode change 100644 => 100755 indra/newview/llviewerthrottle.cpp
 mode change 100644 => 100755 indra/newview/llviewerthrottle.h
 mode change 100644 => 100755 indra/newview/llviewervisualparam.cpp
 mode change 100644 => 100755 indra/newview/llviewervisualparam.h
 mode change 100644 => 100755 indra/newview/llviewerwindow.h
 mode change 100644 => 100755 indra/newview/llviewerwindowlistener.cpp
 mode change 100644 => 100755 indra/newview/llviewerwindowlistener.h
 mode change 100644 => 100755 indra/newview/llvlcomposition.cpp
 mode change 100644 => 100755 indra/newview/llvlcomposition.h
 mode change 100644 => 100755 indra/newview/llvlmanager.cpp
 mode change 100644 => 100755 indra/newview/llvlmanager.h
 mode change 100644 => 100755 indra/newview/llvoavatar.cpp
 mode change 100644 => 100755 indra/newview/llvoavatar.h
 mode change 100644 => 100755 indra/newview/llvoavatardefines.cpp
 mode change 100644 => 100755 indra/newview/llvoavatardefines.h
 mode change 100644 => 100755 indra/newview/llvoavatarself.cpp
 mode change 100644 => 100755 indra/newview/llvoavatarself.h
 mode change 100644 => 100755 indra/newview/llvocache.cpp
 mode change 100644 => 100755 indra/newview/llvocache.h
 mode change 100644 => 100755 indra/newview/llvograss.cpp
 mode change 100644 => 100755 indra/newview/llvograss.h
 mode change 100644 => 100755 indra/newview/llvoground.cpp
 mode change 100644 => 100755 indra/newview/llvoground.h
 mode change 100644 => 100755 indra/newview/llvoicecallhandler.cpp
 mode change 100644 => 100755 indra/newview/llvoicechannel.cpp
 mode change 100644 => 100755 indra/newview/llvoicechannel.h
 mode change 100644 => 100755 indra/newview/llvoiceclient.cpp
 mode change 100644 => 100755 indra/newview/llvoiceclient.h
 mode change 100644 => 100755 indra/newview/llvoicevisualizer.cpp
 mode change 100644 => 100755 indra/newview/llvoicevisualizer.h
 mode change 100644 => 100755 indra/newview/llvoicevivox.cpp
 mode change 100644 => 100755 indra/newview/llvoicevivox.h
 mode change 100644 => 100755 indra/newview/llvoinventorylistener.cpp
 mode change 100644 => 100755 indra/newview/llvoinventorylistener.h
 mode change 100644 => 100755 indra/newview/llvopartgroup.cpp
 mode change 100644 => 100755 indra/newview/llvopartgroup.h
 mode change 100644 => 100755 indra/newview/llvosky.cpp
 mode change 100644 => 100755 indra/newview/llvosky.h
 mode change 100644 => 100755 indra/newview/llvosurfacepatch.cpp
 mode change 100644 => 100755 indra/newview/llvosurfacepatch.h
 mode change 100644 => 100755 indra/newview/llvotree.cpp
 mode change 100644 => 100755 indra/newview/llvotree.h
 mode change 100644 => 100755 indra/newview/llvotreenew.h
 mode change 100644 => 100755 indra/newview/llvovolume.cpp
 mode change 100644 => 100755 indra/newview/llvovolume.h
 mode change 100644 => 100755 indra/newview/llvowater.cpp
 mode change 100644 => 100755 indra/newview/llvowater.h
 mode change 100644 => 100755 indra/newview/llvowlsky.cpp
 mode change 100644 => 100755 indra/newview/llvowlsky.h
 mode change 100644 => 100755 indra/newview/llwatchdog.cpp
 mode change 100644 => 100755 indra/newview/llwatchdog.h
 mode change 100644 => 100755 indra/newview/llwaterparammanager.cpp
 mode change 100644 => 100755 indra/newview/llwaterparammanager.h
 mode change 100644 => 100755 indra/newview/llwaterparamset.cpp
 mode change 100644 => 100755 indra/newview/llwaterparamset.h
 mode change 100644 => 100755 indra/newview/llwearable.cpp
 mode change 100644 => 100755 indra/newview/llwearable.h
 mode change 100644 => 100755 indra/newview/llwearableitemslist.cpp
 mode change 100644 => 100755 indra/newview/llwearableitemslist.h
 mode change 100644 => 100755 indra/newview/llwearablelist.cpp
 mode change 100644 => 100755 indra/newview/llwearablelist.h
 mode change 100644 => 100755 indra/newview/llwearabletype.cpp
 mode change 100644 => 100755 indra/newview/llwearabletype.h
 mode change 100644 => 100755 indra/newview/llweb.cpp
 mode change 100644 => 100755 indra/newview/llweb.h
 mode change 100644 => 100755 indra/newview/llwebprofile.cpp
 mode change 100644 => 100755 indra/newview/llwebprofile.h
 mode change 100644 => 100755 indra/newview/llwebsharing.cpp
 mode change 100644 => 100755 indra/newview/llwebsharing.h
 mode change 100644 => 100755 indra/newview/llwind.cpp
 mode change 100644 => 100755 indra/newview/llwind.h
 mode change 100644 => 100755 indra/newview/llwindebug.cpp
 mode change 100644 => 100755 indra/newview/llwindebug.h
 mode change 100644 => 100755 indra/newview/llwindowlistener.cpp
 mode change 100644 => 100755 indra/newview/llwindowlistener.h
 mode change 100644 => 100755 indra/newview/llwlanimator.cpp
 mode change 100644 => 100755 indra/newview/llwlanimator.h
 mode change 100644 => 100755 indra/newview/llwldaycycle.cpp
 mode change 100644 => 100755 indra/newview/llwldaycycle.h
 mode change 100644 => 100755 indra/newview/llwlhandlers.cpp
 mode change 100644 => 100755 indra/newview/llwlhandlers.h
 mode change 100644 => 100755 indra/newview/llwlparammanager.cpp
 mode change 100644 => 100755 indra/newview/llwlparammanager.h
 mode change 100644 => 100755 indra/newview/llwlparamset.cpp
 mode change 100644 => 100755 indra/newview/llwlparamset.h
 mode change 100644 => 100755 indra/newview/llworld.cpp
 mode change 100644 => 100755 indra/newview/llworld.h
 mode change 100644 => 100755 indra/newview/llworldmap.cpp
 mode change 100644 => 100755 indra/newview/llworldmap.h
 mode change 100644 => 100755 indra/newview/llworldmapmessage.cpp
 mode change 100644 => 100755 indra/newview/llworldmapmessage.h
 mode change 100644 => 100755 indra/newview/llworldmapview.cpp
 mode change 100644 => 100755 indra/newview/llworldmapview.h
 mode change 100644 => 100755 indra/newview/llworldmipmap.cpp
 mode change 100644 => 100755 indra/newview/llworldmipmap.h
 mode change 100644 => 100755 indra/newview/llxmlrpclistener.cpp
 mode change 100644 => 100755 indra/newview/llxmlrpclistener.h
 mode change 100644 => 100755 indra/newview/llxmlrpctransaction.cpp
 mode change 100644 => 100755 indra/newview/llxmlrpctransaction.h
 mode change 100644 => 100755 indra/newview/macmain.h
 mode change 100644 => 100755 indra/newview/macutil_Prefix.h
 mode change 100644 => 100755 indra/newview/macview.r
 mode change 100644 => 100755 indra/newview/macview_Prefix.h
 mode change 100644 => 100755 indra/newview/nl.lproj/language.txt
 mode change 100644 => 100755 indra/newview/noise.cpp
 mode change 100644 => 100755 indra/newview/noise.h
 mode change 100644 => 100755 indra/newview/pipeline.cpp
 mode change 100644 => 100755 indra/newview/pipeline.h
 mode change 100644 => 100755 indra/newview/pl.lproj/language.txt
 mode change 100644 => 100755 indra/newview/pt.lproj/language.txt
 mode change 100644 => 100755 indra/newview/res-sdl/arrow.BMP
 mode change 100644 => 100755 indra/newview/res-sdl/arrowcop.BMP
 mode change 100644 => 100755 indra/newview/res-sdl/arrowcopmulti.BMP
 mode change 100644 => 100755 indra/newview/res-sdl/arrowdrag.BMP
 mode change 100644 => 100755 indra/newview/res-sdl/circleandline.BMP
 mode change 100644 => 100755 indra/newview/res-sdl/cross.BMP
 mode change 100644 => 100755 indra/newview/res-sdl/hand.BMP
 mode change 100644 => 100755 indra/newview/res-sdl/ibeam.BMP
 mode change 100644 => 100755 indra/newview/res-sdl/llarrow.BMP
 mode change 100644 => 100755 indra/newview/res-sdl/llarrowdrag.BMP
 mode change 100644 => 100755 indra/newview/res-sdl/llarrowdragmulti.BMP
 mode change 100644 => 100755 indra/newview/res-sdl/llarrowlocked.BMP
 mode change 100644 => 100755 indra/newview/res-sdl/llgrablocked.BMP
 mode change 100644 => 100755 indra/newview/res-sdl/llno.BMP
 mode change 100644 => 100755 indra/newview/res-sdl/llnolocked.BMP
 mode change 100644 => 100755 indra/newview/res-sdl/lltoolcamera.BMP
 mode change 100644 => 100755 indra/newview/res-sdl/lltoolcreate.BMP
 mode change 100644 => 100755 indra/newview/res-sdl/lltoolfocus.BMP
 mode change 100644 => 100755 indra/newview/res-sdl/lltoolgrab.BMP
 mode change 100644 => 100755 indra/newview/res-sdl/lltoolland.BMP
 mode change 100644 => 100755 indra/newview/res-sdl/lltoolpan.BMP
 mode change 100644 => 100755 indra/newview/res-sdl/lltoolpathfinding.BMP
 mode change 100644 => 100755 indra/newview/res-sdl/lltoolpathfindingpathend.BMP
 mode change 100644 => 100755 indra/newview/res-sdl/lltoolpathfindingpathendadd.BMP
 mode change 100644 => 100755 indra/newview/res-sdl/lltoolpathfindingpathstart.BMP
 mode change 100644 => 100755 indra/newview/res-sdl/lltoolpathfindingpathstartadd.BMP
 mode change 100644 => 100755 indra/newview/res-sdl/lltoolpipette.BMP
 mode change 100644 => 100755 indra/newview/res-sdl/lltoolrotate.BMP
 mode change 100644 => 100755 indra/newview/res-sdl/lltoolscale.BMP
 mode change 100644 => 100755 indra/newview/res-sdl/lltooltranslate.BMP
 mode change 100644 => 100755 indra/newview/res-sdl/lltoolzoomin.BMP
 mode change 100644 => 100755 indra/newview/res-sdl/lltoolzoomout.BMP
 mode change 100644 => 100755 indra/newview/res-sdl/sizenesw.BMP
 mode change 100644 => 100755 indra/newview/res-sdl/sizens.BMP
 mode change 100644 => 100755 indra/newview/res-sdl/sizenwse.BMP
 mode change 100644 => 100755 indra/newview/res-sdl/sizewe.BMP
 mode change 100644 => 100755 indra/newview/res-sdl/toolbuy.BMP
 mode change 100644 => 100755 indra/newview/res-sdl/toolmediaopen.BMP
 mode change 100644 => 100755 indra/newview/res-sdl/toolopen.BMP
 mode change 100644 => 100755 indra/newview/res-sdl/toolpause.BMP
 mode change 100644 => 100755 indra/newview/res-sdl/toolpickobject.BMP
 mode change 100644 => 100755 indra/newview/res-sdl/toolpickobject2.BMP
 mode change 100644 => 100755 indra/newview/res-sdl/toolpickobject3.BMP
 mode change 100644 => 100755 indra/newview/res-sdl/toolplay.BMP
 mode change 100644 => 100755 indra/newview/res-sdl/toolsit.BMP
 mode change 100644 => 100755 indra/newview/res-sdl/wait.BMP
 mode change 100644 => 100755 indra/newview/res-sdl/working.BMP
 mode change 100644 => 100755 indra/newview/res/arrow.cur
 mode change 100644 => 100755 indra/newview/res/arrowcop.cur
 mode change 100644 => 100755 indra/newview/res/arrowcopmulti.cur
 mode change 100644 => 100755 indra/newview/res/arrowdrag.cur
 mode change 100644 => 100755 indra/newview/res/bitmap2.bmp
 mode change 100644 => 100755 indra/newview/res/circleandline.cur
 mode change 100644 => 100755 indra/newview/res/have_artwork_bundle.marker
 mode change 100644 => 100755 indra/newview/res/icon1.ico
 mode change 100644 => 100755 indra/newview/res/install_icon.BMP
 mode change 100644 => 100755 indra/newview/res/llarrow.cur
 mode change 100644 => 100755 indra/newview/res/llarrowdrag.cur
 mode change 100644 => 100755 indra/newview/res/llarrowdragmulti.cur
 mode change 100644 => 100755 indra/newview/res/llarrowlocked.cur
 mode change 100644 => 100755 indra/newview/res/llgrablocked.cur
 mode change 100644 => 100755 indra/newview/res/llno.cur
 mode change 100644 => 100755 indra/newview/res/llnolocked.cur
 mode change 100644 => 100755 indra/newview/res/lltoolcamera.cur
 mode change 100644 => 100755 indra/newview/res/lltoolcreate.cur
 mode change 100644 => 100755 indra/newview/res/lltoolfocus.cur
 mode change 100644 => 100755 indra/newview/res/lltoolgrab.cur
 mode change 100644 => 100755 indra/newview/res/lltoolland.cur
 mode change 100644 => 100755 indra/newview/res/lltoolpan.cur
 mode change 100644 => 100755 indra/newview/res/lltoolpathfinding.cur
 mode change 100644 => 100755 indra/newview/res/lltoolpathfindingpathend.cur
 mode change 100644 => 100755 indra/newview/res/lltoolpathfindingpathendadd.cur
 mode change 100644 => 100755 indra/newview/res/lltoolpathfindingpathstart.cur
 mode change 100644 => 100755 indra/newview/res/lltoolpathfindingpathstartadd.cur
 mode change 100644 => 100755 indra/newview/res/lltoolpipette.cur
 mode change 100644 => 100755 indra/newview/res/lltoolrotate.cur
 mode change 100644 => 100755 indra/newview/res/lltoolscale.cur
 mode change 100644 => 100755 indra/newview/res/lltooltranslate.cur
 mode change 100644 => 100755 indra/newview/res/lltoolzoomin.cur
 mode change 100644 => 100755 indra/newview/res/lltoolzoomout.cur
 mode change 100644 => 100755 indra/newview/res/loginbackground.bmp
 mode change 100644 => 100755 indra/newview/res/resource.h
 mode change 100644 => 100755 indra/newview/res/toolbuy.cur
 mode change 100644 => 100755 indra/newview/res/toolmediaopen.cur
 mode change 100644 => 100755 indra/newview/res/toolopen.cur
 mode change 100644 => 100755 indra/newview/res/toolpause.cur
 mode change 100644 => 100755 indra/newview/res/toolpickobject.cur
 mode change 100644 => 100755 indra/newview/res/toolpickobject2.cur
 mode change 100644 => 100755 indra/newview/res/toolpickobject3.cur
 mode change 100644 => 100755 indra/newview/res/toolpipette.cur
 mode change 100644 => 100755 indra/newview/res/toolplay.cur
 mode change 100644 => 100755 indra/newview/res/toolsit.cur
 mode change 100644 => 100755 indra/newview/res/uninstall_icon.BMP
 mode change 100644 => 100755 indra/newview/res/viewerRes.rc
 mode change 100644 => 100755 indra/newview/ru.lproj/language.txt
 mode change 100644 => 100755 indra/newview/secondlife-i686.supp
 mode change 100644 => 100755 indra/newview/secondlife.icns
 mode change 100644 => 100755 indra/newview/secondlife_firstlook.icns
 mode change 100644 => 100755 indra/newview/skins/default/colors.xml
 mode change 100644 => 100755 indra/newview/skins/default/html/btn_purplepill_bg.png
 mode change 100644 => 100755 indra/newview/skins/default/html/da/loading/loading.html
 mode change 100644 => 100755 indra/newview/skins/default/html/de/loading-error/index.html
 mode change 100644 => 100755 indra/newview/skins/default/html/de/loading/loading.html
 mode change 100644 => 100755 indra/newview/skins/default/html/en-us/help-offline/index.html
 mode change 100644 => 100755 indra/newview/skins/default/html/en-us/loading-error/index.html
 mode change 100644 => 100755 indra/newview/skins/default/html/en-us/loading/loading.html
 mode change 100644 => 100755 indra/newview/skins/default/html/en-us/loading/sl_logo_rotate_black.gif
 mode change 100644 => 100755 indra/newview/skins/default/html/es/loading-error/index.html
 mode change 100644 => 100755 indra/newview/skins/default/html/es/loading/loading.html
 mode change 100644 => 100755 indra/newview/skins/default/html/fr/loading-error/index.html
 mode change 100644 => 100755 indra/newview/skins/default/html/fr/loading/loading.html
 mode change 100644 => 100755 indra/newview/skins/default/html/hu/loading/loading.html
 mode change 100644 => 100755 indra/newview/skins/default/html/it/loading/loading.html
 mode change 100644 => 100755 indra/newview/skins/default/html/ja/loading-error/index.html
 mode change 100644 => 100755 indra/newview/skins/default/html/ja/loading/loading.html
 mode change 100644 => 100755 indra/newview/skins/default/html/ko/loading-error/index.html
 mode change 100644 => 100755 indra/newview/skins/default/html/nl/loading/loading.html
 mode change 100644 => 100755 indra/newview/skins/default/html/pl/loading/loading.html
 mode change 100644 => 100755 indra/newview/skins/default/html/pt/loading-error/index.html
 mode change 100644 => 100755 indra/newview/skins/default/html/pt/loading/loading.html
 mode change 100644 => 100755 indra/newview/skins/default/html/ru/loading/loading.html
 mode change 100644 => 100755 indra/newview/skins/default/html/tr/loading/loading.html
 mode change 100644 => 100755 indra/newview/skins/default/html/uk/loading/loading.html
 mode change 100644 => 100755 indra/newview/skins/default/html/unabletoconnect.png
 mode change 100644 => 100755 indra/newview/skins/default/html/zh/loading-error/index.html
 mode change 100644 => 100755 indra/newview/skins/default/html/zh/loading/loading.html
 mode change 100644 => 100755 indra/newview/skins/default/textures/Blank.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/Rounded_Rect.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/alpha_gradient.tga
 mode change 100644 => 100755 indra/newview/skins/default/textures/alpha_gradient_2d.j2c
 mode change 100644 => 100755 indra/newview/skins/default/textures/arrow_down.tga
 mode change 100644 => 100755 indra/newview/skins/default/textures/arrow_up.tga
 mode change 100644 => 100755 indra/newview/skins/default/textures/avatar_thumb_bkgrnd.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/badge_note.j2c
 mode change 100644 => 100755 indra/newview/skins/default/textures/badge_ok.j2c
 mode change 100644 => 100755 indra/newview/skins/default/textures/badge_warn.j2c
 mode change 100644 => 100755 indra/newview/skins/default/textures/bottomtray/Cam_Avatar_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/bottomtray/Cam_FreeCam_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/bottomtray/Cam_Orbit_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/bottomtray/Cam_Pan_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/bottomtray/Cam_Preset_Back_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/bottomtray/Cam_Preset_Back_On.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/bottomtray/Cam_Preset_Eye_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/bottomtray/Cam_Preset_Front_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/bottomtray/Cam_Preset_Front_On.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/bottomtray/Cam_Preset_Side_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/bottomtray/Cam_Preset_Side_On.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/bottomtray/Cam_Rotate_In.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/bottomtray/Cam_Rotate_Out.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/bottomtray/Cam_Tracking_In.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/bottomtray/Cam_Tracking_Out.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/bottomtray/ChatBarHandle.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/bottomtray/DownArrow.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/bottomtray/Mouselook_View_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/bottomtray/Mouselook_View_On.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/bottomtray/Move_Fly_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/bottomtray/Move_Run_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/bottomtray/Move_Walk_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/bottomtray/Movement_Backward_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/bottomtray/Movement_Backward_On.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/bottomtray/Movement_Down_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/bottomtray/Movement_Down_On.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/bottomtray/Movement_Forward_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/bottomtray/Movement_Forward_On.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/bottomtray/Movement_Left_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/bottomtray/Movement_Left_On.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/bottomtray/Movement_Right_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/bottomtray/Movement_Right_On.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/bottomtray/Movement_TurnLeft_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/bottomtray/Movement_TurnLeft_On.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/bottomtray/Movement_TurnRight_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/bottomtray/Movement_TurnRight_On.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/bottomtray/Movement_Up_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/bottomtray/Movement_Up_On.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/bottomtray/Notices_Unread.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/bottomtray/Object_View_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/bottomtray/Object_View_On.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/bottomtray/PanOrbit_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/bottomtray/Snapshot_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/bottomtray/Unread_Chiclet.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/bottomtray/VoicePTT_Lvl1.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/bottomtray/VoicePTT_Lvl2.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/bottomtray/VoicePTT_Lvl3.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/bottomtray/VoicePTT_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/bottomtray/VoicePTT_On.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/bottomtray/WellButton_Lit.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/bottomtray/WellButton_Lit_Selected.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/build/Object_Cone.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/build/Object_Cone_Selected.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/build/Object_Cube.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/build/Object_Cube_Selected.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/build/Object_Cylinder.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/build/Object_Cylinder_Selected.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/build/Object_Grass.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/build/Object_Grass_Selected.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/build/Object_Hemi_Cone.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/build/Object_Hemi_Cone_Selected.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/build/Object_Hemi_Cylinder.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/build/Object_Hemi_Cylinder_Selected.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/build/Object_Hemi_Sphere.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/build/Object_Hemi_Sphere_Selected.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/build/Object_Prism.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/build/Object_Prism_Selected.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/build/Object_Pyramid.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/build/Object_Pyramid_Selected.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/build/Object_Ring.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/build/Object_Ring_Selected.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/build/Object_Sphere.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/build/Object_Sphere_Selected.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/build/Object_Tetrahedron.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/build/Object_Tetrahedron_Selected.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/build/Object_Torus.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/build/Object_Torus_Selected.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/build/Object_Tree.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/build/Object_Tree_Selected.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/build/Object_Tube.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/build/Object_Tube_Selected.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/build/Tool_Create.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/build/Tool_Dozer.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/build/Tool_Face.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/build/Tool_Grab.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/build/Tool_Zoom.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/button_anim_pause.tga
 mode change 100644 => 100755 indra/newview/skins/default/textures/button_anim_pause_selected.tga
 mode change 100644 => 100755 indra/newview/skins/default/textures/button_anim_play.tga
 mode change 100644 => 100755 indra/newview/skins/default/textures/button_anim_play_selected.tga
 mode change 100644 => 100755 indra/newview/skins/default/textures/checker.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/cloud-particle.j2c
 mode change 100644 => 100755 indra/newview/skins/default/textures/color_swatch_alpha.tga
 mode change 100644 => 100755 indra/newview/skins/default/textures/containers/Accordion_ArrowClosed_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/containers/Accordion_ArrowClosed_Press.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/containers/Accordion_ArrowOpened_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/containers/Accordion_ArrowOpened_Press.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/containers/Accordion_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/containers/Accordion_Over.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/containers/Accordion_Press.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/containers/Accordion_Selected.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/containers/Container.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/containers/TabTop_Left_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/containers/TabTop_Left_Selected.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/containers/TabTop_Middle_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/containers/TabTop_Middle_Selected.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/containers/TabTop_Right_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/containers/TabTop_Right_Selected.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/containers/Toolbar_Left_Flash.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/containers/Toolbar_Left_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/containers/Toolbar_Left_Over.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/containers/Toolbar_Left_Selected.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/containers/Toolbar_Middle_Flash.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/containers/Toolbar_Middle_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/containers/Toolbar_Middle_Over.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/containers/Toolbar_Middle_Selected.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/containers/Toolbar_Right_Flash.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/containers/Toolbar_Right_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/containers/Toolbar_Right_Over.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/containers/Toolbar_Right_Selected.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/crosshairs.tga
 mode change 100644 => 100755 indra/newview/skins/default/textures/default_land_picture.j2c
 mode change 100644 => 100755 indra/newview/skins/default/textures/default_profile_picture.j2c
 mode change 100644 => 100755 indra/newview/skins/default/textures/direction_arrow.tga
 mode change 100644 => 100755 indra/newview/skins/default/textures/down_arrow.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/eye_button_active.tga
 mode change 100644 => 100755 indra/newview/skins/default/textures/eye_button_inactive.tga
 mode change 100644 => 100755 indra/newview/skins/default/textures/folder_arrow.tga
 mode change 100644 => 100755 indra/newview/skins/default/textures/foot_shadow.j2c
 mode change 100644 => 100755 indra/newview/skins/default/textures/green_checkmark.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icn_media_movie.tga
 mode change 100644 => 100755 indra/newview/skins/default/textures/icn_media_web.tga
 mode change 100644 => 100755 indra/newview/skins/default/textures/icon_avatar_offline.tga
 mode change 100644 => 100755 indra/newview/skins/default/textures/icon_avatar_online.tga
 mode change 100644 => 100755 indra/newview/skins/default/textures/icon_diurnal.tga
 mode change 100644 => 100755 indra/newview/skins/default/textures/icon_for_sale_adult.tga
 mode change 100644 => 100755 indra/newview/skins/default/textures/icon_top_pick.tga
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/AddItem_Disabled.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/AddItem_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/AddItem_Press.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/AudioMute_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/AudioMute_Over.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Audio_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Audio_Press.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/BackArrow_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Conv_log_inbox.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Copy.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/DownArrow_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Edit_Wrench.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/ExternalBrowser_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Female.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/ForSale_Badge.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/ForwardArrow_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/ForwardArrow_Press.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Generic_Group.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Generic_Group_Large.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Generic_Object_Small.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Generic_Person.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Generic_Person_Large.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Hierarchy_View_Disabled.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Hierarchy_View_On.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Icon_For_Sale.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Info.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Info_Over.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Info_Small.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Inv_Alpha.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Inv_Animation.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Inv_BodyShape.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Inv_CallingCard.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Inv_Clothing.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Inv_Eye.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Inv_FolderClosed.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Inv_FolderOpen.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Inv_Gesture.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Inv_Gloves.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Inv_Hair.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Inv_Invalid.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Inv_Jacket.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Inv_Landmark.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Inv_Link.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Inv_LinkFolder.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Inv_LinkItem.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Inv_LookFolderClosed.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Inv_LookFolderOpen.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Inv_LostClosed.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Inv_LostOpen.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Inv_Mesh.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Inv_Notecard.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Inv_Object.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Inv_Object_Multi.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Inv_Pants.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Inv_Physics.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Inv_Script.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Inv_Shirt.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Inv_Shoe.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Inv_Skin.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Inv_Skirt.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Inv_Snapshot.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Inv_Socks.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Inv_Sound.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Inv_SysClosed.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Inv_SysOpen.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Inv_Tattoo.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Inv_Texture.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Inv_TrashClosed.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Inv_TrashOpen.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Inv_Underpants.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Inv_Undershirt.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/List_View_Disabled.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/List_View_On.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Lock.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Locked_Icon.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Male.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Microphone_On.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/MinusItem_Disabled.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/MinusItem_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/MinusItem_Press.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/OptionsMenu_Disabled.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/OptionsMenu_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/OptionsMenu_Press.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/OutboxPush_Disabled.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/OutboxPush_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/OutboxPush_On.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/OutboxPush_On_Over.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/OutboxPush_Over.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/OutboxPush_Press.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/OutboxPush_Progress_1.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/OutboxPush_Progress_2.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/OutboxPush_Progress_3.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/OutboxPush_Progress_4.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/OutboxPush_Progress_5.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/OutboxPush_Progress_6.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/OutboxPush_Selected.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/OutboxPush_Selected_Disabled.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/OutboxPush_Selected_Over.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/OutboxPush_Selected_Press.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Parcel_BuildNo_Dark.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Parcel_BuildNo_Light.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Parcel_Build_Dark.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Parcel_DamageNo_Dark.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Parcel_Damage_Dark.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Parcel_Exp_Color.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Parcel_FlyNo_Dark.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Parcel_FlyNo_Light.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Parcel_Fly_Dark.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Parcel_ForSale_Light.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Parcel_Health_Dark.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Parcel_M_Dark.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Parcel_M_Light.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Parcel_PG_Dark.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Parcel_PG_Light.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Parcel_PushNo_Dark.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Parcel_PushNo_Light.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Parcel_Push_Dark.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Parcel_R_Dark.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Parcel_R_Light.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Parcel_ScriptsNo_Dark.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Parcel_Scripts_Dark.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Parcel_SeeAVsOff_Dark.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Parcel_SeeAVsOff_Light.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Parcel_SeeAVsOn_Dark.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Parcel_SeeAVsOn_Light.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Parcel_VoiceNo_Dark.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Parcel_VoiceNo_Light.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Parcel_Voice_Dark.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Parcel_Voice_Light.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Pathfinding_Dirty.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Pathfinding_Disabled.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Pause_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Pause_Over.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Pause_Press.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Person_Check.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Person_Star.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Play_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Play_Over.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Play_Press.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Progress_1.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Progress_10.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Progress_11.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Progress_12.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Progress_2.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Progress_3.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Progress_4.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Progress_5.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Progress_6.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Progress_7.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Progress_8.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Progress_9.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Refresh_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/SL_Logo.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Search_Icon.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Shirt_Large.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Shop.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/SkipBackward_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/SkipForward_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/StopReload_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/StopReload_Over.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Stop_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Sync_Disabled.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Sync_Enabled.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Sync_Progress_1.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Sync_Progress_2.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Sync_Progress_3.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Sync_Progress_4.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Sync_Progress_5.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Sync_Progress_6.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/TrashItem_Disabled.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/TrashItem_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/TrashItem_Press.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/UnZoom_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/UpArrow_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/VoicePTT_Lvl1.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/VoicePTT_Lvl2.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/VoicePTT_Lvl3.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/VoicePTT_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/VoicePTT_On.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Web_Profile_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/YouAreHere_Badge.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/Zoom_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/avaline_default_icon.jpg
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/back_arrow_off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/back_arrow_over.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/back_arrow_press.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/check_mark.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/collapse_to_one_line.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/edit_mine.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/edit_theirs.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/expand_one_liner.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/nearby_chat_icon.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/object_icon.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/pop_up_caution.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/see_me_online.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/see_on_map.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/icons/unknown_icon.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/jump_left_in.tga
 mode change 100644 => 100755 indra/newview/skins/default/textures/jump_left_out.tga
 mode change 100644 => 100755 indra/newview/skins/default/textures/jump_right_in.tga
 mode change 100644 => 100755 indra/newview/skins/default/textures/jump_right_out.tga
 mode change 100644 => 100755 indra/newview/skins/default/textures/lag_status_critical.tga
 mode change 100644 => 100755 indra/newview/skins/default/textures/lag_status_good.tga
 mode change 100644 => 100755 indra/newview/skins/default/textures/lag_status_warning.tga
 mode change 100644 => 100755 indra/newview/skins/default/textures/legend.tga
 mode change 100644 => 100755 indra/newview/skins/default/textures/locked_image.j2c
 mode change 100644 => 100755 indra/newview/skins/default/textures/map_avatar_16.tga
 mode change 100644 => 100755 indra/newview/skins/default/textures/map_avatar_32.tga
 mode change 100644 => 100755 indra/newview/skins/default/textures/map_avatar_8.tga
 mode change 100644 => 100755 indra/newview/skins/default/textures/map_avatar_above_32.tga
 mode change 100644 => 100755 indra/newview/skins/default/textures/map_avatar_below_32.tga
 mode change 100644 => 100755 indra/newview/skins/default/textures/map_avatar_unknown_32.tga
 mode change 100644 => 100755 indra/newview/skins/default/textures/map_avatar_you_32.tga
 mode change 100644 => 100755 indra/newview/skins/default/textures/map_event.tga
 mode change 100644 => 100755 indra/newview/skins/default/textures/map_home.tga
 mode change 100644 => 100755 indra/newview/skins/default/textures/map_infohub.tga
 mode change 100644 => 100755 indra/newview/skins/default/textures/map_telehub.tga
 mode change 100644 => 100755 indra/newview/skins/default/textures/map_track_16.tga
 mode change 100644 => 100755 indra/newview/skins/default/textures/menu_separator.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/missing_asset.tga
 mode change 100644 => 100755 indra/newview/skins/default/textures/model_wizard/progress_bar_bg.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/model_wizard/progress_light.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/navbar/Arrow_Left_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/navbar/Arrow_Right_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/navbar/BuyArrow_Over.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/navbar/BuyArrow_Press.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/navbar/Favorite_Link_Over.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/navbar/Favorite_Star_Active.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/navbar/Favorite_Star_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/navbar/Favorite_Star_Over.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/navbar/Favorite_Star_Press.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/navbar/FileMenu_Divider.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/navbar/Flag.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/navbar/Help_Press.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/navbar/Home_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/navbar/Info_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/navbar/Info_Over.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/navbar/Info_Press.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/navbar/Lock.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/navbar/NavBar_BG.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/navbar/NavBar_BG_NoFav_Bevel.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/navbar/NavBar_BG_NoNav_Bevel.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/navbar/Row_Selection.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/navbar/Search.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/navbar/separator.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/notify_caution_icon.tga
 mode change 100644 => 100755 indra/newview/skins/default/textures/pixiesmall.j2c
 mode change 100644 => 100755 indra/newview/skins/default/textures/red_x.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/rounded_square.j2c
 mode change 100644 => 100755 indra/newview/skins/default/textures/script_error.j2c
 mode change 100644 => 100755 indra/newview/skins/default/textures/silhouette.j2c
 mode change 100644 => 100755 indra/newview/skins/default/textures/slim_icon_16_viewer.tga
 mode change 100644 => 100755 indra/newview/skins/default/textures/snapshot_download.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/snapshot_email.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/spacer24.tga
 mode change 100644 => 100755 indra/newview/skins/default/textures/tabarea.tga
 mode change 100644 => 100755 indra/newview/skins/default/textures/taskpanel/Activate_Checkmark.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/taskpanel/Sidebar_Icon_Dock_Foreground.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/taskpanel/Sidebar_Icon_Dock_Press.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/taskpanel/Sidebar_Icon_Undock_Foreground.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/taskpanel/Sidebar_Icon_Undock_Press.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/taskpanel/TabIcon_Close_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/taskpanel/TabIcon_Home_Selected.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/taskpanel/TabIcon_Me_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/taskpanel/TabIcon_Open_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/taskpanel/TabIcon_People_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/taskpanel/TabIcon_Places_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/taskpanel/TabIcon_Things_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/taskpanel/TaskPanel_Tab_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/taskpanel/TaskPanel_Tab_Selected.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/tearoff_pressed.tga
 mode change 100644 => 100755 indra/newview/skins/default/textures/tearoffbox.tga
 mode change 100644 => 100755 indra/newview/skins/default/textures/textures.xml
 mode change 100644 => 100755 indra/newview/skins/default/textures/toolbar_icons/appearance.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/toolbar_icons/avatars.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/toolbar_icons/build.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/toolbar_icons/caret_bottom.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/toolbar_icons/caret_left.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/toolbar_icons/caret_right.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/toolbar_icons/chat.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/toolbar_icons/destinations.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/toolbar_icons/gestures.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/toolbar_icons/howto.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/toolbar_icons/inventory.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/toolbar_icons/land.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/toolbar_icons/map.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/toolbar_icons/marketplace.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/toolbar_icons/mini_cart.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/toolbar_icons/mini_map.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/toolbar_icons/move.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/toolbar_icons/nearbyvoice.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/toolbar_icons/outbox.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/toolbar_icons/people.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/toolbar_icons/picks.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/toolbar_icons/places.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/toolbar_icons/preferences.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/toolbar_icons/profile.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/toolbar_icons/search.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/toolbar_icons/snapshot.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/toolbar_icons/speak.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/toolbar_icons/view.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/transparent.j2c
 mode change 100644 => 100755 indra/newview/skins/default/textures/up_arrow.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/uv_test1.j2c
 mode change 100644 => 100755 indra/newview/skins/default/textures/uv_test2.tga
 mode change 100644 => 100755 indra/newview/skins/default/textures/voice_meter_dot.j2c
 mode change 100644 => 100755 indra/newview/skins/default/textures/voice_meter_rings.j2c
 mode change 100644 => 100755 indra/newview/skins/default/textures/white.tga
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/Arrow_Down.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/Arrow_Left.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/Arrow_Right.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/Arrow_Small_Left.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/Arrow_Small_Right.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/Arrow_Small_Up.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/Arrow_Up.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/Badge_Background.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/Badge_Border.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Disabled.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Over.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Press.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Disabled.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Over.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Press.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Disabled.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Over.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Press.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/Checkbox_Disabled.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/Checkbox_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/Checkbox_On.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/Checkbox_On_Disabled.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/Checkbox_On_Press.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/Checkbox_Press.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/ComboButton_Disabled.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/ComboButton_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/ComboButton_On.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/ComboButton_Selected.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/ComboButton_UpOff.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/ComboButton_UpSelected.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/DisclosureArrow_Opened_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/DropDown_Disabled.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/DropDown_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/DropDown_On.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/DropDown_Press.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/DropTarget.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/Error_Tag_Background.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/Linden_Dollar_Alert.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/Linden_Dollar_Background.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/ListItem_Over.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/ListItem_Select.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/MarketplaceBtn_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/MarketplaceBtn_Selected.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/New_Tag_Background.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/New_Tag_Border.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/ProgressBar.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/ProgressTrack.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/PushButton_Disabled.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/PushButton_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/PushButton_On.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/PushButton_On_Selected.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/PushButton_Over.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/PushButton_Press.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/PushButton_Selected.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/PushButton_Selected_Disabled.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/PushButton_Selected_Press.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/RadioButton_Disabled.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/RadioButton_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/RadioButton_On.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/RadioButton_On_Disabled.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/RadioButton_On_Press.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/RadioButton_Press.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/ScrollArrow_Down.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/ScrollArrow_Down_Opaque.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/ScrollArrow_Down_Over_Opaque.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/ScrollArrow_Left.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/ScrollArrow_Left_Opaque.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/ScrollArrow_Left_Over_Opaque.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/ScrollArrow_Right.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/ScrollArrow_Right_Opaque.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/ScrollArrow_Right_Over_Opaque.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/ScrollArrow_Up.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/ScrollArrow_Up_Opaque.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/ScrollArrow_Up_Over_Opaque.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/ScrollThumb_Horiz.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/ScrollThumb_Vert.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/ScrollTrack_Horiz.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/ScrollTrack_Vert.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Disabled.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Over.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Press.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Selected.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Selected_Disabled.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Selected_Over.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Selected_Press.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_Disabled.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_Selected.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_Selected_Disabled.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_Selected_Press.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Disabled.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_On_Selected.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Over.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Press.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Selected.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Selected_Disabled.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Selected_Press.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/SliderThumb_Disabled.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/SliderThumb_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/SliderThumb_Press.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/SliderTrack_Horiz.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/SliderTrack_Vert.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/Stepper_Down_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/Stepper_Down_Press.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/Stepper_Up_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/Stepper_Up_Press.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/TextField_Active.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/TextField_Disabled.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/TextField_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/TextField_Search_Active.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/TextField_Search_Disabled.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/TextField_Search_Off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/Tooltip.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/bevel_background.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/buy_off.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/buy_over.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/buy_press.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/jump_left_in.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/jump_left_out.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/jump_right_in.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/widgets/jump_right_out.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/windows/Dragbar.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/windows/Flyout_Left.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/windows/Flyout_Pointer.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/windows/Flyout_Right.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/windows/Icon_Close_Foreground.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/windows/Icon_Close_Press.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/windows/Icon_Close_Toast.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/windows/Icon_Dock_Foreground.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/windows/Icon_Dock_Press.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/windows/Icon_Gear_Background.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/windows/Icon_Gear_Foreground.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/windows/Icon_Gear_Press.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/windows/Icon_Help_Foreground.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/windows/Icon_Help_Press.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/windows/Icon_Minimize_Foreground.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/windows/Icon_Minimize_Press.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/windows/Icon_Restore_Foreground.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/windows/Icon_Restore_Press.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/windows/Icon_Undock_Foreground.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/windows/Inspector_Background.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/windows/Inspector_Hover.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/windows/Inspector_I.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/windows/Resize_Corner.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/windows/Toast_Background.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/windows/Toast_CloseBtn.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/windows/Toast_Over.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/windows/Volume_Background.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/windows/Wearables_Divider.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/windows/Window_Background.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/windows/Window_Foreground.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/windows/Window_NoTitle_Background.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/windows/Window_NoTitle_Foreground.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/windows/hint_arrow_down.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/windows/hint_arrow_left.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/windows/hint_arrow_lower_left.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/windows/hint_arrow_right.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/windows/hint_arrow_up.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/windows/hint_background.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/windows/startup_logo.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/windows/yellow_gradient.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/world/BeaconArrow.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/world/CameraDragDot.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/world/NoEntryLines.png
 mode change 100644 => 100755 indra/newview/skins/default/textures/world/NoEntryPassLines.png
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_about.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_about_land.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_activeim.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_animation_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_auction.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_avatar_picker.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_avatar_textures.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_beacons.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_build_options.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_bulk_perms.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_bumps.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_buy_contents.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_buy_currency.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_buy_currency_html.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_buy_land.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_buy_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_camera.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_choose_group.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_color_picker.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_critical.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_display_name.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_event.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_font_test.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_gesture.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_god_tools.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_hardware_settings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_help_browser.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_hud.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_im_container.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_im_session.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_image_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_import_collada.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_incoming_call.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_inspect.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_inventory_item_properties.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_inventory_view_finder.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_joystick.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_lagmeter.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_land_holdings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_live_lsleditor.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_lsl_guide.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_map.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_media_browser.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_media_settings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_mem_leaking.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_model_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_moveview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_mute_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_nearby_chat.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_openobject.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_outgoing_call.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_pay.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_pay_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_perm_prefs.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_postcard.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_preferences.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_preview_animation.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_preview_gesture.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_preview_notecard.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_preview_sound.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_preview_texture.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_price_for_listing.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_publish_classified.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_region_debug_console.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_region_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_report_abuse.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_script_debug.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_script_debug_panel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_script_limits.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_script_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_script_queue.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_script_search.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_search.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_select_key.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_sell_land.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_settings_debug.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_snapshot.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_sound_devices.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_sound_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_stats.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_sys_well.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_telehub.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_texture_ctrl.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_tools.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_top_objects.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_tos.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_url_entry.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_voice_controls.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_voice_effect.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_web_content.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_whitelist_entry.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_window_size.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/floater_world_map.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/inspect_avatar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/inspect_group.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/inspect_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/inspect_remote_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/language_settings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_add_wearable_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_attachment_other.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_attachment_self.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_avatar_icon.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_avatar_other.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_avatar_self.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_bottomtray.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_cof_attachment.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_cof_body_part.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_cof_clothing.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_cof_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_edit.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_favorites.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_gesture_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_group_plus.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_hide_navbar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_imchiclet_adhoc.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_imchiclet_group.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_imchiclet_p2p.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_inspect_avatar_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_inspect_object_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_inspect_self_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_inv_offer_chiclet.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_inventory_add.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_inventory_gear_default.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_land.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_landmark.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_login.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_media_ctrl.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_mini_map.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_model_import_gear_default.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_navbar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_nearby_chat.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_notification_well_button.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_object_icon.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_outfit_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_outfit_tab.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_participant_list.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_people_friends_view_sort.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_people_groups.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_people_groups_view_sort.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_people_nearby.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_people_nearby_multiselect.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_people_nearby_view_sort.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_people_recent_view_sort.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_picks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_picks_plus.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_place.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_place_add_button.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_places_gear_folder.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_places_gear_landmark.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_profile_overflow.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_save_outfit.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_script_chiclet.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_slurl.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_teleport_history_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_teleport_history_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_teleport_history_tab.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_text_editor.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_topinfobar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_url_agent.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_url_group.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_url_http.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_url_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_url_map.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_url_objectim.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_url_parcel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_url_slapp.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_url_slurl.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_url_teleport.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_viewer.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_wearable_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_wearing_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/menu_wearing_tab.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/mime_types.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/mime_types_linux.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/mime_types_mac.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/notifications.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/outfit_accordion_tab.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_active_object_row.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_adhoc_control_panel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_avatar_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_block_list_sidetray.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_body_parts_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_bodyparts_list_button_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_bottomtray.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_bottomtray_lite.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_classified_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_clothing_list_button_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_clothing_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_cof_wearables.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_deletable_wearable_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_dummy_clothing_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_edit_alpha.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_edit_classified.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_edit_eyes.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_edit_gloves.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_edit_hair.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_edit_jacket.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_edit_pants.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_edit_physics.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_edit_pick.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_edit_profile.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_edit_shape.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_edit_shirt.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_edit_shoes.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_edit_skin.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_edit_skirt.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_edit_socks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_edit_tattoo.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_edit_underpants.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_edit_undershirt.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_edit_wearable.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_group_control_panel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_group_general.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_group_info_sidetray.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_group_invite.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_group_land_money.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_group_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_group_notices.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_group_notify.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_group_roles.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_im_control_panel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_inventory_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_landmark_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_landmarks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_login.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_main_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_me.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_media_settings_general.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_media_settings_permissions.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_media_settings_security.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_navigation_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_nearby_chat_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_nearby_media.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_notify_textbox.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_online_status_toast.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_outfit_edit.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_outfits_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_outfits_inventory_gear_default.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_outfits_list.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_outfits_wearing.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_people.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_pick_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_picks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_place_profile.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_places.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_preferences_advanced.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_preferences_alerts.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_preferences_chat.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_preferences_colors.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_preferences_general.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_preferences_graphics1.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_preferences_move.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_preferences_privacy.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_preferences_setup.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_preferences_sound.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_prim_media_controls.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_region_covenant.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_region_debug.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_region_estate.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_region_general.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_region_terrain.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_region_texture.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_script_ed.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_script_limits_my_avatar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_script_limits_region_memory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_scrolling_param.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_scrolling_param_base.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_side_tray.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_side_tray_tab_caption.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_sound_devices.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_stand_stop_flying.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_status_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_teleport_history.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_teleport_history_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_voice_effect.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/panel_world_map.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/role_actions.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/sidepanel_appearance.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/sidepanel_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/sidepanel_item_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/sidepanel_task_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/strings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/teleport_strings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/da/xui_version.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_about.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_about_land.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_activeim.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_animation_anim_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_animation_bvh_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_auction.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_autoreplace.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_avatar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_avatar_picker.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_avatar_textures.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_beacons.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_build_options.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_bulk_perms.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_bumps.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_buy_contents.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_buy_currency.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_buy_currency_html.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_buy_land.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_buy_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_camera.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_chat_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_choose_group.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_color_picker.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_critical.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_delete_env_preset.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_destinations.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_display_name.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_edit_day_cycle.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_edit_sky_preset.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_edit_water_preset.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_environment_settings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_event.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_fast_timers.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_font_test.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_gesture.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_god_tools.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_hardware_settings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_help_browser.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_how_to.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_hud.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_im_container.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_im_session.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_image_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_import_collada.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_incoming_call.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_inspect.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_inventory_item_properties.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_inventory_view_finder.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_joystick.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_lagmeter.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_land_holdings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_live_lsleditor.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_lsl_guide.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_map.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_media_browser.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_media_settings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_mem_leaking.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_merchant_outbox.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_model_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_moveview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_mute_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_my_appearance.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_my_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_notification.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_notifications_console.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_object_weights.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_openobject.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_outfit_save_as.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_outgoing_call.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_pathfinding_characters.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_pathfinding_console.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_pathfinding_linksets.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_pay.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_pay_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_people.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_perm_prefs.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_picks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_places.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_post_process.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_preferences.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_preferences_proxy.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_preview_animation.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_preview_gesture.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_preview_notecard.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_preview_sound.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_preview_texture.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_price_for_listing.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_publish_classified.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_region_debug_console.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_region_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_report_abuse.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_script_debug.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_script_debug_panel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_script_limits.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_script_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_script_queue.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_script_search.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_search.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_select_key.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_sell_land.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_settings_debug.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_snapshot.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_sound_devices.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_sound_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_spellcheck.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_spellcheck_import.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_stats.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_sys_well.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_telehub.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_test_layout_stacks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_test_text_vertical_aligment.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_texture_ctrl.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_texture_fetch_debugger.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_tools.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_top_objects.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_tos.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_toybox.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_translation_settings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_url_entry.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_voice_controls.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_voice_effect.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_web_content.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_whitelist_entry.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_window_size.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/floater_world_map.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/inspect_avatar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/inspect_group.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/inspect_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/inspect_remote_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/language_settings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_add_wearable_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_attachment_other.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_attachment_self.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_avatar_icon.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_avatar_other.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_avatar_self.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_cof_attachment.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_cof_body_part.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_cof_clothing.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_cof_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_edit.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_favorites.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_gesture_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_group_plus.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_hide_navbar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_imchiclet_adhoc.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_imchiclet_group.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_imchiclet_p2p.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_inspect_avatar_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_inspect_object_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_inspect_self_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_inv_offer_chiclet.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_inventory_add.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_inventory_gear_default.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_land.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_landmark.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_login.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_media_ctrl.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_mini_map.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_model_import_gear_default.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_navbar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_nearby_chat.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_notification_well_button.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_object_icon.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_outfit_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_outfit_tab.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_participant_list.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_people_friends_view_sort.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_people_groups.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_people_groups_view_sort.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_people_nearby.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_people_nearby_multiselect.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_people_nearby_view_sort.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_people_recent_view_sort.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_picks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_picks_plus.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_place.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_place_add_button.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_places_gear_folder.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_places_gear_landmark.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_profile_overflow.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_save_outfit.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_script_chiclet.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_slurl.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_teleport_history_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_teleport_history_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_teleport_history_tab.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_text_editor.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_toolbars.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_topinfobar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_url_agent.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_url_group.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_url_http.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_url_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_url_map.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_url_objectim.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_url_parcel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_url_slapp.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_url_slurl.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_url_teleport.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_viewer.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_wearable_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_wearing_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/menu_wearing_tab.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/mime_types.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/mime_types_linux.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/mime_types_mac.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/notifications.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/outfit_accordion_tab.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_active_object_row.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_adhoc_control_panel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_avatar_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_avatar_tag.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_block_list_sidetray.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_body_parts_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_bodyparts_list_button_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_bottomtray_lite.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_chat_header.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_chiclet_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_classified_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_clothing_list_button_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_clothing_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_cof_wearables.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_deletable_wearable_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_dummy_clothing_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_edit_alpha.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_edit_classified.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_edit_eyes.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_edit_gloves.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_edit_hair.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_edit_jacket.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_edit_pants.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_edit_physics.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_edit_pick.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_edit_profile.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_edit_shape.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_edit_shirt.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_edit_shoes.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_edit_skin.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_edit_skirt.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_edit_socks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_edit_tattoo.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_edit_underpants.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_edit_undershirt.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_edit_wearable.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_group_control_panel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_group_general.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_group_info_sidetray.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_group_invite.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_group_land_money.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_group_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_group_notices.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_group_notify.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_group_roles.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_im_control_panel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_instant_message.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_inventory_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_landmark_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_landmarks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_login.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_main_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_me.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_media_settings_general.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_media_settings_permissions.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_media_settings_security.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_navigation_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_nearby_chat.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_nearby_chat_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_nearby_media.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_notifications_channel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_notify_textbox.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_online_status_toast.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_outbox_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_outfit_edit.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_outfits_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_outfits_inventory_gear_default.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_outfits_list.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_outfits_wearing.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_people.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_pick_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_picks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_place_profile.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_places.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_postcard_message.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_postcard_settings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_preferences_advanced.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_preferences_alerts.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_preferences_chat.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_preferences_colors.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_preferences_general.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_preferences_graphics1.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_preferences_move.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_preferences_privacy.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_preferences_setup.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_preferences_sound.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_prim_media_controls.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_region_covenant.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_region_debug.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_region_environment.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_region_estate.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_region_general.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_region_terrain.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_script_ed.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_script_limits_my_avatar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_script_limits_region_memory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_script_question_toast.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_scrolling_param.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_scrolling_param_base.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_side_tray_tab_caption.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_sidetray_home_tab.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_snapshot_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_snapshot_local.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_snapshot_options.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_snapshot_postcard.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_snapshot_profile.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_sound_devices.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_stand_stop_flying.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_status_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_sys_well_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_teleport_history.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_teleport_history_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_voice_effect.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_volume_pulldown.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/panel_world_map.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/role_actions.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/sidepanel_appearance.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/sidepanel_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/sidepanel_item_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/sidepanel_task_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/strings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/teleport_strings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/de/xui_version.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/accordion_drag.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/accordion_parent.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/alert_button.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/alert_check_box.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/alert_icon.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/alert_line_editor.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/favorites_bar_button.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_aaa.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_about.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_about_land.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_activeim.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_animation_anim_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_animation_bvh_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_auction.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_autoreplace.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_avatar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_avatar_picker.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_avatar_textures.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_beacons.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_build_options.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_bulk_perms.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_bumps.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_buy_contents.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_buy_currency.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_buy_currency_html.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_buy_land.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_buy_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_camera.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_choose_group.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_color_picker.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_conversation_log.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_conversation_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_critical.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_delete_env_preset.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_destinations.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_display_name.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_edit_day_cycle.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_edit_sky_preset.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_edit_water_preset.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_environment_settings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_event.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_fast_timers.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_font_test.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_gesture.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_god_tools.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_hardware_settings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_help_browser.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_how_to.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_hud.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_im_container.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_im_session.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_image_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_import_collada.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_incoming_call.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_inspect.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_inventory_item_properties.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_inventory_view_finder.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_joystick.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_lagmeter.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_land_holdings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_live_lsleditor.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_lsl_guide.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_map.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_media_browser.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_media_settings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_mem_leaking.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_merchant_outbox.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_model_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_moveview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_mute_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_my_appearance.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_my_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_my_web_profile.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_notification.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_notifications_console.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_object_weights.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_openobject.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_outfit_save_as.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_outgoing_call.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_pathfinding_characters.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_pathfinding_console.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_pathfinding_linksets.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_pay.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_pay_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_people.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_perm_prefs.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_picks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_places.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_post_process.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_preferences.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_preferences_proxy.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_preview_animation.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_preview_gesture.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_preview_notecard.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_preview_sound.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_preview_texture.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_price_for_listing.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_publish_classified.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_region_debug_console.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_region_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_report_abuse.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_script.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_script_debug.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_script_debug_panel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_script_limits.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_script_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_script_queue.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_script_search.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_search.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_select_key.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_sell_land.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_settings_debug.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_side_bar_tab.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_snapshot.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_sound_devices.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_sound_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_spellcheck.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_spellcheck_import.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_stats.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_sys_well.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_telehub.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_test_button.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_test_checkbox.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_test_combobox.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_test_inspectors.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_test_layout.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_test_layout_stacks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_test_line_editor.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_test_list_view.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_test_navigation_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_test_radiogroup.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_test_slider.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_test_spinner.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_test_text_editor.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_test_text_vertical_aligment.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_test_textbox.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_test_toolbar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_test_widgets.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_texture_ctrl.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_texture_fetch_debugger.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_tools.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_top_objects.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_tos.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_toybox.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_translation_settings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_ui_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_url_entry.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_voice_chat_volume.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_voice_effect.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_voice_volume.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_web_content.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_web_profile.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_whitelist_entry.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_window_size.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/floater_world_map.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/fonts.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/inspect_avatar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/inspect_group.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/inspect_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/inspect_remote_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/inspect_toast.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/inspector_info_ctrl.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/language_settings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/main_view.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_add_wearable_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_attachment_other.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_attachment_self.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_avatar_icon.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_avatar_other.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_avatar_self.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_cof_attachment.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_cof_body_part.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_cof_clothing.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_cof_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_conversation.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_conversation_log_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_conversation_log_view.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_edit.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_favorites.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_gesture_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_group_plus.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_hide_navbar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_im_conversation.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_im_session_showmodes.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_imchiclet_adhoc.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_imchiclet_group.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_imchiclet_p2p.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_inspect_object_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_inv_offer_chiclet.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_inventory_add.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_inventory_gear_default.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_land.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_landmark.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_login.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_media_ctrl.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_mini_map.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_model_import_gear_default.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_navbar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_nearby_chat.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_notification_well_button.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_object_icon.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_outfit_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_outfit_tab.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_participant_list.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_participant_view.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_people_blocked_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_people_blocked_plus.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_people_blocked_view.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_people_friends_view.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_people_groups.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_people_groups_view.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_people_nearby.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_people_nearby_multiselect.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_people_nearby_view.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_people_recent_view.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_picks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_picks_plus.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_place.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_place_add_button.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_places_gear_folder.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_places_gear_landmark.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_profile_overflow.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_save_outfit.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_script_chiclet.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_slurl.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_teleport_history_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_teleport_history_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_teleport_history_tab.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_text_editor.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_toolbars.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_topinfobar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_url_agent.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_url_group.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_url_http.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_url_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_url_map.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_url_objectim.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_url_parcel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_url_slapp.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_url_slurl.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_url_teleport.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_viewer.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_wearable_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_wearing_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/menu_wearing_tab.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/mime_types.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/mime_types_linux.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/mime_types_mac.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/notification_visibility.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/notifications.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/outfit_accordion_tab.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_active_object_row.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_avatar_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_avatar_tag.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_block_list_sidetray.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_blocked_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_body_parts_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_bodyparts_list_button_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_bottomtray_lite.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_chat_header.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_chat_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_chat_separator.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_chiclet_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_classified_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_classifieds_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_clothing_list_button_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_clothing_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_cof_wearables.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_conversation_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_conversation_log_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_deletable_wearable_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_dummy_clothing_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_edit_alpha.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_edit_classified.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_edit_eyes.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_edit_gloves.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_edit_hair.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_edit_jacket.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_edit_pants.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_edit_physics.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_edit_pick.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_edit_profile.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_edit_shape.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_edit_shirt.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_edit_shoes.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_edit_skin.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_edit_skirt.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_edit_socks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_edit_tattoo.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_edit_underpants.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_edit_undershirt.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_edit_wearable.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_generic_tip.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_group_general.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_group_invite.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_group_land_money.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_group_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_group_notices.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_group_notify.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_group_roles.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_hint.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_hint_image.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_hud.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_inbox_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_instant_message.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_inventory_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_landmark_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_landmarks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_login.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_main_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_me.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_media_settings_general.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_media_settings_permissions.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_media_settings_security.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_navigation_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_nearby_chat.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_nearby_media.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_notification.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_notifications_channel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_notify_textbox.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_online_status_toast.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_outbox_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_outfit_edit.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_outfits_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_outfits_inventory_gear_default.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_outfits_list.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_outfits_wearing.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_people.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_pick_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_pick_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_picks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_place_profile.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_places.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_postcard_message.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_postcard_settings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_preferences_advanced.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_preferences_alerts.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_preferences_chat.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_preferences_colors.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_preferences_general.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_preferences_move.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_preferences_privacy.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_preferences_setup.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_preferences_sound.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_prim_media_controls.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_progress.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_region_covenant.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_region_debug.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_region_environment.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_region_estate.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_region_general.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_region_terrain.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_script_ed.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_script_limits_my_avatar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_script_limits_region_memory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_script_question_toast.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_scrolling_param.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_scrolling_param_base.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_side_tray_tab_caption.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_sidetray_home_tab.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_snapshot_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_snapshot_local.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_snapshot_options.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_snapshot_postcard.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_snapshot_profile.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_sound_devices.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_stand_stop_flying.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_status_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_sys_well_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_teleport_history.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_teleport_history_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_toast.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_toolbar_view.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_topinfo_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_voice_effect.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_volume_pulldown.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/panel_world_map.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/role_actions.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/sidepanel_appearance.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/sidepanel_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/sidepanel_item_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/sidepanel_task_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/strings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/teleport_strings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/accordion.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/accordion_tab.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/avatar_icon.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/avatar_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/badge.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/bodyparts_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/button.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/chat_editor.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/chat_history.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/check_box.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/chiclet_offer.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/chiclet_panel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/chiclet_script.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/clothing_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/color_swatch.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/combo_box.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/context_menu.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/conversation_view_session.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/deletable_wearable_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/drop_down.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/dummy_clothing_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/expandable_text.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/filter_editor.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/flat_list_view.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/floater.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/flyout_button.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/folder_view_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/gesture_combo_list.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/group_icon.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/hint_popup.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/icon.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/inbox_folder_view_folder.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/inbox_folder_view_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/inbox_inventory_panel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/inspector.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/inventory_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/inventory_panel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/joystick_rotate.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/layout_stack.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/line_editor.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/list_view.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/loading_indicator.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/location_input.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/menu.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/menu_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/menu_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/menu_item_call.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/menu_item_check.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/menu_item_separator.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/menu_item_tear_off.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/multi_slider.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/multi_slider_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/name_editor.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/name_list.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/output_monitor.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/panel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/panel_camera_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/progress_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/radio_group.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/radio_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/scroll_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/scroll_column_header.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/scroll_container.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/scroll_list.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/scrolling_panel_list.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/search_combo_box.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/search_editor.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/side_tray.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/sidetray_tab.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/simple_text_editor.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/slider.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/slider_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/spinner.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/split_button.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/tab_container.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/talk_button.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/teleport_history_menu_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/text.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/text_editor.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/textbase.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/texture_picker.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/time.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/toggleable_menu.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/tool_tip.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/toolbar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/ui_ctrl.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/view_border.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/web_browser.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/widgets/window_shade.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/en/xui_version.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_about.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_about_land.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_activeim.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_auction.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_autoreplace.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_avatar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_avatar_picker.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_avatar_textures.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_beacons.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_build_options.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_bulk_perms.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_bumps.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_buy_contents.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_buy_currency.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_buy_currency_html.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_buy_land.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_buy_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_camera.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_chat_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_choose_group.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_color_picker.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_critical.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_delete_env_preset.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_destinations.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_display_name.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_edit_day_cycle.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_edit_sky_preset.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_edit_water_preset.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_environment_settings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_event.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_fast_timers.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_font_test.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_gesture.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_god_tools.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_hardware_settings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_help_browser.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_how_to.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_hud.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_im_container.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_im_session.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_image_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_import_collada.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_incoming_call.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_inspect.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_inventory_item_properties.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_inventory_view_finder.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_joystick.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_lagmeter.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_land_holdings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_live_lsleditor.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_lsl_guide.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_map.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_media_browser.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_media_settings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_mem_leaking.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_merchant_outbox.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_model_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_moveview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_mute_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_my_appearance.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_my_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_object_weights.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_openobject.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_outfit_save_as.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_outgoing_call.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_pathfinding_characters.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_pathfinding_console.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_pathfinding_linksets.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_pay.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_pay_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_people.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_perm_prefs.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_picks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_places.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_post_process.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_preferences.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_preferences_proxy.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_preview_animation.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_preview_gesture.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_preview_notecard.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_preview_sound.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_preview_texture.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_price_for_listing.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_publish_classified.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_region_debug_console.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_region_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_report_abuse.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_script_debug.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_script_debug_panel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_script_limits.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_script_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_script_queue.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_script_search.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_search.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_select_key.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_sell_land.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_settings_debug.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_snapshot.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_sound_devices.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_sound_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_spellcheck.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_spellcheck_import.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_stats.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_sys_well.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_telehub.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_test_layout_stacks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_texture_ctrl.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_texture_fetch_debugger.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_tools.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_top_objects.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_tos.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_toybox.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_translation_settings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_url_entry.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_voice_controls.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_voice_effect.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_web_content.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_whitelist_entry.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_window_size.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/floater_world_map.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/inspect_avatar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/inspect_group.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/inspect_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/inspect_remote_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/language_settings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_add_wearable_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_attachment_other.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_attachment_self.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_avatar_icon.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_avatar_other.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_avatar_self.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_cof_attachment.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_cof_body_part.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_cof_clothing.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_cof_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_edit.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_favorites.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_gesture_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_group_plus.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_hide_navbar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_imchiclet_adhoc.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_imchiclet_group.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_imchiclet_p2p.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_inspect_avatar_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_inspect_object_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_inspect_self_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_inv_offer_chiclet.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_inventory_add.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_inventory_gear_default.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_land.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_landmark.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_login.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_media_ctrl.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_mini_map.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_model_import_gear_default.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_navbar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_nearby_chat.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_notification_well_button.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_object_icon.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_outfit_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_outfit_tab.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_participant_list.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_people_friends_view_sort.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_people_groups.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_people_groups_view_sort.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_people_nearby.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_people_nearby_multiselect.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_people_nearby_view_sort.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_people_recent_view_sort.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_picks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_picks_plus.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_place.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_place_add_button.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_places_gear_folder.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_places_gear_landmark.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_profile_overflow.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_save_outfit.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_script_chiclet.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_slurl.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_teleport_history_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_teleport_history_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_teleport_history_tab.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_text_editor.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_toolbars.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_topinfobar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_url_agent.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_url_group.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_url_http.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_url_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_url_map.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_url_objectim.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_url_parcel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_url_slapp.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_url_slurl.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_url_teleport.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_viewer.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_wearable_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_wearing_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/menu_wearing_tab.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/mime_types.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/mime_types_linux.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/mime_types_mac.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/notifications.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/outfit_accordion_tab.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_active_object_row.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_adhoc_control_panel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_avatar_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_block_list_sidetray.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_body_parts_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_bodyparts_list_button_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_bottomtray_lite.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_chiclet_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_classified_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_clothing_list_button_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_clothing_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_cof_wearables.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_deletable_wearable_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_dummy_clothing_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_edit_alpha.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_edit_classified.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_edit_eyes.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_edit_gloves.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_edit_hair.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_edit_jacket.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_edit_pants.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_edit_physics.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_edit_pick.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_edit_profile.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_edit_shape.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_edit_shirt.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_edit_shoes.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_edit_skin.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_edit_skirt.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_edit_socks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_edit_tattoo.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_edit_underpants.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_edit_undershirt.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_edit_wearable.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_group_control_panel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_group_general.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_group_info_sidetray.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_group_invite.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_group_land_money.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_group_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_group_notices.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_group_notify.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_group_roles.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_im_control_panel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_inventory_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_landmark_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_landmarks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_login.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_main_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_me.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_media_settings_general.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_media_settings_permissions.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_media_settings_security.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_navigation_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_nearby_chat.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_nearby_chat_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_nearby_media.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_notify_textbox.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_online_status_toast.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_outbox_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_outfit_edit.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_outfits_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_outfits_inventory_gear_default.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_outfits_list.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_outfits_wearing.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_people.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_pick_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_picks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_place_profile.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_places.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_postcard_message.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_postcard_settings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_preferences_advanced.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_preferences_alerts.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_preferences_chat.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_preferences_colors.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_preferences_general.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_preferences_graphics1.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_preferences_move.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_preferences_privacy.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_preferences_setup.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_preferences_sound.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_prim_media_controls.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_region_covenant.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_region_debug.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_region_environment.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_region_estate.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_region_general.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_region_terrain.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_script_ed.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_script_limits_my_avatar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_script_limits_region_memory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_script_question_toast.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_scrolling_param.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_scrolling_param_base.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_side_tray_tab_caption.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_snapshot_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_snapshot_local.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_snapshot_options.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_snapshot_postcard.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_snapshot_profile.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_sound_devices.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_stand_stop_flying.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_status_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_teleport_history.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_teleport_history_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_voice_effect.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_volume_pulldown.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/panel_world_map.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/role_actions.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/sidepanel_appearance.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/sidepanel_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/sidepanel_item_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/sidepanel_task_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/strings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/teleport_strings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/es/xui_version.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_about.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_about_land.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_activeim.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_animation_anim_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_animation_bvh_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_auction.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_autoreplace.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_avatar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_avatar_picker.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_avatar_textures.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_beacons.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_build_options.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_bulk_perms.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_bumps.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_buy_contents.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_buy_currency.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_buy_currency_html.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_buy_land.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_buy_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_camera.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_chat_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_choose_group.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_color_picker.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_critical.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_delete_env_preset.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_destinations.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_display_name.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_edit_day_cycle.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_edit_sky_preset.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_edit_water_preset.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_environment_settings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_event.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_fast_timers.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_font_test.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_gesture.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_god_tools.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_hardware_settings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_help_browser.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_how_to.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_hud.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_im_container.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_im_session.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_image_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_import_collada.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_incoming_call.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_inspect.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_inventory_item_properties.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_inventory_view_finder.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_joystick.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_lagmeter.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_land_holdings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_live_lsleditor.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_lsl_guide.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_map.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_media_browser.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_media_settings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_mem_leaking.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_merchant_outbox.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_model_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_moveview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_mute_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_my_appearance.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_my_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_notification.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_notifications_console.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_object_weights.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_openobject.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_outfit_save_as.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_outgoing_call.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_pathfinding_characters.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_pathfinding_console.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_pathfinding_linksets.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_pay.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_pay_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_people.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_perm_prefs.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_picks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_places.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_post_process.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_preferences.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_preferences_proxy.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_preview_animation.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_preview_gesture.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_preview_notecard.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_preview_sound.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_preview_texture.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_price_for_listing.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_publish_classified.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_region_debug_console.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_region_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_report_abuse.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_script_debug.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_script_debug_panel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_script_limits.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_script_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_script_queue.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_script_search.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_search.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_select_key.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_sell_land.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_settings_debug.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_snapshot.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_sound_devices.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_sound_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_spellcheck.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_spellcheck_import.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_stats.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_sys_well.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_telehub.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_test_layout_stacks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_test_text_vertical_aligment.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_texture_ctrl.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_texture_fetch_debugger.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_tools.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_top_objects.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_tos.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_toybox.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_translation_settings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_url_entry.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_voice_controls.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_voice_effect.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_web_content.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_whitelist_entry.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_window_size.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/floater_world_map.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/fonts.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/inspect_avatar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/inspect_group.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/inspect_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/inspect_remote_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/language_settings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_add_wearable_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_attachment_other.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_attachment_self.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_avatar_icon.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_avatar_other.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_avatar_self.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_cof_attachment.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_cof_body_part.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_cof_clothing.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_cof_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_edit.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_favorites.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_gesture_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_group_plus.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_hide_navbar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_imchiclet_adhoc.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_imchiclet_group.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_imchiclet_p2p.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_inspect_avatar_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_inspect_object_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_inspect_self_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_inv_offer_chiclet.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_inventory_add.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_inventory_gear_default.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_land.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_landmark.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_login.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_media_ctrl.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_mini_map.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_model_import_gear_default.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_navbar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_nearby_chat.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_notification_well_button.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_object_icon.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_outfit_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_outfit_tab.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_participant_list.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_people_friends_view_sort.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_people_groups.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_people_groups_view_sort.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_people_nearby.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_people_nearby_multiselect.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_people_nearby_view_sort.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_people_recent_view_sort.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_picks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_picks_plus.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_place.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_place_add_button.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_places_gear_folder.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_places_gear_landmark.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_profile_overflow.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_save_outfit.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_script_chiclet.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_slurl.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_teleport_history_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_teleport_history_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_teleport_history_tab.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_text_editor.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_toolbars.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_topinfobar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_url_agent.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_url_group.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_url_http.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_url_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_url_map.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_url_objectim.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_url_parcel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_url_slapp.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_url_slurl.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_url_teleport.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_viewer.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_wearable_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_wearing_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/menu_wearing_tab.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/mime_types.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/mime_types_linux.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/mime_types_mac.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/notifications.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/outfit_accordion_tab.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_active_object_row.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_adhoc_control_panel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_avatar_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_avatar_tag.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_block_list_sidetray.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_body_parts_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_bodyparts_list_button_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_bottomtray_lite.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_chat_header.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_chiclet_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_classified_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_clothing_list_button_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_clothing_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_cof_wearables.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_deletable_wearable_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_dummy_clothing_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_edit_alpha.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_edit_classified.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_edit_eyes.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_edit_gloves.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_edit_hair.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_edit_jacket.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_edit_pants.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_edit_physics.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_edit_pick.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_edit_profile.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_edit_shape.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_edit_shirt.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_edit_shoes.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_edit_skin.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_edit_skirt.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_edit_socks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_edit_tattoo.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_edit_underpants.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_edit_undershirt.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_edit_wearable.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_group_control_panel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_group_general.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_group_info_sidetray.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_group_invite.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_group_land_money.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_group_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_group_notices.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_group_notify.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_group_roles.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_im_control_panel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_instant_message.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_inventory_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_landmark_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_landmarks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_login.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_main_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_me.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_media_settings_general.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_media_settings_permissions.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_media_settings_security.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_navigation_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_nearby_chat.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_nearby_chat_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_nearby_media.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_notifications_channel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_notify_textbox.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_online_status_toast.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_outbox_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_outfit_edit.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_outfits_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_outfits_inventory_gear_default.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_outfits_list.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_outfits_wearing.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_people.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_pick_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_picks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_place_profile.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_places.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_postcard_message.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_postcard_settings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_preferences_advanced.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_preferences_alerts.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_preferences_chat.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_preferences_colors.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_preferences_general.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_preferences_move.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_preferences_privacy.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_preferences_setup.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_preferences_sound.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_prim_media_controls.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_region_covenant.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_region_debug.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_region_environment.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_region_estate.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_region_general.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_region_terrain.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_script_ed.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_script_limits_my_avatar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_script_limits_region_memory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_script_question_toast.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_scrolling_param.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_scrolling_param_base.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_side_tray_tab_caption.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_sidetray_home_tab.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_snapshot_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_snapshot_local.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_snapshot_options.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_snapshot_postcard.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_snapshot_profile.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_sound_devices.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_stand_stop_flying.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_status_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_sys_well_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_teleport_history.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_teleport_history_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_voice_effect.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_volume_pulldown.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/panel_world_map.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/role_actions.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/sidepanel_appearance.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/sidepanel_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/sidepanel_item_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/sidepanel_task_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/strings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/teleport_strings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/fr/xui_version.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_about.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_about_land.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_activeim.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_animation_anim_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_animation_bvh_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_auction.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_autoreplace.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_avatar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_avatar_picker.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_avatar_textures.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_beacons.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_build_options.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_bulk_perms.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_bumps.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_buy_contents.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_buy_currency.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_buy_currency_html.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_buy_land.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_buy_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_camera.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_chat_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_choose_group.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_color_picker.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_critical.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_delete_env_preset.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_destinations.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_display_name.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_edit_day_cycle.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_edit_sky_preset.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_edit_water_preset.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_environment_settings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_event.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_fast_timers.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_font_test.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_gesture.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_god_tools.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_hardware_settings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_help_browser.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_how_to.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_hud.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_im_container.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_im_session.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_image_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_import_collada.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_incoming_call.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_inspect.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_inventory_item_properties.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_inventory_view_finder.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_joystick.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_lagmeter.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_land_holdings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_live_lsleditor.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_lsl_guide.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_map.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_media_browser.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_media_settings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_mem_leaking.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_merchant_outbox.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_model_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_moveview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_mute_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_my_appearance.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_my_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_object_weights.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_openobject.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_outfit_save_as.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_outgoing_call.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_pathfinding_characters.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_pathfinding_console.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_pathfinding_linksets.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_pay.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_pay_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_people.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_perm_prefs.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_picks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_places.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_post_process.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_preferences.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_preferences_proxy.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_preview_animation.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_preview_gesture.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_preview_notecard.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_preview_sound.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_preview_texture.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_price_for_listing.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_publish_classified.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_region_debug_console.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_region_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_report_abuse.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_script_debug.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_script_debug_panel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_script_limits.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_script_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_script_queue.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_script_search.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_search.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_select_key.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_sell_land.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_settings_debug.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_snapshot.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_sound_devices.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_sound_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_spellcheck.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_spellcheck_import.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_stats.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_sys_well.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_telehub.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_test_layout_stacks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_test_text_vertical_aligment.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_texture_ctrl.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_texture_fetch_debugger.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_tools.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_top_objects.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_tos.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_toybox.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_translation_settings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_url_entry.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_voice_controls.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_voice_effect.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_web_content.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_whitelist_entry.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_window_size.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/floater_world_map.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/inspect_avatar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/inspect_group.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/inspect_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/inspect_remote_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/language_settings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_add_wearable_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_attachment_other.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_attachment_self.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_avatar_icon.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_avatar_other.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_avatar_self.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_cof_attachment.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_cof_body_part.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_cof_clothing.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_cof_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_edit.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_favorites.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_gesture_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_group_plus.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_hide_navbar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_imchiclet_adhoc.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_imchiclet_group.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_imchiclet_p2p.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_inspect_avatar_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_inspect_object_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_inspect_self_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_inv_offer_chiclet.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_inventory_add.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_inventory_gear_default.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_land.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_landmark.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_login.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_media_ctrl.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_mini_map.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_model_import_gear_default.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_navbar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_nearby_chat.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_notification_well_button.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_object_icon.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_outfit_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_outfit_tab.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_participant_list.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_people_friends_view_sort.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_people_groups.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_people_groups_view_sort.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_people_nearby.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_people_nearby_multiselect.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_people_nearby_view_sort.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_people_recent_view_sort.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_picks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_picks_plus.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_place.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_place_add_button.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_places_gear_folder.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_places_gear_landmark.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_profile_overflow.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_save_outfit.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_script_chiclet.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_slurl.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_teleport_history_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_teleport_history_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_teleport_history_tab.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_text_editor.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_toolbars.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_topinfobar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_url_agent.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_url_group.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_url_http.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_url_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_url_map.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_url_objectim.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_url_parcel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_url_slapp.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_url_slurl.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_url_teleport.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_viewer.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_wearable_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_wearing_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/menu_wearing_tab.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/mime_types.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/mime_types_linux.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/mime_types_mac.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/notifications.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/outfit_accordion_tab.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_active_object_row.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_adhoc_control_panel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_avatar_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_block_list_sidetray.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_body_parts_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_bodyparts_list_button_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_bottomtray_lite.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_chiclet_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_classified_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_clothing_list_button_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_clothing_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_cof_wearables.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_deletable_wearable_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_dummy_clothing_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_edit_alpha.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_edit_classified.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_edit_eyes.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_edit_gloves.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_edit_hair.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_edit_jacket.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_edit_pants.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_edit_physics.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_edit_pick.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_edit_profile.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_edit_shape.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_edit_shirt.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_edit_shoes.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_edit_skin.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_edit_skirt.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_edit_socks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_edit_tattoo.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_edit_underpants.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_edit_undershirt.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_edit_wearable.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_group_control_panel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_group_general.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_group_info_sidetray.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_group_invite.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_group_land_money.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_group_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_group_notices.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_group_notify.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_group_roles.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_im_control_panel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_inventory_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_landmark_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_landmarks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_login.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_main_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_me.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_media_settings_general.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_media_settings_permissions.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_media_settings_security.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_navigation_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_nearby_chat.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_nearby_chat_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_nearby_media.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_notify_textbox.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_online_status_toast.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_outbox_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_outfit_edit.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_outfits_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_outfits_inventory_gear_default.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_outfits_list.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_outfits_wearing.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_people.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_pick_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_picks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_place_profile.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_places.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_postcard_message.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_postcard_settings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_preferences_advanced.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_preferences_alerts.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_preferences_chat.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_preferences_colors.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_preferences_general.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_preferences_graphics1.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_preferences_move.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_preferences_privacy.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_preferences_setup.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_preferences_sound.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_prim_media_controls.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_region_covenant.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_region_debug.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_region_environment.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_region_estate.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_region_general.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_region_terrain.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_script_ed.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_script_limits_my_avatar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_script_limits_region_memory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_script_question_toast.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_scrolling_param.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_scrolling_param_base.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_side_tray_tab_caption.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_snapshot_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_snapshot_local.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_snapshot_options.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_snapshot_postcard.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_snapshot_profile.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_sound_devices.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_stand_stop_flying.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_status_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_teleport_history.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_teleport_history_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_voice_effect.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_volume_pulldown.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/panel_world_map.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/role_actions.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/sidepanel_appearance.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/sidepanel_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/sidepanel_item_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/sidepanel_task_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/strings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/it/teleport_strings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_about.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_about_land.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_activeim.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_animation_anim_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_animation_bvh_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_auction.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_autoreplace.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_avatar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_avatar_picker.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_avatar_textures.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_beacons.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_build_options.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_bulk_perms.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_bumps.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_buy_contents.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_buy_currency.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_buy_currency_html.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_buy_land.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_buy_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_camera.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_chat_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_choose_group.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_color_picker.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_critical.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_delete_env_preset.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_destinations.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_display_name.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_edit_day_cycle.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_edit_sky_preset.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_edit_water_preset.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_environment_settings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_event.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_fast_timers.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_font_test.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_gesture.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_god_tools.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_hardware_settings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_help_browser.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_how_to.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_hud.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_im_container.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_im_session.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_image_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_import_collada.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_incoming_call.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_inspect.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_inventory_item_properties.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_inventory_view_finder.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_joystick.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_lagmeter.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_land_holdings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_live_lsleditor.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_lsl_guide.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_map.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_media_browser.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_media_settings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_mem_leaking.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_merchant_outbox.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_model_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_moveview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_mute_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_my_appearance.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_my_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_notification.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_notifications_console.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_object_weights.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_openobject.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_outfit_save_as.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_outgoing_call.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_pathfinding_characters.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_pathfinding_console.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_pathfinding_linksets.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_pay.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_pay_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_people.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_perm_prefs.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_picks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_places.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_post_process.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_preferences.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_preferences_proxy.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_preview_animation.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_preview_gesture.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_preview_notecard.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_preview_sound.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_preview_texture.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_price_for_listing.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_publish_classified.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_region_debug_console.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_region_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_report_abuse.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_script_debug.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_script_debug_panel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_script_limits.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_script_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_script_queue.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_script_search.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_search.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_select_key.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_sell_land.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_settings_debug.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_snapshot.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_sound_devices.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_sound_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_spellcheck.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_spellcheck_import.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_stats.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_sys_well.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_telehub.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_test_layout_stacks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_test_text_vertical_aligment.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_texture_ctrl.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_texture_fetch_debugger.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_tools.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_top_objects.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_tos.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_toybox.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_translation_settings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_url_entry.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_voice_controls.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_voice_effect.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_web_content.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_whitelist_entry.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_window_size.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/floater_world_map.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/inspect_avatar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/inspect_group.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/inspect_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/inspect_remote_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/language_settings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_add_wearable_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_attachment_other.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_attachment_self.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_avatar_icon.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_avatar_other.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_avatar_self.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_cof_attachment.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_cof_body_part.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_cof_clothing.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_cof_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_edit.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_favorites.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_gesture_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_group_plus.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_hide_navbar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_imchiclet_adhoc.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_imchiclet_group.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_imchiclet_p2p.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_inspect_avatar_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_inspect_object_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_inspect_self_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_inv_offer_chiclet.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_inventory_add.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_inventory_gear_default.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_land.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_landmark.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_login.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_media_ctrl.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_mini_map.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_model_import_gear_default.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_navbar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_nearby_chat.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_notification_well_button.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_object_icon.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_outfit_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_outfit_tab.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_participant_list.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_people_friends_view_sort.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_people_groups.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_people_groups_view_sort.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_people_nearby.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_people_nearby_multiselect.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_people_nearby_view_sort.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_people_recent_view_sort.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_picks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_picks_plus.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_place.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_place_add_button.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_places_gear_folder.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_places_gear_landmark.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_profile_overflow.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_save_outfit.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_script_chiclet.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_slurl.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_teleport_history_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_teleport_history_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_teleport_history_tab.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_text_editor.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_toolbars.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_topinfobar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_url_agent.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_url_group.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_url_http.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_url_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_url_map.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_url_objectim.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_url_parcel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_url_slapp.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_url_slurl.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_url_teleport.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_viewer.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_wearable_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_wearing_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/menu_wearing_tab.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/mime_types.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/mime_types_linux.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/mime_types_mac.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/notifications.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/outfit_accordion_tab.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_active_object_row.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_adhoc_control_panel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_avatar_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_avatar_tag.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_block_list_sidetray.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_body_parts_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_bodyparts_list_button_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_bottomtray_lite.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_chat_header.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_chiclet_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_classified_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_clothing_list_button_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_clothing_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_cof_wearables.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_deletable_wearable_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_dummy_clothing_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_edit_alpha.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_edit_classified.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_edit_eyes.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_edit_gloves.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_edit_hair.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_edit_jacket.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_edit_pants.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_edit_physics.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_edit_pick.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_edit_profile.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_edit_shape.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_edit_shirt.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_edit_shoes.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_edit_skin.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_edit_skirt.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_edit_socks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_edit_tattoo.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_edit_underpants.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_edit_undershirt.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_edit_wearable.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_group_control_panel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_group_general.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_group_info_sidetray.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_group_invite.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_group_land_money.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_group_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_group_notices.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_group_notify.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_group_roles.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_im_control_panel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_instant_message.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_inventory_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_landmark_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_landmarks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_login.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_main_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_me.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_media_settings_general.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_media_settings_permissions.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_media_settings_security.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_navigation_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_nearby_chat.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_nearby_chat_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_nearby_media.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_notifications_channel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_notify_textbox.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_online_status_toast.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_outbox_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_outfit_edit.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_outfits_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_outfits_inventory_gear_default.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_outfits_list.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_outfits_wearing.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_people.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_pick_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_picks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_place_profile.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_places.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_postcard_message.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_postcard_settings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_preferences_advanced.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_preferences_alerts.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_preferences_chat.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_preferences_colors.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_preferences_general.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_preferences_graphics1.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_preferences_move.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_preferences_privacy.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_preferences_setup.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_preferences_sound.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_prim_media_controls.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_region_covenant.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_region_debug.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_region_environment.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_region_estate.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_region_general.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_region_terrain.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_script_ed.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_script_limits_my_avatar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_script_limits_region_memory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_script_question_toast.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_scrolling_param.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_scrolling_param_base.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_side_tray_tab_caption.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_sidetray_home_tab.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_snapshot_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_snapshot_local.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_snapshot_options.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_snapshot_postcard.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_snapshot_profile.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_sound_devices.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_stand_stop_flying.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_status_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_sys_well_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_teleport_history.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_teleport_history_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_voice_effect.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_volume_pulldown.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/panel_world_map.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/role_actions.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/sidepanel_appearance.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/sidepanel_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/sidepanel_item_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/sidepanel_task_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/strings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/teleport_strings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ja/xui_version.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_about.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_about_land.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_activeim.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_animation_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_auction.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_avatar_picker.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_avatar_textures.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_beacons.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_build_options.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_bulk_perms.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_bumps.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_buy_contents.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_buy_currency.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_buy_currency_html.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_buy_land.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_buy_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_camera.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_choose_group.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_color_picker.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_critical.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_display_name.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_event.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_font_test.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_gesture.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_god_tools.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_hardware_settings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_help_browser.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_hud.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_im_container.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_im_session.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_image_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_incoming_call.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_inspect.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_inventory_item_properties.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_inventory_view_finder.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_joystick.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_lagmeter.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_land_holdings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_live_lsleditor.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_lsl_guide.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_map.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_media_browser.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_media_settings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_mem_leaking.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_moveview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_mute_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_nearby_chat.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_openobject.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_outgoing_call.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_pay.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_pay_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_perm_prefs.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_post_process.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_postcard.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_preferences.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_preview_animation.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_preview_gesture.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_preview_notecard.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_preview_sound.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_preview_texture.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_publish_classified.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_region_debug_console.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_region_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_report_abuse.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_script_debug.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_script_debug_panel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_script_limits.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_script_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_script_queue.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_script_search.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_search.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_select_key.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_sell_land.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_settings_debug.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_snapshot.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_sound_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_stats.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_sys_well.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_telehub.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_texture_ctrl.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_tools.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_top_objects.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_tos.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_url_entry.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_voice_controls.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_voice_effect.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_web_content.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_whitelist_entry.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_window_size.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/floater_world_map.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/inspect_avatar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/inspect_group.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/inspect_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/inspect_remote_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/language_settings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_add_wearable_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_attachment_other.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_attachment_self.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_avatar_icon.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_avatar_other.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_avatar_self.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_bottomtray.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_cof_attachment.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_cof_body_part.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_cof_clothing.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_cof_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_edit.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_favorites.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_gesture_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_group_plus.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_hide_navbar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_imchiclet_adhoc.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_imchiclet_group.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_imchiclet_p2p.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_inspect_avatar_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_inspect_object_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_inspect_self_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_inv_offer_chiclet.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_inventory_add.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_inventory_gear_default.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_land.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_landmark.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_login.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_media_ctrl.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_mini_map.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_navbar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_nearby_chat.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_notification_well_button.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_object_icon.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_outfit_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_outfit_tab.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_participant_list.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_people_friends_view_sort.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_people_groups.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_people_groups_view_sort.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_people_nearby.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_people_nearby_multiselect.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_people_nearby_view_sort.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_people_recent_view_sort.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_picks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_picks_plus.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_place.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_place_add_button.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_places_gear_folder.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_places_gear_landmark.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_profile_overflow.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_save_outfit.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_script_chiclet.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_slurl.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_teleport_history_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_teleport_history_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_teleport_history_tab.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_text_editor.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_topinfobar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_url_agent.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_url_group.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_url_http.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_url_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_url_map.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_url_objectim.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_url_parcel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_url_slapp.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_url_slurl.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_url_teleport.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_viewer.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_wearable_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_wearing_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/menu_wearing_tab.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/mime_types.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/mime_types_linux.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/mime_types_mac.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/notifications.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/outfit_accordion_tab.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_active_object_row.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_adhoc_control_panel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_avatar_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_block_list_sidetray.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_body_parts_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_bodyparts_list_button_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_bottomtray.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_bottomtray_lite.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_classified_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_clothing_list_button_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_clothing_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_cof_wearables.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_deletable_wearable_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_dummy_clothing_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_edit_alpha.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_edit_classified.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_edit_eyes.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_edit_gloves.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_edit_hair.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_edit_jacket.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_edit_pants.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_edit_physics.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_edit_pick.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_edit_profile.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_edit_shape.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_edit_shirt.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_edit_shoes.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_edit_skin.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_edit_skirt.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_edit_socks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_edit_tattoo.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_edit_underpants.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_edit_undershirt.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_edit_wearable.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_group_control_panel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_group_general.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_group_info_sidetray.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_group_invite.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_group_land_money.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_group_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_group_notices.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_group_notify.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_group_roles.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_im_control_panel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_inventory_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_landmark_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_landmarks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_login.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_main_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_me.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_media_settings_general.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_media_settings_permissions.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_media_settings_security.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_navigation_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_nearby_chat_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_nearby_media.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_notify_textbox.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_online_status_toast.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_outfit_edit.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_outfits_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_outfits_inventory_gear_default.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_outfits_list.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_outfits_wearing.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_people.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_pick_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_picks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_place_profile.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_places.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_preferences_advanced.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_preferences_alerts.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_preferences_chat.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_preferences_colors.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_preferences_general.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_preferences_graphics1.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_preferences_move.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_preferences_privacy.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_preferences_setup.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_preferences_sound.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_prim_media_controls.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_region_covenant.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_region_debug.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_region_estate.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_region_general.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_region_terrain.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_region_texture.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_script_ed.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_script_limits_my_avatar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_script_limits_region_memory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_scrolling_param.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_scrolling_param_base.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_side_tray.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_side_tray_tab_caption.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_stand_stop_flying.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_status_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_teleport_history.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_teleport_history_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_voice_effect.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_volume_pulldown.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/panel_world_map.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/role_actions.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/sidepanel_appearance.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/sidepanel_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/sidepanel_item_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/sidepanel_task_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/strings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/teleport_strings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pl/xui_version.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_about.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_about_land.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_activeim.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_animation_anim_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_animation_bvh_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_auction.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_autoreplace.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_avatar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_avatar_picker.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_avatar_textures.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_beacons.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_build_options.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_bulk_perms.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_bumps.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_buy_contents.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_buy_currency.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_buy_currency_html.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_buy_land.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_buy_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_camera.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_chat_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_choose_group.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_color_picker.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_critical.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_delete_env_preset.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_destinations.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_display_name.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_edit_day_cycle.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_edit_sky_preset.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_edit_water_preset.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_environment_settings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_event.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_fast_timers.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_font_test.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_gesture.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_god_tools.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_hardware_settings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_help_browser.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_how_to.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_hud.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_im_container.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_im_session.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_image_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_import_collada.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_incoming_call.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_inspect.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_inventory_item_properties.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_inventory_view_finder.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_joystick.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_lagmeter.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_land_holdings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_live_lsleditor.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_lsl_guide.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_map.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_media_browser.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_media_settings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_mem_leaking.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_merchant_outbox.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_model_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_moveview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_mute_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_my_appearance.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_my_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_object_weights.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_openobject.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_outfit_save_as.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_outgoing_call.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_pathfinding_characters.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_pathfinding_console.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_pathfinding_linksets.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_pay.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_pay_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_people.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_perm_prefs.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_picks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_places.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_post_process.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_preferences.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_preferences_proxy.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_preview_animation.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_preview_gesture.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_preview_notecard.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_preview_sound.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_preview_texture.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_price_for_listing.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_publish_classified.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_region_debug_console.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_region_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_report_abuse.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_script_debug.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_script_debug_panel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_script_limits.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_script_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_script_queue.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_script_search.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_search.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_select_key.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_sell_land.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_settings_debug.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_snapshot.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_sound_devices.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_sound_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_spellcheck.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_spellcheck_import.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_stats.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_sys_well.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_telehub.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_test_layout_stacks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_test_text_vertical_aligment.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_texture_ctrl.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_texture_fetch_debugger.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_tools.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_top_objects.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_tos.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_toybox.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_translation_settings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_url_entry.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_voice_controls.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_voice_effect.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_web_content.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_whitelist_entry.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_window_size.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/floater_world_map.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/inspect_avatar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/inspect_group.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/inspect_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/inspect_remote_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/language_settings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_add_wearable_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_attachment_other.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_attachment_self.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_avatar_icon.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_avatar_other.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_avatar_self.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_cof_attachment.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_cof_body_part.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_cof_clothing.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_cof_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_edit.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_favorites.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_gesture_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_group_plus.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_hide_navbar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_imchiclet_adhoc.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_imchiclet_group.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_imchiclet_p2p.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_inspect_avatar_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_inspect_object_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_inspect_self_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_inv_offer_chiclet.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_inventory_add.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_inventory_gear_default.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_land.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_landmark.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_login.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_media_ctrl.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_mini_map.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_model_import_gear_default.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_navbar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_nearby_chat.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_notification_well_button.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_object_icon.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_outfit_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_outfit_tab.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_participant_list.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_people_friends_view_sort.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_people_groups.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_people_groups_view_sort.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_people_nearby.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_people_nearby_multiselect.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_people_nearby_view_sort.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_people_recent_view_sort.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_picks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_picks_plus.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_place.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_place_add_button.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_places_gear_folder.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_places_gear_landmark.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_profile_overflow.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_save_outfit.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_script_chiclet.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_slurl.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_teleport_history_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_teleport_history_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_teleport_history_tab.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_text_editor.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_toolbars.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_topinfobar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_url_agent.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_url_group.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_url_http.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_url_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_url_map.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_url_objectim.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_url_parcel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_url_slapp.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_url_slurl.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_url_teleport.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_viewer.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_wearable_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_wearing_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/menu_wearing_tab.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/mime_types.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/mime_types_linux.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/mime_types_mac.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/notifications.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/outfit_accordion_tab.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_active_object_row.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_adhoc_control_panel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_avatar_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_block_list_sidetray.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_body_parts_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_bodyparts_list_button_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_bottomtray_lite.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_chiclet_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_classified_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_clothing_list_button_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_clothing_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_cof_wearables.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_deletable_wearable_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_dummy_clothing_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_edit_alpha.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_edit_classified.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_edit_eyes.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_edit_gloves.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_edit_hair.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_edit_jacket.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_edit_pants.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_edit_physics.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_edit_pick.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_edit_profile.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_edit_shape.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_edit_shirt.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_edit_shoes.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_edit_skin.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_edit_skirt.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_edit_socks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_edit_tattoo.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_edit_underpants.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_edit_undershirt.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_edit_wearable.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_group_control_panel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_group_general.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_group_info_sidetray.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_group_invite.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_group_land_money.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_group_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_group_notices.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_group_notify.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_group_roles.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_im_control_panel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_inventory_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_landmark_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_landmarks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_login.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_main_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_me.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_media_settings_general.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_media_settings_permissions.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_media_settings_security.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_navigation_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_nearby_chat.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_nearby_chat_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_nearby_media.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_notify_textbox.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_online_status_toast.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_outbox_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_outfit_edit.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_outfits_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_outfits_inventory_gear_default.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_outfits_list.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_outfits_wearing.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_people.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_pick_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_picks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_place_profile.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_places.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_postcard_message.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_postcard_settings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_preferences_advanced.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_preferences_alerts.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_preferences_chat.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_preferences_colors.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_preferences_general.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_preferences_graphics1.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_preferences_move.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_preferences_privacy.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_preferences_setup.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_preferences_sound.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_prim_media_controls.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_region_covenant.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_region_debug.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_region_environment.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_region_estate.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_region_general.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_region_terrain.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_script_ed.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_script_limits_my_avatar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_script_limits_region_memory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_script_question_toast.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_scrolling_param.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_scrolling_param_base.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_side_tray_tab_caption.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_snapshot_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_snapshot_local.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_snapshot_options.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_snapshot_postcard.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_snapshot_profile.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_sound_devices.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_stand_stop_flying.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_status_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_teleport_history.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_teleport_history_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_voice_effect.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_volume_pulldown.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/panel_world_map.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/role_actions.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/sidepanel_appearance.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/sidepanel_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/sidepanel_item_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/sidepanel_task_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/strings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/teleport_strings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/pt/xui_version.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_aaa.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_about.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_about_land.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_activeim.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_animation_anim_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_animation_bvh_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_auction.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_autoreplace.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_avatar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_avatar_picker.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_avatar_textures.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_beacons.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_build_options.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_bulk_perms.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_bumps.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_buy_contents.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_buy_currency.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_buy_currency_html.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_buy_land.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_buy_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_camera.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_chat_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_choose_group.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_color_picker.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_critical.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_delete_env_preset.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_destinations.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_display_name.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_edit_day_cycle.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_edit_sky_preset.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_edit_water_preset.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_environment_settings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_event.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_fast_timers.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_font_test.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_gesture.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_god_tools.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_hardware_settings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_help_browser.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_how_to.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_hud.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_im_container.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_im_session.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_image_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_import_collada.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_incoming_call.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_inspect.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_inventory_item_properties.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_inventory_view_finder.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_joystick.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_lagmeter.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_land_holdings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_live_lsleditor.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_lsl_guide.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_map.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_media_browser.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_media_settings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_mem_leaking.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_merchant_outbox.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_model_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_moveview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_mute_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_my_appearance.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_my_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_notification.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_notifications_console.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_object_weights.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_openobject.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_outfit_save_as.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_outgoing_call.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_pathfinding_characters.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_pathfinding_console.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_pathfinding_linksets.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_pay.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_pay_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_people.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_perm_prefs.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_picks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_places.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_post_process.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_preferences.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_preferences_proxy.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_preview_animation.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_preview_gesture.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_preview_notecard.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_preview_sound.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_preview_texture.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_price_for_listing.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_publish_classified.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_region_debug_console.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_region_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_report_abuse.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_script_debug.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_script_debug_panel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_script_limits.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_script_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_script_queue.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_script_search.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_search.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_select_key.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_sell_land.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_settings_debug.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_snapshot.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_sound_devices.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_sound_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_spellcheck.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_spellcheck_import.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_stats.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_sys_well.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_telehub.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_test_layout_stacks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_test_text_vertical_aligment.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_texture_ctrl.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_texture_fetch_debugger.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_tools.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_top_objects.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_tos.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_toybox.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_translation_settings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_url_entry.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_voice_controls.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_voice_effect.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_web_content.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_whitelist_entry.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_window_size.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/floater_world_map.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/inspect_avatar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/inspect_group.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/inspect_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/inspect_remote_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_add_wearable_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_attachment_other.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_attachment_self.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_avatar_icon.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_avatar_other.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_avatar_self.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_cof_attachment.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_cof_body_part.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_cof_clothing.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_cof_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_edit.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_favorites.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_gesture_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_group_plus.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_hide_navbar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_imchiclet_adhoc.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_imchiclet_group.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_imchiclet_p2p.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_inspect_avatar_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_inspect_object_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_inspect_self_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_inv_offer_chiclet.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_inventory_add.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_inventory_gear_default.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_land.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_landmark.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_login.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_media_ctrl.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_mini_map.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_model_import_gear_default.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_navbar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_nearby_chat.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_notification_well_button.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_object_icon.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_outfit_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_outfit_tab.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_participant_list.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_people_friends_view_sort.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_people_groups.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_people_groups_view_sort.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_people_nearby.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_people_nearby_multiselect.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_people_nearby_view_sort.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_people_recent_view_sort.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_picks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_picks_plus.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_place.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_place_add_button.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_places_gear_folder.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_places_gear_landmark.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_profile_overflow.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_save_outfit.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_script_chiclet.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_slurl.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_teleport_history_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_teleport_history_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_teleport_history_tab.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_text_editor.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_toolbars.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_topinfobar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_url_agent.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_url_group.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_url_http.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_url_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_url_map.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_url_objectim.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_url_parcel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_url_slapp.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_url_slurl.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_url_teleport.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_viewer.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_wearable_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_wearing_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/menu_wearing_tab.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/mime_types.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/mime_types_linux.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/mime_types_mac.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/notifications.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_active_object_row.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_adhoc_control_panel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_avatar_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_avatar_tag.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_block_list_sidetray.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_body_parts_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_bodyparts_list_button_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_bottomtray_lite.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_chat_header.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_chiclet_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_classified_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_clothing_list_button_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_clothing_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_cof_wearables.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_deletable_wearable_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_dummy_clothing_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_edit_alpha.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_edit_classified.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_edit_eyes.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_edit_gloves.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_edit_hair.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_edit_jacket.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_edit_pants.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_edit_physics.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_edit_pick.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_edit_profile.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_edit_shape.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_edit_shirt.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_edit_shoes.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_edit_skin.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_edit_skirt.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_edit_socks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_edit_tattoo.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_edit_underpants.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_edit_undershirt.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_edit_wearable.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_group_control_panel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_group_general.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_group_info_sidetray.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_group_invite.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_group_land_money.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_group_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_group_notices.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_group_notify.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_group_roles.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_im_control_panel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_instant_message.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_inventory_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_landmark_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_landmarks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_login.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_main_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_me.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_media_settings_general.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_media_settings_permissions.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_media_settings_security.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_navigation_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_nearby_chat.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_nearby_chat_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_nearby_media.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_notify_textbox.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_online_status_toast.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_outbox_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_outfit_edit.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_outfits_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_outfits_inventory_gear_default.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_outfits_list.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_outfits_wearing.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_people.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_pick_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_picks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_place_profile.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_places.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_postcard_message.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_postcard_settings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_preferences_advanced.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_preferences_alerts.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_preferences_chat.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_preferences_colors.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_preferences_general.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_preferences_graphics1.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_preferences_move.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_preferences_privacy.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_preferences_setup.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_preferences_sound.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_prim_media_controls.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_region_covenant.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_region_debug.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_region_environment.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_region_estate.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_region_general.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_region_terrain.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_script_ed.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_script_limits_my_avatar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_script_limits_region_memory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_script_question_toast.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_scrolling_param.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_scrolling_param_base.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_side_tray_tab_caption.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_snapshot_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_snapshot_local.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_snapshot_options.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_snapshot_postcard.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_snapshot_profile.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_sound_devices.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_stand_stop_flying.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_status_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_teleport_history.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_teleport_history_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_voice_effect.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_volume_pulldown.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/panel_world_map.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/role_actions.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/sidepanel_appearance.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/sidepanel_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/sidepanel_item_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/sidepanel_task_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/strings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/ru/teleport_strings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_aaa.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_about.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_about_land.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_activeim.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_animation_anim_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_animation_bvh_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_auction.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_autoreplace.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_avatar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_avatar_picker.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_avatar_textures.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_beacons.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_build_options.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_bulk_perms.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_bumps.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_buy_contents.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_buy_currency.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_buy_currency_html.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_buy_land.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_buy_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_camera.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_chat_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_choose_group.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_color_picker.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_critical.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_delete_env_preset.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_destinations.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_display_name.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_edit_day_cycle.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_edit_sky_preset.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_edit_water_preset.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_environment_settings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_event.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_fast_timers.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_font_test.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_gesture.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_god_tools.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_hardware_settings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_help_browser.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_how_to.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_hud.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_im_container.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_im_session.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_image_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_import_collada.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_incoming_call.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_inspect.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_inventory_item_properties.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_inventory_view_finder.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_joystick.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_lagmeter.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_land_holdings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_live_lsleditor.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_lsl_guide.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_map.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_media_browser.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_media_settings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_mem_leaking.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_merchant_outbox.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_model_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_moveview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_mute_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_my_appearance.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_my_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_notification.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_notifications_console.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_object_weights.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_openobject.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_outfit_save_as.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_outgoing_call.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_pathfinding_characters.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_pathfinding_console.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_pathfinding_linksets.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_pay.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_pay_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_people.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_perm_prefs.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_picks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_places.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_post_process.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_preferences.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_preferences_proxy.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_preview_animation.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_preview_gesture.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_preview_notecard.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_preview_sound.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_preview_texture.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_price_for_listing.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_publish_classified.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_region_debug_console.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_region_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_report_abuse.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_script_debug.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_script_debug_panel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_script_limits.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_script_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_script_queue.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_script_search.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_search.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_select_key.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_sell_land.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_settings_debug.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_snapshot.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_sound_devices.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_sound_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_spellcheck.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_spellcheck_import.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_stats.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_sys_well.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_telehub.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_test_layout_stacks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_test_text_vertical_aligment.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_texture_ctrl.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_texture_fetch_debugger.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_tools.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_top_objects.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_tos.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_toybox.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_translation_settings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_url_entry.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_voice_controls.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_voice_effect.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_web_content.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_whitelist_entry.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_window_size.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/floater_world_map.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/inspect_avatar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/inspect_group.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/inspect_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/inspect_remote_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_add_wearable_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_attachment_other.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_attachment_self.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_avatar_icon.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_avatar_other.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_avatar_self.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_cof_attachment.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_cof_body_part.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_cof_clothing.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_cof_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_edit.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_favorites.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_gesture_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_group_plus.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_hide_navbar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_imchiclet_adhoc.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_imchiclet_group.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_imchiclet_p2p.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_inspect_avatar_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_inspect_object_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_inspect_self_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_inv_offer_chiclet.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_inventory_add.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_inventory_gear_default.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_land.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_landmark.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_login.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_media_ctrl.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_mini_map.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_model_import_gear_default.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_navbar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_nearby_chat.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_notification_well_button.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_object_icon.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_outfit_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_outfit_tab.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_participant_list.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_people_friends_view_sort.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_people_groups.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_people_groups_view_sort.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_people_nearby.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_people_nearby_multiselect.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_people_nearby_view_sort.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_people_recent_view_sort.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_picks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_picks_plus.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_place.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_place_add_button.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_places_gear_folder.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_places_gear_landmark.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_profile_overflow.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_save_outfit.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_script_chiclet.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_slurl.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_teleport_history_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_teleport_history_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_teleport_history_tab.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_text_editor.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_toolbars.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_topinfobar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_url_agent.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_url_group.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_url_http.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_url_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_url_map.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_url_objectim.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_url_parcel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_url_slapp.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_url_slurl.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_url_teleport.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_viewer.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_wearable_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_wearing_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/menu_wearing_tab.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/mime_types.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/mime_types_linux.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/mime_types_mac.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/notifications.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_active_object_row.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_adhoc_control_panel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_avatar_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_avatar_tag.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_block_list_sidetray.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_body_parts_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_bodyparts_list_button_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_bottomtray_lite.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_chat_header.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_chiclet_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_classified_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_clothing_list_button_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_clothing_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_cof_wearables.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_deletable_wearable_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_dummy_clothing_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_edit_alpha.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_edit_classified.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_edit_eyes.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_edit_gloves.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_edit_hair.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_edit_jacket.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_edit_pants.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_edit_physics.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_edit_pick.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_edit_profile.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_edit_shape.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_edit_shirt.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_edit_shoes.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_edit_skin.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_edit_skirt.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_edit_socks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_edit_tattoo.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_edit_underpants.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_edit_undershirt.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_edit_wearable.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_group_control_panel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_group_general.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_group_info_sidetray.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_group_invite.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_group_land_money.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_group_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_group_notices.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_group_notify.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_group_roles.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_im_control_panel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_instant_message.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_inventory_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_landmark_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_landmarks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_login.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_main_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_me.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_media_settings_general.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_media_settings_permissions.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_media_settings_security.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_navigation_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_nearby_chat.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_nearby_chat_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_nearby_media.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_notify_textbox.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_online_status_toast.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_outbox_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_outfit_edit.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_outfits_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_outfits_inventory_gear_default.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_outfits_list.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_outfits_wearing.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_people.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_pick_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_picks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_place_profile.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_places.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_postcard_message.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_postcard_settings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_preferences_advanced.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_preferences_alerts.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_preferences_chat.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_preferences_colors.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_preferences_general.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_preferences_graphics1.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_preferences_move.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_preferences_privacy.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_preferences_setup.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_preferences_sound.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_prim_media_controls.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_region_covenant.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_region_debug.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_region_environment.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_region_estate.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_region_general.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_region_terrain.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_script_ed.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_script_limits_my_avatar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_script_limits_region_memory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_script_question_toast.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_scrolling_param.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_scrolling_param_base.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_side_tray_tab_caption.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_snapshot_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_snapshot_local.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_snapshot_options.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_snapshot_postcard.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_snapshot_profile.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_sound_devices.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_stand_stop_flying.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_status_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_teleport_history.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_teleport_history_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_voice_effect.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_volume_pulldown.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/panel_world_map.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/role_actions.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/sidepanel_appearance.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/sidepanel_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/sidepanel_item_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/sidepanel_task_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/strings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/tr/teleport_strings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_aaa.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_about.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_about_land.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_activeim.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_animation_anim_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_animation_bvh_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_auction.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_autoreplace.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_avatar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_avatar_picker.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_avatar_textures.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_beacons.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_build_options.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_bulk_perms.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_bumps.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_buy_contents.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_buy_currency.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_buy_currency_html.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_buy_land.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_buy_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_camera.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_chat_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_choose_group.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_color_picker.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_critical.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_delete_env_preset.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_destinations.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_display_name.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_edit_day_cycle.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_edit_sky_preset.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_edit_water_preset.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_environment_settings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_event.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_fast_timers.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_font_test.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_gesture.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_god_tools.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_hardware_settings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_help_browser.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_how_to.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_hud.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_im_container.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_im_session.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_image_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_import_collada.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_incoming_call.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_inspect.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_inventory_item_properties.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_inventory_view_finder.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_joystick.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_lagmeter.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_land_holdings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_live_lsleditor.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_lsl_guide.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_map.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_media_browser.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_media_settings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_mem_leaking.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_merchant_outbox.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_model_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_moveview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_mute_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_my_appearance.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_my_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_notification.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_notifications_console.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_object_weights.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_openobject.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_outfit_save_as.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_outgoing_call.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_pathfinding_characters.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_pathfinding_console.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_pathfinding_linksets.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_pay.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_pay_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_people.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_perm_prefs.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_picks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_places.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_post_process.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_preferences.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_preferences_proxy.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_preview_animation.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_preview_gesture.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_preview_notecard.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_preview_sound.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_preview_texture.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_price_for_listing.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_publish_classified.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_region_debug_console.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_region_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_report_abuse.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_script_debug.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_script_debug_panel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_script_limits.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_script_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_script_queue.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_script_search.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_search.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_select_key.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_sell_land.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_settings_debug.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_snapshot.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_sound_devices.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_sound_preview.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_spellcheck.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_spellcheck_import.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_stats.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_sys_well.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_telehub.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_test_layout_stacks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_test_text_vertical_aligment.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_texture_ctrl.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_texture_fetch_debugger.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_tools.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_top_objects.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_tos.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_toybox.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_translation_settings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_url_entry.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_voice_controls.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_voice_effect.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_web_content.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_whitelist_entry.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_window_size.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/floater_world_map.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/inspect_avatar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/inspect_group.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/inspect_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/inspect_remote_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_add_wearable_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_attachment_other.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_attachment_self.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_avatar_icon.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_avatar_other.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_avatar_self.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_cof_attachment.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_cof_body_part.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_cof_clothing.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_cof_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_edit.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_favorites.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_gesture_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_group_plus.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_hide_navbar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_imchiclet_adhoc.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_imchiclet_group.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_imchiclet_p2p.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_inspect_avatar_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_inspect_object_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_inspect_self_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_inv_offer_chiclet.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_inventory_add.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_inventory_gear_default.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_land.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_landmark.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_login.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_media_ctrl.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_mini_map.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_model_import_gear_default.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_navbar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_nearby_chat.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_notification_well_button.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_object.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_object_icon.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_outfit_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_outfit_tab.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_participant_list.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_people_friends_view_sort.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_people_groups.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_people_groups_view_sort.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_people_nearby.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_people_nearby_multiselect.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_people_nearby_view_sort.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_people_recent_view_sort.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_picks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_picks_plus.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_place.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_place_add_button.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_places_gear_folder.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_places_gear_landmark.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_profile_overflow.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_save_outfit.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_script_chiclet.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_slurl.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_teleport_history_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_teleport_history_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_teleport_history_tab.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_text_editor.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_toolbars.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_topinfobar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_url_agent.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_url_group.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_url_http.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_url_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_url_map.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_url_objectim.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_url_parcel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_url_slapp.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_url_slurl.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_url_teleport.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_viewer.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_wearable_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_wearing_gear.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/menu_wearing_tab.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/mime_types.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/mime_types_linux.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/mime_types_mac.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/notifications.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_active_object_row.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_adhoc_control_panel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_avatar_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_avatar_tag.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_block_list_sidetray.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_body_parts_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_bodyparts_list_button_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_bottomtray_lite.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_chat_header.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_chiclet_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_classified_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_clothing_list_button_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_clothing_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_cof_wearables.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_deletable_wearable_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_dummy_clothing_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_edit_alpha.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_edit_classified.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_edit_eyes.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_edit_gloves.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_edit_hair.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_edit_jacket.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_edit_pants.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_edit_physics.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_edit_pick.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_edit_profile.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_edit_shape.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_edit_shirt.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_edit_shoes.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_edit_skin.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_edit_skirt.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_edit_socks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_edit_tattoo.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_edit_underpants.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_edit_undershirt.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_edit_wearable.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_group_control_panel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_group_general.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_group_info_sidetray.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_group_invite.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_group_land_money.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_group_list_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_group_notices.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_group_notify.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_group_roles.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_im_control_panel.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_instant_message.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_inventory_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_landmark_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_landmarks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_login.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_main_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_me.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_media_settings_general.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_media_settings_permissions.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_media_settings_security.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_navigation_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_navmesh_rebake.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_nearby_chat.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_nearby_chat_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_nearby_media.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_notify_textbox.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_online_status_toast.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_outbox_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_outfit_edit.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_outfits_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_outfits_inventory_gear_default.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_outfits_list.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_outfits_wearing.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_people.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_pick_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_picks.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_place_profile.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_places.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_postcard_message.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_postcard_settings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_preferences_advanced.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_preferences_alerts.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_preferences_chat.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_preferences_colors.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_preferences_general.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_preferences_graphics1.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_preferences_move.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_preferences_privacy.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_preferences_setup.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_preferences_sound.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_prim_media_controls.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_region_covenant.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_region_debug.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_region_environment.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_region_estate.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_region_general.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_region_terrain.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_script_ed.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_script_limits_my_avatar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_script_limits_region_memory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_script_question_toast.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_scrolling_param.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_scrolling_param_base.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_side_tray_tab_caption.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_snapshot_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_snapshot_local.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_snapshot_options.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_snapshot_postcard.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_snapshot_profile.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_sound_devices.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_stand_stop_flying.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_status_bar.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_teleport_history.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_teleport_history_item.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_voice_effect.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_volume_pulldown.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/panel_world_map.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/role_actions.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/sidepanel_appearance.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/sidepanel_inventory.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/sidepanel_item_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/sidepanel_task_info.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/strings.xml
 mode change 100644 => 100755 indra/newview/skins/default/xui/zh/teleport_strings.xml
 mode change 100644 => 100755 indra/newview/tests/gpus_results.txt
 mode change 100644 => 100755 indra/newview/tests/gpus_seen.txt
 mode change 100644 => 100755 indra/newview/tests/llagentaccess_test.cpp
 mode change 100644 => 100755 indra/newview/tests/llcapabilitylistener_test.cpp
 mode change 100644 => 100755 indra/newview/tests/lldateutil_test.cpp
 mode change 100644 => 100755 indra/newview/tests/lldir_stub.cpp
 mode change 100644 => 100755 indra/newview/tests/llglslshader_stub.cpp
 mode change 100644 => 100755 indra/newview/tests/lllogininstance_test.cpp
 mode change 100644 => 100755 indra/newview/tests/llmediadataclient_test.cpp
 mode change 100644 => 100755 indra/newview/tests/llpipeline_stub.cpp
 mode change 100644 => 100755 indra/newview/tests/llremoteparcelrequest_test.cpp
 mode change 100644 => 100755 indra/newview/tests/llsecapi_test.cpp
 mode change 100644 => 100755 indra/newview/tests/llsechandler_basic_test.cpp
 mode change 100644 => 100755 indra/newview/tests/llsimplestat_test.cpp
 mode change 100644 => 100755 indra/newview/tests/llsky_stub.cpp
 mode change 100644 => 100755 indra/newview/tests/llslurl_test.cpp
 mode change 100644 => 100755 indra/newview/tests/lltextureinfo_test.cpp
 mode change 100644 => 100755 indra/newview/tests/lltextureinfodetails_test.cpp
 mode change 100644 => 100755 indra/newview/tests/lltexturestatsuploader_test.cpp
 mode change 100644 => 100755 indra/newview/tests/lltranslate_test.cpp
 mode change 100644 => 100755 indra/newview/tests/llversioninfo_test.cpp
 mode change 100644 => 100755 indra/newview/tests/llviewerassetstats_test.cpp
 mode change 100644 => 100755 indra/newview/tests/llviewerhelputil_test.cpp
 mode change 100644 => 100755 indra/newview/tests/llviewernetwork_test.cpp
 mode change 100644 => 100755 indra/newview/tests/llviewershadermgr_stub.cpp
 mode change 100644 => 100755 indra/newview/tests/llwlanimator_stub.cpp
 mode change 100644 => 100755 indra/newview/tests/llwldaycycle_stub.cpp
 mode change 100644 => 100755 indra/newview/tests/llwlparammanager_test.cpp
 mode change 100644 => 100755 indra/newview/tests/llwlparamset_stub.cpp
 mode change 100644 => 100755 indra/newview/tests/llworldmap_test.cpp
 mode change 100644 => 100755 indra/newview/tests/llworldmipmap_test.cpp
 mode change 100644 => 100755 indra/newview/tests/llxmlrpclistener_test.cpp
 mode change 100644 => 100755 indra/newview/tests/test_llxmlrpc_peer.py
 mode change 100644 => 100755 indra/newview/tr.lproj/language.txt
 mode change 100644 => 100755 indra/newview/uk.lproj/language.txt
 mode change 100644 => 100755 indra/newview/viewer_manifest.py
 mode change 100644 => 100755 indra/newview/zh-Hans.lproj/language.txt
 mode change 100644 => 100755 indra/test/CMakeLists.txt
 mode change 100644 => 100755 indra/test/blowfish.1.bin
 mode change 100644 => 100755 indra/test/blowfish.2.bin
 mode change 100644 => 100755 indra/test/blowfish.digits.txt
 mode change 100644 => 100755 indra/test/catch_and_store_what_in.h
 mode change 100644 => 100755 indra/test/debug.h
 mode change 100644 => 100755 indra/test/io.cpp
 mode change 100644 => 100755 indra/test/llapp_tut.cpp
 mode change 100644 => 100755 indra/test/llassetuploadqueue_tut.cpp
 mode change 100644 => 100755 indra/test/llblowfish_tut.cpp
 mode change 100644 => 100755 indra/test/llbuffer_tut.cpp
 mode change 100644 => 100755 indra/test/lldatapacker_tut.cpp
 mode change 100644 => 100755 indra/test/lldoubledispatch_tut.cpp
 mode change 100644 => 100755 indra/test/llevents_tut.cpp
 mode change 100644 => 100755 indra/test/llhttpdate_tut.cpp
 mode change 100644 => 100755 indra/test/llhttpnode_tut.cpp
 mode change 100644 => 100755 indra/test/lliohttpserver_tut.cpp
 mode change 100644 => 100755 indra/test/llmessageconfig_tut.cpp
 mode change 100644 => 100755 indra/test/llmessagetemplateparser_tut.cpp
 mode change 100644 => 100755 indra/test/llpermissions_tut.cpp
 mode change 100644 => 100755 indra/test/llpipeutil.cpp
 mode change 100644 => 100755 indra/test/llpipeutil.h
 mode change 100644 => 100755 indra/test/llsaleinfo_tut.cpp
 mode change 100644 => 100755 indra/test/llscriptresource_tut.cpp
 mode change 100644 => 100755 indra/test/llsd_new_tut.cpp
 mode change 100644 => 100755 indra/test/llsdmessagebuilder_tut.cpp
 mode change 100644 => 100755 indra/test/llsdmessagereader_tut.cpp
 mode change 100644 => 100755 indra/test/llsdtraits.h
 mode change 100644 => 100755 indra/test/llsdutil_tut.cpp
 mode change 100644 => 100755 indra/test/llservicebuilder_tut.cpp
 mode change 100644 => 100755 indra/test/llstreamtools_tut.cpp
 mode change 100644 => 100755 indra/test/lltemplatemessagebuilder_tut.cpp
 mode change 100644 => 100755 indra/test/lltimestampcache_tut.cpp
 mode change 100644 => 100755 indra/test/lltranscode_tut.cpp
 mode change 100644 => 100755 indra/test/lltut.cpp
 mode change 100644 => 100755 indra/test/lltut.h
 mode change 100644 => 100755 indra/test/lluserrelations_tut.cpp
 mode change 100644 => 100755 indra/test/lluuidhashmap_tut.cpp
 mode change 100644 => 100755 indra/test/llxorcipher_tut.cpp
 mode change 100644 => 100755 indra/test/manageapr.h
 mode change 100644 => 100755 indra/test/message_tut.cpp
 mode change 100644 => 100755 indra/test/mock_http_client.cpp
 mode change 100644 => 100755 indra/test/mock_http_client.h
 mode change 100644 => 100755 indra/test/namedtempfile.h
 mode change 100644 => 100755 indra/test/prim_linkability_tut.cpp
 mode change 100644 => 100755 indra/test/test.cpp
 mode change 100644 => 100755 indra/test/test.h
 mode change 100644 => 100755 indra/test/test_llmanifest.py
 mode change 100644 => 100755 indra/test_apps/llplugintest/CMakeLists.txt
 mode change 100644 => 100755 indra/test_apps/llplugintest/bookmarks.txt
 mode change 100644 => 100755 indra/test_apps/llplugintest/llmediaplugintest.cpp
 mode change 100644 => 100755 indra/test_apps/llplugintest/llmediaplugintest.h
 mode change 100644 => 100755 indra/tools/vstool/README.txt
 mode change 100644 => 100755 indra/tools/vstool/VSTool.csproj
 mode change 100644 => 100755 indra/tools/vstool/VSTool.sln
 mode change 100644 => 100755 indra/tools/vstool/main.cs
 mode change 100644 => 100755 indra/viewer_components/CMakeLists.txt
 mode change 100644 => 100755 indra/viewer_components/login/CMakeLists.txt
 mode change 100644 => 100755 indra/viewer_components/login/lllogin.cpp
 mode change 100644 => 100755 indra/viewer_components/login/lllogin.h
 mode change 100644 => 100755 indra/viewer_components/login/tests/lllogin_test.cpp
 mode change 100644 => 100755 indra/viewer_components/updater/CMakeLists.txt
 mode change 100644 => 100755 indra/viewer_components/updater/llupdatechecker.cpp
 mode change 100644 => 100755 indra/viewer_components/updater/llupdatechecker.h
 mode change 100644 => 100755 indra/viewer_components/updater/llupdatedownloader.cpp
 mode change 100644 => 100755 indra/viewer_components/updater/llupdatedownloader.h
 mode change 100644 => 100755 indra/viewer_components/updater/llupdateinstaller.cpp
 mode change 100644 => 100755 indra/viewer_components/updater/llupdateinstaller.h
 mode change 100644 => 100755 indra/viewer_components/updater/llupdaterservice.cpp
 mode change 100644 => 100755 indra/viewer_components/updater/llupdaterservice.h
 mode change 100644 => 100755 indra/viewer_components/updater/scripts/darwin/update_install
 mode change 100644 => 100755 indra/viewer_components/updater/scripts/linux/update_install
 mode change 100644 => 100755 indra/viewer_components/updater/tests/llupdaterservice_test.cpp
 mode change 100644 => 100755 indra/win_crash_logger/CMakeLists.txt
 mode change 100644 => 100755 indra/win_crash_logger/StdAfx.cpp
 mode change 100644 => 100755 indra/win_crash_logger/StdAfx.h
 mode change 100644 => 100755 indra/win_crash_logger/ll_icon.ico
 mode change 100644 => 100755 indra/win_crash_logger/llcrashloggerwindows.cpp
 mode change 100644 => 100755 indra/win_crash_logger/llcrashloggerwindows.h
 mode change 100644 => 100755 indra/win_crash_logger/resource.h
 mode change 100644 => 100755 indra/win_crash_logger/win_crash_logger.cpp
 mode change 100644 => 100755 indra/win_crash_logger/win_crash_logger.h
 mode change 100644 => 100755 indra/win_crash_logger/win_crash_logger.ico
 mode change 100644 => 100755 indra/win_crash_logger/win_crash_logger.rc
 mode change 100644 => 100755 indra/win_updater/CMakeLists.txt
 mode change 100644 => 100755 indra/win_updater/updater.cpp
 mode change 100644 => 100755 scripts/messages/message_template.msg
 mode change 100644 => 100755 scripts/messages/message_template.msg.sha1
 mode change 100644 => 100755 scripts/setup-path.py
 mode change 100644 => 100755 scripts/template_verifier.py
 mode change 100644 => 100755 scripts/templates/template-cpp.cpp
 mode change 100644 => 100755 scripts/templates/template-h.h

diff --git a/.hgignore b/.hgignore
old mode 100644
new mode 100755
diff --git a/.hgtags b/.hgtags
old mode 100644
new mode 100755
diff --git a/BuildParams b/BuildParams
old mode 100644
new mode 100755
diff --git a/autobuild.xml b/autobuild.xml
old mode 100644
new mode 100755
index 37e59646793..789496dc3b1
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -747,6 +747,7 @@
           </map>
         </map>
       </map>
+
       <key>google_breakpad</key>
       <map>
         <key>license</key>
@@ -762,9 +763,9 @@
             <key>archive</key>
             <map>
            <key>hash</key>
-	      <string>79976b2f93ec5716709b752483ffa04a</string>
+	   <string>aff5566e04003de0383941981198e04e</string>
           <key>url</key>
-          <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-google-breakpad/rev/273021/arch/Darwin/installer/google_breakpad-0.0.0-rev1099-darwin-20130328.tar.bz2</string>
+          <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-google-breakpad/rev/273073/arch/Darwin/installer/google_breakpad-0.0.0-rev1099-darwin-20130329.tar.bz2</string>
             </map>
             <key>name</key>
             <string>darwin</string>
@@ -786,9 +787,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-	      <string>cfd02d75dbd55327de71db81dc8a3f41</string>
+	      <string>d812a6dfcabe6528198a3191068dac09</string>
               <key>url</key>
-             <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-google-breakpad/rev/273021/arch/CYGWIN/installer/google_breakpad-0.0.0-rev1099-windows-20130328.tar.bz2</string>
+             <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-google-breakpad/rev/273073/arch/CYGWIN/installer/google_breakpad-0.0.0-rev1099-windows-20130329.tar.bz2</string>
             </map>
             <key>name</key>
             <string>windows</string>
diff --git a/doc/LGPL-licence.txt b/doc/LGPL-licence.txt
old mode 100644
new mode 100755
diff --git a/doc/LICENSE-logos.txt b/doc/LICENSE-logos.txt
old mode 100644
new mode 100755
diff --git a/doc/LICENSE-source.txt b/doc/LICENSE-source.txt
old mode 100644
new mode 100755
diff --git a/doc/contributions.txt b/doc/contributions.txt
old mode 100644
new mode 100755
diff --git a/doc/releasenotes-where.txt b/doc/releasenotes-where.txt
old mode 100644
new mode 100755
diff --git a/doc/translations.txt b/doc/translations.txt
old mode 100644
new mode 100755
diff --git a/etc/message.xml b/etc/message.xml
old mode 100644
new mode 100755
diff --git a/indra/CMakeLists.txt b/indra/CMakeLists.txt
old mode 100644
new mode 100755
diff --git a/indra/cmake/00-Common.cmake b/indra/cmake/00-Common.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/APR.cmake b/indra/cmake/APR.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/Audio.cmake b/indra/cmake/Audio.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/BerkeleyDB.cmake b/indra/cmake/BerkeleyDB.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/Boost.cmake b/indra/cmake/Boost.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/BuildVersion.cmake b/indra/cmake/BuildVersion.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/CARes.cmake b/indra/cmake/CARes.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/CMakeCopyIfDifferent.cmake b/indra/cmake/CMakeCopyIfDifferent.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/CMakeLists.txt b/indra/cmake/CMakeLists.txt
old mode 100644
new mode 100755
diff --git a/indra/cmake/CSharpMacros.cmake b/indra/cmake/CSharpMacros.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/CURL.cmake b/indra/cmake/CURL.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/Copy3rdPartyLibs.cmake b/indra/cmake/Copy3rdPartyLibs.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/CopyBackToSource.cmake b/indra/cmake/CopyBackToSource.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/DBusGlib.cmake b/indra/cmake/DBusGlib.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/DeploySharedLibs.cmake b/indra/cmake/DeploySharedLibs.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/DirectX.cmake b/indra/cmake/DirectX.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/DragDrop.cmake b/indra/cmake/DragDrop.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/EXPAT.cmake b/indra/cmake/EXPAT.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/ExamplePlugin.cmake b/indra/cmake/ExamplePlugin.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/Externals.cmake b/indra/cmake/Externals.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/FMOD.cmake b/indra/cmake/FMOD.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/FindAPR.cmake b/indra/cmake/FindAPR.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/FindAutobuild.cmake b/indra/cmake/FindAutobuild.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/FindBerkeleyDB.cmake b/indra/cmake/FindBerkeleyDB.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/FindCARes.cmake b/indra/cmake/FindCARes.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/FindELFIO.cmake b/indra/cmake/FindELFIO.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/FindFMOD.cmake b/indra/cmake/FindFMOD.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/FindGLH.cmake b/indra/cmake/FindGLH.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/FindGoogleBreakpad.cmake b/indra/cmake/FindGoogleBreakpad.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/FindGooglePerfTools.cmake b/indra/cmake/FindGooglePerfTools.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/FindHUNSPELL.cmake b/indra/cmake/FindHUNSPELL.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/FindJsonCpp.cmake b/indra/cmake/FindJsonCpp.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/FindLLQtWebkit.cmake b/indra/cmake/FindLLQtWebkit.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/FindMT.cmake b/indra/cmake/FindMT.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/FindMono.cmake b/indra/cmake/FindMono.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/FindMySQL.cmake b/indra/cmake/FindMySQL.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/FindNDOF.cmake b/indra/cmake/FindNDOF.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/FindOpenJPEG.cmake b/indra/cmake/FindOpenJPEG.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/FindSCP.cmake b/indra/cmake/FindSCP.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/FindSVN.cmake b/indra/cmake/FindSVN.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/FindXmlRpcEpi.cmake b/indra/cmake/FindXmlRpcEpi.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/FindZLIB.cmake b/indra/cmake/FindZLIB.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/FreeType.cmake b/indra/cmake/FreeType.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/GLH.cmake b/indra/cmake/GLH.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/GLOD.cmake b/indra/cmake/GLOD.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/GStreamer010Plugin.cmake b/indra/cmake/GStreamer010Plugin.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/GetPrerequisites_2_8.cmake b/indra/cmake/GetPrerequisites_2_8.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/Glui.cmake b/indra/cmake/Glui.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/Glut.cmake b/indra/cmake/Glut.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/GoogleBreakpad.cmake b/indra/cmake/GoogleBreakpad.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/GoogleMock.cmake b/indra/cmake/GoogleMock.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/GooglePerfTools.cmake b/indra/cmake/GooglePerfTools.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/Havok.cmake b/indra/cmake/Havok.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/Hunspell.cmake b/indra/cmake/Hunspell.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/JPEG.cmake b/indra/cmake/JPEG.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/JsonCpp.cmake b/indra/cmake/JsonCpp.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/LLAudio.cmake b/indra/cmake/LLAudio.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/LLCharacter.cmake b/indra/cmake/LLCharacter.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/LLCommon.cmake b/indra/cmake/LLCommon.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/LLCoreHttp.cmake b/indra/cmake/LLCoreHttp.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/LLCrashLogger.cmake b/indra/cmake/LLCrashLogger.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/LLDatabase.cmake b/indra/cmake/LLDatabase.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/LLImage.cmake b/indra/cmake/LLImage.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/LLImageJ2COJ.cmake b/indra/cmake/LLImageJ2COJ.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/LLInventory.cmake b/indra/cmake/LLInventory.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/LLKDU.cmake b/indra/cmake/LLKDU.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/LLLogin.cmake b/indra/cmake/LLLogin.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/LLMath.cmake b/indra/cmake/LLMath.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/LLMessage.cmake b/indra/cmake/LLMessage.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/LLPhysicsExtensions.cmake b/indra/cmake/LLPhysicsExtensions.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/LLPlugin.cmake b/indra/cmake/LLPlugin.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/LLPrimitive.cmake b/indra/cmake/LLPrimitive.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/LLRender.cmake b/indra/cmake/LLRender.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/LLScene.cmake b/indra/cmake/LLScene.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/LLSharedLibs.cmake b/indra/cmake/LLSharedLibs.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/LLTestCommand.cmake b/indra/cmake/LLTestCommand.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/LLUI.cmake b/indra/cmake/LLUI.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/LLVFS.cmake b/indra/cmake/LLVFS.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/LLWindow.cmake b/indra/cmake/LLWindow.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/LLXML.cmake b/indra/cmake/LLXML.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/LLXUIXML.cmake b/indra/cmake/LLXUIXML.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/LScript.cmake b/indra/cmake/LScript.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/Linking.cmake b/indra/cmake/Linking.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/MediaPluginBase.cmake b/indra/cmake/MediaPluginBase.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/MonoDeps.cmake b/indra/cmake/MonoDeps.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/MonoEmbed.cmake b/indra/cmake/MonoEmbed.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/MySQL.cmake b/indra/cmake/MySQL.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/NDOF.cmake b/indra/cmake/NDOF.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/NVAPI.cmake b/indra/cmake/NVAPI.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/OPENAL.cmake b/indra/cmake/OPENAL.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/OpenGL.cmake b/indra/cmake/OpenGL.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/OpenJPEG.cmake b/indra/cmake/OpenJPEG.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/OpenSSL.cmake b/indra/cmake/OpenSSL.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/PNG.cmake b/indra/cmake/PNG.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/PluginAPI.cmake b/indra/cmake/PluginAPI.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/Prebuilt.cmake b/indra/cmake/Prebuilt.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/PulseAudio.cmake b/indra/cmake/PulseAudio.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/Python.cmake b/indra/cmake/Python.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/QuickTimePlugin.cmake b/indra/cmake/QuickTimePlugin.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/TemplateCheck.cmake b/indra/cmake/TemplateCheck.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/Tut.cmake b/indra/cmake/Tut.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/UI.cmake b/indra/cmake/UI.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/UnixInstall.cmake b/indra/cmake/UnixInstall.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/Variables.cmake b/indra/cmake/Variables.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/ViewerMiscLibs.cmake b/indra/cmake/ViewerMiscLibs.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/VisualLeakDetector.cmake b/indra/cmake/VisualLeakDetector.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/WebKitLibPlugin.cmake b/indra/cmake/WebKitLibPlugin.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/XmlRpcEpi.cmake b/indra/cmake/XmlRpcEpi.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/ZLIB.cmake b/indra/cmake/ZLIB.cmake
old mode 100644
new mode 100755
diff --git a/indra/cmake/cmake_dummy.cpp b/indra/cmake/cmake_dummy.cpp
old mode 100644
new mode 100755
diff --git a/indra/cmake/run_build_test.py b/indra/cmake/run_build_test.py
old mode 100644
new mode 100755
diff --git a/indra/copy_win_scripts/CMakeLists.txt b/indra/copy_win_scripts/CMakeLists.txt
old mode 100644
new mode 100755
diff --git a/indra/copy_win_scripts/start-client.py b/indra/copy_win_scripts/start-client.py
old mode 100644
new mode 100755
diff --git a/indra/edit-me-to-trigger-new-build.txt b/indra/edit-me-to-trigger-new-build.txt
old mode 100644
new mode 100755
diff --git a/indra/fix-incredibuild.py b/indra/fix-incredibuild.py
old mode 100644
new mode 100755
diff --git a/indra/integration_tests/CMakeLists.txt b/indra/integration_tests/CMakeLists.txt
old mode 100644
new mode 100755
diff --git a/indra/integration_tests/llimage_libtest/CMakeLists.txt b/indra/integration_tests/llimage_libtest/CMakeLists.txt
old mode 100644
new mode 100755
diff --git a/indra/integration_tests/llimage_libtest/llimage_libtest.cpp b/indra/integration_tests/llimage_libtest/llimage_libtest.cpp
old mode 100644
new mode 100755
diff --git a/indra/integration_tests/llimage_libtest/llimage_libtest.h b/indra/integration_tests/llimage_libtest/llimage_libtest.h
old mode 100644
new mode 100755
diff --git a/indra/integration_tests/llui_libtest/CMakeLists.txt b/indra/integration_tests/llui_libtest/CMakeLists.txt
old mode 100644
new mode 100755
diff --git a/indra/integration_tests/llui_libtest/llui_libtest.cpp b/indra/integration_tests/llui_libtest/llui_libtest.cpp
old mode 100644
new mode 100755
diff --git a/indra/integration_tests/llui_libtest/llui_libtest.h b/indra/integration_tests/llui_libtest/llui_libtest.h
old mode 100644
new mode 100755
diff --git a/indra/integration_tests/llui_libtest/llwidgetreg.cpp b/indra/integration_tests/llui_libtest/llwidgetreg.cpp
old mode 100644
new mode 100755
diff --git a/indra/integration_tests/llui_libtest/llwidgetreg.h b/indra/integration_tests/llui_libtest/llwidgetreg.h
old mode 100644
new mode 100755
diff --git a/indra/lib/python/indra/__init__.py b/indra/lib/python/indra/__init__.py
old mode 100644
new mode 100755
diff --git a/indra/lib/python/indra/base/__init__.py b/indra/lib/python/indra/base/__init__.py
old mode 100644
new mode 100755
diff --git a/indra/lib/python/indra/base/cllsd_test.py b/indra/lib/python/indra/base/cllsd_test.py
old mode 100644
new mode 100755
diff --git a/indra/lib/python/indra/base/config.py b/indra/lib/python/indra/base/config.py
old mode 100644
new mode 100755
diff --git a/indra/lib/python/indra/base/llsd.py b/indra/lib/python/indra/base/llsd.py
old mode 100644
new mode 100755
diff --git a/indra/lib/python/indra/base/lluuid.py b/indra/lib/python/indra/base/lluuid.py
old mode 100644
new mode 100755
diff --git a/indra/lib/python/indra/base/metrics.py b/indra/lib/python/indra/base/metrics.py
old mode 100644
new mode 100755
diff --git a/indra/lib/python/indra/ipc/__init__.py b/indra/lib/python/indra/ipc/__init__.py
old mode 100644
new mode 100755
diff --git a/indra/lib/python/indra/ipc/compatibility.py b/indra/lib/python/indra/ipc/compatibility.py
old mode 100644
new mode 100755
diff --git a/indra/lib/python/indra/ipc/httputil.py b/indra/lib/python/indra/ipc/httputil.py
old mode 100644
new mode 100755
diff --git a/indra/lib/python/indra/ipc/llmessage.py b/indra/lib/python/indra/ipc/llmessage.py
old mode 100644
new mode 100755
diff --git a/indra/lib/python/indra/ipc/llsdhttp.py b/indra/lib/python/indra/ipc/llsdhttp.py
old mode 100644
new mode 100755
diff --git a/indra/lib/python/indra/ipc/mysql_pool.py b/indra/lib/python/indra/ipc/mysql_pool.py
old mode 100644
new mode 100755
diff --git a/indra/lib/python/indra/ipc/russ.py b/indra/lib/python/indra/ipc/russ.py
old mode 100644
new mode 100755
diff --git a/indra/lib/python/indra/ipc/servicebuilder.py b/indra/lib/python/indra/ipc/servicebuilder.py
old mode 100644
new mode 100755
diff --git a/indra/lib/python/indra/ipc/siesta.py b/indra/lib/python/indra/ipc/siesta.py
old mode 100644
new mode 100755
diff --git a/indra/lib/python/indra/ipc/siesta_test.py b/indra/lib/python/indra/ipc/siesta_test.py
old mode 100644
new mode 100755
diff --git a/indra/lib/python/indra/ipc/tokenstream.py b/indra/lib/python/indra/ipc/tokenstream.py
old mode 100644
new mode 100755
diff --git a/indra/lib/python/indra/ipc/webdav.py b/indra/lib/python/indra/ipc/webdav.py
old mode 100644
new mode 100755
diff --git a/indra/lib/python/indra/ipc/xml_rpc.py b/indra/lib/python/indra/ipc/xml_rpc.py
old mode 100644
new mode 100755
diff --git a/indra/lib/python/indra/util/__init__.py b/indra/lib/python/indra/util/__init__.py
old mode 100644
new mode 100755
diff --git a/indra/lib/python/indra/util/fastest_elementtree.py b/indra/lib/python/indra/util/fastest_elementtree.py
old mode 100644
new mode 100755
diff --git a/indra/lib/python/indra/util/helpformatter.py b/indra/lib/python/indra/util/helpformatter.py
old mode 100644
new mode 100755
diff --git a/indra/lib/python/indra/util/iterators.py b/indra/lib/python/indra/util/iterators.py
old mode 100644
new mode 100755
diff --git a/indra/lib/python/indra/util/llmanifest.py b/indra/lib/python/indra/util/llmanifest.py
old mode 100644
new mode 100755
diff --git a/indra/lib/python/indra/util/llsubprocess.py b/indra/lib/python/indra/util/llsubprocess.py
old mode 100644
new mode 100755
diff --git a/indra/lib/python/indra/util/llversion.py b/indra/lib/python/indra/util/llversion.py
old mode 100644
new mode 100755
diff --git a/indra/lib/python/indra/util/named_query.py b/indra/lib/python/indra/util/named_query.py
old mode 100644
new mode 100755
diff --git a/indra/lib/python/indra/util/shutil2.py b/indra/lib/python/indra/util/shutil2.py
old mode 100644
new mode 100755
diff --git a/indra/lib/python/indra/util/term.py b/indra/lib/python/indra/util/term.py
old mode 100644
new mode 100755
diff --git a/indra/lib/python/indra/util/test_win32_manifest.py b/indra/lib/python/indra/util/test_win32_manifest.py
old mode 100644
new mode 100755
diff --git a/indra/lib/python/uuid.py b/indra/lib/python/uuid.py
old mode 100644
new mode 100755
diff --git a/indra/linux_crash_logger/CMakeLists.txt b/indra/linux_crash_logger/CMakeLists.txt
old mode 100644
new mode 100755
diff --git a/indra/linux_crash_logger/linux_crash_logger.cpp b/indra/linux_crash_logger/linux_crash_logger.cpp
old mode 100644
new mode 100755
diff --git a/indra/linux_crash_logger/llcrashloggerlinux.cpp b/indra/linux_crash_logger/llcrashloggerlinux.cpp
old mode 100644
new mode 100755
diff --git a/indra/linux_crash_logger/llcrashloggerlinux.h b/indra/linux_crash_logger/llcrashloggerlinux.h
old mode 100644
new mode 100755
diff --git a/indra/llaudio/CMakeLists.txt b/indra/llaudio/CMakeLists.txt
old mode 100644
new mode 100755
diff --git a/indra/llaudio/llaudiodecodemgr.cpp b/indra/llaudio/llaudiodecodemgr.cpp
old mode 100644
new mode 100755
diff --git a/indra/llaudio/llaudiodecodemgr.h b/indra/llaudio/llaudiodecodemgr.h
old mode 100644
new mode 100755
diff --git a/indra/llaudio/llaudioengine.cpp b/indra/llaudio/llaudioengine.cpp
old mode 100644
new mode 100755
diff --git a/indra/llaudio/llaudioengine.h b/indra/llaudio/llaudioengine.h
old mode 100644
new mode 100755
diff --git a/indra/llaudio/llaudioengine_fmod.cpp b/indra/llaudio/llaudioengine_fmod.cpp
old mode 100644
new mode 100755
diff --git a/indra/llaudio/llaudioengine_fmod.h b/indra/llaudio/llaudioengine_fmod.h
old mode 100644
new mode 100755
diff --git a/indra/llaudio/llaudioengine_openal.cpp b/indra/llaudio/llaudioengine_openal.cpp
old mode 100644
new mode 100755
diff --git a/indra/llaudio/llaudioengine_openal.h b/indra/llaudio/llaudioengine_openal.h
old mode 100644
new mode 100755
diff --git a/indra/llaudio/lllistener.cpp b/indra/llaudio/lllistener.cpp
old mode 100644
new mode 100755
diff --git a/indra/llaudio/lllistener.h b/indra/llaudio/lllistener.h
old mode 100644
new mode 100755
diff --git a/indra/llaudio/lllistener_ds3d.h b/indra/llaudio/lllistener_ds3d.h
old mode 100644
new mode 100755
diff --git a/indra/llaudio/lllistener_fmod.cpp b/indra/llaudio/lllistener_fmod.cpp
old mode 100644
new mode 100755
diff --git a/indra/llaudio/lllistener_fmod.h b/indra/llaudio/lllistener_fmod.h
old mode 100644
new mode 100755
diff --git a/indra/llaudio/lllistener_openal.cpp b/indra/llaudio/lllistener_openal.cpp
old mode 100644
new mode 100755
diff --git a/indra/llaudio/lllistener_openal.h b/indra/llaudio/lllistener_openal.h
old mode 100644
new mode 100755
diff --git a/indra/llaudio/llstreamingaudio.h b/indra/llaudio/llstreamingaudio.h
old mode 100644
new mode 100755
diff --git a/indra/llaudio/llstreamingaudio_fmod.cpp b/indra/llaudio/llstreamingaudio_fmod.cpp
old mode 100644
new mode 100755
diff --git a/indra/llaudio/llstreamingaudio_fmod.h b/indra/llaudio/llstreamingaudio_fmod.h
old mode 100644
new mode 100755
diff --git a/indra/llaudio/llvorbisencode.cpp b/indra/llaudio/llvorbisencode.cpp
old mode 100644
new mode 100755
diff --git a/indra/llaudio/llvorbisencode.h b/indra/llaudio/llvorbisencode.h
old mode 100644
new mode 100755
diff --git a/indra/llaudio/llwindgen.h b/indra/llaudio/llwindgen.h
old mode 100644
new mode 100755
diff --git a/indra/llcharacter/CMakeLists.txt b/indra/llcharacter/CMakeLists.txt
old mode 100644
new mode 100755
diff --git a/indra/llcharacter/llanimationstates.cpp b/indra/llcharacter/llanimationstates.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcharacter/llanimationstates.h b/indra/llcharacter/llanimationstates.h
old mode 100644
new mode 100755
diff --git a/indra/llcharacter/llbvhconsts.h b/indra/llcharacter/llbvhconsts.h
old mode 100644
new mode 100755
diff --git a/indra/llcharacter/llbvhloader.cpp b/indra/llcharacter/llbvhloader.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcharacter/llbvhloader.h b/indra/llcharacter/llbvhloader.h
old mode 100644
new mode 100755
diff --git a/indra/llcharacter/llcharacter.cpp b/indra/llcharacter/llcharacter.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcharacter/llcharacter.h b/indra/llcharacter/llcharacter.h
old mode 100644
new mode 100755
diff --git a/indra/llcharacter/lleditingmotion.cpp b/indra/llcharacter/lleditingmotion.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcharacter/lleditingmotion.h b/indra/llcharacter/lleditingmotion.h
old mode 100644
new mode 100755
diff --git a/indra/llcharacter/llgesture.cpp b/indra/llcharacter/llgesture.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcharacter/llgesture.h b/indra/llcharacter/llgesture.h
old mode 100644
new mode 100755
diff --git a/indra/llcharacter/llhandmotion.cpp b/indra/llcharacter/llhandmotion.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcharacter/llhandmotion.h b/indra/llcharacter/llhandmotion.h
old mode 100644
new mode 100755
diff --git a/indra/llcharacter/llheadrotmotion.cpp b/indra/llcharacter/llheadrotmotion.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcharacter/llheadrotmotion.h b/indra/llcharacter/llheadrotmotion.h
old mode 100644
new mode 100755
diff --git a/indra/llcharacter/lljoint.cpp b/indra/llcharacter/lljoint.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcharacter/lljoint.h b/indra/llcharacter/lljoint.h
old mode 100644
new mode 100755
diff --git a/indra/llcharacter/lljointsolverrp3.cpp b/indra/llcharacter/lljointsolverrp3.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcharacter/lljointsolverrp3.h b/indra/llcharacter/lljointsolverrp3.h
old mode 100644
new mode 100755
diff --git a/indra/llcharacter/lljointstate.h b/indra/llcharacter/lljointstate.h
old mode 100644
new mode 100755
diff --git a/indra/llcharacter/llkeyframefallmotion.cpp b/indra/llcharacter/llkeyframefallmotion.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcharacter/llkeyframefallmotion.h b/indra/llcharacter/llkeyframefallmotion.h
old mode 100644
new mode 100755
diff --git a/indra/llcharacter/llkeyframemotion.cpp b/indra/llcharacter/llkeyframemotion.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcharacter/llkeyframemotion.h b/indra/llcharacter/llkeyframemotion.h
old mode 100644
new mode 100755
diff --git a/indra/llcharacter/llkeyframemotionparam.cpp b/indra/llcharacter/llkeyframemotionparam.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcharacter/llkeyframemotionparam.h b/indra/llcharacter/llkeyframemotionparam.h
old mode 100644
new mode 100755
diff --git a/indra/llcharacter/llkeyframestandmotion.cpp b/indra/llcharacter/llkeyframestandmotion.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcharacter/llkeyframestandmotion.h b/indra/llcharacter/llkeyframestandmotion.h
old mode 100644
new mode 100755
diff --git a/indra/llcharacter/llkeyframewalkmotion.cpp b/indra/llcharacter/llkeyframewalkmotion.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcharacter/llkeyframewalkmotion.h b/indra/llcharacter/llkeyframewalkmotion.h
old mode 100644
new mode 100755
diff --git a/indra/llcharacter/llmotion.cpp b/indra/llcharacter/llmotion.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcharacter/llmotion.h b/indra/llcharacter/llmotion.h
old mode 100644
new mode 100755
diff --git a/indra/llcharacter/llmotioncontroller.cpp b/indra/llcharacter/llmotioncontroller.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcharacter/llmotioncontroller.h b/indra/llcharacter/llmotioncontroller.h
old mode 100644
new mode 100755
diff --git a/indra/llcharacter/llmultigesture.cpp b/indra/llcharacter/llmultigesture.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcharacter/llmultigesture.h b/indra/llcharacter/llmultigesture.h
old mode 100644
new mode 100755
diff --git a/indra/llcharacter/llpose.cpp b/indra/llcharacter/llpose.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcharacter/llpose.h b/indra/llcharacter/llpose.h
old mode 100644
new mode 100755
diff --git a/indra/llcharacter/llstatemachine.cpp b/indra/llcharacter/llstatemachine.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcharacter/llstatemachine.h b/indra/llcharacter/llstatemachine.h
old mode 100644
new mode 100755
diff --git a/indra/llcharacter/lltargetingmotion.cpp b/indra/llcharacter/lltargetingmotion.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcharacter/lltargetingmotion.h b/indra/llcharacter/lltargetingmotion.h
old mode 100644
new mode 100755
diff --git a/indra/llcharacter/llvisualparam.cpp b/indra/llcharacter/llvisualparam.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcharacter/llvisualparam.h b/indra/llcharacter/llvisualparam.h
old mode 100644
new mode 100755
diff --git a/indra/llcharacter/tests/lljoint_test.cpp b/indra/llcharacter/tests/lljoint_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/CMakeLists.txt b/indra/llcommon/CMakeLists.txt
old mode 100644
new mode 100755
diff --git a/indra/llcommon/bitpack.cpp b/indra/llcommon/bitpack.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/bitpack.h b/indra/llcommon/bitpack.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/ctype_workaround.h b/indra/llcommon/ctype_workaround.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/doublelinkedlist.h b/indra/llcommon/doublelinkedlist.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/fix_macros.h b/indra/llcommon/fix_macros.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/imageids.cpp b/indra/llcommon/imageids.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/imageids.h b/indra/llcommon/imageids.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/indra_constants.cpp b/indra/llcommon/indra_constants.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/indra_constants.h b/indra/llcommon/indra_constants.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/is_approx_equal_fraction.h b/indra/llcommon/is_approx_equal_fraction.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/linden_common.h b/indra/llcommon/linden_common.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/linked_lists.h b/indra/llcommon/linked_lists.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/ll_template_cast.h b/indra/llcommon/ll_template_cast.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llaccountingcost.h b/indra/llcommon/llaccountingcost.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llagentconstants.h b/indra/llcommon/llagentconstants.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llallocator.cpp b/indra/llcommon/llallocator.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llallocator.h b/indra/llcommon/llallocator.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llallocator_heap_profile.cpp b/indra/llcommon/llallocator_heap_profile.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llallocator_heap_profile.h b/indra/llcommon/llallocator_heap_profile.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llapp.cpp b/indra/llcommon/llapp.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llapp.h b/indra/llcommon/llapp.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llapr.cpp b/indra/llcommon/llapr.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llapr.h b/indra/llcommon/llapr.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llassettype.cpp b/indra/llcommon/llassettype.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llassettype.h b/indra/llcommon/llassettype.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llassoclist.h b/indra/llcommon/llassoclist.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llavatarconstants.h b/indra/llcommon/llavatarconstants.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llavatarname.cpp b/indra/llcommon/llavatarname.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llavatarname.h b/indra/llcommon/llavatarname.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llbase32.cpp b/indra/llcommon/llbase32.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llbase32.h b/indra/llcommon/llbase32.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llbase64.cpp b/indra/llcommon/llbase64.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llbase64.h b/indra/llcommon/llbase64.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llboost.h b/indra/llcommon/llboost.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llchat.h b/indra/llcommon/llchat.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llclickaction.h b/indra/llcommon/llclickaction.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llcommon.cpp b/indra/llcommon/llcommon.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llcommon.h b/indra/llcommon/llcommon.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llcommonutils.cpp b/indra/llcommon/llcommonutils.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llcommonutils.h b/indra/llcommon/llcommonutils.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llcoros.cpp b/indra/llcommon/llcoros.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llcoros.h b/indra/llcommon/llcoros.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llcrc.cpp b/indra/llcommon/llcrc.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llcrc.h b/indra/llcommon/llcrc.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llcriticaldamp.cpp b/indra/llcommon/llcriticaldamp.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llcriticaldamp.h b/indra/llcommon/llcriticaldamp.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llcursortypes.cpp b/indra/llcommon/llcursortypes.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llcursortypes.h b/indra/llcommon/llcursortypes.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/lldarray.h b/indra/llcommon/lldarray.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/lldarrayptr.h b/indra/llcommon/lldarrayptr.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/lldate.cpp b/indra/llcommon/lldate.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/lldate.h b/indra/llcommon/lldate.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/lldefs.h b/indra/llcommon/lldefs.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/lldeleteutils.h b/indra/llcommon/lldeleteutils.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/lldependencies.cpp b/indra/llcommon/lldependencies.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/lldependencies.h b/indra/llcommon/lldependencies.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/lldepthstack.h b/indra/llcommon/lldepthstack.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/lldictionary.cpp b/indra/llcommon/lldictionary.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/lldictionary.h b/indra/llcommon/lldictionary.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/lldlinked.h b/indra/llcommon/lldlinked.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/lldoubledispatch.h b/indra/llcommon/lldoubledispatch.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/lldqueueptr.h b/indra/llcommon/lldqueueptr.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llendianswizzle.h b/indra/llcommon/llendianswizzle.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llenum.h b/indra/llcommon/llenum.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llerror.cpp b/indra/llcommon/llerror.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llerror.h b/indra/llcommon/llerror.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llerrorcontrol.h b/indra/llcommon/llerrorcontrol.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llerrorlegacy.h b/indra/llcommon/llerrorlegacy.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llerrorthread.cpp b/indra/llcommon/llerrorthread.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llerrorthread.h b/indra/llcommon/llerrorthread.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llevent.cpp b/indra/llcommon/llevent.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llevent.h b/indra/llcommon/llevent.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/lleventapi.cpp b/indra/llcommon/lleventapi.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/lleventapi.h b/indra/llcommon/lleventapi.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/lleventcoro.cpp b/indra/llcommon/lleventcoro.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/lleventcoro.h b/indra/llcommon/lleventcoro.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/lleventdispatcher.cpp b/indra/llcommon/lleventdispatcher.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/lleventdispatcher.h b/indra/llcommon/lleventdispatcher.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/lleventemitter.h b/indra/llcommon/lleventemitter.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/lleventfilter.cpp b/indra/llcommon/lleventfilter.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/lleventfilter.h b/indra/llcommon/lleventfilter.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llevents.cpp b/indra/llcommon/llevents.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llevents.h b/indra/llcommon/llevents.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/lleventtimer.cpp b/indra/llcommon/lleventtimer.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/lleventtimer.h b/indra/llcommon/lleventtimer.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llextendedstatus.h b/indra/llcommon/llextendedstatus.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llfasttimer.cpp b/indra/llcommon/llfasttimer.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llfasttimer.h b/indra/llcommon/llfasttimer.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llfile.cpp b/indra/llcommon/llfile.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llfile.h b/indra/llcommon/llfile.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llfindlocale.cpp b/indra/llcommon/llfindlocale.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llfindlocale.h b/indra/llcommon/llfindlocale.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llfixedbuffer.cpp b/indra/llcommon/llfixedbuffer.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llfixedbuffer.h b/indra/llcommon/llfixedbuffer.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llfoldertype.cpp b/indra/llcommon/llfoldertype.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llformat.cpp b/indra/llcommon/llformat.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llformat.h b/indra/llcommon/llformat.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llframetimer.cpp b/indra/llcommon/llframetimer.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llframetimer.h b/indra/llcommon/llframetimer.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llhandle.h b/indra/llcommon/llhandle.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llhash.h b/indra/llcommon/llhash.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llheartbeat.cpp b/indra/llcommon/llheartbeat.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llheartbeat.h b/indra/llcommon/llheartbeat.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llhttpstatuscodes.h b/indra/llcommon/llhttpstatuscodes.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llindexedqueue.h b/indra/llcommon/llindexedqueue.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llinitparam.cpp b/indra/llcommon/llinitparam.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llinitparam.h b/indra/llcommon/llinitparam.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llinstancetracker.cpp b/indra/llcommon/llinstancetracker.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llinstancetracker.h b/indra/llcommon/llinstancetracker.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llkeythrottle.h b/indra/llcommon/llkeythrottle.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llkeyusetracker.h b/indra/llcommon/llkeyusetracker.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/lllazy.cpp b/indra/llcommon/lllazy.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/lllazy.h b/indra/llcommon/lllazy.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llleap.cpp b/indra/llcommon/llleap.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llleap.h b/indra/llcommon/llleap.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llleaplistener.cpp b/indra/llcommon/llleaplistener.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llleaplistener.h b/indra/llcommon/llleaplistener.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/lllinkedqueue.h b/indra/llcommon/lllinkedqueue.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/lllistenerwrapper.h b/indra/llcommon/lllistenerwrapper.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llliveappconfig.cpp b/indra/llcommon/llliveappconfig.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llliveappconfig.h b/indra/llcommon/llliveappconfig.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/lllivefile.cpp b/indra/llcommon/lllivefile.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/lllivefile.h b/indra/llcommon/lllivefile.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/lllocalidhashmap.h b/indra/llcommon/lllocalidhashmap.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/lllog.cpp b/indra/llcommon/lllog.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/lllog.h b/indra/llcommon/lllog.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/lllslconstants.h b/indra/llcommon/lllslconstants.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llmap.h b/indra/llcommon/llmap.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llmd5.cpp b/indra/llcommon/llmd5.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llmd5.h b/indra/llcommon/llmd5.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llmemory.cpp b/indra/llcommon/llmemory.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llmemory.h b/indra/llcommon/llmemory.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llmemorystream.cpp b/indra/llcommon/llmemorystream.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llmemorystream.h b/indra/llcommon/llmemorystream.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llmetricperformancetester.cpp b/indra/llcommon/llmetricperformancetester.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llmetricperformancetester.h b/indra/llcommon/llmetricperformancetester.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llmetrics.cpp b/indra/llcommon/llmetrics.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llmetrics.h b/indra/llcommon/llmetrics.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llmortician.cpp b/indra/llcommon/llmortician.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llmortician.h b/indra/llcommon/llmortician.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llnametable.h b/indra/llcommon/llnametable.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/lloptioninterface.cpp b/indra/llcommon/lloptioninterface.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/lloptioninterface.h b/indra/llcommon/lloptioninterface.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llpointer.h b/indra/llcommon/llpointer.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llpreprocessor.h b/indra/llcommon/llpreprocessor.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llpriqueuemap.h b/indra/llcommon/llpriqueuemap.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llprocess.cpp b/indra/llcommon/llprocess.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llprocess.h b/indra/llcommon/llprocess.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llprocessor.cpp b/indra/llcommon/llprocessor.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llprocessor.h b/indra/llcommon/llprocessor.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llptrskiplist.h b/indra/llcommon/llptrskiplist.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llptrskipmap.h b/indra/llcommon/llptrskipmap.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llptrto.cpp b/indra/llcommon/llptrto.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llptrto.h b/indra/llcommon/llptrto.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llqueuedthread.cpp b/indra/llcommon/llqueuedthread.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llqueuedthread.h b/indra/llcommon/llqueuedthread.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llrand.cpp b/indra/llcommon/llrand.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llrand.h b/indra/llcommon/llrand.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llrefcount.cpp b/indra/llcommon/llrefcount.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llrefcount.h b/indra/llcommon/llrefcount.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llregistry.h b/indra/llcommon/llregistry.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llrun.cpp b/indra/llcommon/llrun.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llrun.h b/indra/llcommon/llrun.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llsafehandle.h b/indra/llcommon/llsafehandle.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llsd.cpp b/indra/llcommon/llsd.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llsd.h b/indra/llcommon/llsd.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llsdparam.cpp b/indra/llcommon/llsdparam.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llsdparam.h b/indra/llcommon/llsdparam.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llsdserialize.cpp b/indra/llcommon/llsdserialize.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llsdserialize.h b/indra/llcommon/llsdserialize.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llsdserialize_xml.cpp b/indra/llcommon/llsdserialize_xml.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llsdserialize_xml.h b/indra/llcommon/llsdserialize_xml.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llsdutil.cpp b/indra/llcommon/llsdutil.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llsdutil.h b/indra/llcommon/llsdutil.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llsecondlifeurls.cpp b/indra/llcommon/llsecondlifeurls.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llsecondlifeurls.h b/indra/llcommon/llsecondlifeurls.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llsimplehash.h b/indra/llcommon/llsimplehash.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llsingleton.cpp b/indra/llcommon/llsingleton.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llsingleton.h b/indra/llcommon/llsingleton.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llskiplist.h b/indra/llcommon/llskiplist.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llskipmap.h b/indra/llcommon/llskipmap.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llsmoothstep.h b/indra/llcommon/llsmoothstep.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llsortedvector.h b/indra/llcommon/llsortedvector.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llstack.h b/indra/llcommon/llstack.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llstacktrace.cpp b/indra/llcommon/llstacktrace.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llstacktrace.h b/indra/llcommon/llstacktrace.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llstat.cpp b/indra/llcommon/llstat.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llstat.h b/indra/llcommon/llstat.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llstatenums.h b/indra/llcommon/llstatenums.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llstl.h b/indra/llcommon/llstl.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llstreamqueue.cpp b/indra/llcommon/llstreamqueue.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llstreamqueue.h b/indra/llcommon/llstreamqueue.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llstreamtools.cpp b/indra/llcommon/llstreamtools.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llstreamtools.h b/indra/llcommon/llstreamtools.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llstrider.h b/indra/llcommon/llstrider.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llstring.cpp b/indra/llcommon/llstring.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llstring.h b/indra/llcommon/llstring.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llstringtable.cpp b/indra/llcommon/llstringtable.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llstringtable.h b/indra/llcommon/llstringtable.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llsys.cpp b/indra/llcommon/llsys.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llsys.h b/indra/llcommon/llsys.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llthread.cpp b/indra/llcommon/llthread.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llthread.h b/indra/llcommon/llthread.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llthreadsafequeue.cpp b/indra/llcommon/llthreadsafequeue.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llthreadsafequeue.h b/indra/llcommon/llthreadsafequeue.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/lltimer.cpp b/indra/llcommon/lltimer.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/lltimer.h b/indra/llcommon/lltimer.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/lltreeiterators.h b/indra/llcommon/lltreeiterators.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/lltypeinfolookup.h b/indra/llcommon/lltypeinfolookup.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/lluri.cpp b/indra/llcommon/lluri.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/lluri.h b/indra/llcommon/lluri.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/lluuid.cpp b/indra/llcommon/lluuid.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/lluuid.h b/indra/llcommon/lluuid.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/lluuidhashmap.h b/indra/llcommon/lluuidhashmap.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llversionserver.h b/indra/llcommon/llversionserver.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llversionviewer.h b/indra/llcommon/llversionviewer.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llworkerthread.cpp b/indra/llcommon/llworkerthread.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/llworkerthread.h b/indra/llcommon/llworkerthread.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/metaclass.cpp b/indra/llcommon/metaclass.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/metaclass.h b/indra/llcommon/metaclass.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/metaclasst.h b/indra/llcommon/metaclasst.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/metaproperty.cpp b/indra/llcommon/metaproperty.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/metaproperty.h b/indra/llcommon/metaproperty.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/metapropertyt.h b/indra/llcommon/metapropertyt.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/reflective.cpp b/indra/llcommon/reflective.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/reflective.h b/indra/llcommon/reflective.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/reflectivet.h b/indra/llcommon/reflectivet.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/roles_constants.h b/indra/llcommon/roles_constants.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/stdenums.h b/indra/llcommon/stdenums.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/stdtypes.h b/indra/llcommon/stdtypes.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/string_table.h b/indra/llcommon/string_table.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/stringize.h b/indra/llcommon/stringize.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/tests/StringVec.h b/indra/llcommon/tests/StringVec.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/tests/bitpack_test.cpp b/indra/llcommon/tests/bitpack_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/tests/commonmisc_test.cpp b/indra/llcommon/tests/commonmisc_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/tests/listener.h b/indra/llcommon/tests/listener.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/tests/llallocator_heap_profile_test.cpp b/indra/llcommon/tests/llallocator_heap_profile_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/tests/llallocator_test.cpp b/indra/llcommon/tests/llallocator_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/tests/llbase64_test.cpp b/indra/llcommon/tests/llbase64_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/tests/lldate_test.cpp b/indra/llcommon/tests/lldate_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/tests/lldependencies_test.cpp b/indra/llcommon/tests/lldependencies_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/tests/llerror_test.cpp b/indra/llcommon/tests/llerror_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/tests/lleventcoro_test.cpp b/indra/llcommon/tests/lleventcoro_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/tests/lleventdispatcher_test.cpp b/indra/llcommon/tests/lleventdispatcher_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/tests/lleventfilter_test.cpp b/indra/llcommon/tests/lleventfilter_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/tests/llframetimer_test.cpp b/indra/llcommon/tests/llframetimer_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/tests/llinstancetracker_test.cpp b/indra/llcommon/tests/llinstancetracker_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/tests/lllazy_test.cpp b/indra/llcommon/tests/lllazy_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/tests/llleap_test.cpp b/indra/llcommon/tests/llleap_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/tests/llmemtype_test.cpp b/indra/llcommon/tests/llmemtype_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/tests/llprocess_test.cpp b/indra/llcommon/tests/llprocess_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/tests/llprocessor_test.cpp b/indra/llcommon/tests/llprocessor_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/tests/llrand_test.cpp b/indra/llcommon/tests/llrand_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/tests/llsdserialize_test.cpp b/indra/llcommon/tests/llsdserialize_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/tests/llsingleton_test.cpp b/indra/llcommon/tests/llsingleton_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/tests/llstreamqueue_test.cpp b/indra/llcommon/tests/llstreamqueue_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/tests/llstring_test.cpp b/indra/llcommon/tests/llstring_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/tests/lltreeiterators_test.cpp b/indra/llcommon/tests/lltreeiterators_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/tests/lluri_test.cpp b/indra/llcommon/tests/lluri_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/tests/reflection_test.cpp b/indra/llcommon/tests/reflection_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/tests/stringize_test.cpp b/indra/llcommon/tests/stringize_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/tests/wrapllerrs.h b/indra/llcommon/tests/wrapllerrs.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/timer.h b/indra/llcommon/timer.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/timing.cpp b/indra/llcommon/timing.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/timing.h b/indra/llcommon/timing.h
old mode 100644
new mode 100755
diff --git a/indra/llcommon/u64.cpp b/indra/llcommon/u64.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcommon/u64.h b/indra/llcommon/u64.h
old mode 100644
new mode 100755
diff --git a/indra/llcorehttp/CMakeLists.txt b/indra/llcorehttp/CMakeLists.txt
old mode 100644
new mode 100755
diff --git a/indra/llcorehttp/_httpinternal.h b/indra/llcorehttp/_httpinternal.h
old mode 100644
new mode 100755
diff --git a/indra/llcorehttp/_httplibcurl.cpp b/indra/llcorehttp/_httplibcurl.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcorehttp/_httplibcurl.h b/indra/llcorehttp/_httplibcurl.h
old mode 100644
new mode 100755
diff --git a/indra/llcorehttp/_httpopcancel.cpp b/indra/llcorehttp/_httpopcancel.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcorehttp/_httpopcancel.h b/indra/llcorehttp/_httpopcancel.h
old mode 100644
new mode 100755
diff --git a/indra/llcorehttp/_httpoperation.cpp b/indra/llcorehttp/_httpoperation.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcorehttp/_httpoperation.h b/indra/llcorehttp/_httpoperation.h
old mode 100644
new mode 100755
diff --git a/indra/llcorehttp/_httpoprequest.cpp b/indra/llcorehttp/_httpoprequest.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcorehttp/_httpoprequest.h b/indra/llcorehttp/_httpoprequest.h
old mode 100644
new mode 100755
diff --git a/indra/llcorehttp/_httpopsetget.cpp b/indra/llcorehttp/_httpopsetget.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcorehttp/_httpopsetget.h b/indra/llcorehttp/_httpopsetget.h
old mode 100644
new mode 100755
diff --git a/indra/llcorehttp/_httpopsetpriority.cpp b/indra/llcorehttp/_httpopsetpriority.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcorehttp/_httpopsetpriority.h b/indra/llcorehttp/_httpopsetpriority.h
old mode 100644
new mode 100755
diff --git a/indra/llcorehttp/_httppolicy.cpp b/indra/llcorehttp/_httppolicy.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcorehttp/_httppolicy.h b/indra/llcorehttp/_httppolicy.h
old mode 100644
new mode 100755
diff --git a/indra/llcorehttp/_httppolicyclass.cpp b/indra/llcorehttp/_httppolicyclass.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcorehttp/_httppolicyclass.h b/indra/llcorehttp/_httppolicyclass.h
old mode 100644
new mode 100755
diff --git a/indra/llcorehttp/_httppolicyglobal.cpp b/indra/llcorehttp/_httppolicyglobal.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcorehttp/_httppolicyglobal.h b/indra/llcorehttp/_httppolicyglobal.h
old mode 100644
new mode 100755
diff --git a/indra/llcorehttp/_httpreadyqueue.h b/indra/llcorehttp/_httpreadyqueue.h
old mode 100644
new mode 100755
diff --git a/indra/llcorehttp/_httpreplyqueue.cpp b/indra/llcorehttp/_httpreplyqueue.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcorehttp/_httpreplyqueue.h b/indra/llcorehttp/_httpreplyqueue.h
old mode 100644
new mode 100755
diff --git a/indra/llcorehttp/_httprequestqueue.cpp b/indra/llcorehttp/_httprequestqueue.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcorehttp/_httprequestqueue.h b/indra/llcorehttp/_httprequestqueue.h
old mode 100644
new mode 100755
diff --git a/indra/llcorehttp/_httpretryqueue.h b/indra/llcorehttp/_httpretryqueue.h
old mode 100644
new mode 100755
diff --git a/indra/llcorehttp/_httpservice.cpp b/indra/llcorehttp/_httpservice.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcorehttp/_httpservice.h b/indra/llcorehttp/_httpservice.h
old mode 100644
new mode 100755
diff --git a/indra/llcorehttp/_mutex.h b/indra/llcorehttp/_mutex.h
old mode 100644
new mode 100755
diff --git a/indra/llcorehttp/_refcounted.cpp b/indra/llcorehttp/_refcounted.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcorehttp/_refcounted.h b/indra/llcorehttp/_refcounted.h
old mode 100644
new mode 100755
diff --git a/indra/llcorehttp/_thread.h b/indra/llcorehttp/_thread.h
old mode 100644
new mode 100755
diff --git a/indra/llcorehttp/bufferarray.cpp b/indra/llcorehttp/bufferarray.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcorehttp/bufferarray.h b/indra/llcorehttp/bufferarray.h
old mode 100644
new mode 100755
diff --git a/indra/llcorehttp/bufferstream.cpp b/indra/llcorehttp/bufferstream.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcorehttp/bufferstream.h b/indra/llcorehttp/bufferstream.h
old mode 100644
new mode 100755
diff --git a/indra/llcorehttp/examples/http_texture_load.cpp b/indra/llcorehttp/examples/http_texture_load.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcorehttp/httpcommon.cpp b/indra/llcorehttp/httpcommon.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcorehttp/httpcommon.h b/indra/llcorehttp/httpcommon.h
old mode 100644
new mode 100755
diff --git a/indra/llcorehttp/httphandler.h b/indra/llcorehttp/httphandler.h
old mode 100644
new mode 100755
diff --git a/indra/llcorehttp/httpheaders.cpp b/indra/llcorehttp/httpheaders.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcorehttp/httpheaders.h b/indra/llcorehttp/httpheaders.h
old mode 100644
new mode 100755
diff --git a/indra/llcorehttp/httpoptions.cpp b/indra/llcorehttp/httpoptions.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcorehttp/httpoptions.h b/indra/llcorehttp/httpoptions.h
old mode 100644
new mode 100755
diff --git a/indra/llcorehttp/httprequest.cpp b/indra/llcorehttp/httprequest.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcorehttp/httprequest.h b/indra/llcorehttp/httprequest.h
old mode 100644
new mode 100755
diff --git a/indra/llcorehttp/httpresponse.cpp b/indra/llcorehttp/httpresponse.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcorehttp/httpresponse.h b/indra/llcorehttp/httpresponse.h
old mode 100644
new mode 100755
diff --git a/indra/llcorehttp/tests/llcorehttp_test.cpp b/indra/llcorehttp/tests/llcorehttp_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcorehttp/tests/llcorehttp_test.h b/indra/llcorehttp/tests/llcorehttp_test.h
old mode 100644
new mode 100755
diff --git a/indra/llcorehttp/tests/test_allocator.cpp b/indra/llcorehttp/tests/test_allocator.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcorehttp/tests/test_allocator.h b/indra/llcorehttp/tests/test_allocator.h
old mode 100644
new mode 100755
diff --git a/indra/llcorehttp/tests/test_bufferarray.hpp b/indra/llcorehttp/tests/test_bufferarray.hpp
old mode 100644
new mode 100755
diff --git a/indra/llcorehttp/tests/test_bufferstream.hpp b/indra/llcorehttp/tests/test_bufferstream.hpp
old mode 100644
new mode 100755
diff --git a/indra/llcorehttp/tests/test_httpheaders.hpp b/indra/llcorehttp/tests/test_httpheaders.hpp
old mode 100644
new mode 100755
diff --git a/indra/llcorehttp/tests/test_httpoperation.hpp b/indra/llcorehttp/tests/test_httpoperation.hpp
old mode 100644
new mode 100755
diff --git a/indra/llcorehttp/tests/test_httprequest.hpp b/indra/llcorehttp/tests/test_httprequest.hpp
old mode 100644
new mode 100755
diff --git a/indra/llcorehttp/tests/test_httprequestqueue.hpp b/indra/llcorehttp/tests/test_httprequestqueue.hpp
old mode 100644
new mode 100755
diff --git a/indra/llcorehttp/tests/test_httpstatus.hpp b/indra/llcorehttp/tests/test_httpstatus.hpp
old mode 100644
new mode 100755
diff --git a/indra/llcorehttp/tests/test_llcorehttp_peer.py b/indra/llcorehttp/tests/test_llcorehttp_peer.py
old mode 100644
new mode 100755
diff --git a/indra/llcorehttp/tests/test_refcounted.hpp b/indra/llcorehttp/tests/test_refcounted.hpp
old mode 100644
new mode 100755
diff --git a/indra/llcorehttp/tests/testrunner.py b/indra/llcorehttp/tests/testrunner.py
old mode 100644
new mode 100755
diff --git a/indra/llcrashlogger/CMakeLists.txt b/indra/llcrashlogger/CMakeLists.txt
old mode 100644
new mode 100755
diff --git a/indra/llcrashlogger/llcrashlogger.cpp b/indra/llcrashlogger/llcrashlogger.cpp
old mode 100644
new mode 100755
diff --git a/indra/llcrashlogger/llcrashlogger.h b/indra/llcrashlogger/llcrashlogger.h
old mode 100644
new mode 100755
diff --git a/indra/llimage/CMakeLists.txt b/indra/llimage/CMakeLists.txt
old mode 100644
new mode 100755
diff --git a/indra/llimage/llimage.cpp b/indra/llimage/llimage.cpp
old mode 100644
new mode 100755
diff --git a/indra/llimage/llimage.h b/indra/llimage/llimage.h
old mode 100644
new mode 100755
diff --git a/indra/llimage/llimagebmp.cpp b/indra/llimage/llimagebmp.cpp
old mode 100644
new mode 100755
diff --git a/indra/llimage/llimagebmp.h b/indra/llimage/llimagebmp.h
old mode 100644
new mode 100755
diff --git a/indra/llimage/llimagedimensionsinfo.cpp b/indra/llimage/llimagedimensionsinfo.cpp
old mode 100644
new mode 100755
diff --git a/indra/llimage/llimagedimensionsinfo.h b/indra/llimage/llimagedimensionsinfo.h
old mode 100644
new mode 100755
diff --git a/indra/llimage/llimagedxt.cpp b/indra/llimage/llimagedxt.cpp
old mode 100644
new mode 100755
diff --git a/indra/llimage/llimagedxt.h b/indra/llimage/llimagedxt.h
old mode 100644
new mode 100755
diff --git a/indra/llimage/llimagej2c.cpp b/indra/llimage/llimagej2c.cpp
old mode 100644
new mode 100755
diff --git a/indra/llimage/llimagej2c.h b/indra/llimage/llimagej2c.h
old mode 100644
new mode 100755
diff --git a/indra/llimage/llimagejpeg.cpp b/indra/llimage/llimagejpeg.cpp
old mode 100644
new mode 100755
diff --git a/indra/llimage/llimagejpeg.h b/indra/llimage/llimagejpeg.h
old mode 100644
new mode 100755
diff --git a/indra/llimage/llimagepng.cpp b/indra/llimage/llimagepng.cpp
old mode 100644
new mode 100755
diff --git a/indra/llimage/llimagepng.h b/indra/llimage/llimagepng.h
old mode 100644
new mode 100755
diff --git a/indra/llimage/llimagetga.cpp b/indra/llimage/llimagetga.cpp
old mode 100644
new mode 100755
diff --git a/indra/llimage/llimagetga.h b/indra/llimage/llimagetga.h
old mode 100644
new mode 100755
diff --git a/indra/llimage/llimageworker.cpp b/indra/llimage/llimageworker.cpp
old mode 100644
new mode 100755
diff --git a/indra/llimage/llimageworker.h b/indra/llimage/llimageworker.h
old mode 100644
new mode 100755
diff --git a/indra/llimage/llmapimagetype.h b/indra/llimage/llmapimagetype.h
old mode 100644
new mode 100755
diff --git a/indra/llimage/llpngwrapper.cpp b/indra/llimage/llpngwrapper.cpp
old mode 100644
new mode 100755
diff --git a/indra/llimage/llpngwrapper.h b/indra/llimage/llpngwrapper.h
old mode 100644
new mode 100755
diff --git a/indra/llimage/tests/llimageworker_test.cpp b/indra/llimage/tests/llimageworker_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llimagej2coj/CMakeLists.txt b/indra/llimagej2coj/CMakeLists.txt
old mode 100644
new mode 100755
diff --git a/indra/llimagej2coj/llimagej2coj.cpp b/indra/llimagej2coj/llimagej2coj.cpp
old mode 100644
new mode 100755
diff --git a/indra/llimagej2coj/llimagej2coj.h b/indra/llimagej2coj/llimagej2coj.h
old mode 100644
new mode 100755
diff --git a/indra/llinventory/CMakeLists.txt b/indra/llinventory/CMakeLists.txt
old mode 100644
new mode 100755
diff --git a/indra/llinventory/llcategory.cpp b/indra/llinventory/llcategory.cpp
old mode 100644
new mode 100755
diff --git a/indra/llinventory/llcategory.h b/indra/llinventory/llcategory.h
old mode 100644
new mode 100755
diff --git a/indra/llinventory/lleconomy.cpp b/indra/llinventory/lleconomy.cpp
old mode 100644
new mode 100755
diff --git a/indra/llinventory/lleconomy.h b/indra/llinventory/lleconomy.h
old mode 100644
new mode 100755
diff --git a/indra/llinventory/llinventory.cpp b/indra/llinventory/llinventory.cpp
old mode 100644
new mode 100755
diff --git a/indra/llinventory/llinventory.h b/indra/llinventory/llinventory.h
old mode 100644
new mode 100755
diff --git a/indra/llinventory/llinventorydefines.cpp b/indra/llinventory/llinventorydefines.cpp
old mode 100644
new mode 100755
diff --git a/indra/llinventory/llinventorydefines.h b/indra/llinventory/llinventorydefines.h
old mode 100644
new mode 100755
diff --git a/indra/llinventory/llinventorytype.cpp b/indra/llinventory/llinventorytype.cpp
old mode 100644
new mode 100755
diff --git a/indra/llinventory/llinventorytype.h b/indra/llinventory/llinventorytype.h
old mode 100644
new mode 100755
diff --git a/indra/llinventory/lllandmark.cpp b/indra/llinventory/lllandmark.cpp
old mode 100644
new mode 100755
diff --git a/indra/llinventory/lllandmark.h b/indra/llinventory/lllandmark.h
old mode 100644
new mode 100755
diff --git a/indra/llinventory/llnotecard.cpp b/indra/llinventory/llnotecard.cpp
old mode 100644
new mode 100755
diff --git a/indra/llinventory/llnotecard.h b/indra/llinventory/llnotecard.h
old mode 100644
new mode 100755
diff --git a/indra/llinventory/llparcel.cpp b/indra/llinventory/llparcel.cpp
old mode 100644
new mode 100755
diff --git a/indra/llinventory/llparcel.h b/indra/llinventory/llparcel.h
old mode 100644
new mode 100755
diff --git a/indra/llinventory/llparcelflags.h b/indra/llinventory/llparcelflags.h
old mode 100644
new mode 100755
diff --git a/indra/llinventory/llpermissions.cpp b/indra/llinventory/llpermissions.cpp
old mode 100644
new mode 100755
diff --git a/indra/llinventory/llpermissions.h b/indra/llinventory/llpermissions.h
old mode 100644
new mode 100755
diff --git a/indra/llinventory/llpermissionsflags.h b/indra/llinventory/llpermissionsflags.h
old mode 100644
new mode 100755
diff --git a/indra/llinventory/llsaleinfo.cpp b/indra/llinventory/llsaleinfo.cpp
old mode 100644
new mode 100755
diff --git a/indra/llinventory/llsaleinfo.h b/indra/llinventory/llsaleinfo.h
old mode 100644
new mode 100755
diff --git a/indra/llinventory/lltransactionflags.cpp b/indra/llinventory/lltransactionflags.cpp
old mode 100644
new mode 100755
diff --git a/indra/llinventory/lltransactionflags.h b/indra/llinventory/lltransactionflags.h
old mode 100644
new mode 100755
diff --git a/indra/llinventory/lltransactiontypes.h b/indra/llinventory/lltransactiontypes.h
old mode 100644
new mode 100755
diff --git a/indra/llinventory/lluserrelations.cpp b/indra/llinventory/lluserrelations.cpp
old mode 100644
new mode 100755
diff --git a/indra/llinventory/lluserrelations.h b/indra/llinventory/lluserrelations.h
old mode 100644
new mode 100755
diff --git a/indra/llinventory/tests/inventorymisc_test.cpp b/indra/llinventory/tests/inventorymisc_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llinventory/tests/llparcel_test.cpp b/indra/llinventory/tests/llparcel_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llkdu/CMakeLists.txt b/indra/llkdu/CMakeLists.txt
old mode 100644
new mode 100755
diff --git a/indra/llkdu/llimagej2ckdu.cpp b/indra/llkdu/llimagej2ckdu.cpp
old mode 100644
new mode 100755
diff --git a/indra/llkdu/llimagej2ckdu.h b/indra/llkdu/llimagej2ckdu.h
old mode 100644
new mode 100755
diff --git a/indra/llkdu/llkdumem.cpp b/indra/llkdu/llkdumem.cpp
old mode 100644
new mode 100755
diff --git a/indra/llkdu/llkdumem.h b/indra/llkdu/llkdumem.h
old mode 100644
new mode 100755
diff --git a/indra/llkdu/tests/llimagej2ckdu_test.cpp b/indra/llkdu/tests/llimagej2ckdu_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmath/CMakeLists.txt b/indra/llmath/CMakeLists.txt
old mode 100644
new mode 100755
diff --git a/indra/llmath/camera.h b/indra/llmath/camera.h
old mode 100644
new mode 100755
diff --git a/indra/llmath/coordframe.h b/indra/llmath/coordframe.h
old mode 100644
new mode 100755
diff --git a/indra/llmath/llbbox.cpp b/indra/llmath/llbbox.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmath/llbbox.h b/indra/llmath/llbbox.h
old mode 100644
new mode 100755
diff --git a/indra/llmath/llbboxlocal.cpp b/indra/llmath/llbboxlocal.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmath/llbboxlocal.h b/indra/llmath/llbboxlocal.h
old mode 100644
new mode 100755
diff --git a/indra/llmath/llcalc.cpp b/indra/llmath/llcalc.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmath/llcalc.h b/indra/llmath/llcalc.h
old mode 100644
new mode 100755
diff --git a/indra/llmath/llcalcparser.cpp b/indra/llmath/llcalcparser.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmath/llcalcparser.h b/indra/llmath/llcalcparser.h
old mode 100644
new mode 100755
diff --git a/indra/llmath/llcamera.cpp b/indra/llmath/llcamera.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmath/llcamera.h b/indra/llmath/llcamera.h
old mode 100644
new mode 100755
diff --git a/indra/llmath/llcoord.h b/indra/llmath/llcoord.h
old mode 100644
new mode 100755
diff --git a/indra/llmath/llcoordframe.cpp b/indra/llmath/llcoordframe.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmath/llcoordframe.h b/indra/llmath/llcoordframe.h
old mode 100644
new mode 100755
diff --git a/indra/llmath/llinterp.h b/indra/llmath/llinterp.h
old mode 100644
new mode 100755
diff --git a/indra/llmath/llline.cpp b/indra/llmath/llline.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmath/llline.h b/indra/llmath/llline.h
old mode 100644
new mode 100755
diff --git a/indra/llmath/llmath.h b/indra/llmath/llmath.h
old mode 100644
new mode 100755
diff --git a/indra/llmath/llmatrix3a.cpp b/indra/llmath/llmatrix3a.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmath/llmatrix3a.h b/indra/llmath/llmatrix3a.h
old mode 100644
new mode 100755
diff --git a/indra/llmath/llmatrix3a.inl b/indra/llmath/llmatrix3a.inl
old mode 100644
new mode 100755
diff --git a/indra/llmath/llmatrix4a.h b/indra/llmath/llmatrix4a.h
old mode 100644
new mode 100755
diff --git a/indra/llmath/llmodularmath.cpp b/indra/llmath/llmodularmath.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmath/llmodularmath.h b/indra/llmath/llmodularmath.h
old mode 100644
new mode 100755
diff --git a/indra/llmath/lloctree.h b/indra/llmath/lloctree.h
old mode 100644
new mode 100755
diff --git a/indra/llmath/llperlin.cpp b/indra/llmath/llperlin.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmath/llperlin.h b/indra/llmath/llperlin.h
old mode 100644
new mode 100755
diff --git a/indra/llmath/llplane.h b/indra/llmath/llplane.h
old mode 100644
new mode 100755
diff --git a/indra/llmath/llquantize.h b/indra/llmath/llquantize.h
old mode 100644
new mode 100755
diff --git a/indra/llmath/llquaternion.cpp b/indra/llmath/llquaternion.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmath/llquaternion.h b/indra/llmath/llquaternion.h
old mode 100644
new mode 100755
diff --git a/indra/llmath/llquaternion2.h b/indra/llmath/llquaternion2.h
old mode 100644
new mode 100755
diff --git a/indra/llmath/llquaternion2.inl b/indra/llmath/llquaternion2.inl
old mode 100644
new mode 100755
diff --git a/indra/llmath/llrect.cpp b/indra/llmath/llrect.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmath/llrect.h b/indra/llmath/llrect.h
old mode 100644
new mode 100755
diff --git a/indra/llmath/llsdutil_math.cpp b/indra/llmath/llsdutil_math.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmath/llsdutil_math.h b/indra/llmath/llsdutil_math.h
old mode 100644
new mode 100755
diff --git a/indra/llmath/llsimdmath.h b/indra/llmath/llsimdmath.h
old mode 100644
new mode 100755
diff --git a/indra/llmath/llsimdtypes.h b/indra/llmath/llsimdtypes.h
old mode 100644
new mode 100755
diff --git a/indra/llmath/llsimdtypes.inl b/indra/llmath/llsimdtypes.inl
old mode 100644
new mode 100755
diff --git a/indra/llmath/llsphere.cpp b/indra/llmath/llsphere.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmath/llsphere.h b/indra/llmath/llsphere.h
old mode 100644
new mode 100755
diff --git a/indra/llmath/lltreenode.h b/indra/llmath/lltreenode.h
old mode 100644
new mode 100755
diff --git a/indra/llmath/llvector4a.cpp b/indra/llmath/llvector4a.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmath/llvector4a.h b/indra/llmath/llvector4a.h
old mode 100644
new mode 100755
diff --git a/indra/llmath/llvector4a.inl b/indra/llmath/llvector4a.inl
old mode 100644
new mode 100755
diff --git a/indra/llmath/llvector4logical.h b/indra/llmath/llvector4logical.h
old mode 100644
new mode 100755
diff --git a/indra/llmath/llvolume.cpp b/indra/llmath/llvolume.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmath/llvolume.h b/indra/llmath/llvolume.h
old mode 100644
new mode 100755
diff --git a/indra/llmath/llvolumemgr.cpp b/indra/llmath/llvolumemgr.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmath/llvolumemgr.h b/indra/llmath/llvolumemgr.h
old mode 100644
new mode 100755
diff --git a/indra/llmath/llvolumeoctree.cpp b/indra/llmath/llvolumeoctree.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmath/llvolumeoctree.h b/indra/llmath/llvolumeoctree.h
old mode 100644
new mode 100755
diff --git a/indra/llmath/m3math.cpp b/indra/llmath/m3math.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmath/m3math.h b/indra/llmath/m3math.h
old mode 100644
new mode 100755
diff --git a/indra/llmath/m4math.cpp b/indra/llmath/m4math.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmath/m4math.h b/indra/llmath/m4math.h
old mode 100644
new mode 100755
diff --git a/indra/llmath/raytrace.cpp b/indra/llmath/raytrace.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmath/raytrace.h b/indra/llmath/raytrace.h
old mode 100644
new mode 100755
diff --git a/indra/llmath/tests/alignment_test.cpp b/indra/llmath/tests/alignment_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmath/tests/llbbox_test.cpp b/indra/llmath/tests/llbbox_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmath/tests/llbboxlocal_test.cpp b/indra/llmath/tests/llbboxlocal_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmath/tests/llmodularmath_test.cpp b/indra/llmath/tests/llmodularmath_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmath/tests/llquaternion_test.cpp b/indra/llmath/tests/llquaternion_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmath/tests/llrect_test.cpp b/indra/llmath/tests/llrect_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmath/tests/m3math_test.cpp b/indra/llmath/tests/m3math_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmath/tests/mathmisc_test.cpp b/indra/llmath/tests/mathmisc_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmath/tests/v2math_test.cpp b/indra/llmath/tests/v2math_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmath/tests/v3color_test.cpp b/indra/llmath/tests/v3color_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmath/tests/v3dmath_test.cpp b/indra/llmath/tests/v3dmath_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmath/tests/v3math_test.cpp b/indra/llmath/tests/v3math_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmath/tests/v4color_test.cpp b/indra/llmath/tests/v4color_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmath/tests/v4coloru_test.cpp b/indra/llmath/tests/v4coloru_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmath/tests/v4math_test.cpp b/indra/llmath/tests/v4math_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmath/tests/xform_test.cpp b/indra/llmath/tests/xform_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmath/v2math.cpp b/indra/llmath/v2math.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmath/v2math.h b/indra/llmath/v2math.h
old mode 100644
new mode 100755
diff --git a/indra/llmath/v3color.cpp b/indra/llmath/v3color.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmath/v3color.h b/indra/llmath/v3color.h
old mode 100644
new mode 100755
diff --git a/indra/llmath/v3dmath.cpp b/indra/llmath/v3dmath.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmath/v3dmath.h b/indra/llmath/v3dmath.h
old mode 100644
new mode 100755
diff --git a/indra/llmath/v3math.cpp b/indra/llmath/v3math.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmath/v3math.h b/indra/llmath/v3math.h
old mode 100644
new mode 100755
diff --git a/indra/llmath/v4color.cpp b/indra/llmath/v4color.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmath/v4color.h b/indra/llmath/v4color.h
old mode 100644
new mode 100755
diff --git a/indra/llmath/v4coloru.cpp b/indra/llmath/v4coloru.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmath/v4coloru.h b/indra/llmath/v4coloru.h
old mode 100644
new mode 100755
diff --git a/indra/llmath/v4math.cpp b/indra/llmath/v4math.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmath/v4math.h b/indra/llmath/v4math.h
old mode 100644
new mode 100755
diff --git a/indra/llmath/xform.cpp b/indra/llmath/xform.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmath/xform.h b/indra/llmath/xform.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/CMakeLists.txt b/indra/llmessage/CMakeLists.txt
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llares.cpp b/indra/llmessage/llares.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llares.h b/indra/llmessage/llares.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llareslistener.cpp b/indra/llmessage/llareslistener.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llareslistener.h b/indra/llmessage/llareslistener.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llassetstorage.cpp b/indra/llmessage/llassetstorage.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llassetstorage.h b/indra/llmessage/llassetstorage.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llavatarnamecache.cpp b/indra/llmessage/llavatarnamecache.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llavatarnamecache.h b/indra/llmessage/llavatarnamecache.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llblowfishcipher.cpp b/indra/llmessage/llblowfishcipher.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llblowfishcipher.h b/indra/llmessage/llblowfishcipher.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llbuffer.cpp b/indra/llmessage/llbuffer.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llbuffer.h b/indra/llmessage/llbuffer.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llbufferstream.cpp b/indra/llmessage/llbufferstream.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llbufferstream.h b/indra/llmessage/llbufferstream.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llcachename.cpp b/indra/llmessage/llcachename.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llcachename.h b/indra/llmessage/llcachename.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llchainio.cpp b/indra/llmessage/llchainio.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llchainio.h b/indra/llmessage/llchainio.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llcipher.h b/indra/llmessage/llcipher.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llcircuit.cpp b/indra/llmessage/llcircuit.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llcircuit.h b/indra/llmessage/llcircuit.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llclassifiedflags.cpp b/indra/llmessage/llclassifiedflags.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llclassifiedflags.h b/indra/llmessage/llclassifiedflags.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llcurl.cpp b/indra/llmessage/llcurl.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llcurl.h b/indra/llmessage/llcurl.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/lldatapacker.cpp b/indra/llmessage/lldatapacker.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/lldatapacker.h b/indra/llmessage/lldatapacker.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/lldbstrings.h b/indra/llmessage/lldbstrings.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/lldispatcher.cpp b/indra/llmessage/lldispatcher.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/lldispatcher.h b/indra/llmessage/lldispatcher.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/lleventflags.h b/indra/llmessage/lleventflags.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llfiltersd2xmlrpc.cpp b/indra/llmessage/llfiltersd2xmlrpc.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llfiltersd2xmlrpc.h b/indra/llmessage/llfiltersd2xmlrpc.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llfollowcamparams.h b/indra/llmessage/llfollowcamparams.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llhost.cpp b/indra/llmessage/llhost.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llhost.h b/indra/llmessage/llhost.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llhttpassetstorage.cpp b/indra/llmessage/llhttpassetstorage.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llhttpassetstorage.h b/indra/llmessage/llhttpassetstorage.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llhttpclient.cpp b/indra/llmessage/llhttpclient.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llhttpclient.h b/indra/llmessage/llhttpclient.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llhttpclientadapter.cpp b/indra/llmessage/llhttpclientadapter.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llhttpclientadapter.h b/indra/llmessage/llhttpclientadapter.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llhttpclientinterface.h b/indra/llmessage/llhttpclientinterface.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llhttpnode.cpp b/indra/llmessage/llhttpnode.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llhttpnode.h b/indra/llmessage/llhttpnode.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llhttpnodeadapter.h b/indra/llmessage/llhttpnodeadapter.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llhttpsender.cpp b/indra/llmessage/llhttpsender.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llhttpsender.h b/indra/llmessage/llhttpsender.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llinstantmessage.cpp b/indra/llmessage/llinstantmessage.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llinstantmessage.h b/indra/llmessage/llinstantmessage.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llinvite.h b/indra/llmessage/llinvite.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/lliobuffer.cpp b/indra/llmessage/lliobuffer.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/lliobuffer.h b/indra/llmessage/lliobuffer.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/lliohttpserver.cpp b/indra/llmessage/lliohttpserver.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/lliohttpserver.h b/indra/llmessage/lliohttpserver.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/lliopipe.cpp b/indra/llmessage/lliopipe.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/lliopipe.h b/indra/llmessage/lliopipe.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/lliosocket.cpp b/indra/llmessage/lliosocket.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/lliosocket.h b/indra/llmessage/lliosocket.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llioutil.cpp b/indra/llmessage/llioutil.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llioutil.h b/indra/llmessage/llioutil.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llloginflags.h b/indra/llmessage/llloginflags.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llmail.cpp b/indra/llmessage/llmail.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llmail.h b/indra/llmessage/llmail.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llmessagebuilder.cpp b/indra/llmessage/llmessagebuilder.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llmessagebuilder.h b/indra/llmessage/llmessagebuilder.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llmessageconfig.cpp b/indra/llmessage/llmessageconfig.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llmessageconfig.h b/indra/llmessage/llmessageconfig.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llmessagereader.cpp b/indra/llmessage/llmessagereader.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llmessagereader.h b/indra/llmessage/llmessagereader.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llmessagesenderinterface.h b/indra/llmessage/llmessagesenderinterface.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llmessagetemplate.cpp b/indra/llmessage/llmessagetemplate.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llmessagetemplate.h b/indra/llmessage/llmessagetemplate.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llmessagetemplateparser.cpp b/indra/llmessage/llmessagetemplateparser.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llmessagetemplateparser.h b/indra/llmessage/llmessagetemplateparser.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llmessagethrottle.cpp b/indra/llmessage/llmessagethrottle.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llmessagethrottle.h b/indra/llmessage/llmessagethrottle.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llmime.cpp b/indra/llmessage/llmime.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llmime.h b/indra/llmessage/llmime.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llmsgvariabletype.h b/indra/llmessage/llmsgvariabletype.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llnamevalue.cpp b/indra/llmessage/llnamevalue.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llnamevalue.h b/indra/llmessage/llnamevalue.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llnullcipher.cpp b/indra/llmessage/llnullcipher.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llnullcipher.h b/indra/llmessage/llnullcipher.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llpacketack.cpp b/indra/llmessage/llpacketack.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llpacketack.h b/indra/llmessage/llpacketack.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llpacketbuffer.cpp b/indra/llmessage/llpacketbuffer.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llpacketbuffer.h b/indra/llmessage/llpacketbuffer.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llpacketring.cpp b/indra/llmessage/llpacketring.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llpacketring.h b/indra/llmessage/llpacketring.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llpartdata.cpp b/indra/llmessage/llpartdata.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llpartdata.h b/indra/llmessage/llpartdata.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llproxy.cpp b/indra/llmessage/llproxy.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llproxy.h b/indra/llmessage/llproxy.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llpumpio.cpp b/indra/llmessage/llpumpio.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llpumpio.h b/indra/llmessage/llpumpio.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llqueryflags.h b/indra/llmessage/llqueryflags.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llregionflags.h b/indra/llmessage/llregionflags.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llregionhandle.h b/indra/llmessage/llregionhandle.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llregionpresenceverifier.cpp b/indra/llmessage/llregionpresenceverifier.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llregionpresenceverifier.h b/indra/llmessage/llregionpresenceverifier.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llsdappservices.cpp b/indra/llmessage/llsdappservices.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llsdappservices.h b/indra/llmessage/llsdappservices.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llsdhttpserver.cpp b/indra/llmessage/llsdhttpserver.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llsdhttpserver.h b/indra/llmessage/llsdhttpserver.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llsdmessage.cpp b/indra/llmessage/llsdmessage.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llsdmessage.h b/indra/llmessage/llsdmessage.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llsdmessagebuilder.cpp b/indra/llmessage/llsdmessagebuilder.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llsdmessagebuilder.h b/indra/llmessage/llsdmessagebuilder.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llsdmessagereader.cpp b/indra/llmessage/llsdmessagereader.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llsdmessagereader.h b/indra/llmessage/llsdmessagereader.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llsdrpcclient.cpp b/indra/llmessage/llsdrpcclient.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llsdrpcclient.h b/indra/llmessage/llsdrpcclient.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llsdrpcserver.cpp b/indra/llmessage/llsdrpcserver.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llsdrpcserver.h b/indra/llmessage/llsdrpcserver.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llservice.cpp b/indra/llmessage/llservice.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llservice.h b/indra/llmessage/llservice.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llservicebuilder.cpp b/indra/llmessage/llservicebuilder.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llservicebuilder.h b/indra/llmessage/llservicebuilder.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llstoredmessage.cpp b/indra/llmessage/llstoredmessage.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llstoredmessage.h b/indra/llmessage/llstoredmessage.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/lltaskname.h b/indra/llmessage/lltaskname.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llteleportflags.h b/indra/llmessage/llteleportflags.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/lltemplatemessagebuilder.cpp b/indra/llmessage/lltemplatemessagebuilder.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/lltemplatemessagebuilder.h b/indra/llmessage/lltemplatemessagebuilder.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/lltemplatemessagedispatcher.cpp b/indra/llmessage/lltemplatemessagedispatcher.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/lltemplatemessagedispatcher.h b/indra/llmessage/lltemplatemessagedispatcher.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/lltemplatemessagereader.cpp b/indra/llmessage/lltemplatemessagereader.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/lltemplatemessagereader.h b/indra/llmessage/lltemplatemessagereader.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llthrottle.cpp b/indra/llmessage/llthrottle.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llthrottle.h b/indra/llmessage/llthrottle.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/lltransfermanager.cpp b/indra/llmessage/lltransfermanager.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/lltransfermanager.h b/indra/llmessage/lltransfermanager.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/lltransfersourceasset.cpp b/indra/llmessage/lltransfersourceasset.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/lltransfersourceasset.h b/indra/llmessage/lltransfersourceasset.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/lltransfersourcefile.cpp b/indra/llmessage/lltransfersourcefile.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/lltransfersourcefile.h b/indra/llmessage/lltransfersourcefile.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/lltransfertargetfile.cpp b/indra/llmessage/lltransfertargetfile.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/lltransfertargetfile.h b/indra/llmessage/lltransfertargetfile.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/lltransfertargetvfile.cpp b/indra/llmessage/lltransfertargetvfile.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/lltransfertargetvfile.h b/indra/llmessage/lltransfertargetvfile.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/lltrustedmessageservice.cpp b/indra/llmessage/lltrustedmessageservice.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/lltrustedmessageservice.h b/indra/llmessage/lltrustedmessageservice.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llurlrequest.cpp b/indra/llmessage/llurlrequest.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llurlrequest.h b/indra/llmessage/llurlrequest.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/lluseroperation.cpp b/indra/llmessage/lluseroperation.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/lluseroperation.h b/indra/llmessage/lluseroperation.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llvehicleparams.h b/indra/llmessage/llvehicleparams.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llxfer.cpp b/indra/llmessage/llxfer.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llxfer.h b/indra/llmessage/llxfer.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llxfer_file.cpp b/indra/llmessage/llxfer_file.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llxfer_file.h b/indra/llmessage/llxfer_file.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llxfer_mem.cpp b/indra/llmessage/llxfer_mem.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llxfer_mem.h b/indra/llmessage/llxfer_mem.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llxfer_vfile.cpp b/indra/llmessage/llxfer_vfile.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llxfer_vfile.h b/indra/llmessage/llxfer_vfile.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llxfermanager.cpp b/indra/llmessage/llxfermanager.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llxfermanager.h b/indra/llmessage/llxfermanager.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llxorcipher.cpp b/indra/llmessage/llxorcipher.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/llxorcipher.h b/indra/llmessage/llxorcipher.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/machine.cpp b/indra/llmessage/machine.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/machine.h b/indra/llmessage/machine.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/mean_collision_data.h b/indra/llmessage/mean_collision_data.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/message.cpp b/indra/llmessage/message.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/message.h b/indra/llmessage/message.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/message_prehash.cpp b/indra/llmessage/message_prehash.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/message_prehash.h b/indra/llmessage/message_prehash.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/message_string_table.cpp b/indra/llmessage/message_string_table.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/net.cpp b/indra/llmessage/net.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/net.h b/indra/llmessage/net.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/partsyspacket.cpp b/indra/llmessage/partsyspacket.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/partsyspacket.h b/indra/llmessage/partsyspacket.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/patch_code.cpp b/indra/llmessage/patch_code.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/patch_code.h b/indra/llmessage/patch_code.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/patch_dct.cpp b/indra/llmessage/patch_dct.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/patch_dct.h b/indra/llmessage/patch_dct.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/patch_idct.cpp b/indra/llmessage/patch_idct.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/sound_ids.cpp b/indra/llmessage/sound_ids.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/sound_ids.h b/indra/llmessage/sound_ids.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/tests/commtest.h b/indra/llmessage/tests/commtest.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/tests/llareslistener_test.cpp b/indra/llmessage/tests/llareslistener_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/tests/llavatarnamecache_test.cpp b/indra/llmessage/tests/llavatarnamecache_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/tests/llcurl_stub.cpp b/indra/llmessage/tests/llcurl_stub.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/tests/llhost_test.cpp b/indra/llmessage/tests/llhost_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/tests/llhttpclient_test.cpp b/indra/llmessage/tests/llhttpclient_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/tests/llhttpclientadapter_test.cpp b/indra/llmessage/tests/llhttpclientadapter_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/tests/llmime_test.cpp b/indra/llmessage/tests/llmime_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/tests/llmockhttpclient.h b/indra/llmessage/tests/llmockhttpclient.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/tests/llnamevalue_test.cpp b/indra/llmessage/tests/llnamevalue_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/tests/llpartdata_test.cpp b/indra/llmessage/tests/llpartdata_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/tests/llregionpresenceverifier_test.cpp b/indra/llmessage/tests/llregionpresenceverifier_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/tests/llsdmessage_test.cpp b/indra/llmessage/tests/llsdmessage_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/tests/lltemplatemessagedispatcher_test.cpp b/indra/llmessage/tests/lltemplatemessagedispatcher_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/tests/lltesthttpclientadapter.cpp b/indra/llmessage/tests/lltesthttpclientadapter.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/tests/lltesthttpclientadapter.h b/indra/llmessage/tests/lltesthttpclientadapter.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/tests/lltestmessagesender.cpp b/indra/llmessage/tests/lltestmessagesender.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/tests/lltestmessagesender.h b/indra/llmessage/tests/lltestmessagesender.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/tests/lltrustedmessageservice_test.cpp b/indra/llmessage/tests/lltrustedmessageservice_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/tests/llxfer_file_test.cpp b/indra/llmessage/tests/llxfer_file_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llmessage/tests/networkio.h b/indra/llmessage/tests/networkio.h
old mode 100644
new mode 100755
diff --git a/indra/llmessage/tests/test_llsdmessage_peer.py b/indra/llmessage/tests/test_llsdmessage_peer.py
old mode 100644
new mode 100755
diff --git a/indra/llmessage/tests/testrunner.py b/indra/llmessage/tests/testrunner.py
old mode 100644
new mode 100755
diff --git a/indra/llplugin/CMakeLists.txt b/indra/llplugin/CMakeLists.txt
old mode 100644
new mode 100755
diff --git a/indra/llplugin/llpluginclassmedia.cpp b/indra/llplugin/llpluginclassmedia.cpp
old mode 100644
new mode 100755
diff --git a/indra/llplugin/llpluginclassmedia.h b/indra/llplugin/llpluginclassmedia.h
old mode 100644
new mode 100755
diff --git a/indra/llplugin/llpluginclassmediaowner.h b/indra/llplugin/llpluginclassmediaowner.h
old mode 100644
new mode 100755
diff --git a/indra/llplugin/llplugincookiestore.cpp b/indra/llplugin/llplugincookiestore.cpp
old mode 100644
new mode 100755
diff --git a/indra/llplugin/llplugincookiestore.h b/indra/llplugin/llplugincookiestore.h
old mode 100644
new mode 100755
diff --git a/indra/llplugin/llplugininstance.cpp b/indra/llplugin/llplugininstance.cpp
old mode 100644
new mode 100755
diff --git a/indra/llplugin/llplugininstance.h b/indra/llplugin/llplugininstance.h
old mode 100644
new mode 100755
diff --git a/indra/llplugin/llpluginmessage.cpp b/indra/llplugin/llpluginmessage.cpp
old mode 100644
new mode 100755
diff --git a/indra/llplugin/llpluginmessage.h b/indra/llplugin/llpluginmessage.h
old mode 100644
new mode 100755
diff --git a/indra/llplugin/llpluginmessageclasses.h b/indra/llplugin/llpluginmessageclasses.h
old mode 100644
new mode 100755
diff --git a/indra/llplugin/llpluginmessagepipe.cpp b/indra/llplugin/llpluginmessagepipe.cpp
old mode 100644
new mode 100755
diff --git a/indra/llplugin/llpluginmessagepipe.h b/indra/llplugin/llpluginmessagepipe.h
old mode 100644
new mode 100755
diff --git a/indra/llplugin/llpluginprocesschild.cpp b/indra/llplugin/llpluginprocesschild.cpp
old mode 100644
new mode 100755
diff --git a/indra/llplugin/llpluginprocesschild.h b/indra/llplugin/llpluginprocesschild.h
old mode 100644
new mode 100755
diff --git a/indra/llplugin/llpluginprocessparent.cpp b/indra/llplugin/llpluginprocessparent.cpp
old mode 100644
new mode 100755
diff --git a/indra/llplugin/llpluginprocessparent.h b/indra/llplugin/llpluginprocessparent.h
old mode 100644
new mode 100755
diff --git a/indra/llplugin/llpluginsharedmemory.cpp b/indra/llplugin/llpluginsharedmemory.cpp
old mode 100644
new mode 100755
diff --git a/indra/llplugin/llpluginsharedmemory.h b/indra/llplugin/llpluginsharedmemory.h
old mode 100644
new mode 100755
diff --git a/indra/llplugin/slplugin/CMakeLists.txt b/indra/llplugin/slplugin/CMakeLists.txt
old mode 100644
new mode 100755
diff --git a/indra/llplugin/slplugin/slplugin-objc.h b/indra/llplugin/slplugin/slplugin-objc.h
old mode 100644
new mode 100755
diff --git a/indra/llplugin/slplugin/slplugin-objc.mm b/indra/llplugin/slplugin/slplugin-objc.mm
old mode 100644
new mode 100755
diff --git a/indra/llplugin/slplugin/slplugin.cpp b/indra/llplugin/slplugin/slplugin.cpp
old mode 100644
new mode 100755
diff --git a/indra/llplugin/slplugin/slplugin_info.plist b/indra/llplugin/slplugin/slplugin_info.plist
old mode 100644
new mode 100755
diff --git a/indra/llplugin/tests/llplugincookiestore_test.cpp b/indra/llplugin/tests/llplugincookiestore_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llprimitive/CMakeLists.txt b/indra/llprimitive/CMakeLists.txt
old mode 100644
new mode 100755
diff --git a/indra/llprimitive/legacy_object_types.h b/indra/llprimitive/legacy_object_types.h
old mode 100644
new mode 100755
diff --git a/indra/llprimitive/llmaterialtable.cpp b/indra/llprimitive/llmaterialtable.cpp
old mode 100644
new mode 100755
diff --git a/indra/llprimitive/llmaterialtable.h b/indra/llprimitive/llmaterialtable.h
old mode 100644
new mode 100755
diff --git a/indra/llprimitive/llmediaentry.cpp b/indra/llprimitive/llmediaentry.cpp
old mode 100644
new mode 100755
diff --git a/indra/llprimitive/llmediaentry.h b/indra/llprimitive/llmediaentry.h
old mode 100644
new mode 100755
diff --git a/indra/llprimitive/llmodel.cpp b/indra/llprimitive/llmodel.cpp
old mode 100644
new mode 100755
diff --git a/indra/llprimitive/llmodel.h b/indra/llprimitive/llmodel.h
old mode 100644
new mode 100755
diff --git a/indra/llprimitive/llprimitive.cpp b/indra/llprimitive/llprimitive.cpp
old mode 100644
new mode 100755
diff --git a/indra/llprimitive/llprimitive.h b/indra/llprimitive/llprimitive.h
old mode 100644
new mode 100755
diff --git a/indra/llprimitive/llprimlinkinfo.h b/indra/llprimitive/llprimlinkinfo.h
old mode 100644
new mode 100755
diff --git a/indra/llprimitive/llprimtexturelist.cpp b/indra/llprimitive/llprimtexturelist.cpp
old mode 100644
new mode 100755
diff --git a/indra/llprimitive/llprimtexturelist.h b/indra/llprimitive/llprimtexturelist.h
old mode 100644
new mode 100755
diff --git a/indra/llprimitive/lltextureanim.cpp b/indra/llprimitive/lltextureanim.cpp
old mode 100644
new mode 100755
diff --git a/indra/llprimitive/lltextureanim.h b/indra/llprimitive/lltextureanim.h
old mode 100644
new mode 100755
diff --git a/indra/llprimitive/lltextureentry.cpp b/indra/llprimitive/lltextureentry.cpp
old mode 100644
new mode 100755
diff --git a/indra/llprimitive/lltextureentry.h b/indra/llprimitive/lltextureentry.h
old mode 100644
new mode 100755
diff --git a/indra/llprimitive/lltree_common.h b/indra/llprimitive/lltree_common.h
old mode 100644
new mode 100755
diff --git a/indra/llprimitive/lltreeparams.cpp b/indra/llprimitive/lltreeparams.cpp
old mode 100644
new mode 100755
diff --git a/indra/llprimitive/lltreeparams.h b/indra/llprimitive/lltreeparams.h
old mode 100644
new mode 100755
diff --git a/indra/llprimitive/llvolumemessage.cpp b/indra/llprimitive/llvolumemessage.cpp
old mode 100644
new mode 100755
diff --git a/indra/llprimitive/llvolumemessage.h b/indra/llprimitive/llvolumemessage.h
old mode 100644
new mode 100755
diff --git a/indra/llprimitive/llvolumexml.cpp b/indra/llprimitive/llvolumexml.cpp
old mode 100644
new mode 100755
diff --git a/indra/llprimitive/llvolumexml.h b/indra/llprimitive/llvolumexml.h
old mode 100644
new mode 100755
diff --git a/indra/llprimitive/material_codes.cpp b/indra/llprimitive/material_codes.cpp
old mode 100644
new mode 100755
diff --git a/indra/llprimitive/material_codes.h b/indra/llprimitive/material_codes.h
old mode 100644
new mode 100755
diff --git a/indra/llprimitive/object_flags.h b/indra/llprimitive/object_flags.h
old mode 100644
new mode 100755
diff --git a/indra/llprimitive/tests/llmediaentry_test.cpp b/indra/llprimitive/tests/llmediaentry_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llprimitive/tests/llmessagesystem_stub.cpp b/indra/llprimitive/tests/llmessagesystem_stub.cpp
old mode 100644
new mode 100755
diff --git a/indra/llprimitive/tests/llprimitive_test.cpp b/indra/llprimitive/tests/llprimitive_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llrender/CMakeLists.txt b/indra/llrender/CMakeLists.txt
old mode 100644
new mode 100755
diff --git a/indra/llrender/llcubemap.cpp b/indra/llrender/llcubemap.cpp
old mode 100644
new mode 100755
diff --git a/indra/llrender/llcubemap.h b/indra/llrender/llcubemap.h
old mode 100644
new mode 100755
diff --git a/indra/llrender/llfontbitmapcache.cpp b/indra/llrender/llfontbitmapcache.cpp
old mode 100644
new mode 100755
diff --git a/indra/llrender/llfontbitmapcache.h b/indra/llrender/llfontbitmapcache.h
old mode 100644
new mode 100755
diff --git a/indra/llrender/llfontfreetype.cpp b/indra/llrender/llfontfreetype.cpp
old mode 100644
new mode 100755
diff --git a/indra/llrender/llfontfreetype.h b/indra/llrender/llfontfreetype.h
old mode 100644
new mode 100755
diff --git a/indra/llrender/llfontgl.cpp b/indra/llrender/llfontgl.cpp
old mode 100644
new mode 100755
diff --git a/indra/llrender/llfontgl.h b/indra/llrender/llfontgl.h
old mode 100644
new mode 100755
diff --git a/indra/llrender/llfontregistry.cpp b/indra/llrender/llfontregistry.cpp
old mode 100644
new mode 100755
diff --git a/indra/llrender/llfontregistry.h b/indra/llrender/llfontregistry.h
old mode 100644
new mode 100755
diff --git a/indra/llrender/llgl.cpp b/indra/llrender/llgl.cpp
old mode 100644
new mode 100755
diff --git a/indra/llrender/llgl.h b/indra/llrender/llgl.h
old mode 100644
new mode 100755
diff --git a/indra/llrender/llgldbg.cpp b/indra/llrender/llgldbg.cpp
old mode 100644
new mode 100755
diff --git a/indra/llrender/llgldbg.h b/indra/llrender/llgldbg.h
old mode 100644
new mode 100755
diff --git a/indra/llrender/llglheaders.h b/indra/llrender/llglheaders.h
old mode 100644
new mode 100755
diff --git a/indra/llrender/llglslshader.cpp b/indra/llrender/llglslshader.cpp
old mode 100644
new mode 100755
diff --git a/indra/llrender/llglslshader.h b/indra/llrender/llglslshader.h
old mode 100644
new mode 100755
diff --git a/indra/llrender/llglstates.h b/indra/llrender/llglstates.h
old mode 100644
new mode 100755
diff --git a/indra/llrender/llgltypes.h b/indra/llrender/llgltypes.h
old mode 100644
new mode 100755
diff --git a/indra/llrender/llimagegl.cpp b/indra/llrender/llimagegl.cpp
old mode 100644
new mode 100755
diff --git a/indra/llrender/llimagegl.h b/indra/llrender/llimagegl.h
old mode 100644
new mode 100755
diff --git a/indra/llrender/llpostprocess.cpp b/indra/llrender/llpostprocess.cpp
old mode 100644
new mode 100755
diff --git a/indra/llrender/llpostprocess.h b/indra/llrender/llpostprocess.h
old mode 100644
new mode 100755
diff --git a/indra/llrender/llrender.cpp b/indra/llrender/llrender.cpp
old mode 100644
new mode 100755
diff --git a/indra/llrender/llrender.h b/indra/llrender/llrender.h
old mode 100644
new mode 100755
diff --git a/indra/llrender/llrendernavprim.cpp b/indra/llrender/llrendernavprim.cpp
old mode 100644
new mode 100755
diff --git a/indra/llrender/llrendernavprim.h b/indra/llrender/llrendernavprim.h
old mode 100644
new mode 100755
diff --git a/indra/llrender/llrendersphere.cpp b/indra/llrender/llrendersphere.cpp
old mode 100644
new mode 100755
diff --git a/indra/llrender/llrendersphere.h b/indra/llrender/llrendersphere.h
old mode 100644
new mode 100755
diff --git a/indra/llrender/llrendertarget.cpp b/indra/llrender/llrendertarget.cpp
old mode 100644
new mode 100755
diff --git a/indra/llrender/llrendertarget.h b/indra/llrender/llrendertarget.h
old mode 100644
new mode 100755
diff --git a/indra/llrender/llshadermgr.cpp b/indra/llrender/llshadermgr.cpp
old mode 100644
new mode 100755
diff --git a/indra/llrender/llshadermgr.h b/indra/llrender/llshadermgr.h
old mode 100644
new mode 100755
diff --git a/indra/llrender/lltexture.cpp b/indra/llrender/lltexture.cpp
old mode 100644
new mode 100755
diff --git a/indra/llrender/lltexture.h b/indra/llrender/lltexture.h
old mode 100644
new mode 100755
diff --git a/indra/llrender/llvertexbuffer.cpp b/indra/llrender/llvertexbuffer.cpp
old mode 100644
new mode 100755
diff --git a/indra/llrender/llvertexbuffer.h b/indra/llrender/llvertexbuffer.h
old mode 100644
new mode 100755
diff --git a/indra/llui/CMakeLists.txt b/indra/llui/CMakeLists.txt
old mode 100644
new mode 100755
diff --git a/indra/llui/llaccordionctrl.cpp b/indra/llui/llaccordionctrl.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llaccordionctrl.h b/indra/llui/llaccordionctrl.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llaccordionctrltab.cpp b/indra/llui/llaccordionctrltab.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llaccordionctrltab.h b/indra/llui/llaccordionctrltab.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llbadge.cpp b/indra/llui/llbadge.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llbadge.h b/indra/llui/llbadge.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llbadgeholder.cpp b/indra/llui/llbadgeholder.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llbadgeholder.h b/indra/llui/llbadgeholder.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llbadgeowner.cpp b/indra/llui/llbadgeowner.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llbadgeowner.h b/indra/llui/llbadgeowner.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llbutton.cpp b/indra/llui/llbutton.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llbutton.h b/indra/llui/llbutton.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llcallbackmap.h b/indra/llui/llcallbackmap.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llchatentry.cpp b/indra/llui/llchatentry.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llchatentry.h b/indra/llui/llchatentry.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llcheckboxctrl.cpp b/indra/llui/llcheckboxctrl.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llcheckboxctrl.h b/indra/llui/llcheckboxctrl.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llclipboard.cpp b/indra/llui/llclipboard.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llclipboard.h b/indra/llui/llclipboard.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llcombobox.cpp b/indra/llui/llcombobox.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llcombobox.h b/indra/llui/llcombobox.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llcommandmanager.cpp b/indra/llui/llcommandmanager.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llcommandmanager.h b/indra/llui/llcommandmanager.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llconsole.cpp b/indra/llui/llconsole.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llconsole.h b/indra/llui/llconsole.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llcontainerview.cpp b/indra/llui/llcontainerview.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llcontainerview.h b/indra/llui/llcontainerview.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llctrlselectioninterface.cpp b/indra/llui/llctrlselectioninterface.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llctrlselectioninterface.h b/indra/llui/llctrlselectioninterface.h
old mode 100644
new mode 100755
diff --git a/indra/llui/lldockablefloater.cpp b/indra/llui/lldockablefloater.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/lldockablefloater.h b/indra/llui/lldockablefloater.h
old mode 100644
new mode 100755
diff --git a/indra/llui/lldockcontrol.cpp b/indra/llui/lldockcontrol.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/lldockcontrol.h b/indra/llui/lldockcontrol.h
old mode 100644
new mode 100755
diff --git a/indra/llui/lldraghandle.cpp b/indra/llui/lldraghandle.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/lldraghandle.h b/indra/llui/lldraghandle.h
old mode 100644
new mode 100755
diff --git a/indra/llui/lleditmenuhandler.cpp b/indra/llui/lleditmenuhandler.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/lleditmenuhandler.h b/indra/llui/lleditmenuhandler.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llf32uictrl.cpp b/indra/llui/llf32uictrl.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llf32uictrl.h b/indra/llui/llf32uictrl.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llfiltereditor.cpp b/indra/llui/llfiltereditor.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llfiltereditor.h b/indra/llui/llfiltereditor.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llflashtimer.cpp b/indra/llui/llflashtimer.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llflashtimer.h b/indra/llui/llflashtimer.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llflatlistview.cpp b/indra/llui/llflatlistview.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llflatlistview.h b/indra/llui/llflatlistview.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llfloater.h b/indra/llui/llfloater.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llfloaterreg.cpp b/indra/llui/llfloaterreg.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llfloaterreg.h b/indra/llui/llfloaterreg.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llfloaterreglistener.cpp b/indra/llui/llfloaterreglistener.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llfloaterreglistener.h b/indra/llui/llfloaterreglistener.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llflyoutbutton.cpp b/indra/llui/llflyoutbutton.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llflyoutbutton.h b/indra/llui/llflyoutbutton.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llfocusmgr.cpp b/indra/llui/llfocusmgr.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llfocusmgr.h b/indra/llui/llfocusmgr.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llfolderview.cpp b/indra/llui/llfolderview.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llfolderview.h b/indra/llui/llfolderview.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llfolderviewmodel.cpp b/indra/llui/llfolderviewmodel.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llfolderviewmodel.h b/indra/llui/llfolderviewmodel.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llfunctorregistry.cpp b/indra/llui/llfunctorregistry.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llfunctorregistry.h b/indra/llui/llfunctorregistry.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llhelp.h b/indra/llui/llhelp.h
old mode 100644
new mode 100755
diff --git a/indra/llui/lliconctrl.cpp b/indra/llui/lliconctrl.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/lliconctrl.h b/indra/llui/lliconctrl.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llkeywords.cpp b/indra/llui/llkeywords.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llkeywords.h b/indra/llui/llkeywords.h
old mode 100644
new mode 100755
diff --git a/indra/llui/lllayoutstack.cpp b/indra/llui/lllayoutstack.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/lllayoutstack.h b/indra/llui/lllayoutstack.h
old mode 100644
new mode 100755
diff --git a/indra/llui/lllazyvalue.h b/indra/llui/lllazyvalue.h
old mode 100644
new mode 100755
diff --git a/indra/llui/lllineeditor.cpp b/indra/llui/lllineeditor.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/lllineeditor.h b/indra/llui/lllineeditor.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llloadingindicator.cpp b/indra/llui/llloadingindicator.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llloadingindicator.h b/indra/llui/llloadingindicator.h
old mode 100644
new mode 100755
diff --git a/indra/llui/lllocalcliprect.cpp b/indra/llui/lllocalcliprect.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/lllocalcliprect.h b/indra/llui/lllocalcliprect.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llmenubutton.cpp b/indra/llui/llmenubutton.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llmenubutton.h b/indra/llui/llmenubutton.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llmenugl.cpp b/indra/llui/llmenugl.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llmenugl.h b/indra/llui/llmenugl.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llmodaldialog.cpp b/indra/llui/llmodaldialog.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llmodaldialog.h b/indra/llui/llmodaldialog.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llmultifloater.cpp b/indra/llui/llmultifloater.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llmultifloater.h b/indra/llui/llmultifloater.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llmultislider.cpp b/indra/llui/llmultislider.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llmultislider.h b/indra/llui/llmultislider.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llmultisliderctrl.cpp b/indra/llui/llmultisliderctrl.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llmultisliderctrl.h b/indra/llui/llmultisliderctrl.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llnotificationptr.h b/indra/llui/llnotificationptr.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llnotifications.cpp b/indra/llui/llnotifications.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llnotifications.h b/indra/llui/llnotifications.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llnotificationsutil.cpp b/indra/llui/llnotificationsutil.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llnotificationsutil.h b/indra/llui/llnotificationsutil.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llnotificationtemplate.h b/indra/llui/llnotificationtemplate.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llnotificationvisibilityrule.h b/indra/llui/llnotificationvisibilityrule.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llpanel.cpp b/indra/llui/llpanel.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llpanel.h b/indra/llui/llpanel.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llprogressbar.cpp b/indra/llui/llprogressbar.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llprogressbar.h b/indra/llui/llprogressbar.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llradiogroup.cpp b/indra/llui/llradiogroup.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llradiogroup.h b/indra/llui/llradiogroup.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llresizebar.cpp b/indra/llui/llresizebar.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llresizebar.h b/indra/llui/llresizebar.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llresizehandle.cpp b/indra/llui/llresizehandle.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llresizehandle.h b/indra/llui/llresizehandle.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llresmgr.cpp b/indra/llui/llresmgr.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llresmgr.h b/indra/llui/llresmgr.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llrngwriter.cpp b/indra/llui/llrngwriter.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llrngwriter.h b/indra/llui/llrngwriter.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llscrollbar.cpp b/indra/llui/llscrollbar.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llscrollbar.h b/indra/llui/llscrollbar.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llscrollcontainer.cpp b/indra/llui/llscrollcontainer.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llscrollcontainer.h b/indra/llui/llscrollcontainer.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llscrollingpanellist.cpp b/indra/llui/llscrollingpanellist.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llscrollingpanellist.h b/indra/llui/llscrollingpanellist.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llscrolllistcell.cpp b/indra/llui/llscrolllistcell.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llscrolllistcell.h b/indra/llui/llscrolllistcell.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llscrolllistcolumn.cpp b/indra/llui/llscrolllistcolumn.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llscrolllistcolumn.h b/indra/llui/llscrolllistcolumn.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llscrolllistctrl.cpp b/indra/llui/llscrolllistctrl.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llscrolllistctrl.h b/indra/llui/llscrolllistctrl.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llscrolllistitem.cpp b/indra/llui/llscrolllistitem.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llscrolllistitem.h b/indra/llui/llscrolllistitem.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llsearcheditor.cpp b/indra/llui/llsearcheditor.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llsearcheditor.h b/indra/llui/llsearcheditor.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llslider.cpp b/indra/llui/llslider.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llslider.h b/indra/llui/llslider.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llsliderctrl.cpp b/indra/llui/llsliderctrl.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llsliderctrl.h b/indra/llui/llsliderctrl.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llspellcheck.cpp b/indra/llui/llspellcheck.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llspellcheck.h b/indra/llui/llspellcheck.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llspellcheckmenuhandler.h b/indra/llui/llspellcheckmenuhandler.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llspinctrl.cpp b/indra/llui/llspinctrl.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llspinctrl.h b/indra/llui/llspinctrl.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llstatbar.cpp b/indra/llui/llstatbar.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llstatbar.h b/indra/llui/llstatbar.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llstatgraph.cpp b/indra/llui/llstatgraph.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llstatgraph.h b/indra/llui/llstatgraph.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llstatview.cpp b/indra/llui/llstatview.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llstatview.h b/indra/llui/llstatview.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llstyle.cpp b/indra/llui/llstyle.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llstyle.h b/indra/llui/llstyle.h
old mode 100644
new mode 100755
diff --git a/indra/llui/lltabcontainer.cpp b/indra/llui/lltabcontainer.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/lltabcontainer.h b/indra/llui/lltabcontainer.h
old mode 100644
new mode 100755
diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/lltextbase.h b/indra/llui/lltextbase.h
old mode 100644
new mode 100755
diff --git a/indra/llui/lltextbox.cpp b/indra/llui/lltextbox.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/lltextbox.h b/indra/llui/lltextbox.h
old mode 100644
new mode 100755
diff --git a/indra/llui/lltexteditor.cpp b/indra/llui/lltexteditor.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/lltexteditor.h b/indra/llui/lltexteditor.h
old mode 100644
new mode 100755
diff --git a/indra/llui/lltextparser.cpp b/indra/llui/lltextparser.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/lltextparser.h b/indra/llui/lltextparser.h
old mode 100644
new mode 100755
diff --git a/indra/llui/lltextutil.cpp b/indra/llui/lltextutil.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/lltextutil.h b/indra/llui/lltextutil.h
old mode 100644
new mode 100755
diff --git a/indra/llui/lltextvalidate.cpp b/indra/llui/lltextvalidate.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/lltextvalidate.h b/indra/llui/lltextvalidate.h
old mode 100644
new mode 100755
diff --git a/indra/llui/lltimectrl.cpp b/indra/llui/lltimectrl.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/lltimectrl.h b/indra/llui/lltimectrl.h
old mode 100644
new mode 100755
diff --git a/indra/llui/lltoggleablemenu.cpp b/indra/llui/lltoggleablemenu.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/lltoggleablemenu.h b/indra/llui/lltoggleablemenu.h
old mode 100644
new mode 100755
diff --git a/indra/llui/lltoolbar.cpp b/indra/llui/lltoolbar.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/lltoolbar.h b/indra/llui/lltoolbar.h
old mode 100644
new mode 100755
diff --git a/indra/llui/lltooltip.cpp b/indra/llui/lltooltip.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/lltooltip.h b/indra/llui/lltooltip.h
old mode 100644
new mode 100755
diff --git a/indra/llui/lltrans.cpp b/indra/llui/lltrans.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/lltrans.h b/indra/llui/lltrans.h
old mode 100644
new mode 100755
diff --git a/indra/llui/lltransutil.cpp b/indra/llui/lltransutil.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/lltransutil.h b/indra/llui/lltransutil.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llui.cpp b/indra/llui/llui.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llui.h b/indra/llui/llui.h
old mode 100644
new mode 100755
diff --git a/indra/llui/lluicolor.cpp b/indra/llui/lluicolor.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/lluicolor.h b/indra/llui/lluicolor.h
old mode 100644
new mode 100755
diff --git a/indra/llui/lluicolortable.cpp b/indra/llui/lluicolortable.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/lluicolortable.h b/indra/llui/lluicolortable.h
old mode 100644
new mode 100755
diff --git a/indra/llui/lluiconstants.h b/indra/llui/lluiconstants.h
old mode 100644
new mode 100755
diff --git a/indra/llui/lluictrl.cpp b/indra/llui/lluictrl.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/lluictrl.h b/indra/llui/lluictrl.h
old mode 100644
new mode 100755
diff --git a/indra/llui/lluictrlfactory.cpp b/indra/llui/lluictrlfactory.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/lluictrlfactory.h b/indra/llui/lluictrlfactory.h
old mode 100644
new mode 100755
diff --git a/indra/llui/lluifwd.h b/indra/llui/lluifwd.h
old mode 100644
new mode 100755
diff --git a/indra/llui/lluiimage.cpp b/indra/llui/lluiimage.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/lluiimage.h b/indra/llui/lluiimage.h
old mode 100644
new mode 100755
diff --git a/indra/llui/lluistring.cpp b/indra/llui/lluistring.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/lluistring.h b/indra/llui/lluistring.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llundo.cpp b/indra/llui/llundo.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llundo.h b/indra/llui/llundo.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llurlaction.cpp b/indra/llui/llurlaction.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llurlaction.h b/indra/llui/llurlaction.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llurlentry.cpp b/indra/llui/llurlentry.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llurlentry.h b/indra/llui/llurlentry.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llurlmatch.cpp b/indra/llui/llurlmatch.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llurlmatch.h b/indra/llui/llurlmatch.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llurlregistry.cpp b/indra/llui/llurlregistry.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llurlregistry.h b/indra/llui/llurlregistry.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llview.cpp b/indra/llui/llview.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llview.h b/indra/llui/llview.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llviewborder.cpp b/indra/llui/llviewborder.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llviewborder.h b/indra/llui/llviewborder.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llviewinject.cpp b/indra/llui/llviewinject.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llviewinject.h b/indra/llui/llviewinject.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llviewmodel.cpp b/indra/llui/llviewmodel.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llviewmodel.h b/indra/llui/llviewmodel.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llviewquery.cpp b/indra/llui/llviewquery.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llviewquery.h b/indra/llui/llviewquery.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llwindowshade.cpp b/indra/llui/llwindowshade.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llwindowshade.h b/indra/llui/llwindowshade.h
old mode 100644
new mode 100755
diff --git a/indra/llui/llxuiparser.cpp b/indra/llui/llxuiparser.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/llxuiparser.h b/indra/llui/llxuiparser.h
old mode 100644
new mode 100755
diff --git a/indra/llui/tests/llurlentry_stub.cpp b/indra/llui/tests/llurlentry_stub.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/tests/llurlentry_test.cpp b/indra/llui/tests/llurlentry_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llui/tests/llurlmatch_test.cpp b/indra/llui/tests/llurlmatch_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llvfs/CMakeLists.txt b/indra/llvfs/CMakeLists.txt
old mode 100644
new mode 100755
diff --git a/indra/llvfs/lldir.cpp b/indra/llvfs/lldir.cpp
old mode 100644
new mode 100755
diff --git a/indra/llvfs/lldir.h b/indra/llvfs/lldir.h
old mode 100644
new mode 100755
diff --git a/indra/llvfs/lldir_linux.cpp b/indra/llvfs/lldir_linux.cpp
old mode 100644
new mode 100755
diff --git a/indra/llvfs/lldir_linux.h b/indra/llvfs/lldir_linux.h
old mode 100644
new mode 100755
diff --git a/indra/llvfs/lldir_mac.cpp b/indra/llvfs/lldir_mac.cpp
old mode 100644
new mode 100755
diff --git a/indra/llvfs/lldir_mac.h b/indra/llvfs/lldir_mac.h
old mode 100644
new mode 100755
diff --git a/indra/llvfs/lldir_solaris.cpp b/indra/llvfs/lldir_solaris.cpp
old mode 100644
new mode 100755
diff --git a/indra/llvfs/lldir_solaris.h b/indra/llvfs/lldir_solaris.h
old mode 100644
new mode 100755
diff --git a/indra/llvfs/lldir_win32.cpp b/indra/llvfs/lldir_win32.cpp
old mode 100644
new mode 100755
diff --git a/indra/llvfs/lldir_win32.h b/indra/llvfs/lldir_win32.h
old mode 100644
new mode 100755
diff --git a/indra/llvfs/lldirguard.h b/indra/llvfs/lldirguard.h
old mode 100644
new mode 100755
diff --git a/indra/llvfs/lldiriterator.cpp b/indra/llvfs/lldiriterator.cpp
old mode 100644
new mode 100755
diff --git a/indra/llvfs/lldiriterator.h b/indra/llvfs/lldiriterator.h
old mode 100644
new mode 100755
diff --git a/indra/llvfs/lllfsthread.cpp b/indra/llvfs/lllfsthread.cpp
old mode 100644
new mode 100755
diff --git a/indra/llvfs/lllfsthread.h b/indra/llvfs/lllfsthread.h
old mode 100644
new mode 100755
diff --git a/indra/llvfs/llpidlock.cpp b/indra/llvfs/llpidlock.cpp
old mode 100644
new mode 100755
diff --git a/indra/llvfs/llpidlock.h b/indra/llvfs/llpidlock.h
old mode 100644
new mode 100755
diff --git a/indra/llvfs/llvfile.cpp b/indra/llvfs/llvfile.cpp
old mode 100644
new mode 100755
diff --git a/indra/llvfs/llvfile.h b/indra/llvfs/llvfile.h
old mode 100644
new mode 100755
diff --git a/indra/llvfs/llvfs.cpp b/indra/llvfs/llvfs.cpp
old mode 100644
new mode 100755
diff --git a/indra/llvfs/llvfs.h b/indra/llvfs/llvfs.h
old mode 100644
new mode 100755
diff --git a/indra/llvfs/llvfs_objc.h b/indra/llvfs/llvfs_objc.h
old mode 100644
new mode 100755
diff --git a/indra/llvfs/llvfs_objc.mm b/indra/llvfs/llvfs_objc.mm
old mode 100644
new mode 100755
diff --git a/indra/llvfs/llvfsthread.cpp b/indra/llvfs/llvfsthread.cpp
old mode 100644
new mode 100755
diff --git a/indra/llvfs/llvfsthread.h b/indra/llvfs/llvfsthread.h
old mode 100644
new mode 100755
diff --git a/indra/llvfs/tests/lldir_test.cpp b/indra/llvfs/tests/lldir_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llvfs/tests/lldiriterator_test.cpp b/indra/llvfs/tests/lldiriterator_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/llwindow/CMakeLists.txt b/indra/llwindow/CMakeLists.txt
old mode 100644
new mode 100755
diff --git a/indra/llwindow/GL/glh_extensions.h b/indra/llwindow/GL/glh_extensions.h
old mode 100644
new mode 100755
diff --git a/indra/llwindow/GL/glh_genext.h b/indra/llwindow/GL/glh_genext.h
old mode 100644
new mode 100755
diff --git a/indra/llwindow/lldragdropwin32.cpp b/indra/llwindow/lldragdropwin32.cpp
old mode 100644
new mode 100755
diff --git a/indra/llwindow/lldragdropwin32.h b/indra/llwindow/lldragdropwin32.h
old mode 100644
new mode 100755
diff --git a/indra/llwindow/lldxhardware.cpp b/indra/llwindow/lldxhardware.cpp
old mode 100644
new mode 100755
diff --git a/indra/llwindow/lldxhardware.h b/indra/llwindow/lldxhardware.h
old mode 100644
new mode 100755
diff --git a/indra/llwindow/llkeyboard.cpp b/indra/llwindow/llkeyboard.cpp
old mode 100644
new mode 100755
diff --git a/indra/llwindow/llkeyboard.h b/indra/llwindow/llkeyboard.h
old mode 100644
new mode 100755
diff --git a/indra/llwindow/llkeyboardheadless.cpp b/indra/llwindow/llkeyboardheadless.cpp
old mode 100644
new mode 100755
diff --git a/indra/llwindow/llkeyboardheadless.h b/indra/llwindow/llkeyboardheadless.h
old mode 100644
new mode 100755
diff --git a/indra/llwindow/llkeyboardmacosx.cpp b/indra/llwindow/llkeyboardmacosx.cpp
old mode 100644
new mode 100755
diff --git a/indra/llwindow/llkeyboardmacosx.h b/indra/llwindow/llkeyboardmacosx.h
old mode 100644
new mode 100755
diff --git a/indra/llwindow/llkeyboardsdl.cpp b/indra/llwindow/llkeyboardsdl.cpp
old mode 100644
new mode 100755
diff --git a/indra/llwindow/llkeyboardsdl.h b/indra/llwindow/llkeyboardsdl.h
old mode 100644
new mode 100755
diff --git a/indra/llwindow/llkeyboardwin32.cpp b/indra/llwindow/llkeyboardwin32.cpp
old mode 100644
new mode 100755
diff --git a/indra/llwindow/llkeyboardwin32.h b/indra/llwindow/llkeyboardwin32.h
old mode 100644
new mode 100755
diff --git a/indra/llwindow/llmousehandler.cpp b/indra/llwindow/llmousehandler.cpp
old mode 100644
new mode 100755
diff --git a/indra/llwindow/llmousehandler.h b/indra/llwindow/llmousehandler.h
old mode 100644
new mode 100755
diff --git a/indra/llwindow/llpreeditor.h b/indra/llwindow/llpreeditor.h
old mode 100644
new mode 100755
diff --git a/indra/llwindow/llwindow.cpp b/indra/llwindow/llwindow.cpp
old mode 100644
new mode 100755
diff --git a/indra/llwindow/llwindow.h b/indra/llwindow/llwindow.h
old mode 100644
new mode 100755
diff --git a/indra/llwindow/llwindowcallbacks.cpp b/indra/llwindow/llwindowcallbacks.cpp
old mode 100644
new mode 100755
diff --git a/indra/llwindow/llwindowcallbacks.h b/indra/llwindow/llwindowcallbacks.h
old mode 100644
new mode 100755
diff --git a/indra/llwindow/llwindowheadless.cpp b/indra/llwindow/llwindowheadless.cpp
old mode 100644
new mode 100755
diff --git a/indra/llwindow/llwindowheadless.h b/indra/llwindow/llwindowheadless.h
old mode 100644
new mode 100755
diff --git a/indra/llwindow/llwindowmacosx-objc.h b/indra/llwindow/llwindowmacosx-objc.h
old mode 100644
new mode 100755
diff --git a/indra/llwindow/llwindowmacosx-objc.mm b/indra/llwindow/llwindowmacosx-objc.mm
old mode 100644
new mode 100755
diff --git a/indra/llwindow/llwindowmacosx.cpp b/indra/llwindow/llwindowmacosx.cpp
old mode 100644
new mode 100755
diff --git a/indra/llwindow/llwindowmacosx.h b/indra/llwindow/llwindowmacosx.h
old mode 100644
new mode 100755
diff --git a/indra/llwindow/llwindowmesaheadless.cpp b/indra/llwindow/llwindowmesaheadless.cpp
old mode 100644
new mode 100755
diff --git a/indra/llwindow/llwindowmesaheadless.h b/indra/llwindow/llwindowmesaheadless.h
old mode 100644
new mode 100755
diff --git a/indra/llwindow/llwindowsdl.cpp b/indra/llwindow/llwindowsdl.cpp
old mode 100644
new mode 100755
diff --git a/indra/llwindow/llwindowsdl.h b/indra/llwindow/llwindowsdl.h
old mode 100644
new mode 100755
diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp
old mode 100644
new mode 100755
diff --git a/indra/llwindow/llwindowwin32.h b/indra/llwindow/llwindowwin32.h
old mode 100644
new mode 100755
diff --git a/indra/llxml/CMakeLists.txt b/indra/llxml/CMakeLists.txt
old mode 100644
new mode 100755
diff --git a/indra/llxml/llcontrol.cpp b/indra/llxml/llcontrol.cpp
old mode 100644
new mode 100755
diff --git a/indra/llxml/llcontrol.h b/indra/llxml/llcontrol.h
old mode 100644
new mode 100755
diff --git a/indra/llxml/llcontrolgroupreader.h b/indra/llxml/llcontrolgroupreader.h
old mode 100644
new mode 100755
diff --git a/indra/llxml/llxmlnode.cpp b/indra/llxml/llxmlnode.cpp
old mode 100644
new mode 100755
diff --git a/indra/llxml/llxmlnode.h b/indra/llxml/llxmlnode.h
old mode 100644
new mode 100755
diff --git a/indra/llxml/llxmlparser.cpp b/indra/llxml/llxmlparser.cpp
old mode 100644
new mode 100755
diff --git a/indra/llxml/llxmlparser.h b/indra/llxml/llxmlparser.h
old mode 100644
new mode 100755
diff --git a/indra/llxml/llxmltree.cpp b/indra/llxml/llxmltree.cpp
old mode 100644
new mode 100755
diff --git a/indra/llxml/llxmltree.h b/indra/llxml/llxmltree.h
old mode 100644
new mode 100755
diff --git a/indra/llxml/tests/llcontrol_test.cpp b/indra/llxml/tests/llcontrol_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/lscript/CMakeLists.txt b/indra/lscript/CMakeLists.txt
old mode 100644
new mode 100755
diff --git a/indra/lscript/llscriptresource.h b/indra/lscript/llscriptresource.h
old mode 100644
new mode 100755
diff --git a/indra/lscript/llscriptresourceconsumer.h b/indra/lscript/llscriptresourceconsumer.h
old mode 100644
new mode 100755
diff --git a/indra/lscript/llscriptresourcepool.h b/indra/lscript/llscriptresourcepool.h
old mode 100644
new mode 100755
diff --git a/indra/lscript/lscript_alloc.h b/indra/lscript/lscript_alloc.h
old mode 100644
new mode 100755
diff --git a/indra/lscript/lscript_byteconvert.h b/indra/lscript/lscript_byteconvert.h
old mode 100644
new mode 100755
diff --git a/indra/lscript/lscript_byteformat.h b/indra/lscript/lscript_byteformat.h
old mode 100644
new mode 100755
diff --git a/indra/lscript/lscript_compile/CMakeLists.txt b/indra/lscript/lscript_compile/CMakeLists.txt
old mode 100644
new mode 100755
diff --git a/indra/lscript/lscript_compile/indra.l b/indra/lscript/lscript_compile/indra.l
old mode 100644
new mode 100755
diff --git a/indra/lscript/lscript_compile/indra.y b/indra/lscript/lscript_compile/indra.y
old mode 100644
new mode 100755
diff --git a/indra/lscript/lscript_compile/lscript_alloc.cpp b/indra/lscript/lscript_compile/lscript_alloc.cpp
old mode 100644
new mode 100755
diff --git a/indra/lscript/lscript_compile/lscript_bytecode.cpp b/indra/lscript/lscript_compile/lscript_bytecode.cpp
old mode 100644
new mode 100755
diff --git a/indra/lscript/lscript_compile/lscript_bytecode.h b/indra/lscript/lscript_compile/lscript_bytecode.h
old mode 100644
new mode 100755
diff --git a/indra/lscript/lscript_compile/lscript_error.cpp b/indra/lscript/lscript_compile/lscript_error.cpp
old mode 100644
new mode 100755
diff --git a/indra/lscript/lscript_compile/lscript_error.h b/indra/lscript/lscript_compile/lscript_error.h
old mode 100644
new mode 100755
diff --git a/indra/lscript/lscript_compile/lscript_heap.cpp b/indra/lscript/lscript_compile/lscript_heap.cpp
old mode 100644
new mode 100755
diff --git a/indra/lscript/lscript_compile/lscript_heap.h b/indra/lscript/lscript_compile/lscript_heap.h
old mode 100644
new mode 100755
diff --git a/indra/lscript/lscript_compile/lscript_resource.cpp b/indra/lscript/lscript_compile/lscript_resource.cpp
old mode 100644
new mode 100755
diff --git a/indra/lscript/lscript_compile/lscript_resource.h b/indra/lscript/lscript_compile/lscript_resource.h
old mode 100644
new mode 100755
diff --git a/indra/lscript/lscript_compile/lscript_scope.cpp b/indra/lscript/lscript_compile/lscript_scope.cpp
old mode 100644
new mode 100755
diff --git a/indra/lscript/lscript_compile/lscript_scope.h b/indra/lscript/lscript_compile/lscript_scope.h
old mode 100644
new mode 100755
diff --git a/indra/lscript/lscript_compile/lscript_tree.cpp b/indra/lscript/lscript_compile/lscript_tree.cpp
old mode 100644
new mode 100755
diff --git a/indra/lscript/lscript_compile/lscript_tree.h b/indra/lscript/lscript_compile/lscript_tree.h
old mode 100644
new mode 100755
diff --git a/indra/lscript/lscript_compile/lscript_typecheck.cpp b/indra/lscript/lscript_compile/lscript_typecheck.cpp
old mode 100644
new mode 100755
diff --git a/indra/lscript/lscript_compile/lscript_typecheck.h b/indra/lscript/lscript_compile/lscript_typecheck.h
old mode 100644
new mode 100755
diff --git a/indra/lscript/lscript_compile/windows/unistd.h b/indra/lscript/lscript_compile/windows/unistd.h
old mode 100644
new mode 100755
diff --git a/indra/lscript/lscript_execute.h b/indra/lscript/lscript_execute.h
old mode 100644
new mode 100755
diff --git a/indra/lscript/lscript_execute/CMakeLists.txt b/indra/lscript/lscript_execute/CMakeLists.txt
old mode 100644
new mode 100755
diff --git a/indra/lscript/lscript_execute/llscriptresource.cpp b/indra/lscript/lscript_execute/llscriptresource.cpp
old mode 100644
new mode 100755
diff --git a/indra/lscript/lscript_execute/llscriptresourceconsumer.cpp b/indra/lscript/lscript_execute/llscriptresourceconsumer.cpp
old mode 100644
new mode 100755
diff --git a/indra/lscript/lscript_execute/llscriptresourcepool.cpp b/indra/lscript/lscript_execute/llscriptresourcepool.cpp
old mode 100644
new mode 100755
diff --git a/indra/lscript/lscript_execute/lscript_execute.cpp b/indra/lscript/lscript_execute/lscript_execute.cpp
old mode 100644
new mode 100755
diff --git a/indra/lscript/lscript_execute/lscript_heapruntime.cpp b/indra/lscript/lscript_execute/lscript_heapruntime.cpp
old mode 100644
new mode 100755
diff --git a/indra/lscript/lscript_execute/lscript_heapruntime.h b/indra/lscript/lscript_execute/lscript_heapruntime.h
old mode 100644
new mode 100755
diff --git a/indra/lscript/lscript_execute/lscript_readlso.cpp b/indra/lscript/lscript_execute/lscript_readlso.cpp
old mode 100644
new mode 100755
diff --git a/indra/lscript/lscript_execute/lscript_readlso.h b/indra/lscript/lscript_execute/lscript_readlso.h
old mode 100644
new mode 100755
diff --git a/indra/lscript/lscript_export.h b/indra/lscript/lscript_export.h
old mode 100644
new mode 100755
diff --git a/indra/lscript/lscript_http.h b/indra/lscript/lscript_http.h
old mode 100644
new mode 100755
diff --git a/indra/lscript/lscript_library.h b/indra/lscript/lscript_library.h
old mode 100644
new mode 100755
diff --git a/indra/lscript/lscript_library/CMakeLists.txt b/indra/lscript/lscript_library/CMakeLists.txt
old mode 100644
new mode 100755
diff --git a/indra/lscript/lscript_library/lscript_alloc.cpp b/indra/lscript/lscript_library/lscript_alloc.cpp
old mode 100644
new mode 100755
diff --git a/indra/lscript/lscript_library/lscript_export.cpp b/indra/lscript/lscript_library/lscript_export.cpp
old mode 100644
new mode 100755
diff --git a/indra/lscript/lscript_library/lscript_library.cpp b/indra/lscript/lscript_library/lscript_library.cpp
old mode 100644
new mode 100755
diff --git a/indra/lscript/lscript_rt_interface.h b/indra/lscript/lscript_rt_interface.h
old mode 100644
new mode 100755
diff --git a/indra/mac_crash_logger/CMakeLists.txt b/indra/mac_crash_logger/CMakeLists.txt
old mode 100644
new mode 100755
diff --git a/indra/mac_crash_logger/CrashReporter.nib b/indra/mac_crash_logger/CrashReporter.nib
old mode 100644
new mode 100755
diff --git a/indra/mac_crash_logger/CrashReporter.xib b/indra/mac_crash_logger/CrashReporter.xib
old mode 100644
new mode 100755
diff --git a/indra/mac_crash_logger/Info.plist b/indra/mac_crash_logger/Info.plist
old mode 100644
new mode 100755
diff --git a/indra/mac_crash_logger/llcrashloggermac.cpp b/indra/mac_crash_logger/llcrashloggermac.cpp
old mode 100644
new mode 100755
diff --git a/indra/mac_crash_logger/llcrashloggermac.h b/indra/mac_crash_logger/llcrashloggermac.h
old mode 100644
new mode 100755
diff --git a/indra/mac_crash_logger/llcrashloggermacdelegate.h b/indra/mac_crash_logger/llcrashloggermacdelegate.h
old mode 100644
new mode 100755
diff --git a/indra/mac_crash_logger/llcrashloggermacdelegate.mm b/indra/mac_crash_logger/llcrashloggermacdelegate.mm
old mode 100644
new mode 100755
diff --git a/indra/mac_crash_logger/mac_crash_logger.cpp b/indra/mac_crash_logger/mac_crash_logger.cpp
old mode 100644
new mode 100755
diff --git a/indra/mac_updater/AutoUpdater.nib/classes.nib b/indra/mac_updater/AutoUpdater.nib/classes.nib
old mode 100644
new mode 100755
diff --git a/indra/mac_updater/AutoUpdater.nib/info.nib b/indra/mac_updater/AutoUpdater.nib/info.nib
old mode 100644
new mode 100755
diff --git a/indra/mac_updater/AutoUpdater.nib/objects.xib b/indra/mac_updater/AutoUpdater.nib/objects.xib
old mode 100644
new mode 100755
diff --git a/indra/mac_updater/CMakeLists.txt b/indra/mac_updater/CMakeLists.txt
old mode 100644
new mode 100755
diff --git a/indra/mac_updater/Info.plist b/indra/mac_updater/Info.plist
old mode 100644
new mode 100755
diff --git a/indra/mac_updater/mac_updater.cpp b/indra/mac_updater/mac_updater.cpp
old mode 100644
new mode 100755
diff --git a/indra/mac_updater/mac_updater.h b/indra/mac_updater/mac_updater.h
old mode 100644
new mode 100755
diff --git a/indra/media_plugins/CMakeLists.txt b/indra/media_plugins/CMakeLists.txt
old mode 100644
new mode 100755
diff --git a/indra/media_plugins/base/CMakeLists.txt b/indra/media_plugins/base/CMakeLists.txt
old mode 100644
new mode 100755
diff --git a/indra/media_plugins/base/media_plugin_base.cpp b/indra/media_plugins/base/media_plugin_base.cpp
old mode 100644
new mode 100755
diff --git a/indra/media_plugins/base/media_plugin_base.exp b/indra/media_plugins/base/media_plugin_base.exp
old mode 100644
new mode 100755
diff --git a/indra/media_plugins/base/media_plugin_base.h b/indra/media_plugins/base/media_plugin_base.h
old mode 100644
new mode 100755
diff --git a/indra/media_plugins/example/CMakeLists.txt b/indra/media_plugins/example/CMakeLists.txt
old mode 100644
new mode 100755
diff --git a/indra/media_plugins/example/media_plugin_example.cpp b/indra/media_plugins/example/media_plugin_example.cpp
old mode 100644
new mode 100755
diff --git a/indra/media_plugins/gstreamer010/CMakeLists.txt b/indra/media_plugins/gstreamer010/CMakeLists.txt
old mode 100644
new mode 100755
diff --git a/indra/media_plugins/gstreamer010/llmediaimplgstreamer.h b/indra/media_plugins/gstreamer010/llmediaimplgstreamer.h
old mode 100644
new mode 100755
diff --git a/indra/media_plugins/gstreamer010/llmediaimplgstreamer_syms.cpp b/indra/media_plugins/gstreamer010/llmediaimplgstreamer_syms.cpp
old mode 100644
new mode 100755
diff --git a/indra/media_plugins/gstreamer010/llmediaimplgstreamer_syms.h b/indra/media_plugins/gstreamer010/llmediaimplgstreamer_syms.h
old mode 100644
new mode 100755
diff --git a/indra/media_plugins/gstreamer010/llmediaimplgstreamer_syms_raw.inc b/indra/media_plugins/gstreamer010/llmediaimplgstreamer_syms_raw.inc
old mode 100644
new mode 100755
diff --git a/indra/media_plugins/gstreamer010/llmediaimplgstreamer_syms_rawv.inc b/indra/media_plugins/gstreamer010/llmediaimplgstreamer_syms_rawv.inc
old mode 100644
new mode 100755
diff --git a/indra/media_plugins/gstreamer010/llmediaimplgstreamertriviallogging.h b/indra/media_plugins/gstreamer010/llmediaimplgstreamertriviallogging.h
old mode 100644
new mode 100755
diff --git a/indra/media_plugins/gstreamer010/llmediaimplgstreamervidplug.cpp b/indra/media_plugins/gstreamer010/llmediaimplgstreamervidplug.cpp
old mode 100644
new mode 100755
diff --git a/indra/media_plugins/gstreamer010/llmediaimplgstreamervidplug.h b/indra/media_plugins/gstreamer010/llmediaimplgstreamervidplug.h
old mode 100644
new mode 100755
diff --git a/indra/media_plugins/gstreamer010/media_plugin_gstreamer010.cpp b/indra/media_plugins/gstreamer010/media_plugin_gstreamer010.cpp
old mode 100644
new mode 100755
diff --git a/indra/media_plugins/quicktime/CMakeLists.txt b/indra/media_plugins/quicktime/CMakeLists.txt
old mode 100644
new mode 100755
diff --git a/indra/media_plugins/quicktime/media_plugin_quicktime.cpp b/indra/media_plugins/quicktime/media_plugin_quicktime.cpp
old mode 100644
new mode 100755
diff --git a/indra/media_plugins/webkit/CMakeLists.txt b/indra/media_plugins/webkit/CMakeLists.txt
old mode 100644
new mode 100755
diff --git a/indra/media_plugins/webkit/dummy_volume_catcher.cpp b/indra/media_plugins/webkit/dummy_volume_catcher.cpp
old mode 100644
new mode 100755
diff --git a/indra/media_plugins/webkit/linux_volume_catcher.cpp b/indra/media_plugins/webkit/linux_volume_catcher.cpp
old mode 100644
new mode 100755
diff --git a/indra/media_plugins/webkit/linux_volume_catcher_pa_syms.inc b/indra/media_plugins/webkit/linux_volume_catcher_pa_syms.inc
old mode 100644
new mode 100755
diff --git a/indra/media_plugins/webkit/linux_volume_catcher_paglib_syms.inc b/indra/media_plugins/webkit/linux_volume_catcher_paglib_syms.inc
old mode 100644
new mode 100755
diff --git a/indra/media_plugins/webkit/mac_volume_catcher.cpp b/indra/media_plugins/webkit/mac_volume_catcher.cpp
old mode 100644
new mode 100755
diff --git a/indra/media_plugins/webkit/media_plugin_webkit.cpp b/indra/media_plugins/webkit/media_plugin_webkit.cpp
old mode 100644
new mode 100755
diff --git a/indra/media_plugins/webkit/volume_catcher.h b/indra/media_plugins/webkit/volume_catcher.h
old mode 100644
new mode 100755
diff --git a/indra/media_plugins/webkit/windows_volume_catcher.cpp b/indra/media_plugins/webkit/windows_volume_catcher.cpp
old mode 100644
new mode 100755
diff --git a/indra/media_plugins/winmmshim/CMakeLists.txt b/indra/media_plugins/winmmshim/CMakeLists.txt
old mode 100644
new mode 100755
diff --git a/indra/media_plugins/winmmshim/forwarding_api.cpp b/indra/media_plugins/winmmshim/forwarding_api.cpp
old mode 100644
new mode 100755
diff --git a/indra/media_plugins/winmmshim/forwarding_api.h b/indra/media_plugins/winmmshim/forwarding_api.h
old mode 100644
new mode 100755
diff --git a/indra/media_plugins/winmmshim/winmm.def b/indra/media_plugins/winmmshim/winmm.def
old mode 100644
new mode 100755
diff --git a/indra/media_plugins/winmmshim/winmm_shim.cpp b/indra/media_plugins/winmmshim/winmm_shim.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
old mode 100644
new mode 100755
diff --git a/indra/newview/English.lproj/InfoPlist.strings b/indra/newview/English.lproj/InfoPlist.strings
old mode 100644
new mode 100755
diff --git a/indra/newview/English.lproj/language.txt b/indra/newview/English.lproj/language.txt
old mode 100644
new mode 100755
diff --git a/indra/newview/German.lproj/language.txt b/indra/newview/German.lproj/language.txt
old mode 100644
new mode 100755
diff --git a/indra/newview/Info-SecondLife.plist b/indra/newview/Info-SecondLife.plist
old mode 100644
new mode 100755
diff --git a/indra/newview/Info-SecondLifeVorbis.plist b/indra/newview/Info-SecondLifeVorbis.plist
old mode 100644
new mode 100755
diff --git a/indra/newview/Japanese.lproj/language.txt b/indra/newview/Japanese.lproj/language.txt
old mode 100644
new mode 100755
diff --git a/indra/newview/Korean.lproj/language.txt b/indra/newview/Korean.lproj/language.txt
old mode 100644
new mode 100755
diff --git a/indra/newview/SecondLife.nib/classes.nib b/indra/newview/SecondLife.nib/classes.nib
old mode 100644
new mode 100755
diff --git a/indra/newview/SecondLife.nib/info.nib b/indra/newview/SecondLife.nib/info.nib
old mode 100644
new mode 100755
diff --git a/indra/newview/SecondLife.nib/objects.xib b/indra/newview/SecondLife.nib/objects.xib
old mode 100644
new mode 100755
diff --git a/indra/newview/VertexCache.h b/indra/newview/VertexCache.h
old mode 100644
new mode 100755
diff --git a/indra/newview/ViewerInstall.cmake b/indra/newview/ViewerInstall.cmake
old mode 100644
new mode 100755
diff --git a/indra/newview/VorbisFramework.h b/indra/newview/VorbisFramework.h
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/CA.pem b/indra/newview/app_settings/CA.pem
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/anim.ini b/indra/newview/app_settings/anim.ini
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/autoreplace.xml b/indra/newview/app_settings/autoreplace.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/cmd_line.xml b/indra/newview/app_settings/cmd_line.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/commands.xml b/indra/newview/app_settings/commands.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/foldertypes.xml b/indra/newview/app_settings/foldertypes.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/grass.xml b/indra/newview/app_settings/grass.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/high_graphics.xml b/indra/newview/app_settings/high_graphics.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/ignorable_dialogs.xml b/indra/newview/app_settings/ignorable_dialogs.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/keys.xml b/indra/newview/app_settings/keys.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/keywords.ini b/indra/newview/app_settings/keywords.ini
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/lindenlab.pem b/indra/newview/app_settings/lindenlab.pem
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/llsd.xsd b/indra/newview/app_settings/llsd.xsd
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/logcontrol.xml b/indra/newview/app_settings/logcontrol.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/low_graphics.xml b/indra/newview/app_settings/low_graphics.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/mid_graphics.xml b/indra/newview/app_settings/mid_graphics.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/settings_crash_behavior.xml b/indra/newview/app_settings/settings_crash_behavior.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/settings_files.xml b/indra/newview/app_settings/settings_files.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/settings_minimal.xml b/indra/newview/app_settings/settings_minimal.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/settings_per_account.xml b/indra/newview/app_settings/settings_per_account.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/avatar/avatarF.glsl b/indra/newview/app_settings/shaders/class1/avatar/avatarF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/avatar/avatarSkinV.glsl b/indra/newview/app_settings/shaders/class1/avatar/avatarSkinV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/avatar/avatarV.glsl b/indra/newview/app_settings/shaders/class1/avatar/avatarV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/avatar/eyeballF.glsl b/indra/newview/app_settings/shaders/class1/avatar/eyeballF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/avatar/eyeballV.glsl b/indra/newview/app_settings/shaders/class1/avatar/eyeballV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl b/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/avatar/pickAvatarF.glsl b/indra/newview/app_settings/shaders/class1/avatar/pickAvatarF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/avatar/pickAvatarV.glsl b/indra/newview/app_settings/shaders/class1/avatar/pickAvatarV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaNonIndexedF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaNonIndexedNoColorF.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaNonIndexedNoColorF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaSkinnedV.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaSkinnedV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/attachmentShadowF.glsl b/indra/newview/app_settings/shaders/class1/deferred/attachmentShadowF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/attachmentShadowV.glsl b/indra/newview/app_settings/shaders/class1/deferred/attachmentShadowV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaNoColorV.glsl b/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaNoColorV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaV.glsl b/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/avatarEyesV.glsl b/indra/newview/app_settings/shaders/class1/deferred/avatarEyesV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/avatarF.glsl b/indra/newview/app_settings/shaders/class1/deferred/avatarF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/avatarShadowF.glsl b/indra/newview/app_settings/shaders/class1/deferred/avatarShadowF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/avatarShadowV.glsl b/indra/newview/app_settings/shaders/class1/deferred/avatarShadowV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/avatarV.glsl b/indra/newview/app_settings/shaders/class1/deferred/avatarV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/blurLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/blurLightF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/blurLightV.glsl b/indra/newview/app_settings/shaders/class1/deferred/blurLightV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/bumpF.glsl b/indra/newview/app_settings/shaders/class1/deferred/bumpF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/bumpSkinnedV.glsl b/indra/newview/app_settings/shaders/class1/deferred/bumpSkinnedV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/bumpV.glsl b/indra/newview/app_settings/shaders/class1/deferred/bumpV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/cloudsF.glsl b/indra/newview/app_settings/shaders/class1/deferred/cloudsF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/cloudsV.glsl b/indra/newview/app_settings/shaders/class1/deferred/cloudsV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/cofF.glsl b/indra/newview/app_settings/shaders/class1/deferred/cofF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/diffuseAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class1/deferred/diffuseAlphaMaskF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/diffuseAlphaMaskIndexedF.glsl b/indra/newview/app_settings/shaders/class1/deferred/diffuseAlphaMaskIndexedF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/diffuseAlphaMaskNoColorF.glsl b/indra/newview/app_settings/shaders/class1/deferred/diffuseAlphaMaskNoColorF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/diffuseF.glsl b/indra/newview/app_settings/shaders/class1/deferred/diffuseF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/diffuseIndexedF.glsl b/indra/newview/app_settings/shaders/class1/deferred/diffuseIndexedF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/diffuseNoColorV.glsl b/indra/newview/app_settings/shaders/class1/deferred/diffuseNoColorV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/diffuseSkinnedV.glsl b/indra/newview/app_settings/shaders/class1/deferred/diffuseSkinnedV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/diffuseV.glsl b/indra/newview/app_settings/shaders/class1/deferred/diffuseV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/dofCombineF.glsl b/indra/newview/app_settings/shaders/class1/deferred/dofCombineF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/emissiveF.glsl b/indra/newview/app_settings/shaders/class1/deferred/emissiveF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/emissiveV.glsl b/indra/newview/app_settings/shaders/class1/deferred/emissiveV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/fullbrightV.glsl b/indra/newview/app_settings/shaders/class1/deferred/fullbrightV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/fxaaF.glsl b/indra/newview/app_settings/shaders/class1/deferred/fxaaF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/giF.glsl b/indra/newview/app_settings/shaders/class1/deferred/giF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/impostorF.glsl b/indra/newview/app_settings/shaders/class1/deferred/impostorF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/impostorV.glsl b/indra/newview/app_settings/shaders/class1/deferred/impostorV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/luminanceF.glsl b/indra/newview/app_settings/shaders/class1/deferred/luminanceF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/luminanceV.glsl b/indra/newview/app_settings/shaders/class1/deferred/luminanceV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/multiPointLightV.glsl b/indra/newview/app_settings/shaders/class1/deferred/multiPointLightV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/normgenF.glsl b/indra/newview/app_settings/shaders/class1/deferred/normgenF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/normgenV.glsl b/indra/newview/app_settings/shaders/class1/deferred/normgenV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/pointLightV.glsl b/indra/newview/app_settings/shaders/class1/deferred/pointLightV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl b/indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFF.glsl b/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoTCV.glsl b/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoTCV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/postDeferredV.glsl b/indra/newview/app_settings/shaders/class1/deferred/postDeferredV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/postgiF.glsl b/indra/newview/app_settings/shaders/class1/deferred/postgiF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/shadowAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class1/deferred/shadowAlphaMaskF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/shadowAlphaMaskV.glsl b/indra/newview/app_settings/shaders/class1/deferred/shadowAlphaMaskV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/shadowCubeV.glsl b/indra/newview/app_settings/shaders/class1/deferred/shadowCubeV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/shadowF.glsl b/indra/newview/app_settings/shaders/class1/deferred/shadowF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/shadowV.glsl b/indra/newview/app_settings/shaders/class1/deferred/shadowV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/skyF.glsl b/indra/newview/app_settings/shaders/class1/deferred/skyF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/skyV.glsl b/indra/newview/app_settings/shaders/class1/deferred/skyV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/softenLightV.glsl b/indra/newview/app_settings/shaders/class1/deferred/softenLightV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/starsF.glsl b/indra/newview/app_settings/shaders/class1/deferred/starsF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/starsV.glsl b/indra/newview/app_settings/shaders/class1/deferred/starsV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/sunLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/sunLightF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/sunLightNoFragCoordV.glsl b/indra/newview/app_settings/shaders/class1/deferred/sunLightNoFragCoordV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/sunLightSSAOF.glsl b/indra/newview/app_settings/shaders/class1/deferred/sunLightSSAOF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/sunLightV.glsl b/indra/newview/app_settings/shaders/class1/deferred/sunLightV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/terrainF.glsl b/indra/newview/app_settings/shaders/class1/deferred/terrainF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/terrainV.glsl b/indra/newview/app_settings/shaders/class1/deferred/terrainV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/treeF.glsl b/indra/newview/app_settings/shaders/class1/deferred/treeF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/treeShadowF.glsl b/indra/newview/app_settings/shaders/class1/deferred/treeShadowF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/treeShadowV.glsl b/indra/newview/app_settings/shaders/class1/deferred/treeShadowV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/treeV.glsl b/indra/newview/app_settings/shaders/class1/deferred/treeV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl b/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/deferred/waterV.glsl b/indra/newview/app_settings/shaders/class1/deferred/waterV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/effects/glowExtractF.glsl b/indra/newview/app_settings/shaders/class1/effects/glowExtractF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/effects/glowExtractV.glsl b/indra/newview/app_settings/shaders/class1/effects/glowExtractV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/effects/glowF.glsl b/indra/newview/app_settings/shaders/class1/effects/glowF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/effects/glowV.glsl b/indra/newview/app_settings/shaders/class1/effects/glowV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/environment/terrainF.glsl b/indra/newview/app_settings/shaders/class1/environment/terrainF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/environment/terrainV.glsl b/indra/newview/app_settings/shaders/class1/environment/terrainV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/environment/terrainWaterF.glsl b/indra/newview/app_settings/shaders/class1/environment/terrainWaterF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/environment/underWaterF.glsl b/indra/newview/app_settings/shaders/class1/environment/underWaterF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/environment/waterF.glsl b/indra/newview/app_settings/shaders/class1/environment/waterF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/environment/waterFogF.glsl b/indra/newview/app_settings/shaders/class1/environment/waterFogF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/environment/waterV.glsl b/indra/newview/app_settings/shaders/class1/environment/waterV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/interface/alphamaskF.glsl b/indra/newview/app_settings/shaders/class1/interface/alphamaskF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/interface/alphamaskV.glsl b/indra/newview/app_settings/shaders/class1/interface/alphamaskV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/interface/clipF.glsl b/indra/newview/app_settings/shaders/class1/interface/clipF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/interface/clipV.glsl b/indra/newview/app_settings/shaders/class1/interface/clipV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/interface/customalphaF.glsl b/indra/newview/app_settings/shaders/class1/interface/customalphaF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/interface/customalphaV.glsl b/indra/newview/app_settings/shaders/class1/interface/customalphaV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/interface/debugF.glsl b/indra/newview/app_settings/shaders/class1/interface/debugF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/interface/debugV.glsl b/indra/newview/app_settings/shaders/class1/interface/debugV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/interface/glowcombineF.glsl b/indra/newview/app_settings/shaders/class1/interface/glowcombineF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/interface/glowcombineFXAAF.glsl b/indra/newview/app_settings/shaders/class1/interface/glowcombineFXAAF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/interface/glowcombineFXAAV.glsl b/indra/newview/app_settings/shaders/class1/interface/glowcombineFXAAV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/interface/glowcombineV.glsl b/indra/newview/app_settings/shaders/class1/interface/glowcombineV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/interface/highlightF.glsl b/indra/newview/app_settings/shaders/class1/interface/highlightF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/interface/highlightV.glsl b/indra/newview/app_settings/shaders/class1/interface/highlightV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/interface/occlusionCubeV.glsl b/indra/newview/app_settings/shaders/class1/interface/occlusionCubeV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/interface/occlusionF.glsl b/indra/newview/app_settings/shaders/class1/interface/occlusionF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/interface/occlusionV.glsl b/indra/newview/app_settings/shaders/class1/interface/occlusionV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/interface/onetexturenocolorF.glsl b/indra/newview/app_settings/shaders/class1/interface/onetexturenocolorF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/interface/onetexturenocolorV.glsl b/indra/newview/app_settings/shaders/class1/interface/onetexturenocolorV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/interface/pathfindingF.glsl b/indra/newview/app_settings/shaders/class1/interface/pathfindingF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/interface/pathfindingNoNormalV.glsl b/indra/newview/app_settings/shaders/class1/interface/pathfindingNoNormalV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/interface/pathfindingV.glsl b/indra/newview/app_settings/shaders/class1/interface/pathfindingV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/interface/solidcolorF.glsl b/indra/newview/app_settings/shaders/class1/interface/solidcolorF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/interface/solidcolorV.glsl b/indra/newview/app_settings/shaders/class1/interface/solidcolorV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/interface/splattexturerectF.glsl b/indra/newview/app_settings/shaders/class1/interface/splattexturerectF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/interface/splattexturerectV.glsl b/indra/newview/app_settings/shaders/class1/interface/splattexturerectV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/interface/twotextureaddF.glsl b/indra/newview/app_settings/shaders/class1/interface/twotextureaddF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/interface/twotextureaddV.glsl b/indra/newview/app_settings/shaders/class1/interface/twotextureaddV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/interface/uiF.glsl b/indra/newview/app_settings/shaders/class1/interface/uiF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/interface/uiV.glsl b/indra/newview/app_settings/shaders/class1/interface/uiV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightAlphaMaskF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightAlphaMaskNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightAlphaMaskNonIndexedF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightAlphaMaskF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightNonIndexedAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightNonIndexedAlphaMaskF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightNonIndexedF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyNonIndexedF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyWaterF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyWaterF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyWaterNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyWaterNonIndexedF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterAlphaMaskF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterNonIndexedAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterNonIndexedAlphaMaskF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterNonIndexedF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFuncSpecularV.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFuncSpecularV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFuncV.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFuncV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightNonIndexedF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightShinyF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightShinyF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightShinyNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightShinyNonIndexedF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightShinyWaterF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightShinyWaterF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightShinyWaterNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightShinyWaterNonIndexedF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightSpecularV.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightSpecularV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightV.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightWaterAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightWaterAlphaMaskF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightWaterAlphaMaskNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightWaterAlphaMaskNonIndexedF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightWaterF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightWaterF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightWaterNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightWaterNonIndexedF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/lighting/sumLightsSpecularV.glsl b/indra/newview/app_settings/shaders/class1/lighting/sumLightsSpecularV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/lighting/sumLightsV.glsl b/indra/newview/app_settings/shaders/class1/lighting/sumLightsV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/objects/bumpF.glsl b/indra/newview/app_settings/shaders/class1/objects/bumpF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/objects/bumpV.glsl b/indra/newview/app_settings/shaders/class1/objects/bumpV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/objects/emissiveSkinnedV.glsl b/indra/newview/app_settings/shaders/class1/objects/emissiveSkinnedV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/objects/emissiveV.glsl b/indra/newview/app_settings/shaders/class1/objects/emissiveV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/objects/fullbrightF.glsl b/indra/newview/app_settings/shaders/class1/objects/fullbrightF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/objects/fullbrightNoColorV.glsl b/indra/newview/app_settings/shaders/class1/objects/fullbrightNoColorV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/objects/fullbrightShinyF.glsl b/indra/newview/app_settings/shaders/class1/objects/fullbrightShinyF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/objects/fullbrightShinySkinnedV.glsl b/indra/newview/app_settings/shaders/class1/objects/fullbrightShinySkinnedV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/objects/fullbrightShinyV.glsl b/indra/newview/app_settings/shaders/class1/objects/fullbrightShinyV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/objects/fullbrightShinyWaterF.glsl b/indra/newview/app_settings/shaders/class1/objects/fullbrightShinyWaterF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/objects/fullbrightSkinnedV.glsl b/indra/newview/app_settings/shaders/class1/objects/fullbrightSkinnedV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/objects/fullbrightV.glsl b/indra/newview/app_settings/shaders/class1/objects/fullbrightV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/objects/fullbrightWaterF.glsl b/indra/newview/app_settings/shaders/class1/objects/fullbrightWaterF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/objects/impostorF.glsl b/indra/newview/app_settings/shaders/class1/objects/impostorF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/objects/impostorV.glsl b/indra/newview/app_settings/shaders/class1/objects/impostorV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/objects/indexedTextureF.glsl b/indra/newview/app_settings/shaders/class1/objects/indexedTextureF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/objects/indexedTextureV.glsl b/indra/newview/app_settings/shaders/class1/objects/indexedTextureV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/objects/nonindexedTextureV.glsl b/indra/newview/app_settings/shaders/class1/objects/nonindexedTextureV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/objects/previewF.glsl b/indra/newview/app_settings/shaders/class1/objects/previewF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/objects/previewV.glsl b/indra/newview/app_settings/shaders/class1/objects/previewV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/objects/shinyF.glsl b/indra/newview/app_settings/shaders/class1/objects/shinyF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/objects/shinySimpleSkinnedV.glsl b/indra/newview/app_settings/shaders/class1/objects/shinySimpleSkinnedV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/objects/shinyV.glsl b/indra/newview/app_settings/shaders/class1/objects/shinyV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/objects/shinyWaterF.glsl b/indra/newview/app_settings/shaders/class1/objects/shinyWaterF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/objects/simpleF.glsl b/indra/newview/app_settings/shaders/class1/objects/simpleF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/objects/simpleNoColorV.glsl b/indra/newview/app_settings/shaders/class1/objects/simpleNoColorV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/objects/simpleNonIndexedV.glsl b/indra/newview/app_settings/shaders/class1/objects/simpleNonIndexedV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/objects/simpleSkinnedV.glsl b/indra/newview/app_settings/shaders/class1/objects/simpleSkinnedV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/objects/simpleTexGenV.glsl b/indra/newview/app_settings/shaders/class1/objects/simpleTexGenV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/objects/simpleV.glsl b/indra/newview/app_settings/shaders/class1/objects/simpleV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/objects/simpleWaterF.glsl b/indra/newview/app_settings/shaders/class1/objects/simpleWaterF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/objects/treeV.glsl b/indra/newview/app_settings/shaders/class1/objects/treeV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/transform/binormalV.glsl b/indra/newview/app_settings/shaders/class1/transform/binormalV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/transform/colorV.glsl b/indra/newview/app_settings/shaders/class1/transform/colorV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/transform/normalV.glsl b/indra/newview/app_settings/shaders/class1/transform/normalV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/transform/positionV.glsl b/indra/newview/app_settings/shaders/class1/transform/positionV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/transform/texcoordV.glsl b/indra/newview/app_settings/shaders/class1/transform/texcoordV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsF.glsl b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsHelpersV.glsl b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsHelpersV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsV.glsl b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsF.glsl b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsV.glsl b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsWaterF.glsl b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsWaterF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsWaterV.glsl b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsWaterV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/windlight/gammaF.glsl b/indra/newview/app_settings/shaders/class1/windlight/gammaF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class1/windlight/transportF.glsl b/indra/newview/app_settings/shaders/class1/windlight/transportF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class2/avatar/eyeballV.glsl b/indra/newview/app_settings/shaders/class2/avatar/eyeballV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedF.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedNoColorF.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedNoColorF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaSkinnedV.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaSkinnedV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class2/deferred/avatarAlphaV.glsl b/indra/newview/app_settings/shaders/class2/deferred/avatarAlphaV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class2/deferred/softenLightV.glsl b/indra/newview/app_settings/shaders/class2/deferred/softenLightV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl b/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class2/deferred/sunLightV.glsl b/indra/newview/app_settings/shaders/class2/deferred/sunLightV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class2/lighting/sumLightsSpecularV.glsl b/indra/newview/app_settings/shaders/class2/lighting/sumLightsSpecularV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class2/lighting/sumLightsV.glsl b/indra/newview/app_settings/shaders/class2/lighting/sumLightsV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsF.glsl b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsHelpersV.glsl b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsHelpersV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsV.glsl b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsF.glsl b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsV.glsl b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsWaterF.glsl b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsWaterF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsWaterV.glsl b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsWaterV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class2/windlight/cloudsF.glsl b/indra/newview/app_settings/shaders/class2/windlight/cloudsF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class2/windlight/cloudsV.glsl b/indra/newview/app_settings/shaders/class2/windlight/cloudsV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class2/windlight/gammaF.glsl b/indra/newview/app_settings/shaders/class2/windlight/gammaF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class2/windlight/skyF.glsl b/indra/newview/app_settings/shaders/class2/windlight/skyF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class2/windlight/skyV.glsl b/indra/newview/app_settings/shaders/class2/windlight/skyV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class2/windlight/transportF.glsl b/indra/newview/app_settings/shaders/class2/windlight/transportF.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class3/avatar/avatarV.glsl b/indra/newview/app_settings/shaders/class3/avatar/avatarV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class3/lighting/sumLightsSpecularV.glsl b/indra/newview/app_settings/shaders/class3/lighting/sumLightsSpecularV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/class3/lighting/sumLightsV.glsl b/indra/newview/app_settings/shaders/class3/lighting/sumLightsV.glsl
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/shaders/shader_hierarchy.txt b/indra/newview/app_settings/shaders/shader_hierarchy.txt
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/static_data.db2 b/indra/newview/app_settings/static_data.db2
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/static_index.db2 b/indra/newview/app_settings/static_index.db2
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/std_bump.ini b/indra/newview/app_settings/std_bump.ini
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/toolbars.xml b/indra/newview/app_settings/toolbars.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/trees.xml b/indra/newview/app_settings/trees.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/ultra_graphics.xml b/indra/newview/app_settings/ultra_graphics.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/viewerart.xml b/indra/newview/app_settings/viewerart.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/windlight/clouds2.tga b/indra/newview/app_settings/windlight/clouds2.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/windlight/days/Colder%20Tones.xml b/indra/newview/app_settings/windlight/days/Colder%20Tones.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/windlight/days/Default.xml b/indra/newview/app_settings/windlight/days/Default.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/windlight/days/Dynamic%20Richness.xml b/indra/newview/app_settings/windlight/days/Dynamic%20Richness.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/windlight/days/Pirate%27s%20Dream.xml b/indra/newview/app_settings/windlight/days/Pirate%27s%20Dream.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/windlight/days/Psycho%20Strobe%21.xml b/indra/newview/app_settings/windlight/days/Psycho%20Strobe%21.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/windlight/days/Tropicalia.xml b/indra/newview/app_settings/windlight/days/Tropicalia.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/windlight/days/Weird-O.xml b/indra/newview/app_settings/windlight/days/Weird-O.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/windlight/postprocesseffects.xml b/indra/newview/app_settings/windlight/postprocesseffects.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/windlight/skies/A%2D12AM.xml b/indra/newview/app_settings/windlight/skies/A%2D12AM.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/windlight/skies/A%2D12PM.xml b/indra/newview/app_settings/windlight/skies/A%2D12PM.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/windlight/skies/A%2D3AM.xml b/indra/newview/app_settings/windlight/skies/A%2D3AM.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/windlight/skies/A%2D3PM.xml b/indra/newview/app_settings/windlight/skies/A%2D3PM.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/windlight/skies/A%2D6AM.xml b/indra/newview/app_settings/windlight/skies/A%2D6AM.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/windlight/skies/A%2D6PM.xml b/indra/newview/app_settings/windlight/skies/A%2D6PM.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/windlight/skies/A%2D9AM.xml b/indra/newview/app_settings/windlight/skies/A%2D9AM.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/windlight/skies/A%2D9PM.xml b/indra/newview/app_settings/windlight/skies/A%2D9PM.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/windlight/skies/Barcelona.xml b/indra/newview/app_settings/windlight/skies/Barcelona.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/windlight/skies/Blizzard.xml b/indra/newview/app_settings/windlight/skies/Blizzard.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/windlight/skies/Blue%20Midday.xml b/indra/newview/app_settings/windlight/skies/Blue%20Midday.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/windlight/skies/Coastal%20Afternoon.xml b/indra/newview/app_settings/windlight/skies/Coastal%20Afternoon.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/windlight/skies/Coastal%20Sunset.xml b/indra/newview/app_settings/windlight/skies/Coastal%20Sunset.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/windlight/skies/Default.xml b/indra/newview/app_settings/windlight/skies/Default.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/windlight/skies/Desert%20Sunset.xml b/indra/newview/app_settings/windlight/skies/Desert%20Sunset.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/windlight/skies/Fine%20Day.xml b/indra/newview/app_settings/windlight/skies/Fine%20Day.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/windlight/skies/Fluffy%20Big%20Clouds.xml b/indra/newview/app_settings/windlight/skies/Fluffy%20Big%20Clouds.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/windlight/skies/Foggy.xml b/indra/newview/app_settings/windlight/skies/Foggy.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/windlight/skies/Funky%20Funky%20Funky.xml b/indra/newview/app_settings/windlight/skies/Funky%20Funky%20Funky.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/windlight/skies/Funky%20Funky.xml b/indra/newview/app_settings/windlight/skies/Funky%20Funky.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/windlight/skies/Gelatto.xml b/indra/newview/app_settings/windlight/skies/Gelatto.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/windlight/skies/Ghost.xml b/indra/newview/app_settings/windlight/skies/Ghost.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/windlight/skies/Incongruent%20Truths.xml b/indra/newview/app_settings/windlight/skies/Incongruent%20Truths.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/windlight/skies/Midday%201.xml b/indra/newview/app_settings/windlight/skies/Midday%201.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/windlight/skies/Midday%202.xml b/indra/newview/app_settings/windlight/skies/Midday%202.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/windlight/skies/Midday%203.xml b/indra/newview/app_settings/windlight/skies/Midday%203.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/windlight/skies/Midday%204.xml b/indra/newview/app_settings/windlight/skies/Midday%204.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/windlight/skies/Midday.xml b/indra/newview/app_settings/windlight/skies/Midday.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/windlight/skies/Midnight.xml b/indra/newview/app_settings/windlight/skies/Midnight.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/windlight/skies/Night.xml b/indra/newview/app_settings/windlight/skies/Night.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/windlight/skies/Pirate.xml b/indra/newview/app_settings/windlight/skies/Pirate.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/windlight/skies/Purple.xml b/indra/newview/app_settings/windlight/skies/Purple.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/windlight/skies/Sailor%27s%20Delight.xml b/indra/newview/app_settings/windlight/skies/Sailor%27s%20Delight.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/windlight/skies/Sheer%20Surreality.xml b/indra/newview/app_settings/windlight/skies/Sheer%20Surreality.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/windlight/skies/Sunrise.xml b/indra/newview/app_settings/windlight/skies/Sunrise.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/windlight/skies/Sunset.xml b/indra/newview/app_settings/windlight/skies/Sunset.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/windlight/water/Default.xml b/indra/newview/app_settings/windlight/water/Default.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/windlight/water/Glassy.xml b/indra/newview/app_settings/windlight/water/Glassy.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/windlight/water/Murky.xml b/indra/newview/app_settings/windlight/water/Murky.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/windlight/water/Pond.xml b/indra/newview/app_settings/windlight/water/Pond.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/windlight/water/SNAKE%21%21%21.xml b/indra/newview/app_settings/windlight/water/SNAKE%21%21%21.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/windlight/water/Second%20Plague.xml b/indra/newview/app_settings/windlight/water/Second%20Plague.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/app_settings/windlight/water/Valdez.xml b/indra/newview/app_settings/windlight/water/Valdez.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/build_win32_appConfig.py b/indra/newview/build_win32_appConfig.py
old mode 100644
new mode 100755
diff --git a/indra/newview/character/attentions.xml b/indra/newview/character/attentions.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/character/attentionsN.xml b/indra/newview/character/attentionsN.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/character/avatar_eye.llm b/indra/newview/character/avatar_eye.llm
old mode 100644
new mode 100755
diff --git a/indra/newview/character/avatar_eye_1.llm b/indra/newview/character/avatar_eye_1.llm
old mode 100644
new mode 100755
diff --git a/indra/newview/character/avatar_eyelashes.llm b/indra/newview/character/avatar_eyelashes.llm
old mode 100644
new mode 100755
diff --git a/indra/newview/character/avatar_hair.llm b/indra/newview/character/avatar_hair.llm
old mode 100644
new mode 100755
diff --git a/indra/newview/character/avatar_hair_1.llm b/indra/newview/character/avatar_hair_1.llm
old mode 100644
new mode 100755
diff --git a/indra/newview/character/avatar_hair_2.llm b/indra/newview/character/avatar_hair_2.llm
old mode 100644
new mode 100755
diff --git a/indra/newview/character/avatar_hair_3.llm b/indra/newview/character/avatar_hair_3.llm
old mode 100644
new mode 100755
diff --git a/indra/newview/character/avatar_hair_4.llm b/indra/newview/character/avatar_hair_4.llm
old mode 100644
new mode 100755
diff --git a/indra/newview/character/avatar_hair_5.llm b/indra/newview/character/avatar_hair_5.llm
old mode 100644
new mode 100755
diff --git a/indra/newview/character/avatar_head.llm b/indra/newview/character/avatar_head.llm
old mode 100644
new mode 100755
diff --git a/indra/newview/character/avatar_head_1.llm b/indra/newview/character/avatar_head_1.llm
old mode 100644
new mode 100755
diff --git a/indra/newview/character/avatar_head_2.llm b/indra/newview/character/avatar_head_2.llm
old mode 100644
new mode 100755
diff --git a/indra/newview/character/avatar_head_3.llm b/indra/newview/character/avatar_head_3.llm
old mode 100644
new mode 100755
diff --git a/indra/newview/character/avatar_head_4.llm b/indra/newview/character/avatar_head_4.llm
old mode 100644
new mode 100755
diff --git a/indra/newview/character/avatar_lad.xml b/indra/newview/character/avatar_lad.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/character/avatar_lower_body.llm b/indra/newview/character/avatar_lower_body.llm
old mode 100644
new mode 100755
diff --git a/indra/newview/character/avatar_lower_body_1.llm b/indra/newview/character/avatar_lower_body_1.llm
old mode 100644
new mode 100755
diff --git a/indra/newview/character/avatar_lower_body_2.llm b/indra/newview/character/avatar_lower_body_2.llm
old mode 100644
new mode 100755
diff --git a/indra/newview/character/avatar_lower_body_3.llm b/indra/newview/character/avatar_lower_body_3.llm
old mode 100644
new mode 100755
diff --git a/indra/newview/character/avatar_lower_body_4.llm b/indra/newview/character/avatar_lower_body_4.llm
old mode 100644
new mode 100755
diff --git a/indra/newview/character/avatar_skeleton.xml b/indra/newview/character/avatar_skeleton.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/character/avatar_skirt.llm b/indra/newview/character/avatar_skirt.llm
old mode 100644
new mode 100755
diff --git a/indra/newview/character/avatar_skirt_1.llm b/indra/newview/character/avatar_skirt_1.llm
old mode 100644
new mode 100755
diff --git a/indra/newview/character/avatar_skirt_2.llm b/indra/newview/character/avatar_skirt_2.llm
old mode 100644
new mode 100755
diff --git a/indra/newview/character/avatar_skirt_3.llm b/indra/newview/character/avatar_skirt_3.llm
old mode 100644
new mode 100755
diff --git a/indra/newview/character/avatar_skirt_4.llm b/indra/newview/character/avatar_skirt_4.llm
old mode 100644
new mode 100755
diff --git a/indra/newview/character/avatar_upper_body.llm b/indra/newview/character/avatar_upper_body.llm
old mode 100644
new mode 100755
diff --git a/indra/newview/character/avatar_upper_body_1.llm b/indra/newview/character/avatar_upper_body_1.llm
old mode 100644
new mode 100755
diff --git a/indra/newview/character/avatar_upper_body_2.llm b/indra/newview/character/avatar_upper_body_2.llm
old mode 100644
new mode 100755
diff --git a/indra/newview/character/avatar_upper_body_3.llm b/indra/newview/character/avatar_upper_body_3.llm
old mode 100644
new mode 100755
diff --git a/indra/newview/character/avatar_upper_body_4.llm b/indra/newview/character/avatar_upper_body_4.llm
old mode 100644
new mode 100755
diff --git a/indra/newview/character/blush_alpha.tga b/indra/newview/character/blush_alpha.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/character/body_skingrain.tga b/indra/newview/character/body_skingrain.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/character/bodyfreckles_alpha.tga b/indra/newview/character/bodyfreckles_alpha.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/character/bump_face_wrinkles.tga b/indra/newview/character/bump_face_wrinkles.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/character/bump_head_base.tga b/indra/newview/character/bump_head_base.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/character/bump_lowerbody_base.tga b/indra/newview/character/bump_lowerbody_base.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/character/bump_pants_wrinkles.tga b/indra/newview/character/bump_pants_wrinkles.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/character/bump_shirt_wrinkles.tga b/indra/newview/character/bump_shirt_wrinkles.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/character/bump_upperbody_base.tga b/indra/newview/character/bump_upperbody_base.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/character/checkerboard.tga b/indra/newview/character/checkerboard.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/character/eyebrows_alpha.tga b/indra/newview/character/eyebrows_alpha.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/character/eyeliner_alpha.tga b/indra/newview/character/eyeliner_alpha.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/character/eyeshadow_inner_alpha.tga b/indra/newview/character/eyeshadow_inner_alpha.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/character/eyeshadow_outer_alpha.tga b/indra/newview/character/eyeshadow_outer_alpha.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/character/eyewhite.tga b/indra/newview/character/eyewhite.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/character/facehair_chincurtains_alpha.tga b/indra/newview/character/facehair_chincurtains_alpha.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/character/facehair_moustache_alpha.tga b/indra/newview/character/facehair_moustache_alpha.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/character/facehair_sideburns_alpha.tga b/indra/newview/character/facehair_sideburns_alpha.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/character/facehair_soulpatch_alpha.tga b/indra/newview/character/facehair_soulpatch_alpha.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/character/freckles_alpha.tga b/indra/newview/character/freckles_alpha.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/character/genepool.xml b/indra/newview/character/genepool.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/character/glove_length_alpha.tga b/indra/newview/character/glove_length_alpha.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/character/gloves_fingers_alpha.tga b/indra/newview/character/gloves_fingers_alpha.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/character/head_alpha.tga b/indra/newview/character/head_alpha.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/character/head_color.tga b/indra/newview/character/head_color.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/character/head_hair.tga b/indra/newview/character/head_hair.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/character/head_highlights_alpha.tga b/indra/newview/character/head_highlights_alpha.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/character/head_shading_alpha.tga b/indra/newview/character/head_shading_alpha.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/character/head_skingrain.tga b/indra/newview/character/head_skingrain.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/character/jacket_length_lower_alpha.tga b/indra/newview/character/jacket_length_lower_alpha.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/character/jacket_length_upper_alpha.tga b/indra/newview/character/jacket_length_upper_alpha.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/character/jacket_open_lower_alpha.tga b/indra/newview/character/jacket_open_lower_alpha.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/character/jacket_open_upper_alpha.tga b/indra/newview/character/jacket_open_upper_alpha.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/character/lipgloss_alpha.tga b/indra/newview/character/lipgloss_alpha.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/character/lips_mask.tga b/indra/newview/character/lips_mask.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/character/lipstick_alpha.tga b/indra/newview/character/lipstick_alpha.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/character/lowerbody_color.tga b/indra/newview/character/lowerbody_color.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/character/lowerbody_highlights_alpha.tga b/indra/newview/character/lowerbody_highlights_alpha.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/character/lowerbody_shading_alpha.tga b/indra/newview/character/lowerbody_shading_alpha.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/character/nailpolish_alpha.tga b/indra/newview/character/nailpolish_alpha.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/character/pants_length_alpha.tga b/indra/newview/character/pants_length_alpha.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/character/pants_waist_alpha.tga b/indra/newview/character/pants_waist_alpha.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/character/rosyface_alpha.tga b/indra/newview/character/rosyface_alpha.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/character/rouge_alpha.tga b/indra/newview/character/rouge_alpha.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/character/shirt_bottom_alpha.tga b/indra/newview/character/shirt_bottom_alpha.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/character/shirt_collar_alpha.tga b/indra/newview/character/shirt_collar_alpha.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/character/shirt_collar_back_alpha.tga b/indra/newview/character/shirt_collar_back_alpha.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/character/shirt_sleeve_alpha.tga b/indra/newview/character/shirt_sleeve_alpha.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/character/shoe_height_alpha.tga b/indra/newview/character/shoe_height_alpha.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/character/skirt_length_alpha.tga b/indra/newview/character/skirt_length_alpha.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/character/skirt_slit_back_alpha.tga b/indra/newview/character/skirt_slit_back_alpha.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/character/skirt_slit_front_alpha.tga b/indra/newview/character/skirt_slit_front_alpha.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/character/skirt_slit_left_alpha.tga b/indra/newview/character/skirt_slit_left_alpha.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/character/skirt_slit_right_alpha.tga b/indra/newview/character/skirt_slit_right_alpha.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/character/underpants_trial_female.tga b/indra/newview/character/underpants_trial_female.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/character/underpants_trial_male.tga b/indra/newview/character/underpants_trial_male.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/character/undershirt_trial_female.tga b/indra/newview/character/undershirt_trial_female.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/character/upperbody_color.tga b/indra/newview/character/upperbody_color.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/character/upperbody_highlights_alpha.tga b/indra/newview/character/upperbody_highlights_alpha.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/character/upperbody_shading_alpha.tga b/indra/newview/character/upperbody_shading_alpha.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/character/upperbodyfreckles_alpha.tga b/indra/newview/character/upperbodyfreckles_alpha.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/cursors_mac/UI_CURSOR_ARROW.tif b/indra/newview/cursors_mac/UI_CURSOR_ARROW.tif
old mode 100644
new mode 100755
diff --git a/indra/newview/cursors_mac/UI_CURSOR_ARROWDRAG.tif b/indra/newview/cursors_mac/UI_CURSOR_ARROWDRAG.tif
old mode 100644
new mode 100755
diff --git a/indra/newview/cursors_mac/UI_CURSOR_ARROWLOCKED.tif b/indra/newview/cursors_mac/UI_CURSOR_ARROWLOCKED.tif
old mode 100644
new mode 100755
diff --git a/indra/newview/cursors_mac/UI_CURSOR_GRABLOCKED.tif b/indra/newview/cursors_mac/UI_CURSOR_GRABLOCKED.tif
old mode 100644
new mode 100755
diff --git a/indra/newview/cursors_mac/UI_CURSOR_NO.tif b/indra/newview/cursors_mac/UI_CURSOR_NO.tif
old mode 100644
new mode 100755
diff --git a/indra/newview/cursors_mac/UI_CURSOR_NOLOCKED.tif b/indra/newview/cursors_mac/UI_CURSOR_NOLOCKED.tif
old mode 100644
new mode 100755
diff --git a/indra/newview/cursors_mac/UI_CURSOR_PATHFINDING.tif b/indra/newview/cursors_mac/UI_CURSOR_PATHFINDING.tif
old mode 100644
new mode 100755
diff --git a/indra/newview/cursors_mac/UI_CURSOR_PATHFINDING_END.tif b/indra/newview/cursors_mac/UI_CURSOR_PATHFINDING_END.tif
old mode 100644
new mode 100755
diff --git a/indra/newview/cursors_mac/UI_CURSOR_PATHFINDING_END_ADD.tif b/indra/newview/cursors_mac/UI_CURSOR_PATHFINDING_END_ADD.tif
old mode 100644
new mode 100755
diff --git a/indra/newview/cursors_mac/UI_CURSOR_PATHFINDING_START.tif b/indra/newview/cursors_mac/UI_CURSOR_PATHFINDING_START.tif
old mode 100644
new mode 100755
diff --git a/indra/newview/cursors_mac/UI_CURSOR_PATHFINDING_START_ADD.tif b/indra/newview/cursors_mac/UI_CURSOR_PATHFINDING_START_ADD.tif
old mode 100644
new mode 100755
diff --git a/indra/newview/cursors_mac/UI_CURSOR_SIZENESW.tif b/indra/newview/cursors_mac/UI_CURSOR_SIZENESW.tif
old mode 100644
new mode 100755
diff --git a/indra/newview/cursors_mac/UI_CURSOR_SIZENS.tif b/indra/newview/cursors_mac/UI_CURSOR_SIZENS.tif
old mode 100644
new mode 100755
diff --git a/indra/newview/cursors_mac/UI_CURSOR_SIZENWSE.tif b/indra/newview/cursors_mac/UI_CURSOR_SIZENWSE.tif
old mode 100644
new mode 100755
diff --git a/indra/newview/cursors_mac/UI_CURSOR_SIZEWE.tif b/indra/newview/cursors_mac/UI_CURSOR_SIZEWE.tif
old mode 100644
new mode 100755
diff --git a/indra/newview/cursors_mac/UI_CURSOR_TOOLBUY.tif b/indra/newview/cursors_mac/UI_CURSOR_TOOLBUY.tif
old mode 100644
new mode 100755
diff --git a/indra/newview/cursors_mac/UI_CURSOR_TOOLCAMERA.tif b/indra/newview/cursors_mac/UI_CURSOR_TOOLCAMERA.tif
old mode 100644
new mode 100755
diff --git a/indra/newview/cursors_mac/UI_CURSOR_TOOLCREATE.tif b/indra/newview/cursors_mac/UI_CURSOR_TOOLCREATE.tif
old mode 100644
new mode 100755
diff --git a/indra/newview/cursors_mac/UI_CURSOR_TOOLFOCUS.tif b/indra/newview/cursors_mac/UI_CURSOR_TOOLFOCUS.tif
old mode 100644
new mode 100755
diff --git a/indra/newview/cursors_mac/UI_CURSOR_TOOLGRAB.tif b/indra/newview/cursors_mac/UI_CURSOR_TOOLGRAB.tif
old mode 100644
new mode 100755
diff --git a/indra/newview/cursors_mac/UI_CURSOR_TOOLLAND.tif b/indra/newview/cursors_mac/UI_CURSOR_TOOLLAND.tif
old mode 100644
new mode 100755
diff --git a/indra/newview/cursors_mac/UI_CURSOR_TOOLMEDIAOPEN.tif b/indra/newview/cursors_mac/UI_CURSOR_TOOLMEDIAOPEN.tif
old mode 100644
new mode 100755
diff --git a/indra/newview/cursors_mac/UI_CURSOR_TOOLOPEN.tif b/indra/newview/cursors_mac/UI_CURSOR_TOOLOPEN.tif
old mode 100644
new mode 100755
diff --git a/indra/newview/cursors_mac/UI_CURSOR_TOOLPAN.tif b/indra/newview/cursors_mac/UI_CURSOR_TOOLPAN.tif
old mode 100644
new mode 100755
diff --git a/indra/newview/cursors_mac/UI_CURSOR_TOOLPAUSE.tif b/indra/newview/cursors_mac/UI_CURSOR_TOOLPAUSE.tif
old mode 100644
new mode 100755
diff --git a/indra/newview/cursors_mac/UI_CURSOR_TOOLPICKOBJECT3.tif b/indra/newview/cursors_mac/UI_CURSOR_TOOLPICKOBJECT3.tif
old mode 100644
new mode 100755
diff --git a/indra/newview/cursors_mac/UI_CURSOR_TOOLPLAY.tif b/indra/newview/cursors_mac/UI_CURSOR_TOOLPLAY.tif
old mode 100644
new mode 100755
diff --git a/indra/newview/cursors_mac/UI_CURSOR_TOOLROTATE.tif b/indra/newview/cursors_mac/UI_CURSOR_TOOLROTATE.tif
old mode 100644
new mode 100755
diff --git a/indra/newview/cursors_mac/UI_CURSOR_TOOLSCALE.tif b/indra/newview/cursors_mac/UI_CURSOR_TOOLSCALE.tif
old mode 100644
new mode 100755
diff --git a/indra/newview/cursors_mac/UI_CURSOR_TOOLSIT.tif b/indra/newview/cursors_mac/UI_CURSOR_TOOLSIT.tif
old mode 100644
new mode 100755
diff --git a/indra/newview/cursors_mac/UI_CURSOR_TOOLTRANSLATE.tif b/indra/newview/cursors_mac/UI_CURSOR_TOOLTRANSLATE.tif
old mode 100644
new mode 100755
diff --git a/indra/newview/cursors_mac/UI_CURSOR_TOOLZOOMIN.tif b/indra/newview/cursors_mac/UI_CURSOR_TOOLZOOMIN.tif
old mode 100644
new mode 100755
diff --git a/indra/newview/cursors_mac/UI_CURSOR_WORKING.tif b/indra/newview/cursors_mac/UI_CURSOR_WORKING.tif
old mode 100644
new mode 100755
diff --git a/indra/newview/da.lproj/language.txt b/indra/newview/da.lproj/language.txt
old mode 100644
new mode 100755
diff --git a/indra/newview/es.lproj/language.txt b/indra/newview/es.lproj/language.txt
old mode 100644
new mode 100755
diff --git a/indra/newview/featuretable.txt b/indra/newview/featuretable.txt
old mode 100644
new mode 100755
diff --git a/indra/newview/featuretable_linux.txt b/indra/newview/featuretable_linux.txt
old mode 100644
new mode 100755
diff --git a/indra/newview/featuretable_mac.txt b/indra/newview/featuretable_mac.txt
old mode 100644
new mode 100755
diff --git a/indra/newview/featuretable_solaris.txt b/indra/newview/featuretable_solaris.txt
old mode 100644
new mode 100755
diff --git a/indra/newview/featuretable_xp.txt b/indra/newview/featuretable_xp.txt
old mode 100644
new mode 100755
diff --git a/indra/newview/fmod_hidden_symbols.exp b/indra/newview/fmod_hidden_symbols.exp
old mode 100644
new mode 100755
diff --git a/indra/newview/fmodwrapper.cpp b/indra/newview/fmodwrapper.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/fonts/DejaVu-license.txt b/indra/newview/fonts/DejaVu-license.txt
old mode 100644
new mode 100755
diff --git a/indra/newview/fonts/DejaVuSans-Bold.ttf b/indra/newview/fonts/DejaVuSans-Bold.ttf
old mode 100644
new mode 100755
diff --git a/indra/newview/fonts/DejaVuSans-BoldOblique.ttf b/indra/newview/fonts/DejaVuSans-BoldOblique.ttf
old mode 100644
new mode 100755
diff --git a/indra/newview/fonts/DejaVuSans-Oblique.ttf b/indra/newview/fonts/DejaVuSans-Oblique.ttf
old mode 100644
new mode 100755
diff --git a/indra/newview/fonts/DejaVuSans.ttf b/indra/newview/fonts/DejaVuSans.ttf
old mode 100644
new mode 100755
diff --git a/indra/newview/fonts/DejaVuSansMono.ttf b/indra/newview/fonts/DejaVuSansMono.ttf
old mode 100644
new mode 100755
diff --git a/indra/newview/fr.lproj/language.txt b/indra/newview/fr.lproj/language.txt
old mode 100644
new mode 100755
diff --git a/indra/newview/generate_breakpad_symbols.py b/indra/newview/generate_breakpad_symbols.py
old mode 100644
new mode 100755
diff --git a/indra/newview/gpu_table.txt b/indra/newview/gpu_table.txt
old mode 100644
new mode 100755
diff --git a/indra/newview/groupchatlistener.cpp b/indra/newview/groupchatlistener.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/groupchatlistener.h b/indra/newview/groupchatlistener.h
old mode 100644
new mode 100755
diff --git a/indra/newview/hu.lproj/language.txt b/indra/newview/hu.lproj/language.txt
old mode 100644
new mode 100755
diff --git a/indra/newview/icons/beta/secondlife.icns b/indra/newview/icons/beta/secondlife.icns
old mode 100644
new mode 100755
diff --git a/indra/newview/icons/beta/secondlife.ico b/indra/newview/icons/beta/secondlife.ico
old mode 100644
new mode 100755
diff --git a/indra/newview/icons/beta/secondlife_128.png b/indra/newview/icons/beta/secondlife_128.png
old mode 100644
new mode 100755
diff --git a/indra/newview/icons/beta/secondlife_16.png b/indra/newview/icons/beta/secondlife_16.png
old mode 100644
new mode 100755
diff --git a/indra/newview/icons/beta/secondlife_256.BMP b/indra/newview/icons/beta/secondlife_256.BMP
old mode 100644
new mode 100755
diff --git a/indra/newview/icons/beta/secondlife_256.png b/indra/newview/icons/beta/secondlife_256.png
old mode 100644
new mode 100755
diff --git a/indra/newview/icons/beta/secondlife_32.png b/indra/newview/icons/beta/secondlife_32.png
old mode 100644
new mode 100755
diff --git a/indra/newview/icons/beta/secondlife_48.png b/indra/newview/icons/beta/secondlife_48.png
old mode 100644
new mode 100755
diff --git a/indra/newview/icons/beta/secondlife_512.png b/indra/newview/icons/beta/secondlife_512.png
old mode 100644
new mode 100755
diff --git a/indra/newview/icons/development/secondlife.icns b/indra/newview/icons/development/secondlife.icns
old mode 100644
new mode 100755
diff --git a/indra/newview/icons/development/secondlife.ico b/indra/newview/icons/development/secondlife.ico
old mode 100644
new mode 100755
diff --git a/indra/newview/icons/development/secondlife_128.png b/indra/newview/icons/development/secondlife_128.png
old mode 100644
new mode 100755
diff --git a/indra/newview/icons/development/secondlife_16.png b/indra/newview/icons/development/secondlife_16.png
old mode 100644
new mode 100755
diff --git a/indra/newview/icons/development/secondlife_256.BMP b/indra/newview/icons/development/secondlife_256.BMP
old mode 100644
new mode 100755
diff --git a/indra/newview/icons/development/secondlife_256.png b/indra/newview/icons/development/secondlife_256.png
old mode 100644
new mode 100755
diff --git a/indra/newview/icons/development/secondlife_32.png b/indra/newview/icons/development/secondlife_32.png
old mode 100644
new mode 100755
diff --git a/indra/newview/icons/development/secondlife_48.png b/indra/newview/icons/development/secondlife_48.png
old mode 100644
new mode 100755
diff --git a/indra/newview/icons/development/secondlife_512.png b/indra/newview/icons/development/secondlife_512.png
old mode 100644
new mode 100755
diff --git a/indra/newview/icons/project/secondlife.icns b/indra/newview/icons/project/secondlife.icns
old mode 100644
new mode 100755
diff --git a/indra/newview/icons/project/secondlife.ico b/indra/newview/icons/project/secondlife.ico
old mode 100644
new mode 100755
diff --git a/indra/newview/icons/project/secondlife_128.png b/indra/newview/icons/project/secondlife_128.png
old mode 100644
new mode 100755
diff --git a/indra/newview/icons/project/secondlife_16.png b/indra/newview/icons/project/secondlife_16.png
old mode 100644
new mode 100755
diff --git a/indra/newview/icons/project/secondlife_256.BMP b/indra/newview/icons/project/secondlife_256.BMP
old mode 100644
new mode 100755
diff --git a/indra/newview/icons/project/secondlife_256.png b/indra/newview/icons/project/secondlife_256.png
old mode 100644
new mode 100755
diff --git a/indra/newview/icons/project/secondlife_32.png b/indra/newview/icons/project/secondlife_32.png
old mode 100644
new mode 100755
diff --git a/indra/newview/icons/project/secondlife_48.png b/indra/newview/icons/project/secondlife_48.png
old mode 100644
new mode 100755
diff --git a/indra/newview/icons/project/secondlife_512.png b/indra/newview/icons/project/secondlife_512.png
old mode 100644
new mode 100755
diff --git a/indra/newview/icons/release/secondlife.icns b/indra/newview/icons/release/secondlife.icns
old mode 100644
new mode 100755
diff --git a/indra/newview/icons/release/secondlife.ico b/indra/newview/icons/release/secondlife.ico
old mode 100644
new mode 100755
diff --git a/indra/newview/icons/release/secondlife_128.png b/indra/newview/icons/release/secondlife_128.png
old mode 100644
new mode 100755
diff --git a/indra/newview/icons/release/secondlife_16.png b/indra/newview/icons/release/secondlife_16.png
old mode 100644
new mode 100755
diff --git a/indra/newview/icons/release/secondlife_256.BMP b/indra/newview/icons/release/secondlife_256.BMP
old mode 100644
new mode 100755
diff --git a/indra/newview/icons/release/secondlife_256.png b/indra/newview/icons/release/secondlife_256.png
old mode 100644
new mode 100755
diff --git a/indra/newview/icons/release/secondlife_32.png b/indra/newview/icons/release/secondlife_32.png
old mode 100644
new mode 100755
diff --git a/indra/newview/icons/release/secondlife_48.png b/indra/newview/icons/release/secondlife_48.png
old mode 100644
new mode 100755
diff --git a/indra/newview/icons/release/secondlife_512.png b/indra/newview/icons/release/secondlife_512.png
old mode 100644
new mode 100755
diff --git a/indra/newview/icons/test/secondlife.icns b/indra/newview/icons/test/secondlife.icns
old mode 100644
new mode 100755
diff --git a/indra/newview/icons/test/secondlife.ico b/indra/newview/icons/test/secondlife.ico
old mode 100644
new mode 100755
diff --git a/indra/newview/icons/test/secondlife_128.png b/indra/newview/icons/test/secondlife_128.png
old mode 100644
new mode 100755
diff --git a/indra/newview/icons/test/secondlife_16.png b/indra/newview/icons/test/secondlife_16.png
old mode 100644
new mode 100755
diff --git a/indra/newview/icons/test/secondlife_256.BMP b/indra/newview/icons/test/secondlife_256.BMP
old mode 100644
new mode 100755
diff --git a/indra/newview/icons/test/secondlife_256.png b/indra/newview/icons/test/secondlife_256.png
old mode 100644
new mode 100755
diff --git a/indra/newview/icons/test/secondlife_32.png b/indra/newview/icons/test/secondlife_32.png
old mode 100644
new mode 100755
diff --git a/indra/newview/icons/test/secondlife_48.png b/indra/newview/icons/test/secondlife_48.png
old mode 100644
new mode 100755
diff --git a/indra/newview/icons/test/secondlife_512.png b/indra/newview/icons/test/secondlife_512.png
old mode 100644
new mode 100755
diff --git a/indra/newview/installers/darwin/dmg-cleanup.applescript b/indra/newview/installers/darwin/dmg-cleanup.applescript
old mode 100644
new mode 100755
diff --git a/indra/newview/installers/darwin/fix_application_icon_position.sh b/indra/newview/installers/darwin/fix_application_icon_position.sh
old mode 100644
new mode 100755
diff --git a/indra/newview/installers/darwin/release-dmg/Applications-alias.r b/indra/newview/installers/darwin/release-dmg/Applications-alias.r
old mode 100644
new mode 100755
diff --git a/indra/newview/installers/darwin/release-dmg/_DS_Store b/indra/newview/installers/darwin/release-dmg/_DS_Store
old mode 100644
new mode 100755
diff --git a/indra/newview/installers/darwin/release-dmg/_VolumeIcon.icns b/indra/newview/installers/darwin/release-dmg/_VolumeIcon.icns
old mode 100644
new mode 100755
diff --git a/indra/newview/installers/darwin/release-dmg/background.jpg b/indra/newview/installers/darwin/release-dmg/background.jpg
old mode 100644
new mode 100755
diff --git a/indra/newview/installers/windows/FILES_ARE_UNICODE_UTF-16LE.txt b/indra/newview/installers/windows/FILES_ARE_UNICODE_UTF-16LE.txt
old mode 100644
new mode 100755
diff --git a/indra/newview/installers/windows/install_icon.BMP b/indra/newview/installers/windows/install_icon.BMP
old mode 100644
new mode 100755
diff --git a/indra/newview/installers/windows/install_icon.ico b/indra/newview/installers/windows/install_icon.ico
old mode 100644
new mode 100755
diff --git a/indra/newview/installers/windows/installer_template.nsi b/indra/newview/installers/windows/installer_template.nsi
old mode 100644
new mode 100755
diff --git a/indra/newview/installers/windows/lang_da.nsi b/indra/newview/installers/windows/lang_da.nsi
old mode 100644
new mode 100755
diff --git a/indra/newview/installers/windows/lang_de.nsi b/indra/newview/installers/windows/lang_de.nsi
old mode 100644
new mode 100755
diff --git a/indra/newview/installers/windows/lang_en-us.nsi b/indra/newview/installers/windows/lang_en-us.nsi
old mode 100644
new mode 100755
diff --git a/indra/newview/installers/windows/lang_es.nsi b/indra/newview/installers/windows/lang_es.nsi
old mode 100644
new mode 100755
diff --git a/indra/newview/installers/windows/lang_fr.nsi b/indra/newview/installers/windows/lang_fr.nsi
old mode 100644
new mode 100755
diff --git a/indra/newview/installers/windows/lang_it.nsi b/indra/newview/installers/windows/lang_it.nsi
old mode 100644
new mode 100755
diff --git a/indra/newview/installers/windows/lang_ja.nsi b/indra/newview/installers/windows/lang_ja.nsi
old mode 100644
new mode 100755
diff --git a/indra/newview/installers/windows/lang_pl.nsi b/indra/newview/installers/windows/lang_pl.nsi
old mode 100644
new mode 100755
diff --git a/indra/newview/installers/windows/lang_pt-br.nsi b/indra/newview/installers/windows/lang_pt-br.nsi
old mode 100644
new mode 100755
diff --git a/indra/newview/installers/windows/lang_ru.nsi b/indra/newview/installers/windows/lang_ru.nsi
old mode 100644
new mode 100755
diff --git a/indra/newview/installers/windows/lang_tr.nsi b/indra/newview/installers/windows/lang_tr.nsi
old mode 100644
new mode 100755
diff --git a/indra/newview/installers/windows/lang_zh.nsi b/indra/newview/installers/windows/lang_zh.nsi
old mode 100644
new mode 100755
diff --git a/indra/newview/installers/windows/language_menu.nsi b/indra/newview/installers/windows/language_menu.nsi
old mode 100644
new mode 100755
diff --git a/indra/newview/installers/windows/uninstall_icon.BMP b/indra/newview/installers/windows/uninstall_icon.BMP
old mode 100644
new mode 100755
diff --git a/indra/newview/installers/windows/uninstall_icon.ico b/indra/newview/installers/windows/uninstall_icon.ico
old mode 100644
new mode 100755
diff --git a/indra/newview/it.lproj/language.txt b/indra/newview/it.lproj/language.txt
old mode 100644
new mode 100755
diff --git a/indra/newview/licenses-linux.txt b/indra/newview/licenses-linux.txt
old mode 100644
new mode 100755
diff --git a/indra/newview/licenses-mac.txt b/indra/newview/licenses-mac.txt
old mode 100644
new mode 100755
diff --git a/indra/newview/licenses-solaris.txt b/indra/newview/licenses-solaris.txt
old mode 100644
new mode 100755
diff --git a/indra/newview/licenses-win32.txt b/indra/newview/licenses-win32.txt
old mode 100644
new mode 100755
diff --git a/indra/newview/linux_tools/client-readme-joystick.txt b/indra/newview/linux_tools/client-readme-joystick.txt
old mode 100644
new mode 100755
diff --git a/indra/newview/linux_tools/client-readme-voice.txt b/indra/newview/linux_tools/client-readme-voice.txt
old mode 100644
new mode 100755
diff --git a/indra/newview/linux_tools/client-readme.txt b/indra/newview/linux_tools/client-readme.txt
old mode 100644
new mode 100755
diff --git a/indra/newview/llaccountingcostmanager.cpp b/indra/newview/llaccountingcostmanager.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llaccountingcostmanager.h b/indra/newview/llaccountingcostmanager.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llagent.h b/indra/newview/llagent.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llagentaccess.cpp b/indra/newview/llagentaccess.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llagentaccess.h b/indra/newview/llagentaccess.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llagentcamera.cpp b/indra/newview/llagentcamera.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llagentcamera.h b/indra/newview/llagentcamera.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llagentdata.cpp b/indra/newview/llagentdata.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llagentdata.h b/indra/newview/llagentdata.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llagentlanguage.cpp b/indra/newview/llagentlanguage.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llagentlanguage.h b/indra/newview/llagentlanguage.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llagentlistener.cpp b/indra/newview/llagentlistener.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llagentlistener.h b/indra/newview/llagentlistener.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llagentpicksinfo.cpp b/indra/newview/llagentpicksinfo.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llagentpicksinfo.h b/indra/newview/llagentpicksinfo.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llagentpilot.cpp b/indra/newview/llagentpilot.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llagentpilot.h b/indra/newview/llagentpilot.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llagentui.cpp b/indra/newview/llagentui.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llagentui.h b/indra/newview/llagentui.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llagentwearables.h b/indra/newview/llagentwearables.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llagentwearablesfetch.cpp b/indra/newview/llagentwearablesfetch.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llagentwearablesfetch.h b/indra/newview/llagentwearablesfetch.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llanimstatelabels.cpp b/indra/newview/llanimstatelabels.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llanimstatelabels.h b/indra/newview/llanimstatelabels.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llappcorehttp.cpp b/indra/newview/llappcorehttp.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llappcorehttp.h b/indra/newview/llappcorehttp.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llappearance.h b/indra/newview/llappearance.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llappearancemgr.h b/indra/newview/llappearancemgr.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llappviewer.h b/indra/newview/llappviewer.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llappviewerlinux.cpp b/indra/newview/llappviewerlinux.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llappviewerlinux.h b/indra/newview/llappviewerlinux.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llappviewerlinux_api.h b/indra/newview/llappviewerlinux_api.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llappviewerlinux_api.xml b/indra/newview/llappviewerlinux_api.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/llappviewerlinux_api_dbus.cpp b/indra/newview/llappviewerlinux_api_dbus.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llappviewerlinux_api_dbus.h b/indra/newview/llappviewerlinux_api_dbus.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llappviewerlinux_api_dbus_syms_raw.inc b/indra/newview/llappviewerlinux_api_dbus_syms_raw.inc
old mode 100644
new mode 100755
diff --git a/indra/newview/llappviewerlistener.cpp b/indra/newview/llappviewerlistener.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llappviewerlistener.h b/indra/newview/llappviewerlistener.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llappviewermacosx.cpp b/indra/newview/llappviewermacosx.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llappviewermacosx.h b/indra/newview/llappviewermacosx.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llappviewerwin32.cpp b/indra/newview/llappviewerwin32.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llappviewerwin32.h b/indra/newview/llappviewerwin32.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llassetuploadqueue.cpp b/indra/newview/llassetuploadqueue.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llassetuploadqueue.h b/indra/newview/llassetuploadqueue.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llassetuploadresponders.cpp b/indra/newview/llassetuploadresponders.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llassetuploadresponders.h b/indra/newview/llassetuploadresponders.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llattachmentsmgr.cpp b/indra/newview/llattachmentsmgr.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llattachmentsmgr.h b/indra/newview/llattachmentsmgr.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llaudiosourcevo.cpp b/indra/newview/llaudiosourcevo.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llaudiosourcevo.h b/indra/newview/llaudiosourcevo.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llautoreplace.cpp b/indra/newview/llautoreplace.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llautoreplace.h b/indra/newview/llautoreplace.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llavataractions.h b/indra/newview/llavataractions.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llavatariconctrl.h b/indra/newview/llavatariconctrl.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llavatarlist.cpp b/indra/newview/llavatarlist.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llavatarlist.h b/indra/newview/llavatarlist.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llavatarlistitem.cpp b/indra/newview/llavatarlistitem.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llavatarlistitem.h b/indra/newview/llavatarlistitem.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llavatarpropertiesprocessor.cpp b/indra/newview/llavatarpropertiesprocessor.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llavatarpropertiesprocessor.h b/indra/newview/llavatarpropertiesprocessor.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llblockedlistitem.cpp b/indra/newview/llblockedlistitem.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llblockedlistitem.h b/indra/newview/llblockedlistitem.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llblocklist.cpp b/indra/newview/llblocklist.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llblocklist.h b/indra/newview/llblocklist.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llbox.cpp b/indra/newview/llbox.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llbox.h b/indra/newview/llbox.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llbreadcrumbview.cpp b/indra/newview/llbreadcrumbview.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llbreadcrumbview.h b/indra/newview/llbreadcrumbview.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llbreastmotion.cpp b/indra/newview/llbreastmotion.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llbreastmotion.h b/indra/newview/llbreastmotion.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llbrowsernotification.cpp b/indra/newview/llbrowsernotification.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llbuycurrencyhtml.cpp b/indra/newview/llbuycurrencyhtml.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llbuycurrencyhtml.h b/indra/newview/llbuycurrencyhtml.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llcallbacklist.cpp b/indra/newview/llcallbacklist.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llcallbacklist.h b/indra/newview/llcallbacklist.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llcallingcard.cpp b/indra/newview/llcallingcard.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llcallingcard.h b/indra/newview/llcallingcard.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llcapabilitylistener.cpp b/indra/newview/llcapabilitylistener.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llcapabilitylistener.h b/indra/newview/llcapabilitylistener.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llcapabilityprovider.h b/indra/newview/llcapabilityprovider.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llcaphttpsender.cpp b/indra/newview/llcaphttpsender.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llcaphttpsender.h b/indra/newview/llcaphttpsender.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llchannelmanager.cpp b/indra/newview/llchannelmanager.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llchannelmanager.h b/indra/newview/llchannelmanager.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llchatbar.cpp b/indra/newview/llchatbar.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llchatbar.h b/indra/newview/llchatbar.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llchathistory.h b/indra/newview/llchathistory.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llchatitemscontainerctrl.cpp b/indra/newview/llchatitemscontainerctrl.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llchatitemscontainerctrl.h b/indra/newview/llchatitemscontainerctrl.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llchatmsgbox.cpp b/indra/newview/llchatmsgbox.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llchatmsgbox.h b/indra/newview/llchatmsgbox.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llchiclet.cpp b/indra/newview/llchiclet.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llchiclet.h b/indra/newview/llchiclet.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llchicletbar.cpp b/indra/newview/llchicletbar.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llchicletbar.h b/indra/newview/llchicletbar.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llclassifiedinfo.cpp b/indra/newview/llclassifiedinfo.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llclassifiedinfo.h b/indra/newview/llclassifiedinfo.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llclassifiedstatsresponder.cpp b/indra/newview/llclassifiedstatsresponder.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llclassifiedstatsresponder.h b/indra/newview/llclassifiedstatsresponder.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llcofwearables.cpp b/indra/newview/llcofwearables.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llcofwearables.h b/indra/newview/llcofwearables.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llcolorswatch.cpp b/indra/newview/llcolorswatch.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llcolorswatch.h b/indra/newview/llcolorswatch.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llcommanddispatcherlistener.cpp b/indra/newview/llcommanddispatcherlistener.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llcommanddispatcherlistener.h b/indra/newview/llcommanddispatcherlistener.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llcommandhandler.h b/indra/newview/llcommandhandler.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llcommandlineparser.cpp b/indra/newview/llcommandlineparser.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llcommandlineparser.h b/indra/newview/llcommandlineparser.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llcommunicationchannel.cpp b/indra/newview/llcommunicationchannel.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llcommunicationchannel.h b/indra/newview/llcommunicationchannel.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llcompilequeue.cpp b/indra/newview/llcompilequeue.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llcompilequeue.h b/indra/newview/llcompilequeue.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llconfirmationmanager.cpp b/indra/newview/llconfirmationmanager.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llconfirmationmanager.h b/indra/newview/llconfirmationmanager.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llconversationlog.cpp b/indra/newview/llconversationlog.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llconversationlog.h b/indra/newview/llconversationlog.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llconversationloglist.cpp b/indra/newview/llconversationloglist.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llconversationloglist.h b/indra/newview/llconversationloglist.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llconversationloglistitem.cpp b/indra/newview/llconversationloglistitem.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llconversationloglistitem.h b/indra/newview/llconversationloglistitem.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llconversationmodel.cpp b/indra/newview/llconversationmodel.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llcurrencyuimanager.cpp b/indra/newview/llcurrencyuimanager.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llcurrencyuimanager.h b/indra/newview/llcurrencyuimanager.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llcylinder.cpp b/indra/newview/llcylinder.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llcylinder.h b/indra/newview/llcylinder.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lldateutil.cpp b/indra/newview/lldateutil.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lldateutil.h b/indra/newview/lldateutil.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lldaycyclemanager.cpp b/indra/newview/lldaycyclemanager.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lldaycyclemanager.h b/indra/newview/lldaycyclemanager.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lldebugmessagebox.cpp b/indra/newview/lldebugmessagebox.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lldebugmessagebox.h b/indra/newview/lldebugmessagebox.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lldebugview.cpp b/indra/newview/lldebugview.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lldebugview.h b/indra/newview/lldebugview.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lldeferredsounds.cpp b/indra/newview/lldeferredsounds.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lldeferredsounds.h b/indra/newview/lldeferredsounds.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lldelayedgestureerror.cpp b/indra/newview/lldelayedgestureerror.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lldelayedgestureerror.h b/indra/newview/lldelayedgestureerror.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lldirpicker.cpp b/indra/newview/lldirpicker.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lldirpicker.h b/indra/newview/lldirpicker.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lldndbutton.cpp b/indra/newview/lldndbutton.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lldndbutton.h b/indra/newview/lldndbutton.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lldonotdisturbnotificationstorage.cpp b/indra/newview/lldonotdisturbnotificationstorage.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lldonotdisturbnotificationstorage.h b/indra/newview/lldonotdisturbnotificationstorage.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lldrawable.cpp b/indra/newview/lldrawable.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lldrawable.h b/indra/newview/lldrawable.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lldrawpool.cpp b/indra/newview/lldrawpool.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lldrawpool.h b/indra/newview/lldrawpool.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lldrawpoolalpha.cpp b/indra/newview/lldrawpoolalpha.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lldrawpoolalpha.h b/indra/newview/lldrawpoolalpha.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lldrawpoolavatar.cpp b/indra/newview/lldrawpoolavatar.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lldrawpoolavatar.h b/indra/newview/lldrawpoolavatar.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lldrawpoolbump.cpp b/indra/newview/lldrawpoolbump.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lldrawpoolbump.h b/indra/newview/lldrawpoolbump.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lldrawpoolground.cpp b/indra/newview/lldrawpoolground.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lldrawpoolground.h b/indra/newview/lldrawpoolground.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lldrawpoolsimple.cpp b/indra/newview/lldrawpoolsimple.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lldrawpoolsimple.h b/indra/newview/lldrawpoolsimple.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lldrawpoolsky.cpp b/indra/newview/lldrawpoolsky.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lldrawpoolsky.h b/indra/newview/lldrawpoolsky.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lldrawpoolterrain.cpp b/indra/newview/lldrawpoolterrain.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lldrawpoolterrain.h b/indra/newview/lldrawpoolterrain.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lldrawpooltree.cpp b/indra/newview/lldrawpooltree.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lldrawpooltree.h b/indra/newview/lldrawpooltree.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lldrawpoolwater.cpp b/indra/newview/lldrawpoolwater.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lldrawpoolwater.h b/indra/newview/lldrawpoolwater.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lldrawpoolwlsky.cpp b/indra/newview/lldrawpoolwlsky.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lldrawpoolwlsky.h b/indra/newview/lldrawpoolwlsky.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lldriverparam.cpp b/indra/newview/lldriverparam.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lldriverparam.h b/indra/newview/lldriverparam.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lldynamictexture.cpp b/indra/newview/lldynamictexture.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lldynamictexture.h b/indra/newview/lldynamictexture.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llemote.cpp b/indra/newview/llemote.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llemote.h b/indra/newview/llemote.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llenvmanager.cpp b/indra/newview/llenvmanager.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llenvmanager.h b/indra/newview/llenvmanager.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llestateinfomodel.cpp b/indra/newview/llestateinfomodel.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llestateinfomodel.h b/indra/newview/llestateinfomodel.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lleventnotifier.cpp b/indra/newview/lleventnotifier.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lleventnotifier.h b/indra/newview/lleventnotifier.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lleventpoll.cpp b/indra/newview/lleventpoll.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lleventpoll.h b/indra/newview/lleventpoll.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llexpandabletextbox.cpp b/indra/newview/llexpandabletextbox.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llexpandabletextbox.h b/indra/newview/llexpandabletextbox.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llexternaleditor.cpp b/indra/newview/llexternaleditor.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llexternaleditor.h b/indra/newview/llexternaleditor.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llface.h b/indra/newview/llface.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llface.inl b/indra/newview/llface.inl
old mode 100644
new mode 100755
diff --git a/indra/newview/llfasttimerview.cpp b/indra/newview/llfasttimerview.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfasttimerview.h b/indra/newview/llfasttimerview.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfavoritesbar.cpp b/indra/newview/llfavoritesbar.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfavoritesbar.h b/indra/newview/llfavoritesbar.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfeaturemanager.cpp b/indra/newview/llfeaturemanager.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfeaturemanager.h b/indra/newview/llfeaturemanager.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfilepicker.cpp b/indra/newview/llfilepicker.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfilepicker.h b/indra/newview/llfilepicker.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfilteredwearablelist.cpp b/indra/newview/llfilteredwearablelist.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfilteredwearablelist.h b/indra/newview/llfilteredwearablelist.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfirstuse.cpp b/indra/newview/llfirstuse.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfirstuse.h b/indra/newview/llfirstuse.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llflexibleobject.cpp b/indra/newview/llflexibleobject.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llflexibleobject.h b/indra/newview/llflexibleobject.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterabout.cpp b/indra/newview/llfloaterabout.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterabout.h b/indra/newview/llfloaterabout.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterauction.cpp b/indra/newview/llfloaterauction.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterauction.h b/indra/newview/llfloaterauction.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterautoreplacesettings.cpp b/indra/newview/llfloaterautoreplacesettings.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterautoreplacesettings.h b/indra/newview/llfloaterautoreplacesettings.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloateravatar.cpp b/indra/newview/llfloateravatar.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloateravatar.h b/indra/newview/llfloateravatar.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloateravatarpicker.cpp b/indra/newview/llfloateravatarpicker.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloateravatarpicker.h b/indra/newview/llfloateravatarpicker.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloateravatartextures.cpp b/indra/newview/llfloateravatartextures.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloateravatartextures.h b/indra/newview/llfloateravatartextures.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterbeacons.cpp b/indra/newview/llfloaterbeacons.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterbeacons.h b/indra/newview/llfloaterbeacons.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterbuildoptions.cpp b/indra/newview/llfloaterbuildoptions.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterbuildoptions.h b/indra/newview/llfloaterbuildoptions.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterbulkpermission.cpp b/indra/newview/llfloaterbulkpermission.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterbulkpermission.h b/indra/newview/llfloaterbulkpermission.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterbump.cpp b/indra/newview/llfloaterbump.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterbump.h b/indra/newview/llfloaterbump.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterbuy.cpp b/indra/newview/llfloaterbuy.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterbuy.h b/indra/newview/llfloaterbuy.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterbuycontents.cpp b/indra/newview/llfloaterbuycontents.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterbuycontents.h b/indra/newview/llfloaterbuycontents.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterbuycurrency.cpp b/indra/newview/llfloaterbuycurrency.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterbuycurrency.h b/indra/newview/llfloaterbuycurrency.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterbuycurrencyhtml.cpp b/indra/newview/llfloaterbuycurrencyhtml.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterbuycurrencyhtml.h b/indra/newview/llfloaterbuycurrencyhtml.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterbuyland.cpp b/indra/newview/llfloaterbuyland.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterbuyland.h b/indra/newview/llfloaterbuyland.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterbvhpreview.cpp b/indra/newview/llfloaterbvhpreview.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterbvhpreview.h b/indra/newview/llfloaterbvhpreview.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloatercamera.cpp b/indra/newview/llfloatercamera.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloatercamera.h b/indra/newview/llfloatercamera.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterchatvoicevolume.cpp b/indra/newview/llfloaterchatvoicevolume.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterchatvoicevolume.h b/indra/newview/llfloaterchatvoicevolume.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloatercolorpicker.cpp b/indra/newview/llfloatercolorpicker.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloatercolorpicker.h b/indra/newview/llfloatercolorpicker.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterconversationlog.cpp b/indra/newview/llfloaterconversationlog.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterconversationlog.h b/indra/newview/llfloaterconversationlog.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterconversationpreview.cpp b/indra/newview/llfloaterconversationpreview.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterconversationpreview.h b/indra/newview/llfloaterconversationpreview.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterdeleteenvpreset.cpp b/indra/newview/llfloaterdeleteenvpreset.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterdeleteenvpreset.h b/indra/newview/llfloaterdeleteenvpreset.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterdestinations.cpp b/indra/newview/llfloaterdestinations.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterdestinations.h b/indra/newview/llfloaterdestinations.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterdisplayname.cpp b/indra/newview/llfloaterdisplayname.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterdisplayname.h b/indra/newview/llfloaterdisplayname.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloatereditdaycycle.cpp b/indra/newview/llfloatereditdaycycle.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloatereditdaycycle.h b/indra/newview/llfloatereditdaycycle.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloatereditsky.cpp b/indra/newview/llfloatereditsky.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloatereditsky.h b/indra/newview/llfloatereditsky.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloatereditwater.cpp b/indra/newview/llfloatereditwater.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloatereditwater.h b/indra/newview/llfloatereditwater.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterenvironmentsettings.cpp b/indra/newview/llfloaterenvironmentsettings.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterenvironmentsettings.h b/indra/newview/llfloaterenvironmentsettings.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterevent.cpp b/indra/newview/llfloaterevent.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterevent.h b/indra/newview/llfloaterevent.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterfonttest.cpp b/indra/newview/llfloaterfonttest.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterfonttest.h b/indra/newview/llfloaterfonttest.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloatergesture.cpp b/indra/newview/llfloatergesture.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloatergesture.h b/indra/newview/llfloatergesture.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloatergodtools.cpp b/indra/newview/llfloatergodtools.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloatergodtools.h b/indra/newview/llfloatergodtools.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloatergroupinvite.cpp b/indra/newview/llfloatergroupinvite.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloatergroupinvite.h b/indra/newview/llfloatergroupinvite.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloatergroups.cpp b/indra/newview/llfloatergroups.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloatergroups.h b/indra/newview/llfloatergroups.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterhandler.cpp b/indra/newview/llfloaterhandler.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterhandler.h b/indra/newview/llfloaterhandler.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterhardwaresettings.cpp b/indra/newview/llfloaterhardwaresettings.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterhardwaresettings.h b/indra/newview/llfloaterhardwaresettings.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterhelpbrowser.cpp b/indra/newview/llfloaterhelpbrowser.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterhelpbrowser.h b/indra/newview/llfloaterhelpbrowser.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterhud.cpp b/indra/newview/llfloaterhud.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterhud.h b/indra/newview/llfloaterhud.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterimagepreview.cpp b/indra/newview/llfloaterimagepreview.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterimagepreview.h b/indra/newview/llfloaterimagepreview.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterimcontainer.cpp b/indra/newview/llfloaterimcontainer.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterimcontainer.h b/indra/newview/llfloaterimcontainer.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterimnearbychat.cpp b/indra/newview/llfloaterimnearbychat.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterimnearbychat.h b/indra/newview/llfloaterimnearbychat.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterimnearbychathandler.cpp b/indra/newview/llfloaterimnearbychathandler.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterimnearbychathandler.h b/indra/newview/llfloaterimnearbychathandler.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterimnearbychatlistener.cpp b/indra/newview/llfloaterimnearbychatlistener.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterimnearbychatlistener.h b/indra/newview/llfloaterimnearbychatlistener.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterimsession.cpp b/indra/newview/llfloaterimsession.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterimsession.h b/indra/newview/llfloaterimsession.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterimsessiontab.cpp b/indra/newview/llfloaterimsessiontab.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterimsessiontab.h b/indra/newview/llfloaterimsessiontab.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterinspect.cpp b/indra/newview/llfloaterinspect.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterinspect.h b/indra/newview/llfloaterinspect.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterinventory.cpp b/indra/newview/llfloaterinventory.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterinventory.h b/indra/newview/llfloaterinventory.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterjoystick.cpp b/indra/newview/llfloaterjoystick.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterjoystick.h b/indra/newview/llfloaterjoystick.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterlagmeter.cpp b/indra/newview/llfloaterlagmeter.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterlagmeter.h b/indra/newview/llfloaterlagmeter.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterland.h b/indra/newview/llfloaterland.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterlandholdings.cpp b/indra/newview/llfloaterlandholdings.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterlandholdings.h b/indra/newview/llfloaterlandholdings.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloatermap.cpp b/indra/newview/llfloatermap.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloatermap.h b/indra/newview/llfloatermap.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloatermediasettings.cpp b/indra/newview/llfloatermediasettings.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloatermediasettings.h b/indra/newview/llfloatermediasettings.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloatermemleak.cpp b/indra/newview/llfloatermemleak.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloatermemleak.h b/indra/newview/llfloatermemleak.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloatermodelpreview.h b/indra/newview/llfloatermodelpreview.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloatermodeluploadbase.cpp b/indra/newview/llfloatermodeluploadbase.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloatermodeluploadbase.h b/indra/newview/llfloatermodeluploadbase.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaternamedesc.cpp b/indra/newview/llfloaternamedesc.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaternamedesc.h b/indra/newview/llfloaternamedesc.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaternotificationsconsole.cpp b/indra/newview/llfloaternotificationsconsole.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaternotificationsconsole.h b/indra/newview/llfloaternotificationsconsole.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterobjectweights.cpp b/indra/newview/llfloaterobjectweights.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterobjectweights.h b/indra/newview/llfloaterobjectweights.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloateropenobject.cpp b/indra/newview/llfloateropenobject.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloateropenobject.h b/indra/newview/llfloateropenobject.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloateroutbox.cpp b/indra/newview/llfloateroutbox.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloateroutbox.h b/indra/newview/llfloateroutbox.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterpathfindingcharacters.cpp b/indra/newview/llfloaterpathfindingcharacters.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterpathfindingcharacters.h b/indra/newview/llfloaterpathfindingcharacters.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterpathfindingconsole.cpp b/indra/newview/llfloaterpathfindingconsole.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterpathfindingconsole.h b/indra/newview/llfloaterpathfindingconsole.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterpathfindinglinksets.cpp b/indra/newview/llfloaterpathfindinglinksets.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterpathfindinglinksets.h b/indra/newview/llfloaterpathfindinglinksets.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterpathfindingobjects.cpp b/indra/newview/llfloaterpathfindingobjects.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterpathfindingobjects.h b/indra/newview/llfloaterpathfindingobjects.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterpay.cpp b/indra/newview/llfloaterpay.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterpay.h b/indra/newview/llfloaterpay.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterperms.cpp b/indra/newview/llfloaterperms.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterperms.h b/indra/newview/llfloaterperms.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterpostprocess.cpp b/indra/newview/llfloaterpostprocess.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterpostprocess.h b/indra/newview/llfloaterpostprocess.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterpreference.h b/indra/newview/llfloaterpreference.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterproperties.cpp b/indra/newview/llfloaterproperties.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterproperties.h b/indra/newview/llfloaterproperties.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterregiondebugconsole.cpp b/indra/newview/llfloaterregiondebugconsole.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterregiondebugconsole.h b/indra/newview/llfloaterregiondebugconsole.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterregioninfo.cpp b/indra/newview/llfloaterregioninfo.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterregioninfo.h b/indra/newview/llfloaterregioninfo.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterreporter.cpp b/indra/newview/llfloaterreporter.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterreporter.h b/indra/newview/llfloaterreporter.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterscriptdebug.cpp b/indra/newview/llfloaterscriptdebug.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterscriptdebug.h b/indra/newview/llfloaterscriptdebug.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterscriptlimits.cpp b/indra/newview/llfloaterscriptlimits.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterscriptlimits.h b/indra/newview/llfloaterscriptlimits.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloatersearch.cpp b/indra/newview/llfloatersearch.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloatersearch.h b/indra/newview/llfloatersearch.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloatersellland.cpp b/indra/newview/llfloatersellland.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloatersellland.h b/indra/newview/llfloatersellland.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloatersettingsdebug.cpp b/indra/newview/llfloatersettingsdebug.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloatersettingsdebug.h b/indra/newview/llfloatersettingsdebug.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloatersidepanelcontainer.cpp b/indra/newview/llfloatersidepanelcontainer.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloatersidepanelcontainer.h b/indra/newview/llfloatersidepanelcontainer.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloatersnapshot.cpp b/indra/newview/llfloatersnapshot.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloatersnapshot.h b/indra/newview/llfloatersnapshot.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloatersounddevices.cpp b/indra/newview/llfloatersounddevices.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloatersounddevices.h b/indra/newview/llfloatersounddevices.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterspellchecksettings.cpp b/indra/newview/llfloaterspellchecksettings.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterspellchecksettings.h b/indra/newview/llfloaterspellchecksettings.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloatertelehub.cpp b/indra/newview/llfloatertelehub.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloatertelehub.h b/indra/newview/llfloatertelehub.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloatertestinspectors.cpp b/indra/newview/llfloatertestinspectors.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloatertestinspectors.h b/indra/newview/llfloatertestinspectors.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloatertestlistview.cpp b/indra/newview/llfloatertestlistview.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloatertestlistview.h b/indra/newview/llfloatertestlistview.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloatertexturefetchdebugger.cpp b/indra/newview/llfloatertexturefetchdebugger.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloatertexturefetchdebugger.h b/indra/newview/llfloatertexturefetchdebugger.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloatertools.cpp b/indra/newview/llfloatertools.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloatertools.h b/indra/newview/llfloatertools.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloatertopobjects.cpp b/indra/newview/llfloatertopobjects.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloatertopobjects.h b/indra/newview/llfloatertopobjects.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloatertos.cpp b/indra/newview/llfloatertos.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloatertos.h b/indra/newview/llfloatertos.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloatertoybox.cpp b/indra/newview/llfloatertoybox.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloatertoybox.h b/indra/newview/llfloatertoybox.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloatertranslationsettings.cpp b/indra/newview/llfloatertranslationsettings.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloatertranslationsettings.h b/indra/newview/llfloatertranslationsettings.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloateruipreview.cpp b/indra/newview/llfloateruipreview.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloateruipreview.h b/indra/newview/llfloateruipreview.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterurlentry.cpp b/indra/newview/llfloaterurlentry.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterurlentry.h b/indra/newview/llfloaterurlentry.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloatervoiceeffect.cpp b/indra/newview/llfloatervoiceeffect.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloatervoiceeffect.h b/indra/newview/llfloatervoiceeffect.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloatervoicevolume.cpp b/indra/newview/llfloatervoicevolume.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloatervoicevolume.h b/indra/newview/llfloatervoicevolume.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterwebcontent.cpp b/indra/newview/llfloaterwebcontent.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterwebcontent.h b/indra/newview/llfloaterwebcontent.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterwebprofile.cpp b/indra/newview/llfloaterwebprofile.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterwebprofile.h b/indra/newview/llfloaterwebprofile.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterwhitelistentry.cpp b/indra/newview/llfloaterwhitelistentry.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterwhitelistentry.h b/indra/newview/llfloaterwhitelistentry.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterwindowsize.cpp b/indra/newview/llfloaterwindowsize.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterwindowsize.h b/indra/newview/llfloaterwindowsize.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfloaterworldmap.h b/indra/newview/llfloaterworldmap.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfolderviewmodelinventory.cpp b/indra/newview/llfolderviewmodelinventory.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfolderviewmodelinventory.h b/indra/newview/llfolderviewmodelinventory.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfollowcam.cpp b/indra/newview/llfollowcam.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfollowcam.h b/indra/newview/llfollowcam.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llfriendcard.cpp b/indra/newview/llfriendcard.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llfriendcard.h b/indra/newview/llfriendcard.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llgesturelistener.cpp b/indra/newview/llgesturelistener.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llgesturelistener.h b/indra/newview/llgesturelistener.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llgesturemgr.cpp b/indra/newview/llgesturemgr.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llgesturemgr.h b/indra/newview/llgesturemgr.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llgiveinventory.cpp b/indra/newview/llgiveinventory.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llgiveinventory.h b/indra/newview/llgiveinventory.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llglsandbox.cpp b/indra/newview/llglsandbox.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llgroupactions.cpp b/indra/newview/llgroupactions.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llgroupactions.h b/indra/newview/llgroupactions.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llgroupiconctrl.cpp b/indra/newview/llgroupiconctrl.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llgroupiconctrl.h b/indra/newview/llgroupiconctrl.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llgrouplist.cpp b/indra/newview/llgrouplist.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llgrouplist.h b/indra/newview/llgrouplist.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llgroupmgr.h b/indra/newview/llgroupmgr.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llhints.cpp b/indra/newview/llhints.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llhints.h b/indra/newview/llhints.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llhomelocationresponder.cpp b/indra/newview/llhomelocationresponder.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llhomelocationresponder.h b/indra/newview/llhomelocationresponder.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llhudeffect.cpp b/indra/newview/llhudeffect.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llhudeffect.h b/indra/newview/llhudeffect.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llhudeffectbeam.cpp b/indra/newview/llhudeffectbeam.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llhudeffectbeam.h b/indra/newview/llhudeffectbeam.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llhudeffectblob.cpp b/indra/newview/llhudeffectblob.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llhudeffectblob.h b/indra/newview/llhudeffectblob.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llhudeffectlookat.cpp b/indra/newview/llhudeffectlookat.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llhudeffectlookat.h b/indra/newview/llhudeffectlookat.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llhudeffectpointat.cpp b/indra/newview/llhudeffectpointat.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llhudeffectpointat.h b/indra/newview/llhudeffectpointat.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llhudeffecttrail.cpp b/indra/newview/llhudeffecttrail.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llhudeffecttrail.h b/indra/newview/llhudeffecttrail.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llhudicon.cpp b/indra/newview/llhudicon.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llhudicon.h b/indra/newview/llhudicon.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llhudmanager.cpp b/indra/newview/llhudmanager.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llhudmanager.h b/indra/newview/llhudmanager.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llhudnametag.cpp b/indra/newview/llhudnametag.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llhudnametag.h b/indra/newview/llhudnametag.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llhudobject.cpp b/indra/newview/llhudobject.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llhudobject.h b/indra/newview/llhudobject.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llhudrender.cpp b/indra/newview/llhudrender.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llhudrender.h b/indra/newview/llhudrender.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llhudtext.cpp b/indra/newview/llhudtext.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llhudtext.h b/indra/newview/llhudtext.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llhudview.cpp b/indra/newview/llhudview.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llhudview.h b/indra/newview/llhudview.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llimhandler.cpp b/indra/newview/llimhandler.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llimpanel.cpp b/indra/newview/llimpanel.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llimpanel.h b/indra/newview/llimpanel.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llimview.h b/indra/newview/llimview.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llinspect.cpp b/indra/newview/llinspect.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llinspect.h b/indra/newview/llinspect.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llinspectavatar.cpp b/indra/newview/llinspectavatar.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llinspectavatar.h b/indra/newview/llinspectavatar.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llinspectgroup.cpp b/indra/newview/llinspectgroup.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llinspectgroup.h b/indra/newview/llinspectgroup.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llinspectobject.cpp b/indra/newview/llinspectobject.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llinspectobject.h b/indra/newview/llinspectobject.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llinspectremoteobject.cpp b/indra/newview/llinspectremoteobject.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llinspectremoteobject.h b/indra/newview/llinspectremoteobject.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llinspecttoast.cpp b/indra/newview/llinspecttoast.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llinspecttoast.h b/indra/newview/llinspecttoast.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llinventoryactions.h b/indra/newview/llinventoryactions.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llinventorybridge.h b/indra/newview/llinventorybridge.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llinventoryclipboard.cpp b/indra/newview/llinventoryclipboard.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llinventoryclipboard.h b/indra/newview/llinventoryclipboard.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llinventoryfilter.cpp b/indra/newview/llinventoryfilter.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llinventoryfilter.h b/indra/newview/llinventoryfilter.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llinventoryfunctions.h b/indra/newview/llinventoryfunctions.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llinventoryicon.cpp b/indra/newview/llinventoryicon.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llinventoryicon.h b/indra/newview/llinventoryicon.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llinventoryitemslist.cpp b/indra/newview/llinventoryitemslist.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llinventoryitemslist.h b/indra/newview/llinventoryitemslist.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llinventorylistitem.cpp b/indra/newview/llinventorylistitem.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llinventorylistitem.h b/indra/newview/llinventorylistitem.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llinventorymodel.h b/indra/newview/llinventorymodel.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llinventorymodelbackgroundfetch.cpp b/indra/newview/llinventorymodelbackgroundfetch.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llinventorymodelbackgroundfetch.h b/indra/newview/llinventorymodelbackgroundfetch.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llinventoryobserver.cpp b/indra/newview/llinventoryobserver.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llinventoryobserver.h b/indra/newview/llinventoryobserver.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llinventorypanel.h b/indra/newview/llinventorypanel.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lljoystickbutton.cpp b/indra/newview/lljoystickbutton.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lljoystickbutton.h b/indra/newview/lljoystickbutton.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lllandmarkactions.cpp b/indra/newview/lllandmarkactions.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lllandmarkactions.h b/indra/newview/lllandmarkactions.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lllandmarklist.cpp b/indra/newview/lllandmarklist.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lllandmarklist.h b/indra/newview/lllandmarklist.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lllightconstants.h b/indra/newview/lllightconstants.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lllistbrowser.cpp b/indra/newview/lllistbrowser.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lllistbrowser.h b/indra/newview/lllistbrowser.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lllistcontextmenu.cpp b/indra/newview/lllistcontextmenu.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lllistcontextmenu.h b/indra/newview/lllistcontextmenu.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lllistview.cpp b/indra/newview/lllistview.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lllistview.h b/indra/newview/lllistview.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lllocalbitmaps.cpp b/indra/newview/lllocalbitmaps.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lllocalbitmaps.h b/indra/newview/lllocalbitmaps.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lllocaltextureobject.cpp b/indra/newview/lllocaltextureobject.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lllocaltextureobject.h b/indra/newview/lllocaltextureobject.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lllocationhistory.cpp b/indra/newview/lllocationhistory.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lllocationhistory.h b/indra/newview/lllocationhistory.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lllocationinputctrl.cpp b/indra/newview/lllocationinputctrl.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lllocationinputctrl.h b/indra/newview/lllocationinputctrl.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lllogchat.cpp b/indra/newview/lllogchat.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lllogchat.h b/indra/newview/lllogchat.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llloginhandler.cpp b/indra/newview/llloginhandler.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llloginhandler.h b/indra/newview/llloginhandler.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lllogininstance.cpp b/indra/newview/lllogininstance.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lllogininstance.h b/indra/newview/lllogininstance.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lllookshistorypanel.h b/indra/newview/lllookshistorypanel.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llmachineid.cpp b/indra/newview/llmachineid.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llmachineid.h b/indra/newview/llmachineid.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llmainlooprepeater.cpp b/indra/newview/llmainlooprepeater.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llmainlooprepeater.h b/indra/newview/llmainlooprepeater.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llmanip.cpp b/indra/newview/llmanip.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llmanip.h b/indra/newview/llmanip.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llmaniprotate.cpp b/indra/newview/llmaniprotate.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llmaniprotate.h b/indra/newview/llmaniprotate.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llmanipscale.cpp b/indra/newview/llmanipscale.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llmanipscale.h b/indra/newview/llmanipscale.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llmaniptranslate.cpp b/indra/newview/llmaniptranslate.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llmaniptranslate.h b/indra/newview/llmaniptranslate.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llmarketplacefunctions.cpp b/indra/newview/llmarketplacefunctions.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llmarketplacefunctions.h b/indra/newview/llmarketplacefunctions.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llmarketplacenotifications.cpp b/indra/newview/llmarketplacenotifications.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llmarketplacenotifications.h b/indra/newview/llmarketplacenotifications.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llmediactrl.cpp b/indra/newview/llmediactrl.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llmediactrl.h b/indra/newview/llmediactrl.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llmediadataclient.cpp b/indra/newview/llmediadataclient.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llmediadataclient.h b/indra/newview/llmediadataclient.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llmenuoptionpathfindingrebakenavmesh.cpp b/indra/newview/llmenuoptionpathfindingrebakenavmesh.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llmenuoptionpathfindingrebakenavmesh.h b/indra/newview/llmenuoptionpathfindingrebakenavmesh.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llmeshrepository.h b/indra/newview/llmeshrepository.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llmimetypes.cpp b/indra/newview/llmimetypes.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llmimetypes.h b/indra/newview/llmimetypes.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llmorphview.cpp b/indra/newview/llmorphview.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llmorphview.h b/indra/newview/llmorphview.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llmoveview.cpp b/indra/newview/llmoveview.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llmoveview.h b/indra/newview/llmoveview.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llmutelist.cpp b/indra/newview/llmutelist.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llmutelist.h b/indra/newview/llmutelist.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llnamebox.cpp b/indra/newview/llnamebox.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llnamebox.h b/indra/newview/llnamebox.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llnameeditor.cpp b/indra/newview/llnameeditor.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llnameeditor.h b/indra/newview/llnameeditor.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llnamelistctrl.cpp b/indra/newview/llnamelistctrl.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llnamelistctrl.h b/indra/newview/llnamelistctrl.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llnavigationbar.cpp b/indra/newview/llnavigationbar.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llnavigationbar.h b/indra/newview/llnavigationbar.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llnetmap.cpp b/indra/newview/llnetmap.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llnetmap.h b/indra/newview/llnetmap.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llnotificationalerthandler.cpp b/indra/newview/llnotificationalerthandler.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llnotificationgrouphandler.cpp b/indra/newview/llnotificationgrouphandler.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llnotificationhandler.h b/indra/newview/llnotificationhandler.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llnotificationhandlerutil.cpp b/indra/newview/llnotificationhandlerutil.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llnotificationhinthandler.cpp b/indra/newview/llnotificationhinthandler.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llnotificationmanager.cpp b/indra/newview/llnotificationmanager.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llnotificationmanager.h b/indra/newview/llnotificationmanager.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llnotificationofferhandler.cpp b/indra/newview/llnotificationofferhandler.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llnotificationscripthandler.cpp b/indra/newview/llnotificationscripthandler.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llnotificationstorage.cpp b/indra/newview/llnotificationstorage.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llnotificationstorage.h b/indra/newview/llnotificationstorage.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llnotificationtiphandler.cpp b/indra/newview/llnotificationtiphandler.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lloutfitobserver.cpp b/indra/newview/lloutfitobserver.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lloutfitobserver.h b/indra/newview/lloutfitobserver.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lloutfitslist.cpp b/indra/newview/lloutfitslist.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lloutfitslist.h b/indra/newview/lloutfitslist.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lloutputmonitorctrl.cpp b/indra/newview/lloutputmonitorctrl.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lloutputmonitorctrl.h b/indra/newview/lloutputmonitorctrl.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelappearancetab.cpp b/indra/newview/llpanelappearancetab.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelappearancetab.h b/indra/newview/llpanelappearancetab.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelavatar.cpp b/indra/newview/llpanelavatar.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelavatar.h b/indra/newview/llpanelavatar.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelavatartag.cpp b/indra/newview/llpanelavatartag.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelavatartag.h b/indra/newview/llpanelavatartag.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelblockedlist.cpp b/indra/newview/llpanelblockedlist.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelblockedlist.h b/indra/newview/llpanelblockedlist.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelclassified.cpp b/indra/newview/llpanelclassified.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelclassified.h b/indra/newview/llpanelclassified.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelcontents.cpp b/indra/newview/llpanelcontents.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelcontents.h b/indra/newview/llpanelcontents.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpaneleditwearable.cpp b/indra/newview/llpaneleditwearable.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpaneleditwearable.h b/indra/newview/llpaneleditwearable.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelface.cpp b/indra/newview/llpanelface.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelface.h b/indra/newview/llpanelface.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelgenerictip.cpp b/indra/newview/llpanelgenerictip.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelgenerictip.h b/indra/newview/llpanelgenerictip.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelgroup.cpp b/indra/newview/llpanelgroup.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelgroup.h b/indra/newview/llpanelgroup.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelgroupgeneral.cpp b/indra/newview/llpanelgroupgeneral.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelgroupgeneral.h b/indra/newview/llpanelgroupgeneral.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelgroupinvite.cpp b/indra/newview/llpanelgroupinvite.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelgroupinvite.h b/indra/newview/llpanelgroupinvite.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelgrouplandmoney.cpp b/indra/newview/llpanelgrouplandmoney.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelgrouplandmoney.h b/indra/newview/llpanelgrouplandmoney.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelgroupnotices.cpp b/indra/newview/llpanelgroupnotices.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelgroupnotices.h b/indra/newview/llpanelgroupnotices.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelgrouproles.cpp b/indra/newview/llpanelgrouproles.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelgrouproles.h b/indra/newview/llpanelgrouproles.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelhome.cpp b/indra/newview/llpanelhome.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelhome.h b/indra/newview/llpanelhome.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelimcontrolpanel.cpp b/indra/newview/llpanelimcontrolpanel.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelimcontrolpanel.h b/indra/newview/llpanelimcontrolpanel.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelland.cpp b/indra/newview/llpanelland.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelland.h b/indra/newview/llpanelland.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanellandaudio.cpp b/indra/newview/llpanellandaudio.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanellandaudio.h b/indra/newview/llpanellandaudio.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanellandmarkinfo.cpp b/indra/newview/llpanellandmarkinfo.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanellandmarkinfo.h b/indra/newview/llpanellandmarkinfo.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanellandmarks.cpp b/indra/newview/llpanellandmarks.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanellandmarks.h b/indra/newview/llpanellandmarks.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanellandmedia.cpp b/indra/newview/llpanellandmedia.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanellandmedia.h b/indra/newview/llpanellandmedia.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanellogin.cpp b/indra/newview/llpanellogin.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanellogin.h b/indra/newview/llpanellogin.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelloginlistener.cpp b/indra/newview/llpanelloginlistener.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelloginlistener.h b/indra/newview/llpanelloginlistener.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelmaininventory.cpp b/indra/newview/llpanelmaininventory.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelmaininventory.h b/indra/newview/llpanelmaininventory.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelmarketplaceinbox.cpp b/indra/newview/llpanelmarketplaceinbox.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelmarketplaceinbox.h b/indra/newview/llpanelmarketplaceinbox.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelmarketplaceinboxinventory.cpp b/indra/newview/llpanelmarketplaceinboxinventory.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelmarketplaceinboxinventory.h b/indra/newview/llpanelmarketplaceinboxinventory.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelme.cpp b/indra/newview/llpanelme.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelme.h b/indra/newview/llpanelme.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelmediasettingsgeneral.cpp b/indra/newview/llpanelmediasettingsgeneral.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelmediasettingsgeneral.h b/indra/newview/llpanelmediasettingsgeneral.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelmediasettingspermissions.cpp b/indra/newview/llpanelmediasettingspermissions.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelmediasettingspermissions.h b/indra/newview/llpanelmediasettingspermissions.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelmediasettingssecurity.cpp b/indra/newview/llpanelmediasettingssecurity.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelmediasettingssecurity.h b/indra/newview/llpanelmediasettingssecurity.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelnearbymedia.cpp b/indra/newview/llpanelnearbymedia.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelnearbymedia.h b/indra/newview/llpanelnearbymedia.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelobject.cpp b/indra/newview/llpanelobject.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelobject.h b/indra/newview/llpanelobject.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelobjectinventory.cpp b/indra/newview/llpanelobjectinventory.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelobjectinventory.h b/indra/newview/llpanelobjectinventory.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelonlinestatus.cpp b/indra/newview/llpanelonlinestatus.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelonlinestatus.h b/indra/newview/llpanelonlinestatus.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpaneloutfitedit.cpp b/indra/newview/llpaneloutfitedit.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpaneloutfitedit.h b/indra/newview/llpaneloutfitedit.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpaneloutfitsinventory.cpp b/indra/newview/llpaneloutfitsinventory.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpaneloutfitsinventory.h b/indra/newview/llpaneloutfitsinventory.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelpeople.cpp b/indra/newview/llpanelpeople.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelpeople.h b/indra/newview/llpanelpeople.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelpeoplemenus.cpp b/indra/newview/llpanelpeoplemenus.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelpeoplemenus.h b/indra/newview/llpanelpeoplemenus.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelpermissions.cpp b/indra/newview/llpanelpermissions.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelpermissions.h b/indra/newview/llpanelpermissions.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelpick.cpp b/indra/newview/llpanelpick.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelpick.h b/indra/newview/llpanelpick.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelplaceinfo.cpp b/indra/newview/llpanelplaceinfo.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelplaceinfo.h b/indra/newview/llpanelplaceinfo.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelplaceprofile.cpp b/indra/newview/llpanelplaceprofile.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelplaceprofile.h b/indra/newview/llpanelplaceprofile.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelplaces.cpp b/indra/newview/llpanelplaces.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelplaces.h b/indra/newview/llpanelplaces.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelplacestab.cpp b/indra/newview/llpanelplacestab.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelplacestab.h b/indra/newview/llpanelplacestab.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelprimmediacontrols.cpp b/indra/newview/llpanelprimmediacontrols.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelprimmediacontrols.h b/indra/newview/llpanelprimmediacontrols.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelsnapshot.cpp b/indra/newview/llpanelsnapshot.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelsnapshot.h b/indra/newview/llpanelsnapshot.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelsnapshotinventory.cpp b/indra/newview/llpanelsnapshotinventory.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelsnapshotlocal.cpp b/indra/newview/llpanelsnapshotlocal.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelsnapshotoptions.cpp b/indra/newview/llpanelsnapshotoptions.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelsnapshotpostcard.cpp b/indra/newview/llpanelsnapshotpostcard.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelsnapshotprofile.cpp b/indra/newview/llpanelsnapshotprofile.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelteleporthistory.cpp b/indra/newview/llpanelteleporthistory.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelteleporthistory.h b/indra/newview/llpanelteleporthistory.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpaneltiptoast.cpp b/indra/newview/llpaneltiptoast.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpaneltiptoast.h b/indra/newview/llpaneltiptoast.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpaneltopinfobar.cpp b/indra/newview/llpaneltopinfobar.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpaneltopinfobar.h b/indra/newview/llpaneltopinfobar.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelvoicedevicesettings.cpp b/indra/newview/llpanelvoicedevicesettings.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelvoicedevicesettings.h b/indra/newview/llpanelvoicedevicesettings.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelvoiceeffect.cpp b/indra/newview/llpanelvoiceeffect.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelvoiceeffect.h b/indra/newview/llpanelvoiceeffect.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelvolume.cpp b/indra/newview/llpanelvolume.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelvolume.h b/indra/newview/llpanelvolume.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelvolumepulldown.cpp b/indra/newview/llpanelvolumepulldown.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelvolumepulldown.h b/indra/newview/llpanelvolumepulldown.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelwearing.cpp b/indra/newview/llpanelwearing.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpanelwearing.h b/indra/newview/llpanelwearing.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llparcelselection.cpp b/indra/newview/llparcelselection.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llparcelselection.h b/indra/newview/llparcelselection.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llparticipantlist.cpp b/indra/newview/llparticipantlist.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llparticipantlist.h b/indra/newview/llparticipantlist.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpatchvertexarray.cpp b/indra/newview/llpatchvertexarray.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpatchvertexarray.h b/indra/newview/llpatchvertexarray.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpathfindingcharacter.cpp b/indra/newview/llpathfindingcharacter.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpathfindingcharacter.h b/indra/newview/llpathfindingcharacter.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpathfindingcharacterlist.cpp b/indra/newview/llpathfindingcharacterlist.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpathfindingcharacterlist.h b/indra/newview/llpathfindingcharacterlist.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpathfindinglinkset.cpp b/indra/newview/llpathfindinglinkset.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpathfindinglinkset.h b/indra/newview/llpathfindinglinkset.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpathfindinglinksetlist.cpp b/indra/newview/llpathfindinglinksetlist.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpathfindinglinksetlist.h b/indra/newview/llpathfindinglinksetlist.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpathfindingmanager.cpp b/indra/newview/llpathfindingmanager.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpathfindingmanager.h b/indra/newview/llpathfindingmanager.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpathfindingnavmesh.cpp b/indra/newview/llpathfindingnavmesh.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpathfindingnavmesh.h b/indra/newview/llpathfindingnavmesh.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpathfindingnavmeshstatus.cpp b/indra/newview/llpathfindingnavmeshstatus.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpathfindingnavmeshstatus.h b/indra/newview/llpathfindingnavmeshstatus.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpathfindingnavmeshzone.cpp b/indra/newview/llpathfindingnavmeshzone.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpathfindingnavmeshzone.h b/indra/newview/llpathfindingnavmeshzone.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpathfindingobject.cpp b/indra/newview/llpathfindingobject.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpathfindingobject.h b/indra/newview/llpathfindingobject.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpathfindingobjectlist.cpp b/indra/newview/llpathfindingobjectlist.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpathfindingobjectlist.h b/indra/newview/llpathfindingobjectlist.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpathfindingpathtool.cpp b/indra/newview/llpathfindingpathtool.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpathfindingpathtool.h b/indra/newview/llpathfindingpathtool.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpersistentnotificationstorage.cpp b/indra/newview/llpersistentnotificationstorage.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpersistentnotificationstorage.h b/indra/newview/llpersistentnotificationstorage.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llphysicsmotion.cpp b/indra/newview/llphysicsmotion.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llphysicsmotion.h b/indra/newview/llphysicsmotion.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llphysicsshapebuilderutil.cpp b/indra/newview/llphysicsshapebuilderutil.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llphysicsshapebuilderutil.h b/indra/newview/llphysicsshapebuilderutil.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llplacesfolderview.cpp b/indra/newview/llplacesfolderview.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llplacesfolderview.h b/indra/newview/llplacesfolderview.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llplacesinventorybridge.cpp b/indra/newview/llplacesinventorybridge.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llplacesinventorybridge.h b/indra/newview/llplacesinventorybridge.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llplacesinventorypanel.cpp b/indra/newview/llplacesinventorypanel.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llplacesinventorypanel.h b/indra/newview/llplacesinventorypanel.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpolymesh.cpp b/indra/newview/llpolymesh.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpolymesh.h b/indra/newview/llpolymesh.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpolymorph.cpp b/indra/newview/llpolymorph.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpolymorph.h b/indra/newview/llpolymorph.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpopupview.cpp b/indra/newview/llpopupview.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpopupview.h b/indra/newview/llpopupview.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpostcard.cpp b/indra/newview/llpostcard.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpostcard.h b/indra/newview/llpostcard.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpreview.cpp b/indra/newview/llpreview.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpreview.h b/indra/newview/llpreview.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpreviewanim.cpp b/indra/newview/llpreviewanim.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpreviewanim.h b/indra/newview/llpreviewanim.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpreviewgesture.cpp b/indra/newview/llpreviewgesture.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpreviewgesture.h b/indra/newview/llpreviewgesture.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpreviewnotecard.cpp b/indra/newview/llpreviewnotecard.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpreviewnotecard.h b/indra/newview/llpreviewnotecard.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpreviewscript.cpp b/indra/newview/llpreviewscript.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpreviewscript.h b/indra/newview/llpreviewscript.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpreviewsound.cpp b/indra/newview/llpreviewsound.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpreviewsound.h b/indra/newview/llpreviewsound.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llpreviewtexture.cpp b/indra/newview/llpreviewtexture.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llpreviewtexture.h b/indra/newview/llpreviewtexture.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llproductinforequest.cpp b/indra/newview/llproductinforequest.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llproductinforequest.h b/indra/newview/llproductinforequest.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llprogressview.cpp b/indra/newview/llprogressview.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llprogressview.h b/indra/newview/llprogressview.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llrecentpeople.cpp b/indra/newview/llrecentpeople.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llrecentpeople.h b/indra/newview/llrecentpeople.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llregioninfomodel.cpp b/indra/newview/llregioninfomodel.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llregioninfomodel.h b/indra/newview/llregioninfomodel.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llregionposition.cpp b/indra/newview/llregionposition.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llregionposition.h b/indra/newview/llregionposition.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llremoteparcelrequest.cpp b/indra/newview/llremoteparcelrequest.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llremoteparcelrequest.h b/indra/newview/llremoteparcelrequest.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llresourcedata.h b/indra/newview/llresourcedata.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llrootview.h b/indra/newview/llrootview.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llsavedsettingsglue.cpp b/indra/newview/llsavedsettingsglue.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llsavedsettingsglue.h b/indra/newview/llsavedsettingsglue.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llsaveoutfitcombobtn.cpp b/indra/newview/llsaveoutfitcombobtn.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llsaveoutfitcombobtn.h b/indra/newview/llsaveoutfitcombobtn.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llsceneview.cpp b/indra/newview/llsceneview.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llsceneview.h b/indra/newview/llsceneview.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llscreenchannel.cpp b/indra/newview/llscreenchannel.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llscreenchannel.h b/indra/newview/llscreenchannel.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llscriptfloater.cpp b/indra/newview/llscriptfloater.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llscriptfloater.h b/indra/newview/llscriptfloater.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llscrollingpanelparam.cpp b/indra/newview/llscrollingpanelparam.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llscrollingpanelparam.h b/indra/newview/llscrollingpanelparam.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llscrollingpanelparambase.cpp b/indra/newview/llscrollingpanelparambase.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llscrollingpanelparambase.h b/indra/newview/llscrollingpanelparambase.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llsearchcombobox.cpp b/indra/newview/llsearchcombobox.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llsearchcombobox.h b/indra/newview/llsearchcombobox.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llsearchhistory.cpp b/indra/newview/llsearchhistory.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llsearchhistory.h b/indra/newview/llsearchhistory.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llsecapi.cpp b/indra/newview/llsecapi.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llsecapi.h b/indra/newview/llsecapi.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llsechandler_basic.cpp b/indra/newview/llsechandler_basic.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llsechandler_basic.h b/indra/newview/llsechandler_basic.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llselectmgr.h b/indra/newview/llselectmgr.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llshareavatarhandler.cpp b/indra/newview/llshareavatarhandler.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llsidepanelappearance.cpp b/indra/newview/llsidepanelappearance.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llsidepanelappearance.h b/indra/newview/llsidepanelappearance.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llsidepanelinventory.cpp b/indra/newview/llsidepanelinventory.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llsidepanelinventory.h b/indra/newview/llsidepanelinventory.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llsidepanelinventorysubpanel.cpp b/indra/newview/llsidepanelinventorysubpanel.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llsidepanelinventorysubpanel.h b/indra/newview/llsidepanelinventorysubpanel.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llsidepaneliteminfo.cpp b/indra/newview/llsidepaneliteminfo.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llsidepaneliteminfo.h b/indra/newview/llsidepaneliteminfo.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llsidepaneltaskinfo.cpp b/indra/newview/llsidepaneltaskinfo.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llsidepaneltaskinfo.h b/indra/newview/llsidepaneltaskinfo.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llsidetraypanelcontainer.cpp b/indra/newview/llsidetraypanelcontainer.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llsidetraypanelcontainer.h b/indra/newview/llsidetraypanelcontainer.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llsimplestat.h b/indra/newview/llsimplestat.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llsky.cpp b/indra/newview/llsky.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llsky.h b/indra/newview/llsky.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llslurl.cpp b/indra/newview/llslurl.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llslurl.h b/indra/newview/llslurl.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llspatialpartition.cpp b/indra/newview/llspatialpartition.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llspatialpartition.h b/indra/newview/llspatialpartition.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llspeakers.cpp b/indra/newview/llspeakers.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llspeakers.h b/indra/newview/llspeakers.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llspeakingindicatormanager.cpp b/indra/newview/llspeakingindicatormanager.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llspeakingindicatormanager.h b/indra/newview/llspeakingindicatormanager.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llsplitbutton.cpp b/indra/newview/llsplitbutton.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llsplitbutton.h b/indra/newview/llsplitbutton.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llsprite.cpp b/indra/newview/llsprite.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llsprite.h b/indra/newview/llsprite.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llsrv.cpp b/indra/newview/llsrv.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llsrv.h b/indra/newview/llsrv.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llstartup.h b/indra/newview/llstartup.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llstartuplistener.cpp b/indra/newview/llstartuplistener.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llstartuplistener.h b/indra/newview/llstartuplistener.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llstatusbar.cpp b/indra/newview/llstatusbar.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llstatusbar.h b/indra/newview/llstatusbar.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llstylemap.cpp b/indra/newview/llstylemap.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llstylemap.h b/indra/newview/llstylemap.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llsurface.cpp b/indra/newview/llsurface.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llsurface.h b/indra/newview/llsurface.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llsurfacepatch.cpp b/indra/newview/llsurfacepatch.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llsurfacepatch.h b/indra/newview/llsurfacepatch.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llsyswellitem.cpp b/indra/newview/llsyswellitem.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llsyswellitem.h b/indra/newview/llsyswellitem.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llsyswellwindow.cpp b/indra/newview/llsyswellwindow.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llsyswellwindow.h b/indra/newview/llsyswellwindow.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lltable.h b/indra/newview/lltable.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llteleporthistory.cpp b/indra/newview/llteleporthistory.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llteleporthistory.h b/indra/newview/llteleporthistory.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llteleporthistorystorage.cpp b/indra/newview/llteleporthistorystorage.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llteleporthistorystorage.h b/indra/newview/llteleporthistorystorage.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lltexglobalcolor.cpp b/indra/newview/lltexglobalcolor.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lltexglobalcolor.h b/indra/newview/lltexglobalcolor.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lltexlayer.cpp b/indra/newview/lltexlayer.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lltexlayer.h b/indra/newview/lltexlayer.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lltexlayerparams.cpp b/indra/newview/lltexlayerparams.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lltexlayerparams.h b/indra/newview/lltexlayerparams.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lltextureatlas.cpp b/indra/newview/lltextureatlas.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lltextureatlas.h b/indra/newview/lltextureatlas.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lltextureatlasmanager.cpp b/indra/newview/lltextureatlasmanager.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lltextureatlasmanager.h b/indra/newview/lltextureatlasmanager.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lltexturecache.cpp b/indra/newview/lltexturecache.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lltexturecache.h b/indra/newview/lltexturecache.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lltexturectrl.cpp b/indra/newview/lltexturectrl.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lltexturectrl.h b/indra/newview/lltexturectrl.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lltexturefetch.h b/indra/newview/lltexturefetch.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lltextureinfo.cpp b/indra/newview/lltextureinfo.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lltextureinfo.h b/indra/newview/lltextureinfo.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lltextureinfodetails.cpp b/indra/newview/lltextureinfodetails.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lltextureinfodetails.h b/indra/newview/lltextureinfodetails.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lltexturestats.cpp b/indra/newview/lltexturestats.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lltexturestats.h b/indra/newview/lltexturestats.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lltexturestatsuploader.cpp b/indra/newview/lltexturestatsuploader.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lltexturestatsuploader.h b/indra/newview/lltexturestatsuploader.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lltextureview.cpp b/indra/newview/lltextureview.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lltextureview.h b/indra/newview/lltextureview.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lltoast.cpp b/indra/newview/lltoast.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lltoast.h b/indra/newview/lltoast.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lltoastalertpanel.cpp b/indra/newview/lltoastalertpanel.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lltoastalertpanel.h b/indra/newview/lltoastalertpanel.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lltoastgroupnotifypanel.cpp b/indra/newview/lltoastgroupnotifypanel.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lltoastgroupnotifypanel.h b/indra/newview/lltoastgroupnotifypanel.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lltoastimpanel.cpp b/indra/newview/lltoastimpanel.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lltoastimpanel.h b/indra/newview/lltoastimpanel.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lltoastnotifypanel.cpp b/indra/newview/lltoastnotifypanel.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lltoastnotifypanel.h b/indra/newview/lltoastnotifypanel.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lltoastpanel.cpp b/indra/newview/lltoastpanel.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lltoastpanel.h b/indra/newview/lltoastpanel.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lltoastscriptquestion.cpp b/indra/newview/lltoastscriptquestion.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lltoastscriptquestion.h b/indra/newview/lltoastscriptquestion.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lltoastscripttextbox.cpp b/indra/newview/lltoastscripttextbox.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lltoastscripttextbox.h b/indra/newview/lltoastscripttextbox.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lltool.cpp b/indra/newview/lltool.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lltool.h b/indra/newview/lltool.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lltoolbarview.cpp b/indra/newview/lltoolbarview.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lltoolbarview.h b/indra/newview/lltoolbarview.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lltoolbrush.cpp b/indra/newview/lltoolbrush.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lltoolbrush.h b/indra/newview/lltoolbrush.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lltoolcomp.cpp b/indra/newview/lltoolcomp.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lltoolcomp.h b/indra/newview/lltoolcomp.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lltooldraganddrop.cpp b/indra/newview/lltooldraganddrop.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lltooldraganddrop.h b/indra/newview/lltooldraganddrop.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lltoolface.cpp b/indra/newview/lltoolface.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lltoolface.h b/indra/newview/lltoolface.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lltoolfocus.cpp b/indra/newview/lltoolfocus.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lltoolfocus.h b/indra/newview/lltoolfocus.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lltoolgrab.cpp b/indra/newview/lltoolgrab.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lltoolgrab.h b/indra/newview/lltoolgrab.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lltoolgun.cpp b/indra/newview/lltoolgun.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lltoolgun.h b/indra/newview/lltoolgun.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lltoolindividual.cpp b/indra/newview/lltoolindividual.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lltoolindividual.h b/indra/newview/lltoolindividual.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lltoolmgr.cpp b/indra/newview/lltoolmgr.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lltoolmgr.h b/indra/newview/lltoolmgr.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lltoolmorph.cpp b/indra/newview/lltoolmorph.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lltoolmorph.h b/indra/newview/lltoolmorph.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lltoolobjpicker.cpp b/indra/newview/lltoolobjpicker.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lltoolobjpicker.h b/indra/newview/lltoolobjpicker.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lltoolpie.h b/indra/newview/lltoolpie.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lltoolpipette.cpp b/indra/newview/lltoolpipette.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lltoolpipette.h b/indra/newview/lltoolpipette.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lltoolplacer.cpp b/indra/newview/lltoolplacer.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lltoolplacer.h b/indra/newview/lltoolplacer.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lltoolselect.cpp b/indra/newview/lltoolselect.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lltoolselect.h b/indra/newview/lltoolselect.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lltoolselectland.cpp b/indra/newview/lltoolselectland.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lltoolselectland.h b/indra/newview/lltoolselectland.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lltoolselectrect.cpp b/indra/newview/lltoolselectrect.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lltoolselectrect.h b/indra/newview/lltoolselectrect.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lltoolview.cpp b/indra/newview/lltoolview.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lltoolview.h b/indra/newview/lltoolview.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lltracker.cpp b/indra/newview/lltracker.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lltracker.h b/indra/newview/lltracker.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lltransientdockablefloater.cpp b/indra/newview/lltransientdockablefloater.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lltransientdockablefloater.h b/indra/newview/lltransientdockablefloater.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lltransientfloatermgr.cpp b/indra/newview/lltransientfloatermgr.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lltransientfloatermgr.h b/indra/newview/lltransientfloatermgr.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lluiconstants.h b/indra/newview/lluiconstants.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lluilistener.cpp b/indra/newview/lluilistener.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lluilistener.h b/indra/newview/lluilistener.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lluploaddialog.cpp b/indra/newview/lluploaddialog.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lluploaddialog.h b/indra/newview/lluploaddialog.h
old mode 100644
new mode 100755
diff --git a/indra/newview/lluploadfloaterobservers.cpp b/indra/newview/lluploadfloaterobservers.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/lluploadfloaterobservers.h b/indra/newview/lluploadfloaterobservers.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llurl.cpp b/indra/newview/llurl.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llurl.h b/indra/newview/llurl.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llurldispatcher.cpp b/indra/newview/llurldispatcher.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llurldispatcher.h b/indra/newview/llurldispatcher.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llurldispatcherlistener.cpp b/indra/newview/llurldispatcherlistener.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llurldispatcherlistener.h b/indra/newview/llurldispatcherlistener.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llurlhistory.cpp b/indra/newview/llurlhistory.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llurlhistory.h b/indra/newview/llurlhistory.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llurllineeditorctrl.cpp b/indra/newview/llurllineeditorctrl.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llurllineeditorctrl.h b/indra/newview/llurllineeditorctrl.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llurlwhitelist.cpp b/indra/newview/llurlwhitelist.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llurlwhitelist.h b/indra/newview/llurlwhitelist.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llvectorperfoptions.cpp b/indra/newview/llvectorperfoptions.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llvectorperfoptions.h b/indra/newview/llvectorperfoptions.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llversioninfo.cpp b/indra/newview/llversioninfo.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llversioninfo.h b/indra/newview/llversioninfo.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewchildren.cpp b/indra/newview/llviewchildren.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewchildren.h b/indra/newview/llviewchildren.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerassetstats.cpp b/indra/newview/llviewerassetstats.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerassetstats.h b/indra/newview/llviewerassetstats.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerassetstorage.cpp b/indra/newview/llviewerassetstorage.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerassetstorage.h b/indra/newview/llviewerassetstorage.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerassettype.cpp b/indra/newview/llviewerassettype.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerassettype.h b/indra/newview/llviewerassettype.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerattachmenu.cpp b/indra/newview/llviewerattachmenu.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerattachmenu.h b/indra/newview/llviewerattachmenu.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llvieweraudio.cpp b/indra/newview/llvieweraudio.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llvieweraudio.h b/indra/newview/llvieweraudio.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewercamera.cpp b/indra/newview/llviewercamera.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewercamera.h b/indra/newview/llviewercamera.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerchat.cpp b/indra/newview/llviewerchat.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerchat.h b/indra/newview/llviewerchat.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewercontrol.h b/indra/newview/llviewercontrol.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewercontrollistener.cpp b/indra/newview/llviewercontrollistener.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewercontrollistener.h b/indra/newview/llviewercontrollistener.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerdisplay.h b/indra/newview/llviewerdisplay.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerdisplayname.cpp b/indra/newview/llviewerdisplayname.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerdisplayname.h b/indra/newview/llviewerdisplayname.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerfloaterreg.h b/indra/newview/llviewerfloaterreg.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerfoldertype.h b/indra/newview/llviewerfoldertype.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewergenericmessage.cpp b/indra/newview/llviewergenericmessage.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewergenericmessage.h b/indra/newview/llviewergenericmessage.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewergesture.cpp b/indra/newview/llviewergesture.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewergesture.h b/indra/newview/llviewergesture.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerhelp.cpp b/indra/newview/llviewerhelp.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerhelp.h b/indra/newview/llviewerhelp.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerhelputil.cpp b/indra/newview/llviewerhelputil.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerhelputil.h b/indra/newview/llviewerhelputil.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerhome.cpp b/indra/newview/llviewerhome.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerhome.h b/indra/newview/llviewerhome.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerinventory.cpp b/indra/newview/llviewerinventory.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerinventory.h b/indra/newview/llviewerinventory.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerjoint.cpp b/indra/newview/llviewerjoint.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerjoint.h b/indra/newview/llviewerjoint.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerjointattachment.cpp b/indra/newview/llviewerjointattachment.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerjointattachment.h b/indra/newview/llviewerjointattachment.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerjointmesh.cpp b/indra/newview/llviewerjointmesh.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerjointmesh.h b/indra/newview/llviewerjointmesh.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerjoystick.cpp b/indra/newview/llviewerjoystick.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerjoystick.h b/indra/newview/llviewerjoystick.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerkeyboard.cpp b/indra/newview/llviewerkeyboard.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerkeyboard.h b/indra/newview/llviewerkeyboard.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerlayer.cpp b/indra/newview/llviewerlayer.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerlayer.h b/indra/newview/llviewerlayer.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewermedia.h b/indra/newview/llviewermedia.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewermedia_streamingaudio.cpp b/indra/newview/llviewermedia_streamingaudio.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewermedia_streamingaudio.h b/indra/newview/llviewermedia_streamingaudio.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewermediafocus.cpp b/indra/newview/llviewermediafocus.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewermediafocus.h b/indra/newview/llviewermediafocus.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewermediaobserver.h b/indra/newview/llviewermediaobserver.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewermenu.h b/indra/newview/llviewermenu.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewermenufile.cpp b/indra/newview/llviewermenufile.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewermenufile.h b/indra/newview/llviewermenufile.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewermessage.h b/indra/newview/llviewermessage.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewernetwork.cpp b/indra/newview/llviewernetwork.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewernetwork.h b/indra/newview/llviewernetwork.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerobject.h b/indra/newview/llviewerobject.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerobjectlist.cpp b/indra/newview/llviewerobjectlist.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerobjectlist.h b/indra/newview/llviewerobjectlist.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerparcelmedia.cpp b/indra/newview/llviewerparcelmedia.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerparcelmedia.h b/indra/newview/llviewerparcelmedia.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerparcelmediaautoplay.cpp b/indra/newview/llviewerparcelmediaautoplay.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerparcelmediaautoplay.h b/indra/newview/llviewerparcelmediaautoplay.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerparcelmgr.cpp b/indra/newview/llviewerparcelmgr.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerparcelmgr.h b/indra/newview/llviewerparcelmgr.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerparceloverlay.cpp b/indra/newview/llviewerparceloverlay.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerparceloverlay.h b/indra/newview/llviewerparceloverlay.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerpartsim.cpp b/indra/newview/llviewerpartsim.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerpartsim.h b/indra/newview/llviewerpartsim.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerpartsource.cpp b/indra/newview/llviewerpartsource.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerpartsource.h b/indra/newview/llviewerpartsource.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerprecompiledheaders.cpp b/indra/newview/llviewerprecompiledheaders.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerprecompiledheaders.h b/indra/newview/llviewerprecompiledheaders.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerregion.h b/indra/newview/llviewerregion.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewershadermgr.h b/indra/newview/llviewershadermgr.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerstats.cpp b/indra/newview/llviewerstats.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerstats.h b/indra/newview/llviewerstats.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerstatsrecorder.cpp b/indra/newview/llviewerstatsrecorder.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerstatsrecorder.h b/indra/newview/llviewerstatsrecorder.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewertexteditor.cpp b/indra/newview/llviewertexteditor.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewertexteditor.h b/indra/newview/llviewertexteditor.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewertexture.h b/indra/newview/llviewertexture.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewertextureanim.cpp b/indra/newview/llviewertextureanim.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewertextureanim.h b/indra/newview/llviewertextureanim.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewertexturelist.h b/indra/newview/llviewertexturelist.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerthrottle.cpp b/indra/newview/llviewerthrottle.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerthrottle.h b/indra/newview/llviewerthrottle.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewervisualparam.cpp b/indra/newview/llviewervisualparam.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewervisualparam.h b/indra/newview/llviewervisualparam.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerwindow.h b/indra/newview/llviewerwindow.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerwindowlistener.cpp b/indra/newview/llviewerwindowlistener.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llviewerwindowlistener.h b/indra/newview/llviewerwindowlistener.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llvlcomposition.cpp b/indra/newview/llvlcomposition.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llvlcomposition.h b/indra/newview/llvlcomposition.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llvlmanager.cpp b/indra/newview/llvlmanager.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llvlmanager.h b/indra/newview/llvlmanager.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llvoavatardefines.cpp b/indra/newview/llvoavatardefines.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llvoavatardefines.h b/indra/newview/llvoavatardefines.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llvoavatarself.h b/indra/newview/llvoavatarself.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llvocache.cpp b/indra/newview/llvocache.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llvocache.h b/indra/newview/llvocache.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llvograss.cpp b/indra/newview/llvograss.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llvograss.h b/indra/newview/llvograss.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llvoground.cpp b/indra/newview/llvoground.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llvoground.h b/indra/newview/llvoground.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llvoicecallhandler.cpp b/indra/newview/llvoicecallhandler.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llvoicechannel.cpp b/indra/newview/llvoicechannel.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llvoicechannel.h b/indra/newview/llvoicechannel.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llvoiceclient.cpp b/indra/newview/llvoiceclient.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llvoiceclient.h b/indra/newview/llvoiceclient.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llvoicevisualizer.cpp b/indra/newview/llvoicevisualizer.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llvoicevisualizer.h b/indra/newview/llvoicevisualizer.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llvoicevivox.cpp b/indra/newview/llvoicevivox.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llvoicevivox.h b/indra/newview/llvoicevivox.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llvoinventorylistener.cpp b/indra/newview/llvoinventorylistener.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llvoinventorylistener.h b/indra/newview/llvoinventorylistener.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llvopartgroup.cpp b/indra/newview/llvopartgroup.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llvopartgroup.h b/indra/newview/llvopartgroup.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llvosky.cpp b/indra/newview/llvosky.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llvosky.h b/indra/newview/llvosky.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llvosurfacepatch.cpp b/indra/newview/llvosurfacepatch.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llvosurfacepatch.h b/indra/newview/llvosurfacepatch.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llvotree.cpp b/indra/newview/llvotree.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llvotree.h b/indra/newview/llvotree.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llvotreenew.h b/indra/newview/llvotreenew.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llvovolume.h b/indra/newview/llvovolume.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llvowater.cpp b/indra/newview/llvowater.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llvowater.h b/indra/newview/llvowater.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llvowlsky.cpp b/indra/newview/llvowlsky.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llvowlsky.h b/indra/newview/llvowlsky.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llwatchdog.cpp b/indra/newview/llwatchdog.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llwatchdog.h b/indra/newview/llwatchdog.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llwaterparammanager.cpp b/indra/newview/llwaterparammanager.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llwaterparammanager.h b/indra/newview/llwaterparammanager.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llwaterparamset.cpp b/indra/newview/llwaterparamset.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llwaterparamset.h b/indra/newview/llwaterparamset.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llwearable.cpp b/indra/newview/llwearable.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llwearable.h b/indra/newview/llwearable.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llwearableitemslist.cpp b/indra/newview/llwearableitemslist.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llwearableitemslist.h b/indra/newview/llwearableitemslist.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llwearablelist.cpp b/indra/newview/llwearablelist.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llwearablelist.h b/indra/newview/llwearablelist.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llwearabletype.cpp b/indra/newview/llwearabletype.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llwearabletype.h b/indra/newview/llwearabletype.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llweb.cpp b/indra/newview/llweb.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llweb.h b/indra/newview/llweb.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llwebprofile.cpp b/indra/newview/llwebprofile.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llwebprofile.h b/indra/newview/llwebprofile.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llwebsharing.cpp b/indra/newview/llwebsharing.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llwebsharing.h b/indra/newview/llwebsharing.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llwind.cpp b/indra/newview/llwind.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llwind.h b/indra/newview/llwind.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llwindebug.cpp b/indra/newview/llwindebug.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llwindebug.h b/indra/newview/llwindebug.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llwindowlistener.cpp b/indra/newview/llwindowlistener.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llwindowlistener.h b/indra/newview/llwindowlistener.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llwlanimator.cpp b/indra/newview/llwlanimator.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llwlanimator.h b/indra/newview/llwlanimator.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llwldaycycle.cpp b/indra/newview/llwldaycycle.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llwldaycycle.h b/indra/newview/llwldaycycle.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llwlhandlers.cpp b/indra/newview/llwlhandlers.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llwlhandlers.h b/indra/newview/llwlhandlers.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llwlparammanager.cpp b/indra/newview/llwlparammanager.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llwlparammanager.h b/indra/newview/llwlparammanager.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llwlparamset.cpp b/indra/newview/llwlparamset.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llwlparamset.h b/indra/newview/llwlparamset.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llworld.cpp b/indra/newview/llworld.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llworld.h b/indra/newview/llworld.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llworldmap.cpp b/indra/newview/llworldmap.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llworldmap.h b/indra/newview/llworldmap.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llworldmapmessage.cpp b/indra/newview/llworldmapmessage.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llworldmapmessage.h b/indra/newview/llworldmapmessage.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llworldmapview.cpp b/indra/newview/llworldmapview.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llworldmapview.h b/indra/newview/llworldmapview.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llworldmipmap.cpp b/indra/newview/llworldmipmap.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llworldmipmap.h b/indra/newview/llworldmipmap.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llxmlrpclistener.cpp b/indra/newview/llxmlrpclistener.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llxmlrpclistener.h b/indra/newview/llxmlrpclistener.h
old mode 100644
new mode 100755
diff --git a/indra/newview/llxmlrpctransaction.cpp b/indra/newview/llxmlrpctransaction.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llxmlrpctransaction.h b/indra/newview/llxmlrpctransaction.h
old mode 100644
new mode 100755
diff --git a/indra/newview/macmain.h b/indra/newview/macmain.h
old mode 100644
new mode 100755
diff --git a/indra/newview/macutil_Prefix.h b/indra/newview/macutil_Prefix.h
old mode 100644
new mode 100755
diff --git a/indra/newview/macview.r b/indra/newview/macview.r
old mode 100644
new mode 100755
diff --git a/indra/newview/macview_Prefix.h b/indra/newview/macview_Prefix.h
old mode 100644
new mode 100755
diff --git a/indra/newview/nl.lproj/language.txt b/indra/newview/nl.lproj/language.txt
old mode 100644
new mode 100755
diff --git a/indra/newview/noise.cpp b/indra/newview/noise.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/noise.h b/indra/newview/noise.h
old mode 100644
new mode 100755
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/pipeline.h b/indra/newview/pipeline.h
old mode 100644
new mode 100755
diff --git a/indra/newview/pl.lproj/language.txt b/indra/newview/pl.lproj/language.txt
old mode 100644
new mode 100755
diff --git a/indra/newview/pt.lproj/language.txt b/indra/newview/pt.lproj/language.txt
old mode 100644
new mode 100755
diff --git a/indra/newview/res-sdl/arrow.BMP b/indra/newview/res-sdl/arrow.BMP
old mode 100644
new mode 100755
diff --git a/indra/newview/res-sdl/arrowcop.BMP b/indra/newview/res-sdl/arrowcop.BMP
old mode 100644
new mode 100755
diff --git a/indra/newview/res-sdl/arrowcopmulti.BMP b/indra/newview/res-sdl/arrowcopmulti.BMP
old mode 100644
new mode 100755
diff --git a/indra/newview/res-sdl/arrowdrag.BMP b/indra/newview/res-sdl/arrowdrag.BMP
old mode 100644
new mode 100755
diff --git a/indra/newview/res-sdl/circleandline.BMP b/indra/newview/res-sdl/circleandline.BMP
old mode 100644
new mode 100755
diff --git a/indra/newview/res-sdl/cross.BMP b/indra/newview/res-sdl/cross.BMP
old mode 100644
new mode 100755
diff --git a/indra/newview/res-sdl/hand.BMP b/indra/newview/res-sdl/hand.BMP
old mode 100644
new mode 100755
diff --git a/indra/newview/res-sdl/ibeam.BMP b/indra/newview/res-sdl/ibeam.BMP
old mode 100644
new mode 100755
diff --git a/indra/newview/res-sdl/llarrow.BMP b/indra/newview/res-sdl/llarrow.BMP
old mode 100644
new mode 100755
diff --git a/indra/newview/res-sdl/llarrowdrag.BMP b/indra/newview/res-sdl/llarrowdrag.BMP
old mode 100644
new mode 100755
diff --git a/indra/newview/res-sdl/llarrowdragmulti.BMP b/indra/newview/res-sdl/llarrowdragmulti.BMP
old mode 100644
new mode 100755
diff --git a/indra/newview/res-sdl/llarrowlocked.BMP b/indra/newview/res-sdl/llarrowlocked.BMP
old mode 100644
new mode 100755
diff --git a/indra/newview/res-sdl/llgrablocked.BMP b/indra/newview/res-sdl/llgrablocked.BMP
old mode 100644
new mode 100755
diff --git a/indra/newview/res-sdl/llno.BMP b/indra/newview/res-sdl/llno.BMP
old mode 100644
new mode 100755
diff --git a/indra/newview/res-sdl/llnolocked.BMP b/indra/newview/res-sdl/llnolocked.BMP
old mode 100644
new mode 100755
diff --git a/indra/newview/res-sdl/lltoolcamera.BMP b/indra/newview/res-sdl/lltoolcamera.BMP
old mode 100644
new mode 100755
diff --git a/indra/newview/res-sdl/lltoolcreate.BMP b/indra/newview/res-sdl/lltoolcreate.BMP
old mode 100644
new mode 100755
diff --git a/indra/newview/res-sdl/lltoolfocus.BMP b/indra/newview/res-sdl/lltoolfocus.BMP
old mode 100644
new mode 100755
diff --git a/indra/newview/res-sdl/lltoolgrab.BMP b/indra/newview/res-sdl/lltoolgrab.BMP
old mode 100644
new mode 100755
diff --git a/indra/newview/res-sdl/lltoolland.BMP b/indra/newview/res-sdl/lltoolland.BMP
old mode 100644
new mode 100755
diff --git a/indra/newview/res-sdl/lltoolpan.BMP b/indra/newview/res-sdl/lltoolpan.BMP
old mode 100644
new mode 100755
diff --git a/indra/newview/res-sdl/lltoolpathfinding.BMP b/indra/newview/res-sdl/lltoolpathfinding.BMP
old mode 100644
new mode 100755
diff --git a/indra/newview/res-sdl/lltoolpathfindingpathend.BMP b/indra/newview/res-sdl/lltoolpathfindingpathend.BMP
old mode 100644
new mode 100755
diff --git a/indra/newview/res-sdl/lltoolpathfindingpathendadd.BMP b/indra/newview/res-sdl/lltoolpathfindingpathendadd.BMP
old mode 100644
new mode 100755
diff --git a/indra/newview/res-sdl/lltoolpathfindingpathstart.BMP b/indra/newview/res-sdl/lltoolpathfindingpathstart.BMP
old mode 100644
new mode 100755
diff --git a/indra/newview/res-sdl/lltoolpathfindingpathstartadd.BMP b/indra/newview/res-sdl/lltoolpathfindingpathstartadd.BMP
old mode 100644
new mode 100755
diff --git a/indra/newview/res-sdl/lltoolpipette.BMP b/indra/newview/res-sdl/lltoolpipette.BMP
old mode 100644
new mode 100755
diff --git a/indra/newview/res-sdl/lltoolrotate.BMP b/indra/newview/res-sdl/lltoolrotate.BMP
old mode 100644
new mode 100755
diff --git a/indra/newview/res-sdl/lltoolscale.BMP b/indra/newview/res-sdl/lltoolscale.BMP
old mode 100644
new mode 100755
diff --git a/indra/newview/res-sdl/lltooltranslate.BMP b/indra/newview/res-sdl/lltooltranslate.BMP
old mode 100644
new mode 100755
diff --git a/indra/newview/res-sdl/lltoolzoomin.BMP b/indra/newview/res-sdl/lltoolzoomin.BMP
old mode 100644
new mode 100755
diff --git a/indra/newview/res-sdl/lltoolzoomout.BMP b/indra/newview/res-sdl/lltoolzoomout.BMP
old mode 100644
new mode 100755
diff --git a/indra/newview/res-sdl/sizenesw.BMP b/indra/newview/res-sdl/sizenesw.BMP
old mode 100644
new mode 100755
diff --git a/indra/newview/res-sdl/sizens.BMP b/indra/newview/res-sdl/sizens.BMP
old mode 100644
new mode 100755
diff --git a/indra/newview/res-sdl/sizenwse.BMP b/indra/newview/res-sdl/sizenwse.BMP
old mode 100644
new mode 100755
diff --git a/indra/newview/res-sdl/sizewe.BMP b/indra/newview/res-sdl/sizewe.BMP
old mode 100644
new mode 100755
diff --git a/indra/newview/res-sdl/toolbuy.BMP b/indra/newview/res-sdl/toolbuy.BMP
old mode 100644
new mode 100755
diff --git a/indra/newview/res-sdl/toolmediaopen.BMP b/indra/newview/res-sdl/toolmediaopen.BMP
old mode 100644
new mode 100755
diff --git a/indra/newview/res-sdl/toolopen.BMP b/indra/newview/res-sdl/toolopen.BMP
old mode 100644
new mode 100755
diff --git a/indra/newview/res-sdl/toolpause.BMP b/indra/newview/res-sdl/toolpause.BMP
old mode 100644
new mode 100755
diff --git a/indra/newview/res-sdl/toolpickobject.BMP b/indra/newview/res-sdl/toolpickobject.BMP
old mode 100644
new mode 100755
diff --git a/indra/newview/res-sdl/toolpickobject2.BMP b/indra/newview/res-sdl/toolpickobject2.BMP
old mode 100644
new mode 100755
diff --git a/indra/newview/res-sdl/toolpickobject3.BMP b/indra/newview/res-sdl/toolpickobject3.BMP
old mode 100644
new mode 100755
diff --git a/indra/newview/res-sdl/toolplay.BMP b/indra/newview/res-sdl/toolplay.BMP
old mode 100644
new mode 100755
diff --git a/indra/newview/res-sdl/toolsit.BMP b/indra/newview/res-sdl/toolsit.BMP
old mode 100644
new mode 100755
diff --git a/indra/newview/res-sdl/wait.BMP b/indra/newview/res-sdl/wait.BMP
old mode 100644
new mode 100755
diff --git a/indra/newview/res-sdl/working.BMP b/indra/newview/res-sdl/working.BMP
old mode 100644
new mode 100755
diff --git a/indra/newview/res/arrow.cur b/indra/newview/res/arrow.cur
old mode 100644
new mode 100755
diff --git a/indra/newview/res/arrowcop.cur b/indra/newview/res/arrowcop.cur
old mode 100644
new mode 100755
diff --git a/indra/newview/res/arrowcopmulti.cur b/indra/newview/res/arrowcopmulti.cur
old mode 100644
new mode 100755
diff --git a/indra/newview/res/arrowdrag.cur b/indra/newview/res/arrowdrag.cur
old mode 100644
new mode 100755
diff --git a/indra/newview/res/bitmap2.bmp b/indra/newview/res/bitmap2.bmp
old mode 100644
new mode 100755
diff --git a/indra/newview/res/circleandline.cur b/indra/newview/res/circleandline.cur
old mode 100644
new mode 100755
diff --git a/indra/newview/res/have_artwork_bundle.marker b/indra/newview/res/have_artwork_bundle.marker
old mode 100644
new mode 100755
diff --git a/indra/newview/res/icon1.ico b/indra/newview/res/icon1.ico
old mode 100644
new mode 100755
diff --git a/indra/newview/res/install_icon.BMP b/indra/newview/res/install_icon.BMP
old mode 100644
new mode 100755
diff --git a/indra/newview/res/llarrow.cur b/indra/newview/res/llarrow.cur
old mode 100644
new mode 100755
diff --git a/indra/newview/res/llarrowdrag.cur b/indra/newview/res/llarrowdrag.cur
old mode 100644
new mode 100755
diff --git a/indra/newview/res/llarrowdragmulti.cur b/indra/newview/res/llarrowdragmulti.cur
old mode 100644
new mode 100755
diff --git a/indra/newview/res/llarrowlocked.cur b/indra/newview/res/llarrowlocked.cur
old mode 100644
new mode 100755
diff --git a/indra/newview/res/llgrablocked.cur b/indra/newview/res/llgrablocked.cur
old mode 100644
new mode 100755
diff --git a/indra/newview/res/llno.cur b/indra/newview/res/llno.cur
old mode 100644
new mode 100755
diff --git a/indra/newview/res/llnolocked.cur b/indra/newview/res/llnolocked.cur
old mode 100644
new mode 100755
diff --git a/indra/newview/res/lltoolcamera.cur b/indra/newview/res/lltoolcamera.cur
old mode 100644
new mode 100755
diff --git a/indra/newview/res/lltoolcreate.cur b/indra/newview/res/lltoolcreate.cur
old mode 100644
new mode 100755
diff --git a/indra/newview/res/lltoolfocus.cur b/indra/newview/res/lltoolfocus.cur
old mode 100644
new mode 100755
diff --git a/indra/newview/res/lltoolgrab.cur b/indra/newview/res/lltoolgrab.cur
old mode 100644
new mode 100755
diff --git a/indra/newview/res/lltoolland.cur b/indra/newview/res/lltoolland.cur
old mode 100644
new mode 100755
diff --git a/indra/newview/res/lltoolpan.cur b/indra/newview/res/lltoolpan.cur
old mode 100644
new mode 100755
diff --git a/indra/newview/res/lltoolpathfinding.cur b/indra/newview/res/lltoolpathfinding.cur
old mode 100644
new mode 100755
diff --git a/indra/newview/res/lltoolpathfindingpathend.cur b/indra/newview/res/lltoolpathfindingpathend.cur
old mode 100644
new mode 100755
diff --git a/indra/newview/res/lltoolpathfindingpathendadd.cur b/indra/newview/res/lltoolpathfindingpathendadd.cur
old mode 100644
new mode 100755
diff --git a/indra/newview/res/lltoolpathfindingpathstart.cur b/indra/newview/res/lltoolpathfindingpathstart.cur
old mode 100644
new mode 100755
diff --git a/indra/newview/res/lltoolpathfindingpathstartadd.cur b/indra/newview/res/lltoolpathfindingpathstartadd.cur
old mode 100644
new mode 100755
diff --git a/indra/newview/res/lltoolpipette.cur b/indra/newview/res/lltoolpipette.cur
old mode 100644
new mode 100755
diff --git a/indra/newview/res/lltoolrotate.cur b/indra/newview/res/lltoolrotate.cur
old mode 100644
new mode 100755
diff --git a/indra/newview/res/lltoolscale.cur b/indra/newview/res/lltoolscale.cur
old mode 100644
new mode 100755
diff --git a/indra/newview/res/lltooltranslate.cur b/indra/newview/res/lltooltranslate.cur
old mode 100644
new mode 100755
diff --git a/indra/newview/res/lltoolzoomin.cur b/indra/newview/res/lltoolzoomin.cur
old mode 100644
new mode 100755
diff --git a/indra/newview/res/lltoolzoomout.cur b/indra/newview/res/lltoolzoomout.cur
old mode 100644
new mode 100755
diff --git a/indra/newview/res/loginbackground.bmp b/indra/newview/res/loginbackground.bmp
old mode 100644
new mode 100755
diff --git a/indra/newview/res/resource.h b/indra/newview/res/resource.h
old mode 100644
new mode 100755
diff --git a/indra/newview/res/toolbuy.cur b/indra/newview/res/toolbuy.cur
old mode 100644
new mode 100755
diff --git a/indra/newview/res/toolmediaopen.cur b/indra/newview/res/toolmediaopen.cur
old mode 100644
new mode 100755
diff --git a/indra/newview/res/toolopen.cur b/indra/newview/res/toolopen.cur
old mode 100644
new mode 100755
diff --git a/indra/newview/res/toolpause.cur b/indra/newview/res/toolpause.cur
old mode 100644
new mode 100755
diff --git a/indra/newview/res/toolpickobject.cur b/indra/newview/res/toolpickobject.cur
old mode 100644
new mode 100755
diff --git a/indra/newview/res/toolpickobject2.cur b/indra/newview/res/toolpickobject2.cur
old mode 100644
new mode 100755
diff --git a/indra/newview/res/toolpickobject3.cur b/indra/newview/res/toolpickobject3.cur
old mode 100644
new mode 100755
diff --git a/indra/newview/res/toolpipette.cur b/indra/newview/res/toolpipette.cur
old mode 100644
new mode 100755
diff --git a/indra/newview/res/toolplay.cur b/indra/newview/res/toolplay.cur
old mode 100644
new mode 100755
diff --git a/indra/newview/res/toolsit.cur b/indra/newview/res/toolsit.cur
old mode 100644
new mode 100755
diff --git a/indra/newview/res/uninstall_icon.BMP b/indra/newview/res/uninstall_icon.BMP
old mode 100644
new mode 100755
diff --git a/indra/newview/res/viewerRes.rc b/indra/newview/res/viewerRes.rc
old mode 100644
new mode 100755
diff --git a/indra/newview/ru.lproj/language.txt b/indra/newview/ru.lproj/language.txt
old mode 100644
new mode 100755
diff --git a/indra/newview/secondlife-i686.supp b/indra/newview/secondlife-i686.supp
old mode 100644
new mode 100755
diff --git a/indra/newview/secondlife.icns b/indra/newview/secondlife.icns
old mode 100644
new mode 100755
diff --git a/indra/newview/secondlife_firstlook.icns b/indra/newview/secondlife_firstlook.icns
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/colors.xml b/indra/newview/skins/default/colors.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/html/btn_purplepill_bg.png b/indra/newview/skins/default/html/btn_purplepill_bg.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/html/da/loading/loading.html b/indra/newview/skins/default/html/da/loading/loading.html
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/html/de/loading-error/index.html b/indra/newview/skins/default/html/de/loading-error/index.html
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/html/de/loading/loading.html b/indra/newview/skins/default/html/de/loading/loading.html
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/html/en-us/help-offline/index.html b/indra/newview/skins/default/html/en-us/help-offline/index.html
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/html/en-us/loading-error/index.html b/indra/newview/skins/default/html/en-us/loading-error/index.html
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/html/en-us/loading/loading.html b/indra/newview/skins/default/html/en-us/loading/loading.html
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/html/en-us/loading/sl_logo_rotate_black.gif b/indra/newview/skins/default/html/en-us/loading/sl_logo_rotate_black.gif
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/html/es/loading-error/index.html b/indra/newview/skins/default/html/es/loading-error/index.html
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/html/es/loading/loading.html b/indra/newview/skins/default/html/es/loading/loading.html
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/html/fr/loading-error/index.html b/indra/newview/skins/default/html/fr/loading-error/index.html
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/html/fr/loading/loading.html b/indra/newview/skins/default/html/fr/loading/loading.html
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/html/hu/loading/loading.html b/indra/newview/skins/default/html/hu/loading/loading.html
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/html/it/loading/loading.html b/indra/newview/skins/default/html/it/loading/loading.html
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/html/ja/loading-error/index.html b/indra/newview/skins/default/html/ja/loading-error/index.html
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/html/ja/loading/loading.html b/indra/newview/skins/default/html/ja/loading/loading.html
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/html/ko/loading-error/index.html b/indra/newview/skins/default/html/ko/loading-error/index.html
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/html/nl/loading/loading.html b/indra/newview/skins/default/html/nl/loading/loading.html
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/html/pl/loading/loading.html b/indra/newview/skins/default/html/pl/loading/loading.html
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/html/pt/loading-error/index.html b/indra/newview/skins/default/html/pt/loading-error/index.html
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/html/pt/loading/loading.html b/indra/newview/skins/default/html/pt/loading/loading.html
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/html/ru/loading/loading.html b/indra/newview/skins/default/html/ru/loading/loading.html
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/html/tr/loading/loading.html b/indra/newview/skins/default/html/tr/loading/loading.html
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/html/uk/loading/loading.html b/indra/newview/skins/default/html/uk/loading/loading.html
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/html/unabletoconnect.png b/indra/newview/skins/default/html/unabletoconnect.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/html/zh/loading-error/index.html b/indra/newview/skins/default/html/zh/loading-error/index.html
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/html/zh/loading/loading.html b/indra/newview/skins/default/html/zh/loading/loading.html
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/Blank.png b/indra/newview/skins/default/textures/Blank.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/Rounded_Rect.png b/indra/newview/skins/default/textures/Rounded_Rect.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/alpha_gradient.tga b/indra/newview/skins/default/textures/alpha_gradient.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/alpha_gradient_2d.j2c b/indra/newview/skins/default/textures/alpha_gradient_2d.j2c
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/arrow_down.tga b/indra/newview/skins/default/textures/arrow_down.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/arrow_up.tga b/indra/newview/skins/default/textures/arrow_up.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/avatar_thumb_bkgrnd.png b/indra/newview/skins/default/textures/avatar_thumb_bkgrnd.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/badge_note.j2c b/indra/newview/skins/default/textures/badge_note.j2c
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/badge_ok.j2c b/indra/newview/skins/default/textures/badge_ok.j2c
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/badge_warn.j2c b/indra/newview/skins/default/textures/badge_warn.j2c
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/bottomtray/Cam_Avatar_Off.png b/indra/newview/skins/default/textures/bottomtray/Cam_Avatar_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/bottomtray/Cam_FreeCam_Off.png b/indra/newview/skins/default/textures/bottomtray/Cam_FreeCam_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/bottomtray/Cam_Orbit_Off.png b/indra/newview/skins/default/textures/bottomtray/Cam_Orbit_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/bottomtray/Cam_Pan_Off.png b/indra/newview/skins/default/textures/bottomtray/Cam_Pan_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Back_Off.png b/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Back_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Back_On.png b/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Back_On.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Eye_Off.png b/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Eye_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Front_Off.png b/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Front_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Front_On.png b/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Front_On.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Side_Off.png b/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Side_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Side_On.png b/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Side_On.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/bottomtray/Cam_Rotate_In.png b/indra/newview/skins/default/textures/bottomtray/Cam_Rotate_In.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/bottomtray/Cam_Rotate_Out.png b/indra/newview/skins/default/textures/bottomtray/Cam_Rotate_Out.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/bottomtray/Cam_Tracking_In.png b/indra/newview/skins/default/textures/bottomtray/Cam_Tracking_In.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/bottomtray/Cam_Tracking_Out.png b/indra/newview/skins/default/textures/bottomtray/Cam_Tracking_Out.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/bottomtray/ChatBarHandle.png b/indra/newview/skins/default/textures/bottomtray/ChatBarHandle.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/bottomtray/DownArrow.png b/indra/newview/skins/default/textures/bottomtray/DownArrow.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/bottomtray/Mouselook_View_Off.png b/indra/newview/skins/default/textures/bottomtray/Mouselook_View_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/bottomtray/Mouselook_View_On.png b/indra/newview/skins/default/textures/bottomtray/Mouselook_View_On.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/bottomtray/Move_Fly_Off.png b/indra/newview/skins/default/textures/bottomtray/Move_Fly_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/bottomtray/Move_Run_Off.png b/indra/newview/skins/default/textures/bottomtray/Move_Run_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/bottomtray/Move_Walk_Off.png b/indra/newview/skins/default/textures/bottomtray/Move_Walk_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/bottomtray/Movement_Backward_Off.png b/indra/newview/skins/default/textures/bottomtray/Movement_Backward_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/bottomtray/Movement_Backward_On.png b/indra/newview/skins/default/textures/bottomtray/Movement_Backward_On.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/bottomtray/Movement_Down_Off.png b/indra/newview/skins/default/textures/bottomtray/Movement_Down_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/bottomtray/Movement_Down_On.png b/indra/newview/skins/default/textures/bottomtray/Movement_Down_On.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/bottomtray/Movement_Forward_Off.png b/indra/newview/skins/default/textures/bottomtray/Movement_Forward_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/bottomtray/Movement_Forward_On.png b/indra/newview/skins/default/textures/bottomtray/Movement_Forward_On.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/bottomtray/Movement_Left_Off.png b/indra/newview/skins/default/textures/bottomtray/Movement_Left_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/bottomtray/Movement_Left_On.png b/indra/newview/skins/default/textures/bottomtray/Movement_Left_On.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/bottomtray/Movement_Right_Off.png b/indra/newview/skins/default/textures/bottomtray/Movement_Right_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/bottomtray/Movement_Right_On.png b/indra/newview/skins/default/textures/bottomtray/Movement_Right_On.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/bottomtray/Movement_TurnLeft_Off.png b/indra/newview/skins/default/textures/bottomtray/Movement_TurnLeft_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/bottomtray/Movement_TurnLeft_On.png b/indra/newview/skins/default/textures/bottomtray/Movement_TurnLeft_On.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/bottomtray/Movement_TurnRight_Off.png b/indra/newview/skins/default/textures/bottomtray/Movement_TurnRight_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/bottomtray/Movement_TurnRight_On.png b/indra/newview/skins/default/textures/bottomtray/Movement_TurnRight_On.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/bottomtray/Movement_Up_Off.png b/indra/newview/skins/default/textures/bottomtray/Movement_Up_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/bottomtray/Movement_Up_On.png b/indra/newview/skins/default/textures/bottomtray/Movement_Up_On.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/bottomtray/Notices_Unread.png b/indra/newview/skins/default/textures/bottomtray/Notices_Unread.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/bottomtray/Object_View_Off.png b/indra/newview/skins/default/textures/bottomtray/Object_View_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/bottomtray/Object_View_On.png b/indra/newview/skins/default/textures/bottomtray/Object_View_On.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/bottomtray/PanOrbit_Off.png b/indra/newview/skins/default/textures/bottomtray/PanOrbit_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/bottomtray/Snapshot_Off.png b/indra/newview/skins/default/textures/bottomtray/Snapshot_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/bottomtray/Unread_Chiclet.png b/indra/newview/skins/default/textures/bottomtray/Unread_Chiclet.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/bottomtray/VoicePTT_Lvl1.png b/indra/newview/skins/default/textures/bottomtray/VoicePTT_Lvl1.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/bottomtray/VoicePTT_Lvl2.png b/indra/newview/skins/default/textures/bottomtray/VoicePTT_Lvl2.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/bottomtray/VoicePTT_Lvl3.png b/indra/newview/skins/default/textures/bottomtray/VoicePTT_Lvl3.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/bottomtray/VoicePTT_Off.png b/indra/newview/skins/default/textures/bottomtray/VoicePTT_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/bottomtray/VoicePTT_On.png b/indra/newview/skins/default/textures/bottomtray/VoicePTT_On.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/bottomtray/WellButton_Lit.png b/indra/newview/skins/default/textures/bottomtray/WellButton_Lit.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/bottomtray/WellButton_Lit_Selected.png b/indra/newview/skins/default/textures/bottomtray/WellButton_Lit_Selected.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/build/Object_Cone.png b/indra/newview/skins/default/textures/build/Object_Cone.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/build/Object_Cone_Selected.png b/indra/newview/skins/default/textures/build/Object_Cone_Selected.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/build/Object_Cube.png b/indra/newview/skins/default/textures/build/Object_Cube.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/build/Object_Cube_Selected.png b/indra/newview/skins/default/textures/build/Object_Cube_Selected.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/build/Object_Cylinder.png b/indra/newview/skins/default/textures/build/Object_Cylinder.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/build/Object_Cylinder_Selected.png b/indra/newview/skins/default/textures/build/Object_Cylinder_Selected.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/build/Object_Grass.png b/indra/newview/skins/default/textures/build/Object_Grass.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/build/Object_Grass_Selected.png b/indra/newview/skins/default/textures/build/Object_Grass_Selected.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/build/Object_Hemi_Cone.png b/indra/newview/skins/default/textures/build/Object_Hemi_Cone.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/build/Object_Hemi_Cone_Selected.png b/indra/newview/skins/default/textures/build/Object_Hemi_Cone_Selected.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/build/Object_Hemi_Cylinder.png b/indra/newview/skins/default/textures/build/Object_Hemi_Cylinder.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/build/Object_Hemi_Cylinder_Selected.png b/indra/newview/skins/default/textures/build/Object_Hemi_Cylinder_Selected.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/build/Object_Hemi_Sphere.png b/indra/newview/skins/default/textures/build/Object_Hemi_Sphere.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/build/Object_Hemi_Sphere_Selected.png b/indra/newview/skins/default/textures/build/Object_Hemi_Sphere_Selected.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/build/Object_Prism.png b/indra/newview/skins/default/textures/build/Object_Prism.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/build/Object_Prism_Selected.png b/indra/newview/skins/default/textures/build/Object_Prism_Selected.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/build/Object_Pyramid.png b/indra/newview/skins/default/textures/build/Object_Pyramid.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/build/Object_Pyramid_Selected.png b/indra/newview/skins/default/textures/build/Object_Pyramid_Selected.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/build/Object_Ring.png b/indra/newview/skins/default/textures/build/Object_Ring.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/build/Object_Ring_Selected.png b/indra/newview/skins/default/textures/build/Object_Ring_Selected.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/build/Object_Sphere.png b/indra/newview/skins/default/textures/build/Object_Sphere.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/build/Object_Sphere_Selected.png b/indra/newview/skins/default/textures/build/Object_Sphere_Selected.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/build/Object_Tetrahedron.png b/indra/newview/skins/default/textures/build/Object_Tetrahedron.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/build/Object_Tetrahedron_Selected.png b/indra/newview/skins/default/textures/build/Object_Tetrahedron_Selected.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/build/Object_Torus.png b/indra/newview/skins/default/textures/build/Object_Torus.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/build/Object_Torus_Selected.png b/indra/newview/skins/default/textures/build/Object_Torus_Selected.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/build/Object_Tree.png b/indra/newview/skins/default/textures/build/Object_Tree.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/build/Object_Tree_Selected.png b/indra/newview/skins/default/textures/build/Object_Tree_Selected.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/build/Object_Tube.png b/indra/newview/skins/default/textures/build/Object_Tube.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/build/Object_Tube_Selected.png b/indra/newview/skins/default/textures/build/Object_Tube_Selected.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/build/Tool_Create.png b/indra/newview/skins/default/textures/build/Tool_Create.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/build/Tool_Dozer.png b/indra/newview/skins/default/textures/build/Tool_Dozer.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/build/Tool_Face.png b/indra/newview/skins/default/textures/build/Tool_Face.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/build/Tool_Grab.png b/indra/newview/skins/default/textures/build/Tool_Grab.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/build/Tool_Zoom.png b/indra/newview/skins/default/textures/build/Tool_Zoom.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/button_anim_pause.tga b/indra/newview/skins/default/textures/button_anim_pause.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/button_anim_pause_selected.tga b/indra/newview/skins/default/textures/button_anim_pause_selected.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/button_anim_play.tga b/indra/newview/skins/default/textures/button_anim_play.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/button_anim_play_selected.tga b/indra/newview/skins/default/textures/button_anim_play_selected.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/checker.png b/indra/newview/skins/default/textures/checker.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/cloud-particle.j2c b/indra/newview/skins/default/textures/cloud-particle.j2c
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/color_swatch_alpha.tga b/indra/newview/skins/default/textures/color_swatch_alpha.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/containers/Accordion_ArrowClosed_Off.png b/indra/newview/skins/default/textures/containers/Accordion_ArrowClosed_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/containers/Accordion_ArrowClosed_Press.png b/indra/newview/skins/default/textures/containers/Accordion_ArrowClosed_Press.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/containers/Accordion_ArrowOpened_Off.png b/indra/newview/skins/default/textures/containers/Accordion_ArrowOpened_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/containers/Accordion_ArrowOpened_Press.png b/indra/newview/skins/default/textures/containers/Accordion_ArrowOpened_Press.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/containers/Accordion_Off.png b/indra/newview/skins/default/textures/containers/Accordion_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/containers/Accordion_Over.png b/indra/newview/skins/default/textures/containers/Accordion_Over.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/containers/Accordion_Press.png b/indra/newview/skins/default/textures/containers/Accordion_Press.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/containers/Accordion_Selected.png b/indra/newview/skins/default/textures/containers/Accordion_Selected.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/containers/Container.png b/indra/newview/skins/default/textures/containers/Container.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/containers/TabTop_Left_Off.png b/indra/newview/skins/default/textures/containers/TabTop_Left_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/containers/TabTop_Left_Selected.png b/indra/newview/skins/default/textures/containers/TabTop_Left_Selected.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/containers/TabTop_Middle_Off.png b/indra/newview/skins/default/textures/containers/TabTop_Middle_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/containers/TabTop_Middle_Selected.png b/indra/newview/skins/default/textures/containers/TabTop_Middle_Selected.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/containers/TabTop_Right_Off.png b/indra/newview/skins/default/textures/containers/TabTop_Right_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/containers/TabTop_Right_Selected.png b/indra/newview/skins/default/textures/containers/TabTop_Right_Selected.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/containers/Toolbar_Left_Flash.png b/indra/newview/skins/default/textures/containers/Toolbar_Left_Flash.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/containers/Toolbar_Left_Off.png b/indra/newview/skins/default/textures/containers/Toolbar_Left_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/containers/Toolbar_Left_Over.png b/indra/newview/skins/default/textures/containers/Toolbar_Left_Over.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/containers/Toolbar_Left_Selected.png b/indra/newview/skins/default/textures/containers/Toolbar_Left_Selected.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/containers/Toolbar_Middle_Flash.png b/indra/newview/skins/default/textures/containers/Toolbar_Middle_Flash.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/containers/Toolbar_Middle_Off.png b/indra/newview/skins/default/textures/containers/Toolbar_Middle_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/containers/Toolbar_Middle_Over.png b/indra/newview/skins/default/textures/containers/Toolbar_Middle_Over.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/containers/Toolbar_Middle_Selected.png b/indra/newview/skins/default/textures/containers/Toolbar_Middle_Selected.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/containers/Toolbar_Right_Flash.png b/indra/newview/skins/default/textures/containers/Toolbar_Right_Flash.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/containers/Toolbar_Right_Off.png b/indra/newview/skins/default/textures/containers/Toolbar_Right_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/containers/Toolbar_Right_Over.png b/indra/newview/skins/default/textures/containers/Toolbar_Right_Over.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/containers/Toolbar_Right_Selected.png b/indra/newview/skins/default/textures/containers/Toolbar_Right_Selected.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/crosshairs.tga b/indra/newview/skins/default/textures/crosshairs.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/default_land_picture.j2c b/indra/newview/skins/default/textures/default_land_picture.j2c
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/default_profile_picture.j2c b/indra/newview/skins/default/textures/default_profile_picture.j2c
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/direction_arrow.tga b/indra/newview/skins/default/textures/direction_arrow.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/down_arrow.png b/indra/newview/skins/default/textures/down_arrow.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/eye_button_active.tga b/indra/newview/skins/default/textures/eye_button_active.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/eye_button_inactive.tga b/indra/newview/skins/default/textures/eye_button_inactive.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/folder_arrow.tga b/indra/newview/skins/default/textures/folder_arrow.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/foot_shadow.j2c b/indra/newview/skins/default/textures/foot_shadow.j2c
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/green_checkmark.png b/indra/newview/skins/default/textures/green_checkmark.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icn_media_movie.tga b/indra/newview/skins/default/textures/icn_media_movie.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icn_media_web.tga b/indra/newview/skins/default/textures/icn_media_web.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icon_avatar_offline.tga b/indra/newview/skins/default/textures/icon_avatar_offline.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icon_avatar_online.tga b/indra/newview/skins/default/textures/icon_avatar_online.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icon_diurnal.tga b/indra/newview/skins/default/textures/icon_diurnal.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icon_for_sale_adult.tga b/indra/newview/skins/default/textures/icon_for_sale_adult.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icon_top_pick.tga b/indra/newview/skins/default/textures/icon_top_pick.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/AddItem_Disabled.png b/indra/newview/skins/default/textures/icons/AddItem_Disabled.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/AddItem_Off.png b/indra/newview/skins/default/textures/icons/AddItem_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/AddItem_Press.png b/indra/newview/skins/default/textures/icons/AddItem_Press.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/AudioMute_Off.png b/indra/newview/skins/default/textures/icons/AudioMute_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/AudioMute_Over.png b/indra/newview/skins/default/textures/icons/AudioMute_Over.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Audio_Off.png b/indra/newview/skins/default/textures/icons/Audio_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Audio_Press.png b/indra/newview/skins/default/textures/icons/Audio_Press.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/BackArrow_Off.png b/indra/newview/skins/default/textures/icons/BackArrow_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Conv_log_inbox.png b/indra/newview/skins/default/textures/icons/Conv_log_inbox.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Copy.png b/indra/newview/skins/default/textures/icons/Copy.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/DownArrow_Off.png b/indra/newview/skins/default/textures/icons/DownArrow_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Edit_Wrench.png b/indra/newview/skins/default/textures/icons/Edit_Wrench.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/ExternalBrowser_Off.png b/indra/newview/skins/default/textures/icons/ExternalBrowser_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Female.png b/indra/newview/skins/default/textures/icons/Female.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/ForSale_Badge.png b/indra/newview/skins/default/textures/icons/ForSale_Badge.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/ForwardArrow_Off.png b/indra/newview/skins/default/textures/icons/ForwardArrow_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/ForwardArrow_Press.png b/indra/newview/skins/default/textures/icons/ForwardArrow_Press.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Generic_Group.png b/indra/newview/skins/default/textures/icons/Generic_Group.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Generic_Group_Large.png b/indra/newview/skins/default/textures/icons/Generic_Group_Large.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Generic_Object_Small.png b/indra/newview/skins/default/textures/icons/Generic_Object_Small.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Generic_Person.png b/indra/newview/skins/default/textures/icons/Generic_Person.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Generic_Person_Large.png b/indra/newview/skins/default/textures/icons/Generic_Person_Large.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Hierarchy_View_Disabled.png b/indra/newview/skins/default/textures/icons/Hierarchy_View_Disabled.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Hierarchy_View_On.png b/indra/newview/skins/default/textures/icons/Hierarchy_View_On.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Icon_For_Sale.png b/indra/newview/skins/default/textures/icons/Icon_For_Sale.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Info.png b/indra/newview/skins/default/textures/icons/Info.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Info_Over.png b/indra/newview/skins/default/textures/icons/Info_Over.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Info_Small.png b/indra/newview/skins/default/textures/icons/Info_Small.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Inv_Alpha.png b/indra/newview/skins/default/textures/icons/Inv_Alpha.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Inv_Animation.png b/indra/newview/skins/default/textures/icons/Inv_Animation.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Inv_BodyShape.png b/indra/newview/skins/default/textures/icons/Inv_BodyShape.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Inv_CallingCard.png b/indra/newview/skins/default/textures/icons/Inv_CallingCard.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Inv_Clothing.png b/indra/newview/skins/default/textures/icons/Inv_Clothing.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Inv_Eye.png b/indra/newview/skins/default/textures/icons/Inv_Eye.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Inv_FolderClosed.png b/indra/newview/skins/default/textures/icons/Inv_FolderClosed.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Inv_FolderOpen.png b/indra/newview/skins/default/textures/icons/Inv_FolderOpen.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Inv_Gesture.png b/indra/newview/skins/default/textures/icons/Inv_Gesture.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Inv_Gloves.png b/indra/newview/skins/default/textures/icons/Inv_Gloves.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Inv_Hair.png b/indra/newview/skins/default/textures/icons/Inv_Hair.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Inv_Invalid.png b/indra/newview/skins/default/textures/icons/Inv_Invalid.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Inv_Jacket.png b/indra/newview/skins/default/textures/icons/Inv_Jacket.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Inv_Landmark.png b/indra/newview/skins/default/textures/icons/Inv_Landmark.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Inv_Link.png b/indra/newview/skins/default/textures/icons/Inv_Link.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Inv_LinkFolder.png b/indra/newview/skins/default/textures/icons/Inv_LinkFolder.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Inv_LinkItem.png b/indra/newview/skins/default/textures/icons/Inv_LinkItem.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Inv_LookFolderClosed.png b/indra/newview/skins/default/textures/icons/Inv_LookFolderClosed.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Inv_LookFolderOpen.png b/indra/newview/skins/default/textures/icons/Inv_LookFolderOpen.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Inv_LostClosed.png b/indra/newview/skins/default/textures/icons/Inv_LostClosed.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Inv_LostOpen.png b/indra/newview/skins/default/textures/icons/Inv_LostOpen.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Inv_Mesh.png b/indra/newview/skins/default/textures/icons/Inv_Mesh.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Inv_Notecard.png b/indra/newview/skins/default/textures/icons/Inv_Notecard.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Inv_Object.png b/indra/newview/skins/default/textures/icons/Inv_Object.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Inv_Object_Multi.png b/indra/newview/skins/default/textures/icons/Inv_Object_Multi.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Inv_Pants.png b/indra/newview/skins/default/textures/icons/Inv_Pants.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Inv_Physics.png b/indra/newview/skins/default/textures/icons/Inv_Physics.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Inv_Script.png b/indra/newview/skins/default/textures/icons/Inv_Script.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Inv_Shirt.png b/indra/newview/skins/default/textures/icons/Inv_Shirt.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Inv_Shoe.png b/indra/newview/skins/default/textures/icons/Inv_Shoe.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Inv_Skin.png b/indra/newview/skins/default/textures/icons/Inv_Skin.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Inv_Skirt.png b/indra/newview/skins/default/textures/icons/Inv_Skirt.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Inv_Snapshot.png b/indra/newview/skins/default/textures/icons/Inv_Snapshot.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Inv_Socks.png b/indra/newview/skins/default/textures/icons/Inv_Socks.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Inv_Sound.png b/indra/newview/skins/default/textures/icons/Inv_Sound.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Inv_SysClosed.png b/indra/newview/skins/default/textures/icons/Inv_SysClosed.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Inv_SysOpen.png b/indra/newview/skins/default/textures/icons/Inv_SysOpen.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Inv_Tattoo.png b/indra/newview/skins/default/textures/icons/Inv_Tattoo.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Inv_Texture.png b/indra/newview/skins/default/textures/icons/Inv_Texture.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Inv_TrashClosed.png b/indra/newview/skins/default/textures/icons/Inv_TrashClosed.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Inv_TrashOpen.png b/indra/newview/skins/default/textures/icons/Inv_TrashOpen.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Inv_Underpants.png b/indra/newview/skins/default/textures/icons/Inv_Underpants.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Inv_Undershirt.png b/indra/newview/skins/default/textures/icons/Inv_Undershirt.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/List_View_Disabled.png b/indra/newview/skins/default/textures/icons/List_View_Disabled.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/List_View_On.png b/indra/newview/skins/default/textures/icons/List_View_On.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Lock.png b/indra/newview/skins/default/textures/icons/Lock.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Locked_Icon.png b/indra/newview/skins/default/textures/icons/Locked_Icon.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Male.png b/indra/newview/skins/default/textures/icons/Male.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Microphone_On.png b/indra/newview/skins/default/textures/icons/Microphone_On.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/MinusItem_Disabled.png b/indra/newview/skins/default/textures/icons/MinusItem_Disabled.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/MinusItem_Off.png b/indra/newview/skins/default/textures/icons/MinusItem_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/MinusItem_Press.png b/indra/newview/skins/default/textures/icons/MinusItem_Press.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/OptionsMenu_Disabled.png b/indra/newview/skins/default/textures/icons/OptionsMenu_Disabled.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/OptionsMenu_Off.png b/indra/newview/skins/default/textures/icons/OptionsMenu_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/OptionsMenu_Press.png b/indra/newview/skins/default/textures/icons/OptionsMenu_Press.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/OutboxPush_Disabled.png b/indra/newview/skins/default/textures/icons/OutboxPush_Disabled.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/OutboxPush_Off.png b/indra/newview/skins/default/textures/icons/OutboxPush_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/OutboxPush_On.png b/indra/newview/skins/default/textures/icons/OutboxPush_On.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/OutboxPush_On_Over.png b/indra/newview/skins/default/textures/icons/OutboxPush_On_Over.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/OutboxPush_Over.png b/indra/newview/skins/default/textures/icons/OutboxPush_Over.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/OutboxPush_Press.png b/indra/newview/skins/default/textures/icons/OutboxPush_Press.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/OutboxPush_Progress_1.png b/indra/newview/skins/default/textures/icons/OutboxPush_Progress_1.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/OutboxPush_Progress_2.png b/indra/newview/skins/default/textures/icons/OutboxPush_Progress_2.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/OutboxPush_Progress_3.png b/indra/newview/skins/default/textures/icons/OutboxPush_Progress_3.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/OutboxPush_Progress_4.png b/indra/newview/skins/default/textures/icons/OutboxPush_Progress_4.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/OutboxPush_Progress_5.png b/indra/newview/skins/default/textures/icons/OutboxPush_Progress_5.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/OutboxPush_Progress_6.png b/indra/newview/skins/default/textures/icons/OutboxPush_Progress_6.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/OutboxPush_Selected.png b/indra/newview/skins/default/textures/icons/OutboxPush_Selected.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/OutboxPush_Selected_Disabled.png b/indra/newview/skins/default/textures/icons/OutboxPush_Selected_Disabled.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/OutboxPush_Selected_Over.png b/indra/newview/skins/default/textures/icons/OutboxPush_Selected_Over.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/OutboxPush_Selected_Press.png b/indra/newview/skins/default/textures/icons/OutboxPush_Selected_Press.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Parcel_BuildNo_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_BuildNo_Dark.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Parcel_BuildNo_Light.png b/indra/newview/skins/default/textures/icons/Parcel_BuildNo_Light.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Parcel_Build_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_Build_Dark.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Parcel_DamageNo_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_DamageNo_Dark.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Parcel_Damage_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_Damage_Dark.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Parcel_Exp_Color.png b/indra/newview/skins/default/textures/icons/Parcel_Exp_Color.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Parcel_FlyNo_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_FlyNo_Dark.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Parcel_FlyNo_Light.png b/indra/newview/skins/default/textures/icons/Parcel_FlyNo_Light.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Parcel_Fly_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_Fly_Dark.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Parcel_ForSale_Light.png b/indra/newview/skins/default/textures/icons/Parcel_ForSale_Light.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Parcel_Health_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_Health_Dark.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Parcel_M_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_M_Dark.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Parcel_M_Light.png b/indra/newview/skins/default/textures/icons/Parcel_M_Light.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Parcel_PG_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_PG_Dark.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Parcel_PG_Light.png b/indra/newview/skins/default/textures/icons/Parcel_PG_Light.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Parcel_PushNo_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_PushNo_Dark.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Parcel_PushNo_Light.png b/indra/newview/skins/default/textures/icons/Parcel_PushNo_Light.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Parcel_Push_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_Push_Dark.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Parcel_R_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_R_Dark.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Parcel_R_Light.png b/indra/newview/skins/default/textures/icons/Parcel_R_Light.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Parcel_ScriptsNo_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_ScriptsNo_Dark.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Parcel_Scripts_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_Scripts_Dark.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Parcel_SeeAVsOff_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_SeeAVsOff_Dark.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Parcel_SeeAVsOff_Light.png b/indra/newview/skins/default/textures/icons/Parcel_SeeAVsOff_Light.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Parcel_SeeAVsOn_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_SeeAVsOn_Dark.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Parcel_SeeAVsOn_Light.png b/indra/newview/skins/default/textures/icons/Parcel_SeeAVsOn_Light.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Parcel_VoiceNo_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_VoiceNo_Dark.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Parcel_VoiceNo_Light.png b/indra/newview/skins/default/textures/icons/Parcel_VoiceNo_Light.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Parcel_Voice_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_Voice_Dark.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Parcel_Voice_Light.png b/indra/newview/skins/default/textures/icons/Parcel_Voice_Light.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Pathfinding_Dirty.png b/indra/newview/skins/default/textures/icons/Pathfinding_Dirty.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Pathfinding_Disabled.png b/indra/newview/skins/default/textures/icons/Pathfinding_Disabled.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Pause_Off.png b/indra/newview/skins/default/textures/icons/Pause_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Pause_Over.png b/indra/newview/skins/default/textures/icons/Pause_Over.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Pause_Press.png b/indra/newview/skins/default/textures/icons/Pause_Press.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Person_Check.png b/indra/newview/skins/default/textures/icons/Person_Check.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Person_Star.png b/indra/newview/skins/default/textures/icons/Person_Star.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Play_Off.png b/indra/newview/skins/default/textures/icons/Play_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Play_Over.png b/indra/newview/skins/default/textures/icons/Play_Over.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Play_Press.png b/indra/newview/skins/default/textures/icons/Play_Press.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Progress_1.png b/indra/newview/skins/default/textures/icons/Progress_1.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Progress_10.png b/indra/newview/skins/default/textures/icons/Progress_10.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Progress_11.png b/indra/newview/skins/default/textures/icons/Progress_11.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Progress_12.png b/indra/newview/skins/default/textures/icons/Progress_12.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Progress_2.png b/indra/newview/skins/default/textures/icons/Progress_2.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Progress_3.png b/indra/newview/skins/default/textures/icons/Progress_3.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Progress_4.png b/indra/newview/skins/default/textures/icons/Progress_4.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Progress_5.png b/indra/newview/skins/default/textures/icons/Progress_5.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Progress_6.png b/indra/newview/skins/default/textures/icons/Progress_6.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Progress_7.png b/indra/newview/skins/default/textures/icons/Progress_7.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Progress_8.png b/indra/newview/skins/default/textures/icons/Progress_8.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Progress_9.png b/indra/newview/skins/default/textures/icons/Progress_9.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Refresh_Off.png b/indra/newview/skins/default/textures/icons/Refresh_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/SL_Logo.png b/indra/newview/skins/default/textures/icons/SL_Logo.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Search_Icon.png b/indra/newview/skins/default/textures/icons/Search_Icon.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Shirt_Large.png b/indra/newview/skins/default/textures/icons/Shirt_Large.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Shop.png b/indra/newview/skins/default/textures/icons/Shop.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/SkipBackward_Off.png b/indra/newview/skins/default/textures/icons/SkipBackward_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/SkipForward_Off.png b/indra/newview/skins/default/textures/icons/SkipForward_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/StopReload_Off.png b/indra/newview/skins/default/textures/icons/StopReload_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/StopReload_Over.png b/indra/newview/skins/default/textures/icons/StopReload_Over.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Stop_Off.png b/indra/newview/skins/default/textures/icons/Stop_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Sync_Disabled.png b/indra/newview/skins/default/textures/icons/Sync_Disabled.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Sync_Enabled.png b/indra/newview/skins/default/textures/icons/Sync_Enabled.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Sync_Progress_1.png b/indra/newview/skins/default/textures/icons/Sync_Progress_1.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Sync_Progress_2.png b/indra/newview/skins/default/textures/icons/Sync_Progress_2.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Sync_Progress_3.png b/indra/newview/skins/default/textures/icons/Sync_Progress_3.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Sync_Progress_4.png b/indra/newview/skins/default/textures/icons/Sync_Progress_4.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Sync_Progress_5.png b/indra/newview/skins/default/textures/icons/Sync_Progress_5.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Sync_Progress_6.png b/indra/newview/skins/default/textures/icons/Sync_Progress_6.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/TrashItem_Disabled.png b/indra/newview/skins/default/textures/icons/TrashItem_Disabled.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/TrashItem_Off.png b/indra/newview/skins/default/textures/icons/TrashItem_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/TrashItem_Press.png b/indra/newview/skins/default/textures/icons/TrashItem_Press.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/UnZoom_Off.png b/indra/newview/skins/default/textures/icons/UnZoom_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/UpArrow_Off.png b/indra/newview/skins/default/textures/icons/UpArrow_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/VoicePTT_Lvl1.png b/indra/newview/skins/default/textures/icons/VoicePTT_Lvl1.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/VoicePTT_Lvl2.png b/indra/newview/skins/default/textures/icons/VoicePTT_Lvl2.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/VoicePTT_Lvl3.png b/indra/newview/skins/default/textures/icons/VoicePTT_Lvl3.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/VoicePTT_Off.png b/indra/newview/skins/default/textures/icons/VoicePTT_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/VoicePTT_On.png b/indra/newview/skins/default/textures/icons/VoicePTT_On.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Web_Profile_Off.png b/indra/newview/skins/default/textures/icons/Web_Profile_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/YouAreHere_Badge.png b/indra/newview/skins/default/textures/icons/YouAreHere_Badge.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/Zoom_Off.png b/indra/newview/skins/default/textures/icons/Zoom_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/avaline_default_icon.jpg b/indra/newview/skins/default/textures/icons/avaline_default_icon.jpg
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/back_arrow_off.png b/indra/newview/skins/default/textures/icons/back_arrow_off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/back_arrow_over.png b/indra/newview/skins/default/textures/icons/back_arrow_over.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/back_arrow_press.png b/indra/newview/skins/default/textures/icons/back_arrow_press.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/check_mark.png b/indra/newview/skins/default/textures/icons/check_mark.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/collapse_to_one_line.png b/indra/newview/skins/default/textures/icons/collapse_to_one_line.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/edit_mine.png b/indra/newview/skins/default/textures/icons/edit_mine.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/edit_theirs.png b/indra/newview/skins/default/textures/icons/edit_theirs.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/expand_one_liner.png b/indra/newview/skins/default/textures/icons/expand_one_liner.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/nearby_chat_icon.png b/indra/newview/skins/default/textures/icons/nearby_chat_icon.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/object_icon.png b/indra/newview/skins/default/textures/icons/object_icon.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/pop_up_caution.png b/indra/newview/skins/default/textures/icons/pop_up_caution.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/see_me_online.png b/indra/newview/skins/default/textures/icons/see_me_online.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/see_on_map.png b/indra/newview/skins/default/textures/icons/see_on_map.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/icons/unknown_icon.png b/indra/newview/skins/default/textures/icons/unknown_icon.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/jump_left_in.tga b/indra/newview/skins/default/textures/jump_left_in.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/jump_left_out.tga b/indra/newview/skins/default/textures/jump_left_out.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/jump_right_in.tga b/indra/newview/skins/default/textures/jump_right_in.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/jump_right_out.tga b/indra/newview/skins/default/textures/jump_right_out.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/lag_status_critical.tga b/indra/newview/skins/default/textures/lag_status_critical.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/lag_status_good.tga b/indra/newview/skins/default/textures/lag_status_good.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/lag_status_warning.tga b/indra/newview/skins/default/textures/lag_status_warning.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/legend.tga b/indra/newview/skins/default/textures/legend.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/locked_image.j2c b/indra/newview/skins/default/textures/locked_image.j2c
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/map_avatar_16.tga b/indra/newview/skins/default/textures/map_avatar_16.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/map_avatar_32.tga b/indra/newview/skins/default/textures/map_avatar_32.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/map_avatar_8.tga b/indra/newview/skins/default/textures/map_avatar_8.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/map_avatar_above_32.tga b/indra/newview/skins/default/textures/map_avatar_above_32.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/map_avatar_below_32.tga b/indra/newview/skins/default/textures/map_avatar_below_32.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/map_avatar_unknown_32.tga b/indra/newview/skins/default/textures/map_avatar_unknown_32.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/map_avatar_you_32.tga b/indra/newview/skins/default/textures/map_avatar_you_32.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/map_event.tga b/indra/newview/skins/default/textures/map_event.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/map_home.tga b/indra/newview/skins/default/textures/map_home.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/map_infohub.tga b/indra/newview/skins/default/textures/map_infohub.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/map_telehub.tga b/indra/newview/skins/default/textures/map_telehub.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/map_track_16.tga b/indra/newview/skins/default/textures/map_track_16.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/menu_separator.png b/indra/newview/skins/default/textures/menu_separator.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/missing_asset.tga b/indra/newview/skins/default/textures/missing_asset.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/model_wizard/progress_bar_bg.png b/indra/newview/skins/default/textures/model_wizard/progress_bar_bg.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/model_wizard/progress_light.png b/indra/newview/skins/default/textures/model_wizard/progress_light.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/navbar/Arrow_Left_Off.png b/indra/newview/skins/default/textures/navbar/Arrow_Left_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/navbar/Arrow_Right_Off.png b/indra/newview/skins/default/textures/navbar/Arrow_Right_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/navbar/BuyArrow_Over.png b/indra/newview/skins/default/textures/navbar/BuyArrow_Over.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/navbar/BuyArrow_Press.png b/indra/newview/skins/default/textures/navbar/BuyArrow_Press.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/navbar/Favorite_Link_Over.png b/indra/newview/skins/default/textures/navbar/Favorite_Link_Over.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/navbar/Favorite_Star_Active.png b/indra/newview/skins/default/textures/navbar/Favorite_Star_Active.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/navbar/Favorite_Star_Off.png b/indra/newview/skins/default/textures/navbar/Favorite_Star_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/navbar/Favorite_Star_Over.png b/indra/newview/skins/default/textures/navbar/Favorite_Star_Over.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/navbar/Favorite_Star_Press.png b/indra/newview/skins/default/textures/navbar/Favorite_Star_Press.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/navbar/FileMenu_Divider.png b/indra/newview/skins/default/textures/navbar/FileMenu_Divider.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/navbar/Flag.png b/indra/newview/skins/default/textures/navbar/Flag.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/navbar/Help_Press.png b/indra/newview/skins/default/textures/navbar/Help_Press.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/navbar/Home_Off.png b/indra/newview/skins/default/textures/navbar/Home_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/navbar/Info_Off.png b/indra/newview/skins/default/textures/navbar/Info_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/navbar/Info_Over.png b/indra/newview/skins/default/textures/navbar/Info_Over.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/navbar/Info_Press.png b/indra/newview/skins/default/textures/navbar/Info_Press.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/navbar/Lock.png b/indra/newview/skins/default/textures/navbar/Lock.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/navbar/NavBar_BG.png b/indra/newview/skins/default/textures/navbar/NavBar_BG.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/navbar/NavBar_BG_NoFav_Bevel.png b/indra/newview/skins/default/textures/navbar/NavBar_BG_NoFav_Bevel.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/navbar/NavBar_BG_NoNav_Bevel.png b/indra/newview/skins/default/textures/navbar/NavBar_BG_NoNav_Bevel.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/navbar/Row_Selection.png b/indra/newview/skins/default/textures/navbar/Row_Selection.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/navbar/Search.png b/indra/newview/skins/default/textures/navbar/Search.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/navbar/separator.png b/indra/newview/skins/default/textures/navbar/separator.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/notify_caution_icon.tga b/indra/newview/skins/default/textures/notify_caution_icon.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/pixiesmall.j2c b/indra/newview/skins/default/textures/pixiesmall.j2c
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/red_x.png b/indra/newview/skins/default/textures/red_x.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/rounded_square.j2c b/indra/newview/skins/default/textures/rounded_square.j2c
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/script_error.j2c b/indra/newview/skins/default/textures/script_error.j2c
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/silhouette.j2c b/indra/newview/skins/default/textures/silhouette.j2c
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/slim_icon_16_viewer.tga b/indra/newview/skins/default/textures/slim_icon_16_viewer.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/snapshot_download.png b/indra/newview/skins/default/textures/snapshot_download.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/snapshot_email.png b/indra/newview/skins/default/textures/snapshot_email.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/spacer24.tga b/indra/newview/skins/default/textures/spacer24.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/tabarea.tga b/indra/newview/skins/default/textures/tabarea.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/taskpanel/Activate_Checkmark.png b/indra/newview/skins/default/textures/taskpanel/Activate_Checkmark.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/taskpanel/Sidebar_Icon_Dock_Foreground.png b/indra/newview/skins/default/textures/taskpanel/Sidebar_Icon_Dock_Foreground.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/taskpanel/Sidebar_Icon_Dock_Press.png b/indra/newview/skins/default/textures/taskpanel/Sidebar_Icon_Dock_Press.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/taskpanel/Sidebar_Icon_Undock_Foreground.png b/indra/newview/skins/default/textures/taskpanel/Sidebar_Icon_Undock_Foreground.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/taskpanel/Sidebar_Icon_Undock_Press.png b/indra/newview/skins/default/textures/taskpanel/Sidebar_Icon_Undock_Press.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/taskpanel/TabIcon_Close_Off.png b/indra/newview/skins/default/textures/taskpanel/TabIcon_Close_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/taskpanel/TabIcon_Home_Selected.png b/indra/newview/skins/default/textures/taskpanel/TabIcon_Home_Selected.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/taskpanel/TabIcon_Me_Off.png b/indra/newview/skins/default/textures/taskpanel/TabIcon_Me_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/taskpanel/TabIcon_Open_Off.png b/indra/newview/skins/default/textures/taskpanel/TabIcon_Open_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/taskpanel/TabIcon_People_Off.png b/indra/newview/skins/default/textures/taskpanel/TabIcon_People_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/taskpanel/TabIcon_Places_Off.png b/indra/newview/skins/default/textures/taskpanel/TabIcon_Places_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/taskpanel/TabIcon_Things_Off.png b/indra/newview/skins/default/textures/taskpanel/TabIcon_Things_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/taskpanel/TaskPanel_Tab_Off.png b/indra/newview/skins/default/textures/taskpanel/TaskPanel_Tab_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/taskpanel/TaskPanel_Tab_Selected.png b/indra/newview/skins/default/textures/taskpanel/TaskPanel_Tab_Selected.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/tearoff_pressed.tga b/indra/newview/skins/default/textures/tearoff_pressed.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/tearoffbox.tga b/indra/newview/skins/default/textures/tearoffbox.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/toolbar_icons/appearance.png b/indra/newview/skins/default/textures/toolbar_icons/appearance.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/toolbar_icons/avatars.png b/indra/newview/skins/default/textures/toolbar_icons/avatars.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/toolbar_icons/build.png b/indra/newview/skins/default/textures/toolbar_icons/build.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/toolbar_icons/caret_bottom.png b/indra/newview/skins/default/textures/toolbar_icons/caret_bottom.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/toolbar_icons/caret_left.png b/indra/newview/skins/default/textures/toolbar_icons/caret_left.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/toolbar_icons/caret_right.png b/indra/newview/skins/default/textures/toolbar_icons/caret_right.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/toolbar_icons/chat.png b/indra/newview/skins/default/textures/toolbar_icons/chat.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/toolbar_icons/destinations.png b/indra/newview/skins/default/textures/toolbar_icons/destinations.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/toolbar_icons/gestures.png b/indra/newview/skins/default/textures/toolbar_icons/gestures.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/toolbar_icons/howto.png b/indra/newview/skins/default/textures/toolbar_icons/howto.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/toolbar_icons/inventory.png b/indra/newview/skins/default/textures/toolbar_icons/inventory.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/toolbar_icons/land.png b/indra/newview/skins/default/textures/toolbar_icons/land.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/toolbar_icons/map.png b/indra/newview/skins/default/textures/toolbar_icons/map.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/toolbar_icons/marketplace.png b/indra/newview/skins/default/textures/toolbar_icons/marketplace.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/toolbar_icons/mini_cart.png b/indra/newview/skins/default/textures/toolbar_icons/mini_cart.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/toolbar_icons/mini_map.png b/indra/newview/skins/default/textures/toolbar_icons/mini_map.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/toolbar_icons/move.png b/indra/newview/skins/default/textures/toolbar_icons/move.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/toolbar_icons/nearbyvoice.png b/indra/newview/skins/default/textures/toolbar_icons/nearbyvoice.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/toolbar_icons/outbox.png b/indra/newview/skins/default/textures/toolbar_icons/outbox.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/toolbar_icons/people.png b/indra/newview/skins/default/textures/toolbar_icons/people.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/toolbar_icons/picks.png b/indra/newview/skins/default/textures/toolbar_icons/picks.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/toolbar_icons/places.png b/indra/newview/skins/default/textures/toolbar_icons/places.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/toolbar_icons/preferences.png b/indra/newview/skins/default/textures/toolbar_icons/preferences.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/toolbar_icons/profile.png b/indra/newview/skins/default/textures/toolbar_icons/profile.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/toolbar_icons/search.png b/indra/newview/skins/default/textures/toolbar_icons/search.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/toolbar_icons/snapshot.png b/indra/newview/skins/default/textures/toolbar_icons/snapshot.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/toolbar_icons/speak.png b/indra/newview/skins/default/textures/toolbar_icons/speak.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/toolbar_icons/view.png b/indra/newview/skins/default/textures/toolbar_icons/view.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/transparent.j2c b/indra/newview/skins/default/textures/transparent.j2c
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/up_arrow.png b/indra/newview/skins/default/textures/up_arrow.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/uv_test1.j2c b/indra/newview/skins/default/textures/uv_test1.j2c
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/uv_test2.tga b/indra/newview/skins/default/textures/uv_test2.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/voice_meter_dot.j2c b/indra/newview/skins/default/textures/voice_meter_dot.j2c
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/voice_meter_rings.j2c b/indra/newview/skins/default/textures/voice_meter_rings.j2c
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/white.tga b/indra/newview/skins/default/textures/white.tga
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/Arrow_Down.png b/indra/newview/skins/default/textures/widgets/Arrow_Down.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/Arrow_Left.png b/indra/newview/skins/default/textures/widgets/Arrow_Left.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/Arrow_Right.png b/indra/newview/skins/default/textures/widgets/Arrow_Right.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/Arrow_Small_Left.png b/indra/newview/skins/default/textures/widgets/Arrow_Small_Left.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/Arrow_Small_Right.png b/indra/newview/skins/default/textures/widgets/Arrow_Small_Right.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/Arrow_Small_Up.png b/indra/newview/skins/default/textures/widgets/Arrow_Small_Up.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/Arrow_Up.png b/indra/newview/skins/default/textures/widgets/Arrow_Up.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/Badge_Background.png b/indra/newview/skins/default/textures/widgets/Badge_Background.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/Badge_Border.png b/indra/newview/skins/default/textures/widgets/Badge_Border.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Disabled.png b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Disabled.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Off.png b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Over.png b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Over.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Press.png b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Press.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Disabled.png b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Disabled.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Off.png b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Over.png b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Over.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Press.png b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Press.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Disabled.png b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Disabled.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Off.png b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Over.png b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Over.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Press.png b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Press.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/Checkbox_Disabled.png b/indra/newview/skins/default/textures/widgets/Checkbox_Disabled.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/Checkbox_Off.png b/indra/newview/skins/default/textures/widgets/Checkbox_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/Checkbox_On.png b/indra/newview/skins/default/textures/widgets/Checkbox_On.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/Checkbox_On_Disabled.png b/indra/newview/skins/default/textures/widgets/Checkbox_On_Disabled.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/Checkbox_On_Press.png b/indra/newview/skins/default/textures/widgets/Checkbox_On_Press.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/Checkbox_Press.png b/indra/newview/skins/default/textures/widgets/Checkbox_Press.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/ComboButton_Disabled.png b/indra/newview/skins/default/textures/widgets/ComboButton_Disabled.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/ComboButton_Off.png b/indra/newview/skins/default/textures/widgets/ComboButton_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/ComboButton_On.png b/indra/newview/skins/default/textures/widgets/ComboButton_On.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/ComboButton_Selected.png b/indra/newview/skins/default/textures/widgets/ComboButton_Selected.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/ComboButton_UpOff.png b/indra/newview/skins/default/textures/widgets/ComboButton_UpOff.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/ComboButton_UpSelected.png b/indra/newview/skins/default/textures/widgets/ComboButton_UpSelected.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/DisclosureArrow_Opened_Off.png b/indra/newview/skins/default/textures/widgets/DisclosureArrow_Opened_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/DropDown_Disabled.png b/indra/newview/skins/default/textures/widgets/DropDown_Disabled.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/DropDown_Off.png b/indra/newview/skins/default/textures/widgets/DropDown_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/DropDown_On.png b/indra/newview/skins/default/textures/widgets/DropDown_On.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/DropDown_Press.png b/indra/newview/skins/default/textures/widgets/DropDown_Press.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/DropTarget.png b/indra/newview/skins/default/textures/widgets/DropTarget.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/Error_Tag_Background.png b/indra/newview/skins/default/textures/widgets/Error_Tag_Background.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/Linden_Dollar_Alert.png b/indra/newview/skins/default/textures/widgets/Linden_Dollar_Alert.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/Linden_Dollar_Background.png b/indra/newview/skins/default/textures/widgets/Linden_Dollar_Background.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/ListItem_Over.png b/indra/newview/skins/default/textures/widgets/ListItem_Over.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/ListItem_Select.png b/indra/newview/skins/default/textures/widgets/ListItem_Select.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/MarketplaceBtn_Off.png b/indra/newview/skins/default/textures/widgets/MarketplaceBtn_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/MarketplaceBtn_Selected.png b/indra/newview/skins/default/textures/widgets/MarketplaceBtn_Selected.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/New_Tag_Background.png b/indra/newview/skins/default/textures/widgets/New_Tag_Background.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/New_Tag_Border.png b/indra/newview/skins/default/textures/widgets/New_Tag_Border.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/ProgressBar.png b/indra/newview/skins/default/textures/widgets/ProgressBar.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/ProgressTrack.png b/indra/newview/skins/default/textures/widgets/ProgressTrack.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/PushButton_Disabled.png b/indra/newview/skins/default/textures/widgets/PushButton_Disabled.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/PushButton_Off.png b/indra/newview/skins/default/textures/widgets/PushButton_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/PushButton_On.png b/indra/newview/skins/default/textures/widgets/PushButton_On.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/PushButton_On_Selected.png b/indra/newview/skins/default/textures/widgets/PushButton_On_Selected.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/PushButton_Over.png b/indra/newview/skins/default/textures/widgets/PushButton_Over.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/PushButton_Press.png b/indra/newview/skins/default/textures/widgets/PushButton_Press.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/PushButton_Selected.png b/indra/newview/skins/default/textures/widgets/PushButton_Selected.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/PushButton_Selected_Disabled.png b/indra/newview/skins/default/textures/widgets/PushButton_Selected_Disabled.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/PushButton_Selected_Press.png b/indra/newview/skins/default/textures/widgets/PushButton_Selected_Press.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/RadioButton_Disabled.png b/indra/newview/skins/default/textures/widgets/RadioButton_Disabled.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/RadioButton_Off.png b/indra/newview/skins/default/textures/widgets/RadioButton_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/RadioButton_On.png b/indra/newview/skins/default/textures/widgets/RadioButton_On.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/RadioButton_On_Disabled.png b/indra/newview/skins/default/textures/widgets/RadioButton_On_Disabled.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/RadioButton_On_Press.png b/indra/newview/skins/default/textures/widgets/RadioButton_On_Press.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/RadioButton_Press.png b/indra/newview/skins/default/textures/widgets/RadioButton_Press.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/ScrollArrow_Down.png b/indra/newview/skins/default/textures/widgets/ScrollArrow_Down.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/ScrollArrow_Down_Opaque.png b/indra/newview/skins/default/textures/widgets/ScrollArrow_Down_Opaque.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/ScrollArrow_Down_Over_Opaque.png b/indra/newview/skins/default/textures/widgets/ScrollArrow_Down_Over_Opaque.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/ScrollArrow_Left.png b/indra/newview/skins/default/textures/widgets/ScrollArrow_Left.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/ScrollArrow_Left_Opaque.png b/indra/newview/skins/default/textures/widgets/ScrollArrow_Left_Opaque.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/ScrollArrow_Left_Over_Opaque.png b/indra/newview/skins/default/textures/widgets/ScrollArrow_Left_Over_Opaque.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/ScrollArrow_Right.png b/indra/newview/skins/default/textures/widgets/ScrollArrow_Right.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/ScrollArrow_Right_Opaque.png b/indra/newview/skins/default/textures/widgets/ScrollArrow_Right_Opaque.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/ScrollArrow_Right_Over_Opaque.png b/indra/newview/skins/default/textures/widgets/ScrollArrow_Right_Over_Opaque.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/ScrollArrow_Up.png b/indra/newview/skins/default/textures/widgets/ScrollArrow_Up.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/ScrollArrow_Up_Opaque.png b/indra/newview/skins/default/textures/widgets/ScrollArrow_Up_Opaque.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/ScrollArrow_Up_Over_Opaque.png b/indra/newview/skins/default/textures/widgets/ScrollArrow_Up_Over_Opaque.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/ScrollThumb_Horiz.png b/indra/newview/skins/default/textures/widgets/ScrollThumb_Horiz.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/ScrollThumb_Vert.png b/indra/newview/skins/default/textures/widgets/ScrollThumb_Vert.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/ScrollTrack_Horiz.png b/indra/newview/skins/default/textures/widgets/ScrollTrack_Horiz.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/ScrollTrack_Vert.png b/indra/newview/skins/default/textures/widgets/ScrollTrack_Vert.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Disabled.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Disabled.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Off.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Over.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Over.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Press.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Press.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Selected.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Selected.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Selected_Disabled.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Selected_Disabled.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Selected_Over.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Selected_Over.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Selected_Press.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Selected_Press.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_Disabled.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_Disabled.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_Selected.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_Selected.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_Selected_Disabled.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_Selected_Disabled.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_Selected_Press.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_Selected_Press.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Disabled.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Disabled.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Off.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_On_Selected.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_On_Selected.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Over.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Over.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Press.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Press.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Selected.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Selected.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Selected_Disabled.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Selected_Disabled.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Selected_Press.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Selected_Press.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/SliderThumb_Disabled.png b/indra/newview/skins/default/textures/widgets/SliderThumb_Disabled.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/SliderThumb_Off.png b/indra/newview/skins/default/textures/widgets/SliderThumb_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/SliderThumb_Press.png b/indra/newview/skins/default/textures/widgets/SliderThumb_Press.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/SliderTrack_Horiz.png b/indra/newview/skins/default/textures/widgets/SliderTrack_Horiz.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/SliderTrack_Vert.png b/indra/newview/skins/default/textures/widgets/SliderTrack_Vert.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/Stepper_Down_Off.png b/indra/newview/skins/default/textures/widgets/Stepper_Down_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/Stepper_Down_Press.png b/indra/newview/skins/default/textures/widgets/Stepper_Down_Press.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/Stepper_Up_Off.png b/indra/newview/skins/default/textures/widgets/Stepper_Up_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/Stepper_Up_Press.png b/indra/newview/skins/default/textures/widgets/Stepper_Up_Press.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/TextField_Active.png b/indra/newview/skins/default/textures/widgets/TextField_Active.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/TextField_Disabled.png b/indra/newview/skins/default/textures/widgets/TextField_Disabled.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/TextField_Off.png b/indra/newview/skins/default/textures/widgets/TextField_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/TextField_Search_Active.png b/indra/newview/skins/default/textures/widgets/TextField_Search_Active.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/TextField_Search_Disabled.png b/indra/newview/skins/default/textures/widgets/TextField_Search_Disabled.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/TextField_Search_Off.png b/indra/newview/skins/default/textures/widgets/TextField_Search_Off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/Tooltip.png b/indra/newview/skins/default/textures/widgets/Tooltip.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/bevel_background.png b/indra/newview/skins/default/textures/widgets/bevel_background.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/buy_off.png b/indra/newview/skins/default/textures/widgets/buy_off.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/buy_over.png b/indra/newview/skins/default/textures/widgets/buy_over.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/buy_press.png b/indra/newview/skins/default/textures/widgets/buy_press.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/jump_left_in.png b/indra/newview/skins/default/textures/widgets/jump_left_in.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/jump_left_out.png b/indra/newview/skins/default/textures/widgets/jump_left_out.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/jump_right_in.png b/indra/newview/skins/default/textures/widgets/jump_right_in.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/widgets/jump_right_out.png b/indra/newview/skins/default/textures/widgets/jump_right_out.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/windows/Dragbar.png b/indra/newview/skins/default/textures/windows/Dragbar.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/windows/Flyout_Left.png b/indra/newview/skins/default/textures/windows/Flyout_Left.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/windows/Flyout_Pointer.png b/indra/newview/skins/default/textures/windows/Flyout_Pointer.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/windows/Flyout_Right.png b/indra/newview/skins/default/textures/windows/Flyout_Right.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/windows/Icon_Close_Foreground.png b/indra/newview/skins/default/textures/windows/Icon_Close_Foreground.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/windows/Icon_Close_Press.png b/indra/newview/skins/default/textures/windows/Icon_Close_Press.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/windows/Icon_Close_Toast.png b/indra/newview/skins/default/textures/windows/Icon_Close_Toast.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/windows/Icon_Dock_Foreground.png b/indra/newview/skins/default/textures/windows/Icon_Dock_Foreground.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/windows/Icon_Dock_Press.png b/indra/newview/skins/default/textures/windows/Icon_Dock_Press.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/windows/Icon_Gear_Background.png b/indra/newview/skins/default/textures/windows/Icon_Gear_Background.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/windows/Icon_Gear_Foreground.png b/indra/newview/skins/default/textures/windows/Icon_Gear_Foreground.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/windows/Icon_Gear_Press.png b/indra/newview/skins/default/textures/windows/Icon_Gear_Press.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/windows/Icon_Help_Foreground.png b/indra/newview/skins/default/textures/windows/Icon_Help_Foreground.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/windows/Icon_Help_Press.png b/indra/newview/skins/default/textures/windows/Icon_Help_Press.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/windows/Icon_Minimize_Foreground.png b/indra/newview/skins/default/textures/windows/Icon_Minimize_Foreground.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/windows/Icon_Minimize_Press.png b/indra/newview/skins/default/textures/windows/Icon_Minimize_Press.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/windows/Icon_Restore_Foreground.png b/indra/newview/skins/default/textures/windows/Icon_Restore_Foreground.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/windows/Icon_Restore_Press.png b/indra/newview/skins/default/textures/windows/Icon_Restore_Press.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/windows/Icon_Undock_Foreground.png b/indra/newview/skins/default/textures/windows/Icon_Undock_Foreground.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/windows/Inspector_Background.png b/indra/newview/skins/default/textures/windows/Inspector_Background.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/windows/Inspector_Hover.png b/indra/newview/skins/default/textures/windows/Inspector_Hover.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/windows/Inspector_I.png b/indra/newview/skins/default/textures/windows/Inspector_I.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/windows/Resize_Corner.png b/indra/newview/skins/default/textures/windows/Resize_Corner.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/windows/Toast_Background.png b/indra/newview/skins/default/textures/windows/Toast_Background.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/windows/Toast_CloseBtn.png b/indra/newview/skins/default/textures/windows/Toast_CloseBtn.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/windows/Toast_Over.png b/indra/newview/skins/default/textures/windows/Toast_Over.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/windows/Volume_Background.png b/indra/newview/skins/default/textures/windows/Volume_Background.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/windows/Wearables_Divider.png b/indra/newview/skins/default/textures/windows/Wearables_Divider.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/windows/Window_Background.png b/indra/newview/skins/default/textures/windows/Window_Background.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/windows/Window_Foreground.png b/indra/newview/skins/default/textures/windows/Window_Foreground.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/windows/Window_NoTitle_Background.png b/indra/newview/skins/default/textures/windows/Window_NoTitle_Background.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/windows/Window_NoTitle_Foreground.png b/indra/newview/skins/default/textures/windows/Window_NoTitle_Foreground.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/windows/hint_arrow_down.png b/indra/newview/skins/default/textures/windows/hint_arrow_down.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/windows/hint_arrow_left.png b/indra/newview/skins/default/textures/windows/hint_arrow_left.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/windows/hint_arrow_lower_left.png b/indra/newview/skins/default/textures/windows/hint_arrow_lower_left.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/windows/hint_arrow_right.png b/indra/newview/skins/default/textures/windows/hint_arrow_right.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/windows/hint_arrow_up.png b/indra/newview/skins/default/textures/windows/hint_arrow_up.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/windows/hint_background.png b/indra/newview/skins/default/textures/windows/hint_background.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/windows/startup_logo.png b/indra/newview/skins/default/textures/windows/startup_logo.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/windows/yellow_gradient.png b/indra/newview/skins/default/textures/windows/yellow_gradient.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/world/BeaconArrow.png b/indra/newview/skins/default/textures/world/BeaconArrow.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/world/CameraDragDot.png b/indra/newview/skins/default/textures/world/CameraDragDot.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/world/NoEntryLines.png b/indra/newview/skins/default/textures/world/NoEntryLines.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/textures/world/NoEntryPassLines.png b/indra/newview/skins/default/textures/world/NoEntryPassLines.png
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_about.xml b/indra/newview/skins/default/xui/da/floater_about.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_about_land.xml b/indra/newview/skins/default/xui/da/floater_about_land.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_activeim.xml b/indra/newview/skins/default/xui/da/floater_activeim.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_animation_preview.xml b/indra/newview/skins/default/xui/da/floater_animation_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_auction.xml b/indra/newview/skins/default/xui/da/floater_auction.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_avatar_picker.xml b/indra/newview/skins/default/xui/da/floater_avatar_picker.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_avatar_textures.xml b/indra/newview/skins/default/xui/da/floater_avatar_textures.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_beacons.xml b/indra/newview/skins/default/xui/da/floater_beacons.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_build_options.xml b/indra/newview/skins/default/xui/da/floater_build_options.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_bulk_perms.xml b/indra/newview/skins/default/xui/da/floater_bulk_perms.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_bumps.xml b/indra/newview/skins/default/xui/da/floater_bumps.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_buy_contents.xml b/indra/newview/skins/default/xui/da/floater_buy_contents.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_buy_currency.xml b/indra/newview/skins/default/xui/da/floater_buy_currency.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_buy_currency_html.xml b/indra/newview/skins/default/xui/da/floater_buy_currency_html.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_buy_land.xml b/indra/newview/skins/default/xui/da/floater_buy_land.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_buy_object.xml b/indra/newview/skins/default/xui/da/floater_buy_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_camera.xml b/indra/newview/skins/default/xui/da/floater_camera.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_choose_group.xml b/indra/newview/skins/default/xui/da/floater_choose_group.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_color_picker.xml b/indra/newview/skins/default/xui/da/floater_color_picker.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_critical.xml b/indra/newview/skins/default/xui/da/floater_critical.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_display_name.xml b/indra/newview/skins/default/xui/da/floater_display_name.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_event.xml b/indra/newview/skins/default/xui/da/floater_event.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_font_test.xml b/indra/newview/skins/default/xui/da/floater_font_test.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_gesture.xml b/indra/newview/skins/default/xui/da/floater_gesture.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_god_tools.xml b/indra/newview/skins/default/xui/da/floater_god_tools.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_hardware_settings.xml b/indra/newview/skins/default/xui/da/floater_hardware_settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_help_browser.xml b/indra/newview/skins/default/xui/da/floater_help_browser.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_hud.xml b/indra/newview/skins/default/xui/da/floater_hud.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_im_container.xml b/indra/newview/skins/default/xui/da/floater_im_container.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_im_session.xml b/indra/newview/skins/default/xui/da/floater_im_session.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_image_preview.xml b/indra/newview/skins/default/xui/da/floater_image_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_import_collada.xml b/indra/newview/skins/default/xui/da/floater_import_collada.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_incoming_call.xml b/indra/newview/skins/default/xui/da/floater_incoming_call.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_inspect.xml b/indra/newview/skins/default/xui/da/floater_inspect.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_inventory.xml b/indra/newview/skins/default/xui/da/floater_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/da/floater_inventory_item_properties.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/da/floater_inventory_view_finder.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_joystick.xml b/indra/newview/skins/default/xui/da/floater_joystick.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_lagmeter.xml b/indra/newview/skins/default/xui/da/floater_lagmeter.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_land_holdings.xml b/indra/newview/skins/default/xui/da/floater_land_holdings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/da/floater_live_lsleditor.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_lsl_guide.xml b/indra/newview/skins/default/xui/da/floater_lsl_guide.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_map.xml b/indra/newview/skins/default/xui/da/floater_map.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_media_browser.xml b/indra/newview/skins/default/xui/da/floater_media_browser.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_media_settings.xml b/indra/newview/skins/default/xui/da/floater_media_settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_mem_leaking.xml b/indra/newview/skins/default/xui/da/floater_mem_leaking.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_model_preview.xml b/indra/newview/skins/default/xui/da/floater_model_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_moveview.xml b/indra/newview/skins/default/xui/da/floater_moveview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_mute_object.xml b/indra/newview/skins/default/xui/da/floater_mute_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_nearby_chat.xml b/indra/newview/skins/default/xui/da/floater_nearby_chat.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_openobject.xml b/indra/newview/skins/default/xui/da/floater_openobject.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_outgoing_call.xml b/indra/newview/skins/default/xui/da/floater_outgoing_call.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_pay.xml b/indra/newview/skins/default/xui/da/floater_pay.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_pay_object.xml b/indra/newview/skins/default/xui/da/floater_pay_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_perm_prefs.xml b/indra/newview/skins/default/xui/da/floater_perm_prefs.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_postcard.xml b/indra/newview/skins/default/xui/da/floater_postcard.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_preferences.xml b/indra/newview/skins/default/xui/da/floater_preferences.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_preview_animation.xml b/indra/newview/skins/default/xui/da/floater_preview_animation.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_preview_gesture.xml b/indra/newview/skins/default/xui/da/floater_preview_gesture.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_preview_notecard.xml b/indra/newview/skins/default/xui/da/floater_preview_notecard.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_preview_sound.xml b/indra/newview/skins/default/xui/da/floater_preview_sound.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_preview_texture.xml b/indra/newview/skins/default/xui/da/floater_preview_texture.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_price_for_listing.xml b/indra/newview/skins/default/xui/da/floater_price_for_listing.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_publish_classified.xml b/indra/newview/skins/default/xui/da/floater_publish_classified.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_region_debug_console.xml b/indra/newview/skins/default/xui/da/floater_region_debug_console.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_region_info.xml b/indra/newview/skins/default/xui/da/floater_region_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_report_abuse.xml b/indra/newview/skins/default/xui/da/floater_report_abuse.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_script_debug.xml b/indra/newview/skins/default/xui/da/floater_script_debug.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_script_debug_panel.xml b/indra/newview/skins/default/xui/da/floater_script_debug_panel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_script_limits.xml b/indra/newview/skins/default/xui/da/floater_script_limits.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_script_preview.xml b/indra/newview/skins/default/xui/da/floater_script_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_script_queue.xml b/indra/newview/skins/default/xui/da/floater_script_queue.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_script_search.xml b/indra/newview/skins/default/xui/da/floater_script_search.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_search.xml b/indra/newview/skins/default/xui/da/floater_search.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_select_key.xml b/indra/newview/skins/default/xui/da/floater_select_key.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_sell_land.xml b/indra/newview/skins/default/xui/da/floater_sell_land.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_settings_debug.xml b/indra/newview/skins/default/xui/da/floater_settings_debug.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_snapshot.xml b/indra/newview/skins/default/xui/da/floater_snapshot.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_sound_devices.xml b/indra/newview/skins/default/xui/da/floater_sound_devices.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_sound_preview.xml b/indra/newview/skins/default/xui/da/floater_sound_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_stats.xml b/indra/newview/skins/default/xui/da/floater_stats.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_sys_well.xml b/indra/newview/skins/default/xui/da/floater_sys_well.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_telehub.xml b/indra/newview/skins/default/xui/da/floater_telehub.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/da/floater_texture_ctrl.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_tools.xml b/indra/newview/skins/default/xui/da/floater_tools.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_top_objects.xml b/indra/newview/skins/default/xui/da/floater_top_objects.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_tos.xml b/indra/newview/skins/default/xui/da/floater_tos.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_url_entry.xml b/indra/newview/skins/default/xui/da/floater_url_entry.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_voice_controls.xml b/indra/newview/skins/default/xui/da/floater_voice_controls.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_voice_effect.xml b/indra/newview/skins/default/xui/da/floater_voice_effect.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_web_content.xml b/indra/newview/skins/default/xui/da/floater_web_content.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_whitelist_entry.xml b/indra/newview/skins/default/xui/da/floater_whitelist_entry.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_window_size.xml b/indra/newview/skins/default/xui/da/floater_window_size.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/floater_world_map.xml b/indra/newview/skins/default/xui/da/floater_world_map.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/inspect_avatar.xml b/indra/newview/skins/default/xui/da/inspect_avatar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/inspect_group.xml b/indra/newview/skins/default/xui/da/inspect_group.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/inspect_object.xml b/indra/newview/skins/default/xui/da/inspect_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/inspect_remote_object.xml b/indra/newview/skins/default/xui/da/inspect_remote_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/language_settings.xml b/indra/newview/skins/default/xui/da/language_settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_add_wearable_gear.xml b/indra/newview/skins/default/xui/da/menu_add_wearable_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_attachment_other.xml b/indra/newview/skins/default/xui/da/menu_attachment_other.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_attachment_self.xml b/indra/newview/skins/default/xui/da/menu_attachment_self.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_avatar_icon.xml b/indra/newview/skins/default/xui/da/menu_avatar_icon.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_avatar_other.xml b/indra/newview/skins/default/xui/da/menu_avatar_other.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_avatar_self.xml b/indra/newview/skins/default/xui/da/menu_avatar_self.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_bottomtray.xml b/indra/newview/skins/default/xui/da/menu_bottomtray.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_cof_attachment.xml b/indra/newview/skins/default/xui/da/menu_cof_attachment.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_cof_body_part.xml b/indra/newview/skins/default/xui/da/menu_cof_body_part.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_cof_clothing.xml b/indra/newview/skins/default/xui/da/menu_cof_clothing.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_cof_gear.xml b/indra/newview/skins/default/xui/da/menu_cof_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_edit.xml b/indra/newview/skins/default/xui/da/menu_edit.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_favorites.xml b/indra/newview/skins/default/xui/da/menu_favorites.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_gesture_gear.xml b/indra/newview/skins/default/xui/da/menu_gesture_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_group_plus.xml b/indra/newview/skins/default/xui/da/menu_group_plus.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_hide_navbar.xml b/indra/newview/skins/default/xui/da/menu_hide_navbar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_imchiclet_adhoc.xml b/indra/newview/skins/default/xui/da/menu_imchiclet_adhoc.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_imchiclet_group.xml b/indra/newview/skins/default/xui/da/menu_imchiclet_group.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_imchiclet_p2p.xml b/indra/newview/skins/default/xui/da/menu_imchiclet_p2p.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/da/menu_inspect_avatar_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_inspect_object_gear.xml b/indra/newview/skins/default/xui/da/menu_inspect_object_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_inspect_self_gear.xml b/indra/newview/skins/default/xui/da/menu_inspect_self_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_inv_offer_chiclet.xml b/indra/newview/skins/default/xui/da/menu_inv_offer_chiclet.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_inventory.xml b/indra/newview/skins/default/xui/da/menu_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_inventory_add.xml b/indra/newview/skins/default/xui/da/menu_inventory_add.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/da/menu_inventory_gear_default.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_land.xml b/indra/newview/skins/default/xui/da/menu_land.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_landmark.xml b/indra/newview/skins/default/xui/da/menu_landmark.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_login.xml b/indra/newview/skins/default/xui/da/menu_login.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_media_ctrl.xml b/indra/newview/skins/default/xui/da/menu_media_ctrl.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_mini_map.xml b/indra/newview/skins/default/xui/da/menu_mini_map.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_model_import_gear_default.xml b/indra/newview/skins/default/xui/da/menu_model_import_gear_default.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_navbar.xml b/indra/newview/skins/default/xui/da/menu_navbar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_nearby_chat.xml b/indra/newview/skins/default/xui/da/menu_nearby_chat.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_notification_well_button.xml b/indra/newview/skins/default/xui/da/menu_notification_well_button.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_object.xml b/indra/newview/skins/default/xui/da/menu_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_object_icon.xml b/indra/newview/skins/default/xui/da/menu_object_icon.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_outfit_gear.xml b/indra/newview/skins/default/xui/da/menu_outfit_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_outfit_tab.xml b/indra/newview/skins/default/xui/da/menu_outfit_tab.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_participant_list.xml b/indra/newview/skins/default/xui/da/menu_participant_list.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_people_friends_view_sort.xml b/indra/newview/skins/default/xui/da/menu_people_friends_view_sort.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_people_groups.xml b/indra/newview/skins/default/xui/da/menu_people_groups.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_people_groups_view_sort.xml b/indra/newview/skins/default/xui/da/menu_people_groups_view_sort.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_people_nearby.xml b/indra/newview/skins/default/xui/da/menu_people_nearby.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/da/menu_people_nearby_multiselect.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_people_nearby_view_sort.xml b/indra/newview/skins/default/xui/da/menu_people_nearby_view_sort.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_people_recent_view_sort.xml b/indra/newview/skins/default/xui/da/menu_people_recent_view_sort.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_picks.xml b/indra/newview/skins/default/xui/da/menu_picks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_picks_plus.xml b/indra/newview/skins/default/xui/da/menu_picks_plus.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_place.xml b/indra/newview/skins/default/xui/da/menu_place.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_place_add_button.xml b/indra/newview/skins/default/xui/da/menu_place_add_button.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_places_gear_folder.xml b/indra/newview/skins/default/xui/da/menu_places_gear_folder.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_places_gear_landmark.xml b/indra/newview/skins/default/xui/da/menu_places_gear_landmark.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_profile_overflow.xml b/indra/newview/skins/default/xui/da/menu_profile_overflow.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_save_outfit.xml b/indra/newview/skins/default/xui/da/menu_save_outfit.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_script_chiclet.xml b/indra/newview/skins/default/xui/da/menu_script_chiclet.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_slurl.xml b/indra/newview/skins/default/xui/da/menu_slurl.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_teleport_history_gear.xml b/indra/newview/skins/default/xui/da/menu_teleport_history_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_teleport_history_item.xml b/indra/newview/skins/default/xui/da/menu_teleport_history_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_teleport_history_tab.xml b/indra/newview/skins/default/xui/da/menu_teleport_history_tab.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_text_editor.xml b/indra/newview/skins/default/xui/da/menu_text_editor.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_topinfobar.xml b/indra/newview/skins/default/xui/da/menu_topinfobar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_url_agent.xml b/indra/newview/skins/default/xui/da/menu_url_agent.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_url_group.xml b/indra/newview/skins/default/xui/da/menu_url_group.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_url_http.xml b/indra/newview/skins/default/xui/da/menu_url_http.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_url_inventory.xml b/indra/newview/skins/default/xui/da/menu_url_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_url_map.xml b/indra/newview/skins/default/xui/da/menu_url_map.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_url_objectim.xml b/indra/newview/skins/default/xui/da/menu_url_objectim.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_url_parcel.xml b/indra/newview/skins/default/xui/da/menu_url_parcel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_url_slapp.xml b/indra/newview/skins/default/xui/da/menu_url_slapp.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_url_slurl.xml b/indra/newview/skins/default/xui/da/menu_url_slurl.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_url_teleport.xml b/indra/newview/skins/default/xui/da/menu_url_teleport.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_viewer.xml b/indra/newview/skins/default/xui/da/menu_viewer.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_wearable_list_item.xml b/indra/newview/skins/default/xui/da/menu_wearable_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_wearing_gear.xml b/indra/newview/skins/default/xui/da/menu_wearing_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/menu_wearing_tab.xml b/indra/newview/skins/default/xui/da/menu_wearing_tab.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/mime_types.xml b/indra/newview/skins/default/xui/da/mime_types.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/mime_types_linux.xml b/indra/newview/skins/default/xui/da/mime_types_linux.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/mime_types_mac.xml b/indra/newview/skins/default/xui/da/mime_types_mac.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/notifications.xml b/indra/newview/skins/default/xui/da/notifications.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/outfit_accordion_tab.xml b/indra/newview/skins/default/xui/da/outfit_accordion_tab.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_active_object_row.xml b/indra/newview/skins/default/xui/da/panel_active_object_row.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_adhoc_control_panel.xml b/indra/newview/skins/default/xui/da/panel_adhoc_control_panel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/da/panel_avatar_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/da/panel_block_list_sidetray.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_body_parts_list_item.xml b/indra/newview/skins/default/xui/da/panel_body_parts_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_bodyparts_list_button_bar.xml b/indra/newview/skins/default/xui/da/panel_bodyparts_list_button_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_bottomtray.xml b/indra/newview/skins/default/xui/da/panel_bottomtray.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_bottomtray_lite.xml b/indra/newview/skins/default/xui/da/panel_bottomtray_lite.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_classified_info.xml b/indra/newview/skins/default/xui/da/panel_classified_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_clothing_list_button_bar.xml b/indra/newview/skins/default/xui/da/panel_clothing_list_button_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_clothing_list_item.xml b/indra/newview/skins/default/xui/da/panel_clothing_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_cof_wearables.xml b/indra/newview/skins/default/xui/da/panel_cof_wearables.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_deletable_wearable_list_item.xml b/indra/newview/skins/default/xui/da/panel_deletable_wearable_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_dummy_clothing_list_item.xml b/indra/newview/skins/default/xui/da/panel_dummy_clothing_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_edit_alpha.xml b/indra/newview/skins/default/xui/da/panel_edit_alpha.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_edit_classified.xml b/indra/newview/skins/default/xui/da/panel_edit_classified.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_edit_eyes.xml b/indra/newview/skins/default/xui/da/panel_edit_eyes.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_edit_gloves.xml b/indra/newview/skins/default/xui/da/panel_edit_gloves.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_edit_hair.xml b/indra/newview/skins/default/xui/da/panel_edit_hair.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_edit_jacket.xml b/indra/newview/skins/default/xui/da/panel_edit_jacket.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_edit_pants.xml b/indra/newview/skins/default/xui/da/panel_edit_pants.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_edit_physics.xml b/indra/newview/skins/default/xui/da/panel_edit_physics.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_edit_pick.xml b/indra/newview/skins/default/xui/da/panel_edit_pick.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_edit_profile.xml b/indra/newview/skins/default/xui/da/panel_edit_profile.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_edit_shape.xml b/indra/newview/skins/default/xui/da/panel_edit_shape.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_edit_shirt.xml b/indra/newview/skins/default/xui/da/panel_edit_shirt.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_edit_shoes.xml b/indra/newview/skins/default/xui/da/panel_edit_shoes.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_edit_skin.xml b/indra/newview/skins/default/xui/da/panel_edit_skin.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_edit_skirt.xml b/indra/newview/skins/default/xui/da/panel_edit_skirt.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_edit_socks.xml b/indra/newview/skins/default/xui/da/panel_edit_socks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/da/panel_edit_tattoo.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_edit_underpants.xml b/indra/newview/skins/default/xui/da/panel_edit_underpants.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_edit_undershirt.xml b/indra/newview/skins/default/xui/da/panel_edit_undershirt.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_edit_wearable.xml b/indra/newview/skins/default/xui/da/panel_edit_wearable.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_group_control_panel.xml b/indra/newview/skins/default/xui/da/panel_group_control_panel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_group_general.xml b/indra/newview/skins/default/xui/da/panel_group_general.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/da/panel_group_info_sidetray.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_group_invite.xml b/indra/newview/skins/default/xui/da/panel_group_invite.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_group_land_money.xml b/indra/newview/skins/default/xui/da/panel_group_land_money.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_group_list_item.xml b/indra/newview/skins/default/xui/da/panel_group_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_group_notices.xml b/indra/newview/skins/default/xui/da/panel_group_notices.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_group_notify.xml b/indra/newview/skins/default/xui/da/panel_group_notify.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_group_roles.xml b/indra/newview/skins/default/xui/da/panel_group_roles.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_im_control_panel.xml b/indra/newview/skins/default/xui/da/panel_im_control_panel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_inventory_item.xml b/indra/newview/skins/default/xui/da/panel_inventory_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_landmark_info.xml b/indra/newview/skins/default/xui/da/panel_landmark_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_landmarks.xml b/indra/newview/skins/default/xui/da/panel_landmarks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_login.xml b/indra/newview/skins/default/xui/da/panel_login.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_main_inventory.xml b/indra/newview/skins/default/xui/da/panel_main_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_me.xml b/indra/newview/skins/default/xui/da/panel_me.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_media_settings_general.xml b/indra/newview/skins/default/xui/da/panel_media_settings_general.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_media_settings_permissions.xml b/indra/newview/skins/default/xui/da/panel_media_settings_permissions.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_media_settings_security.xml b/indra/newview/skins/default/xui/da/panel_media_settings_security.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_navigation_bar.xml b/indra/newview/skins/default/xui/da/panel_navigation_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/da/panel_nearby_chat_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_nearby_media.xml b/indra/newview/skins/default/xui/da/panel_nearby_media.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_notify_textbox.xml b/indra/newview/skins/default/xui/da/panel_notify_textbox.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_online_status_toast.xml b/indra/newview/skins/default/xui/da/panel_online_status_toast.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_outfit_edit.xml b/indra/newview/skins/default/xui/da/panel_outfit_edit.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/da/panel_outfits_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_outfits_inventory_gear_default.xml b/indra/newview/skins/default/xui/da/panel_outfits_inventory_gear_default.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_outfits_list.xml b/indra/newview/skins/default/xui/da/panel_outfits_list.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_outfits_wearing.xml b/indra/newview/skins/default/xui/da/panel_outfits_wearing.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_people.xml b/indra/newview/skins/default/xui/da/panel_people.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_pick_info.xml b/indra/newview/skins/default/xui/da/panel_pick_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_picks.xml b/indra/newview/skins/default/xui/da/panel_picks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_place_profile.xml b/indra/newview/skins/default/xui/da/panel_place_profile.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_places.xml b/indra/newview/skins/default/xui/da/panel_places.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/da/panel_preferences_advanced.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_preferences_alerts.xml b/indra/newview/skins/default/xui/da/panel_preferences_alerts.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_preferences_chat.xml b/indra/newview/skins/default/xui/da/panel_preferences_chat.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_preferences_colors.xml b/indra/newview/skins/default/xui/da/panel_preferences_colors.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_preferences_general.xml b/indra/newview/skins/default/xui/da/panel_preferences_general.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/da/panel_preferences_graphics1.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_preferences_move.xml b/indra/newview/skins/default/xui/da/panel_preferences_move.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/da/panel_preferences_privacy.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_preferences_setup.xml b/indra/newview/skins/default/xui/da/panel_preferences_setup.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_preferences_sound.xml b/indra/newview/skins/default/xui/da/panel_preferences_sound.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_prim_media_controls.xml b/indra/newview/skins/default/xui/da/panel_prim_media_controls.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_region_covenant.xml b/indra/newview/skins/default/xui/da/panel_region_covenant.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_region_debug.xml b/indra/newview/skins/default/xui/da/panel_region_debug.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_region_estate.xml b/indra/newview/skins/default/xui/da/panel_region_estate.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_region_general.xml b/indra/newview/skins/default/xui/da/panel_region_general.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_region_terrain.xml b/indra/newview/skins/default/xui/da/panel_region_terrain.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_region_texture.xml b/indra/newview/skins/default/xui/da/panel_region_texture.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_script_ed.xml b/indra/newview/skins/default/xui/da/panel_script_ed.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_script_limits_my_avatar.xml b/indra/newview/skins/default/xui/da/panel_script_limits_my_avatar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_script_limits_region_memory.xml b/indra/newview/skins/default/xui/da/panel_script_limits_region_memory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_scrolling_param.xml b/indra/newview/skins/default/xui/da/panel_scrolling_param.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_scrolling_param_base.xml b/indra/newview/skins/default/xui/da/panel_scrolling_param_base.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_side_tray.xml b/indra/newview/skins/default/xui/da/panel_side_tray.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_side_tray_tab_caption.xml b/indra/newview/skins/default/xui/da/panel_side_tray_tab_caption.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_sound_devices.xml b/indra/newview/skins/default/xui/da/panel_sound_devices.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_stand_stop_flying.xml b/indra/newview/skins/default/xui/da/panel_stand_stop_flying.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_status_bar.xml b/indra/newview/skins/default/xui/da/panel_status_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_teleport_history.xml b/indra/newview/skins/default/xui/da/panel_teleport_history.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_teleport_history_item.xml b/indra/newview/skins/default/xui/da/panel_teleport_history_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_voice_effect.xml b/indra/newview/skins/default/xui/da/panel_voice_effect.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/panel_world_map.xml b/indra/newview/skins/default/xui/da/panel_world_map.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/role_actions.xml b/indra/newview/skins/default/xui/da/role_actions.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/sidepanel_appearance.xml b/indra/newview/skins/default/xui/da/sidepanel_appearance.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/sidepanel_inventory.xml b/indra/newview/skins/default/xui/da/sidepanel_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/sidepanel_item_info.xml b/indra/newview/skins/default/xui/da/sidepanel_item_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/sidepanel_task_info.xml b/indra/newview/skins/default/xui/da/sidepanel_task_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/strings.xml b/indra/newview/skins/default/xui/da/strings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/teleport_strings.xml b/indra/newview/skins/default/xui/da/teleport_strings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/da/xui_version.xml b/indra/newview/skins/default/xui/da/xui_version.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_about.xml b/indra/newview/skins/default/xui/de/floater_about.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_about_land.xml b/indra/newview/skins/default/xui/de/floater_about_land.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_activeim.xml b/indra/newview/skins/default/xui/de/floater_activeim.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_animation_anim_preview.xml b/indra/newview/skins/default/xui/de/floater_animation_anim_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_animation_bvh_preview.xml b/indra/newview/skins/default/xui/de/floater_animation_bvh_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_auction.xml b/indra/newview/skins/default/xui/de/floater_auction.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_autoreplace.xml b/indra/newview/skins/default/xui/de/floater_autoreplace.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_avatar.xml b/indra/newview/skins/default/xui/de/floater_avatar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_avatar_picker.xml b/indra/newview/skins/default/xui/de/floater_avatar_picker.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_avatar_textures.xml b/indra/newview/skins/default/xui/de/floater_avatar_textures.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_beacons.xml b/indra/newview/skins/default/xui/de/floater_beacons.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_build_options.xml b/indra/newview/skins/default/xui/de/floater_build_options.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_bulk_perms.xml b/indra/newview/skins/default/xui/de/floater_bulk_perms.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_bumps.xml b/indra/newview/skins/default/xui/de/floater_bumps.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_buy_contents.xml b/indra/newview/skins/default/xui/de/floater_buy_contents.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_buy_currency.xml b/indra/newview/skins/default/xui/de/floater_buy_currency.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_buy_currency_html.xml b/indra/newview/skins/default/xui/de/floater_buy_currency_html.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_buy_land.xml b/indra/newview/skins/default/xui/de/floater_buy_land.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_buy_object.xml b/indra/newview/skins/default/xui/de/floater_buy_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_camera.xml b/indra/newview/skins/default/xui/de/floater_camera.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_chat_bar.xml b/indra/newview/skins/default/xui/de/floater_chat_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_choose_group.xml b/indra/newview/skins/default/xui/de/floater_choose_group.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_color_picker.xml b/indra/newview/skins/default/xui/de/floater_color_picker.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_critical.xml b/indra/newview/skins/default/xui/de/floater_critical.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_delete_env_preset.xml b/indra/newview/skins/default/xui/de/floater_delete_env_preset.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_destinations.xml b/indra/newview/skins/default/xui/de/floater_destinations.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_display_name.xml b/indra/newview/skins/default/xui/de/floater_display_name.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_edit_day_cycle.xml b/indra/newview/skins/default/xui/de/floater_edit_day_cycle.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_edit_sky_preset.xml b/indra/newview/skins/default/xui/de/floater_edit_sky_preset.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_edit_water_preset.xml b/indra/newview/skins/default/xui/de/floater_edit_water_preset.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_environment_settings.xml b/indra/newview/skins/default/xui/de/floater_environment_settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_event.xml b/indra/newview/skins/default/xui/de/floater_event.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_fast_timers.xml b/indra/newview/skins/default/xui/de/floater_fast_timers.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_font_test.xml b/indra/newview/skins/default/xui/de/floater_font_test.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_gesture.xml b/indra/newview/skins/default/xui/de/floater_gesture.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_god_tools.xml b/indra/newview/skins/default/xui/de/floater_god_tools.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_hardware_settings.xml b/indra/newview/skins/default/xui/de/floater_hardware_settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_help_browser.xml b/indra/newview/skins/default/xui/de/floater_help_browser.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_how_to.xml b/indra/newview/skins/default/xui/de/floater_how_to.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_hud.xml b/indra/newview/skins/default/xui/de/floater_hud.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_im_container.xml b/indra/newview/skins/default/xui/de/floater_im_container.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_im_session.xml b/indra/newview/skins/default/xui/de/floater_im_session.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_image_preview.xml b/indra/newview/skins/default/xui/de/floater_image_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_import_collada.xml b/indra/newview/skins/default/xui/de/floater_import_collada.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_incoming_call.xml b/indra/newview/skins/default/xui/de/floater_incoming_call.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_inspect.xml b/indra/newview/skins/default/xui/de/floater_inspect.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/de/floater_inventory_item_properties.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/de/floater_inventory_view_finder.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_joystick.xml b/indra/newview/skins/default/xui/de/floater_joystick.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_lagmeter.xml b/indra/newview/skins/default/xui/de/floater_lagmeter.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_land_holdings.xml b/indra/newview/skins/default/xui/de/floater_land_holdings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/de/floater_live_lsleditor.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_lsl_guide.xml b/indra/newview/skins/default/xui/de/floater_lsl_guide.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_map.xml b/indra/newview/skins/default/xui/de/floater_map.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_media_browser.xml b/indra/newview/skins/default/xui/de/floater_media_browser.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_media_settings.xml b/indra/newview/skins/default/xui/de/floater_media_settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_mem_leaking.xml b/indra/newview/skins/default/xui/de/floater_mem_leaking.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_merchant_outbox.xml b/indra/newview/skins/default/xui/de/floater_merchant_outbox.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_model_preview.xml b/indra/newview/skins/default/xui/de/floater_model_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_moveview.xml b/indra/newview/skins/default/xui/de/floater_moveview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_mute_object.xml b/indra/newview/skins/default/xui/de/floater_mute_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_my_appearance.xml b/indra/newview/skins/default/xui/de/floater_my_appearance.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_my_inventory.xml b/indra/newview/skins/default/xui/de/floater_my_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_notification.xml b/indra/newview/skins/default/xui/de/floater_notification.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_notifications_console.xml b/indra/newview/skins/default/xui/de/floater_notifications_console.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_object_weights.xml b/indra/newview/skins/default/xui/de/floater_object_weights.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_openobject.xml b/indra/newview/skins/default/xui/de/floater_openobject.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_outfit_save_as.xml b/indra/newview/skins/default/xui/de/floater_outfit_save_as.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_outgoing_call.xml b/indra/newview/skins/default/xui/de/floater_outgoing_call.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_pathfinding_characters.xml b/indra/newview/skins/default/xui/de/floater_pathfinding_characters.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_pathfinding_console.xml b/indra/newview/skins/default/xui/de/floater_pathfinding_console.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_pathfinding_linksets.xml b/indra/newview/skins/default/xui/de/floater_pathfinding_linksets.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_pay.xml b/indra/newview/skins/default/xui/de/floater_pay.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_pay_object.xml b/indra/newview/skins/default/xui/de/floater_pay_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_people.xml b/indra/newview/skins/default/xui/de/floater_people.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_perm_prefs.xml b/indra/newview/skins/default/xui/de/floater_perm_prefs.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_picks.xml b/indra/newview/skins/default/xui/de/floater_picks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_places.xml b/indra/newview/skins/default/xui/de/floater_places.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_post_process.xml b/indra/newview/skins/default/xui/de/floater_post_process.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_preferences.xml b/indra/newview/skins/default/xui/de/floater_preferences.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_preferences_proxy.xml b/indra/newview/skins/default/xui/de/floater_preferences_proxy.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_preview_animation.xml b/indra/newview/skins/default/xui/de/floater_preview_animation.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_preview_gesture.xml b/indra/newview/skins/default/xui/de/floater_preview_gesture.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_preview_notecard.xml b/indra/newview/skins/default/xui/de/floater_preview_notecard.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_preview_sound.xml b/indra/newview/skins/default/xui/de/floater_preview_sound.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_preview_texture.xml b/indra/newview/skins/default/xui/de/floater_preview_texture.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_price_for_listing.xml b/indra/newview/skins/default/xui/de/floater_price_for_listing.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_publish_classified.xml b/indra/newview/skins/default/xui/de/floater_publish_classified.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_region_debug_console.xml b/indra/newview/skins/default/xui/de/floater_region_debug_console.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_region_info.xml b/indra/newview/skins/default/xui/de/floater_region_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_report_abuse.xml b/indra/newview/skins/default/xui/de/floater_report_abuse.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_script_debug.xml b/indra/newview/skins/default/xui/de/floater_script_debug.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_script_debug_panel.xml b/indra/newview/skins/default/xui/de/floater_script_debug_panel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_script_limits.xml b/indra/newview/skins/default/xui/de/floater_script_limits.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_script_preview.xml b/indra/newview/skins/default/xui/de/floater_script_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_script_queue.xml b/indra/newview/skins/default/xui/de/floater_script_queue.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_script_search.xml b/indra/newview/skins/default/xui/de/floater_script_search.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_search.xml b/indra/newview/skins/default/xui/de/floater_search.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_select_key.xml b/indra/newview/skins/default/xui/de/floater_select_key.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_sell_land.xml b/indra/newview/skins/default/xui/de/floater_sell_land.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_settings_debug.xml b/indra/newview/skins/default/xui/de/floater_settings_debug.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_snapshot.xml b/indra/newview/skins/default/xui/de/floater_snapshot.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_sound_devices.xml b/indra/newview/skins/default/xui/de/floater_sound_devices.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_sound_preview.xml b/indra/newview/skins/default/xui/de/floater_sound_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_spellcheck.xml b/indra/newview/skins/default/xui/de/floater_spellcheck.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_spellcheck_import.xml b/indra/newview/skins/default/xui/de/floater_spellcheck_import.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_stats.xml b/indra/newview/skins/default/xui/de/floater_stats.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_sys_well.xml b/indra/newview/skins/default/xui/de/floater_sys_well.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_telehub.xml b/indra/newview/skins/default/xui/de/floater_telehub.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_test_layout_stacks.xml b/indra/newview/skins/default/xui/de/floater_test_layout_stacks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_test_text_vertical_aligment.xml b/indra/newview/skins/default/xui/de/floater_test_text_vertical_aligment.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/de/floater_texture_ctrl.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_texture_fetch_debugger.xml b/indra/newview/skins/default/xui/de/floater_texture_fetch_debugger.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_tools.xml b/indra/newview/skins/default/xui/de/floater_tools.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_top_objects.xml b/indra/newview/skins/default/xui/de/floater_top_objects.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_tos.xml b/indra/newview/skins/default/xui/de/floater_tos.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_toybox.xml b/indra/newview/skins/default/xui/de/floater_toybox.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_translation_settings.xml b/indra/newview/skins/default/xui/de/floater_translation_settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_url_entry.xml b/indra/newview/skins/default/xui/de/floater_url_entry.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_voice_controls.xml b/indra/newview/skins/default/xui/de/floater_voice_controls.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_voice_effect.xml b/indra/newview/skins/default/xui/de/floater_voice_effect.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_web_content.xml b/indra/newview/skins/default/xui/de/floater_web_content.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_whitelist_entry.xml b/indra/newview/skins/default/xui/de/floater_whitelist_entry.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_window_size.xml b/indra/newview/skins/default/xui/de/floater_window_size.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/floater_world_map.xml b/indra/newview/skins/default/xui/de/floater_world_map.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/inspect_avatar.xml b/indra/newview/skins/default/xui/de/inspect_avatar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/inspect_group.xml b/indra/newview/skins/default/xui/de/inspect_group.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/inspect_object.xml b/indra/newview/skins/default/xui/de/inspect_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/inspect_remote_object.xml b/indra/newview/skins/default/xui/de/inspect_remote_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/language_settings.xml b/indra/newview/skins/default/xui/de/language_settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_add_wearable_gear.xml b/indra/newview/skins/default/xui/de/menu_add_wearable_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_attachment_other.xml b/indra/newview/skins/default/xui/de/menu_attachment_other.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_attachment_self.xml b/indra/newview/skins/default/xui/de/menu_attachment_self.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_avatar_icon.xml b/indra/newview/skins/default/xui/de/menu_avatar_icon.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_avatar_other.xml b/indra/newview/skins/default/xui/de/menu_avatar_other.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_avatar_self.xml b/indra/newview/skins/default/xui/de/menu_avatar_self.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_cof_attachment.xml b/indra/newview/skins/default/xui/de/menu_cof_attachment.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_cof_body_part.xml b/indra/newview/skins/default/xui/de/menu_cof_body_part.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_cof_clothing.xml b/indra/newview/skins/default/xui/de/menu_cof_clothing.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_cof_gear.xml b/indra/newview/skins/default/xui/de/menu_cof_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_edit.xml b/indra/newview/skins/default/xui/de/menu_edit.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_favorites.xml b/indra/newview/skins/default/xui/de/menu_favorites.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_gesture_gear.xml b/indra/newview/skins/default/xui/de/menu_gesture_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_group_plus.xml b/indra/newview/skins/default/xui/de/menu_group_plus.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_hide_navbar.xml b/indra/newview/skins/default/xui/de/menu_hide_navbar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_imchiclet_adhoc.xml b/indra/newview/skins/default/xui/de/menu_imchiclet_adhoc.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_imchiclet_group.xml b/indra/newview/skins/default/xui/de/menu_imchiclet_group.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_imchiclet_p2p.xml b/indra/newview/skins/default/xui/de/menu_imchiclet_p2p.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/de/menu_inspect_avatar_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_inspect_object_gear.xml b/indra/newview/skins/default/xui/de/menu_inspect_object_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_inspect_self_gear.xml b/indra/newview/skins/default/xui/de/menu_inspect_self_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_inv_offer_chiclet.xml b/indra/newview/skins/default/xui/de/menu_inv_offer_chiclet.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_inventory.xml b/indra/newview/skins/default/xui/de/menu_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_inventory_add.xml b/indra/newview/skins/default/xui/de/menu_inventory_add.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/de/menu_inventory_gear_default.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_land.xml b/indra/newview/skins/default/xui/de/menu_land.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_landmark.xml b/indra/newview/skins/default/xui/de/menu_landmark.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_login.xml b/indra/newview/skins/default/xui/de/menu_login.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_media_ctrl.xml b/indra/newview/skins/default/xui/de/menu_media_ctrl.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_mini_map.xml b/indra/newview/skins/default/xui/de/menu_mini_map.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_model_import_gear_default.xml b/indra/newview/skins/default/xui/de/menu_model_import_gear_default.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_navbar.xml b/indra/newview/skins/default/xui/de/menu_navbar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_nearby_chat.xml b/indra/newview/skins/default/xui/de/menu_nearby_chat.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_notification_well_button.xml b/indra/newview/skins/default/xui/de/menu_notification_well_button.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_object.xml b/indra/newview/skins/default/xui/de/menu_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_object_icon.xml b/indra/newview/skins/default/xui/de/menu_object_icon.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_outfit_gear.xml b/indra/newview/skins/default/xui/de/menu_outfit_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_outfit_tab.xml b/indra/newview/skins/default/xui/de/menu_outfit_tab.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_participant_list.xml b/indra/newview/skins/default/xui/de/menu_participant_list.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_people_friends_view_sort.xml b/indra/newview/skins/default/xui/de/menu_people_friends_view_sort.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_people_groups.xml b/indra/newview/skins/default/xui/de/menu_people_groups.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_people_groups_view_sort.xml b/indra/newview/skins/default/xui/de/menu_people_groups_view_sort.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_people_nearby.xml b/indra/newview/skins/default/xui/de/menu_people_nearby.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/de/menu_people_nearby_multiselect.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_people_nearby_view_sort.xml b/indra/newview/skins/default/xui/de/menu_people_nearby_view_sort.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_people_recent_view_sort.xml b/indra/newview/skins/default/xui/de/menu_people_recent_view_sort.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_picks.xml b/indra/newview/skins/default/xui/de/menu_picks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_picks_plus.xml b/indra/newview/skins/default/xui/de/menu_picks_plus.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_place.xml b/indra/newview/skins/default/xui/de/menu_place.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_place_add_button.xml b/indra/newview/skins/default/xui/de/menu_place_add_button.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_places_gear_folder.xml b/indra/newview/skins/default/xui/de/menu_places_gear_folder.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_places_gear_landmark.xml b/indra/newview/skins/default/xui/de/menu_places_gear_landmark.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_profile_overflow.xml b/indra/newview/skins/default/xui/de/menu_profile_overflow.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_save_outfit.xml b/indra/newview/skins/default/xui/de/menu_save_outfit.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_script_chiclet.xml b/indra/newview/skins/default/xui/de/menu_script_chiclet.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_slurl.xml b/indra/newview/skins/default/xui/de/menu_slurl.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_teleport_history_gear.xml b/indra/newview/skins/default/xui/de/menu_teleport_history_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_teleport_history_item.xml b/indra/newview/skins/default/xui/de/menu_teleport_history_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_teleport_history_tab.xml b/indra/newview/skins/default/xui/de/menu_teleport_history_tab.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_text_editor.xml b/indra/newview/skins/default/xui/de/menu_text_editor.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_toolbars.xml b/indra/newview/skins/default/xui/de/menu_toolbars.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_topinfobar.xml b/indra/newview/skins/default/xui/de/menu_topinfobar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_url_agent.xml b/indra/newview/skins/default/xui/de/menu_url_agent.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_url_group.xml b/indra/newview/skins/default/xui/de/menu_url_group.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_url_http.xml b/indra/newview/skins/default/xui/de/menu_url_http.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_url_inventory.xml b/indra/newview/skins/default/xui/de/menu_url_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_url_map.xml b/indra/newview/skins/default/xui/de/menu_url_map.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_url_objectim.xml b/indra/newview/skins/default/xui/de/menu_url_objectim.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_url_parcel.xml b/indra/newview/skins/default/xui/de/menu_url_parcel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_url_slapp.xml b/indra/newview/skins/default/xui/de/menu_url_slapp.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_url_slurl.xml b/indra/newview/skins/default/xui/de/menu_url_slurl.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_url_teleport.xml b/indra/newview/skins/default/xui/de/menu_url_teleport.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_viewer.xml b/indra/newview/skins/default/xui/de/menu_viewer.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_wearable_list_item.xml b/indra/newview/skins/default/xui/de/menu_wearable_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_wearing_gear.xml b/indra/newview/skins/default/xui/de/menu_wearing_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/menu_wearing_tab.xml b/indra/newview/skins/default/xui/de/menu_wearing_tab.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/mime_types.xml b/indra/newview/skins/default/xui/de/mime_types.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/mime_types_linux.xml b/indra/newview/skins/default/xui/de/mime_types_linux.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/mime_types_mac.xml b/indra/newview/skins/default/xui/de/mime_types_mac.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/notifications.xml b/indra/newview/skins/default/xui/de/notifications.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/outfit_accordion_tab.xml b/indra/newview/skins/default/xui/de/outfit_accordion_tab.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_active_object_row.xml b/indra/newview/skins/default/xui/de/panel_active_object_row.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_adhoc_control_panel.xml b/indra/newview/skins/default/xui/de/panel_adhoc_control_panel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/de/panel_avatar_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_avatar_tag.xml b/indra/newview/skins/default/xui/de/panel_avatar_tag.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/de/panel_block_list_sidetray.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_body_parts_list_item.xml b/indra/newview/skins/default/xui/de/panel_body_parts_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_bodyparts_list_button_bar.xml b/indra/newview/skins/default/xui/de/panel_bodyparts_list_button_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_bottomtray_lite.xml b/indra/newview/skins/default/xui/de/panel_bottomtray_lite.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_chat_header.xml b/indra/newview/skins/default/xui/de/panel_chat_header.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_chiclet_bar.xml b/indra/newview/skins/default/xui/de/panel_chiclet_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_classified_info.xml b/indra/newview/skins/default/xui/de/panel_classified_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_clothing_list_button_bar.xml b/indra/newview/skins/default/xui/de/panel_clothing_list_button_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_clothing_list_item.xml b/indra/newview/skins/default/xui/de/panel_clothing_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_cof_wearables.xml b/indra/newview/skins/default/xui/de/panel_cof_wearables.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_deletable_wearable_list_item.xml b/indra/newview/skins/default/xui/de/panel_deletable_wearable_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_dummy_clothing_list_item.xml b/indra/newview/skins/default/xui/de/panel_dummy_clothing_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_edit_alpha.xml b/indra/newview/skins/default/xui/de/panel_edit_alpha.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_edit_classified.xml b/indra/newview/skins/default/xui/de/panel_edit_classified.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_edit_eyes.xml b/indra/newview/skins/default/xui/de/panel_edit_eyes.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_edit_gloves.xml b/indra/newview/skins/default/xui/de/panel_edit_gloves.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_edit_hair.xml b/indra/newview/skins/default/xui/de/panel_edit_hair.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_edit_jacket.xml b/indra/newview/skins/default/xui/de/panel_edit_jacket.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_edit_pants.xml b/indra/newview/skins/default/xui/de/panel_edit_pants.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_edit_physics.xml b/indra/newview/skins/default/xui/de/panel_edit_physics.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_edit_pick.xml b/indra/newview/skins/default/xui/de/panel_edit_pick.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_edit_profile.xml b/indra/newview/skins/default/xui/de/panel_edit_profile.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_edit_shape.xml b/indra/newview/skins/default/xui/de/panel_edit_shape.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_edit_shirt.xml b/indra/newview/skins/default/xui/de/panel_edit_shirt.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_edit_shoes.xml b/indra/newview/skins/default/xui/de/panel_edit_shoes.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_edit_skin.xml b/indra/newview/skins/default/xui/de/panel_edit_skin.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_edit_skirt.xml b/indra/newview/skins/default/xui/de/panel_edit_skirt.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_edit_socks.xml b/indra/newview/skins/default/xui/de/panel_edit_socks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/de/panel_edit_tattoo.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_edit_underpants.xml b/indra/newview/skins/default/xui/de/panel_edit_underpants.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_edit_undershirt.xml b/indra/newview/skins/default/xui/de/panel_edit_undershirt.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_edit_wearable.xml b/indra/newview/skins/default/xui/de/panel_edit_wearable.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_group_control_panel.xml b/indra/newview/skins/default/xui/de/panel_group_control_panel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_group_general.xml b/indra/newview/skins/default/xui/de/panel_group_general.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/de/panel_group_info_sidetray.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_group_invite.xml b/indra/newview/skins/default/xui/de/panel_group_invite.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_group_land_money.xml b/indra/newview/skins/default/xui/de/panel_group_land_money.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_group_list_item.xml b/indra/newview/skins/default/xui/de/panel_group_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_group_notices.xml b/indra/newview/skins/default/xui/de/panel_group_notices.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_group_notify.xml b/indra/newview/skins/default/xui/de/panel_group_notify.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_group_roles.xml b/indra/newview/skins/default/xui/de/panel_group_roles.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_im_control_panel.xml b/indra/newview/skins/default/xui/de/panel_im_control_panel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_instant_message.xml b/indra/newview/skins/default/xui/de/panel_instant_message.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_inventory_item.xml b/indra/newview/skins/default/xui/de/panel_inventory_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_landmark_info.xml b/indra/newview/skins/default/xui/de/panel_landmark_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_landmarks.xml b/indra/newview/skins/default/xui/de/panel_landmarks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_login.xml b/indra/newview/skins/default/xui/de/panel_login.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_main_inventory.xml b/indra/newview/skins/default/xui/de/panel_main_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_me.xml b/indra/newview/skins/default/xui/de/panel_me.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_media_settings_general.xml b/indra/newview/skins/default/xui/de/panel_media_settings_general.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_media_settings_permissions.xml b/indra/newview/skins/default/xui/de/panel_media_settings_permissions.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_media_settings_security.xml b/indra/newview/skins/default/xui/de/panel_media_settings_security.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_navigation_bar.xml b/indra/newview/skins/default/xui/de/panel_navigation_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_nearby_chat.xml b/indra/newview/skins/default/xui/de/panel_nearby_chat.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/de/panel_nearby_chat_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_nearby_media.xml b/indra/newview/skins/default/xui/de/panel_nearby_media.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_notifications_channel.xml b/indra/newview/skins/default/xui/de/panel_notifications_channel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_notify_textbox.xml b/indra/newview/skins/default/xui/de/panel_notify_textbox.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_online_status_toast.xml b/indra/newview/skins/default/xui/de/panel_online_status_toast.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_outbox_inventory.xml b/indra/newview/skins/default/xui/de/panel_outbox_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_outfit_edit.xml b/indra/newview/skins/default/xui/de/panel_outfit_edit.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/de/panel_outfits_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_outfits_inventory_gear_default.xml b/indra/newview/skins/default/xui/de/panel_outfits_inventory_gear_default.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_outfits_list.xml b/indra/newview/skins/default/xui/de/panel_outfits_list.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_outfits_wearing.xml b/indra/newview/skins/default/xui/de/panel_outfits_wearing.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_people.xml b/indra/newview/skins/default/xui/de/panel_people.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_pick_info.xml b/indra/newview/skins/default/xui/de/panel_pick_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_picks.xml b/indra/newview/skins/default/xui/de/panel_picks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_place_profile.xml b/indra/newview/skins/default/xui/de/panel_place_profile.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_places.xml b/indra/newview/skins/default/xui/de/panel_places.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_postcard_message.xml b/indra/newview/skins/default/xui/de/panel_postcard_message.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_postcard_settings.xml b/indra/newview/skins/default/xui/de/panel_postcard_settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/de/panel_preferences_advanced.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_preferences_alerts.xml b/indra/newview/skins/default/xui/de/panel_preferences_alerts.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_preferences_chat.xml b/indra/newview/skins/default/xui/de/panel_preferences_chat.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_preferences_colors.xml b/indra/newview/skins/default/xui/de/panel_preferences_colors.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_preferences_general.xml b/indra/newview/skins/default/xui/de/panel_preferences_general.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/de/panel_preferences_graphics1.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_preferences_move.xml b/indra/newview/skins/default/xui/de/panel_preferences_move.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/de/panel_preferences_privacy.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_preferences_setup.xml b/indra/newview/skins/default/xui/de/panel_preferences_setup.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_preferences_sound.xml b/indra/newview/skins/default/xui/de/panel_preferences_sound.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_prim_media_controls.xml b/indra/newview/skins/default/xui/de/panel_prim_media_controls.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_region_covenant.xml b/indra/newview/skins/default/xui/de/panel_region_covenant.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_region_debug.xml b/indra/newview/skins/default/xui/de/panel_region_debug.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_region_environment.xml b/indra/newview/skins/default/xui/de/panel_region_environment.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_region_estate.xml b/indra/newview/skins/default/xui/de/panel_region_estate.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_region_general.xml b/indra/newview/skins/default/xui/de/panel_region_general.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_region_terrain.xml b/indra/newview/skins/default/xui/de/panel_region_terrain.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_script_ed.xml b/indra/newview/skins/default/xui/de/panel_script_ed.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_script_limits_my_avatar.xml b/indra/newview/skins/default/xui/de/panel_script_limits_my_avatar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_script_limits_region_memory.xml b/indra/newview/skins/default/xui/de/panel_script_limits_region_memory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_script_question_toast.xml b/indra/newview/skins/default/xui/de/panel_script_question_toast.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_scrolling_param.xml b/indra/newview/skins/default/xui/de/panel_scrolling_param.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_scrolling_param_base.xml b/indra/newview/skins/default/xui/de/panel_scrolling_param_base.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_side_tray_tab_caption.xml b/indra/newview/skins/default/xui/de/panel_side_tray_tab_caption.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_sidetray_home_tab.xml b/indra/newview/skins/default/xui/de/panel_sidetray_home_tab.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_snapshot_inventory.xml b/indra/newview/skins/default/xui/de/panel_snapshot_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_snapshot_local.xml b/indra/newview/skins/default/xui/de/panel_snapshot_local.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_snapshot_options.xml b/indra/newview/skins/default/xui/de/panel_snapshot_options.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_snapshot_postcard.xml b/indra/newview/skins/default/xui/de/panel_snapshot_postcard.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_snapshot_profile.xml b/indra/newview/skins/default/xui/de/panel_snapshot_profile.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_sound_devices.xml b/indra/newview/skins/default/xui/de/panel_sound_devices.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_stand_stop_flying.xml b/indra/newview/skins/default/xui/de/panel_stand_stop_flying.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_status_bar.xml b/indra/newview/skins/default/xui/de/panel_status_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_sys_well_item.xml b/indra/newview/skins/default/xui/de/panel_sys_well_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_teleport_history.xml b/indra/newview/skins/default/xui/de/panel_teleport_history.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_teleport_history_item.xml b/indra/newview/skins/default/xui/de/panel_teleport_history_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_voice_effect.xml b/indra/newview/skins/default/xui/de/panel_voice_effect.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_volume_pulldown.xml b/indra/newview/skins/default/xui/de/panel_volume_pulldown.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/panel_world_map.xml b/indra/newview/skins/default/xui/de/panel_world_map.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/role_actions.xml b/indra/newview/skins/default/xui/de/role_actions.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/sidepanel_appearance.xml b/indra/newview/skins/default/xui/de/sidepanel_appearance.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/sidepanel_inventory.xml b/indra/newview/skins/default/xui/de/sidepanel_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/sidepanel_item_info.xml b/indra/newview/skins/default/xui/de/sidepanel_item_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/sidepanel_task_info.xml b/indra/newview/skins/default/xui/de/sidepanel_task_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/strings.xml b/indra/newview/skins/default/xui/de/strings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/teleport_strings.xml b/indra/newview/skins/default/xui/de/teleport_strings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/de/xui_version.xml b/indra/newview/skins/default/xui/de/xui_version.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/accordion_drag.xml b/indra/newview/skins/default/xui/en/accordion_drag.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/accordion_parent.xml b/indra/newview/skins/default/xui/en/accordion_parent.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/alert_button.xml b/indra/newview/skins/default/xui/en/alert_button.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/alert_check_box.xml b/indra/newview/skins/default/xui/en/alert_check_box.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/alert_icon.xml b/indra/newview/skins/default/xui/en/alert_icon.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/alert_line_editor.xml b/indra/newview/skins/default/xui/en/alert_line_editor.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/favorites_bar_button.xml b/indra/newview/skins/default/xui/en/favorites_bar_button.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_aaa.xml b/indra/newview/skins/default/xui/en/floater_aaa.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_about.xml b/indra/newview/skins/default/xui/en/floater_about.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_about_land.xml b/indra/newview/skins/default/xui/en/floater_about_land.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_activeim.xml b/indra/newview/skins/default/xui/en/floater_activeim.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_animation_anim_preview.xml b/indra/newview/skins/default/xui/en/floater_animation_anim_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_animation_bvh_preview.xml b/indra/newview/skins/default/xui/en/floater_animation_bvh_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_auction.xml b/indra/newview/skins/default/xui/en/floater_auction.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_autoreplace.xml b/indra/newview/skins/default/xui/en/floater_autoreplace.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_avatar.xml b/indra/newview/skins/default/xui/en/floater_avatar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_avatar_picker.xml b/indra/newview/skins/default/xui/en/floater_avatar_picker.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_avatar_textures.xml b/indra/newview/skins/default/xui/en/floater_avatar_textures.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_beacons.xml b/indra/newview/skins/default/xui/en/floater_beacons.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_build_options.xml b/indra/newview/skins/default/xui/en/floater_build_options.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_bulk_perms.xml b/indra/newview/skins/default/xui/en/floater_bulk_perms.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_bumps.xml b/indra/newview/skins/default/xui/en/floater_bumps.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_buy_contents.xml b/indra/newview/skins/default/xui/en/floater_buy_contents.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_buy_currency.xml b/indra/newview/skins/default/xui/en/floater_buy_currency.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_buy_currency_html.xml b/indra/newview/skins/default/xui/en/floater_buy_currency_html.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_buy_land.xml b/indra/newview/skins/default/xui/en/floater_buy_land.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_buy_object.xml b/indra/newview/skins/default/xui/en/floater_buy_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_camera.xml b/indra/newview/skins/default/xui/en/floater_camera.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_choose_group.xml b/indra/newview/skins/default/xui/en/floater_choose_group.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_color_picker.xml b/indra/newview/skins/default/xui/en/floater_color_picker.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_conversation_log.xml b/indra/newview/skins/default/xui/en/floater_conversation_log.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_conversation_preview.xml b/indra/newview/skins/default/xui/en/floater_conversation_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_critical.xml b/indra/newview/skins/default/xui/en/floater_critical.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_delete_env_preset.xml b/indra/newview/skins/default/xui/en/floater_delete_env_preset.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_destinations.xml b/indra/newview/skins/default/xui/en/floater_destinations.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_display_name.xml b/indra/newview/skins/default/xui/en/floater_display_name.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_edit_day_cycle.xml b/indra/newview/skins/default/xui/en/floater_edit_day_cycle.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_edit_sky_preset.xml b/indra/newview/skins/default/xui/en/floater_edit_sky_preset.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_edit_water_preset.xml b/indra/newview/skins/default/xui/en/floater_edit_water_preset.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_environment_settings.xml b/indra/newview/skins/default/xui/en/floater_environment_settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_event.xml b/indra/newview/skins/default/xui/en/floater_event.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_fast_timers.xml b/indra/newview/skins/default/xui/en/floater_fast_timers.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_font_test.xml b/indra/newview/skins/default/xui/en/floater_font_test.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_gesture.xml b/indra/newview/skins/default/xui/en/floater_gesture.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_god_tools.xml b/indra/newview/skins/default/xui/en/floater_god_tools.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_hardware_settings.xml b/indra/newview/skins/default/xui/en/floater_hardware_settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_help_browser.xml b/indra/newview/skins/default/xui/en/floater_help_browser.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_how_to.xml b/indra/newview/skins/default/xui/en/floater_how_to.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_hud.xml b/indra/newview/skins/default/xui/en/floater_hud.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_im_container.xml b/indra/newview/skins/default/xui/en/floater_im_container.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_im_session.xml b/indra/newview/skins/default/xui/en/floater_im_session.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_image_preview.xml b/indra/newview/skins/default/xui/en/floater_image_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_import_collada.xml b/indra/newview/skins/default/xui/en/floater_import_collada.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_incoming_call.xml b/indra/newview/skins/default/xui/en/floater_incoming_call.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_inspect.xml b/indra/newview/skins/default/xui/en/floater_inspect.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/en/floater_inventory_item_properties.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/en/floater_inventory_view_finder.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_joystick.xml b/indra/newview/skins/default/xui/en/floater_joystick.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_lagmeter.xml b/indra/newview/skins/default/xui/en/floater_lagmeter.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_land_holdings.xml b/indra/newview/skins/default/xui/en/floater_land_holdings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/en/floater_live_lsleditor.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_lsl_guide.xml b/indra/newview/skins/default/xui/en/floater_lsl_guide.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_map.xml b/indra/newview/skins/default/xui/en/floater_map.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_media_browser.xml b/indra/newview/skins/default/xui/en/floater_media_browser.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_media_settings.xml b/indra/newview/skins/default/xui/en/floater_media_settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_mem_leaking.xml b/indra/newview/skins/default/xui/en/floater_mem_leaking.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_merchant_outbox.xml b/indra/newview/skins/default/xui/en/floater_merchant_outbox.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_model_preview.xml b/indra/newview/skins/default/xui/en/floater_model_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_moveview.xml b/indra/newview/skins/default/xui/en/floater_moveview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_mute_object.xml b/indra/newview/skins/default/xui/en/floater_mute_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_my_appearance.xml b/indra/newview/skins/default/xui/en/floater_my_appearance.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_my_inventory.xml b/indra/newview/skins/default/xui/en/floater_my_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_my_web_profile.xml b/indra/newview/skins/default/xui/en/floater_my_web_profile.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_notification.xml b/indra/newview/skins/default/xui/en/floater_notification.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_notifications_console.xml b/indra/newview/skins/default/xui/en/floater_notifications_console.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_object_weights.xml b/indra/newview/skins/default/xui/en/floater_object_weights.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_openobject.xml b/indra/newview/skins/default/xui/en/floater_openobject.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_outfit_save_as.xml b/indra/newview/skins/default/xui/en/floater_outfit_save_as.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_outgoing_call.xml b/indra/newview/skins/default/xui/en/floater_outgoing_call.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_pathfinding_characters.xml b/indra/newview/skins/default/xui/en/floater_pathfinding_characters.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_pathfinding_console.xml b/indra/newview/skins/default/xui/en/floater_pathfinding_console.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_pathfinding_linksets.xml b/indra/newview/skins/default/xui/en/floater_pathfinding_linksets.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_pay.xml b/indra/newview/skins/default/xui/en/floater_pay.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_pay_object.xml b/indra/newview/skins/default/xui/en/floater_pay_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_people.xml b/indra/newview/skins/default/xui/en/floater_people.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_perm_prefs.xml b/indra/newview/skins/default/xui/en/floater_perm_prefs.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_picks.xml b/indra/newview/skins/default/xui/en/floater_picks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_places.xml b/indra/newview/skins/default/xui/en/floater_places.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_post_process.xml b/indra/newview/skins/default/xui/en/floater_post_process.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_preferences.xml b/indra/newview/skins/default/xui/en/floater_preferences.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_preferences_proxy.xml b/indra/newview/skins/default/xui/en/floater_preferences_proxy.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_preview_animation.xml b/indra/newview/skins/default/xui/en/floater_preview_animation.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_preview_gesture.xml b/indra/newview/skins/default/xui/en/floater_preview_gesture.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_preview_notecard.xml b/indra/newview/skins/default/xui/en/floater_preview_notecard.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_preview_sound.xml b/indra/newview/skins/default/xui/en/floater_preview_sound.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_preview_texture.xml b/indra/newview/skins/default/xui/en/floater_preview_texture.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_price_for_listing.xml b/indra/newview/skins/default/xui/en/floater_price_for_listing.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_publish_classified.xml b/indra/newview/skins/default/xui/en/floater_publish_classified.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_region_debug_console.xml b/indra/newview/skins/default/xui/en/floater_region_debug_console.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_region_info.xml b/indra/newview/skins/default/xui/en/floater_region_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_report_abuse.xml b/indra/newview/skins/default/xui/en/floater_report_abuse.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_script.xml b/indra/newview/skins/default/xui/en/floater_script.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_script_debug.xml b/indra/newview/skins/default/xui/en/floater_script_debug.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_script_debug_panel.xml b/indra/newview/skins/default/xui/en/floater_script_debug_panel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_script_limits.xml b/indra/newview/skins/default/xui/en/floater_script_limits.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_script_preview.xml b/indra/newview/skins/default/xui/en/floater_script_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_script_queue.xml b/indra/newview/skins/default/xui/en/floater_script_queue.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_script_search.xml b/indra/newview/skins/default/xui/en/floater_script_search.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_search.xml b/indra/newview/skins/default/xui/en/floater_search.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_select_key.xml b/indra/newview/skins/default/xui/en/floater_select_key.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_sell_land.xml b/indra/newview/skins/default/xui/en/floater_sell_land.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_settings_debug.xml b/indra/newview/skins/default/xui/en/floater_settings_debug.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_side_bar_tab.xml b/indra/newview/skins/default/xui/en/floater_side_bar_tab.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_snapshot.xml b/indra/newview/skins/default/xui/en/floater_snapshot.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_sound_devices.xml b/indra/newview/skins/default/xui/en/floater_sound_devices.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_sound_preview.xml b/indra/newview/skins/default/xui/en/floater_sound_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_spellcheck.xml b/indra/newview/skins/default/xui/en/floater_spellcheck.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_spellcheck_import.xml b/indra/newview/skins/default/xui/en/floater_spellcheck_import.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_stats.xml b/indra/newview/skins/default/xui/en/floater_stats.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_sys_well.xml b/indra/newview/skins/default/xui/en/floater_sys_well.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_telehub.xml b/indra/newview/skins/default/xui/en/floater_telehub.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_test_button.xml b/indra/newview/skins/default/xui/en/floater_test_button.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_test_checkbox.xml b/indra/newview/skins/default/xui/en/floater_test_checkbox.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_test_combobox.xml b/indra/newview/skins/default/xui/en/floater_test_combobox.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_test_inspectors.xml b/indra/newview/skins/default/xui/en/floater_test_inspectors.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_test_layout.xml b/indra/newview/skins/default/xui/en/floater_test_layout.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_test_layout_stacks.xml b/indra/newview/skins/default/xui/en/floater_test_layout_stacks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_test_line_editor.xml b/indra/newview/skins/default/xui/en/floater_test_line_editor.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_test_list_view.xml b/indra/newview/skins/default/xui/en/floater_test_list_view.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_test_navigation_bar.xml b/indra/newview/skins/default/xui/en/floater_test_navigation_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_test_radiogroup.xml b/indra/newview/skins/default/xui/en/floater_test_radiogroup.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_test_slider.xml b/indra/newview/skins/default/xui/en/floater_test_slider.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_test_spinner.xml b/indra/newview/skins/default/xui/en/floater_test_spinner.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_test_text_editor.xml b/indra/newview/skins/default/xui/en/floater_test_text_editor.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_test_text_vertical_aligment.xml b/indra/newview/skins/default/xui/en/floater_test_text_vertical_aligment.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_test_textbox.xml b/indra/newview/skins/default/xui/en/floater_test_textbox.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_test_toolbar.xml b/indra/newview/skins/default/xui/en/floater_test_toolbar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_test_widgets.xml b/indra/newview/skins/default/xui/en/floater_test_widgets.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_texture_fetch_debugger.xml b/indra/newview/skins/default/xui/en/floater_texture_fetch_debugger.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_top_objects.xml b/indra/newview/skins/default/xui/en/floater_top_objects.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_tos.xml b/indra/newview/skins/default/xui/en/floater_tos.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_toybox.xml b/indra/newview/skins/default/xui/en/floater_toybox.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_translation_settings.xml b/indra/newview/skins/default/xui/en/floater_translation_settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_ui_preview.xml b/indra/newview/skins/default/xui/en/floater_ui_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_url_entry.xml b/indra/newview/skins/default/xui/en/floater_url_entry.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_voice_chat_volume.xml b/indra/newview/skins/default/xui/en/floater_voice_chat_volume.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_voice_effect.xml b/indra/newview/skins/default/xui/en/floater_voice_effect.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_voice_volume.xml b/indra/newview/skins/default/xui/en/floater_voice_volume.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_web_content.xml b/indra/newview/skins/default/xui/en/floater_web_content.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_web_profile.xml b/indra/newview/skins/default/xui/en/floater_web_profile.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_whitelist_entry.xml b/indra/newview/skins/default/xui/en/floater_whitelist_entry.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_window_size.xml b/indra/newview/skins/default/xui/en/floater_window_size.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_world_map.xml b/indra/newview/skins/default/xui/en/floater_world_map.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/fonts.xml b/indra/newview/skins/default/xui/en/fonts.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/inspect_avatar.xml b/indra/newview/skins/default/xui/en/inspect_avatar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/inspect_group.xml b/indra/newview/skins/default/xui/en/inspect_group.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/inspect_object.xml b/indra/newview/skins/default/xui/en/inspect_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/inspect_remote_object.xml b/indra/newview/skins/default/xui/en/inspect_remote_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/inspect_toast.xml b/indra/newview/skins/default/xui/en/inspect_toast.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/inspector_info_ctrl.xml b/indra/newview/skins/default/xui/en/inspector_info_ctrl.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/language_settings.xml b/indra/newview/skins/default/xui/en/language_settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/main_view.xml b/indra/newview/skins/default/xui/en/main_view.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_add_wearable_gear.xml b/indra/newview/skins/default/xui/en/menu_add_wearable_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_attachment_other.xml b/indra/newview/skins/default/xui/en/menu_attachment_other.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_attachment_self.xml b/indra/newview/skins/default/xui/en/menu_attachment_self.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_avatar_icon.xml b/indra/newview/skins/default/xui/en/menu_avatar_icon.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_avatar_other.xml b/indra/newview/skins/default/xui/en/menu_avatar_other.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_avatar_self.xml b/indra/newview/skins/default/xui/en/menu_avatar_self.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_cof_attachment.xml b/indra/newview/skins/default/xui/en/menu_cof_attachment.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_cof_body_part.xml b/indra/newview/skins/default/xui/en/menu_cof_body_part.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_cof_clothing.xml b/indra/newview/skins/default/xui/en/menu_cof_clothing.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_cof_gear.xml b/indra/newview/skins/default/xui/en/menu_cof_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_conversation.xml b/indra/newview/skins/default/xui/en/menu_conversation.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_conversation_log_gear.xml b/indra/newview/skins/default/xui/en/menu_conversation_log_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_conversation_log_view.xml b/indra/newview/skins/default/xui/en/menu_conversation_log_view.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_edit.xml b/indra/newview/skins/default/xui/en/menu_edit.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_favorites.xml b/indra/newview/skins/default/xui/en/menu_favorites.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_gesture_gear.xml b/indra/newview/skins/default/xui/en/menu_gesture_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_group_plus.xml b/indra/newview/skins/default/xui/en/menu_group_plus.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_hide_navbar.xml b/indra/newview/skins/default/xui/en/menu_hide_navbar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_im_conversation.xml b/indra/newview/skins/default/xui/en/menu_im_conversation.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_im_session_showmodes.xml b/indra/newview/skins/default/xui/en/menu_im_session_showmodes.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_imchiclet_adhoc.xml b/indra/newview/skins/default/xui/en/menu_imchiclet_adhoc.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_imchiclet_group.xml b/indra/newview/skins/default/xui/en/menu_imchiclet_group.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_imchiclet_p2p.xml b/indra/newview/skins/default/xui/en/menu_imchiclet_p2p.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_inspect_object_gear.xml b/indra/newview/skins/default/xui/en/menu_inspect_object_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_inv_offer_chiclet.xml b/indra/newview/skins/default/xui/en/menu_inv_offer_chiclet.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_inventory.xml b/indra/newview/skins/default/xui/en/menu_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_inventory_add.xml b/indra/newview/skins/default/xui/en/menu_inventory_add.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/en/menu_inventory_gear_default.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_land.xml b/indra/newview/skins/default/xui/en/menu_land.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_landmark.xml b/indra/newview/skins/default/xui/en/menu_landmark.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_login.xml b/indra/newview/skins/default/xui/en/menu_login.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_media_ctrl.xml b/indra/newview/skins/default/xui/en/menu_media_ctrl.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_mini_map.xml b/indra/newview/skins/default/xui/en/menu_mini_map.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_model_import_gear_default.xml b/indra/newview/skins/default/xui/en/menu_model_import_gear_default.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_navbar.xml b/indra/newview/skins/default/xui/en/menu_navbar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_nearby_chat.xml b/indra/newview/skins/default/xui/en/menu_nearby_chat.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_notification_well_button.xml b/indra/newview/skins/default/xui/en/menu_notification_well_button.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_object.xml b/indra/newview/skins/default/xui/en/menu_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_object_icon.xml b/indra/newview/skins/default/xui/en/menu_object_icon.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_outfit_gear.xml b/indra/newview/skins/default/xui/en/menu_outfit_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_outfit_tab.xml b/indra/newview/skins/default/xui/en/menu_outfit_tab.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_participant_list.xml b/indra/newview/skins/default/xui/en/menu_participant_list.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_participant_view.xml b/indra/newview/skins/default/xui/en/menu_participant_view.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_people_blocked_gear.xml b/indra/newview/skins/default/xui/en/menu_people_blocked_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_people_blocked_plus.xml b/indra/newview/skins/default/xui/en/menu_people_blocked_plus.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_people_blocked_view.xml b/indra/newview/skins/default/xui/en/menu_people_blocked_view.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_people_friends_view.xml b/indra/newview/skins/default/xui/en/menu_people_friends_view.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_people_groups.xml b/indra/newview/skins/default/xui/en/menu_people_groups.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_people_groups_view.xml b/indra/newview/skins/default/xui/en/menu_people_groups_view.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_people_nearby.xml b/indra/newview/skins/default/xui/en/menu_people_nearby.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/en/menu_people_nearby_multiselect.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_people_nearby_view.xml b/indra/newview/skins/default/xui/en/menu_people_nearby_view.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_people_recent_view.xml b/indra/newview/skins/default/xui/en/menu_people_recent_view.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_picks.xml b/indra/newview/skins/default/xui/en/menu_picks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_picks_plus.xml b/indra/newview/skins/default/xui/en/menu_picks_plus.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_place.xml b/indra/newview/skins/default/xui/en/menu_place.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_place_add_button.xml b/indra/newview/skins/default/xui/en/menu_place_add_button.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_places_gear_folder.xml b/indra/newview/skins/default/xui/en/menu_places_gear_folder.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_places_gear_landmark.xml b/indra/newview/skins/default/xui/en/menu_places_gear_landmark.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_profile_overflow.xml b/indra/newview/skins/default/xui/en/menu_profile_overflow.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_save_outfit.xml b/indra/newview/skins/default/xui/en/menu_save_outfit.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_script_chiclet.xml b/indra/newview/skins/default/xui/en/menu_script_chiclet.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_slurl.xml b/indra/newview/skins/default/xui/en/menu_slurl.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_teleport_history_gear.xml b/indra/newview/skins/default/xui/en/menu_teleport_history_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_teleport_history_item.xml b/indra/newview/skins/default/xui/en/menu_teleport_history_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_teleport_history_tab.xml b/indra/newview/skins/default/xui/en/menu_teleport_history_tab.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_text_editor.xml b/indra/newview/skins/default/xui/en/menu_text_editor.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_toolbars.xml b/indra/newview/skins/default/xui/en/menu_toolbars.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_topinfobar.xml b/indra/newview/skins/default/xui/en/menu_topinfobar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_url_agent.xml b/indra/newview/skins/default/xui/en/menu_url_agent.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_url_group.xml b/indra/newview/skins/default/xui/en/menu_url_group.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_url_http.xml b/indra/newview/skins/default/xui/en/menu_url_http.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_url_inventory.xml b/indra/newview/skins/default/xui/en/menu_url_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_url_map.xml b/indra/newview/skins/default/xui/en/menu_url_map.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_url_objectim.xml b/indra/newview/skins/default/xui/en/menu_url_objectim.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_url_parcel.xml b/indra/newview/skins/default/xui/en/menu_url_parcel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_url_slapp.xml b/indra/newview/skins/default/xui/en/menu_url_slapp.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_url_slurl.xml b/indra/newview/skins/default/xui/en/menu_url_slurl.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_url_teleport.xml b/indra/newview/skins/default/xui/en/menu_url_teleport.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_wearable_list_item.xml b/indra/newview/skins/default/xui/en/menu_wearable_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_wearing_gear.xml b/indra/newview/skins/default/xui/en/menu_wearing_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/menu_wearing_tab.xml b/indra/newview/skins/default/xui/en/menu_wearing_tab.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/mime_types.xml b/indra/newview/skins/default/xui/en/mime_types.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/mime_types_linux.xml b/indra/newview/skins/default/xui/en/mime_types_linux.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/mime_types_mac.xml b/indra/newview/skins/default/xui/en/mime_types_mac.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/notification_visibility.xml b/indra/newview/skins/default/xui/en/notification_visibility.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/outfit_accordion_tab.xml b/indra/newview/skins/default/xui/en/outfit_accordion_tab.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_active_object_row.xml b/indra/newview/skins/default/xui/en/panel_active_object_row.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/en/panel_avatar_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_avatar_tag.xml b/indra/newview/skins/default/xui/en/panel_avatar_tag.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/en/panel_block_list_sidetray.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_blocked_list_item.xml b/indra/newview/skins/default/xui/en/panel_blocked_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_body_parts_list_item.xml b/indra/newview/skins/default/xui/en/panel_body_parts_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_bodyparts_list_button_bar.xml b/indra/newview/skins/default/xui/en/panel_bodyparts_list_button_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_bottomtray_lite.xml b/indra/newview/skins/default/xui/en/panel_bottomtray_lite.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_chat_header.xml b/indra/newview/skins/default/xui/en/panel_chat_header.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_chat_item.xml b/indra/newview/skins/default/xui/en/panel_chat_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_chat_separator.xml b/indra/newview/skins/default/xui/en/panel_chat_separator.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_chiclet_bar.xml b/indra/newview/skins/default/xui/en/panel_chiclet_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_classified_info.xml b/indra/newview/skins/default/xui/en/panel_classified_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_classifieds_list_item.xml b/indra/newview/skins/default/xui/en/panel_classifieds_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_clothing_list_button_bar.xml b/indra/newview/skins/default/xui/en/panel_clothing_list_button_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_clothing_list_item.xml b/indra/newview/skins/default/xui/en/panel_clothing_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_cof_wearables.xml b/indra/newview/skins/default/xui/en/panel_cof_wearables.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_conversation_list_item.xml b/indra/newview/skins/default/xui/en/panel_conversation_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_conversation_log_list_item.xml b/indra/newview/skins/default/xui/en/panel_conversation_log_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_deletable_wearable_list_item.xml b/indra/newview/skins/default/xui/en/panel_deletable_wearable_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_dummy_clothing_list_item.xml b/indra/newview/skins/default/xui/en/panel_dummy_clothing_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_edit_alpha.xml b/indra/newview/skins/default/xui/en/panel_edit_alpha.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_edit_classified.xml b/indra/newview/skins/default/xui/en/panel_edit_classified.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_edit_eyes.xml b/indra/newview/skins/default/xui/en/panel_edit_eyes.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_edit_gloves.xml b/indra/newview/skins/default/xui/en/panel_edit_gloves.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_edit_hair.xml b/indra/newview/skins/default/xui/en/panel_edit_hair.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_edit_jacket.xml b/indra/newview/skins/default/xui/en/panel_edit_jacket.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_edit_pants.xml b/indra/newview/skins/default/xui/en/panel_edit_pants.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_edit_physics.xml b/indra/newview/skins/default/xui/en/panel_edit_physics.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_edit_pick.xml b/indra/newview/skins/default/xui/en/panel_edit_pick.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_edit_profile.xml b/indra/newview/skins/default/xui/en/panel_edit_profile.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_edit_shape.xml b/indra/newview/skins/default/xui/en/panel_edit_shape.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_edit_shirt.xml b/indra/newview/skins/default/xui/en/panel_edit_shirt.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_edit_shoes.xml b/indra/newview/skins/default/xui/en/panel_edit_shoes.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_edit_skin.xml b/indra/newview/skins/default/xui/en/panel_edit_skin.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_edit_skirt.xml b/indra/newview/skins/default/xui/en/panel_edit_skirt.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_edit_socks.xml b/indra/newview/skins/default/xui/en/panel_edit_socks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/en/panel_edit_tattoo.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_edit_underpants.xml b/indra/newview/skins/default/xui/en/panel_edit_underpants.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_edit_undershirt.xml b/indra/newview/skins/default/xui/en/panel_edit_undershirt.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_edit_wearable.xml b/indra/newview/skins/default/xui/en/panel_edit_wearable.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_generic_tip.xml b/indra/newview/skins/default/xui/en/panel_generic_tip.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_group_general.xml b/indra/newview/skins/default/xui/en/panel_group_general.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_group_invite.xml b/indra/newview/skins/default/xui/en/panel_group_invite.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_group_land_money.xml b/indra/newview/skins/default/xui/en/panel_group_land_money.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_group_list_item.xml b/indra/newview/skins/default/xui/en/panel_group_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_group_notices.xml b/indra/newview/skins/default/xui/en/panel_group_notices.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_group_notify.xml b/indra/newview/skins/default/xui/en/panel_group_notify.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_group_roles.xml b/indra/newview/skins/default/xui/en/panel_group_roles.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_hint.xml b/indra/newview/skins/default/xui/en/panel_hint.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_hint_image.xml b/indra/newview/skins/default/xui/en/panel_hint_image.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_hud.xml b/indra/newview/skins/default/xui/en/panel_hud.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_inbox_inventory.xml b/indra/newview/skins/default/xui/en/panel_inbox_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_instant_message.xml b/indra/newview/skins/default/xui/en/panel_instant_message.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_inventory_item.xml b/indra/newview/skins/default/xui/en/panel_inventory_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_landmark_info.xml b/indra/newview/skins/default/xui/en/panel_landmark_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_landmarks.xml b/indra/newview/skins/default/xui/en/panel_landmarks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_login.xml b/indra/newview/skins/default/xui/en/panel_login.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_main_inventory.xml b/indra/newview/skins/default/xui/en/panel_main_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_me.xml b/indra/newview/skins/default/xui/en/panel_me.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_media_settings_general.xml b/indra/newview/skins/default/xui/en/panel_media_settings_general.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_media_settings_permissions.xml b/indra/newview/skins/default/xui/en/panel_media_settings_permissions.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_media_settings_security.xml b/indra/newview/skins/default/xui/en/panel_media_settings_security.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_nearby_chat.xml b/indra/newview/skins/default/xui/en/panel_nearby_chat.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_nearby_media.xml b/indra/newview/skins/default/xui/en/panel_nearby_media.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_notification.xml b/indra/newview/skins/default/xui/en/panel_notification.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_notifications_channel.xml b/indra/newview/skins/default/xui/en/panel_notifications_channel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_notify_textbox.xml b/indra/newview/skins/default/xui/en/panel_notify_textbox.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_online_status_toast.xml b/indra/newview/skins/default/xui/en/panel_online_status_toast.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_outbox_inventory.xml b/indra/newview/skins/default/xui/en/panel_outbox_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_outfit_edit.xml b/indra/newview/skins/default/xui/en/panel_outfit_edit.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_outfits_inventory_gear_default.xml b/indra/newview/skins/default/xui/en/panel_outfits_inventory_gear_default.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_outfits_list.xml b/indra/newview/skins/default/xui/en/panel_outfits_list.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_outfits_wearing.xml b/indra/newview/skins/default/xui/en/panel_outfits_wearing.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_people.xml b/indra/newview/skins/default/xui/en/panel_people.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_pick_info.xml b/indra/newview/skins/default/xui/en/panel_pick_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_pick_list_item.xml b/indra/newview/skins/default/xui/en/panel_pick_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_picks.xml b/indra/newview/skins/default/xui/en/panel_picks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_place_profile.xml b/indra/newview/skins/default/xui/en/panel_place_profile.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_places.xml b/indra/newview/skins/default/xui/en/panel_places.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_postcard_message.xml b/indra/newview/skins/default/xui/en/panel_postcard_message.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_postcard_settings.xml b/indra/newview/skins/default/xui/en/panel_postcard_settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_alerts.xml b/indra/newview/skins/default/xui/en/panel_preferences_alerts.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_chat.xml b/indra/newview/skins/default/xui/en/panel_preferences_chat.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_colors.xml b/indra/newview/skins/default/xui/en/panel_preferences_colors.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_general.xml b/indra/newview/skins/default/xui/en/panel_preferences_general.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_move.xml b/indra/newview/skins/default/xui/en/panel_preferences_move.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_sound.xml b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_prim_media_controls.xml b/indra/newview/skins/default/xui/en/panel_prim_media_controls.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_progress.xml b/indra/newview/skins/default/xui/en/panel_progress.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_region_covenant.xml b/indra/newview/skins/default/xui/en/panel_region_covenant.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_region_debug.xml b/indra/newview/skins/default/xui/en/panel_region_debug.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_region_environment.xml b/indra/newview/skins/default/xui/en/panel_region_environment.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_region_estate.xml b/indra/newview/skins/default/xui/en/panel_region_estate.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_region_general.xml b/indra/newview/skins/default/xui/en/panel_region_general.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_region_terrain.xml b/indra/newview/skins/default/xui/en/panel_region_terrain.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_script_ed.xml b/indra/newview/skins/default/xui/en/panel_script_ed.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_script_limits_my_avatar.xml b/indra/newview/skins/default/xui/en/panel_script_limits_my_avatar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_script_limits_region_memory.xml b/indra/newview/skins/default/xui/en/panel_script_limits_region_memory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_script_question_toast.xml b/indra/newview/skins/default/xui/en/panel_script_question_toast.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_scrolling_param.xml b/indra/newview/skins/default/xui/en/panel_scrolling_param.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_scrolling_param_base.xml b/indra/newview/skins/default/xui/en/panel_scrolling_param_base.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_side_tray_tab_caption.xml b/indra/newview/skins/default/xui/en/panel_side_tray_tab_caption.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_sidetray_home_tab.xml b/indra/newview/skins/default/xui/en/panel_sidetray_home_tab.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_snapshot_inventory.xml b/indra/newview/skins/default/xui/en/panel_snapshot_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_snapshot_local.xml b/indra/newview/skins/default/xui/en/panel_snapshot_local.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_snapshot_options.xml b/indra/newview/skins/default/xui/en/panel_snapshot_options.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_snapshot_postcard.xml b/indra/newview/skins/default/xui/en/panel_snapshot_postcard.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_snapshot_profile.xml b/indra/newview/skins/default/xui/en/panel_snapshot_profile.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_sound_devices.xml b/indra/newview/skins/default/xui/en/panel_sound_devices.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_stand_stop_flying.xml b/indra/newview/skins/default/xui/en/panel_stand_stop_flying.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_status_bar.xml b/indra/newview/skins/default/xui/en/panel_status_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_sys_well_item.xml b/indra/newview/skins/default/xui/en/panel_sys_well_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_teleport_history.xml b/indra/newview/skins/default/xui/en/panel_teleport_history.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_teleport_history_item.xml b/indra/newview/skins/default/xui/en/panel_teleport_history_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_toast.xml b/indra/newview/skins/default/xui/en/panel_toast.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_toolbar_view.xml b/indra/newview/skins/default/xui/en/panel_toolbar_view.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_topinfo_bar.xml b/indra/newview/skins/default/xui/en/panel_topinfo_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_voice_effect.xml b/indra/newview/skins/default/xui/en/panel_voice_effect.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_volume_pulldown.xml b/indra/newview/skins/default/xui/en/panel_volume_pulldown.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/panel_world_map.xml b/indra/newview/skins/default/xui/en/panel_world_map.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/role_actions.xml b/indra/newview/skins/default/xui/en/role_actions.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/sidepanel_appearance.xml b/indra/newview/skins/default/xui/en/sidepanel_appearance.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/sidepanel_inventory.xml b/indra/newview/skins/default/xui/en/sidepanel_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/sidepanel_item_info.xml b/indra/newview/skins/default/xui/en/sidepanel_item_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/sidepanel_task_info.xml b/indra/newview/skins/default/xui/en/sidepanel_task_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/teleport_strings.xml b/indra/newview/skins/default/xui/en/teleport_strings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/accordion.xml b/indra/newview/skins/default/xui/en/widgets/accordion.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/accordion_tab.xml b/indra/newview/skins/default/xui/en/widgets/accordion_tab.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/avatar_icon.xml b/indra/newview/skins/default/xui/en/widgets/avatar_icon.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/avatar_list_item.xml b/indra/newview/skins/default/xui/en/widgets/avatar_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/badge.xml b/indra/newview/skins/default/xui/en/widgets/badge.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/bodyparts_list_item.xml b/indra/newview/skins/default/xui/en/widgets/bodyparts_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/button.xml b/indra/newview/skins/default/xui/en/widgets/button.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/chat_editor.xml b/indra/newview/skins/default/xui/en/widgets/chat_editor.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/chat_history.xml b/indra/newview/skins/default/xui/en/widgets/chat_history.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/check_box.xml b/indra/newview/skins/default/xui/en/widgets/check_box.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_offer.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_offer.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_panel.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_panel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_script.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_script.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/clothing_list_item.xml b/indra/newview/skins/default/xui/en/widgets/clothing_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/color_swatch.xml b/indra/newview/skins/default/xui/en/widgets/color_swatch.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/combo_box.xml b/indra/newview/skins/default/xui/en/widgets/combo_box.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/context_menu.xml b/indra/newview/skins/default/xui/en/widgets/context_menu.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/conversation_view_session.xml b/indra/newview/skins/default/xui/en/widgets/conversation_view_session.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/deletable_wearable_list_item.xml b/indra/newview/skins/default/xui/en/widgets/deletable_wearable_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/drop_down.xml b/indra/newview/skins/default/xui/en/widgets/drop_down.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/dummy_clothing_list_item.xml b/indra/newview/skins/default/xui/en/widgets/dummy_clothing_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/expandable_text.xml b/indra/newview/skins/default/xui/en/widgets/expandable_text.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/filter_editor.xml b/indra/newview/skins/default/xui/en/widgets/filter_editor.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/flat_list_view.xml b/indra/newview/skins/default/xui/en/widgets/flat_list_view.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/floater.xml b/indra/newview/skins/default/xui/en/widgets/floater.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/flyout_button.xml b/indra/newview/skins/default/xui/en/widgets/flyout_button.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/folder_view_item.xml b/indra/newview/skins/default/xui/en/widgets/folder_view_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/gesture_combo_list.xml b/indra/newview/skins/default/xui/en/widgets/gesture_combo_list.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/group_icon.xml b/indra/newview/skins/default/xui/en/widgets/group_icon.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/hint_popup.xml b/indra/newview/skins/default/xui/en/widgets/hint_popup.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/icon.xml b/indra/newview/skins/default/xui/en/widgets/icon.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/inbox_folder_view_folder.xml b/indra/newview/skins/default/xui/en/widgets/inbox_folder_view_folder.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/inbox_folder_view_item.xml b/indra/newview/skins/default/xui/en/widgets/inbox_folder_view_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/inbox_inventory_panel.xml b/indra/newview/skins/default/xui/en/widgets/inbox_inventory_panel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/inspector.xml b/indra/newview/skins/default/xui/en/widgets/inspector.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/inventory_list_item.xml b/indra/newview/skins/default/xui/en/widgets/inventory_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/inventory_panel.xml b/indra/newview/skins/default/xui/en/widgets/inventory_panel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/joystick_rotate.xml b/indra/newview/skins/default/xui/en/widgets/joystick_rotate.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/layout_stack.xml b/indra/newview/skins/default/xui/en/widgets/layout_stack.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/line_editor.xml b/indra/newview/skins/default/xui/en/widgets/line_editor.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/list_view.xml b/indra/newview/skins/default/xui/en/widgets/list_view.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/loading_indicator.xml b/indra/newview/skins/default/xui/en/widgets/loading_indicator.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/location_input.xml b/indra/newview/skins/default/xui/en/widgets/location_input.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/menu.xml b/indra/newview/skins/default/xui/en/widgets/menu.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/menu_bar.xml b/indra/newview/skins/default/xui/en/widgets/menu_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/menu_item.xml b/indra/newview/skins/default/xui/en/widgets/menu_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/menu_item_call.xml b/indra/newview/skins/default/xui/en/widgets/menu_item_call.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/menu_item_check.xml b/indra/newview/skins/default/xui/en/widgets/menu_item_check.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/menu_item_separator.xml b/indra/newview/skins/default/xui/en/widgets/menu_item_separator.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/menu_item_tear_off.xml b/indra/newview/skins/default/xui/en/widgets/menu_item_tear_off.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/multi_slider.xml b/indra/newview/skins/default/xui/en/widgets/multi_slider.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/multi_slider_bar.xml b/indra/newview/skins/default/xui/en/widgets/multi_slider_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/name_editor.xml b/indra/newview/skins/default/xui/en/widgets/name_editor.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/name_list.xml b/indra/newview/skins/default/xui/en/widgets/name_list.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/output_monitor.xml b/indra/newview/skins/default/xui/en/widgets/output_monitor.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/panel.xml b/indra/newview/skins/default/xui/en/widgets/panel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/panel_camera_item.xml b/indra/newview/skins/default/xui/en/widgets/panel_camera_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/progress_bar.xml b/indra/newview/skins/default/xui/en/widgets/progress_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/radio_group.xml b/indra/newview/skins/default/xui/en/widgets/radio_group.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/radio_item.xml b/indra/newview/skins/default/xui/en/widgets/radio_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/scroll_bar.xml b/indra/newview/skins/default/xui/en/widgets/scroll_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/scroll_column_header.xml b/indra/newview/skins/default/xui/en/widgets/scroll_column_header.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/scroll_container.xml b/indra/newview/skins/default/xui/en/widgets/scroll_container.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/scroll_list.xml b/indra/newview/skins/default/xui/en/widgets/scroll_list.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/scrolling_panel_list.xml b/indra/newview/skins/default/xui/en/widgets/scrolling_panel_list.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/search_combo_box.xml b/indra/newview/skins/default/xui/en/widgets/search_combo_box.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/search_editor.xml b/indra/newview/skins/default/xui/en/widgets/search_editor.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/side_tray.xml b/indra/newview/skins/default/xui/en/widgets/side_tray.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/sidetray_tab.xml b/indra/newview/skins/default/xui/en/widgets/sidetray_tab.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/simple_text_editor.xml b/indra/newview/skins/default/xui/en/widgets/simple_text_editor.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/slider.xml b/indra/newview/skins/default/xui/en/widgets/slider.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/slider_bar.xml b/indra/newview/skins/default/xui/en/widgets/slider_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/spinner.xml b/indra/newview/skins/default/xui/en/widgets/spinner.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/split_button.xml b/indra/newview/skins/default/xui/en/widgets/split_button.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/tab_container.xml b/indra/newview/skins/default/xui/en/widgets/tab_container.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/talk_button.xml b/indra/newview/skins/default/xui/en/widgets/talk_button.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/teleport_history_menu_item.xml b/indra/newview/skins/default/xui/en/widgets/teleport_history_menu_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/text.xml b/indra/newview/skins/default/xui/en/widgets/text.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/text_editor.xml b/indra/newview/skins/default/xui/en/widgets/text_editor.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/textbase.xml b/indra/newview/skins/default/xui/en/widgets/textbase.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/texture_picker.xml b/indra/newview/skins/default/xui/en/widgets/texture_picker.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/time.xml b/indra/newview/skins/default/xui/en/widgets/time.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/toggleable_menu.xml b/indra/newview/skins/default/xui/en/widgets/toggleable_menu.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/tool_tip.xml b/indra/newview/skins/default/xui/en/widgets/tool_tip.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/toolbar.xml b/indra/newview/skins/default/xui/en/widgets/toolbar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/ui_ctrl.xml b/indra/newview/skins/default/xui/en/widgets/ui_ctrl.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/view_border.xml b/indra/newview/skins/default/xui/en/widgets/view_border.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/web_browser.xml b/indra/newview/skins/default/xui/en/widgets/web_browser.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/widgets/window_shade.xml b/indra/newview/skins/default/xui/en/widgets/window_shade.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/xui_version.xml b/indra/newview/skins/default/xui/en/xui_version.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_about.xml b/indra/newview/skins/default/xui/es/floater_about.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_about_land.xml b/indra/newview/skins/default/xui/es/floater_about_land.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_activeim.xml b/indra/newview/skins/default/xui/es/floater_activeim.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_auction.xml b/indra/newview/skins/default/xui/es/floater_auction.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_autoreplace.xml b/indra/newview/skins/default/xui/es/floater_autoreplace.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_avatar.xml b/indra/newview/skins/default/xui/es/floater_avatar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_avatar_picker.xml b/indra/newview/skins/default/xui/es/floater_avatar_picker.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_avatar_textures.xml b/indra/newview/skins/default/xui/es/floater_avatar_textures.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_beacons.xml b/indra/newview/skins/default/xui/es/floater_beacons.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_build_options.xml b/indra/newview/skins/default/xui/es/floater_build_options.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_bulk_perms.xml b/indra/newview/skins/default/xui/es/floater_bulk_perms.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_bumps.xml b/indra/newview/skins/default/xui/es/floater_bumps.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_buy_contents.xml b/indra/newview/skins/default/xui/es/floater_buy_contents.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_buy_currency.xml b/indra/newview/skins/default/xui/es/floater_buy_currency.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_buy_currency_html.xml b/indra/newview/skins/default/xui/es/floater_buy_currency_html.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_buy_land.xml b/indra/newview/skins/default/xui/es/floater_buy_land.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_buy_object.xml b/indra/newview/skins/default/xui/es/floater_buy_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_camera.xml b/indra/newview/skins/default/xui/es/floater_camera.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_chat_bar.xml b/indra/newview/skins/default/xui/es/floater_chat_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_choose_group.xml b/indra/newview/skins/default/xui/es/floater_choose_group.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_color_picker.xml b/indra/newview/skins/default/xui/es/floater_color_picker.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_critical.xml b/indra/newview/skins/default/xui/es/floater_critical.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_delete_env_preset.xml b/indra/newview/skins/default/xui/es/floater_delete_env_preset.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_destinations.xml b/indra/newview/skins/default/xui/es/floater_destinations.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_display_name.xml b/indra/newview/skins/default/xui/es/floater_display_name.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_edit_day_cycle.xml b/indra/newview/skins/default/xui/es/floater_edit_day_cycle.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_edit_sky_preset.xml b/indra/newview/skins/default/xui/es/floater_edit_sky_preset.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_edit_water_preset.xml b/indra/newview/skins/default/xui/es/floater_edit_water_preset.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_environment_settings.xml b/indra/newview/skins/default/xui/es/floater_environment_settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_event.xml b/indra/newview/skins/default/xui/es/floater_event.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_fast_timers.xml b/indra/newview/skins/default/xui/es/floater_fast_timers.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_font_test.xml b/indra/newview/skins/default/xui/es/floater_font_test.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_gesture.xml b/indra/newview/skins/default/xui/es/floater_gesture.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_god_tools.xml b/indra/newview/skins/default/xui/es/floater_god_tools.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_hardware_settings.xml b/indra/newview/skins/default/xui/es/floater_hardware_settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_help_browser.xml b/indra/newview/skins/default/xui/es/floater_help_browser.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_how_to.xml b/indra/newview/skins/default/xui/es/floater_how_to.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_hud.xml b/indra/newview/skins/default/xui/es/floater_hud.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_im_container.xml b/indra/newview/skins/default/xui/es/floater_im_container.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_im_session.xml b/indra/newview/skins/default/xui/es/floater_im_session.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_image_preview.xml b/indra/newview/skins/default/xui/es/floater_image_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_import_collada.xml b/indra/newview/skins/default/xui/es/floater_import_collada.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_incoming_call.xml b/indra/newview/skins/default/xui/es/floater_incoming_call.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_inspect.xml b/indra/newview/skins/default/xui/es/floater_inspect.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/es/floater_inventory_item_properties.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/es/floater_inventory_view_finder.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_joystick.xml b/indra/newview/skins/default/xui/es/floater_joystick.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_lagmeter.xml b/indra/newview/skins/default/xui/es/floater_lagmeter.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_land_holdings.xml b/indra/newview/skins/default/xui/es/floater_land_holdings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/es/floater_live_lsleditor.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_lsl_guide.xml b/indra/newview/skins/default/xui/es/floater_lsl_guide.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_map.xml b/indra/newview/skins/default/xui/es/floater_map.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_media_browser.xml b/indra/newview/skins/default/xui/es/floater_media_browser.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_media_settings.xml b/indra/newview/skins/default/xui/es/floater_media_settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_mem_leaking.xml b/indra/newview/skins/default/xui/es/floater_mem_leaking.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_merchant_outbox.xml b/indra/newview/skins/default/xui/es/floater_merchant_outbox.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_model_preview.xml b/indra/newview/skins/default/xui/es/floater_model_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_moveview.xml b/indra/newview/skins/default/xui/es/floater_moveview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_mute_object.xml b/indra/newview/skins/default/xui/es/floater_mute_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_my_appearance.xml b/indra/newview/skins/default/xui/es/floater_my_appearance.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_my_inventory.xml b/indra/newview/skins/default/xui/es/floater_my_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_object_weights.xml b/indra/newview/skins/default/xui/es/floater_object_weights.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_openobject.xml b/indra/newview/skins/default/xui/es/floater_openobject.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_outfit_save_as.xml b/indra/newview/skins/default/xui/es/floater_outfit_save_as.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_outgoing_call.xml b/indra/newview/skins/default/xui/es/floater_outgoing_call.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_pathfinding_characters.xml b/indra/newview/skins/default/xui/es/floater_pathfinding_characters.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_pathfinding_console.xml b/indra/newview/skins/default/xui/es/floater_pathfinding_console.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_pathfinding_linksets.xml b/indra/newview/skins/default/xui/es/floater_pathfinding_linksets.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_pay.xml b/indra/newview/skins/default/xui/es/floater_pay.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_pay_object.xml b/indra/newview/skins/default/xui/es/floater_pay_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_people.xml b/indra/newview/skins/default/xui/es/floater_people.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_perm_prefs.xml b/indra/newview/skins/default/xui/es/floater_perm_prefs.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_picks.xml b/indra/newview/skins/default/xui/es/floater_picks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_places.xml b/indra/newview/skins/default/xui/es/floater_places.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_post_process.xml b/indra/newview/skins/default/xui/es/floater_post_process.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_preferences.xml b/indra/newview/skins/default/xui/es/floater_preferences.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_preferences_proxy.xml b/indra/newview/skins/default/xui/es/floater_preferences_proxy.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_preview_animation.xml b/indra/newview/skins/default/xui/es/floater_preview_animation.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_preview_gesture.xml b/indra/newview/skins/default/xui/es/floater_preview_gesture.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_preview_notecard.xml b/indra/newview/skins/default/xui/es/floater_preview_notecard.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_preview_sound.xml b/indra/newview/skins/default/xui/es/floater_preview_sound.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_preview_texture.xml b/indra/newview/skins/default/xui/es/floater_preview_texture.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_price_for_listing.xml b/indra/newview/skins/default/xui/es/floater_price_for_listing.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_publish_classified.xml b/indra/newview/skins/default/xui/es/floater_publish_classified.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_region_debug_console.xml b/indra/newview/skins/default/xui/es/floater_region_debug_console.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_region_info.xml b/indra/newview/skins/default/xui/es/floater_region_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_report_abuse.xml b/indra/newview/skins/default/xui/es/floater_report_abuse.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_script_debug.xml b/indra/newview/skins/default/xui/es/floater_script_debug.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_script_debug_panel.xml b/indra/newview/skins/default/xui/es/floater_script_debug_panel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_script_limits.xml b/indra/newview/skins/default/xui/es/floater_script_limits.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_script_preview.xml b/indra/newview/skins/default/xui/es/floater_script_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_script_queue.xml b/indra/newview/skins/default/xui/es/floater_script_queue.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_script_search.xml b/indra/newview/skins/default/xui/es/floater_script_search.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_search.xml b/indra/newview/skins/default/xui/es/floater_search.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_select_key.xml b/indra/newview/skins/default/xui/es/floater_select_key.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_sell_land.xml b/indra/newview/skins/default/xui/es/floater_sell_land.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_settings_debug.xml b/indra/newview/skins/default/xui/es/floater_settings_debug.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_snapshot.xml b/indra/newview/skins/default/xui/es/floater_snapshot.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_sound_devices.xml b/indra/newview/skins/default/xui/es/floater_sound_devices.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_sound_preview.xml b/indra/newview/skins/default/xui/es/floater_sound_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_spellcheck.xml b/indra/newview/skins/default/xui/es/floater_spellcheck.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_spellcheck_import.xml b/indra/newview/skins/default/xui/es/floater_spellcheck_import.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_stats.xml b/indra/newview/skins/default/xui/es/floater_stats.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_sys_well.xml b/indra/newview/skins/default/xui/es/floater_sys_well.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_telehub.xml b/indra/newview/skins/default/xui/es/floater_telehub.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_test_layout_stacks.xml b/indra/newview/skins/default/xui/es/floater_test_layout_stacks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/es/floater_texture_ctrl.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_texture_fetch_debugger.xml b/indra/newview/skins/default/xui/es/floater_texture_fetch_debugger.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_tools.xml b/indra/newview/skins/default/xui/es/floater_tools.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_top_objects.xml b/indra/newview/skins/default/xui/es/floater_top_objects.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_tos.xml b/indra/newview/skins/default/xui/es/floater_tos.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_toybox.xml b/indra/newview/skins/default/xui/es/floater_toybox.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_translation_settings.xml b/indra/newview/skins/default/xui/es/floater_translation_settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_url_entry.xml b/indra/newview/skins/default/xui/es/floater_url_entry.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_voice_controls.xml b/indra/newview/skins/default/xui/es/floater_voice_controls.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_voice_effect.xml b/indra/newview/skins/default/xui/es/floater_voice_effect.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_web_content.xml b/indra/newview/skins/default/xui/es/floater_web_content.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_whitelist_entry.xml b/indra/newview/skins/default/xui/es/floater_whitelist_entry.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_window_size.xml b/indra/newview/skins/default/xui/es/floater_window_size.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/floater_world_map.xml b/indra/newview/skins/default/xui/es/floater_world_map.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/inspect_avatar.xml b/indra/newview/skins/default/xui/es/inspect_avatar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/inspect_group.xml b/indra/newview/skins/default/xui/es/inspect_group.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/inspect_object.xml b/indra/newview/skins/default/xui/es/inspect_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/inspect_remote_object.xml b/indra/newview/skins/default/xui/es/inspect_remote_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/language_settings.xml b/indra/newview/skins/default/xui/es/language_settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_add_wearable_gear.xml b/indra/newview/skins/default/xui/es/menu_add_wearable_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_attachment_other.xml b/indra/newview/skins/default/xui/es/menu_attachment_other.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_attachment_self.xml b/indra/newview/skins/default/xui/es/menu_attachment_self.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_avatar_icon.xml b/indra/newview/skins/default/xui/es/menu_avatar_icon.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_avatar_other.xml b/indra/newview/skins/default/xui/es/menu_avatar_other.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_avatar_self.xml b/indra/newview/skins/default/xui/es/menu_avatar_self.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_cof_attachment.xml b/indra/newview/skins/default/xui/es/menu_cof_attachment.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_cof_body_part.xml b/indra/newview/skins/default/xui/es/menu_cof_body_part.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_cof_clothing.xml b/indra/newview/skins/default/xui/es/menu_cof_clothing.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_cof_gear.xml b/indra/newview/skins/default/xui/es/menu_cof_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_edit.xml b/indra/newview/skins/default/xui/es/menu_edit.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_favorites.xml b/indra/newview/skins/default/xui/es/menu_favorites.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_gesture_gear.xml b/indra/newview/skins/default/xui/es/menu_gesture_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_group_plus.xml b/indra/newview/skins/default/xui/es/menu_group_plus.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_hide_navbar.xml b/indra/newview/skins/default/xui/es/menu_hide_navbar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_imchiclet_adhoc.xml b/indra/newview/skins/default/xui/es/menu_imchiclet_adhoc.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_imchiclet_group.xml b/indra/newview/skins/default/xui/es/menu_imchiclet_group.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_imchiclet_p2p.xml b/indra/newview/skins/default/xui/es/menu_imchiclet_p2p.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/es/menu_inspect_avatar_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_inspect_object_gear.xml b/indra/newview/skins/default/xui/es/menu_inspect_object_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_inspect_self_gear.xml b/indra/newview/skins/default/xui/es/menu_inspect_self_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_inv_offer_chiclet.xml b/indra/newview/skins/default/xui/es/menu_inv_offer_chiclet.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_inventory.xml b/indra/newview/skins/default/xui/es/menu_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_inventory_add.xml b/indra/newview/skins/default/xui/es/menu_inventory_add.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/es/menu_inventory_gear_default.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_land.xml b/indra/newview/skins/default/xui/es/menu_land.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_landmark.xml b/indra/newview/skins/default/xui/es/menu_landmark.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_login.xml b/indra/newview/skins/default/xui/es/menu_login.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_media_ctrl.xml b/indra/newview/skins/default/xui/es/menu_media_ctrl.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_mini_map.xml b/indra/newview/skins/default/xui/es/menu_mini_map.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_model_import_gear_default.xml b/indra/newview/skins/default/xui/es/menu_model_import_gear_default.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_navbar.xml b/indra/newview/skins/default/xui/es/menu_navbar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_nearby_chat.xml b/indra/newview/skins/default/xui/es/menu_nearby_chat.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_notification_well_button.xml b/indra/newview/skins/default/xui/es/menu_notification_well_button.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_object.xml b/indra/newview/skins/default/xui/es/menu_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_object_icon.xml b/indra/newview/skins/default/xui/es/menu_object_icon.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_outfit_gear.xml b/indra/newview/skins/default/xui/es/menu_outfit_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_outfit_tab.xml b/indra/newview/skins/default/xui/es/menu_outfit_tab.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_participant_list.xml b/indra/newview/skins/default/xui/es/menu_participant_list.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_people_friends_view_sort.xml b/indra/newview/skins/default/xui/es/menu_people_friends_view_sort.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_people_groups.xml b/indra/newview/skins/default/xui/es/menu_people_groups.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_people_groups_view_sort.xml b/indra/newview/skins/default/xui/es/menu_people_groups_view_sort.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_people_nearby.xml b/indra/newview/skins/default/xui/es/menu_people_nearby.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/es/menu_people_nearby_multiselect.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_people_nearby_view_sort.xml b/indra/newview/skins/default/xui/es/menu_people_nearby_view_sort.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_people_recent_view_sort.xml b/indra/newview/skins/default/xui/es/menu_people_recent_view_sort.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_picks.xml b/indra/newview/skins/default/xui/es/menu_picks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_picks_plus.xml b/indra/newview/skins/default/xui/es/menu_picks_plus.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_place.xml b/indra/newview/skins/default/xui/es/menu_place.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_place_add_button.xml b/indra/newview/skins/default/xui/es/menu_place_add_button.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_places_gear_folder.xml b/indra/newview/skins/default/xui/es/menu_places_gear_folder.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_places_gear_landmark.xml b/indra/newview/skins/default/xui/es/menu_places_gear_landmark.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_profile_overflow.xml b/indra/newview/skins/default/xui/es/menu_profile_overflow.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_save_outfit.xml b/indra/newview/skins/default/xui/es/menu_save_outfit.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_script_chiclet.xml b/indra/newview/skins/default/xui/es/menu_script_chiclet.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_slurl.xml b/indra/newview/skins/default/xui/es/menu_slurl.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_teleport_history_gear.xml b/indra/newview/skins/default/xui/es/menu_teleport_history_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_teleport_history_item.xml b/indra/newview/skins/default/xui/es/menu_teleport_history_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_teleport_history_tab.xml b/indra/newview/skins/default/xui/es/menu_teleport_history_tab.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_text_editor.xml b/indra/newview/skins/default/xui/es/menu_text_editor.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_toolbars.xml b/indra/newview/skins/default/xui/es/menu_toolbars.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_topinfobar.xml b/indra/newview/skins/default/xui/es/menu_topinfobar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_url_agent.xml b/indra/newview/skins/default/xui/es/menu_url_agent.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_url_group.xml b/indra/newview/skins/default/xui/es/menu_url_group.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_url_http.xml b/indra/newview/skins/default/xui/es/menu_url_http.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_url_inventory.xml b/indra/newview/skins/default/xui/es/menu_url_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_url_map.xml b/indra/newview/skins/default/xui/es/menu_url_map.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_url_objectim.xml b/indra/newview/skins/default/xui/es/menu_url_objectim.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_url_parcel.xml b/indra/newview/skins/default/xui/es/menu_url_parcel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_url_slapp.xml b/indra/newview/skins/default/xui/es/menu_url_slapp.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_url_slurl.xml b/indra/newview/skins/default/xui/es/menu_url_slurl.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_url_teleport.xml b/indra/newview/skins/default/xui/es/menu_url_teleport.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_viewer.xml b/indra/newview/skins/default/xui/es/menu_viewer.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_wearable_list_item.xml b/indra/newview/skins/default/xui/es/menu_wearable_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_wearing_gear.xml b/indra/newview/skins/default/xui/es/menu_wearing_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/menu_wearing_tab.xml b/indra/newview/skins/default/xui/es/menu_wearing_tab.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/mime_types.xml b/indra/newview/skins/default/xui/es/mime_types.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/mime_types_linux.xml b/indra/newview/skins/default/xui/es/mime_types_linux.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/mime_types_mac.xml b/indra/newview/skins/default/xui/es/mime_types_mac.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/notifications.xml b/indra/newview/skins/default/xui/es/notifications.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/outfit_accordion_tab.xml b/indra/newview/skins/default/xui/es/outfit_accordion_tab.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_active_object_row.xml b/indra/newview/skins/default/xui/es/panel_active_object_row.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_adhoc_control_panel.xml b/indra/newview/skins/default/xui/es/panel_adhoc_control_panel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/es/panel_avatar_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/es/panel_block_list_sidetray.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_body_parts_list_item.xml b/indra/newview/skins/default/xui/es/panel_body_parts_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_bodyparts_list_button_bar.xml b/indra/newview/skins/default/xui/es/panel_bodyparts_list_button_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_bottomtray_lite.xml b/indra/newview/skins/default/xui/es/panel_bottomtray_lite.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_chiclet_bar.xml b/indra/newview/skins/default/xui/es/panel_chiclet_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_classified_info.xml b/indra/newview/skins/default/xui/es/panel_classified_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_clothing_list_button_bar.xml b/indra/newview/skins/default/xui/es/panel_clothing_list_button_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_clothing_list_item.xml b/indra/newview/skins/default/xui/es/panel_clothing_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_cof_wearables.xml b/indra/newview/skins/default/xui/es/panel_cof_wearables.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_deletable_wearable_list_item.xml b/indra/newview/skins/default/xui/es/panel_deletable_wearable_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_dummy_clothing_list_item.xml b/indra/newview/skins/default/xui/es/panel_dummy_clothing_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_edit_alpha.xml b/indra/newview/skins/default/xui/es/panel_edit_alpha.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_edit_classified.xml b/indra/newview/skins/default/xui/es/panel_edit_classified.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_edit_eyes.xml b/indra/newview/skins/default/xui/es/panel_edit_eyes.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_edit_gloves.xml b/indra/newview/skins/default/xui/es/panel_edit_gloves.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_edit_hair.xml b/indra/newview/skins/default/xui/es/panel_edit_hair.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_edit_jacket.xml b/indra/newview/skins/default/xui/es/panel_edit_jacket.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_edit_pants.xml b/indra/newview/skins/default/xui/es/panel_edit_pants.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_edit_physics.xml b/indra/newview/skins/default/xui/es/panel_edit_physics.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_edit_pick.xml b/indra/newview/skins/default/xui/es/panel_edit_pick.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_edit_profile.xml b/indra/newview/skins/default/xui/es/panel_edit_profile.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_edit_shape.xml b/indra/newview/skins/default/xui/es/panel_edit_shape.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_edit_shirt.xml b/indra/newview/skins/default/xui/es/panel_edit_shirt.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_edit_shoes.xml b/indra/newview/skins/default/xui/es/panel_edit_shoes.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_edit_skin.xml b/indra/newview/skins/default/xui/es/panel_edit_skin.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_edit_skirt.xml b/indra/newview/skins/default/xui/es/panel_edit_skirt.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_edit_socks.xml b/indra/newview/skins/default/xui/es/panel_edit_socks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/es/panel_edit_tattoo.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_edit_underpants.xml b/indra/newview/skins/default/xui/es/panel_edit_underpants.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_edit_undershirt.xml b/indra/newview/skins/default/xui/es/panel_edit_undershirt.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_edit_wearable.xml b/indra/newview/skins/default/xui/es/panel_edit_wearable.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_group_control_panel.xml b/indra/newview/skins/default/xui/es/panel_group_control_panel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_group_general.xml b/indra/newview/skins/default/xui/es/panel_group_general.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/es/panel_group_info_sidetray.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_group_invite.xml b/indra/newview/skins/default/xui/es/panel_group_invite.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_group_land_money.xml b/indra/newview/skins/default/xui/es/panel_group_land_money.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_group_list_item.xml b/indra/newview/skins/default/xui/es/panel_group_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_group_notices.xml b/indra/newview/skins/default/xui/es/panel_group_notices.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_group_notify.xml b/indra/newview/skins/default/xui/es/panel_group_notify.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_group_roles.xml b/indra/newview/skins/default/xui/es/panel_group_roles.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_im_control_panel.xml b/indra/newview/skins/default/xui/es/panel_im_control_panel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_inventory_item.xml b/indra/newview/skins/default/xui/es/panel_inventory_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_landmark_info.xml b/indra/newview/skins/default/xui/es/panel_landmark_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_landmarks.xml b/indra/newview/skins/default/xui/es/panel_landmarks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_login.xml b/indra/newview/skins/default/xui/es/panel_login.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_main_inventory.xml b/indra/newview/skins/default/xui/es/panel_main_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_me.xml b/indra/newview/skins/default/xui/es/panel_me.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_media_settings_general.xml b/indra/newview/skins/default/xui/es/panel_media_settings_general.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_media_settings_permissions.xml b/indra/newview/skins/default/xui/es/panel_media_settings_permissions.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_media_settings_security.xml b/indra/newview/skins/default/xui/es/panel_media_settings_security.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_navigation_bar.xml b/indra/newview/skins/default/xui/es/panel_navigation_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_nearby_chat.xml b/indra/newview/skins/default/xui/es/panel_nearby_chat.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/es/panel_nearby_chat_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_nearby_media.xml b/indra/newview/skins/default/xui/es/panel_nearby_media.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_notify_textbox.xml b/indra/newview/skins/default/xui/es/panel_notify_textbox.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_online_status_toast.xml b/indra/newview/skins/default/xui/es/panel_online_status_toast.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_outbox_inventory.xml b/indra/newview/skins/default/xui/es/panel_outbox_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_outfit_edit.xml b/indra/newview/skins/default/xui/es/panel_outfit_edit.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/es/panel_outfits_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_outfits_inventory_gear_default.xml b/indra/newview/skins/default/xui/es/panel_outfits_inventory_gear_default.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_outfits_list.xml b/indra/newview/skins/default/xui/es/panel_outfits_list.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_outfits_wearing.xml b/indra/newview/skins/default/xui/es/panel_outfits_wearing.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_people.xml b/indra/newview/skins/default/xui/es/panel_people.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_pick_info.xml b/indra/newview/skins/default/xui/es/panel_pick_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_picks.xml b/indra/newview/skins/default/xui/es/panel_picks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_place_profile.xml b/indra/newview/skins/default/xui/es/panel_place_profile.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_places.xml b/indra/newview/skins/default/xui/es/panel_places.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_postcard_message.xml b/indra/newview/skins/default/xui/es/panel_postcard_message.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_postcard_settings.xml b/indra/newview/skins/default/xui/es/panel_postcard_settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/es/panel_preferences_advanced.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_preferences_alerts.xml b/indra/newview/skins/default/xui/es/panel_preferences_alerts.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_preferences_chat.xml b/indra/newview/skins/default/xui/es/panel_preferences_chat.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_preferences_colors.xml b/indra/newview/skins/default/xui/es/panel_preferences_colors.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_preferences_general.xml b/indra/newview/skins/default/xui/es/panel_preferences_general.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/es/panel_preferences_graphics1.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_preferences_move.xml b/indra/newview/skins/default/xui/es/panel_preferences_move.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/es/panel_preferences_privacy.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_preferences_setup.xml b/indra/newview/skins/default/xui/es/panel_preferences_setup.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_preferences_sound.xml b/indra/newview/skins/default/xui/es/panel_preferences_sound.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_prim_media_controls.xml b/indra/newview/skins/default/xui/es/panel_prim_media_controls.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_region_covenant.xml b/indra/newview/skins/default/xui/es/panel_region_covenant.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_region_debug.xml b/indra/newview/skins/default/xui/es/panel_region_debug.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_region_environment.xml b/indra/newview/skins/default/xui/es/panel_region_environment.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_region_estate.xml b/indra/newview/skins/default/xui/es/panel_region_estate.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_region_general.xml b/indra/newview/skins/default/xui/es/panel_region_general.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_region_terrain.xml b/indra/newview/skins/default/xui/es/panel_region_terrain.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_script_ed.xml b/indra/newview/skins/default/xui/es/panel_script_ed.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_script_limits_my_avatar.xml b/indra/newview/skins/default/xui/es/panel_script_limits_my_avatar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_script_limits_region_memory.xml b/indra/newview/skins/default/xui/es/panel_script_limits_region_memory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_script_question_toast.xml b/indra/newview/skins/default/xui/es/panel_script_question_toast.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_scrolling_param.xml b/indra/newview/skins/default/xui/es/panel_scrolling_param.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_scrolling_param_base.xml b/indra/newview/skins/default/xui/es/panel_scrolling_param_base.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_side_tray_tab_caption.xml b/indra/newview/skins/default/xui/es/panel_side_tray_tab_caption.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_snapshot_inventory.xml b/indra/newview/skins/default/xui/es/panel_snapshot_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_snapshot_local.xml b/indra/newview/skins/default/xui/es/panel_snapshot_local.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_snapshot_options.xml b/indra/newview/skins/default/xui/es/panel_snapshot_options.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_snapshot_postcard.xml b/indra/newview/skins/default/xui/es/panel_snapshot_postcard.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_snapshot_profile.xml b/indra/newview/skins/default/xui/es/panel_snapshot_profile.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_sound_devices.xml b/indra/newview/skins/default/xui/es/panel_sound_devices.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_stand_stop_flying.xml b/indra/newview/skins/default/xui/es/panel_stand_stop_flying.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_status_bar.xml b/indra/newview/skins/default/xui/es/panel_status_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_teleport_history.xml b/indra/newview/skins/default/xui/es/panel_teleport_history.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_teleport_history_item.xml b/indra/newview/skins/default/xui/es/panel_teleport_history_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_voice_effect.xml b/indra/newview/skins/default/xui/es/panel_voice_effect.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_volume_pulldown.xml b/indra/newview/skins/default/xui/es/panel_volume_pulldown.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/panel_world_map.xml b/indra/newview/skins/default/xui/es/panel_world_map.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/role_actions.xml b/indra/newview/skins/default/xui/es/role_actions.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/sidepanel_appearance.xml b/indra/newview/skins/default/xui/es/sidepanel_appearance.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/sidepanel_inventory.xml b/indra/newview/skins/default/xui/es/sidepanel_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/sidepanel_item_info.xml b/indra/newview/skins/default/xui/es/sidepanel_item_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/sidepanel_task_info.xml b/indra/newview/skins/default/xui/es/sidepanel_task_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/strings.xml b/indra/newview/skins/default/xui/es/strings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/teleport_strings.xml b/indra/newview/skins/default/xui/es/teleport_strings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/es/xui_version.xml b/indra/newview/skins/default/xui/es/xui_version.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_about.xml b/indra/newview/skins/default/xui/fr/floater_about.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_about_land.xml b/indra/newview/skins/default/xui/fr/floater_about_land.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_activeim.xml b/indra/newview/skins/default/xui/fr/floater_activeim.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_animation_anim_preview.xml b/indra/newview/skins/default/xui/fr/floater_animation_anim_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_animation_bvh_preview.xml b/indra/newview/skins/default/xui/fr/floater_animation_bvh_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_auction.xml b/indra/newview/skins/default/xui/fr/floater_auction.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_autoreplace.xml b/indra/newview/skins/default/xui/fr/floater_autoreplace.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_avatar.xml b/indra/newview/skins/default/xui/fr/floater_avatar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_avatar_picker.xml b/indra/newview/skins/default/xui/fr/floater_avatar_picker.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_avatar_textures.xml b/indra/newview/skins/default/xui/fr/floater_avatar_textures.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_beacons.xml b/indra/newview/skins/default/xui/fr/floater_beacons.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_build_options.xml b/indra/newview/skins/default/xui/fr/floater_build_options.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_bulk_perms.xml b/indra/newview/skins/default/xui/fr/floater_bulk_perms.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_bumps.xml b/indra/newview/skins/default/xui/fr/floater_bumps.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_buy_contents.xml b/indra/newview/skins/default/xui/fr/floater_buy_contents.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_buy_currency.xml b/indra/newview/skins/default/xui/fr/floater_buy_currency.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_buy_currency_html.xml b/indra/newview/skins/default/xui/fr/floater_buy_currency_html.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_buy_land.xml b/indra/newview/skins/default/xui/fr/floater_buy_land.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_buy_object.xml b/indra/newview/skins/default/xui/fr/floater_buy_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_camera.xml b/indra/newview/skins/default/xui/fr/floater_camera.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_chat_bar.xml b/indra/newview/skins/default/xui/fr/floater_chat_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_choose_group.xml b/indra/newview/skins/default/xui/fr/floater_choose_group.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_color_picker.xml b/indra/newview/skins/default/xui/fr/floater_color_picker.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_critical.xml b/indra/newview/skins/default/xui/fr/floater_critical.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_delete_env_preset.xml b/indra/newview/skins/default/xui/fr/floater_delete_env_preset.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_destinations.xml b/indra/newview/skins/default/xui/fr/floater_destinations.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_display_name.xml b/indra/newview/skins/default/xui/fr/floater_display_name.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_edit_day_cycle.xml b/indra/newview/skins/default/xui/fr/floater_edit_day_cycle.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_edit_sky_preset.xml b/indra/newview/skins/default/xui/fr/floater_edit_sky_preset.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_edit_water_preset.xml b/indra/newview/skins/default/xui/fr/floater_edit_water_preset.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_environment_settings.xml b/indra/newview/skins/default/xui/fr/floater_environment_settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_event.xml b/indra/newview/skins/default/xui/fr/floater_event.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_fast_timers.xml b/indra/newview/skins/default/xui/fr/floater_fast_timers.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_font_test.xml b/indra/newview/skins/default/xui/fr/floater_font_test.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_gesture.xml b/indra/newview/skins/default/xui/fr/floater_gesture.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_god_tools.xml b/indra/newview/skins/default/xui/fr/floater_god_tools.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_hardware_settings.xml b/indra/newview/skins/default/xui/fr/floater_hardware_settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_help_browser.xml b/indra/newview/skins/default/xui/fr/floater_help_browser.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_how_to.xml b/indra/newview/skins/default/xui/fr/floater_how_to.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_hud.xml b/indra/newview/skins/default/xui/fr/floater_hud.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_im_container.xml b/indra/newview/skins/default/xui/fr/floater_im_container.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_im_session.xml b/indra/newview/skins/default/xui/fr/floater_im_session.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_image_preview.xml b/indra/newview/skins/default/xui/fr/floater_image_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_import_collada.xml b/indra/newview/skins/default/xui/fr/floater_import_collada.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_incoming_call.xml b/indra/newview/skins/default/xui/fr/floater_incoming_call.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_inspect.xml b/indra/newview/skins/default/xui/fr/floater_inspect.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/fr/floater_inventory_item_properties.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/fr/floater_inventory_view_finder.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_joystick.xml b/indra/newview/skins/default/xui/fr/floater_joystick.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_lagmeter.xml b/indra/newview/skins/default/xui/fr/floater_lagmeter.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_land_holdings.xml b/indra/newview/skins/default/xui/fr/floater_land_holdings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/fr/floater_live_lsleditor.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_lsl_guide.xml b/indra/newview/skins/default/xui/fr/floater_lsl_guide.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_map.xml b/indra/newview/skins/default/xui/fr/floater_map.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_media_browser.xml b/indra/newview/skins/default/xui/fr/floater_media_browser.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_media_settings.xml b/indra/newview/skins/default/xui/fr/floater_media_settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_mem_leaking.xml b/indra/newview/skins/default/xui/fr/floater_mem_leaking.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_merchant_outbox.xml b/indra/newview/skins/default/xui/fr/floater_merchant_outbox.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_model_preview.xml b/indra/newview/skins/default/xui/fr/floater_model_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_moveview.xml b/indra/newview/skins/default/xui/fr/floater_moveview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_mute_object.xml b/indra/newview/skins/default/xui/fr/floater_mute_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_my_appearance.xml b/indra/newview/skins/default/xui/fr/floater_my_appearance.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_my_inventory.xml b/indra/newview/skins/default/xui/fr/floater_my_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_notification.xml b/indra/newview/skins/default/xui/fr/floater_notification.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_notifications_console.xml b/indra/newview/skins/default/xui/fr/floater_notifications_console.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_object_weights.xml b/indra/newview/skins/default/xui/fr/floater_object_weights.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_openobject.xml b/indra/newview/skins/default/xui/fr/floater_openobject.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_outfit_save_as.xml b/indra/newview/skins/default/xui/fr/floater_outfit_save_as.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_outgoing_call.xml b/indra/newview/skins/default/xui/fr/floater_outgoing_call.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_pathfinding_characters.xml b/indra/newview/skins/default/xui/fr/floater_pathfinding_characters.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_pathfinding_console.xml b/indra/newview/skins/default/xui/fr/floater_pathfinding_console.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_pathfinding_linksets.xml b/indra/newview/skins/default/xui/fr/floater_pathfinding_linksets.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_pay.xml b/indra/newview/skins/default/xui/fr/floater_pay.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_pay_object.xml b/indra/newview/skins/default/xui/fr/floater_pay_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_people.xml b/indra/newview/skins/default/xui/fr/floater_people.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_perm_prefs.xml b/indra/newview/skins/default/xui/fr/floater_perm_prefs.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_picks.xml b/indra/newview/skins/default/xui/fr/floater_picks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_places.xml b/indra/newview/skins/default/xui/fr/floater_places.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_post_process.xml b/indra/newview/skins/default/xui/fr/floater_post_process.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_preferences.xml b/indra/newview/skins/default/xui/fr/floater_preferences.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_preferences_proxy.xml b/indra/newview/skins/default/xui/fr/floater_preferences_proxy.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_preview_animation.xml b/indra/newview/skins/default/xui/fr/floater_preview_animation.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_preview_gesture.xml b/indra/newview/skins/default/xui/fr/floater_preview_gesture.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_preview_notecard.xml b/indra/newview/skins/default/xui/fr/floater_preview_notecard.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_preview_sound.xml b/indra/newview/skins/default/xui/fr/floater_preview_sound.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_preview_texture.xml b/indra/newview/skins/default/xui/fr/floater_preview_texture.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_price_for_listing.xml b/indra/newview/skins/default/xui/fr/floater_price_for_listing.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_publish_classified.xml b/indra/newview/skins/default/xui/fr/floater_publish_classified.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_region_debug_console.xml b/indra/newview/skins/default/xui/fr/floater_region_debug_console.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_region_info.xml b/indra/newview/skins/default/xui/fr/floater_region_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_report_abuse.xml b/indra/newview/skins/default/xui/fr/floater_report_abuse.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_script_debug.xml b/indra/newview/skins/default/xui/fr/floater_script_debug.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_script_debug_panel.xml b/indra/newview/skins/default/xui/fr/floater_script_debug_panel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_script_limits.xml b/indra/newview/skins/default/xui/fr/floater_script_limits.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_script_preview.xml b/indra/newview/skins/default/xui/fr/floater_script_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_script_queue.xml b/indra/newview/skins/default/xui/fr/floater_script_queue.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_script_search.xml b/indra/newview/skins/default/xui/fr/floater_script_search.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_search.xml b/indra/newview/skins/default/xui/fr/floater_search.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_select_key.xml b/indra/newview/skins/default/xui/fr/floater_select_key.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_sell_land.xml b/indra/newview/skins/default/xui/fr/floater_sell_land.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_settings_debug.xml b/indra/newview/skins/default/xui/fr/floater_settings_debug.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_snapshot.xml b/indra/newview/skins/default/xui/fr/floater_snapshot.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_sound_devices.xml b/indra/newview/skins/default/xui/fr/floater_sound_devices.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_sound_preview.xml b/indra/newview/skins/default/xui/fr/floater_sound_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_spellcheck.xml b/indra/newview/skins/default/xui/fr/floater_spellcheck.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_spellcheck_import.xml b/indra/newview/skins/default/xui/fr/floater_spellcheck_import.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_stats.xml b/indra/newview/skins/default/xui/fr/floater_stats.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_sys_well.xml b/indra/newview/skins/default/xui/fr/floater_sys_well.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_telehub.xml b/indra/newview/skins/default/xui/fr/floater_telehub.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_test_layout_stacks.xml b/indra/newview/skins/default/xui/fr/floater_test_layout_stacks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_test_text_vertical_aligment.xml b/indra/newview/skins/default/xui/fr/floater_test_text_vertical_aligment.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/fr/floater_texture_ctrl.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_texture_fetch_debugger.xml b/indra/newview/skins/default/xui/fr/floater_texture_fetch_debugger.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_tools.xml b/indra/newview/skins/default/xui/fr/floater_tools.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_top_objects.xml b/indra/newview/skins/default/xui/fr/floater_top_objects.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_tos.xml b/indra/newview/skins/default/xui/fr/floater_tos.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_toybox.xml b/indra/newview/skins/default/xui/fr/floater_toybox.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_translation_settings.xml b/indra/newview/skins/default/xui/fr/floater_translation_settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_url_entry.xml b/indra/newview/skins/default/xui/fr/floater_url_entry.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_voice_controls.xml b/indra/newview/skins/default/xui/fr/floater_voice_controls.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_voice_effect.xml b/indra/newview/skins/default/xui/fr/floater_voice_effect.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_web_content.xml b/indra/newview/skins/default/xui/fr/floater_web_content.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_whitelist_entry.xml b/indra/newview/skins/default/xui/fr/floater_whitelist_entry.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_window_size.xml b/indra/newview/skins/default/xui/fr/floater_window_size.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/floater_world_map.xml b/indra/newview/skins/default/xui/fr/floater_world_map.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/fonts.xml b/indra/newview/skins/default/xui/fr/fonts.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/inspect_avatar.xml b/indra/newview/skins/default/xui/fr/inspect_avatar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/inspect_group.xml b/indra/newview/skins/default/xui/fr/inspect_group.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/inspect_object.xml b/indra/newview/skins/default/xui/fr/inspect_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/inspect_remote_object.xml b/indra/newview/skins/default/xui/fr/inspect_remote_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/language_settings.xml b/indra/newview/skins/default/xui/fr/language_settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_add_wearable_gear.xml b/indra/newview/skins/default/xui/fr/menu_add_wearable_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_attachment_other.xml b/indra/newview/skins/default/xui/fr/menu_attachment_other.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_attachment_self.xml b/indra/newview/skins/default/xui/fr/menu_attachment_self.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_avatar_icon.xml b/indra/newview/skins/default/xui/fr/menu_avatar_icon.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_avatar_other.xml b/indra/newview/skins/default/xui/fr/menu_avatar_other.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_avatar_self.xml b/indra/newview/skins/default/xui/fr/menu_avatar_self.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_cof_attachment.xml b/indra/newview/skins/default/xui/fr/menu_cof_attachment.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_cof_body_part.xml b/indra/newview/skins/default/xui/fr/menu_cof_body_part.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_cof_clothing.xml b/indra/newview/skins/default/xui/fr/menu_cof_clothing.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_cof_gear.xml b/indra/newview/skins/default/xui/fr/menu_cof_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_edit.xml b/indra/newview/skins/default/xui/fr/menu_edit.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_favorites.xml b/indra/newview/skins/default/xui/fr/menu_favorites.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_gesture_gear.xml b/indra/newview/skins/default/xui/fr/menu_gesture_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_group_plus.xml b/indra/newview/skins/default/xui/fr/menu_group_plus.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_hide_navbar.xml b/indra/newview/skins/default/xui/fr/menu_hide_navbar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_imchiclet_adhoc.xml b/indra/newview/skins/default/xui/fr/menu_imchiclet_adhoc.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_imchiclet_group.xml b/indra/newview/skins/default/xui/fr/menu_imchiclet_group.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_imchiclet_p2p.xml b/indra/newview/skins/default/xui/fr/menu_imchiclet_p2p.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/fr/menu_inspect_avatar_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_inspect_object_gear.xml b/indra/newview/skins/default/xui/fr/menu_inspect_object_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_inspect_self_gear.xml b/indra/newview/skins/default/xui/fr/menu_inspect_self_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_inv_offer_chiclet.xml b/indra/newview/skins/default/xui/fr/menu_inv_offer_chiclet.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_inventory.xml b/indra/newview/skins/default/xui/fr/menu_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_inventory_add.xml b/indra/newview/skins/default/xui/fr/menu_inventory_add.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/fr/menu_inventory_gear_default.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_land.xml b/indra/newview/skins/default/xui/fr/menu_land.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_landmark.xml b/indra/newview/skins/default/xui/fr/menu_landmark.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_login.xml b/indra/newview/skins/default/xui/fr/menu_login.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_media_ctrl.xml b/indra/newview/skins/default/xui/fr/menu_media_ctrl.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_mini_map.xml b/indra/newview/skins/default/xui/fr/menu_mini_map.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_model_import_gear_default.xml b/indra/newview/skins/default/xui/fr/menu_model_import_gear_default.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_navbar.xml b/indra/newview/skins/default/xui/fr/menu_navbar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_nearby_chat.xml b/indra/newview/skins/default/xui/fr/menu_nearby_chat.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_notification_well_button.xml b/indra/newview/skins/default/xui/fr/menu_notification_well_button.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_object.xml b/indra/newview/skins/default/xui/fr/menu_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_object_icon.xml b/indra/newview/skins/default/xui/fr/menu_object_icon.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_outfit_gear.xml b/indra/newview/skins/default/xui/fr/menu_outfit_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_outfit_tab.xml b/indra/newview/skins/default/xui/fr/menu_outfit_tab.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_participant_list.xml b/indra/newview/skins/default/xui/fr/menu_participant_list.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_people_friends_view_sort.xml b/indra/newview/skins/default/xui/fr/menu_people_friends_view_sort.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_people_groups.xml b/indra/newview/skins/default/xui/fr/menu_people_groups.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_people_groups_view_sort.xml b/indra/newview/skins/default/xui/fr/menu_people_groups_view_sort.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_people_nearby.xml b/indra/newview/skins/default/xui/fr/menu_people_nearby.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/fr/menu_people_nearby_multiselect.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_people_nearby_view_sort.xml b/indra/newview/skins/default/xui/fr/menu_people_nearby_view_sort.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_people_recent_view_sort.xml b/indra/newview/skins/default/xui/fr/menu_people_recent_view_sort.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_picks.xml b/indra/newview/skins/default/xui/fr/menu_picks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_picks_plus.xml b/indra/newview/skins/default/xui/fr/menu_picks_plus.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_place.xml b/indra/newview/skins/default/xui/fr/menu_place.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_place_add_button.xml b/indra/newview/skins/default/xui/fr/menu_place_add_button.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_places_gear_folder.xml b/indra/newview/skins/default/xui/fr/menu_places_gear_folder.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_places_gear_landmark.xml b/indra/newview/skins/default/xui/fr/menu_places_gear_landmark.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_profile_overflow.xml b/indra/newview/skins/default/xui/fr/menu_profile_overflow.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_save_outfit.xml b/indra/newview/skins/default/xui/fr/menu_save_outfit.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_script_chiclet.xml b/indra/newview/skins/default/xui/fr/menu_script_chiclet.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_slurl.xml b/indra/newview/skins/default/xui/fr/menu_slurl.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_teleport_history_gear.xml b/indra/newview/skins/default/xui/fr/menu_teleport_history_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_teleport_history_item.xml b/indra/newview/skins/default/xui/fr/menu_teleport_history_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_teleport_history_tab.xml b/indra/newview/skins/default/xui/fr/menu_teleport_history_tab.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_text_editor.xml b/indra/newview/skins/default/xui/fr/menu_text_editor.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_toolbars.xml b/indra/newview/skins/default/xui/fr/menu_toolbars.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_topinfobar.xml b/indra/newview/skins/default/xui/fr/menu_topinfobar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_url_agent.xml b/indra/newview/skins/default/xui/fr/menu_url_agent.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_url_group.xml b/indra/newview/skins/default/xui/fr/menu_url_group.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_url_http.xml b/indra/newview/skins/default/xui/fr/menu_url_http.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_url_inventory.xml b/indra/newview/skins/default/xui/fr/menu_url_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_url_map.xml b/indra/newview/skins/default/xui/fr/menu_url_map.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_url_objectim.xml b/indra/newview/skins/default/xui/fr/menu_url_objectim.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_url_parcel.xml b/indra/newview/skins/default/xui/fr/menu_url_parcel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_url_slapp.xml b/indra/newview/skins/default/xui/fr/menu_url_slapp.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_url_slurl.xml b/indra/newview/skins/default/xui/fr/menu_url_slurl.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_url_teleport.xml b/indra/newview/skins/default/xui/fr/menu_url_teleport.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_viewer.xml b/indra/newview/skins/default/xui/fr/menu_viewer.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_wearable_list_item.xml b/indra/newview/skins/default/xui/fr/menu_wearable_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_wearing_gear.xml b/indra/newview/skins/default/xui/fr/menu_wearing_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/menu_wearing_tab.xml b/indra/newview/skins/default/xui/fr/menu_wearing_tab.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/mime_types.xml b/indra/newview/skins/default/xui/fr/mime_types.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/mime_types_linux.xml b/indra/newview/skins/default/xui/fr/mime_types_linux.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/mime_types_mac.xml b/indra/newview/skins/default/xui/fr/mime_types_mac.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/notifications.xml b/indra/newview/skins/default/xui/fr/notifications.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/outfit_accordion_tab.xml b/indra/newview/skins/default/xui/fr/outfit_accordion_tab.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_active_object_row.xml b/indra/newview/skins/default/xui/fr/panel_active_object_row.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_adhoc_control_panel.xml b/indra/newview/skins/default/xui/fr/panel_adhoc_control_panel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/fr/panel_avatar_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_avatar_tag.xml b/indra/newview/skins/default/xui/fr/panel_avatar_tag.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/fr/panel_block_list_sidetray.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_body_parts_list_item.xml b/indra/newview/skins/default/xui/fr/panel_body_parts_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_bodyparts_list_button_bar.xml b/indra/newview/skins/default/xui/fr/panel_bodyparts_list_button_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_bottomtray_lite.xml b/indra/newview/skins/default/xui/fr/panel_bottomtray_lite.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_chat_header.xml b/indra/newview/skins/default/xui/fr/panel_chat_header.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_chiclet_bar.xml b/indra/newview/skins/default/xui/fr/panel_chiclet_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_classified_info.xml b/indra/newview/skins/default/xui/fr/panel_classified_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_clothing_list_button_bar.xml b/indra/newview/skins/default/xui/fr/panel_clothing_list_button_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_clothing_list_item.xml b/indra/newview/skins/default/xui/fr/panel_clothing_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_cof_wearables.xml b/indra/newview/skins/default/xui/fr/panel_cof_wearables.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_deletable_wearable_list_item.xml b/indra/newview/skins/default/xui/fr/panel_deletable_wearable_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_dummy_clothing_list_item.xml b/indra/newview/skins/default/xui/fr/panel_dummy_clothing_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_edit_alpha.xml b/indra/newview/skins/default/xui/fr/panel_edit_alpha.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_edit_classified.xml b/indra/newview/skins/default/xui/fr/panel_edit_classified.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_edit_eyes.xml b/indra/newview/skins/default/xui/fr/panel_edit_eyes.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_edit_gloves.xml b/indra/newview/skins/default/xui/fr/panel_edit_gloves.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_edit_hair.xml b/indra/newview/skins/default/xui/fr/panel_edit_hair.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_edit_jacket.xml b/indra/newview/skins/default/xui/fr/panel_edit_jacket.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_edit_pants.xml b/indra/newview/skins/default/xui/fr/panel_edit_pants.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_edit_physics.xml b/indra/newview/skins/default/xui/fr/panel_edit_physics.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_edit_pick.xml b/indra/newview/skins/default/xui/fr/panel_edit_pick.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_edit_profile.xml b/indra/newview/skins/default/xui/fr/panel_edit_profile.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_edit_shape.xml b/indra/newview/skins/default/xui/fr/panel_edit_shape.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_edit_shirt.xml b/indra/newview/skins/default/xui/fr/panel_edit_shirt.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_edit_shoes.xml b/indra/newview/skins/default/xui/fr/panel_edit_shoes.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_edit_skin.xml b/indra/newview/skins/default/xui/fr/panel_edit_skin.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_edit_skirt.xml b/indra/newview/skins/default/xui/fr/panel_edit_skirt.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_edit_socks.xml b/indra/newview/skins/default/xui/fr/panel_edit_socks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/fr/panel_edit_tattoo.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_edit_underpants.xml b/indra/newview/skins/default/xui/fr/panel_edit_underpants.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_edit_undershirt.xml b/indra/newview/skins/default/xui/fr/panel_edit_undershirt.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_edit_wearable.xml b/indra/newview/skins/default/xui/fr/panel_edit_wearable.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_group_control_panel.xml b/indra/newview/skins/default/xui/fr/panel_group_control_panel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_group_general.xml b/indra/newview/skins/default/xui/fr/panel_group_general.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/fr/panel_group_info_sidetray.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_group_invite.xml b/indra/newview/skins/default/xui/fr/panel_group_invite.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_group_land_money.xml b/indra/newview/skins/default/xui/fr/panel_group_land_money.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_group_list_item.xml b/indra/newview/skins/default/xui/fr/panel_group_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_group_notices.xml b/indra/newview/skins/default/xui/fr/panel_group_notices.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_group_notify.xml b/indra/newview/skins/default/xui/fr/panel_group_notify.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_group_roles.xml b/indra/newview/skins/default/xui/fr/panel_group_roles.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_im_control_panel.xml b/indra/newview/skins/default/xui/fr/panel_im_control_panel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_instant_message.xml b/indra/newview/skins/default/xui/fr/panel_instant_message.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_inventory_item.xml b/indra/newview/skins/default/xui/fr/panel_inventory_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_landmark_info.xml b/indra/newview/skins/default/xui/fr/panel_landmark_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_landmarks.xml b/indra/newview/skins/default/xui/fr/panel_landmarks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_login.xml b/indra/newview/skins/default/xui/fr/panel_login.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_main_inventory.xml b/indra/newview/skins/default/xui/fr/panel_main_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_me.xml b/indra/newview/skins/default/xui/fr/panel_me.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_media_settings_general.xml b/indra/newview/skins/default/xui/fr/panel_media_settings_general.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_media_settings_permissions.xml b/indra/newview/skins/default/xui/fr/panel_media_settings_permissions.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_media_settings_security.xml b/indra/newview/skins/default/xui/fr/panel_media_settings_security.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_navigation_bar.xml b/indra/newview/skins/default/xui/fr/panel_navigation_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_nearby_chat.xml b/indra/newview/skins/default/xui/fr/panel_nearby_chat.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/fr/panel_nearby_chat_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_nearby_media.xml b/indra/newview/skins/default/xui/fr/panel_nearby_media.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_notifications_channel.xml b/indra/newview/skins/default/xui/fr/panel_notifications_channel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_notify_textbox.xml b/indra/newview/skins/default/xui/fr/panel_notify_textbox.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_online_status_toast.xml b/indra/newview/skins/default/xui/fr/panel_online_status_toast.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_outbox_inventory.xml b/indra/newview/skins/default/xui/fr/panel_outbox_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_outfit_edit.xml b/indra/newview/skins/default/xui/fr/panel_outfit_edit.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/fr/panel_outfits_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_outfits_inventory_gear_default.xml b/indra/newview/skins/default/xui/fr/panel_outfits_inventory_gear_default.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_outfits_list.xml b/indra/newview/skins/default/xui/fr/panel_outfits_list.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_outfits_wearing.xml b/indra/newview/skins/default/xui/fr/panel_outfits_wearing.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_people.xml b/indra/newview/skins/default/xui/fr/panel_people.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_pick_info.xml b/indra/newview/skins/default/xui/fr/panel_pick_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_picks.xml b/indra/newview/skins/default/xui/fr/panel_picks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_place_profile.xml b/indra/newview/skins/default/xui/fr/panel_place_profile.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_places.xml b/indra/newview/skins/default/xui/fr/panel_places.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_postcard_message.xml b/indra/newview/skins/default/xui/fr/panel_postcard_message.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_postcard_settings.xml b/indra/newview/skins/default/xui/fr/panel_postcard_settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/fr/panel_preferences_advanced.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_alerts.xml b/indra/newview/skins/default/xui/fr/panel_preferences_alerts.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml b/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_colors.xml b/indra/newview/skins/default/xui/fr/panel_preferences_colors.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_general.xml b/indra/newview/skins/default/xui/fr/panel_preferences_general.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_move.xml b/indra/newview/skins/default/xui/fr/panel_preferences_move.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/fr/panel_preferences_privacy.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_setup.xml b/indra/newview/skins/default/xui/fr/panel_preferences_setup.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_sound.xml b/indra/newview/skins/default/xui/fr/panel_preferences_sound.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_prim_media_controls.xml b/indra/newview/skins/default/xui/fr/panel_prim_media_controls.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_region_covenant.xml b/indra/newview/skins/default/xui/fr/panel_region_covenant.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_region_debug.xml b/indra/newview/skins/default/xui/fr/panel_region_debug.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_region_environment.xml b/indra/newview/skins/default/xui/fr/panel_region_environment.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_region_estate.xml b/indra/newview/skins/default/xui/fr/panel_region_estate.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_region_general.xml b/indra/newview/skins/default/xui/fr/panel_region_general.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_region_terrain.xml b/indra/newview/skins/default/xui/fr/panel_region_terrain.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_script_ed.xml b/indra/newview/skins/default/xui/fr/panel_script_ed.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_script_limits_my_avatar.xml b/indra/newview/skins/default/xui/fr/panel_script_limits_my_avatar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_script_limits_region_memory.xml b/indra/newview/skins/default/xui/fr/panel_script_limits_region_memory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_script_question_toast.xml b/indra/newview/skins/default/xui/fr/panel_script_question_toast.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_scrolling_param.xml b/indra/newview/skins/default/xui/fr/panel_scrolling_param.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_scrolling_param_base.xml b/indra/newview/skins/default/xui/fr/panel_scrolling_param_base.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_side_tray_tab_caption.xml b/indra/newview/skins/default/xui/fr/panel_side_tray_tab_caption.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_sidetray_home_tab.xml b/indra/newview/skins/default/xui/fr/panel_sidetray_home_tab.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_snapshot_inventory.xml b/indra/newview/skins/default/xui/fr/panel_snapshot_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_snapshot_local.xml b/indra/newview/skins/default/xui/fr/panel_snapshot_local.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_snapshot_options.xml b/indra/newview/skins/default/xui/fr/panel_snapshot_options.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_snapshot_postcard.xml b/indra/newview/skins/default/xui/fr/panel_snapshot_postcard.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_snapshot_profile.xml b/indra/newview/skins/default/xui/fr/panel_snapshot_profile.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_sound_devices.xml b/indra/newview/skins/default/xui/fr/panel_sound_devices.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_stand_stop_flying.xml b/indra/newview/skins/default/xui/fr/panel_stand_stop_flying.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_status_bar.xml b/indra/newview/skins/default/xui/fr/panel_status_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_sys_well_item.xml b/indra/newview/skins/default/xui/fr/panel_sys_well_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_teleport_history.xml b/indra/newview/skins/default/xui/fr/panel_teleport_history.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_teleport_history_item.xml b/indra/newview/skins/default/xui/fr/panel_teleport_history_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_voice_effect.xml b/indra/newview/skins/default/xui/fr/panel_voice_effect.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_volume_pulldown.xml b/indra/newview/skins/default/xui/fr/panel_volume_pulldown.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/panel_world_map.xml b/indra/newview/skins/default/xui/fr/panel_world_map.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/role_actions.xml b/indra/newview/skins/default/xui/fr/role_actions.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/sidepanel_appearance.xml b/indra/newview/skins/default/xui/fr/sidepanel_appearance.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/sidepanel_inventory.xml b/indra/newview/skins/default/xui/fr/sidepanel_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/sidepanel_item_info.xml b/indra/newview/skins/default/xui/fr/sidepanel_item_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/sidepanel_task_info.xml b/indra/newview/skins/default/xui/fr/sidepanel_task_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/strings.xml b/indra/newview/skins/default/xui/fr/strings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/teleport_strings.xml b/indra/newview/skins/default/xui/fr/teleport_strings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/fr/xui_version.xml b/indra/newview/skins/default/xui/fr/xui_version.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_about.xml b/indra/newview/skins/default/xui/it/floater_about.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_about_land.xml b/indra/newview/skins/default/xui/it/floater_about_land.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_activeim.xml b/indra/newview/skins/default/xui/it/floater_activeim.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_animation_anim_preview.xml b/indra/newview/skins/default/xui/it/floater_animation_anim_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_animation_bvh_preview.xml b/indra/newview/skins/default/xui/it/floater_animation_bvh_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_auction.xml b/indra/newview/skins/default/xui/it/floater_auction.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_autoreplace.xml b/indra/newview/skins/default/xui/it/floater_autoreplace.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_avatar.xml b/indra/newview/skins/default/xui/it/floater_avatar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_avatar_picker.xml b/indra/newview/skins/default/xui/it/floater_avatar_picker.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_avatar_textures.xml b/indra/newview/skins/default/xui/it/floater_avatar_textures.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_beacons.xml b/indra/newview/skins/default/xui/it/floater_beacons.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_build_options.xml b/indra/newview/skins/default/xui/it/floater_build_options.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_bulk_perms.xml b/indra/newview/skins/default/xui/it/floater_bulk_perms.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_bumps.xml b/indra/newview/skins/default/xui/it/floater_bumps.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_buy_contents.xml b/indra/newview/skins/default/xui/it/floater_buy_contents.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_buy_currency.xml b/indra/newview/skins/default/xui/it/floater_buy_currency.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_buy_currency_html.xml b/indra/newview/skins/default/xui/it/floater_buy_currency_html.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_buy_land.xml b/indra/newview/skins/default/xui/it/floater_buy_land.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_buy_object.xml b/indra/newview/skins/default/xui/it/floater_buy_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_camera.xml b/indra/newview/skins/default/xui/it/floater_camera.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_chat_bar.xml b/indra/newview/skins/default/xui/it/floater_chat_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_choose_group.xml b/indra/newview/skins/default/xui/it/floater_choose_group.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_color_picker.xml b/indra/newview/skins/default/xui/it/floater_color_picker.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_critical.xml b/indra/newview/skins/default/xui/it/floater_critical.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_delete_env_preset.xml b/indra/newview/skins/default/xui/it/floater_delete_env_preset.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_destinations.xml b/indra/newview/skins/default/xui/it/floater_destinations.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_display_name.xml b/indra/newview/skins/default/xui/it/floater_display_name.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_edit_day_cycle.xml b/indra/newview/skins/default/xui/it/floater_edit_day_cycle.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_edit_sky_preset.xml b/indra/newview/skins/default/xui/it/floater_edit_sky_preset.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_edit_water_preset.xml b/indra/newview/skins/default/xui/it/floater_edit_water_preset.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_environment_settings.xml b/indra/newview/skins/default/xui/it/floater_environment_settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_event.xml b/indra/newview/skins/default/xui/it/floater_event.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_fast_timers.xml b/indra/newview/skins/default/xui/it/floater_fast_timers.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_font_test.xml b/indra/newview/skins/default/xui/it/floater_font_test.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_gesture.xml b/indra/newview/skins/default/xui/it/floater_gesture.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_god_tools.xml b/indra/newview/skins/default/xui/it/floater_god_tools.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_hardware_settings.xml b/indra/newview/skins/default/xui/it/floater_hardware_settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_help_browser.xml b/indra/newview/skins/default/xui/it/floater_help_browser.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_how_to.xml b/indra/newview/skins/default/xui/it/floater_how_to.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_hud.xml b/indra/newview/skins/default/xui/it/floater_hud.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_im_container.xml b/indra/newview/skins/default/xui/it/floater_im_container.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_im_session.xml b/indra/newview/skins/default/xui/it/floater_im_session.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_image_preview.xml b/indra/newview/skins/default/xui/it/floater_image_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_import_collada.xml b/indra/newview/skins/default/xui/it/floater_import_collada.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_incoming_call.xml b/indra/newview/skins/default/xui/it/floater_incoming_call.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_inspect.xml b/indra/newview/skins/default/xui/it/floater_inspect.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/it/floater_inventory_item_properties.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/it/floater_inventory_view_finder.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_joystick.xml b/indra/newview/skins/default/xui/it/floater_joystick.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_lagmeter.xml b/indra/newview/skins/default/xui/it/floater_lagmeter.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_land_holdings.xml b/indra/newview/skins/default/xui/it/floater_land_holdings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/it/floater_live_lsleditor.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_lsl_guide.xml b/indra/newview/skins/default/xui/it/floater_lsl_guide.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_map.xml b/indra/newview/skins/default/xui/it/floater_map.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_media_browser.xml b/indra/newview/skins/default/xui/it/floater_media_browser.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_media_settings.xml b/indra/newview/skins/default/xui/it/floater_media_settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_mem_leaking.xml b/indra/newview/skins/default/xui/it/floater_mem_leaking.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_merchant_outbox.xml b/indra/newview/skins/default/xui/it/floater_merchant_outbox.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_model_preview.xml b/indra/newview/skins/default/xui/it/floater_model_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_moveview.xml b/indra/newview/skins/default/xui/it/floater_moveview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_mute_object.xml b/indra/newview/skins/default/xui/it/floater_mute_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_my_appearance.xml b/indra/newview/skins/default/xui/it/floater_my_appearance.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_my_inventory.xml b/indra/newview/skins/default/xui/it/floater_my_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_object_weights.xml b/indra/newview/skins/default/xui/it/floater_object_weights.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_openobject.xml b/indra/newview/skins/default/xui/it/floater_openobject.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_outfit_save_as.xml b/indra/newview/skins/default/xui/it/floater_outfit_save_as.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_outgoing_call.xml b/indra/newview/skins/default/xui/it/floater_outgoing_call.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_pathfinding_characters.xml b/indra/newview/skins/default/xui/it/floater_pathfinding_characters.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_pathfinding_console.xml b/indra/newview/skins/default/xui/it/floater_pathfinding_console.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_pathfinding_linksets.xml b/indra/newview/skins/default/xui/it/floater_pathfinding_linksets.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_pay.xml b/indra/newview/skins/default/xui/it/floater_pay.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_pay_object.xml b/indra/newview/skins/default/xui/it/floater_pay_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_people.xml b/indra/newview/skins/default/xui/it/floater_people.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_perm_prefs.xml b/indra/newview/skins/default/xui/it/floater_perm_prefs.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_picks.xml b/indra/newview/skins/default/xui/it/floater_picks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_places.xml b/indra/newview/skins/default/xui/it/floater_places.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_post_process.xml b/indra/newview/skins/default/xui/it/floater_post_process.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_preferences.xml b/indra/newview/skins/default/xui/it/floater_preferences.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_preferences_proxy.xml b/indra/newview/skins/default/xui/it/floater_preferences_proxy.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_preview_animation.xml b/indra/newview/skins/default/xui/it/floater_preview_animation.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_preview_gesture.xml b/indra/newview/skins/default/xui/it/floater_preview_gesture.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_preview_notecard.xml b/indra/newview/skins/default/xui/it/floater_preview_notecard.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_preview_sound.xml b/indra/newview/skins/default/xui/it/floater_preview_sound.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_preview_texture.xml b/indra/newview/skins/default/xui/it/floater_preview_texture.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_price_for_listing.xml b/indra/newview/skins/default/xui/it/floater_price_for_listing.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_publish_classified.xml b/indra/newview/skins/default/xui/it/floater_publish_classified.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_region_debug_console.xml b/indra/newview/skins/default/xui/it/floater_region_debug_console.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_region_info.xml b/indra/newview/skins/default/xui/it/floater_region_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_report_abuse.xml b/indra/newview/skins/default/xui/it/floater_report_abuse.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_script_debug.xml b/indra/newview/skins/default/xui/it/floater_script_debug.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_script_debug_panel.xml b/indra/newview/skins/default/xui/it/floater_script_debug_panel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_script_limits.xml b/indra/newview/skins/default/xui/it/floater_script_limits.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_script_preview.xml b/indra/newview/skins/default/xui/it/floater_script_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_script_queue.xml b/indra/newview/skins/default/xui/it/floater_script_queue.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_script_search.xml b/indra/newview/skins/default/xui/it/floater_script_search.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_search.xml b/indra/newview/skins/default/xui/it/floater_search.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_select_key.xml b/indra/newview/skins/default/xui/it/floater_select_key.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_sell_land.xml b/indra/newview/skins/default/xui/it/floater_sell_land.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_settings_debug.xml b/indra/newview/skins/default/xui/it/floater_settings_debug.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_snapshot.xml b/indra/newview/skins/default/xui/it/floater_snapshot.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_sound_devices.xml b/indra/newview/skins/default/xui/it/floater_sound_devices.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_sound_preview.xml b/indra/newview/skins/default/xui/it/floater_sound_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_spellcheck.xml b/indra/newview/skins/default/xui/it/floater_spellcheck.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_spellcheck_import.xml b/indra/newview/skins/default/xui/it/floater_spellcheck_import.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_stats.xml b/indra/newview/skins/default/xui/it/floater_stats.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_sys_well.xml b/indra/newview/skins/default/xui/it/floater_sys_well.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_telehub.xml b/indra/newview/skins/default/xui/it/floater_telehub.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_test_layout_stacks.xml b/indra/newview/skins/default/xui/it/floater_test_layout_stacks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_test_text_vertical_aligment.xml b/indra/newview/skins/default/xui/it/floater_test_text_vertical_aligment.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/it/floater_texture_ctrl.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_texture_fetch_debugger.xml b/indra/newview/skins/default/xui/it/floater_texture_fetch_debugger.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_tools.xml b/indra/newview/skins/default/xui/it/floater_tools.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_top_objects.xml b/indra/newview/skins/default/xui/it/floater_top_objects.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_tos.xml b/indra/newview/skins/default/xui/it/floater_tos.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_toybox.xml b/indra/newview/skins/default/xui/it/floater_toybox.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_translation_settings.xml b/indra/newview/skins/default/xui/it/floater_translation_settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_url_entry.xml b/indra/newview/skins/default/xui/it/floater_url_entry.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_voice_controls.xml b/indra/newview/skins/default/xui/it/floater_voice_controls.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_voice_effect.xml b/indra/newview/skins/default/xui/it/floater_voice_effect.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_web_content.xml b/indra/newview/skins/default/xui/it/floater_web_content.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_whitelist_entry.xml b/indra/newview/skins/default/xui/it/floater_whitelist_entry.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_window_size.xml b/indra/newview/skins/default/xui/it/floater_window_size.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/floater_world_map.xml b/indra/newview/skins/default/xui/it/floater_world_map.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/inspect_avatar.xml b/indra/newview/skins/default/xui/it/inspect_avatar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/inspect_group.xml b/indra/newview/skins/default/xui/it/inspect_group.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/inspect_object.xml b/indra/newview/skins/default/xui/it/inspect_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/inspect_remote_object.xml b/indra/newview/skins/default/xui/it/inspect_remote_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/language_settings.xml b/indra/newview/skins/default/xui/it/language_settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_add_wearable_gear.xml b/indra/newview/skins/default/xui/it/menu_add_wearable_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_attachment_other.xml b/indra/newview/skins/default/xui/it/menu_attachment_other.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_attachment_self.xml b/indra/newview/skins/default/xui/it/menu_attachment_self.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_avatar_icon.xml b/indra/newview/skins/default/xui/it/menu_avatar_icon.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_avatar_other.xml b/indra/newview/skins/default/xui/it/menu_avatar_other.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_avatar_self.xml b/indra/newview/skins/default/xui/it/menu_avatar_self.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_cof_attachment.xml b/indra/newview/skins/default/xui/it/menu_cof_attachment.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_cof_body_part.xml b/indra/newview/skins/default/xui/it/menu_cof_body_part.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_cof_clothing.xml b/indra/newview/skins/default/xui/it/menu_cof_clothing.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_cof_gear.xml b/indra/newview/skins/default/xui/it/menu_cof_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_edit.xml b/indra/newview/skins/default/xui/it/menu_edit.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_favorites.xml b/indra/newview/skins/default/xui/it/menu_favorites.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_gesture_gear.xml b/indra/newview/skins/default/xui/it/menu_gesture_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_group_plus.xml b/indra/newview/skins/default/xui/it/menu_group_plus.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_hide_navbar.xml b/indra/newview/skins/default/xui/it/menu_hide_navbar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_imchiclet_adhoc.xml b/indra/newview/skins/default/xui/it/menu_imchiclet_adhoc.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_imchiclet_group.xml b/indra/newview/skins/default/xui/it/menu_imchiclet_group.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_imchiclet_p2p.xml b/indra/newview/skins/default/xui/it/menu_imchiclet_p2p.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/it/menu_inspect_avatar_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_inspect_object_gear.xml b/indra/newview/skins/default/xui/it/menu_inspect_object_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_inspect_self_gear.xml b/indra/newview/skins/default/xui/it/menu_inspect_self_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_inv_offer_chiclet.xml b/indra/newview/skins/default/xui/it/menu_inv_offer_chiclet.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_inventory.xml b/indra/newview/skins/default/xui/it/menu_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_inventory_add.xml b/indra/newview/skins/default/xui/it/menu_inventory_add.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/it/menu_inventory_gear_default.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_land.xml b/indra/newview/skins/default/xui/it/menu_land.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_landmark.xml b/indra/newview/skins/default/xui/it/menu_landmark.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_login.xml b/indra/newview/skins/default/xui/it/menu_login.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_media_ctrl.xml b/indra/newview/skins/default/xui/it/menu_media_ctrl.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_mini_map.xml b/indra/newview/skins/default/xui/it/menu_mini_map.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_model_import_gear_default.xml b/indra/newview/skins/default/xui/it/menu_model_import_gear_default.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_navbar.xml b/indra/newview/skins/default/xui/it/menu_navbar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_nearby_chat.xml b/indra/newview/skins/default/xui/it/menu_nearby_chat.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_notification_well_button.xml b/indra/newview/skins/default/xui/it/menu_notification_well_button.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_object.xml b/indra/newview/skins/default/xui/it/menu_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_object_icon.xml b/indra/newview/skins/default/xui/it/menu_object_icon.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_outfit_gear.xml b/indra/newview/skins/default/xui/it/menu_outfit_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_outfit_tab.xml b/indra/newview/skins/default/xui/it/menu_outfit_tab.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_participant_list.xml b/indra/newview/skins/default/xui/it/menu_participant_list.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_people_friends_view_sort.xml b/indra/newview/skins/default/xui/it/menu_people_friends_view_sort.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_people_groups.xml b/indra/newview/skins/default/xui/it/menu_people_groups.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_people_groups_view_sort.xml b/indra/newview/skins/default/xui/it/menu_people_groups_view_sort.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_people_nearby.xml b/indra/newview/skins/default/xui/it/menu_people_nearby.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/it/menu_people_nearby_multiselect.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_people_nearby_view_sort.xml b/indra/newview/skins/default/xui/it/menu_people_nearby_view_sort.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_people_recent_view_sort.xml b/indra/newview/skins/default/xui/it/menu_people_recent_view_sort.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_picks.xml b/indra/newview/skins/default/xui/it/menu_picks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_picks_plus.xml b/indra/newview/skins/default/xui/it/menu_picks_plus.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_place.xml b/indra/newview/skins/default/xui/it/menu_place.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_place_add_button.xml b/indra/newview/skins/default/xui/it/menu_place_add_button.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_places_gear_folder.xml b/indra/newview/skins/default/xui/it/menu_places_gear_folder.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_places_gear_landmark.xml b/indra/newview/skins/default/xui/it/menu_places_gear_landmark.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_profile_overflow.xml b/indra/newview/skins/default/xui/it/menu_profile_overflow.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_save_outfit.xml b/indra/newview/skins/default/xui/it/menu_save_outfit.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_script_chiclet.xml b/indra/newview/skins/default/xui/it/menu_script_chiclet.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_slurl.xml b/indra/newview/skins/default/xui/it/menu_slurl.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_teleport_history_gear.xml b/indra/newview/skins/default/xui/it/menu_teleport_history_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_teleport_history_item.xml b/indra/newview/skins/default/xui/it/menu_teleport_history_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_teleport_history_tab.xml b/indra/newview/skins/default/xui/it/menu_teleport_history_tab.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_text_editor.xml b/indra/newview/skins/default/xui/it/menu_text_editor.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_toolbars.xml b/indra/newview/skins/default/xui/it/menu_toolbars.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_topinfobar.xml b/indra/newview/skins/default/xui/it/menu_topinfobar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_url_agent.xml b/indra/newview/skins/default/xui/it/menu_url_agent.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_url_group.xml b/indra/newview/skins/default/xui/it/menu_url_group.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_url_http.xml b/indra/newview/skins/default/xui/it/menu_url_http.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_url_inventory.xml b/indra/newview/skins/default/xui/it/menu_url_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_url_map.xml b/indra/newview/skins/default/xui/it/menu_url_map.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_url_objectim.xml b/indra/newview/skins/default/xui/it/menu_url_objectim.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_url_parcel.xml b/indra/newview/skins/default/xui/it/menu_url_parcel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_url_slapp.xml b/indra/newview/skins/default/xui/it/menu_url_slapp.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_url_slurl.xml b/indra/newview/skins/default/xui/it/menu_url_slurl.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_url_teleport.xml b/indra/newview/skins/default/xui/it/menu_url_teleport.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_viewer.xml b/indra/newview/skins/default/xui/it/menu_viewer.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_wearable_list_item.xml b/indra/newview/skins/default/xui/it/menu_wearable_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_wearing_gear.xml b/indra/newview/skins/default/xui/it/menu_wearing_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/menu_wearing_tab.xml b/indra/newview/skins/default/xui/it/menu_wearing_tab.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/mime_types.xml b/indra/newview/skins/default/xui/it/mime_types.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/mime_types_linux.xml b/indra/newview/skins/default/xui/it/mime_types_linux.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/mime_types_mac.xml b/indra/newview/skins/default/xui/it/mime_types_mac.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/notifications.xml b/indra/newview/skins/default/xui/it/notifications.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/outfit_accordion_tab.xml b/indra/newview/skins/default/xui/it/outfit_accordion_tab.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_active_object_row.xml b/indra/newview/skins/default/xui/it/panel_active_object_row.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_adhoc_control_panel.xml b/indra/newview/skins/default/xui/it/panel_adhoc_control_panel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/it/panel_avatar_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/it/panel_block_list_sidetray.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_body_parts_list_item.xml b/indra/newview/skins/default/xui/it/panel_body_parts_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_bodyparts_list_button_bar.xml b/indra/newview/skins/default/xui/it/panel_bodyparts_list_button_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_bottomtray_lite.xml b/indra/newview/skins/default/xui/it/panel_bottomtray_lite.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_chiclet_bar.xml b/indra/newview/skins/default/xui/it/panel_chiclet_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_classified_info.xml b/indra/newview/skins/default/xui/it/panel_classified_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_clothing_list_button_bar.xml b/indra/newview/skins/default/xui/it/panel_clothing_list_button_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_clothing_list_item.xml b/indra/newview/skins/default/xui/it/panel_clothing_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_cof_wearables.xml b/indra/newview/skins/default/xui/it/panel_cof_wearables.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_deletable_wearable_list_item.xml b/indra/newview/skins/default/xui/it/panel_deletable_wearable_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_dummy_clothing_list_item.xml b/indra/newview/skins/default/xui/it/panel_dummy_clothing_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_edit_alpha.xml b/indra/newview/skins/default/xui/it/panel_edit_alpha.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_edit_classified.xml b/indra/newview/skins/default/xui/it/panel_edit_classified.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_edit_eyes.xml b/indra/newview/skins/default/xui/it/panel_edit_eyes.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_edit_gloves.xml b/indra/newview/skins/default/xui/it/panel_edit_gloves.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_edit_hair.xml b/indra/newview/skins/default/xui/it/panel_edit_hair.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_edit_jacket.xml b/indra/newview/skins/default/xui/it/panel_edit_jacket.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_edit_pants.xml b/indra/newview/skins/default/xui/it/panel_edit_pants.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_edit_physics.xml b/indra/newview/skins/default/xui/it/panel_edit_physics.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_edit_pick.xml b/indra/newview/skins/default/xui/it/panel_edit_pick.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_edit_profile.xml b/indra/newview/skins/default/xui/it/panel_edit_profile.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_edit_shape.xml b/indra/newview/skins/default/xui/it/panel_edit_shape.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_edit_shirt.xml b/indra/newview/skins/default/xui/it/panel_edit_shirt.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_edit_shoes.xml b/indra/newview/skins/default/xui/it/panel_edit_shoes.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_edit_skin.xml b/indra/newview/skins/default/xui/it/panel_edit_skin.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_edit_skirt.xml b/indra/newview/skins/default/xui/it/panel_edit_skirt.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_edit_socks.xml b/indra/newview/skins/default/xui/it/panel_edit_socks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/it/panel_edit_tattoo.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_edit_underpants.xml b/indra/newview/skins/default/xui/it/panel_edit_underpants.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_edit_undershirt.xml b/indra/newview/skins/default/xui/it/panel_edit_undershirt.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_edit_wearable.xml b/indra/newview/skins/default/xui/it/panel_edit_wearable.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_group_control_panel.xml b/indra/newview/skins/default/xui/it/panel_group_control_panel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_group_general.xml b/indra/newview/skins/default/xui/it/panel_group_general.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/it/panel_group_info_sidetray.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_group_invite.xml b/indra/newview/skins/default/xui/it/panel_group_invite.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_group_land_money.xml b/indra/newview/skins/default/xui/it/panel_group_land_money.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_group_list_item.xml b/indra/newview/skins/default/xui/it/panel_group_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_group_notices.xml b/indra/newview/skins/default/xui/it/panel_group_notices.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_group_notify.xml b/indra/newview/skins/default/xui/it/panel_group_notify.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_group_roles.xml b/indra/newview/skins/default/xui/it/panel_group_roles.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_im_control_panel.xml b/indra/newview/skins/default/xui/it/panel_im_control_panel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_inventory_item.xml b/indra/newview/skins/default/xui/it/panel_inventory_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_landmark_info.xml b/indra/newview/skins/default/xui/it/panel_landmark_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_landmarks.xml b/indra/newview/skins/default/xui/it/panel_landmarks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_login.xml b/indra/newview/skins/default/xui/it/panel_login.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_main_inventory.xml b/indra/newview/skins/default/xui/it/panel_main_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_me.xml b/indra/newview/skins/default/xui/it/panel_me.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_media_settings_general.xml b/indra/newview/skins/default/xui/it/panel_media_settings_general.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_media_settings_permissions.xml b/indra/newview/skins/default/xui/it/panel_media_settings_permissions.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_media_settings_security.xml b/indra/newview/skins/default/xui/it/panel_media_settings_security.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_navigation_bar.xml b/indra/newview/skins/default/xui/it/panel_navigation_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_nearby_chat.xml b/indra/newview/skins/default/xui/it/panel_nearby_chat.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/it/panel_nearby_chat_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_nearby_media.xml b/indra/newview/skins/default/xui/it/panel_nearby_media.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_notify_textbox.xml b/indra/newview/skins/default/xui/it/panel_notify_textbox.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_online_status_toast.xml b/indra/newview/skins/default/xui/it/panel_online_status_toast.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_outbox_inventory.xml b/indra/newview/skins/default/xui/it/panel_outbox_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_outfit_edit.xml b/indra/newview/skins/default/xui/it/panel_outfit_edit.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/it/panel_outfits_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_outfits_inventory_gear_default.xml b/indra/newview/skins/default/xui/it/panel_outfits_inventory_gear_default.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_outfits_list.xml b/indra/newview/skins/default/xui/it/panel_outfits_list.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_outfits_wearing.xml b/indra/newview/skins/default/xui/it/panel_outfits_wearing.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_people.xml b/indra/newview/skins/default/xui/it/panel_people.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_pick_info.xml b/indra/newview/skins/default/xui/it/panel_pick_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_picks.xml b/indra/newview/skins/default/xui/it/panel_picks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_place_profile.xml b/indra/newview/skins/default/xui/it/panel_place_profile.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_places.xml b/indra/newview/skins/default/xui/it/panel_places.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_postcard_message.xml b/indra/newview/skins/default/xui/it/panel_postcard_message.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_postcard_settings.xml b/indra/newview/skins/default/xui/it/panel_postcard_settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/it/panel_preferences_advanced.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_preferences_alerts.xml b/indra/newview/skins/default/xui/it/panel_preferences_alerts.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_preferences_chat.xml b/indra/newview/skins/default/xui/it/panel_preferences_chat.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_preferences_colors.xml b/indra/newview/skins/default/xui/it/panel_preferences_colors.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_preferences_general.xml b/indra/newview/skins/default/xui/it/panel_preferences_general.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/it/panel_preferences_graphics1.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_preferences_move.xml b/indra/newview/skins/default/xui/it/panel_preferences_move.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/it/panel_preferences_privacy.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_preferences_setup.xml b/indra/newview/skins/default/xui/it/panel_preferences_setup.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_preferences_sound.xml b/indra/newview/skins/default/xui/it/panel_preferences_sound.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_prim_media_controls.xml b/indra/newview/skins/default/xui/it/panel_prim_media_controls.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_region_covenant.xml b/indra/newview/skins/default/xui/it/panel_region_covenant.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_region_debug.xml b/indra/newview/skins/default/xui/it/panel_region_debug.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_region_environment.xml b/indra/newview/skins/default/xui/it/panel_region_environment.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_region_estate.xml b/indra/newview/skins/default/xui/it/panel_region_estate.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_region_general.xml b/indra/newview/skins/default/xui/it/panel_region_general.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_region_terrain.xml b/indra/newview/skins/default/xui/it/panel_region_terrain.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_script_ed.xml b/indra/newview/skins/default/xui/it/panel_script_ed.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_script_limits_my_avatar.xml b/indra/newview/skins/default/xui/it/panel_script_limits_my_avatar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_script_limits_region_memory.xml b/indra/newview/skins/default/xui/it/panel_script_limits_region_memory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_script_question_toast.xml b/indra/newview/skins/default/xui/it/panel_script_question_toast.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_scrolling_param.xml b/indra/newview/skins/default/xui/it/panel_scrolling_param.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_scrolling_param_base.xml b/indra/newview/skins/default/xui/it/panel_scrolling_param_base.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_side_tray_tab_caption.xml b/indra/newview/skins/default/xui/it/panel_side_tray_tab_caption.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_snapshot_inventory.xml b/indra/newview/skins/default/xui/it/panel_snapshot_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_snapshot_local.xml b/indra/newview/skins/default/xui/it/panel_snapshot_local.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_snapshot_options.xml b/indra/newview/skins/default/xui/it/panel_snapshot_options.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_snapshot_postcard.xml b/indra/newview/skins/default/xui/it/panel_snapshot_postcard.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_snapshot_profile.xml b/indra/newview/skins/default/xui/it/panel_snapshot_profile.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_sound_devices.xml b/indra/newview/skins/default/xui/it/panel_sound_devices.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_stand_stop_flying.xml b/indra/newview/skins/default/xui/it/panel_stand_stop_flying.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_status_bar.xml b/indra/newview/skins/default/xui/it/panel_status_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_teleport_history.xml b/indra/newview/skins/default/xui/it/panel_teleport_history.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_teleport_history_item.xml b/indra/newview/skins/default/xui/it/panel_teleport_history_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_voice_effect.xml b/indra/newview/skins/default/xui/it/panel_voice_effect.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_volume_pulldown.xml b/indra/newview/skins/default/xui/it/panel_volume_pulldown.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/panel_world_map.xml b/indra/newview/skins/default/xui/it/panel_world_map.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/role_actions.xml b/indra/newview/skins/default/xui/it/role_actions.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/sidepanel_appearance.xml b/indra/newview/skins/default/xui/it/sidepanel_appearance.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/sidepanel_inventory.xml b/indra/newview/skins/default/xui/it/sidepanel_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/sidepanel_item_info.xml b/indra/newview/skins/default/xui/it/sidepanel_item_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/sidepanel_task_info.xml b/indra/newview/skins/default/xui/it/sidepanel_task_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/strings.xml b/indra/newview/skins/default/xui/it/strings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/it/teleport_strings.xml b/indra/newview/skins/default/xui/it/teleport_strings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_about.xml b/indra/newview/skins/default/xui/ja/floater_about.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_about_land.xml b/indra/newview/skins/default/xui/ja/floater_about_land.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_activeim.xml b/indra/newview/skins/default/xui/ja/floater_activeim.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_animation_anim_preview.xml b/indra/newview/skins/default/xui/ja/floater_animation_anim_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_animation_bvh_preview.xml b/indra/newview/skins/default/xui/ja/floater_animation_bvh_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_auction.xml b/indra/newview/skins/default/xui/ja/floater_auction.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_autoreplace.xml b/indra/newview/skins/default/xui/ja/floater_autoreplace.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_avatar.xml b/indra/newview/skins/default/xui/ja/floater_avatar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_avatar_picker.xml b/indra/newview/skins/default/xui/ja/floater_avatar_picker.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_avatar_textures.xml b/indra/newview/skins/default/xui/ja/floater_avatar_textures.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_beacons.xml b/indra/newview/skins/default/xui/ja/floater_beacons.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_build_options.xml b/indra/newview/skins/default/xui/ja/floater_build_options.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_bulk_perms.xml b/indra/newview/skins/default/xui/ja/floater_bulk_perms.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_bumps.xml b/indra/newview/skins/default/xui/ja/floater_bumps.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_buy_contents.xml b/indra/newview/skins/default/xui/ja/floater_buy_contents.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_buy_currency.xml b/indra/newview/skins/default/xui/ja/floater_buy_currency.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_buy_currency_html.xml b/indra/newview/skins/default/xui/ja/floater_buy_currency_html.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_buy_land.xml b/indra/newview/skins/default/xui/ja/floater_buy_land.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_buy_object.xml b/indra/newview/skins/default/xui/ja/floater_buy_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_camera.xml b/indra/newview/skins/default/xui/ja/floater_camera.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_chat_bar.xml b/indra/newview/skins/default/xui/ja/floater_chat_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_choose_group.xml b/indra/newview/skins/default/xui/ja/floater_choose_group.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_color_picker.xml b/indra/newview/skins/default/xui/ja/floater_color_picker.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_critical.xml b/indra/newview/skins/default/xui/ja/floater_critical.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_delete_env_preset.xml b/indra/newview/skins/default/xui/ja/floater_delete_env_preset.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_destinations.xml b/indra/newview/skins/default/xui/ja/floater_destinations.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_display_name.xml b/indra/newview/skins/default/xui/ja/floater_display_name.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_edit_day_cycle.xml b/indra/newview/skins/default/xui/ja/floater_edit_day_cycle.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_edit_sky_preset.xml b/indra/newview/skins/default/xui/ja/floater_edit_sky_preset.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_edit_water_preset.xml b/indra/newview/skins/default/xui/ja/floater_edit_water_preset.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_environment_settings.xml b/indra/newview/skins/default/xui/ja/floater_environment_settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_event.xml b/indra/newview/skins/default/xui/ja/floater_event.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_fast_timers.xml b/indra/newview/skins/default/xui/ja/floater_fast_timers.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_font_test.xml b/indra/newview/skins/default/xui/ja/floater_font_test.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_gesture.xml b/indra/newview/skins/default/xui/ja/floater_gesture.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_god_tools.xml b/indra/newview/skins/default/xui/ja/floater_god_tools.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_hardware_settings.xml b/indra/newview/skins/default/xui/ja/floater_hardware_settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_help_browser.xml b/indra/newview/skins/default/xui/ja/floater_help_browser.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_how_to.xml b/indra/newview/skins/default/xui/ja/floater_how_to.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_hud.xml b/indra/newview/skins/default/xui/ja/floater_hud.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_im_container.xml b/indra/newview/skins/default/xui/ja/floater_im_container.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_im_session.xml b/indra/newview/skins/default/xui/ja/floater_im_session.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_image_preview.xml b/indra/newview/skins/default/xui/ja/floater_image_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_import_collada.xml b/indra/newview/skins/default/xui/ja/floater_import_collada.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_incoming_call.xml b/indra/newview/skins/default/xui/ja/floater_incoming_call.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_inspect.xml b/indra/newview/skins/default/xui/ja/floater_inspect.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/ja/floater_inventory_item_properties.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/ja/floater_inventory_view_finder.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_joystick.xml b/indra/newview/skins/default/xui/ja/floater_joystick.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_lagmeter.xml b/indra/newview/skins/default/xui/ja/floater_lagmeter.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_land_holdings.xml b/indra/newview/skins/default/xui/ja/floater_land_holdings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/ja/floater_live_lsleditor.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_lsl_guide.xml b/indra/newview/skins/default/xui/ja/floater_lsl_guide.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_map.xml b/indra/newview/skins/default/xui/ja/floater_map.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_media_browser.xml b/indra/newview/skins/default/xui/ja/floater_media_browser.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_media_settings.xml b/indra/newview/skins/default/xui/ja/floater_media_settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_mem_leaking.xml b/indra/newview/skins/default/xui/ja/floater_mem_leaking.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_merchant_outbox.xml b/indra/newview/skins/default/xui/ja/floater_merchant_outbox.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_model_preview.xml b/indra/newview/skins/default/xui/ja/floater_model_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_moveview.xml b/indra/newview/skins/default/xui/ja/floater_moveview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_mute_object.xml b/indra/newview/skins/default/xui/ja/floater_mute_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_my_appearance.xml b/indra/newview/skins/default/xui/ja/floater_my_appearance.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_my_inventory.xml b/indra/newview/skins/default/xui/ja/floater_my_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_notification.xml b/indra/newview/skins/default/xui/ja/floater_notification.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_notifications_console.xml b/indra/newview/skins/default/xui/ja/floater_notifications_console.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_object_weights.xml b/indra/newview/skins/default/xui/ja/floater_object_weights.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_openobject.xml b/indra/newview/skins/default/xui/ja/floater_openobject.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_outfit_save_as.xml b/indra/newview/skins/default/xui/ja/floater_outfit_save_as.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_outgoing_call.xml b/indra/newview/skins/default/xui/ja/floater_outgoing_call.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_pathfinding_characters.xml b/indra/newview/skins/default/xui/ja/floater_pathfinding_characters.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_pathfinding_console.xml b/indra/newview/skins/default/xui/ja/floater_pathfinding_console.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_pathfinding_linksets.xml b/indra/newview/skins/default/xui/ja/floater_pathfinding_linksets.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_pay.xml b/indra/newview/skins/default/xui/ja/floater_pay.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_pay_object.xml b/indra/newview/skins/default/xui/ja/floater_pay_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_people.xml b/indra/newview/skins/default/xui/ja/floater_people.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_perm_prefs.xml b/indra/newview/skins/default/xui/ja/floater_perm_prefs.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_picks.xml b/indra/newview/skins/default/xui/ja/floater_picks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_places.xml b/indra/newview/skins/default/xui/ja/floater_places.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_post_process.xml b/indra/newview/skins/default/xui/ja/floater_post_process.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_preferences.xml b/indra/newview/skins/default/xui/ja/floater_preferences.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_preferences_proxy.xml b/indra/newview/skins/default/xui/ja/floater_preferences_proxy.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_preview_animation.xml b/indra/newview/skins/default/xui/ja/floater_preview_animation.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_preview_gesture.xml b/indra/newview/skins/default/xui/ja/floater_preview_gesture.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_preview_notecard.xml b/indra/newview/skins/default/xui/ja/floater_preview_notecard.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_preview_sound.xml b/indra/newview/skins/default/xui/ja/floater_preview_sound.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_preview_texture.xml b/indra/newview/skins/default/xui/ja/floater_preview_texture.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_price_for_listing.xml b/indra/newview/skins/default/xui/ja/floater_price_for_listing.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_publish_classified.xml b/indra/newview/skins/default/xui/ja/floater_publish_classified.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_region_debug_console.xml b/indra/newview/skins/default/xui/ja/floater_region_debug_console.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_region_info.xml b/indra/newview/skins/default/xui/ja/floater_region_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_report_abuse.xml b/indra/newview/skins/default/xui/ja/floater_report_abuse.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_script_debug.xml b/indra/newview/skins/default/xui/ja/floater_script_debug.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_script_debug_panel.xml b/indra/newview/skins/default/xui/ja/floater_script_debug_panel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_script_limits.xml b/indra/newview/skins/default/xui/ja/floater_script_limits.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_script_preview.xml b/indra/newview/skins/default/xui/ja/floater_script_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_script_queue.xml b/indra/newview/skins/default/xui/ja/floater_script_queue.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_script_search.xml b/indra/newview/skins/default/xui/ja/floater_script_search.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_search.xml b/indra/newview/skins/default/xui/ja/floater_search.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_select_key.xml b/indra/newview/skins/default/xui/ja/floater_select_key.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_sell_land.xml b/indra/newview/skins/default/xui/ja/floater_sell_land.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_settings_debug.xml b/indra/newview/skins/default/xui/ja/floater_settings_debug.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_snapshot.xml b/indra/newview/skins/default/xui/ja/floater_snapshot.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_sound_devices.xml b/indra/newview/skins/default/xui/ja/floater_sound_devices.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_sound_preview.xml b/indra/newview/skins/default/xui/ja/floater_sound_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_spellcheck.xml b/indra/newview/skins/default/xui/ja/floater_spellcheck.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_spellcheck_import.xml b/indra/newview/skins/default/xui/ja/floater_spellcheck_import.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_stats.xml b/indra/newview/skins/default/xui/ja/floater_stats.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_sys_well.xml b/indra/newview/skins/default/xui/ja/floater_sys_well.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_telehub.xml b/indra/newview/skins/default/xui/ja/floater_telehub.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_test_layout_stacks.xml b/indra/newview/skins/default/xui/ja/floater_test_layout_stacks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_test_text_vertical_aligment.xml b/indra/newview/skins/default/xui/ja/floater_test_text_vertical_aligment.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/ja/floater_texture_ctrl.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_texture_fetch_debugger.xml b/indra/newview/skins/default/xui/ja/floater_texture_fetch_debugger.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_tools.xml b/indra/newview/skins/default/xui/ja/floater_tools.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_top_objects.xml b/indra/newview/skins/default/xui/ja/floater_top_objects.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_tos.xml b/indra/newview/skins/default/xui/ja/floater_tos.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_toybox.xml b/indra/newview/skins/default/xui/ja/floater_toybox.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_translation_settings.xml b/indra/newview/skins/default/xui/ja/floater_translation_settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_url_entry.xml b/indra/newview/skins/default/xui/ja/floater_url_entry.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_voice_controls.xml b/indra/newview/skins/default/xui/ja/floater_voice_controls.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_voice_effect.xml b/indra/newview/skins/default/xui/ja/floater_voice_effect.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_web_content.xml b/indra/newview/skins/default/xui/ja/floater_web_content.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_whitelist_entry.xml b/indra/newview/skins/default/xui/ja/floater_whitelist_entry.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_window_size.xml b/indra/newview/skins/default/xui/ja/floater_window_size.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/floater_world_map.xml b/indra/newview/skins/default/xui/ja/floater_world_map.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/inspect_avatar.xml b/indra/newview/skins/default/xui/ja/inspect_avatar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/inspect_group.xml b/indra/newview/skins/default/xui/ja/inspect_group.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/inspect_object.xml b/indra/newview/skins/default/xui/ja/inspect_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/inspect_remote_object.xml b/indra/newview/skins/default/xui/ja/inspect_remote_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/language_settings.xml b/indra/newview/skins/default/xui/ja/language_settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_add_wearable_gear.xml b/indra/newview/skins/default/xui/ja/menu_add_wearable_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_attachment_other.xml b/indra/newview/skins/default/xui/ja/menu_attachment_other.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_attachment_self.xml b/indra/newview/skins/default/xui/ja/menu_attachment_self.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_avatar_icon.xml b/indra/newview/skins/default/xui/ja/menu_avatar_icon.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_avatar_other.xml b/indra/newview/skins/default/xui/ja/menu_avatar_other.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_avatar_self.xml b/indra/newview/skins/default/xui/ja/menu_avatar_self.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_cof_attachment.xml b/indra/newview/skins/default/xui/ja/menu_cof_attachment.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_cof_body_part.xml b/indra/newview/skins/default/xui/ja/menu_cof_body_part.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_cof_clothing.xml b/indra/newview/skins/default/xui/ja/menu_cof_clothing.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_cof_gear.xml b/indra/newview/skins/default/xui/ja/menu_cof_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_edit.xml b/indra/newview/skins/default/xui/ja/menu_edit.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_favorites.xml b/indra/newview/skins/default/xui/ja/menu_favorites.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_gesture_gear.xml b/indra/newview/skins/default/xui/ja/menu_gesture_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_group_plus.xml b/indra/newview/skins/default/xui/ja/menu_group_plus.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_hide_navbar.xml b/indra/newview/skins/default/xui/ja/menu_hide_navbar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_imchiclet_adhoc.xml b/indra/newview/skins/default/xui/ja/menu_imchiclet_adhoc.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_imchiclet_group.xml b/indra/newview/skins/default/xui/ja/menu_imchiclet_group.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_imchiclet_p2p.xml b/indra/newview/skins/default/xui/ja/menu_imchiclet_p2p.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/ja/menu_inspect_avatar_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_inspect_object_gear.xml b/indra/newview/skins/default/xui/ja/menu_inspect_object_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_inspect_self_gear.xml b/indra/newview/skins/default/xui/ja/menu_inspect_self_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_inv_offer_chiclet.xml b/indra/newview/skins/default/xui/ja/menu_inv_offer_chiclet.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_inventory.xml b/indra/newview/skins/default/xui/ja/menu_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_inventory_add.xml b/indra/newview/skins/default/xui/ja/menu_inventory_add.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/ja/menu_inventory_gear_default.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_land.xml b/indra/newview/skins/default/xui/ja/menu_land.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_landmark.xml b/indra/newview/skins/default/xui/ja/menu_landmark.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_login.xml b/indra/newview/skins/default/xui/ja/menu_login.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_media_ctrl.xml b/indra/newview/skins/default/xui/ja/menu_media_ctrl.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_mini_map.xml b/indra/newview/skins/default/xui/ja/menu_mini_map.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_model_import_gear_default.xml b/indra/newview/skins/default/xui/ja/menu_model_import_gear_default.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_navbar.xml b/indra/newview/skins/default/xui/ja/menu_navbar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_nearby_chat.xml b/indra/newview/skins/default/xui/ja/menu_nearby_chat.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_notification_well_button.xml b/indra/newview/skins/default/xui/ja/menu_notification_well_button.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_object.xml b/indra/newview/skins/default/xui/ja/menu_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_object_icon.xml b/indra/newview/skins/default/xui/ja/menu_object_icon.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_outfit_gear.xml b/indra/newview/skins/default/xui/ja/menu_outfit_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_outfit_tab.xml b/indra/newview/skins/default/xui/ja/menu_outfit_tab.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_participant_list.xml b/indra/newview/skins/default/xui/ja/menu_participant_list.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_people_friends_view_sort.xml b/indra/newview/skins/default/xui/ja/menu_people_friends_view_sort.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_people_groups.xml b/indra/newview/skins/default/xui/ja/menu_people_groups.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_people_groups_view_sort.xml b/indra/newview/skins/default/xui/ja/menu_people_groups_view_sort.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_people_nearby.xml b/indra/newview/skins/default/xui/ja/menu_people_nearby.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/ja/menu_people_nearby_multiselect.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_people_nearby_view_sort.xml b/indra/newview/skins/default/xui/ja/menu_people_nearby_view_sort.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_people_recent_view_sort.xml b/indra/newview/skins/default/xui/ja/menu_people_recent_view_sort.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_picks.xml b/indra/newview/skins/default/xui/ja/menu_picks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_picks_plus.xml b/indra/newview/skins/default/xui/ja/menu_picks_plus.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_place.xml b/indra/newview/skins/default/xui/ja/menu_place.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_place_add_button.xml b/indra/newview/skins/default/xui/ja/menu_place_add_button.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_places_gear_folder.xml b/indra/newview/skins/default/xui/ja/menu_places_gear_folder.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_places_gear_landmark.xml b/indra/newview/skins/default/xui/ja/menu_places_gear_landmark.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_profile_overflow.xml b/indra/newview/skins/default/xui/ja/menu_profile_overflow.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_save_outfit.xml b/indra/newview/skins/default/xui/ja/menu_save_outfit.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_script_chiclet.xml b/indra/newview/skins/default/xui/ja/menu_script_chiclet.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_slurl.xml b/indra/newview/skins/default/xui/ja/menu_slurl.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_teleport_history_gear.xml b/indra/newview/skins/default/xui/ja/menu_teleport_history_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_teleport_history_item.xml b/indra/newview/skins/default/xui/ja/menu_teleport_history_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_teleport_history_tab.xml b/indra/newview/skins/default/xui/ja/menu_teleport_history_tab.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_text_editor.xml b/indra/newview/skins/default/xui/ja/menu_text_editor.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_toolbars.xml b/indra/newview/skins/default/xui/ja/menu_toolbars.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_topinfobar.xml b/indra/newview/skins/default/xui/ja/menu_topinfobar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_url_agent.xml b/indra/newview/skins/default/xui/ja/menu_url_agent.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_url_group.xml b/indra/newview/skins/default/xui/ja/menu_url_group.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_url_http.xml b/indra/newview/skins/default/xui/ja/menu_url_http.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_url_inventory.xml b/indra/newview/skins/default/xui/ja/menu_url_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_url_map.xml b/indra/newview/skins/default/xui/ja/menu_url_map.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_url_objectim.xml b/indra/newview/skins/default/xui/ja/menu_url_objectim.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_url_parcel.xml b/indra/newview/skins/default/xui/ja/menu_url_parcel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_url_slapp.xml b/indra/newview/skins/default/xui/ja/menu_url_slapp.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_url_slurl.xml b/indra/newview/skins/default/xui/ja/menu_url_slurl.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_url_teleport.xml b/indra/newview/skins/default/xui/ja/menu_url_teleport.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_viewer.xml b/indra/newview/skins/default/xui/ja/menu_viewer.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_wearable_list_item.xml b/indra/newview/skins/default/xui/ja/menu_wearable_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_wearing_gear.xml b/indra/newview/skins/default/xui/ja/menu_wearing_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/menu_wearing_tab.xml b/indra/newview/skins/default/xui/ja/menu_wearing_tab.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/mime_types.xml b/indra/newview/skins/default/xui/ja/mime_types.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/mime_types_linux.xml b/indra/newview/skins/default/xui/ja/mime_types_linux.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/mime_types_mac.xml b/indra/newview/skins/default/xui/ja/mime_types_mac.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/notifications.xml b/indra/newview/skins/default/xui/ja/notifications.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/outfit_accordion_tab.xml b/indra/newview/skins/default/xui/ja/outfit_accordion_tab.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_active_object_row.xml b/indra/newview/skins/default/xui/ja/panel_active_object_row.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_adhoc_control_panel.xml b/indra/newview/skins/default/xui/ja/panel_adhoc_control_panel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/ja/panel_avatar_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_avatar_tag.xml b/indra/newview/skins/default/xui/ja/panel_avatar_tag.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/ja/panel_block_list_sidetray.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_body_parts_list_item.xml b/indra/newview/skins/default/xui/ja/panel_body_parts_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_bodyparts_list_button_bar.xml b/indra/newview/skins/default/xui/ja/panel_bodyparts_list_button_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_bottomtray_lite.xml b/indra/newview/skins/default/xui/ja/panel_bottomtray_lite.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_chat_header.xml b/indra/newview/skins/default/xui/ja/panel_chat_header.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_chiclet_bar.xml b/indra/newview/skins/default/xui/ja/panel_chiclet_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_classified_info.xml b/indra/newview/skins/default/xui/ja/panel_classified_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_clothing_list_button_bar.xml b/indra/newview/skins/default/xui/ja/panel_clothing_list_button_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_clothing_list_item.xml b/indra/newview/skins/default/xui/ja/panel_clothing_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_cof_wearables.xml b/indra/newview/skins/default/xui/ja/panel_cof_wearables.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_deletable_wearable_list_item.xml b/indra/newview/skins/default/xui/ja/panel_deletable_wearable_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_dummy_clothing_list_item.xml b/indra/newview/skins/default/xui/ja/panel_dummy_clothing_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_edit_alpha.xml b/indra/newview/skins/default/xui/ja/panel_edit_alpha.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_edit_classified.xml b/indra/newview/skins/default/xui/ja/panel_edit_classified.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_edit_eyes.xml b/indra/newview/skins/default/xui/ja/panel_edit_eyes.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_edit_gloves.xml b/indra/newview/skins/default/xui/ja/panel_edit_gloves.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_edit_hair.xml b/indra/newview/skins/default/xui/ja/panel_edit_hair.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_edit_jacket.xml b/indra/newview/skins/default/xui/ja/panel_edit_jacket.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_edit_pants.xml b/indra/newview/skins/default/xui/ja/panel_edit_pants.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_edit_physics.xml b/indra/newview/skins/default/xui/ja/panel_edit_physics.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_edit_pick.xml b/indra/newview/skins/default/xui/ja/panel_edit_pick.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_edit_profile.xml b/indra/newview/skins/default/xui/ja/panel_edit_profile.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_edit_shape.xml b/indra/newview/skins/default/xui/ja/panel_edit_shape.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_edit_shirt.xml b/indra/newview/skins/default/xui/ja/panel_edit_shirt.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_edit_shoes.xml b/indra/newview/skins/default/xui/ja/panel_edit_shoes.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_edit_skin.xml b/indra/newview/skins/default/xui/ja/panel_edit_skin.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_edit_skirt.xml b/indra/newview/skins/default/xui/ja/panel_edit_skirt.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_edit_socks.xml b/indra/newview/skins/default/xui/ja/panel_edit_socks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/ja/panel_edit_tattoo.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_edit_underpants.xml b/indra/newview/skins/default/xui/ja/panel_edit_underpants.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_edit_undershirt.xml b/indra/newview/skins/default/xui/ja/panel_edit_undershirt.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_edit_wearable.xml b/indra/newview/skins/default/xui/ja/panel_edit_wearable.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_group_control_panel.xml b/indra/newview/skins/default/xui/ja/panel_group_control_panel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_group_general.xml b/indra/newview/skins/default/xui/ja/panel_group_general.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/ja/panel_group_info_sidetray.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_group_invite.xml b/indra/newview/skins/default/xui/ja/panel_group_invite.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_group_land_money.xml b/indra/newview/skins/default/xui/ja/panel_group_land_money.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_group_list_item.xml b/indra/newview/skins/default/xui/ja/panel_group_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_group_notices.xml b/indra/newview/skins/default/xui/ja/panel_group_notices.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_group_notify.xml b/indra/newview/skins/default/xui/ja/panel_group_notify.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_group_roles.xml b/indra/newview/skins/default/xui/ja/panel_group_roles.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_im_control_panel.xml b/indra/newview/skins/default/xui/ja/panel_im_control_panel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_instant_message.xml b/indra/newview/skins/default/xui/ja/panel_instant_message.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_inventory_item.xml b/indra/newview/skins/default/xui/ja/panel_inventory_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_landmark_info.xml b/indra/newview/skins/default/xui/ja/panel_landmark_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_landmarks.xml b/indra/newview/skins/default/xui/ja/panel_landmarks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_login.xml b/indra/newview/skins/default/xui/ja/panel_login.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_main_inventory.xml b/indra/newview/skins/default/xui/ja/panel_main_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_me.xml b/indra/newview/skins/default/xui/ja/panel_me.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_media_settings_general.xml b/indra/newview/skins/default/xui/ja/panel_media_settings_general.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_media_settings_permissions.xml b/indra/newview/skins/default/xui/ja/panel_media_settings_permissions.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_media_settings_security.xml b/indra/newview/skins/default/xui/ja/panel_media_settings_security.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_navigation_bar.xml b/indra/newview/skins/default/xui/ja/panel_navigation_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_nearby_chat.xml b/indra/newview/skins/default/xui/ja/panel_nearby_chat.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/ja/panel_nearby_chat_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_nearby_media.xml b/indra/newview/skins/default/xui/ja/panel_nearby_media.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_notifications_channel.xml b/indra/newview/skins/default/xui/ja/panel_notifications_channel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_notify_textbox.xml b/indra/newview/skins/default/xui/ja/panel_notify_textbox.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_online_status_toast.xml b/indra/newview/skins/default/xui/ja/panel_online_status_toast.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_outbox_inventory.xml b/indra/newview/skins/default/xui/ja/panel_outbox_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_outfit_edit.xml b/indra/newview/skins/default/xui/ja/panel_outfit_edit.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/ja/panel_outfits_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_outfits_inventory_gear_default.xml b/indra/newview/skins/default/xui/ja/panel_outfits_inventory_gear_default.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_outfits_list.xml b/indra/newview/skins/default/xui/ja/panel_outfits_list.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_outfits_wearing.xml b/indra/newview/skins/default/xui/ja/panel_outfits_wearing.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_people.xml b/indra/newview/skins/default/xui/ja/panel_people.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_pick_info.xml b/indra/newview/skins/default/xui/ja/panel_pick_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_picks.xml b/indra/newview/skins/default/xui/ja/panel_picks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_place_profile.xml b/indra/newview/skins/default/xui/ja/panel_place_profile.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_places.xml b/indra/newview/skins/default/xui/ja/panel_places.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_postcard_message.xml b/indra/newview/skins/default/xui/ja/panel_postcard_message.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_postcard_settings.xml b/indra/newview/skins/default/xui/ja/panel_postcard_settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/ja/panel_preferences_advanced.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_alerts.xml b/indra/newview/skins/default/xui/ja/panel_preferences_alerts.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml b/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_colors.xml b/indra/newview/skins/default/xui/ja/panel_preferences_colors.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_general.xml b/indra/newview/skins/default/xui/ja/panel_preferences_general.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/ja/panel_preferences_graphics1.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_move.xml b/indra/newview/skins/default/xui/ja/panel_preferences_move.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/ja/panel_preferences_privacy.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_setup.xml b/indra/newview/skins/default/xui/ja/panel_preferences_setup.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_sound.xml b/indra/newview/skins/default/xui/ja/panel_preferences_sound.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_prim_media_controls.xml b/indra/newview/skins/default/xui/ja/panel_prim_media_controls.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_region_covenant.xml b/indra/newview/skins/default/xui/ja/panel_region_covenant.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_region_debug.xml b/indra/newview/skins/default/xui/ja/panel_region_debug.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_region_environment.xml b/indra/newview/skins/default/xui/ja/panel_region_environment.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_region_estate.xml b/indra/newview/skins/default/xui/ja/panel_region_estate.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_region_general.xml b/indra/newview/skins/default/xui/ja/panel_region_general.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_region_terrain.xml b/indra/newview/skins/default/xui/ja/panel_region_terrain.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_script_ed.xml b/indra/newview/skins/default/xui/ja/panel_script_ed.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_script_limits_my_avatar.xml b/indra/newview/skins/default/xui/ja/panel_script_limits_my_avatar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_script_limits_region_memory.xml b/indra/newview/skins/default/xui/ja/panel_script_limits_region_memory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_script_question_toast.xml b/indra/newview/skins/default/xui/ja/panel_script_question_toast.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_scrolling_param.xml b/indra/newview/skins/default/xui/ja/panel_scrolling_param.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_scrolling_param_base.xml b/indra/newview/skins/default/xui/ja/panel_scrolling_param_base.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_side_tray_tab_caption.xml b/indra/newview/skins/default/xui/ja/panel_side_tray_tab_caption.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_sidetray_home_tab.xml b/indra/newview/skins/default/xui/ja/panel_sidetray_home_tab.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_snapshot_inventory.xml b/indra/newview/skins/default/xui/ja/panel_snapshot_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_snapshot_local.xml b/indra/newview/skins/default/xui/ja/panel_snapshot_local.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_snapshot_options.xml b/indra/newview/skins/default/xui/ja/panel_snapshot_options.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_snapshot_postcard.xml b/indra/newview/skins/default/xui/ja/panel_snapshot_postcard.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_snapshot_profile.xml b/indra/newview/skins/default/xui/ja/panel_snapshot_profile.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_sound_devices.xml b/indra/newview/skins/default/xui/ja/panel_sound_devices.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_stand_stop_flying.xml b/indra/newview/skins/default/xui/ja/panel_stand_stop_flying.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_status_bar.xml b/indra/newview/skins/default/xui/ja/panel_status_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_sys_well_item.xml b/indra/newview/skins/default/xui/ja/panel_sys_well_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_teleport_history.xml b/indra/newview/skins/default/xui/ja/panel_teleport_history.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_teleport_history_item.xml b/indra/newview/skins/default/xui/ja/panel_teleport_history_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_voice_effect.xml b/indra/newview/skins/default/xui/ja/panel_voice_effect.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_volume_pulldown.xml b/indra/newview/skins/default/xui/ja/panel_volume_pulldown.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/panel_world_map.xml b/indra/newview/skins/default/xui/ja/panel_world_map.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/role_actions.xml b/indra/newview/skins/default/xui/ja/role_actions.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/sidepanel_appearance.xml b/indra/newview/skins/default/xui/ja/sidepanel_appearance.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/sidepanel_inventory.xml b/indra/newview/skins/default/xui/ja/sidepanel_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/sidepanel_item_info.xml b/indra/newview/skins/default/xui/ja/sidepanel_item_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/sidepanel_task_info.xml b/indra/newview/skins/default/xui/ja/sidepanel_task_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/strings.xml b/indra/newview/skins/default/xui/ja/strings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/teleport_strings.xml b/indra/newview/skins/default/xui/ja/teleport_strings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ja/xui_version.xml b/indra/newview/skins/default/xui/ja/xui_version.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_about.xml b/indra/newview/skins/default/xui/pl/floater_about.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_about_land.xml b/indra/newview/skins/default/xui/pl/floater_about_land.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_activeim.xml b/indra/newview/skins/default/xui/pl/floater_activeim.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_animation_preview.xml b/indra/newview/skins/default/xui/pl/floater_animation_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_auction.xml b/indra/newview/skins/default/xui/pl/floater_auction.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_avatar_picker.xml b/indra/newview/skins/default/xui/pl/floater_avatar_picker.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_avatar_textures.xml b/indra/newview/skins/default/xui/pl/floater_avatar_textures.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_beacons.xml b/indra/newview/skins/default/xui/pl/floater_beacons.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_build_options.xml b/indra/newview/skins/default/xui/pl/floater_build_options.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_bulk_perms.xml b/indra/newview/skins/default/xui/pl/floater_bulk_perms.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_bumps.xml b/indra/newview/skins/default/xui/pl/floater_bumps.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_buy_contents.xml b/indra/newview/skins/default/xui/pl/floater_buy_contents.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_buy_currency.xml b/indra/newview/skins/default/xui/pl/floater_buy_currency.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_buy_currency_html.xml b/indra/newview/skins/default/xui/pl/floater_buy_currency_html.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_buy_land.xml b/indra/newview/skins/default/xui/pl/floater_buy_land.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_buy_object.xml b/indra/newview/skins/default/xui/pl/floater_buy_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_camera.xml b/indra/newview/skins/default/xui/pl/floater_camera.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_choose_group.xml b/indra/newview/skins/default/xui/pl/floater_choose_group.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_color_picker.xml b/indra/newview/skins/default/xui/pl/floater_color_picker.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_critical.xml b/indra/newview/skins/default/xui/pl/floater_critical.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_display_name.xml b/indra/newview/skins/default/xui/pl/floater_display_name.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_event.xml b/indra/newview/skins/default/xui/pl/floater_event.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_font_test.xml b/indra/newview/skins/default/xui/pl/floater_font_test.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_gesture.xml b/indra/newview/skins/default/xui/pl/floater_gesture.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_god_tools.xml b/indra/newview/skins/default/xui/pl/floater_god_tools.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_hardware_settings.xml b/indra/newview/skins/default/xui/pl/floater_hardware_settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_help_browser.xml b/indra/newview/skins/default/xui/pl/floater_help_browser.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_hud.xml b/indra/newview/skins/default/xui/pl/floater_hud.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_im_container.xml b/indra/newview/skins/default/xui/pl/floater_im_container.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_im_session.xml b/indra/newview/skins/default/xui/pl/floater_im_session.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_image_preview.xml b/indra/newview/skins/default/xui/pl/floater_image_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_incoming_call.xml b/indra/newview/skins/default/xui/pl/floater_incoming_call.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_inspect.xml b/indra/newview/skins/default/xui/pl/floater_inspect.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_inventory.xml b/indra/newview/skins/default/xui/pl/floater_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/pl/floater_inventory_item_properties.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/pl/floater_inventory_view_finder.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_joystick.xml b/indra/newview/skins/default/xui/pl/floater_joystick.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_lagmeter.xml b/indra/newview/skins/default/xui/pl/floater_lagmeter.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_land_holdings.xml b/indra/newview/skins/default/xui/pl/floater_land_holdings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/pl/floater_live_lsleditor.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_lsl_guide.xml b/indra/newview/skins/default/xui/pl/floater_lsl_guide.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_map.xml b/indra/newview/skins/default/xui/pl/floater_map.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_media_browser.xml b/indra/newview/skins/default/xui/pl/floater_media_browser.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_media_settings.xml b/indra/newview/skins/default/xui/pl/floater_media_settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_mem_leaking.xml b/indra/newview/skins/default/xui/pl/floater_mem_leaking.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_moveview.xml b/indra/newview/skins/default/xui/pl/floater_moveview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_mute_object.xml b/indra/newview/skins/default/xui/pl/floater_mute_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_nearby_chat.xml b/indra/newview/skins/default/xui/pl/floater_nearby_chat.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_openobject.xml b/indra/newview/skins/default/xui/pl/floater_openobject.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_outgoing_call.xml b/indra/newview/skins/default/xui/pl/floater_outgoing_call.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_pay.xml b/indra/newview/skins/default/xui/pl/floater_pay.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_pay_object.xml b/indra/newview/skins/default/xui/pl/floater_pay_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_perm_prefs.xml b/indra/newview/skins/default/xui/pl/floater_perm_prefs.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_post_process.xml b/indra/newview/skins/default/xui/pl/floater_post_process.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_postcard.xml b/indra/newview/skins/default/xui/pl/floater_postcard.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_preferences.xml b/indra/newview/skins/default/xui/pl/floater_preferences.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_preview_animation.xml b/indra/newview/skins/default/xui/pl/floater_preview_animation.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_preview_gesture.xml b/indra/newview/skins/default/xui/pl/floater_preview_gesture.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_preview_notecard.xml b/indra/newview/skins/default/xui/pl/floater_preview_notecard.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_preview_sound.xml b/indra/newview/skins/default/xui/pl/floater_preview_sound.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_preview_texture.xml b/indra/newview/skins/default/xui/pl/floater_preview_texture.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_publish_classified.xml b/indra/newview/skins/default/xui/pl/floater_publish_classified.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_region_debug_console.xml b/indra/newview/skins/default/xui/pl/floater_region_debug_console.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_region_info.xml b/indra/newview/skins/default/xui/pl/floater_region_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_report_abuse.xml b/indra/newview/skins/default/xui/pl/floater_report_abuse.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_script_debug.xml b/indra/newview/skins/default/xui/pl/floater_script_debug.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_script_debug_panel.xml b/indra/newview/skins/default/xui/pl/floater_script_debug_panel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_script_limits.xml b/indra/newview/skins/default/xui/pl/floater_script_limits.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_script_preview.xml b/indra/newview/skins/default/xui/pl/floater_script_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_script_queue.xml b/indra/newview/skins/default/xui/pl/floater_script_queue.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_script_search.xml b/indra/newview/skins/default/xui/pl/floater_script_search.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_search.xml b/indra/newview/skins/default/xui/pl/floater_search.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_select_key.xml b/indra/newview/skins/default/xui/pl/floater_select_key.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_sell_land.xml b/indra/newview/skins/default/xui/pl/floater_sell_land.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_settings_debug.xml b/indra/newview/skins/default/xui/pl/floater_settings_debug.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_snapshot.xml b/indra/newview/skins/default/xui/pl/floater_snapshot.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_sound_preview.xml b/indra/newview/skins/default/xui/pl/floater_sound_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_stats.xml b/indra/newview/skins/default/xui/pl/floater_stats.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_sys_well.xml b/indra/newview/skins/default/xui/pl/floater_sys_well.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_telehub.xml b/indra/newview/skins/default/xui/pl/floater_telehub.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/pl/floater_texture_ctrl.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_tools.xml b/indra/newview/skins/default/xui/pl/floater_tools.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_top_objects.xml b/indra/newview/skins/default/xui/pl/floater_top_objects.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_tos.xml b/indra/newview/skins/default/xui/pl/floater_tos.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_url_entry.xml b/indra/newview/skins/default/xui/pl/floater_url_entry.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_voice_controls.xml b/indra/newview/skins/default/xui/pl/floater_voice_controls.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_voice_effect.xml b/indra/newview/skins/default/xui/pl/floater_voice_effect.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_web_content.xml b/indra/newview/skins/default/xui/pl/floater_web_content.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_whitelist_entry.xml b/indra/newview/skins/default/xui/pl/floater_whitelist_entry.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_window_size.xml b/indra/newview/skins/default/xui/pl/floater_window_size.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/floater_world_map.xml b/indra/newview/skins/default/xui/pl/floater_world_map.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/inspect_avatar.xml b/indra/newview/skins/default/xui/pl/inspect_avatar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/inspect_group.xml b/indra/newview/skins/default/xui/pl/inspect_group.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/inspect_object.xml b/indra/newview/skins/default/xui/pl/inspect_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/inspect_remote_object.xml b/indra/newview/skins/default/xui/pl/inspect_remote_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/language_settings.xml b/indra/newview/skins/default/xui/pl/language_settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_add_wearable_gear.xml b/indra/newview/skins/default/xui/pl/menu_add_wearable_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_attachment_other.xml b/indra/newview/skins/default/xui/pl/menu_attachment_other.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_attachment_self.xml b/indra/newview/skins/default/xui/pl/menu_attachment_self.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_avatar_icon.xml b/indra/newview/skins/default/xui/pl/menu_avatar_icon.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_avatar_other.xml b/indra/newview/skins/default/xui/pl/menu_avatar_other.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_avatar_self.xml b/indra/newview/skins/default/xui/pl/menu_avatar_self.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_bottomtray.xml b/indra/newview/skins/default/xui/pl/menu_bottomtray.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_cof_attachment.xml b/indra/newview/skins/default/xui/pl/menu_cof_attachment.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_cof_body_part.xml b/indra/newview/skins/default/xui/pl/menu_cof_body_part.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_cof_clothing.xml b/indra/newview/skins/default/xui/pl/menu_cof_clothing.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_cof_gear.xml b/indra/newview/skins/default/xui/pl/menu_cof_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_edit.xml b/indra/newview/skins/default/xui/pl/menu_edit.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_favorites.xml b/indra/newview/skins/default/xui/pl/menu_favorites.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_gesture_gear.xml b/indra/newview/skins/default/xui/pl/menu_gesture_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_group_plus.xml b/indra/newview/skins/default/xui/pl/menu_group_plus.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_hide_navbar.xml b/indra/newview/skins/default/xui/pl/menu_hide_navbar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_imchiclet_adhoc.xml b/indra/newview/skins/default/xui/pl/menu_imchiclet_adhoc.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_imchiclet_group.xml b/indra/newview/skins/default/xui/pl/menu_imchiclet_group.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_imchiclet_p2p.xml b/indra/newview/skins/default/xui/pl/menu_imchiclet_p2p.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/pl/menu_inspect_avatar_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_inspect_object_gear.xml b/indra/newview/skins/default/xui/pl/menu_inspect_object_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_inspect_self_gear.xml b/indra/newview/skins/default/xui/pl/menu_inspect_self_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_inv_offer_chiclet.xml b/indra/newview/skins/default/xui/pl/menu_inv_offer_chiclet.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_inventory.xml b/indra/newview/skins/default/xui/pl/menu_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_inventory_add.xml b/indra/newview/skins/default/xui/pl/menu_inventory_add.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/pl/menu_inventory_gear_default.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_land.xml b/indra/newview/skins/default/xui/pl/menu_land.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_landmark.xml b/indra/newview/skins/default/xui/pl/menu_landmark.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_login.xml b/indra/newview/skins/default/xui/pl/menu_login.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_media_ctrl.xml b/indra/newview/skins/default/xui/pl/menu_media_ctrl.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_mini_map.xml b/indra/newview/skins/default/xui/pl/menu_mini_map.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_navbar.xml b/indra/newview/skins/default/xui/pl/menu_navbar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_nearby_chat.xml b/indra/newview/skins/default/xui/pl/menu_nearby_chat.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_notification_well_button.xml b/indra/newview/skins/default/xui/pl/menu_notification_well_button.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_object.xml b/indra/newview/skins/default/xui/pl/menu_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_object_icon.xml b/indra/newview/skins/default/xui/pl/menu_object_icon.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_outfit_gear.xml b/indra/newview/skins/default/xui/pl/menu_outfit_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_outfit_tab.xml b/indra/newview/skins/default/xui/pl/menu_outfit_tab.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_participant_list.xml b/indra/newview/skins/default/xui/pl/menu_participant_list.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_people_friends_view_sort.xml b/indra/newview/skins/default/xui/pl/menu_people_friends_view_sort.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_people_groups.xml b/indra/newview/skins/default/xui/pl/menu_people_groups.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_people_groups_view_sort.xml b/indra/newview/skins/default/xui/pl/menu_people_groups_view_sort.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_people_nearby.xml b/indra/newview/skins/default/xui/pl/menu_people_nearby.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/pl/menu_people_nearby_multiselect.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_people_nearby_view_sort.xml b/indra/newview/skins/default/xui/pl/menu_people_nearby_view_sort.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_people_recent_view_sort.xml b/indra/newview/skins/default/xui/pl/menu_people_recent_view_sort.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_picks.xml b/indra/newview/skins/default/xui/pl/menu_picks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_picks_plus.xml b/indra/newview/skins/default/xui/pl/menu_picks_plus.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_place.xml b/indra/newview/skins/default/xui/pl/menu_place.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_place_add_button.xml b/indra/newview/skins/default/xui/pl/menu_place_add_button.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_places_gear_folder.xml b/indra/newview/skins/default/xui/pl/menu_places_gear_folder.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_places_gear_landmark.xml b/indra/newview/skins/default/xui/pl/menu_places_gear_landmark.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_profile_overflow.xml b/indra/newview/skins/default/xui/pl/menu_profile_overflow.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_save_outfit.xml b/indra/newview/skins/default/xui/pl/menu_save_outfit.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_script_chiclet.xml b/indra/newview/skins/default/xui/pl/menu_script_chiclet.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_slurl.xml b/indra/newview/skins/default/xui/pl/menu_slurl.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_teleport_history_gear.xml b/indra/newview/skins/default/xui/pl/menu_teleport_history_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_teleport_history_item.xml b/indra/newview/skins/default/xui/pl/menu_teleport_history_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_teleport_history_tab.xml b/indra/newview/skins/default/xui/pl/menu_teleport_history_tab.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_text_editor.xml b/indra/newview/skins/default/xui/pl/menu_text_editor.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_topinfobar.xml b/indra/newview/skins/default/xui/pl/menu_topinfobar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_url_agent.xml b/indra/newview/skins/default/xui/pl/menu_url_agent.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_url_group.xml b/indra/newview/skins/default/xui/pl/menu_url_group.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_url_http.xml b/indra/newview/skins/default/xui/pl/menu_url_http.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_url_inventory.xml b/indra/newview/skins/default/xui/pl/menu_url_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_url_map.xml b/indra/newview/skins/default/xui/pl/menu_url_map.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_url_objectim.xml b/indra/newview/skins/default/xui/pl/menu_url_objectim.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_url_parcel.xml b/indra/newview/skins/default/xui/pl/menu_url_parcel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_url_slapp.xml b/indra/newview/skins/default/xui/pl/menu_url_slapp.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_url_slurl.xml b/indra/newview/skins/default/xui/pl/menu_url_slurl.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_url_teleport.xml b/indra/newview/skins/default/xui/pl/menu_url_teleport.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_viewer.xml b/indra/newview/skins/default/xui/pl/menu_viewer.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_wearable_list_item.xml b/indra/newview/skins/default/xui/pl/menu_wearable_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_wearing_gear.xml b/indra/newview/skins/default/xui/pl/menu_wearing_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/menu_wearing_tab.xml b/indra/newview/skins/default/xui/pl/menu_wearing_tab.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/mime_types.xml b/indra/newview/skins/default/xui/pl/mime_types.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/mime_types_linux.xml b/indra/newview/skins/default/xui/pl/mime_types_linux.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/mime_types_mac.xml b/indra/newview/skins/default/xui/pl/mime_types_mac.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/notifications.xml b/indra/newview/skins/default/xui/pl/notifications.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/outfit_accordion_tab.xml b/indra/newview/skins/default/xui/pl/outfit_accordion_tab.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_active_object_row.xml b/indra/newview/skins/default/xui/pl/panel_active_object_row.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_adhoc_control_panel.xml b/indra/newview/skins/default/xui/pl/panel_adhoc_control_panel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/pl/panel_avatar_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/pl/panel_block_list_sidetray.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_body_parts_list_item.xml b/indra/newview/skins/default/xui/pl/panel_body_parts_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_bodyparts_list_button_bar.xml b/indra/newview/skins/default/xui/pl/panel_bodyparts_list_button_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_bottomtray.xml b/indra/newview/skins/default/xui/pl/panel_bottomtray.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_bottomtray_lite.xml b/indra/newview/skins/default/xui/pl/panel_bottomtray_lite.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_classified_info.xml b/indra/newview/skins/default/xui/pl/panel_classified_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_clothing_list_button_bar.xml b/indra/newview/skins/default/xui/pl/panel_clothing_list_button_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_clothing_list_item.xml b/indra/newview/skins/default/xui/pl/panel_clothing_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_cof_wearables.xml b/indra/newview/skins/default/xui/pl/panel_cof_wearables.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_deletable_wearable_list_item.xml b/indra/newview/skins/default/xui/pl/panel_deletable_wearable_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_dummy_clothing_list_item.xml b/indra/newview/skins/default/xui/pl/panel_dummy_clothing_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_edit_alpha.xml b/indra/newview/skins/default/xui/pl/panel_edit_alpha.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_edit_classified.xml b/indra/newview/skins/default/xui/pl/panel_edit_classified.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_edit_eyes.xml b/indra/newview/skins/default/xui/pl/panel_edit_eyes.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_edit_gloves.xml b/indra/newview/skins/default/xui/pl/panel_edit_gloves.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_edit_hair.xml b/indra/newview/skins/default/xui/pl/panel_edit_hair.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_edit_jacket.xml b/indra/newview/skins/default/xui/pl/panel_edit_jacket.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_edit_pants.xml b/indra/newview/skins/default/xui/pl/panel_edit_pants.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_edit_physics.xml b/indra/newview/skins/default/xui/pl/panel_edit_physics.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_edit_pick.xml b/indra/newview/skins/default/xui/pl/panel_edit_pick.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_edit_profile.xml b/indra/newview/skins/default/xui/pl/panel_edit_profile.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_edit_shape.xml b/indra/newview/skins/default/xui/pl/panel_edit_shape.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_edit_shirt.xml b/indra/newview/skins/default/xui/pl/panel_edit_shirt.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_edit_shoes.xml b/indra/newview/skins/default/xui/pl/panel_edit_shoes.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_edit_skin.xml b/indra/newview/skins/default/xui/pl/panel_edit_skin.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_edit_skirt.xml b/indra/newview/skins/default/xui/pl/panel_edit_skirt.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_edit_socks.xml b/indra/newview/skins/default/xui/pl/panel_edit_socks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/pl/panel_edit_tattoo.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_edit_underpants.xml b/indra/newview/skins/default/xui/pl/panel_edit_underpants.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_edit_undershirt.xml b/indra/newview/skins/default/xui/pl/panel_edit_undershirt.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_edit_wearable.xml b/indra/newview/skins/default/xui/pl/panel_edit_wearable.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_group_control_panel.xml b/indra/newview/skins/default/xui/pl/panel_group_control_panel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_group_general.xml b/indra/newview/skins/default/xui/pl/panel_group_general.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/pl/panel_group_info_sidetray.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_group_invite.xml b/indra/newview/skins/default/xui/pl/panel_group_invite.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_group_land_money.xml b/indra/newview/skins/default/xui/pl/panel_group_land_money.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_group_list_item.xml b/indra/newview/skins/default/xui/pl/panel_group_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_group_notices.xml b/indra/newview/skins/default/xui/pl/panel_group_notices.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_group_notify.xml b/indra/newview/skins/default/xui/pl/panel_group_notify.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_group_roles.xml b/indra/newview/skins/default/xui/pl/panel_group_roles.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_im_control_panel.xml b/indra/newview/skins/default/xui/pl/panel_im_control_panel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_inventory_item.xml b/indra/newview/skins/default/xui/pl/panel_inventory_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_landmark_info.xml b/indra/newview/skins/default/xui/pl/panel_landmark_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_landmarks.xml b/indra/newview/skins/default/xui/pl/panel_landmarks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_login.xml b/indra/newview/skins/default/xui/pl/panel_login.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_main_inventory.xml b/indra/newview/skins/default/xui/pl/panel_main_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_me.xml b/indra/newview/skins/default/xui/pl/panel_me.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_media_settings_general.xml b/indra/newview/skins/default/xui/pl/panel_media_settings_general.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_media_settings_permissions.xml b/indra/newview/skins/default/xui/pl/panel_media_settings_permissions.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_media_settings_security.xml b/indra/newview/skins/default/xui/pl/panel_media_settings_security.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_navigation_bar.xml b/indra/newview/skins/default/xui/pl/panel_navigation_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/pl/panel_nearby_chat_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_nearby_media.xml b/indra/newview/skins/default/xui/pl/panel_nearby_media.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_notify_textbox.xml b/indra/newview/skins/default/xui/pl/panel_notify_textbox.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_online_status_toast.xml b/indra/newview/skins/default/xui/pl/panel_online_status_toast.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_outfit_edit.xml b/indra/newview/skins/default/xui/pl/panel_outfit_edit.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/pl/panel_outfits_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_outfits_inventory_gear_default.xml b/indra/newview/skins/default/xui/pl/panel_outfits_inventory_gear_default.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_outfits_list.xml b/indra/newview/skins/default/xui/pl/panel_outfits_list.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_outfits_wearing.xml b/indra/newview/skins/default/xui/pl/panel_outfits_wearing.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_people.xml b/indra/newview/skins/default/xui/pl/panel_people.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_pick_info.xml b/indra/newview/skins/default/xui/pl/panel_pick_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_picks.xml b/indra/newview/skins/default/xui/pl/panel_picks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_place_profile.xml b/indra/newview/skins/default/xui/pl/panel_place_profile.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_places.xml b/indra/newview/skins/default/xui/pl/panel_places.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/pl/panel_preferences_advanced.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_alerts.xml b/indra/newview/skins/default/xui/pl/panel_preferences_alerts.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_chat.xml b/indra/newview/skins/default/xui/pl/panel_preferences_chat.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_colors.xml b/indra/newview/skins/default/xui/pl/panel_preferences_colors.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_general.xml b/indra/newview/skins/default/xui/pl/panel_preferences_general.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/pl/panel_preferences_graphics1.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_move.xml b/indra/newview/skins/default/xui/pl/panel_preferences_move.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/pl/panel_preferences_privacy.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_setup.xml b/indra/newview/skins/default/xui/pl/panel_preferences_setup.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_sound.xml b/indra/newview/skins/default/xui/pl/panel_preferences_sound.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_prim_media_controls.xml b/indra/newview/skins/default/xui/pl/panel_prim_media_controls.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_region_covenant.xml b/indra/newview/skins/default/xui/pl/panel_region_covenant.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_region_debug.xml b/indra/newview/skins/default/xui/pl/panel_region_debug.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_region_estate.xml b/indra/newview/skins/default/xui/pl/panel_region_estate.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_region_general.xml b/indra/newview/skins/default/xui/pl/panel_region_general.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_region_terrain.xml b/indra/newview/skins/default/xui/pl/panel_region_terrain.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_region_texture.xml b/indra/newview/skins/default/xui/pl/panel_region_texture.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_script_ed.xml b/indra/newview/skins/default/xui/pl/panel_script_ed.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_script_limits_my_avatar.xml b/indra/newview/skins/default/xui/pl/panel_script_limits_my_avatar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_script_limits_region_memory.xml b/indra/newview/skins/default/xui/pl/panel_script_limits_region_memory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_scrolling_param.xml b/indra/newview/skins/default/xui/pl/panel_scrolling_param.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_scrolling_param_base.xml b/indra/newview/skins/default/xui/pl/panel_scrolling_param_base.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_side_tray.xml b/indra/newview/skins/default/xui/pl/panel_side_tray.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_side_tray_tab_caption.xml b/indra/newview/skins/default/xui/pl/panel_side_tray_tab_caption.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_stand_stop_flying.xml b/indra/newview/skins/default/xui/pl/panel_stand_stop_flying.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_status_bar.xml b/indra/newview/skins/default/xui/pl/panel_status_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_teleport_history.xml b/indra/newview/skins/default/xui/pl/panel_teleport_history.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_teleport_history_item.xml b/indra/newview/skins/default/xui/pl/panel_teleport_history_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_voice_effect.xml b/indra/newview/skins/default/xui/pl/panel_voice_effect.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_volume_pulldown.xml b/indra/newview/skins/default/xui/pl/panel_volume_pulldown.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/panel_world_map.xml b/indra/newview/skins/default/xui/pl/panel_world_map.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/role_actions.xml b/indra/newview/skins/default/xui/pl/role_actions.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/sidepanel_appearance.xml b/indra/newview/skins/default/xui/pl/sidepanel_appearance.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/sidepanel_inventory.xml b/indra/newview/skins/default/xui/pl/sidepanel_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/sidepanel_item_info.xml b/indra/newview/skins/default/xui/pl/sidepanel_item_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/sidepanel_task_info.xml b/indra/newview/skins/default/xui/pl/sidepanel_task_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/strings.xml b/indra/newview/skins/default/xui/pl/strings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/teleport_strings.xml b/indra/newview/skins/default/xui/pl/teleport_strings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pl/xui_version.xml b/indra/newview/skins/default/xui/pl/xui_version.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_about.xml b/indra/newview/skins/default/xui/pt/floater_about.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_about_land.xml b/indra/newview/skins/default/xui/pt/floater_about_land.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_activeim.xml b/indra/newview/skins/default/xui/pt/floater_activeim.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_animation_anim_preview.xml b/indra/newview/skins/default/xui/pt/floater_animation_anim_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_animation_bvh_preview.xml b/indra/newview/skins/default/xui/pt/floater_animation_bvh_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_auction.xml b/indra/newview/skins/default/xui/pt/floater_auction.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_autoreplace.xml b/indra/newview/skins/default/xui/pt/floater_autoreplace.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_avatar.xml b/indra/newview/skins/default/xui/pt/floater_avatar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_avatar_picker.xml b/indra/newview/skins/default/xui/pt/floater_avatar_picker.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_avatar_textures.xml b/indra/newview/skins/default/xui/pt/floater_avatar_textures.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_beacons.xml b/indra/newview/skins/default/xui/pt/floater_beacons.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_build_options.xml b/indra/newview/skins/default/xui/pt/floater_build_options.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_bulk_perms.xml b/indra/newview/skins/default/xui/pt/floater_bulk_perms.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_bumps.xml b/indra/newview/skins/default/xui/pt/floater_bumps.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_buy_contents.xml b/indra/newview/skins/default/xui/pt/floater_buy_contents.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_buy_currency.xml b/indra/newview/skins/default/xui/pt/floater_buy_currency.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_buy_currency_html.xml b/indra/newview/skins/default/xui/pt/floater_buy_currency_html.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_buy_land.xml b/indra/newview/skins/default/xui/pt/floater_buy_land.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_buy_object.xml b/indra/newview/skins/default/xui/pt/floater_buy_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_camera.xml b/indra/newview/skins/default/xui/pt/floater_camera.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_chat_bar.xml b/indra/newview/skins/default/xui/pt/floater_chat_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_choose_group.xml b/indra/newview/skins/default/xui/pt/floater_choose_group.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_color_picker.xml b/indra/newview/skins/default/xui/pt/floater_color_picker.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_critical.xml b/indra/newview/skins/default/xui/pt/floater_critical.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_delete_env_preset.xml b/indra/newview/skins/default/xui/pt/floater_delete_env_preset.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_destinations.xml b/indra/newview/skins/default/xui/pt/floater_destinations.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_display_name.xml b/indra/newview/skins/default/xui/pt/floater_display_name.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_edit_day_cycle.xml b/indra/newview/skins/default/xui/pt/floater_edit_day_cycle.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_edit_sky_preset.xml b/indra/newview/skins/default/xui/pt/floater_edit_sky_preset.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_edit_water_preset.xml b/indra/newview/skins/default/xui/pt/floater_edit_water_preset.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_environment_settings.xml b/indra/newview/skins/default/xui/pt/floater_environment_settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_event.xml b/indra/newview/skins/default/xui/pt/floater_event.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_fast_timers.xml b/indra/newview/skins/default/xui/pt/floater_fast_timers.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_font_test.xml b/indra/newview/skins/default/xui/pt/floater_font_test.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_gesture.xml b/indra/newview/skins/default/xui/pt/floater_gesture.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_god_tools.xml b/indra/newview/skins/default/xui/pt/floater_god_tools.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_hardware_settings.xml b/indra/newview/skins/default/xui/pt/floater_hardware_settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_help_browser.xml b/indra/newview/skins/default/xui/pt/floater_help_browser.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_how_to.xml b/indra/newview/skins/default/xui/pt/floater_how_to.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_hud.xml b/indra/newview/skins/default/xui/pt/floater_hud.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_im_container.xml b/indra/newview/skins/default/xui/pt/floater_im_container.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_im_session.xml b/indra/newview/skins/default/xui/pt/floater_im_session.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_image_preview.xml b/indra/newview/skins/default/xui/pt/floater_image_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_import_collada.xml b/indra/newview/skins/default/xui/pt/floater_import_collada.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_incoming_call.xml b/indra/newview/skins/default/xui/pt/floater_incoming_call.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_inspect.xml b/indra/newview/skins/default/xui/pt/floater_inspect.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/pt/floater_inventory_item_properties.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/pt/floater_inventory_view_finder.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_joystick.xml b/indra/newview/skins/default/xui/pt/floater_joystick.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_lagmeter.xml b/indra/newview/skins/default/xui/pt/floater_lagmeter.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_land_holdings.xml b/indra/newview/skins/default/xui/pt/floater_land_holdings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/pt/floater_live_lsleditor.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_lsl_guide.xml b/indra/newview/skins/default/xui/pt/floater_lsl_guide.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_map.xml b/indra/newview/skins/default/xui/pt/floater_map.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_media_browser.xml b/indra/newview/skins/default/xui/pt/floater_media_browser.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_media_settings.xml b/indra/newview/skins/default/xui/pt/floater_media_settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_mem_leaking.xml b/indra/newview/skins/default/xui/pt/floater_mem_leaking.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_merchant_outbox.xml b/indra/newview/skins/default/xui/pt/floater_merchant_outbox.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_model_preview.xml b/indra/newview/skins/default/xui/pt/floater_model_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_moveview.xml b/indra/newview/skins/default/xui/pt/floater_moveview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_mute_object.xml b/indra/newview/skins/default/xui/pt/floater_mute_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_my_appearance.xml b/indra/newview/skins/default/xui/pt/floater_my_appearance.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_my_inventory.xml b/indra/newview/skins/default/xui/pt/floater_my_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_object_weights.xml b/indra/newview/skins/default/xui/pt/floater_object_weights.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_openobject.xml b/indra/newview/skins/default/xui/pt/floater_openobject.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_outfit_save_as.xml b/indra/newview/skins/default/xui/pt/floater_outfit_save_as.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_outgoing_call.xml b/indra/newview/skins/default/xui/pt/floater_outgoing_call.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_pathfinding_characters.xml b/indra/newview/skins/default/xui/pt/floater_pathfinding_characters.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_pathfinding_console.xml b/indra/newview/skins/default/xui/pt/floater_pathfinding_console.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_pathfinding_linksets.xml b/indra/newview/skins/default/xui/pt/floater_pathfinding_linksets.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_pay.xml b/indra/newview/skins/default/xui/pt/floater_pay.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_pay_object.xml b/indra/newview/skins/default/xui/pt/floater_pay_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_people.xml b/indra/newview/skins/default/xui/pt/floater_people.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_perm_prefs.xml b/indra/newview/skins/default/xui/pt/floater_perm_prefs.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_picks.xml b/indra/newview/skins/default/xui/pt/floater_picks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_places.xml b/indra/newview/skins/default/xui/pt/floater_places.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_post_process.xml b/indra/newview/skins/default/xui/pt/floater_post_process.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_preferences.xml b/indra/newview/skins/default/xui/pt/floater_preferences.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_preferences_proxy.xml b/indra/newview/skins/default/xui/pt/floater_preferences_proxy.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_preview_animation.xml b/indra/newview/skins/default/xui/pt/floater_preview_animation.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_preview_gesture.xml b/indra/newview/skins/default/xui/pt/floater_preview_gesture.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_preview_notecard.xml b/indra/newview/skins/default/xui/pt/floater_preview_notecard.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_preview_sound.xml b/indra/newview/skins/default/xui/pt/floater_preview_sound.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_preview_texture.xml b/indra/newview/skins/default/xui/pt/floater_preview_texture.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_price_for_listing.xml b/indra/newview/skins/default/xui/pt/floater_price_for_listing.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_publish_classified.xml b/indra/newview/skins/default/xui/pt/floater_publish_classified.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_region_debug_console.xml b/indra/newview/skins/default/xui/pt/floater_region_debug_console.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_region_info.xml b/indra/newview/skins/default/xui/pt/floater_region_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_report_abuse.xml b/indra/newview/skins/default/xui/pt/floater_report_abuse.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_script_debug.xml b/indra/newview/skins/default/xui/pt/floater_script_debug.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_script_debug_panel.xml b/indra/newview/skins/default/xui/pt/floater_script_debug_panel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_script_limits.xml b/indra/newview/skins/default/xui/pt/floater_script_limits.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_script_preview.xml b/indra/newview/skins/default/xui/pt/floater_script_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_script_queue.xml b/indra/newview/skins/default/xui/pt/floater_script_queue.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_script_search.xml b/indra/newview/skins/default/xui/pt/floater_script_search.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_search.xml b/indra/newview/skins/default/xui/pt/floater_search.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_select_key.xml b/indra/newview/skins/default/xui/pt/floater_select_key.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_sell_land.xml b/indra/newview/skins/default/xui/pt/floater_sell_land.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_settings_debug.xml b/indra/newview/skins/default/xui/pt/floater_settings_debug.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_snapshot.xml b/indra/newview/skins/default/xui/pt/floater_snapshot.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_sound_devices.xml b/indra/newview/skins/default/xui/pt/floater_sound_devices.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_sound_preview.xml b/indra/newview/skins/default/xui/pt/floater_sound_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_spellcheck.xml b/indra/newview/skins/default/xui/pt/floater_spellcheck.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_spellcheck_import.xml b/indra/newview/skins/default/xui/pt/floater_spellcheck_import.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_stats.xml b/indra/newview/skins/default/xui/pt/floater_stats.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_sys_well.xml b/indra/newview/skins/default/xui/pt/floater_sys_well.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_telehub.xml b/indra/newview/skins/default/xui/pt/floater_telehub.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_test_layout_stacks.xml b/indra/newview/skins/default/xui/pt/floater_test_layout_stacks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_test_text_vertical_aligment.xml b/indra/newview/skins/default/xui/pt/floater_test_text_vertical_aligment.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/pt/floater_texture_ctrl.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_texture_fetch_debugger.xml b/indra/newview/skins/default/xui/pt/floater_texture_fetch_debugger.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_tools.xml b/indra/newview/skins/default/xui/pt/floater_tools.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_top_objects.xml b/indra/newview/skins/default/xui/pt/floater_top_objects.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_tos.xml b/indra/newview/skins/default/xui/pt/floater_tos.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_toybox.xml b/indra/newview/skins/default/xui/pt/floater_toybox.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_translation_settings.xml b/indra/newview/skins/default/xui/pt/floater_translation_settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_url_entry.xml b/indra/newview/skins/default/xui/pt/floater_url_entry.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_voice_controls.xml b/indra/newview/skins/default/xui/pt/floater_voice_controls.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_voice_effect.xml b/indra/newview/skins/default/xui/pt/floater_voice_effect.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_web_content.xml b/indra/newview/skins/default/xui/pt/floater_web_content.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_whitelist_entry.xml b/indra/newview/skins/default/xui/pt/floater_whitelist_entry.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_window_size.xml b/indra/newview/skins/default/xui/pt/floater_window_size.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/floater_world_map.xml b/indra/newview/skins/default/xui/pt/floater_world_map.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/inspect_avatar.xml b/indra/newview/skins/default/xui/pt/inspect_avatar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/inspect_group.xml b/indra/newview/skins/default/xui/pt/inspect_group.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/inspect_object.xml b/indra/newview/skins/default/xui/pt/inspect_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/inspect_remote_object.xml b/indra/newview/skins/default/xui/pt/inspect_remote_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/language_settings.xml b/indra/newview/skins/default/xui/pt/language_settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_add_wearable_gear.xml b/indra/newview/skins/default/xui/pt/menu_add_wearable_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_attachment_other.xml b/indra/newview/skins/default/xui/pt/menu_attachment_other.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_attachment_self.xml b/indra/newview/skins/default/xui/pt/menu_attachment_self.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_avatar_icon.xml b/indra/newview/skins/default/xui/pt/menu_avatar_icon.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_avatar_other.xml b/indra/newview/skins/default/xui/pt/menu_avatar_other.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_avatar_self.xml b/indra/newview/skins/default/xui/pt/menu_avatar_self.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_cof_attachment.xml b/indra/newview/skins/default/xui/pt/menu_cof_attachment.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_cof_body_part.xml b/indra/newview/skins/default/xui/pt/menu_cof_body_part.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_cof_clothing.xml b/indra/newview/skins/default/xui/pt/menu_cof_clothing.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_cof_gear.xml b/indra/newview/skins/default/xui/pt/menu_cof_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_edit.xml b/indra/newview/skins/default/xui/pt/menu_edit.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_favorites.xml b/indra/newview/skins/default/xui/pt/menu_favorites.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_gesture_gear.xml b/indra/newview/skins/default/xui/pt/menu_gesture_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_group_plus.xml b/indra/newview/skins/default/xui/pt/menu_group_plus.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_hide_navbar.xml b/indra/newview/skins/default/xui/pt/menu_hide_navbar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_imchiclet_adhoc.xml b/indra/newview/skins/default/xui/pt/menu_imchiclet_adhoc.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_imchiclet_group.xml b/indra/newview/skins/default/xui/pt/menu_imchiclet_group.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_imchiclet_p2p.xml b/indra/newview/skins/default/xui/pt/menu_imchiclet_p2p.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/pt/menu_inspect_avatar_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_inspect_object_gear.xml b/indra/newview/skins/default/xui/pt/menu_inspect_object_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_inspect_self_gear.xml b/indra/newview/skins/default/xui/pt/menu_inspect_self_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_inv_offer_chiclet.xml b/indra/newview/skins/default/xui/pt/menu_inv_offer_chiclet.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_inventory.xml b/indra/newview/skins/default/xui/pt/menu_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_inventory_add.xml b/indra/newview/skins/default/xui/pt/menu_inventory_add.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/pt/menu_inventory_gear_default.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_land.xml b/indra/newview/skins/default/xui/pt/menu_land.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_landmark.xml b/indra/newview/skins/default/xui/pt/menu_landmark.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_login.xml b/indra/newview/skins/default/xui/pt/menu_login.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_media_ctrl.xml b/indra/newview/skins/default/xui/pt/menu_media_ctrl.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_mini_map.xml b/indra/newview/skins/default/xui/pt/menu_mini_map.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_model_import_gear_default.xml b/indra/newview/skins/default/xui/pt/menu_model_import_gear_default.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_navbar.xml b/indra/newview/skins/default/xui/pt/menu_navbar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_nearby_chat.xml b/indra/newview/skins/default/xui/pt/menu_nearby_chat.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_notification_well_button.xml b/indra/newview/skins/default/xui/pt/menu_notification_well_button.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_object.xml b/indra/newview/skins/default/xui/pt/menu_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_object_icon.xml b/indra/newview/skins/default/xui/pt/menu_object_icon.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_outfit_gear.xml b/indra/newview/skins/default/xui/pt/menu_outfit_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_outfit_tab.xml b/indra/newview/skins/default/xui/pt/menu_outfit_tab.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_participant_list.xml b/indra/newview/skins/default/xui/pt/menu_participant_list.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_people_friends_view_sort.xml b/indra/newview/skins/default/xui/pt/menu_people_friends_view_sort.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_people_groups.xml b/indra/newview/skins/default/xui/pt/menu_people_groups.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_people_groups_view_sort.xml b/indra/newview/skins/default/xui/pt/menu_people_groups_view_sort.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_people_nearby.xml b/indra/newview/skins/default/xui/pt/menu_people_nearby.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/pt/menu_people_nearby_multiselect.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_people_nearby_view_sort.xml b/indra/newview/skins/default/xui/pt/menu_people_nearby_view_sort.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_people_recent_view_sort.xml b/indra/newview/skins/default/xui/pt/menu_people_recent_view_sort.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_picks.xml b/indra/newview/skins/default/xui/pt/menu_picks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_picks_plus.xml b/indra/newview/skins/default/xui/pt/menu_picks_plus.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_place.xml b/indra/newview/skins/default/xui/pt/menu_place.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_place_add_button.xml b/indra/newview/skins/default/xui/pt/menu_place_add_button.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_places_gear_folder.xml b/indra/newview/skins/default/xui/pt/menu_places_gear_folder.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_places_gear_landmark.xml b/indra/newview/skins/default/xui/pt/menu_places_gear_landmark.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_profile_overflow.xml b/indra/newview/skins/default/xui/pt/menu_profile_overflow.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_save_outfit.xml b/indra/newview/skins/default/xui/pt/menu_save_outfit.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_script_chiclet.xml b/indra/newview/skins/default/xui/pt/menu_script_chiclet.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_slurl.xml b/indra/newview/skins/default/xui/pt/menu_slurl.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_teleport_history_gear.xml b/indra/newview/skins/default/xui/pt/menu_teleport_history_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_teleport_history_item.xml b/indra/newview/skins/default/xui/pt/menu_teleport_history_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_teleport_history_tab.xml b/indra/newview/skins/default/xui/pt/menu_teleport_history_tab.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_text_editor.xml b/indra/newview/skins/default/xui/pt/menu_text_editor.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_toolbars.xml b/indra/newview/skins/default/xui/pt/menu_toolbars.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_topinfobar.xml b/indra/newview/skins/default/xui/pt/menu_topinfobar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_url_agent.xml b/indra/newview/skins/default/xui/pt/menu_url_agent.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_url_group.xml b/indra/newview/skins/default/xui/pt/menu_url_group.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_url_http.xml b/indra/newview/skins/default/xui/pt/menu_url_http.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_url_inventory.xml b/indra/newview/skins/default/xui/pt/menu_url_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_url_map.xml b/indra/newview/skins/default/xui/pt/menu_url_map.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_url_objectim.xml b/indra/newview/skins/default/xui/pt/menu_url_objectim.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_url_parcel.xml b/indra/newview/skins/default/xui/pt/menu_url_parcel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_url_slapp.xml b/indra/newview/skins/default/xui/pt/menu_url_slapp.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_url_slurl.xml b/indra/newview/skins/default/xui/pt/menu_url_slurl.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_url_teleport.xml b/indra/newview/skins/default/xui/pt/menu_url_teleport.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_viewer.xml b/indra/newview/skins/default/xui/pt/menu_viewer.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_wearable_list_item.xml b/indra/newview/skins/default/xui/pt/menu_wearable_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_wearing_gear.xml b/indra/newview/skins/default/xui/pt/menu_wearing_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/menu_wearing_tab.xml b/indra/newview/skins/default/xui/pt/menu_wearing_tab.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/mime_types.xml b/indra/newview/skins/default/xui/pt/mime_types.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/mime_types_linux.xml b/indra/newview/skins/default/xui/pt/mime_types_linux.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/mime_types_mac.xml b/indra/newview/skins/default/xui/pt/mime_types_mac.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/notifications.xml b/indra/newview/skins/default/xui/pt/notifications.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/outfit_accordion_tab.xml b/indra/newview/skins/default/xui/pt/outfit_accordion_tab.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_active_object_row.xml b/indra/newview/skins/default/xui/pt/panel_active_object_row.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_adhoc_control_panel.xml b/indra/newview/skins/default/xui/pt/panel_adhoc_control_panel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/pt/panel_avatar_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/pt/panel_block_list_sidetray.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_body_parts_list_item.xml b/indra/newview/skins/default/xui/pt/panel_body_parts_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_bodyparts_list_button_bar.xml b/indra/newview/skins/default/xui/pt/panel_bodyparts_list_button_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_bottomtray_lite.xml b/indra/newview/skins/default/xui/pt/panel_bottomtray_lite.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_chiclet_bar.xml b/indra/newview/skins/default/xui/pt/panel_chiclet_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_classified_info.xml b/indra/newview/skins/default/xui/pt/panel_classified_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_clothing_list_button_bar.xml b/indra/newview/skins/default/xui/pt/panel_clothing_list_button_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_clothing_list_item.xml b/indra/newview/skins/default/xui/pt/panel_clothing_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_cof_wearables.xml b/indra/newview/skins/default/xui/pt/panel_cof_wearables.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_deletable_wearable_list_item.xml b/indra/newview/skins/default/xui/pt/panel_deletable_wearable_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_dummy_clothing_list_item.xml b/indra/newview/skins/default/xui/pt/panel_dummy_clothing_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_edit_alpha.xml b/indra/newview/skins/default/xui/pt/panel_edit_alpha.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_edit_classified.xml b/indra/newview/skins/default/xui/pt/panel_edit_classified.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_edit_eyes.xml b/indra/newview/skins/default/xui/pt/panel_edit_eyes.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_edit_gloves.xml b/indra/newview/skins/default/xui/pt/panel_edit_gloves.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_edit_hair.xml b/indra/newview/skins/default/xui/pt/panel_edit_hair.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_edit_jacket.xml b/indra/newview/skins/default/xui/pt/panel_edit_jacket.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_edit_pants.xml b/indra/newview/skins/default/xui/pt/panel_edit_pants.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_edit_physics.xml b/indra/newview/skins/default/xui/pt/panel_edit_physics.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_edit_pick.xml b/indra/newview/skins/default/xui/pt/panel_edit_pick.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_edit_profile.xml b/indra/newview/skins/default/xui/pt/panel_edit_profile.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_edit_shape.xml b/indra/newview/skins/default/xui/pt/panel_edit_shape.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_edit_shirt.xml b/indra/newview/skins/default/xui/pt/panel_edit_shirt.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_edit_shoes.xml b/indra/newview/skins/default/xui/pt/panel_edit_shoes.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_edit_skin.xml b/indra/newview/skins/default/xui/pt/panel_edit_skin.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_edit_skirt.xml b/indra/newview/skins/default/xui/pt/panel_edit_skirt.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_edit_socks.xml b/indra/newview/skins/default/xui/pt/panel_edit_socks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/pt/panel_edit_tattoo.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_edit_underpants.xml b/indra/newview/skins/default/xui/pt/panel_edit_underpants.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_edit_undershirt.xml b/indra/newview/skins/default/xui/pt/panel_edit_undershirt.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_edit_wearable.xml b/indra/newview/skins/default/xui/pt/panel_edit_wearable.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_group_control_panel.xml b/indra/newview/skins/default/xui/pt/panel_group_control_panel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_group_general.xml b/indra/newview/skins/default/xui/pt/panel_group_general.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/pt/panel_group_info_sidetray.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_group_invite.xml b/indra/newview/skins/default/xui/pt/panel_group_invite.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_group_land_money.xml b/indra/newview/skins/default/xui/pt/panel_group_land_money.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_group_list_item.xml b/indra/newview/skins/default/xui/pt/panel_group_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_group_notices.xml b/indra/newview/skins/default/xui/pt/panel_group_notices.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_group_notify.xml b/indra/newview/skins/default/xui/pt/panel_group_notify.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_group_roles.xml b/indra/newview/skins/default/xui/pt/panel_group_roles.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_im_control_panel.xml b/indra/newview/skins/default/xui/pt/panel_im_control_panel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_inventory_item.xml b/indra/newview/skins/default/xui/pt/panel_inventory_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_landmark_info.xml b/indra/newview/skins/default/xui/pt/panel_landmark_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_landmarks.xml b/indra/newview/skins/default/xui/pt/panel_landmarks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_login.xml b/indra/newview/skins/default/xui/pt/panel_login.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_main_inventory.xml b/indra/newview/skins/default/xui/pt/panel_main_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_me.xml b/indra/newview/skins/default/xui/pt/panel_me.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_media_settings_general.xml b/indra/newview/skins/default/xui/pt/panel_media_settings_general.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_media_settings_permissions.xml b/indra/newview/skins/default/xui/pt/panel_media_settings_permissions.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_media_settings_security.xml b/indra/newview/skins/default/xui/pt/panel_media_settings_security.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_navigation_bar.xml b/indra/newview/skins/default/xui/pt/panel_navigation_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_nearby_chat.xml b/indra/newview/skins/default/xui/pt/panel_nearby_chat.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/pt/panel_nearby_chat_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_nearby_media.xml b/indra/newview/skins/default/xui/pt/panel_nearby_media.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_notify_textbox.xml b/indra/newview/skins/default/xui/pt/panel_notify_textbox.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_online_status_toast.xml b/indra/newview/skins/default/xui/pt/panel_online_status_toast.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_outbox_inventory.xml b/indra/newview/skins/default/xui/pt/panel_outbox_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_outfit_edit.xml b/indra/newview/skins/default/xui/pt/panel_outfit_edit.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/pt/panel_outfits_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_outfits_inventory_gear_default.xml b/indra/newview/skins/default/xui/pt/panel_outfits_inventory_gear_default.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_outfits_list.xml b/indra/newview/skins/default/xui/pt/panel_outfits_list.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_outfits_wearing.xml b/indra/newview/skins/default/xui/pt/panel_outfits_wearing.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_people.xml b/indra/newview/skins/default/xui/pt/panel_people.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_pick_info.xml b/indra/newview/skins/default/xui/pt/panel_pick_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_picks.xml b/indra/newview/skins/default/xui/pt/panel_picks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_place_profile.xml b/indra/newview/skins/default/xui/pt/panel_place_profile.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_places.xml b/indra/newview/skins/default/xui/pt/panel_places.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_postcard_message.xml b/indra/newview/skins/default/xui/pt/panel_postcard_message.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_postcard_settings.xml b/indra/newview/skins/default/xui/pt/panel_postcard_settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/pt/panel_preferences_advanced.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_alerts.xml b/indra/newview/skins/default/xui/pt/panel_preferences_alerts.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_chat.xml b/indra/newview/skins/default/xui/pt/panel_preferences_chat.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_colors.xml b/indra/newview/skins/default/xui/pt/panel_preferences_colors.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_general.xml b/indra/newview/skins/default/xui/pt/panel_preferences_general.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/pt/panel_preferences_graphics1.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_move.xml b/indra/newview/skins/default/xui/pt/panel_preferences_move.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/pt/panel_preferences_privacy.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_setup.xml b/indra/newview/skins/default/xui/pt/panel_preferences_setup.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_sound.xml b/indra/newview/skins/default/xui/pt/panel_preferences_sound.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_prim_media_controls.xml b/indra/newview/skins/default/xui/pt/panel_prim_media_controls.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_region_covenant.xml b/indra/newview/skins/default/xui/pt/panel_region_covenant.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_region_debug.xml b/indra/newview/skins/default/xui/pt/panel_region_debug.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_region_environment.xml b/indra/newview/skins/default/xui/pt/panel_region_environment.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_region_estate.xml b/indra/newview/skins/default/xui/pt/panel_region_estate.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_region_general.xml b/indra/newview/skins/default/xui/pt/panel_region_general.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_region_terrain.xml b/indra/newview/skins/default/xui/pt/panel_region_terrain.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_script_ed.xml b/indra/newview/skins/default/xui/pt/panel_script_ed.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_script_limits_my_avatar.xml b/indra/newview/skins/default/xui/pt/panel_script_limits_my_avatar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_script_limits_region_memory.xml b/indra/newview/skins/default/xui/pt/panel_script_limits_region_memory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_script_question_toast.xml b/indra/newview/skins/default/xui/pt/panel_script_question_toast.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_scrolling_param.xml b/indra/newview/skins/default/xui/pt/panel_scrolling_param.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_scrolling_param_base.xml b/indra/newview/skins/default/xui/pt/panel_scrolling_param_base.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_side_tray_tab_caption.xml b/indra/newview/skins/default/xui/pt/panel_side_tray_tab_caption.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_snapshot_inventory.xml b/indra/newview/skins/default/xui/pt/panel_snapshot_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_snapshot_local.xml b/indra/newview/skins/default/xui/pt/panel_snapshot_local.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_snapshot_options.xml b/indra/newview/skins/default/xui/pt/panel_snapshot_options.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_snapshot_postcard.xml b/indra/newview/skins/default/xui/pt/panel_snapshot_postcard.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_snapshot_profile.xml b/indra/newview/skins/default/xui/pt/panel_snapshot_profile.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_sound_devices.xml b/indra/newview/skins/default/xui/pt/panel_sound_devices.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_stand_stop_flying.xml b/indra/newview/skins/default/xui/pt/panel_stand_stop_flying.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_status_bar.xml b/indra/newview/skins/default/xui/pt/panel_status_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_teleport_history.xml b/indra/newview/skins/default/xui/pt/panel_teleport_history.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_teleport_history_item.xml b/indra/newview/skins/default/xui/pt/panel_teleport_history_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_voice_effect.xml b/indra/newview/skins/default/xui/pt/panel_voice_effect.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_volume_pulldown.xml b/indra/newview/skins/default/xui/pt/panel_volume_pulldown.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/panel_world_map.xml b/indra/newview/skins/default/xui/pt/panel_world_map.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/role_actions.xml b/indra/newview/skins/default/xui/pt/role_actions.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/sidepanel_appearance.xml b/indra/newview/skins/default/xui/pt/sidepanel_appearance.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/sidepanel_inventory.xml b/indra/newview/skins/default/xui/pt/sidepanel_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/sidepanel_item_info.xml b/indra/newview/skins/default/xui/pt/sidepanel_item_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/sidepanel_task_info.xml b/indra/newview/skins/default/xui/pt/sidepanel_task_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/strings.xml b/indra/newview/skins/default/xui/pt/strings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/teleport_strings.xml b/indra/newview/skins/default/xui/pt/teleport_strings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/pt/xui_version.xml b/indra/newview/skins/default/xui/pt/xui_version.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_aaa.xml b/indra/newview/skins/default/xui/ru/floater_aaa.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_about.xml b/indra/newview/skins/default/xui/ru/floater_about.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_about_land.xml b/indra/newview/skins/default/xui/ru/floater_about_land.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_activeim.xml b/indra/newview/skins/default/xui/ru/floater_activeim.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_animation_anim_preview.xml b/indra/newview/skins/default/xui/ru/floater_animation_anim_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_animation_bvh_preview.xml b/indra/newview/skins/default/xui/ru/floater_animation_bvh_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_auction.xml b/indra/newview/skins/default/xui/ru/floater_auction.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_autoreplace.xml b/indra/newview/skins/default/xui/ru/floater_autoreplace.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_avatar.xml b/indra/newview/skins/default/xui/ru/floater_avatar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_avatar_picker.xml b/indra/newview/skins/default/xui/ru/floater_avatar_picker.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_avatar_textures.xml b/indra/newview/skins/default/xui/ru/floater_avatar_textures.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_beacons.xml b/indra/newview/skins/default/xui/ru/floater_beacons.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_build_options.xml b/indra/newview/skins/default/xui/ru/floater_build_options.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_bulk_perms.xml b/indra/newview/skins/default/xui/ru/floater_bulk_perms.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_bumps.xml b/indra/newview/skins/default/xui/ru/floater_bumps.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_buy_contents.xml b/indra/newview/skins/default/xui/ru/floater_buy_contents.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_buy_currency.xml b/indra/newview/skins/default/xui/ru/floater_buy_currency.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_buy_currency_html.xml b/indra/newview/skins/default/xui/ru/floater_buy_currency_html.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_buy_land.xml b/indra/newview/skins/default/xui/ru/floater_buy_land.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_buy_object.xml b/indra/newview/skins/default/xui/ru/floater_buy_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_camera.xml b/indra/newview/skins/default/xui/ru/floater_camera.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_chat_bar.xml b/indra/newview/skins/default/xui/ru/floater_chat_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_choose_group.xml b/indra/newview/skins/default/xui/ru/floater_choose_group.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_color_picker.xml b/indra/newview/skins/default/xui/ru/floater_color_picker.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_critical.xml b/indra/newview/skins/default/xui/ru/floater_critical.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_delete_env_preset.xml b/indra/newview/skins/default/xui/ru/floater_delete_env_preset.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_destinations.xml b/indra/newview/skins/default/xui/ru/floater_destinations.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_display_name.xml b/indra/newview/skins/default/xui/ru/floater_display_name.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_edit_day_cycle.xml b/indra/newview/skins/default/xui/ru/floater_edit_day_cycle.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_edit_sky_preset.xml b/indra/newview/skins/default/xui/ru/floater_edit_sky_preset.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_edit_water_preset.xml b/indra/newview/skins/default/xui/ru/floater_edit_water_preset.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_environment_settings.xml b/indra/newview/skins/default/xui/ru/floater_environment_settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_event.xml b/indra/newview/skins/default/xui/ru/floater_event.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_fast_timers.xml b/indra/newview/skins/default/xui/ru/floater_fast_timers.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_font_test.xml b/indra/newview/skins/default/xui/ru/floater_font_test.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_gesture.xml b/indra/newview/skins/default/xui/ru/floater_gesture.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_god_tools.xml b/indra/newview/skins/default/xui/ru/floater_god_tools.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_hardware_settings.xml b/indra/newview/skins/default/xui/ru/floater_hardware_settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_help_browser.xml b/indra/newview/skins/default/xui/ru/floater_help_browser.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_how_to.xml b/indra/newview/skins/default/xui/ru/floater_how_to.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_hud.xml b/indra/newview/skins/default/xui/ru/floater_hud.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_im_container.xml b/indra/newview/skins/default/xui/ru/floater_im_container.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_im_session.xml b/indra/newview/skins/default/xui/ru/floater_im_session.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_image_preview.xml b/indra/newview/skins/default/xui/ru/floater_image_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_import_collada.xml b/indra/newview/skins/default/xui/ru/floater_import_collada.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_incoming_call.xml b/indra/newview/skins/default/xui/ru/floater_incoming_call.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_inspect.xml b/indra/newview/skins/default/xui/ru/floater_inspect.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/ru/floater_inventory_item_properties.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/ru/floater_inventory_view_finder.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_joystick.xml b/indra/newview/skins/default/xui/ru/floater_joystick.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_lagmeter.xml b/indra/newview/skins/default/xui/ru/floater_lagmeter.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_land_holdings.xml b/indra/newview/skins/default/xui/ru/floater_land_holdings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/ru/floater_live_lsleditor.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_lsl_guide.xml b/indra/newview/skins/default/xui/ru/floater_lsl_guide.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_map.xml b/indra/newview/skins/default/xui/ru/floater_map.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_media_browser.xml b/indra/newview/skins/default/xui/ru/floater_media_browser.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_media_settings.xml b/indra/newview/skins/default/xui/ru/floater_media_settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_mem_leaking.xml b/indra/newview/skins/default/xui/ru/floater_mem_leaking.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_merchant_outbox.xml b/indra/newview/skins/default/xui/ru/floater_merchant_outbox.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_model_preview.xml b/indra/newview/skins/default/xui/ru/floater_model_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_moveview.xml b/indra/newview/skins/default/xui/ru/floater_moveview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_mute_object.xml b/indra/newview/skins/default/xui/ru/floater_mute_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_my_appearance.xml b/indra/newview/skins/default/xui/ru/floater_my_appearance.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_my_inventory.xml b/indra/newview/skins/default/xui/ru/floater_my_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_notification.xml b/indra/newview/skins/default/xui/ru/floater_notification.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_notifications_console.xml b/indra/newview/skins/default/xui/ru/floater_notifications_console.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_object_weights.xml b/indra/newview/skins/default/xui/ru/floater_object_weights.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_openobject.xml b/indra/newview/skins/default/xui/ru/floater_openobject.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_outfit_save_as.xml b/indra/newview/skins/default/xui/ru/floater_outfit_save_as.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_outgoing_call.xml b/indra/newview/skins/default/xui/ru/floater_outgoing_call.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_pathfinding_characters.xml b/indra/newview/skins/default/xui/ru/floater_pathfinding_characters.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_pathfinding_console.xml b/indra/newview/skins/default/xui/ru/floater_pathfinding_console.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_pathfinding_linksets.xml b/indra/newview/skins/default/xui/ru/floater_pathfinding_linksets.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_pay.xml b/indra/newview/skins/default/xui/ru/floater_pay.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_pay_object.xml b/indra/newview/skins/default/xui/ru/floater_pay_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_people.xml b/indra/newview/skins/default/xui/ru/floater_people.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_perm_prefs.xml b/indra/newview/skins/default/xui/ru/floater_perm_prefs.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_picks.xml b/indra/newview/skins/default/xui/ru/floater_picks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_places.xml b/indra/newview/skins/default/xui/ru/floater_places.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_post_process.xml b/indra/newview/skins/default/xui/ru/floater_post_process.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_preferences.xml b/indra/newview/skins/default/xui/ru/floater_preferences.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_preferences_proxy.xml b/indra/newview/skins/default/xui/ru/floater_preferences_proxy.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_preview_animation.xml b/indra/newview/skins/default/xui/ru/floater_preview_animation.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_preview_gesture.xml b/indra/newview/skins/default/xui/ru/floater_preview_gesture.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_preview_notecard.xml b/indra/newview/skins/default/xui/ru/floater_preview_notecard.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_preview_sound.xml b/indra/newview/skins/default/xui/ru/floater_preview_sound.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_preview_texture.xml b/indra/newview/skins/default/xui/ru/floater_preview_texture.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_price_for_listing.xml b/indra/newview/skins/default/xui/ru/floater_price_for_listing.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_publish_classified.xml b/indra/newview/skins/default/xui/ru/floater_publish_classified.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_region_debug_console.xml b/indra/newview/skins/default/xui/ru/floater_region_debug_console.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_region_info.xml b/indra/newview/skins/default/xui/ru/floater_region_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_report_abuse.xml b/indra/newview/skins/default/xui/ru/floater_report_abuse.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_script_debug.xml b/indra/newview/skins/default/xui/ru/floater_script_debug.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_script_debug_panel.xml b/indra/newview/skins/default/xui/ru/floater_script_debug_panel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_script_limits.xml b/indra/newview/skins/default/xui/ru/floater_script_limits.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_script_preview.xml b/indra/newview/skins/default/xui/ru/floater_script_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_script_queue.xml b/indra/newview/skins/default/xui/ru/floater_script_queue.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_script_search.xml b/indra/newview/skins/default/xui/ru/floater_script_search.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_search.xml b/indra/newview/skins/default/xui/ru/floater_search.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_select_key.xml b/indra/newview/skins/default/xui/ru/floater_select_key.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_sell_land.xml b/indra/newview/skins/default/xui/ru/floater_sell_land.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_settings_debug.xml b/indra/newview/skins/default/xui/ru/floater_settings_debug.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_snapshot.xml b/indra/newview/skins/default/xui/ru/floater_snapshot.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_sound_devices.xml b/indra/newview/skins/default/xui/ru/floater_sound_devices.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_sound_preview.xml b/indra/newview/skins/default/xui/ru/floater_sound_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_spellcheck.xml b/indra/newview/skins/default/xui/ru/floater_spellcheck.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_spellcheck_import.xml b/indra/newview/skins/default/xui/ru/floater_spellcheck_import.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_stats.xml b/indra/newview/skins/default/xui/ru/floater_stats.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_sys_well.xml b/indra/newview/skins/default/xui/ru/floater_sys_well.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_telehub.xml b/indra/newview/skins/default/xui/ru/floater_telehub.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_test_layout_stacks.xml b/indra/newview/skins/default/xui/ru/floater_test_layout_stacks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_test_text_vertical_aligment.xml b/indra/newview/skins/default/xui/ru/floater_test_text_vertical_aligment.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/ru/floater_texture_ctrl.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_texture_fetch_debugger.xml b/indra/newview/skins/default/xui/ru/floater_texture_fetch_debugger.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_tools.xml b/indra/newview/skins/default/xui/ru/floater_tools.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_top_objects.xml b/indra/newview/skins/default/xui/ru/floater_top_objects.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_tos.xml b/indra/newview/skins/default/xui/ru/floater_tos.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_toybox.xml b/indra/newview/skins/default/xui/ru/floater_toybox.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_translation_settings.xml b/indra/newview/skins/default/xui/ru/floater_translation_settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_url_entry.xml b/indra/newview/skins/default/xui/ru/floater_url_entry.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_voice_controls.xml b/indra/newview/skins/default/xui/ru/floater_voice_controls.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_voice_effect.xml b/indra/newview/skins/default/xui/ru/floater_voice_effect.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_web_content.xml b/indra/newview/skins/default/xui/ru/floater_web_content.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_whitelist_entry.xml b/indra/newview/skins/default/xui/ru/floater_whitelist_entry.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_window_size.xml b/indra/newview/skins/default/xui/ru/floater_window_size.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/floater_world_map.xml b/indra/newview/skins/default/xui/ru/floater_world_map.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/inspect_avatar.xml b/indra/newview/skins/default/xui/ru/inspect_avatar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/inspect_group.xml b/indra/newview/skins/default/xui/ru/inspect_group.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/inspect_object.xml b/indra/newview/skins/default/xui/ru/inspect_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/inspect_remote_object.xml b/indra/newview/skins/default/xui/ru/inspect_remote_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_add_wearable_gear.xml b/indra/newview/skins/default/xui/ru/menu_add_wearable_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_attachment_other.xml b/indra/newview/skins/default/xui/ru/menu_attachment_other.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_attachment_self.xml b/indra/newview/skins/default/xui/ru/menu_attachment_self.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_avatar_icon.xml b/indra/newview/skins/default/xui/ru/menu_avatar_icon.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_avatar_other.xml b/indra/newview/skins/default/xui/ru/menu_avatar_other.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_avatar_self.xml b/indra/newview/skins/default/xui/ru/menu_avatar_self.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_cof_attachment.xml b/indra/newview/skins/default/xui/ru/menu_cof_attachment.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_cof_body_part.xml b/indra/newview/skins/default/xui/ru/menu_cof_body_part.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_cof_clothing.xml b/indra/newview/skins/default/xui/ru/menu_cof_clothing.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_cof_gear.xml b/indra/newview/skins/default/xui/ru/menu_cof_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_edit.xml b/indra/newview/skins/default/xui/ru/menu_edit.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_favorites.xml b/indra/newview/skins/default/xui/ru/menu_favorites.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_gesture_gear.xml b/indra/newview/skins/default/xui/ru/menu_gesture_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_group_plus.xml b/indra/newview/skins/default/xui/ru/menu_group_plus.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_hide_navbar.xml b/indra/newview/skins/default/xui/ru/menu_hide_navbar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_imchiclet_adhoc.xml b/indra/newview/skins/default/xui/ru/menu_imchiclet_adhoc.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_imchiclet_group.xml b/indra/newview/skins/default/xui/ru/menu_imchiclet_group.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_imchiclet_p2p.xml b/indra/newview/skins/default/xui/ru/menu_imchiclet_p2p.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/ru/menu_inspect_avatar_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_inspect_object_gear.xml b/indra/newview/skins/default/xui/ru/menu_inspect_object_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_inspect_self_gear.xml b/indra/newview/skins/default/xui/ru/menu_inspect_self_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_inv_offer_chiclet.xml b/indra/newview/skins/default/xui/ru/menu_inv_offer_chiclet.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_inventory.xml b/indra/newview/skins/default/xui/ru/menu_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_inventory_add.xml b/indra/newview/skins/default/xui/ru/menu_inventory_add.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/ru/menu_inventory_gear_default.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_land.xml b/indra/newview/skins/default/xui/ru/menu_land.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_landmark.xml b/indra/newview/skins/default/xui/ru/menu_landmark.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_login.xml b/indra/newview/skins/default/xui/ru/menu_login.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_media_ctrl.xml b/indra/newview/skins/default/xui/ru/menu_media_ctrl.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_mini_map.xml b/indra/newview/skins/default/xui/ru/menu_mini_map.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_model_import_gear_default.xml b/indra/newview/skins/default/xui/ru/menu_model_import_gear_default.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_navbar.xml b/indra/newview/skins/default/xui/ru/menu_navbar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_nearby_chat.xml b/indra/newview/skins/default/xui/ru/menu_nearby_chat.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_notification_well_button.xml b/indra/newview/skins/default/xui/ru/menu_notification_well_button.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_object.xml b/indra/newview/skins/default/xui/ru/menu_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_object_icon.xml b/indra/newview/skins/default/xui/ru/menu_object_icon.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_outfit_gear.xml b/indra/newview/skins/default/xui/ru/menu_outfit_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_outfit_tab.xml b/indra/newview/skins/default/xui/ru/menu_outfit_tab.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_participant_list.xml b/indra/newview/skins/default/xui/ru/menu_participant_list.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_people_friends_view_sort.xml b/indra/newview/skins/default/xui/ru/menu_people_friends_view_sort.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_people_groups.xml b/indra/newview/skins/default/xui/ru/menu_people_groups.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_people_groups_view_sort.xml b/indra/newview/skins/default/xui/ru/menu_people_groups_view_sort.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_people_nearby.xml b/indra/newview/skins/default/xui/ru/menu_people_nearby.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/ru/menu_people_nearby_multiselect.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_people_nearby_view_sort.xml b/indra/newview/skins/default/xui/ru/menu_people_nearby_view_sort.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_people_recent_view_sort.xml b/indra/newview/skins/default/xui/ru/menu_people_recent_view_sort.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_picks.xml b/indra/newview/skins/default/xui/ru/menu_picks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_picks_plus.xml b/indra/newview/skins/default/xui/ru/menu_picks_plus.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_place.xml b/indra/newview/skins/default/xui/ru/menu_place.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_place_add_button.xml b/indra/newview/skins/default/xui/ru/menu_place_add_button.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_places_gear_folder.xml b/indra/newview/skins/default/xui/ru/menu_places_gear_folder.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_places_gear_landmark.xml b/indra/newview/skins/default/xui/ru/menu_places_gear_landmark.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_profile_overflow.xml b/indra/newview/skins/default/xui/ru/menu_profile_overflow.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_save_outfit.xml b/indra/newview/skins/default/xui/ru/menu_save_outfit.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_script_chiclet.xml b/indra/newview/skins/default/xui/ru/menu_script_chiclet.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_slurl.xml b/indra/newview/skins/default/xui/ru/menu_slurl.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_teleport_history_gear.xml b/indra/newview/skins/default/xui/ru/menu_teleport_history_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_teleport_history_item.xml b/indra/newview/skins/default/xui/ru/menu_teleport_history_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_teleport_history_tab.xml b/indra/newview/skins/default/xui/ru/menu_teleport_history_tab.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_text_editor.xml b/indra/newview/skins/default/xui/ru/menu_text_editor.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_toolbars.xml b/indra/newview/skins/default/xui/ru/menu_toolbars.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_topinfobar.xml b/indra/newview/skins/default/xui/ru/menu_topinfobar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_url_agent.xml b/indra/newview/skins/default/xui/ru/menu_url_agent.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_url_group.xml b/indra/newview/skins/default/xui/ru/menu_url_group.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_url_http.xml b/indra/newview/skins/default/xui/ru/menu_url_http.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_url_inventory.xml b/indra/newview/skins/default/xui/ru/menu_url_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_url_map.xml b/indra/newview/skins/default/xui/ru/menu_url_map.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_url_objectim.xml b/indra/newview/skins/default/xui/ru/menu_url_objectim.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_url_parcel.xml b/indra/newview/skins/default/xui/ru/menu_url_parcel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_url_slapp.xml b/indra/newview/skins/default/xui/ru/menu_url_slapp.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_url_slurl.xml b/indra/newview/skins/default/xui/ru/menu_url_slurl.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_url_teleport.xml b/indra/newview/skins/default/xui/ru/menu_url_teleport.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_viewer.xml b/indra/newview/skins/default/xui/ru/menu_viewer.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_wearable_list_item.xml b/indra/newview/skins/default/xui/ru/menu_wearable_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_wearing_gear.xml b/indra/newview/skins/default/xui/ru/menu_wearing_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/menu_wearing_tab.xml b/indra/newview/skins/default/xui/ru/menu_wearing_tab.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/mime_types.xml b/indra/newview/skins/default/xui/ru/mime_types.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/mime_types_linux.xml b/indra/newview/skins/default/xui/ru/mime_types_linux.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/mime_types_mac.xml b/indra/newview/skins/default/xui/ru/mime_types_mac.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/notifications.xml b/indra/newview/skins/default/xui/ru/notifications.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_active_object_row.xml b/indra/newview/skins/default/xui/ru/panel_active_object_row.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_adhoc_control_panel.xml b/indra/newview/skins/default/xui/ru/panel_adhoc_control_panel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/ru/panel_avatar_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_avatar_tag.xml b/indra/newview/skins/default/xui/ru/panel_avatar_tag.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/ru/panel_block_list_sidetray.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_body_parts_list_item.xml b/indra/newview/skins/default/xui/ru/panel_body_parts_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_bodyparts_list_button_bar.xml b/indra/newview/skins/default/xui/ru/panel_bodyparts_list_button_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_bottomtray_lite.xml b/indra/newview/skins/default/xui/ru/panel_bottomtray_lite.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_chat_header.xml b/indra/newview/skins/default/xui/ru/panel_chat_header.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_chiclet_bar.xml b/indra/newview/skins/default/xui/ru/panel_chiclet_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_classified_info.xml b/indra/newview/skins/default/xui/ru/panel_classified_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_clothing_list_button_bar.xml b/indra/newview/skins/default/xui/ru/panel_clothing_list_button_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_clothing_list_item.xml b/indra/newview/skins/default/xui/ru/panel_clothing_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_cof_wearables.xml b/indra/newview/skins/default/xui/ru/panel_cof_wearables.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_deletable_wearable_list_item.xml b/indra/newview/skins/default/xui/ru/panel_deletable_wearable_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_dummy_clothing_list_item.xml b/indra/newview/skins/default/xui/ru/panel_dummy_clothing_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_edit_alpha.xml b/indra/newview/skins/default/xui/ru/panel_edit_alpha.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_edit_classified.xml b/indra/newview/skins/default/xui/ru/panel_edit_classified.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_edit_eyes.xml b/indra/newview/skins/default/xui/ru/panel_edit_eyes.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_edit_gloves.xml b/indra/newview/skins/default/xui/ru/panel_edit_gloves.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_edit_hair.xml b/indra/newview/skins/default/xui/ru/panel_edit_hair.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_edit_jacket.xml b/indra/newview/skins/default/xui/ru/panel_edit_jacket.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_edit_pants.xml b/indra/newview/skins/default/xui/ru/panel_edit_pants.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_edit_physics.xml b/indra/newview/skins/default/xui/ru/panel_edit_physics.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_edit_pick.xml b/indra/newview/skins/default/xui/ru/panel_edit_pick.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_edit_profile.xml b/indra/newview/skins/default/xui/ru/panel_edit_profile.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_edit_shape.xml b/indra/newview/skins/default/xui/ru/panel_edit_shape.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_edit_shirt.xml b/indra/newview/skins/default/xui/ru/panel_edit_shirt.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_edit_shoes.xml b/indra/newview/skins/default/xui/ru/panel_edit_shoes.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_edit_skin.xml b/indra/newview/skins/default/xui/ru/panel_edit_skin.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_edit_skirt.xml b/indra/newview/skins/default/xui/ru/panel_edit_skirt.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_edit_socks.xml b/indra/newview/skins/default/xui/ru/panel_edit_socks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/ru/panel_edit_tattoo.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_edit_underpants.xml b/indra/newview/skins/default/xui/ru/panel_edit_underpants.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_edit_undershirt.xml b/indra/newview/skins/default/xui/ru/panel_edit_undershirt.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_edit_wearable.xml b/indra/newview/skins/default/xui/ru/panel_edit_wearable.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_group_control_panel.xml b/indra/newview/skins/default/xui/ru/panel_group_control_panel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_group_general.xml b/indra/newview/skins/default/xui/ru/panel_group_general.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/ru/panel_group_info_sidetray.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_group_invite.xml b/indra/newview/skins/default/xui/ru/panel_group_invite.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_group_land_money.xml b/indra/newview/skins/default/xui/ru/panel_group_land_money.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_group_list_item.xml b/indra/newview/skins/default/xui/ru/panel_group_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_group_notices.xml b/indra/newview/skins/default/xui/ru/panel_group_notices.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_group_notify.xml b/indra/newview/skins/default/xui/ru/panel_group_notify.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_group_roles.xml b/indra/newview/skins/default/xui/ru/panel_group_roles.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_im_control_panel.xml b/indra/newview/skins/default/xui/ru/panel_im_control_panel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_instant_message.xml b/indra/newview/skins/default/xui/ru/panel_instant_message.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_inventory_item.xml b/indra/newview/skins/default/xui/ru/panel_inventory_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_landmark_info.xml b/indra/newview/skins/default/xui/ru/panel_landmark_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_landmarks.xml b/indra/newview/skins/default/xui/ru/panel_landmarks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_login.xml b/indra/newview/skins/default/xui/ru/panel_login.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_main_inventory.xml b/indra/newview/skins/default/xui/ru/panel_main_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_me.xml b/indra/newview/skins/default/xui/ru/panel_me.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_media_settings_general.xml b/indra/newview/skins/default/xui/ru/panel_media_settings_general.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_media_settings_permissions.xml b/indra/newview/skins/default/xui/ru/panel_media_settings_permissions.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_media_settings_security.xml b/indra/newview/skins/default/xui/ru/panel_media_settings_security.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_navigation_bar.xml b/indra/newview/skins/default/xui/ru/panel_navigation_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_nearby_chat.xml b/indra/newview/skins/default/xui/ru/panel_nearby_chat.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/ru/panel_nearby_chat_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_nearby_media.xml b/indra/newview/skins/default/xui/ru/panel_nearby_media.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_notify_textbox.xml b/indra/newview/skins/default/xui/ru/panel_notify_textbox.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_online_status_toast.xml b/indra/newview/skins/default/xui/ru/panel_online_status_toast.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_outbox_inventory.xml b/indra/newview/skins/default/xui/ru/panel_outbox_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_outfit_edit.xml b/indra/newview/skins/default/xui/ru/panel_outfit_edit.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/ru/panel_outfits_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_outfits_inventory_gear_default.xml b/indra/newview/skins/default/xui/ru/panel_outfits_inventory_gear_default.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_outfits_list.xml b/indra/newview/skins/default/xui/ru/panel_outfits_list.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_outfits_wearing.xml b/indra/newview/skins/default/xui/ru/panel_outfits_wearing.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_people.xml b/indra/newview/skins/default/xui/ru/panel_people.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_pick_info.xml b/indra/newview/skins/default/xui/ru/panel_pick_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_picks.xml b/indra/newview/skins/default/xui/ru/panel_picks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_place_profile.xml b/indra/newview/skins/default/xui/ru/panel_place_profile.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_places.xml b/indra/newview/skins/default/xui/ru/panel_places.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_postcard_message.xml b/indra/newview/skins/default/xui/ru/panel_postcard_message.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_postcard_settings.xml b/indra/newview/skins/default/xui/ru/panel_postcard_settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/ru/panel_preferences_advanced.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_alerts.xml b/indra/newview/skins/default/xui/ru/panel_preferences_alerts.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_chat.xml b/indra/newview/skins/default/xui/ru/panel_preferences_chat.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_colors.xml b/indra/newview/skins/default/xui/ru/panel_preferences_colors.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_general.xml b/indra/newview/skins/default/xui/ru/panel_preferences_general.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/ru/panel_preferences_graphics1.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_move.xml b/indra/newview/skins/default/xui/ru/panel_preferences_move.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/ru/panel_preferences_privacy.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_setup.xml b/indra/newview/skins/default/xui/ru/panel_preferences_setup.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_sound.xml b/indra/newview/skins/default/xui/ru/panel_preferences_sound.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_prim_media_controls.xml b/indra/newview/skins/default/xui/ru/panel_prim_media_controls.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_region_covenant.xml b/indra/newview/skins/default/xui/ru/panel_region_covenant.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_region_debug.xml b/indra/newview/skins/default/xui/ru/panel_region_debug.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_region_environment.xml b/indra/newview/skins/default/xui/ru/panel_region_environment.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_region_estate.xml b/indra/newview/skins/default/xui/ru/panel_region_estate.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_region_general.xml b/indra/newview/skins/default/xui/ru/panel_region_general.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_region_terrain.xml b/indra/newview/skins/default/xui/ru/panel_region_terrain.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_script_ed.xml b/indra/newview/skins/default/xui/ru/panel_script_ed.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_script_limits_my_avatar.xml b/indra/newview/skins/default/xui/ru/panel_script_limits_my_avatar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_script_limits_region_memory.xml b/indra/newview/skins/default/xui/ru/panel_script_limits_region_memory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_script_question_toast.xml b/indra/newview/skins/default/xui/ru/panel_script_question_toast.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_scrolling_param.xml b/indra/newview/skins/default/xui/ru/panel_scrolling_param.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_scrolling_param_base.xml b/indra/newview/skins/default/xui/ru/panel_scrolling_param_base.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_side_tray_tab_caption.xml b/indra/newview/skins/default/xui/ru/panel_side_tray_tab_caption.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_snapshot_inventory.xml b/indra/newview/skins/default/xui/ru/panel_snapshot_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_snapshot_local.xml b/indra/newview/skins/default/xui/ru/panel_snapshot_local.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_snapshot_options.xml b/indra/newview/skins/default/xui/ru/panel_snapshot_options.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_snapshot_postcard.xml b/indra/newview/skins/default/xui/ru/panel_snapshot_postcard.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_snapshot_profile.xml b/indra/newview/skins/default/xui/ru/panel_snapshot_profile.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_sound_devices.xml b/indra/newview/skins/default/xui/ru/panel_sound_devices.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_stand_stop_flying.xml b/indra/newview/skins/default/xui/ru/panel_stand_stop_flying.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_status_bar.xml b/indra/newview/skins/default/xui/ru/panel_status_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_teleport_history.xml b/indra/newview/skins/default/xui/ru/panel_teleport_history.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_teleport_history_item.xml b/indra/newview/skins/default/xui/ru/panel_teleport_history_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_voice_effect.xml b/indra/newview/skins/default/xui/ru/panel_voice_effect.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_volume_pulldown.xml b/indra/newview/skins/default/xui/ru/panel_volume_pulldown.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/panel_world_map.xml b/indra/newview/skins/default/xui/ru/panel_world_map.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/role_actions.xml b/indra/newview/skins/default/xui/ru/role_actions.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/sidepanel_appearance.xml b/indra/newview/skins/default/xui/ru/sidepanel_appearance.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/sidepanel_inventory.xml b/indra/newview/skins/default/xui/ru/sidepanel_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/sidepanel_item_info.xml b/indra/newview/skins/default/xui/ru/sidepanel_item_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/sidepanel_task_info.xml b/indra/newview/skins/default/xui/ru/sidepanel_task_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/strings.xml b/indra/newview/skins/default/xui/ru/strings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/ru/teleport_strings.xml b/indra/newview/skins/default/xui/ru/teleport_strings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_aaa.xml b/indra/newview/skins/default/xui/tr/floater_aaa.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_about.xml b/indra/newview/skins/default/xui/tr/floater_about.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_about_land.xml b/indra/newview/skins/default/xui/tr/floater_about_land.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_activeim.xml b/indra/newview/skins/default/xui/tr/floater_activeim.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_animation_anim_preview.xml b/indra/newview/skins/default/xui/tr/floater_animation_anim_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_animation_bvh_preview.xml b/indra/newview/skins/default/xui/tr/floater_animation_bvh_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_auction.xml b/indra/newview/skins/default/xui/tr/floater_auction.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_autoreplace.xml b/indra/newview/skins/default/xui/tr/floater_autoreplace.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_avatar.xml b/indra/newview/skins/default/xui/tr/floater_avatar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_avatar_picker.xml b/indra/newview/skins/default/xui/tr/floater_avatar_picker.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_avatar_textures.xml b/indra/newview/skins/default/xui/tr/floater_avatar_textures.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_beacons.xml b/indra/newview/skins/default/xui/tr/floater_beacons.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_build_options.xml b/indra/newview/skins/default/xui/tr/floater_build_options.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_bulk_perms.xml b/indra/newview/skins/default/xui/tr/floater_bulk_perms.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_bumps.xml b/indra/newview/skins/default/xui/tr/floater_bumps.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_buy_contents.xml b/indra/newview/skins/default/xui/tr/floater_buy_contents.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_buy_currency.xml b/indra/newview/skins/default/xui/tr/floater_buy_currency.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_buy_currency_html.xml b/indra/newview/skins/default/xui/tr/floater_buy_currency_html.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_buy_land.xml b/indra/newview/skins/default/xui/tr/floater_buy_land.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_buy_object.xml b/indra/newview/skins/default/xui/tr/floater_buy_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_camera.xml b/indra/newview/skins/default/xui/tr/floater_camera.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_chat_bar.xml b/indra/newview/skins/default/xui/tr/floater_chat_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_choose_group.xml b/indra/newview/skins/default/xui/tr/floater_choose_group.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_color_picker.xml b/indra/newview/skins/default/xui/tr/floater_color_picker.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_critical.xml b/indra/newview/skins/default/xui/tr/floater_critical.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_delete_env_preset.xml b/indra/newview/skins/default/xui/tr/floater_delete_env_preset.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_destinations.xml b/indra/newview/skins/default/xui/tr/floater_destinations.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_display_name.xml b/indra/newview/skins/default/xui/tr/floater_display_name.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_edit_day_cycle.xml b/indra/newview/skins/default/xui/tr/floater_edit_day_cycle.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_edit_sky_preset.xml b/indra/newview/skins/default/xui/tr/floater_edit_sky_preset.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_edit_water_preset.xml b/indra/newview/skins/default/xui/tr/floater_edit_water_preset.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_environment_settings.xml b/indra/newview/skins/default/xui/tr/floater_environment_settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_event.xml b/indra/newview/skins/default/xui/tr/floater_event.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_fast_timers.xml b/indra/newview/skins/default/xui/tr/floater_fast_timers.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_font_test.xml b/indra/newview/skins/default/xui/tr/floater_font_test.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_gesture.xml b/indra/newview/skins/default/xui/tr/floater_gesture.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_god_tools.xml b/indra/newview/skins/default/xui/tr/floater_god_tools.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_hardware_settings.xml b/indra/newview/skins/default/xui/tr/floater_hardware_settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_help_browser.xml b/indra/newview/skins/default/xui/tr/floater_help_browser.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_how_to.xml b/indra/newview/skins/default/xui/tr/floater_how_to.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_hud.xml b/indra/newview/skins/default/xui/tr/floater_hud.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_im_container.xml b/indra/newview/skins/default/xui/tr/floater_im_container.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_im_session.xml b/indra/newview/skins/default/xui/tr/floater_im_session.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_image_preview.xml b/indra/newview/skins/default/xui/tr/floater_image_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_import_collada.xml b/indra/newview/skins/default/xui/tr/floater_import_collada.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_incoming_call.xml b/indra/newview/skins/default/xui/tr/floater_incoming_call.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_inspect.xml b/indra/newview/skins/default/xui/tr/floater_inspect.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/tr/floater_inventory_item_properties.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/tr/floater_inventory_view_finder.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_joystick.xml b/indra/newview/skins/default/xui/tr/floater_joystick.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_lagmeter.xml b/indra/newview/skins/default/xui/tr/floater_lagmeter.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_land_holdings.xml b/indra/newview/skins/default/xui/tr/floater_land_holdings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/tr/floater_live_lsleditor.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_lsl_guide.xml b/indra/newview/skins/default/xui/tr/floater_lsl_guide.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_map.xml b/indra/newview/skins/default/xui/tr/floater_map.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_media_browser.xml b/indra/newview/skins/default/xui/tr/floater_media_browser.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_media_settings.xml b/indra/newview/skins/default/xui/tr/floater_media_settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_mem_leaking.xml b/indra/newview/skins/default/xui/tr/floater_mem_leaking.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_merchant_outbox.xml b/indra/newview/skins/default/xui/tr/floater_merchant_outbox.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_model_preview.xml b/indra/newview/skins/default/xui/tr/floater_model_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_moveview.xml b/indra/newview/skins/default/xui/tr/floater_moveview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_mute_object.xml b/indra/newview/skins/default/xui/tr/floater_mute_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_my_appearance.xml b/indra/newview/skins/default/xui/tr/floater_my_appearance.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_my_inventory.xml b/indra/newview/skins/default/xui/tr/floater_my_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_notification.xml b/indra/newview/skins/default/xui/tr/floater_notification.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_notifications_console.xml b/indra/newview/skins/default/xui/tr/floater_notifications_console.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_object_weights.xml b/indra/newview/skins/default/xui/tr/floater_object_weights.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_openobject.xml b/indra/newview/skins/default/xui/tr/floater_openobject.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_outfit_save_as.xml b/indra/newview/skins/default/xui/tr/floater_outfit_save_as.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_outgoing_call.xml b/indra/newview/skins/default/xui/tr/floater_outgoing_call.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_pathfinding_characters.xml b/indra/newview/skins/default/xui/tr/floater_pathfinding_characters.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_pathfinding_console.xml b/indra/newview/skins/default/xui/tr/floater_pathfinding_console.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_pathfinding_linksets.xml b/indra/newview/skins/default/xui/tr/floater_pathfinding_linksets.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_pay.xml b/indra/newview/skins/default/xui/tr/floater_pay.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_pay_object.xml b/indra/newview/skins/default/xui/tr/floater_pay_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_people.xml b/indra/newview/skins/default/xui/tr/floater_people.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_perm_prefs.xml b/indra/newview/skins/default/xui/tr/floater_perm_prefs.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_picks.xml b/indra/newview/skins/default/xui/tr/floater_picks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_places.xml b/indra/newview/skins/default/xui/tr/floater_places.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_post_process.xml b/indra/newview/skins/default/xui/tr/floater_post_process.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_preferences.xml b/indra/newview/skins/default/xui/tr/floater_preferences.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_preferences_proxy.xml b/indra/newview/skins/default/xui/tr/floater_preferences_proxy.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_preview_animation.xml b/indra/newview/skins/default/xui/tr/floater_preview_animation.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_preview_gesture.xml b/indra/newview/skins/default/xui/tr/floater_preview_gesture.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_preview_notecard.xml b/indra/newview/skins/default/xui/tr/floater_preview_notecard.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_preview_sound.xml b/indra/newview/skins/default/xui/tr/floater_preview_sound.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_preview_texture.xml b/indra/newview/skins/default/xui/tr/floater_preview_texture.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_price_for_listing.xml b/indra/newview/skins/default/xui/tr/floater_price_for_listing.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_publish_classified.xml b/indra/newview/skins/default/xui/tr/floater_publish_classified.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_region_debug_console.xml b/indra/newview/skins/default/xui/tr/floater_region_debug_console.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_region_info.xml b/indra/newview/skins/default/xui/tr/floater_region_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_report_abuse.xml b/indra/newview/skins/default/xui/tr/floater_report_abuse.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_script_debug.xml b/indra/newview/skins/default/xui/tr/floater_script_debug.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_script_debug_panel.xml b/indra/newview/skins/default/xui/tr/floater_script_debug_panel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_script_limits.xml b/indra/newview/skins/default/xui/tr/floater_script_limits.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_script_preview.xml b/indra/newview/skins/default/xui/tr/floater_script_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_script_queue.xml b/indra/newview/skins/default/xui/tr/floater_script_queue.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_script_search.xml b/indra/newview/skins/default/xui/tr/floater_script_search.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_search.xml b/indra/newview/skins/default/xui/tr/floater_search.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_select_key.xml b/indra/newview/skins/default/xui/tr/floater_select_key.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_sell_land.xml b/indra/newview/skins/default/xui/tr/floater_sell_land.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_settings_debug.xml b/indra/newview/skins/default/xui/tr/floater_settings_debug.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_snapshot.xml b/indra/newview/skins/default/xui/tr/floater_snapshot.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_sound_devices.xml b/indra/newview/skins/default/xui/tr/floater_sound_devices.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_sound_preview.xml b/indra/newview/skins/default/xui/tr/floater_sound_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_spellcheck.xml b/indra/newview/skins/default/xui/tr/floater_spellcheck.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_spellcheck_import.xml b/indra/newview/skins/default/xui/tr/floater_spellcheck_import.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_stats.xml b/indra/newview/skins/default/xui/tr/floater_stats.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_sys_well.xml b/indra/newview/skins/default/xui/tr/floater_sys_well.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_telehub.xml b/indra/newview/skins/default/xui/tr/floater_telehub.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_test_layout_stacks.xml b/indra/newview/skins/default/xui/tr/floater_test_layout_stacks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_test_text_vertical_aligment.xml b/indra/newview/skins/default/xui/tr/floater_test_text_vertical_aligment.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/tr/floater_texture_ctrl.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_texture_fetch_debugger.xml b/indra/newview/skins/default/xui/tr/floater_texture_fetch_debugger.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_tools.xml b/indra/newview/skins/default/xui/tr/floater_tools.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_top_objects.xml b/indra/newview/skins/default/xui/tr/floater_top_objects.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_tos.xml b/indra/newview/skins/default/xui/tr/floater_tos.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_toybox.xml b/indra/newview/skins/default/xui/tr/floater_toybox.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_translation_settings.xml b/indra/newview/skins/default/xui/tr/floater_translation_settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_url_entry.xml b/indra/newview/skins/default/xui/tr/floater_url_entry.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_voice_controls.xml b/indra/newview/skins/default/xui/tr/floater_voice_controls.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_voice_effect.xml b/indra/newview/skins/default/xui/tr/floater_voice_effect.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_web_content.xml b/indra/newview/skins/default/xui/tr/floater_web_content.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_whitelist_entry.xml b/indra/newview/skins/default/xui/tr/floater_whitelist_entry.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_window_size.xml b/indra/newview/skins/default/xui/tr/floater_window_size.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/floater_world_map.xml b/indra/newview/skins/default/xui/tr/floater_world_map.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/inspect_avatar.xml b/indra/newview/skins/default/xui/tr/inspect_avatar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/inspect_group.xml b/indra/newview/skins/default/xui/tr/inspect_group.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/inspect_object.xml b/indra/newview/skins/default/xui/tr/inspect_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/inspect_remote_object.xml b/indra/newview/skins/default/xui/tr/inspect_remote_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_add_wearable_gear.xml b/indra/newview/skins/default/xui/tr/menu_add_wearable_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_attachment_other.xml b/indra/newview/skins/default/xui/tr/menu_attachment_other.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_attachment_self.xml b/indra/newview/skins/default/xui/tr/menu_attachment_self.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_avatar_icon.xml b/indra/newview/skins/default/xui/tr/menu_avatar_icon.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_avatar_other.xml b/indra/newview/skins/default/xui/tr/menu_avatar_other.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_avatar_self.xml b/indra/newview/skins/default/xui/tr/menu_avatar_self.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_cof_attachment.xml b/indra/newview/skins/default/xui/tr/menu_cof_attachment.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_cof_body_part.xml b/indra/newview/skins/default/xui/tr/menu_cof_body_part.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_cof_clothing.xml b/indra/newview/skins/default/xui/tr/menu_cof_clothing.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_cof_gear.xml b/indra/newview/skins/default/xui/tr/menu_cof_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_edit.xml b/indra/newview/skins/default/xui/tr/menu_edit.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_favorites.xml b/indra/newview/skins/default/xui/tr/menu_favorites.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_gesture_gear.xml b/indra/newview/skins/default/xui/tr/menu_gesture_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_group_plus.xml b/indra/newview/skins/default/xui/tr/menu_group_plus.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_hide_navbar.xml b/indra/newview/skins/default/xui/tr/menu_hide_navbar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_imchiclet_adhoc.xml b/indra/newview/skins/default/xui/tr/menu_imchiclet_adhoc.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_imchiclet_group.xml b/indra/newview/skins/default/xui/tr/menu_imchiclet_group.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_imchiclet_p2p.xml b/indra/newview/skins/default/xui/tr/menu_imchiclet_p2p.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/tr/menu_inspect_avatar_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_inspect_object_gear.xml b/indra/newview/skins/default/xui/tr/menu_inspect_object_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_inspect_self_gear.xml b/indra/newview/skins/default/xui/tr/menu_inspect_self_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_inv_offer_chiclet.xml b/indra/newview/skins/default/xui/tr/menu_inv_offer_chiclet.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_inventory.xml b/indra/newview/skins/default/xui/tr/menu_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_inventory_add.xml b/indra/newview/skins/default/xui/tr/menu_inventory_add.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/tr/menu_inventory_gear_default.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_land.xml b/indra/newview/skins/default/xui/tr/menu_land.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_landmark.xml b/indra/newview/skins/default/xui/tr/menu_landmark.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_login.xml b/indra/newview/skins/default/xui/tr/menu_login.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_media_ctrl.xml b/indra/newview/skins/default/xui/tr/menu_media_ctrl.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_mini_map.xml b/indra/newview/skins/default/xui/tr/menu_mini_map.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_model_import_gear_default.xml b/indra/newview/skins/default/xui/tr/menu_model_import_gear_default.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_navbar.xml b/indra/newview/skins/default/xui/tr/menu_navbar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_nearby_chat.xml b/indra/newview/skins/default/xui/tr/menu_nearby_chat.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_notification_well_button.xml b/indra/newview/skins/default/xui/tr/menu_notification_well_button.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_object.xml b/indra/newview/skins/default/xui/tr/menu_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_object_icon.xml b/indra/newview/skins/default/xui/tr/menu_object_icon.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_outfit_gear.xml b/indra/newview/skins/default/xui/tr/menu_outfit_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_outfit_tab.xml b/indra/newview/skins/default/xui/tr/menu_outfit_tab.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_participant_list.xml b/indra/newview/skins/default/xui/tr/menu_participant_list.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_people_friends_view_sort.xml b/indra/newview/skins/default/xui/tr/menu_people_friends_view_sort.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_people_groups.xml b/indra/newview/skins/default/xui/tr/menu_people_groups.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_people_groups_view_sort.xml b/indra/newview/skins/default/xui/tr/menu_people_groups_view_sort.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_people_nearby.xml b/indra/newview/skins/default/xui/tr/menu_people_nearby.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/tr/menu_people_nearby_multiselect.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_people_nearby_view_sort.xml b/indra/newview/skins/default/xui/tr/menu_people_nearby_view_sort.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_people_recent_view_sort.xml b/indra/newview/skins/default/xui/tr/menu_people_recent_view_sort.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_picks.xml b/indra/newview/skins/default/xui/tr/menu_picks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_picks_plus.xml b/indra/newview/skins/default/xui/tr/menu_picks_plus.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_place.xml b/indra/newview/skins/default/xui/tr/menu_place.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_place_add_button.xml b/indra/newview/skins/default/xui/tr/menu_place_add_button.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_places_gear_folder.xml b/indra/newview/skins/default/xui/tr/menu_places_gear_folder.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_places_gear_landmark.xml b/indra/newview/skins/default/xui/tr/menu_places_gear_landmark.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_profile_overflow.xml b/indra/newview/skins/default/xui/tr/menu_profile_overflow.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_save_outfit.xml b/indra/newview/skins/default/xui/tr/menu_save_outfit.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_script_chiclet.xml b/indra/newview/skins/default/xui/tr/menu_script_chiclet.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_slurl.xml b/indra/newview/skins/default/xui/tr/menu_slurl.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_teleport_history_gear.xml b/indra/newview/skins/default/xui/tr/menu_teleport_history_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_teleport_history_item.xml b/indra/newview/skins/default/xui/tr/menu_teleport_history_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_teleport_history_tab.xml b/indra/newview/skins/default/xui/tr/menu_teleport_history_tab.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_text_editor.xml b/indra/newview/skins/default/xui/tr/menu_text_editor.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_toolbars.xml b/indra/newview/skins/default/xui/tr/menu_toolbars.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_topinfobar.xml b/indra/newview/skins/default/xui/tr/menu_topinfobar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_url_agent.xml b/indra/newview/skins/default/xui/tr/menu_url_agent.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_url_group.xml b/indra/newview/skins/default/xui/tr/menu_url_group.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_url_http.xml b/indra/newview/skins/default/xui/tr/menu_url_http.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_url_inventory.xml b/indra/newview/skins/default/xui/tr/menu_url_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_url_map.xml b/indra/newview/skins/default/xui/tr/menu_url_map.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_url_objectim.xml b/indra/newview/skins/default/xui/tr/menu_url_objectim.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_url_parcel.xml b/indra/newview/skins/default/xui/tr/menu_url_parcel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_url_slapp.xml b/indra/newview/skins/default/xui/tr/menu_url_slapp.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_url_slurl.xml b/indra/newview/skins/default/xui/tr/menu_url_slurl.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_url_teleport.xml b/indra/newview/skins/default/xui/tr/menu_url_teleport.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_viewer.xml b/indra/newview/skins/default/xui/tr/menu_viewer.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_wearable_list_item.xml b/indra/newview/skins/default/xui/tr/menu_wearable_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_wearing_gear.xml b/indra/newview/skins/default/xui/tr/menu_wearing_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/menu_wearing_tab.xml b/indra/newview/skins/default/xui/tr/menu_wearing_tab.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/mime_types.xml b/indra/newview/skins/default/xui/tr/mime_types.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/mime_types_linux.xml b/indra/newview/skins/default/xui/tr/mime_types_linux.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/mime_types_mac.xml b/indra/newview/skins/default/xui/tr/mime_types_mac.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/notifications.xml b/indra/newview/skins/default/xui/tr/notifications.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_active_object_row.xml b/indra/newview/skins/default/xui/tr/panel_active_object_row.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_adhoc_control_panel.xml b/indra/newview/skins/default/xui/tr/panel_adhoc_control_panel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/tr/panel_avatar_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_avatar_tag.xml b/indra/newview/skins/default/xui/tr/panel_avatar_tag.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/tr/panel_block_list_sidetray.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_body_parts_list_item.xml b/indra/newview/skins/default/xui/tr/panel_body_parts_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_bodyparts_list_button_bar.xml b/indra/newview/skins/default/xui/tr/panel_bodyparts_list_button_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_bottomtray_lite.xml b/indra/newview/skins/default/xui/tr/panel_bottomtray_lite.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_chat_header.xml b/indra/newview/skins/default/xui/tr/panel_chat_header.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_chiclet_bar.xml b/indra/newview/skins/default/xui/tr/panel_chiclet_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_classified_info.xml b/indra/newview/skins/default/xui/tr/panel_classified_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_clothing_list_button_bar.xml b/indra/newview/skins/default/xui/tr/panel_clothing_list_button_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_clothing_list_item.xml b/indra/newview/skins/default/xui/tr/panel_clothing_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_cof_wearables.xml b/indra/newview/skins/default/xui/tr/panel_cof_wearables.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_deletable_wearable_list_item.xml b/indra/newview/skins/default/xui/tr/panel_deletable_wearable_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_dummy_clothing_list_item.xml b/indra/newview/skins/default/xui/tr/panel_dummy_clothing_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_edit_alpha.xml b/indra/newview/skins/default/xui/tr/panel_edit_alpha.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_edit_classified.xml b/indra/newview/skins/default/xui/tr/panel_edit_classified.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_edit_eyes.xml b/indra/newview/skins/default/xui/tr/panel_edit_eyes.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_edit_gloves.xml b/indra/newview/skins/default/xui/tr/panel_edit_gloves.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_edit_hair.xml b/indra/newview/skins/default/xui/tr/panel_edit_hair.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_edit_jacket.xml b/indra/newview/skins/default/xui/tr/panel_edit_jacket.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_edit_pants.xml b/indra/newview/skins/default/xui/tr/panel_edit_pants.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_edit_physics.xml b/indra/newview/skins/default/xui/tr/panel_edit_physics.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_edit_pick.xml b/indra/newview/skins/default/xui/tr/panel_edit_pick.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_edit_profile.xml b/indra/newview/skins/default/xui/tr/panel_edit_profile.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_edit_shape.xml b/indra/newview/skins/default/xui/tr/panel_edit_shape.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_edit_shirt.xml b/indra/newview/skins/default/xui/tr/panel_edit_shirt.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_edit_shoes.xml b/indra/newview/skins/default/xui/tr/panel_edit_shoes.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_edit_skin.xml b/indra/newview/skins/default/xui/tr/panel_edit_skin.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_edit_skirt.xml b/indra/newview/skins/default/xui/tr/panel_edit_skirt.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_edit_socks.xml b/indra/newview/skins/default/xui/tr/panel_edit_socks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/tr/panel_edit_tattoo.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_edit_underpants.xml b/indra/newview/skins/default/xui/tr/panel_edit_underpants.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_edit_undershirt.xml b/indra/newview/skins/default/xui/tr/panel_edit_undershirt.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_edit_wearable.xml b/indra/newview/skins/default/xui/tr/panel_edit_wearable.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_group_control_panel.xml b/indra/newview/skins/default/xui/tr/panel_group_control_panel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_group_general.xml b/indra/newview/skins/default/xui/tr/panel_group_general.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/tr/panel_group_info_sidetray.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_group_invite.xml b/indra/newview/skins/default/xui/tr/panel_group_invite.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_group_land_money.xml b/indra/newview/skins/default/xui/tr/panel_group_land_money.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_group_list_item.xml b/indra/newview/skins/default/xui/tr/panel_group_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_group_notices.xml b/indra/newview/skins/default/xui/tr/panel_group_notices.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_group_notify.xml b/indra/newview/skins/default/xui/tr/panel_group_notify.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_group_roles.xml b/indra/newview/skins/default/xui/tr/panel_group_roles.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_im_control_panel.xml b/indra/newview/skins/default/xui/tr/panel_im_control_panel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_instant_message.xml b/indra/newview/skins/default/xui/tr/panel_instant_message.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_inventory_item.xml b/indra/newview/skins/default/xui/tr/panel_inventory_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_landmark_info.xml b/indra/newview/skins/default/xui/tr/panel_landmark_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_landmarks.xml b/indra/newview/skins/default/xui/tr/panel_landmarks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_login.xml b/indra/newview/skins/default/xui/tr/panel_login.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_main_inventory.xml b/indra/newview/skins/default/xui/tr/panel_main_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_me.xml b/indra/newview/skins/default/xui/tr/panel_me.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_media_settings_general.xml b/indra/newview/skins/default/xui/tr/panel_media_settings_general.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_media_settings_permissions.xml b/indra/newview/skins/default/xui/tr/panel_media_settings_permissions.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_media_settings_security.xml b/indra/newview/skins/default/xui/tr/panel_media_settings_security.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_navigation_bar.xml b/indra/newview/skins/default/xui/tr/panel_navigation_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_nearby_chat.xml b/indra/newview/skins/default/xui/tr/panel_nearby_chat.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/tr/panel_nearby_chat_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_nearby_media.xml b/indra/newview/skins/default/xui/tr/panel_nearby_media.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_notify_textbox.xml b/indra/newview/skins/default/xui/tr/panel_notify_textbox.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_online_status_toast.xml b/indra/newview/skins/default/xui/tr/panel_online_status_toast.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_outbox_inventory.xml b/indra/newview/skins/default/xui/tr/panel_outbox_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_outfit_edit.xml b/indra/newview/skins/default/xui/tr/panel_outfit_edit.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/tr/panel_outfits_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_outfits_inventory_gear_default.xml b/indra/newview/skins/default/xui/tr/panel_outfits_inventory_gear_default.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_outfits_list.xml b/indra/newview/skins/default/xui/tr/panel_outfits_list.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_outfits_wearing.xml b/indra/newview/skins/default/xui/tr/panel_outfits_wearing.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_people.xml b/indra/newview/skins/default/xui/tr/panel_people.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_pick_info.xml b/indra/newview/skins/default/xui/tr/panel_pick_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_picks.xml b/indra/newview/skins/default/xui/tr/panel_picks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_place_profile.xml b/indra/newview/skins/default/xui/tr/panel_place_profile.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_places.xml b/indra/newview/skins/default/xui/tr/panel_places.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_postcard_message.xml b/indra/newview/skins/default/xui/tr/panel_postcard_message.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_postcard_settings.xml b/indra/newview/skins/default/xui/tr/panel_postcard_settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/tr/panel_preferences_advanced.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_preferences_alerts.xml b/indra/newview/skins/default/xui/tr/panel_preferences_alerts.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_preferences_chat.xml b/indra/newview/skins/default/xui/tr/panel_preferences_chat.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_preferences_colors.xml b/indra/newview/skins/default/xui/tr/panel_preferences_colors.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_preferences_general.xml b/indra/newview/skins/default/xui/tr/panel_preferences_general.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/tr/panel_preferences_graphics1.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_preferences_move.xml b/indra/newview/skins/default/xui/tr/panel_preferences_move.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/tr/panel_preferences_privacy.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_preferences_setup.xml b/indra/newview/skins/default/xui/tr/panel_preferences_setup.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_preferences_sound.xml b/indra/newview/skins/default/xui/tr/panel_preferences_sound.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_prim_media_controls.xml b/indra/newview/skins/default/xui/tr/panel_prim_media_controls.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_region_covenant.xml b/indra/newview/skins/default/xui/tr/panel_region_covenant.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_region_debug.xml b/indra/newview/skins/default/xui/tr/panel_region_debug.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_region_environment.xml b/indra/newview/skins/default/xui/tr/panel_region_environment.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_region_estate.xml b/indra/newview/skins/default/xui/tr/panel_region_estate.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_region_general.xml b/indra/newview/skins/default/xui/tr/panel_region_general.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_region_terrain.xml b/indra/newview/skins/default/xui/tr/panel_region_terrain.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_script_ed.xml b/indra/newview/skins/default/xui/tr/panel_script_ed.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_script_limits_my_avatar.xml b/indra/newview/skins/default/xui/tr/panel_script_limits_my_avatar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_script_limits_region_memory.xml b/indra/newview/skins/default/xui/tr/panel_script_limits_region_memory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_script_question_toast.xml b/indra/newview/skins/default/xui/tr/panel_script_question_toast.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_scrolling_param.xml b/indra/newview/skins/default/xui/tr/panel_scrolling_param.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_scrolling_param_base.xml b/indra/newview/skins/default/xui/tr/panel_scrolling_param_base.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_side_tray_tab_caption.xml b/indra/newview/skins/default/xui/tr/panel_side_tray_tab_caption.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_snapshot_inventory.xml b/indra/newview/skins/default/xui/tr/panel_snapshot_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_snapshot_local.xml b/indra/newview/skins/default/xui/tr/panel_snapshot_local.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_snapshot_options.xml b/indra/newview/skins/default/xui/tr/panel_snapshot_options.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_snapshot_postcard.xml b/indra/newview/skins/default/xui/tr/panel_snapshot_postcard.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_snapshot_profile.xml b/indra/newview/skins/default/xui/tr/panel_snapshot_profile.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_sound_devices.xml b/indra/newview/skins/default/xui/tr/panel_sound_devices.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_stand_stop_flying.xml b/indra/newview/skins/default/xui/tr/panel_stand_stop_flying.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_status_bar.xml b/indra/newview/skins/default/xui/tr/panel_status_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_teleport_history.xml b/indra/newview/skins/default/xui/tr/panel_teleport_history.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_teleport_history_item.xml b/indra/newview/skins/default/xui/tr/panel_teleport_history_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_voice_effect.xml b/indra/newview/skins/default/xui/tr/panel_voice_effect.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_volume_pulldown.xml b/indra/newview/skins/default/xui/tr/panel_volume_pulldown.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/panel_world_map.xml b/indra/newview/skins/default/xui/tr/panel_world_map.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/role_actions.xml b/indra/newview/skins/default/xui/tr/role_actions.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/sidepanel_appearance.xml b/indra/newview/skins/default/xui/tr/sidepanel_appearance.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/sidepanel_inventory.xml b/indra/newview/skins/default/xui/tr/sidepanel_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/sidepanel_item_info.xml b/indra/newview/skins/default/xui/tr/sidepanel_item_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/sidepanel_task_info.xml b/indra/newview/skins/default/xui/tr/sidepanel_task_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/strings.xml b/indra/newview/skins/default/xui/tr/strings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/tr/teleport_strings.xml b/indra/newview/skins/default/xui/tr/teleport_strings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_aaa.xml b/indra/newview/skins/default/xui/zh/floater_aaa.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_about.xml b/indra/newview/skins/default/xui/zh/floater_about.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_about_land.xml b/indra/newview/skins/default/xui/zh/floater_about_land.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_activeim.xml b/indra/newview/skins/default/xui/zh/floater_activeim.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_animation_anim_preview.xml b/indra/newview/skins/default/xui/zh/floater_animation_anim_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_animation_bvh_preview.xml b/indra/newview/skins/default/xui/zh/floater_animation_bvh_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_auction.xml b/indra/newview/skins/default/xui/zh/floater_auction.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_autoreplace.xml b/indra/newview/skins/default/xui/zh/floater_autoreplace.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_avatar.xml b/indra/newview/skins/default/xui/zh/floater_avatar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_avatar_picker.xml b/indra/newview/skins/default/xui/zh/floater_avatar_picker.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_avatar_textures.xml b/indra/newview/skins/default/xui/zh/floater_avatar_textures.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_beacons.xml b/indra/newview/skins/default/xui/zh/floater_beacons.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_build_options.xml b/indra/newview/skins/default/xui/zh/floater_build_options.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_bulk_perms.xml b/indra/newview/skins/default/xui/zh/floater_bulk_perms.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_bumps.xml b/indra/newview/skins/default/xui/zh/floater_bumps.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_buy_contents.xml b/indra/newview/skins/default/xui/zh/floater_buy_contents.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_buy_currency.xml b/indra/newview/skins/default/xui/zh/floater_buy_currency.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_buy_currency_html.xml b/indra/newview/skins/default/xui/zh/floater_buy_currency_html.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_buy_land.xml b/indra/newview/skins/default/xui/zh/floater_buy_land.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_buy_object.xml b/indra/newview/skins/default/xui/zh/floater_buy_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_camera.xml b/indra/newview/skins/default/xui/zh/floater_camera.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_chat_bar.xml b/indra/newview/skins/default/xui/zh/floater_chat_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_choose_group.xml b/indra/newview/skins/default/xui/zh/floater_choose_group.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_color_picker.xml b/indra/newview/skins/default/xui/zh/floater_color_picker.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_critical.xml b/indra/newview/skins/default/xui/zh/floater_critical.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_delete_env_preset.xml b/indra/newview/skins/default/xui/zh/floater_delete_env_preset.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_destinations.xml b/indra/newview/skins/default/xui/zh/floater_destinations.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_display_name.xml b/indra/newview/skins/default/xui/zh/floater_display_name.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_edit_day_cycle.xml b/indra/newview/skins/default/xui/zh/floater_edit_day_cycle.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_edit_sky_preset.xml b/indra/newview/skins/default/xui/zh/floater_edit_sky_preset.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_edit_water_preset.xml b/indra/newview/skins/default/xui/zh/floater_edit_water_preset.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_environment_settings.xml b/indra/newview/skins/default/xui/zh/floater_environment_settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_event.xml b/indra/newview/skins/default/xui/zh/floater_event.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_fast_timers.xml b/indra/newview/skins/default/xui/zh/floater_fast_timers.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_font_test.xml b/indra/newview/skins/default/xui/zh/floater_font_test.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_gesture.xml b/indra/newview/skins/default/xui/zh/floater_gesture.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_god_tools.xml b/indra/newview/skins/default/xui/zh/floater_god_tools.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_hardware_settings.xml b/indra/newview/skins/default/xui/zh/floater_hardware_settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_help_browser.xml b/indra/newview/skins/default/xui/zh/floater_help_browser.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_how_to.xml b/indra/newview/skins/default/xui/zh/floater_how_to.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_hud.xml b/indra/newview/skins/default/xui/zh/floater_hud.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_im_container.xml b/indra/newview/skins/default/xui/zh/floater_im_container.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_im_session.xml b/indra/newview/skins/default/xui/zh/floater_im_session.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_image_preview.xml b/indra/newview/skins/default/xui/zh/floater_image_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_import_collada.xml b/indra/newview/skins/default/xui/zh/floater_import_collada.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_incoming_call.xml b/indra/newview/skins/default/xui/zh/floater_incoming_call.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_inspect.xml b/indra/newview/skins/default/xui/zh/floater_inspect.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/zh/floater_inventory_item_properties.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/zh/floater_inventory_view_finder.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_joystick.xml b/indra/newview/skins/default/xui/zh/floater_joystick.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_lagmeter.xml b/indra/newview/skins/default/xui/zh/floater_lagmeter.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_land_holdings.xml b/indra/newview/skins/default/xui/zh/floater_land_holdings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/zh/floater_live_lsleditor.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_lsl_guide.xml b/indra/newview/skins/default/xui/zh/floater_lsl_guide.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_map.xml b/indra/newview/skins/default/xui/zh/floater_map.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_media_browser.xml b/indra/newview/skins/default/xui/zh/floater_media_browser.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_media_settings.xml b/indra/newview/skins/default/xui/zh/floater_media_settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_mem_leaking.xml b/indra/newview/skins/default/xui/zh/floater_mem_leaking.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_merchant_outbox.xml b/indra/newview/skins/default/xui/zh/floater_merchant_outbox.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_model_preview.xml b/indra/newview/skins/default/xui/zh/floater_model_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_moveview.xml b/indra/newview/skins/default/xui/zh/floater_moveview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_mute_object.xml b/indra/newview/skins/default/xui/zh/floater_mute_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_my_appearance.xml b/indra/newview/skins/default/xui/zh/floater_my_appearance.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_my_inventory.xml b/indra/newview/skins/default/xui/zh/floater_my_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_notification.xml b/indra/newview/skins/default/xui/zh/floater_notification.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_notifications_console.xml b/indra/newview/skins/default/xui/zh/floater_notifications_console.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_object_weights.xml b/indra/newview/skins/default/xui/zh/floater_object_weights.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_openobject.xml b/indra/newview/skins/default/xui/zh/floater_openobject.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_outfit_save_as.xml b/indra/newview/skins/default/xui/zh/floater_outfit_save_as.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_outgoing_call.xml b/indra/newview/skins/default/xui/zh/floater_outgoing_call.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_pathfinding_characters.xml b/indra/newview/skins/default/xui/zh/floater_pathfinding_characters.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_pathfinding_console.xml b/indra/newview/skins/default/xui/zh/floater_pathfinding_console.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_pathfinding_linksets.xml b/indra/newview/skins/default/xui/zh/floater_pathfinding_linksets.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_pay.xml b/indra/newview/skins/default/xui/zh/floater_pay.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_pay_object.xml b/indra/newview/skins/default/xui/zh/floater_pay_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_people.xml b/indra/newview/skins/default/xui/zh/floater_people.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_perm_prefs.xml b/indra/newview/skins/default/xui/zh/floater_perm_prefs.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_picks.xml b/indra/newview/skins/default/xui/zh/floater_picks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_places.xml b/indra/newview/skins/default/xui/zh/floater_places.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_post_process.xml b/indra/newview/skins/default/xui/zh/floater_post_process.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_preferences.xml b/indra/newview/skins/default/xui/zh/floater_preferences.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_preferences_proxy.xml b/indra/newview/skins/default/xui/zh/floater_preferences_proxy.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_preview_animation.xml b/indra/newview/skins/default/xui/zh/floater_preview_animation.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_preview_gesture.xml b/indra/newview/skins/default/xui/zh/floater_preview_gesture.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_preview_notecard.xml b/indra/newview/skins/default/xui/zh/floater_preview_notecard.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_preview_sound.xml b/indra/newview/skins/default/xui/zh/floater_preview_sound.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_preview_texture.xml b/indra/newview/skins/default/xui/zh/floater_preview_texture.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_price_for_listing.xml b/indra/newview/skins/default/xui/zh/floater_price_for_listing.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_publish_classified.xml b/indra/newview/skins/default/xui/zh/floater_publish_classified.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_region_debug_console.xml b/indra/newview/skins/default/xui/zh/floater_region_debug_console.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_region_info.xml b/indra/newview/skins/default/xui/zh/floater_region_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_report_abuse.xml b/indra/newview/skins/default/xui/zh/floater_report_abuse.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_script_debug.xml b/indra/newview/skins/default/xui/zh/floater_script_debug.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_script_debug_panel.xml b/indra/newview/skins/default/xui/zh/floater_script_debug_panel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_script_limits.xml b/indra/newview/skins/default/xui/zh/floater_script_limits.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_script_preview.xml b/indra/newview/skins/default/xui/zh/floater_script_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_script_queue.xml b/indra/newview/skins/default/xui/zh/floater_script_queue.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_script_search.xml b/indra/newview/skins/default/xui/zh/floater_script_search.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_search.xml b/indra/newview/skins/default/xui/zh/floater_search.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_select_key.xml b/indra/newview/skins/default/xui/zh/floater_select_key.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_sell_land.xml b/indra/newview/skins/default/xui/zh/floater_sell_land.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_settings_debug.xml b/indra/newview/skins/default/xui/zh/floater_settings_debug.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_snapshot.xml b/indra/newview/skins/default/xui/zh/floater_snapshot.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_sound_devices.xml b/indra/newview/skins/default/xui/zh/floater_sound_devices.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_sound_preview.xml b/indra/newview/skins/default/xui/zh/floater_sound_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_spellcheck.xml b/indra/newview/skins/default/xui/zh/floater_spellcheck.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_spellcheck_import.xml b/indra/newview/skins/default/xui/zh/floater_spellcheck_import.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_stats.xml b/indra/newview/skins/default/xui/zh/floater_stats.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_sys_well.xml b/indra/newview/skins/default/xui/zh/floater_sys_well.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_telehub.xml b/indra/newview/skins/default/xui/zh/floater_telehub.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_test_layout_stacks.xml b/indra/newview/skins/default/xui/zh/floater_test_layout_stacks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_test_text_vertical_aligment.xml b/indra/newview/skins/default/xui/zh/floater_test_text_vertical_aligment.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/zh/floater_texture_ctrl.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_texture_fetch_debugger.xml b/indra/newview/skins/default/xui/zh/floater_texture_fetch_debugger.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_tools.xml b/indra/newview/skins/default/xui/zh/floater_tools.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_top_objects.xml b/indra/newview/skins/default/xui/zh/floater_top_objects.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_tos.xml b/indra/newview/skins/default/xui/zh/floater_tos.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_toybox.xml b/indra/newview/skins/default/xui/zh/floater_toybox.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_translation_settings.xml b/indra/newview/skins/default/xui/zh/floater_translation_settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_url_entry.xml b/indra/newview/skins/default/xui/zh/floater_url_entry.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_voice_controls.xml b/indra/newview/skins/default/xui/zh/floater_voice_controls.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_voice_effect.xml b/indra/newview/skins/default/xui/zh/floater_voice_effect.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_web_content.xml b/indra/newview/skins/default/xui/zh/floater_web_content.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_whitelist_entry.xml b/indra/newview/skins/default/xui/zh/floater_whitelist_entry.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_window_size.xml b/indra/newview/skins/default/xui/zh/floater_window_size.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/floater_world_map.xml b/indra/newview/skins/default/xui/zh/floater_world_map.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/inspect_avatar.xml b/indra/newview/skins/default/xui/zh/inspect_avatar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/inspect_group.xml b/indra/newview/skins/default/xui/zh/inspect_group.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/inspect_object.xml b/indra/newview/skins/default/xui/zh/inspect_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/inspect_remote_object.xml b/indra/newview/skins/default/xui/zh/inspect_remote_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_add_wearable_gear.xml b/indra/newview/skins/default/xui/zh/menu_add_wearable_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_attachment_other.xml b/indra/newview/skins/default/xui/zh/menu_attachment_other.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_attachment_self.xml b/indra/newview/skins/default/xui/zh/menu_attachment_self.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_avatar_icon.xml b/indra/newview/skins/default/xui/zh/menu_avatar_icon.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_avatar_other.xml b/indra/newview/skins/default/xui/zh/menu_avatar_other.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_avatar_self.xml b/indra/newview/skins/default/xui/zh/menu_avatar_self.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_cof_attachment.xml b/indra/newview/skins/default/xui/zh/menu_cof_attachment.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_cof_body_part.xml b/indra/newview/skins/default/xui/zh/menu_cof_body_part.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_cof_clothing.xml b/indra/newview/skins/default/xui/zh/menu_cof_clothing.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_cof_gear.xml b/indra/newview/skins/default/xui/zh/menu_cof_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_edit.xml b/indra/newview/skins/default/xui/zh/menu_edit.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_favorites.xml b/indra/newview/skins/default/xui/zh/menu_favorites.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_gesture_gear.xml b/indra/newview/skins/default/xui/zh/menu_gesture_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_group_plus.xml b/indra/newview/skins/default/xui/zh/menu_group_plus.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_hide_navbar.xml b/indra/newview/skins/default/xui/zh/menu_hide_navbar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_imchiclet_adhoc.xml b/indra/newview/skins/default/xui/zh/menu_imchiclet_adhoc.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_imchiclet_group.xml b/indra/newview/skins/default/xui/zh/menu_imchiclet_group.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_imchiclet_p2p.xml b/indra/newview/skins/default/xui/zh/menu_imchiclet_p2p.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/zh/menu_inspect_avatar_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_inspect_object_gear.xml b/indra/newview/skins/default/xui/zh/menu_inspect_object_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_inspect_self_gear.xml b/indra/newview/skins/default/xui/zh/menu_inspect_self_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_inv_offer_chiclet.xml b/indra/newview/skins/default/xui/zh/menu_inv_offer_chiclet.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_inventory.xml b/indra/newview/skins/default/xui/zh/menu_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_inventory_add.xml b/indra/newview/skins/default/xui/zh/menu_inventory_add.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/zh/menu_inventory_gear_default.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_land.xml b/indra/newview/skins/default/xui/zh/menu_land.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_landmark.xml b/indra/newview/skins/default/xui/zh/menu_landmark.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_login.xml b/indra/newview/skins/default/xui/zh/menu_login.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_media_ctrl.xml b/indra/newview/skins/default/xui/zh/menu_media_ctrl.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_mini_map.xml b/indra/newview/skins/default/xui/zh/menu_mini_map.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_model_import_gear_default.xml b/indra/newview/skins/default/xui/zh/menu_model_import_gear_default.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_navbar.xml b/indra/newview/skins/default/xui/zh/menu_navbar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_nearby_chat.xml b/indra/newview/skins/default/xui/zh/menu_nearby_chat.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_notification_well_button.xml b/indra/newview/skins/default/xui/zh/menu_notification_well_button.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_object.xml b/indra/newview/skins/default/xui/zh/menu_object.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_object_icon.xml b/indra/newview/skins/default/xui/zh/menu_object_icon.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_outfit_gear.xml b/indra/newview/skins/default/xui/zh/menu_outfit_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_outfit_tab.xml b/indra/newview/skins/default/xui/zh/menu_outfit_tab.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_participant_list.xml b/indra/newview/skins/default/xui/zh/menu_participant_list.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_people_friends_view_sort.xml b/indra/newview/skins/default/xui/zh/menu_people_friends_view_sort.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_people_groups.xml b/indra/newview/skins/default/xui/zh/menu_people_groups.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_people_groups_view_sort.xml b/indra/newview/skins/default/xui/zh/menu_people_groups_view_sort.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_people_nearby.xml b/indra/newview/skins/default/xui/zh/menu_people_nearby.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/zh/menu_people_nearby_multiselect.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_people_nearby_view_sort.xml b/indra/newview/skins/default/xui/zh/menu_people_nearby_view_sort.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_people_recent_view_sort.xml b/indra/newview/skins/default/xui/zh/menu_people_recent_view_sort.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_picks.xml b/indra/newview/skins/default/xui/zh/menu_picks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_picks_plus.xml b/indra/newview/skins/default/xui/zh/menu_picks_plus.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_place.xml b/indra/newview/skins/default/xui/zh/menu_place.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_place_add_button.xml b/indra/newview/skins/default/xui/zh/menu_place_add_button.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_places_gear_folder.xml b/indra/newview/skins/default/xui/zh/menu_places_gear_folder.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_places_gear_landmark.xml b/indra/newview/skins/default/xui/zh/menu_places_gear_landmark.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_profile_overflow.xml b/indra/newview/skins/default/xui/zh/menu_profile_overflow.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_save_outfit.xml b/indra/newview/skins/default/xui/zh/menu_save_outfit.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_script_chiclet.xml b/indra/newview/skins/default/xui/zh/menu_script_chiclet.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_slurl.xml b/indra/newview/skins/default/xui/zh/menu_slurl.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_teleport_history_gear.xml b/indra/newview/skins/default/xui/zh/menu_teleport_history_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_teleport_history_item.xml b/indra/newview/skins/default/xui/zh/menu_teleport_history_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_teleport_history_tab.xml b/indra/newview/skins/default/xui/zh/menu_teleport_history_tab.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_text_editor.xml b/indra/newview/skins/default/xui/zh/menu_text_editor.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_toolbars.xml b/indra/newview/skins/default/xui/zh/menu_toolbars.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_topinfobar.xml b/indra/newview/skins/default/xui/zh/menu_topinfobar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_url_agent.xml b/indra/newview/skins/default/xui/zh/menu_url_agent.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_url_group.xml b/indra/newview/skins/default/xui/zh/menu_url_group.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_url_http.xml b/indra/newview/skins/default/xui/zh/menu_url_http.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_url_inventory.xml b/indra/newview/skins/default/xui/zh/menu_url_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_url_map.xml b/indra/newview/skins/default/xui/zh/menu_url_map.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_url_objectim.xml b/indra/newview/skins/default/xui/zh/menu_url_objectim.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_url_parcel.xml b/indra/newview/skins/default/xui/zh/menu_url_parcel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_url_slapp.xml b/indra/newview/skins/default/xui/zh/menu_url_slapp.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_url_slurl.xml b/indra/newview/skins/default/xui/zh/menu_url_slurl.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_url_teleport.xml b/indra/newview/skins/default/xui/zh/menu_url_teleport.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_viewer.xml b/indra/newview/skins/default/xui/zh/menu_viewer.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_wearable_list_item.xml b/indra/newview/skins/default/xui/zh/menu_wearable_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_wearing_gear.xml b/indra/newview/skins/default/xui/zh/menu_wearing_gear.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/menu_wearing_tab.xml b/indra/newview/skins/default/xui/zh/menu_wearing_tab.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/mime_types.xml b/indra/newview/skins/default/xui/zh/mime_types.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/mime_types_linux.xml b/indra/newview/skins/default/xui/zh/mime_types_linux.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/mime_types_mac.xml b/indra/newview/skins/default/xui/zh/mime_types_mac.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/notifications.xml b/indra/newview/skins/default/xui/zh/notifications.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_active_object_row.xml b/indra/newview/skins/default/xui/zh/panel_active_object_row.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_adhoc_control_panel.xml b/indra/newview/skins/default/xui/zh/panel_adhoc_control_panel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/zh/panel_avatar_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_avatar_tag.xml b/indra/newview/skins/default/xui/zh/panel_avatar_tag.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/zh/panel_block_list_sidetray.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_body_parts_list_item.xml b/indra/newview/skins/default/xui/zh/panel_body_parts_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_bodyparts_list_button_bar.xml b/indra/newview/skins/default/xui/zh/panel_bodyparts_list_button_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_bottomtray_lite.xml b/indra/newview/skins/default/xui/zh/panel_bottomtray_lite.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_chat_header.xml b/indra/newview/skins/default/xui/zh/panel_chat_header.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_chiclet_bar.xml b/indra/newview/skins/default/xui/zh/panel_chiclet_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_classified_info.xml b/indra/newview/skins/default/xui/zh/panel_classified_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_clothing_list_button_bar.xml b/indra/newview/skins/default/xui/zh/panel_clothing_list_button_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_clothing_list_item.xml b/indra/newview/skins/default/xui/zh/panel_clothing_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_cof_wearables.xml b/indra/newview/skins/default/xui/zh/panel_cof_wearables.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_deletable_wearable_list_item.xml b/indra/newview/skins/default/xui/zh/panel_deletable_wearable_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_dummy_clothing_list_item.xml b/indra/newview/skins/default/xui/zh/panel_dummy_clothing_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_edit_alpha.xml b/indra/newview/skins/default/xui/zh/panel_edit_alpha.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_edit_classified.xml b/indra/newview/skins/default/xui/zh/panel_edit_classified.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_edit_eyes.xml b/indra/newview/skins/default/xui/zh/panel_edit_eyes.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_edit_gloves.xml b/indra/newview/skins/default/xui/zh/panel_edit_gloves.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_edit_hair.xml b/indra/newview/skins/default/xui/zh/panel_edit_hair.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_edit_jacket.xml b/indra/newview/skins/default/xui/zh/panel_edit_jacket.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_edit_pants.xml b/indra/newview/skins/default/xui/zh/panel_edit_pants.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_edit_physics.xml b/indra/newview/skins/default/xui/zh/panel_edit_physics.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_edit_pick.xml b/indra/newview/skins/default/xui/zh/panel_edit_pick.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_edit_profile.xml b/indra/newview/skins/default/xui/zh/panel_edit_profile.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_edit_shape.xml b/indra/newview/skins/default/xui/zh/panel_edit_shape.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_edit_shirt.xml b/indra/newview/skins/default/xui/zh/panel_edit_shirt.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_edit_shoes.xml b/indra/newview/skins/default/xui/zh/panel_edit_shoes.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_edit_skin.xml b/indra/newview/skins/default/xui/zh/panel_edit_skin.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_edit_skirt.xml b/indra/newview/skins/default/xui/zh/panel_edit_skirt.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_edit_socks.xml b/indra/newview/skins/default/xui/zh/panel_edit_socks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/zh/panel_edit_tattoo.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_edit_underpants.xml b/indra/newview/skins/default/xui/zh/panel_edit_underpants.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_edit_undershirt.xml b/indra/newview/skins/default/xui/zh/panel_edit_undershirt.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_edit_wearable.xml b/indra/newview/skins/default/xui/zh/panel_edit_wearable.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_group_control_panel.xml b/indra/newview/skins/default/xui/zh/panel_group_control_panel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_group_general.xml b/indra/newview/skins/default/xui/zh/panel_group_general.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/zh/panel_group_info_sidetray.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_group_invite.xml b/indra/newview/skins/default/xui/zh/panel_group_invite.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_group_land_money.xml b/indra/newview/skins/default/xui/zh/panel_group_land_money.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_group_list_item.xml b/indra/newview/skins/default/xui/zh/panel_group_list_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_group_notices.xml b/indra/newview/skins/default/xui/zh/panel_group_notices.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_group_notify.xml b/indra/newview/skins/default/xui/zh/panel_group_notify.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_group_roles.xml b/indra/newview/skins/default/xui/zh/panel_group_roles.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_im_control_panel.xml b/indra/newview/skins/default/xui/zh/panel_im_control_panel.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_instant_message.xml b/indra/newview/skins/default/xui/zh/panel_instant_message.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_inventory_item.xml b/indra/newview/skins/default/xui/zh/panel_inventory_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_landmark_info.xml b/indra/newview/skins/default/xui/zh/panel_landmark_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_landmarks.xml b/indra/newview/skins/default/xui/zh/panel_landmarks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_login.xml b/indra/newview/skins/default/xui/zh/panel_login.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_main_inventory.xml b/indra/newview/skins/default/xui/zh/panel_main_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_me.xml b/indra/newview/skins/default/xui/zh/panel_me.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_media_settings_general.xml b/indra/newview/skins/default/xui/zh/panel_media_settings_general.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_media_settings_permissions.xml b/indra/newview/skins/default/xui/zh/panel_media_settings_permissions.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_media_settings_security.xml b/indra/newview/skins/default/xui/zh/panel_media_settings_security.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_navigation_bar.xml b/indra/newview/skins/default/xui/zh/panel_navigation_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_navmesh_rebake.xml b/indra/newview/skins/default/xui/zh/panel_navmesh_rebake.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_nearby_chat.xml b/indra/newview/skins/default/xui/zh/panel_nearby_chat.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/zh/panel_nearby_chat_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_nearby_media.xml b/indra/newview/skins/default/xui/zh/panel_nearby_media.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_notify_textbox.xml b/indra/newview/skins/default/xui/zh/panel_notify_textbox.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_online_status_toast.xml b/indra/newview/skins/default/xui/zh/panel_online_status_toast.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_outbox_inventory.xml b/indra/newview/skins/default/xui/zh/panel_outbox_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_outfit_edit.xml b/indra/newview/skins/default/xui/zh/panel_outfit_edit.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/zh/panel_outfits_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_outfits_inventory_gear_default.xml b/indra/newview/skins/default/xui/zh/panel_outfits_inventory_gear_default.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_outfits_list.xml b/indra/newview/skins/default/xui/zh/panel_outfits_list.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_outfits_wearing.xml b/indra/newview/skins/default/xui/zh/panel_outfits_wearing.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_people.xml b/indra/newview/skins/default/xui/zh/panel_people.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_pick_info.xml b/indra/newview/skins/default/xui/zh/panel_pick_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_picks.xml b/indra/newview/skins/default/xui/zh/panel_picks.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_place_profile.xml b/indra/newview/skins/default/xui/zh/panel_place_profile.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_places.xml b/indra/newview/skins/default/xui/zh/panel_places.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_postcard_message.xml b/indra/newview/skins/default/xui/zh/panel_postcard_message.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_postcard_settings.xml b/indra/newview/skins/default/xui/zh/panel_postcard_settings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/zh/panel_preferences_advanced.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_preferences_alerts.xml b/indra/newview/skins/default/xui/zh/panel_preferences_alerts.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_preferences_chat.xml b/indra/newview/skins/default/xui/zh/panel_preferences_chat.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_preferences_colors.xml b/indra/newview/skins/default/xui/zh/panel_preferences_colors.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_preferences_general.xml b/indra/newview/skins/default/xui/zh/panel_preferences_general.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/zh/panel_preferences_graphics1.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_preferences_move.xml b/indra/newview/skins/default/xui/zh/panel_preferences_move.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/zh/panel_preferences_privacy.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_preferences_setup.xml b/indra/newview/skins/default/xui/zh/panel_preferences_setup.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_preferences_sound.xml b/indra/newview/skins/default/xui/zh/panel_preferences_sound.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_prim_media_controls.xml b/indra/newview/skins/default/xui/zh/panel_prim_media_controls.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_region_covenant.xml b/indra/newview/skins/default/xui/zh/panel_region_covenant.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_region_debug.xml b/indra/newview/skins/default/xui/zh/panel_region_debug.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_region_environment.xml b/indra/newview/skins/default/xui/zh/panel_region_environment.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_region_estate.xml b/indra/newview/skins/default/xui/zh/panel_region_estate.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_region_general.xml b/indra/newview/skins/default/xui/zh/panel_region_general.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_region_terrain.xml b/indra/newview/skins/default/xui/zh/panel_region_terrain.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_script_ed.xml b/indra/newview/skins/default/xui/zh/panel_script_ed.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_script_limits_my_avatar.xml b/indra/newview/skins/default/xui/zh/panel_script_limits_my_avatar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_script_limits_region_memory.xml b/indra/newview/skins/default/xui/zh/panel_script_limits_region_memory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_script_question_toast.xml b/indra/newview/skins/default/xui/zh/panel_script_question_toast.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_scrolling_param.xml b/indra/newview/skins/default/xui/zh/panel_scrolling_param.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_scrolling_param_base.xml b/indra/newview/skins/default/xui/zh/panel_scrolling_param_base.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_side_tray_tab_caption.xml b/indra/newview/skins/default/xui/zh/panel_side_tray_tab_caption.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_snapshot_inventory.xml b/indra/newview/skins/default/xui/zh/panel_snapshot_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_snapshot_local.xml b/indra/newview/skins/default/xui/zh/panel_snapshot_local.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_snapshot_options.xml b/indra/newview/skins/default/xui/zh/panel_snapshot_options.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_snapshot_postcard.xml b/indra/newview/skins/default/xui/zh/panel_snapshot_postcard.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_snapshot_profile.xml b/indra/newview/skins/default/xui/zh/panel_snapshot_profile.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_sound_devices.xml b/indra/newview/skins/default/xui/zh/panel_sound_devices.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_stand_stop_flying.xml b/indra/newview/skins/default/xui/zh/panel_stand_stop_flying.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_status_bar.xml b/indra/newview/skins/default/xui/zh/panel_status_bar.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_teleport_history.xml b/indra/newview/skins/default/xui/zh/panel_teleport_history.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_teleport_history_item.xml b/indra/newview/skins/default/xui/zh/panel_teleport_history_item.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_voice_effect.xml b/indra/newview/skins/default/xui/zh/panel_voice_effect.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_volume_pulldown.xml b/indra/newview/skins/default/xui/zh/panel_volume_pulldown.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/panel_world_map.xml b/indra/newview/skins/default/xui/zh/panel_world_map.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/role_actions.xml b/indra/newview/skins/default/xui/zh/role_actions.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/sidepanel_appearance.xml b/indra/newview/skins/default/xui/zh/sidepanel_appearance.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/sidepanel_inventory.xml b/indra/newview/skins/default/xui/zh/sidepanel_inventory.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/sidepanel_item_info.xml b/indra/newview/skins/default/xui/zh/sidepanel_item_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/sidepanel_task_info.xml b/indra/newview/skins/default/xui/zh/sidepanel_task_info.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/strings.xml b/indra/newview/skins/default/xui/zh/strings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/zh/teleport_strings.xml b/indra/newview/skins/default/xui/zh/teleport_strings.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/tests/gpus_results.txt b/indra/newview/tests/gpus_results.txt
old mode 100644
new mode 100755
diff --git a/indra/newview/tests/gpus_seen.txt b/indra/newview/tests/gpus_seen.txt
old mode 100644
new mode 100755
diff --git a/indra/newview/tests/llagentaccess_test.cpp b/indra/newview/tests/llagentaccess_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/tests/llcapabilitylistener_test.cpp b/indra/newview/tests/llcapabilitylistener_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/tests/lldateutil_test.cpp b/indra/newview/tests/lldateutil_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/tests/lldir_stub.cpp b/indra/newview/tests/lldir_stub.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/tests/llglslshader_stub.cpp b/indra/newview/tests/llglslshader_stub.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/tests/lllogininstance_test.cpp b/indra/newview/tests/lllogininstance_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/tests/llmediadataclient_test.cpp b/indra/newview/tests/llmediadataclient_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/tests/llpipeline_stub.cpp b/indra/newview/tests/llpipeline_stub.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/tests/llremoteparcelrequest_test.cpp b/indra/newview/tests/llremoteparcelrequest_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/tests/llsecapi_test.cpp b/indra/newview/tests/llsecapi_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/tests/llsechandler_basic_test.cpp b/indra/newview/tests/llsechandler_basic_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/tests/llsimplestat_test.cpp b/indra/newview/tests/llsimplestat_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/tests/llsky_stub.cpp b/indra/newview/tests/llsky_stub.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/tests/llslurl_test.cpp b/indra/newview/tests/llslurl_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/tests/lltextureinfo_test.cpp b/indra/newview/tests/lltextureinfo_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/tests/lltextureinfodetails_test.cpp b/indra/newview/tests/lltextureinfodetails_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/tests/lltexturestatsuploader_test.cpp b/indra/newview/tests/lltexturestatsuploader_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/tests/lltranslate_test.cpp b/indra/newview/tests/lltranslate_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/tests/llversioninfo_test.cpp b/indra/newview/tests/llversioninfo_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/tests/llviewerassetstats_test.cpp b/indra/newview/tests/llviewerassetstats_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/tests/llviewerhelputil_test.cpp b/indra/newview/tests/llviewerhelputil_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/tests/llviewernetwork_test.cpp b/indra/newview/tests/llviewernetwork_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/tests/llviewershadermgr_stub.cpp b/indra/newview/tests/llviewershadermgr_stub.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/tests/llwlanimator_stub.cpp b/indra/newview/tests/llwlanimator_stub.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/tests/llwldaycycle_stub.cpp b/indra/newview/tests/llwldaycycle_stub.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/tests/llwlparammanager_test.cpp b/indra/newview/tests/llwlparammanager_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/tests/llwlparamset_stub.cpp b/indra/newview/tests/llwlparamset_stub.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/tests/llworldmap_test.cpp b/indra/newview/tests/llworldmap_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/tests/llworldmipmap_test.cpp b/indra/newview/tests/llworldmipmap_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/tests/llxmlrpclistener_test.cpp b/indra/newview/tests/llxmlrpclistener_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/tests/test_llxmlrpc_peer.py b/indra/newview/tests/test_llxmlrpc_peer.py
old mode 100644
new mode 100755
diff --git a/indra/newview/tr.lproj/language.txt b/indra/newview/tr.lproj/language.txt
old mode 100644
new mode 100755
diff --git a/indra/newview/uk.lproj/language.txt b/indra/newview/uk.lproj/language.txt
old mode 100644
new mode 100755
diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py
old mode 100644
new mode 100755
diff --git a/indra/newview/zh-Hans.lproj/language.txt b/indra/newview/zh-Hans.lproj/language.txt
old mode 100644
new mode 100755
diff --git a/indra/test/CMakeLists.txt b/indra/test/CMakeLists.txt
old mode 100644
new mode 100755
diff --git a/indra/test/blowfish.1.bin b/indra/test/blowfish.1.bin
old mode 100644
new mode 100755
diff --git a/indra/test/blowfish.2.bin b/indra/test/blowfish.2.bin
old mode 100644
new mode 100755
diff --git a/indra/test/blowfish.digits.txt b/indra/test/blowfish.digits.txt
old mode 100644
new mode 100755
diff --git a/indra/test/catch_and_store_what_in.h b/indra/test/catch_and_store_what_in.h
old mode 100644
new mode 100755
diff --git a/indra/test/debug.h b/indra/test/debug.h
old mode 100644
new mode 100755
diff --git a/indra/test/io.cpp b/indra/test/io.cpp
old mode 100644
new mode 100755
diff --git a/indra/test/llapp_tut.cpp b/indra/test/llapp_tut.cpp
old mode 100644
new mode 100755
diff --git a/indra/test/llassetuploadqueue_tut.cpp b/indra/test/llassetuploadqueue_tut.cpp
old mode 100644
new mode 100755
diff --git a/indra/test/llblowfish_tut.cpp b/indra/test/llblowfish_tut.cpp
old mode 100644
new mode 100755
diff --git a/indra/test/llbuffer_tut.cpp b/indra/test/llbuffer_tut.cpp
old mode 100644
new mode 100755
diff --git a/indra/test/lldatapacker_tut.cpp b/indra/test/lldatapacker_tut.cpp
old mode 100644
new mode 100755
diff --git a/indra/test/lldoubledispatch_tut.cpp b/indra/test/lldoubledispatch_tut.cpp
old mode 100644
new mode 100755
diff --git a/indra/test/llevents_tut.cpp b/indra/test/llevents_tut.cpp
old mode 100644
new mode 100755
diff --git a/indra/test/llhttpdate_tut.cpp b/indra/test/llhttpdate_tut.cpp
old mode 100644
new mode 100755
diff --git a/indra/test/llhttpnode_tut.cpp b/indra/test/llhttpnode_tut.cpp
old mode 100644
new mode 100755
diff --git a/indra/test/lliohttpserver_tut.cpp b/indra/test/lliohttpserver_tut.cpp
old mode 100644
new mode 100755
diff --git a/indra/test/llmessageconfig_tut.cpp b/indra/test/llmessageconfig_tut.cpp
old mode 100644
new mode 100755
diff --git a/indra/test/llmessagetemplateparser_tut.cpp b/indra/test/llmessagetemplateparser_tut.cpp
old mode 100644
new mode 100755
diff --git a/indra/test/llpermissions_tut.cpp b/indra/test/llpermissions_tut.cpp
old mode 100644
new mode 100755
diff --git a/indra/test/llpipeutil.cpp b/indra/test/llpipeutil.cpp
old mode 100644
new mode 100755
diff --git a/indra/test/llpipeutil.h b/indra/test/llpipeutil.h
old mode 100644
new mode 100755
diff --git a/indra/test/llsaleinfo_tut.cpp b/indra/test/llsaleinfo_tut.cpp
old mode 100644
new mode 100755
diff --git a/indra/test/llscriptresource_tut.cpp b/indra/test/llscriptresource_tut.cpp
old mode 100644
new mode 100755
diff --git a/indra/test/llsd_new_tut.cpp b/indra/test/llsd_new_tut.cpp
old mode 100644
new mode 100755
diff --git a/indra/test/llsdmessagebuilder_tut.cpp b/indra/test/llsdmessagebuilder_tut.cpp
old mode 100644
new mode 100755
diff --git a/indra/test/llsdmessagereader_tut.cpp b/indra/test/llsdmessagereader_tut.cpp
old mode 100644
new mode 100755
diff --git a/indra/test/llsdtraits.h b/indra/test/llsdtraits.h
old mode 100644
new mode 100755
diff --git a/indra/test/llsdutil_tut.cpp b/indra/test/llsdutil_tut.cpp
old mode 100644
new mode 100755
diff --git a/indra/test/llservicebuilder_tut.cpp b/indra/test/llservicebuilder_tut.cpp
old mode 100644
new mode 100755
diff --git a/indra/test/llstreamtools_tut.cpp b/indra/test/llstreamtools_tut.cpp
old mode 100644
new mode 100755
diff --git a/indra/test/lltemplatemessagebuilder_tut.cpp b/indra/test/lltemplatemessagebuilder_tut.cpp
old mode 100644
new mode 100755
diff --git a/indra/test/lltimestampcache_tut.cpp b/indra/test/lltimestampcache_tut.cpp
old mode 100644
new mode 100755
diff --git a/indra/test/lltranscode_tut.cpp b/indra/test/lltranscode_tut.cpp
old mode 100644
new mode 100755
diff --git a/indra/test/lltut.cpp b/indra/test/lltut.cpp
old mode 100644
new mode 100755
diff --git a/indra/test/lltut.h b/indra/test/lltut.h
old mode 100644
new mode 100755
diff --git a/indra/test/lluserrelations_tut.cpp b/indra/test/lluserrelations_tut.cpp
old mode 100644
new mode 100755
diff --git a/indra/test/lluuidhashmap_tut.cpp b/indra/test/lluuidhashmap_tut.cpp
old mode 100644
new mode 100755
diff --git a/indra/test/llxorcipher_tut.cpp b/indra/test/llxorcipher_tut.cpp
old mode 100644
new mode 100755
diff --git a/indra/test/manageapr.h b/indra/test/manageapr.h
old mode 100644
new mode 100755
diff --git a/indra/test/message_tut.cpp b/indra/test/message_tut.cpp
old mode 100644
new mode 100755
diff --git a/indra/test/mock_http_client.cpp b/indra/test/mock_http_client.cpp
old mode 100644
new mode 100755
diff --git a/indra/test/mock_http_client.h b/indra/test/mock_http_client.h
old mode 100644
new mode 100755
diff --git a/indra/test/namedtempfile.h b/indra/test/namedtempfile.h
old mode 100644
new mode 100755
diff --git a/indra/test/prim_linkability_tut.cpp b/indra/test/prim_linkability_tut.cpp
old mode 100644
new mode 100755
diff --git a/indra/test/test.cpp b/indra/test/test.cpp
old mode 100644
new mode 100755
diff --git a/indra/test/test.h b/indra/test/test.h
old mode 100644
new mode 100755
diff --git a/indra/test/test_llmanifest.py b/indra/test/test_llmanifest.py
old mode 100644
new mode 100755
diff --git a/indra/test_apps/llplugintest/CMakeLists.txt b/indra/test_apps/llplugintest/CMakeLists.txt
old mode 100644
new mode 100755
diff --git a/indra/test_apps/llplugintest/bookmarks.txt b/indra/test_apps/llplugintest/bookmarks.txt
old mode 100644
new mode 100755
diff --git a/indra/test_apps/llplugintest/llmediaplugintest.cpp b/indra/test_apps/llplugintest/llmediaplugintest.cpp
old mode 100644
new mode 100755
diff --git a/indra/test_apps/llplugintest/llmediaplugintest.h b/indra/test_apps/llplugintest/llmediaplugintest.h
old mode 100644
new mode 100755
diff --git a/indra/tools/vstool/README.txt b/indra/tools/vstool/README.txt
old mode 100644
new mode 100755
diff --git a/indra/tools/vstool/VSTool.csproj b/indra/tools/vstool/VSTool.csproj
old mode 100644
new mode 100755
diff --git a/indra/tools/vstool/VSTool.sln b/indra/tools/vstool/VSTool.sln
old mode 100644
new mode 100755
diff --git a/indra/tools/vstool/main.cs b/indra/tools/vstool/main.cs
old mode 100644
new mode 100755
diff --git a/indra/viewer_components/CMakeLists.txt b/indra/viewer_components/CMakeLists.txt
old mode 100644
new mode 100755
diff --git a/indra/viewer_components/login/CMakeLists.txt b/indra/viewer_components/login/CMakeLists.txt
old mode 100644
new mode 100755
diff --git a/indra/viewer_components/login/lllogin.cpp b/indra/viewer_components/login/lllogin.cpp
old mode 100644
new mode 100755
diff --git a/indra/viewer_components/login/lllogin.h b/indra/viewer_components/login/lllogin.h
old mode 100644
new mode 100755
diff --git a/indra/viewer_components/login/tests/lllogin_test.cpp b/indra/viewer_components/login/tests/lllogin_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/viewer_components/updater/CMakeLists.txt b/indra/viewer_components/updater/CMakeLists.txt
old mode 100644
new mode 100755
diff --git a/indra/viewer_components/updater/llupdatechecker.cpp b/indra/viewer_components/updater/llupdatechecker.cpp
old mode 100644
new mode 100755
diff --git a/indra/viewer_components/updater/llupdatechecker.h b/indra/viewer_components/updater/llupdatechecker.h
old mode 100644
new mode 100755
diff --git a/indra/viewer_components/updater/llupdatedownloader.cpp b/indra/viewer_components/updater/llupdatedownloader.cpp
old mode 100644
new mode 100755
diff --git a/indra/viewer_components/updater/llupdatedownloader.h b/indra/viewer_components/updater/llupdatedownloader.h
old mode 100644
new mode 100755
diff --git a/indra/viewer_components/updater/llupdateinstaller.cpp b/indra/viewer_components/updater/llupdateinstaller.cpp
old mode 100644
new mode 100755
diff --git a/indra/viewer_components/updater/llupdateinstaller.h b/indra/viewer_components/updater/llupdateinstaller.h
old mode 100644
new mode 100755
diff --git a/indra/viewer_components/updater/llupdaterservice.cpp b/indra/viewer_components/updater/llupdaterservice.cpp
old mode 100644
new mode 100755
diff --git a/indra/viewer_components/updater/llupdaterservice.h b/indra/viewer_components/updater/llupdaterservice.h
old mode 100644
new mode 100755
diff --git a/indra/viewer_components/updater/scripts/darwin/update_install b/indra/viewer_components/updater/scripts/darwin/update_install
old mode 100644
new mode 100755
diff --git a/indra/viewer_components/updater/scripts/linux/update_install b/indra/viewer_components/updater/scripts/linux/update_install
old mode 100644
new mode 100755
diff --git a/indra/viewer_components/updater/tests/llupdaterservice_test.cpp b/indra/viewer_components/updater/tests/llupdaterservice_test.cpp
old mode 100644
new mode 100755
diff --git a/indra/win_crash_logger/CMakeLists.txt b/indra/win_crash_logger/CMakeLists.txt
old mode 100644
new mode 100755
diff --git a/indra/win_crash_logger/StdAfx.cpp b/indra/win_crash_logger/StdAfx.cpp
old mode 100644
new mode 100755
diff --git a/indra/win_crash_logger/StdAfx.h b/indra/win_crash_logger/StdAfx.h
old mode 100644
new mode 100755
diff --git a/indra/win_crash_logger/ll_icon.ico b/indra/win_crash_logger/ll_icon.ico
old mode 100644
new mode 100755
diff --git a/indra/win_crash_logger/llcrashloggerwindows.cpp b/indra/win_crash_logger/llcrashloggerwindows.cpp
old mode 100644
new mode 100755
diff --git a/indra/win_crash_logger/llcrashloggerwindows.h b/indra/win_crash_logger/llcrashloggerwindows.h
old mode 100644
new mode 100755
diff --git a/indra/win_crash_logger/resource.h b/indra/win_crash_logger/resource.h
old mode 100644
new mode 100755
diff --git a/indra/win_crash_logger/win_crash_logger.cpp b/indra/win_crash_logger/win_crash_logger.cpp
old mode 100644
new mode 100755
diff --git a/indra/win_crash_logger/win_crash_logger.h b/indra/win_crash_logger/win_crash_logger.h
old mode 100644
new mode 100755
diff --git a/indra/win_crash_logger/win_crash_logger.ico b/indra/win_crash_logger/win_crash_logger.ico
old mode 100644
new mode 100755
diff --git a/indra/win_crash_logger/win_crash_logger.rc b/indra/win_crash_logger/win_crash_logger.rc
old mode 100644
new mode 100755
diff --git a/indra/win_updater/CMakeLists.txt b/indra/win_updater/CMakeLists.txt
old mode 100644
new mode 100755
diff --git a/indra/win_updater/updater.cpp b/indra/win_updater/updater.cpp
old mode 100644
new mode 100755
diff --git a/scripts/messages/message_template.msg b/scripts/messages/message_template.msg
old mode 100644
new mode 100755
diff --git a/scripts/messages/message_template.msg.sha1 b/scripts/messages/message_template.msg.sha1
old mode 100644
new mode 100755
diff --git a/scripts/setup-path.py b/scripts/setup-path.py
old mode 100644
new mode 100755
diff --git a/scripts/template_verifier.py b/scripts/template_verifier.py
old mode 100644
new mode 100755
diff --git a/scripts/templates/template-cpp.cpp b/scripts/templates/template-cpp.cpp
old mode 100644
new mode 100755
diff --git a/scripts/templates/template-h.h b/scripts/templates/template-h.h
old mode 100644
new mode 100755
-- 
GitLab


From f18fd58c8cfc772db36fb751cde39934e1ee37e9 Mon Sep 17 00:00:00 2001
From: Graham Madarasz <graham@lindenlab.com>
Date: Fri, 29 Mar 2013 00:29:39 -0700
Subject: [PATCH 386/436] Move to latest linux breakpad package

---
 autobuild.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index 789496dc3b1..593126e0051 100755
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -775,9 +775,9 @@
             <key>archive</key>
             <map>
              <key>hash</key>
-	         <string>1df1bb19a43a2d1a684ce9d4da9dc7bc</string>
+	         <string>4a40d57848950e825464986407c959e2</string>
              <key>url</key>
-	         <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-google-breakpad/rev/273021/arch/Linux/installer/google_breakpad-0.0.0-rev1099-linux-20130328.tar.bz2</string>
+	         <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-google-breakpad/rev/273077/arch/Linux/installer/google_breakpad-0.0.0-rev1099-linux-20130329.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
-- 
GitLab


From 39ea211cd78711a06ceb3446f1e6c271a6f65236 Mon Sep 17 00:00:00 2001
From: Graham Madarasz <graham@lindenlab.com>
Date: Fri, 29 Mar 2013 01:27:10 -0700
Subject: [PATCH 387/436] Viewer breakpad linux fixes

---
 autobuild.xml                 | 4 ++--
 indra/llcommon/CMakeLists.txt | 1 +
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index 593126e0051..a028d467568 100755
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -775,9 +775,9 @@
             <key>archive</key>
             <map>
              <key>hash</key>
-	         <string>4a40d57848950e825464986407c959e2</string>
+	         <string>511a65ca6fa7b27d538642b7608b5901</string>
              <key>url</key>
-	         <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-google-breakpad/rev/273077/arch/Linux/installer/google_breakpad-0.0.0-rev1099-linux-20130329.tar.bz2</string>
+	         <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-google-breakpad/rev/273079/arch/Linux/installer/google_breakpad-0.0.0-rev1099-linux-20130329.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
diff --git a/indra/llcommon/CMakeLists.txt b/indra/llcommon/CMakeLists.txt
index 5cce8ff2c46..3e572800676 100755
--- a/indra/llcommon/CMakeLists.txt
+++ b/indra/llcommon/CMakeLists.txt
@@ -17,6 +17,7 @@ include_directories(
     ${EXPAT_INCLUDE_DIRS}
     ${LLCOMMON_INCLUDE_DIRS}
     ${ZLIB_INCLUDE_DIRS}
+    ${BREAKPAD_INCLUDE_DIRECTORIES}
     )
 
 # add_executable(lltreeiterators lltreeiterators.cpp)
-- 
GitLab


From 9a49b1ef5f77f354dd2090f46a9321b0e0c7fd91 Mon Sep 17 00:00:00 2001
From: Graham Madarasz <graham@lindenlab.com>
Date: Fri, 29 Mar 2013 01:40:10 -0700
Subject: [PATCH 388/436] Dueling checksums

---
 autobuild.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/autobuild.xml b/autobuild.xml
index a028d467568..8b9f7c889ce 100755
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -775,7 +775,7 @@
             <key>archive</key>
             <map>
              <key>hash</key>
-	         <string>511a65ca6fa7b27d538642b7608b5901</string>
+	         <string>52257e5eb166a0b69c9c0c38f6e1920e</string>
              <key>url</key>
 	         <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-google-breakpad/rev/273079/arch/Linux/installer/google_breakpad-0.0.0-rev1099-linux-20130329.tar.bz2</string>
             </map>
-- 
GitLab


From e89e4bf6019606580ebc2c3869bdcdd4e207fae0 Mon Sep 17 00:00:00 2001
From: Graham Madarasz <graham@lindenlab.com>
Date: Fri, 29 Mar 2013 02:30:44 -0700
Subject: [PATCH 389/436] Fix unused return val from fwrite causing warnings
 causing errors

---
 indra/newview/llviewerstatsrecorder.cpp | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/indra/newview/llviewerstatsrecorder.cpp b/indra/newview/llviewerstatsrecorder.cpp
index 91e485d01b7..a63ea69ede9 100755
--- a/indra/newview/llviewerstatsrecorder.cpp
+++ b/indra/newview/llviewerstatsrecorder.cpp
@@ -216,7 +216,9 @@ void LLViewerStatsRecorder::writeToLog( F32 interval )
 				<< "Texture Fetch bps\t"
 				<< "\n";
 
-			fwrite(data_msg.str().c_str(), 1, data_msg.str().size(), mObjectCacheFile );
+			size_t wrote = fwrite(data_msg.str().c_str(), 1, data_msg.str().size(), mObjectCacheFile );
+			llassert(wrote == data_msg.str().size());
+			(void)wrote;
 		}
 		else
 		{
@@ -249,7 +251,9 @@ void LLViewerStatsRecorder::writeToLog( F32 interval )
 		<< "\t" << (mTextureFetchSize * 8 / delta_time)
 		<< "\n";
 
-	fwrite(data_msg.str().c_str(), 1, data_msg.str().size(), mObjectCacheFile );
+	size_t data_written = fwrite(data_msg.str().c_str(), 1, data_msg.str().size(), mObjectCacheFile );
+	llassert(data_written == data_msg.str().size());
+	(void)data_written;
 	clearStats();
 }
 
-- 
GitLab


From 8e7c04f1d0ef6a7be800a7f3539f301aaededd14 Mon Sep 17 00:00:00 2001
From: Nyx Linden <nyx@lindenlab.com>
Date: Fri, 29 Mar 2013 18:05:36 -0400
Subject: [PATCH 390/436] SUN-57 SH-4039 FIX bake fail on non-ssb regions

We were getting the texture ID from the type,index couple, but were not
passing in index, which defaulted to 0. texture ID is available from the
texture object itself, so using that and removing the index parameter
to prevent future confusion.
---
 indra/newview/llvoavatar.cpp     | 2 +-
 indra/newview/llvoavatar.h       | 2 +-
 indra/newview/llvoavatarself.cpp | 4 ++--
 indra/newview/llvoavatarself.h   | 2 +-
 4 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index d4925247897..ea0a30d580b 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -4403,7 +4403,7 @@ void LLVOAvatar::updateTextures()
 
 
 void LLVOAvatar::addLocalTextureStats( ETextureIndex idx, LLViewerFetchedTexture* imagep,
-									   F32 texel_area_ratio, BOOL render_avatar, BOOL covered_by_baked, U32 index )
+									   F32 texel_area_ratio, BOOL render_avatar, BOOL covered_by_baked)
 {
 	// No local texture stats for non-self avatars
 	return;
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
index c2adaac18e8..f2f7ab5e297 100755
--- a/indra/newview/llvoavatar.h
+++ b/indra/newview/llvoavatar.h
@@ -537,7 +537,7 @@ class LLVOAvatar :
 	//--------------------------------------------------------------------
 protected:
 	virtual void	setLocalTexture(LLAvatarAppearanceDefines::ETextureIndex type, LLViewerTexture* tex, BOOL baked_version_exits, U32 index = 0);
-	virtual void	addLocalTextureStats(LLAvatarAppearanceDefines::ETextureIndex type, LLViewerFetchedTexture* imagep, F32 texel_area_ratio, BOOL rendered, BOOL covered_by_baked, U32 index = 0);
+	virtual void	addLocalTextureStats(LLAvatarAppearanceDefines::ETextureIndex type, LLViewerFetchedTexture* imagep, F32 texel_area_ratio, BOOL rendered, BOOL covered_by_baked);
 	// MULTI-WEARABLE: make self-only?
 	virtual void	setBakedReady(LLAvatarAppearanceDefines::ETextureIndex type, BOOL baked_version_exists, U32 index = 0);
 
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index b6dc4a1ff9b..6ed69e21fee 100755
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -2569,7 +2569,7 @@ BOOL LLVOAvatarSelf::canGrabBakedTexture(EBakedTextureIndex baked_index) const
 }
 
 void LLVOAvatarSelf::addLocalTextureStats( ETextureIndex type, LLViewerFetchedTexture* imagep,
-										   F32 texel_area_ratio, BOOL render_avatar, BOOL covered_by_baked, U32 index )
+										   F32 texel_area_ratio, BOOL render_avatar, BOOL covered_by_baked)
 {
 	if (!isIndexLocalTexture(type)) return;
 
@@ -2579,7 +2579,7 @@ void LLVOAvatarSelf::addLocalTextureStats( ETextureIndex type, LLViewerFetchedTe
 	// textures failing to load issue.
 	//if (!covered_by_baked)
 	{
-		if (getLocalTextureID(type, index) != IMG_DEFAULT_AVATAR)
+		if (imagep->getID() != IMG_DEFAULT_AVATAR)
 		{
 			imagep->setNoDelete();
 			if (imagep->getDiscardLevel() != 0)
diff --git a/indra/newview/llvoavatarself.h b/indra/newview/llvoavatarself.h
index 78728cff20e..3b7b6bac64a 100644
--- a/indra/newview/llvoavatarself.h
+++ b/indra/newview/llvoavatarself.h
@@ -219,7 +219,7 @@ class LLVOAvatarSelf :
 	/*virtual*/ void	setBakedReady(LLAvatarAppearanceDefines::ETextureIndex type, BOOL baked_version_exists, U32 index);
 	void				localTextureLoaded(BOOL succcess, LLViewerFetchedTexture *src_vi, LLImageRaw* src, LLImageRaw* aux_src, S32 discard_level, BOOL final, void* userdata);
 	void				getLocalTextureByteCount(S32* gl_byte_count) const;
-	/*virtual*/ void	addLocalTextureStats(LLAvatarAppearanceDefines::ETextureIndex i, LLViewerFetchedTexture* imagep, F32 texel_area_ratio, BOOL rendered, BOOL covered_by_baked, U32 index);
+	/*virtual*/ void	addLocalTextureStats(LLAvatarAppearanceDefines::ETextureIndex i, LLViewerFetchedTexture* imagep, F32 texel_area_ratio, BOOL rendered, BOOL covered_by_baked);
 	LLLocalTextureObject* getLocalTextureObject(LLAvatarAppearanceDefines::ETextureIndex i, U32 index) const;
 
 private:
-- 
GitLab


From 7c7ccf27d1638577290ebefcc16dded9390f5f21 Mon Sep 17 00:00:00 2001
From: Merov Linden <merov@lindenlab.com>
Date: Fri, 29 Mar 2013 17:22:53 -0700
Subject: [PATCH 391/436] CHUI-807 : Add more defensive coding. Also trace in
 log the sessions created so we'll have a better idea of what people do with
 conversations if we see that crash again.

---
 indra/llui/lltabcontainer.cpp | 13 ++++++++-----
 indra/newview/llimview.cpp    |  2 ++
 2 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/indra/llui/lltabcontainer.cpp b/indra/llui/lltabcontainer.cpp
index 6f895ed939a..fd981557047 100644
--- a/indra/llui/lltabcontainer.cpp
+++ b/indra/llui/lltabcontainer.cpp
@@ -1215,9 +1215,11 @@ void LLTabContainer::removeTabPanel(LLPanel* child)
 				removeChild( tuple->mButton );
 			}
  			delete tuple->mButton;
+            tuple->mButton = NULL;
 
  			removeChild( tuple->mTabPanel );
 // 			delete tuple->mTabPanel;
+            tuple->mTabPanel = NULL;
 			
 			mTabList.erase( iter );
 			delete tuple;
@@ -1279,9 +1281,11 @@ void LLTabContainer::deleteAllTabs()
 
 		removeChild( tuple->mButton );
 		delete tuple->mButton;
+        tuple->mButton = NULL;
 
  		removeChild( tuple->mTabPanel );
 // 		delete tuple->mTabPanel;
+        tuple->mTabPanel = NULL;
 	}
 
 	// Actually delete the tuples themselves
@@ -1484,9 +1488,8 @@ BOOL LLTabContainer::setTab(S32 which)
 		{
 			LLTabTuple* tuple = *iter;
 			BOOL is_selected = ( tuple == selected_tuple );
-            
             // Although the selected tab must be complete, we may have hollow LLTabTuple tucked in the list
-            if (tuple->mButton)
+            if (tuple && tuple->mButton)
             {
                 tuple->mButton->setUseEllipses(mUseTabEllipses);
                 tuple->mButton->setHAlign(mFontHalign);
@@ -1494,7 +1497,7 @@ BOOL LLTabContainer::setTab(S32 which)
                 // RN: this limits tab-stops to active button only, which would require arrow keys to switch tabs
                 tuple->mButton->setTabStop( is_selected );
             }
-            if (tuple->mTabPanel)
+            if (tuple && tuple->mTabPanel)
             {
                 tuple->mTabPanel->setVisible( is_selected );
                 //tuple->mTabPanel->setFocus(is_selected); // not clear that we want to do this here.
@@ -1525,7 +1528,7 @@ BOOL LLTabContainer::setTab(S32 which)
 					else
 					{
 						S32 available_width_with_arrows = getRect().getWidth() - mRightTabBtnOffset - 2 * (LLPANEL_BORDER_WIDTH + tabcntr_arrow_btn_size  + tabcntr_arrow_btn_size + 1);
-						S32 running_tab_width = tuple->mButton->getRect().getWidth();
+						S32 running_tab_width = (tuple && tuple->mButton ? tuple->mButton->getRect().getWidth() : 0);
 						S32 j = i - 1;
 						S32 min_scroll_pos = i;
 						if (running_tab_width < available_width_with_arrows)
@@ -1533,7 +1536,7 @@ BOOL LLTabContainer::setTab(S32 which)
 							while (j >= 0)
 							{
 								LLTabTuple* other_tuple = getTab(j);
-								running_tab_width += other_tuple->mButton->getRect().getWidth();
+								running_tab_width += (other_tuple && other_tuple->mButton ? other_tuple->mButton->getRect().getWidth() : 0);
 								if (running_tab_width > available_width_with_arrows)
 								{
 									break;
diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index e237cb7f9ea..56b80ef57b6 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -2800,6 +2800,8 @@ LLUUID LLIMMgr::addSession(
 		return LLUUID::null;
 	}
 
+    llinfos << "LLIMMgr::addSession, name = " << name << llendl;
+    
 	LLUUID session_id = computeSessionID(dialog,other_participant_id);
 
 	if (floater_id.notNull())
-- 
GitLab


From 2d84b0605e409664d90dbb5fee2e73c354e1218c Mon Sep 17 00:00:00 2001
From: Merov Linden <merov@lindenlab.com>
Date: Fri, 29 Mar 2013 17:40:16 -0700
Subject: [PATCH 392/436] CHUI-807 : Trace add and remove sessions

---
 indra/newview/llimview.cpp | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index 56b80ef57b6..141d43c6083 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -2800,8 +2800,6 @@ LLUUID LLIMMgr::addSession(
 		return LLUUID::null;
 	}
 
-    llinfos << "LLIMMgr::addSession, name = " << name << llendl;
-    
 	LLUUID session_id = computeSessionID(dialog,other_participant_id);
 
 	if (floater_id.notNull())
@@ -2846,6 +2844,8 @@ LLUUID LLIMMgr::addSession(
 	//we don't need to show notes about online/offline, mute/unmute users' statuses for existing sessions
 	if (!new_session) return session_id;
 	
+    llinfos << "LLIMMgr::addSession, new session added, name = " << name << ", session id = " << session_id << llendl;
+    
 	//Per Plan's suggestion commented "explicit offline status warning" out to make Dessie happier (see EXT-3609)
 	//*TODO After February 2010 remove this commented out line if no one will be missing that warning
 	//noteOfflineUsers(session_id, floater, ids);
@@ -2881,6 +2881,8 @@ void LLIMMgr::removeSession(const LLUUID& session_id)
 
 	LLIMModel::getInstance()->clearSession(session_id);
 
+    llinfos << "LLIMMgr::removeSession, session removed, session id = " << session_id << llendl;
+
 	notifyObserverSessionRemoved(session_id);
 }
 
-- 
GitLab


From 255159c50f02d37fc40d45107002f5bfe27753ea Mon Sep 17 00:00:00 2001
From: mberezhnoy <mberezhnoy@productengine.com>
Date: Mon, 1 Apr 2013 08:53:44 +0300
Subject: [PATCH 393/436] CHUI-886 (Time in front of the name is not displayed
 when the Conversations size is reduced to a minimum.)

---
 indra/newview/llchathistory.cpp | 11 +----------
 1 file changed, 1 insertion(+), 10 deletions(-)

diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp
index 53926c1fef6..0f138873ac8 100644
--- a/indra/newview/llchathistory.cpp
+++ b/indra/newview/llchathistory.cpp
@@ -408,16 +408,7 @@ class LLChatHistoryHeader: public LLPanel
 		S32 user_name_width = user_name_rect.getWidth();
 		S32 time_box_width = time_box->getRect().getWidth();
 
-		if (time_box->getVisible() && user_name_width <= mMinUserNameWidth)
-		{
-			time_box->setVisible(FALSE);
-
-			user_name_rect.mRight += time_box_width;
-			user_name->reshape(user_name_rect.getWidth(), user_name_rect.getHeight());
-			user_name->setRect(user_name_rect);
-		}
-
-		if (!time_box->getVisible() && user_name_width > mMinUserNameWidth + time_box_width)
+		if (!time_box->getVisible() && user_name_width > mMinUserNameWidth)
 		{
 			user_name_rect.mRight -= time_box_width;
 			user_name->reshape(user_name_rect.getWidth(), user_name_rect.getHeight());
-- 
GitLab


From 56939a2a2b9510bd7f5fc43bed460c0d23a743a0 Mon Sep 17 00:00:00 2001
From: Mnikolenko ProductEngine <mnikolenko@productengine.com>
Date: Mon, 1 Apr 2013 20:09:37 +0300
Subject: [PATCH 394/436] CHUI-904 FIXED Set the focus on the Nearby chat
 floater after setting visibility.

---
 indra/newview/llfloaterimnearbychat.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/newview/llfloaterimnearbychat.cpp b/indra/newview/llfloaterimnearbychat.cpp
index d86e1b3fd7a..56b0c15cb9e 100644
--- a/indra/newview/llfloaterimnearbychat.cpp
+++ b/indra/newview/llfloaterimnearbychat.cpp
@@ -264,7 +264,7 @@ void LLFloaterIMNearbyChat::setVisibleAndFrontmost(BOOL take_focus, const LLSD&
 
 	if(!isTornOff() && matchesKey(key))
 	{
-		LLFloaterIMContainer::getInstance()->selectConversationPair(mSessionID, true, false);
+		LLFloaterIMContainer::getInstance()->selectConversationPair(mSessionID, true, take_focus);
 	}
 }
 
-- 
GitLab


From cb4ec925823fdfe09504c78a7d7a96228a4b6219 Mon Sep 17 00:00:00 2001
From: Merov Linden <merov@lindenlab.com>
Date: Mon, 1 Apr 2013 13:04:24 -0700
Subject: [PATCH 395/436] CHUI-907 : Prevent warning when parsing menus adding
 name to menu_item_check

---
 indra/newview/skins/default/xui/en/menu_login.xml | 15 ++++++++++-----
 .../newview/skins/default/xui/en/menu_viewer.xml  |  4 ++++
 2 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/indra/newview/skins/default/xui/en/menu_login.xml b/indra/newview/skins/default/xui/en/menu_login.xml
index 101e104eabf..52c4fb1613f 100644
--- a/indra/newview/skins/default/xui/en/menu_login.xml
+++ b/indra/newview/skins/default/xui/en/menu_login.xml
@@ -180,7 +180,8 @@
        name="Set Logging Level"
        tear_off="true">
         <menu_item_check
-          label="Debug">
+         name="Debug"
+         label="Debug">
           <menu_item_check.on_check
             function="Develop.CheckLoggingLevel"
             parameter="0" />
@@ -189,7 +190,8 @@
            parameter="0" />
         </menu_item_check>
         <menu_item_check
-          label="Info">
+         name="Info"
+         label="Info">
           <menu_item_check.on_check
             function="Develop.CheckLoggingLevel"
             parameter="1" />
@@ -198,7 +200,8 @@
            parameter="1" />
         </menu_item_check>
         <menu_item_check
-          label="Warning">
+         name="Warning"
+         label="Warning">
           <menu_item_check.on_check
             function="Develop.CheckLoggingLevel"
             parameter="2" />
@@ -207,7 +210,8 @@
            parameter="2" />
         </menu_item_check>
         <menu_item_check
-          label="Error">
+         name="Error"
+         label="Error">
           <menu_item_check.on_check
             function="Develop.CheckLoggingLevel"
             parameter="3" />
@@ -216,7 +220,8 @@
            parameter="3" />
         </menu_item_check>
         <menu_item_check
-          label="None">
+         name="None"
+         label="None">
           <menu_item_check.on_check
             function="Develop.CheckLoggingLevel"
             parameter="4" />
diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml
index 544f06ac0c4..67d8e3eaa4c 100644
--- a/indra/newview/skins/default/xui/en/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/en/menu_viewer.xml
@@ -131,6 +131,7 @@
        name="Status"
        tear_off="true">
         <menu_item_check
+         name="Away"
          label="Away">
           <menu_item_check.on_check
            function="View.Status.CheckAway" />
@@ -138,6 +139,7 @@
            function="World.SetAway" />
         </menu_item_check>
         <menu_item_check
+         name="Do Not Disturb"
          label="Do Not Disturb">
           <menu_item_check.on_check
            function="View.Status.CheckDoNotDisturb" />
@@ -257,6 +259,7 @@
              parameter="speak" />
         </menu_item_check>
         <menu_item_check
+         name="Conversation Log..."
          label="Conversation Log...">
             <menu_item_check.on_check
              function="Floater.Visible"
@@ -352,6 +355,7 @@
         </menu_item_call>
       <menu_item_separator/>
       <menu_item_check
+       name="Do Not Disturb"
        label="Do Not Disturb">
         <menu_item_check.on_check
          function="View.Status.CheckDoNotDisturb" />
-- 
GitLab


From c588f6be31a203f05fbd784b0270555c6e1d04d6 Mon Sep 17 00:00:00 2001
From: Merov Linden <merov@lindenlab.com>
Date: Mon, 1 Apr 2013 13:39:14 -0700
Subject: [PATCH 396/436] CHUI-907 : Fixed! Suppress inexistant menu item and
 duplicated registrar entry to avoid warning

---
 indra/newview/llviewermenu.cpp                     | 2 --
 indra/newview/skins/default/xui/en/menu_viewer.xml | 7 -------
 2 files changed, 9 deletions(-)

diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index 66db0ac8f3d..ab1788d1cb8 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -8283,8 +8283,6 @@ void initialize_menus()
 
 	view_listener_t::addEnable(new LLUploadCostCalculator(), "Upload.CalculateCosts");
 
-
-	commit.add("Inventory.NewWindow", boost::bind(&LLFloaterInventory::showAgentInventory));
 	enable.add("Conversation.IsConversationLoggingAllowed", boost::bind(&LLFloaterIMContainer::isConversationLoggingAllowed));
 
 	// Agent
diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml
index 67d8e3eaa4c..a11cd13fdbb 100644
--- a/indra/newview/skins/default/xui/en/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/en/menu_viewer.xml
@@ -3055,13 +3055,6 @@
                 <menu_item_call.on_click
                  function="Advanced.PrintAgentInfo" />
             </menu_item_call>
-            <menu_item_call
-             label="Memory Stats"
-             name="Memory Stats"
-             shortcut="control|alt|shift|M">
-                <menu_item_call.on_click
-                 function="Advanced.PrintTextureMemoryStats" />
-            </menu_item_call>
             <menu_item_check
              label="Region Debug Console"
              name="Region Debug Console"
-- 
GitLab


From b37f501a87f91851d8b2d9904d3910e95def1abc Mon Sep 17 00:00:00 2001
From: Gilbert Gonzales <gilbert@lindenlab.com>
Date: Mon, 1 Apr 2013 15:36:05 -0700
Subject: [PATCH 397/436] CHUI-796 (User doesn't get all messages in 'do not
 disturb' mode): Now when a conversation is focused by clicking on it's line
 item, selecting a torn off floater or unminimized a torn off floater the
 stored notifications for that conversation will be removed.

---
 indra/newview/llfloaterimcontainer.cpp  | 62 +++++++++++++++++++------
 indra/newview/llfloaterimcontainer.h    |  1 +
 indra/newview/llfloaterimnearbychat.cpp |  2 +-
 indra/newview/llfloaterimsession.cpp    | 30 ++++++++++++
 indra/newview/llfloaterimsession.h      |  2 +
 5 files changed, 82 insertions(+), 15 deletions(-)

diff --git a/indra/newview/llfloaterimcontainer.cpp b/indra/newview/llfloaterimcontainer.cpp
index 7296ec3ceda..58817485fb5 100644
--- a/indra/newview/llfloaterimcontainer.cpp
+++ b/indra/newview/llfloaterimcontainer.cpp
@@ -585,6 +585,28 @@ void LLFloaterIMContainer::returnFloaterToHost()
 	floater->onTearOffClicked();
 }
 
+void LLFloaterIMContainer::setMinimized(BOOL b)
+{
+	bool was_minimized = isMinimized();
+	LLMultiFloater::setMinimized(b);
+
+	//Switching from minimized to un-minimized
+	if(was_minimized && !b)
+	{
+		LLFloaterIMSessionTab* session_floater = LLFloaterIMSessionTab::findConversation(mSelectedSession);
+
+		if(session_floater && !session_floater->isTornOff())
+		{
+			//When in DND mode, remove stored IM notifications
+			//Nearby chat (Null) IMs are not stored while in DND mode, so can ignore removal
+			if(gAgent.isDoNotDisturb() && mSelectedSession.notNull())
+			{
+				LLDoNotDisturbNotificationStorage::getInstance()->removeNotification(LLDoNotDisturbNotificationStorage::toastName, mSelectedSession);
+			}
+		}
+	}
+}
+
 void LLFloaterIMContainer::setVisible(BOOL visible)
 {	LLFloaterIMNearbyChat* nearby_chat;
 	if (visible)
@@ -597,10 +619,21 @@ void LLFloaterIMContainer::setVisible(BOOL visible)
 			// *TODO: find a way to move this to XML as a default panel or something like that
 			LLSD name("nearby_chat");
 			LLFloaterReg::toggleInstanceOrBringToFront(name);
-            setSelectedSession(LLUUID(NULL));
+            selectConversationPair(LLUUID(NULL), false, false);
 		}
 		openNearbyChat();
-        selectConversationPair(getSelectedSession(), false, false);
+		flashConversationItemWidget(mSelectedSession,false);
+
+		LLFloaterIMSessionTab* session_floater = LLFloaterIMSessionTab::findConversation(mSelectedSession);
+		if(session_floater && !session_floater->isMinimized())
+		{
+			//When in DND mode, remove stored IM notifications
+			//Nearby chat (Null) IMs are not stored while in DND mode, so can ignore removal
+			if(gAgent.isDoNotDisturb() && mSelectedSession.notNull())
+			{
+				LLDoNotDisturbNotificationStorage::getInstance()->removeNotification(LLDoNotDisturbNotificationStorage::toastName, mSelectedSession);
+			}
+		}
 	}
 
 	nearby_chat = LLFloaterReg::findTypedInstance<LLFloaterIMNearbyChat>("nearby_chat");
@@ -1389,13 +1422,6 @@ BOOL LLFloaterIMContainer::selectConversationPair(const LLUUID& session_id, bool
     		widget->getParentFolder()->setSelection(widget, FALSE, FALSE);
     		mConversationsRoot->scrollToShowSelection();
     	}
-
-        //When in DND mode, remove stored IM notifications
-        //Nearby chat (Null) IMs are not stored while in DND mode, so can ignore removal
-        if(gAgent.isDoNotDisturb() && session_id.notNull())
-        {
-            LLDoNotDisturbNotificationStorage::getInstance()->removeNotification(LLDoNotDisturbNotificationStorage::toastName, session_id);
-        }
     }
 
     /* floater processing */
@@ -1420,14 +1446,19 @@ BOOL LLFloaterIMContainer::selectConversationPair(const LLUUID& session_id, bool
 			{
 				showStub(true);
 			}
+
+			//When in DND mode, remove stored IM notifications
+			//Nearby chat (Null) IMs are not stored while in DND mode, so can ignore removal
+			if(gAgent.isDoNotDisturb() && session_id.notNull())
+			{
+				LLDoNotDisturbNotificationStorage::getInstance()->removeNotification(LLDoNotDisturbNotificationStorage::toastName, session_id);
+			}
 		}
 
 		// Set the focus on the selected floater
-		if (!session_floater->hasFocus())
+		if (!session_floater->hasFocus() && !session_floater->isMinimized())
 		{
-			BOOL is_minimized = session_floater->isMinimized();
 			session_floater->setFocus(focus_floater);
-			session_floater->setMinimized(is_minimized);
 		}
 	}
 	flashConversationItemWidget(session_id,false);
@@ -1986,8 +2017,11 @@ void LLFloaterIMContainer::closeFloater(bool app_quitting/* = false*/)
 {
 	// Always unminimize before trying to close.
 	// Most of the time the user will never see this state.
-	setMinimized(FALSE);
-
+	if(isMinimized())
+	{
+		LLMultiFloater::setMinimized(FALSE);
+	}
+	
 	LLFloater::closeFloater(app_quitting);
 }
 
diff --git a/indra/newview/llfloaterimcontainer.h b/indra/newview/llfloaterimcontainer.h
index 52b672241f6..e39d20ec358 100644
--- a/indra/newview/llfloaterimcontainer.h
+++ b/indra/newview/llfloaterimcontainer.h
@@ -59,6 +59,7 @@ class LLFloaterIMContainer
 	/*virtual*/ BOOL postBuild();
 	/*virtual*/ void onOpen(const LLSD& key);
 	/*virtual*/ void draw();
+	/*virtual*/ void setMinimized(BOOL b);
 	/*virtual*/ void setVisible(BOOL visible);
 	/*virtual*/ void setVisibleAndFrontmost(BOOL take_focus=TRUE, const LLSD& key = LLSD());
 	/*virtual*/ void updateResizeLimits();
diff --git a/indra/newview/llfloaterimnearbychat.cpp b/indra/newview/llfloaterimnearbychat.cpp
index 56b0c15cb9e..49f36a2f321 100644
--- a/indra/newview/llfloaterimnearbychat.cpp
+++ b/indra/newview/llfloaterimnearbychat.cpp
@@ -328,7 +328,7 @@ void LLFloaterIMNearbyChat::onChatFontChange(LLFontGL* fontp)
 void LLFloaterIMNearbyChat::show()
 {
 		openFloater(getKey());
-	}
+}
 
 bool LLFloaterIMNearbyChat::isChatVisible() const
 {
diff --git a/indra/newview/llfloaterimsession.cpp b/indra/newview/llfloaterimsession.cpp
index 6d5145f205f..edc25a7d7ec 100644
--- a/indra/newview/llfloaterimsession.cpp
+++ b/indra/newview/llfloaterimsession.cpp
@@ -39,6 +39,7 @@
 #include "llchannelmanager.h"
 #include "llchiclet.h"
 #include "llchicletbar.h"
+#include "lldonotdisturbnotificationstorage.h"
 #include "llfloaterreg.h"
 #include "llfloateravatarpicker.h"
 #include "llfloaterimcontainer.h" // to replace separate IM Floaters with multifloater container
@@ -645,6 +646,23 @@ void LLFloaterIMSession::setDocked(bool docked, bool pop_on_undock)
 	}
 }
 
+void LLFloaterIMSession::setMinimized(BOOL b)
+{
+	bool wasMinimized = isMinimized();
+	LLFloaterIMSessionTab::setMinimized(b);
+
+	//Switching from minimized state to un-minimized state
+	if(wasMinimized && !b)
+	{
+		//When in DND mode, remove stored IM notifications
+		//Nearby chat (Null) IMs are not stored while in DND mode, so can ignore removal
+		if(gAgent.isDoNotDisturb())
+		{
+			LLDoNotDisturbNotificationStorage::getInstance()->removeNotification(LLDoNotDisturbNotificationStorage::toastName, mSessionID);
+		}
+	}
+}
+
 void LLFloaterIMSession::setVisible(BOOL visible)
 {
 	LLNotificationsUI::LLScreenChannel* channel = static_cast<LLNotificationsUI::LLScreenChannel*>
@@ -713,6 +731,18 @@ BOOL LLFloaterIMSession::getVisible()
 	return visible;
 }
 
+void LLFloaterIMSession::setFocus(BOOL focus)
+{
+	LLFloaterIMSessionTab::setFocus(focus);
+
+	//When in DND mode, remove stored IM notifications
+	//Nearby chat (Null) IMs are not stored while in DND mode, so can ignore removal
+	if(focus && gAgent.isDoNotDisturb())
+	{
+		LLDoNotDisturbNotificationStorage::getInstance()->removeNotification(LLDoNotDisturbNotificationStorage::toastName, mSessionID);
+	}
+}
+
 //static
 bool LLFloaterIMSession::toggle(const LLUUID& session_id)
 {
diff --git a/indra/newview/llfloaterimsession.h b/indra/newview/llfloaterimsession.h
index cb330bca0f2..a0e0171b344 100644
--- a/indra/newview/llfloaterimsession.h
+++ b/indra/newview/llfloaterimsession.h
@@ -65,8 +65,10 @@ class LLFloaterIMSession
 
 	// LLView overrides
 	/*virtual*/ BOOL postBuild();
+	/*virtual*/ void setMinimized(BOOL b);
 	/*virtual*/ void setVisible(BOOL visible);
 	/*virtual*/ BOOL getVisible();
+	/*virtual*/ void setFocus(BOOL focus);
 	// Check typing timeout timer.
 
 	/*virtual*/ void draw();
-- 
GitLab


From 09db2bd9ffb0c559f848bcda7c3b6a975f5c8070 Mon Sep 17 00:00:00 2001
From: AlexanderP ProductEngine <apaschenko@productengine.com>
Date: Mon, 1 Apr 2013 19:40:40 +0300
Subject: [PATCH 398/436] CHUI-896 : ADD FIX : Line flashing and FUI button
 flashing not working correctly for CHUI notifications backed out 902caf2 and
 (partly) d498514; case "NOT_ON_TOP" was fixed

---
 indra/newview/llimview.cpp | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index 141d43c6083..afac94af07c 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -182,18 +182,19 @@ void on_new_message(const LLSD& msg)
 	{
 		conversations_floater_status = CLOSED;
 	}
-	else if (!session_floater || !LLFloater::isVisible(session_floater)
-	            || session_floater->isMinimized() || !session_floater->hasFocus())
+	else if (!im_box->hasFocus() &&
+			    !(session_floater && LLFloater::isVisible(session_floater)
+	            && !session_floater->isMinimized() && session_floater->hasFocus()))
 	{
 		conversations_floater_status = NOT_ON_TOP;
 	}
-	else if ((session_floater->hasFocus()) && (im_box->getSelectedSession() == session_id))
+	else if (im_box->getSelectedSession() != session_id)
 	{
-		conversations_floater_status = ON_TOP_AND_ITEM_IS_SELECTED;
+		conversations_floater_status = ON_TOP;
     }
 	else
 	{
-		conversations_floater_status = ON_TOP;
+		conversations_floater_status = ON_TOP_AND_ITEM_IS_SELECTED;
 	}
 
     //  determine user prefs for this session
@@ -226,7 +227,7 @@ void on_new_message(const LLSD& msg)
     // 0. nothing - exit
     if (("none" == user_preferences ||
     		ON_TOP_AND_ITEM_IS_SELECTED == conversations_floater_status)
-    	&& session_floater->isMessagePaneExpanded())
+    	    && session_floater->isMessagePaneExpanded())
     {
     	return;
     }
-- 
GitLab


From 3f1ad7dbd017b43876ac5f9356ed6913157ddbaa Mon Sep 17 00:00:00 2001
From: AlexanderP ProductEngine <apaschenko@productengine.com>
Date: Tue, 2 Apr 2013 18:56:52 +0300
Subject: [PATCH 399/436] CHUI-811 FIXED [CHUIBUG]Too much spacing around the
 new chat UI elements

---
 .../default/xui/en/floater_im_session.xml     | 62 ++++++++++++-------
 1 file changed, 40 insertions(+), 22 deletions(-)

diff --git a/indra/newview/skins/default/xui/en/floater_im_session.xml b/indra/newview/skins/default/xui/en/floater_im_session.xml
index 3b56e974d21..2152a9f6e9a 100644
--- a/indra/newview/skins/default/xui/en/floater_im_session.xml
+++ b/indra/newview/skins/default/xui/en/floater_im_session.xml
@@ -70,23 +70,26 @@
      top="0"
      left="0"
      right="-1"
-     bottom="-1">
+     bottom="-3">
         <layout_stack
          animate="false" 
          default_tab_group="2"
          follows="all"
          right="-5"
          bottom="-1"
+         top="0"
+         left="5"
+         border_size="0"
          layout="topleft"
          orientation="vertical"
          name="main_stack"
-         tab_group="1"
-         top="0"
-         left="5">
+         tab_group="1">
             <layout_panel
              auto_resize="false"
              name="toolbar_panel"
-             height="35">
+             height="35"
+             right="-1"
+             left="1">
                 <menu_button
                  menu_filename="menu_im_session_showmodes.xml"
                  follows="top|left"
@@ -164,7 +167,7 @@
                  image_unselected="Toolbar_Middle_Off"
                  layout="topleft"
                  top="5"
-                 right="-70"
+                 right="-67"
                  name="close_btn"
                  tool_tip="End this conversation"
                  width="31" />
@@ -196,7 +199,8 @@
             </layout_panel>
             <layout_panel
              name="body_panel"
-             height="235">
+             top="1"
+             bottom="-1">
                 <layout_stack
                  default_tab_group="2"
                  follows="all"
@@ -213,12 +217,14 @@
                      min_dim="0"
                      width="150" 
                      user_resize="true"
-                     auto_resize="false" />
+                     auto_resize="false" 
+                     bottom="-1" />
                     <layout_panel
                      default_tab_group="3"
                      tab_group="2"
                      name="right_part_holder"
-                     min_width="221">
+                     min_width="221"
+                     bottom="-1">
                         <layout_stack
                          animate="true" 
                          default_tab_group="2"
@@ -262,21 +268,28 @@
                 </layout_stack>
             </layout_panel>
             <layout_panel
-             height="35"
+             top_delta="0"
+             top="0"
+             height="26"
+             bottom="-1"
              auto_resize="false"
              name="chat_layout_panel">
                 <layout_stack
                  animate="false"
                  default_tab_group="2"
                  follows="all"
-                 right="-1"
                  orientation="horizontal"
                  name="input_panels"
                  top="0"
-                 bottom="-1"
-                 left="0">
+                 bottom="-2"
+                 left="0"
+                 right="-1">
                     <layout_panel
-                     name="input_editor_layout_panel">
+                     name="input_editor_layout_panel"
+                     auto_resize="true"
+                     user_resize="false"
+                     top="0"
+                     bottom="-1">
                         <chat_editor
                          layout="topleft"
                          expand_lines_count="5"
@@ -289,27 +302,32 @@
                          max_length="1023"
                          spellcheck="true"
                          tab_group="3"
-                         bottom="-8"
-                         left="5"
-                         right="-5"
+                         top="1"
+                         bottom="-2"
+                         left="4"
+                         right="-4"
                          wrap="true" />
                     </layout_panel>
                     <layout_panel
                      auto_resize="false"
+                     user_resize="false"
                      name="input_button_layout_panel"
-                     width="32">
+                     width="30"
+                     top="0"
+                     bottom="-1">
                         <button
+                         layout="topleft"
                          left="1"
-                         top="4"
+                         right="-1"
+                         top="1"
+                         height="22"
                          follows="left|right|top"
-                         height="25"
                          image_hover_unselected="Toolbar_Middle_Over"
                          image_overlay="Conv_expand_one_line"
                          image_selected="Toolbar_Middle_Selected"
                          image_unselected="Toolbar_Middle_Off"
                          name="minz_btn"
-                         tool_tip="Shows/hides message panel"
-                         width="28" />
+                         tool_tip="Shows/hides message panel" />
                     </layout_panel>
                 </layout_stack>
             </layout_panel>
-- 
GitLab


From 15b91b9149a5cdcfd52c33f1dd41f4e0e757e270 Mon Sep 17 00:00:00 2001
From: Nyx Linden <nyx@lindenlab.com>
Date: Tue, 2 Apr 2013 12:46:41 -0400
Subject: [PATCH 400/436] SH-4044 FIX voice dot is offset vertically if using
 avatar height offset

Added the height offset in one too many places. fixing.
---
 indra/newview/llvoavatar.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 0ec6ef3d146..725939dd3ee 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -2144,7 +2144,7 @@ void LLVOAvatar::idleUpdateVoiceVisualizer(bool voice_enabled)
 		{
 			LLVector3 tagPos = mRoot->getWorldPosition();
 			tagPos[VZ] -= mPelvisToFoot;
-			tagPos[VZ] += ( mBodySize[VZ] + mAvatarOffset[VZ] + 0.125f );
+			tagPos[VZ] += ( mBodySize[VZ] + 0.125f );
 			mVoiceVisualizer->setVoiceSourceWorldPosition( tagPos );
 		}
 	}//if ( voiceEnabled )
-- 
GitLab


From 49731dd21dec5fb8b6e5781940bab5f5fa9600a2 Mon Sep 17 00:00:00 2001
From: Nyx Linden <nyx@lindenlab.com>
Date: Tue, 2 Apr 2013 12:51:45 -0400
Subject: [PATCH 401/436] SH-4051 FIX problem with teen account and undershirt
 layers

Updated logic for teen accounts, to ensure that during any transition
that they are wearing at least one undershirt wearable and one
underpants wearable.
---
 indra/newview/llagentwearables.cpp | 50 ++++++++++++++++++++++++------
 indra/newview/llagentwearables.h   |  2 +-
 2 files changed, 42 insertions(+), 10 deletions(-)

diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp
index ba04991a02f..3cee7826fd2 100644
--- a/indra/newview/llagentwearables.cpp
+++ b/indra/newview/llagentwearables.cpp
@@ -1124,14 +1124,19 @@ void LLAgentWearables::addWearableToAgentInventory(LLPointer<LLInventoryCallback
 						  cb);
 }
 
-void LLAgentWearables::removeWearable(const LLWearableType::EType type, bool do_remove_all, U32 index)
+void LLAgentWearables::removeWearable(const LLWearableType::EType type, bool do_remove_all, U32 index, BOOL will_replace)
 {
-	if (gAgent.isTeen() &&
+	if (gAgent.isTeen() && 
 		(type == LLWearableType::WT_UNDERSHIRT || type == LLWearableType::WT_UNDERPANTS))
 	{
 		// Can't take off underclothing in simple UI mode or on PG accounts
-		// TODO: enable the removing of a single undershirt/underpants if multiple are worn. - Nyx
-		return;
+		
+		if (getWearableCount(type) < 2 && !will_replace) 
+		{
+			// if there is 0 or 1 undergarment worn, and we're not going to be immediately adding another,
+			// we cannot allow the removal for teen accounts
+			return;
+		}
 	}
 	if (getWearableCount(type) == 0)
 	{
@@ -1239,6 +1244,31 @@ void LLAgentWearables::setWearableOutfit(const LLInventoryItem::item_array_t& it
 {
 	llinfos << "setWearableOutfit() start" << llendl;
 
+	S32 count = wearables.count();
+	llassert(items.count() == count);
+	S32 i;
+
+	bool has_undershirt = false;
+	bool has_underpants = false;
+
+	for (i = 0; i < count; i++)
+	{
+		LLViewerWearable* new_wearable = wearables[i];
+		if (new_wearable)
+		{
+			const LLWearableType::EType type = new_wearable->getType();
+			if (type == LLWearableType::WT_UNDERSHIRT) 
+			{
+				has_undershirt = true;
+			}
+			if (type == LLWearableType::WT_UNDERPANTS) 
+			{
+				has_underpants = true;
+			}
+		}
+	}
+
+
 	// TODO: Removed check for ensuring that teens don't remove undershirt and underwear. Handle later
 	if (remove)
 	{
@@ -1248,15 +1278,17 @@ void LLAgentWearables::setWearableOutfit(const LLInventoryItem::item_array_t& it
 		{
 			if (LLWearableType::getAssetType((LLWearableType::EType)type) == LLAssetType::AT_CLOTHING)
 			{
-				removeWearable((LLWearableType::EType)type, true, 0);
+				bool will_replace = false;
+				if ((type == LLWearableType::WT_UNDERSHIRT && has_undershirt) || 
+					(type == LLWearableType::WT_UNDERPANTS && has_underpants))
+				{
+					will_replace = true;
+				}
+				removeWearable((LLWearableType::EType)type, true, 0, will_replace);
 			}
 		}
 	}
 
-	S32 count = wearables.count();
-	llassert(items.count() == count);
-
-	S32 i;
 	for (i = 0; i < count; i++)
 	{
 		LLViewerWearable* new_wearable = wearables[i];
diff --git a/indra/newview/llagentwearables.h b/indra/newview/llagentwearables.h
index 5be46486367..f2f224a5736 100644
--- a/indra/newview/llagentwearables.h
+++ b/indra/newview/llagentwearables.h
@@ -146,7 +146,7 @@ class LLAgentWearables : public LLInitClass<LLAgentWearables>, public LLWearable
 	// Removing wearables
 	//--------------------------------------------------------------------
 public:
-	void			removeWearable(const LLWearableType::EType type, bool do_remove_all /*= false*/, U32 index /*= 0*/);
+	void			removeWearable(const LLWearableType::EType type, bool do_remove_all /*= false*/, U32 index /*= 0*/, BOOL will_replace = false);
 private:
 	void			removeWearableFinal(const LLWearableType::EType type, bool do_remove_all /*= false*/, U32 index /*= 0*/);
 protected:
-- 
GitLab


From 56d4a9f36b89acfe2244e985a5ecb0923fb77a59 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Tue, 2 Apr 2013 17:54:30 -0400
Subject: [PATCH 402/436] SH-4057 FIX - host bake textures should start with
 UDP fetching now, instead of waiting to fail down

---
 indra/newview/llviewertexture.cpp | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp
index 236b95253c1..eb6c453e765 100644
--- a/indra/newview/llviewertexture.cpp
+++ b/indra/newview/llviewertexture.cpp
@@ -911,6 +911,10 @@ LLViewerFetchedTexture::LLViewerFetchedTexture(const LLUUID& id, FTType f_type,
 {
 	init(TRUE) ;
 	mFTType = f_type;
+	if (mFTType == FTT_HOST_BAKE)
+	{
+		mCanUseHTTP = false;
+	}
 	generateGLTexture() ;
 }
 	
-- 
GitLab


From 3eae5ba0d006b2f73af6bcfc2b57429f99913eff Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Tue, 2 Apr 2013 18:02:59 -0400
Subject: [PATCH 403/436] Removed setCanUseHTTP override in llvoavatar

---
 indra/newview/llvoavatar.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 725939dd3ee..638906cc6d2 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -4478,7 +4478,7 @@ void LLVOAvatar::addBakedTextureStats( LLViewerFetchedTexture* imagep, F32 pixel
 	// TODO: currently default to HTTP texture and fall back to UDP if cannot be found there.
 	// Once server messaging is in place, we should call setCanUseHTTP(false) for old style
 	// appearance requests
-	imagep->setCanUseHTTP(true);
+	//imagep->setCanUseHTTP(true);
 	imagep->setMaxVirtualSizeResetInterval(MAX_TEXTURE_VIRTURE_SIZE_RESET_INTERVAL);
 	imagep->resetMaxVirtualSizeResetCounter() ;
 
-- 
GitLab


From 7ea7b236d88ec599c5bae561689b9d079256e551 Mon Sep 17 00:00:00 2001
From: Nyx Linden <nyx@lindenlab.com>
Date: Tue, 2 Apr 2013 18:32:57 -0400
Subject: [PATCH 404/436] BUILDFIX commit policy fixes

---
 indra/llappearance/llwearabledata.h           |   2 +-
 .../llmessage/tests/test_llsdmessage_peer.py  | 346 +++++++++---------
 2 files changed, 174 insertions(+), 174 deletions(-)

diff --git a/indra/llappearance/llwearabledata.h b/indra/llappearance/llwearabledata.h
index 3e92f2ead88..03bd179f258 100644
--- a/indra/llappearance/llwearabledata.h
+++ b/indra/llappearance/llwearabledata.h
@@ -2,7 +2,7 @@
  * @file llwearabledata.h
  * @brief LLWearableData class header file
  *
- * $LicenseInfo:firstyear=20012license=viewerlgpl$
+ * $LicenseInfo:firstyear=2012&license=viewerlgpl$
  * Second Life Viewer Source Code
  * Copyright (C) 2010, Linden Research, Inc.
  * 
diff --git a/indra/llmessage/tests/test_llsdmessage_peer.py b/indra/llmessage/tests/test_llsdmessage_peer.py
index b59c5a06cd6..e45249b1cba 100644
--- a/indra/llmessage/tests/test_llsdmessage_peer.py
+++ b/indra/llmessage/tests/test_llsdmessage_peer.py
@@ -1,173 +1,173 @@
-#!/usr/bin/env python
-"""\
-@file   test_llsdmessage_peer.py
-@author Nat Goodspeed
-@date   2008-10-09
-@brief  This script asynchronously runs the executable (with args) specified on
-        the command line, returning its result code. While that executable is
-        running, we provide dummy local services for use by C++ tests.
-
-$LicenseInfo:firstyear=2008&license=viewerlgpl$
-Second Life Viewer Source Code
-Copyright (C) 2010, Linden Research, Inc.
-
-This library is free software; you can redistribute it and/or
-modify it under the terms of the GNU Lesser General Public
-License as published by the Free Software Foundation;
-version 2.1 of the License only.
-
-This library is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-Lesser General Public License for more details.
-
-You should have received a copy of the GNU Lesser General Public
-License along with this library; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-
-Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
-$/LicenseInfo$
-"""
-
-import os
-import sys
-from threading import Thread
-from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler
-
-mydir = os.path.dirname(__file__)       # expected to be .../indra/llmessage/tests/
-sys.path.insert(0, os.path.join(mydir, os.pardir, os.pardir, "lib", "python"))
-from indra.util.fastest_elementtree import parse as xml_parse
-from indra.base import llsd
-from testrunner import freeport, run, debug, VERBOSE
-import time
-
-_storage=None
-
-class TestHTTPRequestHandler(BaseHTTPRequestHandler):
-    """This subclass of BaseHTTPRequestHandler is to receive and echo
-    LLSD-flavored messages sent by the C++ LLHTTPClient.
-    """
-    def read(self):
-        # The following logic is adapted from the library module
-        # SimpleXMLRPCServer.py.
-        # Get arguments by reading body of request.
-        # We read this in chunks to avoid straining
-        # socket.read(); around the 10 or 15Mb mark, some platforms
-        # begin to have problems (bug #792570).
-        try:
-            size_remaining = int(self.headers["content-length"])
-        except (KeyError, ValueError):
-            return ""
-        max_chunk_size = 10*1024*1024
-        L = []
-        while size_remaining:
-            chunk_size = min(size_remaining, max_chunk_size)
-            chunk = self.rfile.read(chunk_size)
-            L.append(chunk)
-            size_remaining -= len(chunk)
-        return ''.join(L)
-        # end of swiped read() logic
-
-    def read_xml(self):
-        # This approach reads the entire POST data into memory first
-        return llsd.parse(self.read())
-##         # This approach attempts to stream in the LLSD XML from self.rfile,
-##         # assuming that the underlying XML parser reads its input file
-##         # incrementally. Unfortunately I haven't been able to make it work.
-##         tree = xml_parse(self.rfile)
-##         debug("Finished raw parse")
-##         debug("parsed XML tree %s", tree)
-##         debug("parsed root node %s", tree.getroot())
-##         debug("root node tag %s", tree.getroot().tag)
-##         return llsd.to_python(tree.getroot())
-
-    def do_HEAD(self):
-        self.do_GET(withdata=False)
-
-    def do_GET(self, withdata=True):
-        # Of course, don't attempt to read data.
-        data = dict(reply="success", body="avatar", random=17)
-        self.answer(data, withdata=withdata)
-
-    def do_POST(self):
-        # Read the provided POST data.
-        self.answer(self.read_xml())
-
-    def do_PUT(self):
-        # Read the provided PUT data.
-        self.answer(self.read_xml())
-
-    def answer(self, data, withdata=True):
-        global _storage
-        debug("%s.answer(%s): self.path = %r", self.__class__.__name__, data, self.path)
-        if "fail" in self.path or "test/error" in self.path: # fail requested
-            status = data.get("status", 500)
-            # self.responses maps an int status to a (short, long) pair of
-            # strings. We want the longer string. That's why we pass a string
-            # pair to get(): the [1] will select the second string, whether it
-            # came from self.responses or from our default pair.
-            reason = data.get("reason",
-                               self.responses.get(status,
-                                                  ("fail requested",
-                                                   "Your request specified failure status %s "
-                                                   "without providing a reason" % status))[1])
-            debug("fail requested: %s: %r", status, reason)
-            self.send_error(status, reason)
-        else:
-            if "web/echo" in self.path:
-                pass
-            elif "test/timeout" in self.path:
-                time.sleep(5.0)
-                return
-            elif "test/storage" in self.path:
-                if "GET" == self.command:
-                    data = _storage
-                else:
-                    _storage = data
-                    data = "ok"
-            else:
-                data = data.copy()          # we're going to modify
-                # Ensure there's a "reply" key in data, even if there wasn't before
-                data["reply"] = data.get("reply", llsd.LLSD("success"))
-            response = llsd.format_xml(data)
-            debug("success: %s", response)
-            self.send_response(200)
-            self.send_header("Content-type", "application/llsd+xml")
-            self.send_header("Content-Length", str(len(response)))
-            self.end_headers()
-            if withdata:
-                self.wfile.write(response)
-
-    if not VERBOSE:
-        # When VERBOSE is set, skip both these overrides because they exist to
-        # suppress output.
-
-        def log_request(self, code, size=None):
-            # For present purposes, we don't want the request splattered onto
-            # stderr, as it would upset devs watching the test run
-            pass
-
-        def log_error(self, format, *args):
-            # Suppress error output as well
-            pass
-
-class Server(HTTPServer):
-    # This pernicious flag is on by default in HTTPServer. But proper
-    # operation of freeport() absolutely depends on it being off.
-    allow_reuse_address = False
-
-if __name__ == "__main__":
-    # Instantiate a Server(TestHTTPRequestHandler) on the first free port
-    # in the specified port range. Doing this inline is better than in a
-    # daemon thread: if it blows up here, we'll get a traceback. If it blew up
-    # in some other thread, the traceback would get eaten and we'd run the
-    # subject test program anyway.
-    httpd, port = freeport(xrange(8000, 8020),
-                           lambda port: Server(('127.0.0.1', port), TestHTTPRequestHandler))
-    # Pass the selected port number to the subject test program via the
-    # environment. We don't want to impose requirements on the test program's
-    # command-line parsing -- and anyway, for C++ integration tests, that's
-    # performed in TUT code rather than our own.
-    os.environ["PORT"] = str(port)
-    debug("$PORT = %s", port)
-    sys.exit(run(server=Thread(name="httpd", target=httpd.serve_forever), *sys.argv[1:]))
+#!/usr/bin/env python
+"""\
+@file   test_llsdmessage_peer.py
+@author Nat Goodspeed
+@date   2008-10-09
+@brief  This script asynchronously runs the executable (with args) specified on
+        the command line, returning its result code. While that executable is
+        running, we provide dummy local services for use by C++ tests.
+
+$LicenseInfo:firstyear=2008&license=viewerlgpl$
+Second Life Viewer Source Code
+Copyright (C) 2010, Linden Research, Inc.
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation;
+version 2.1 of the License only.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+$/LicenseInfo$
+"""
+
+import os
+import sys
+from threading import Thread
+from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler
+
+mydir = os.path.dirname(__file__)       # expected to be .../indra/llmessage/tests/
+sys.path.insert(0, os.path.join(mydir, os.pardir, os.pardir, "lib", "python"))
+from indra.util.fastest_elementtree import parse as xml_parse
+from indra.base import llsd
+from testrunner import freeport, run, debug, VERBOSE
+import time
+
+_storage=None
+
+class TestHTTPRequestHandler(BaseHTTPRequestHandler):
+    """This subclass of BaseHTTPRequestHandler is to receive and echo
+    LLSD-flavored messages sent by the C++ LLHTTPClient.
+    """
+    def read(self):
+        # The following logic is adapted from the library module
+        # SimpleXMLRPCServer.py.
+        # Get arguments by reading body of request.
+        # We read this in chunks to avoid straining
+        # socket.read(); around the 10 or 15Mb mark, some platforms
+        # begin to have problems (bug #792570).
+        try:
+            size_remaining = int(self.headers["content-length"])
+        except (KeyError, ValueError):
+            return ""
+        max_chunk_size = 10*1024*1024
+        L = []
+        while size_remaining:
+            chunk_size = min(size_remaining, max_chunk_size)
+            chunk = self.rfile.read(chunk_size)
+            L.append(chunk)
+            size_remaining -= len(chunk)
+        return ''.join(L)
+        # end of swiped read() logic
+
+    def read_xml(self):
+        # This approach reads the entire POST data into memory first
+        return llsd.parse(self.read())
+##         # This approach attempts to stream in the LLSD XML from self.rfile,
+##         # assuming that the underlying XML parser reads its input file
+##         # incrementally. Unfortunately I haven't been able to make it work.
+##         tree = xml_parse(self.rfile)
+##         debug("Finished raw parse")
+##         debug("parsed XML tree %s", tree)
+##         debug("parsed root node %s", tree.getroot())
+##         debug("root node tag %s", tree.getroot().tag)
+##         return llsd.to_python(tree.getroot())
+
+    def do_HEAD(self):
+        self.do_GET(withdata=False)
+
+    def do_GET(self, withdata=True):
+        # Of course, don't attempt to read data.
+        data = dict(reply="success", body="avatar", random=17)
+        self.answer(data, withdata=withdata)
+
+    def do_POST(self):
+        # Read the provided POST data.
+        self.answer(self.read_xml())
+
+    def do_PUT(self):
+        # Read the provided PUT data.
+        self.answer(self.read_xml())
+
+    def answer(self, data, withdata=True):
+        global _storage
+        debug("%s.answer(%s): self.path = %r", self.__class__.__name__, data, self.path)
+        if "fail" in self.path or "test/error" in self.path: # fail requested
+            status = data.get("status", 500)
+            # self.responses maps an int status to a (short, long) pair of
+            # strings. We want the longer string. That's why we pass a string
+            # pair to get(): the [1] will select the second string, whether it
+            # came from self.responses or from our default pair.
+            reason = data.get("reason",
+                               self.responses.get(status,
+                                                  ("fail requested",
+                                                   "Your request specified failure status %s "
+                                                   "without providing a reason" % status))[1])
+            debug("fail requested: %s: %r", status, reason)
+            self.send_error(status, reason)
+        else:
+            if "web/echo" in self.path:
+                pass
+            elif "test/timeout" in self.path:
+                time.sleep(5.0)
+                return
+            elif "test/storage" in self.path:
+                if "GET" == self.command:
+                    data = _storage
+                else:
+                    _storage = data
+                    data = "ok"
+            else:
+                data = data.copy()          # we're going to modify
+                # Ensure there's a "reply" key in data, even if there wasn't before
+                data["reply"] = data.get("reply", llsd.LLSD("success"))
+            response = llsd.format_xml(data)
+            debug("success: %s", response)
+            self.send_response(200)
+            self.send_header("Content-type", "application/llsd+xml")
+            self.send_header("Content-Length", str(len(response)))
+            self.end_headers()
+            if withdata:
+                self.wfile.write(response)
+
+    if not VERBOSE:
+        # When VERBOSE is set, skip both these overrides because they exist to
+        # suppress output.
+
+        def log_request(self, code, size=None):
+            # For present purposes, we don't want the request splattered onto
+            # stderr, as it would upset devs watching the test run
+            pass
+
+        def log_error(self, format, *args):
+            # Suppress error output as well
+            pass
+
+class Server(HTTPServer):
+    # This pernicious flag is on by default in HTTPServer. But proper
+    # operation of freeport() absolutely depends on it being off.
+    allow_reuse_address = False
+
+if __name__ == "__main__":
+    # Instantiate a Server(TestHTTPRequestHandler) on the first free port
+    # in the specified port range. Doing this inline is better than in a
+    # daemon thread: if it blows up here, we'll get a traceback. If it blew up
+    # in some other thread, the traceback would get eaten and we'd run the
+    # subject test program anyway.
+    httpd, port = freeport(xrange(8000, 8020),
+                           lambda port: Server(('127.0.0.1', port), TestHTTPRequestHandler))
+    # Pass the selected port number to the subject test program via the
+    # environment. We don't want to impose requirements on the test program's
+    # command-line parsing -- and anyway, for C++ integration tests, that's
+    # performed in TUT code rather than our own.
+    os.environ["PORT"] = str(port)
+    debug("$PORT = %s", port)
+    sys.exit(run(server=Thread(name="httpd", target=httpd.serve_forever), *sys.argv[1:]))
-- 
GitLab


From 72d0d81c7ede9de5ab30e95e8657b6a464e1986b Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Tue, 2 Apr 2013 20:40:19 -0400
Subject: [PATCH 405/436] SH-4057 FIX - cleaned up old canUseHTTP logic, now
 lives in llviewertexture.cpp

---
 indra/newview/llvoavatar.cpp | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 638906cc6d2..5695fc04b90 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -4475,10 +4475,6 @@ void LLVOAvatar::addBakedTextureStats( LLViewerFetchedTexture* imagep, F32 pixel
 	//the texture pipeline will stop fetching this texture.
 
 	imagep->resetTextureStats();
-	// TODO: currently default to HTTP texture and fall back to UDP if cannot be found there.
-	// Once server messaging is in place, we should call setCanUseHTTP(false) for old style
-	// appearance requests
-	//imagep->setCanUseHTTP(true);
 	imagep->setMaxVirtualSizeResetInterval(MAX_TEXTURE_VIRTURE_SIZE_RESET_INTERVAL);
 	imagep->resetMaxVirtualSizeResetCounter() ;
 
-- 
GitLab


From d7b530008e2de9afac0de87937e4ef490f89c415 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Wed, 3 Apr 2013 11:09:23 -0400
Subject: [PATCH 406/436] SH-3058 WIP - disable debug-level logging for avatar
 by default

---
 indra/newview/app_settings/logcontrol.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
 mode change 100644 => 100755 indra/newview/app_settings/logcontrol.xml

diff --git a/indra/newview/app_settings/logcontrol.xml b/indra/newview/app_settings/logcontrol.xml
old mode 100644
new mode 100755
index c5561166fcd..92a241857e0
--- a/indra/newview/app_settings/logcontrol.xml
+++ b/indra/newview/app_settings/logcontrol.xml
@@ -42,8 +42,8 @@
 						</array>
 					<key>tags</key>
 						<array>
-						     <string>Avatar</string>
 						<!-- sample entry for debugging specific items	
+						     <string>Avatar</string>
 						     <string>Voice</string>		
 						-->
 						</array>
-- 
GitLab


From d1d0a2cf67e3ddd7bd187c63b9ce79e0c19988d6 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Wed, 3 Apr 2013 14:58:33 -0400
Subject: [PATCH 407/436] SH-4058 - log spam reduction initiative.

---
 indra/newview/llagent.cpp          |  4 ++--
 indra/newview/llagentwearables.cpp |  2 +-
 indra/newview/llappearancemgr.cpp  |  4 ++--
 indra/newview/llinventorymodel.cpp |  3 ++-
 indra/newview/llviewertexlayer.cpp |  2 +-
 indra/newview/llvoavatar.cpp       | 18 ++++++++----------
 indra/newview/llvoavatarself.cpp   |  2 +-
 7 files changed, 17 insertions(+), 18 deletions(-)
 mode change 100644 => 100755 indra/newview/llagentwearables.cpp
 mode change 100644 => 100755 indra/newview/llinventorymodel.cpp
 mode change 100644 => 100755 indra/newview/llviewertexlayer.cpp

diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index 7e4c6456763..8c42defa73f 100755
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -4318,7 +4318,7 @@ void LLAgent::sendAgentSetAppearance()
 	}
 	
 
-	LL_INFOS("Avatar") << gAgentAvatarp->avString() << "TAT: Sent AgentSetAppearance: " << gAgentAvatarp->getBakedStatusForPrintout() << LL_ENDL;
+	LL_DEBUGS("Avatar") << gAgentAvatarp->avString() << "TAT: Sent AgentSetAppearance: " << gAgentAvatarp->getBakedStatusForPrintout() << LL_ENDL;
 	//dumpAvatarTEs( "sendAgentSetAppearance()" );
 
 	LLMessageSystem* msg = gMessageSystem;
@@ -4376,7 +4376,7 @@ void LLAgent::sendAgentSetAppearance()
 		{
 			dumpSentAppearance(dump_prefix);
 		}
-		LL_INFOS("Avatar") << gAgentAvatarp->avString() << "TAT: Sending cached texture data" << LL_ENDL;
+		LL_DEBUGS("Avatar") << gAgentAvatarp->avString() << "TAT: Sending cached texture data" << LL_ENDL;
 		for (U8 baked_index = 0; baked_index < BAKED_NUM_INDICES; baked_index++)
 		{
 			BOOL generate_valid_hash = TRUE;
diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp
old mode 100644
new mode 100755
index 3cee7826fd2..de9afe2e085
--- a/indra/newview/llagentwearables.cpp
+++ b/indra/newview/llagentwearables.cpp
@@ -1518,7 +1518,7 @@ void LLAgentWearables::queryWearableCache()
 			gAgentAvatarp->outputRezTiming("Fetching textures from cache");
 		}
 
-		LL_INFOS("Avatar") << gAgentAvatarp->avString() << "Requesting texture cache entry for " << num_queries << " baked textures" << LL_ENDL;
+		LL_DEBUGS("Avatar") << gAgentAvatarp->avString() << "Requesting texture cache entry for " << num_queries << " baked textures" << LL_ENDL;
 		gMessageSystem->sendReliable(gAgent.getRegion()->getHost());
 		gAgentQueryManager.mNumPendingQueries++;
 		gAgentQueryManager.mWearablesCacheQueryID++;
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 59e07cd843d..652f199e283 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -1994,7 +1994,7 @@ void LLAppearanceMgr::updateAppearanceFromCOF(bool update_base_outfit_ordering)
 	BoolSetter setIsInUpdateAppearanceFromCOF(mIsInUpdateAppearanceFromCOF);
 	selfStartPhase("update_appearance_from_cof");
 
-	LL_INFOS("Avatar") << self_av_string() << "starting" << LL_ENDL;
+	LL_DEBUGS("Avatar") << self_av_string() << "starting" << LL_ENDL;
 
 	//checking integrity of the COF in terms of ordering of wearables, 
 	//checking and updating links' descriptions of wearables in the COF (before analyzed for "dirty" state)
@@ -3556,7 +3556,7 @@ LLAppearanceMgr::~LLAppearanceMgr()
 
 void LLAppearanceMgr::setAttachmentInvLinkEnable(bool val)
 {
-	llinfos << "setAttachmentInvLinkEnable => " << (int) val << llendl;
+	LL_DEBUGS("Avatar") << "setAttachmentInvLinkEnable => " << (int) val << llendl;
 	mAttachmentInvLinkEnabled = val;
 }
 
diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp
old mode 100644
new mode 100755
index 5fa4ebaf979..935fe2b4d0e
--- a/indra/newview/llinventorymodel.cpp
+++ b/indra/newview/llinventorymodel.cpp
@@ -1991,8 +1991,9 @@ bool LLInventoryModel::loadSkeleton(
 		{
 			LLViewerInventoryCategory* cat = (*invalid_cat_it).get();
 			cat->setVersion(NO_VERSION);
-			llinfos << "Invalidating category name: " << cat->getName() << " UUID: " << cat->getUUID() << " due to invalid descendents cache" << llendl;
+			LL_DEBUGS("Inventory") << "Invalidating category name: " << cat->getName() << " UUID: " << cat->getUUID() << " due to invalid descendents cache" << llendl;
 		}
+		LL_INFOS("Inventory") << "Invalidated " << invalid_categories.size() << " categories due to invalid descendents cache" << llendl;
 
 		// At this point, we need to set the known descendents for each
 		// category which successfully cached so that we do not
diff --git a/indra/newview/llviewertexlayer.cpp b/indra/newview/llviewertexlayer.cpp
old mode 100644
new mode 100755
index f3c9921819c..777e1f9c76a
--- a/indra/newview/llviewertexlayer.cpp
+++ b/indra/newview/llviewertexlayer.cpp
@@ -363,7 +363,7 @@ BOOL LLViewerTexLayerSetBuffer::requestUpdateImmediate()
 void LLViewerTexLayerSetBuffer::doUpload()
 {
 	LLViewerTexLayerSet* layer_set = getViewerTexLayerSet();
-	llinfos << "Uploading baked " << layer_set->getBodyRegionName() << llendl;
+	LL_DEBUGS("Avatar") << "Uploading baked " << layer_set->getBodyRegionName() << llendl;
 	LLViewerStats::getInstance()->incStat(LLViewerStats::ST_TEX_BAKES);
 
 	// Don't need caches since we're baked now.  (note: we won't *really* be baked 
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 5695fc04b90..ebd859f3106 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -6651,7 +6651,7 @@ LLBBox LLVOAvatar::getHUDBBox() const
 //-----------------------------------------------------------------------------
 void LLVOAvatar::onFirstTEMessageReceived()
 {
-	LL_INFOS("Avatar") << avString() << LL_ENDL;
+	LL_DEBUGS("Avatar") << avString() << LL_ENDL;
 	if( !mFirstTEMessageReceived )
 	{
 		mFirstTEMessageReceived = TRUE;
@@ -6813,7 +6813,7 @@ void LLVOAvatar::parseAppearanceMessage(LLMessageSystem* mesgsys, LLAppearanceMe
 		U8 av_u8;
 		mesgsys->getU8Fast(_PREHASH_AppearanceData, _PREHASH_AppearanceVersion, av_u8, 0);
 		contents.mAppearanceVersion = av_u8;
-		llinfos << "appversion set by AppearanceData field: " << contents.mAppearanceVersion << llendl;
+		LL_DEBUGS("Avatar") << "appversion set by AppearanceData field: " << contents.mAppearanceVersion << llendl;
 		mesgsys->getS32Fast(_PREHASH_AppearanceData, _PREHASH_CofVersion, contents.mCOFVersion, 0);
 		// For future use:
 		//mesgsys->getU32Fast(_PREHASH_AppearanceData, _PREHASH_Flags, appearance_flags, 0);
@@ -6860,7 +6860,7 @@ void LLVOAvatar::parseAppearanceMessage(LLMessageSystem* mesgsys, LLAppearanceMe
 		const S32 expected_tweakable_count = getVisualParamCountInGroup(VISUAL_PARAM_GROUP_TWEAKABLE); // don't worry about VISUAL_PARAM_GROUP_TWEAKABLE_NO_TRANSMIT
 		if (num_blocks != expected_tweakable_count)
 		{
-			llinfos << "Number of params in AvatarAppearance msg (" << num_blocks << ") does not match number of tweakable params in avatar xml file (" << expected_tweakable_count << ").  Processing what we can.  object: " << getID() << llendl;
+			LL_DEBUGS("Avatar") << "Number of params in AvatarAppearance msg (" << num_blocks << ") does not match number of tweakable params in avatar xml file (" << expected_tweakable_count << ").  Processing what we can.  object: " << getID() << llendl;
 		}
 	}
 	else
@@ -6871,7 +6871,7 @@ void LLVOAvatar::parseAppearanceMessage(LLMessageSystem* mesgsys, LLAppearanceMe
 		}
 		else
 		{
-			llinfos << "AvatarAppearance msg received without any parameters, object: " << getID() << llendl;
+			LL_DEBUGS("Avatar") << "AvatarAppearance msg received without any parameters, object: " << getID() << llendl;
 		}
 	}
 
@@ -6882,7 +6882,6 @@ void LLVOAvatar::parseAppearanceMessage(LLMessageSystem* mesgsys, LLAppearanceMe
 		if (it != contents.mParams.end())
 		{
 			S32 index = it - contents.mParams.begin();
-			llinfos << "index: " << index << llendl;
 			contents.mParamAppearanceVersion = llround(contents.mParamWeights[index]);
 			LL_DEBUGS("Avatar") << "appversion req by appearance_version param: " << contents.mParamAppearanceVersion << llendl;
 		}
@@ -6928,7 +6927,6 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 	
 	bool enable_verbose_dumps = gSavedSettings.getBOOL("DebugAvatarAppearanceMessage");
 	std::string dump_prefix = getFullname() + "_" + (isSelf()?"s":"o") + "_";
-	//if (enable_verbose_dumps) { dumpArchetypeXML(dump_prefix + "process_start"); }
 	if (gSavedSettings.getBOOL("BlockAvatarAppearanceMessages"))
 	{
 		llwarns << "Blocking AvatarAppearance message" << llendl;
@@ -6986,7 +6984,7 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 
 	if (isSelf() && isEditingAppearance())
 	{
-		llinfos << "ignoring appearance message while in appearance edit" << llendl;
+		LL_DEBUGS("Avatar") << "ignoring appearance message while in appearance edit" << llendl;
 		return;
 	}
 
@@ -6997,7 +6995,7 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 		// appearance version, which may cause us to look for baked
 		// textures in the wrong place and flag them as missing
 		// assets.
-		llinfos << "ignoring appearance message due to lack of params" << llendl;
+		LL_DEBUGS("Avatar") << "ignoring appearance message due to lack of params" << llendl;
 		return;
 	}
 
@@ -7025,7 +7023,7 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 	BOOL is_first_appearance_message = !mFirstAppearanceMessageReceived;
 	mFirstAppearanceMessageReceived = TRUE;
 
-	LL_INFOS("Avatar") << avString() << "processAvatarAppearance start " << mID
+	LL_DEBUGS("Avatar") << avString() << "processAvatarAppearance start " << mID
 			<< " first? " << is_first_appearance_message << " self? " << isSelf() << LL_ENDL;
 
 	if (is_first_appearance_message )
@@ -7065,7 +7063,7 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 		const S32 expected_tweakable_count = getVisualParamCountInGroup(VISUAL_PARAM_GROUP_TWEAKABLE); // don't worry about VISUAL_PARAM_GROUP_TWEAKABLE_NO_TRANSMIT
 		if (num_params != expected_tweakable_count)
 		{
-			llinfos << "Number of params in AvatarAppearance msg (" << num_params << ") does not match number of tweakable params in avatar xml file (" << expected_tweakable_count << ").  Processing what we can.  object: " << getID() << llendl;
+			LL_DEBUGS("Avatar") << "Number of params in AvatarAppearance msg (" << num_params << ") does not match number of tweakable params in avatar xml file (" << expected_tweakable_count << ").  Processing what we can.  object: " << getID() << llendl;
 		}
 
 		if (params_changed)
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index 1e13455f614..d54eb5f0400 100755
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -2776,7 +2776,7 @@ void LLVOAvatarSelf::outputRezDiagnostics() const
 
 void LLVOAvatarSelf::outputRezTiming(const std::string& msg) const
 {
-	LL_INFOS("Avatar")
+	LL_DEBUGS("Avatar")
 		<< avString()
 		<< llformat("%s. Time from avatar creation: %.2f", msg.c_str(), mDebugSelfLoadTimer.getElapsedTimeF32())
 		<< LL_ENDL;
-- 
GitLab


From 3730e633fcace2173181786b08b601399e9307b6 Mon Sep 17 00:00:00 2001
From: eli <none@none>
Date: Wed, 3 Apr 2013 14:20:11 -0700
Subject: [PATCH 408/436] sync with viewer-development

---
 .../default/xui/en/floater_im_session.xml     | 441 +++++++-----------
 .../skins/default/xui/en/notifications.xml    |   2 +-
 2 files changed, 180 insertions(+), 263 deletions(-)

diff --git a/indra/newview/skins/default/xui/en/floater_im_session.xml b/indra/newview/skins/default/xui/en/floater_im_session.xml
index d8b085063f7..3b56e974d21 100644
--- a/indra/newview/skins/default/xui/en/floater_im_session.xml
+++ b/indra/newview/skins/default/xui/en/floater_im_session.xml
@@ -42,58 +42,52 @@
     <floater.string
      name="multiple_participants_added"
      value="[NAME] were invited to the conversation."/>
-     <floater.string
+    <floater.string
      name="tooltip_to_separate_window"
      value="Move this conversation to a separate window"/>
-     <floater.string
+    <floater.string
      name="tooltip_to_main_window"
      value="Move this conversation back to main window"/>
-  <floater.string
+    <floater.string
      name="start_call_button_tooltip"
      value="Open voice connection"/>
-  <floater.string
+    <floater.string
      name="end_call_button_tooltip"
      value="Close voice connection"/>
-   <floater.string
+    <floater.string
      name="expcol_button_not_tearoff_tooltip"
      value="Collapse this pane"/>
-   <floater.string
+    <floater.string
      name="expcol_button_tearoff_and_expanded_tooltip"
      value="Collapse participant list"/>
-   <floater.string
+    <floater.string
      name="expcol_button_tearoff_and_collapsed_tooltip"
      value="Expand participant list"/>
     <view
-        follows="all"
-        layout="topleft"
-        name="contents_view"
-        top="0"
-        left="0"
-        height="355"
-        width="394">
-   <layout_stack
-   animate="false" 
-   default_tab_group="2"
-   follows="all"
-  height="355"
-  width="394"
-  layout="topleft"
-  orientation="vertical"
-   name="main_stack"
-  tab_group="1"
-  top="0"
-  left="0">
-  
-     <layout_panel
-         follows="left|top|right"
+     follows="all"
+     layout="topleft"
+     name="contents_view"
+     top="0"
+     left="0"
+     right="-1"
+     bottom="-1">
+        <layout_stack
+         animate="false" 
+         default_tab_group="2"
+         follows="all"
+         right="-5"
+         bottom="-1"
          layout="topleft"
-         name="toolbar_panel"
+         orientation="vertical"
+         name="main_stack"
+         tab_group="1"
          top="0"
-         left="0"
-         height="35"
-         min_height="35"
-         width="394">         
-             <menu_button
+         left="5">
+            <layout_panel
+             auto_resize="false"
+             name="toolbar_panel"
+             height="35">
+                <menu_button
                  menu_filename="menu_im_session_showmodes.xml"
                  follows="top|left"
                  height="25"
@@ -107,22 +101,22 @@
                  tool_tip="View/sort options"
                  top="5"
                  width="31" />
-             <menu_button
-				 menu_filename="menu_im_conversation.xml"
-				 follows="top|left"
-				 height="25"
-				 image_hover_unselected="Toolbar_Middle_Over"
-				 image_overlay="OptionsMenu_Off"
-				 image_selected="Toolbar_Middle_Selected"
-				 image_unselected="Toolbar_Middle_Off"
-				 layout="topleft"
-			 	 top="5"
-			 	 left_pad="2"
-				 name="gear_btn"
-				 visible="false"
-				 tool_tip="Actions on selected person"
-				 width="31"/>
-             <button
+                <menu_button
+                 menu_filename="menu_im_conversation.xml"
+                 follows="top|left"
+                 height="25"
+                 image_hover_unselected="Toolbar_Middle_Over"
+                 image_overlay="OptionsMenu_Off"
+                 image_selected="Toolbar_Middle_Selected"
+                 image_unselected="Toolbar_Middle_Off"
+                 layout="topleft"
+                 top="5"
+                 left_pad="2"
+                 name="gear_btn"
+                 visible="false"
+                 tool_tip="Actions on selected person"
+                 width="31"/>
+                <button
                  enabled="false"
                  follows="top|left"
                  height="25"
@@ -136,7 +130,7 @@
                  name="add_btn"
                  tool_tip="Add someone to this conversation"
                  width="31"/>
-             <button
+                <button
                  follows="top|left"
                  height="25"
                  image_hover_unselected="Toolbar_Middle_Over"
@@ -149,19 +143,19 @@
                  name="voice_call_btn"
                  tool_tip="Open voice connection"
                  width="31"/>
-              <output_monitor
-                  auto_update="true"
-                  follows="top|left"
-                  draw_border="false"
-                  height="16"
-                  layout="topleft"
-                  top="10"
-                  left_pad="10"
-                  mouse_opaque="true"
-                  name="speaking_indicator"
-                  visible="false"
-                  width="20" />       
-             <button
+                <output_monitor
+                 auto_update="true"
+                 follows="top|left"
+                 draw_border="false"
+                 height="16"
+                 layout="topleft"
+                 top="10"
+                 left_pad="10"
+                 mouse_opaque="true"
+                 name="speaking_indicator"
+                 visible="false"
+                 width="20" />
+                <button
                  follows="right|top"
                  height="25"
                  image_hover_unselected="Toolbar_Middle_Over"
@@ -170,232 +164,155 @@
                  image_unselected="Toolbar_Middle_Off"
                  layout="topleft"
                  top="5"
-                 left="292"
+                 right="-70"
                  name="close_btn"
                  tool_tip="End this conversation"
                  width="31" />
-             <button
+                <button
                  follows="right|top"
                  height="25"
                  image_hover_unselected="Toolbar_Middle_Over"
                  image_overlay="Conv_toolbar_collapse"
                  image_selected="Toolbar_Middle_Selected"
-             	 image_unselected="Toolbar_Middle_Off"
+                 image_unselected="Toolbar_Middle_Off"
                  layout="topleft"
                  top="5"
                  left_pad="2"
                  name="expand_collapse_btn"
                  tool_tip="Collapse/Expand this pane"
                  width="31" />
-             <button
+                <button
                  follows="right|top"
                  height="25"
                  image_hover_unselected="Toolbar_Middle_Over"
                  image_overlay="Conv_toolbar_arrow_ne"
                  image_selected="Toolbar_Middle_Selected"
-             	 image_unselected="Toolbar_Middle_Off"
+                 image_unselected="Toolbar_Middle_Off"
                  layout="topleft"
-                 top="5"
                  left_pad="2"
                  name="tear_off_btn"
+                 top="5"
                  width="31" />
-     </layout_panel>
-     <layout_panel
-      name="body_panel"
-      follows="all"
-      width="394" 
-      height="235" 
-      user_resize="false"
-      auto_resize="true">
-  <layout_stack
-   animate="true" 
-   default_tab_group="2"
-  follows="all"
-  height="275"
-  width="394"
-  layout="topleft"
-  orientation="horizontal"
-  name="im_panels"
-  tab_group="1"
-  top_pad="0"
-  left="0">
-    <layout_panel
-      name="speakers_list_panel"
-      follows="all"
-      expanded_min_dim="115"
-      min_dim="0"
-      width="150" 
-      height="275"
-      user_resize="true"
-      auto_resize="false">
-      </layout_panel>
-    <layout_panel
-       default_tab_group="3"
-       left="0"
-       tab_group="2"
-       follows="all"
-       top="0"
-       height="275"
-	   width="244"
-       layout="topleft"
-       user_resize="true"
-       auto_resize="true"
-       visible="true"
-       name="right_part_holder"
-       min_width="221">
-        <panel
-         name="trnsAndChat_panel"
-         follows="all"
-         layout="topleft"
-         visible="true"
-         height="240"
-         width="244">
-         <layout_stack
-          animate="true" 
-          default_tab_group="2"
-          follows="all"
-          height="240"
-          width="244"
-          layout="topleft"
-          visible="true"
-          orientation="vertical"
-          name="translate_and_chat_stack"
-          tab_group="1"
-          left_pad="0"
-          top="0"
-          left="0">
-            <layout_panel
-             auto_resize="false"
-             user_resize="false"
-             height="26"
-             layout="topleft"
-             left_delta="0"
-             name="translate_chat_checkbox_lp"
-             top_delta="0"
-             visible="true"
-             width="210">
-                <check_box
-                 top="10"
-                 control_name="TranslateChat"
-                 enabled="true"
-                 height="16"
-                 label="Translate chat"
-                 layout="topleft"
-                 left="5"
-                 name="translate_chat_checkbox"
-                 width="230" />
             </layout_panel>
             <layout_panel
-             width="210"
-             layout="topleft"
-             follows="all"
-             left_delta="0"
-             top_delta="0"
-             bottom="0"
-             visible="true"
-             user_resize="false"
-             auto_resize="true"
-             name="chat_holder">      
-               <chat_history
-                font="SansSerifSmall"
-                follows="all"
-                visible="true"
-                name="chat_history"
-                parse_highlights="true"
-                parse_urls="true"
-                layout="topleft"
-                right="-5"
-                left="5"
-                top="0"
-                bottom="1">
-               </chat_history>
+             name="body_panel"
+             height="235">
+                <layout_stack
+                 default_tab_group="2"
+                 follows="all"
+                 orientation="horizontal"
+                 name="im_panels"
+                 tab_group="1"
+                 top="0"
+                 right="-1"
+                 bottom="-1"
+                 left="0">
+                    <layout_panel
+                     name="speakers_list_panel"
+                     expanded_min_dim="115"
+                     min_dim="0"
+                     width="150" 
+                     user_resize="true"
+                     auto_resize="false" />
+                    <layout_panel
+                     default_tab_group="3"
+                     tab_group="2"
+                     name="right_part_holder"
+                     min_width="221">
+                        <layout_stack
+                         animate="true" 
+                         default_tab_group="2"
+                         follows="all"
+                         orientation="vertical"
+                         name="translate_and_chat_stack"
+                         tab_group="1"
+                         top="0"
+                         left="0"
+                         right="-1"
+                         bottom="-1">
+                            <layout_panel
+                             auto_resize="false"
+                             height="26"
+                             name="translate_chat_checkbox_lp">
+                                <check_box
+                                 top="10"
+                                 control_name="TranslateChat"
+                                 enabled="true"
+                                 height="16"
+                                 label="Translate chat"
+                                 left="5"
+                                 name="translate_chat_checkbox"
+                                 width="230" />
+                            </layout_panel>
+                            <layout_panel
+                             name="chat_holder">
+                                <chat_history
+                                 font="SansSerifSmall"
+                                 follows="all"
+                                 name="chat_history"
+                                 parse_highlights="true"
+                                 parse_urls="true"
+                                 right="-1"
+                                 left="5"
+                                 top="0"
+                                 bottom="-1" />
+                            </layout_panel>
+                        </layout_stack>
+                    </layout_panel>
+                </layout_stack>
             </layout_panel>
-           </layout_stack>
-           </panel>
-    </layout_panel>
-  </layout_stack>
-  </layout_panel>
-  <layout_panel
+            <layout_panel
              height="35"
-             layout="topleft"
-             follows="left|right|bottom"
-             left_delta="0"
-             right="0"
-             top_delta="0"
-             bottom="0"
-             visible="true"
-             user_resize="false"
              auto_resize="false"
              name="chat_layout_panel">
-   <layout_stack
-   animate="true" 
-   default_tab_group="2"
-   follows="all"
-   height="35"
-   right="0"
-   layout="topleft"
-   orientation="horizontal"
-   name="input_panels"
-   top_pad="0"
-   left="0">
-     <layout_panel
-             height="35"
-             layout="topleft"
-             follows="left|right|bottom"
-             left_delta="0"
-             top_delta="0"
-             bottom="0"
-             visible="true"
-             user_resize="false"
-             auto_resize="true"
-             name="input_editor_layout_panel">
-              <chat_editor
-             expand_lines_count="5"
-             follows="left|right|bottom"
-               font="SansSerifSmall"
-             visible="true"
-             height="20"
-             is_expandable="true"
-             label="To"
-             text_tentative_color="TextFgTentativeColor"
-             layout="topleft"
-             name="chat_editor"
-             max_length="1023"
-             spellcheck="true"
-             tab_group="3"
-             width="160"
-             top="6"
-             left="5"
-             right="-5"
-             wrap="true">
-            </chat_editor>
+                <layout_stack
+                 animate="false"
+                 default_tab_group="2"
+                 follows="all"
+                 right="-1"
+                 orientation="horizontal"
+                 name="input_panels"
+                 top="0"
+                 bottom="-1"
+                 left="0">
+                    <layout_panel
+                     name="input_editor_layout_panel">
+                        <chat_editor
+                         layout="topleft"
+                         expand_lines_count="5"
+                         follows="left|right|bottom"
+                         font="SansSerifSmall"
+                         height="20"    
+                         is_expandable="true"
+                         text_tentative_color="TextFgTentativeColor"
+                         name="chat_editor"
+                         max_length="1023"
+                         spellcheck="true"
+                         tab_group="3"
+                         bottom="-8"
+                         left="5"
+                         right="-5"
+                         wrap="true" />
+                    </layout_panel>
+                    <layout_panel
+                     auto_resize="false"
+                     name="input_button_layout_panel"
+                     width="32">
+                        <button
+                         left="1"
+                         top="4"
+                         follows="left|right|top"
+                         height="25"
+                         image_hover_unselected="Toolbar_Middle_Over"
+                         image_overlay="Conv_expand_one_line"
+                         image_selected="Toolbar_Middle_Selected"
+                         image_unselected="Toolbar_Middle_Off"
+                         name="minz_btn"
+                         tool_tip="Shows/hides message panel"
+                         width="28" />
+                    </layout_panel>
+                </layout_stack>
             </layout_panel>
-            <layout_panel             
-             height="35"
-             layout="topleft"
-             follows="left|right|bottom"
-             left_delta="0"
-             top_delta="0"
-             bottom="0"
-             width="35"
-             visible="true"
-             user_resize="false"
-             auto_resize="false"
-             name="input_button_layout_panel">
-            <button
-                 follows="left|right|bottom"
-                 height="25"
-                 image_hover_unselected="Toolbar_Middle_Over"
-                 image_overlay="Conv_expand_one_line"
-                 image_selected="Toolbar_Middle_Selected"
-                 image_unselected="Toolbar_Middle_Off"
-                 layout="topleft"
-                 name="minz_btn"
-                 tool_tip="Shows/hides message panel"
-                 width="28"/>
-           </layout_panel>
-  </layout_stack>
-  </layout_panel>
-  </layout_stack>
+        </layout_stack>
     </view>
 </floater>
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index c681e390023..105bef7321a 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -352,7 +352,7 @@ Save all changes to clothing/body parts?
    icon="alertmodal.tga"
    name="FriendsAndGroupsOnly"
    type="alertmodal">
-    Non-friends won't know that you've choosen to ignore their calls and instant messages.
+    Non-friends won't know that you've chosen to ignore their calls and instant messages.
     <usetemplate
      name="okbutton"
      yestext="OK"/>
-- 
GitLab


From 9f56dad9582c8585a92c54baf28c928b2d3bb7d2 Mon Sep 17 00:00:00 2001
From: eli <none@none>
Date: Wed, 3 Apr 2013 15:35:45 -0700
Subject: [PATCH 409/436] FIX INTL-114 translation for 9 languages of major
 update from CHUI and other projects

---
 .../xui/de/floater_conversation_log.xml       |   8 +
 .../xui/de/floater_conversation_preview.xml   |   7 +
 .../default/xui/de/floater_im_container.xml   |  29 +-
 .../default/xui/de/floater_im_session.xml     |  61 +-
 .../default/xui/de/floater_incoming_call.xml  |  10 +-
 .../xui/de/floater_pathfinding_console.xml    |   2 +-
 .../default/xui/de/floater_texture_ctrl.xml   |   2 +-
 .../xui/de/floater_voice_chat_volume.xml      |   4 +
 .../default/xui/de/floater_voice_effect.xml   |   2 +-
 .../default/xui/de/floater_voice_volume.xml   |   8 +
 .../skins/default/xui/de/menu_cof_gear.xml    |   6 +-
 .../default/xui/de/menu_conversation.xml      |  31 +
 .../xui/de/menu_conversation_log_gear.xml     |  15 +
 .../xui/de/menu_conversation_log_view.xml     |   7 +
 .../default/xui/de/menu_im_conversation.xml   |  15 +
 .../xui/de/menu_im_session_showmodes.xml      |   7 +
 .../skins/default/xui/de/menu_object_icon.xml |   2 +
 .../skins/default/xui/de/menu_outfit_gear.xml |   2 +
 .../default/xui/de/menu_participant_view.xml  |  13 +
 .../xui/de/menu_people_blocked_gear.xml       |   5 +
 .../xui/de/menu_people_blocked_plus.xml       |   5 +
 .../xui/de/menu_people_blocked_view.xml       |   5 +
 .../xui/de/menu_people_friends_view.xml       |   8 +
 .../default/xui/de/menu_people_groups.xml     |   2 +-
 .../xui/de/menu_people_groups_view.xml        |   4 +
 .../default/xui/de/menu_people_nearby.xml     |  23 +-
 .../xui/de/menu_people_nearby_multiselect.xml |  14 +-
 .../xui/de/menu_people_nearby_view.xml        |   8 +
 .../xui/de/menu_people_recent_view.xml        |   6 +
 .../skins/default/xui/de/menu_url_agent.xml   |   4 +-
 .../default/xui/de/menu_url_objectim.xml      |   2 +-
 .../skins/default/xui/de/menu_viewer.xml      |  37 +-
 .../skins/default/xui/de/notifications.xml    | 690 ++++++++++++++++-
 .../default/xui/de/panel_avatar_list_item.xml |   1 +
 .../xui/de/panel_block_list_sidetray.xml      |  15 +-
 .../xui/de/panel_conversation_list_item.xml   |   8 +
 .../de/panel_conversation_log_list_item.xml   |   6 +
 .../default/xui/de/panel_group_list_item.xml  |   1 +
 .../skins/default/xui/de/panel_people.xml     |  88 +--
 .../default/xui/de/panel_preferences_chat.xml | 110 ++-
 .../xui/de/panel_preferences_general.xml      |   4 +-
 .../default/xui/de/sidepanel_task_info.xml    |   1 +
 .../newview/skins/default/xui/de/strings.xml  |  68 +-
 .../xui/es/floater_conversation_log.xml       |   8 +
 .../xui/es/floater_conversation_preview.xml   |   7 +
 .../default/xui/es/floater_im_container.xml   |  29 +-
 .../default/xui/es/floater_im_session.xml     |  61 +-
 .../default/xui/es/floater_incoming_call.xml  |  10 +-
 .../xui/es/floater_pathfinding_console.xml    |   2 +-
 .../default/xui/es/floater_texture_ctrl.xml   |   2 +-
 .../xui/es/floater_voice_chat_volume.xml      |   4 +
 .../default/xui/es/floater_voice_effect.xml   |   2 +-
 .../default/xui/es/floater_voice_volume.xml   |   8 +
 .../skins/default/xui/es/menu_cof_gear.xml    |   6 +-
 .../default/xui/es/menu_conversation.xml      |  31 +
 .../xui/es/menu_conversation_log_gear.xml     |  15 +
 .../xui/es/menu_conversation_log_view.xml     |   7 +
 .../default/xui/es/menu_im_conversation.xml   |  15 +
 .../xui/es/menu_im_session_showmodes.xml      |   7 +
 .../skins/default/xui/es/menu_object_icon.xml |   2 +
 .../skins/default/xui/es/menu_outfit_gear.xml |   2 +
 .../default/xui/es/menu_participant_view.xml  |  13 +
 .../xui/es/menu_people_blocked_gear.xml       |   5 +
 .../xui/es/menu_people_blocked_plus.xml       |   5 +
 .../xui/es/menu_people_blocked_view.xml       |   5 +
 .../xui/es/menu_people_friends_view.xml       |   8 +
 .../default/xui/es/menu_people_groups.xml     |   2 +-
 .../xui/es/menu_people_groups_view.xml        |   4 +
 .../default/xui/es/menu_people_nearby.xml     |  23 +-
 .../xui/es/menu_people_nearby_multiselect.xml |  14 +-
 .../xui/es/menu_people_nearby_view.xml        |   8 +
 .../xui/es/menu_people_recent_view.xml        |   6 +
 .../skins/default/xui/es/menu_url_agent.xml   |   4 +-
 .../default/xui/es/menu_url_objectim.xml      |   2 +-
 .../skins/default/xui/es/menu_viewer.xml      |  35 +-
 .../skins/default/xui/es/notifications.xml    | 692 +++++++++++++++++-
 .../default/xui/es/panel_avatar_list_item.xml |   1 +
 .../xui/es/panel_block_list_sidetray.xml      |  15 +-
 .../xui/es/panel_conversation_list_item.xml   |   8 +
 .../es/panel_conversation_log_list_item.xml   |   6 +
 .../default/xui/es/panel_group_list_item.xml  |   1 +
 .../skins/default/xui/es/panel_people.xml     |  88 +--
 .../default/xui/es/panel_preferences_chat.xml | 110 ++-
 .../xui/es/panel_preferences_general.xml      |   5 +-
 .../default/xui/es/sidepanel_task_info.xml    |   1 +
 .../newview/skins/default/xui/es/strings.xml  |  63 +-
 .../xui/fr/floater_conversation_log.xml       |   8 +
 .../xui/fr/floater_conversation_preview.xml   |   7 +
 .../default/xui/fr/floater_im_container.xml   |  29 +-
 .../default/xui/fr/floater_im_session.xml     |  61 +-
 .../default/xui/fr/floater_incoming_call.xml  |  10 +-
 .../xui/fr/floater_pathfinding_console.xml    |   2 +-
 .../default/xui/fr/floater_texture_ctrl.xml   |   2 +-
 .../xui/fr/floater_voice_chat_volume.xml      |   4 +
 .../default/xui/fr/floater_voice_effect.xml   |   2 +-
 .../default/xui/fr/floater_voice_volume.xml   |   8 +
 .../skins/default/xui/fr/menu_cof_gear.xml    |   6 +-
 .../default/xui/fr/menu_conversation.xml      |  31 +
 .../xui/fr/menu_conversation_log_gear.xml     |  15 +
 .../xui/fr/menu_conversation_log_view.xml     |   7 +
 .../default/xui/fr/menu_im_conversation.xml   |  15 +
 .../xui/fr/menu_im_session_showmodes.xml      |   7 +
 .../skins/default/xui/fr/menu_object_icon.xml |   2 +
 .../skins/default/xui/fr/menu_outfit_gear.xml |   2 +
 .../default/xui/fr/menu_participant_view.xml  |  13 +
 .../xui/fr/menu_people_blocked_gear.xml       |   5 +
 .../xui/fr/menu_people_blocked_plus.xml       |   5 +
 .../xui/fr/menu_people_blocked_view.xml       |   5 +
 .../xui/fr/menu_people_friends_view.xml       |   8 +
 .../default/xui/fr/menu_people_groups.xml     |   2 +-
 .../xui/fr/menu_people_groups_view.xml        |   4 +
 .../default/xui/fr/menu_people_nearby.xml     |  23 +-
 .../xui/fr/menu_people_nearby_multiselect.xml |  14 +-
 .../xui/fr/menu_people_nearby_view.xml        |   8 +
 .../xui/fr/menu_people_recent_view.xml        |   6 +
 .../skins/default/xui/fr/menu_url_agent.xml   |   4 +-
 .../default/xui/fr/menu_url_objectim.xml      |   2 +-
 .../skins/default/xui/fr/menu_viewer.xml      |  37 +-
 .../skins/default/xui/fr/notifications.xml    | 690 ++++++++++++++++-
 .../default/xui/fr/panel_avatar_list_item.xml |   1 +
 .../xui/fr/panel_block_list_sidetray.xml      |  15 +-
 .../xui/fr/panel_conversation_list_item.xml   |   8 +
 .../fr/panel_conversation_log_list_item.xml   |   6 +
 .../default/xui/fr/panel_group_list_item.xml  |   1 +
 .../skins/default/xui/fr/panel_people.xml     |  88 +--
 .../default/xui/fr/panel_preferences_chat.xml | 110 ++-
 .../xui/fr/panel_preferences_general.xml      |   4 +-
 .../default/xui/fr/sidepanel_task_info.xml    |   1 +
 .../newview/skins/default/xui/fr/strings.xml  |  68 +-
 .../xui/it/floater_conversation_log.xml       |   8 +
 .../xui/it/floater_conversation_preview.xml   |   7 +
 .../default/xui/it/floater_im_container.xml   |  29 +-
 .../default/xui/it/floater_im_session.xml     |  61 +-
 .../default/xui/it/floater_incoming_call.xml  |  10 +-
 .../xui/it/floater_pathfinding_console.xml    |   2 +-
 .../default/xui/it/floater_texture_ctrl.xml   |   2 +-
 .../xui/it/floater_voice_chat_volume.xml      |   4 +
 .../default/xui/it/floater_voice_effect.xml   |   2 +-
 .../default/xui/it/floater_voice_volume.xml   |   8 +
 .../skins/default/xui/it/menu_cof_gear.xml    |   6 +-
 .../default/xui/it/menu_conversation.xml      |  31 +
 .../xui/it/menu_conversation_log_gear.xml     |  15 +
 .../xui/it/menu_conversation_log_view.xml     |   7 +
 .../default/xui/it/menu_im_conversation.xml   |  15 +
 .../xui/it/menu_im_session_showmodes.xml      |   7 +
 .../skins/default/xui/it/menu_object_icon.xml |   2 +
 .../skins/default/xui/it/menu_outfit_gear.xml |   2 +
 .../default/xui/it/menu_participant_view.xml  |  13 +
 .../xui/it/menu_people_blocked_gear.xml       |   5 +
 .../xui/it/menu_people_blocked_plus.xml       |   5 +
 .../xui/it/menu_people_blocked_view.xml       |   5 +
 .../xui/it/menu_people_friends_view.xml       |   8 +
 .../default/xui/it/menu_people_groups.xml     |   2 +-
 .../xui/it/menu_people_groups_view.xml        |   4 +
 .../default/xui/it/menu_people_nearby.xml     |  23 +-
 .../xui/it/menu_people_nearby_multiselect.xml |  14 +-
 .../xui/it/menu_people_nearby_view.xml        |   8 +
 .../xui/it/menu_people_recent_view.xml        |   6 +
 .../skins/default/xui/it/menu_url_agent.xml   |   4 +-
 .../default/xui/it/menu_url_objectim.xml      |   2 +-
 .../skins/default/xui/it/menu_viewer.xml      |  37 +-
 .../skins/default/xui/it/notifications.xml    | 692 +++++++++++++++++-
 .../default/xui/it/panel_avatar_list_item.xml |   1 +
 .../xui/it/panel_block_list_sidetray.xml      |  15 +-
 .../xui/it/panel_conversation_list_item.xml   |   8 +
 .../it/panel_conversation_log_list_item.xml   |   6 +
 .../default/xui/it/panel_group_list_item.xml  |   1 +
 .../skins/default/xui/it/panel_people.xml     |  88 +--
 .../default/xui/it/panel_preferences_chat.xml | 110 ++-
 .../xui/it/panel_preferences_general.xml      |   5 +-
 .../default/xui/it/sidepanel_task_info.xml    |   1 +
 .../newview/skins/default/xui/it/strings.xml  |  63 +-
 .../xui/ja/floater_conversation_log.xml       |   8 +
 .../xui/ja/floater_conversation_preview.xml   |   7 +
 .../default/xui/ja/floater_im_container.xml   |  29 +-
 .../default/xui/ja/floater_im_session.xml     |  61 +-
 .../default/xui/ja/floater_incoming_call.xml  |  10 +-
 .../xui/ja/floater_pathfinding_console.xml    |   2 +-
 .../default/xui/ja/floater_texture_ctrl.xml   |   2 +-
 .../xui/ja/floater_voice_chat_volume.xml      |   4 +
 .../default/xui/ja/floater_voice_effect.xml   |   2 +-
 .../default/xui/ja/floater_voice_volume.xml   |   8 +
 .../skins/default/xui/ja/menu_cof_gear.xml    |   6 +-
 .../default/xui/ja/menu_conversation.xml      |  31 +
 .../xui/ja/menu_conversation_log_gear.xml     |  15 +
 .../xui/ja/menu_conversation_log_view.xml     |   7 +
 .../default/xui/ja/menu_im_conversation.xml   |  15 +
 .../xui/ja/menu_im_session_showmodes.xml      |   7 +
 .../skins/default/xui/ja/menu_object_icon.xml |   2 +
 .../skins/default/xui/ja/menu_outfit_gear.xml |   2 +
 .../default/xui/ja/menu_participant_view.xml  |  13 +
 .../xui/ja/menu_people_blocked_gear.xml       |   5 +
 .../xui/ja/menu_people_blocked_plus.xml       |   5 +
 .../xui/ja/menu_people_blocked_view.xml       |   5 +
 .../xui/ja/menu_people_friends_view.xml       |   8 +
 .../default/xui/ja/menu_people_groups.xml     |   2 +-
 .../xui/ja/menu_people_groups_view.xml        |   4 +
 .../default/xui/ja/menu_people_nearby.xml     |  23 +-
 .../xui/ja/menu_people_nearby_multiselect.xml |  14 +-
 .../xui/ja/menu_people_nearby_view.xml        |   8 +
 .../xui/ja/menu_people_recent_view.xml        |   6 +
 .../skins/default/xui/ja/menu_url_agent.xml   |   4 +-
 .../default/xui/ja/menu_url_objectim.xml      |   2 +-
 .../skins/default/xui/ja/menu_viewer.xml      |  37 +-
 .../skins/default/xui/ja/notifications.xml    | 686 ++++++++++++++++-
 .../default/xui/ja/panel_avatar_list_item.xml |   1 +
 .../xui/ja/panel_block_list_sidetray.xml      |  15 +-
 .../xui/ja/panel_conversation_list_item.xml   |   8 +
 .../ja/panel_conversation_log_list_item.xml   |   6 +
 .../default/xui/ja/panel_group_list_item.xml  |   1 +
 .../skins/default/xui/ja/panel_people.xml     |  90 +--
 .../default/xui/ja/panel_preferences_chat.xml | 110 ++-
 .../xui/ja/panel_preferences_general.xml      |   4 +-
 .../default/xui/ja/sidepanel_task_info.xml    |   1 +
 .../newview/skins/default/xui/ja/strings.xml  |  68 +-
 .../xui/pt/floater_conversation_log.xml       |   8 +
 .../xui/pt/floater_conversation_preview.xml   |   7 +
 .../default/xui/pt/floater_im_container.xml   |  29 +-
 .../default/xui/pt/floater_im_session.xml     |  61 +-
 .../default/xui/pt/floater_incoming_call.xml  |   8 +-
 .../xui/pt/floater_pathfinding_console.xml    |   2 +-
 .../default/xui/pt/floater_texture_ctrl.xml   |   2 +-
 .../xui/pt/floater_voice_chat_volume.xml      |   4 +
 .../default/xui/pt/floater_voice_effect.xml   |   2 +-
 .../default/xui/pt/floater_voice_volume.xml   |   8 +
 .../skins/default/xui/pt/menu_cof_gear.xml    |   6 +-
 .../default/xui/pt/menu_conversation.xml      |  31 +
 .../xui/pt/menu_conversation_log_gear.xml     |  15 +
 .../xui/pt/menu_conversation_log_view.xml     |   7 +
 .../default/xui/pt/menu_im_conversation.xml   |  15 +
 .../xui/pt/menu_im_session_showmodes.xml      |   7 +
 .../skins/default/xui/pt/menu_object_icon.xml |   2 +
 .../skins/default/xui/pt/menu_outfit_gear.xml |   2 +
 .../default/xui/pt/menu_participant_view.xml  |  13 +
 .../xui/pt/menu_people_blocked_gear.xml       |   5 +
 .../xui/pt/menu_people_blocked_plus.xml       |   5 +
 .../xui/pt/menu_people_blocked_view.xml       |   5 +
 .../xui/pt/menu_people_friends_view.xml       |   8 +
 .../default/xui/pt/menu_people_groups.xml     |   2 +-
 .../xui/pt/menu_people_groups_view.xml        |   4 +
 .../default/xui/pt/menu_people_nearby.xml     |  23 +-
 .../xui/pt/menu_people_nearby_multiselect.xml |  14 +-
 .../xui/pt/menu_people_nearby_view.xml        |   8 +
 .../xui/pt/menu_people_recent_view.xml        |   6 +
 .../skins/default/xui/pt/menu_url_agent.xml   |   4 +-
 .../default/xui/pt/menu_url_objectim.xml      |   2 +-
 .../skins/default/xui/pt/menu_viewer.xml      |  37 +-
 .../skins/default/xui/pt/notifications.xml    | 690 ++++++++++++++++-
 .../default/xui/pt/panel_avatar_list_item.xml |   1 +
 .../xui/pt/panel_block_list_sidetray.xml      |  15 +-
 .../xui/pt/panel_conversation_list_item.xml   |   8 +
 .../pt/panel_conversation_log_list_item.xml   |   6 +
 .../default/xui/pt/panel_group_list_item.xml  |   1 +
 .../skins/default/xui/pt/panel_people.xml     |  88 +--
 .../default/xui/pt/panel_preferences_chat.xml | 110 ++-
 .../xui/pt/panel_preferences_general.xml      |   5 +-
 .../default/xui/pt/sidepanel_task_info.xml    |   1 +
 .../newview/skins/default/xui/pt/strings.xml  |  63 +-
 .../xui/ru/floater_conversation_log.xml       |   8 +
 .../xui/ru/floater_conversation_preview.xml   |   7 +
 .../default/xui/ru/floater_im_container.xml   |  29 +-
 .../default/xui/ru/floater_im_session.xml     |  61 +-
 .../default/xui/ru/floater_incoming_call.xml  |  10 +-
 .../xui/ru/floater_pathfinding_console.xml    |   2 +-
 .../default/xui/ru/floater_texture_ctrl.xml   |   2 +-
 .../xui/ru/floater_voice_chat_volume.xml      |   4 +
 .../default/xui/ru/floater_voice_effect.xml   |   2 +-
 .../default/xui/ru/floater_voice_volume.xml   |   8 +
 .../skins/default/xui/ru/menu_cof_gear.xml    |   2 +-
 .../default/xui/ru/menu_conversation.xml      |  31 +
 .../xui/ru/menu_conversation_log_gear.xml     |  15 +
 .../xui/ru/menu_conversation_log_view.xml     |   7 +
 .../default/xui/ru/menu_im_conversation.xml   |  15 +
 .../xui/ru/menu_im_session_showmodes.xml      |   7 +
 .../skins/default/xui/ru/menu_object_icon.xml |   2 +
 .../skins/default/xui/ru/menu_outfit_gear.xml |   2 +
 .../default/xui/ru/menu_participant_view.xml  |  13 +
 .../xui/ru/menu_people_blocked_gear.xml       |   5 +
 .../xui/ru/menu_people_blocked_plus.xml       |   5 +
 .../xui/ru/menu_people_blocked_view.xml       |   5 +
 .../xui/ru/menu_people_friends_view.xml       |   8 +
 .../default/xui/ru/menu_people_groups.xml     |   2 +-
 .../xui/ru/menu_people_groups_view.xml        |   4 +
 .../default/xui/ru/menu_people_nearby.xml     |  23 +-
 .../xui/ru/menu_people_nearby_multiselect.xml |  14 +-
 .../xui/ru/menu_people_nearby_view.xml        |   8 +
 .../xui/ru/menu_people_recent_view.xml        |   6 +
 .../skins/default/xui/ru/menu_url_agent.xml   |   4 +-
 .../default/xui/ru/menu_url_objectim.xml      |   2 +-
 .../skins/default/xui/ru/menu_viewer.xml      |  37 +-
 .../skins/default/xui/ru/notifications.xml    | 689 ++++++++++++++++-
 .../default/xui/ru/panel_avatar_list_item.xml |   1 +
 .../xui/ru/panel_block_list_sidetray.xml      |  15 +-
 .../xui/ru/panel_conversation_list_item.xml   |   8 +
 .../ru/panel_conversation_log_list_item.xml   |   6 +
 .../default/xui/ru/panel_group_list_item.xml  |   1 +
 .../skins/default/xui/ru/panel_people.xml     |  88 +--
 .../default/xui/ru/panel_preferences_chat.xml | 110 ++-
 .../xui/ru/panel_preferences_general.xml      |   4 +-
 .../default/xui/ru/sidepanel_task_info.xml    |   1 +
 .../newview/skins/default/xui/ru/strings.xml  |  66 +-
 .../xui/tr/floater_conversation_log.xml       |   8 +
 .../xui/tr/floater_conversation_preview.xml   |   7 +
 .../default/xui/tr/floater_im_container.xml   |  29 +-
 .../default/xui/tr/floater_im_session.xml     |  61 +-
 .../default/xui/tr/floater_incoming_call.xml  |  10 +-
 .../xui/tr/floater_pathfinding_console.xml    |   2 +-
 .../default/xui/tr/floater_texture_ctrl.xml   |   2 +-
 .../xui/tr/floater_voice_chat_volume.xml      |   4 +
 .../default/xui/tr/floater_voice_effect.xml   |   2 +-
 .../default/xui/tr/floater_voice_volume.xml   |   8 +
 .../skins/default/xui/tr/menu_cof_gear.xml    |   2 +-
 .../default/xui/tr/menu_conversation.xml      |  31 +
 .../xui/tr/menu_conversation_log_gear.xml     |  15 +
 .../xui/tr/menu_conversation_log_view.xml     |   7 +
 .../default/xui/tr/menu_im_conversation.xml   |  15 +
 .../xui/tr/menu_im_session_showmodes.xml      |   7 +
 .../skins/default/xui/tr/menu_object_icon.xml |   2 +
 .../skins/default/xui/tr/menu_outfit_gear.xml |   2 +
 .../default/xui/tr/menu_participant_view.xml  |  13 +
 .../xui/tr/menu_people_blocked_gear.xml       |   5 +
 .../xui/tr/menu_people_blocked_plus.xml       |   5 +
 .../xui/tr/menu_people_blocked_view.xml       |   5 +
 .../xui/tr/menu_people_friends_view.xml       |   8 +
 .../default/xui/tr/menu_people_groups.xml     |   2 +-
 .../xui/tr/menu_people_groups_view.xml        |   4 +
 .../default/xui/tr/menu_people_nearby.xml     |  23 +-
 .../xui/tr/menu_people_nearby_multiselect.xml |  14 +-
 .../xui/tr/menu_people_nearby_view.xml        |   8 +
 .../xui/tr/menu_people_recent_view.xml        |   6 +
 .../skins/default/xui/tr/menu_url_agent.xml   |   4 +-
 .../default/xui/tr/menu_url_objectim.xml      |   2 +-
 .../skins/default/xui/tr/menu_viewer.xml      |  37 +-
 .../skins/default/xui/tr/notifications.xml    | 683 ++++++++++++++++-
 .../default/xui/tr/panel_avatar_list_item.xml |   1 +
 .../xui/tr/panel_block_list_sidetray.xml      |  15 +-
 .../xui/tr/panel_conversation_list_item.xml   |   8 +
 .../tr/panel_conversation_log_list_item.xml   |   6 +
 .../default/xui/tr/panel_group_list_item.xml  |   1 +
 .../skins/default/xui/tr/panel_people.xml     |  88 +--
 .../default/xui/tr/panel_preferences_chat.xml | 110 ++-
 .../xui/tr/panel_preferences_general.xml      |   4 +-
 .../default/xui/tr/sidepanel_task_info.xml    |   1 +
 .../newview/skins/default/xui/tr/strings.xml  |  68 +-
 .../xui/zh/floater_conversation_log.xml       |   8 +
 .../xui/zh/floater_conversation_preview.xml   |   7 +
 .../default/xui/zh/floater_im_container.xml   |  29 +-
 .../default/xui/zh/floater_im_session.xml     |  61 +-
 .../default/xui/zh/floater_incoming_call.xml  |   8 +-
 .../xui/zh/floater_pathfinding_console.xml    |   2 +-
 .../default/xui/zh/floater_texture_ctrl.xml   |   2 +-
 .../xui/zh/floater_voice_chat_volume.xml      |   4 +
 .../default/xui/zh/floater_voice_effect.xml   |   2 +-
 .../default/xui/zh/floater_voice_volume.xml   |   8 +
 .../skins/default/xui/zh/menu_cof_gear.xml    |   2 +-
 .../default/xui/zh/menu_conversation.xml      |  31 +
 .../xui/zh/menu_conversation_log_gear.xml     |  15 +
 .../xui/zh/menu_conversation_log_view.xml     |   7 +
 .../default/xui/zh/menu_im_conversation.xml   |  15 +
 .../xui/zh/menu_im_session_showmodes.xml      |   7 +
 .../skins/default/xui/zh/menu_object_icon.xml |   2 +
 .../skins/default/xui/zh/menu_outfit_gear.xml |   2 +
 .../default/xui/zh/menu_participant_view.xml  |  13 +
 .../xui/zh/menu_people_blocked_gear.xml       |   5 +
 .../xui/zh/menu_people_blocked_plus.xml       |   5 +
 .../xui/zh/menu_people_blocked_view.xml       |   5 +
 .../xui/zh/menu_people_friends_view.xml       |   8 +
 .../default/xui/zh/menu_people_groups.xml     |   2 +-
 .../xui/zh/menu_people_groups_view.xml        |   4 +
 .../default/xui/zh/menu_people_nearby.xml     |  23 +-
 .../xui/zh/menu_people_nearby_multiselect.xml |  14 +-
 .../xui/zh/menu_people_nearby_view.xml        |   8 +
 .../xui/zh/menu_people_recent_view.xml        |   6 +
 .../skins/default/xui/zh/menu_url_agent.xml   |   4 +-
 .../default/xui/zh/menu_url_objectim.xml      |   2 +-
 .../skins/default/xui/zh/menu_viewer.xml      |  37 +-
 .../skins/default/xui/zh/notifications.xml    | 690 ++++++++++++++++-
 .../default/xui/zh/panel_avatar_list_item.xml |   1 +
 .../xui/zh/panel_block_list_sidetray.xml      |  15 +-
 .../xui/zh/panel_conversation_list_item.xml   |   8 +
 .../zh/panel_conversation_log_list_item.xml   |   6 +
 .../default/xui/zh/panel_group_list_item.xml  |   1 +
 .../skins/default/xui/zh/panel_people.xml     |  88 +--
 .../default/xui/zh/panel_preferences_chat.xml | 110 ++-
 .../xui/zh/panel_preferences_general.xml      |   4 +-
 .../default/xui/zh/sidepanel_task_info.xml    |   1 +
 .../newview/skins/default/xui/zh/strings.xml  |  66 +-
 387 files changed, 10359 insertions(+), 1715 deletions(-)
 create mode 100644 indra/newview/skins/default/xui/de/floater_conversation_log.xml
 create mode 100644 indra/newview/skins/default/xui/de/floater_conversation_preview.xml
 create mode 100644 indra/newview/skins/default/xui/de/floater_voice_chat_volume.xml
 create mode 100644 indra/newview/skins/default/xui/de/floater_voice_volume.xml
 create mode 100644 indra/newview/skins/default/xui/de/menu_conversation.xml
 create mode 100644 indra/newview/skins/default/xui/de/menu_conversation_log_gear.xml
 create mode 100644 indra/newview/skins/default/xui/de/menu_conversation_log_view.xml
 create mode 100644 indra/newview/skins/default/xui/de/menu_im_conversation.xml
 create mode 100644 indra/newview/skins/default/xui/de/menu_im_session_showmodes.xml
 create mode 100644 indra/newview/skins/default/xui/de/menu_participant_view.xml
 create mode 100644 indra/newview/skins/default/xui/de/menu_people_blocked_gear.xml
 create mode 100644 indra/newview/skins/default/xui/de/menu_people_blocked_plus.xml
 create mode 100644 indra/newview/skins/default/xui/de/menu_people_blocked_view.xml
 create mode 100644 indra/newview/skins/default/xui/de/menu_people_friends_view.xml
 create mode 100644 indra/newview/skins/default/xui/de/menu_people_groups_view.xml
 create mode 100644 indra/newview/skins/default/xui/de/menu_people_nearby_view.xml
 create mode 100644 indra/newview/skins/default/xui/de/menu_people_recent_view.xml
 create mode 100644 indra/newview/skins/default/xui/de/panel_conversation_list_item.xml
 create mode 100644 indra/newview/skins/default/xui/de/panel_conversation_log_list_item.xml
 create mode 100644 indra/newview/skins/default/xui/es/floater_conversation_log.xml
 create mode 100644 indra/newview/skins/default/xui/es/floater_conversation_preview.xml
 create mode 100644 indra/newview/skins/default/xui/es/floater_voice_chat_volume.xml
 create mode 100644 indra/newview/skins/default/xui/es/floater_voice_volume.xml
 create mode 100644 indra/newview/skins/default/xui/es/menu_conversation.xml
 create mode 100644 indra/newview/skins/default/xui/es/menu_conversation_log_gear.xml
 create mode 100644 indra/newview/skins/default/xui/es/menu_conversation_log_view.xml
 create mode 100644 indra/newview/skins/default/xui/es/menu_im_conversation.xml
 create mode 100644 indra/newview/skins/default/xui/es/menu_im_session_showmodes.xml
 create mode 100644 indra/newview/skins/default/xui/es/menu_participant_view.xml
 create mode 100644 indra/newview/skins/default/xui/es/menu_people_blocked_gear.xml
 create mode 100644 indra/newview/skins/default/xui/es/menu_people_blocked_plus.xml
 create mode 100644 indra/newview/skins/default/xui/es/menu_people_blocked_view.xml
 create mode 100644 indra/newview/skins/default/xui/es/menu_people_friends_view.xml
 create mode 100644 indra/newview/skins/default/xui/es/menu_people_groups_view.xml
 create mode 100644 indra/newview/skins/default/xui/es/menu_people_nearby_view.xml
 create mode 100644 indra/newview/skins/default/xui/es/menu_people_recent_view.xml
 create mode 100644 indra/newview/skins/default/xui/es/panel_conversation_list_item.xml
 create mode 100644 indra/newview/skins/default/xui/es/panel_conversation_log_list_item.xml
 create mode 100644 indra/newview/skins/default/xui/fr/floater_conversation_log.xml
 create mode 100644 indra/newview/skins/default/xui/fr/floater_conversation_preview.xml
 create mode 100644 indra/newview/skins/default/xui/fr/floater_voice_chat_volume.xml
 create mode 100644 indra/newview/skins/default/xui/fr/floater_voice_volume.xml
 create mode 100644 indra/newview/skins/default/xui/fr/menu_conversation.xml
 create mode 100644 indra/newview/skins/default/xui/fr/menu_conversation_log_gear.xml
 create mode 100644 indra/newview/skins/default/xui/fr/menu_conversation_log_view.xml
 create mode 100644 indra/newview/skins/default/xui/fr/menu_im_conversation.xml
 create mode 100644 indra/newview/skins/default/xui/fr/menu_im_session_showmodes.xml
 create mode 100644 indra/newview/skins/default/xui/fr/menu_participant_view.xml
 create mode 100644 indra/newview/skins/default/xui/fr/menu_people_blocked_gear.xml
 create mode 100644 indra/newview/skins/default/xui/fr/menu_people_blocked_plus.xml
 create mode 100644 indra/newview/skins/default/xui/fr/menu_people_blocked_view.xml
 create mode 100644 indra/newview/skins/default/xui/fr/menu_people_friends_view.xml
 create mode 100644 indra/newview/skins/default/xui/fr/menu_people_groups_view.xml
 create mode 100644 indra/newview/skins/default/xui/fr/menu_people_nearby_view.xml
 create mode 100644 indra/newview/skins/default/xui/fr/menu_people_recent_view.xml
 create mode 100644 indra/newview/skins/default/xui/fr/panel_conversation_list_item.xml
 create mode 100644 indra/newview/skins/default/xui/fr/panel_conversation_log_list_item.xml
 create mode 100644 indra/newview/skins/default/xui/it/floater_conversation_log.xml
 create mode 100644 indra/newview/skins/default/xui/it/floater_conversation_preview.xml
 create mode 100644 indra/newview/skins/default/xui/it/floater_voice_chat_volume.xml
 create mode 100644 indra/newview/skins/default/xui/it/floater_voice_volume.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_conversation.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_conversation_log_gear.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_conversation_log_view.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_im_conversation.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_im_session_showmodes.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_participant_view.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_people_blocked_gear.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_people_blocked_plus.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_people_blocked_view.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_people_friends_view.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_people_groups_view.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_people_nearby_view.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_people_recent_view.xml
 create mode 100644 indra/newview/skins/default/xui/it/panel_conversation_list_item.xml
 create mode 100644 indra/newview/skins/default/xui/it/panel_conversation_log_list_item.xml
 create mode 100644 indra/newview/skins/default/xui/ja/floater_conversation_log.xml
 create mode 100644 indra/newview/skins/default/xui/ja/floater_conversation_preview.xml
 create mode 100644 indra/newview/skins/default/xui/ja/floater_voice_chat_volume.xml
 create mode 100644 indra/newview/skins/default/xui/ja/floater_voice_volume.xml
 create mode 100644 indra/newview/skins/default/xui/ja/menu_conversation.xml
 create mode 100644 indra/newview/skins/default/xui/ja/menu_conversation_log_gear.xml
 create mode 100644 indra/newview/skins/default/xui/ja/menu_conversation_log_view.xml
 create mode 100644 indra/newview/skins/default/xui/ja/menu_im_conversation.xml
 create mode 100644 indra/newview/skins/default/xui/ja/menu_im_session_showmodes.xml
 create mode 100644 indra/newview/skins/default/xui/ja/menu_participant_view.xml
 create mode 100644 indra/newview/skins/default/xui/ja/menu_people_blocked_gear.xml
 create mode 100644 indra/newview/skins/default/xui/ja/menu_people_blocked_plus.xml
 create mode 100644 indra/newview/skins/default/xui/ja/menu_people_blocked_view.xml
 create mode 100644 indra/newview/skins/default/xui/ja/menu_people_friends_view.xml
 create mode 100644 indra/newview/skins/default/xui/ja/menu_people_groups_view.xml
 create mode 100644 indra/newview/skins/default/xui/ja/menu_people_nearby_view.xml
 create mode 100644 indra/newview/skins/default/xui/ja/menu_people_recent_view.xml
 create mode 100644 indra/newview/skins/default/xui/ja/panel_conversation_list_item.xml
 create mode 100644 indra/newview/skins/default/xui/ja/panel_conversation_log_list_item.xml
 create mode 100644 indra/newview/skins/default/xui/pt/floater_conversation_log.xml
 create mode 100644 indra/newview/skins/default/xui/pt/floater_conversation_preview.xml
 create mode 100644 indra/newview/skins/default/xui/pt/floater_voice_chat_volume.xml
 create mode 100644 indra/newview/skins/default/xui/pt/floater_voice_volume.xml
 create mode 100644 indra/newview/skins/default/xui/pt/menu_conversation.xml
 create mode 100644 indra/newview/skins/default/xui/pt/menu_conversation_log_gear.xml
 create mode 100644 indra/newview/skins/default/xui/pt/menu_conversation_log_view.xml
 create mode 100644 indra/newview/skins/default/xui/pt/menu_im_conversation.xml
 create mode 100644 indra/newview/skins/default/xui/pt/menu_im_session_showmodes.xml
 create mode 100644 indra/newview/skins/default/xui/pt/menu_participant_view.xml
 create mode 100644 indra/newview/skins/default/xui/pt/menu_people_blocked_gear.xml
 create mode 100644 indra/newview/skins/default/xui/pt/menu_people_blocked_plus.xml
 create mode 100644 indra/newview/skins/default/xui/pt/menu_people_blocked_view.xml
 create mode 100644 indra/newview/skins/default/xui/pt/menu_people_friends_view.xml
 create mode 100644 indra/newview/skins/default/xui/pt/menu_people_groups_view.xml
 create mode 100644 indra/newview/skins/default/xui/pt/menu_people_nearby_view.xml
 create mode 100644 indra/newview/skins/default/xui/pt/menu_people_recent_view.xml
 create mode 100644 indra/newview/skins/default/xui/pt/panel_conversation_list_item.xml
 create mode 100644 indra/newview/skins/default/xui/pt/panel_conversation_log_list_item.xml
 create mode 100644 indra/newview/skins/default/xui/ru/floater_conversation_log.xml
 create mode 100644 indra/newview/skins/default/xui/ru/floater_conversation_preview.xml
 create mode 100644 indra/newview/skins/default/xui/ru/floater_voice_chat_volume.xml
 create mode 100644 indra/newview/skins/default/xui/ru/floater_voice_volume.xml
 create mode 100644 indra/newview/skins/default/xui/ru/menu_conversation.xml
 create mode 100644 indra/newview/skins/default/xui/ru/menu_conversation_log_gear.xml
 create mode 100644 indra/newview/skins/default/xui/ru/menu_conversation_log_view.xml
 create mode 100644 indra/newview/skins/default/xui/ru/menu_im_conversation.xml
 create mode 100644 indra/newview/skins/default/xui/ru/menu_im_session_showmodes.xml
 create mode 100644 indra/newview/skins/default/xui/ru/menu_participant_view.xml
 create mode 100644 indra/newview/skins/default/xui/ru/menu_people_blocked_gear.xml
 create mode 100644 indra/newview/skins/default/xui/ru/menu_people_blocked_plus.xml
 create mode 100644 indra/newview/skins/default/xui/ru/menu_people_blocked_view.xml
 create mode 100644 indra/newview/skins/default/xui/ru/menu_people_friends_view.xml
 create mode 100644 indra/newview/skins/default/xui/ru/menu_people_groups_view.xml
 create mode 100644 indra/newview/skins/default/xui/ru/menu_people_nearby_view.xml
 create mode 100644 indra/newview/skins/default/xui/ru/menu_people_recent_view.xml
 create mode 100644 indra/newview/skins/default/xui/ru/panel_conversation_list_item.xml
 create mode 100644 indra/newview/skins/default/xui/ru/panel_conversation_log_list_item.xml
 create mode 100644 indra/newview/skins/default/xui/tr/floater_conversation_log.xml
 create mode 100644 indra/newview/skins/default/xui/tr/floater_conversation_preview.xml
 create mode 100644 indra/newview/skins/default/xui/tr/floater_voice_chat_volume.xml
 create mode 100644 indra/newview/skins/default/xui/tr/floater_voice_volume.xml
 create mode 100644 indra/newview/skins/default/xui/tr/menu_conversation.xml
 create mode 100644 indra/newview/skins/default/xui/tr/menu_conversation_log_gear.xml
 create mode 100644 indra/newview/skins/default/xui/tr/menu_conversation_log_view.xml
 create mode 100644 indra/newview/skins/default/xui/tr/menu_im_conversation.xml
 create mode 100644 indra/newview/skins/default/xui/tr/menu_im_session_showmodes.xml
 create mode 100644 indra/newview/skins/default/xui/tr/menu_participant_view.xml
 create mode 100644 indra/newview/skins/default/xui/tr/menu_people_blocked_gear.xml
 create mode 100644 indra/newview/skins/default/xui/tr/menu_people_blocked_plus.xml
 create mode 100644 indra/newview/skins/default/xui/tr/menu_people_blocked_view.xml
 create mode 100644 indra/newview/skins/default/xui/tr/menu_people_friends_view.xml
 create mode 100644 indra/newview/skins/default/xui/tr/menu_people_groups_view.xml
 create mode 100644 indra/newview/skins/default/xui/tr/menu_people_nearby_view.xml
 create mode 100644 indra/newview/skins/default/xui/tr/menu_people_recent_view.xml
 create mode 100644 indra/newview/skins/default/xui/tr/panel_conversation_list_item.xml
 create mode 100644 indra/newview/skins/default/xui/tr/panel_conversation_log_list_item.xml
 create mode 100644 indra/newview/skins/default/xui/zh/floater_conversation_log.xml
 create mode 100644 indra/newview/skins/default/xui/zh/floater_conversation_preview.xml
 create mode 100644 indra/newview/skins/default/xui/zh/floater_voice_chat_volume.xml
 create mode 100644 indra/newview/skins/default/xui/zh/floater_voice_volume.xml
 create mode 100644 indra/newview/skins/default/xui/zh/menu_conversation.xml
 create mode 100644 indra/newview/skins/default/xui/zh/menu_conversation_log_gear.xml
 create mode 100644 indra/newview/skins/default/xui/zh/menu_conversation_log_view.xml
 create mode 100644 indra/newview/skins/default/xui/zh/menu_im_conversation.xml
 create mode 100644 indra/newview/skins/default/xui/zh/menu_im_session_showmodes.xml
 create mode 100644 indra/newview/skins/default/xui/zh/menu_participant_view.xml
 create mode 100644 indra/newview/skins/default/xui/zh/menu_people_blocked_gear.xml
 create mode 100644 indra/newview/skins/default/xui/zh/menu_people_blocked_plus.xml
 create mode 100644 indra/newview/skins/default/xui/zh/menu_people_blocked_view.xml
 create mode 100644 indra/newview/skins/default/xui/zh/menu_people_friends_view.xml
 create mode 100644 indra/newview/skins/default/xui/zh/menu_people_groups_view.xml
 create mode 100644 indra/newview/skins/default/xui/zh/menu_people_nearby_view.xml
 create mode 100644 indra/newview/skins/default/xui/zh/menu_people_recent_view.xml
 create mode 100644 indra/newview/skins/default/xui/zh/panel_conversation_list_item.xml
 create mode 100644 indra/newview/skins/default/xui/zh/panel_conversation_log_list_item.xml

diff --git a/indra/newview/skins/default/xui/de/floater_conversation_log.xml b/indra/newview/skins/default/xui/de/floater_conversation_log.xml
new file mode 100644
index 00000000000..19620a0fc9a
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/floater_conversation_log.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_conversation_log" title="UNTERHALTUNGSPROTOKOLL">
+	<panel name="buttons_panel">
+		<filter_editor label="Nach Personen filtern" name="people_filter_input"/>
+		<menu_button name="conversation_view_btn" tool_tip="Anzeige-/Sortieroptionen"/>
+		<menu_button name="conversations_gear_btn" tool_tip="Aktionen für ausgewählte Person/Gruppe"/>
+	</panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_conversation_preview.xml b/indra/newview/skins/default/xui/de/floater_conversation_preview.xml
new file mode 100644
index 00000000000..010ad19076d
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/floater_conversation_preview.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="preview_conversation" title="UNTERHALTUNG:">
+	<floater.string name="Title">
+		UNTERHALTUNG: [NAME]
+	</floater.string>
+	<text name="page_label" value="Seite"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_im_container.xml b/indra/newview/skins/default/xui/de/floater_im_container.xml
index 95eda97938c..5bf916c8e98 100644
--- a/indra/newview/skins/default/xui/de/floater_im_container.xml
+++ b/indra/newview/skins/default/xui/de/floater_im_container.xml
@@ -1,2 +1,29 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<multi_floater name="floater_im_box" title="GESPRÄCHE"/>
+<multi_floater name="floater_im_box" title="GESPRÄCHE">
+	<string name="collapse_icon" value="Conv_toolbar_collapse"/>
+	<string name="expand_icon" value="Conv_toolbar_expand"/>
+	<layout_stack name="conversations_stack">
+		<layout_panel name="conversations_layout_panel">
+			<layout_stack name="conversations_pane_buttons_stack">
+				<layout_panel name="conversations_pane_buttons_expanded">
+					<menu_button name="sort_btn" tool_tip="Anzeige-/Sortieroptionen"/>
+					<button name="add_btn" tool_tip="Neue Unterhaltung starten"/>
+					<button name="speak_btn" tool_tip="Ãœber Ihr Mikrofon mit anderen sprechen"/>
+				</layout_panel>
+				<layout_panel name="conversations_pane_buttons_collapsed">
+					<button name="expand_collapse_btn" tool_tip="Diese Liste schließen/erweitern"/>
+				</layout_panel>
+			</layout_stack>
+		</layout_panel>
+		<layout_panel name="messages_layout_panel">
+			<panel_container name="im_box_tab_container">
+				<panel name="stub_panel">
+					<button name="stub_collapse_btn" tool_tip="Dieses Fenster schließen"/>
+					<text name="stub_textbox">
+						Diese Unterhaltung erscheint in einem separaten Fenster.   [secondlife:/// Zurückholen.]
+					</text>
+				</panel>
+			</panel_container>
+		</layout_panel>
+	</layout_stack>
+</multi_floater>
diff --git a/indra/newview/skins/default/xui/de/floater_im_session.xml b/indra/newview/skins/default/xui/de/floater_im_session.xml
index abaf2756519..f96eb72cb1d 100644
--- a/indra/newview/skins/default/xui/de/floater_im_session.xml
+++ b/indra/newview/skins/default/xui/de/floater_im_session.xml
@@ -1,8 +1,59 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="panel_im">
-	<layout_stack name="im_panels">
-		<layout_panel>
-			<line_editor label="An" name="chat_editor"/>
-		</layout_panel>
-	</layout_stack>
+	<floater.string name="call_btn_start">
+		Conv_toolbar_open_call
+	</floater.string>
+	<floater.string name="call_btn_stop">
+		Conv_toolbar_hang_up
+	</floater.string>
+	<floater.string name="collapseline_icon" value="Conv_collapse_to_one_line"/>
+	<floater.string name="expandline_icon" value="Conv_expand_one_line"/>
+	<floater.string name="collapse_icon" value="Conv_toolbar_collapse"/>
+	<floater.string name="expand_icon" value="Conv_toolbar_expand"/>
+	<floater.string name="tear_off_icon" value="Conv_toolbar_arrow_ne"/>
+	<floater.string name="return_icon" value="Conv_toolbar_arrow_sw"/>
+	<floater.string name="participant_added" value="[NAME] wurde zur Unterhaltung eingeladen."/>
+	<floater.string name="multiple_participants_added" value="[NAME] wurden zur Unterhaltung eingeladen."/>
+	<floater.string name="tooltip_to_separate_window" value="Diese Unterhaltung in separates Fenster verschieben"/>
+	<floater.string name="tooltip_to_main_window" value="Diese Unterhaltung zurück ins Hauptfenster verschieben"/>
+	<floater.string name="start_call_button_tooltip" value="Voice-Verbindung öffnen"/>
+	<floater.string name="end_call_button_tooltip" value="Voice-Verbindung schließen"/>
+	<floater.string name="expcol_button_not_tearoff_tooltip" value="Dieses Fenster schließen"/>
+	<floater.string name="expcol_button_tearoff_and_expanded_tooltip" value="Teilnehmerliste schließen"/>
+	<floater.string name="expcol_button_tearoff_and_collapsed_tooltip" value="Teilnehmerliste erweitern"/>
+	<view name="contents_view">
+		<layout_stack name="main_stack">
+			<layout_panel name="toolbar_panel">
+				<menu_button name="view_options_btn" tool_tip="Anzeige-/Sortieroptionen"/>
+				<menu_button name="gear_btn" tool_tip="Aktionen für ausgewählte Person"/>
+				<button name="add_btn" tool_tip="Jemanden zu dieser Unterhaltung hinzufügen"/>
+				<button name="voice_call_btn" tool_tip="Voice-Verbindung öffnen"/>
+				<button name="close_btn" tool_tip="Diese Unterhaltung beenden"/>
+				<button name="expand_collapse_btn" tool_tip="Dieses Fenster schließen/erweitern"/>
+			</layout_panel>
+			<layout_panel name="body_panel">
+				<layout_stack name="im_panels">
+					<layout_panel name="right_part_holder">
+						<panel name="trnsAndChat_panel">
+							<layout_stack name="translate_and_chat_stack">
+								<layout_panel name="translate_chat_checkbox_lp">
+									<check_box label="Chat übersetzen" name="translate_chat_checkbox"/>
+								</layout_panel>
+							</layout_stack>
+						</panel>
+					</layout_panel>
+				</layout_stack>
+			</layout_panel>
+			<layout_panel name="chat_layout_panel">
+				<layout_stack name="input_panels">
+					<layout_panel name="input_editor_layout_panel">
+						<chat_editor label="An" name="chat_editor"/>
+					</layout_panel>
+					<layout_panel name="input_button_layout_panel">
+						<button name="minz_btn" tool_tip="Nachrichtenfenster anzeigen/ausblenden"/>
+					</layout_panel>
+				</layout_stack>
+			</layout_panel>
+		</layout_stack>
+	</view>
 </floater>
diff --git a/indra/newview/skins/default/xui/de/floater_incoming_call.xml b/indra/newview/skins/default/xui/de/floater_incoming_call.xml
index 213d9f54f5c..f13842f4792 100644
--- a/indra/newview/skins/default/xui/de/floater_incoming_call.xml
+++ b/indra/newview/skins/default/xui/de/floater_incoming_call.xml
@@ -10,7 +10,7 @@
 		Anonym
 	</floater.string>
 	<floater.string name="VoiceInviteP2P">
-		ruft an.
+		ruft Sie an.
 	</floater.string>
 	<floater.string name="VoiceInviteAdHoc">
 		ist einem Voice-Konferenz-Chat beigetreten.
@@ -25,9 +25,9 @@
 		Möchten Sie [CURRENT_CHAT] verlassen und diesem Voice-Chat beitreten?
 	</floater.string>
 	<text name="question">
-		Möchten Sie [CURRENT_CHAT] verlassen und diesem Voice-Chat beitreten?
+		Wenn Sie antworten, wird Ihre aktuelle Voice-Unterhaltung beendet.
 	</text>
-	<button label="Akzeptieren" label_selected="Akzeptieren" name="Accept"/>
-	<button label="Ablehnen" label_selected="Ablehnen" name="Reject"/>
-	<button label="IM starten" name="Start IM"/>
+	<button label="Annehmen" label_selected="Annehmen" name="Accept"/>
+	<button label="Ignorieren" label_selected="Ignorieren" name="Reject"/>
+	<button label="Stattdessen IM öffnen" name="Start IM"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/de/floater_pathfinding_console.xml b/indra/newview/skins/default/xui/de/floater_pathfinding_console.xml
index ebf8f01632f..88e9f53a4c3 100644
--- a/indra/newview/skins/default/xui/de/floater_pathfinding_console.xml
+++ b/indra/newview/skins/default/xui/de/floater_pathfinding_console.xml
@@ -71,7 +71,7 @@
 			<text name="show_label">
 				Anzeigen:
 			</text>
-			<check_box label="Welt" name="show_world"/>
+			<check_box label="Test" name="show_world"/>
 			<check_box label="Nur bewegliche Objekte" name="show_world_movables_only"/>
 			<check_box label="Navmesh" name="show_navmesh"/>
 			<text name="show_walkability_label">
diff --git a/indra/newview/skins/default/xui/de/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/de/floater_texture_ctrl.xml
index 9585622516b..b794d879f0f 100644
--- a/indra/newview/skins/default/xui/de/floater_texture_ctrl.xml
+++ b/indra/newview/skins/default/xui/de/floater_texture_ctrl.xml
@@ -20,7 +20,7 @@
 	<button label="Leer" label_selected="Leer" name="Blank"/>
 	<button label="Keine" label_selected="Keine" name="None"/>
 	<button label="" label_selected="" name="Pipette"/>
-	<check_box initial_value="true" label="Live-Vorschau" name="apply_immediate_check"/>
+	<check_box initial_value="true" label="Jetzt übernehmen" name="apply_immediate_check"/>
 	<text name="preview_disabled" value="Vorschau deaktiviert"/>
 	<filter_editor label="Texturen filtern" name="inventory search editor"/>
 	<check_box initial_value="false" label="Ordner anzeigen" name="show_folders_check"/>
diff --git a/indra/newview/skins/default/xui/de/floater_voice_chat_volume.xml b/indra/newview/skins/default/xui/de/floater_voice_chat_volume.xml
new file mode 100644
index 00000000000..15259639e83
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/floater_voice_chat_volume.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_voice_volume" title="VOICE-CHAT-LAUTSTÄRKE">
+	<slider label="Voice-Chat" name="chat_voice_volume"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_voice_effect.xml b/indra/newview/skins/default/xui/de/floater_voice_effect.xml
index 413a46525c5..8d37950480a 100644
--- a/indra/newview/skins/default/xui/de/floater_voice_effect.xml
+++ b/indra/newview/skins/default/xui/de/floater_voice_effect.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater label="Orte" name="voice_effects" title="VOICE MORPHING">
+<floater label="Orte" name="voice_effects" title="VOICE-MORPHING-VORSCHAU">
 	<string name="no_voice_effect">
 		(Kein Voice-Morphing)
 	</string>
diff --git a/indra/newview/skins/default/xui/de/floater_voice_volume.xml b/indra/newview/skins/default/xui/de/floater_voice_volume.xml
new file mode 100644
index 00000000000..258627c94f4
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/floater_voice_volume.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!--
+  Not can_close / no title to avoid window chrome
+  Single instance - only have one at a time, recycle it each spawn
+-->
+<floater name="floater_voice_volume" title="LAUTSTÄRKE">
+	<slider name="volume_slider" tool_tip="Lautstärke" value="0.5"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/menu_cof_gear.xml b/indra/newview/skins/default/xui/de/menu_cof_gear.xml
index 54b218d22f7..2dd871b2eaa 100644
--- a/indra/newview/skins/default/xui/de/menu_cof_gear.xml
+++ b/indra/newview/skins/default/xui/de/menu_cof_gear.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear COF">
+<toggleable_menu name="Gear COF">
 	<menu label="Neue Kleider" name="COF.Gear.New_Clothes"/>
-	<menu label="Neue Körperteile" name="COF.Geear.New_Body_Parts"/>
-</menu>
+	<menu label="Neue Körperteile" name="COF.Gear.New_Body_Parts"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_conversation.xml b/indra/newview/skins/default/xui/de/menu_conversation.xml
new file mode 100644
index 00000000000..30d3ab79e1a
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/menu_conversation.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_conversation_participant">
+	<menu_item_call label="Unterhaltung schließen" name="close_conversation"/>
+	<menu_item_call label="Unterhaltung öffnen" name="open_voice_conversation"/>
+	<menu_item_call label="Voice-Verbindung trennen" name="disconnect_from_voice"/>
+	<menu_item_call label="Profil anzeigen" name="view_profile"/>
+	<menu_item_call label="IM" name="im"/>
+	<menu_item_call label="Teleport anbieten" name="offer_teleport"/>
+	<menu_item_call label="Voice-Anruf" name="voice_call"/>
+	<menu_item_call label="Chatverlauf..." name="chat_history"/>
+	<menu_item_call label="Freund hinzufügen" name="add_friend"/>
+	<menu_item_call label="Freund entfernen" name="remove_friend"/>
+	<menu_item_call label="Freunde entfernen" name="remove_friends"/>
+	<menu_item_call label="In Gruppe einladen..." name="invite_to_group"/>
+	<menu_item_call label="Hineinzoomen" name="zoom_in"/>
+	<menu_item_call label="Karte" name="map"/>
+	<menu_item_call label="Freigeben" name="share"/>
+	<menu_item_call label="Bezahlen" name="pay"/>
+	<menu_item_check label="Voice ignorieren" name="block_unblock"/>
+	<menu_item_check label="Text ignorieren" name="MuteText"/>
+	<menu_item_call label="Gruppenprofil" name="group_profile"/>
+	<menu_item_call label="Gruppe aktivieren" name="activate_group"/>
+	<menu_item_call label="Gruppe verlassen" name="leave_group"/>
+	<context_menu label="Moderatoroptionen" name="Moderator Options">
+		<menu_item_check label="Text-Chat zulassen" name="AllowTextChat"/>
+		<menu_item_call label="Diesen Teilnehmer stummschalten" name="ModerateVoiceMuteSelected"/>
+		<menu_item_call label="Stummschaltung für diesen Teilnehmer aufheben" name="ModerateVoiceUnMuteSelected"/>
+		<menu_item_call label="Alle stummschalten" name="ModerateVoiceMute"/>
+		<menu_item_call label="Stummschaltung für alle aufheben" name="ModerateVoiceUnmute"/>
+	</context_menu>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_conversation_log_gear.xml b/indra/newview/skins/default/xui/de/menu_conversation_log_gear.xml
new file mode 100644
index 00000000000..2ef87621281
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/menu_conversation_log_gear.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Conversation Context Menu">
+	<menu_item_call label="IM..." name="IM"/>
+	<menu_item_call label="Voice-Anruf..." name="Call"/>
+	<menu_item_call label="Chatverlauf öffnen..." name="Chat history"/>
+	<menu_item_call label="Profil anzeigen" name="View Profile"/>
+	<menu_item_call label="Teleport anbieten" name="teleport"/>
+	<menu_item_call label="Freund hinzufügen" name="add_friend"/>
+	<menu_item_call label="Freund entfernen" name="remove_friend"/>
+	<menu_item_call label="In Gruppe einladen..." name="Invite"/>
+	<menu_item_call label="Karte" name="Map"/>
+	<menu_item_call label="Freigeben" name="Share"/>
+	<menu_item_call label="Bezahlen" name="Pay"/>
+	<menu_item_check label="Ignorieren/Nicht mehr ignorieren" name="Block/Unblock"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_conversation_log_view.xml b/indra/newview/skins/default/xui/de/menu_conversation_log_view.xml
new file mode 100644
index 00000000000..ae3cc5bc970
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/menu_conversation_log_view.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_conversation_view">
+	<menu_item_check label="Nach Namen sortieren" name="sort_by_name"/>
+	<menu_item_check label="Nach Datum sortieren" name="sort_by_date"/>
+	<menu_item_check label="Freunde oben anzeigen" name="sort_by_friends"/>
+	<menu_item_call label="Verlaufsliste für „Chat in der Nähe“ anzeigen..." name="view_nearby_chat_history"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_im_conversation.xml b/indra/newview/skins/default/xui/de/menu_im_conversation.xml
new file mode 100644
index 00000000000..875524b19de
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/menu_im_conversation.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Conversation Gear Menu">
+	<menu_item_call label="Profil anzeigen" name="View Profile"/>
+	<menu_item_call label="Freund hinzufügen" name="Add Friend"/>
+	<menu_item_call label="Freund entfernen" name="remove_friend"/>
+	<menu_item_call label="Teleport anbieten" name="offer_teleport"/>
+	<menu_item_call label="In Gruppe einladen..." name="invite_to_group"/>
+	<menu_item_call label="Chatverlauf..." name="chat_history"/>
+	<menu_item_call label="Hineinzoomen" name="zoom_in"/>
+	<menu_item_call label="Karte" name="map"/>
+	<menu_item_call label="Freigeben" name="Share"/>
+	<menu_item_call label="Bezahlen" name="Pay"/>
+	<menu_item_check label="Voice ignorieren" name="Block/Unblock"/>
+	<menu_item_check label="Text ignorieren" name="MuteText"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_im_session_showmodes.xml b/indra/newview/skins/default/xui/de/menu_im_session_showmodes.xml
new file mode 100644
index 00000000000..48f62d29a10
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/menu_im_session_showmodes.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_modes">
+	<menu_item_check label="Kompaktansicht" name="compact_view"/>
+	<menu_item_check label="Erweiterte Ansicht" name="expanded_view"/>
+	<menu_item_check label="Zeit anzeigen" name="IMShowTime"/>
+	<menu_item_check label="Namen in privaten Unterhaltungen anzeigen" name="IMShowNamesForP2PConv"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_object_icon.xml b/indra/newview/skins/default/xui/de/menu_object_icon.xml
index 8b6c558416b..f92fa0f82b7 100644
--- a/indra/newview/skins/default/xui/de/menu_object_icon.xml
+++ b/indra/newview/skins/default/xui/de/menu_object_icon.xml
@@ -2,4 +2,6 @@
 <menu name="Object Icon Menu">
 	<menu_item_call label="Objektprofil..." name="Object Profile"/>
 	<menu_item_call label="Ignorieren..." name="Block"/>
+	<menu_item_call label="Auf Karte anzeigen" name="show_on_map"/>
+	<menu_item_call label="Zu Objektposition teleportieren" name="teleport_to_object"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/de/menu_outfit_gear.xml b/indra/newview/skins/default/xui/de/menu_outfit_gear.xml
index d56c93533cf..0cf3c09882b 100644
--- a/indra/newview/skins/default/xui/de/menu_outfit_gear.xml
+++ b/indra/newview/skins/default/xui/de/menu_outfit_gear.xml
@@ -23,6 +23,8 @@
 		<menu_item_call label="Neues Haar" name="New Hair"/>
 		<menu_item_call label="Neue Augen" name="New Eyes"/>
 	</menu>
+	<menu_item_call label="Alle Ordner erweitern" name="expand"/>
+	<menu_item_call label="Alle Ordner schließen" name="collapse"/>
 	<menu_item_call label="Outfit neu benennen" name="rename"/>
 	<menu_item_call label="Outfit löschen" name="delete_outfit"/>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_participant_view.xml b/indra/newview/skins/default/xui/de/menu_participant_view.xml
new file mode 100644
index 00000000000..6ceb9ac4c5c
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/menu_participant_view.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="participant_manu_view">
+	<menu_item_check label="Unterhaltungen nach Typ sortieren" name="sort_sessions_by_type"/>
+	<menu_item_check label="Unterhaltungen nach Namen sortieren" name="sort_sessions_by_name"/>
+	<menu_item_check label="Unterhaltungen nach jüngster Aktivität sortieren" name="sort_sessions_by_recent"/>
+	<menu_item_check label="Teilnehmer nach Namen sortieren" name="sort_participants_by_name"/>
+	<menu_item_check label="Teilnehmer nach jüngster Aktivität sortieren" name="sort_participants_by_recent"/>
+	<menu_item_call label="Chat-Einstellungen..." name="chat_preferences"/>
+	<menu_item_call label="Privatsphäre-Einstellungen..." name="privacy_preferences"/>
+	<menu_item_check label="Unterhaltungsprotokoll..." name="Conversation"/>
+	<menu_item_check label="Chat in der Nähe übersetzen" name="Translate_chat"/>
+	<menu_item_check label="Ãœbersetzungseinstellungen..." name="Translation_settings"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_people_blocked_gear.xml b/indra/newview/skins/default/xui/de/menu_people_blocked_gear.xml
new file mode 100644
index 00000000000..f69a453e58c
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/menu_people_blocked_gear.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_blocked_gear">
+	<menu_item_call label="Nicht mehr ignorieren" name="unblock"/>
+	<menu_item_call label="Profil..." name="profile"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_people_blocked_plus.xml b/indra/newview/skins/default/xui/de/menu_people_blocked_plus.xml
new file mode 100644
index 00000000000..041fde139db
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/menu_people_blocked_plus.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_blocked_plus">
+	<menu_item_call label="Einwohner nach Namen ignorieren..." name="block_resident_by_name"/>
+	<menu_item_call label="Objekt nach Namen ignorieren" name="block_object_by_name"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_people_blocked_view.xml b/indra/newview/skins/default/xui/de/menu_people_blocked_view.xml
new file mode 100644
index 00000000000..1dae593ebe8
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/menu_people_blocked_view.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_blocked_view">
+	<menu_item_check label="Nach Namen sortieren" name="sort_by_name"/>
+	<menu_item_check label="Nach Typ sortieren" name="sort_by_type"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_people_friends_view.xml b/indra/newview/skins/default/xui/de/menu_people_friends_view.xml
new file mode 100644
index 00000000000..da4890fe96c
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/menu_people_friends_view.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="Nach Namen sortieren" name="sort_name"/>
+	<menu_item_check label="Nach Status sortieren" name="sort_status"/>
+	<menu_item_check label="Symbole für Personen anzeigen" name="view_icons"/>
+	<menu_item_check label="Erteilte Genehmigungen anzeigen" name="view_permissions"/>
+	<menu_item_check label="Unterhaltungsprotokoll anzeigen..." name="view_conversation"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_people_groups.xml b/indra/newview/skins/default/xui/de/menu_people_groups.xml
index 76225ba2414..a69c82d3d85 100644
--- a/indra/newview/skins/default/xui/de/menu_people_groups.xml
+++ b/indra/newview/skins/default/xui/de/menu_people_groups.xml
@@ -2,7 +2,7 @@
 <menu name="menu_group_plus">
 	<menu_item_call label="Info anzeigen" name="View Info"/>
 	<menu_item_call label="Chat" name="Chat"/>
-	<menu_item_call label="Anrufen" name="Call"/>
+	<menu_item_call label="Voice-Anruf" name="Call"/>
 	<menu_item_call label="Aktivieren" name="Activate"/>
 	<menu_item_call label="Verlassen" name="Leave"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/de/menu_people_groups_view.xml b/indra/newview/skins/default/xui/de/menu_people_groups_view.xml
new file mode 100644
index 00000000000..20386bba567
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/menu_people_groups_view.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="Gruppensymbole anzeigen" name="Display Group Icons"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_people_nearby.xml b/indra/newview/skins/default/xui/de/menu_people_nearby.xml
index 1db964357fe..cdbb3ae917c 100644
--- a/indra/newview/skins/default/xui/de/menu_people_nearby.xml
+++ b/indra/newview/skins/default/xui/de/menu_people_nearby.xml
@@ -1,13 +1,16 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Avatar Context Menu">
-	<menu_item_call label="Profil anzeigen" name="View Profile"/>
-	<menu_item_call label="Freund hinzufügen" name="Add Friend"/>
-	<menu_item_call label="Freund entfernen" name="Remove Friend"/>
-	<menu_item_call label="IM" name="IM"/>
-	<menu_item_call label="Anrufen" name="Call"/>
-	<menu_item_call label="Karte" name="Map"/>
-	<menu_item_call label="Teilen" name="Share"/>
-	<menu_item_call label="Bezahlen" name="Pay"/>
-	<menu_item_check label="Ignorieren/Freischalten" name="Block/Unblock"/>
-	<menu_item_call label="Teleport anbieten" name="teleport"/>
+	<menu_item_call label="Profil anzeigen" name="view_profile"/>
+	<menu_item_call label="IM" name="im"/>
+	<menu_item_call label="Teleport anbieten" name="offer_teleport"/>
+	<menu_item_call label="Voice-Anruf" name="voice_call"/>
+	<menu_item_call label="Chatverlauf anzeigen..." name="chat_history"/>
+	<menu_item_call label="Freund hinzufügen" name="add_friend"/>
+	<menu_item_call label="Freund entfernen" name="remove_friend"/>
+	<menu_item_call label="In Gruppe einladen..." name="invite_to_group"/>
+	<menu_item_call label="Hineinzoomen" name="zoom_in"/>
+	<menu_item_call label="Karte" name="map"/>
+	<menu_item_call label="Freigeben" name="share"/>
+	<menu_item_call label="Bezahlen" name="pay"/>
+	<menu_item_check label="Ignorieren/Nicht mehr ignorieren" name="block_unblock"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/de/menu_people_nearby_multiselect.xml
index b6e99edfe1f..ba6578e2d1d 100644
--- a/indra/newview/skins/default/xui/de/menu_people_nearby_multiselect.xml
+++ b/indra/newview/skins/default/xui/de/menu_people_nearby_multiselect.xml
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Multi-Selected People Context Menu">
-	<menu_item_call label="Freunde hinzufügen" name="Add Friends"/>
-	<menu_item_call label="Freunde entfernen" name="Remove Friend"/>
-	<menu_item_call label="IM" name="IM"/>
-	<menu_item_call label="Anrufen" name="Call"/>
-	<menu_item_call label="Teilen" name="Share"/>
-	<menu_item_call label="Bezahlen" name="Pay"/>
-	<menu_item_call label="Teleport anbieten" name="teleport"/>
+	<menu_item_call label="Freunde hinzufügen" name="add_friends"/>
+	<menu_item_call label="Freunde entfernen" name="remove_friends"/>
+	<menu_item_call label="IM" name="im"/>
+	<menu_item_call label="Anrufen" name="call"/>
+	<menu_item_call label="Freigeben" name="share"/>
+	<menu_item_call label="Bezahlen" name="pay"/>
+	<menu_item_call label="Teleport anbieten" name="offer_teleport"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_people_nearby_view.xml b/indra/newview/skins/default/xui/de/menu_people_nearby_view.xml
new file mode 100644
index 00000000000..d38ec650376
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/menu_people_nearby_view.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="Nach letzten Sprechern sortieren" name="sort_by_recent_speakers"/>
+	<menu_item_check label="Nach Namen sortieren" name="sort_name"/>
+	<menu_item_check label="Nach Nähe sortieren" name="sort_distance"/>
+	<menu_item_check label="Symbole für Personen anzeigen" name="view_icons"/>
+	<menu_item_check label="Karte anzeigen" name="view_map"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_people_recent_view.xml b/indra/newview/skins/default/xui/de/menu_people_recent_view.xml
new file mode 100644
index 00000000000..a116ad0bc16
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/menu_people_recent_view.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="Nach jüngsten sortieren" name="sort_most"/>
+	<menu_item_check label="Nach Namen sortieren" name="sort_name"/>
+	<menu_item_check label="Symbole für Personen anzeigen" name="view_icons"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_url_agent.xml b/indra/newview/skins/default/xui/de/menu_url_agent.xml
index 9a808088fbe..c61ebb0eae2 100644
--- a/indra/newview/skins/default/xui/de/menu_url_agent.xml
+++ b/indra/newview/skins/default/xui/de/menu_url_agent.xml
@@ -1,6 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Url Popup">
-	<menu_item_call label="Einwohnerprofil anzeigen" name="show_agent"/>
+	<menu_item_call label="Profil anzeigen" name="show_agent"/>
+	<menu_item_call label="IM senden..." name="send_im"/>
+	<menu_item_call label="Freund hinzufügen..." name="add_friend"/>
 	<menu_item_call label="Name in Zwischenablage kopieren" name="url_copy_label"/>
 	<menu_item_call label="SLurl in die Zwischenablage kopieren" name="url_copy"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_url_objectim.xml b/indra/newview/skins/default/xui/de/menu_url_objectim.xml
index 90d3763d9c0..77b7004e44f 100644
--- a/indra/newview/skins/default/xui/de/menu_url_objectim.xml
+++ b/indra/newview/skins/default/xui/de/menu_url_objectim.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Url Popup">
-	<menu_item_call label="Objektinformationen anzeigen" name="show_object"/>
+	<menu_item_call label="Objektprofil..." name="show_object"/>
 	<menu_item_call label="Auf Karte zeigen" name="show_on_map"/>
 	<menu_item_call label="Zu Objekt-Position teleportieren" name="teleport_to_object"/>
 	<menu_item_call label="Objektname in Zwischenablage kopieren" name="url_copy_label"/>
diff --git a/indra/newview/skins/default/xui/de/menu_viewer.xml b/indra/newview/skins/default/xui/de/menu_viewer.xml
index 845df1f0503..2c9d9fa7f12 100644
--- a/indra/newview/skins/default/xui/de/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/de/menu_viewer.xml
@@ -16,10 +16,7 @@
 			<menu_item_call label="Animation meines Avatars stoppen" name="Stop Animating My Avatar"/>
 			<menu_item_call label="Gehen/Rennen/Fliegen..." name="Walk / run / fly"/>
 		</menu>
-		<menu label="Status" name="Status">
-			<menu_item_call label="Abwesend" name="Set Away"/>
-			<menu_item_call label="Beschäftigt" name="Set Busy"/>
-		</menu>
+		<menu label="Status" name="Status"/>
 		<menu_item_call label="L$ kaufen..." name="Buy and Sell L$"/>
 		<menu_item_call label="Händler-Outbox..." name="MerchantOutbox"/>
 		<menu_item_call label="Kontoübersicht..." name="Manage My Account">
@@ -32,14 +29,18 @@
 		<menu_item_call label="[APP_NAME] schließen" name="Quit"/>
 	</menu>
 	<menu label="Unterhalten" name="Communicate">
-		<menu_item_check label="Chat..." name="Nearby Chat"/>
+		<menu_item_check label="Unterhaltungen..." name="Conversations"/>
+		<menu_item_check label="Chat in der Nähe..." name="Nearby Chat"/>
 		<menu_item_check label="Sprechen" name="Speak"/>
-		<menu_item_check label="Voice-Einstellungen..." name="Nearby Voice"/>
-		<menu_item_check label="Voice-Morphing..." name="ShowVoice"/>
+		<menu label="Voice-Morphing" name="VoiceMorphing">
+			<menu_item_check label="Kein Voice-Morphing" name="NoVoiceMorphing"/>
+			<menu_item_check label="Vorschau..." name="Preview"/>
+			<menu_item_call label="Abonnieren..." name="Subscribe"/>
+		</menu>
 		<menu_item_check label="Gesten..." name="Gestures"/>
-		<menu_item_call label="Freunde" name="My Friends"/>
-		<menu_item_call label="Gruppen" name="My Groups"/>
-		<menu_item_call label="Leute in der Nähe" name="Active Speakers"/>
+		<menu_item_check label="Freunde" name="My Friends"/>
+		<menu_item_check label="Gruppen" name="My Groups"/>
+		<menu_item_check label="Leute in der Nähe" name="Active Speakers"/>
 		<menu_item_call label="Blockierliste" name="Block List"/>
 	</menu>
 	<menu label="Welt" name="World">
@@ -115,7 +116,6 @@
 			<menu_item_call label="Kaufen" name="Menu Object Buy"/>
 			<menu_item_call label="Nehmen" name="Menu Object Take"/>
 			<menu_item_call label="Kopie nehmen" name="Take Copy"/>
-			<menu_item_call label="Objekt wieder in meinem Inventar speichern" name="Save Object Back to My Inventory"/>
 			<menu_item_call label="Wieder in Objektinhalt speichern" name="Save Object Back to Object Contents"/>
 			<menu_item_call label="Objekt zurückgeben" name="Return Object back to Owner"/>
 		</menu>
@@ -130,6 +130,7 @@
 			<menu_item_call label="Linksets..." name="pathfinding_linksets_menu_item"/>
 			<menu_item_call label="Figuren..." name="pathfinding_characters_menu_item"/>
 			<menu_item_call label="Anzeigen/Testen..." name="pathfinding_console_menu_item"/>
+			<menu_item_call label="Region neu formen" name="pathfinding_rebake_navmesh_item"/>
 		</menu>
 		<menu label="Optionen" name="Options">
 			<menu_item_check label="Erweiterte Berechtigungen anzeigen" name="DebugPermissions"/>
@@ -159,6 +160,13 @@
 	<menu label="Hilfe" name="Help">
 		<menu_item_call label="Anweisungen..." name="How To"/>
 		<menu_item_call label="[SECOND_LIFE]-Hilfe" name="Second Life Help"/>
+		<menu_item_call label="Benutzerhandbuch" name="User’s guide"/>
+		<menu_item_call label="Knowledge Base" name="Knowledge Base"/>
+		<menu_item_call label="Wiki" name="Wiki"/>
+		<menu_item_call label="Community-Foren" name="Community Forums"/>
+		<menu_item_call label="Support-Portal" name="Support portal"/>
+		<menu_item_call label="[SECOND_LIFE]-Neuigkeiten" name="Second Life News"/>
+		<menu_item_call label="[SECOND_LIFE]-Blogs" name="Second Life Blogs"/>
 		<menu_item_call label="Missbrauch melden" name="Report Abuse"/>
 		<menu_item_call label="Fehler melden" name="Report Bug"/>
 		<menu_item_call label="INFO ÃœBER [APP_NAME]" name="About Second Life"/>
@@ -385,9 +393,14 @@
 				<menu_item_call label="Weiblich testen" name="Test Female"/>
 				<menu_item_check label="Avatarauswahl zulassen" name="Allow Select Avatar"/>
 			</menu>
+			<menu label="Animationsgeschwindigkeit" name="Animation Speed">
+				<menu_item_call label="Alle Animationen 10 % schneller" name="All Animations 10 Faster"/>
+				<menu_item_call label="Alle Animationen 10 % langsamer" name="All Animations 10 Slower"/>
+				<menu_item_call label="Alle Animationsgeschwindigkeiten zurücksetzen" name="Reset All Animation Speed"/>
+				<menu_item_check label="Zeitlupen-Animationen" name="Slow Motion Animations"/>
+			</menu>
 			<menu_item_call label="Param auf Standard erzwingen" name="Force Params to Default"/>
 			<menu_item_check label="Animations-Info" name="Animation Info"/>
-			<menu_item_check label="Zeitlupen-Animationen" name="Slow Motion Animations"/>
 			<menu_item_check label="Kamerafokus anzeigen" name="Show Look At"/>
 			<menu_item_check label="Klickpunkt anzeigen??" name="Show Point At"/>
 			<menu_item_check label="Fehler in Landaktualisierung beseitigen" name="Debug Joint Updates"/>
diff --git a/indra/newview/skins/default/xui/de/notifications.xml b/indra/newview/skins/default/xui/de/notifications.xml
index 4b7a60b4eb7..dc0d7dc6b4b 100644
--- a/indra/newview/skins/default/xui/de/notifications.xml
+++ b/indra/newview/skins/default/xui/de/notifications.xml
@@ -523,6 +523,24 @@ Weitere Informationen finden Sie auf [_URL].
 		</url>
 		<usetemplate ignoretext="Mein Grafiktreiber ist veraltet" name="okcancelignore" notext="Nein" yestext="Ja"/>
 	</notification>
+	<notification name="AMDOldDriver">
+		Wahrscheinlich gibt es einen neueren Treiber für Ihren Grafikchip.  Durch Aktualisieren der Grafiktreiber lässt sich die Leistung u. U. beträchtlich verbessern.
+
+    Unter [_URL] nach aktualisierten Treibern suchen?
+		<url name="url">
+			http://support.amd.com/de/Pages/AMDSupportHub.aspx
+		</url>
+		<usetemplate ignoretext="Mein Grafiktreiber ist veraltet" name="okcancelignore" notext="Nein" yestext="Ja"/>
+	</notification>
+	<notification name="NVIDIAOldDriver">
+		Wahrscheinlich gibt es einen neueren Treiber für Ihren Grafikchip.  Durch Aktualisieren der Grafiktreiber lässt sich die Leistung u. U. beträchtlich verbessern.
+
+    Unter [_URL] nach aktualisierten Treibern suchen?
+		<url name="url">
+			http://www.nvidia.com/Download/index.aspx?lang=de-de
+		</url>
+		<usetemplate ignoretext="Mein Grafiktreiber ist veraltet" name="okcancelignore" notext="Nein" yestext="Ja"/>
+	</notification>
 	<notification name="UnknownGPU">
 		Ihr System verwendet eine Grafikkarte, die [APP_NAME] nicht erkennt.
 Dies passiert dann, wenn die neue Hardware noch nicht mit [APP_NAME] getestet wurde.  Wahrscheinlich wird das Programm richtig ausgeführt, aber Sie müssen eventuell ein paar Grafikeinstellungen vornehmen.
@@ -1558,10 +1576,13 @@ Diese Gruppe verlassen?
 		Sie können gerade keine Freundschaft anbieten. Warten Sie kurz und versuchen Sie es dann noch einmal.
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
-	<notification name="BusyModeSet">
-		Beschäftigt-Modus ist aktiviert.
-Chat und Instant Messages werden ausgeblendet. Instant Messages (Sofortnachrichten) erhalten Ihre Beschäftigt-Antwort. Alle Teleport-Angebote werden abgelehnt. Alle Inventar-Angebote werden in Ihren Papierkorb geschoben.
-		<usetemplate ignoretext="Ich ändere meinen Status zu Beschäftigt" name="okignore" yestext="OK"/>
+	<notification name="DoNotDisturbModeSet">
+		Nicht-stören-Modus ist aktiviert:  Sie erhalten keine Benachrichtigung über eingehende Kommunikation.
+
+- Andere Einwohner erhalten Ihre Nicht-stören-Antwort (festgelegt in Einstellungen &gt; Allgemein).
+- Teleport-Angebote werden abgelehnt.
+- Voice-Anrufe werden abgelehnt.
+		<usetemplate ignoretext="Ich ändere meinen Status zu „Nicht stören“" name="okignore" yestext="OK"/>
 	</notification>
 	<notification name="JoinedTooManyGroupsMember">
 		Sie haben die maximale Anzahl an Gruppen erreicht. Bitte verlassen Sie eine andere Gruppe, um dieser beitreten zu können oder lehnen Sie das Angebot ab.
@@ -2049,6 +2070,10 @@ Inventarobjekt(e) verschieben?
 		Möchten Sie Ihre [http://secondlife.com/account/ Startseite] aufrufen, um Ihre Konto-Statistik anzuzeigen?
 		<usetemplate ignoretext="Meinen Browser starten, um meine Konto-Statistik anzuzeigen" name="okcancelignore" notext="Abbrechen" yestext="Gehe zu Seite"/>
 	</notification>
+	<notification name="ConfirmAddingChatParticipants">
+		Wenn Sie eine Person zu einer vorhandenen Unterhaltung hinzufügen, wird eine neue Unterhaltung erstellt.  Alle Teilnehmer erhalten neue Unterhaltungsbenachrichtigungen.
+		<usetemplate ignoretext="Hinzufügen von Chat-Teilnehmern bestätigen" name="okcancelignore" notext="Abbrechen" yestext="OK"/>
+	</notification>
 	<notification name="ConfirmQuit">
 		Wirklich beenden?
 		<usetemplate ignoretext="Bestätigen, bevor Sitzung beendet wird" name="okcancelignore" notext="Nicht beenden" yestext="Beenden"/>
@@ -2122,14 +2147,14 @@ Möchten Sie es mit dem ausgewählten Objekt ersetzen?
 			<button ignore="Nie ersetzen" name="No" text="Abbrechen"/>
 		</form>
 	</notification>
-	<notification label="Beschäftigt-Modus-Warnung" name="BusyModePay">
-		Sie sind im Beschäftigt-Modus, sodass Sie im Austausch für diese Zahlung keine Objekte erhalten können.
+	<notification label="Warnung für Nicht-stören-Modus" name="DoNotDisturbModePay">
+		Sie haben den Nicht-stören-Modus aktiviert. Sie erhalten keine Artikel, die im Gegenzug für diese Zahlung angeboten werden.
 
-Möchten Sie den Bechäftigt-Modus verlassen, bevor Sie diese Transaktion abschließen?
+Möchten Sie den Nicht-stören-Modus deaktivieren, bevor Sie diese Transaktion abschließen?
 		<form name="form">
-			<ignore name="ignore" save_option="true" text="Ich bin im Begriff eine Person oder ein Objekt zu bezahlen, während ich im Modus Beschäftigt bin."/>
-			<button ignore="Beschäftigt-Modus immer deaktivieren" name="Yes" text="OK"/>
-			<button ignore="Beschäftigt-Modus aktiviert lassen" name="No" text="Abbrechen"/>
+			<ignore name="ignore" text="Ich bin im Begriff eine Person oder ein Objekt zu bezahlen, während ich im Nicht-stören-Modus bin."/>
+			<button ignore="„Nicht stören“-Modus immer verlassen" name="Yes" text="OK"/>
+			<button ignore="„Nicht stören“-Modus nie verlassen" name="No" text="Abbrechen"/>
 		</form>
 	</notification>
 	<notification name="ConfirmDeleteProtectedCategory">
@@ -2264,11 +2289,8 @@ Von einer Webseite zu diesem Formular linken, um anderen leichten Zugang zu dies
 	<notification name="GroupNotice">
 		Betreff: [SUBJECT], Nachricht: [MESSAGE]
 	</notification>
-	<notification name="FriendOnline">
-		&lt;nolink&gt;[NAME]&lt;/nolink&gt; ist online
-	</notification>
-	<notification name="FriendOffline">
-		&lt;nolink&gt;[NAME]&lt;/nolink&gt; ist offline
+	<notification name="FriendOnlineOffline">
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; ist [STATUS]
 	</notification>
 	<notification name="AddSelfFriend">
 		Obwohl Sie ein sehr netter Mensch sind, können Sie sich nicht selbst als Freund hinzufügen.
@@ -2496,13 +2518,6 @@ Fliegen ist hier nicht möglich.
 	<notification name="DynamicPathfindingDisabled">
 		Dynamisches Pathfinding ist in dieser Region nicht aktiviert. Geskriptete Objekte, die Pathfinding-LSL-Aufrufe verwenden, funktionieren in dieser Region u. U. nicht wie erwartet.
 	</notification>
-	<notification name="PathfindingRebakeNavmesh">
-		Wenn Sie bestimmte Objekte in dieser Region ändern, verhalten sich andere bewegliche Objekte u. U. inkorrekt. Um dieses Problem zu beheben, klicken Sie auf die Schaltfläche „Region neu formen“. Um weitere Informationen zu erhalten, klicken Sie auf „Hilfe“.
-		<url name="url">
-			http://wiki.secondlife.com/wiki/Pathfinding_Tools_in_the_Second_Life_Viewer
-		</url>
-		<usetemplate helptext="Hilfe" ignoretext="Wenn Sie bestimmte Objekte in dieser Region ändern, verhalten sich andere bewegliche Objekte u. U. inkorrekt." name="okhelpignore" yestext="OK"/>
-	</notification>
 	<notification name="PathfindingCannotRebakeNavmesh">
 		Fehler aufgetreten. Möglicherweise ist ein Netzwerk- oder Serverproblem aufgetreten oder Sie haben nicht die erforderlichen Baurechte. Dieses Problem lässt sich manchmal durch Ab- und Anmelden lösen.
 		<usetemplate name="okbutton" yestext="OK"/>
@@ -2765,7 +2780,7 @@ Ist das OK?
 	<notification name="ScriptQuestionCaution">
 		Achtung: Das Objekt „&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;“ fordert uneingeschränkten Zugriff auf Ihr Linden-Dollar-Konto an. Wenn Sie Zugriff gewähren, kann dieses Objekt jederzeit und ohne weitere Warnung Ihr Konto belasten bzw. ganz leeren.
   
-Eine solche Anforderung ist nur in seltenen Fällen legitim. Gewähren Sie dem Objekt nur dann Zugriff, wenn Sie genau verstehen, wieso ein solcher Zugriff auf Ihr Konto erforderlich ist.
+Gewähren Sie dem Objekt nur dann Zugriff, wenn Sie genau verstehen, wieso ein solcher Zugriff auf Ihr Konto erforderlich ist.
 		<form name="form">
 			<button name="Grant" text="Uneingeschränkten Zugriff gewähren"/>
 			<button name="Deny" text="Verweigern"/>
@@ -3346,4 +3361,633 @@ Versuch abgebrochen.
 		Sie sind dabei, [NUM_ITEMS] Objekte zu löschen. Möchten Sie diesen Vorgang wirklich fortsetzen?
 		<usetemplate ignoretext="Möchten Sie wirklich mehrere Objekte löschen?" name="okcancelignore" notext="Nein" yestext="Ja"/>
 	</notification>
+	<notification name="AvatarFrozen">
+		[AV_FREEZER] hat Sie eingefroren. Sie können sich nicht bewegen oder mit der Welt interagieren.
+	</notification>
+	<notification name="AvatarFrozenDuration">
+		[AV_FREEZER] hat Sie [AV_FREEZE_TIME] Sekunden lang eingefroren. Sie können sich nicht bewegen oder mit der Welt interagieren.
+	</notification>
+	<notification name="YouFrozeAvatar">
+		Avatar eingefroren.
+	</notification>
+	<notification name="AvatarHasUnFrozenYou">
+		[AV_FREEZER] hat Sie aufgetaut.
+	</notification>
+	<notification name="AvatarUnFrozen">
+		Avatar aufgetaut.
+	</notification>
+	<notification name="AvatarFreezeFailure">
+		Einfrieren fehlgeschlagen, da Sie keine Berechtigung für diese Parzelle haben.
+	</notification>
+	<notification name="AvatarFreezeThaw">
+		Sie sind nicht mehr eingefroren und können sich frei bewegen.
+	</notification>
+	<notification name="AvatarCantFreeze">
+		Dieser Benutzer kann nicht eingefroren werden.
+	</notification>
+	<notification name="NowOwnObject">
+		Sie sind jetzt Eigentümer des Objekts [OBJECT_NAME]
+	</notification>
+	<notification name="CantRezOnLand">
+		Objekt kann nicht an [OBJECT_POS] gerezzt werden, da der Landeigentümer dies nicht zulässt.  Machen Sie den Landeigentümer mit dem Landwerkzeug ausfindig.
+	</notification>
+	<notification name="RezFailTooManyRequests">
+		Objekt kann nicht gerezzt werden, da zu viele Anforderungen vorliegen.
+	</notification>
+	<notification name="SitFailCantMove">
+		Sie können sich nicht hinsetzen, da Sie zur Zeit unbeweglich sind.
+	</notification>
+	<notification name="SitFailNotAllowedOnLand">
+		Sie können sich nicht hinsetzen, da Sie auf diesem Land keine Berechtigung dazu haben.
+	</notification>
+	<notification name="SitFailNotSameRegion">
+		Kommen Sie näher heran.  Sitzen auf Objekt nicht möglich, da
+es sich nicht in der gleichen Region befindet wie Sie.
+	</notification>
+	<notification name="NoNewObjectRegionFull">
+		Neues Objekt kann nicht erstellt werden. Die Region ist voll.
+	</notification>
+	<notification name="FailedToPlaceObject">
+		Objekt konnte nicht an festgelegtem Ort platziert werden.  Versuchen Sie es erneut.
+	</notification>
+	<notification name="NoOwnNoGardening">
+		Auf Land, das Sie nicht besitzen, können Sie keine Bäume und Gräser erstellen.
+	</notification>
+	<notification name="NoCopyPermsNoObject">
+		Kopieren fehlgeschlagen, da Sie keine Berechtigung zum Kopieren des Objekts „OBJ_NAME]“ besitzen.
+	</notification>
+	<notification name="NoTransPermsNoObject">
+		Kopieren fehlgeschlagen, weil Objekt „[OBJ_NAME]“ nicht an Sie übertragen werden kann.
+	</notification>
+	<notification name="AddToNavMeshNoCopy">
+		Kopieren fehlgeschlagen, weil Objekt „[OBJ_NAME]“ zum Navmesh beiträgt.
+	</notification>
+	<notification name="DupeWithNoRootsSelected">
+		Ohne ausgewählte Hauptobjekte duplizieren.
+	</notification>
+	<notification name="CantDupeCuzRegionIsFull">
+		Objekte können nicht dupliziert werden, da die Region voll ist.
+	</notification>
+	<notification name="CantDupeCuzParcelNotFound">
+		Objekte können nicht dupliziert werden, da die Parzelle, in der sie sich befinden, nicht auffindbar ist.
+	</notification>
+	<notification name="CantCreateCuzParcelFull">
+		Objekt kann nicht erstellt werden, da 
+die Parzelle voll ist.
+	</notification>
+	<notification name="RezAttemptFailed">
+		Versuch zum Rezzen eines Objekts fehlgeschlagen.
+	</notification>
+	<notification name="ToxicInvRezAttemptFailed">
+		Objekt, das in dieser Region zu Problemen geführt hat, kann nicht erstellt werden.
+	</notification>
+	<notification name="InvItemIsBlacklisted">
+		Dieses Inventarobjekt ist auf der schwarzen Liste.
+	</notification>
+	<notification name="NoCanRezObjects">
+		Sie können gegenwärtig keine Objekte erstellen.
+	</notification>
+	<notification name="LandSearchBlocked">
+		Landsuche blockiert.
+Sie haben zu viele Landsuchen in zu kurzer Zeit durchgeführt.
+Warten Sie kurz und versuchen Sie es noch einmal.
+	</notification>
+	<notification name="NotEnoughResourcesToAttach">
+		Nicht genügend Skriptressourcen verfügbar, um Objekt anzuhängen.
+	</notification>
+	<notification name="YouDiedAndGotTPHome">
+		Sie sind gestorben und wurden nach Hause teleportiert
+	</notification>
+	<notification name="EjectComingSoon">
+		Sie nicht hier nicht mehr zugelassen und haben [EJECT_TIME] Sekunden Zeit, um zu gehen.
+	</notification>
+	<notification name="NoEnterServerFull">
+		Sie können diese Region nicht betreten, da 
+der Server voll ist.
+	</notification>
+	<notification name="SaveBackToInvDisabled">
+		Erneutes Speichern im Inventar ist deaktiviert.
+	</notification>
+	<notification name="NoExistNoSaveToContents">
+		„[OBJ_NAME]“ kann nicht im Objektinhalt gespeichert werden, da das Objekt, aus dem es gerezzt wurde, nicht mehr existiert.
+	</notification>
+	<notification name="NoModNoSaveToContents">
+		„[OBJ_NAME]“ kann nicht in Objektinhalt gespeichert werden, da Sie nicht die Berechtigung zum Modifizieren des Objekts „[DEST_NAME]“ besitzen.
+	</notification>
+	<notification name="NoSaveBackToInvDisabled">
+		„[OBJ_NAME]“ kann nicht erneut im Inventar gespeichert werden – dieser Vorgang wurde deaktiviert.
+	</notification>
+	<notification name="NoCopyNoSelCopy">
+		Sie können Ihre Auswahl nicht kopieren, da Sie nicht die Berechtigung zum Kopieren des Objekts „[OBJ_NAME]“ haben.
+	</notification>
+	<notification name="NoTransNoSelCopy">
+		Sie können Ihre Auswahl nicht kopieren, da das Objekt „[OBJ_NAME]“ nicht übertragbar ist.
+	</notification>
+	<notification name="NoTransNoCopy">
+		Sie können Ihre Auswahl nicht kopieren, da das Objekt „[OBJ_NAME]“ nicht übertragbar ist.
+	</notification>
+	<notification name="NoPermsNoRemoval">
+		Entfernen des Objekts „[OBJ_NAME]“ aus dem Simulator wird vom Berechtigungssystem nicht gestattet.
+	</notification>
+	<notification name="NoModNoSaveSelection">
+		Sie können Ihre Auswahl nicht speichern, da Sie keine Berechtigung zum Modifizieren des Objekts „[OBJ_NAME]“ besitzen.
+	</notification>
+	<notification name="NoCopyNoSaveSelection">
+		Ihre Auswahl kann nicht gespeichert werden, da das Objekt „[OBJ_NAME]“ nicht kopiert werden kann.
+	</notification>
+	<notification name="NoModNoTaking">
+		Sie können Ihre Auswahl nicht in Empfang nehmen, da Sie nicht die Berechtigung zum Modifizieren des Objekts „[OBJ_NAME]“ haben.
+	</notification>
+	<notification name="RezDestInternalError">
+		Interner Fehler: Unbekannter Zielttyp.
+	</notification>
+	<notification name="DeleteFailObjNotFound">
+		Löschen fehlgeschlagen, da Objekt nicht gefunden wurde
+	</notification>
+	<notification name="SorryCantEjectUser">
+		Dieser Benutzer kann nicht hinausgeworfen werden.
+	</notification>
+	<notification name="RegionSezNotAHome">
+		Diese Region gestattet nicht, dass Sie hier Ihr Zuhause festlegen.
+	</notification>
+	<notification name="HomeLocationLimits">
+		Ihr Zuhause kann sich nur auf Ihrem eigenen Land oder in einem Infohub auf dem Mainland befinden.
+	</notification>
+	<notification name="HomePositionSet">
+		Position für Zuhause festgelegt.
+	</notification>
+	<notification name="AvatarEjected">
+		Avatar hinausgeworfen.
+	</notification>
+	<notification name="AvatarEjectFailed">
+		Hinauswerfen fehlgeschlagen, da Sie keine Admin-Berechtigung für diese Parzelle haben.
+	</notification>
+	<notification name="CantMoveObjectParcelFull">
+		Objekt „[OBJECT_NAME]“ kann nicht nach
+[OBJ_POSITION] in Region [REGION_NAME] verschoben werden, da die Parzelle voll ist.
+	</notification>
+	<notification name="CantMoveObjectParcelPerms">
+		Objekt „[OBJECT_NAME]“ kann nicht nach
+[OBJ_POSITION] in Region [REGION_NAME] verschoben werden, da Ihre Objekte auf dieser Parzelle nicht gestattet sind.
+	</notification>
+	<notification name="CantMoveObjectParcelResources">
+		Objekt „[OBJECT_NAME]“ kann nicht nach
+[OBJ_POSITION] in Region [REGION_NAME] verschoben werden, da nicht genügend Ressourcen für dieses Objekt auf dieser Parzelle vorhanden sind.
+	</notification>
+	<notification name="CantMoveObjectRegionVersion">
+		Objekt „[OBJECT_NAME]“ kann nicht nach
+[OBJ_POSITION] in Region [REGION_NAME] verschoben werden, da die andere Region eine ältere Version verwendet, die das Empfangen dieses Objekts per Regionswechsel nicht unterstützt.
+	</notification>
+	<notification name="CantMoveObjectNavMesh">
+		Objekt „[OBJECT_NAME]“ kann nicht nach
+[OBJ_POSITION] in Region [REGION_NAME] verschoben werden, da Sie das Navmesh nicht regionsübergreifend modifizieren können.
+	</notification>
+	<notification name="CantMoveObjectWTF">
+		Objekt „[OBJECT_NAME]“ kann nicht nach
+[OBJ_POSITION] in Region [REGION_NAME] verschoben werden, da ein unbekannter Fehler vorliegt. ([FAILURE_TYPE])
+	</notification>
+	<notification name="NoPermModifyObject">
+		Ihnen fehlt die Berechtigung zum Modifizieren dieses Objekts.
+	</notification>
+	<notification name="CantEnablePhysObjContributesToNav">
+		Physik kann nicht für ein Objekt aktiviert werden, das zum Navmesh beiträgt.
+	</notification>
+	<notification name="CantEnablePhysKeyframedObj">
+		Physik für Keyframe-Objekte kann nicht aktiviert werden.
+	</notification>
+	<notification name="CantEnablePhysNotEnoughLandResources">
+		Physik für Objekte kann nicht aktiviert werden – nicht genügend Landressourcen.
+	</notification>
+	<notification name="CantEnablePhysCostTooGreat">
+		Physik für Objekt mit Physikressourcenkosten höher als [MAX_OBJECTS] kann nicht aktiviert werden.
+	</notification>
+	<notification name="PhantomWithConcavePiece">
+		Dieses Objekt kann kein konkaves Teil enthalten, da es ein Phantom ist und zum Navmesh beiträgt.
+	</notification>
+	<notification name="UnableAddItem">
+		Objekt konnte nicht hinzugefügt werden.
+	</notification>
+	<notification name="UnableEditItem">
+		Kein Bearbeiten möglich.
+	</notification>
+	<notification name="NoPermToEdit">
+		Bearbeiten nicht gestattet.
+	</notification>
+	<notification name="NoPermToCopyInventory">
+		Kopieren dieses Inventars nicht gestattet.
+	</notification>
+	<notification name="CantSaveItemDoesntExist">
+		Kein Speichern in Objektinhalt möglich: Objekt nicht mehr vorhanden.
+	</notification>
+	<notification name="CantSaveItemAlreadyExists">
+		Kein Speichern in Objektinhalt möglich: Artikel mit diesem Namen ist bereits im Inventar vorhanden.
+	</notification>
+	<notification name="CantSaveModifyAttachment">
+		Kein Speichern in Objektinhalt möglich: Dadurch würden die Anhängeberechtigungen geändert.
+	</notification>
+	<notification name="TooManyScripts">
+		Zu viele Skripts.
+	</notification>
+	<notification name="UnableAddScript">
+		Skript konnte nicht hinzugefügt werden.
+	</notification>
+	<notification name="AssetServerTimeoutObjReturn">
+		Asset-Server hat nicht rechtzeitig reagiert.  Objekt wurde zum Sim zurückübertragen.
+	</notification>
+	<notification name="RegionDisablePhysicsShapes">
+		In dieser Region sind keine Physikformen aktiviert.
+	</notification>
+	<notification name="NoModNavmeshAcrossRegions">
+		Sie können das Navmesh nicht regionsübergreifend modifizieren.
+	</notification>
+	<notification name="NoSetPhysicsPropertiesOnObjectType">
+		Für diesen Objekttyp können keine Physikeigenschaften gesetzt werden.
+	</notification>
+	<notification name="NoSetRootPrimWithNoShape">
+		Hauptprim kann nicht auf formlos eingestellt werden.
+	</notification>
+	<notification name="NoRegionSupportPhysMats">
+		In dieser Region sind keine Physikmaterialien aktiviert.
+	</notification>
+	<notification name="OnlyRootPrimPhysMats">
+		Nur bei Hauptprims können die Physikmaterialien angepasst werden.
+	</notification>
+	<notification name="NoSupportCharacterPhysMats">
+		Die Anwendung von Physikmaterialien auf Personen wird noch nicht unterstützt.
+	</notification>
+	<notification name="InvalidPhysMatProperty">
+		Eine oder mehrere der angegebenen Eigenschaften für Physikmaterialien waren ungültig.
+	</notification>
+	<notification name="NoPermsAlterStitchingMeshObj">
+		Sie können den Nahttyp eines Mesh-Objekts nicht ändern.
+	</notification>
+	<notification name="NoPermsAlterShapeMeshObj">
+		Sie können die Form eines Mesh-Objekts nicht ändern.
+	</notification>
+	<notification name="FullRegionCantEnter">
+		Sie können diese Region nicht betreten, \nda die Region voll ist.
+	</notification>
+	<notification name="LinkFailedOwnersDiffer">
+		Verknüpfungsfehler – Eigentümer sind unterschiedlich
+	</notification>
+	<notification name="LinkFailedNoModNavmeshAcrossRegions">
+		Verknüpfungsfehler – Navmesh kann nicht regionsübergreifend modifiziert werden.
+	</notification>
+	<notification name="LinkFailedNoPermToEdit">
+		Verknüpfungsfehler, da Sie keine Berechtigung zum Bearbeiten haben.
+	</notification>
+	<notification name="LinkFailedTooManyPrims">
+		Verknüpfungsfehler – zu viele Primitive
+	</notification>
+	<notification name="LinkFailedCantLinkNoCopyNoTrans">
+		Verknüpfungsfehler – nichtkopierfähige Objekte können nicht mit nichtübertragungsfähigen Objekten verknüpft werden
+	</notification>
+	<notification name="LinkFailedNothingLinkable">
+		Verknüpfungsfehler – nichts zum Verknüpfen vorhanden.
+	</notification>
+	<notification name="LinkFailedTooManyPathfindingChars">
+		Verknüpfungsfehler – zu viele Pathfinding-Figuren
+	</notification>
+	<notification name="LinkFailedInsufficientLand">
+		Verknüpfungsfehler – nicht genügend Landressourcen
+	</notification>
+	<notification name="LinkFailedTooMuchPhysics">
+		Objekt verwendet zu viele Physikressourcen – seine Dynamik wurde deaktiviert.
+	</notification>
+	<notification name="TeleportedHomeByObjectOnParcel">
+		Sie wurden vom Objekt „[OBJECT_NAME]“ auf der Parzelle „[PARCEL_NAME]“ nach Hause teleportiert
+	</notification>
+	<notification name="TeleportedHomeByObject">
+		Sie wurden von Objekt „[OBJECT_NAME]“ nach Hause teleportiert.
+	</notification>
+	<notification name="TeleportedByAttachment">
+		Sie wurden von einem Anhang an [ITEM_ID] teleportiert
+	</notification>
+	<notification name="TeleportedByObjectOnParcel">
+		Sie wurden von Objekt „[OBJECT_NAME]“ auf der Parzelle „[PARCEL_NAME]“ teleportiert
+	</notification>
+	<notification name="TeleportedByObjectOwnedBy">
+		Sie wurden von Objekt „[OBJECT_NAME]“, das [OWNER_ID] gehört, teleportiert
+	</notification>
+	<notification name="TeleportedByObjectUnknownUser">
+		Sie wurden von Objekt „[OBJECT_NAME]“, das einem unbekannten Benutzer gehört, teleportiert.
+	</notification>
+	<notification name="CantCreateObjectRegionFull">
+		Angefordertes Objekt kann nicht erstellt werden. Die Region ist voll.
+	</notification>
+	<notification name="CantAttackMultipleObjOneSpot">
+		Sie können nicht mehrere Objekte an ein und derselben Stelle anhängen.
+	</notification>
+	<notification name="CantCreateMultipleObjAtLoc">
+		Sie können hier nicht mehrere Objekte erstellen.
+	</notification>
+	<notification name="UnableToCreateObjTimeOut">
+		Angefordertes Objekt kann nicht erstellt werden. Objekt fehlt in Datenbank.
+	</notification>
+	<notification name="UnableToCreateObjUnknown">
+		Angefordertes Objekt kann nicht erstellt werden. Zeitüberschreitung bei Anforderung. Versuchen Sie es erneut.
+	</notification>
+	<notification name="UnableToCreateObjMissingFromDB">
+		Angefordertes Objekt kann nicht erstellt werden. Versuchen Sie es erneut.
+	</notification>
+	<notification name="RezFailureTookTooLong">
+		Fehler beim Rezzen; Laden des angeforderten Objekts hat zu lang gedauert.
+	</notification>
+	<notification name="FailedToPlaceObjAtLoc">
+		Objekt konnte nicht an angegebenem Ort platziert werden.  Versuchen Sie es erneut.
+	</notification>
+	<notification name="CantCreatePlantsOnLand">
+		Auf diesem Land können keine Pflanzen erstellt werden.
+	</notification>
+	<notification name="CantRestoreObjectNoWorldPos">
+		Objekt kann nicht wiederhergestellt werden. Keine Weltposition gefunden.
+	</notification>
+	<notification name="CantRezObjectInvalidMeshData">
+		Objekt kann nicht gerezzt werden, da seine Meshdaten ungültig sind.
+	</notification>
+	<notification name="CantRezObjectTooManyScripts">
+		Objekt kann nicht gerezzt werden, da die Region bereits zu viele Skripts aufweist.
+	</notification>
+	<notification name="CantCreateObjectNoAccess">
+		Ihr Zugangsberechtigungen gestatten nicht das Erstellen von Objekten an dieser Stelle.
+	</notification>
+	<notification name="CantCreateObject">
+		Sie können gegenwärtig keine Objekte erstellen.
+	</notification>
+	<notification name="InvalidObjectParams">
+		Ungültige Objektparameter
+	</notification>
+	<notification name="CantDuplicateObjectNoAcess">
+		Ihre Zugangsberechtigungen gestatten nicht das Duplizieren von Objekten an dieser Stelle.
+	</notification>
+	<notification name="CantChangeShape">
+		Sie können diese Form nicht ändern.
+	</notification>
+	<notification name="NoAccessToClaimObjects">
+		Ihr Zugangsberechtigungen gestatten nicht das Beanspruchen von Objekten an dieser Stelle.
+	</notification>
+	<notification name="DeedFailedNoPermToDeedForGroup">
+		Übertragung fehlgeschlagen, da Sie keine Berechtigung zum Übertragen von Objekten für Ihre Gruppe haben.
+	</notification>
+	<notification name="NoPrivsToBuyObject">
+		Ihr Zugangsberechtigungen gestatten nicht das Kaufen von Objekten an dieser Stelle.
+	</notification>
+	<notification name="CantAttachObjectAvatarSittingOnIt">
+		Objekt kann nicht angehängt werden, da ein Avatar darauf sitzt.
+	</notification>
+	<notification name="WhyAreYouTryingToWearShrubbery">
+		Bäume und Gräser können nicht als Anhänge getragen werden.
+	</notification>
+	<notification name="CantAttachGroupOwnedObjs">
+		Objekte im Gruppenbesitz können nicht angehängt werden.
+	</notification>
+	<notification name="CantAttachObjectsNotOwned">
+		Objekte, die Ihnen nicht gehören, können nicht angehängt werden.
+	</notification>
+	<notification name="CantAttachNavmeshObjects">
+		Objekte, die zum Navmesh beitragen, können nicht angehängt werden.
+	</notification>
+	<notification name="CantAttachObjectNoMovePermissions">
+		Objekt kann nicht angehängt werden, weil Sie es nicht verschieben dürfen.
+	</notification>
+	<notification name="CantAttachNotEnoughScriptResources">
+		Nicht genügend Skriptressourcen verfügbar, um Objekt anzuhängen.
+	</notification>
+	<notification name="CantDropItemTrialUser">
+		Ablegen von Objekten hier nicht möglich; versuchen Sie es mit dem kostenlosen Testbereich.
+	</notification>
+	<notification name="CantDropMeshAttachment">
+		Sie können keine Mesh-Anhänge ablegen. In Inventar zurückführen und inworld rezzen.
+	</notification>
+	<notification name="CantDropAttachmentNoPermission">
+		Anhang konnte nicht abgelegt werden: Ihnen fehlt die Berechtigung zum Ablegen an dieser Stelle.
+	</notification>
+	<notification name="CantDropAttachmentInsufficientLandResources">
+		Anhang konnte nicht abgelegt werden: nicht genügend Landressourcen verfügbar.
+	</notification>
+	<notification name="CantDropAttachmentInsufficientResources">
+		Anhänge konnten nicht abgelegt werden: nicht genügend Ressourcen.
+	</notification>
+	<notification name="CantDropObjectFullParcel">
+		Objekt kann nicht hier abgelegt werden.  Die Parzelle ist voll.
+	</notification>
+	<notification name="CantTouchObjectBannedFromParcel">
+		Dieses Objekt kann nicht berührt/angefasst werden, da Sie von der Landparzelle verbannt sind.
+	</notification>
+	<notification name="PlzNarrowDeleteParams">
+		Grenzen Sie Ihre Löschparameter ein.
+	</notification>
+	<notification name="UnableToUploadAsset">
+		Asset kann nicht hochgeladen werden.
+	</notification>
+	<notification name="CantTeleportCouldNotFindUser">
+		Keinen Benutzer zum Teleportieren nach Hause gefunden
+	</notification>
+	<notification name="GodlikeRequestFailed">
+		Anforderdung nach übernatürlichen Kräften fehlgeschlagen
+	</notification>
+	<notification name="GenericRequestFailed">
+		generische Anforderdung fehlgeschlagen
+	</notification>
+	<notification name="CantUploadPostcard">
+		Postkarte kann nicht hochgeladen werden.  Versuchen Sie es später erneut.
+	</notification>
+	<notification name="CantFetchInventoryForGroupNotice">
+		Inventardetails für Gruppenmitteilung kann nicht abgerufen werden.
+	</notification>
+	<notification name="CantSendGroupNoticeNotPermitted">
+		Gruppenmitteilung kann nicht gesendet werden – Vorgang nicht gestattet.
+	</notification>
+	<notification name="CantSendGroupNoticeCantConstructInventory">
+		Gruppenmitteilung kann nicht gesendet werden – Bauen von Inventar nicht möglich.
+	</notification>
+	<notification name="CantParceInventoryInNotice">
+		Inventar in Mitteilung kann nicht geparst werden.
+	</notification>
+	<notification name="TerrainUploadFailed">
+		Fehler beim Hochladen von Terrain.
+	</notification>
+	<notification name="TerrainFileWritten">
+		Terraindatei geschrieben.
+	</notification>
+	<notification name="TerrainFileWrittenStartingDownload">
+		Terraindatei geschrieben, Download beginnt...
+	</notification>
+	<notification name="TerrainBaked">
+		Terrain geformt.
+	</notification>
+	<notification name="TenObjectsDisabledPlzRefresh">
+		Nur die ersten 10 ausgewählten Objekte wurden deaktiviert. Aktualisieren Sie die Anzeige und wählen Sie ggf. weitere Objekte aus.
+	</notification>
+	<notification name="UpdateViewerBuyParcel">
+		Um diese Parzelle zu kaufen, müssen Sie Ihren Viewer aktualisieren.
+	</notification>
+	<notification name="CantBuyParcelNotForSale">
+		Kein Kauf möglich; die ausgewählte Parzelle steht nicht zum Verkauf.
+	</notification>
+	<notification name="CantBuySalePriceOrLandAreaChanged">
+		Kein Kauf möglich, da sich der Verkaufspreis oder die Fläche geändert haben.
+	</notification>
+	<notification name="CantBuyParcelNotAuthorized">
+		Sie sind nicht der autorisierte Käufer dieser Parzelle.
+	</notification>
+	<notification name="CantBuyParcelAwaitingPurchaseAuth">
+		Sie können diese Parzelle nicht kaufen, da sie bereits auf Kaufauthorisierung wartet.
+	</notification>
+	<notification name="CantBuildOverflowParcel">
+		Sie können hier keine Objekte bauen, denn dies würde den Rahmen der Parzelle sprengen.
+	</notification>
+	<notification name="SelectedMultipleOwnedLand">
+		Sie haben Land mit unterschiedlichen Besitzern ausgewählt. Wählen Sie ein kleineres Gebiet aus und versuchen Sie es erneut.
+	</notification>
+	<notification name="CantJoinTooFewLeasedParcels">
+		Auswahl enthält nicht genügend gemietete Parzellen zum Zusammenlegen.
+	</notification>
+	<notification name="CantDivideLandMultipleParcelsSelected">
+		Land kann nicht geteilt werden.\nMehr als eine Parzelle ist ausgewählt.\nWählen Sie ein kleineres Stück Land aus.
+	</notification>
+	<notification name="CantDivideLandCantFindParcel">
+		Land kann nicht geteilt werden.\nParzelle nicht auffindbar.\nMelden Sie das Problem über „Hilfe“ -&gt; „Fehler melden“...
+	</notification>
+	<notification name="CantDivideLandWholeParcelSelected">
+		Land kann nicht geteilt werden. Die gesamte Parzelle ist ausgewählt.\nWählen Sie ein kleineres Stück Land aus.
+	</notification>
+	<notification name="LandHasBeenDivided">
+		Land wurde geteilt.
+	</notification>
+	<notification name="PassPurchased">
+		Sie haben einen Pass gekauft.
+	</notification>
+	<notification name="RegionDisallowsClassifieds">
+		Region lässt keine Werbung zu.
+	</notification>
+	<notification name="LandPassExpireSoon">
+		Ihr Pass für dieses Land läuft demnächst ab.
+	</notification>
+	<notification name="CantSitNoSuitableSurface">
+		Keine geeignete Oberfläche zum Sitzen; probieren Sie es an einer anderen Stelle.
+	</notification>
+	<notification name="CantSitNoRoom">
+		Kein Platz zum Hinsetzen; probieren Sie es an einer anderen Stelle.
+	</notification>
+	<notification name="ClaimObjectFailedNoPermission">
+		Objektbeanspruchung fehlgeschlagen, da Sie keine Berechtigung haben.
+	</notification>
+	<notification name="ClaimObjectFailedNoMoney">
+		Objektbeanspruchung fehlgeschlagen, da Sie nicht genügend L$ haben.
+	</notification>
+	<notification name="CantDeedGroupLand">
+		Land in Gruppenbesitz kann nicht übertragen werden.
+	</notification>
+	<notification name="BuyObjectFailedNoMoney">
+		Objektkauf fehlgeschlagen, da Sie nicht genügend L$ haben.
+	</notification>
+	<notification name="BuyInventoryFailedNoMoney">
+		Inventarkauf fehlgeschlagen, da Sie nicht genügend L$ haben.
+	</notification>
+	<notification name="BuyPassFailedNoMoney">
+		Sie haben nicht genügend L$, um einen Pass für dieses Land zu kaufen.
+	</notification>
+	<notification name="CantBuyPassTryAgain">
+		Passkauf momentan nicht möglich.  Versuchen Sie es später erneut.
+	</notification>
+	<notification name="CantCreateObjectParcelFull">
+		Objekt kann nicht erstellt werden, \nda die Parzelle voll ist.
+	</notification>
+	<notification name="FailedPlacingObject">
+		Objekt konnte nicht an festgelegtem Ort platziert werden.  Versuchen Sie es erneut.
+	</notification>
+	<notification name="CantCreateLandmarkForEvent">
+		Landmarke für dieses Ereignis kann nicht erstellt werden.
+	</notification>
+	<notification name="GodBeatsFreeze">
+		Ihre übernatürlichen Kräfte heben das Einfrieren auf!
+	</notification>
+	<notification name="SpecialPowersRequestFailedLogged">
+		Anforderung nach Superpower fehlgeschlagen. Diese Anforderung wurde protokolliert.
+	</notification>
+	<notification name="ExpireExplanation">
+		Das System kann Ihre Anfrage momentan nicht verarbeiten. Zeitüberschreitung bei Anforderung.
+	</notification>
+	<notification name="DieExplanation">
+		Das System kann Ihre Anfrage nicht verarbeiten.
+	</notification>
+	<notification name="AddPrimitiveFailure">
+		Sie haben nicht genügend Geld, um Primitive zu erstellen.
+	</notification>
+	<notification name="RezObjectFailure">
+		Sie haben nicht genügend Geld, um Objekt zu erstellen.
+	</notification>
+	<notification name="ResetHomePositionNotLegal">
+		Zuhause-Position neu festlegen, da Zuhause nicht zulässig war.
+	</notification>
+	<notification name="CantInviteRegionFull">
+		Sie können gegenwärtig niemanden an Ihren Standort einladen, da die Region voll ist. Versuchen Sie es später erneut.
+	</notification>
+	<notification name="CantSetHomeAtRegion">
+		Diese Region gestattet nicht, dass Sie hier Ihr Zuhause festlegen.
+	</notification>
+	<notification name="ListValidHomeLocations">
+		Ihr Zuhause kann sich nur auf Ihrem eigenen Land oder in einem Infohub auf dem Mainland befinden.
+	</notification>
+	<notification name="SetHomePosition">
+		Position für Zuhause festgelegt.
+	</notification>
+	<notification name="CantDerezInventoryError">
+		Aufgrund eines Inventarfehlers kann das Rezzen dieses Objekts nicht aufgehoben werden.
+	</notification>
+	<notification name="CantCreateRequestedInv">
+		Angefordertes Inventar kann nicht erstellt werden.
+	</notification>
+	<notification name="CantCreateRequestedInvFolder">
+		Angeforderter Inventarordner kann nicht erstellt werden.
+	</notification>
+	<notification name="CantCreateInventory">
+		Dieses Inventar kann nicht erstellt werden.
+	</notification>
+	<notification name="CantCreateLandmark">
+		Landmarke kann nicht erstellt werden.
+	</notification>
+	<notification name="CantCreateOutfit">
+		Im Moment kann kein Outfit erstellt werden. Versuchen Sie es gleich noch einmal.
+	</notification>
+	<notification name="InventoryNotForSale">
+		Inventar steht nicht zum Verkauf.
+	</notification>
+	<notification name="CantFindInvItem">
+		Inventarobjekt kann nicht gefunden werden.
+	</notification>
+	<notification name="CantFindObject">
+		Objekt kann nicht gefunden werden.
+	</notification>
+	<notification name="CantTransfterMoneyRegionDisabled">
+		Geldüberweisungen an Objekte sind in dieser Region gegenwärtig deaktiviert.
+	</notification>
+	<notification name="CantPayNoAgent">
+		Nicht ersichtlich, wer bezahlt werden muss.
+	</notification>
+	<notification name="CantDonateToPublicObjects">
+		Sie können öffentlichen Objekten keine L$ geben.
+	</notification>
+	<notification name="InventoryCreationInWorldObjectFailed">
+		Inventarerstellung für Inworld-Objekt fehlgeschlagen.
+	</notification>
+	<notification name="UserBalanceOrLandUsageError">
+		Aufgrund eines internen Fehlers konnte Ihr Viewer nicht ordnungsgemäß aktualisiert werden.  Der in Ihrem Viewer angezeigte L$-Kontostand oder Parzellenbesitz stimmt möglicherweise nicht mit dem aktuellen Stand auf den Servern überein.
+	</notification>
+	<notification name="LargePrimAgentIntersect">
+		Große Prims, die sich mit anderen Spielern überschneiden, können nicht erstellt werden.  Bitte erneut versuchen, wenn sich die anderen Spieler bewegt haben.
+	</notification>
+	<notification name="PreferenceChatClearLog">
+		Dadurch werden die Protokolle vorheriger Unterhaltungen und alle Backups dieser Datei gelöscht.
+		<usetemplate ignoretext="Löschen des Protokolls vorheriger Unterhaltungen bestätigen." name="okcancelignore" notext="Abbrechen" yestext="OK"/>
+	</notification>
+	<notification name="PreferenceChatDeleteTranscripts">
+		Dadurch werden die Transkripte aller vorherigen Unterhaltungen gelöscht. Die Liste vergangener Unterhaltungen ist davon nicht betroffen. Alle Dateien mit den Suffixen .txt und txt.backup im Order [FOLDER] werden gelöscht.
+		<usetemplate ignoretext="Um Bestätigung bitten, bevor ich Transkripte lösche." name="okcancelignore" notext="Abbrechen" yestext="OK"/>
+	</notification>
+	<notification name="PreferenceChatPathChanged">
+		Dateien können nicht verschoben werden. Vorheriger Pfad wurde wiederhergestellt.
+		<usetemplate ignoretext="Dateien können nicht verschoben werden. Vorheriger Pfad wurde wiederhergestellt." name="okignore" yestext="OK"/>
+	</notification>
 </notifications>
diff --git a/indra/newview/skins/default/xui/de/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/de/panel_avatar_list_item.xml
index dcfcffa6e2f..79a2ebe9df9 100644
--- a/indra/newview/skins/default/xui/de/panel_avatar_list_item.xml
+++ b/indra/newview/skins/default/xui/de/panel_avatar_list_item.xml
@@ -27,5 +27,6 @@
 	<icon name="permission_edit_mine_icon" tool_tip="Dieser Freund kann Ihre Objekte bearbeiten, löschen und an sich nehmen"/>
 	<icon name="permission_map_icon" tool_tip="Dieser Freund kann Sie auf der Karte finden"/>
 	<icon name="permission_online_icon" tool_tip="Dieser Freund kann sehen, wenn Sie online sind"/>
+	<button name="info_btn" tool_tip="Mehr Infos"/>
 	<button name="profile_btn" tool_tip="Profil anzeigen"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/de/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/de/panel_block_list_sidetray.xml
index 2d140515d4f..c105a5b8a35 100644
--- a/indra/newview/skins/default/xui/de/panel_block_list_sidetray.xml
+++ b/indra/newview/skins/default/xui/de/panel_block_list_sidetray.xml
@@ -1,10 +1,11 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="block_list_panel" width="300">
-	<text left_pad="5" name="title_text" width="260">
-		Liste der ignorierten Einwohner
-	</text>
-	<scroll_list name="blocked" tool_tip="Liste der zur Zeit ignorierten Einwohner" width="290"/>
-	<button label="Einwohner ignorieren" label_selected="Einwohner ignorieren..." name="Block resident..." tool_tip="Wählen Sie einen Einwohner, um ihn zu ignorieren"/>
-	<button label="Objekt nach Name ignorieren" label_selected="Objekt nach Name ignorieren..." name="Block object by name..." tool_tip="Ein Objekt auswählen, um nach Namen zu ignorieren."/>
-	<button label="Freischalten" label_selected="Freischalten" name="Unblock" tool_tip="Einwohner oder Objekt von der Liste der ignorierten Einwohner oder Objekte entfernen"/>
+	<panel label="bottom_panel" name="blocked_buttons_panel">
+		<filter_editor label="Filtern" name="blocked_filter_input"/>
+		<menu_button name="blocked_gear_btn" tool_tip="Aktionen für ausgewählte(s) Person/Objekt"/>
+		<menu_button name="view_btn" tool_tip="Sortieroptionen"/>
+		<menu_button name="plus_btn" tool_tip="Einwohner oder Objekt zum ignorieren auswählen"/>
+		<button name="unblock_btn" tool_tip="Einwohner oder Objekt aus der Liste der ignorierten Einwohner oder Objekte entfernen"/>
+	</panel>
+	<block_list name="blocked" tool_tip="Liste der zur Zeit ignorierten Einwohner" width="290"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/de/panel_conversation_list_item.xml b/indra/newview/skins/default/xui/de/panel_conversation_list_item.xml
new file mode 100644
index 00000000000..a9bfe4754ee
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/panel_conversation_list_item.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="conversation_list_item">
+	<layout_stack name="conversation_item_stack">
+		<layout_panel name="conversation_title_panel">
+			<text name="conversation_title" value="(laden)"/>
+		</layout_panel>
+	</layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_conversation_log_list_item.xml b/indra/newview/skins/default/xui/de/panel_conversation_log_list_item.xml
new file mode 100644
index 00000000000..afeaa14e819
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/panel_conversation_log_list_item.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="conversation_log_list_item">
+	<icon name="voice_session_icon" tool_tip="Enthielt eine Voice-Unterhaltung"/>
+	<icon name="unread_ims_icon" tool_tip="Nachrichten trafen ein, während Sie abgemeldet waren"/>
+	<button name="delete_btn" tool_tip="Diesen Eintrag entfernen"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_group_list_item.xml b/indra/newview/skins/default/xui/de/panel_group_list_item.xml
index d097a2b18c3..fc911a64dff 100644
--- a/indra/newview/skins/default/xui/de/panel_group_list_item.xml
+++ b/indra/newview/skins/default/xui/de/panel_group_list_item.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="group_list_item">
 	<text name="group_name" value="Unbekannt"/>
+	<button name="info_btn" tool_tip="Mehr Infos"/>
 	<button name="profile_btn" tool_tip="Profil anzeigen"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/de/panel_people.xml b/indra/newview/skins/default/xui/de/panel_people.xml
index 4e76147746c..8c05ca2c247 100644
--- a/indra/newview/skins/default/xui/de/panel_people.xml
+++ b/indra/newview/skins/default/xui/de/panel_people.xml
@@ -14,81 +14,53 @@ Sie suchen nach Leuten? Verwenden Sie die [secondlife:///app/worldmap Karte].
 	<string name="no_filtered_friends_msg">
 		Sie haben nicht das Richtige gefunden? Versuchen Sie es mit der [secondlife:///app/search/people/[SEARCH_TERM] Suche].
 	</string>
-	<string name="people_filter_label" value="Nach Leuten filtern"/>
-	<string name="groups_filter_label" value="Nach Gruppen filtern"/>
 	<string name="no_filtered_groups_msg" value="Sie haben nicht das Richtige gefunden? Versuchen Sie es mit der [secondlife:///app/search/groups/[SEARCH_TERM] Suche]."/>
 	<string name="no_groups_msg" value="Suchen Sie nach Gruppen? Versuchen Sie es mit der [secondlife:///app/search/groups Suche]."/>
 	<string name="MiniMapToolTipMsg" value="[REGION](Doppelklicken, um Karte zu öffnen; Umschalttaste gedrückt halten und ziehen, um zu schwenken)"/>
 	<string name="AltMiniMapToolTipMsg" value="[REGION](Doppelklicken, um zu teleportieren; Umschalttaste gedrückt halten und ziehen, um zu schwenken)"/>
-	<filter_editor label="Filter" name="filter_input"/>
 	<tab_container name="tabs">
 		<panel label="IN DER NÄHE" name="nearby_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<menu_button name="nearby_view_sort_btn" tool_tip="Optionen"/>
-				<button name="add_friend_btn" tool_tip="Ausgewählten Einwohner zur Freundeliste hinzufügen"/>
+			<panel label="bottom_panel" name="nearby_buttons_panel">
+				<filter_editor label="Nach Personen filtern" name="nearby_filter_input"/>
+				<button name="gear_btn" tool_tip="Aktionen für ausgewählte Person"/>
+				<menu_button name="nearby_view_btn" tool_tip="Anzeige-/Sortieroptionen"/>
+				<button name="add_friend_btn" tool_tip="Einem Einwohner die Freundschaft anbieten"/>
+				<dnd_button name="nearby_del_btn" tool_tip="Ausgewählte Person als Freund entfernen"/>
 			</panel>
 		</panel>
-		<panel label="MEINE FREUNDE" name="friends_panel">
+		<panel label="FREUNDE" name="friends_panel">
+			<panel label="bottom_panel" name="friends_buttons_panel">
+				<filter_editor label="Nach Personen filtern" name="friends_filter_input"/>
+				<button name="gear_btn" tool_tip="Aktionen für ausgewählte Person"/>
+				<menu_button name="friends_view_btn" tool_tip="Anzeige-/Sortieroptionen"/>
+				<button name="friends_add_btn" tool_tip="Einem Einwohner die Freundschaft anbieten"/>
+				<dnd_button name="friends_del_btn" tool_tip="Ausgewählte Person als Freund entfernen"/>
+			</panel>
 			<accordion name="friends_accordion">
 				<accordion_tab name="tab_online" title="Online"/>
 				<accordion_tab name="tab_all" title="Alle"/>
 			</accordion>
-			<panel label="bottom_panel" name="bottom_panel">
-				<layout_stack name="bottom_panel">
-					<layout_panel name="options_gear_btn_panel">
-						<menu_button name="friends_viewsort_btn" tool_tip="Zusätzliche Optionen anzeigen"/>
-					</layout_panel>
-					<layout_panel name="add_btn_panel">
-						<button name="add_btn" tool_tip="Bieten Sie einem Einwohner die Freundschaft an"/>
-					</layout_panel>
-					<layout_panel name="trash_btn_panel">
-						<dnd_button name="del_btn" tool_tip="Ausgewählte Person aus Ihrer Freundesliste entfernen"/>
-					</layout_panel>
-				</layout_stack>
-			</panel>
 		</panel>
-		<panel label="MEINE GRUPPEN" name="groups_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<menu_button name="groups_viewsort_btn" tool_tip="Optionen"/>
-				<button name="plus_btn" tool_tip="Gruppe beitreten/Neue Gruppe erstellen"/>
-				<button name="activate_btn" tool_tip="Ausgewählte Gruppe aktivieren"/>
+		<panel label="GRUPPEN" name="groups_panel">
+			<panel label="bottom_panel" name="groups_buttons_panel">
+				<filter_editor label="Nach Gruppen filtern" name="groups_filter_input"/>
+				<menu_button name="groups_gear_btn" tool_tip="Aktionen für ausgewählte Gruppe"/>
+				<menu_button name="groups_view_btn" tool_tip="Anzeige-/Sortieroptionen"/>
+				<menu_button name="plus_btn" tool_tip="Gruppe beitreten/Neue Gruppe erstellen"/>
+				<dnd_button name="minus_btn" tool_tip="Ausgewählte Gruppe verlassen"/>
 			</panel>
 		</panel>
 		<panel label="AKTUELL" name="recent_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<menu_button name="recent_viewsort_btn" tool_tip="Optionen"/>
-				<button name="add_friend_btn" tool_tip="Ausgewählten Einwohner zur Freundeliste hinzufügen"/>
+			<panel label="bottom_panel" name="recent_buttons_panel">
+				<filter_editor label="Nach Personen filtern" name="recent_filter_input"/>
+				<button name="gear_btn" tool_tip="Aktionen für ausgewählte Person"/>
+				<menu_button name="recent_view_btn" tool_tip="Anzeige-/Sortieroptionen"/>
+				<button name="add_friend_btn" tool_tip="Einem Einwohner die Freundschaft anbieten"/>
+				<dnd_button name="recent_del_btn" tool_tip="Ausgewählte Person als Freund entfernen"/>
 			</panel>
 		</panel>
+		<panel label="IGNORIERT" name="blocked_panel">
+			<panel label="Ignorierte Einwohner und Objekte" name="panel_block_list_sidetray"/>
+		</panel>
 	</tab_container>
-	<panel name="button_bar">
-		<layout_stack name="bottom_bar_ls">
-			<layout_panel name="view_profile_btn_lp">
-				<button label="Profil" name="view_profile_btn" tool_tip="Bilder, Gruppen und andere Einwohner-Informationen anzeigen"/>
-			</layout_panel>
-			<layout_panel name="im_btn_lp">
-				<button label="IM" name="im_btn" tool_tip="IM-Sitzung öffnen"/>
-			</layout_panel>
-			<layout_panel name="call_btn_lp">
-				<button label="Anrufen" name="call_btn" tool_tip="Diesen Einwohner anrufen"/>
-			</layout_panel>
-			<layout_panel name="share_btn_lp">
-				<button label="Freigeben" name="share_btn" tool_tip="Inventarobjekt freigeben"/>
-			</layout_panel>
-			<layout_panel name="teleport_btn_lp">
-				<button label="Teleportieren" name="teleport_btn" tool_tip="Teleport anbieten"/>
-			</layout_panel>
-		</layout_stack>
-		<layout_stack name="bottom_bar_ls1">
-			<layout_panel name="group_info_btn_lp">
-				<button label="Gruppenprofil" name="group_info_btn" tool_tip="Gruppeninformationen anzeigen"/>
-			</layout_panel>
-			<layout_panel name="chat_btn_lp">
-				<button label="Gruppen-Chat" name="chat_btn" tool_tip="Chat öffnen"/>
-			</layout_panel>
-			<layout_panel name="group_call_btn_lp">
-				<button label="Gruppe anrufen" name="group_call_btn" tool_tip="Diese Gruppe anrufen"/>
-			</layout_panel>
-		</layout_stack>
-	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/de/panel_preferences_chat.xml b/indra/newview/skins/default/xui/de/panel_preferences_chat.xml
index c9ae3501473..8193fd42c11 100644
--- a/indra/newview/skins/default/xui/de/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/de/panel_preferences_chat.xml
@@ -1,34 +1,86 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Text-Chat" name="chat">
-	<text name="font_size">
-		Schriftgröße:
-	</text>
-	<radio_group name="chat_font_size">
-		<radio_item label="Klein" name="radio" value="0"/>
-		<radio_item label="Mittel" name="radio2" value="1"/>
-		<radio_item label="Groß" name="radio3" value="2"/>
-	</radio_group>
-	<check_box initial_value="true" label="Beim Chatten Tippanimation abspielen" name="play_typing_animation"/>
-	<check_box label="IMs per Email zuschicken, wenn ich offline bin" name="send_im_to_email"/>
-	<check_box label="Kompakten IM- und Text-Chatverlauf aktivieren" name="plain_text_chat_history"/>
-	<check_box label="Blasen-Chat" name="bubble_text_chat"/>
-	<text name="show_ims_in_label">
-		IMs anzeigen in:
-	</text>
-	<text name="requires_restart_label">
-		(Neustart erforderlich)
-	</text>
-	<radio_group name="chat_window" tool_tip="Zeigen Sie Ihre Sofortnachrichten (Instant Messages) in einem anderen Fenster oder in einem einzigen Fenster mit vielen Registerkarten an (Neustart erforderlich).">
-		<radio_item label="Getrennte Fenster" name="radio" value="0"/>
-		<radio_item label="Registerkarten" name="radio2" value="1"/>
-	</radio_group>
-	<text name="disable_toast_label">
-		Popups für eingehende Chats aktivieren:
-	</text>
-	<check_box label="Gruppen-Chats" name="EnableGroupChatPopups" tool_tip="Markieren, um Popups zu sehen, wenn Gruppen-Chat-Message eintrifft"/>
-	<check_box label="IM-Chats" name="EnableIMChatPopups" tool_tip="Markieren, um Popups zu sehen, wenn Instant Message eintrifft"/>
-	<spinner label="Lebenszeit von Toasts für Chat in der Nähe:" name="nearby_toasts_lifetime"/>
-	<spinner label="Ein-/Ausblenddauer von Toasts für Chat in der Nähe:" name="nearby_toasts_fadingtime"/>
+	<panel>
+		<check_box initial_value="true" label="Beim Chatten Tippanimation abspielen" name="play_typing_animation"/>
+		<check_box label="IMs per Email zuschicken, wenn ich offline bin" name="send_im_to_email"/>
+		<check_box label="Nur IMs und Anrufe von Freunden oder Gruppen durchstellen" name="voice_call_friends_only_check"/>
+		<text name="font_size">
+			Schriftgröße:
+		</text>
+		<combo_box name="chat_font_size">
+			<item label="Klein" name="Small" value="0"/>
+			<item label="Mittel" name="Medium" value="1"/>
+			<item label="Groß" name="Large" value="2"/>
+		</combo_box>
+		<check_box label="Blasen-Chat" name="bubble_text_chat"/>
+	</panel>
+	<panel>
+		<text name="notifications">
+			Benachrichtigungen
+		</text>
+		<text name="friend_ims">
+			IMs von Freunden:
+		</text>
+		<combo_box name="FriendIMOptions">
+			<item label="Unterhaltungsfenster öffnen" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Nachricht in Popup anzeigen" name="PopUpMessage" value="toast"/>
+			<item label="Flash-Symbolleistenschaltfläche" name="FlashToolbarButton" value="flash"/>
+			<item label="None" name="None" value="none"/>
+		</combo_box>
+		<text name="non_friend_ims">
+			IMs von anderen:
+		</text>
+		<combo_box name="NonFriendIMOptions">
+			<item label="Unterhaltungsfenster öffnen" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Nachricht in Popup anzeigen" name="PopUpMessage" value="toast"/>
+			<item label="Flash-Symbolleistenschaltfläche" name="FlashToolbarButton" value="flash"/>
+			<item label="None" name="None" value="none"/>
+		</combo_box>
+		<text name="conference_ims">
+			Konferenz-IMs:
+		</text>
+		<combo_box name="ConferenceIMOptions">
+			<item label="Unterhaltungsfenster öffnen" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Nachricht in Popup anzeigen" name="PopUpMessage" value="toast"/>
+			<item label="Flash-Symbolleistenschaltfläche" name="FlashToolbarButton" value="flash"/>
+			<item label="None" name="None" value="none"/>
+		</combo_box>
+		<text name="group_chat">
+			Gruppen-Chat:
+		</text>
+		<combo_box name="GroupChatOptions">
+			<item label="Unterhaltungsfenster öffnen" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Nachricht in Popup anzeigen" name="PopUpMessage" value="toast"/>
+			<item label="Flash-Symbolleistenschaltfläche" name="FlashToolbarButton" value="flash"/>
+			<item label="None" name="None" value="none"/>
+		</combo_box>
+		<text name="nearby_chat">
+			Chat in der Nähe:
+		</text>
+		<combo_box name="NearbyChatOptions">
+			<item label="Unterhaltungsfenster öffnen" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Nachricht in Popup anzeigen" name="PopUpMessage" value="toast"/>
+			<item label="Flash-Symbolleistenschaltfläche" name="FlashToolBarButton" value="flash"/>
+			<item label="None" name="None" value="none"/>
+		</combo_box>
+		<text name="notifications_alert">
+			Um vorübergehend alle Benachrichtigungen zu stoppen, wählen Sie „Unterhalten“ &gt; „Nicht stören“.
+		</text>
+	</panel>
+	<panel>
+		<text name="play_sound">
+			Sound abspielen:
+		</text>
+		<check_box label="Neue Unterhaltung" name="new_conversation"/>
+		<check_box label="Eingehender Anruf..." name="incoming_voice_call"/>
+		<check_box label="Teleport-Angebot" name="teleport_offer"/>
+		<check_box label="Inventarangebot" name="inventory_offer"/>
+	</panel>
+	<panel>
+		<button label="Protokoll löschen..." name="clear_log"/>
+		<button label="Protokolle löschen..." name="delete_transcripts"/>
+		<button label="Durchsuchen..." label_selected="Durchsuchen" name="log_path_button"/>
+	</panel>
 	<button label="Ãœbersetzen..." name="ok_btn"/>
 	<button label="Automatisch ersetzen..." name="autoreplace_showgui"/>
 	<button label="Rechtschreibprüfung..." name="spellcheck_showgui"/>
diff --git a/indra/newview/skins/default/xui/de/panel_preferences_general.xml b/indra/newview/skins/default/xui/de/panel_preferences_general.xml
index 979ccba48d1..4e453b6969f 100644
--- a/indra/newview/skins/default/xui/de/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/de/panel_preferences_general.xml
@@ -69,9 +69,9 @@
 		<combo_box.item label="nie" name="item4"/>
 	</combo_box>
 	<text name="text_box3">
-		Antwort, wenn im „Beschäftigt“-Modus:
+		Nicht-stören-Antwort:
 	</text>
-	<text_editor name="busy_response">
+	<text_editor name="do_not_disturb_response">
 		log_in_to_change
 	</text_editor>
 </panel>
diff --git a/indra/newview/skins/default/xui/de/sidepanel_task_info.xml b/indra/newview/skins/default/xui/de/sidepanel_task_info.xml
index 4c8d77d336a..29239033fe9 100644
--- a/indra/newview/skins/default/xui/de/sidepanel_task_info.xml
+++ b/indra/newview/skins/default/xui/de/sidepanel_task_info.xml
@@ -72,6 +72,7 @@
 			<combo_box.item label="Objekt kaufen" name="Buyobject"/>
 			<combo_box.item label="Objekt bezahlen" name="Payobject"/>
 			<combo_box.item label="Öffnen" name="Open"/>
+			<combo_box.item label="Zoomen" name="Zoom"/>
 		</combo_box>
 		<panel name="perms_inv">
 			<text name="perm_modify">
diff --git a/indra/newview/skins/default/xui/de/strings.xml b/indra/newview/skins/default/xui/de/strings.xml
index 79cb73ecf97..e142cb80296 100644
--- a/indra/newview/skins/default/xui/de/strings.xml
+++ b/indra/newview/skins/default/xui/de/strings.xml
@@ -137,7 +137,7 @@
 		Beenden
 	</string>
 	<string name="create_account_url">
-		http://join.secondlife.com/index.php?lang=de-DE&amp;sourceid=[sourceid]
+		http://join.secondlife.com/?sourceid=[sourceid]
 	</string>
 	<string name="LoginFailedViewerNotPermitted">
 		Mit dem von Ihnen verwendeten Viewer ist der Zugriff auf Second Life nicht mehr möglich. Laden Sie von den folgenden Seite einen neuen Viewer herunter:
@@ -622,8 +622,8 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden.
 	<string name="AvatarAway">
 		Abwesend
 	</string>
-	<string name="AvatarBusy">
-		Beschäftigt
+	<string name="AvatarDoNotDisturb">
+		Nicht stören
 	</string>
 	<string name="AvatarMuted">
 		Ignoriert
@@ -859,6 +859,12 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden.
 	<string name="ST_NO_JOINT">
 		HAUPTVERZEICHNIS oder VERBINDUNG nicht gefunden.
 	</string>
+	<string name="NearbyChatTitle">
+		Chat in der Nähe
+	</string>
+	<string name="NearbyChatLabel">
+		(Chat in der Nähe)
+	</string>
 	<string name="whisper">
 		flüstert:
 	</string>
@@ -922,12 +928,15 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden.
 	<string name="ControlYourCamera">
 		Kamerasteuerung
 	</string>
-	<string name="TeleportYourAgent">
-		Sie teleportieren
-	</string>
 	<string name="NotConnected">
 		Nicht verbunden
 	</string>
+	<string name="AgentNameSubst">
+		(Sie)
+	</string>
+	<string name="TeleportYourAgent">
+		Sie teleportieren
+	</string>
 	<string name="SIM_ACCESS_PG">
 		Generell
 	</string>
@@ -1009,18 +1018,6 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden.
 	<string name="dictionary_files">
 		Wörterbücher
 	</string>
-	<string name="AvatarSetNotAway">
-		Nicht abwesend
-	</string>
-	<string name="AvatarSetAway">
-		Abwesend
-	</string>
-	<string name="AvatarSetNotBusy">
-		Nicht beschäftigt
-	</string>
-	<string name="AvatarSetBusy">
-		Beschäftigt
-	</string>
 	<string name="shape">
 		Form
 	</string>
@@ -1989,8 +1986,8 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden.
 	<string name="PanelContentsNewScript">
 		Neues Skript
 	</string>
-	<string name="BusyModeResponseDefault">
-		Der Einwohner/Die Einwohnerin ist „beschäftigt”, d.h. er/sie möchte im Moment nicht gestört werden.  Ihre Nachricht wird dem Einwohner/der Einwohnerin als IM angezeigt, und kann später beantwortet werden.
+	<string name="DoNotDisturbModeResponseDefault">
+		Dieser Einwohner hat den Nicht-stören-Modus aktiviert und wird Ihre Nachricht später sehen.
 	</string>
 	<string name="MuteByName">
 		(Nach Namen)
@@ -2103,9 +2100,6 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden.
 	<string name="GroupMoneyDate">
 		[weekday,datetime,utc] [mth,datetime,utc] [day,datetime,utc], [year,datetime,utc]
 	</string>
-	<string name="ViewerObjectContents">
-		Inhalte
-	</string>
 	<string name="AcquiredItems">
 		Erworbene Artikel
 	</string>
@@ -3877,7 +3871,7 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_
 		Generelle Region
 	</string>
 	<string name="LocationCtrlSeeAVsTooltip">
-		Avatare sichtbar; Chat außerhalb dieser Parzelle gestattet
+		Avatare in dieser Parzelle können von Avataren außerhalb dieser Parzelle weder gesehen noch gehört werden
 	</string>
 	<string name="LocationCtrlPathfindingDirtyTooltip">
 		Bewegliche Objekte verhalten sich in dieser Region u. U. erst dann korrekt, wenn die Region neu geformt wird.
@@ -3954,6 +3948,12 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_
 	<string name="IM_unblock_only_groups_friends">
 		Wenn Sie diese Meldung sehen, müssen Sie unter „Einstellungen“ &gt; „Privatsphäre“ die Option „Nur IMs und Anrufe von Freunden oder Gruppen durchstellen“ deaktivieren.
 	</string>
+	<string name="OnlineStatus">
+		Online
+	</string>
+	<string name="OfflineStatus">
+		Offline
+	</string>
 	<string name="answered_call">
 		Ihr Anruf wurde entgegengenommen
 	</string>
@@ -3963,6 +3963,9 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_
 	<string name="you_joined_call">
 		Sie sind dem Gespräch beigetreten
 	</string>
+	<string name="you_auto_rejected_call-im">
+		Sie haben den Voice-Anruf automatisch abgelehnt, während der Nicht-stören-Modus aktiviert war.
+	</string>
 	<string name="name_started_call">
 		[NAME] hat einen Voice-Anruf begonnen
 	</string>
@@ -3979,7 +3982,7 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_
 		Wird verbunden...
 	</string>
 	<string name="conference-title">
-		Ad-hoc-Konferenz
+		Chat mit mehreren Personen
 	</string>
 	<string name="conference-title-incoming">
 		Konferenz mit [AGENT_NAME]
@@ -4859,6 +4862,9 @@ Setzen Sie den Editorpfad in Anführungszeichen
 	<string name="Command_Chat_Label">
 		Chat
 	</string>
+	<string name="Command_Conversations_Label">
+		Unterhaltungen
+	</string>
 	<string name="Command_Compass_Label">
 		Kompass
 	</string>
@@ -4934,6 +4940,9 @@ Setzen Sie den Editorpfad in Anführungszeichen
 	<string name="Command_Chat_Tooltip">
 		Mit Leuten in der Nähe chatten
 	</string>
+	<string name="Command_Conversations_Tooltip">
+		Mit allen unterhalten
+	</string>
 	<string name="Command_Compass_Tooltip">
 		Kompass
 	</string>
@@ -5063,4 +5072,13 @@ Setzen Sie den Editorpfad in Anführungszeichen
 	<string name="UserDictionary">
 		[Benutzer]
 	</string>
+	<string name="logging_calls_disabled_log_empty">
+		Unterhaltungen werden nicht protokolliert. Um ein Protokoll zu starten, wählen Sie „Speichern: nur Protokoll“ oder „Speichern: Protokoll und Transkripte“ unter „Einstellungen“ &gt; „Chat“.
+	</string>
+	<string name="logging_calls_disabled_log_not_empty">
+		Es werden keine Unterhaltungen mehr protokolliert. Um weiterhin ein Protokoll zu führen, wählen Sie „Speichern: nur Protokoll“ oder „Speichern: Protokoll und Transkripte“ unter „Einstellungen“ &gt; „Chat“.
+	</string>
+	<string name="logging_calls_enabled_log_empty">
+		Keine protokollierten Unterhaltungen verfügbar. Hier erscheint ein Protokolleintrag, wenn Sie eine Person kontaktieren oder von einer Person kontaktiert werden.
+	</string>
 </strings>
diff --git a/indra/newview/skins/default/xui/es/floater_conversation_log.xml b/indra/newview/skins/default/xui/es/floater_conversation_log.xml
new file mode 100644
index 00000000000..9202fab92df
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_conversation_log.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_conversation_log" title="REGISTRO DE CONVERSACIONES">
+	<panel name="buttons_panel">
+		<filter_editor label="Filtrar la gente" name="people_filter_input"/>
+		<menu_button name="conversation_view_btn" tool_tip="Opciones de vista/orden"/>
+		<menu_button name="conversations_gear_btn" tool_tip="Acciones en la persona o el grupo seleccionado"/>
+	</panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_conversation_preview.xml b/indra/newview/skins/default/xui/es/floater_conversation_preview.xml
new file mode 100644
index 00000000000..f579e720fb2
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_conversation_preview.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="preview_conversation" title="CONVERSACIÓN:">
+	<floater.string name="Title">
+		CONVERSACIÓN: [NAME]
+	</floater.string>
+	<text name="page_label" value="Página"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_im_container.xml b/indra/newview/skins/default/xui/es/floater_im_container.xml
index 1cd752e6ec4..f772441141a 100644
--- a/indra/newview/skins/default/xui/es/floater_im_container.xml
+++ b/indra/newview/skins/default/xui/es/floater_im_container.xml
@@ -1,2 +1,29 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<multi_floater name="floater_im_box" title="CONVERSACIONES"/>
+<multi_floater name="floater_im_box" title="CONVERSACIONES">
+	<string name="collapse_icon" value="Conv_toolbar_collapse"/>
+	<string name="expand_icon" value="Conv_toolbar_expand"/>
+	<layout_stack name="conversations_stack">
+		<layout_panel name="conversations_layout_panel">
+			<layout_stack name="conversations_pane_buttons_stack">
+				<layout_panel name="conversations_pane_buttons_expanded">
+					<menu_button name="sort_btn" tool_tip="Opciones de vista/orden"/>
+					<button name="add_btn" tool_tip="Iniciar una conversación nueva"/>
+					<button name="speak_btn" tool_tip="Utiliza el micrófono para hablar con las personas"/>
+				</layout_panel>
+				<layout_panel name="conversations_pane_buttons_collapsed">
+					<button name="expand_collapse_btn" tool_tip="Cerrar/expandir esta lista"/>
+				</layout_panel>
+			</layout_stack>
+		</layout_panel>
+		<layout_panel name="messages_layout_panel">
+			<panel_container name="im_box_tab_container">
+				<panel name="stub_panel">
+					<button name="stub_collapse_btn" tool_tip="Cerrar este panel"/>
+					<text name="stub_textbox">
+						Esta conversación está en una ventana aparte.   [secondlife:/// Traerla de vuelta.]
+					</text>
+				</panel>
+			</panel_container>
+		</layout_panel>
+	</layout_stack>
+</multi_floater>
diff --git a/indra/newview/skins/default/xui/es/floater_im_session.xml b/indra/newview/skins/default/xui/es/floater_im_session.xml
index 3d9d17fc81a..5f38fbd6151 100644
--- a/indra/newview/skins/default/xui/es/floater_im_session.xml
+++ b/indra/newview/skins/default/xui/es/floater_im_session.xml
@@ -1,8 +1,59 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="panel_im">
-	<layout_stack name="im_panels">
-		<layout_panel>
-			<line_editor label="A" name="chat_editor"/>
-		</layout_panel>
-	</layout_stack>
+	<floater.string name="call_btn_start">
+		Conv_toolbar_open_call
+	</floater.string>
+	<floater.string name="call_btn_stop">
+		Conv_toolbar_hang_up
+	</floater.string>
+	<floater.string name="collapseline_icon" value="Conv_collapse_to_one_line"/>
+	<floater.string name="expandline_icon" value="Conv_expand_one_line"/>
+	<floater.string name="collapse_icon" value="Conv_toolbar_collapse"/>
+	<floater.string name="expand_icon" value="Conv_toolbar_expand"/>
+	<floater.string name="tear_off_icon" value="Conv_toolbar_arrow_ne"/>
+	<floater.string name="return_icon" value="Conv_toolbar_arrow_sw"/>
+	<floater.string name="participant_added" value="[NAME] ha sido invitado a la conversación."/>
+	<floater.string name="multiple_participants_added" value="[NAME] han sido invitados a la conversación."/>
+	<floater.string name="tooltip_to_separate_window" value="Mover esta conversación a otra ventana"/>
+	<floater.string name="tooltip_to_main_window" value="Volver a poner esta conversación en la ventana principal"/>
+	<floater.string name="start_call_button_tooltip" value="Abrir conexión de voz"/>
+	<floater.string name="end_call_button_tooltip" value="Cerrar la conexión de voz"/>
+	<floater.string name="expcol_button_not_tearoff_tooltip" value="Cerrar este panel"/>
+	<floater.string name="expcol_button_tearoff_and_expanded_tooltip" value="Cerrar la lista de participantes"/>
+	<floater.string name="expcol_button_tearoff_and_collapsed_tooltip" value="Expandir la lista de participantes"/>
+	<view name="contents_view">
+		<layout_stack name="main_stack">
+			<layout_panel name="toolbar_panel">
+				<menu_button name="view_options_btn" tool_tip="Opciones de vista/orden"/>
+				<menu_button name="gear_btn" tool_tip="Acciones en la persona seleccionada"/>
+				<button name="add_btn" tool_tip="Añadir alguien a esta conversación"/>
+				<button name="voice_call_btn" tool_tip="Abrir conexión de voz"/>
+				<button name="close_btn" tool_tip="Finalizar esta conversación"/>
+				<button name="expand_collapse_btn" tool_tip="Cerrar/expandir este panel"/>
+			</layout_panel>
+			<layout_panel name="body_panel">
+				<layout_stack name="im_panels">
+					<layout_panel name="right_part_holder">
+						<panel name="trnsAndChat_panel">
+							<layout_stack name="translate_and_chat_stack">
+								<layout_panel name="translate_chat_checkbox_lp">
+									<check_box label="Traducir el chat" name="translate_chat_checkbox"/>
+								</layout_panel>
+							</layout_stack>
+						</panel>
+					</layout_panel>
+				</layout_stack>
+			</layout_panel>
+			<layout_panel name="chat_layout_panel">
+				<layout_stack name="input_panels">
+					<layout_panel name="input_editor_layout_panel">
+						<chat_editor label="A" name="chat_editor"/>
+					</layout_panel>
+					<layout_panel name="input_button_layout_panel">
+						<button name="minz_btn" tool_tip="Muestra/oculta el panel de mensajes"/>
+					</layout_panel>
+				</layout_stack>
+			</layout_panel>
+		</layout_stack>
+	</view>
 </floater>
diff --git a/indra/newview/skins/default/xui/es/floater_incoming_call.xml b/indra/newview/skins/default/xui/es/floater_incoming_call.xml
index b5b756abb6a..acbb25b7131 100644
--- a/indra/newview/skins/default/xui/es/floater_incoming_call.xml
+++ b/indra/newview/skins/default/xui/es/floater_incoming_call.xml
@@ -10,7 +10,7 @@
 		anónimo
 	</floater.string>
 	<floater.string name="VoiceInviteP2P">
-		está llamando.
+		te está llamando.
 	</floater.string>
 	<floater.string name="VoiceInviteAdHoc">
 		ha entrado en un chat de voz en multiconferencia.
@@ -25,9 +25,9 @@
 		¿Quieres dejar [CURRENT_CHAT] y entrar en este chat de voz?
 	</floater.string>
 	<text name="question">
-		¿Quieres dejar [CURRENT_CHAT] y entrar a este chat de voz?
+		Si respondes, te desconectarás de la conversación de voz actual.
 	</text>
-	<button label="Aceptar" label_selected="Aceptar" name="Accept"/>
-	<button label="Rechazar" label_selected="Rechazar" name="Reject"/>
-	<button label="Comenzar un MI" name="Start IM"/>
+	<button label="Responder" label_selected="Responder" name="Accept"/>
+	<button label="Ignorar" label_selected="Ignorar" name="Reject"/>
+	<button label="Abrir MI en su lugar" name="Start IM"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/es/floater_pathfinding_console.xml b/indra/newview/skins/default/xui/es/floater_pathfinding_console.xml
index e93ecc9e10d..3602270e5a5 100644
--- a/indra/newview/skins/default/xui/es/floater_pathfinding_console.xml
+++ b/indra/newview/skins/default/xui/es/floater_pathfinding_console.xml
@@ -71,7 +71,7 @@
 			<text name="show_label">
 				Mostrar:
 			</text>
-			<check_box label="Mundo virtual" name="show_world"/>
+			<check_box label="Prueba" name="show_world"/>
 			<check_box label="Solamente los objetos movibles" name="show_world_movables_only"/>
 			<check_box label="Navmesh" name="show_navmesh"/>
 			<text name="show_walkability_label">
diff --git a/indra/newview/skins/default/xui/es/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/es/floater_texture_ctrl.xml
index 93bc9f293c1..01b024bc3e4 100644
--- a/indra/newview/skins/default/xui/es/floater_texture_ctrl.xml
+++ b/indra/newview/skins/default/xui/es/floater_texture_ctrl.xml
@@ -20,7 +20,7 @@
 	<button label="Blanca" label_selected="Blanca" name="Blank"/>
 	<button label="Ninguna" label_selected="Ninguna" left="90" name="None"/>
 	<button label="" label_selected="" name="Pipette"/>
-	<check_box initial_value="true" label="Vista previa inmediata" name="apply_immediate_check"/>
+	<check_box initial_value="true" label="Aplicarlo ahora" name="apply_immediate_check"/>
 	<text name="preview_disabled" value="Vista previa inhabilitada"/>
 	<filter_editor label="Filtrar las texturas" name="inventory search editor"/>
 	<check_box initial_value="false" label="Ver las carpetas" name="show_folders_check"/>
diff --git a/indra/newview/skins/default/xui/es/floater_voice_chat_volume.xml b/indra/newview/skins/default/xui/es/floater_voice_chat_volume.xml
new file mode 100644
index 00000000000..1115d672399
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_voice_chat_volume.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_voice_volume" title="VOLUMEN DE CHAT DE VOZ">
+	<slider label="Chat de voz" name="chat_voice_volume"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_voice_effect.xml b/indra/newview/skins/default/xui/es/floater_voice_effect.xml
index 1a265845af5..02ebe80ff7d 100644
--- a/indra/newview/skins/default/xui/es/floater_voice_effect.xml
+++ b/indra/newview/skins/default/xui/es/floater_voice_effect.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater label="Lugares" name="voice_effects" title="TRANSFORMACIÓN DE VOZ">
+<floater label="Lugares" name="voice_effects" title="PROBAR TRANSFORMACIÓN DE VOZ">
 	<string name="no_voice_effect">
 		(Sin transformación de voz)
 	</string>
diff --git a/indra/newview/skins/default/xui/es/floater_voice_volume.xml b/indra/newview/skins/default/xui/es/floater_voice_volume.xml
new file mode 100644
index 00000000000..0ebc511887e
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_voice_volume.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!--
+  Not can_close / no title to avoid window chrome
+  Single instance - only have one at a time, recycle it each spawn
+-->
+<floater name="floater_voice_volume" title="VOLUMEN DE VOZ">
+	<slider name="volume_slider" tool_tip="Volumen de la voz" value="0.5"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/es/menu_cof_gear.xml b/indra/newview/skins/default/xui/es/menu_cof_gear.xml
index ff8ad0977ac..a889992b8aa 100644
--- a/indra/newview/skins/default/xui/es/menu_cof_gear.xml
+++ b/indra/newview/skins/default/xui/es/menu_cof_gear.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear COF">
+<toggleable_menu name="Gear COF">
 	<menu label="Ropas nuevas" name="COF.Gear.New_Clothes"/>
-	<menu label="Nuevas partes del cuerpo" name="COF.Geear.New_Body_Parts"/>
-</menu>
+	<menu label="Nuevas partes del cuerpo" name="COF.Gear.New_Body_Parts"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_conversation.xml b/indra/newview/skins/default/xui/es/menu_conversation.xml
new file mode 100644
index 00000000000..e4e9a0bf63d
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_conversation.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_conversation_participant">
+	<menu_item_call label="Cerrar conversación" name="close_conversation"/>
+	<menu_item_call label="Abrir conversación de voz" name="open_voice_conversation"/>
+	<menu_item_call label="Desconectar de voz" name="disconnect_from_voice"/>
+	<menu_item_call label="Ver el perfil" name="view_profile"/>
+	<menu_item_call label="MI" name="im"/>
+	<menu_item_call label="Ofrecer teleporte" name="offer_teleport"/>
+	<menu_item_call label="Llamada de voz" name="voice_call"/>
+	<menu_item_call label="Historial del chat..." name="chat_history"/>
+	<menu_item_call label="Añadir como amigo" name="add_friend"/>
+	<menu_item_call label="Quitarle como amigo" name="remove_friend"/>
+	<menu_item_call label="Quitar amigos" name="remove_friends"/>
+	<menu_item_call label="Invitar al grupo..." name="invite_to_group"/>
+	<menu_item_call label="Acercar el zoom" name="zoom_in"/>
+	<menu_item_call label="Mapa" name="map"/>
+	<menu_item_call label="Compartir" name="share"/>
+	<menu_item_call label="Pagar" name="pay"/>
+	<menu_item_check label="Ignorar la voz" name="block_unblock"/>
+	<menu_item_check label="Ignorar el texto" name="MuteText"/>
+	<menu_item_call label="Perfil del grupo" name="group_profile"/>
+	<menu_item_call label="Activar el grupo" name="activate_group"/>
+	<menu_item_call label="Abandonar el grupo" name="leave_group"/>
+	<context_menu label="Opciones del moderador" name="Moderator Options">
+		<menu_item_check label="Permitir el chat de texto" name="AllowTextChat"/>
+		<menu_item_call label="Ignorar a este participante" name="ModerateVoiceMuteSelected"/>
+		<menu_item_call label="Quitar el silencio a este participante" name="ModerateVoiceUnMuteSelected"/>
+		<menu_item_call label="Silenciar a todos" name="ModerateVoiceMute"/>
+		<menu_item_call label="Quitar el silencio a todos" name="ModerateVoiceUnmute"/>
+	</context_menu>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_conversation_log_gear.xml b/indra/newview/skins/default/xui/es/menu_conversation_log_gear.xml
new file mode 100644
index 00000000000..090e6fb0bf7
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_conversation_log_gear.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Conversation Context Menu">
+	<menu_item_call label="MI..." name="IM"/>
+	<menu_item_call label="Llamada de voz..." name="Call"/>
+	<menu_item_call label="Abrir el historial de chat..." name="Chat history"/>
+	<menu_item_call label="Ver el perfil" name="View Profile"/>
+	<menu_item_call label="Ofrecer teleporte" name="teleport"/>
+	<menu_item_call label="Añadir como amigo" name="add_friend"/>
+	<menu_item_call label="Quitarle como amigo" name="remove_friend"/>
+	<menu_item_call label="Invitar al grupo..." name="Invite"/>
+	<menu_item_call label="Mapa" name="Map"/>
+	<menu_item_call label="Compartir" name="Share"/>
+	<menu_item_call label="Pagar" name="Pay"/>
+	<menu_item_check label="Ignorar / No ignorar" name="Block/Unblock"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_conversation_log_view.xml b/indra/newview/skins/default/xui/es/menu_conversation_log_view.xml
new file mode 100644
index 00000000000..b8b4616b2d9
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_conversation_log_view.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_conversation_view">
+	<menu_item_check label="Ordenar alfabéticamente" name="sort_by_name"/>
+	<menu_item_check label="Ordenar por fecha" name="sort_by_date"/>
+	<menu_item_check label="Ordenar con los amigos al principio" name="sort_by_friends"/>
+	<menu_item_call label="Ver el historial de chat..." name="view_nearby_chat_history"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_im_conversation.xml b/indra/newview/skins/default/xui/es/menu_im_conversation.xml
new file mode 100644
index 00000000000..5ba0fb898e8
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_im_conversation.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Conversation Gear Menu">
+	<menu_item_call label="Ver el perfil" name="View Profile"/>
+	<menu_item_call label="Añadir como amigo" name="Add Friend"/>
+	<menu_item_call label="Quitarle como amigo" name="remove_friend"/>
+	<menu_item_call label="Ofrecer teleporte" name="offer_teleport"/>
+	<menu_item_call label="Invitar al grupo..." name="invite_to_group"/>
+	<menu_item_call label="Historial del chat..." name="chat_history"/>
+	<menu_item_call label="Acercar el zoom" name="zoom_in"/>
+	<menu_item_call label="Mapa" name="map"/>
+	<menu_item_call label="Compartir" name="Share"/>
+	<menu_item_call label="Pagar" name="Pay"/>
+	<menu_item_check label="Ignorar la voz" name="Block/Unblock"/>
+	<menu_item_check label="Ignorar el texto" name="MuteText"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_im_session_showmodes.xml b/indra/newview/skins/default/xui/es/menu_im_session_showmodes.xml
new file mode 100644
index 00000000000..6ea970b8265
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_im_session_showmodes.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_modes">
+	<menu_item_check label="Vista compacta" name="compact_view"/>
+	<menu_item_check label="Vista ampliada" name="expanded_view"/>
+	<menu_item_check label="Mostrar tiempo" name="IMShowTime"/>
+	<menu_item_check label="Mostrar los nombres en las conversaciones individuales" name="IMShowNamesForP2PConv"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_object_icon.xml b/indra/newview/skins/default/xui/es/menu_object_icon.xml
index 7e4578b9504..a99c889bb06 100644
--- a/indra/newview/skins/default/xui/es/menu_object_icon.xml
+++ b/indra/newview/skins/default/xui/es/menu_object_icon.xml
@@ -2,4 +2,6 @@
 <menu name="Object Icon Menu">
 	<menu_item_call label="Perfil del objeto..." name="Object Profile"/>
 	<menu_item_call label="Ignorar..." name="Block"/>
+	<menu_item_call label="Mostrar en el mapa" name="show_on_map"/>
+	<menu_item_call label="Teleportarse a la posición del objeto" name="teleport_to_object"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/es/menu_outfit_gear.xml b/indra/newview/skins/default/xui/es/menu_outfit_gear.xml
index 558ff6afd3c..56e64c729f7 100644
--- a/indra/newview/skins/default/xui/es/menu_outfit_gear.xml
+++ b/indra/newview/skins/default/xui/es/menu_outfit_gear.xml
@@ -23,6 +23,8 @@
 		<menu_item_call label="Pelo nuevo" name="New Hair"/>
 		<menu_item_call label="Ojos nuevos" name="New Eyes"/>
 	</menu>
+	<menu_item_call label="Abrir todas las carpetas" name="expand"/>
+	<menu_item_call label="Cerrar todas las carpetas" name="collapse"/>
 	<menu_item_call label="Renombrar el vestuario" name="rename"/>
 	<menu_item_call label="Borrar el vestuario" name="delete_outfit"/>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_participant_view.xml b/indra/newview/skins/default/xui/es/menu_participant_view.xml
new file mode 100644
index 00000000000..fcfeeb922bf
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_participant_view.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="participant_manu_view">
+	<menu_item_check label="Ordenar las conversaciones por tipo" name="sort_sessions_by_type"/>
+	<menu_item_check label="Ordenar las conversaciones por nombre" name="sort_sessions_by_name"/>
+	<menu_item_check label="Ordenar las conversaciones por actividad reciente" name="sort_sessions_by_recent"/>
+	<menu_item_check label="Ordenar los participantes por nombre" name="sort_participants_by_name"/>
+	<menu_item_check label="Ordenar los participantes por actividad reciente" name="sort_participants_by_recent"/>
+	<menu_item_call label="Preferencias de chat..." name="chat_preferences"/>
+	<menu_item_call label="Preferencias de privacidad..." name="privacy_preferences"/>
+	<menu_item_check label="Registro de conversaciones..." name="Conversation"/>
+	<menu_item_check label="Traducir el chat" name="Translate_chat"/>
+	<menu_item_check label="Configuración de traducción..." name="Translation_settings"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_people_blocked_gear.xml b/indra/newview/skins/default/xui/es/menu_people_blocked_gear.xml
new file mode 100644
index 00000000000..986389a4fe7
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_people_blocked_gear.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_blocked_gear">
+	<menu_item_call label="No ignorar" name="unblock"/>
+	<menu_item_call label="Perfil..." name="profile"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_people_blocked_plus.xml b/indra/newview/skins/default/xui/es/menu_people_blocked_plus.xml
new file mode 100644
index 00000000000..10f6a3fc14f
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_people_blocked_plus.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_blocked_plus">
+	<menu_item_call label="Ignorar residentes según el nombre..." name="block_resident_by_name"/>
+	<menu_item_call label="Ignorar objetos según el nombre" name="block_object_by_name"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_people_blocked_view.xml b/indra/newview/skins/default/xui/es/menu_people_blocked_view.xml
new file mode 100644
index 00000000000..bc557c7ec15
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_people_blocked_view.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_blocked_view">
+	<menu_item_check label="Ordenar alfabéticamente" name="sort_by_name"/>
+	<menu_item_check label="Ordenar por tipo" name="sort_by_type"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_people_friends_view.xml b/indra/newview/skins/default/xui/es/menu_people_friends_view.xml
new file mode 100644
index 00000000000..ad896c1b74e
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_people_friends_view.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="Ordenar alfabéticamente" name="sort_name"/>
+	<menu_item_check label="Ordenar por estatus" name="sort_status"/>
+	<menu_item_check label="Ver los iconos de la gente" name="view_icons"/>
+	<menu_item_check label="Ver permisos concedidos" name="view_permissions"/>
+	<menu_item_check label="Ver el registro de conversaciones..." name="view_conversation"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_people_groups.xml b/indra/newview/skins/default/xui/es/menu_people_groups.xml
index 51bd2c72085..125e25cd1a6 100644
--- a/indra/newview/skins/default/xui/es/menu_people_groups.xml
+++ b/indra/newview/skins/default/xui/es/menu_people_groups.xml
@@ -2,7 +2,7 @@
 <menu name="menu_group_plus">
 	<menu_item_call label="Ver la información" name="View Info"/>
 	<menu_item_call label="Chat" name="Chat"/>
-	<menu_item_call label="Llamar" name="Call"/>
+	<menu_item_call label="Llamada de voz" name="Call"/>
 	<menu_item_call label="Activar" name="Activate"/>
 	<menu_item_call label="Dejar" name="Leave"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/es/menu_people_groups_view.xml b/indra/newview/skins/default/xui/es/menu_people_groups_view.xml
new file mode 100644
index 00000000000..c3973625b0a
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_people_groups_view.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="Mostrar los iconos de grupo" name="Display Group Icons"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_people_nearby.xml b/indra/newview/skins/default/xui/es/menu_people_nearby.xml
index dc1486d8796..09bb119d5ad 100644
--- a/indra/newview/skins/default/xui/es/menu_people_nearby.xml
+++ b/indra/newview/skins/default/xui/es/menu_people_nearby.xml
@@ -1,13 +1,16 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Avatar Context Menu">
-	<menu_item_call label="Ver el perfil" name="View Profile"/>
-	<menu_item_call label="Añadir como amigo" name="Add Friend"/>
-	<menu_item_call label="Quitarle como amigo" name="Remove Friend"/>
-	<menu_item_call label="MI" name="IM"/>
-	<menu_item_call label="Llamar" name="Call"/>
-	<menu_item_call label="Mapa" name="Map"/>
-	<menu_item_call label="Compartir" name="Share"/>
-	<menu_item_call label="Pagar" name="Pay"/>
-	<menu_item_check label="Ignorar / No ignorar" name="Block/Unblock"/>
-	<menu_item_call label="Ofrecer teleporte" name="teleport"/>
+	<menu_item_call label="Ver el perfil" name="view_profile"/>
+	<menu_item_call label="MI" name="im"/>
+	<menu_item_call label="Ofrecer teleporte" name="offer_teleport"/>
+	<menu_item_call label="Llamada de voz" name="voice_call"/>
+	<menu_item_call label="Ver el historial de chat..." name="chat_history"/>
+	<menu_item_call label="Añadir como amigo" name="add_friend"/>
+	<menu_item_call label="Quitarle como amigo" name="remove_friend"/>
+	<menu_item_call label="Invitar al grupo..." name="invite_to_group"/>
+	<menu_item_call label="Acercar el zoom" name="zoom_in"/>
+	<menu_item_call label="Mapa" name="map"/>
+	<menu_item_call label="Compartir" name="share"/>
+	<menu_item_call label="Pagar" name="pay"/>
+	<menu_item_check label="Ignorar / No ignorar" name="block_unblock"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/es/menu_people_nearby_multiselect.xml
index 227c5ebe58f..9df160f5ad9 100644
--- a/indra/newview/skins/default/xui/es/menu_people_nearby_multiselect.xml
+++ b/indra/newview/skins/default/xui/es/menu_people_nearby_multiselect.xml
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Multi-Selected People Context Menu">
-	<menu_item_call label="Añadir como amigos" name="Add Friends"/>
-	<menu_item_call label="Quitar amigos" name="Remove Friend"/>
-	<menu_item_call label="MI" name="IM"/>
-	<menu_item_call label="Llamar" name="Call"/>
-	<menu_item_call label="Compartir" name="Share"/>
-	<menu_item_call label="Pagar" name="Pay"/>
-	<menu_item_call label="Ofrecer teleporte" name="teleport"/>
+	<menu_item_call label="Añadir como amigos" name="add_friends"/>
+	<menu_item_call label="Quitar amigos" name="remove_friends"/>
+	<menu_item_call label="MI" name="im"/>
+	<menu_item_call label="Visita" name="call"/>
+	<menu_item_call label="Compartir" name="share"/>
+	<menu_item_call label="Pagar" name="pay"/>
+	<menu_item_call label="Ofrecer teleporte" name="offer_teleport"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_people_nearby_view.xml b/indra/newview/skins/default/xui/es/menu_people_nearby_view.xml
new file mode 100644
index 00000000000..c2fb360dd1c
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_people_nearby_view.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="Ordenar según las intervenciones recientes" name="sort_by_recent_speakers"/>
+	<menu_item_check label="Ordenar alfabéticamente" name="sort_name"/>
+	<menu_item_check label="Ordenar según distancia" name="sort_distance"/>
+	<menu_item_check label="Ver los iconos de la gente" name="view_icons"/>
+	<menu_item_check label="Ver mapa" name="view_map"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_people_recent_view.xml b/indra/newview/skins/default/xui/es/menu_people_recent_view.xml
new file mode 100644
index 00000000000..f0ffd140248
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_people_recent_view.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="Ordenar por más reciente" name="sort_most"/>
+	<menu_item_check label="Ordenar alfabéticamente" name="sort_name"/>
+	<menu_item_check label="Ver los iconos de la gente" name="view_icons"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_url_agent.xml b/indra/newview/skins/default/xui/es/menu_url_agent.xml
index a089c8f68e3..69a03671aba 100644
--- a/indra/newview/skins/default/xui/es/menu_url_agent.xml
+++ b/indra/newview/skins/default/xui/es/menu_url_agent.xml
@@ -1,6 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Url Popup">
-	<menu_item_call label="Mostrar el perfil del Residente" name="show_agent"/>
+	<menu_item_call label="Ver el perfil" name="show_agent"/>
+	<menu_item_call label="Enviar un MI..." name="send_im"/>
+	<menu_item_call label="Añadir como amigo..." name="add_friend"/>
 	<menu_item_call label="Copiar el nombre al portapapeles" name="url_copy_label"/>
 	<menu_item_call label="Copiar la SLurl al portapapeles" name="url_copy"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_url_objectim.xml b/indra/newview/skins/default/xui/es/menu_url_objectim.xml
index 8791a290af6..e78fdec5580 100644
--- a/indra/newview/skins/default/xui/es/menu_url_objectim.xml
+++ b/indra/newview/skins/default/xui/es/menu_url_objectim.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Url Popup">
-	<menu_item_call label="Mostrar la información del objeto" name="show_object"/>
+	<menu_item_call label="Perfil del objeto..." name="show_object"/>
 	<menu_item_call label="Mostrar en el mapa" name="show_on_map"/>
 	<menu_item_call label="Teleportarse a la posición del objeto" name="teleport_to_object"/>
 	<menu_item_call label="Copiar el nombre del objeto al portapapeles" name="url_copy_label"/>
diff --git a/indra/newview/skins/default/xui/es/menu_viewer.xml b/indra/newview/skins/default/xui/es/menu_viewer.xml
index d80150ef6df..30842f53f26 100644
--- a/indra/newview/skins/default/xui/es/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/es/menu_viewer.xml
@@ -16,10 +16,7 @@
 			<menu_item_call label="Parar mis animaciones" name="Stop Animating My Avatar"/>
 			<menu_item_call label="Caminar / Correr / Volar..." name="Walk / run / fly"/>
 		</menu>
-		<menu label="Estado" name="Status">
-			<menu_item_call label="Ausente" name="Set Away"/>
-			<menu_item_call label="Ocupado" name="Set Busy"/>
-		</menu>
+		<menu label="Estado" name="Status"/>
 		<menu_item_call label="Comprar L$..." name="Buy and Sell L$"/>
 		<menu_item_call label="Panel de control de la cuenta..." name="Manage My Account">
 			<menu_item_call.on_click name="ManageMyAccount_url" parameter="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=es"/>
@@ -31,14 +28,18 @@
 		<menu_item_call label="Salir de [APP_NAME]" name="Quit"/>
 	</menu>
 	<menu label="Comunicarme" name="Communicate">
+		<menu_item_check label="Conversaciones..." name="Conversations"/>
 		<menu_item_check label="Chat..." name="Nearby Chat"/>
 		<menu_item_check label="Hablar" name="Speak"/>
-		<menu_item_check label="Configuración de voz..." name="Nearby Voice"/>
-		<menu_item_check label="Transformación de voz..." name="ShowVoice"/>
+		<menu label="Transformación de voz" name="VoiceMorphing">
+			<menu_item_check label="Sin transformación de voz" name="NoVoiceMorphing"/>
+			<menu_item_check label="Probar..." name="Preview"/>
+			<menu_item_call label="Suscribir..." name="Subscribe"/>
+		</menu>
 		<menu_item_check label="Gestos..." name="Gestures"/>
-		<menu_item_call label="Amigos" name="My Friends"/>
-		<menu_item_call label="Grupos" name="My Groups"/>
-		<menu_item_call label="Gente cerca" name="Active Speakers"/>
+		<menu_item_check label="Amigos" name="My Friends"/>
+		<menu_item_check label="Grupos" name="My Groups"/>
+		<menu_item_check label="Gente cerca" name="Active Speakers"/>
 		<menu_item_call label="Lista de ignorados" name="Block List"/>
 	</menu>
 	<menu label="Mundo" name="World">
@@ -114,7 +115,6 @@
 			<menu_item_call label="Comprar" name="Menu Object Buy"/>
 			<menu_item_call label="Tomar" name="Menu Object Take"/>
 			<menu_item_call label="Coger una copia" name="Take Copy"/>
-			<menu_item_call label="Guardar una copia en mi inventario" name="Save Object Back to My Inventory"/>
 			<menu_item_call label="Guardar una copia del objeto en los contenidos de donde salió" name="Save Object Back to Object Contents"/>
 			<menu_item_call label="Devolver objeto" name="Return Object back to Owner"/>
 		</menu>
@@ -129,6 +129,7 @@
 			<menu_item_call label="Linksets..." name="pathfinding_linksets_menu_item"/>
 			<menu_item_call label="Personajes..." name="pathfinding_characters_menu_item"/>
 			<menu_item_call label="Ver/probar..." name="pathfinding_console_menu_item"/>
+			<menu_item_call label="Recargar la región" name="pathfinding_rebake_navmesh_item"/>
 		</menu>
 		<menu label="Opciones" name="Options">
 			<menu_item_check label="Mostrar los permisos avanzados" name="DebugPermissions"/>
@@ -158,6 +159,13 @@
 	<menu label="Ayuda" name="Help">
 		<menu_item_call label="Cómo..." name="How To"/>
 		<menu_item_call label="Ayuda de [SECOND_LIFE]" name="Second Life Help"/>
+		<menu_item_call label="Guía del usuario" name="User’s guide"/>
+		<menu_item_call label="Base de Conocimientos" name="Knowledge Base"/>
+		<menu_item_call label="Wiki" name="Wiki"/>
+		<menu_item_call label="Foros comunitarios" name="Community Forums"/>
+		<menu_item_call label="Portal de soporte" name="Support portal"/>
+		<menu_item_call label="Noticias de [SECOND_LIFE]" name="Second Life News"/>
+		<menu_item_call label="Blogs de [SECOND_LIFE]" name="Second Life Blogs"/>
 		<menu_item_call label="Denunciar una infracción" name="Report Abuse"/>
 		<menu_item_call label="Informar de un fallo" name="Report Bug"/>
 		<menu_item_call label="Acerca de [APP_NAME]" name="About Second Life"/>
@@ -335,9 +343,14 @@
 				<menu_item_call label="Toggle Character Geometry" name="Toggle Character Geometry"/>
 				<menu_item_check label="Allow Select Avatar" name="Allow Select Avatar"/>
 			</menu>
+			<menu label="Velocidad de animación" name="Animation Speed">
+				<menu_item_call label="Acelerar todas las animaciones un 10%" name="All Animations 10 Faster"/>
+				<menu_item_call label="Ralentizar todas las animaciones un 10%" name="All Animations 10 Slower"/>
+				<menu_item_call label="Restablecer la velocidad de todas las animaciones" name="Reset All Animation Speed"/>
+				<menu_item_check label="Animaciones a cámara lenta" name="Slow Motion Animations"/>
+			</menu>
 			<menu_item_call label="Force Params to Default" name="Force Params to Default"/>
 			<menu_item_check label="Animation Info" name="Animation Info"/>
-			<menu_item_check label="Slow Motion Animations" name="Slow Motion Animations"/>
 			<menu_item_check label="Disable Level Of Detail" name="Disable LOD"/>
 			<menu_item_check label="Show Collision Skeleton" name="Show Collision Skeleton"/>
 			<menu_item_check label="Display Agent Target" name="Display Agent Target"/>
diff --git a/indra/newview/skins/default/xui/es/notifications.xml b/indra/newview/skins/default/xui/es/notifications.xml
index 7dfb27717d3..05455f54c39 100644
--- a/indra/newview/skins/default/xui/es/notifications.xml
+++ b/indra/newview/skins/default/xui/es/notifications.xml
@@ -511,6 +511,24 @@ El objeto debe de haber sido borrado o estar fuera de rango (&apos;out of range&
 		</url>
 		<usetemplate ignoretext="Mi controlador de gráficos no está actualizado" name="okcancelignore" notext="No" yestext="Sí"/>
 	</notification>
+	<notification name="AMDOldDriver">
+		Probablemente ya existe un controlador más reciente para tu procesador de gráficos. La actualización del controlador de gráficos puede mejorar sustancialmente el rendimiento.
+
+    ¿Deseas visitar [_URL] para comprobar si hay controladores actualizados?
+		<url name="url">
+			http://support.amd.com/us/Pages/AMDSupportHub.aspx
+		</url>
+		<usetemplate ignoretext="Mi controlador de gráficos no está actualizado" name="okcancelignore" notext="No" yestext="Sí"/>
+	</notification>
+	<notification name="NVIDIAOldDriver">
+		Probablemente ya existe un controlador más reciente para tu procesador de gráficos.  La actualización del controlador de gráficos puede mejorar sustancialmente el rendimiento.
+
+    ¿Deseas visitar [_URL] para comprobar si hay controladores actualizados?
+		<url name="url">
+			http://www.nvidia.com/Download/index.aspx?lang=es
+		</url>
+		<usetemplate ignoretext="Mi controlador de gráficos no está actualizado" name="okcancelignore" notext="No" yestext="Sí"/>
+	</notification>
 	<notification name="UnknownGPU">
 		Tu sistema usa una tarjeta gráfica que [APP_NAME] no reconoce.
 Suele suceder con hardware nuevo que todavía no ha sido probado con [APP_NAME].  Probablemente todo irá bien, pero deberás ajustar tus configuraciones gráficas.
@@ -1553,10 +1571,13 @@ Debemos reiniciar [APP_NAME] para instalar la actualización.
 		En este momento, no se puede ofrecer el ser amigo. Por favor, vuelve a intentarlo en un momento.
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
-	<notification name="BusyModeSet">
-		Pasar al modo ocupado.
-Se ocultará el chat y los mensajes instantáneos   (éstos recibirán tu Respuesta en el modo ocupado). Se rehusarán todos los ofrecimientos de teleporte. Todas las ofertas de inventario irán a tu Papelera.
-		<usetemplate ignoretext="Cambio mi estado al modo ocupado" name="okignore" yestext="OK"/>
+	<notification name="DoNotDisturbModeSet">
+		Está activado No molestar. No obtendrás un aviso cuando recibas comunicaciones.
+
+- Los otros residentes recibirán tu respuesta de No molestar (se configura en Preferencias &gt; General).
+- Se rehusarán los ofrecimientos de teleporte.
+- Se rechazarán las llamadas de voz.
+		<usetemplate ignoretext="Cambio mi estado al modo No molestar" name="okignore" yestext="OK"/>
 	</notification>
 	<notification name="JoinedTooManyGroupsMember">
 		Has superado tu número máximo de grupos. Por favor, sal de al menos uno antes de entrar en éste, o rehúsa la oferta.
@@ -2043,6 +2064,10 @@ Dado que estos objetos tienen scripts, moverlos a tu inventario puede provocar u
 		¿Ir a tu [http://secondlife.com/account/ Panel de Control] para ver el historial de tu cuenta?
 		<usetemplate ignoretext="Abrir mi navegador para ver el historial de mi cuenta" name="okcancelignore" notext="Cancelar" yestext="Ir a la página"/>
 	</notification>
+	<notification name="ConfirmAddingChatParticipants">
+		Si agregas una persona a una conversación en curso, se creará una conversación nueva. Todos los participantes recibirán notificaciones de la nueva conversación.
+		<usetemplate ignoretext="Confirmar agregar participantes al chat" name="okcancelignore" notext="Cancelar" yestext="Aceptar"/>
+	</notification>
 	<notification name="ConfirmQuit">
 		¿Estás seguro de que quieres salir?
 		<usetemplate ignoretext="Confirmar antes de salir" name="okcancelignore" notext="No salir" yestext="Salir"/>
@@ -2116,14 +2141,14 @@ Linden Lab
 			<button ignore="Nunca reemplazar" name="No" text="Cancelar"/>
 		</form>
 	</notification>
-	<notification label="¡Aviso! Modo Ocupado" name="BusyModePay">
-		Estás en el modo Ocupado. Por tanto, no recibirás ningún ítem a cambio de este pago.
+	<notification label="Advertencia del modo No molestar" name="DoNotDisturbModePay">
+		Tienes activado No molestar. No podrás recibir ningún objeto ofrecido a cambio de este pago.
 
-¿Quieres salir del modo Ocupado antes de completar esta transacción?
+¿Deseas desactivar No molestar antes de finalizar esta transacción?
 		<form name="form">
-			<ignore name="ignore" save_option="true" text="Voy a pagar a una persona u objeto mientras estoy en el modo ocupado"/>
-			<button ignore="Siempre salir del modo Ocupado" name="Yes" text="OK"/>
-			<button ignore="Nunca salir del modo Ocupado" name="No" text="Cancelar"/>
+			<ignore name="ignore" text="Voy a pagar a una persona u objeto mientras estoy en el modo No molestar"/>
+			<button ignore="Salir siempre del modo No molestar" name="Yes" text="OK"/>
+			<button ignore="No salir nunca del modo No molestar" name="No" text="Cancelar"/>
 		</form>
 	</notification>
 	<notification name="ConfirmDeleteProtectedCategory">
@@ -2258,11 +2283,8 @@ Publícala en una página web para que otros puedan acceder fácilmente a esta p
 	<notification name="GroupNotice">
 		Asunto: [SUBJECT], Mensaje: [MESSAGE]
 	</notification>
-	<notification name="FriendOnline">
-		&lt;nolink&gt;[NAME]&lt;/nolink&gt; está conectado
-	</notification>
-	<notification name="FriendOffline">
-		&lt;nolink&gt;[NAME]&lt;/nolink&gt; está desconectado
+	<notification name="FriendOnlineOffline">
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; está [STATUS]
 	</notification>
 	<notification name="AddSelfFriend">
 		Aunque eres muy agradable, no puedes añadirte como amigo a ti mismo.
@@ -2490,13 +2512,6 @@ Aquí no puedes volar.
 	<notification name="DynamicPathfindingDisabled">
 		Esta región no tiene activado el pathfinding dinámico. Los objetos programados que utilicen llamadas LSL de pathfinding pueden tener un comportamiento inesperado en ella.
 	</notification>
-	<notification name="PathfindingRebakeNavmesh">
-		Si cambias ciertos objetos en esta región, otros objetos móviles podrían tener un comportamiento incorrecto. Para que los objetos móviles se comporten correctamente, pulsa el botón “Recargar la región”. Si quieres más información, elige “Ayuda”.
-		<url name="url">
-			http://wiki.secondlife.com/wiki/Pathfinding_Tools_in_the_Second_Life_Viewer
-		</url>
-		<usetemplate helptext="Ayuda" ignoretext="Si cambias ciertos objetos en esta región, otros objetos móviles podrían tener un comportamiento incorrecto." name="okhelpignore" yestext="OK"/>
-	</notification>
 	<notification name="PathfindingCannotRebakeNavmesh">
 		Se ha producido un error. Puede haber ocurrido un problema en la red o el servidor, o quizás no tengas derechos de construcción. Este problema podría resolverse cerrando la sesión e iniciando una sesión nueva.
 		<usetemplate name="okbutton" yestext="OK"/>
@@ -2757,9 +2772,9 @@ Del objeto: &lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;, propietario: [NAME]?
 		</form>
 	</notification>
 	<notification name="ScriptQuestionCaution">
-		Atención: El objeto &apos;&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;&apos; solicita un acceso total a tu cuenta de dólares Linden. Si le autorizas el acceso, podrá retirar fondos de tu cuenta en cualquier momento o vaciarla por completo, de manera permanente y sin más advertencias.
+		Atención: El objeto &apos;&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;&apos; solicita un acceso pleno a tu cuenta de dólares Linden. Si le autorizas el acceso, podrá retirar fondos de tu cuenta en cualquier momento o vaciarla por completo, cuando lo desee y sin más advertencias.
   
-Estas solicitudes pocas veces son legítimas. No autorices el acceso si no conoces la razón exacta por la que desea el acceso a tu cuenta.
+No autorices el acceso a tu cuenta si no conoces cuál es la razón exacta.
 		<form name="form">
 			<button name="Grant" text="Permitir acceso total"/>
 			<button name="Deny" text="Denegar"/>
@@ -3331,4 +3346,633 @@ Intento cancelado.
 		Vas a eliminar [NUM_ITEMS] objetos. ¿Estás seguro de que deseas continuar?
 		<usetemplate ignoretext="¿Estás seguro de que quieres eliminar varios elementos?" name="okcancelignore" notext="No" yestext="Sí"/>
 	</notification>
+	<notification name="AvatarFrozen">
+		[AV_FREEZER] te ha congelado. No puedes moverte ni interactuar con el mundo.
+	</notification>
+	<notification name="AvatarFrozenDuration">
+		[AV_FREEZER] te ha congelado durante [AV_FREEZE_TIME] segundos. No puedes moverte ni interactuar con el mundo.
+	</notification>
+	<notification name="YouFrozeAvatar">
+		Avatar congelado.
+	</notification>
+	<notification name="AvatarHasUnFrozenYou">
+		[AV_FREEZER] te ha descongelado.
+	</notification>
+	<notification name="AvatarUnFrozen">
+		Avatar descongelado.
+	</notification>
+	<notification name="AvatarFreezeFailure">
+		Error al congelar: no tienes permisos de administrador en esa parcela.
+	</notification>
+	<notification name="AvatarFreezeThaw">
+		La congelación ha terminado, puedes seguir con tus asuntos.
+	</notification>
+	<notification name="AvatarCantFreeze">
+		Lo sentimos, ese usuario no se puede congelar.
+	</notification>
+	<notification name="NowOwnObject">
+		Ahora eres el propietario del objeto [OBJECT_NAME]
+	</notification>
+	<notification name="CantRezOnLand">
+		No se puede colocar el objeto en [OBJECT_POS] porque el propietario de ese terreno no lo permite. Usa la herramienta de terreno para ver quién es el propietario.
+	</notification>
+	<notification name="RezFailTooManyRequests">
+		El objeto no se puede colocar porque hay demasiadas solicitudes.
+	</notification>
+	<notification name="SitFailCantMove">
+		No te puedes sentar porque en este momento no puedes desplazarte.
+	</notification>
+	<notification name="SitFailNotAllowedOnLand">
+		No te puedes sentar porque no tienes permiso para estar en ese terreno.
+	</notification>
+	<notification name="SitFailNotSameRegion">
+		Acércate. No te puedes sentar en el objeto porque
+no está en la misma región que tú.
+	</notification>
+	<notification name="NoNewObjectRegionFull">
+		No se puede crear el nuevo objeto. La región está llena.
+	</notification>
+	<notification name="FailedToPlaceObject">
+		Error al colocar el objeto en el lugar especificado.  Vuelve a intentarlo.
+	</notification>
+	<notification name="NoOwnNoGardening">
+		No puedes crear árboles y hierba en un terreno que no es tuyo.
+	</notification>
+	<notification name="NoCopyPermsNoObject">
+		Error al copiar: careces de permiso para copiar el objeto &apos;[OBJ_NAME]&apos;.
+	</notification>
+	<notification name="NoTransPermsNoObject">
+		Error al copiar: no se te puede transferir el objeto &apos;[OBJ_NAME]&apos;.
+	</notification>
+	<notification name="AddToNavMeshNoCopy">
+		Error al copiar porque el objeto &apos;[OBJ_NAME]&apos; contribuye al navmesh.
+	</notification>
+	<notification name="DupeWithNoRootsSelected">
+		Duplicación sin objetos raíz seleccionados.
+	</notification>
+	<notification name="CantDupeCuzRegionIsFull">
+		No se pueden duplicar objetos porque la región está llena.
+	</notification>
+	<notification name="CantDupeCuzParcelNotFound">
+		No se pueden duplicar los objetos: no se encuentra la parcela en la que se hallan.
+	</notification>
+	<notification name="CantCreateCuzParcelFull">
+		No se puede crear el objeto porque 
+la parcela está llena.
+	</notification>
+	<notification name="RezAttemptFailed">
+		Error al intentar colocar un objeto.
+	</notification>
+	<notification name="ToxicInvRezAttemptFailed">
+		No se puede crear un objeto que ha causado problemas en esta región.
+	</notification>
+	<notification name="InvItemIsBlacklisted">
+		Ese objeto de inventario está en la lista negra.
+	</notification>
+	<notification name="NoCanRezObjects">
+		Actualmente no tienes autorización para crear objetos.
+	</notification>
+	<notification name="LandSearchBlocked">
+		Búsqueda de terrenos bloqueada.
+Has realizado demasiadas búsquedas de terreno con excesiva rapidez.
+Prueba otra vez dentro de un minuto.
+	</notification>
+	<notification name="NotEnoughResourcesToAttach">
+		No hay suficientes recursos de script disponibles para anexar el objeto
+	</notification>
+	<notification name="YouDiedAndGotTPHome">
+		Has muerto y te has teleportado a tu lugar de origen
+	</notification>
+	<notification name="EjectComingSoon">
+		Te han expulsado de aquí y tienes [EJECT_TIME] segundos para salir.
+	</notification>
+	<notification name="NoEnterServerFull">
+		No puedes entrar en esta región porque 
+el servidor está lleno.
+	</notification>
+	<notification name="SaveBackToInvDisabled">
+		Se ha deshabilitado Devolver el objeto a mi inventario.
+	</notification>
+	<notification name="NoExistNoSaveToContents">
+		No se puede guardar &apos;[OBJ_NAME]&apos; en el contenido del objeto porque el objeto desde el cual ha sido colocado ya no existe.
+	</notification>
+	<notification name="NoModNoSaveToContents">
+		No se puede guardar &apos;[OBJ_NAME]&apos; en el contenido del objeto porque no tienes permiso para modificar el objeto &apos;[DEST_NAME]&apos;.
+	</notification>
+	<notification name="NoSaveBackToInvDisabled">
+		No se puede guardar &apos;[OBJ_NAME]&apos; de nuevo en el inventario; esta operación está desactivada.
+	</notification>
+	<notification name="NoCopyNoSelCopy">
+		No se puede copiar tu selección porque no tienes permiso para copiar el objeto &apos;[OBJ_NAME]&apos;.
+	</notification>
+	<notification name="NoTransNoSelCopy">
+		No se puede copiar tu selección porque el objeto &apos;[OBJ_NAME]&apos; es intransferible.
+	</notification>
+	<notification name="NoTransNoCopy">
+		No se puede copiar tu selección porque el objeto &apos;[OBJ_NAME]&apos; es intransferible.
+	</notification>
+	<notification name="NoPermsNoRemoval">
+		El sistema de permisos no admite la eliminación del objeto &apos;[OBJ_NAME]&apos; del simulador.
+	</notification>
+	<notification name="NoModNoSaveSelection">
+		No se puede guardar tu selección porque no tienes permiso para modificar el objeto &apos;[OBJ_NAME]&apos;.
+	</notification>
+	<notification name="NoCopyNoSaveSelection">
+		No se puede guardar tu selección porque el objeto &apos;[OBJ_NAME]&apos; no se puede copiar.
+	</notification>
+	<notification name="NoModNoTaking">
+		No se puede aceptar tu selección porque no tienes permiso para modificar el objeto &apos;[OBJ_NAME]&apos;.
+	</notification>
+	<notification name="RezDestInternalError">
+		Error interno: tipo de destino desconocido.
+	</notification>
+	<notification name="DeleteFailObjNotFound">
+		Error al borrar: el objeto no se encuentra
+	</notification>
+	<notification name="SorryCantEjectUser">
+		Lo sentimos, ese usuario no se puede expulsar.
+	</notification>
+	<notification name="RegionSezNotAHome">
+		Esta región no te permite configurar aquí tu lugar de origen.
+	</notification>
+	<notification name="HomeLocationLimits">
+		Tu &apos;Lugar de origen&apos; solo se puede configurar en tu terreno o en un punto de información del continente.
+	</notification>
+	<notification name="HomePositionSet">
+		Posición de origen ajustada.
+	</notification>
+	<notification name="AvatarEjected">
+		Avatar expulsado.
+	</notification>
+	<notification name="AvatarEjectFailed">
+		Error al expulsar: no tienes permiso de administrador en esa parcela.
+	</notification>
+	<notification name="CantMoveObjectParcelFull">
+		No se puede mover el objeto &apos;[OBJECT_NAME]&apos; a
+[OBJ_POSITION] en la región [REGION_NAME] porque la parcela está llena.
+	</notification>
+	<notification name="CantMoveObjectParcelPerms">
+		No se puede mover el objeto &apos;[OBJECT_NAME]&apos; a
+[OBJ_POSITION] de la región [REGION_NAME] porque tus objetos no están permitidos en esta parcela.
+	</notification>
+	<notification name="CantMoveObjectParcelResources">
+		No se puede mover el objeto &apos;[OBJECT_NAME]&apos; a
+[OBJ_POSITION] de la región [REGION_NAME] porque no hay suficientes recursos para este objeto en esta parcela.
+	</notification>
+	<notification name="CantMoveObjectRegionVersion">
+		No se puede mover el objeto &apos;[OBJECT_NAME]&apos; a
+[OBJ_POSITION] de la región [REGION_NAME] porque la otra región ejecuta una versión más antigua que no admite la recepción de este objeto atravesando regiones.
+	</notification>
+	<notification name="CantMoveObjectNavMesh">
+		No se puede mover el objeto &apos;[OBJECT_NAME]&apos; a
+[OBJ_POSITION] en la región [REGION_NAME] porque no puedes modificar el navmesh a través de límites de región.
+	</notification>
+	<notification name="CantMoveObjectWTF">
+		No se puede mover el objeto &apos;[OBJECT_NAME]&apos; a
+[OBJ_POSITION] en la región [REGION_NAME] por un motivo desconocido. ([FAILURE_TYPE])
+	</notification>
+	<notification name="NoPermModifyObject">
+		No tienes permiso para modificar ese objeto
+	</notification>
+	<notification name="CantEnablePhysObjContributesToNav">
+		No se puede habilitar la física para un objeto que contribuye al navmesh.
+	</notification>
+	<notification name="CantEnablePhysKeyframedObj">
+		No se puede activar la física para los objetos con fotogramas clave.
+	</notification>
+	<notification name="CantEnablePhysNotEnoughLandResources">
+		No se puede habilitar la física para el objeto: recursos de terreno insuficientes.
+	</notification>
+	<notification name="CantEnablePhysCostTooGreat">
+		No se puede activar la física para un objeto con un coste de recursos de física mayor que [MAX_OBJECTS]
+	</notification>
+	<notification name="PhantomWithConcavePiece">
+		Este objeto no puede tener una pieza cóncava porque es inmaterial y contribuye al navmesh.
+	</notification>
+	<notification name="UnableAddItem">
+		¡No se puede añadir un objeto!
+	</notification>
+	<notification name="UnableEditItem">
+		¡No se puede editar esto!
+	</notification>
+	<notification name="NoPermToEdit">
+		No puedes editar esto.
+	</notification>
+	<notification name="NoPermToCopyInventory">
+		No está permitido copiar ese inventario.
+	</notification>
+	<notification name="CantSaveItemDoesntExist">
+		No se puede guardar en el contenido del objeto: el objeto ya no existe.
+	</notification>
+	<notification name="CantSaveItemAlreadyExists">
+		No se puede guardar en el contenido del objeto: el inventario ya contiene un objeto con ese nombre
+	</notification>
+	<notification name="CantSaveModifyAttachment">
+		No se puede guardar en el contenido del objeto: se modificarían los permisos de anexo.
+	</notification>
+	<notification name="TooManyScripts">
+		Demasiados scripts.
+	</notification>
+	<notification name="UnableAddScript">
+		¡No se puede añadir un script!
+	</notification>
+	<notification name="AssetServerTimeoutObjReturn">
+		El servidor de objetos no respondió puntualmente. El objeto se ha devuelto al sim.
+	</notification>
+	<notification name="RegionDisablePhysicsShapes">
+		Esta región no tiene habilitadas las formas de física.
+	</notification>
+	<notification name="NoModNavmeshAcrossRegions">
+		No se puede modificar el navmesh a través de límites de región.
+	</notification>
+	<notification name="NoSetPhysicsPropertiesOnObjectType">
+		No se pueden establecer propiedades de física en ese tipo de objeto.
+	</notification>
+	<notification name="NoSetRootPrimWithNoShape">
+		No se puede establecer que un prim raíz no tenga forma.
+	</notification>
+	<notification name="NoRegionSupportPhysMats">
+		Esta región no tiene habilitados los materiales de física.
+	</notification>
+	<notification name="OnlyRootPrimPhysMats">
+		Solo se pueden ajustar los materiales de física de las prims raíces.
+	</notification>
+	<notification name="NoSupportCharacterPhysMats">
+		Aun no es posible configurar materiales de física para los personajes.
+	</notification>
+	<notification name="InvalidPhysMatProperty">
+		Una o varias de las propiedades de los materiales de física especificados no son válidas.
+	</notification>
+	<notification name="NoPermsAlterStitchingMeshObj">
+		No se puede cambiar el tipo de unión de un objeto de la malla.
+	</notification>
+	<notification name="NoPermsAlterShapeMeshObj">
+		No se puede cambiar la forma de un objeto de la malla
+	</notification>
+	<notification name="FullRegionCantEnter">
+		No puedes entrar en esta región porque \nla región está llena.
+	</notification>
+	<notification name="LinkFailedOwnersDiffer">
+		Error de vínculo: los propietarios son diferentes
+	</notification>
+	<notification name="LinkFailedNoModNavmeshAcrossRegions">
+		Error de vínculo: no se puede modificar el navmesh a través de límites de región.
+	</notification>
+	<notification name="LinkFailedNoPermToEdit">
+		Error de vínculo: no tienes permiso de edición.
+	</notification>
+	<notification name="LinkFailedTooManyPrims">
+		Error de vínculo: demasiadas primitivas
+	</notification>
+	<notification name="LinkFailedCantLinkNoCopyNoTrans">
+		Error de vínculo: no se pueden vincular &apos;no copiable&apos; y &apos;no transferible&apos;
+	</notification>
+	<notification name="LinkFailedNothingLinkable">
+		Error de vínculo: no hay objetos que se puedan vincular.
+	</notification>
+	<notification name="LinkFailedTooManyPathfindingChars">
+		Error de vínculo: demasiados personajes de pathfinding
+	</notification>
+	<notification name="LinkFailedInsufficientLand">
+		Error de vínculo: recursos de terreno insuficientes
+	</notification>
+	<notification name="LinkFailedTooMuchPhysics">
+		El objeto utiliza una cantidad excesiva de recursos de física; se ha desactivado su dinámica.
+	</notification>
+	<notification name="TeleportedHomeByObjectOnParcel">
+		Has sido teleportado al origen por el objeto &apos;[OBJECT_NAME]&apos; de la parcela &apos;[PARCEL_NAME]&apos;
+	</notification>
+	<notification name="TeleportedHomeByObject">
+		Has sido teleportado a tu origen por el objeto &apos;[OBJECT_NAME]&apos;
+	</notification>
+	<notification name="TeleportedByAttachment">
+		Has sido teleportado por un anexo de [ITEM_ID]
+	</notification>
+	<notification name="TeleportedByObjectOnParcel">
+		Has sido teleportado por el objeto &apos;[OBJECT_NAME]&apos; de la parcela &apos;[PARCEL_NAME]&apos;
+	</notification>
+	<notification name="TeleportedByObjectOwnedBy">
+		Has sido teleportado por el objeto &apos;[OBJECT_NAME]&apos; que es propiedad de [OWNER_ID]
+	</notification>
+	<notification name="TeleportedByObjectUnknownUser">
+		Has sido teleportado por el objeto &apos;[OBJECT_NAME]&apos; cuyo propietario es un usuario desconocido.
+	</notification>
+	<notification name="CantCreateObjectRegionFull">
+		No se puede crear el objeto solicitado. La región está llena.
+	</notification>
+	<notification name="CantAttackMultipleObjOneSpot">
+		No puedes anexar varios objetos a un solo lugar.
+	</notification>
+	<notification name="CantCreateMultipleObjAtLoc">
+		Aquí no se pueden crear varios objetos.
+	</notification>
+	<notification name="UnableToCreateObjTimeOut">
+		No se puede crear el objeto solicitado. El objeto no se encuentra en la base de datos.
+	</notification>
+	<notification name="UnableToCreateObjUnknown">
+		No se puede crear el objeto solicitado. Ha expirado el tiempo de la solicitud. Vuelve a intentarlo.
+	</notification>
+	<notification name="UnableToCreateObjMissingFromDB">
+		No se puede crear el objeto solicitado. Vuelve a intentarlo.
+	</notification>
+	<notification name="RezFailureTookTooLong">
+		Error al colocar: la carga del objeto solicitado ha tardado demasiado.
+	</notification>
+	<notification name="FailedToPlaceObjAtLoc">
+		Error al colocar el objeto en el lugar especificado. Vuelve a intentarlo.
+	</notification>
+	<notification name="CantCreatePlantsOnLand">
+		No se pueden crear plantas en este terreno.
+	</notification>
+	<notification name="CantRestoreObjectNoWorldPos">
+		No se puede restaurar el objeto. No se ha encontrado una posición del mundo.
+	</notification>
+	<notification name="CantRezObjectInvalidMeshData">
+		No se puede colocar el objeto porque sus datos de malla no son válidos.
+	</notification>
+	<notification name="CantRezObjectTooManyScripts">
+		No se puede colocar el objeto porque la región ya contiene demasiados scripts.
+	</notification>
+	<notification name="CantCreateObjectNoAccess">
+		Tus privilegios de acceso no te permiten crear objetos allí.
+	</notification>
+	<notification name="CantCreateObject">
+		Actualmente no tienes autorización para crear objetos.
+	</notification>
+	<notification name="InvalidObjectParams">
+		Los parámetros de objeto no son válidos
+	</notification>
+	<notification name="CantDuplicateObjectNoAcess">
+		Tus privilegios de acceso no te permiten duplicar objetos aquí.
+	</notification>
+	<notification name="CantChangeShape">
+		No tienes permiso para cambiar esta forma.
+	</notification>
+	<notification name="NoAccessToClaimObjects">
+		Tus privilegios de acceso no te permiten reclamar objetos aquí.
+	</notification>
+	<notification name="DeedFailedNoPermToDeedForGroup">
+		Error de transferencia: no tienes permiso para transferir objetos para tu grupo.
+	</notification>
+	<notification name="NoPrivsToBuyObject">
+		Tus privilegios de acceso no te autorizan a comprar objetos aquí.
+	</notification>
+	<notification name="CantAttachObjectAvatarSittingOnIt">
+		No se puede anexar el objeto porque un avatar está sentado en él.
+	</notification>
+	<notification name="WhyAreYouTryingToWearShrubbery">
+		No te puedes poner árboles y hierba como anexos.
+	</notification>
+	<notification name="CantAttachGroupOwnedObjs">
+		No se pueden anexar objetos que son propiedad de grupos.
+	</notification>
+	<notification name="CantAttachObjectsNotOwned">
+		No puedes anexar objetos de los que no eres propietario.
+	</notification>
+	<notification name="CantAttachNavmeshObjects">
+		No se pueden anexar objetos que contribuyen al navmesh.
+	</notification>
+	<notification name="CantAttachObjectNoMovePermissions">
+		No se puede anexar el objeto porque no tienes permiso para moverlo.
+	</notification>
+	<notification name="CantAttachNotEnoughScriptResources">
+		No hay suficientes recursos de script disponibles para anexar el objeto
+	</notification>
+	<notification name="CantDropItemTrialUser">
+		No se pueden soltar objetos aquí; inténtalo en la zona de prueba gratuita.
+	</notification>
+	<notification name="CantDropMeshAttachment">
+		No se pueden soltar anexos de la malla. Quítalos en el inventario y después colócalos en el mundo.
+	</notification>
+	<notification name="CantDropAttachmentNoPermission">
+		Error al soltar el anexo: no tienes permiso para soltarlo allí.
+	</notification>
+	<notification name="CantDropAttachmentInsufficientLandResources">
+		Error al soltar el anexo: recurso de terreno disponible insuficiente.
+	</notification>
+	<notification name="CantDropAttachmentInsufficientResources">
+		Error al soltar los anexos: los recursos disponibles son insuficientes.
+	</notification>
+	<notification name="CantDropObjectFullParcel">
+		No se puede soltar el objeto aquí. La parcela está llena.
+	</notification>
+	<notification name="CantTouchObjectBannedFromParcel">
+		No puedes tocar/agarrar este objeto porque tienes prohibida la entrada en la parcela de terreno.
+	</notification>
+	<notification name="PlzNarrowDeleteParams">
+		Acota los parámetros de eliminación.
+	</notification>
+	<notification name="UnableToUploadAsset">
+		No se puede subir el activo.
+	</notification>
+	<notification name="CantTeleportCouldNotFindUser">
+		No se ha podido encontrar el usuario para teleportarlo al origen
+	</notification>
+	<notification name="GodlikeRequestFailed">
+		error en la solicitud de superpoderes
+	</notification>
+	<notification name="GenericRequestFailed">
+		error de solicitud genérico
+	</notification>
+	<notification name="CantUploadPostcard">
+		No se puede subir la postal. Vuelve a intentarlo más tarde.
+	</notification>
+	<notification name="CantFetchInventoryForGroupNotice">
+		No se pueden obtener los datos de inventario del aviso de grupo.
+	</notification>
+	<notification name="CantSendGroupNoticeNotPermitted">
+		No se puede enviar el aviso de grupo: no está permitido.
+	</notification>
+	<notification name="CantSendGroupNoticeCantConstructInventory">
+		No se puede enviar el aviso del grupo: el inventario no se puede construir.
+	</notification>
+	<notification name="CantParceInventoryInNotice">
+		No se puede analizar el inventario del aviso.
+	</notification>
+	<notification name="TerrainUploadFailed">
+		Error al subir terreno.
+	</notification>
+	<notification name="TerrainFileWritten">
+		Se ha registrado el archivo de terreno.
+	</notification>
+	<notification name="TerrainFileWrittenStartingDownload">
+		Archivo de terreno registrado, iniciando la descarga...
+	</notification>
+	<notification name="TerrainBaked">
+		Terreno predeterminado.
+	</notification>
+	<notification name="TenObjectsDisabledPlzRefresh">
+		Solamente se han desactivado los 10 primeros objetos seleccionados. Si es preciso, actualiza y selecciona otros objetos.
+	</notification>
+	<notification name="UpdateViewerBuyParcel">
+		Para comprar esta parcela debes actualizar el visor.
+	</notification>
+	<notification name="CantBuyParcelNotForSale">
+		Error al comprar: esta parcela no está en venta.
+	</notification>
+	<notification name="CantBuySalePriceOrLandAreaChanged">
+		No se puede comprar: el precio de venta o la superficie del terreno han cambiado.
+	</notification>
+	<notification name="CantBuyParcelNotAuthorized">
+		No eres el comprador autorizado de esta parcela.
+	</notification>
+	<notification name="CantBuyParcelAwaitingPurchaseAuth">
+		No puedes comprar esta parcela porque ya está en espera de una autorización de compra
+	</notification>
+	<notification name="CantBuildOverflowParcel">
+		No se pueden construir objetos aquí porque se desbordaría la parcela.
+	</notification>
+	<notification name="SelectedMultipleOwnedLand">
+		Has seleccionado un terreno con propietarios diferentes. Selecciona un área más pequeña y repite la operación.
+	</notification>
+	<notification name="CantJoinTooFewLeasedParcels">
+		La selección no contiene suficientes parcelas alquiladas para unirlas.
+	</notification>
+	<notification name="CantDivideLandMultipleParcelsSelected">
+		No se puede dividir el terreno.\nHay varias parcelas seleccionadas.\nPrueba a seleccionar un terreno más pequeño.
+	</notification>
+	<notification name="CantDivideLandCantFindParcel">
+		No se puede dividir el terreno.\nNo se encuentra la parcela.\nAvísanos con Ayuda -&gt; Notificar fallo...
+	</notification>
+	<notification name="CantDivideLandWholeParcelSelected">
+		No se puede dividir el terreno. Está seleccionada la parcela completa.\nPrueba a seleccionar un terreno más pequeño.
+	</notification>
+	<notification name="LandHasBeenDivided">
+		El terreno se ha dividido.
+	</notification>
+	<notification name="PassPurchased">
+		Has comprado un pase.
+	</notification>
+	<notification name="RegionDisallowsClassifieds">
+		La región no permite anuncios.
+	</notification>
+	<notification name="LandPassExpireSoon">
+		Tu pase para este terreno está a punto de caducar.
+	</notification>
+	<notification name="CantSitNoSuitableSurface">
+		Esta superficie no es adecuada para sentarse, prueba en otro sitio.
+	</notification>
+	<notification name="CantSitNoRoom">
+		No hay sitio para sentarse aquí, prueba en otro lugar.
+	</notification>
+	<notification name="ClaimObjectFailedNoPermission">
+		Error al reclamar el objeto: no tienes permiso
+	</notification>
+	<notification name="ClaimObjectFailedNoMoney">
+		Error al reclamar el objeto: no tienes suficientes L$.
+	</notification>
+	<notification name="CantDeedGroupLand">
+		No se puede transferir un terreno propiedad de un grupo.
+	</notification>
+	<notification name="BuyObjectFailedNoMoney">
+		Error al comprar el objeto, no tienes suficientes L$.
+	</notification>
+	<notification name="BuyInventoryFailedNoMoney">
+		Error al comprar el inventario: no tienes suficientes L$.
+	</notification>
+	<notification name="BuyPassFailedNoMoney">
+		No tienes suficientes L$ para comprar un pase a este terreno.
+	</notification>
+	<notification name="CantBuyPassTryAgain">
+		No se puede comprar el pase ahora mismo. Vuelve a intentarlo más tarde.
+	</notification>
+	<notification name="CantCreateObjectParcelFull">
+		No se puede crear el objeto porque \nla parcela está llena.
+	</notification>
+	<notification name="FailedPlacingObject">
+		Error al colocar el objeto en el lugar especificado.  Vuelve a intentarlo.
+	</notification>
+	<notification name="CantCreateLandmarkForEvent">
+		No se puede crear un hito para el evento.
+	</notification>
+	<notification name="GodBeatsFreeze">
+		¡Tus superpoderes anulan la congelación!
+	</notification>
+	<notification name="SpecialPowersRequestFailedLogged">
+		Error en la solicitud de poderes especiales. Esta solicitud se ha registrado.
+	</notification>
+	<notification name="ExpireExplanation">
+		El sistema actualmente no puede procesar tu solicitud. Ha expirado el tiempo de la solicitud.
+	</notification>
+	<notification name="DieExplanation">
+		El sistema no puede procesar tu solicitud.
+	</notification>
+	<notification name="AddPrimitiveFailure">
+		Dinero insuficiente para crear la primitiva.
+	</notification>
+	<notification name="RezObjectFailure">
+		Dinero insuficiente para crear el objeto.
+	</notification>
+	<notification name="ResetHomePositionNotLegal">
+		Se ha restaurado la posición de origen, puesto que dicha posición no era válida.
+	</notification>
+	<notification name="CantInviteRegionFull">
+		Actualmente no puedes invitar a nadie a tu ubicación, puesto que la región está llena. Vuelve a intentarlo más tarde.
+	</notification>
+	<notification name="CantSetHomeAtRegion">
+		Esta región no te permite configurar aquí tu lugar de origen.
+	</notification>
+	<notification name="ListValidHomeLocations">
+		Tu &apos;Lugar de origen&apos; solo se puede configurar en tu terreno o en un punto de información del continente.
+	</notification>
+	<notification name="SetHomePosition">
+		Posición de origen ajustada.
+	</notification>
+	<notification name="CantDerezInventoryError">
+		No se puede quitar el objeto por un error del inventario.
+	</notification>
+	<notification name="CantCreateRequestedInv">
+		No se puede crear el inventario solicitado.
+	</notification>
+	<notification name="CantCreateRequestedInvFolder">
+		No se puede crear la carpeta de inventario solicitada.
+	</notification>
+	<notification name="CantCreateInventory">
+		No se puede crear el inventario.
+	</notification>
+	<notification name="CantCreateLandmark">
+		No se puede crear un hito.
+	</notification>
+	<notification name="CantCreateOutfit">
+		No se puede crear el vestuario en este momento. Prueba otra vez dentro de un minuto.
+	</notification>
+	<notification name="InventoryNotForSale">
+		El inventario no está en venta.
+	</notification>
+	<notification name="CantFindInvItem">
+		No se encuentra el objeto del inventario.
+	</notification>
+	<notification name="CantFindObject">
+		No se puede encontrar el objeto.
+	</notification>
+	<notification name="CantTransfterMoneyRegionDisabled">
+		En esta región actualmente no están activadas las transferencias de dinero a los objetos.
+	</notification>
+	<notification name="CantPayNoAgent">
+		No se ha averiguado a quién se debe pagar.
+	</notification>
+	<notification name="CantDonateToPublicObjects">
+		No se pueden dar L$ a los objetos públicos.
+	</notification>
+	<notification name="InventoryCreationInWorldObjectFailed">
+		Error al crear un inventario de objeto del mundo virtual.
+	</notification>
+	<notification name="UserBalanceOrLandUsageError">
+		Un error interno nos ha impedido actualizar tu visor correctamente. El saldo en L$ o las parcelas en propiedad presentadas en el visor podrían no coincidir con tu saldo real en los servidores.
+	</notification>
+	<notification name="LargePrimAgentIntersect">
+		No se pueden crear prims grandes que intersectan a otros jugadores. Reinténtalo cuando se hayan movido otros jugadores.
+	</notification>
+	<notification name="PreferenceChatClearLog">
+		Esto eliminará los registros de conversaciones anteriores y las copias de seguridad de ese archivo.
+		<usetemplate ignoretext="Confirmar antes de eliminar el registro de conversaciones anteriores." name="okcancelignore" notext="Cancelar" yestext="OK"/>
+	</notification>
+	<notification name="PreferenceChatDeleteTranscripts">
+		Esta acción eliminará las transcripciones de todas las conversaciones anteriores. La lista de conversaciones pasadas no resultará afectada. Se eliminarán de la carpeta [FOLDER] todos los archivos que tengan el sufijo .txt y txt.backup.
+		<usetemplate ignoretext="Confirmar antes de eliminar transcripciones." name="okcancelignore" notext="Cancelar" yestext="OK"/>
+	</notification>
+	<notification name="PreferenceChatPathChanged">
+		No se pueden mover los archivos. Ruta anterior restaurada.
+		<usetemplate ignoretext="No se pueden mover los archivos. Ruta anterior restaurada." name="okignore" yestext="OK"/>
+	</notification>
 </notifications>
diff --git a/indra/newview/skins/default/xui/es/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/es/panel_avatar_list_item.xml
index 5220df5d21b..c73e34b299f 100644
--- a/indra/newview/skins/default/xui/es/panel_avatar_list_item.xml
+++ b/indra/newview/skins/default/xui/es/panel_avatar_list_item.xml
@@ -26,5 +26,6 @@
 	<icon name="permission_edit_mine_icon" tool_tip="Este amigo puede editar, eliminar o manipular tus objetos"/>
 	<icon name="permission_map_icon" tool_tip="Este amigo puede encontrarte en el mapa"/>
 	<icon name="permission_online_icon" tool_tip="Este amigo puede ver cuándo estás conectado"/>
+	<button name="info_btn" tool_tip="Más información"/>
 	<button name="profile_btn" tool_tip="Ver el perfil"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/es/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/es/panel_block_list_sidetray.xml
index cddbad1195c..a3de14ae670 100644
--- a/indra/newview/skins/default/xui/es/panel_block_list_sidetray.xml
+++ b/indra/newview/skins/default/xui/es/panel_block_list_sidetray.xml
@@ -1,10 +1,11 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="block_list_panel">
-	<text name="title_text">
-		Lista de ignorados
-	</text>
-	<scroll_list name="blocked" tool_tip="Lista de los residentes ignorados actualmente"/>
-	<button label="Ignorar al residente..." label_selected="Ignorar al residente..." name="Block resident..." tool_tip="Elige a un Residente para ignorarle"/>
-	<button label="Ignorar objetos según el nombre..." label_selected="Ignorar objetos según el nombre..." name="Block object by name..."/>
-	<button label="No ignorar" label_selected="No ignorar" name="Unblock" tool_tip="Quita al Residente o al objeto de la lista de ignorados"/>
+	<panel label="bottom_panel" name="blocked_buttons_panel">
+		<filter_editor label="Filtro" name="blocked_filter_input"/>
+		<menu_button name="blocked_gear_btn" tool_tip="Acciones en la persona o el objeto seleccionado"/>
+		<menu_button name="view_btn" tool_tip="Opciones de clasificación"/>
+		<menu_button name="plus_btn" tool_tip="Elige un residente o un objeto para ignorarlo"/>
+		<button name="unblock_btn" tool_tip="Quita al Residente o al objeto de la lista de ignorados"/>
+	</panel>
+	<block_list name="blocked" tool_tip="Lista de los residentes ignorados actualmente"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/es/panel_conversation_list_item.xml b/indra/newview/skins/default/xui/es/panel_conversation_list_item.xml
new file mode 100644
index 00000000000..cc4a7e951d5
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_conversation_list_item.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="conversation_list_item">
+	<layout_stack name="conversation_item_stack">
+		<layout_panel name="conversation_title_panel">
+			<text name="conversation_title" value="(cargando)"/>
+		</layout_panel>
+	</layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_conversation_log_list_item.xml b/indra/newview/skins/default/xui/es/panel_conversation_log_list_item.xml
new file mode 100644
index 00000000000..2fc8cd3affc
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_conversation_log_list_item.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="conversation_log_list_item">
+	<icon name="voice_session_icon" tool_tip="La conversación incluía voz"/>
+	<icon name="unread_ims_icon" tool_tip="Han llegado mensajes mientras no tenías conexión"/>
+	<button name="delete_btn" tool_tip="Quitar esta entrada"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_group_list_item.xml b/indra/newview/skins/default/xui/es/panel_group_list_item.xml
index 5c9f1c3688c..4d682068d78 100644
--- a/indra/newview/skins/default/xui/es/panel_group_list_item.xml
+++ b/indra/newview/skins/default/xui/es/panel_group_list_item.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="group_list_item">
 	<text name="group_name" value="Desconocido"/>
+	<button name="info_btn" tool_tip="Más información"/>
 	<button name="profile_btn" tool_tip="Ver el perfil"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/es/panel_people.xml b/indra/newview/skins/default/xui/es/panel_people.xml
index a9d38dca250..7a7dfca0b8e 100644
--- a/indra/newview/skins/default/xui/es/panel_people.xml
+++ b/indra/newview/skins/default/xui/es/panel_people.xml
@@ -14,81 +14,53 @@
 	<string name="no_filtered_friends_msg">
 		¿No encuentras lo que buscas? Prueba con [secondlife:///app/search/people/[SEARCH_TERM] Buscar].
 	</string>
-	<string name="people_filter_label" value="Filtrar a la gente"/>
-	<string name="groups_filter_label" value="Filtrar a los grupos"/>
 	<string name="no_filtered_groups_msg" value="¿No encuentras lo que buscas? Prueba con [secondlife:///app/search/groups/[SEARCH_TERM] Buscar]."/>
 	<string name="no_groups_msg" value="¿Buscas grupos en que participar? Prueba la [secondlife:///app/search/groups Búsqueda]."/>
 	<string name="MiniMapToolTipMsg" value="[REGION](Pulsa dos veces para abrir el mapa, pulsa mayús y arrastra para obtener una panorámica)"/>
 	<string name="AltMiniMapToolTipMsg" value="[REGION](Pulsa dos veces para teleportarte, pulsa mayús y arrastra para obtener una panorámica)"/>
-	<filter_editor label="Filtrar" name="filter_input"/>
 	<tab_container name="tabs">
 		<panel label="CERCANA" name="nearby_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<menu_button name="nearby_view_sort_btn" tool_tip="Opciones"/>
-				<button name="add_friend_btn" tool_tip="Añadir al Residente seleccionado a la lista de tus amigos"/>
+			<panel label="bottom_panel" name="nearby_buttons_panel">
+				<filter_editor label="Filtrar la gente" name="nearby_filter_input"/>
+				<button name="gear_btn" tool_tip="Acciones en la persona seleccionada"/>
+				<menu_button name="nearby_view_btn" tool_tip="Opciones de vista/orden"/>
+				<button name="add_friend_btn" tool_tip="Ofrecer amistad a un residente"/>
+				<dnd_button name="nearby_del_btn" tool_tip="Quitar la persona seleccionada de la lista de amigos"/>
 			</panel>
 		</panel>
-		<panel label="MIS AMIGOS" name="friends_panel">
+		<panel label="AMIGOS" name="friends_panel">
+			<panel label="bottom_panel" name="friends_buttons_panel">
+				<filter_editor label="Filtrar la gente" name="friends_filter_input"/>
+				<button name="gear_btn" tool_tip="Acciones en la persona seleccionada"/>
+				<menu_button name="friends_view_btn" tool_tip="Opciones de vista/orden"/>
+				<button name="friends_add_btn" tool_tip="Ofrecer amistad a un residente"/>
+				<dnd_button name="friends_del_btn" tool_tip="Quitar la persona seleccionada de la lista de amigos"/>
+			</panel>
 			<accordion name="friends_accordion">
 				<accordion_tab name="tab_online" title="Conectado"/>
 				<accordion_tab name="tab_all" title="Todos"/>
 			</accordion>
-			<panel label="bottom_panel" name="bottom_panel">
-				<layout_stack name="bottom_panel">
-					<layout_panel name="options_gear_btn_panel">
-						<menu_button name="friends_viewsort_btn" tool_tip="Ver más opciones"/>
-					</layout_panel>
-					<layout_panel name="add_btn_panel">
-						<button name="add_btn" tool_tip="Ofrecer amistad a un Residente"/>
-					</layout_panel>
-					<layout_panel name="trash_btn_panel">
-						<dnd_button name="del_btn" tool_tip="Quitar a la persona seleccionada de tu lista de amigos"/>
-					</layout_panel>
-				</layout_stack>
-			</panel>
 		</panel>
-		<panel label="MIS GRUPOS" name="groups_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<menu_button name="groups_viewsort_btn" tool_tip="Opciones"/>
-				<button name="plus_btn" tool_tip="Entrar en un grupo o crear uno"/>
-				<button name="activate_btn" tool_tip="Activar el grupo seleccionado"/>
+		<panel label="GRUPOS" name="groups_panel">
+			<panel label="bottom_panel" name="groups_buttons_panel">
+				<filter_editor label="Filtrar los grupos" name="groups_filter_input"/>
+				<menu_button name="groups_gear_btn" tool_tip="Acciones en el grupo seleccionado"/>
+				<menu_button name="groups_view_btn" tool_tip="Opciones de vista/orden"/>
+				<menu_button name="plus_btn" tool_tip="Entrar en un grupo o crear uno"/>
+				<dnd_button name="minus_btn" tool_tip="Dejar el grupo seleccionado"/>
 			</panel>
 		</panel>
 		<panel label="RECIENTE" name="recent_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<menu_button name="recent_viewsort_btn" tool_tip="Opciones"/>
-				<button name="add_friend_btn" tool_tip="Añadir al Residente seleccionado a la lista de tus amigos"/>
+			<panel label="bottom_panel" name="recent_buttons_panel">
+				<filter_editor label="Filtrar la gente" name="recent_filter_input"/>
+				<button name="gear_btn" tool_tip="Acciones en la persona seleccionada"/>
+				<menu_button name="recent_view_btn" tool_tip="Opciones de vista/orden"/>
+				<button name="add_friend_btn" tool_tip="Ofrecer amistad a un residente"/>
+				<dnd_button name="recent_del_btn" tool_tip="Quitar la persona seleccionada de la lista de amigos"/>
 			</panel>
 		</panel>
+		<panel label="BLOQUEADO" name="blocked_panel">
+			<panel label="Residentes y objetos ignorados" name="panel_block_list_sidetray"/>
+		</panel>
 	</tab_container>
-	<panel name="button_bar">
-		<layout_stack name="bottom_bar_ls">
-			<layout_panel name="view_profile_btn_lp">
-				<button label="Perfil" name="view_profile_btn" tool_tip="Mostrar imágenes, grupos y otra información del Residente"/>
-			</layout_panel>
-			<layout_panel name="im_btn_lp">
-				<button label="MI" name="im_btn" tool_tip="Abrir una sesión de mensajes instantáneos"/>
-			</layout_panel>
-			<layout_panel name="call_btn_lp">
-				<button label="Llamar" name="call_btn" tool_tip="Llamar a este Residente"/>
-			</layout_panel>
-			<layout_panel name="share_btn_lp">
-				<button label="Compartir" name="share_btn" tool_tip="Compartir un objeto del inventario"/>
-			</layout_panel>
-			<layout_panel name="teleport_btn_lp">
-				<button label="Teleporte" name="teleport_btn" tool_tip="Ofrecer teleporte"/>
-			</layout_panel>
-		</layout_stack>
-		<layout_stack name="bottom_bar_ls1">
-			<layout_panel name="group_info_btn_lp">
-				<button label="Perfil del grupo" name="group_info_btn" tool_tip="Ver la información del grupo"/>
-			</layout_panel>
-			<layout_panel name="chat_btn_lp">
-				<button label="Chat de grupo" name="chat_btn" tool_tip="Abrir el chat"/>
-			</layout_panel>
-			<layout_panel name="group_call_btn_lp">
-				<button label="Llamar al grupo" name="group_call_btn" tool_tip="Llama a este grupo"/>
-			</layout_panel>
-		</layout_stack>
-	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/es/panel_preferences_chat.xml b/indra/newview/skins/default/xui/es/panel_preferences_chat.xml
index b0b6114e88e..28bc98f9885 100644
--- a/indra/newview/skins/default/xui/es/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/es/panel_preferences_chat.xml
@@ -1,34 +1,86 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Chat de texto" name="chat">
-	<text name="font_size">
-		Tamaño de la fuente:
-	</text>
-	<radio_group name="chat_font_size">
-		<radio_item label="Disminuir" name="radio" value="0"/>
-		<radio_item label="Medio" name="radio2" value="1"/>
-		<radio_item label="Aumentar" name="radio3" value="2"/>
-	</radio_group>
-	<check_box initial_value="true" label="Ejecutar la animación de escribir al hacerlo en el chat" name="play_typing_animation"/>
-	<check_box label="Cuando estoy desconectado, enviarme los MI al correo-e" name="send_im_to_email"/>
-	<check_box label="Permitir el historial de MI y chat en texto sin formato" name="plain_text_chat_history"/>
-	<check_box label="Bocadillos del chat" name="bubble_text_chat"/>
-	<text name="show_ims_in_label">
-		Mostrar los MI en:
-	</text>
-	<text name="requires_restart_label">
-		(requiere reiniciar)
-	</text>
-	<radio_group name="chat_window" tool_tip="Muestra tus mensajes instantáneos en varias ventanas flotantes o en una sola con varias pestañas (requiere que reinicies)">
-		<radio_item label="Ventanas distintas" name="radio" value="0"/>
-		<radio_item label="Pestañas" name="radio2" value="1"/>
-	</radio_group>
-	<text name="disable_toast_label">
-		Permitir ventanas de chat emergentes:
-	</text>
-	<check_box label="Chats de grupo" name="EnableGroupChatPopups" tool_tip="Activa esta casilla para ver una ventana emergente cada vez que recibas un mensaje de un grupo de chat"/>
-	<check_box label="Chats de MI" name="EnableIMChatPopups" tool_tip="Activa esta casilla para ver una ventana emergente cada vez que recibas un mensaje instantáneo"/>
-	<spinner label="Duración de los interlocutores favoritos:" name="nearby_toasts_lifetime"/>
-	<spinner label="Tiempo de los otros interlocutores:" name="nearby_toasts_fadingtime"/>
+	<panel>
+		<check_box initial_value="true" label="Ejecutar la animación de escribir al hacerlo en el chat" name="play_typing_animation"/>
+		<check_box label="Cuando estoy desconectado, enviarme los MI al correo-e" name="send_im_to_email"/>
+		<check_box label="Sólo pueden llamarme o mandarme un MI mis amigos y grupos" name="voice_call_friends_only_check"/>
+		<text name="font_size">
+			Tamaño de la fuente:
+		</text>
+		<combo_box name="chat_font_size">
+			<item label="Pequeña" name="Small" value="0"/>
+			<item label="Mediana" name="Medium" value="1"/>
+			<item label="Grande" name="Large" value="2"/>
+		</combo_box>
+		<check_box label="Bocadillos del chat" name="bubble_text_chat"/>
+	</panel>
+	<panel>
+		<text name="notifications">
+			Notificaciones
+		</text>
+		<text name="friend_ims">
+			MI de amigos:
+		</text>
+		<combo_box name="FriendIMOptions">
+			<item label="Ventana Conversaciones abiertas" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Mensaje en ventana emergente" name="PopUpMessage" value="toast"/>
+			<item label="Botón de la barra de herramientas de Flash" name="FlashToolbarButton" value="flash"/>
+			<item label="Ninguno" name="None" value="ninguno"/>
+		</combo_box>
+		<text name="non_friend_ims">
+			MI de no amigos:
+		</text>
+		<combo_box name="NonFriendIMOptions">
+			<item label="Ventana Conversaciones abiertas" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Mensaje en ventana emergente" name="PopUpMessage" value="toast"/>
+			<item label="Botón de la barra de herramientas de Flash" name="FlashToolbarButton" value="flash"/>
+			<item label="Ninguno" name="None" value="ninguno"/>
+		</combo_box>
+		<text name="conference_ims">
+			MI de conferencia:
+		</text>
+		<combo_box name="ConferenceIMOptions">
+			<item label="Ventana Conversaciones abiertas" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Mensaje en ventana emergente" name="PopUpMessage" value="toast"/>
+			<item label="Botón de la barra de herramientas de Flash" name="FlashToolbarButton" value="flash"/>
+			<item label="Ninguno" name="None" value="ninguno"/>
+		</combo_box>
+		<text name="group_chat">
+			Chat de grupo:
+		</text>
+		<combo_box name="GroupChatOptions">
+			<item label="Ventana Conversaciones abiertas" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Mensaje en ventana emergente" name="PopUpMessage" value="toast"/>
+			<item label="Botón de la barra de herramientas de Flash" name="FlashToolbarButton" value="flash"/>
+			<item label="Ninguno" name="None" value="ninguno"/>
+		</combo_box>
+		<text name="nearby_chat">
+			Chat:
+		</text>
+		<combo_box name="NearbyChatOptions">
+			<item label="Ventana Conversaciones abiertas" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Mensaje en ventana emergente" name="PopUpMessage" value="toast"/>
+			<item label="Botón de la barra de herramientas de Flash" name="FlashToolBarButton" value="flash"/>
+			<item label="Ninguno" name="None" value="ninguno"/>
+		</combo_box>
+		<text name="notifications_alert">
+			Para suspender provisionalmente todas las notificaciones, usa Comunicarme &gt; No molestar.
+		</text>
+	</panel>
+	<panel>
+		<text name="play_sound">
+			Reproducir sonido:
+		</text>
+		<check_box label="Nueva conversación" name="new_conversation"/>
+		<check_box label="Llamada de voz entrante" name="incoming_voice_call"/>
+		<check_box label="Oferta de teleporte" name="teleport_offer"/>
+		<check_box label="Oferta de inventario" name="inventory_offer"/>
+	</panel>
+	<panel>
+		<button label="Limpiar el registro..." name="clear_log"/>
+		<button label="Eliminar transcripciones..." name="delete_transcripts"/>
+		<button label="Examinar..." label_selected="Examinar" name="log_path_button"/>
+	</panel>
 	<button label="Traducción…" name="ok_btn"/>
 	<button label="Reemplazo automático..." name="autoreplace_showgui"/>
 	<button label="Revisión ortográfica..." name="spellcheck_showgui"/>
diff --git a/indra/newview/skins/default/xui/es/panel_preferences_general.xml b/indra/newview/skins/default/xui/es/panel_preferences_general.xml
index 4fc163f5b67..98b0081da92 100644
--- a/indra/newview/skins/default/xui/es/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/es/panel_preferences_general.xml
@@ -69,6 +69,9 @@
 		<combo_box.item label="nunca" name="item4"/>
 	</combo_box>
 	<text name="text_box3">
-		Respuesta cuando estoy en modo ocupado:
+		Respuesta de No molestar:
 	</text>
+	<text_editor name="do_not_disturb_response">
+		log_in_to_change
+	</text_editor>
 </panel>
diff --git a/indra/newview/skins/default/xui/es/sidepanel_task_info.xml b/indra/newview/skins/default/xui/es/sidepanel_task_info.xml
index 9da29589536..cb061796e79 100644
--- a/indra/newview/skins/default/xui/es/sidepanel_task_info.xml
+++ b/indra/newview/skins/default/xui/es/sidepanel_task_info.xml
@@ -72,6 +72,7 @@
 			<combo_box.item label="Comprar el objeto" name="Buyobject"/>
 			<combo_box.item label="Pagar el objeto" name="Payobject"/>
 			<combo_box.item label="Abrir" name="Open"/>
+			<combo_box.item label="Zoom" name="Zoom"/>
 		</combo_box>
 		<panel name="perms_inv">
 			<text name="perm_modify">
diff --git a/indra/newview/skins/default/xui/es/strings.xml b/indra/newview/skins/default/xui/es/strings.xml
index 52bcab54e58..937433e210f 100644
--- a/indra/newview/skins/default/xui/es/strings.xml
+++ b/indra/newview/skins/default/xui/es/strings.xml
@@ -128,7 +128,7 @@
 		Salir
 	</string>
 	<string name="create_account_url">
-		http://join.secondlife.com/index.php?lang=es-ES&amp;sourceid=[sourceid]
+		http://join.secondlife.com/?sourceid=[sourceid]
 	</string>
 	<string name="LoginFailedViewerNotPermitted">
 		Ya no puedes acceder a Second Life con el visor que estás utilizando. Visita la siguiente página para descargar un nuevo visor:
@@ -610,8 +610,8 @@ Intenta iniciar sesión de nuevo en unos instantes.
 	<string name="AvatarAway">
 		Ausente
 	</string>
-	<string name="AvatarBusy">
-		Ocupado
+	<string name="AvatarDoNotDisturb">
+		No molestar
 	</string>
 	<string name="AvatarMuted">
 		Ignorado
@@ -844,6 +844,12 @@ Intenta iniciar sesión de nuevo en unos instantes.
 	<string name="ST_NO_JOINT">
 		No se puede encontrar ROOT o JOINT.
 	</string>
+	<string name="NearbyChatTitle">
+		Chat
+	</string>
+	<string name="NearbyChatLabel">
+		(Chat)
+	</string>
 	<string name="whisper">
 		susurra:
 	</string>
@@ -907,6 +913,9 @@ Intenta iniciar sesión de nuevo en unos instantes.
 	<string name="ControlYourCamera">
 		Controlar su cámara
 	</string>
+	<string name="AgentNameSubst">
+		(Tú)
+	</string>
 	<string name="TeleportYourAgent">
 		Teleportarte
 	</string>
@@ -991,18 +1000,6 @@ Intenta iniciar sesión de nuevo en unos instantes.
 	<string name="dictionary_files">
 		Diccionarios
 	</string>
-	<string name="AvatarSetNotAway">
-		Salir del estado ausente
-	</string>
-	<string name="AvatarSetAway">
-		Pasar al estado ausente
-	</string>
-	<string name="AvatarSetNotBusy">
-		Salir del estado ocupado
-	</string>
-	<string name="AvatarSetBusy">
-		Pasar al estado ocupado
-	</string>
 	<string name="shape">
 		Forma
 	</string>
@@ -1959,8 +1956,8 @@ Intenta iniciar sesión de nuevo en unos instantes.
 	<string name="PanelContentsNewScript">
 		Script nuevo
 	</string>
-	<string name="BusyModeResponseDefault">
-		El Residente al que has enviado un mensaje ha solicitado que no se le moleste porque está en modo ocupado. Podrá ver tu mensaje más adelante, ya que éste aparecerá en su panel de MI.
+	<string name="DoNotDisturbModeResponseDefault">
+		Este residente tiene activado &apos;No molestar&apos; y verá tu mensaje más tarde.
 	</string>
 	<string name="MuteByName">
 		(Por el nombre)
@@ -2073,9 +2070,6 @@ Intenta iniciar sesión de nuevo en unos instantes.
 	<string name="GroupMoneyDate">
 		[weekday,datetime,utc] [mth,datetime,utc] [day,datetime,utc], [year,datetime,utc]
 	</string>
-	<string name="ViewerObjectContents">
-		Contenidos
-	</string>
 	<string name="AcquiredItems">
 		Artículos adquiridos
 	</string>
@@ -3793,7 +3787,7 @@ Si sigues recibiendo este mensaje, contacta con [SUPPORT_SITE].
 		Región General
 	</string>
 	<string name="LocationCtrlSeeAVsTooltip">
-		Los avatares están visibles y está permitido el chat fuera de esta parcela
+		Los avatares que están en esta parcela no pueden ser vistos ni escuchados por los que están fuera de ella
 	</string>
 	<string name="LocationCtrlPathfindingDirtyTooltip">
 		Los objetos que se mueven pueden presentar un comportamiento incorrecto en la región hasta que ésta se recargue.
@@ -3867,6 +3861,12 @@ Si sigues recibiendo este mensaje, contacta con [SUPPORT_SITE].
 	<string name="Saved_message">
 		(Guardado [LONG_TIMESTAMP])
 	</string>
+	<string name="OnlineStatus">
+		Conectado/a
+	</string>
+	<string name="OfflineStatus">
+		Desconectado/a
+	</string>
 	<string name="answered_call">
 		Han respondido a tu llamada
 	</string>
@@ -3876,6 +3876,9 @@ Si sigues recibiendo este mensaje, contacta con [SUPPORT_SITE].
 	<string name="you_joined_call">
 		Has entrado en la llamada de voz
 	</string>
+	<string name="you_auto_rejected_call-im">
+		Rechazaste la llamada de voz automáticamente porque estaba activado &apos;No molestar&apos;.
+	</string>
 	<string name="name_started_call">
 		[NAME] inició una llamada de voz
 	</string>
@@ -3888,6 +3891,9 @@ Si sigues recibiendo este mensaje, contacta con [SUPPORT_SITE].
 	<string name="hang_up-im">
 		Se colgó la llamada de voz
 	</string>
+	<string name="conference-title">
+		Chat multi-persona
+	</string>
 	<string name="conference-title-incoming">
 		Conferencia con [AGENT_NAME]
 	</string>
@@ -4766,6 +4772,9 @@ Inténtalo incluyendo la ruta de acceso al editor entre comillas
 	<string name="Command_Chat_Label">
 		Chat
 	</string>
+	<string name="Command_Conversations_Label">
+		Conversaciones
+	</string>
 	<string name="Command_Compass_Label">
 		Brújula
 	</string>
@@ -4841,6 +4850,9 @@ Inténtalo incluyendo la ruta de acceso al editor entre comillas
 	<string name="Command_Chat_Tooltip">
 		Habla por chat de texto con las personas próximas
 	</string>
+	<string name="Command_Conversations_Tooltip">
+		Conversar con todos
+	</string>
 	<string name="Command_Compass_Tooltip">
 		Brújula
 	</string>
@@ -4970,4 +4982,13 @@ Inténtalo incluyendo la ruta de acceso al editor entre comillas
 	<string name="UserDictionary">
 		[Usuario]
 	</string>
+	<string name="logging_calls_disabled_log_empty">
+		No se están registrando las conversaciones. Para empezar a grabar un registro, elige &quot;Guardar: Solo registro&quot; o &quot;Guardar: Registro y transcripciones&quot; en Preferencias &gt; Chat.
+	</string>
+	<string name="logging_calls_disabled_log_not_empty">
+		No se registrarán más conversaciones. Para reanudar la grabación de un registro, elige &quot;Guardar: Solo registro&quot; o &quot;Guardar: Registro y transcripciones&quot; en Preferencias &gt; Chat.
+	</string>
+	<string name="logging_calls_enabled_log_empty">
+		No hay conversaciones grabadas. Después de contactar con una persona, o de que alguien contacte contigo, aquí se mostrará una entrada de registro.
+	</string>
 </strings>
diff --git a/indra/newview/skins/default/xui/fr/floater_conversation_log.xml b/indra/newview/skins/default/xui/fr/floater_conversation_log.xml
new file mode 100644
index 00000000000..e9017c79b1f
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_conversation_log.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_conversation_log" title="JOURNAL DES CONVERSATIONS">
+	<panel name="buttons_panel">
+		<filter_editor label="Filtrer les personnes" name="people_filter_input"/>
+		<menu_button name="conversation_view_btn" tool_tip="Options d&apos;affichage/de tri"/>
+		<menu_button name="conversations_gear_btn" tool_tip="Actions sur la personne ou le groupe sélectionné"/>
+	</panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_conversation_preview.xml b/indra/newview/skins/default/xui/fr/floater_conversation_preview.xml
new file mode 100644
index 00000000000..9a486a84c65
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_conversation_preview.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="preview_conversation" title="CONVERSATION:">
+	<floater.string name="Title">
+		CONVERSATION: [NAME]
+	</floater.string>
+	<text name="page_label" value="Page"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_im_container.xml b/indra/newview/skins/default/xui/fr/floater_im_container.xml
index 5ea073365e3..f0b17e84373 100644
--- a/indra/newview/skins/default/xui/fr/floater_im_container.xml
+++ b/indra/newview/skins/default/xui/fr/floater_im_container.xml
@@ -1,2 +1,29 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<multi_floater name="floater_im_box" title="CONVERSATIONS"/>
+<multi_floater name="floater_im_box" title="CONVERSATIONS">
+	<string name="collapse_icon" value="Conv_toolbar_collapse"/>
+	<string name="expand_icon" value="Conv_toolbar_expand"/>
+	<layout_stack name="conversations_stack">
+		<layout_panel name="conversations_layout_panel">
+			<layout_stack name="conversations_pane_buttons_stack">
+				<layout_panel name="conversations_pane_buttons_expanded">
+					<menu_button name="sort_btn" tool_tip="Options d&apos;affichage/de tri"/>
+					<button name="add_btn" tool_tip="Commencer une nouvelle conversation"/>
+					<button name="speak_btn" tool_tip="Parler aux personnes en utilisant votre micro"/>
+				</layout_panel>
+				<layout_panel name="conversations_pane_buttons_collapsed">
+					<button name="expand_collapse_btn" tool_tip="Réduire/Développer cette liste"/>
+				</layout_panel>
+			</layout_stack>
+		</layout_panel>
+		<layout_panel name="messages_layout_panel">
+			<panel_container name="im_box_tab_container">
+				<panel name="stub_panel">
+					<button name="stub_collapse_btn" tool_tip="Réduire ce panneau"/>
+					<text name="stub_textbox">
+						Cette conversation s&apos;affiche dans une fenêtre distincte.   [secondlife:/// la rattacher.]
+					</text>
+				</panel>
+			</panel_container>
+		</layout_panel>
+	</layout_stack>
+</multi_floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_im_session.xml b/indra/newview/skins/default/xui/fr/floater_im_session.xml
index 516eb41362f..8ab98b8e4ea 100644
--- a/indra/newview/skins/default/xui/fr/floater_im_session.xml
+++ b/indra/newview/skins/default/xui/fr/floater_im_session.xml
@@ -1,8 +1,59 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="panel_im">
-	<layout_stack name="im_panels">
-		<layout_panel>
-			<line_editor label="À" name="chat_editor"/>
-		</layout_panel>
-	</layout_stack>
+	<floater.string name="call_btn_start">
+		Conv_toolbar_open_call
+	</floater.string>
+	<floater.string name="call_btn_stop">
+		Conv_toolbar_hang_up
+	</floater.string>
+	<floater.string name="collapseline_icon" value="Conv_collapse_to_one_line"/>
+	<floater.string name="expandline_icon" value="Conv_expand_one_line"/>
+	<floater.string name="collapse_icon" value="Conv_toolbar_collapse"/>
+	<floater.string name="expand_icon" value="Conv_toolbar_expand"/>
+	<floater.string name="tear_off_icon" value="Conv_toolbar_arrow_ne"/>
+	<floater.string name="return_icon" value="Conv_toolbar_arrow_sw"/>
+	<floater.string name="participant_added" value="[NAME] a été invité à la conversation."/>
+	<floater.string name="multiple_participants_added" value="[NAME] ont été invités à la conversation."/>
+	<floater.string name="tooltip_to_separate_window" value="Déplacer cette conversation dans une fenêtre distincte"/>
+	<floater.string name="tooltip_to_main_window" value="Replacer cette conversation dans la fenêtre principale"/>
+	<floater.string name="start_call_button_tooltip" value="Ouvrir une connexion vocale"/>
+	<floater.string name="end_call_button_tooltip" value="Fermer la connexion vocale"/>
+	<floater.string name="expcol_button_not_tearoff_tooltip" value="Réduire ce panneau"/>
+	<floater.string name="expcol_button_tearoff_and_expanded_tooltip" value="Réduire la liste des participants"/>
+	<floater.string name="expcol_button_tearoff_and_collapsed_tooltip" value="Développer la liste des participants"/>
+	<view name="contents_view">
+		<layout_stack name="main_stack">
+			<layout_panel name="toolbar_panel">
+				<menu_button name="view_options_btn" tool_tip="Options d&apos;affichage/de tri"/>
+				<menu_button name="gear_btn" tool_tip="Actions sur la personne sélectionnée"/>
+				<button name="add_btn" tool_tip="Ajouter un participant à cette conversation"/>
+				<button name="voice_call_btn" tool_tip="Ouvrir une connexion vocale"/>
+				<button name="close_btn" tool_tip="Mettre fin à cette conversation"/>
+				<button name="expand_collapse_btn" tool_tip="Réduire/Développer ce panneau"/>
+			</layout_panel>
+			<layout_panel name="body_panel">
+				<layout_stack name="im_panels">
+					<layout_panel name="right_part_holder">
+						<panel name="trnsAndChat_panel">
+							<layout_stack name="translate_and_chat_stack">
+								<layout_panel name="translate_chat_checkbox_lp">
+									<check_box label="Traduire le chat" name="translate_chat_checkbox"/>
+								</layout_panel>
+							</layout_stack>
+						</panel>
+					</layout_panel>
+				</layout_stack>
+			</layout_panel>
+			<layout_panel name="chat_layout_panel">
+				<layout_stack name="input_panels">
+					<layout_panel name="input_editor_layout_panel">
+						<chat_editor label="À" name="chat_editor"/>
+					</layout_panel>
+					<layout_panel name="input_button_layout_panel">
+						<button name="minz_btn" tool_tip="Affiche/Masque le panneau des messages"/>
+					</layout_panel>
+				</layout_stack>
+			</layout_panel>
+		</layout_stack>
+	</view>
 </floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_incoming_call.xml b/indra/newview/skins/default/xui/fr/floater_incoming_call.xml
index 7594eec5f2f..9e6946ba9e4 100644
--- a/indra/newview/skins/default/xui/fr/floater_incoming_call.xml
+++ b/indra/newview/skins/default/xui/fr/floater_incoming_call.xml
@@ -10,7 +10,7 @@
 		anonyme
 	</floater.string>
 	<floater.string name="VoiceInviteP2P">
-		appelle.
+		vous appelle.
 	</floater.string>
 	<floater.string name="VoiceInviteAdHoc">
 		a rejoint un chat vocal avec conférence.
@@ -25,9 +25,9 @@
 		Voulez-vous quitter [CURRENT_CHAT] et rejoindre ce chat vocal ?
 	</floater.string>
 	<text name="question">
-		Voulez-vous quitter [CURRENT_CHAT] et rejoindre ce chat vocal ?
+		Si vous répondez, vous serez déconnecté de votre conversation vocale actuelle.
 	</text>
-	<button label="Accepter" label_selected="Accepter" name="Accept"/>
-	<button label="Refuser" label_selected="Refuser" name="Reject"/>
-	<button label="Lancer IM" name="Start IM"/>
+	<button label="Répondre" label_selected="Répondre" name="Accept"/>
+	<button label="Ignorer" label_selected="Ignorer" name="Reject"/>
+	<button label="Ouvrir IM à la place" name="Start IM"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_pathfinding_console.xml b/indra/newview/skins/default/xui/fr/floater_pathfinding_console.xml
index 02d969dc089..0bcf55aba59 100644
--- a/indra/newview/skins/default/xui/fr/floater_pathfinding_console.xml
+++ b/indra/newview/skins/default/xui/fr/floater_pathfinding_console.xml
@@ -71,7 +71,7 @@
 			<text name="show_label">
 				Afficher :
 			</text>
-			<check_box label="Monde" name="show_world"/>
+			<check_box label="Test" name="show_world"/>
 			<check_box label="Mobiles uniquement" name="show_world_movables_only"/>
 			<check_box label="Maillage de navigation" name="show_navmesh"/>
 			<text name="show_walkability_label">
diff --git a/indra/newview/skins/default/xui/fr/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/fr/floater_texture_ctrl.xml
index f86c1a42171..eace67026c8 100644
--- a/indra/newview/skins/default/xui/fr/floater_texture_ctrl.xml
+++ b/indra/newview/skins/default/xui/fr/floater_texture_ctrl.xml
@@ -20,7 +20,7 @@
 	<button label="Vierge" label_selected="Vierge" name="Blank" width="60"/>
 	<button label="Aucune" label_selected="Aucune" left="68" name="None" width="60"/>
 	<button bottom="-240" label="" label_selected="" name="Pipette"/>
-	<check_box initial_value="true" label="Aperçu direct" name="apply_immediate_check"/>
+	<check_box initial_value="true" label="Appliquer maintenant" name="apply_immediate_check"/>
 	<text name="preview_disabled" value="Aperçu désactivé"/>
 	<filter_editor label="Filtrer les textures" name="inventory search editor"/>
 	<check_box initial_value="false" label="Afficher les dossiers" name="show_folders_check"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_voice_chat_volume.xml b/indra/newview/skins/default/xui/fr/floater_voice_chat_volume.xml
new file mode 100644
index 00000000000..f4f452eea7e
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_voice_chat_volume.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_voice_volume" title="VOLUME DU CHAT VOCAL">
+	<slider label="Chat vocal" name="chat_voice_volume"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_voice_effect.xml b/indra/newview/skins/default/xui/fr/floater_voice_effect.xml
index 671fb5c14db..f9a76d127e2 100644
--- a/indra/newview/skins/default/xui/fr/floater_voice_effect.xml
+++ b/indra/newview/skins/default/xui/fr/floater_voice_effect.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater label="Endroits" name="voice_effects" title="EFFET DE VOIX">
+<floater label="Endroits" name="voice_effects" title="APERÇU DES EFFETS DE VOIX">
 	<string name="no_voice_effect">
 		(Aucun effet de voix)
 	</string>
diff --git a/indra/newview/skins/default/xui/fr/floater_voice_volume.xml b/indra/newview/skins/default/xui/fr/floater_voice_volume.xml
new file mode 100644
index 00000000000..bf91a5bb799
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_voice_volume.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!--
+  Not can_close / no title to avoid window chrome
+  Single instance - only have one at a time, recycle it each spawn
+-->
+<floater name="floater_voice_volume" title="VOLUME DE LA VOIX">
+	<slider name="volume_slider" tool_tip="Volume de la voix" value="0.5"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/menu_cof_gear.xml b/indra/newview/skins/default/xui/fr/menu_cof_gear.xml
index 8276d570259..fea0486d8ac 100644
--- a/indra/newview/skins/default/xui/fr/menu_cof_gear.xml
+++ b/indra/newview/skins/default/xui/fr/menu_cof_gear.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear COF">
+<toggleable_menu name="Gear COF">
 	<menu label="Nouveaux habits" name="COF.Gear.New_Clothes"/>
-	<menu label="Nouvelles parties du corps" name="COF.Geear.New_Body_Parts"/>
-</menu>
+	<menu label="Nouvelles parties du corps" name="COF.Gear.New_Body_Parts"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_conversation.xml b/indra/newview/skins/default/xui/fr/menu_conversation.xml
new file mode 100644
index 00000000000..857ead603b5
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/menu_conversation.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_conversation_participant">
+	<menu_item_call label="Fermer la conversation" name="close_conversation"/>
+	<menu_item_call label="Ouvrir une conversation vocale" name="open_voice_conversation"/>
+	<menu_item_call label="Se déconnecter de la conversation et du canal vocal" name="disconnect_from_voice"/>
+	<menu_item_call label="Voir le profil" name="view_profile"/>
+	<menu_item_call label="IM" name="im"/>
+	<menu_item_call label="Proposer une téléportation." name="offer_teleport"/>
+	<menu_item_call label="Appel" name="voice_call"/>
+	<menu_item_call label="Historique du chat..." name="chat_history"/>
+	<menu_item_call label="Devenir amis" name="add_friend"/>
+	<menu_item_call label="Supprimer cet ami" name="remove_friend"/>
+	<menu_item_call label="Supprimer ces amis" name="remove_friends"/>
+	<menu_item_call label="Inviter dans le groupe..." name="invite_to_group"/>
+	<menu_item_call label="Zoomer en avant" name="zoom_in"/>
+	<menu_item_call label="Carte" name="map"/>
+	<menu_item_call label="Partager" name="share"/>
+	<menu_item_call label="Payer" name="pay"/>
+	<menu_item_check label="Bloquer le chat vocal" name="block_unblock"/>
+	<menu_item_check label="Ignorer le texte" name="MuteText"/>
+	<menu_item_call label="Profil du groupe" name="group_profile"/>
+	<menu_item_call label="Activer le groupe" name="activate_group"/>
+	<menu_item_call label="Quitter le groupe" name="leave_group"/>
+	<context_menu label="Options du modérateur" name="Moderator Options">
+		<menu_item_check label="Autoriser les chats écrits" name="AllowTextChat"/>
+		<menu_item_call label="Ignorer ce participant" name="ModerateVoiceMuteSelected"/>
+		<menu_item_call label="Ne plus ignorer ce participant" name="ModerateVoiceUnMuteSelected"/>
+		<menu_item_call label="Ignorer les autres" name="ModerateVoiceMute"/>
+		<menu_item_call label="Ne plus ignorer les autres" name="ModerateVoiceUnmute"/>
+	</context_menu>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_conversation_log_gear.xml b/indra/newview/skins/default/xui/fr/menu_conversation_log_gear.xml
new file mode 100644
index 00000000000..4e7e84199db
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/menu_conversation_log_gear.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Conversation Context Menu">
+	<menu_item_call label="IM..." name="IM"/>
+	<menu_item_call label="Appel..." name="Call"/>
+	<menu_item_call label="Ouvrir l&apos;historique du chat..." name="Chat history"/>
+	<menu_item_call label="Voir le profil" name="View Profile"/>
+	<menu_item_call label="Téléporter" name="teleport"/>
+	<menu_item_call label="Devenir amis" name="add_friend"/>
+	<menu_item_call label="Supprimer cet ami" name="remove_friend"/>
+	<menu_item_call label="Inviter dans le groupe..." name="Invite"/>
+	<menu_item_call label="Carte" name="Map"/>
+	<menu_item_call label="Partager" name="Share"/>
+	<menu_item_call label="Payer" name="Pay"/>
+	<menu_item_check label="Ignorer/Ne plus ignorer" name="Block/Unblock"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_conversation_log_view.xml b/indra/newview/skins/default/xui/fr/menu_conversation_log_view.xml
new file mode 100644
index 00000000000..c515a8e8e55
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/menu_conversation_log_view.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_conversation_view">
+	<menu_item_check label="Trier par nom" name="sort_by_name"/>
+	<menu_item_check label="Trier par date" name="sort_by_date"/>
+	<menu_item_check label="Trier avec les amis en haut" name="sort_by_friends"/>
+	<menu_item_call label="Afficher l&apos;historique du Chat près de moi" name="view_nearby_chat_history"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_im_conversation.xml b/indra/newview/skins/default/xui/fr/menu_im_conversation.xml
new file mode 100644
index 00000000000..1ec5910c8fe
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/menu_im_conversation.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Conversation Gear Menu">
+	<menu_item_call label="Voir le profil" name="View Profile"/>
+	<menu_item_call label="Devenir amis" name="Add Friend"/>
+	<menu_item_call label="Supprimer cet ami" name="remove_friend"/>
+	<menu_item_call label="Proposer une téléportation." name="offer_teleport"/>
+	<menu_item_call label="Inviter dans le groupe..." name="invite_to_group"/>
+	<menu_item_call label="Historique du chat..." name="chat_history"/>
+	<menu_item_call label="Zoomer en avant" name="zoom_in"/>
+	<menu_item_call label="Carte" name="map"/>
+	<menu_item_call label="Partager" name="Share"/>
+	<menu_item_call label="Payer" name="Pay"/>
+	<menu_item_check label="Bloquer le chat vocal" name="Block/Unblock"/>
+	<menu_item_check label="Ignorer le texte" name="MuteText"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_im_session_showmodes.xml b/indra/newview/skins/default/xui/fr/menu_im_session_showmodes.xml
new file mode 100644
index 00000000000..03a091d1ccc
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/menu_im_session_showmodes.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_modes">
+	<menu_item_check label="Vue compacte" name="compact_view"/>
+	<menu_item_check label="Vue développée" name="expanded_view"/>
+	<menu_item_check label="Afficher l’heure" name="IMShowTime"/>
+	<menu_item_check label="Afficher les noms dans les conversations privées" name="IMShowNamesForP2PConv"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_object_icon.xml b/indra/newview/skins/default/xui/fr/menu_object_icon.xml
index 69f8e88a0de..7c949301600 100644
--- a/indra/newview/skins/default/xui/fr/menu_object_icon.xml
+++ b/indra/newview/skins/default/xui/fr/menu_object_icon.xml
@@ -2,4 +2,6 @@
 <menu name="Object Icon Menu">
 	<menu_item_call label="Profil de l&apos;objet..." name="Object Profile"/>
 	<menu_item_call label="Ignorer..." name="Block"/>
+	<menu_item_call label="Voir sur la carte" name="show_on_map"/>
+	<menu_item_call label="Me téléporter à l’emplacement de l&apos;objet" name="teleport_to_object"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_outfit_gear.xml b/indra/newview/skins/default/xui/fr/menu_outfit_gear.xml
index b5181f4f82e..21b19eded63 100644
--- a/indra/newview/skins/default/xui/fr/menu_outfit_gear.xml
+++ b/indra/newview/skins/default/xui/fr/menu_outfit_gear.xml
@@ -23,6 +23,8 @@
 		<menu_item_call label="Nouveaux cheveux" name="New Hair"/>
 		<menu_item_call label="Nouveaux yeux" name="New Eyes"/>
 	</menu>
+	<menu_item_call label="Développer tous les dossiers" name="expand"/>
+	<menu_item_call label="Réduire tous les dossiers" name="collapse"/>
 	<menu_item_call label="Renommer la tenue" name="rename"/>
 	<menu_item_call label="Supprimer la tenue" name="delete_outfit"/>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_participant_view.xml b/indra/newview/skins/default/xui/fr/menu_participant_view.xml
new file mode 100644
index 00000000000..1811082c841
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/menu_participant_view.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="participant_manu_view">
+	<menu_item_check label="Trier les conversations par type" name="sort_sessions_by_type"/>
+	<menu_item_check label="Trier les conversations par nom" name="sort_sessions_by_name"/>
+	<menu_item_check label="Trier les conversations par activité récente" name="sort_sessions_by_recent"/>
+	<menu_item_check label="Trier les participants par nom" name="sort_participants_by_name"/>
+	<menu_item_check label="Trier les participants par activité récente" name="sort_participants_by_recent"/>
+	<menu_item_call label="Préférences pour le chat..." name="chat_preferences"/>
+	<menu_item_call label="Préférences pour la confidentialité" name="privacy_preferences"/>
+	<menu_item_check label="Journal des conversations..." name="Conversation"/>
+	<menu_item_check label="Traduire le Chat près de moi" name="Translate_chat"/>
+	<menu_item_check label="Paramètres de traduction" name="Translation_settings"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_people_blocked_gear.xml b/indra/newview/skins/default/xui/fr/menu_people_blocked_gear.xml
new file mode 100644
index 00000000000..47589572c25
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/menu_people_blocked_gear.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_blocked_gear">
+	<menu_item_call label="Ne plus ignorer" name="unblock"/>
+	<menu_item_call label="Profil..." name="profile"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_people_blocked_plus.xml b/indra/newview/skins/default/xui/fr/menu_people_blocked_plus.xml
new file mode 100644
index 00000000000..79880dd16d9
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/menu_people_blocked_plus.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_blocked_plus">
+	<menu_item_call label="Ignorer un résident par son nom…" name="block_resident_by_name"/>
+	<menu_item_call label="Ignorer un objet par son nom" name="block_object_by_name"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_people_blocked_view.xml b/indra/newview/skins/default/xui/fr/menu_people_blocked_view.xml
new file mode 100644
index 00000000000..13f15750909
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/menu_people_blocked_view.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_blocked_view">
+	<menu_item_check label="Trier par nom" name="sort_by_name"/>
+	<menu_item_check label="Trier par type" name="sort_by_type"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_people_friends_view.xml b/indra/newview/skins/default/xui/fr/menu_people_friends_view.xml
new file mode 100644
index 00000000000..cc81172462f
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/menu_people_friends_view.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="Trier par nom" name="sort_name"/>
+	<menu_item_check label="Trier par statut" name="sort_status"/>
+	<menu_item_check label="Afficher les icônes des résidents" name="view_icons"/>
+	<menu_item_check label="Afficher les droits octroyés" name="view_permissions"/>
+	<menu_item_check label="Afficher le journal des conversations..." name="view_conversation"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_people_groups.xml b/indra/newview/skins/default/xui/fr/menu_people_groups.xml
index eb51b4cf7e8..8e32f065fae 100644
--- a/indra/newview/skins/default/xui/fr/menu_people_groups.xml
+++ b/indra/newview/skins/default/xui/fr/menu_people_groups.xml
@@ -2,7 +2,7 @@
 <menu name="menu_group_plus">
 	<menu_item_call label="Afficher les infos" name="View Info"/>
 	<menu_item_call label="Chat" name="Chat"/>
-	<menu_item_call label="Appeler" name="Call"/>
+	<menu_item_call label="Appel" name="Call"/>
 	<menu_item_call label="Activer" name="Activate"/>
 	<menu_item_call label="Quitter" name="Leave"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_people_groups_view.xml b/indra/newview/skins/default/xui/fr/menu_people_groups_view.xml
new file mode 100644
index 00000000000..79ede5e22df
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/menu_people_groups_view.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="Afficher les icônes des groupes" name="Display Group Icons"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_people_nearby.xml b/indra/newview/skins/default/xui/fr/menu_people_nearby.xml
index 26bd3978a9b..6f7d02ef743 100644
--- a/indra/newview/skins/default/xui/fr/menu_people_nearby.xml
+++ b/indra/newview/skins/default/xui/fr/menu_people_nearby.xml
@@ -1,13 +1,16 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Avatar Context Menu">
-	<menu_item_call label="Voir le profil" name="View Profile"/>
-	<menu_item_call label="Devenir amis" name="Add Friend"/>
-	<menu_item_call label="Supprimer cet ami" name="Remove Friend"/>
-	<menu_item_call label="IM" name="IM"/>
-	<menu_item_call label="Appeler" name="Call"/>
-	<menu_item_call label="Carte" name="Map"/>
-	<menu_item_call label="Partager" name="Share"/>
-	<menu_item_call label="Payer" name="Pay"/>
-	<menu_item_check label="Ignorer/Ne plus ignorer" name="Block/Unblock"/>
-	<menu_item_call label="Proposer une téléportation" name="teleport"/>
+	<menu_item_call label="Voir le profil" name="view_profile"/>
+	<menu_item_call label="IM" name="im"/>
+	<menu_item_call label="Téléporter" name="offer_teleport"/>
+	<menu_item_call label="Appel" name="voice_call"/>
+	<menu_item_call label="Afficher l&apos;historique du chat..." name="chat_history"/>
+	<menu_item_call label="Devenir amis" name="add_friend"/>
+	<menu_item_call label="Supprimer cet ami" name="remove_friend"/>
+	<menu_item_call label="Inviter dans le groupe..." name="invite_to_group"/>
+	<menu_item_call label="Zoomer en avant" name="zoom_in"/>
+	<menu_item_call label="Carte" name="map"/>
+	<menu_item_call label="Partager" name="share"/>
+	<menu_item_call label="Payer" name="pay"/>
+	<menu_item_check label="Ignorer/Ne plus ignorer" name="block_unblock"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/fr/menu_people_nearby_multiselect.xml
index 8400ec0a14d..37abf831c2f 100644
--- a/indra/newview/skins/default/xui/fr/menu_people_nearby_multiselect.xml
+++ b/indra/newview/skins/default/xui/fr/menu_people_nearby_multiselect.xml
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Multi-Selected People Context Menu">
-	<menu_item_call label="Devenir amis" name="Add Friends"/>
-	<menu_item_call label="Supprimer des amis" name="Remove Friend"/>
-	<menu_item_call label="IM" name="IM"/>
-	<menu_item_call label="Appeler" name="Call"/>
-	<menu_item_call label="Partager" name="Share"/>
-	<menu_item_call label="Payer" name="Pay"/>
-	<menu_item_call label="Proposer une téléportation" name="teleport"/>
+	<menu_item_call label="Devenir amis" name="add_friends"/>
+	<menu_item_call label="Supprimer des amis" name="remove_friends"/>
+	<menu_item_call label="IM" name="im"/>
+	<menu_item_call label="Appeler" name="call"/>
+	<menu_item_call label="Partager" name="share"/>
+	<menu_item_call label="Payer" name="pay"/>
+	<menu_item_call label="Téléporter" name="offer_teleport"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_people_nearby_view.xml b/indra/newview/skins/default/xui/fr/menu_people_nearby_view.xml
new file mode 100644
index 00000000000..086002dce5e
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/menu_people_nearby_view.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="Trier par intervenants récents" name="sort_by_recent_speakers"/>
+	<menu_item_check label="Trier par nom" name="sort_name"/>
+	<menu_item_check label="Trier par distance" name="sort_distance"/>
+	<menu_item_check label="Afficher les icônes des résidents" name="view_icons"/>
+	<menu_item_check label="Afficher la carte" name="view_map"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_people_recent_view.xml b/indra/newview/skins/default/xui/fr/menu_people_recent_view.xml
new file mode 100644
index 00000000000..a7d698ab7c7
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/menu_people_recent_view.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="Trier en commençant par le plus récent" name="sort_most"/>
+	<menu_item_check label="Trier par nom" name="sort_name"/>
+	<menu_item_check label="Afficher les icônes des résidents" name="view_icons"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_url_agent.xml b/indra/newview/skins/default/xui/fr/menu_url_agent.xml
index 5ed627fbc33..d701b3a4143 100644
--- a/indra/newview/skins/default/xui/fr/menu_url_agent.xml
+++ b/indra/newview/skins/default/xui/fr/menu_url_agent.xml
@@ -1,6 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Url Popup">
-	<menu_item_call label="Voir le profil du résident" name="show_agent"/>
+	<menu_item_call label="Voir le profil" name="show_agent"/>
+	<menu_item_call label="Envoyer IM..." name="send_im"/>
+	<menu_item_call label="Devenir amis..." name="add_friend"/>
 	<menu_item_call label="Copier le nom dans le presse-papiers" name="url_copy_label"/>
 	<menu_item_call label="Copier la SLurl dans le presse-papiers" name="url_copy"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_url_objectim.xml b/indra/newview/skins/default/xui/fr/menu_url_objectim.xml
index f581c3ef9d8..0a934d3e69c 100644
--- a/indra/newview/skins/default/xui/fr/menu_url_objectim.xml
+++ b/indra/newview/skins/default/xui/fr/menu_url_objectim.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Url Popup">
-	<menu_item_call label="Afficher les informations sur l&apos;objet" name="show_object"/>
+	<menu_item_call label="Profil de l&apos;objet…" name="show_object"/>
 	<menu_item_call label="Voir sur la carte" name="show_on_map"/>
 	<menu_item_call label="Me téléporter à l&apos;emplacement de l&apos;objet" name="teleport_to_object"/>
 	<menu_item_call label="Copier le nom de l&apos;objet dans le presse-papiers" name="url_copy_label"/>
diff --git a/indra/newview/skins/default/xui/fr/menu_viewer.xml b/indra/newview/skins/default/xui/fr/menu_viewer.xml
index 85020afe252..457b756c7d5 100644
--- a/indra/newview/skins/default/xui/fr/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/fr/menu_viewer.xml
@@ -16,10 +16,7 @@
 			<menu_item_call label="Arrêter mon animation" name="Stop Animating My Avatar"/>
 			<menu_item_call label="Marcher / Courir / Voler..." name="Walk / run / fly"/>
 		</menu>
-		<menu label="Statut" name="Status">
-			<menu_item_call label="Absent" name="Set Away"/>
-			<menu_item_call label="Occupé" name="Set Busy"/>
-		</menu>
+		<menu label="Statut" name="Status"/>
 		<menu_item_call label="Acheter des L$..." name="Buy and Sell L$"/>
 		<menu_item_call label="Boîte d&apos;envoi vendeur..." name="MerchantOutbox"/>
 		<menu_item_call label="Page d&apos;accueil du compte..." name="Manage My Account">
@@ -32,14 +29,18 @@
 		<menu_item_call label="Quitter [APP_NAME]" name="Quit"/>
 	</menu>
 	<menu label="Communiquer" name="Communicate">
-		<menu_item_check label="Chat..." name="Nearby Chat"/>
+		<menu_item_check label="Conversations..." name="Conversations"/>
+		<menu_item_check label="Chat près de moi..." name="Nearby Chat"/>
 		<menu_item_check label="Parler" name="Speak"/>
-		<menu_item_check label="Paramètres vocaux..." name="Nearby Voice"/>
-		<menu_item_check label="Effet de voix..." name="ShowVoice"/>
+		<menu label="Effet de voix" name="VoiceMorphing">
+			<menu_item_check label="Aucun effet de voix" name="NoVoiceMorphing"/>
+			<menu_item_check label="Aperçu..." name="Preview"/>
+			<menu_item_call label="S&apos;abonner..." name="Subscribe"/>
+		</menu>
 		<menu_item_check label="Gestes..." name="Gestures"/>
-		<menu_item_call label="Amis" name="My Friends"/>
-		<menu_item_call label="Groupes" name="My Groups"/>
-		<menu_item_call label="Personnes près de vous" name="Active Speakers"/>
+		<menu_item_check label="Amis" name="My Friends"/>
+		<menu_item_check label="Groupes" name="My Groups"/>
+		<menu_item_check label="Personnes près de vous" name="Active Speakers"/>
 		<menu_item_call label="Liste des ignorés" name="Block List"/>
 	</menu>
 	<menu label="Monde" name="World">
@@ -115,7 +116,6 @@
 			<menu_item_call label="Acheter" name="Menu Object Buy"/>
 			<menu_item_call label="Prendre" name="Menu Object Take"/>
 			<menu_item_call label="Prendre une copie" name="Take Copy"/>
-			<menu_item_call label="Enregistrer dans mon inventaire" name="Save Object Back to My Inventory"/>
 			<menu_item_call label="Enregistrer dans le contenu des objets" name="Save Object Back to Object Contents"/>
 			<menu_item_call label="Renvoi de l&apos;objet" name="Return Object back to Owner"/>
 		</menu>
@@ -130,6 +130,7 @@
 			<menu_item_call label="Groupes de liens..." name="pathfinding_linksets_menu_item"/>
 			<menu_item_call label="Personnages..." name="pathfinding_characters_menu_item"/>
 			<menu_item_call label="Vue / test..." name="pathfinding_console_menu_item"/>
+			<menu_item_call label="Refiger la région" name="pathfinding_rebake_navmesh_item"/>
 		</menu>
 		<menu label="Options" name="Options">
 			<menu_item_check label="Afficher les droits avancés" name="DebugPermissions"/>
@@ -159,6 +160,13 @@
 	<menu label="Aide" name="Help">
 		<menu_item_call label="Aide rapide..." name="How To"/>
 		<menu_item_call label="Aide de [SECOND_LIFE]" name="Second Life Help"/>
+		<menu_item_call label="Guide de l&apos;utilisateur" name="User’s guide"/>
+		<menu_item_call label="Base de connaissances" name="Knowledge Base"/>
+		<menu_item_call label="Wiki" name="Wiki"/>
+		<menu_item_call label="Forums de la communauté" name="Community Forums"/>
+		<menu_item_call label="Portail d&apos;assistance" name="Support portal"/>
+		<menu_item_call label="Actualités [SECOND_LIFE]" name="Second Life News"/>
+		<menu_item_call label="Blogs [SECOND_LIFE]" name="Second Life Blogs"/>
 		<menu_item_call label="Signaler une infraction" name="Report Abuse"/>
 		<menu_item_call label="Signaler un bug" name="Report Bug"/>
 		<menu_item_call label="À propos de [APP_NAME]" name="About Second Life"/>
@@ -385,9 +393,14 @@
 				<menu_item_call label="Test femme" name="Test Female"/>
 				<menu_item_check label="Autoriser la sélection de l&apos;avatar" name="Allow Select Avatar"/>
 			</menu>
+			<menu label="Vitesse d&apos;animation" name="Animation Speed">
+				<menu_item_call label="Toutes les animations 10 % plus rapides" name="All Animations 10 Faster"/>
+				<menu_item_call label="Toutes les animations 10 % plus lentes" name="All Animations 10 Slower"/>
+				<menu_item_call label="Réinitialiser la vitesse de toutes les animations" name="Reset All Animation Speed"/>
+				<menu_item_check label="Animations au ralenti" name="Slow Motion Animations"/>
+			</menu>
 			<menu_item_call label="Forcer les paramètres par défaut" name="Force Params to Default"/>
 			<menu_item_check label="Infos sur l&apos;animation" name="Animation Info"/>
-			<menu_item_check label="Animations au ralenti" name="Slow Motion Animations"/>
 			<menu_item_check label="Afficher la direction du regard" name="Show Look At"/>
 			<menu_item_check label="Afficher la direction du pointeur" name="Show Point At"/>
 			<menu_item_check label="Débogages des mises à jour" name="Debug Joint Updates"/>
diff --git a/indra/newview/skins/default/xui/fr/notifications.xml b/indra/newview/skins/default/xui/fr/notifications.xml
index 30154d18730..e73cc6e6e04 100644
--- a/indra/newview/skins/default/xui/fr/notifications.xml
+++ b/indra/newview/skins/default/xui/fr/notifications.xml
@@ -515,6 +515,24 @@ Consulter [_URL] pour en savoir plus ?
 		</url>
 		<usetemplate ignoretext="Mon pilote graphique est obsolète." name="okcancelignore" notext="Non" yestext="Oui"/>
 	</notification>
+	<notification name="AMDOldDriver">
+		Il existe probablement un pilote plus récent pour votre puce graphique.  La mise à jour des pilotes graphiques est susceptible d&apos;améliorer considérablement les performances.
+
+    Visiter la page [_URL] pour rechercher d&apos;éventuelles mises à jour de pilotes ?
+		<url name="url">
+			http://support.amd.com/us/Pages/AMDSupportHub.aspx
+		</url>
+		<usetemplate ignoretext="Mon pilote graphique est obsolète." name="okcancelignore" notext="Non" yestext="Oui"/>
+	</notification>
+	<notification name="NVIDIAOldDriver">
+		Il existe probablement un pilote plus récent pour votre puce graphique.  La mise à jour des pilotes graphiques est susceptible d&apos;améliorer considérablement les performances.
+
+    Visiter la page [_URL] pour rechercher d&apos;éventuelles mises à jour de pilotes ?
+		<url name="url">
+			http://www.nvidia.com/Download/index.aspx?lang=fr
+		</url>
+		<usetemplate ignoretext="Mon pilote graphique est obsolète." name="okcancelignore" notext="Non" yestext="Oui"/>
+	</notification>
 	<notification name="UnknownGPU">
 		Votre système contient une carte graphique que [APP_NAME] ne reconnaît pas.
 Cela est souvent le cas avec le nouveau matériel qui n&apos;a pas encore été testé avec [APP_NAME].  Cela ne posera probablement pas de problème, mais vous devrez peut-être ajuster vos paramètres graphiques.
@@ -1543,10 +1561,13 @@ Quitter le groupe ?
 		Impossible de proposer votre amitié actuellement. Veuillez réessayer dans un moment.
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
-	<notification name="BusyModeSet">
-		Le mode Occupé est sélectionné.
-Les chats et les messages instantanés ne s&apos;afficheront pas. Les messages instantanés génèreront la réponse en mode occupé que vous avez créée. Toutes les offres de téléportation seront refusées. Toutes les offres d&apos;inventaire iront dans la corbeille.
-		<usetemplate ignoretext="Je change mon statut en mode Occupé" name="okignore" yestext="OK"/>
+	<notification name="DoNotDisturbModeSet">
+		Ne pas déranger est activé.  Vous ne recevrez pas les notifications de communications entrantes.
+
+- Les autres résidents recevront votre réponse Ne pas déranger (définie dans Préférences &gt; Général).
+- Toutes les offres de téléportation seront refusées.
+- Les appels vocaux seront refusés.
+		<usetemplate ignoretext="J&apos;ai changé mon statut et suis désormais en mode Ne pas déranger." name="okignore" yestext="OK"/>
 	</notification>
 	<notification name="JoinedTooManyGroupsMember">
 		Vous avez atteint le nombre de groupes maximum. Avant de pouvoir rejoindre ce groupe, vous devez en quitter un ou refuser cette offre.
@@ -2033,6 +2054,10 @@ Déplacer les objets de l&apos;inventaire ?
 		Accéder à votre [http://secondlife.com/account/ Page d&apos;accueil] pour consulter l&apos;historique de votre compte ?
 		<usetemplate ignoretext="Lancer mon navigateur pour consulter l&apos;historique de mon compte" name="okcancelignore" notext="Annuler" yestext="Aller sur cette page"/>
 	</notification>
+	<notification name="ConfirmAddingChatParticipants">
+		Quand vous ajoutez une personne à une conversation existante, une nouvelle conversation est créée.  Tous les participants recevront les notifications de nouvelle conversation.
+		<usetemplate ignoretext="Confirmer l&apos;ajout de participants au chat" name="okcancelignore" notext="Annuler" yestext="OK"/>
+	</notification>
 	<notification name="ConfirmQuit">
 		Êtes-vous certain de vouloir quitter ?
 		<usetemplate ignoretext="Confirmer avant de quitter" name="okcancelignore" notext="Ne pas quitter" yestext="Quitter"/>
@@ -2107,14 +2132,14 @@ Voulez-vous le remplacer par l&apos;objet sélectionné ?
 			<button ignore="Ne jamais remplacer" name="No" text="Annuler"/>
 		</form>
 	</notification>
-	<notification label="Réponse si occupé(e)" name="BusyModePay">
-		Vous êtes en mode occupé et vous ne recevrez donc aucun objet en échange de ce paiement.
+	<notification label="Avertissement de mode Ne pas déranger" name="DoNotDisturbModePay">
+		Vous avez activé Ne pas déranger. Vous ne recevrez aucun article proposé en échange de ce paiement.
 
-Souhaitez-vous quitter le mode occupé avant de terminer cette transaction ?
+Voulez-vous désactiver Ne pas déranger avant de terminer cette transaction ?
 		<form name="form">
-			<ignore name="ignore" save_option="true" text="Je suis sur le point de payer une personne ou un objet mais suis en mode Occupé"/>
-			<button ignore="Toujours quitter le mode occupé" name="Yes" text="OK"/>
-			<button ignore="Ne jamais quitter le mode occupé" name="No" text="Annuler"/>
+			<ignore name="ignore" text="Je suis sur le point de payer une personne ou un objet mais suis en mode Ne pas déranger"/>
+			<button ignore="Toujours quitter le mode Ne pas déranger" name="Yes" text="OK"/>
+			<button ignore="Ne jamais quitter le mode Ne pas déranger" name="No" text="Annuler"/>
 		</form>
 	</notification>
 	<notification name="ConfirmDeleteProtectedCategory">
@@ -2249,11 +2274,8 @@ Liez-la à partir d&apos;une page web pour permettre aux autres résidents d&apo
 	<notification name="GroupNotice">
 		Sujet : [SUBJECT], Message : [MESSAGE]
 	</notification>
-	<notification name="FriendOnline">
-		&lt;nolink&gt;[NAME]&lt;/nolink&gt; est en ligne
-	</notification>
-	<notification name="FriendOffline">
-		&lt;nolink&gt;[NAME]&lt;/nolink&gt; est hors ligne
+	<notification name="FriendOnlineOffline">
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; est [STATUS]
 	</notification>
 	<notification name="AddSelfFriend">
 		Même si vous êtes extrêmement sympathique, vous ne pouvez pas devenir ami avec vous-même.
@@ -2482,13 +2504,6 @@ Vous ne pouvez pas voler ici.
 	<notification name="DynamicPathfindingDisabled">
 		La recherche de chemin dynamique n&apos;est pas activée dans cette région. Il se peut que les objets scriptés utilisant des appels LSL de recherche de chemin ne fonctionnent pas comme prévu pour cette région.
 	</notification>
-	<notification name="PathfindingRebakeNavmesh">
-		La modification de certains objets de cette région risque d&apos;entraîner un comportement incorrect des autres objets mobiles. Pour que les objets mobiles se comportent correctement, cliquez sur Refiger la région. Pour plus d&apos;informations, choisissez Aide.
-		<url name="url">
-			http://wiki.secondlife.com/wiki/Pathfinding_Tools_in_the_Second_Life_Viewer
-		</url>
-		<usetemplate helptext="Aide" ignoretext="La modification de certains objets de cette région risque d&apos;entraîner un comportement incorrect des autres objets mobiles." name="okhelpignore" yestext="OK"/>
-	</notification>
 	<notification name="PathfindingCannotRebakeNavmesh">
 		Une erreur est survenue. Un problème réseau ou serveur s&apos;est peut-être produit ou vous ne disposez pas de droits de construction. Se déconnecter puis se reconnecter permet parfois de résoudre le problème.
 		<usetemplate name="okbutton" yestext="OK"/>
@@ -2751,7 +2766,7 @@ Acceptez-vous ?
 	<notification name="ScriptQuestionCaution">
 		Avertissement : l&apos;objet &lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt; souhaite un accès total à votre compte en Linden dollars. Si vous autorisez cet accès, il pourra supprimer des fonds de votre compte à tout moment ou le vider entièrement de façon continue sans avis préalable.
   
-Il est rare qu&apos;une telle demande soit légitime. N&apos;autorisez pas cet accès si vous ne comprenez pas entièrement pourquoi l&apos;objet souhaite accéder à votre compte.
+N&apos;autorisez pas cet accès si vous ne comprenez pas entièrement pourquoi l&apos;objet souhaite accéder à votre compte.
 		<form name="form">
 			<button name="Grant" text="Permettre un accès total"/>
 			<button name="Deny" text="Refuser"/>
@@ -3332,4 +3347,633 @@ Désactivation des mises à jour futures de ce fichier...
 		Vous allez supprimer [NUM_ITEMS] articles. Voulez-vous vraiment continuer ?
 		<usetemplate ignoretext="Voulez-vous vraiment supprimer plusieurs articles ?" name="okcancelignore" notext="Non" yestext="Oui"/>
 	</notification>
+	<notification name="AvatarFrozen">
+		[AV_FREEZER] vous a figé. Vous ne pouvez pas bouger ni interagir avec le monde.
+	</notification>
+	<notification name="AvatarFrozenDuration">
+		[AV_FREEZER] vous a figé pour une durée de [AV_FREEZE_TIME] secondes. Vous ne pouvez pas bouger ni interagir avec le monde.
+	</notification>
+	<notification name="YouFrozeAvatar">
+		Avatar figé.
+	</notification>
+	<notification name="AvatarHasUnFrozenYou">
+		[AV_FREEZER] vous a libéré.
+	</notification>
+	<notification name="AvatarUnFrozen">
+		Avatar libéré.
+	</notification>
+	<notification name="AvatarFreezeFailure">
+		Vous n&apos;avez pas pu figer ce que vous vouliez car vous ne disposez pas des droits d&apos;admin pour cette parcelle.
+	</notification>
+	<notification name="AvatarFreezeThaw">
+		Vous n&apos;êtes plus figé, vous pouvez reprendre votre vie.
+	</notification>
+	<notification name="AvatarCantFreeze">
+		Impossible de figer cet utilisateur.
+	</notification>
+	<notification name="NowOwnObject">
+		Vous êtes désormais le propriétaire de l&apos;objet [OBJECT_NAME].
+	</notification>
+	<notification name="CantRezOnLand">
+		Impossible de rezzer l&apos;objet à [OBJECT_POS] car le propriétaire de ce terrain de l&apos;autorise pas.  Utilisez l&apos;outil Terrain pour voir à qui appartiennent les terrains.
+	</notification>
+	<notification name="RezFailTooManyRequests">
+		Impossible de rezzer l&apos;objet car il y a trop de demandes.
+	</notification>
+	<notification name="SitFailCantMove">
+		Vous ne pouvez pas vous asseoir car vous ne pouvez actuellement pas bouger.
+	</notification>
+	<notification name="SitFailNotAllowedOnLand">
+		Vous ne pouvez pas vous asseoir car votre présence sur ce terrain n&apos;est pas autorisée.
+	</notification>
+	<notification name="SitFailNotSameRegion">
+		Essayez de vous rapprocher.  Impossible de vous asseoir sur l&apos;objet car
+il ne se trouve pas dans la même région que vous.
+	</notification>
+	<notification name="NoNewObjectRegionFull">
+		Création d&apos;un nouvel objet impossible. La région est pleine.
+	</notification>
+	<notification name="FailedToPlaceObject">
+		Échec du placement de l&apos;objet à l&apos;emplacement spécifié.  Veuillez réessayer.
+	</notification>
+	<notification name="NoOwnNoGardening">
+		Vous ne pouvez pas créer d&apos;arbres ni d&apos;herbe sur un terrain qui ne vous appartient pas.
+	</notification>
+	<notification name="NoCopyPermsNoObject">
+		Échec de la copie car vous ne disposez pas des droits requis pour copier l&apos;objet [OBJ_NAME].
+	</notification>
+	<notification name="NoTransPermsNoObject">
+		Échec de la copie car l&apos;objet [OBJ_NAME] ne peut pas vous être transféré.
+	</notification>
+	<notification name="AddToNavMeshNoCopy">
+		Échec de la copie car l&apos;objet [OBJ_NAME] contribue au maillage de navigation.
+	</notification>
+	<notification name="DupeWithNoRootsSelected">
+		Dupliquer sans objet racine sélectionné
+	</notification>
+	<notification name="CantDupeCuzRegionIsFull">
+		Impossible de dupliquer les objets car la région est pleine.
+	</notification>
+	<notification name="CantDupeCuzParcelNotFound">
+		Impossible de dupliquer les objets - la parcelle sur laquelle ils sont est introuvable.
+	</notification>
+	<notification name="CantCreateCuzParcelFull">
+		Création de l&apos;objet impossible car 
+la parcelle est pleine.
+	</notification>
+	<notification name="RezAttemptFailed">
+		Échec d&apos;une tentative pour rezzer un objet.
+	</notification>
+	<notification name="ToxicInvRezAttemptFailed">
+		Impossible de créer l&apos;article qui a provoqué des problèmes pour cette région.
+	</notification>
+	<notification name="InvItemIsBlacklisted">
+		Cet article d&apos;inventaire a été placé sur liste noire.
+	</notification>
+	<notification name="NoCanRezObjects">
+		Vous n&apos;êtes actuellement pas autorisé à créer des objets.
+	</notification>
+	<notification name="LandSearchBlocked">
+		Recherche de terrain bloquée.
+Vous avez effectué trop de recherches de terrain trop rapidement.
+Veuillez réessayer dans une minute.
+	</notification>
+	<notification name="NotEnoughResourcesToAttach">
+		Ressources de script insuffisantes pour attacher cet objet.
+	</notification>
+	<notification name="YouDiedAndGotTPHome">
+		Vous êtes mort et avez été téléporté à votre domicile.
+	</notification>
+	<notification name="EjectComingSoon">
+		Votre présence ici n&apos;est plus autorisée et vous disposez de [EJECT_TIME] secondes pour partir.
+	</notification>
+	<notification name="NoEnterServerFull">
+		Vous ne pouvez pas pénétrer dans cette région car 
+le serveur est plein.
+	</notification>
+	<notification name="SaveBackToInvDisabled">
+		Le réenregistrement dans l&apos;inventaire a été désactivé.
+	</notification>
+	<notification name="NoExistNoSaveToContents">
+		Impossible d&apos;enregistrer [OBJ_NAME] dans le contenu des objets car l&apos;objet à partir duquel il a été rezzé n&apos;existe plus.
+	</notification>
+	<notification name="NoModNoSaveToContents">
+		Impossible d&apos;enregistrer [OBJ_NAME] dans le contenu des objets car vous ne disposez pas des droits requis pour modifier l&apos;objet [DEST_NAME].
+	</notification>
+	<notification name="NoSaveBackToInvDisabled">
+		Impossible de réenregistrer [OBJ_NAME] dans l&apos;inventaire -- cette opération a été désactivée.
+	</notification>
+	<notification name="NoCopyNoSelCopy">
+		Vous ne pouvez pas copier votre sélection car vous n&apos;avez pas le droit de copier l&apos;objet [OBJ_NAME].
+	</notification>
+	<notification name="NoTransNoSelCopy">
+		Vous ne pouvez pas copier votre sélection car l&apos;objet [OBJ_NAME] n&apos;est pas transférable.
+	</notification>
+	<notification name="NoTransNoCopy">
+		Vous ne pouvez pas copier votre sélection car l&apos;objet [OBJ_NAME] n&apos;est pas transférable.
+	</notification>
+	<notification name="NoPermsNoRemoval">
+		La suppression de l&apos;objet [OBJ_NAME] du simulateur n&apos;est pas autorisée par le système de droits.
+	</notification>
+	<notification name="NoModNoSaveSelection">
+		Vous ne pouvez pas enregistrer votre sélection car vous n&apos;avez pas le droit de modifier l&apos;objet [OBJ_NAME].
+	</notification>
+	<notification name="NoCopyNoSaveSelection">
+		Vous ne pouvez pas enregistrer votre sélection car l&apos;objet [OBJ_NAME] ne peut pas être copié.
+	</notification>
+	<notification name="NoModNoTaking">
+		Vous ne pouvez pas prendre votre sélection car vous n&apos;avez pas le droit de modifier l&apos;objet [OBJ_NAME].
+	</notification>
+	<notification name="RezDestInternalError">
+		Erreur interne : type de destination inconnue.
+	</notification>
+	<notification name="DeleteFailObjNotFound">
+		Échec de la suppression car l&apos;objet est introuvable
+	</notification>
+	<notification name="SorryCantEjectUser">
+		Exclusion de cet utilisateur impossible.
+	</notification>
+	<notification name="RegionSezNotAHome">
+		Cette région ne vous permet pas d&apos;y définir votre domicile.
+	</notification>
+	<notification name="HomeLocationLimits">
+		Vous ne pouvez définir votre domicile que sur votre terrain ou un infohub du continent.
+	</notification>
+	<notification name="HomePositionSet">
+		Emplacement du domicile défini.
+	</notification>
+	<notification name="AvatarEjected">
+		Avatar expulsé.
+	</notification>
+	<notification name="AvatarEjectFailed">
+		Vous n&apos;avez pas pu réaliser l&apos;exclusion car vous ne disposez pas des droits d&apos;admin pour cette parcelle.
+	</notification>
+	<notification name="CantMoveObjectParcelFull">
+		Impossible de déplacer [OBJECT_NAME] jusqu&apos;à
+[OBJ_POSITION] dans la région [REGION_NAME] car la parcelle est pleine.
+	</notification>
+	<notification name="CantMoveObjectParcelPerms">
+		Impossible de déplacer [OBJECT_NAME] jusqu&apos;à
+[OBJ_POSITION] dans la région [REGION_NAME] car vos objets ne sont pas autorisés sur cette parcelle.
+	</notification>
+	<notification name="CantMoveObjectParcelResources">
+		Impossible de déplacer [OBJECT_NAME] jusqu&apos;à
+[OBJ_POSITION] dans la région [REGION_NAME] car il n&apos;y a pas suffisamment de ressources pour cet objet sur cette parcelle.
+	</notification>
+	<notification name="CantMoveObjectRegionVersion">
+		Impossible de déplacer [OBJECT_NAME] jusqu&apos;à
+[OBJ_POSITION] dans la région [REGION_NAME] car l&apos;autre région exécute une version plus ancienne qui ne prend pas en charge la réception de cet objet via le passage à une autre région.
+	</notification>
+	<notification name="CantMoveObjectNavMesh">
+		Impossible de déplacer [OBJECT_NAME] jusqu&apos;à
+[OBJ_POSITION] dans la région [REGION_NAME] car vous ne pouvez pas modifier le maillage de navigation d&apos;une région à une autre.
+	</notification>
+	<notification name="CantMoveObjectWTF">
+		Impossible de déplacer [OBJECT_NAME] jusqu&apos;à
+[OBJ_POSITION] dans la région [REGION_NAME] pour une raison inconnue. ([FAILURE_TYPE])
+	</notification>
+	<notification name="NoPermModifyObject">
+		Vous n&apos;êtes pas autorisé à modifier cet objet.
+	</notification>
+	<notification name="CantEnablePhysObjContributesToNav">
+		Impossible d&apos;activer les propriétés physiques pour un objet qui contribue au maillage de navigation.
+	</notification>
+	<notification name="CantEnablePhysKeyframedObj">
+		Impossible d&apos;activer les propriétés physiques pour les objets avec images-clés.
+	</notification>
+	<notification name="CantEnablePhysNotEnoughLandResources">
+		Impossible d&apos;activer les propriétés physiques pour l&apos;objet -- ressources de terrain insuffisantes.
+	</notification>
+	<notification name="CantEnablePhysCostTooGreat">
+		Impossible d&apos;activer les propriétés physiques pour les objets avec un coût de ressources physiques supérieur à [MAX_OBJECTS]
+	</notification>
+	<notification name="PhantomWithConcavePiece">
+		Cet objet ne peut pas contenir de morceau concave car c&apos;est un fantôme qui contribue au maillage de navigation.
+	</notification>
+	<notification name="UnableAddItem">
+		Ajout de l&apos;article impossible.
+	</notification>
+	<notification name="UnableEditItem">
+		Modification impossible
+	</notification>
+	<notification name="NoPermToEdit">
+		Modification interdite.
+	</notification>
+	<notification name="NoPermToCopyInventory">
+		Pas autorisé à copier cet inventaire.
+	</notification>
+	<notification name="CantSaveItemDoesntExist">
+		Impossible d&apos;enregistrer dans le contenu des objets : L&apos;article n&apos;existe plus.
+	</notification>
+	<notification name="CantSaveItemAlreadyExists">
+		Impossible d&apos;enregistrer dans le contenu des objets : Un article avec ce nom existe déjà dans l&apos;inventaire.
+	</notification>
+	<notification name="CantSaveModifyAttachment">
+		Impossible d&apos;enregistrer dans le contenu des objets : cela modifierait les droits d&apos;attache.
+	</notification>
+	<notification name="TooManyScripts">
+		Trop de scripts.
+	</notification>
+	<notification name="UnableAddScript">
+		Ajout du script impossible.
+	</notification>
+	<notification name="AssetServerTimeoutObjReturn">
+		Le serveur d&apos;actifs n&apos;a pas répondu assez vite.  Objet renvoyé dans le sim.
+	</notification>
+	<notification name="RegionDisablePhysicsShapes">
+		Les formes physiques ne sont pas activées pour cette région.
+	</notification>
+	<notification name="NoModNavmeshAcrossRegions">
+		Vous ne pouvez pas modifier le maillage de navigation d&apos;une région à une autre.
+	</notification>
+	<notification name="NoSetPhysicsPropertiesOnObjectType">
+		Impossible de définir les propriétés physiques pour ce type d&apos;objet.
+	</notification>
+	<notification name="NoSetRootPrimWithNoShape">
+		Vous devenez définir une forme pour la prim racine.
+	</notification>
+	<notification name="NoRegionSupportPhysMats">
+		Les matériaux physiques ne sont pas activés pour cette région.
+	</notification>
+	<notification name="OnlyRootPrimPhysMats">
+		Les matériaux physiques ne peuvent être ajustés que pour les prims racines.
+	</notification>
+	<notification name="NoSupportCharacterPhysMats">
+		La configuration de matériaux physiques sur les personnages n&apos;est pas prise en charge actuellement.
+	</notification>
+	<notification name="InvalidPhysMatProperty">
+		Une ou plusieurs propriétés des ressources physiques spécifiées n&apos;étaient pas valides.
+	</notification>
+	<notification name="NoPermsAlterStitchingMeshObj">
+		Vous ne pouvez pas changer le type de raccord d&apos;un objet avec maillage.
+	</notification>
+	<notification name="NoPermsAlterShapeMeshObj">
+		Vous ne pouvez pas changer la forme d&apos;un objet avec maillage.
+	</notification>
+	<notification name="FullRegionCantEnter">
+		Vous ne pouvez pas pénétrer dans cette région car \ncar la région est pleine.
+	</notification>
+	<notification name="LinkFailedOwnersDiffer">
+		Échec du lien -- les propriétaires sont différents
+	</notification>
+	<notification name="LinkFailedNoModNavmeshAcrossRegions">
+		Échec du lien -- vous ne pouvez pas modifier le maillage de navigation d&apos;une région à une autre.
+	</notification>
+	<notification name="LinkFailedNoPermToEdit">
+		Échec du lien car vous ne disposez pas des droits de modification.
+	</notification>
+	<notification name="LinkFailedTooManyPrims">
+		Échec du lien -- trop de primitives
+	</notification>
+	<notification name="LinkFailedCantLinkNoCopyNoTrans">
+		Échec du lien -- impossible de lier pas de copie et pas de transfert
+	</notification>
+	<notification name="LinkFailedNothingLinkable">
+		Échec du lien - il n&apos;y a rien qui puisse être lié.
+	</notification>
+	<notification name="LinkFailedTooManyPathfindingChars">
+		Échec du lien -- trop de personnages de recherche de chemin
+	</notification>
+	<notification name="LinkFailedInsufficientLand">
+		Échec du lien -- ressources de terrain insuffisantes
+	</notification>
+	<notification name="LinkFailedTooMuchPhysics">
+		Cet objet utilise trop de ressources physiques - sa dynamique a été désactivée.
+	</notification>
+	<notification name="TeleportedHomeByObjectOnParcel">
+		Vous avez été téléporté chez vous par l&apos;objet [OBJECT_NAME] sur la parcelle [PARCEL_NAME].
+	</notification>
+	<notification name="TeleportedHomeByObject">
+		Vous avez été téléporté chez vous par l&apos;objet [OBJECT_NAME].
+	</notification>
+	<notification name="TeleportedByAttachment">
+		Vous avez été téléporté par un élément sur [ITEM_ID]
+	</notification>
+	<notification name="TeleportedByObjectOnParcel">
+		Vous avez été téléporté par l&apos;objet [OBJECT_NAME] sur la parcelle [PARCEL_NAME].
+	</notification>
+	<notification name="TeleportedByObjectOwnedBy">
+		Vous avez été téléporté par l&apos;objet [OBJECT_NAME] appartenant à [OWNER_ID].
+	</notification>
+	<notification name="TeleportedByObjectUnknownUser">
+		Vous avez été téléporté par l&apos;objet [OBJECT_NAME] appartenant à un utilisateur inconnu.
+	</notification>
+	<notification name="CantCreateObjectRegionFull">
+		Création de l&apos;objet demandé impossible. La région est pleine.
+	</notification>
+	<notification name="CantAttackMultipleObjOneSpot">
+		Vous ne pouvez pas attacher plusieurs objets au même endroit.
+	</notification>
+	<notification name="CantCreateMultipleObjAtLoc">
+		Vous ne pouvez pas créer plusieurs objets ici.
+	</notification>
+	<notification name="UnableToCreateObjTimeOut">
+		Création de l&apos;objet demandé impossible. Objet absent de la base de données.
+	</notification>
+	<notification name="UnableToCreateObjUnknown">
+		Création de l&apos;objet demandé impossible. Délai d&apos;attente dépassé. Veuillez réessayer.
+	</notification>
+	<notification name="UnableToCreateObjMissingFromDB">
+		Création de l&apos;objet demandé impossible. Veuillez réessayer.
+	</notification>
+	<notification name="RezFailureTookTooLong">
+		Échec de l&apos;action « rezzer », le chargement de l&apos;objet demandé a pris trop longtemps.
+	</notification>
+	<notification name="FailedToPlaceObjAtLoc">
+		Échec du placement de l&apos;objet à l&apos;emplacement spécifié.  Veuillez réessayer.
+	</notification>
+	<notification name="CantCreatePlantsOnLand">
+		Vous ne pouvez pas créer de plantes sur ce terrain.
+	</notification>
+	<notification name="CantRestoreObjectNoWorldPos">
+		Impossible de restaurer l&apos;objet. Position dans le monde introuvable.
+	</notification>
+	<notification name="CantRezObjectInvalidMeshData">
+		Impossible de rezzer l&apos;objet car ses données de maillage ne sont pas valides.
+	</notification>
+	<notification name="CantRezObjectTooManyScripts">
+		Impossible de rezzer l&apos;objet car il y a déjà trop de scripts dans cette région.
+	</notification>
+	<notification name="CantCreateObjectNoAccess">
+		Vos privilèges d&apos;accès ne vous autorisent pas à créer des objets à cet endroit.
+	</notification>
+	<notification name="CantCreateObject">
+		Vous n&apos;êtes actuellement pas autorisé à créer des objets.
+	</notification>
+	<notification name="InvalidObjectParams">
+		Paramètres d&apos;objet non valides
+	</notification>
+	<notification name="CantDuplicateObjectNoAcess">
+		Vos privilèges d&apos;accès ne vous autorisent pas à dupliquer des objets ici.
+	</notification>
+	<notification name="CantChangeShape">
+		Vous n’êtes pas autorisé à modifier cette forme.
+	</notification>
+	<notification name="NoAccessToClaimObjects">
+		Vos privilèges d&apos;accès ne vous autorisent pas à revendiquer des objets ici.
+	</notification>
+	<notification name="DeedFailedNoPermToDeedForGroup">
+		Échec de la cession car vous de disposez pas des droits de cession des objets pour votre groupe.
+	</notification>
+	<notification name="NoPrivsToBuyObject">
+		Vos privilèges d&apos;accès ne vous autorisent pas à acheter des objets ici.
+	</notification>
+	<notification name="CantAttachObjectAvatarSittingOnIt">
+		Impossible d&apos;attacher l&apos;objet car un avatar est assis dessus.
+	</notification>
+	<notification name="WhyAreYouTryingToWearShrubbery">
+		Les arbres et les plantes ne peuvent pas être portés sous forme d&apos;éléments attachés.
+	</notification>
+	<notification name="CantAttachGroupOwnedObjs">
+		Impossible d&apos;attacher les objets appartenant au groupe.
+	</notification>
+	<notification name="CantAttachObjectsNotOwned">
+		Vous ne pouvez pas attacher des objets qui ne vous appartiennent pas.
+	</notification>
+	<notification name="CantAttachNavmeshObjects">
+		Impossible d&apos;attacher les objets contribuant au maillage de navigation.
+	</notification>
+	<notification name="CantAttachObjectNoMovePermissions">
+		Impossible d&apos;attacher l&apos;objet car vous n&apos;avez pas le droit de le déplacer.
+	</notification>
+	<notification name="CantAttachNotEnoughScriptResources">
+		Ressources de script insuffisantes pour attacher cet objet.
+	</notification>
+	<notification name="CantDropItemTrialUser">
+		Vous ne pouvez pas déposer d&apos;objets ici. Essayez la zone de période d&apos;essai gratuite.
+	</notification>
+	<notification name="CantDropMeshAttachment">
+		Vous ne pouvez pas déposer les éléments attachés avec maillage. Détachez-les dans l&apos;inventaire puis rezzez-les dans le monde.
+	</notification>
+	<notification name="CantDropAttachmentNoPermission">
+		L&apos;élément n&apos;a pas pu être déposé : vous n&apos;avez pas le droit de déposer des éléments à cet endroit.
+	</notification>
+	<notification name="CantDropAttachmentInsufficientLandResources">
+		L&apos;élément n&apos;a pas pu être déposé : ressources de terrain disponibles insuffisantes.
+	</notification>
+	<notification name="CantDropAttachmentInsufficientResources">
+		Les éléments n&apos;ont pas pu être déposés : ressources disponibles insuffisantes.
+	</notification>
+	<notification name="CantDropObjectFullParcel">
+		Impossible de déposer l&apos;objet ici.  La parcelle est pleine.
+	</notification>
+	<notification name="CantTouchObjectBannedFromParcel">
+		Vous ne pouvez pas toucher/attraper cet objet car vous êtes banni de cette parcelle de terrain.
+	</notification>
+	<notification name="PlzNarrowDeleteParams">
+		Veuillez affiner vos paramètres de suppression.
+	</notification>
+	<notification name="UnableToUploadAsset">
+		Chargement de l&apos;actif impossible.
+	</notification>
+	<notification name="CantTeleportCouldNotFindUser">
+		Impossible de trouver l&apos;utilisateur à téléporter chez lui
+	</notification>
+	<notification name="GodlikeRequestFailed">
+		échec de la demande de type divine
+	</notification>
+	<notification name="GenericRequestFailed">
+		échec de la demande générique
+	</notification>
+	<notification name="CantUploadPostcard">
+		Chargement de la carte postale impossible.  Réessayez ultérieurement.
+	</notification>
+	<notification name="CantFetchInventoryForGroupNotice">
+		Impossible récupérer les détails de l&apos;inventaire pour la notice au groupe.
+	</notification>
+	<notification name="CantSendGroupNoticeNotPermitted">
+		Impossible d&apos;envoyer une notice au groupe -- ce n&apos;est pas autorisé.
+	</notification>
+	<notification name="CantSendGroupNoticeCantConstructInventory">
+		Impossible d&apos;envoyer une notice au groupe - échec de la construction de l&apos;inventaire.
+	</notification>
+	<notification name="CantParceInventoryInNotice">
+		Impossible d&apos;analyser l&apos;inventaire dans la notice.
+	</notification>
+	<notification name="TerrainUploadFailed">
+		Échec du chargement du terrain.
+	</notification>
+	<notification name="TerrainFileWritten">
+		Fichier de terrain écrit
+	</notification>
+	<notification name="TerrainFileWrittenStartingDownload">
+		Fichier de terrain écrit, lancement du téléchargement...
+	</notification>
+	<notification name="TerrainBaked">
+		Terrain figé.
+	</notification>
+	<notification name="TenObjectsDisabledPlzRefresh">
+		Seuls les 10 premiers objets sélectionnés ont été désactivés. Actualisez et effectuez des sélections supplémentaires si nécessaire.
+	</notification>
+	<notification name="UpdateViewerBuyParcel">
+		Vous devez mettre votre client à jour pour acheter cette parcelle.
+	</notification>
+	<notification name="CantBuyParcelNotForSale">
+		Achat impossible, cette parcelle n&apos;est pas à vendre.
+	</notification>
+	<notification name="CantBuySalePriceOrLandAreaChanged">
+		Achat impossible, le prix de vente ou la zone de terrain a changé.
+	</notification>
+	<notification name="CantBuyParcelNotAuthorized">
+		Vous n&apos;êtes pas un acheteur autorisé pour cette parcelle.
+	</notification>
+	<notification name="CantBuyParcelAwaitingPurchaseAuth">
+		Vous ne pouvez pas acheter cette parcelle car elle est déjà en attente d&apos;une autorisation d&apos;achat.
+	</notification>
+	<notification name="CantBuildOverflowParcel">
+		Vous ne pouvez pas construire d&apos;objets ici car cela saturerait la parcelle.
+	</notification>
+	<notification name="SelectedMultipleOwnedLand">
+		Vous avez sélectionné des terrains avec des propriétaires différents. Sélectionnez une zone plus petite et réessayez.
+	</notification>
+	<notification name="CantJoinTooFewLeasedParcels">
+		Pas suffisamment de parcelles louées dans la sélection pour effectuer la fusion.
+	</notification>
+	<notification name="CantDivideLandMultipleParcelsSelected">
+		Division du terrain impossible.\nPlusieurs parcelles sont sélectionnées.\nVeuillez sélectionner un terrain plus petit.
+	</notification>
+	<notification name="CantDivideLandCantFindParcel">
+		Division du terrain impossible.\nParcelle introuvable.\nSignalez-le en allant à Aide -&gt; Signaler un bug...
+	</notification>
+	<notification name="CantDivideLandWholeParcelSelected">
+		Division du terrain impossible. Toute la parcelle est sélectionnée.\nVeuillez sélectionner un terrain plus petit.
+	</notification>
+	<notification name="LandHasBeenDivided">
+		Le terrain a été divisé.
+	</notification>
+	<notification name="PassPurchased">
+		Vous avez acheté un pass.
+	</notification>
+	<notification name="RegionDisallowsClassifieds">
+		Cette région n&apos;autorise pas les petites annonces.
+	</notification>
+	<notification name="LandPassExpireSoon">
+		Votre pass pour ce terrain arrive à expiration.
+	</notification>
+	<notification name="CantSitNoSuitableSurface">
+		Il n&apos;y a pas de surface appropriée sur laquelle s&apos;asseoir, essayez un autre endroit.
+	</notification>
+	<notification name="CantSitNoRoom">
+		Pas de place pour s&apos;asseoir ici, essayez un autre endroit.
+	</notification>
+	<notification name="ClaimObjectFailedNoPermission">
+		Échec de la revendication de l&apos;objet car vous ne disposez pas des droits requis.
+	</notification>
+	<notification name="ClaimObjectFailedNoMoney">
+		Échec de la revendication de l&apos;objet car vous ne disposez pas de suffisamment de L$.
+	</notification>
+	<notification name="CantDeedGroupLand">
+		Impossible de céder un terrain appartenant au groupe.
+	</notification>
+	<notification name="BuyObjectFailedNoMoney">
+		Échec de l&apos;achat de l&apos;objet car vous ne disposez pas de suffisamment de L$.
+	</notification>
+	<notification name="BuyInventoryFailedNoMoney">
+		Échec de l&apos;achat d&apos;inventaire car vous ne disposez pas de suffisamment de L$.
+	</notification>
+	<notification name="BuyPassFailedNoMoney">
+		Vous ne disposez pas de suffisamment de L$ pour acheter un pass pour ce terrain.
+	</notification>
+	<notification name="CantBuyPassTryAgain">
+		Impossible d&apos;acheter le pass actuellement.  Réessayez ultérieurement.
+	</notification>
+	<notification name="CantCreateObjectParcelFull">
+		Création de l&apos;objet impossible car \nla parcelle est pleine.
+	</notification>
+	<notification name="FailedPlacingObject">
+		Échec du placement de l&apos;objet à l&apos;emplacement spécifié.  Veuillez réessayer.
+	</notification>
+	<notification name="CantCreateLandmarkForEvent">
+		Impossible de créer le repère pour l&apos;événement.
+	</notification>
+	<notification name="GodBeatsFreeze">
+		Grâce à vos pouvoirs de type divin, vous n&apos;êtes plus figé.
+	</notification>
+	<notification name="SpecialPowersRequestFailedLogged">
+		Échec de la demande de pouvoirs spéciaux. Cette demande a été archivée.
+	</notification>
+	<notification name="ExpireExplanation">
+		Le système ne peut pas traiter votre demande actuellement. Délai d&apos;attente dépassé.
+	</notification>
+	<notification name="DieExplanation">
+		Le système ne peut pas traiter votre demande.
+	</notification>
+	<notification name="AddPrimitiveFailure">
+		Fonds insuffisants pour créer la primitive.
+	</notification>
+	<notification name="RezObjectFailure">
+		Fonds insuffisants pour créer l&apos;objet.
+	</notification>
+	<notification name="ResetHomePositionNotLegal">
+		Réinitialiser l&apos;emplacement du domicile car il n&apos;était pas légal.
+	</notification>
+	<notification name="CantInviteRegionFull">
+		Vous ne pouvez pas inviter quiconque là où vous vous trouvez actuellement car la région est pleine. Réessayez ultérieurement.
+	</notification>
+	<notification name="CantSetHomeAtRegion">
+		Cette région ne vous permet pas d&apos;y définir votre domicile.
+	</notification>
+	<notification name="ListValidHomeLocations">
+		Vous ne pouvez définir votre domicile que sur votre terrain ou un infohub du continent.
+	</notification>
+	<notification name="SetHomePosition">
+		Emplacement du domicile défini.
+	</notification>
+	<notification name="CantDerezInventoryError">
+		Impossible de dérezzer l&apos;objet à cause d&apos;un défaut d&apos;inventaire.
+	</notification>
+	<notification name="CantCreateRequestedInv">
+		Création de l&apos;inventaire demandé impossible.
+	</notification>
+	<notification name="CantCreateRequestedInvFolder">
+		Création du dossier d&apos;inventaire demandé impossible.
+	</notification>
+	<notification name="CantCreateInventory">
+		Création de cet inventaire impossible.
+	</notification>
+	<notification name="CantCreateLandmark">
+		Création du repère impossible.
+	</notification>
+	<notification name="CantCreateOutfit">
+		Création de la tenue impossible. Veuillez réessayer dans une minute.
+	</notification>
+	<notification name="InventoryNotForSale">
+		L&apos;inventaire n&apos;est pas à vendre.
+	</notification>
+	<notification name="CantFindInvItem">
+		Objet de l&apos;inventaire introuvable.
+	</notification>
+	<notification name="CantFindObject">
+		Objet introuvable.
+	</notification>
+	<notification name="CantTransfterMoneyRegionDisabled">
+		Les transferts d&apos;argent aux objets sont actuellement désactivés dans cette région.
+	</notification>
+	<notification name="CantPayNoAgent">
+		Impossible de savoir qui payer.
+	</notification>
+	<notification name="CantDonateToPublicObjects">
+		Vous ne pouvez pas donner de L$ à des objets publics.
+	</notification>
+	<notification name="InventoryCreationInWorldObjectFailed">
+		Échec de la création d&apos;inventaire sur l&apos;objet Second Life.
+	</notification>
+	<notification name="UserBalanceOrLandUsageError">
+		Une erreur interne nous a empêchés de mettre votre client à jour correctement.  Le solde de L$ et le patrimoine affichés dans votre client peuvent ne pas correspondre à votre solde réel sur les serveurs.
+	</notification>
+	<notification name="LargePrimAgentIntersect">
+		Impossible de créer de grandes prims qui coupent d&apos;autres joueurs.  Réessayez une fois que les autres joueurs se seront déplacés.
+	</notification>
+	<notification name="PreferenceChatClearLog">
+		Cela supprimera les journaux des conversations précédentes, ainsi que toute copie de sauvegarde de ce fichier.
+		<usetemplate ignoretext="Confirmer avant de supprimer le journal des conversations précédentes" name="okcancelignore" notext="Annuler" yestext="OK"/>
+	</notification>
+	<notification name="PreferenceChatDeleteTranscripts">
+		Cela supprimera les transcriptions de toutes les conversations précédentes. La liste des conversations passées ne sera pas affectée. Tous les fichiers avec les suffixes .txt et txt.backup dans le dossier [FOLDER] seront supprimés.
+		<usetemplate ignoretext="Confirmer avant la suppression des transcriptions" name="okcancelignore" notext="Annuler" yestext="OK"/>
+	</notification>
+	<notification name="PreferenceChatPathChanged">
+		Impossible de déplacer les fichiers. Chemin précédent rétabli.
+		<usetemplate ignoretext="Impossible de déplacer les fichiers. Chemin précédent rétabli." name="okignore" yestext="OK"/>
+	</notification>
 </notifications>
diff --git a/indra/newview/skins/default/xui/fr/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/fr/panel_avatar_list_item.xml
index 54b8f53e59b..c8fa9f340f9 100644
--- a/indra/newview/skins/default/xui/fr/panel_avatar_list_item.xml
+++ b/indra/newview/skins/default/xui/fr/panel_avatar_list_item.xml
@@ -27,5 +27,6 @@
 	<icon name="permission_edit_mine_icon" tool_tip="Cet(te) ami(e) peut modifier, supprimer ou prendre vos objets."/>
 	<icon name="permission_map_icon" tool_tip="Cet(te) ami(e) peut vous localiser sur la carte."/>
 	<icon name="permission_online_icon" tool_tip="Cet(te) ami(e) peut voir lorsque vous êtes en ligne."/>
+	<button name="info_btn" tool_tip="En savoir plus"/>
 	<button name="profile_btn" tool_tip="Voir le profil"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/fr/panel_block_list_sidetray.xml
index 96add2a74b1..0e2b5a9c93a 100644
--- a/indra/newview/skins/default/xui/fr/panel_block_list_sidetray.xml
+++ b/indra/newview/skins/default/xui/fr/panel_block_list_sidetray.xml
@@ -1,10 +1,11 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="block_list_panel">
-	<text name="title_text">
-		Liste des ignorés
-	</text>
-	<scroll_list name="blocked" tool_tip="Liste des résidents actuellement ignorés"/>
-	<button label="Ignorer une personne" label_selected="Ignorer le résident..." name="Block resident..." tool_tip="Choisir un résident à ignorer"/>
-	<button label="Ignorer un objet par son nom" label_selected="Ignorer un objet par son nom..." name="Block object by name..." tool_tip="Choisir un objet à ignorer par nom"/>
-	<button label="Ne plus ignorer" label_selected="Ne plus ignorer" name="Unblock" tool_tip="Enlever le résident ou l&apos;objet de la liste des ignorés"/>
+	<panel label="bottom_panel" name="blocked_buttons_panel">
+		<filter_editor label="Filtrer" name="blocked_filter_input"/>
+		<menu_button name="blocked_gear_btn" tool_tip="Actions sur la personne ou l&apos;objet sélectionné"/>
+		<menu_button name="view_btn" tool_tip="Options de tri"/>
+		<menu_button name="plus_btn" tool_tip="Choisir un résident ou un objet à ignorer"/>
+		<button name="unblock_btn" tool_tip="Enlever le résident ou l’objet de la liste des ignorés"/>
+	</panel>
+	<block_list name="blocked" tool_tip="Liste des résidents actuellement ignorés"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_conversation_list_item.xml b/indra/newview/skins/default/xui/fr/panel_conversation_list_item.xml
new file mode 100644
index 00000000000..ebf18f64832
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/panel_conversation_list_item.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="conversation_list_item">
+	<layout_stack name="conversation_item_stack">
+		<layout_panel name="conversation_title_panel">
+			<text name="conversation_title" value="(chargement)"/>
+		</layout_panel>
+	</layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_conversation_log_list_item.xml b/indra/newview/skins/default/xui/fr/panel_conversation_log_list_item.xml
new file mode 100644
index 00000000000..9c277842b5a
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/panel_conversation_log_list_item.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="conversation_log_list_item">
+	<icon name="voice_session_icon" tool_tip="Incluait une conversation vocale"/>
+	<icon name="unread_ims_icon" tool_tip="Des messages sont arrivés pendant que vous étiez déconnecté."/>
+	<button name="delete_btn" tool_tip="Supprimer cette entrée"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_group_list_item.xml b/indra/newview/skins/default/xui/fr/panel_group_list_item.xml
index 5fb69d19893..b1b32af7c68 100644
--- a/indra/newview/skins/default/xui/fr/panel_group_list_item.xml
+++ b/indra/newview/skins/default/xui/fr/panel_group_list_item.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="group_list_item">
 	<text name="group_name" value="Inconnu"/>
+	<button name="info_btn" tool_tip="En savoir plus"/>
 	<button name="profile_btn" tool_tip="Voir le profil"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_people.xml b/indra/newview/skins/default/xui/fr/panel_people.xml
index f035853efcd..227ce26df72 100644
--- a/indra/newview/skins/default/xui/fr/panel_people.xml
+++ b/indra/newview/skins/default/xui/fr/panel_people.xml
@@ -14,81 +14,53 @@ Pour rechercher des résidents avec qui passer du temps, utilisez [secondlife://
 	<string name="no_filtered_friends_msg">
 		Vous n&apos;avez pas trouvé ce que vous cherchiez ? Essayez [secondlife:///app/search/people/[SEARCH_TERM] Rechercher].
 	</string>
-	<string name="people_filter_label" value="Filtrer les personnes"/>
-	<string name="groups_filter_label" value="Filtrer les groupes"/>
 	<string name="no_filtered_groups_msg" value="Vous n&apos;avez pas trouvé ce que vous cherchiez ? Essayez [secondlife:///app/search/groups/[SEARCH_TERM] Rechercher]."/>
 	<string name="no_groups_msg" value="Vous souhaitez trouver des groupes à rejoindre ? Utilisez [secondlife:///app/search/groups Rechercher]."/>
 	<string name="MiniMapToolTipMsg" value="[REGION](Carte : double-clic ; Panoramique : Maj + faire glisser)"/>
 	<string name="AltMiniMapToolTipMsg" value="[REGION](Téléportation : double-clic ; Panoramique : Maj + faire glisser)"/>
-	<filter_editor label="Filtre" name="filter_input"/>
 	<tab_container name="tabs">
 		<panel label="PRÈS DE VOUS" name="nearby_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<menu_button name="nearby_view_sort_btn" tool_tip="Options"/>
-				<button name="add_friend_btn" tool_tip="Ajouter le résident sélectionné à votre liste d&apos;amis"/>
+			<panel label="bottom_panel" name="nearby_buttons_panel">
+				<filter_editor label="Filtrer les personnes" name="nearby_filter_input"/>
+				<button name="gear_btn" tool_tip="Actions sur la personne sélectionnée"/>
+				<menu_button name="nearby_view_btn" tool_tip="Options d&apos;affichage/de tri"/>
+				<button name="add_friend_btn" tool_tip="Proposer à ce résident de devenir votre ami"/>
+				<dnd_button name="nearby_del_btn" tool_tip="Supprimer la personne sélectionnée des amis"/>
 			</panel>
 		</panel>
-		<panel label="MES AMIS" name="friends_panel">
+		<panel label="AMIS" name="friends_panel">
+			<panel label="bottom_panel" name="friends_buttons_panel">
+				<filter_editor label="Filtrer les personnes" name="friends_filter_input"/>
+				<button name="gear_btn" tool_tip="Actions sur la personne sélectionnée"/>
+				<menu_button name="friends_view_btn" tool_tip="Options d&apos;affichage/de tri"/>
+				<button name="friends_add_btn" tool_tip="Proposer à ce résident de devenir votre ami"/>
+				<dnd_button name="friends_del_btn" tool_tip="Supprimer la personne sélectionnée des amis"/>
+			</panel>
 			<accordion name="friends_accordion">
 				<accordion_tab name="tab_online" title="En ligne"/>
 				<accordion_tab name="tab_all" title="Tout"/>
 			</accordion>
-			<panel label="bottom_panel" name="bottom_panel">
-				<layout_stack name="bottom_panel">
-					<layout_panel name="options_gear_btn_panel">
-						<menu_button name="friends_viewsort_btn" tool_tip="Afficher d&apos;autres options"/>
-					</layout_panel>
-					<layout_panel name="add_btn_panel">
-						<button name="add_btn" tool_tip="Proposer à un résident de devenir votre ami"/>
-					</layout_panel>
-					<layout_panel name="trash_btn_panel">
-						<dnd_button name="del_btn" tool_tip="Supprimer le résident sélectionné de votre liste d&apos;amis."/>
-					</layout_panel>
-				</layout_stack>
-			</panel>
 		</panel>
-		<panel label="MES GROUPES" name="groups_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<menu_button name="groups_viewsort_btn" tool_tip="Options"/>
-				<button name="plus_btn" tool_tip="Rejoindre/créer un nouveau groupe"/>
-				<button name="activate_btn" tool_tip="Activer le groupe sélectionné"/>
+		<panel label="GROUPES" name="groups_panel">
+			<panel label="bottom_panel" name="groups_buttons_panel">
+				<filter_editor label="Filtrer les groupes" name="groups_filter_input"/>
+				<menu_button name="groups_gear_btn" tool_tip="Actions sur le groupe sélectionné"/>
+				<menu_button name="groups_view_btn" tool_tip="Options d&apos;affichage/de tri"/>
+				<menu_button name="plus_btn" tool_tip="Rejoindre/créer un nouveau groupe"/>
+				<dnd_button name="minus_btn" tool_tip="Quitter le groupe sélectionné"/>
 			</panel>
 		</panel>
 		<panel label="RÉCENT" name="recent_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<menu_button name="recent_viewsort_btn" tool_tip="Options"/>
-				<button name="add_friend_btn" tool_tip="Ajouter le résident sélectionné à votre liste d&apos;amis"/>
+			<panel label="bottom_panel" name="recent_buttons_panel">
+				<filter_editor label="Filtrer les personnes" name="recent_filter_input"/>
+				<button name="gear_btn" tool_tip="Actions sur la personne sélectionnée"/>
+				<menu_button name="recent_view_btn" tool_tip="Options d&apos;affichage/de tri"/>
+				<button name="add_friend_btn" tool_tip="Proposer à ce résident de devenir votre ami"/>
+				<dnd_button name="recent_del_btn" tool_tip="Supprimer la personne sélectionnée des amis"/>
 			</panel>
 		</panel>
+		<panel label="BLOQUÉ" name="blocked_panel">
+			<panel label="Résidents et objets ignorés" name="panel_block_list_sidetray"/>
+		</panel>
 	</tab_container>
-	<panel name="button_bar">
-		<layout_stack name="bottom_bar_ls">
-			<layout_panel name="view_profile_btn_lp">
-				<button label="Profil" name="view_profile_btn" tool_tip="Afficher la photo, les groupes et autres infos des résidents"/>
-			</layout_panel>
-			<layout_panel name="im_btn_lp">
-				<button label="IM" name="im_btn" tool_tip="Ouvrir une session IM."/>
-			</layout_panel>
-			<layout_panel name="call_btn_lp">
-				<button label="Appel" name="call_btn" tool_tip="Appeler ce résident."/>
-			</layout_panel>
-			<layout_panel name="share_btn_lp">
-				<button label="Partager" name="share_btn" tool_tip="Partager un article de l&apos;inventaire."/>
-			</layout_panel>
-			<layout_panel name="teleport_btn_lp">
-				<button label="Téléporter" name="teleport_btn" tool_tip="Proposer une téléportation."/>
-			</layout_panel>
-		</layout_stack>
-		<layout_stack name="bottom_bar_ls1">
-			<layout_panel name="group_info_btn_lp">
-				<button label="Profil du groupe" name="group_info_btn" tool_tip="Afficher les informations sur le groupe"/>
-			</layout_panel>
-			<layout_panel name="chat_btn_lp">
-				<button label="Chat de groupe" name="chat_btn" tool_tip="Ouvrir une session de chat"/>
-			</layout_panel>
-			<layout_panel name="group_call_btn_lp">
-				<button label="Appel de groupe" name="group_call_btn" tool_tip="Appeler ce groupe"/>
-			</layout_panel>
-		</layout_stack>
-	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml b/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml
index 550beb653ed..972190dc159 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml
@@ -1,34 +1,86 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Chat écrit" name="chat">
-	<text name="font_size">
-		Taille de la police :
-	</text>
-	<radio_group name="chat_font_size">
-		<radio_item label="Petite" name="radio" value="0"/>
-		<radio_item label="Moyenne" name="radio2" value="1"/>
-		<radio_item label="Grande" name="radio3" value="2"/>
-	</radio_group>
-	<check_box initial_value="true" label="Exécuter l&apos;animation clavier quand vous écrivez" name="play_typing_animation"/>
-	<check_box label="M&apos;envoyer les IM par e-mail une fois déconnecté" name="send_im_to_email"/>
-	<check_box label="Activer l&apos;historique des chats et des IM en texte brut" name="plain_text_chat_history"/>
-	<check_box label="Bulles de chat" name="bubble_text_chat"/>
-	<text name="show_ims_in_label">
-		Afficher les IM dans :
-	</text>
-	<text name="requires_restart_label">
-		(redémarrage requis)
-	</text>
-	<radio_group name="chat_window" tool_tip="Afficher vos messages instantanés dans plusieurs fenêtres ou dans une seule fenêtre avec plusieurs onglets (redémarrage requis)">
-		<radio_item label="Plusieurs fenêtres" name="radio" value="0"/>
-		<radio_item label="Onglets" name="radio2" value="1"/>
-	</radio_group>
-	<text name="disable_toast_label">
-		Activer les popups de chat entrant :
-	</text>
-	<check_box label="Chats de groupe" name="EnableGroupChatPopups" tool_tip="Cocher cette case pour qu&apos;un popup s&apos;affiche à réception d&apos;un message de chat de groupe."/>
-	<check_box label="Chats IM" name="EnableIMChatPopups" tool_tip="Cocher cette case pour qu&apos;un popup s&apos;affiche à réception d&apos;un message instantané."/>
-	<spinner label="Durée de vie du popup Chat près de moi :" name="nearby_toasts_lifetime"/>
-	<spinner label="Disparition progressive du popup Chat près de moi :" name="nearby_toasts_fadingtime"/>
+	<panel>
+		<check_box initial_value="true" label="Exécuter l&apos;animation clavier quand vous écrivez" name="play_typing_animation"/>
+		<check_box label="M&apos;envoyer les IM par e-mail une fois déconnecté" name="send_im_to_email"/>
+		<check_box label="Seuls mes amis et groupes peuvent m&apos;appeler ou m&apos;envoyer un IM" name="voice_call_friends_only_check"/>
+		<text name="font_size">
+			Taille de la police :
+		</text>
+		<combo_box name="chat_font_size">
+			<item label="Petite" name="Small" value="0"/>
+			<item label="Moyenne" name="Medium" value="1"/>
+			<item label="Grande" name="Large" value="2"/>
+		</combo_box>
+		<check_box label="Bulles de chat" name="bubble_text_chat"/>
+	</panel>
+	<panel>
+		<text name="notifications">
+			Notifications
+		</text>
+		<text name="friend_ims">
+			IM amis :
+		</text>
+		<combo_box name="FriendIMOptions">
+			<item label="Ouvrir la fenêtre Conversation" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Afficher le message dans une fenêtre popup" name="PopUpMessage" value="toast"/>
+			<item label="Bouton de la barre d&apos;outils Flash" name="FlashToolbarButton" value="clignote"/>
+			<item label="Aucun(e)" name="None" value="aucun(e)"/>
+		</combo_box>
+		<text name="non_friend_ims">
+			IM non amis :
+		</text>
+		<combo_box name="NonFriendIMOptions">
+			<item label="Ouvrir la fenêtre Conversation" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Afficher le message dans une fenêtre popup" name="PopUpMessage" value="toast"/>
+			<item label="Bouton de la barre d&apos;outils Flash" name="FlashToolbarButton" value="clignote"/>
+			<item label="Aucun(e)" name="None" value="aucun(e)"/>
+		</combo_box>
+		<text name="conference_ims">
+			IM conférence :
+		</text>
+		<combo_box name="ConferenceIMOptions">
+			<item label="Ouvrir la fenêtre Conversation" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Afficher le message dans une fenêtre popup" name="PopUpMessage" value="toast"/>
+			<item label="Bouton de la barre d&apos;outils Flash" name="FlashToolbarButton" value="clignote"/>
+			<item label="Aucun(e)" name="None" value="aucun(e)"/>
+		</combo_box>
+		<text name="group_chat">
+			Chat de groupe :
+		</text>
+		<combo_box name="GroupChatOptions">
+			<item label="Ouvrir la fenêtre Conversation" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Afficher le message dans une fenêtre popup" name="PopUpMessage" value="toast"/>
+			<item label="Bouton de la barre d&apos;outils Flash" name="FlashToolbarButton" value="clignote"/>
+			<item label="Aucun(e)" name="None" value="aucun(e)"/>
+		</combo_box>
+		<text name="nearby_chat">
+			Chat près de moi :
+		</text>
+		<combo_box name="NearbyChatOptions">
+			<item label="Ouvrir la fenêtre Conversation" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Afficher le message dans une fenêtre popup" name="PopUpMessage" value="toast"/>
+			<item label="Bouton de la barre d&apos;outils Flash" name="FlashToolBarButton" value="clignote"/>
+			<item label="Aucun(e)" name="None" value="aucun(e)"/>
+		</combo_box>
+		<text name="notifications_alert">
+			Pour suspendre temporairement toutes les notifications, utilisez Communication &gt; Ne pas déranger.
+		</text>
+	</panel>
+	<panel>
+		<text name="play_sound">
+			Écouter le son :
+		</text>
+		<check_box label="Nouvelle conversation" name="new_conversation"/>
+		<check_box label="Appel entrant" name="incoming_voice_call"/>
+		<check_box label="Offre de téléportation" name="teleport_offer"/>
+		<check_box label="Offre d&apos;inventaire" name="inventory_offer"/>
+	</panel>
+	<panel>
+		<button label="Effacer le journal..." name="clear_log"/>
+		<button label="Supprimer les transcriptions..." name="delete_transcripts"/>
+		<button label="Parcourir..." label_selected="Parcourir" name="log_path_button"/>
+	</panel>
 	<button label="Traduction..." name="ok_btn"/>
 	<button label="Rechercher/Remplacer..." name="autoreplace_showgui"/>
 	<button label="Orthographe..." name="spellcheck_showgui"/>
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_general.xml b/indra/newview/skins/default/xui/fr/panel_preferences_general.xml
index 66b84af3aa5..533c392d6b9 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_general.xml
@@ -69,9 +69,9 @@
 		<combo_box.item label="Jamais" name="item4"/>
 	</combo_box>
 	<text name="text_box3">
-		Réponse si occupé(e) :
+		Réponse Ne pas déranger
 	</text>
-	<text_editor name="busy_response">
+	<text_editor name="do_not_disturb_response">
 		log_in_to_change
 	</text_editor>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/sidepanel_task_info.xml b/indra/newview/skins/default/xui/fr/sidepanel_task_info.xml
index 60027d41cb6..896dd932e38 100644
--- a/indra/newview/skins/default/xui/fr/sidepanel_task_info.xml
+++ b/indra/newview/skins/default/xui/fr/sidepanel_task_info.xml
@@ -72,6 +72,7 @@
 			<combo_box.item label="Acheter l&apos;objet" name="Buyobject"/>
 			<combo_box.item label="Payer l&apos;objet" name="Payobject"/>
 			<combo_box.item label="Ouvrir" name="Open"/>
+			<combo_box.item label="Zoom" name="Zoom"/>
 		</combo_box>
 		<panel name="perms_inv">
 			<text name="perm_modify">
diff --git a/indra/newview/skins/default/xui/fr/strings.xml b/indra/newview/skins/default/xui/fr/strings.xml
index 6a2a3f559a5..69ed20f3764 100644
--- a/indra/newview/skins/default/xui/fr/strings.xml
+++ b/indra/newview/skins/default/xui/fr/strings.xml
@@ -137,7 +137,7 @@
 		Quitter
 	</string>
 	<string name="create_account_url">
-		http://join.secondlife.com/index.php?lang=fr-FR&amp;sourceid=[sourceid]
+		http://join.secondlife.com/?sourceid=[sourceid]
 	</string>
 	<string name="LoginFailedViewerNotPermitted">
 		Le client que vous utilisez ne permet plus d&apos;accéder à Second Life. Téléchargez un nouveau client à la page suivante :
@@ -622,8 +622,8 @@ Veuillez réessayer de vous connecter dans une minute.
 	<string name="AvatarAway">
 		Absent
 	</string>
-	<string name="AvatarBusy">
-		Occupé
+	<string name="AvatarDoNotDisturb">
+		Ne pas déranger
 	</string>
 	<string name="AvatarMuted">
 		Bloqué(e)
@@ -859,6 +859,12 @@ Veuillez réessayer de vous connecter dans une minute.
 	<string name="ST_NO_JOINT">
 		Impossible de trouver ROOT ou JOINT.
 	</string>
+	<string name="NearbyChatTitle">
+		Chat près de moi
+	</string>
+	<string name="NearbyChatLabel">
+		(Chat près de moi)
+	</string>
 	<string name="whisper">
 		chuchote :
 	</string>
@@ -922,12 +928,15 @@ Veuillez réessayer de vous connecter dans une minute.
 	<string name="ControlYourCamera">
 		Contrôler votre caméra
 	</string>
-	<string name="TeleportYourAgent">
-		Vous téléporter
-	</string>
 	<string name="NotConnected">
 		Pas connecté(e)
 	</string>
+	<string name="AgentNameSubst">
+		(Vous)
+	</string>
+	<string name="TeleportYourAgent">
+		Vous téléporter
+	</string>
 	<string name="SIM_ACCESS_PG">
 		Général
 	</string>
@@ -1009,18 +1018,6 @@ Veuillez réessayer de vous connecter dans une minute.
 	<string name="dictionary_files">
 		Dictionnaires
 	</string>
-	<string name="AvatarSetNotAway">
-		Présent
-	</string>
-	<string name="AvatarSetAway">
-		Absent
-	</string>
-	<string name="AvatarSetNotBusy">
-		Pas occupé
-	</string>
-	<string name="AvatarSetBusy">
-		Occupé
-	</string>
 	<string name="shape">
 		Silhouette
 	</string>
@@ -1989,8 +1986,8 @@ Veuillez réessayer de vous connecter dans une minute.
 	<string name="PanelContentsNewScript">
 		Nouveau script
 	</string>
-	<string name="BusyModeResponseDefault">
-		Le résident auquel vous avez envoyé un message est en mode Occupé, ce qui signifie qu&apos;il a demandé à ne pas être dérangé.  Votre message restera affiché dans son panneau IM afin qu&apos;il puisse le lire ultérieurement.
+	<string name="DoNotDisturbModeResponseDefault">
+		Ce résident a activé Ne pas déranger et verra votre message plus tard.
 	</string>
 	<string name="MuteByName">
 		(par nom)
@@ -2103,9 +2100,6 @@ Veuillez réessayer de vous connecter dans une minute.
 	<string name="GroupMoneyDate">
 		[weekday,datetime,utc] [day,datetime,utc] [mth,datetime,utc] [year,datetime,utc]
 	</string>
-	<string name="ViewerObjectContents">
-		Contenus
-	</string>
 	<string name="AcquiredItems">
 		Objets acquis
 	</string>
@@ -3877,7 +3871,7 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
 		Région de type Général
 	</string>
 	<string name="LocationCtrlSeeAVsTooltip">
-		Avatars visibles et chat autorisé en dehors de cette parcelle
+		Les avatars à l&apos;extérieur de cette parcelle ne peuvent pas voir ni entendre les avatars qui se trouvent à l&apos;intérieur.
 	</string>
 	<string name="LocationCtrlPathfindingDirtyTooltip">
 		Les objets mobiles risquent de ne pas se comporter correctement dans cette région tant qu&apos;elle n&apos;est pas refigée.
@@ -3954,6 +3948,12 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
 	<string name="IM_unblock_only_groups_friends">
 		Pour afficher ce message, vous devez désactiver la case Seuls mes amis et groupes peuvent m&apos;appeler ou m&apos;envoyer un IM, sous Préférences/Confidentialité.
 	</string>
+	<string name="OnlineStatus">
+		En ligne
+	</string>
+	<string name="OfflineStatus">
+		Hors ligne
+	</string>
 	<string name="answered_call">
 		Votre appel a fait l&apos;objet d&apos;une réponse
 	</string>
@@ -3963,6 +3963,9 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
 	<string name="you_joined_call">
 		Vous avez rejoint l&apos;appel
 	</string>
+	<string name="you_auto_rejected_call-im">
+		Vous avez automatiquement refusé l&apos;appel vocal quand le mode Ne pas déranger était activé.
+	</string>
 	<string name="name_started_call">
 		[NAME] appelle.
 	</string>
@@ -3979,7 +3982,7 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
 		Connexion en cours...
 	</string>
 	<string name="conference-title">
-		Conférence ad-hoc
+		Chat à plusieurs
 	</string>
 	<string name="conference-title-incoming">
 		Conférence avec [AGENT_NAME]
@@ -4859,6 +4862,9 @@ Essayez avec le chemin d&apos;accès à l&apos;éditeur entre guillemets doubles
 	<string name="Command_Chat_Label">
 		Chat
 	</string>
+	<string name="Command_Conversations_Label">
+		Conversations
+	</string>
 	<string name="Command_Compass_Label">
 		Boussole
 	</string>
@@ -4934,6 +4940,9 @@ Essayez avec le chemin d&apos;accès à l&apos;éditeur entre guillemets doubles
 	<string name="Command_Chat_Tooltip">
 		Parler aux personnes près de vous par chat écrit
 	</string>
+	<string name="Command_Conversations_Tooltip">
+		Parler à quelqu&apos;un
+	</string>
 	<string name="Command_Compass_Tooltip">
 		Boussole
 	</string>
@@ -5063,4 +5072,13 @@ Essayez avec le chemin d&apos;accès à l&apos;éditeur entre guillemets doubles
 	<string name="UserDictionary">
 		[User]
 	</string>
+	<string name="logging_calls_disabled_log_empty">
+		Les conversations ne sont pas archivées. Pour commencer à tenir un journal, choisissez Enregistrer : Journal seul ou Enregistrer : Journal et transcriptions sous Préférences &gt; Chat.
+	</string>
+	<string name="logging_calls_disabled_log_not_empty">
+		Aucune conversation ne sera plus enregistrée. Pour recommencer à tenir un journal, choisissez Enregistrer : Journal seul ou Enregistrer : Journal et transcriptions sous Préférences &gt; Chat.
+	</string>
+	<string name="logging_calls_enabled_log_empty">
+		Il n&apos;y a aucune conversation enregistrée. Quand quelqu&apos;un vous contacte ou quand vous contactez quelqu&apos;un, une entrée de journal s&apos;affiche ici.
+	</string>
 </strings>
diff --git a/indra/newview/skins/default/xui/it/floater_conversation_log.xml b/indra/newview/skins/default/xui/it/floater_conversation_log.xml
new file mode 100644
index 00000000000..8354824ed14
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/floater_conversation_log.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_conversation_log" title="REGISTRO CONVERSAZIONI">
+	<panel name="buttons_panel">
+		<filter_editor label="Filtro persone" name="people_filter_input"/>
+		<menu_button name="conversation_view_btn" tool_tip="Opzioni Mostra/Ordina"/>
+		<menu_button name="conversations_gear_btn" tool_tip="Azioni sulla persona o gruppo selezionato"/>
+	</panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/it/floater_conversation_preview.xml b/indra/newview/skins/default/xui/it/floater_conversation_preview.xml
new file mode 100644
index 00000000000..d0e9c8ee0e3
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/floater_conversation_preview.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="preview_conversation" title="CONVERSAZIONE:">
+	<floater.string name="Title">
+		CONVERSAZIONE: [NAME]
+	</floater.string>
+	<text name="page_label" value="Pagina"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/it/floater_im_container.xml b/indra/newview/skins/default/xui/it/floater_im_container.xml
index fb8e77b32fe..10cf1b7f7ed 100644
--- a/indra/newview/skins/default/xui/it/floater_im_container.xml
+++ b/indra/newview/skins/default/xui/it/floater_im_container.xml
@@ -1,2 +1,29 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<multi_floater name="floater_im_box" title="CONVERSAZIONI"/>
+<multi_floater name="floater_im_box" title="CONVERSAZIONI">
+	<string name="collapse_icon" value="Conv_toolbar_collapse"/>
+	<string name="expand_icon" value="Conv_toolbar_expand"/>
+	<layout_stack name="conversations_stack">
+		<layout_panel name="conversations_layout_panel">
+			<layout_stack name="conversations_pane_buttons_stack">
+				<layout_panel name="conversations_pane_buttons_expanded">
+					<menu_button name="sort_btn" tool_tip="Opzioni Mostra/Ordina"/>
+					<button name="add_btn" tool_tip="Avvia una nuova conversazione"/>
+					<button name="speak_btn" tool_tip="Parla con le persone usando il microfono"/>
+				</layout_panel>
+				<layout_panel name="conversations_pane_buttons_collapsed">
+					<button name="expand_collapse_btn" tool_tip="Minimizza/espandi questo elenco"/>
+				</layout_panel>
+			</layout_stack>
+		</layout_panel>
+		<layout_panel name="messages_layout_panel">
+			<panel_container name="im_box_tab_container">
+				<panel name="stub_panel">
+					<button name="stub_collapse_btn" tool_tip="Minimizza questo pannello"/>
+					<text name="stub_textbox">
+						Questa conversazione in una finestra separata.   [secondlife:/// Ripristina conversazione.]
+					</text>
+				</panel>
+			</panel_container>
+		</layout_panel>
+	</layout_stack>
+</multi_floater>
diff --git a/indra/newview/skins/default/xui/it/floater_im_session.xml b/indra/newview/skins/default/xui/it/floater_im_session.xml
index 3d9d17fc81a..d38ec7a5fe5 100644
--- a/indra/newview/skins/default/xui/it/floater_im_session.xml
+++ b/indra/newview/skins/default/xui/it/floater_im_session.xml
@@ -1,8 +1,59 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="panel_im">
-	<layout_stack name="im_panels">
-		<layout_panel>
-			<line_editor label="A" name="chat_editor"/>
-		</layout_panel>
-	</layout_stack>
+	<floater.string name="call_btn_start">
+		Conv_toolbar_open_call
+	</floater.string>
+	<floater.string name="call_btn_stop">
+		Conv_toolbar_hang_up
+	</floater.string>
+	<floater.string name="collapseline_icon" value="Conv_collapse_to_one_line"/>
+	<floater.string name="expandline_icon" value="Conv_expand_one_line"/>
+	<floater.string name="collapse_icon" value="Conv_toolbar_collapse"/>
+	<floater.string name="expand_icon" value="Conv_toolbar_expand"/>
+	<floater.string name="tear_off_icon" value="Conv_toolbar_arrow_ne"/>
+	<floater.string name="return_icon" value="Conv_toolbar_arrow_sw"/>
+	<floater.string name="participant_added" value="[NAME] è stato invitato alla conversazione."/>
+	<floater.string name="multiple_participants_added" value="[NAME] sono stati invitati alla conversazione."/>
+	<floater.string name="tooltip_to_separate_window" value="Sposta questa conversazione in una finestra separata."/>
+	<floater.string name="tooltip_to_main_window" value="Sposta questa conversazione di nuovo nella finestra principale"/>
+	<floater.string name="start_call_button_tooltip" value="Apri collegamento voce"/>
+	<floater.string name="end_call_button_tooltip" value="Chiudi collegamento voce"/>
+	<floater.string name="expcol_button_not_tearoff_tooltip" value="Minimizza questo pannello"/>
+	<floater.string name="expcol_button_tearoff_and_expanded_tooltip" value="Minimizza elenco partecipanti"/>
+	<floater.string name="expcol_button_tearoff_and_collapsed_tooltip" value="Espandi l&apos;elenco dei partecipanti"/>
+	<view name="contents_view">
+		<layout_stack name="main_stack">
+			<layout_panel name="toolbar_panel">
+				<menu_button name="view_options_btn" tool_tip="Opzioni Mostra/Ordina"/>
+				<menu_button name="gear_btn" tool_tip="Azioni per la persona selezionata:"/>
+				<button name="add_btn" tool_tip="Aggiungi qualcuno a questa conversazione"/>
+				<button name="voice_call_btn" tool_tip="Apri collegamento voce"/>
+				<button name="close_btn" tool_tip="Termina questa conversazione"/>
+				<button name="expand_collapse_btn" tool_tip="Minimizza/espandi questo pannello"/>
+			</layout_panel>
+			<layout_panel name="body_panel">
+				<layout_stack name="im_panels">
+					<layout_panel name="right_part_holder">
+						<panel name="trnsAndChat_panel">
+							<layout_stack name="translate_and_chat_stack">
+								<layout_panel name="translate_chat_checkbox_lp">
+									<check_box label="Traduci chat" name="translate_chat_checkbox"/>
+								</layout_panel>
+							</layout_stack>
+						</panel>
+					</layout_panel>
+				</layout_stack>
+			</layout_panel>
+			<layout_panel name="chat_layout_panel">
+				<layout_stack name="input_panels">
+					<layout_panel name="input_editor_layout_panel">
+						<chat_editor label="A" name="chat_editor"/>
+					</layout_panel>
+					<layout_panel name="input_button_layout_panel">
+						<button name="minz_btn" tool_tip="Mostra/nascondi pannello messaggi"/>
+					</layout_panel>
+				</layout_stack>
+			</layout_panel>
+		</layout_stack>
+	</view>
 </floater>
diff --git a/indra/newview/skins/default/xui/it/floater_incoming_call.xml b/indra/newview/skins/default/xui/it/floater_incoming_call.xml
index a95ed44662c..566920209d0 100644
--- a/indra/newview/skins/default/xui/it/floater_incoming_call.xml
+++ b/indra/newview/skins/default/xui/it/floater_incoming_call.xml
@@ -10,7 +10,7 @@
 		anonimo
 	</floater.string>
 	<floater.string name="VoiceInviteP2P">
-		sta chiamando.
+		ti sta chiamando.
 	</floater.string>
 	<floater.string name="VoiceInviteAdHoc">
 		ha aderito ad una chiamata in chat vocale in conferenza.
@@ -25,9 +25,9 @@
 		Vuoi abbandonare [CURRENT_CHAT] e aderire a questa voice chat?
 	</floater.string>
 	<text name="question">
-		Vuoi abbandonare [CURRENT_CHAT] e aderire a questa voice chat?
+		Se rispondi, verrà interrotto il collegamento dalla conversazione a voce corrente.
 	</text>
-	<button label="Accetta" label_selected="Accetta" name="Accept"/>
-	<button label="Rifiuta" label_selected="Rifiuta" name="Reject"/>
-	<button label="Inizia IM" name="Start IM"/>
+	<button label="Risposta" label_selected="Risposta" name="Accept"/>
+	<button label="Ignora" label_selected="Ignora" name="Reject"/>
+	<button label="Apri invece IM" name="Start IM"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/it/floater_pathfinding_console.xml b/indra/newview/skins/default/xui/it/floater_pathfinding_console.xml
index 77be220a2ac..77774441612 100644
--- a/indra/newview/skins/default/xui/it/floater_pathfinding_console.xml
+++ b/indra/newview/skins/default/xui/it/floater_pathfinding_console.xml
@@ -71,7 +71,7 @@
 			<text name="show_label">
 				Mostra:
 			</text>
-			<check_box label="Mondo" name="show_world"/>
+			<check_box label="Test" name="show_world"/>
 			<check_box label="Solo elementi spostabili" name="show_world_movables_only"/>
 			<check_box label="Navmesh" name="show_navmesh"/>
 			<text name="show_walkability_label">
diff --git a/indra/newview/skins/default/xui/it/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/it/floater_texture_ctrl.xml
index c97a91bb3fb..27a17868a76 100644
--- a/indra/newview/skins/default/xui/it/floater_texture_ctrl.xml
+++ b/indra/newview/skins/default/xui/it/floater_texture_ctrl.xml
@@ -19,7 +19,7 @@
 	<button label="Default" label_selected="Default" name="Default"/>
 	<button label="Vuoto" label_selected="Vuoto" name="Blank"/>
 	<button label="Niente" label_selected="Niente" name="None"/>
-	<check_box initial_value="true" label="Anteprima dal vivo" name="apply_immediate_check"/>
+	<check_box initial_value="true" label="Applica adesso" name="apply_immediate_check"/>
 	<text name="preview_disabled" value="Anteprima disattivata"/>
 	<filter_editor label="Filtro texture" name="inventory search editor"/>
 	<check_box initial_value="false" label="Mostra cartelle" name="show_folders_check"/>
diff --git a/indra/newview/skins/default/xui/it/floater_voice_chat_volume.xml b/indra/newview/skins/default/xui/it/floater_voice_chat_volume.xml
new file mode 100644
index 00000000000..b168d067c27
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/floater_voice_chat_volume.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_voice_volume" title="VOLUME CHAT VOCALE">
+	<slider label="Chat vocale" name="chat_voice_volume"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/it/floater_voice_effect.xml b/indra/newview/skins/default/xui/it/floater_voice_effect.xml
index c83b11f698a..f102622f5d1 100644
--- a/indra/newview/skins/default/xui/it/floater_voice_effect.xml
+++ b/indra/newview/skins/default/xui/it/floater_voice_effect.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater label="Luoghi" name="voice_effects" title="MANIPOLAZIONE VOCE">
+<floater label="Luoghi" name="voice_effects" title="ANTEPRIMA MANIPOLAZIONE VOCE">
 	<string name="no_voice_effect">
 		(Nessuna manipolazione voce)
 	</string>
diff --git a/indra/newview/skins/default/xui/it/floater_voice_volume.xml b/indra/newview/skins/default/xui/it/floater_voice_volume.xml
new file mode 100644
index 00000000000..eaeda7597f3
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/floater_voice_volume.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!--
+  Not can_close / no title to avoid window chrome
+  Single instance - only have one at a time, recycle it each spawn
+-->
+<floater name="floater_voice_volume" title="VOLUME VOCE">
+	<slider name="volume_slider" tool_tip="Volume voce" value="0.5"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/it/menu_cof_gear.xml b/indra/newview/skins/default/xui/it/menu_cof_gear.xml
index 10524ba92d0..984e4a16112 100644
--- a/indra/newview/skins/default/xui/it/menu_cof_gear.xml
+++ b/indra/newview/skins/default/xui/it/menu_cof_gear.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear COF">
+<toggleable_menu name="Gear COF">
 	<menu label="Nuovi abiti" name="COF.Gear.New_Clothes"/>
-	<menu label="Nuove parti del corpo" name="COF.Geear.New_Body_Parts"/>
-</menu>
+	<menu label="Nuove parti del corpo" name="COF.Gear.New_Body_Parts"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_conversation.xml b/indra/newview/skins/default/xui/it/menu_conversation.xml
new file mode 100644
index 00000000000..46ced93f1df
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_conversation.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_conversation_participant">
+	<menu_item_call label="Chiudi la conversazione" name="close_conversation"/>
+	<menu_item_call label="Apri conversazione a voce" name="open_voice_conversation"/>
+	<menu_item_call label="Interrompi collegamento a voce" name="disconnect_from_voice"/>
+	<menu_item_call label="Vedi profilo" name="view_profile"/>
+	<menu_item_call label="IM" name="im"/>
+	<menu_item_call label="Offri teleport" name="offer_teleport"/>
+	<menu_item_call label="Chiamata a voce" name="voice_call"/>
+	<menu_item_call label="Cronologia chat..." name="chat_history"/>
+	<menu_item_call label="Aggiungi amico" name="add_friend"/>
+	<menu_item_call label="Rimuovi amico" name="remove_friend"/>
+	<menu_item_call label="Rimuovi amici" name="remove_friends"/>
+	<menu_item_call label="Invita al gruppo..." name="invite_to_group"/>
+	<menu_item_call label="Zoom avanti" name="zoom_in"/>
+	<menu_item_call label="Mappa" name="map"/>
+	<menu_item_call label="Condividi" name="share"/>
+	<menu_item_call label="Paga" name="pay"/>
+	<menu_item_check label="Blocca voce" name="block_unblock"/>
+	<menu_item_check label="Blocca testo" name="MuteText"/>
+	<menu_item_call label="Profilo del gruppo" name="group_profile"/>
+	<menu_item_call label="Attiva gruppo" name="activate_group"/>
+	<menu_item_call label="Lascia il gruppo" name="leave_group"/>
+	<context_menu label="Opzioni moderatore" name="Moderator Options">
+		<menu_item_check label="Consenti chat di testo" name="AllowTextChat"/>
+		<menu_item_call label="Disattiva audio di questo partecipante" name="ModerateVoiceMuteSelected"/>
+		<menu_item_call label="Riattiva audio di questo partecipante" name="ModerateVoiceUnMuteSelected"/>
+		<menu_item_call label="Disattiva audio di tutti" name="ModerateVoiceMute"/>
+		<menu_item_call label="Riattiva audio di tutti" name="ModerateVoiceUnmute"/>
+	</context_menu>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_conversation_log_gear.xml b/indra/newview/skins/default/xui/it/menu_conversation_log_gear.xml
new file mode 100644
index 00000000000..5686a902eb2
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_conversation_log_gear.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Conversation Context Menu">
+	<menu_item_call label="IM..." name="IM"/>
+	<menu_item_call label="Chiamata a voce..." name="Call"/>
+	<menu_item_call label="Apro la cronologia delle chat..." name="Chat history"/>
+	<menu_item_call label="Vedi profilo" name="View Profile"/>
+	<menu_item_call label="Offri Teleport" name="teleport"/>
+	<menu_item_call label="Aggiungi come amico" name="add_friend"/>
+	<menu_item_call label="Rimuovi amico" name="remove_friend"/>
+	<menu_item_call label="Invita al gruppo..." name="Invite"/>
+	<menu_item_call label="Mappa" name="Map"/>
+	<menu_item_call label="Condividi" name="Share"/>
+	<menu_item_call label="Paga" name="Pay"/>
+	<menu_item_check label="Blocca/Sblocca" name="Block/Unblock"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_conversation_log_view.xml b/indra/newview/skins/default/xui/it/menu_conversation_log_view.xml
new file mode 100644
index 00000000000..73b05831ef3
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_conversation_log_view.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_conversation_view">
+	<menu_item_check label="Ordina in base al nome" name="sort_by_name"/>
+	<menu_item_check label="Ordina in base alla data" name="sort_by_date"/>
+	<menu_item_check label="Ordina con gli amici in alto" name="sort_by_friends"/>
+	<menu_item_call label="Mostra la cronologia delle chat vicine..." name="view_nearby_chat_history"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_im_conversation.xml b/indra/newview/skins/default/xui/it/menu_im_conversation.xml
new file mode 100644
index 00000000000..1621d57e12b
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_im_conversation.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Conversation Gear Menu">
+	<menu_item_call label="Vedi profilo" name="View Profile"/>
+	<menu_item_call label="Aggiungi come amico" name="Add Friend"/>
+	<menu_item_call label="Rimuovi amico" name="remove_friend"/>
+	<menu_item_call label="Offri teleport" name="offer_teleport"/>
+	<menu_item_call label="Invita al gruppo..." name="invite_to_group"/>
+	<menu_item_call label="Cronologia chat..." name="chat_history"/>
+	<menu_item_call label="Zoom avanti" name="zoom_in"/>
+	<menu_item_call label="Mappa" name="map"/>
+	<menu_item_call label="Condividi" name="Share"/>
+	<menu_item_call label="Paga" name="Pay"/>
+	<menu_item_check label="Blocca voce" name="Block/Unblock"/>
+	<menu_item_check label="Blocca testo" name="MuteText"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_im_session_showmodes.xml b/indra/newview/skins/default/xui/it/menu_im_session_showmodes.xml
new file mode 100644
index 00000000000..350fbc5c6f6
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_im_session_showmodes.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_modes">
+	<menu_item_check label="Vista compatta" name="compact_view"/>
+	<menu_item_check label="Vista espansa" name="expanded_view"/>
+	<menu_item_check label="Mostra orario" name="IMShowTime"/>
+	<menu_item_check label="Mostra i nomi nelle conversazioni individuali" name="IMShowNamesForP2PConv"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_object_icon.xml b/indra/newview/skins/default/xui/it/menu_object_icon.xml
index 0f347b1a909..9623775af46 100644
--- a/indra/newview/skins/default/xui/it/menu_object_icon.xml
+++ b/indra/newview/skins/default/xui/it/menu_object_icon.xml
@@ -2,4 +2,6 @@
 <menu name="Object Icon Menu">
 	<menu_item_call label="Profilo oggetto..." name="Object Profile"/>
 	<menu_item_call label="Blocca..." name="Block"/>
+	<menu_item_call label="Mostra sulla mappa" name="show_on_map"/>
+	<menu_item_call label="Teleport sul luogo dell&apos;oggetto" name="teleport_to_object"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/it/menu_outfit_gear.xml b/indra/newview/skins/default/xui/it/menu_outfit_gear.xml
index 09fc867d7c4..3ac0c5ce698 100644
--- a/indra/newview/skins/default/xui/it/menu_outfit_gear.xml
+++ b/indra/newview/skins/default/xui/it/menu_outfit_gear.xml
@@ -23,6 +23,8 @@
 		<menu_item_call label="Nuovi capelli" name="New Hair"/>
 		<menu_item_call label="Nuovi occhi" name="New Eyes"/>
 	</menu>
+	<menu_item_call label="Apri tutte le cartelle" name="expand"/>
+	<menu_item_call label="Chiudi tutte le cartelle" name="collapse"/>
 	<menu_item_call label="Cambia nome del vestiario" name="rename"/>
 	<menu_item_call label="Elimina vestito" name="delete_outfit"/>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_participant_view.xml b/indra/newview/skins/default/xui/it/menu_participant_view.xml
new file mode 100644
index 00000000000..c87cda57bfd
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_participant_view.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="participant_manu_view">
+	<menu_item_check label="Ordina le conversazioni in base al tipo" name="sort_sessions_by_type"/>
+	<menu_item_check label="Ordina le conversazioni in base al nome" name="sort_sessions_by_name"/>
+	<menu_item_check label="Ordina le conversazioni in base alle attività più recenti" name="sort_sessions_by_recent"/>
+	<menu_item_check label="Ordina i partecipanti in base al nome" name="sort_participants_by_name"/>
+	<menu_item_check label="Ordina i partecipanti in base alle attività più recenti" name="sort_participants_by_recent"/>
+	<menu_item_call label="Preferenze chat..." name="chat_preferences"/>
+	<menu_item_call label="Preferenze privacy..." name="privacy_preferences"/>
+	<menu_item_check label="Registro conversazioni..." name="Conversation"/>
+	<menu_item_check label="Traduci chat vicina" name="Translate_chat"/>
+	<menu_item_check label="Impostazioni traduzione..." name="Translation_settings"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_people_blocked_gear.xml b/indra/newview/skins/default/xui/it/menu_people_blocked_gear.xml
new file mode 100644
index 00000000000..e9955923b25
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_people_blocked_gear.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_blocked_gear">
+	<menu_item_call label="Sblocca" name="unblock"/>
+	<menu_item_call label="Profilo..." name="profile"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_people_blocked_plus.xml b/indra/newview/skins/default/xui/it/menu_people_blocked_plus.xml
new file mode 100644
index 00000000000..cbcf084b86b
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_people_blocked_plus.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_blocked_plus">
+	<menu_item_call label="Blocca residente per nome..." name="block_resident_by_name"/>
+	<menu_item_call label="Blocca oggetto per nome" name="block_object_by_name"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_people_blocked_view.xml b/indra/newview/skins/default/xui/it/menu_people_blocked_view.xml
new file mode 100644
index 00000000000..fc80c73ae30
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_people_blocked_view.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_blocked_view">
+	<menu_item_check label="Ordina in base al nome" name="sort_by_name"/>
+	<menu_item_check label="Ordina in base al tipo" name="sort_by_type"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_people_friends_view.xml b/indra/newview/skins/default/xui/it/menu_people_friends_view.xml
new file mode 100644
index 00000000000..972e359cfe5
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_people_friends_view.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="Ordina in base al nome" name="sort_name"/>
+	<menu_item_check label="Ordina in base allo stato" name="sort_status"/>
+	<menu_item_check label="Mostra le icone delle persone" name="view_icons"/>
+	<menu_item_check label="Mostra le autorizzazioni concesse" name="view_permissions"/>
+	<menu_item_check label="Mostra il registro conversazioni..." name="view_conversation"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_people_groups.xml b/indra/newview/skins/default/xui/it/menu_people_groups.xml
index 30a97a1c724..8ca7537ee0f 100644
--- a/indra/newview/skins/default/xui/it/menu_people_groups.xml
+++ b/indra/newview/skins/default/xui/it/menu_people_groups.xml
@@ -2,7 +2,7 @@
 <menu name="menu_group_plus">
 	<menu_item_call label="Mostra informazioni" name="View Info"/>
 	<menu_item_call label="Chat" name="Chat"/>
-	<menu_item_call label="Chiama" name="Call"/>
+	<menu_item_call label="Chiamata a voce" name="Call"/>
 	<menu_item_call label="Attiva" name="Activate"/>
 	<menu_item_call label="Chiudi" name="Leave"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/it/menu_people_groups_view.xml b/indra/newview/skins/default/xui/it/menu_people_groups_view.xml
new file mode 100644
index 00000000000..56b9abbd3ae
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_people_groups_view.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="Mostra le icone di gruppo" name="Display Group Icons"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_people_nearby.xml b/indra/newview/skins/default/xui/it/menu_people_nearby.xml
index a974bd181df..1c09b1cfe25 100644
--- a/indra/newview/skins/default/xui/it/menu_people_nearby.xml
+++ b/indra/newview/skins/default/xui/it/menu_people_nearby.xml
@@ -1,13 +1,16 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Avatar Context Menu">
-	<menu_item_call label="Vedi profilo" name="View Profile"/>
-	<menu_item_call label="Aggiungi amico" name="Add Friend"/>
-	<menu_item_call label="Rimuovi amico" name="Remove Friend"/>
-	<menu_item_call label="IM" name="IM"/>
-	<menu_item_call label="Chiama" name="Call"/>
-	<menu_item_call label="Mappa" name="Map"/>
-	<menu_item_call label="Condividi" name="Share"/>
-	<menu_item_call label="Paga" name="Pay"/>
-	<menu_item_check label="Blocca/Sblocca" name="Block/Unblock"/>
-	<menu_item_call label="Offri Teleport" name="teleport"/>
+	<menu_item_call label="Vedi profilo" name="view_profile"/>
+	<menu_item_call label="IM" name="im"/>
+	<menu_item_call label="Offri Teleport" name="offer_teleport"/>
+	<menu_item_call label="Chiamata a voce" name="voice_call"/>
+	<menu_item_call label="Mostra la cronologia delle chat..." name="chat_history"/>
+	<menu_item_call label="Aggiungi come amico" name="add_friend"/>
+	<menu_item_call label="Rimuovi amico" name="remove_friend"/>
+	<menu_item_call label="Invita al gruppo..." name="invite_to_group"/>
+	<menu_item_call label="Zoom avanti" name="zoom_in"/>
+	<menu_item_call label="Mappa" name="map"/>
+	<menu_item_call label="Condividi" name="share"/>
+	<menu_item_call label="Paga" name="pay"/>
+	<menu_item_check label="Blocca/Sblocca" name="block_unblock"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/it/menu_people_nearby_multiselect.xml
index e0b9ceb63d8..b9ce70167f4 100644
--- a/indra/newview/skins/default/xui/it/menu_people_nearby_multiselect.xml
+++ b/indra/newview/skins/default/xui/it/menu_people_nearby_multiselect.xml
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Multi-Selected People Context Menu">
-	<menu_item_call label="Aggiungi amici" name="Add Friends"/>
-	<menu_item_call label="Rimuovi amici" name="Remove Friend"/>
-	<menu_item_call label="IM" name="IM"/>
-	<menu_item_call label="Chiama" name="Call"/>
-	<menu_item_call label="Condividi" name="Share"/>
-	<menu_item_call label="Paga" name="Pay"/>
-	<menu_item_call label="Offri Teleport" name="teleport"/>
+	<menu_item_call label="Aggiungi amici" name="add_friends"/>
+	<menu_item_call label="Rimuovi amici" name="remove_friends"/>
+	<menu_item_call label="IM" name="im"/>
+	<menu_item_call label="Chiama" name="call"/>
+	<menu_item_call label="Condividi" name="share"/>
+	<menu_item_call label="Paga" name="pay"/>
+	<menu_item_call label="Offri Teleport" name="offer_teleport"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_people_nearby_view.xml b/indra/newview/skins/default/xui/it/menu_people_nearby_view.xml
new file mode 100644
index 00000000000..223d88fee1c
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_people_nearby_view.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="Ordina in base a intervenuti recenti" name="sort_by_recent_speakers"/>
+	<menu_item_check label="Ordina in base al nome" name="sort_name"/>
+	<menu_item_check label="Ordina in base alla distanza" name="sort_distance"/>
+	<menu_item_check label="Mostra le icone delle persone" name="view_icons"/>
+	<menu_item_check label="Mostra mappa" name="view_map"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_people_recent_view.xml b/indra/newview/skins/default/xui/it/menu_people_recent_view.xml
new file mode 100644
index 00000000000..fc6213bd085
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_people_recent_view.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="Mostra prima i più recenti" name="sort_most"/>
+	<menu_item_check label="Ordina in base al nome" name="sort_name"/>
+	<menu_item_check label="Mostra le icone delle persone" name="view_icons"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_url_agent.xml b/indra/newview/skins/default/xui/it/menu_url_agent.xml
index 37755d5749c..abfbab35a34 100644
--- a/indra/newview/skins/default/xui/it/menu_url_agent.xml
+++ b/indra/newview/skins/default/xui/it/menu_url_agent.xml
@@ -1,6 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Url Popup">
-	<menu_item_call label="Mostra profilo residente" name="show_agent"/>
+	<menu_item_call label="Vedi profilo" name="show_agent"/>
+	<menu_item_call label="Manda IM..." name="send_im"/>
+	<menu_item_call label="Aggiungi come amico..." name="add_friend"/>
 	<menu_item_call label="Copia nome negli Appunti" name="url_copy_label"/>
 	<menu_item_call label="Copia SLurl negli Appunti" name="url_copy"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_url_objectim.xml b/indra/newview/skins/default/xui/it/menu_url_objectim.xml
index 763e65f17c0..8456d14b63e 100644
--- a/indra/newview/skins/default/xui/it/menu_url_objectim.xml
+++ b/indra/newview/skins/default/xui/it/menu_url_objectim.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Url Popup">
-	<menu_item_call label="Mostra informazioni oggetto" name="show_object"/>
+	<menu_item_call label="Profilo oggetto..." name="show_object"/>
 	<menu_item_call label="Mostra sulla mappa" name="show_on_map"/>
 	<menu_item_call label="Teleport sul luogo dell&apos;oggetto" name="teleport_to_object"/>
 	<menu_item_call label="Copia nome oggetto negli Appunti" name="url_copy_label"/>
diff --git a/indra/newview/skins/default/xui/it/menu_viewer.xml b/indra/newview/skins/default/xui/it/menu_viewer.xml
index 547c5a9b73c..c93b92029f6 100644
--- a/indra/newview/skins/default/xui/it/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/it/menu_viewer.xml
@@ -16,10 +16,7 @@
 			<menu_item_call label="Ferma animazione" name="Stop Animating My Avatar"/>
 			<menu_item_call label="Cammina / corri / vola..." name="Walk / run / fly"/>
 		</menu>
-		<menu label="Stato" name="Status">
-			<menu_item_call label="Assente" name="Set Away"/>
-			<menu_item_call label="Non disponibile" name="Set Busy"/>
-		</menu>
+		<menu label="Stato" name="Status"/>
 		<menu_item_call label="Acquista L$..." name="Buy and Sell L$"/>
 		<menu_item_call label="Casella venditore in uscita..." name="MerchantOutbox"/>
 		<menu_item_call label="Dashboard dell&apos;account..." name="Manage My Account">
@@ -32,14 +29,18 @@
 		<menu_item_call label="Esci da [APP_NAME]" name="Quit"/>
 	</menu>
 	<menu label="Comunica" name="Communicate">
-		<menu_item_check label="Chat..." name="Nearby Chat"/>
+		<menu_item_check label="Conversazioni..." name="Conversations"/>
+		<menu_item_check label="Chat nei dintorni..." name="Nearby Chat"/>
 		<menu_item_check label="Parla" name="Speak"/>
-		<menu_item_check label="Impostazioni voce..." name="Nearby Voice"/>
-		<menu_item_check label="Manipolazione voce..." name="ShowVoice"/>
+		<menu label="Manipolazione voce" name="VoiceMorphing">
+			<menu_item_check label="Nessuna manipolazione voce" name="NoVoiceMorphing"/>
+			<menu_item_check label="Anteprima..." name="Preview"/>
+			<menu_item_call label="Abbonati..." name="Subscribe"/>
+		</menu>
 		<menu_item_check label="Gesture..." name="Gestures"/>
-		<menu_item_call label="Amici" name="My Friends"/>
-		<menu_item_call label="Gruppi" name="My Groups"/>
-		<menu_item_call label="Persone vicine" name="Active Speakers"/>
+		<menu_item_check label="Amici" name="My Friends"/>
+		<menu_item_check label="Gruppi" name="My Groups"/>
+		<menu_item_check label="Persone vicine" name="Active Speakers"/>
 		<menu_item_call label="Blocca lista" name="Block List"/>
 	</menu>
 	<menu label="Mondo" name="World">
@@ -115,7 +116,6 @@
 			<menu_item_call label="Acquista" name="Menu Object Buy"/>
 			<menu_item_call label="Prendi" name="Menu Object Take"/>
 			<menu_item_call label="Prendi copia" name="Take Copy"/>
-			<menu_item_call label="Salva nell&apos;inventario" name="Save Object Back to My Inventory"/>
 			<menu_item_call label="Salva nei contenuti oggetto" name="Save Object Back to Object Contents"/>
 			<menu_item_call label="Restituisci oggetto" name="Return Object back to Owner"/>
 		</menu>
@@ -130,6 +130,7 @@
 			<menu_item_call label="Set collegati..." name="pathfinding_linksets_menu_item"/>
 			<menu_item_call label="Personaggi..." name="pathfinding_characters_menu_item"/>
 			<menu_item_call label="Visualizza / test..." name="pathfinding_console_menu_item"/>
+			<menu_item_call label="Rebake regione" name="pathfinding_rebake_navmesh_item"/>
 		</menu>
 		<menu label="Opzioni" name="Options">
 			<menu_item_check label="Mostra autorizzazioni avanzate" name="DebugPermissions"/>
@@ -159,6 +160,13 @@
 	<menu label="Aiuto" name="Help">
 		<menu_item_call label="Istruzioni..." name="How To"/>
 		<menu_item_call label="Aiuto di [SECOND_LIFE]" name="Second Life Help"/>
+		<menu_item_call label="Guida dell&apos;utente" name="User’s guide"/>
+		<menu_item_call label="Base di conoscenza" name="Knowledge Base"/>
+		<menu_item_call label="Wiki" name="Wiki"/>
+		<menu_item_call label="Forum della comunità" name="Community Forums"/>
+		<menu_item_call label="Portale assistenza" name="Support portal"/>
+		<menu_item_call label="[SECOND_LIFE] Notizie" name="Second Life News"/>
+		<menu_item_call label="[SECOND_LIFE] Blog" name="Second Life Blogs"/>
 		<menu_item_call label="Segnala abuso" name="Report Abuse"/>
 		<menu_item_call label="Segnala bug" name="Report Bug"/>
 		<menu_item_call label="Informazioni su [APP_NAME]" name="About Second Life"/>
@@ -336,9 +344,14 @@
 				<menu_item_call label="Alterna la geometria dei personaggi" name="Toggle Character Geometry"/>
 				<menu_item_check label="Consenti selezione avatar" name="Allow Select Avatar"/>
 			</menu>
+			<menu label="Velocità animazione" name="Animation Speed">
+				<menu_item_call label="Accelera tutte le animazioni del 10%" name="All Animations 10 Faster"/>
+				<menu_item_call label="Rallenta tutte le animazioni del 10%" name="All Animations 10 Slower"/>
+				<menu_item_call label="Ripristina la velocità di tutte le animazioni" name="Reset All Animation Speed"/>
+				<menu_item_check label="Animazioni lente" name="Slow Motion Animations"/>
+			</menu>
 			<menu_item_call label="Forza i parametri sui valori predefiniti" name="Force Params to Default"/>
 			<menu_item_check label="Informazioni sull&apos;animazione" name="Animation Info"/>
-			<menu_item_check label="Animazioni lente" name="Slow Motion Animations"/>
 			<menu_item_check label="Disabilita livello di dettaglio" name="Disable LOD"/>
 			<menu_item_check label="Mostra schemi collisione" name="Show Collision Skeleton"/>
 			<menu_item_check label="Mostra bersaglio" name="Display Agent Target"/>
diff --git a/indra/newview/skins/default/xui/it/notifications.xml b/indra/newview/skins/default/xui/it/notifications.xml
index d5fdde4e7de..8adbebb62ac 100644
--- a/indra/newview/skins/default/xui/it/notifications.xml
+++ b/indra/newview/skins/default/xui/it/notifications.xml
@@ -513,6 +513,24 @@ Visitare [_URL] per ulteriori informazioni?
 		</url>
 		<usetemplate ignoretext="Driver grafica obsoleto" name="okcancelignore" notext="No" yestext="Sì"/>
 	</notification>
+	<notification name="AMDOldDriver">
+		È probabile che ci sia un driver aggiornato per il processore grafico.  L&apos;aggiornamento dei driver della grafica può migliorare le prestazioni in maniera significativa.
+
+    Visitare [_URL] per cercare un aggiornamento del driver?
+		<url name="url">
+			http://support.amd.com/it/Pages/AMDSupportHub.aspx
+		</url>
+		<usetemplate ignoretext="Driver grafica obsoleto" name="okcancelignore" notext="No" yestext="Sì"/>
+	</notification>
+	<notification name="NVIDIAOldDriver">
+		È probabile che ci sia un driver aggiornato per il processore grafico.  L&apos;aggiornamento dei driver della grafica può migliorare le prestazioni in maniera significativa.
+
+    Visitare [_URL] per cercare un aggiornamento del driver?
+		<url name="url">
+			http://www.nvidia.it/Download/index.aspx?lang=it
+		</url>
+		<usetemplate ignoretext="Driver grafica obsoleto" name="okcancelignore" notext="No" yestext="Sì"/>
+	</notification>
 	<notification name="UnknownGPU">
 		Il tuo sistema utilizza una scheda grafica che [APP_NAME] non riconosce.
 Questo succede spesso con un nuovo hardware che non è stato ancora testato con [APP_NAME].  Probabilmente tutto andrà bene, ma devi riconfigurare le tue impostazioni grafiche.
@@ -1548,10 +1566,13 @@ Vuoi cancellare quell&apos;elemento?
 		Impossibile offrire l&apos;amicizia in questo momento. Riprova fra poco.
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
-	<notification name="BusyModeSet">
-		È stata impostata la modalità Non disponibile.
-La chat e gli IM verranno nascosti. Gli IM riceveranno la tua risposta di Non disponibile. Tutte le offerte di teleport verranno rifiutate. Tutte le offerte di Inventario andranno nel Cestino.
-		<usetemplate ignoretext="Cambio il mio stato sulla modalità Non disponibile" name="okignore" yestext="OK"/>
+	<notification name="DoNotDisturbModeSet">
+		Non disturbare è attivo.  Non riceverai la notifica delle comunicazioni in arrivo.
+
+- Gli altri residenti riceveranno la tua risposta Non disturbare (impostata in Preferenze &gt; Generali).
+- Le offerte di teleport verranno rifiutate.
+- Le chiamate voce verranno rifiutate.
+		<usetemplate ignoretext="Io cambio il mio stato alla modalità Non disturbare." name="okignore" yestext="OK"/>
 	</notification>
 	<notification name="JoinedTooManyGroupsMember">
 		Hai raggiunto il numero massimo di gruppi. Per favore abbandona almeno un gruppo prima di aderire a questo, oppure declina l&apos;offerta.
@@ -2039,6 +2060,10 @@ Trasferisci gli elementi nell&apos;inventario?
 		Vai al [http://secondlife.com/account/ Dashboard] per vedere la cronologia del tuo account?
 		<usetemplate ignoretext="Lancia il browser per vedere la cronologia del mio account" name="okcancelignore" notext="Annulla" yestext="Vai alla pagina"/>
 	</notification>
+	<notification name="ConfirmAddingChatParticipants">
+		Quando aggiungi una persona a una conversazione esistente, viene creata una nuova conversazione.  Tutti i partecipanti riceveranno notifiche per la nuova conversazione.
+		<usetemplate ignoretext="Conferma l&apos;aggiunta dei partecipanti alla chat" name="okcancelignore" notext="Annulla" yestext="Ok"/>
+	</notification>
 	<notification name="ConfirmQuit">
 		Confermi di voler uscire?
 		<usetemplate ignoretext="Conferma prima di uscire" name="okcancelignore" notext="Non uscire" yestext="Esci"/>
@@ -2113,14 +2138,14 @@ Vuoi sostituirlo con l&apos;oggetto selezionato?
 			<button ignore="Never Replace" name="No" text="Annulla"/>
 		</form>
 	</notification>
-	<notification label="Avviso di &apos;Occupato&apos;" name="BusyModePay">
-		Sei in modalità &apos;Occupato&apos;, ciò significa che non riceverai ciò che attendi per questo pagamento.
+	<notification label="Avviso modalità Non disturbare" name="DoNotDisturbModePay">
+		Hai attivato la modalità Non disturbare. Non riceverai alcun oggetto offerto in cambio di questo pagamento.
 
-Desideri abbandonare la modalità &apos;Occupato&apos; prima di completare questa transazione?
+Vuoi disattivare la modalità Non disturbare prima di completare questa transazione?
 		<form name="form">
-			<ignore name="ignore" save_option="true" text="Sto per pagare una persona o un oggetto mentro sono in modalià Non disponibile"/>
-			<button ignore="Always leave Busy Mode" name="Yes" text="OK"/>
-			<button ignore="Never leave Busy Mode" name="No" text="Abbandona"/>
+			<ignore name="ignore" text="Sto per pagare una persona o un oggetto mentre sono in modalità Non disturbare"/>
+			<button ignore="Lascia sempre la modalità Non disturbare" name="Yes" text="OK"/>
+			<button ignore="Non lasciare mai la modalità Non disturbare" name="No" text="Annulla"/>
 		</form>
 	</notification>
 	<notification name="ConfirmDeleteProtectedCategory">
@@ -2255,11 +2280,8 @@ Inseriscilo in una pagina web per dare ad altri un accesso facile a questa ubica
 	<notification name="GroupNotice">
 		Oggetto: [SUBJECT], Messaggio: [MESSAGE]
 	</notification>
-	<notification name="FriendOnline">
-		&lt;nolink&gt;[NAME]&lt;/nolink&gt; è online
-	</notification>
-	<notification name="FriendOffline">
-		&lt;nolink&gt;[NAME]&lt;/nolink&gt; è offline
+	<notification name="FriendOnlineOffline">
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; è [STATUS]
 	</notification>
 	<notification name="AddSelfFriend">
 		Anche se sei molto simpatico, non puoi aggiungere te stesso all&apos;elenco degli amici.
@@ -2487,13 +2509,6 @@ Qui non puoi volare.
 	<notification name="DynamicPathfindingDisabled">
 		Il pathfinding dinamico non è attivato in questa regione.  Gli oggetti scriptati che usano chiamate LSL di pathfinding potrebbero non funzionare come previsto in questa regione.
 	</notification>
-	<notification name="PathfindingRebakeNavmesh">
-		Se modifichi alcuni oggetti in questa regione, ciò potrebbe causare il comportamento errato di altri oggetti in movimento.  Per fare in modo che gli oggetti in movimento si comportino correttamente, fai clic sul pulsante &quot;Rebake regione&quot;.  Per maggiori informazioni, seleziona la guida
-		<url name="url">
-			http://wiki.secondlife.com/wiki/Pathfinding_Tools_in_the_Second_Life_Viewer
-		</url>
-		<usetemplate helptext="Guida" ignoretext="Se modifichi alcuni oggetti in questa regione, ciò potrebbe causare il comportamento errato di altri oggetti in movimento." name="okhelpignore" yestext="OK"/>
-	</notification>
 	<notification name="PathfindingCannotRebakeNavmesh">
 		Si è verificato un errore.  Potrebbe trattarsi di un problema di rete o del server, oppure potresti non avere le autorizzazioni necessarie per la costruzione.  A volte il problema viene risolto uscendo ed eseguendo nuovamente l&apos;accesso.
 		<usetemplate name="okbutton" yestext="OK"/>
@@ -2754,9 +2769,9 @@ OK?
 		</form>
 	</notification>
 	<notification name="ScriptQuestionCaution">
-		Attenzione: L&apos;oggetto &apos;&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;&apos; ha richiesto accesso completo al tuo account in Dollari Linden. Se consenti l&apos;accesso, potrà rimuovere fondi dal tuo account in qalunque momento e anche svuotare completamente l&apos;account, per un periodo illimitato e senza ulteriori avvisi.
+		Avviso: L&apos;oggetto &apos;&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;&apos; ha richiesto accesso completo al tuo account in Dollari Linden. Se consenti l&apos;accesso, potrà rimuovere fondi dal tuo account in qualunque momento e anche svuotare completamente l&apos;account, per un periodo illimitato e senza ulteriori avvisi.
   
-Raramente questo tipo di richiesta è legittima. Non consentire l&apos;accesso se non comprendi perfettamente il motivo per cui desidera accedere al tuo account.
+Non consentire l&apos;accesso se non comprendi perfettamente il motivo per cui desidera accedere al tuo account.
 		<form name="form">
 			<button name="Grant" text="Consenti accesso totale"/>
 			<button name="Deny" text="Nega"/>
@@ -3338,4 +3353,633 @@ Tentativo annullato.
 		Stai per cancellare [NUM_ITEMS] elementi.  Vuoi continuare?
 		<usetemplate ignoretext="Sei sicuro di volere eliminare più oggetti?" name="okcancelignore" notext="No" yestext="Sì"/>
 	</notification>
+	<notification name="AvatarFrozen">
+		[AV_FREEZER] ti ha congelato. Non ti puoi muovere o interagire con il mondo.
+	</notification>
+	<notification name="AvatarFrozenDuration">
+		[AV_FREEZER] ti ha congelato per [AV_FREEZE_TIME] secondi. Non ti puoi muovere o interagire con il mondo.
+	</notification>
+	<notification name="YouFrozeAvatar">
+		Avatar congelato.
+	</notification>
+	<notification name="AvatarHasUnFrozenYou">
+		[AV_FREEZER] ti ha scongelato.
+	</notification>
+	<notification name="AvatarUnFrozen">
+		Avatar scongelato.
+	</notification>
+	<notification name="AvatarFreezeFailure">
+		La congelazione non ha avuto successo perché non hai le autorizzazioni dell&apos;amministratore per quel lotto.
+	</notification>
+	<notification name="AvatarFreezeThaw">
+		Non sei più congelato, puoi continuare.
+	</notification>
+	<notification name="AvatarCantFreeze">
+		Non puoi congelare quell&apos;utente.
+	</notification>
+	<notification name="NowOwnObject">
+		Sei ora il proprietario dell&apos;oggetto [OBJECT_NAME]
+	</notification>
+	<notification name="CantRezOnLand">
+		Non puoi rezzare l&apos;oggetto a [OBJECT_POS] perché non è consentito dal proprietario del terreno.  Usa lo strumento terreno per visualizzare a chi appartiene il terreno.
+	</notification>
+	<notification name="RezFailTooManyRequests">
+		Oggetto non razzato perché ci sono troppe richieste.
+	</notification>
+	<notification name="SitFailCantMove">
+		Non puoi sederti perché al momento non puoi muoverti.
+	</notification>
+	<notification name="SitFailNotAllowedOnLand">
+		Non puoi sederti perché non ti è consentito entrare in quel terreno.
+	</notification>
+	<notification name="SitFailNotSameRegion">
+		Proba ad avvicinarti.  Non puoi sederti su un oggetto perché
+non è nella stessa regione in cui ti trovi.
+	</notification>
+	<notification name="NoNewObjectRegionFull">
+		Impossibile creare il nuovo oggetto. La regione è piena.
+	</notification>
+	<notification name="FailedToPlaceObject">
+		Il posizionamento dell&apos;oggetto nella posizione specificata non è riuscito.  Riprova.
+	</notification>
+	<notification name="NoOwnNoGardening">
+		Non puoi creare alberi ed erba su terreni che non sono di tua proprietà.
+	</notification>
+	<notification name="NoCopyPermsNoObject">
+		Copia non riuscita perché non hai l&apos;autorizzazione necessaria per copiare l&apos;oggetto &apos;[OBJ_NAME]&apos;.
+	</notification>
+	<notification name="NoTransPermsNoObject">
+		La copia non è riuscita perché &apos;[OBJ_NAME]&apos; non può essere trasferito a te.
+	</notification>
+	<notification name="AddToNavMeshNoCopy">
+		La copia non è riuscita perché &apos;[OBJ_NAME]&apos; contribuisce al navmesh.
+	</notification>
+	<notification name="DupeWithNoRootsSelected">
+		Duplicato senza oggetto principale selezionato.
+	</notification>
+	<notification name="CantDupeCuzRegionIsFull">
+		Impossibile duplicare gli oggetti perché la regione è piena.
+	</notification>
+	<notification name="CantDupeCuzParcelNotFound">
+		Impossibile duplicare gli oggetti - Impossibile trovare i lotti in cui si trovano.
+	</notification>
+	<notification name="CantCreateCuzParcelFull">
+		Impossibile creare l&apos;oggetto perché 
+il lotto è pieno.
+	</notification>
+	<notification name="RezAttemptFailed">
+		Tentativo di rezzare un oggetto non riuscito.
+	</notification>
+	<notification name="ToxicInvRezAttemptFailed">
+		Impossibile creare un oggetto che ha causato problemi in questa regione.
+	</notification>
+	<notification name="InvItemIsBlacklisted">
+		L&apos;oggetto dell&apos;inventario è stato aggiunto alla blacklist.
+	</notification>
+	<notification name="NoCanRezObjects">
+		Al momento non ti è consentito creare oggetti.
+	</notification>
+	<notification name="LandSearchBlocked">
+		Ricerca terreno bloccata.
+Hai eseguito troppe ricerche terreno in un breve tempo.
+Riprova tra un minuto.
+	</notification>
+	<notification name="NotEnoughResourcesToAttach">
+		Risorse di script non sufficienti per collegare l&apos;oggetto.
+	</notification>
+	<notification name="YouDiedAndGotTPHome">
+		Sei deceduto e sei stato teleportato alla tua posizione iniziale
+	</notification>
+	<notification name="EjectComingSoon">
+		Non sei più benvenuto qui e hai [EJECT_TIME] secondi per andartene.
+	</notification>
+	<notification name="NoEnterServerFull">
+		Non puoi entrare in questa regione perché 
+il server è pieno.
+	</notification>
+	<notification name="SaveBackToInvDisabled">
+		Opzione Salva nell&apos;inventario disattivata
+	</notification>
+	<notification name="NoExistNoSaveToContents">
+		Impossibile salvare &apos;[OBJ_NAME]&apos; nei contenuti dell&apos;oggetto perché l&apos;oggetto da cui è stato razzato non esiste più.
+	</notification>
+	<notification name="NoModNoSaveToContents">
+		Impossibile salvare &apos;[OBJ_NAME]&apos; nei contenuti dell&apos;oggetto perché non hai l&apos;autorizzazione necessaria per modificare l&apos;oggetto &apos;[DEST_NAME]&apos;.
+	</notification>
+	<notification name="NoSaveBackToInvDisabled">
+		Impossibile riportare &apos;[OBJ_NAME]&apos; nell&apos;inventario -- questa operazione è stata disattivata.
+	</notification>
+	<notification name="NoCopyNoSelCopy">
+		Non puoi copiare l&apos;elemento selezionato perché non hai l&apos;autorizzazione necessaria per copiare l&apos;oggetto &apos;[OBJ_NAME]&apos;.
+	</notification>
+	<notification name="NoTransNoSelCopy">
+		Non puoi copiare la selezione perché l&apos;oggetto &apos;[OBJ_NAME]&apos; non può essere trasferito.
+	</notification>
+	<notification name="NoTransNoCopy">
+		Non puoi copiare la selezione perché l&apos;oggetto &apos;[OBJ_NAME]&apos; non può essere trasferito.
+	</notification>
+	<notification name="NoPermsNoRemoval">
+		La rimozione dell&apos;oggetto &apos;[OBJ_NAME]&apos; dal simulatore non è consentita dal sistema delle autorizzazioni.
+	</notification>
+	<notification name="NoModNoSaveSelection">
+		Non puoi salvare l&apos;elemento selezionato perché non hai l&apos;autorizzazione necessaria per modificare l&apos;oggetto &apos;[OBJ_NAME]&apos;.
+	</notification>
+	<notification name="NoCopyNoSaveSelection">
+		Non puoi salvare la selezione perché l&apos;oggetto &apos;[OBJ_NAME]&apos; non può essere copiato.
+	</notification>
+	<notification name="NoModNoTaking">
+		Non puoi prendere l&apos;elemento selezionato perché non hai l&apos;autorizzazione necessaria per modificare l&apos;oggetto &apos;[OBJ_NAME]&apos;.
+	</notification>
+	<notification name="RezDestInternalError">
+		Errore interno: Tipo di destinazione sconosciuto.
+	</notification>
+	<notification name="DeleteFailObjNotFound">
+		Cancellazione non riuscita perché l&apos;oggetto non è stato trovato.
+	</notification>
+	<notification name="SorryCantEjectUser">
+		Non puoi espellere quell&apos;utente.
+	</notification>
+	<notification name="RegionSezNotAHome">
+		Questa regione non ti consente di impostare qui la tua posizione iniziale.
+	</notification>
+	<notification name="HomeLocationLimits">
+		Puoi impostare la tua posizione iniziale nel tuo terreno o in un Infohub sulla terraferma.
+	</notification>
+	<notification name="HomePositionSet">
+		Posizione di base impostata.
+	</notification>
+	<notification name="AvatarEjected">
+		Avatar espulso.
+	</notification>
+	<notification name="AvatarEjectFailed">
+		L&apos;espulsione non ha avuto successo perché non hai l&apos;autorizzazione dell&apos;amministratore del lotto.
+	</notification>
+	<notification name="CantMoveObjectParcelFull">
+		Impossibile muovere l&apos;oggetto &apos;[OBJECT_NAME]&apos; a
+[OBJ_POSITION] nella regione [REGION_NAME] perché il lotto è pieno.
+	</notification>
+	<notification name="CantMoveObjectParcelPerms">
+		Impossibile muovere l&apos;oggetto &apos;[OBJECT_NAME]&apos; a
+[OBJ_POSITION] nella regione [REGION_NAME] perché i tuoi oggetti non sono ammessi su questo lotto.
+	</notification>
+	<notification name="CantMoveObjectParcelResources">
+		Impossibile muovere l&apos;oggetto &apos;[OBJECT_NAME]&apos; a
+[OBJ_POSITION] nella regione [REGION_NAME] perché non ci sono risorse sufficienti per l&apos;oggetto su questo lotto.
+	</notification>
+	<notification name="CantMoveObjectRegionVersion">
+		Impossibile muovere l&apos;oggetto &apos;[OBJECT_NAME]&apos; a
+[OBJ_POSITION] nella regione [REGION_NAME] perché nell&apos;altra regione è in esecuzione una versione precedente che non consente la ricezione di questo oggetto attraverso i confini tra regioni.
+	</notification>
+	<notification name="CantMoveObjectNavMesh">
+		Impossibile muovere l&apos;oggetto &apos;[OBJECT_NAME]&apos; a
+[OBJ_POSITION] nella regione [REGION_NAME] perché non puoi modificare il navmesh attraverso il confine tra regioni.
+	</notification>
+	<notification name="CantMoveObjectWTF">
+		Impossibile muovere l&apos;oggetto &apos;[OBJECT_NAME]&apos; a
+[OBJ_POSITION] nella regione [REGION_NAME] per un motivo sconosciuto. ([FAILURE_TYPE])
+	</notification>
+	<notification name="NoPermModifyObject">
+		Non hai l&apos;autorizzazione necessaria per modificare questa immagine
+	</notification>
+	<notification name="CantEnablePhysObjContributesToNav">
+		Non è possibile attivare la fisica per un oggetto che contribuisce al navmesh.
+	</notification>
+	<notification name="CantEnablePhysKeyframedObj">
+		Impossibile attivare la fisica per oggetti keyframe.
+	</notification>
+	<notification name="CantEnablePhysNotEnoughLandResources">
+		Impossibile attivare la fisica per l&apos;oggetto -- risorse di terreno insufficienti.
+	</notification>
+	<notification name="CantEnablePhysCostTooGreat">
+		Impossibile attivare la fisica per un oggetto con un costo delle risorse della fisica maggiore di [MAX_OBJECTS]
+	</notification>
+	<notification name="PhantomWithConcavePiece">
+		Questo oggetto non può avere un pezzo concavo perché è un oggetto fantasma e contribuisce al navmesh.
+	</notification>
+	<notification name="UnableAddItem">
+		Aggiunta elemento non riuscita
+	</notification>
+	<notification name="UnableEditItem">
+		Impossibile modificare questo elemento.
+	</notification>
+	<notification name="NoPermToEdit">
+		Non sei autorizzato a modificare questo elemento.
+	</notification>
+	<notification name="NoPermToCopyInventory">
+		Non ti è permesso copiare quell&apos;inventario.
+	</notification>
+	<notification name="CantSaveItemDoesntExist">
+		Impossibile salvare i contenuti dell&apos;oggetto: L&apos;elemento non esiste più.
+	</notification>
+	<notification name="CantSaveItemAlreadyExists">
+		Impossibile salvare i contenuti dell&apos;oggetto: Nell&apos;inventario esiste già un elemento con quel nome.
+	</notification>
+	<notification name="CantSaveModifyAttachment">
+		Impossibile salvare i contenuti dell&apos;oggetto: Verrebbero modificate le autorizzazioni per il collegamento.
+	</notification>
+	<notification name="TooManyScripts">
+		Troppi script.
+	</notification>
+	<notification name="UnableAddScript">
+		Aggiunta script non riuscita.
+	</notification>
+	<notification name="AssetServerTimeoutObjReturn">
+		Il server degli asset non ha inviato una risposta entro il tempo massimo.  Oggetto restituito al sim.
+	</notification>
+	<notification name="RegionDisablePhysicsShapes">
+		In questa regione non sono attivate le forme per la fisica.
+	</notification>
+	<notification name="NoModNavmeshAcrossRegions">
+		Non puoi modificare il navmesh attraverso il confine tra le regioni.
+	</notification>
+	<notification name="NoSetPhysicsPropertiesOnObjectType">
+		Impossibile impostare le proprietà della fisica per quel tipo di oggetto.
+	</notification>
+	<notification name="NoSetRootPrimWithNoShape">
+		impossibile impostare un prim principale senza forma.
+	</notification>
+	<notification name="NoRegionSupportPhysMats">
+		In questa regione non sono attivati i materiali per la fisica.
+	</notification>
+	<notification name="OnlyRootPrimPhysMats">
+		I materiali per la fisica possono essere modificati solo i prim principali.
+	</notification>
+	<notification name="NoSupportCharacterPhysMats">
+		L&apos;impostazione dei materiali per la fisica nei caratteri non è ancora supportata.
+	</notification>
+	<notification name="InvalidPhysMatProperty">
+		Almeno una delle proprietà dei materiali per la fisica non è valida.
+	</notification>
+	<notification name="NoPermsAlterStitchingMeshObj">
+		Non puoi alterare il tipo di punto di un oggetto con reticolo
+	</notification>
+	<notification name="NoPermsAlterShapeMeshObj">
+		Non puoi alterare la forma di un oggetto con reticolo
+	</notification>
+	<notification name="FullRegionCantEnter">
+		Non puoi entrare in questa regione perché è piena.
+	</notification>
+	<notification name="LinkFailedOwnersDiffer">
+		Collegamento non riuscito -- i proprietari non corrispondono
+	</notification>
+	<notification name="LinkFailedNoModNavmeshAcrossRegions">
+		Collegamento non riuscito -- non puoi modificare il navmesh attraverso il confine tra le regioni.
+	</notification>
+	<notification name="LinkFailedNoPermToEdit">
+		Collegamento non riuscito perché non hai le autorizzazioni necessarie per la modifica.
+	</notification>
+	<notification name="LinkFailedTooManyPrims">
+		Collegamento non riuscito -- troppe primitive.
+	</notification>
+	<notification name="LinkFailedCantLinkNoCopyNoTrans">
+		Collegamento non riuscito -- impossibile collegare elementi senza copia ed elementi senza trasferimento
+	</notification>
+	<notification name="LinkFailedNothingLinkable">
+		Collegamento non riuscito -- niente di collegabile.
+	</notification>
+	<notification name="LinkFailedTooManyPathfindingChars">
+		Collegamento non riuscito -- troppi personaggi con pathfinding
+	</notification>
+	<notification name="LinkFailedInsufficientLand">
+		Collegamento non riuscito -- risorse terreno non sufficienti
+	</notification>
+	<notification name="LinkFailedTooMuchPhysics">
+		L&apos;oggetto usa troppe risorse per la fisica -- le sue dinamiche sono state disattivate.
+	</notification>
+	<notification name="TeleportedHomeByObjectOnParcel">
+		Sei stato teleportato nella posizione iniziale dall&apos;oggetto &apos;[OBJECT_NAME]&apos; del lotto &apos;[PARCEL_NAME]&apos;
+	</notification>
+	<notification name="TeleportedHomeByObject">
+		Sei stato teleportato nella tua posizione iniziale dall&apos;oggetto &apos;[OBJECT_NAME]&apos;
+	</notification>
+	<notification name="TeleportedByAttachment">
+		Sei stato teletrasportato da un elemento collegato a [ITEM_ID]
+	</notification>
+	<notification name="TeleportedByObjectOnParcel">
+		Sei stato teleportato dall&apos;oggetto &apos;[OBJECT_NAME]&apos; sul lotto &apos;[PARCEL_NAME]&apos;
+	</notification>
+	<notification name="TeleportedByObjectOwnedBy">
+		Sei stato teleportato dall&apos;oggetto &apos;[OBJECT_NAME]&apos; di proprietà di [OWNER_ID]
+	</notification>
+	<notification name="TeleportedByObjectUnknownUser">
+		Sei stato teleportato dall&apos;oggetto &apos;[OBJECT_NAME]&apos; di proprietà di un utente sconosciuto.
+	</notification>
+	<notification name="CantCreateObjectRegionFull">
+		Impossibile creare l&apos;oggetto richiesto. La regione è piena.
+	</notification>
+	<notification name="CantAttackMultipleObjOneSpot">
+		Non puoi collegare più oggetti a un singolo luogo.
+	</notification>
+	<notification name="CantCreateMultipleObjAtLoc">
+		Non puoi creare oggetti multipli in questa posizione.
+	</notification>
+	<notification name="UnableToCreateObjTimeOut">
+		Impossibile creare l&apos;oggetto richiesto. L&apos;oggetto non è presente nel database.
+	</notification>
+	<notification name="UnableToCreateObjUnknown">
+		Impossibile creare l&apos;oggetto richiesto. Tempo scaduto per la richiesta. Riprova.
+	</notification>
+	<notification name="UnableToCreateObjMissingFromDB">
+		Impossibile creare l&apos;oggetto richiesto. Riprova.
+	</notification>
+	<notification name="RezFailureTookTooLong">
+		Rezzing non riuscito. Il caricamento dell&apos;oggetto richiesto è durato troppo a lungo.
+	</notification>
+	<notification name="FailedToPlaceObjAtLoc">
+		Il posizionamento dell&apos;oggetto nella posizione specificata non è riuscito.  Riprova.
+	</notification>
+	<notification name="CantCreatePlantsOnLand">
+		Non puoi creare piante su questo terreno.
+	</notification>
+	<notification name="CantRestoreObjectNoWorldPos">
+		Impossibile ripristinare l&apos;oggetto. Nessuna posizione trovata nel mondo virtuale.
+	</notification>
+	<notification name="CantRezObjectInvalidMeshData">
+		Impossibile rezzare l&apos;oggetto perché i dati del reticolo non sono validi.
+	</notification>
+	<notification name="CantRezObjectTooManyScripts">
+		Impossibile rezzare l&apos;oggetto perché ci sono già troppi script in questa regione.
+	</notification>
+	<notification name="CantCreateObjectNoAccess">
+		Le tue autorizzazioni di accesso non ti permettono di creare oggetti in quella posizione.
+	</notification>
+	<notification name="CantCreateObject">
+		Al momento non ti è consentito creare oggetti.
+	</notification>
+	<notification name="InvalidObjectParams">
+		Parametri oggetto non validi
+	</notification>
+	<notification name="CantDuplicateObjectNoAcess">
+		Le tue autorizzazioni di accesso non ti permettono di duplicare oggetti in questa posizione.
+	</notification>
+	<notification name="CantChangeShape">
+		Non ti è consentito modificare questa forma.
+	</notification>
+	<notification name="NoAccessToClaimObjects">
+		Le tue autorizzazioni di accesso non ti permettono di richiedere oggetti in questa posizione.
+	</notification>
+	<notification name="DeedFailedNoPermToDeedForGroup">
+		Assegnazione non riuscita perché non hai l&apos;autorizzazione necessaria per assegnare oggetti per il tuo gruppo.
+	</notification>
+	<notification name="NoPrivsToBuyObject">
+		Le tue autorizzazioni di accesso non ti permettono di acquistare oggetti in questa posizione.
+	</notification>
+	<notification name="CantAttachObjectAvatarSittingOnIt">
+		Impossibile collegare l&apos;oggetto perché un avatar è seduto sopra.
+	</notification>
+	<notification name="WhyAreYouTryingToWearShrubbery">
+		Alberi ed erba non possono essere indossati come collegati.
+	</notification>
+	<notification name="CantAttachGroupOwnedObjs">
+		Impossibile collegare oggetti di proprietà di un gruppo.
+	</notification>
+	<notification name="CantAttachObjectsNotOwned">
+		Non puoi collegare oggetti che non sono di tua proprietà.
+	</notification>
+	<notification name="CantAttachNavmeshObjects">
+		Impossibile collegare oggetti che contribuiscono a navmesh.
+	</notification>
+	<notification name="CantAttachObjectNoMovePermissions">
+		L&apos;oggetto non può essere collegato perché non sei autorizzato a muoverlo.
+	</notification>
+	<notification name="CantAttachNotEnoughScriptResources">
+		Risorse di script non sufficienti per collegare l&apos;oggetto.
+	</notification>
+	<notification name="CantDropItemTrialUser">
+		Non puoi lasciare oggetti qui, prova la zona Prova gratuita.
+	</notification>
+	<notification name="CantDropMeshAttachment">
+		Non puoi lasciare elementi collegati con reticolo. Separa nell&apos;inventario e quindi rezza nel mondo virtuale.
+	</notification>
+	<notification name="CantDropAttachmentNoPermission">
+		Impossibile rimuovere l&apos;elemento collegato: non hai l&apos;autorizzazione necessaria per rimuoverlo qui.
+	</notification>
+	<notification name="CantDropAttachmentInsufficientLandResources">
+		Impossibile rimuovere l&apos;elemento collegato: risorse terreno disponibili non sufficienti.
+	</notification>
+	<notification name="CantDropAttachmentInsufficientResources">
+		Impossibile rimuovere gli elementi collegati: risorse disponibili non sufficienti.
+	</notification>
+	<notification name="CantDropObjectFullParcel">
+		Non puoi lasciare l&apos;oggetto qui.  Il lotto è pieno.
+	</notification>
+	<notification name="CantTouchObjectBannedFromParcel">
+		Non puoi toccare/afferrare questo oggetto perché sei stato bandito dal lotto di terreno.
+	</notification>
+	<notification name="PlzNarrowDeleteParams">
+		Limita i parametri per la cancellazione.
+	</notification>
+	<notification name="UnableToUploadAsset">
+		Impossibile caricare l&apos;asset.
+	</notification>
+	<notification name="CantTeleportCouldNotFindUser">
+		Utente da teleportare alla posizione iniziale non trovato
+	</notification>
+	<notification name="GodlikeRequestFailed">
+		richiesta superpoteri non riuscita
+	</notification>
+	<notification name="GenericRequestFailed">
+		richiesta generica non riuscita
+	</notification>
+	<notification name="CantUploadPostcard">
+		Impossibile caricare la cartolina.  Riprova più tardi.
+	</notification>
+	<notification name="CantFetchInventoryForGroupNotice">
+		I dettagli dell&apos;inventario per la notifica di gruppo non sono stati trovati.
+	</notification>
+	<notification name="CantSendGroupNoticeNotPermitted">
+		Impossibile inviare la notifica di gruppo -- non consentita.
+	</notification>
+	<notification name="CantSendGroupNoticeCantConstructInventory">
+		Impossibile inviare la notifica di gruppo -- impossibile costruire l&apos;inventario.
+	</notification>
+	<notification name="CantParceInventoryInNotice">
+		Impossibile analizzare l&apos;inventario nella notifica.
+	</notification>
+	<notification name="TerrainUploadFailed">
+		Caricamento terreno non riuscito.
+	</notification>
+	<notification name="TerrainFileWritten">
+		File terreno scritto.
+	</notification>
+	<notification name="TerrainFileWrittenStartingDownload">
+		File terreno generato, avvio del download...
+	</notification>
+	<notification name="TerrainBaked">
+		Baking terreno completata.
+	</notification>
+	<notification name="TenObjectsDisabledPlzRefresh">
+		Sono stati disattivati solo i primi 10 oggetti. Se necessario, aggiorna e seleziona nuovamente.
+	</notification>
+	<notification name="UpdateViewerBuyParcel">
+		Devi aggiornare il Viewer per poter acquistare questo lotto.
+	</notification>
+	<notification name="CantBuyParcelNotForSale">
+		Impossibile acquistare, questo lotto non è in vendita.
+	</notification>
+	<notification name="CantBuySalePriceOrLandAreaChanged">
+		Impossibile acquistare. Il prezzo o l&apos;area del terreno sono stati cambiati.
+	</notification>
+	<notification name="CantBuyParcelNotAuthorized">
+		Non sei l&apos;acquirente autorizzato di questo lotto.
+	</notification>
+	<notification name="CantBuyParcelAwaitingPurchaseAuth">
+		Non puoi acquistare questo lotto perché è in attesa di autorizzazione all&apos;acquisto
+	</notification>
+	<notification name="CantBuildOverflowParcel">
+		Non puoi costruire oggetti qui perché si supererebbe il limite per il lotto.
+	</notification>
+	<notification name="SelectedMultipleOwnedLand">
+		hai selezionato terreni con proprietari diversi. Seleziona un&apos;area più piccola e riprova.
+	</notification>
+	<notification name="CantJoinTooFewLeasedParcels">
+		Non sono stati selezionati abbastanza lotti affittati da collegare.
+	</notification>
+	<notification name="CantDivideLandMultipleParcelsSelected">
+		Terreno non divisibile.\nHai selezionato più di un lotto.\nProva a selezionare una quantità di terreno più piccola.
+	</notification>
+	<notification name="CantDivideLandCantFindParcel">
+		impossibile suddividere il terreno.\nimpossibile trovare il lotto.\nInvia una segnalazione con Aiuto -&gt; Segnala bug...
+	</notification>
+	<notification name="CantDivideLandWholeParcelSelected">
+		Impossibile suddividere il terreno. È stato selezionato l&apos;intero lotto.\nProva a selezionare un pezzo di terreno più piccolo.
+	</notification>
+	<notification name="LandHasBeenDivided">
+		Il terreno è stato diviso.
+	</notification>
+	<notification name="PassPurchased">
+		Hai acquistato un pass.
+	</notification>
+	<notification name="RegionDisallowsClassifieds">
+		Nella regione non sono permessi gli annunci pubblicitari.
+	</notification>
+	<notification name="LandPassExpireSoon">
+		Il tuo pass per questo terreno è quasi scaduto.
+	</notification>
+	<notification name="CantSitNoSuitableSurface">
+		Nessuna superficie adatta a sedersi, prova un altro luogo.
+	</notification>
+	<notification name="CantSitNoRoom">
+		Non c&apos;è posto per sedersi, prova un altro luogo.
+	</notification>
+	<notification name="ClaimObjectFailedNoPermission">
+		La richiesta dell&apos;oggetto non ha avuto successo perché non hai l&apos;autorizzazione necessaria.
+	</notification>
+	<notification name="ClaimObjectFailedNoMoney">
+		La richiesta dell&apos;oggetto non ha avuto successo perché non hai L$ sufficienti.
+	</notification>
+	<notification name="CantDeedGroupLand">
+		Non puoi assegnare terreno di proprietà di un gruppo.
+	</notification>
+	<notification name="BuyObjectFailedNoMoney">
+		L&apos;acquisto dell&apos;oggetto non ha avuto successo perché non hai L$ sufficienti.
+	</notification>
+	<notification name="BuyInventoryFailedNoMoney">
+		L&apos;acquisto dell&apos;inventario non ha avuto successo perché non hai L$ sufficienti.
+	</notification>
+	<notification name="BuyPassFailedNoMoney">
+		Non hai abbastanza L$ per acquistare un pass per questo terreno.
+	</notification>
+	<notification name="CantBuyPassTryAgain">
+		Al momento non puoi acquistare un pass.  Riprova più tardi.
+	</notification>
+	<notification name="CantCreateObjectParcelFull">
+		Impossibile creare l&apos;oggetto perché il lotto è pieno.
+	</notification>
+	<notification name="FailedPlacingObject">
+		Il posizionamento dell&apos;oggetto nella posizione specificata non è riuscito.  Riprova.
+	</notification>
+	<notification name="CantCreateLandmarkForEvent">
+		Impossibile creare il punto di riferimento per l&apos;evento.
+	</notification>
+	<notification name="GodBeatsFreeze">
+		I tuoi superpoteri hanno interrotto la congelazione.
+	</notification>
+	<notification name="SpecialPowersRequestFailedLogged">
+		Richiesta di poteri speciali non riuscita. La richiesta è stata registrata.
+	</notification>
+	<notification name="ExpireExplanation">
+		Al momento il sistema non è in grado di elaborare la tua richiesta. Tempo scaduto per la richiesta.
+	</notification>
+	<notification name="DieExplanation">
+		Il sistema non è in grado di elaborare la tua richiesta.
+	</notification>
+	<notification name="AddPrimitiveFailure">
+		Denaro insufficiente per creare una primitiva.
+	</notification>
+	<notification name="RezObjectFailure">
+		Denaro insufficiente per creare un oggetto.
+	</notification>
+	<notification name="ResetHomePositionNotLegal">
+		Posizione iniziale ripristinata perché non era valida.
+	</notification>
+	<notification name="CantInviteRegionFull">
+		Al momento non puoi invitare nessuno alla tua posizione perché la regione è piena. Riprova più tardi.
+	</notification>
+	<notification name="CantSetHomeAtRegion">
+		Questa regione non ti consente di impostare qui la tua posizione iniziale.
+	</notification>
+	<notification name="ListValidHomeLocations">
+		Puoi impostare la tua posizione iniziale nel tuo terreno o in un Infohub sulla terraferma.
+	</notification>
+	<notification name="SetHomePosition">
+		Posizione di base impostata.
+	</notification>
+	<notification name="CantDerezInventoryError">
+		Impossibile derazzare l&apos;oggetto a causa di un errore nell&apos;inventario.
+	</notification>
+	<notification name="CantCreateRequestedInv">
+		Impossibile creare l&apos;inventario richiesto.
+	</notification>
+	<notification name="CantCreateRequestedInvFolder">
+		Impossibile creare la cartella dell&apos;inventario richiesta.
+	</notification>
+	<notification name="CantCreateInventory">
+		Impossibile creare quell&apos;inventario.
+	</notification>
+	<notification name="CantCreateLandmark">
+		Impossibile creare il punto di riferimento.
+	</notification>
+	<notification name="CantCreateOutfit">
+		Il vestiario non può essere creato in questo momento. Riprova tra un minuto.
+	</notification>
+	<notification name="InventoryNotForSale">
+		L&apos;inventario non è in vendita.
+	</notification>
+	<notification name="CantFindInvItem">
+		Impossibile trovare l&apos;elemento nell&apos;inventario.
+	</notification>
+	<notification name="CantFindObject">
+		Impossibile trovare l&apos;oggetto.
+	</notification>
+	<notification name="CantTransfterMoneyRegionDisabled">
+		Il trasferimento di denaro agli oggetti è attualmente disattivato in questa regione.
+	</notification>
+	<notification name="CantPayNoAgent">
+		Non si capisce chi deve essere pagato.
+	</notification>
+	<notification name="CantDonateToPublicObjects">
+		Non puoi dare L$ a oggetti pubblici.
+	</notification>
+	<notification name="InventoryCreationInWorldObjectFailed">
+		Creazione inventario non riuscito per un oggetto nel mondo virtuale.
+	</notification>
+	<notification name="UserBalanceOrLandUsageError">
+		Un errore interno ha impedito l&apos;aggiornamento del Viewer.  Il saldo in L$ o i lotti posseduti mostrati nel Viewer potrebbero non corrispondere ai valori correnti sui server.
+	</notification>
+	<notification name="LargePrimAgentIntersect">
+		Non puoi creare prim grandi che intersecano altri giocatori.  Riprova quando gli altri giocatori si sono spostati.
+	</notification>
+	<notification name="PreferenceChatClearLog">
+		Verranno cancellati i registri delle conversazioni precedenti e tutti gli eventuali backup di quel file.
+		<usetemplate ignoretext="Conferma prima di cancellare il registro delle conversazioni precedenti." name="okcancelignore" notext="Annulla" yestext="OK"/>
+	</notification>
+	<notification name="PreferenceChatDeleteTranscripts">
+		Verranno cancellate le trascrizioni di tutte le conversazioni precedenti. L&apos;elenco delle conversazioni passate non cambierà. Tutti i file con i suffissi .txt e txt.backup nella cartella [FOLDER] verranno cancellati.
+		<usetemplate ignoretext="Conferma prima di cancellare le trascrizioni." name="okcancelignore" notext="Annulla" yestext="OK"/>
+	</notification>
+	<notification name="PreferenceChatPathChanged">
+		Impossibile spostare i file. Il percorso precedente è stato ripristinato.
+		<usetemplate ignoretext="Impossibile spostare i file. Il percorso precedente è stato ripristinato." name="okignore" yestext="OK"/>
+	</notification>
 </notifications>
diff --git a/indra/newview/skins/default/xui/it/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/it/panel_avatar_list_item.xml
index ede19b9e5ac..cfceb5b9822 100644
--- a/indra/newview/skins/default/xui/it/panel_avatar_list_item.xml
+++ b/indra/newview/skins/default/xui/it/panel_avatar_list_item.xml
@@ -26,5 +26,6 @@
 	<icon name="permission_edit_mine_icon" tool_tip="Questo amico può modificare, cancellare o prendere i tuoi oggetti"/>
 	<icon name="permission_map_icon" tool_tip="Questo amico può identificarti sulla mappa"/>
 	<icon name="permission_online_icon" tool_tip="Questo amico può vedere se sei online"/>
+	<button name="info_btn" tool_tip="Maggiori informazioni"/>
 	<button name="profile_btn" tool_tip="Vedi profilo"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/it/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/it/panel_block_list_sidetray.xml
index 610f561a65a..7ca2d3b57b1 100644
--- a/indra/newview/skins/default/xui/it/panel_block_list_sidetray.xml
+++ b/indra/newview/skins/default/xui/it/panel_block_list_sidetray.xml
@@ -1,10 +1,11 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="block_list_panel">
-	<text name="title_text">
-		Blocca lista
-	</text>
-	<scroll_list name="blocked" tool_tip="Lista degli attuali residenti bloccati"/>
-	<button label="Blocca il residente..." label_selected="Blocca il residente..." name="Block resident..." tool_tip="Scegli un residente da bloccare"/>
-	<button label="Blocca l&apos;oggetto per nome..." label_selected="Blocca l&apos;oggetto per nome..." name="Block object by name..."/>
-	<button label="Sblocca" label_selected="Sblocca" name="Unblock" tool_tip="Rimuovi un residente o un oggetto dalla lista bloccati"/>
+	<panel label="bottom_panel" name="blocked_buttons_panel">
+		<filter_editor label="Filtro" name="blocked_filter_input"/>
+		<menu_button name="blocked_gear_btn" tool_tip="Azioni sulla persona o oggetto selezionato"/>
+		<menu_button name="view_btn" tool_tip="Opzioni Ordina"/>
+		<menu_button name="plus_btn" tool_tip="Seleziona un residente o un oggetto da bloccare"/>
+		<button name="unblock_btn" tool_tip="Rimuovi un residente o un oggetto dalla lista bloccati"/>
+	</panel>
+	<block_list name="blocked" tool_tip="Lista degli attuali residenti bloccati"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/it/panel_conversation_list_item.xml b/indra/newview/skins/default/xui/it/panel_conversation_list_item.xml
new file mode 100644
index 00000000000..ca6b65300a0
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_conversation_list_item.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="conversation_list_item">
+	<layout_stack name="conversation_item_stack">
+		<layout_panel name="conversation_title_panel">
+			<text name="conversation_title" value="(caricamento in corso)"/>
+		</layout_panel>
+	</layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_conversation_log_list_item.xml b/indra/newview/skins/default/xui/it/panel_conversation_log_list_item.xml
new file mode 100644
index 00000000000..624eaa639c2
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_conversation_log_list_item.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="conversation_log_list_item">
+	<icon name="voice_session_icon" tool_tip="La conversazione includeva la voce"/>
+	<icon name="unread_ims_icon" tool_tip="Sono arrivati dei messaggi mentre eri via"/>
+	<button name="delete_btn" tool_tip="Elimina questo elemento"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_group_list_item.xml b/indra/newview/skins/default/xui/it/panel_group_list_item.xml
index 7cdc4c7ff64..72e644008c9 100644
--- a/indra/newview/skins/default/xui/it/panel_group_list_item.xml
+++ b/indra/newview/skins/default/xui/it/panel_group_list_item.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="group_list_item">
 	<text name="group_name" value="Sconosciuto"/>
+	<button name="info_btn" tool_tip="Maggiori informazioni"/>
 	<button name="profile_btn" tool_tip="Vedi profilo"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/it/panel_people.xml b/indra/newview/skins/default/xui/it/panel_people.xml
index f903ae6e2c0..e1468db76ea 100644
--- a/indra/newview/skins/default/xui/it/panel_people.xml
+++ b/indra/newview/skins/default/xui/it/panel_people.xml
@@ -14,81 +14,53 @@ Stai cercando persone da frequentare? Prova la [secondlife:///app/worldmap Mappa
 	<string name="no_filtered_friends_msg">
 		Non riesci a trovare quello che cerchi? Prova [secondlife:///app/search/people/[SEARCH_TERM] Cerca].
 	</string>
-	<string name="people_filter_label" value="Filtro persone"/>
-	<string name="groups_filter_label" value="Filtro gruppi"/>
 	<string name="no_filtered_groups_msg" value="Non riesci a trovare quello che cerchi? Prova [secondlife:///app/search/groups/[SEARCH_TERM] Cerca]."/>
 	<string name="no_groups_msg" value="Stai cercando gruppi di cui far parte? Prova [secondlife:///app/search/groups Cerca]."/>
 	<string name="MiniMapToolTipMsg" value="[REGION](Fai doppio clic per aprire la Mappa, premi il tasto Maiusc e trascina per la panoramica)"/>
 	<string name="AltMiniMapToolTipMsg" value="[REGION](Fai doppio clic per teleportarti, premi il tasto Maiusc e trascina per la panoramica)"/>
-	<filter_editor label="Filtro" name="filter_input"/>
 	<tab_container name="tabs">
 		<panel label="NELLE VICINANZE" name="nearby_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<menu_button name="nearby_view_sort_btn" tool_tip="Opzioni"/>
-				<button name="add_friend_btn" tool_tip="Aggiungi il residente selezionato alla tua lista degli amici"/>
+			<panel label="bottom_panel" name="nearby_buttons_panel">
+				<filter_editor label="Filtro persone" name="nearby_filter_input"/>
+				<button name="gear_btn" tool_tip="Azioni per la persona selezionata:"/>
+				<menu_button name="nearby_view_btn" tool_tip="Opzioni Mostra/Ordina"/>
+				<button name="add_friend_btn" tool_tip="Offri amicizia a un residente"/>
+				<dnd_button name="nearby_del_btn" tool_tip="Rimuovi la persona selezionata dagli amici"/>
 			</panel>
 		</panel>
-		<panel label="I MIEI AMICI" name="friends_panel">
+		<panel label="AMICI" name="friends_panel">
+			<panel label="bottom_panel" name="friends_buttons_panel">
+				<filter_editor label="Filtro persone" name="friends_filter_input"/>
+				<button name="gear_btn" tool_tip="Azioni per la persona selezionata:"/>
+				<menu_button name="friends_view_btn" tool_tip="Opzioni Mostra/Ordina"/>
+				<button name="friends_add_btn" tool_tip="Offri amicizia a un residente"/>
+				<dnd_button name="friends_del_btn" tool_tip="Rimuovi la persona selezionata dagli amici"/>
+			</panel>
 			<accordion name="friends_accordion">
 				<accordion_tab name="tab_online" title="Online"/>
 				<accordion_tab name="tab_all" title="Tutto"/>
 			</accordion>
-			<panel label="bottom_panel" name="bottom_panel">
-				<layout_stack name="bottom_panel">
-					<layout_panel name="options_gear_btn_panel">
-						<menu_button name="friends_viewsort_btn" tool_tip="Mostra ulteriori opzioni"/>
-					</layout_panel>
-					<layout_panel name="add_btn_panel">
-						<button name="add_btn" tool_tip="Offri amicizia a un residente"/>
-					</layout_panel>
-					<layout_panel name="trash_btn_panel">
-						<dnd_button name="del_btn" tool_tip="Rimuovi la persona selezionata dalla lista degli amici"/>
-					</layout_panel>
-				</layout_stack>
-			</panel>
 		</panel>
-		<panel label="I MIEI GRUPPI" name="groups_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<menu_button name="groups_viewsort_btn" tool_tip="Opzioni"/>
-				<button name="plus_btn" tool_tip="Aderisci al gruppo/Crea nuovo gruppo"/>
-				<button name="activate_btn" tool_tip="Attiva il gruppo selezionato"/>
+		<panel label="GRUPPI" name="groups_panel">
+			<panel label="bottom_panel" name="groups_buttons_panel">
+				<filter_editor label="Filtro gruppi" name="groups_filter_input"/>
+				<menu_button name="groups_gear_btn" tool_tip="Azioni per il gruppo selezionato:"/>
+				<menu_button name="groups_view_btn" tool_tip="Opzioni Mostra/Ordina"/>
+				<menu_button name="plus_btn" tool_tip="Aderisci al gruppo/Crea nuovo gruppo"/>
+				<dnd_button name="minus_btn" tool_tip="Lascia il gruppo selezionato"/>
 			</panel>
 		</panel>
 		<panel label="RECENTE" name="recent_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<menu_button name="recent_viewsort_btn" tool_tip="Opzioni"/>
-				<button name="add_friend_btn" tool_tip="Aggiungi il residente selezionato alla tua lista degli amici"/>
+			<panel label="bottom_panel" name="recent_buttons_panel">
+				<filter_editor label="Filtro persone" name="recent_filter_input"/>
+				<button name="gear_btn" tool_tip="Azioni per la persona selezionata:"/>
+				<menu_button name="recent_view_btn" tool_tip="Opzioni Mostra/Ordina"/>
+				<button name="add_friend_btn" tool_tip="Offri amicizia a un residente"/>
+				<dnd_button name="recent_del_btn" tool_tip="Rimuovi la persona selezionata dagli amici"/>
 			</panel>
 		</panel>
+		<panel label="BLOCCATO" name="blocked_panel">
+			<panel label="Residenti e oggetti bloccati" name="panel_block_list_sidetray"/>
+		</panel>
 	</tab_container>
-	<panel name="button_bar">
-		<layout_stack name="bottom_bar_ls">
-			<layout_panel name="view_profile_btn_lp">
-				<button label="Profilo" name="view_profile_btn" tool_tip="Mostra immagine, gruppi e altre informazioni del residente"/>
-			</layout_panel>
-			<layout_panel name="im_btn_lp">
-				<button label="IM" name="im_btn" tool_tip="Apri una sessione messaggio istantaneo"/>
-			</layout_panel>
-			<layout_panel name="call_btn_lp">
-				<button label="Chiama" name="call_btn" tool_tip="Chiama questo residente"/>
-			</layout_panel>
-			<layout_panel name="share_btn_lp">
-				<button label="Condividi" name="share_btn" tool_tip="Condividi un oggetto dell&apos;inventario"/>
-			</layout_panel>
-			<layout_panel name="teleport_btn_lp">
-				<button label="Teleport" name="teleport_btn" tool_tip="Offri teleport"/>
-			</layout_panel>
-		</layout_stack>
-		<layout_stack name="bottom_bar_ls1">
-			<layout_panel name="group_info_btn_lp">
-				<button label="Profilo del gruppo" name="group_info_btn" tool_tip="Mostra informazioni gruppo"/>
-			</layout_panel>
-			<layout_panel name="chat_btn_lp">
-				<button label="Chat di gruppo" name="chat_btn" tool_tip="Apri sessione chat"/>
-			</layout_panel>
-			<layout_panel name="group_call_btn_lp">
-				<button label="Chiamata al gruppo" name="group_call_btn" tool_tip="Chiama questo gruppo"/>
-			</layout_panel>
-		</layout_stack>
-	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/it/panel_preferences_chat.xml b/indra/newview/skins/default/xui/it/panel_preferences_chat.xml
index 0c9c4027e58..c2ac6e97a9c 100644
--- a/indra/newview/skins/default/xui/it/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/it/panel_preferences_chat.xml
@@ -1,34 +1,86 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Text Chat" name="chat">
-	<text name="font_size">
-		Dimensioni caratteri:
-	</text>
-	<radio_group name="chat_font_size">
-		<radio_item label="Piccola" name="radio" value="0"/>
-		<radio_item label="Media" name="radio2" value="1"/>
-		<radio_item label="Grande" name="radio3" value="2"/>
-	</radio_group>
-	<check_box initial_value="true" label="Simula la battitura tasti quando scrivi" name="play_typing_animation"/>
-	<check_box label="Quando sono OFF-LINE, spediscimi gli IM in una e-mail" name="send_im_to_email"/>
-	<check_box label="Attiva IM in testo semplice e cronologia chat" name="plain_text_chat_history"/>
-	<check_box label="Chat a vignetta" name="bubble_text_chat"/>
-	<text name="show_ims_in_label">
-		Mostra gli IM in:
-	</text>
-	<text name="requires_restart_label">
-		(richiede il riavvio)
-	</text>
-	<radio_group name="chat_window" tool_tip="Mostra i tuoi messaggi istantanei in diverse finestre, o in una finestra con più schede (richiede il riavvio)">
-		<radio_item label="Finestre separate" name="radio" value="0"/>
-		<radio_item label="Schede" name="radio2" value="1"/>
-	</radio_group>
-	<text name="disable_toast_label">
-		Attiva popup per chat in arrivo:
-	</text>
-	<check_box label="Chat di gruppo" name="EnableGroupChatPopups" tool_tip="Seleziona per vedere una finestra popup quando arriva una chat di gruppo"/>
-	<check_box label="Chat IM" name="EnableIMChatPopups" tool_tip="Seleziona per vedere una finestra popup quando arriva un messaggio IM"/>
-	<spinner label="Durata chat vicine:" name="nearby_toasts_lifetime"/>
-	<spinner label="Durata dissolvenza chat vicine:" name="nearby_toasts_fadingtime"/>
+	<panel>
+		<check_box initial_value="true" label="Simula la battitura tasti quando scrivi" name="play_typing_animation"/>
+		<check_box label="Quando sono OFF-LINE, spediscimi gli IM in una e-mail" name="send_im_to_email"/>
+		<check_box label="Solo amici e gruppi possono chiamarmi o mandarmi IM" name="voice_call_friends_only_check"/>
+		<text name="font_size">
+			Dimensioni caratteri:
+		</text>
+		<combo_box name="chat_font_size">
+			<item label="Piccolo" name="Small" value="0"/>
+			<item label="Medio" name="Medium" value="1"/>
+			<item label="Grande" name="Large" value="2"/>
+		</combo_box>
+		<check_box label="Chat a vignetta" name="bubble_text_chat"/>
+	</panel>
+	<panel>
+		<text name="notifications">
+			Notifiche
+		</text>
+		<text name="friend_ims">
+			IM degli amici:
+		</text>
+		<combo_box name="FriendIMOptions">
+			<item label="Apri finestra Conversazioni" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Mostra il messaggio in una finestra pop-up" name="PopUpMessage" value="toast"/>
+			<item label="Pulsante barra strumenti Flash" name="FlashToolbarButton" value="flash"/>
+			<item label="Nessuno" name="None" value="none"/>
+		</combo_box>
+		<text name="non_friend_ims">
+			IM non di amici:
+		</text>
+		<combo_box name="NonFriendIMOptions">
+			<item label="Apri finestra Conversazioni" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Mostra il messaggio in una finestra pop-up" name="PopUpMessage" value="toast"/>
+			<item label="Pulsante barra strumenti Flash" name="FlashToolbarButton" value="flash"/>
+			<item label="Nessuno" name="None" value="none"/>
+		</combo_box>
+		<text name="conference_ims">
+			IM conferenza:
+		</text>
+		<combo_box name="ConferenceIMOptions">
+			<item label="Apri finestra Conversazioni" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Mostra il messaggio in una finestra pop-up" name="PopUpMessage" value="toast"/>
+			<item label="Pulsante barra strumenti Flash" name="FlashToolbarButton" value="flash"/>
+			<item label="Nessuno" name="None" value="none"/>
+		</combo_box>
+		<text name="group_chat">
+			Chat di gruppo:
+		</text>
+		<combo_box name="GroupChatOptions">
+			<item label="Apri finestra Conversazioni" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Mostra il messaggio in una finestra pop-up" name="PopUpMessage" value="toast"/>
+			<item label="Pulsante barra strumenti Flash" name="FlashToolbarButton" value="flash"/>
+			<item label="Nessuno" name="None" value="none"/>
+		</combo_box>
+		<text name="nearby_chat">
+			Chat nei dintorni:
+		</text>
+		<combo_box name="NearbyChatOptions">
+			<item label="Apri finestra Conversazioni" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Mostra il messaggio in una finestra pop-up" name="PopUpMessage" value="toast"/>
+			<item label="Pulsante barra strumenti Flash" name="FlashToolBarButton" value="flash"/>
+			<item label="Nessuno" name="None" value="none"/>
+		</combo_box>
+		<text name="notifications_alert">
+			Per interrompere temporaneamente le notifiche, usa Comunica &gt; Non disturbare.
+		</text>
+	</panel>
+	<panel>
+		<text name="play_sound">
+			Riproduci suono:
+		</text>
+		<check_box label="Nuova conversazione" name="new_conversation"/>
+		<check_box label="Chiamata voce in arrivo" name="incoming_voice_call"/>
+		<check_box label="Offerta di Teleport" name="teleport_offer"/>
+		<check_box label="Offerta inventario" name="inventory_offer"/>
+	</panel>
+	<panel>
+		<button label="Cancella registro..." name="clear_log"/>
+		<button label="Cancella trascrizioni..." name="delete_transcripts"/>
+		<button label="Sfoglia..." label_selected="Sfoglia" name="log_path_button"/>
+	</panel>
 	<button label="Traduzione..." name="ok_btn"/>
 	<button label="Sostituzione automatica..." name="autoreplace_showgui"/>
 	<button label="Correzione ortografica..." name="spellcheck_showgui"/>
diff --git a/indra/newview/skins/default/xui/it/panel_preferences_general.xml b/indra/newview/skins/default/xui/it/panel_preferences_general.xml
index 90a833471ce..45cc06c2eae 100644
--- a/indra/newview/skins/default/xui/it/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/it/panel_preferences_general.xml
@@ -69,6 +69,9 @@
 		<combo_box.item label="mai" name="item4"/>
 	</combo_box>
 	<text name="text_box3">
-		Risposta in modalità occupato:
+		Risposta Non disturbare:
 	</text>
+	<text_editor name="do_not_disturb_response">
+		log_in_to_change
+	</text_editor>
 </panel>
diff --git a/indra/newview/skins/default/xui/it/sidepanel_task_info.xml b/indra/newview/skins/default/xui/it/sidepanel_task_info.xml
index 8a0f93e6509..5f912dd126e 100644
--- a/indra/newview/skins/default/xui/it/sidepanel_task_info.xml
+++ b/indra/newview/skins/default/xui/it/sidepanel_task_info.xml
@@ -72,6 +72,7 @@
 			<combo_box.item label="Acquista oggetto" name="Buyobject"/>
 			<combo_box.item label="Paga oggetto" name="Payobject"/>
 			<combo_box.item label="Apri" name="Open"/>
+			<combo_box.item label="Ingrandisci" name="Zoom"/>
 		</combo_box>
 		<panel name="perms_inv">
 			<text name="perm_modify">
diff --git a/indra/newview/skins/default/xui/it/strings.xml b/indra/newview/skins/default/xui/it/strings.xml
index fb1e3874682..f95318542b4 100644
--- a/indra/newview/skins/default/xui/it/strings.xml
+++ b/indra/newview/skins/default/xui/it/strings.xml
@@ -134,7 +134,7 @@
 		Esci
 	</string>
 	<string name="create_account_url">
-		http://join.secondlife.com/index.php?lang=it-IT&amp;sourceid=[sourceid]
+		http://join.secondlife.com/?sourceid=[sourceid]
 	</string>
 	<string name="LoginFailedViewerNotPermitted">
 		Il viewer utilizzato non è più in grado di accedere a Second Life. Visita la parina seguente per scaricare un nuovo viewer:
@@ -616,8 +616,8 @@ Prova ad accedere nuovamente tra un minuto.
 	<string name="AvatarAway">
 		Assente
 	</string>
-	<string name="AvatarBusy">
-		Occupato
+	<string name="AvatarDoNotDisturb">
+		Non disturbare
 	</string>
 	<string name="AvatarMuted">
 		Mutato
@@ -853,6 +853,12 @@ Prova ad accedere nuovamente tra un minuto.
 	<string name="ST_NO_JOINT">
 		Impossibile trovare ROOT o JOINT.
 	</string>
+	<string name="NearbyChatTitle">
+		Chat nei dintorni
+	</string>
+	<string name="NearbyChatLabel">
+		(Chat nei dintorni)
+	</string>
 	<string name="whisper">
 		sussurra:
 	</string>
@@ -916,6 +922,9 @@ Prova ad accedere nuovamente tra un minuto.
 	<string name="ControlYourCamera">
 		Controllare la tua fotocamera
 	</string>
+	<string name="AgentNameSubst">
+		(Tu)
+	</string>
 	<string name="TeleportYourAgent">
 		Teleportarti
 	</string>
@@ -1000,18 +1009,6 @@ Prova ad accedere nuovamente tra un minuto.
 	<string name="dictionary_files">
 		Dizionari
 	</string>
-	<string name="AvatarSetNotAway">
-		Imposta come non assente
-	</string>
-	<string name="AvatarSetAway">
-		Imposta come assente
-	</string>
-	<string name="AvatarSetNotBusy">
-		Imposta come non occupato
-	</string>
-	<string name="AvatarSetBusy">
-		Imposta come occupato
-	</string>
 	<string name="shape">
 		Figura corporea
 	</string>
@@ -1968,8 +1965,8 @@ Prova ad accedere nuovamente tra un minuto.
 	<string name="PanelContentsNewScript">
 		Nuovo script
 	</string>
-	<string name="BusyModeResponseDefault">
-		Il residente al quale hai inviato un messaggio è in modalità &apos;occupato&apos;, ovvero ha chiesto di non essere disturbato.  Il tuo messaggio comparirà nel suo pannello IM, dove potrà essere letto in un secondo momento.
+	<string name="DoNotDisturbModeResponseDefault">
+		Questo residente ha attivato la modalità &apos;Non disturbare&apos; e vedrà il tuo messaggio più tardi.
 	</string>
 	<string name="MuteByName">
 		(In base al nome)
@@ -2082,9 +2079,6 @@ Prova ad accedere nuovamente tra un minuto.
 	<string name="GroupMoneyDate">
 		[weekday,datetime,utc] [mth,datetime,utc] [day,datetime,utc], [year,datetime,utc]
 	</string>
-	<string name="ViewerObjectContents">
-		Contenuto
-	</string>
 	<string name="AcquiredItems">
 		Oggetti acquisiti
 	</string>
@@ -3799,7 +3793,7 @@ Se il messaggio persiste, contatta [SUPPORT_SITE].
 		Regione generale
 	</string>
 	<string name="LocationCtrlSeeAVsTooltip">
-		Avatar visibili e chat consentita fuori di questo lotto
+		Gli avatar in questo lotto non possono essere visti o sentiti da avatar all&apos;esterno del lotto
 	</string>
 	<string name="LocationCtrlPathfindingDirtyTooltip">
 		Gli oggetti che si muovono potrebbero non comportarsi correttamente in questa regione fino a quando non viene eseguito il rebake della regione.
@@ -3876,6 +3870,12 @@ Se il messaggio persiste, contatta [SUPPORT_SITE].
 	<string name="IM_unblock_only_groups_friends">
 		Per vedere questo messaggio, devi deselezionare &apos;Solo amici e gruppi possono chiamarmi o mandarmi IM&apos; in Preferenze/Privacy.
 	</string>
+	<string name="OnlineStatus">
+		Online
+	</string>
+	<string name="OfflineStatus">
+		Offline
+	</string>
 	<string name="answered_call">
 		Risposto alla chiamata
 	</string>
@@ -3885,6 +3885,9 @@ Se il messaggio persiste, contatta [SUPPORT_SITE].
 	<string name="you_joined_call">
 		Ti sei collegato alla chiamata in voce
 	</string>
+	<string name="you_auto_rejected_call-im">
+		Hai rifiutato automaticamente la chiamata voce mentre era attivata la modalità &apos;Non disturbare&apos;.
+	</string>
 	<string name="name_started_call">
 		[NAME] ha iniziato una chiamata vocale
 	</string>
@@ -3897,6 +3900,9 @@ Se il messaggio persiste, contatta [SUPPORT_SITE].
 	<string name="hang_up-im">
 		Chiusa la chiamata
 	</string>
+	<string name="conference-title">
+		Chat con più persone
+	</string>
 	<string name="conference-title-incoming">
 		Chiamata in conferenza con [AGENT_NAME]
 	</string>
@@ -4769,6 +4775,9 @@ Prova a racchiudere il percorso dell&apos;editor in doppie virgolette.
 	<string name="Command_Chat_Label">
 		Chat
 	</string>
+	<string name="Command_Conversations_Label">
+		Conversazioni
+	</string>
 	<string name="Command_Compass_Label">
 		Bussola
 	</string>
@@ -4844,6 +4853,9 @@ Prova a racchiudere il percorso dell&apos;editor in doppie virgolette.
 	<string name="Command_Chat_Tooltip">
 		Chatta con persone vicine usando il testo
 	</string>
+	<string name="Command_Conversations_Tooltip">
+		Conversa con chiunque
+	</string>
 	<string name="Command_Compass_Tooltip">
 		Bussola
 	</string>
@@ -4973,4 +4985,13 @@ Prova a racchiudere il percorso dell&apos;editor in doppie virgolette.
 	<string name="UserDictionary">
 		[User]
 	</string>
+	<string name="logging_calls_disabled_log_empty">
+		Le conversazioni non vengono registrate. Per iniziare a registrare, seleziona &quot;Salva: Solo registro&quot; oppure &quot;Salva: Registri e trascrizioni&quot; in Preferenze &gt; Chat.
+	</string>
+	<string name="logging_calls_disabled_log_not_empty">
+		Non verranno registrate più le conversazioni. Per riprendere a registrare, seleziona &quot;Salva: Solo registro&quot; oppure &quot;Salva: Registri e trascrizioni&quot; in Preferenze &gt; Chat.
+	</string>
+	<string name="logging_calls_enabled_log_empty">
+		Nessuna conversazione in registro. Dopo che hai contattato qualcuno o se qualcuno ti contatta, una voce del registro verrà mostrata qui.
+	</string>
 </strings>
diff --git a/indra/newview/skins/default/xui/ja/floater_conversation_log.xml b/indra/newview/skins/default/xui/ja/floater_conversation_log.xml
new file mode 100644
index 00000000000..98b1a59a0db
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/floater_conversation_log.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_conversation_log" title="会話ログ">
+	<panel name="buttons_panel">
+		<filter_editor label="人をフィルター" name="people_filter_input"/>
+		<menu_button name="conversation_view_btn" tool_tip="表示 / 並べ替えのオプション"/>
+		<menu_button name="conversations_gear_btn" tool_tip="選択した住人・グループに対するアクション"/>
+	</panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_conversation_preview.xml b/indra/newview/skins/default/xui/ja/floater_conversation_preview.xml
new file mode 100644
index 00000000000..ea0b23de483
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/floater_conversation_preview.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="preview_conversation" title="会話:">
+	<floater.string name="Title">
+		会話:[NAME]
+	</floater.string>
+	<text name="page_label" value="ページ"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_im_container.xml b/indra/newview/skins/default/xui/ja/floater_im_container.xml
index 06b65e27f0c..a155efdc1e6 100644
--- a/indra/newview/skins/default/xui/ja/floater_im_container.xml
+++ b/indra/newview/skins/default/xui/ja/floater_im_container.xml
@@ -1,2 +1,29 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<multi_floater name="floater_im_box" title="会話"/>
+<multi_floater name="floater_im_box" title="会話">
+	<string name="collapse_icon" value="Conv_toolbar_collapse"/>
+	<string name="expand_icon" value="Conv_toolbar_expand"/>
+	<layout_stack name="conversations_stack">
+		<layout_panel name="conversations_layout_panel">
+			<layout_stack name="conversations_pane_buttons_stack">
+				<layout_panel name="conversations_pane_buttons_expanded">
+					<menu_button name="sort_btn" tool_tip="オプションの表示 / 並べ替え"/>
+					<button name="add_btn" tool_tip="新しい会話を開始"/>
+					<button name="speak_btn" tool_tip="マイクを使って人と話す"/>
+				</layout_panel>
+				<layout_panel name="conversations_pane_buttons_collapsed">
+					<button name="expand_collapse_btn" tool_tip="このリストを閉じる / 開く"/>
+				</layout_panel>
+			</layout_stack>
+		</layout_panel>
+		<layout_panel name="messages_layout_panel">
+			<panel_container name="im_box_tab_container">
+				<panel name="stub_panel">
+					<button name="stub_collapse_btn" tool_tip="このペインを閉じる"/>
+					<text name="stub_textbox">
+						この会話は、別のウィンドウに表示されます。[secondlife:/// 戻る.]
+					</text>
+				</panel>
+			</panel_container>
+		</layout_panel>
+	</layout_stack>
+</multi_floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_im_session.xml b/indra/newview/skins/default/xui/ja/floater_im_session.xml
index dfa1c85ca23..a44c843df7f 100644
--- a/indra/newview/skins/default/xui/ja/floater_im_session.xml
+++ b/indra/newview/skins/default/xui/ja/floater_im_session.xml
@@ -1,8 +1,59 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="panel_im">
-	<layout_stack name="im_panels">
-		<layout_panel>
-			<line_editor label="宛先" name="chat_editor"/>
-		</layout_panel>
-	</layout_stack>
+	<floater.string name="call_btn_start">
+		Conv_toolbar_open_call
+	</floater.string>
+	<floater.string name="call_btn_stop">
+		Conv_toolbar_hang_up
+	</floater.string>
+	<floater.string name="collapseline_icon" value="Conv_collapse_to_one_line"/>
+	<floater.string name="expandline_icon" value="Conv_expand_one_line"/>
+	<floater.string name="collapse_icon" value="Conv_toolbar_collapse"/>
+	<floater.string name="expand_icon" value="Conv_toolbar_expand"/>
+	<floater.string name="tear_off_icon" value="Conv_toolbar_arrow_ne"/>
+	<floater.string name="return_icon" value="Conv_toolbar_arrow_sw"/>
+	<floater.string name="participant_added" value="[NAME] は会話に招待されました。"/>
+	<floater.string name="multiple_participants_added" value="[NAME] は会話に招待されました。"/>
+	<floater.string name="tooltip_to_separate_window" value="この会話を別のウィンドウへ移動する"/>
+	<floater.string name="tooltip_to_main_window" value="この会話をメインウィンドウへ戻す"/>
+	<floater.string name="start_call_button_tooltip" value="会話の接続を開く"/>
+	<floater.string name="end_call_button_tooltip" value="会話の接続を閉じる"/>
+	<floater.string name="expcol_button_not_tearoff_tooltip" value="このペインを閉じる"/>
+	<floater.string name="expcol_button_tearoff_and_expanded_tooltip" value="参加者リストを閉じる"/>
+	<floater.string name="expcol_button_tearoff_and_collapsed_tooltip" value="参加者リストを開く"/>
+	<view name="contents_view">
+		<layout_stack name="main_stack">
+			<layout_panel name="toolbar_panel">
+				<menu_button name="view_options_btn" tool_tip="表示 / 並べ替えのオプション"/>
+				<menu_button name="gear_btn" tool_tip="選択した人に対するアクション"/>
+				<button name="add_btn" tool_tip="この会話に他の人を追加する"/>
+				<button name="voice_call_btn" tool_tip="会話の接続を開く"/>
+				<button name="close_btn" tool_tip="この会話を終了する"/>
+				<button name="expand_collapse_btn" tool_tip="このペインを閉じる / 開く"/>
+			</layout_panel>
+			<layout_panel name="body_panel">
+				<layout_stack name="im_panels">
+					<layout_panel name="right_part_holder">
+						<panel name="trnsAndChat_panel">
+							<layout_stack name="translate_and_chat_stack">
+								<layout_panel name="translate_chat_checkbox_lp">
+									<check_box label="チャットを翻訳" name="translate_chat_checkbox"/>
+								</layout_panel>
+							</layout_stack>
+						</panel>
+					</layout_panel>
+				</layout_stack>
+			</layout_panel>
+			<layout_panel name="chat_layout_panel">
+				<layout_stack name="input_panels">
+					<layout_panel name="input_editor_layout_panel">
+						<chat_editor label="宛先" name="chat_editor"/>
+					</layout_panel>
+					<layout_panel name="input_button_layout_panel">
+						<button name="minz_btn" tool_tip="メッセージパネルの表示 / 非表示"/>
+					</layout_panel>
+				</layout_stack>
+			</layout_panel>
+		</layout_stack>
+	</view>
 </floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_incoming_call.xml b/indra/newview/skins/default/xui/ja/floater_incoming_call.xml
index f152fcd7381..308f6f9a3de 100644
--- a/indra/newview/skins/default/xui/ja/floater_incoming_call.xml
+++ b/indra/newview/skins/default/xui/ja/floater_incoming_call.xml
@@ -10,7 +10,7 @@
 		匿名ユーザー
 	</floater.string>
 	<floater.string name="VoiceInviteP2P">
-		がコールしています。
+		からコールを受けています。
 	</floater.string>
 	<floater.string name="VoiceInviteAdHoc">
 		がコンファレンスチャットで、ボイスチャットに参加しました。
@@ -25,9 +25,9 @@
 		[CURRENT_CHAT]を退席して、このボイスチャットに参加しますか?
 	</floater.string>
 	<text name="question">
-		[CURRENT_CHAT] を退席して、このボイスチャットに参加しますか?
+		コールに応答すると、現在のボイスチャットから切断されます。
 	</text>
-	<button label="はい" label_selected="はい" name="Accept"/>
-	<button label="いいえ" label_selected="いいえ" name="Reject"/>
-	<button label="IM" name="Start IM"/>
+	<button label="取る" label_selected="取る" name="Accept"/>
+	<button label="無視" label_selected="無視" name="Reject"/>
+	<button label="代わりに IM を開く" name="Start IM"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_pathfinding_console.xml b/indra/newview/skins/default/xui/ja/floater_pathfinding_console.xml
index ec107f3e6b9..9733c619181 100644
--- a/indra/newview/skins/default/xui/ja/floater_pathfinding_console.xml
+++ b/indra/newview/skins/default/xui/ja/floater_pathfinding_console.xml
@@ -71,7 +71,7 @@
 			<text name="show_label">
 				表示:
 			</text>
-			<check_box label="世界" name="show_world"/>
+			<check_box label="テスト" name="show_world"/>
 			<check_box label="可動物のみ" name="show_world_movables_only"/>
 			<check_box label="ナビメッシュ" name="show_navmesh"/>
 			<text name="show_walkability_label">
diff --git a/indra/newview/skins/default/xui/ja/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/ja/floater_texture_ctrl.xml
index 3773812bb66..37233d3e686 100644
--- a/indra/newview/skins/default/xui/ja/floater_texture_ctrl.xml
+++ b/indra/newview/skins/default/xui/ja/floater_texture_ctrl.xml
@@ -20,7 +20,7 @@
 	<button label="ブランク" label_selected="ブランク" name="Blank"/>
 	<button label="なし" label_selected="なし" name="None"/>
 	<button label="" label_selected="" name="Pipette"/>
-	<check_box initial_value="true" label="ライブプレビュー" name="apply_immediate_check"/>
+	<check_box initial_value="true" label="今すぐ適用" name="apply_immediate_check"/>
 	<text name="preview_disabled" value="プレビュー無効"/>
 	<filter_editor label="テクスチャをフィルター" name="inventory search editor"/>
 	<check_box initial_value="false" label="フォルダを表示" name="show_folders_check"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_voice_chat_volume.xml b/indra/newview/skins/default/xui/ja/floater_voice_chat_volume.xml
new file mode 100644
index 00000000000..44e96c35ad4
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/floater_voice_chat_volume.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_voice_volume" title="ボイスチャットの音量">
+	<slider label="ボイスチャット" name="chat_voice_volume"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_voice_effect.xml b/indra/newview/skins/default/xui/ja/floater_voice_effect.xml
index ee675e143b0..b38ea9331ad 100644
--- a/indra/newview/skins/default/xui/ja/floater_voice_effect.xml
+++ b/indra/newview/skins/default/xui/ja/floater_voice_effect.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater label="場所" name="voice_effects" title="ボイスモーフィング">
+<floater label="場所" name="voice_effects" title="ボイスモーフィングのプレビュー">
 	<string name="no_voice_effect">
 		(ボイスモーフィングなし)
 	</string>
diff --git a/indra/newview/skins/default/xui/ja/floater_voice_volume.xml b/indra/newview/skins/default/xui/ja/floater_voice_volume.xml
new file mode 100644
index 00000000000..a380615d5a4
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/floater_voice_volume.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!--
+  Not can_close / no title to avoid window chrome
+  Single instance - only have one at a time, recycle it each spawn
+-->
+<floater name="floater_voice_volume" title="ボイス音量">
+	<slider name="volume_slider" tool_tip="ボイス音量" value="0.5"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/menu_cof_gear.xml b/indra/newview/skins/default/xui/ja/menu_cof_gear.xml
index a071abbd2e8..07bcefd9b37 100644
--- a/indra/newview/skins/default/xui/ja/menu_cof_gear.xml
+++ b/indra/newview/skins/default/xui/ja/menu_cof_gear.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear COF">
+<toggleable_menu name="Gear COF">
 	<menu label="衣類" name="COF.Gear.New_Clothes"/>
-	<menu label="新しい身体部位" name="COF.Geear.New_Body_Parts"/>
-</menu>
+	<menu label="新しい身体部位" name="COF.Gear.New_Body_Parts"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_conversation.xml b/indra/newview/skins/default/xui/ja/menu_conversation.xml
new file mode 100644
index 00000000000..c7df20d2529
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/menu_conversation.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_conversation_participant">
+	<menu_item_call label="会話を終える" name="close_conversation"/>
+	<menu_item_call label="ボイスチャットを始める" name="open_voice_conversation"/>
+	<menu_item_call label="ボイスチャットを切断する" name="disconnect_from_voice"/>
+	<menu_item_call label="プロフィールを表示" name="view_profile"/>
+	<menu_item_call label="IM" name="im"/>
+	<menu_item_call label="テレポートを送る" name="offer_teleport"/>
+	<menu_item_call label="ボイスコール" name="voice_call"/>
+	<menu_item_call label="チャットの履歴..." name="chat_history"/>
+	<menu_item_call label="フレンドを追加" name="add_friend"/>
+	<menu_item_call label="フレンドを削除" name="remove_friend"/>
+	<menu_item_call label="フレンドを削除" name="remove_friends"/>
+	<menu_item_call label="グループに招待..." name="invite_to_group"/>
+	<menu_item_call label="ズームイン" name="zoom_in"/>
+	<menu_item_call label="地図" name="map"/>
+	<menu_item_call label="共有" name="share"/>
+	<menu_item_call label="支払い" name="pay"/>
+	<menu_item_check label="ボイスをブロック" name="block_unblock"/>
+	<menu_item_check label="文字をブロックする" name="MuteText"/>
+	<menu_item_call label="グループ情報" name="group_profile"/>
+	<menu_item_call label="グループをアクティブにする" name="activate_group"/>
+	<menu_item_call label="グループから脱退する" name="leave_group"/>
+	<context_menu label="モデレーターのオプション" name="Moderator Options">
+		<menu_item_check label="文字チャットを許可" name="AllowTextChat"/>
+		<menu_item_call label="この参加者をミュートする" name="ModerateVoiceMuteSelected"/>
+		<menu_item_call label="この参加者のミュートを解除する" name="ModerateVoiceUnMuteSelected"/>
+		<menu_item_call label="全員の音声をミュートする" name="ModerateVoiceMute"/>
+		<menu_item_call label="全員のミュートを解除する" name="ModerateVoiceUnmute"/>
+	</context_menu>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_conversation_log_gear.xml b/indra/newview/skins/default/xui/ja/menu_conversation_log_gear.xml
new file mode 100644
index 00000000000..c9d4f947a48
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/menu_conversation_log_gear.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Conversation Context Menu">
+	<menu_item_call label="IM..." name="IM"/>
+	<menu_item_call label="ボイスコール..." name="Call"/>
+	<menu_item_call label="チャットの履歴を開く..." name="Chat history"/>
+	<menu_item_call label="プロフィールを表示" name="View Profile"/>
+	<menu_item_call label="テレポートを送る" name="teleport"/>
+	<menu_item_call label="フレンド登録" name="add_friend"/>
+	<menu_item_call label="フレンドを削除" name="remove_friend"/>
+	<menu_item_call label="グループに招待..." name="Invite"/>
+	<menu_item_call label="地図" name="Map"/>
+	<menu_item_call label="共有" name="Share"/>
+	<menu_item_call label="支払い" name="Pay"/>
+	<menu_item_check label="ブロック・ブロック解除" name="Block/Unblock"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_conversation_log_view.xml b/indra/newview/skins/default/xui/ja/menu_conversation_log_view.xml
new file mode 100644
index 00000000000..bd4812603f7
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/menu_conversation_log_view.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_conversation_view">
+	<menu_item_check label="名前で並べ替え" name="sort_by_name"/>
+	<menu_item_check label="日付で並べ替え" name="sort_by_date"/>
+	<menu_item_check label="上位のフレンドを並べ替え" name="sort_by_friends"/>
+	<menu_item_call label="近くのチャットの履歴を表示..." name="view_nearby_chat_history"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_im_conversation.xml b/indra/newview/skins/default/xui/ja/menu_im_conversation.xml
new file mode 100644
index 00000000000..55cd6610f75
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/menu_im_conversation.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Conversation Gear Menu">
+	<menu_item_call label="プロフィールを表示" name="View Profile"/>
+	<menu_item_call label="フレンド登録" name="Add Friend"/>
+	<menu_item_call label="フレンドを削除" name="remove_friend"/>
+	<menu_item_call label="テレポートを送る" name="offer_teleport"/>
+	<menu_item_call label="グループに招待..." name="invite_to_group"/>
+	<menu_item_call label="チャットの履歴..." name="chat_history"/>
+	<menu_item_call label="ズームイン" name="zoom_in"/>
+	<menu_item_call label="地図" name="map"/>
+	<menu_item_call label="共有" name="Share"/>
+	<menu_item_call label="支払い" name="Pay"/>
+	<menu_item_check label="ボイスをブロック" name="Block/Unblock"/>
+	<menu_item_check label="文字をブロックする" name="MuteText"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_im_session_showmodes.xml b/indra/newview/skins/default/xui/ja/menu_im_session_showmodes.xml
new file mode 100644
index 00000000000..222a7417189
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/menu_im_session_showmodes.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_modes">
+	<menu_item_check label="簡略表示" name="compact_view"/>
+	<menu_item_check label="詳細表示" name="expanded_view"/>
+	<menu_item_check label="時間を表示" name="IMShowTime"/>
+	<menu_item_check label="1対1の会話で名前を表示" name="IMShowNamesForP2PConv"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_object_icon.xml b/indra/newview/skins/default/xui/ja/menu_object_icon.xml
index 8c4f3286618..6448e9244ec 100644
--- a/indra/newview/skins/default/xui/ja/menu_object_icon.xml
+++ b/indra/newview/skins/default/xui/ja/menu_object_icon.xml
@@ -2,4 +2,6 @@
 <menu name="Object Icon Menu">
 	<menu_item_call label="オブジェクトのプロフィール..." name="Object Profile"/>
 	<menu_item_call label="ブロック..." name="Block"/>
+	<menu_item_call label="地図に表示" name="show_on_map"/>
+	<menu_item_call label="オブジェクトの場所にテレポート" name="teleport_to_object"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_outfit_gear.xml b/indra/newview/skins/default/xui/ja/menu_outfit_gear.xml
index 2bcbe1915b4..1969ae2a102 100644
--- a/indra/newview/skins/default/xui/ja/menu_outfit_gear.xml
+++ b/indra/newview/skins/default/xui/ja/menu_outfit_gear.xml
@@ -23,6 +23,8 @@
 		<menu_item_call label="髪" name="New Hair"/>
 		<menu_item_call label="ç›®" name="New Eyes"/>
 	</menu>
+	<menu_item_call label="フォルダをすべて開く" name="expand"/>
+	<menu_item_call label="フォルダをすべて閉じる" name="collapse"/>
 	<menu_item_call label="アウトフィットの名前を変更する" name="rename"/>
 	<menu_item_call label="アウトフィットを削除する" name="delete_outfit"/>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_participant_view.xml b/indra/newview/skins/default/xui/ja/menu_participant_view.xml
new file mode 100644
index 00000000000..5816351d9de
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/menu_participant_view.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="participant_manu_view">
+	<menu_item_check label="会話をタイプで並べ替え" name="sort_sessions_by_type"/>
+	<menu_item_check label="会話を名前で並べ替え" name="sort_sessions_by_name"/>
+	<menu_item_check label="会話を最新アクティビティで並べ替え" name="sort_sessions_by_recent"/>
+	<menu_item_check label="参加者を名前で並べ替え" name="sort_participants_by_name"/>
+	<menu_item_check label="参加者を最新アクティビティで並べ替え" name="sort_participants_by_recent"/>
+	<menu_item_call label="チャットの環境設定..." name="chat_preferences"/>
+	<menu_item_call label="プライバシーの環境設定..." name="privacy_preferences"/>
+	<menu_item_check label="会話ログ..." name="Conversation"/>
+	<menu_item_check label="近くのチャットを翻訳" name="Translate_chat"/>
+	<menu_item_check label="翻訳の設定..." name="Translation_settings"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_people_blocked_gear.xml b/indra/newview/skins/default/xui/ja/menu_people_blocked_gear.xml
new file mode 100644
index 00000000000..b5c9d11e021
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/menu_people_blocked_gear.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_blocked_gear">
+	<menu_item_call label="ブロック解除" name="unblock"/>
+	<menu_item_call label="プロフィール..." name="profile"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_people_blocked_plus.xml b/indra/newview/skins/default/xui/ja/menu_people_blocked_plus.xml
new file mode 100644
index 00000000000..3e74b2ddff6
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/menu_people_blocked_plus.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_blocked_plus">
+	<menu_item_call label="名前で住人をブロック..." name="block_resident_by_name"/>
+	<menu_item_call label="名前でオブジェクトをブロック..." name="block_object_by_name"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_people_blocked_view.xml b/indra/newview/skins/default/xui/ja/menu_people_blocked_view.xml
new file mode 100644
index 00000000000..4b86a353f4b
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/menu_people_blocked_view.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_blocked_view">
+	<menu_item_check label="名前で並べ替え" name="sort_by_name"/>
+	<menu_item_check label="タイプによる並べ替え" name="sort_by_type"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_people_friends_view.xml b/indra/newview/skins/default/xui/ja/menu_people_friends_view.xml
new file mode 100644
index 00000000000..b95d11fdbdc
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/menu_people_friends_view.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="名前で並べ替え" name="sort_name"/>
+	<menu_item_check label="オンライン状況で並べ替え" name="sort_status"/>
+	<menu_item_check label="人のアイコン表示" name="view_icons"/>
+	<menu_item_check label="与えられた権限を表示" name="view_permissions"/>
+	<menu_item_check label="会話ログを表示..." name="view_conversation"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_people_groups.xml b/indra/newview/skins/default/xui/ja/menu_people_groups.xml
index 842d79dc4be..2c0c85ba289 100644
--- a/indra/newview/skins/default/xui/ja/menu_people_groups.xml
+++ b/indra/newview/skins/default/xui/ja/menu_people_groups.xml
@@ -2,7 +2,7 @@
 <menu name="menu_group_plus">
 	<menu_item_call label="情報を表示" name="View Info"/>
 	<menu_item_call label="チャット" name="Chat"/>
-	<menu_item_call label="コール" name="Call"/>
+	<menu_item_call label="ボイスコール" name="Call"/>
 	<menu_item_call label="アクティブ" name="Activate"/>
 	<menu_item_call label="脱退" name="Leave"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_people_groups_view.xml b/indra/newview/skins/default/xui/ja/menu_people_groups_view.xml
new file mode 100644
index 00000000000..4a9e402fa4f
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/menu_people_groups_view.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="グループアイコンを表示" name="Display Group Icons"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_people_nearby.xml b/indra/newview/skins/default/xui/ja/menu_people_nearby.xml
index 8d84b0e521c..972ab767bf4 100644
--- a/indra/newview/skins/default/xui/ja/menu_people_nearby.xml
+++ b/indra/newview/skins/default/xui/ja/menu_people_nearby.xml
@@ -1,13 +1,16 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Avatar Context Menu">
-	<menu_item_call label="プロフィールの表示" name="View Profile"/>
-	<menu_item_call label="フレンド登録" name="Add Friend"/>
-	<menu_item_call label="フレンドを削除" name="Remove Friend"/>
-	<menu_item_call label="IM" name="IM"/>
-	<menu_item_call label="コール" name="Call"/>
-	<menu_item_call label="地図" name="Map"/>
-	<menu_item_call label="共有" name="Share"/>
-	<menu_item_call label="支払う" name="Pay"/>
-	<menu_item_check label="ブロック・ブロック解除" name="Block/Unblock"/>
-	<menu_item_call label="テレポートを送る" name="teleport"/>
+	<menu_item_call label="プロフィールを表示" name="view_profile"/>
+	<menu_item_call label="IM" name="im"/>
+	<menu_item_call label="テレポートを送る" name="offer_teleport"/>
+	<menu_item_call label="ボイスコール" name="voice_call"/>
+	<menu_item_call label="チャットの履歴を表示..." name="chat_history"/>
+	<menu_item_call label="フレンド登録" name="add_friend"/>
+	<menu_item_call label="フレンドを削除" name="remove_friend"/>
+	<menu_item_call label="グループに招待..." name="invite_to_group"/>
+	<menu_item_call label="ズームイン" name="zoom_in"/>
+	<menu_item_call label="地図" name="map"/>
+	<menu_item_call label="共有" name="share"/>
+	<menu_item_call label="支払い" name="pay"/>
+	<menu_item_check label="ブロック・ブロック解除" name="block_unblock"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/ja/menu_people_nearby_multiselect.xml
index 3f20e5d3ab1..fe85e278cfd 100644
--- a/indra/newview/skins/default/xui/ja/menu_people_nearby_multiselect.xml
+++ b/indra/newview/skins/default/xui/ja/menu_people_nearby_multiselect.xml
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Multi-Selected People Context Menu">
-	<menu_item_call label="フレンド登録" name="Add Friends"/>
-	<menu_item_call label="フレンドを削除" name="Remove Friend"/>
-	<menu_item_call label="IM" name="IM"/>
-	<menu_item_call label="コール" name="Call"/>
-	<menu_item_call label="共有" name="Share"/>
-	<menu_item_call label="支払う" name="Pay"/>
-	<menu_item_call label="テレポートを送る" name="teleport"/>
+	<menu_item_call label="フレンド登録" name="add_friends"/>
+	<menu_item_call label="フレンドを削除" name="remove_friends"/>
+	<menu_item_call label="IM" name="im"/>
+	<menu_item_call label="コール" name="call"/>
+	<menu_item_call label="共有" name="share"/>
+	<menu_item_call label="支払い" name="pay"/>
+	<menu_item_call label="テレポートを送る" name="offer_teleport"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_people_nearby_view.xml b/indra/newview/skins/default/xui/ja/menu_people_nearby_view.xml
new file mode 100644
index 00000000000..b7cccc4396d
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/menu_people_nearby_view.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="最近の発言者で並べ替え" name="sort_by_recent_speakers"/>
+	<menu_item_check label="名前で並べ替え" name="sort_name"/>
+	<menu_item_check label="距離で並べ替え" name="sort_distance"/>
+	<menu_item_check label="人のアイコン表示" name="view_icons"/>
+	<menu_item_check label="地図を表示" name="view_map"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_people_recent_view.xml b/indra/newview/skins/default/xui/ja/menu_people_recent_view.xml
new file mode 100644
index 00000000000..feaeba4398e
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/menu_people_recent_view.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="新しい順に並べ替え" name="sort_most"/>
+	<menu_item_check label="名前で並べ替え" name="sort_name"/>
+	<menu_item_check label="人のアイコン表示" name="view_icons"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_url_agent.xml b/indra/newview/skins/default/xui/ja/menu_url_agent.xml
index 92d118a5aec..72722db7cca 100644
--- a/indra/newview/skins/default/xui/ja/menu_url_agent.xml
+++ b/indra/newview/skins/default/xui/ja/menu_url_agent.xml
@@ -1,6 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Url Popup">
-	<menu_item_call label="住人のプロフィールを表示" name="show_agent"/>
+	<menu_item_call label="プロフィールを表示" name="show_agent"/>
+	<menu_item_call label="IM を送信..." name="send_im"/>
+	<menu_item_call label="フレンドを追加..." name="add_friend"/>
 	<menu_item_call label="名前をクリップボードにコピー" name="url_copy_label"/>
 	<menu_item_call label="SLurl をクリップボードにコピー" name="url_copy"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_url_objectim.xml b/indra/newview/skins/default/xui/ja/menu_url_objectim.xml
index d6a048dcfcc..9e340e3239c 100644
--- a/indra/newview/skins/default/xui/ja/menu_url_objectim.xml
+++ b/indra/newview/skins/default/xui/ja/menu_url_objectim.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Url Popup">
-	<menu_item_call label="オブジェクトの情報を表示" name="show_object"/>
+	<menu_item_call label="オブジェクトのプロフィール..." name="show_object"/>
 	<menu_item_call label="地図に表示" name="show_on_map"/>
 	<menu_item_call label="オブジェクトの場所にテレポート" name="teleport_to_object"/>
 	<menu_item_call label="オブジェクト名をクリップボードにコピー" name="url_copy_label"/>
diff --git a/indra/newview/skins/default/xui/ja/menu_viewer.xml b/indra/newview/skins/default/xui/ja/menu_viewer.xml
index e60e6781c6e..6f650242b4e 100644
--- a/indra/newview/skins/default/xui/ja/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/ja/menu_viewer.xml
@@ -16,10 +16,7 @@
 			<menu_item_call label="私のアニメーションを停止する" name="Stop Animating My Avatar"/>
 			<menu_item_call label="歩行/走行/飛行..." name="Walk / run / fly"/>
 		</menu>
-		<menu label="ログイン" name="Status">
-			<menu_item_call label="一時退席中" name="Set Away"/>
-			<menu_item_call label="取り込み中" name="Set Busy"/>
-		</menu>
+		<menu label="ログイン" name="Status"/>
 		<menu_item_call label="L$ の購入..." name="Buy and Sell L$"/>
 		<menu_item_call label="マーチャントアウトボックス..." name="MerchantOutbox"/>
 		<menu_item_call label="マイアカウント..." name="Manage My Account">
@@ -32,14 +29,18 @@
 		<menu_item_call label="[APP_NAME] を終了" name="Quit"/>
 	</menu>
 	<menu label="コミュニケーション" name="Communicate">
-		<menu_item_check label="チャット..." name="Nearby Chat"/>
+		<menu_item_check label="会話..." name="Conversations"/>
+		<menu_item_check label="近くのチャット..." name="Nearby Chat"/>
 		<menu_item_check label="話す" name="Speak"/>
-		<menu_item_check label="ボイス設定..." name="Nearby Voice"/>
-		<menu_item_check label="ボイスモーフィング..." name="ShowVoice"/>
+		<menu label="ボイスモーフィング" name="VoiceMorphing">
+			<menu_item_check label="ボイスモーフィングなし" name="NoVoiceMorphing"/>
+			<menu_item_check label="プレビュー..." name="Preview"/>
+			<menu_item_call label="申し込む..." name="Subscribe"/>
+		</menu>
 		<menu_item_check label="ジェスチャー..." name="Gestures"/>
-		<menu_item_call label="フレンド" name="My Friends"/>
-		<menu_item_call label="グループ" name="My Groups"/>
-		<menu_item_call label="近くにいる人" name="Active Speakers"/>
+		<menu_item_check label="フレンド" name="My Friends"/>
+		<menu_item_check label="グループ" name="My Groups"/>
+		<menu_item_check label="近くにいる人" name="Active Speakers"/>
 		<menu_item_call label="リストをブロック" name="Block List"/>
 	</menu>
 	<menu label="世界" name="World">
@@ -115,7 +116,6 @@
 			<menu_item_call label="買う" name="Menu Object Buy"/>
 			<menu_item_call label="取る" name="Menu Object Take"/>
 			<menu_item_call label="コピーを取る" name="Take Copy"/>
-			<menu_item_call label="マイインベントリに保存" name="Save Object Back to My Inventory"/>
 			<menu_item_call label="オブジェクトの中身に保存" name="Save Object Back to Object Contents"/>
 			<menu_item_call label="オブジェクトを返却する" name="Return Object back to Owner"/>
 		</menu>
@@ -130,6 +130,7 @@
 			<menu_item_call label="リンクセット..." name="pathfinding_linksets_menu_item"/>
 			<menu_item_call label="キャラクター..." name="pathfinding_characters_menu_item"/>
 			<menu_item_call label="表示/テスト..." name="pathfinding_console_menu_item"/>
+			<menu_item_call label="地域の再構築" name="pathfinding_rebake_navmesh_item"/>
 		</menu>
 		<menu label="オプション" name="Options">
 			<menu_item_check label="権限の詳細を表示する" name="DebugPermissions"/>
@@ -159,6 +160,13 @@
 	<menu label="ヘルプ" name="Help">
 		<menu_item_call label="ハウツー..." name="How To"/>
 		<menu_item_call label="[SECOND_LIFE] ヘルプ" name="Second Life Help"/>
+		<menu_item_call label="ユーザーガイド" name="User’s guide"/>
+		<menu_item_call label="ナレッジベース" name="Knowledge Base"/>
+		<menu_item_call label="Wiki" name="Wiki"/>
+		<menu_item_call label="コミュニティフォーラム" name="Community Forums"/>
+		<menu_item_call label="日本語サポートページ" name="Support portal"/>
+		<menu_item_call label="[SECOND_LIFE] ニュース" name="Second Life News"/>
+		<menu_item_call label="[SECOND_LIFE] ブログ" name="Second Life Blogs"/>
 		<menu_item_call label="嫌がらせを報告する" name="Report Abuse"/>
 		<menu_item_call label="バグを報告する" name="Report Bug"/>
 		<menu_item_call label="[APP_NAME] について" name="About Second Life"/>
@@ -385,9 +393,14 @@
 				<menu_item_call label="女性アバターのテスト" name="Test Female"/>
 				<menu_item_check label="選択アバター許可" name="Allow Select Avatar"/>
 			</menu>
+			<menu label="アニメーションのスピード" name="Animation Speed">
+				<menu_item_call label="すべてのアニメーションのスピードを 10% アップ" name="All Animations 10 Faster"/>
+				<menu_item_call label="すべてのアニメーションのスピードを 10% ダウン" name="All Animations 10 Slower"/>
+				<menu_item_call label="すべてのアニメーションのスピードをリセット" name="Reset All Animation Speed"/>
+				<menu_item_check label="アニメーションをスローモーション" name="Slow Motion Animations"/>
+			</menu>
 			<menu_item_call label="パラメータを強制的にデフォルトにする" name="Force Params to Default"/>
 			<menu_item_check label="アニメーション情報" name="Animation Info"/>
-			<menu_item_check label="スローモーションのアニメーション" name="Slow Motion Animations"/>
 			<menu_item_check label="見ているものを表示する" name="Show Look At"/>
 			<menu_item_check label="クリックした場所を表示する" name="Show Point At"/>
 			<menu_item_check label="結合部のアップデートのデバッグ" name="Debug Joint Updates"/>
diff --git a/indra/newview/skins/default/xui/ja/notifications.xml b/indra/newview/skins/default/xui/ja/notifications.xml
index d5cff18a24a..356506f1912 100644
--- a/indra/newview/skins/default/xui/ja/notifications.xml
+++ b/indra/newview/skins/default/xui/ja/notifications.xml
@@ -538,6 +538,24 @@ L$ が不足しているのでこのグループに参加することができ
 		</url>
 		<usetemplate ignoretext="使用しているグラフィックドライバが古い場合" name="okcancelignore" notext="いいえ" yestext="はい"/>
 	</notification>
+	<notification name="AMDOldDriver">
+		お使いのグラフィックチップには最新のドライバが存在するようです。グラフィックドライバを更新すると、パフォーマンスが大幅に改善されます。
+
+[_URL] へアクセスして、ドライバーを更新しますか。
+		<url name="url">
+			http://support.amd.com/us/Pages/AMDSupportHub.aspx
+		</url>
+		<usetemplate ignoretext="自分のグラフィックドライバが旧くなりました。" name="okcancelignore" notext="いいえ" yestext="はい"/>
+	</notification>
+	<notification name="NVIDIAOldDriver">
+		お使いのグラフィックチップには最新のドライバが存在するようです。グラフィックドライバを更新すると、パフォーマンスが大幅に改善されます。
+
+[_URL] へアクセスして、ドライバーを更新しますか。
+		<url name="url">
+			http://www.nvidia.com/Download/index.aspx?lang=en-us
+		</url>
+		<usetemplate ignoretext="自分のグラフィックドライバが旧くなりました。" name="okcancelignore" notext="いいえ" yestext="はい"/>
+	</notification>
 	<notification name="UnknownGPU">
 		お使いのシステムには、[APP_NAME] が認識できないグラフィックカードが搭載されています。
 [APP_NAME] でまだテストされていない最新ハードウェアのためだと考えられます。  問題ないとは思いますが、グラフィックの設定を調整する必要があるかもしれません。
@@ -1582,10 +1600,13 @@ http://secondlife.com/download から最新バージョンをダウンロード
 		現在フレンドシップを送れません。数分後にもう一度お試しください。
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
-	<notification name="BusyModeSet">
-		取り込み中モードになりました。
-チャットとインスタントメッセージは表示されません。 受信するインスタントメッセージには取り込み中返答メッセージが表示されます。 テレポートのオファーは受け取り拒否となります。 アイテムのオファーはすべてごみ箱に入ります。
-		<usetemplate ignoretext="ログイン状態を取り込み中モードに変更するとき" name="okignore" yestext="OK"/>
+	<notification name="DoNotDisturbModeSet">
+		「通知を受けない」がオンになります。着信通信はあなたには通知されません。
+
+- 他の住民は「通知を受けない」の応答(「設定」&gt;「一般」で設定)を受け取ることになります。
+- テレポートのオファーはすべて受け取り拒否となります。
+- ボイスコールは拒否されます。
+		<usetemplate ignoretext="マイ ログイン状態を「通知を受けない」モードに変更しました。" name="okignore" yestext="OK"/>
 	</notification>
 	<notification name="JoinedTooManyGroupsMember">
 		加入できるグループの最大限に達しました。 このグループに加入するために他のグループを脱退するか、この申し入れを断ってください。
@@ -2076,6 +2097,10 @@ L$ [AMOUNT] で、このクラシファイド広告を今すぐ公開します
 		[http://jp.secondlife.com/account/ マイアカウント] ページに移動してアカウント履歴を確認しますか?
 		<usetemplate ignoretext="ブラウザを起動してアカウント履歴を見るとき" name="okcancelignore" notext="取り消し" yestext="ページに移動"/>
 	</notification>
+	<notification name="ConfirmAddingChatParticipants">
+		既存の会話に人を加えると、新しい会話が作成されます。参加者全員に新しい会話についての通知が配信されます。
+		<usetemplate ignoretext="チャットの参加者の追加を確認してください" name="okcancelignore" notext="取り消し" yestext="OK"/>
+	</notification>
 	<notification name="ConfirmQuit">
 		終了しようとしています。続けますか?
 		<usetemplate ignoretext="終了時の確認" name="okcancelignore" notext="終了しない" yestext="終了"/>
@@ -2153,14 +2178,14 @@ Linden Lab
 			<button ignore="交換しない" name="No" text="キャンセル"/>
 		</form>
 	</notification>
-	<notification label="取り込み中の警告" name="BusyModePay">
-		現在、「取り込み中」モードのため、支払いと引き換えにアイテムを受け取ることができません。
+	<notification label="「通知を受けない」モードの警告" name="DoNotDisturbModePay">
+		「通知を受けない」をオンにします。この支払との交換で提供されるアイテムが受信されなくなります。
 
-この取引を行うために「取り込み中」の設定を解除しますか?
+このトランザクションを完了するために、「通知を受けない」をオフにしてもよろしいですか。
 		<form name="form">
-			<ignore name="ignore" save_option="true" text="取り込み中モード時に支払をするとき"/>
-			<button ignore="常に「取り込み中」の設定を解除" name="Yes" text="OK"/>
-			<button ignore="常に「取り込み中」の設定を継続" name="No" text="キャンセル"/>
+			<ignore name="ignore" text="「通知を受けない」モード時に、人や物を支払う予定です。"/>
+			<button ignore="「通知を受けない」モードを維持しない" name="Yes" text="OK"/>
+			<button ignore="「通知を受けない」モードを維持する" name="No" text="取り消し"/>
 		</form>
 	</notification>
 	<notification name="ConfirmDeleteProtectedCategory">
@@ -2296,11 +2321,8 @@ Web ページにリンクすると、他人がこの場所に簡単にアクセ
 	<notification name="GroupNotice">
 		件名: [SUBJECT]、メッセージ: [MESSAGE]
 	</notification>
-	<notification name="FriendOnline">
-		&lt;nolink&gt;[NAME]&lt;/nolink&gt; はオンラインです
-	</notification>
-	<notification name="FriendOffline">
-		&lt;nolink&gt;[NAME]&lt;/nolink&gt; はオフラインです
+	<notification name="FriendOnlineOffline">
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; は [STATUS] です
 	</notification>
 	<notification name="AddSelfFriend">
 		残念ながら自分自身をフレンド登録することはできません。
@@ -2530,13 +2552,6 @@ Web ページにリンクすると、他人がこの場所に簡単にアクセ
 	<notification name="DynamicPathfindingDisabled">
 		この地域(リージョン)でダイナミックパスファインディングが有効になっていません。パスファインディング LSL 呼び出しを使用するスクリプト化されたオブジェクトがこの地域(リージョン)では動作できません。
 	</notification>
-	<notification name="PathfindingRebakeNavmesh">
-		この地域(リージョン)のオブジェクトを変更すると、他の移動オブジェクトが正しく動作しなくなる恐れがあります。移動オブジェクトを正しく動作させるには、「地域の再構築」ボタンをクリックします。詳しい情報は見るには「ヘルプ」を選択してください。
-		<url name="url">
-			http://wiki.secondlife.com/wiki/Pathfinding_Tools_in_the_Second_Life_Viewer
-		</url>
-		<usetemplate helptext="ヘルプ" ignoretext="この地域(リージョン)のオブジェクトを変更すると、他の移動オブジェクトが正しく動作しなくなる恐れがあります。" name="okhelpignore" yestext="OK"/>
-	</notification>
 	<notification name="PathfindingCannotRebakeNavmesh">
 		エラーが発生しました。ネットワークまたはサーバーに問題があるか、制作権がない可能性があります。この問題は、一度ログアウトしてから、ログインし直すと解決される場合があります。
 		<usetemplate name="okbutton" yestext="OK"/>
@@ -2797,9 +2812,9 @@ Web ページにリンクすると、他人がこの場所に簡単にアクセ
 		</form>
 	</notification>
 	<notification name="ScriptQuestionCaution">
-		警告:オブジェクト &apos;&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;&apos; はあなたのリンデンドルアカウントへのトータルアクセスを希望しています。アクセスを許可すると、このオブジェクトはいつでもあなたのアカウントから資金を削除したり、今後警告を表示することなく継続的にアカウントを完全に空にできるようになります。
+		警告:オブジェクト &apos;&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;&apos; は、あなたのリンデンドルアカウントへのフルアクセスを要求しています。アクセスを許可すると、このオブジェクトは、特に警告を発せずに単発で、随時アカウントから資金を削除するか、アカウントを完全に空にします。
   
-このようなリクエストが正当であることは稀です。このオブジェクトがあなたのアカウントにアクセスしたい理由を完全に理解している場合を除き、アクセスの許可は避けてください。
+そのオブジェクトがアカウントへのアクセスを要求する理由がよくわからない場合は、アクセスを許可しないでください。
 		<form name="form">
 			<button name="Grant" text="トータルアクセスを許可"/>
 			<button name="Deny" text="拒否"/>
@@ -3378,4 +3393,627 @@ M キーを押して変更します。
 		[NUM_ITEMS] 個のアイテムを削除中です。続けますか?
 		<usetemplate ignoretext="複数のアイテムを削除しますか?" name="okcancelignore" notext="いいえ" yestext="はい"/>
 	</notification>
+	<notification name="AvatarFrozen">
+		[AV_FREEZER] によってあなたはフリーズされています。世界を動かすことも、世界とインタラクションすることもできません。
+	</notification>
+	<notification name="AvatarFrozenDuration">
+		[AV_FREEZER] によって、あなたは [AV_FREEZE_TIME] 秒間フリーズされました。世界を動かすことも、世界とインタラクションすることもできません。
+	</notification>
+	<notification name="YouFrozeAvatar">
+		アバターがフリーズされています。
+	</notification>
+	<notification name="AvatarHasUnFrozenYou">
+		[AV_FREEZER] によってフリーズが解除されています。
+	</notification>
+	<notification name="AvatarUnFrozen">
+		アバターのフリーズが解除されました。
+	</notification>
+	<notification name="AvatarFreezeFailure">
+		その区画の管理権限を持っていないため、フリーズに失敗しました。
+	</notification>
+	<notification name="AvatarFreezeThaw">
+		フリーズ期間が切れました。仕事に戻ってください。
+	</notification>
+	<notification name="AvatarCantFreeze">
+		残念ながら、そのユーザーをフリーズできません。
+	</notification>
+	<notification name="NowOwnObject">
+		これで、オブジェクト [OBJECT_NAME] の所有者になりました
+	</notification>
+	<notification name="CantRezOnLand">
+		この土地の所有者が許可していないため、[OBJECT_POS] でオブジェクトを Rez することができません。土地ツールを使用して、土地の所有を確認してください。
+	</notification>
+	<notification name="RezFailTooManyRequests">
+		リクエストが多すぎて、オブジェクトを Rez することができません。
+	</notification>
+	<notification name="SitFailCantMove">
+		今回移動できなかったため、座ることができません。
+	</notification>
+	<notification name="SitFailNotAllowedOnLand">
+		その土地に対して許可を受けていないため、座ることができません。
+	</notification>
+	<notification name="SitFailNotSameRegion">
+		移動して近づけてみてください。オブジェクトが同じリージョンにないため、オブジェクトを配置できません。
+	</notification>
+	<notification name="NoNewObjectRegionFull">
+		新しいオブジェクトを作成できません。リージョンが埋まっています。
+	</notification>
+	<notification name="FailedToPlaceObject">
+		指定した場所にオブジェクトを配置できませんでした。もう一度お試しください。
+	</notification>
+	<notification name="NoOwnNoGardening">
+		所有していない土地に木や草を植えることはできません。
+	</notification>
+	<notification name="NoCopyPermsNoObject">
+		オブジェクト &apos;[OBJ_NAME]&apos; をコピーする権限がないため、コピーに失敗しました。
+	</notification>
+	<notification name="NoTransPermsNoObject">
+		オブジェクト &apos;[OBJ_NAME]&apos; をあなたに転送できないため、コピーに失敗しました。
+	</notification>
+	<notification name="AddToNavMeshNoCopy">
+		オブジェクト &apos;[OBJ_NAME]&apos; がナビメッシュに貢献しているため、コピーに失敗しました。
+	</notification>
+	<notification name="DupeWithNoRootsSelected">
+		ルートオブジェクトを選択せずに複製します。
+	</notification>
+	<notification name="CantDupeCuzRegionIsFull">
+		リージョンが埋まっているため、オブジェクトのコピーを作成することができません。
+	</notification>
+	<notification name="CantDupeCuzParcelNotFound">
+		オブジェクトのコピーを作成できません。オブジェクトのある区画が見つかりません。
+	</notification>
+	<notification name="CantCreateCuzParcelFull">
+		区画がいっぱいのため、
+オブジェクトを作成できません。
+	</notification>
+	<notification name="RezAttemptFailed">
+		オブジェクトへの Rez の試みに失敗しました。
+	</notification>
+	<notification name="ToxicInvRezAttemptFailed">
+		このリージョンで問題を引き起こすアイテムは作成できません。
+	</notification>
+	<notification name="InvItemIsBlacklisted">
+		その持ち物アイテムはブラックリストに登録されています。
+	</notification>
+	<notification name="NoCanRezObjects">
+		現在あなたにはオブジェクトを作成するための許可がありません。
+	</notification>
+	<notification name="LandSearchBlocked">
+		土地の検索がブロックされました。
+短期間に多くの土地を検索したためです。
+しばらくしてから再度お試しください。
+	</notification>
+	<notification name="NotEnoughResourcesToAttach">
+		オブジェクトの着用に使用できるスクリプトリソースが足りません。
+	</notification>
+	<notification name="YouDiedAndGotTPHome">
+		死んでしまったので、ホームにテレポートされました。
+	</notification>
+	<notification name="EjectComingSoon">
+		ここへの入場が許可されていないため、[EJECT_TIME] 秒後に追放されます。
+	</notification>
+	<notification name="NoEnterServerFull">
+		サーバーが埋まっているため、
+このリージョンに入場することはできません。
+	</notification>
+	<notification name="SaveBackToInvDisabled">
+		「「持ち物」に保存」が無効になっています。
+	</notification>
+	<notification name="NoExistNoSaveToContents">
+		&apos;[OBJ_NAME]&apos; の Rez 元であるオブジェクトが存在しないため、このオブジェクトをオブジェクトコンテンツに保存できません。
+	</notification>
+	<notification name="NoModNoSaveToContents">
+		オブジェクト &apos;[DEST_NAME]&apos; を修正する権限がないため、オブジェクトのコンテンツに &apos;[OBJ_NAME]&apos; を保存できません。
+	</notification>
+	<notification name="NoSaveBackToInvDisabled">
+		インベントリに &apos;[OBJ_NAME]&apos; を保存することはできません - この操作が無効になっています。
+	</notification>
+	<notification name="NoCopyNoSelCopy">
+		オブジェクト &apos;[OBJ_NAME]&apos; を変更する権限を持っていないため、選択したものをコピーできません。
+	</notification>
+	<notification name="NoTransNoSelCopy">
+		オブジェクト &apos;[OBJ_NAME]&apos; を転送できないため、選択したものをコピーできません。
+	</notification>
+	<notification name="NoTransNoCopy">
+		オブジェクト &apos;[OBJ_NAME]&apos; を転送できないため、選択したものをコピーできません。
+	</notification>
+	<notification name="NoPermsNoRemoval">
+		シミュレータからのオブジェクト &apos;[OBJ_NAME]&apos; の削除は、権限システムによって無効にされています。
+	</notification>
+	<notification name="NoModNoSaveSelection">
+		オブジェクト &apos;[OBJ_NAME]&apos; を変更する権限を持っていないため、選択したものを保存できません。
+	</notification>
+	<notification name="NoCopyNoSaveSelection">
+		オブジェクト &apos;[OBJ_NAME]&apos; をコピーできないため、選択したものを保存できません。
+	</notification>
+	<notification name="NoModNoTaking">
+		オブジェクト &apos;[OBJ_NAME]&apos; を変更する権限を持っていないため、選択したものを取得できません。
+	</notification>
+	<notification name="RezDestInternalError">
+		内部エラー: 不明な宛先タイプ。
+	</notification>
+	<notification name="DeleteFailObjNotFound">
+		オブジェクトが見つからないため削除できませんでした。
+	</notification>
+	<notification name="SorryCantEjectUser">
+		残念ながら、そのユーザーを追放することはできません。
+	</notification>
+	<notification name="RegionSezNotAHome">
+		このリージョンでは、ここにホームの位置を設定できません。
+	</notification>
+	<notification name="HomeLocationLimits">
+		ホームの場所を設定できるのは、自分の土地か、またはメインランドのインフォハブでのみです。
+	</notification>
+	<notification name="HomePositionSet">
+		家の配置の設定。
+	</notification>
+	<notification name="AvatarEjected">
+		アバターが追放されました。
+	</notification>
+	<notification name="AvatarEjectFailed">
+		その区画の管理権限がないため、追放できませんでした。
+	</notification>
+	<notification name="CantMoveObjectParcelFull">
+		区画が埋まっているため、オブジェクト &apos;[OBJECT_NAME]&apos; を、リージョン [REGION_NAME] 内の [OBJ_POSITION] に移動できません。
+	</notification>
+	<notification name="CantMoveObjectParcelPerms">
+		オブジェクト &apos;[OBJECT_NAME]&apos; は、この区画で許可されていないため、リージョン [REGION_NAME] 内の [OBJ_POSITION] に移動できません。
+	</notification>
+	<notification name="CantMoveObjectParcelResources">
+		この区画でこのオブジェクトのリソースが不足しているため、オブジェクト &apos;[OBJECT_NAME]&apos; をリージョン [REGION_NAME] 内の [OBJ_POSITION] に移動できません。
+	</notification>
+	<notification name="CantMoveObjectRegionVersion">
+		オブジェクト &apos;[OBJECT_NAME]&apos; をリージョン [REGION_NAME] 内の [OBJ_POSITION] に移動することはできません。他のリージョンでは、リージョンの境界をまたいだこのオブジェクトを受信することができない古いバージョンを実行しているためです。
+	</notification>
+	<notification name="CantMoveObjectNavMesh">
+		リージョン境界をまたぐナビメッシュを変更できないため、オブジェクト &apos;[OBJECT_NAME]&apos; をリージョン [REGION_NAME] 内の [OBJ_POSITION] に移動できません。
+	</notification>
+	<notification name="CantMoveObjectWTF">
+		不明な理由により、オブジェクト &apos;[OBJECT_NAME]&apos; を、リージョン [REGION_NAME] 内の [OBJ_POSITION] に移動できません。
+([FAILURE_TYPE])
+	</notification>
+	<notification name="NoPermModifyObject">
+		そのオブジェクトを変更する権限がありません
+	</notification>
+	<notification name="CantEnablePhysObjContributesToNav">
+		ナビメッシュに貢献するオブジェクトに対して物理を有効にできません。
+	</notification>
+	<notification name="CantEnablePhysKeyframedObj">
+		キーフレームオブジェクトのために物理を有効にできません。
+	</notification>
+	<notification name="CantEnablePhysNotEnoughLandResources">
+		土地のリソースが足りないため、オブジェクトの物理を有効にできません。
+	</notification>
+	<notification name="CantEnablePhysCostTooGreat">
+		[MAX_OBJECTS] より大きい物理リソースコストを持つオブジェクトでは、物理を有効にできません。
+	</notification>
+	<notification name="PhantomWithConcavePiece">
+		このオブジェクトはファントムで、ナビメッシュに貢献しているため、くぼみを持たせることができません。
+	</notification>
+	<notification name="UnableAddItem">
+		アイテムを追加できません!
+	</notification>
+	<notification name="UnableEditItem">
+		これは編集できません!
+	</notification>
+	<notification name="NoPermToEdit">
+		これを編集する許可がありません。
+	</notification>
+	<notification name="NoPermToCopyInventory">
+		そのインベントリをコピーすることは許可されません。
+	</notification>
+	<notification name="CantSaveItemDoesntExist">
+		オブジェクトのコンテンツに保存できません。アイテムが存在していません。
+	</notification>
+	<notification name="CantSaveItemAlreadyExists">
+		オブジェクトのコンテンツに保存できません。同じ名前を持つアイテムがすでにインベントリに存在します。
+	</notification>
+	<notification name="CantSaveModifyAttachment">
+		オブジェクトのコンテンツに保存できません。このため、アタッチメントの権限が変更されます。
+	</notification>
+	<notification name="TooManyScripts">
+		スクリプトが多すぎます。
+	</notification>
+	<notification name="UnableAddScript">
+		テキストを追加できません!
+	</notification>
+	<notification name="AssetServerTimeoutObjReturn">
+		資産サーバーがタイムリーに応答しませんでした。オブジェクトが sim に返されました。
+	</notification>
+	<notification name="RegionDisablePhysicsShapes">
+		このリージョンでは、物理的シェイプが有効にされていません。
+	</notification>
+	<notification name="NoModNavmeshAcrossRegions">
+		リージョンの境界をまたぐナビメッシュは変更できません。
+	</notification>
+	<notification name="NoSetPhysicsPropertiesOnObjectType">
+		そのオブジェクトタイプの物理的プロパティを設定できません。
+	</notification>
+	<notification name="NoSetRootPrimWithNoShape">
+		ルートプリムを設定できないため、シェイプがありません。
+	</notification>
+	<notification name="NoRegionSupportPhysMats">
+		このリージョンでは、物理的素材が有効にされていません。
+	</notification>
+	<notification name="OnlyRootPrimPhysMats">
+		物理的素材を調整できるのは、ルートプリムだけです。
+	</notification>
+	<notification name="NoSupportCharacterPhysMats">
+		キャラクターへの物理的素材の設定はまだサポートされていません。
+	</notification>
+	<notification name="InvalidPhysMatProperty">
+		指定した物理的素材のプロパティが 1 つ以上無効です。
+	</notification>
+	<notification name="NoPermsAlterStitchingMeshObj">
+		メッシュオブジェクトの縫い目のタイプを変更することはできません。
+	</notification>
+	<notification name="NoPermsAlterShapeMeshObj">
+		メッシュオブジェクトの形状を変更することはできません
+	</notification>
+	<notification name="FullRegionCantEnter">
+		リージョンが埋まっているため、\nこのリージョンに入場できません。
+	</notification>
+	<notification name="LinkFailedOwnersDiffer">
+		リンクエラー -- 所有者が違います
+	</notification>
+	<notification name="LinkFailedNoModNavmeshAcrossRegions">
+		リンクエラー -- リージョンの境界をまたぐナビメッシュは変更できません。
+	</notification>
+	<notification name="LinkFailedNoPermToEdit">
+		リンクエラー -- 編集権限がありません。
+	</notification>
+	<notification name="LinkFailedTooManyPrims">
+		リンクエラー -- プリミティブが多すぎます。
+	</notification>
+	<notification name="LinkFailedCantLinkNoCopyNoTrans">
+		リンクエラー -- コピーなしと転送なしをリンクできません。
+	</notification>
+	<notification name="LinkFailedNothingLinkable">
+		リンクエラー -- リンクできるものがありません。
+	</notification>
+	<notification name="LinkFailedTooManyPathfindingChars">
+		リンクエラー -- パスファインディングの文字数が多すぎます
+	</notification>
+	<notification name="LinkFailedInsufficientLand">
+		リンクエラー -- 土地のリソースが足りません
+	</notification>
+	<notification name="LinkFailedTooMuchPhysics">
+		オブジェクトが使用している物理リソースが多すぎたため、ダイナミックスが無効にされました。
+	</notification>
+	<notification name="TeleportedHomeByObjectOnParcel">
+		区画 &apos;[PARCEL_NAME]&apos; のオブジェクト &apos;[OBJECT_NAME]&apos; によって、あなたはホームにテレポートされました。
+	</notification>
+	<notification name="TeleportedHomeByObject">
+		​オブジェクト ​&apos;[OBJECT_NAME]&apos; によって、あなたはホームへテレポートされています。
+	</notification>
+	<notification name="TeleportedByAttachment">
+		[ITEM_ID] へのアタッチメントによって、あなたはテレポートされています。
+	</notification>
+	<notification name="TeleportedByObjectOnParcel">
+		区画 &apos;[PARCEL_NAME]&apos; のオブジェクト &apos;[OBJECT_NAME]&apos; によって、あなたはテレポートされています。
+	</notification>
+	<notification name="TeleportedByObjectOwnedBy">
+		[OWNER_ID] が所有しているオブジェクト &apos;[OBJECT_NAME]&apos; によって、あなたはテレポートされています。
+	</notification>
+	<notification name="TeleportedByObjectUnknownUser">
+		不明なユーザーが所有しているオブジェクト &apos;[OBJECT_NAME]&apos; によって、あなたはテレポートされています。
+	</notification>
+	<notification name="CantCreateObjectRegionFull">
+		リクエストされたオブジェクトを作成できません。リージョンが埋まっています。
+	</notification>
+	<notification name="CantAttackMultipleObjOneSpot">
+		1 つの場所に複数のオブジェクトを着用することはできません。
+	</notification>
+	<notification name="CantCreateMultipleObjAtLoc">
+		ここでは、複数のオブジェクトを作成することはできません。
+	</notification>
+	<notification name="UnableToCreateObjTimeOut">
+		リクエストされたオブジェクトを作成できません。オブジェクトがデータベースに見つかりません。
+	</notification>
+	<notification name="UnableToCreateObjUnknown">
+		リクエストされたオブジェクトを作成できません。リクエストがタイムアウトになりました。もう一度お試しください。
+	</notification>
+	<notification name="UnableToCreateObjMissingFromDB">
+		要求されたオブジェクトを作成できません。もう一度お試しください。
+	</notification>
+	<notification name="RezFailureTookTooLong">
+		リクエストされたオブジェクトのロードに時間がかかりすぎたため、Rez に失敗しました。
+	</notification>
+	<notification name="FailedToPlaceObjAtLoc">
+		指定した場所にオブジェクトを配置できませんでした。もう一度お試しください。
+	</notification>
+	<notification name="CantCreatePlantsOnLand">
+		この土地に木を植えることはできません。
+	</notification>
+	<notification name="CantRestoreObjectNoWorldPos">
+		オブジェクトをリストアできません。ワールドの位置が見つかりません。
+	</notification>
+	<notification name="CantRezObjectInvalidMeshData">
+		メッシュデータが無効なため、オブジェクトを Rez することができません。
+	</notification>
+	<notification name="CantRezObjectTooManyScripts">
+		このリージョンに既に多くのスクリプトが存在するため、オブジェクトを Rez することができません。
+	</notification>
+	<notification name="CantCreateObjectNoAccess">
+		現在のアクセス権限では、そこにオブジェクトを作成できません。
+	</notification>
+	<notification name="CantCreateObject">
+		現在あなたにはオブジェクト作成する許可がありません。
+	</notification>
+	<notification name="InvalidObjectParams">
+		無効なオブジェクトパラメーター
+	</notification>
+	<notification name="CantDuplicateObjectNoAcess">
+		現在のアクセス権限では、ここにオブジェクトのコピーを作成できません。
+	</notification>
+	<notification name="CantChangeShape">
+		あなたにはこのシェイプを変更する許可がありません。
+	</notification>
+	<notification name="NoAccessToClaimObjects">
+		現在のアクセス権限では、ここにオブジェクトを取得できません。
+	</notification>
+	<notification name="DeedFailedNoPermToDeedForGroup">
+		あなたのグループにオブジェクトを譲渡する権限がないため、譲渡に失敗しました。
+	</notification>
+	<notification name="NoPrivsToBuyObject">
+		現在のアクセス権限では、ここでオブジェクトを購入できません。
+	</notification>
+	<notification name="CantAttachObjectAvatarSittingOnIt">
+		アバターがオブジェクトに存在するため、オブジェクトを着用できません。
+	</notification>
+	<notification name="WhyAreYouTryingToWearShrubbery">
+		木や草をアタッチメントとして着用できません。
+	</notification>
+	<notification name="CantAttachGroupOwnedObjs">
+		グループが所有しているオブジェクトは着用できません。
+	</notification>
+	<notification name="CantAttachObjectsNotOwned">
+		所有していないオブジェクトは着用できません。
+	</notification>
+	<notification name="CantAttachNavmeshObjects">
+		ナビメッシュに貢献しているオブジェクトは着用できません。
+	</notification>
+	<notification name="CantAttachObjectNoMovePermissions">
+		あなたにはオブジェクトを移動する権限がないため、そのオブジェクト添付できません。
+	</notification>
+	<notification name="CantAttachNotEnoughScriptResources">
+		オブジェクトの着用に使用できるスクリプトリソースが足りません。
+	</notification>
+	<notification name="CantDropItemTrialUser">
+		オブジェクトをここにドロップできません。フリートライアル領域をお試しください。
+	</notification>
+	<notification name="CantDropMeshAttachment">
+		メッシュアタッチメントをドロップすることはできません。インベントリから切り離して、ワールドで Rez してください。
+	</notification>
+	<notification name="CantDropAttachmentNoPermission">
+		アタッチメントのドロップに失敗しました。そこへドロップする権限がありません。
+	</notification>
+	<notification name="CantDropAttachmentInsufficientLandResources">
+		アタッチメントのドロップに失敗しました。利用できる土地リソースの数が足りません。
+	</notification>
+	<notification name="CantDropAttachmentInsufficientResources">
+		利用できるリソースが足りないため、アタッチメントのドロップに失敗しました。
+	</notification>
+	<notification name="CantDropObjectFullParcel">
+		ここにオブジェクトをドロップできません。区画が埋まっています。
+	</notification>
+	<notification name="CantTouchObjectBannedFromParcel">
+		土地区画に入場することを禁止されているため、このオブジェクトを触ったり、つかむことができません。
+	</notification>
+	<notification name="PlzNarrowDeleteParams">
+		削除パラメーターを絞ってください。
+	</notification>
+	<notification name="UnableToUploadAsset">
+		資産をアップロードできません。
+	</notification>
+	<notification name="CantTeleportCouldNotFindUser">
+		ホームをテレポートするユーザーが見つかりませんでした。
+	</notification>
+	<notification name="GodlikeRequestFailed">
+		過剰なリクエストが失敗しました
+	</notification>
+	<notification name="GenericRequestFailed">
+		一般的なリクエストに失敗しました
+	</notification>
+	<notification name="CantUploadPostcard">
+		ポストカードをアップロードできません。後でもう一度お試しください。
+	</notification>
+	<notification name="CantFetchInventoryForGroupNotice">
+		グループ通知のインベントリの詳細を取得できません。
+	</notification>
+	<notification name="CantSendGroupNoticeNotPermitted">
+		グループ通知の送信が許可されないため、送信できません。
+	</notification>
+	<notification name="CantSendGroupNoticeCantConstructInventory">
+		グループ通知を送信できません。持ち物を作成することもできません。
+	</notification>
+	<notification name="CantParceInventoryInNotice">
+		通知内の持ち物を検出できません。
+	</notification>
+	<notification name="TerrainUploadFailed">
+		地形のアップロードに失敗しました。
+	</notification>
+	<notification name="TerrainFileWritten">
+		地形ファイルが書き込まれました。
+	</notification>
+	<notification name="TerrainFileWrittenStartingDownload">
+		地形ファイルを書き出し、ダウンロードを開始しています...
+	</notification>
+	<notification name="TerrainBaked">
+		地形がベークされました。
+	</notification>
+	<notification name="TenObjectsDisabledPlzRefresh">
+		選択された最初の 10 個のオブジェクトのみが無効にされました。必要に応じて、リフレッシュして選択内容を追加してください。
+	</notification>
+	<notification name="UpdateViewerBuyParcel">
+		この区画を購入するには、ビューワをアップデートする必要があります。
+	</notification>
+	<notification name="CantBuyParcelNotForSale">
+		購入することができません。この区画は販売対象ではありません。
+	</notification>
+	<notification name="CantBuySalePriceOrLandAreaChanged">
+		販売価格または土地の面積が変わったため、購入できません。
+	</notification>
+	<notification name="CantBuyParcelNotAuthorized">
+		あなたはこの区画の委任された買い手ではありません。
+	</notification>
+	<notification name="CantBuyParcelAwaitingPurchaseAuth">
+		すでに購入の認証を待機しているため、この区画を購入できません。
+	</notification>
+	<notification name="CantBuildOverflowParcel">
+		区画をオーバーフローするため、ここでオブジェクトを構築することはできません。
+	</notification>
+	<notification name="SelectedMultipleOwnedLand">
+		所有者の違う土地を選びました。選択する面積を小さくして、もう一度試してください。
+	</notification>
+	<notification name="CantJoinTooFewLeasedParcels">
+		選択範囲のリース区画の数が少ないため、参加できません。
+	</notification>
+	<notification name="CantDivideLandMultipleParcelsSelected">
+		土地を分割できません。\n区画が複数選択されています。\nもっと小さい土地を選択してみてください。
+	</notification>
+	<notification name="CantDivideLandCantFindParcel">
+		土地を分解できません。\n区画が見つかりません。\n「Help」&gt;「Reprt Bug...」でレポートを行ってください。
+	</notification>
+	<notification name="CantDivideLandWholeParcelSelected">
+		土地を分割できません。区画全体を選択します。\n小さい土地を選択してみてください。
+	</notification>
+	<notification name="LandHasBeenDivided">
+		土地が分割されています。
+	</notification>
+	<notification name="PassPurchased">
+		入場許可を購入しました。
+	</notification>
+	<notification name="RegionDisallowsClassifieds">
+		リージョンでは、クラシファイド広告を許可しません。
+	</notification>
+	<notification name="LandPassExpireSoon">
+		この土地への入場許可はまもなく期限が切れます。
+	</notification>
+	<notification name="CantSitNoSuitableSurface">
+		配置に適した表面がありません。別の場所を試してみたください。
+	</notification>
+	<notification name="CantSitNoRoom">
+		ここには座る余地がありません。他の場所を試してください。
+	</notification>
+	<notification name="ClaimObjectFailedNoPermission">
+		権限がないため、オブジェクトを取得できませんでした。
+	</notification>
+	<notification name="ClaimObjectFailedNoMoney">
+		リンデンドルが足りないため、オブジェクトの取得に失敗しました。
+	</notification>
+	<notification name="CantDeedGroupLand">
+		グループ所有の土地は、譲渡できません。
+	</notification>
+	<notification name="BuyObjectFailedNoMoney">
+		リンデンドルが足りないため、オブジェクトの購入に失敗しました。
+	</notification>
+	<notification name="BuyInventoryFailedNoMoney">
+		リンデンドルが不足しているため、インベントリを購入できませんでした。
+	</notification>
+	<notification name="BuyPassFailedNoMoney">
+		リンデンドルが足りないため、この土地への入場許可を購入できません。
+	</notification>
+	<notification name="CantBuyPassTryAgain">
+		今すぐには入場許可を購入できません。後でもう一度お試しください。
+	</notification>
+	<notification name="CantCreateObjectParcelFull">
+		区画が埋まっているため、オブジェクトを\n作成することができません。
+	</notification>
+	<notification name="FailedPlacingObject">
+		指定した場所にオブジェクトを配置できませんでした。もう一度お試しください。
+	</notification>
+	<notification name="CantCreateLandmarkForEvent">
+		イベントのためのランドマークを作成することができません。
+	</notification>
+	<notification name="GodBeatsFreeze">
+		強力な力でフリーズを解除します。
+	</notification>
+	<notification name="SpecialPowersRequestFailedLogged">
+		特殊な権限のリクエストに失敗しました。このリクエストはログに記録されています。
+	</notification>
+	<notification name="ExpireExplanation">
+		システムは、現在あなたのリクエストを処理できません。リクエストがタイムアウトになりました。
+	</notification>
+	<notification name="DieExplanation">
+		システムは、あなたのリクエストを処理できません。
+	</notification>
+	<notification name="AddPrimitiveFailure">
+		プリミティブ広告を出すには、資金が足りません。
+	</notification>
+	<notification name="RezObjectFailure">
+		資金が足りないため、オブジェクトを作成できません。
+	</notification>
+	<notification name="ResetHomePositionNotLegal">
+		ホームが不正なため、ホームの位置をリセットします。
+	</notification>
+	<notification name="CantInviteRegionFull">
+		リージョンが埋まっているため、現在の場所に誰かを招待することはできません。後でもう一度お試しください。
+	</notification>
+	<notification name="CantSetHomeAtRegion">
+		このリージョンでは、ここにホームの位置を設定できません。
+	</notification>
+	<notification name="ListValidHomeLocations">
+		ホームの場所を設定できるのは、自分の土地か、またはメインランドのインフォハブでのみです。
+	</notification>
+	<notification name="SetHomePosition">
+		家の配置の設定。
+	</notification>
+	<notification name="CantDerezInventoryError">
+		インベントリエラーのため、オブジェクトの Rez 解除ができません。
+	</notification>
+	<notification name="CantCreateRequestedInv">
+		リクエストされたインベントリを作成できません。
+	</notification>
+	<notification name="CantCreateRequestedInvFolder">
+		リクエストされた持ち物フォルダーを作成できません。
+	</notification>
+	<notification name="CantCreateInventory">
+		そのインベントリを作成できません。
+	</notification>
+	<notification name="CantCreateLandmark">
+		ランドマークを作成できません。
+	</notification>
+	<notification name="CantCreateOutfit">
+		アウトフィットをすぐには作成できません。しばらくしてから再度お試しください。
+	</notification>
+	<notification name="InventoryNotForSale">
+		インベントリは販売対象ではありません。
+	</notification>
+	<notification name="CantFindInvItem">
+		持ち物アイテムを見つけることができません。
+	</notification>
+	<notification name="CantFindObject">
+		オブジェクトが見つかりません。
+	</notification>
+	<notification name="CantTransfterMoneyRegionDisabled">
+		オブジェクトへの送金は、このリージョンでは現在無効にされています。
+	</notification>
+	<notification name="CantPayNoAgent">
+		支払いの相手を把握できませんでした。
+	</notification>
+	<notification name="CantDonateToPublicObjects">
+		パブリックオブジェクトにリンデンドルを与えることはできません。
+	</notification>
+	<notification name="InventoryCreationInWorldObjectFailed">
+		インワールドオブジェクトでのインベントリ作成に失敗しました。
+	</notification>
+	<notification name="UserBalanceOrLandUsageError">
+		内部エラーが発生したため、ビューワを正しく更新できませんでした。ビューワに表示されるリンデンドルの残高または区画の所有は、サーバー上の実際の残高を反映していない可能性があります。
+	</notification>
+	<notification name="LargePrimAgentIntersect">
+		他のプレイヤーの関心を引く大きなプリムを作成できません。他のプレイヤーが移動したときに再試行してください。
+	</notification>
+	<notification name="PreferenceChatClearLog">
+		これにより、過去の会話のログ、およびそのファイルのすべてのバックアップが削除されます。
+		<usetemplate ignoretext="以前の会話のログを削除する前に確認してください。" name="okcancelignore" notext="取り消し" yestext="OK"/>
+	</notification>
+	<notification name="PreferenceChatDeleteTranscripts">
+		これにより、以前のすべての会話のテキストが削除されます。過去の会話のリストには影響しません。.txt および txt.backup の拡張子が付いたすべてのファイルが [FOLDER] フォルダーから削除されます。
+		<usetemplate ignoretext="テキストを削除するまえに確認してください。" name="okcancelignore" notext="取り消し" yestext="OK"/>
+	</notification>
+	<notification name="PreferenceChatPathChanged">
+		ファイルを移動できません。以前のパスがリストアされました。
+		<usetemplate ignoretext="ファイルを移動できません。以前のパスがリストアされました。" name="okignore" yestext="OK"/>
+	</notification>
 </notifications>
diff --git a/indra/newview/skins/default/xui/ja/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/ja/panel_avatar_list_item.xml
index 70d37c3badd..3ef8eba19f1 100644
--- a/indra/newview/skins/default/xui/ja/panel_avatar_list_item.xml
+++ b/indra/newview/skins/default/xui/ja/panel_avatar_list_item.xml
@@ -27,5 +27,6 @@
 	<icon name="permission_edit_mine_icon" tool_tip="このフレンドは、あなたのオブジェクトを編集・削除・取得することができます"/>
 	<icon name="permission_map_icon" tool_tip="このフレンドは地図上であなたの位置を表示できます"/>
 	<icon name="permission_online_icon" tool_tip="このフレンドはあなたがオンラインにいることを確認できます"/>
+	<button name="info_btn" tool_tip="詳細"/>
 	<button name="profile_btn" tool_tip="プロフィールの表示"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/ja/panel_block_list_sidetray.xml
index 5d6a6065aeb..9263e5f3476 100644
--- a/indra/newview/skins/default/xui/ja/panel_block_list_sidetray.xml
+++ b/indra/newview/skins/default/xui/ja/panel_block_list_sidetray.xml
@@ -1,10 +1,11 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="block_list_panel">
-	<text name="title_text">
-		ブロックリスト
-	</text>
-	<scroll_list name="blocked" tool_tip="現在ブロックされている住人一覧"/>
-	<button label="アバターをブロック" label_selected="住人をブロック..." name="Block resident..." tool_tip="ブロックしたい住人を選んでください"/>
-	<button label="名前でオブジェクトをブロック..." label_selected="名前でオブジェクトをブロック..." name="Block object by name..." tool_tip="名前でブロックしたいオブジェクトを選んでください"/>
-	<button label="ブロック解除" label_selected="ブロック解除" name="Unblock" tool_tip="ブロックリストから住人・オブジェクトを削除"/>
+	<panel label="bottom_panel" name="blocked_buttons_panel">
+		<filter_editor label="フィルター" name="blocked_filter_input"/>
+		<menu_button name="blocked_gear_btn" tool_tip="選択した住人・オブジェクトに対するアクション"/>
+		<menu_button name="view_btn" tool_tip="オプションを並べ替える"/>
+		<menu_button name="plus_btn" tool_tip="ブロックする住人・オブジェクトを選択"/>
+		<button name="unblock_btn" tool_tip="ブロックリストから住人・オブジェクトを削除"/>
+	</panel>
+	<block_list name="blocked" tool_tip="現在ブロックされている住人一覧"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_conversation_list_item.xml b/indra/newview/skins/default/xui/ja/panel_conversation_list_item.xml
new file mode 100644
index 00000000000..09ffb92d368
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/panel_conversation_list_item.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="conversation_list_item">
+	<layout_stack name="conversation_item_stack">
+		<layout_panel name="conversation_title_panel">
+			<text name="conversation_title" value="(ローディング)"/>
+		</layout_panel>
+	</layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_conversation_log_list_item.xml b/indra/newview/skins/default/xui/ja/panel_conversation_log_list_item.xml
new file mode 100644
index 00000000000..e05a67e31da
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/panel_conversation_log_list_item.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="conversation_log_list_item">
+	<icon name="voice_session_icon" tool_tip="ボイスチャット"/>
+	<icon name="unread_ims_icon" tool_tip="ログアウト時に表示されるメッセージ"/>
+	<button name="delete_btn" tool_tip="このエントリーを削除"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_group_list_item.xml b/indra/newview/skins/default/xui/ja/panel_group_list_item.xml
index 4b548049c8b..77d3d8f3916 100644
--- a/indra/newview/skins/default/xui/ja/panel_group_list_item.xml
+++ b/indra/newview/skins/default/xui/ja/panel_group_list_item.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="group_list_item">
 	<text name="group_name" value="不明"/>
+	<button name="info_btn" tool_tip="詳細"/>
 	<button name="profile_btn" tool_tip="プロフィールの表示"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_people.xml b/indra/newview/skins/default/xui/ja/panel_people.xml
index 88c31451b51..03ce87537a5 100644
--- a/indra/newview/skins/default/xui/ja/panel_people.xml
+++ b/indra/newview/skins/default/xui/ja/panel_people.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <!-- Side tray panel -->
 <panel label="人" name="people_panel">
 	<string name="no_recent_people" value="最近交流した人はいません。 一緒に何かする仲間をお探しですか? [secondlife:///app/search/people 検索] か [secondlife:///app/worldmap 世界地図] をお試しください。"/>
@@ -14,81 +14,53 @@
 	<string name="no_filtered_friends_msg">
 		お探しのものは見つかりましたか? [secondlife:///app/search/people/[SEARCH_TERM] 検索] をお試しください。
 	</string>
-	<string name="people_filter_label" value="人をフィルター"/>
-	<string name="groups_filter_label" value="グループをフィルター"/>
 	<string name="no_filtered_groups_msg" value="お探しのものは見つかりましたか? [secondlife:///app/search/groups/[SEARCH_TERM] 検索] をお試しください。"/>
 	<string name="no_groups_msg" value="グループをお探しですか? [secondlife:///app/search/groups 検索] をお試しください。"/>
 	<string name="MiniMapToolTipMsg" value="[地域](ダブルクリックで地図を開く。Shift‐ドラッグで水平・垂直移動)"/>
 	<string name="AltMiniMapToolTipMsg" value="[地域](ダブルクリックでテレポート。Shift‐ドラッグで水平・垂直移動)"/>
-	<filter_editor label="フィルター" name="filter_input"/>
 	<tab_container name="tabs">
 		<panel label="近く" name="nearby_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<menu_button name="nearby_view_sort_btn" tool_tip="オプション"/>
-				<button name="add_friend_btn" tool_tip="選択した住人をフレンドリストに登録"/>
+			<panel label="bottom_panel" name="nearby_buttons_panel">
+				<filter_editor label="人をフィルター" name="nearby_filter_input"/>
+				<button name="gear_btn" tool_tip="選択した人に対するアクション"/>
+				<menu_button name="nearby_view_btn" tool_tip="表示 / 並べ替えのオプション"/>
+				<button name="add_friend_btn" tool_tip="フレンド登録を申し出ます"/>
+				<dnd_button name="nearby_del_btn" tool_tip="フレンドとして選択されている人を削除"/>
 			</panel>
 		</panel>
-		<panel label="マイ フレンド" name="friends_panel">
+		<panel label="フレンド" name="friends_panel">
+			<panel label="bottom_panel" name="friends_buttons_panel">
+				<filter_editor label="人をフィルター" name="friends_filter_input"/>
+				<button name="gear_btn" tool_tip="選択した人に対するアクション"/>
+				<menu_button name="friends_view_btn" tool_tip="表示 / 並べ替えのオプション"/>
+				<button name="friends_add_btn" tool_tip="フレンド登録を申し出ます"/>
+				<dnd_button name="friends_del_btn" tool_tip="フレンドとして選択されている人を削除"/>
+			</panel>
 			<accordion name="friends_accordion">
 				<accordion_tab name="tab_online" title="オンライン"/>
 				<accordion_tab name="tab_all" title="全員"/>
 			</accordion>
-			<panel label="bottom_panel" name="bottom_panel">
-				<layout_stack name="bottom_panel">
-					<layout_panel name="options_gear_btn_panel">
-						<menu_button name="friends_viewsort_btn" tool_tip="オプションを表示します"/>
-					</layout_panel>
-					<layout_panel name="add_btn_panel">
-						<button name="add_btn" tool_tip="フレンド登録を申し出る"/>
-					</layout_panel>
-					<layout_panel name="trash_btn_panel">
-						<dnd_button name="del_btn" tool_tip="選択した人をフレンドリストから削除"/>
-					</layout_panel>
-				</layout_stack>
-			</panel>
 		</panel>
-		<panel label="マイ グループ" name="groups_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<menu_button name="groups_viewsort_btn" tool_tip="オプション"/>
-				<button name="plus_btn" tool_tip="グループに参加 / 新規グループを作成します"/>
-				<button name="activate_btn" tool_tip="選択したグループをアクティブにします"/>
+		<panel label="グループ" name="groups_panel">
+			<panel label="bottom_panel" name="groups_buttons_panel">
+				<filter_editor label="フィルターグループ" name="groups_filter_input"/>
+				<menu_button name="groups_gear_btn" tool_tip="選択したグループに対するアクション"/>
+				<menu_button name="groups_view_btn" tool_tip="表示 / 並べ替えのオプション"/>
+				<menu_button name="plus_btn" tool_tip="グループに参加 / 新規グループを作成します"/>
+				<dnd_button name="minus_btn" tool_tip="選択したグループから脱退"/>
 			</panel>
 		</panel>
 		<panel label="最新" name="recent_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<menu_button name="recent_viewsort_btn" tool_tip="オプション"/>
-				<button name="add_friend_btn" tool_tip="選択した住人をフレンドリストに登録"/>
+			<panel label="bottom_panel" name="recent_buttons_panel">
+				<filter_editor label="人をフィルター" name="recent_filter_input"/>
+				<button name="gear_btn" tool_tip="選択した人に対するアクション"/>
+				<menu_button name="recent_view_btn" tool_tip="表示 / 並べ替えのオプション"/>
+				<button name="add_friend_btn" tool_tip="フレンド登録を申し出ます"/>
+				<dnd_button name="recent_del_btn" tool_tip="フレンドとして選択されている人を削除"/>
 			</panel>
 		</panel>
+		<panel label="停止" name="blocked_panel">
+			<panel label="ブロックされた住人とオブジェクト" name="panel_block_list_sidetray"/>
+		</panel>
 	</tab_container>
-	<panel name="button_bar">
-		<layout_stack name="bottom_bar_ls">
-			<layout_panel name="view_profile_btn_lp">
-				<button label="プロフィール" name="view_profile_btn" tool_tip="写真、グループ、その他住人情報を表示"/>
-			</layout_panel>
-			<layout_panel name="im_btn_lp">
-				<button label="IM" name="im_btn" tool_tip="インスタントメッセージを開きます"/>
-			</layout_panel>
-			<layout_panel name="call_btn_lp">
-				<button label="コール" name="call_btn" tool_tip="この住人にコールする"/>
-			</layout_panel>
-			<layout_panel name="share_btn_lp">
-				<button label="共有" name="share_btn" tool_tip="インベントリのアイテムを共有する"/>
-			</layout_panel>
-			<layout_panel name="teleport_btn_lp">
-				<button label="テレポート" name="teleport_btn" tool_tip="テレポートを送ります"/>
-			</layout_panel>
-		</layout_stack>
-		<layout_stack name="bottom_bar_ls1">
-			<layout_panel name="group_info_btn_lp">
-				<button label="グループプロフィール" name="group_info_btn" tool_tip="グループプロフィールを表示します"/>
-			</layout_panel>
-			<layout_panel name="chat_btn_lp">
-				<button label="グループチャット" name="chat_btn" tool_tip="チャットを開始します"/>
-			</layout_panel>
-			<layout_panel name="group_call_btn_lp">
-				<button label="グループコール" name="group_call_btn" tool_tip="このグループにコールする"/>
-			</layout_panel>
-		</layout_stack>
-	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml b/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml
index b6e344ca480..ae5391c7bd8 100644
--- a/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml
@@ -1,34 +1,86 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="チャット" name="chat">
-	<text name="font_size">
-		文字の大きさ:
-	</text>
-	<radio_group name="chat_font_size">
-		<radio_item label="小" name="radio" value="0"/>
-		<radio_item label="中" name="radio2" value="1"/>
-		<radio_item label="大" name="radio3" value="2"/>
-	</radio_group>
-	<check_box initial_value="true" label="チャット中にタイピング動作のアニメーションを再生" name="play_typing_animation"/>
-	<check_box label="オフライン時に受け取った IM をメールで受信" name="send_im_to_email"/>
-	<check_box label="IM とチャット履歴に文字だけ表示する" name="plain_text_chat_history"/>
-	<check_box label="吹き出しチャット" name="bubble_text_chat"/>
-	<text name="show_ims_in_label">
-		IM の表示方法:
-	</text>
-	<text name="requires_restart_label">
-		(再起動後に反映)
-	</text>
-	<radio_group name="chat_window" tool_tip="インスタントメッセージを別フローター、または1つのフローターに複数タブで表示します(要再起動)">
-		<radio_item label="別々のウィンドウ" name="radio" value="0"/>
-		<radio_item label="タブ" name="radio2" value="1"/>
-	</radio_group>
-	<text name="disable_toast_label">
-		受信チャットのポップアップを有効にする
-	</text>
-	<check_box label="グループチャット" name="EnableGroupChatPopups" tool_tip="これを選択すると、グループチャットメッセージを受信した際にポップアップが表示されます"/>
-	<check_box label="IM チャット" name="EnableIMChatPopups" tool_tip="これを選択すると、インスタントメッセージを受信した際にポップアップが表示されます"/>
-	<spinner label="近くのチャットメッセージが表示される長さ:" name="nearby_toasts_lifetime"/>
-	<spinner label="近くのチャットメッセージが消えるまでの長さ:" name="nearby_toasts_fadingtime"/>
+	<panel>
+		<check_box initial_value="true" label="チャット中にタイピング動作のアニメーションを再生" name="play_typing_animation"/>
+		<check_box label="オフライン時に受け取った IM をメールで受信" name="send_im_to_email"/>
+		<check_box label="フレンドとグループ以外からはコールと IM を受信しない" name="voice_call_friends_only_check"/>
+		<text name="font_size">
+			文字の大きさ:
+		</text>
+		<combo_box name="chat_font_size">
+			<item label="小規模" name="Small" value="0"/>
+			<item label="中" name="Medium" value="1"/>
+			<item label="大規模" name="Large" value="2"/>
+		</combo_box>
+		<check_box label="吹き出しチャット" name="bubble_text_chat"/>
+	</panel>
+	<panel>
+		<text name="notifications">
+			通知
+		</text>
+		<text name="friend_ims">
+			フレンド IM:
+		</text>
+		<combo_box name="FriendIMOptions">
+			<item label="会話ウィンドウを開く" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="メッセージのポップアップ" name="PopUpMessage" value="toast"/>
+			<item label="Flash ツールバーボタン" name="FlashToolbarButton" value="flash"/>
+			<item label="フィルターなし" name="None" value="none"/>
+		</combo_box>
+		<text name="non_friend_ims">
+			非フレンド IM:
+		</text>
+		<combo_box name="NonFriendIMOptions">
+			<item label="会話ウィンドウを開く" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="メッセージのポップアップ" name="PopUpMessage" value="toast"/>
+			<item label="Flash ツールバーボタン" name="FlashToolbarButton" value="flash"/>
+			<item label="フィルターなし" name="None" value="none"/>
+		</combo_box>
+		<text name="conference_ims">
+			コンファレンス IM:
+		</text>
+		<combo_box name="ConferenceIMOptions">
+			<item label="会話ウィンドウを開く" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="メッセージのポップアップ" name="PopUpMessage" value="toast"/>
+			<item label="Flashツールバーボタン" name="FlashToolbarButton" value="flash"/>
+			<item label="フィルターなし" name="None" value="none"/>
+		</combo_box>
+		<text name="group_chat">
+			グループチャット:
+		</text>
+		<combo_box name="GroupChatOptions">
+			<item label="会話ウィンドウを開く" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="メッセージのポップアップ" name="PopUpMessage" value="toast"/>
+			<item label="Flash ツールバーボタン" name="FlashToolbarButton" value="flash"/>
+			<item label="なし" name="None" value="none"/>
+		</combo_box>
+		<text name="nearby_chat">
+			近くのチャット:
+		</text>
+		<combo_box name="NearbyChatOptions">
+			<item label="会話ウィンドウを開く" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="メッセージのポップアップ" name="PopUpMessage" value="toast"/>
+			<item label="Flash ツールバーボタン" name="FlashToolBarButton" value="flash"/>
+			<item label="フィルターなし" name="None" value="none"/>
+		</combo_box>
+		<text name="notifications_alert">
+			すべての通知を一時的に受け付けないようにするには、「コミュニケート」&gt;「通知を受けない」を使用します。
+		</text>
+	</panel>
+	<panel>
+		<text name="play_sound">
+			音の再生:
+		</text>
+		<check_box label="新しい会話" name="new_conversation"/>
+		<check_box label="ボイスコールの着信" name="incoming_voice_call"/>
+		<check_box label="テレポートを渡す" name="teleport_offer"/>
+		<check_box label="アイテムのオファー" name="inventory_offer"/>
+	</panel>
+	<panel>
+		<button label="ログのクリア..." name="clear_log"/>
+		<button label="テキストの削除..." name="delete_transcripts"/>
+		<button label="参照..." label_selected="参照" name="log_path_button"/>
+	</panel>
 	<button label="他の言語..." name="ok_btn"/>
 	<button label="自動置換..." name="autoreplace_showgui"/>
 	<button label="スペルチェック中..." name="spellcheck_showgui"/>
diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_general.xml b/indra/newview/skins/default/xui/ja/panel_preferences_general.xml
index 91e1514e496..d70af7e099d 100644
--- a/indra/newview/skins/default/xui/ja/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/ja/panel_preferences_general.xml
@@ -69,9 +69,9 @@
 		<combo_box.item label="一時退席設定なし" name="item4"/>
 	</combo_box>
 	<text name="text_box3">
-		取り込み中モード時の返事:
+		「通知を受けない」応答:
 	</text>
-	<text_editor name="busy_response">
+	<text_editor name="do_not_disturb_response">
 		log_in_to_change
 	</text_editor>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/sidepanel_task_info.xml b/indra/newview/skins/default/xui/ja/sidepanel_task_info.xml
index c61c73657fc..4f65c8477bc 100644
--- a/indra/newview/skins/default/xui/ja/sidepanel_task_info.xml
+++ b/indra/newview/skins/default/xui/ja/sidepanel_task_info.xml
@@ -72,6 +72,7 @@
 			<combo_box.item label="オブジェクトを買う" name="Buyobject"/>
 			<combo_box.item label="オブジェクトに支払う" name="Payobject"/>
 			<combo_box.item label="開く" name="Open"/>
+			<combo_box.item label="ズーム" name="Zoom"/>
 		</combo_box>
 		<panel name="perms_inv">
 			<text name="perm_modify">
diff --git a/indra/newview/skins/default/xui/ja/strings.xml b/indra/newview/skins/default/xui/ja/strings.xml
index 50697e55001..b27904c4d74 100644
--- a/indra/newview/skins/default/xui/ja/strings.xml
+++ b/indra/newview/skins/default/xui/ja/strings.xml
@@ -137,7 +137,7 @@
 		終了
 	</string>
 	<string name="create_account_url">
-		http://join.secondlife.com/index.php?lang=ja-JP&amp;sourceid=[sourceid]
+		http://join.secondlife.com/?sourceid=[sourceid]
 	</string>
 	<string name="LoginFailedViewerNotPermitted">
 		お使いの古いビューワでは Second Life にアクセスできません。以下のページから新しいビューワをダウンロードしてください:
@@ -622,8 +622,8 @@ support@secondlife.com にお問い合わせください。
 	<string name="AvatarAway">
 		一時退席中
 	</string>
-	<string name="AvatarBusy">
-		取り込み中
+	<string name="AvatarDoNotDisturb">
+		通知を受けない
 	</string>
 	<string name="AvatarMuted">
 		ブロック中
@@ -859,6 +859,12 @@ support@secondlife.com にお問い合わせください。
 	<string name="ST_NO_JOINT">
 		ROOT または JOINT が見つかりません
 	</string>
+	<string name="NearbyChatTitle">
+		近くのチャット
+	</string>
+	<string name="NearbyChatLabel">
+		(近くのチャット)
+	</string>
 	<string name="whisper">
 		のささやき:
 	</string>
@@ -922,12 +928,15 @@ support@secondlife.com にお問い合わせください。
 	<string name="ControlYourCamera">
 		カメラのコントロール
 	</string>
-	<string name="TeleportYourAgent">
-		あなたをテレポート
-	</string>
 	<string name="NotConnected">
 		接続されていません
 	</string>
+	<string name="AgentNameSubst">
+		(あなた)
+	</string>
+	<string name="TeleportYourAgent">
+		あなたをテレポート
+	</string>
 	<string name="SIM_ACCESS_PG">
 		General
 	</string>
@@ -1009,18 +1018,6 @@ support@secondlife.com にお問い合わせください。
 	<string name="dictionary_files">
 		辞書
 	</string>
-	<string name="AvatarSetNotAway">
-		一時退席中解除
-	</string>
-	<string name="AvatarSetAway">
-		一時退席中
-	</string>
-	<string name="AvatarSetNotBusy">
-		取り込み中解除
-	</string>
-	<string name="AvatarSetBusy">
-		取り込み中
-	</string>
 	<string name="shape">
 		シェイプ
 	</string>
@@ -1989,8 +1986,8 @@ support@secondlife.com にお問い合わせください。
 	<string name="PanelContentsNewScript">
 		新規スクリプト
 	</string>
-	<string name="BusyModeResponseDefault">
-		メッセージを送った住人は、誰にも邪魔をされたくないため現在「取り込み中」モードです。  あなたのメッセージは、あとで確認できるように IM パネルに表示されます。
+	<string name="DoNotDisturbModeResponseDefault">
+		この住民が「通知を受けない」をオンにすると、あなたのメッセージが後で表示されるようになります。
 	</string>
 	<string name="MuteByName">
 		(名称別)
@@ -2103,9 +2100,6 @@ support@secondlife.com にお問い合わせください。
 	<string name="GroupMoneyDate">
 		[year,datetime,utc]年[mth,datetime,utc]月[day,datetime,utc]日[weekday,datetime,utc]
 	</string>
-	<string name="ViewerObjectContents">
-		内容
-	</string>
 	<string name="AcquiredItems">
 		取得アイテム
 	</string>
@@ -3877,7 +3871,7 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
 		General リージョン
 	</string>
 	<string name="LocationCtrlSeeAVsTooltip">
-		この区画外にアバターを見えるようにして、チャットも許可
+		この区画内のアバターは、この区画の外にいるアバターからは見ることも聞くこともできません。
 	</string>
 	<string name="LocationCtrlPathfindingDirtyTooltip">
 		地域(リージョン)が再構築されるまで、移動するオブジェクトは正しく動作しない可能性があります。
@@ -3954,6 +3948,12 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
 	<string name="IM_unblock_only_groups_friends">
 		このメッセージを表示するには、「環境設定」の「プライバシー」で「フレンドとグループ以外からはコールと IM を受信しない」チェックボックスをオフにします。
 	</string>
+	<string name="OnlineStatus">
+		オンライン
+	</string>
+	<string name="OfflineStatus">
+		オフライン
+	</string>
 	<string name="answered_call">
 		相手がコールを受けました
 	</string>
@@ -3963,6 +3963,9 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
 	<string name="you_joined_call">
 		ボイスコールに参加しました
 	</string>
+	<string name="you_auto_rejected_call-im">
+		「通知を受けない」がオンのときに、自動的にボイスコールを拒否しました。
+	</string>
 	<string name="name_started_call">
 		[NAME] はボイスコールを開始します
 	</string>
@@ -3979,7 +3982,7 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
 		接続中...
 	</string>
 	<string name="conference-title">
-		アドホックコンファレンス
+		複数人チャット
 	</string>
 	<string name="conference-title-incoming">
 		[AGENT_NAME] とコンファレンスする
@@ -4859,6 +4862,9 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
 	<string name="Command_Chat_Label">
 		チャット
 	</string>
+	<string name="Command_Conversations_Label">
+		会話
+	</string>
 	<string name="Command_Compass_Label">
 		コンパス
 	</string>
@@ -4934,6 +4940,9 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
 	<string name="Command_Chat_Tooltip">
 		近くの人と文字チャットする
 	</string>
+	<string name="Command_Conversations_Tooltip">
+		全員との会話
+	</string>
 	<string name="Command_Compass_Tooltip">
 		コンパス
 	</string>
@@ -5063,4 +5072,13 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
 	<string name="UserDictionary">
 		[User]
 	</string>
+	<string name="logging_calls_disabled_log_empty">
+		会話はログに記録されていません。ログの記録を開始するには、「環境設定」&gt;「チャット」で「保存: ログのみ」または「保存: ログと会話のテキスト」を選択します。
+	</string>
+	<string name="logging_calls_disabled_log_not_empty">
+		これ以上の会話は記録されません。ログの記録を再開するには、「環境設定」&gt;「チャット」で「保存: ログのみ」または「保存: ログと会話のテキスト」を選択します。
+	</string>
+	<string name="logging_calls_enabled_log_empty">
+		ログイン時の会話はありません。誰かにご連絡した後、または誰かがあなたに連絡した後、ログエントリがここに表示されます。
+	</string>
 </strings>
diff --git a/indra/newview/skins/default/xui/pt/floater_conversation_log.xml b/indra/newview/skins/default/xui/pt/floater_conversation_log.xml
new file mode 100644
index 00000000000..ae7dd3c4411
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/floater_conversation_log.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_conversation_log" title="REGISTRO DE CONVERSA">
+	<panel name="buttons_panel">
+		<filter_editor label="Filtrar pessoas" name="people_filter_input"/>
+		<menu_button name="conversation_view_btn" tool_tip="Opções de exibição/ordenação"/>
+		<menu_button name="conversations_gear_btn" tool_tip="Ações em uma pessoa ou um grupo selecionado"/>
+	</panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_conversation_preview.xml b/indra/newview/skins/default/xui/pt/floater_conversation_preview.xml
new file mode 100644
index 00000000000..97a2e8327c0
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/floater_conversation_preview.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="preview_conversation" title="CONVERSA:">
+	<floater.string name="Title">
+		CONVERSA: [NAME]
+	</floater.string>
+	<text name="page_label" value="Página"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_im_container.xml b/indra/newview/skins/default/xui/pt/floater_im_container.xml
index 0fbb826a964..a1cea72b1e0 100644
--- a/indra/newview/skins/default/xui/pt/floater_im_container.xml
+++ b/indra/newview/skins/default/xui/pt/floater_im_container.xml
@@ -1,2 +1,29 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<multi_floater name="floater_im_box" title="CONVERSAS"/>
+<multi_floater name="floater_im_box" title="CONVERSAS">
+	<string name="collapse_icon" value="Conv_toolbar_collapse"/>
+	<string name="expand_icon" value="Conv_toolbar_expand"/>
+	<layout_stack name="conversations_stack">
+		<layout_panel name="conversations_layout_panel">
+			<layout_stack name="conversations_pane_buttons_stack">
+				<layout_panel name="conversations_pane_buttons_expanded">
+					<menu_button name="sort_btn" tool_tip="Opções de exibição/ordenação"/>
+					<button name="add_btn" tool_tip="Iniciar uma nova conversa"/>
+					<button name="speak_btn" tool_tip="Fale com pessoas usando seu microfone"/>
+				</layout_panel>
+				<layout_panel name="conversations_pane_buttons_collapsed">
+					<button name="expand_collapse_btn" tool_tip="Recolher/expandir esta lista"/>
+				</layout_panel>
+			</layout_stack>
+		</layout_panel>
+		<layout_panel name="messages_layout_panel">
+			<panel_container name="im_box_tab_container">
+				<panel name="stub_panel">
+					<button name="stub_collapse_btn" tool_tip="Recolher este painel"/>
+					<text name="stub_textbox">
+						Esta conversa está em uma janela separada.   [secondlife:/// Trazer de volta.]
+					</text>
+				</panel>
+			</panel_container>
+		</layout_panel>
+	</layout_stack>
+</multi_floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_im_session.xml b/indra/newview/skins/default/xui/pt/floater_im_session.xml
index 5543ffa41da..9f6a7a06ad0 100644
--- a/indra/newview/skins/default/xui/pt/floater_im_session.xml
+++ b/indra/newview/skins/default/xui/pt/floater_im_session.xml
@@ -1,8 +1,59 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="panel_im">
-	<layout_stack name="im_panels">
-		<layout_panel>
-			<line_editor label="Para" name="chat_editor"/>
-		</layout_panel>
-	</layout_stack>
+	<floater.string name="call_btn_start">
+		Conv_toolbar_open_call
+	</floater.string>
+	<floater.string name="call_btn_stop">
+		Conv_toolbar_hang_up
+	</floater.string>
+	<floater.string name="collapseline_icon" value="Conv_collapse_to_one_line"/>
+	<floater.string name="expandline_icon" value="Conv_expand_one_line"/>
+	<floater.string name="collapse_icon" value="Conv_toolbar_collapse"/>
+	<floater.string name="expand_icon" value="Conv_toolbar_expand"/>
+	<floater.string name="tear_off_icon" value="Conv_toolbar_arrow_ne"/>
+	<floater.string name="return_icon" value="Conv_toolbar_arrow_sw"/>
+	<floater.string name="participant_added" value="[NAME] foi convidado para a conversa."/>
+	<floater.string name="multiple_participants_added" value="[NAME] foram convidados para a conversa."/>
+	<floater.string name="tooltip_to_separate_window" value="Mover esta conversa para uma janela separada"/>
+	<floater.string name="tooltip_to_main_window" value="Mover esta conversa para a janela principal"/>
+	<floater.string name="start_call_button_tooltip" value="Abrir conexão por voz"/>
+	<floater.string name="end_call_button_tooltip" value="Encerrar conexão por voz"/>
+	<floater.string name="expcol_button_not_tearoff_tooltip" value="Recolher este painel"/>
+	<floater.string name="expcol_button_tearoff_and_expanded_tooltip" value="Recolher lista de participantes"/>
+	<floater.string name="expcol_button_tearoff_and_collapsed_tooltip" value="Expandir a lista de participantes"/>
+	<view name="contents_view">
+		<layout_stack name="main_stack">
+			<layout_panel name="toolbar_panel">
+				<menu_button name="view_options_btn" tool_tip="Opções de exibição/ordenação"/>
+				<menu_button name="gear_btn" tool_tip="Ações nas pessoas selecionadas"/>
+				<button name="add_btn" tool_tip="Adicionar alguém a esta conversa"/>
+				<button name="voice_call_btn" tool_tip="Abrir conexão por voz"/>
+				<button name="close_btn" tool_tip="Encerrar esta conversa"/>
+				<button name="expand_collapse_btn" tool_tip="Recolher/expandir este painel"/>
+			</layout_panel>
+			<layout_panel name="body_panel">
+				<layout_stack name="im_panels">
+					<layout_panel name="right_part_holder">
+						<panel name="trnsAndChat_panel">
+							<layout_stack name="translate_and_chat_stack">
+								<layout_panel name="translate_chat_checkbox_lp">
+									<check_box label="Traduzir bate-papo" name="translate_chat_checkbox"/>
+								</layout_panel>
+							</layout_stack>
+						</panel>
+					</layout_panel>
+				</layout_stack>
+			</layout_panel>
+			<layout_panel name="chat_layout_panel">
+				<layout_stack name="input_panels">
+					<layout_panel name="input_editor_layout_panel">
+						<chat_editor label="Para" name="chat_editor"/>
+					</layout_panel>
+					<layout_panel name="input_button_layout_panel">
+						<button name="minz_btn" tool_tip="Mostrar/ocultar painel de mensagens"/>
+					</layout_panel>
+				</layout_stack>
+			</layout_panel>
+		</layout_stack>
+	</view>
 </floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_incoming_call.xml b/indra/newview/skins/default/xui/pt/floater_incoming_call.xml
index 6344258fa0c..1e86f847ade 100644
--- a/indra/newview/skins/default/xui/pt/floater_incoming_call.xml
+++ b/indra/newview/skins/default/xui/pt/floater_incoming_call.xml
@@ -25,9 +25,9 @@
 		Sair do [CURRENT_CHAT] e entrar neste bate-papo de voz?
 	</floater.string>
 	<text name="question">
-		Sair do [CURRENT_CHAT] e entrar neste bate-papo?
+		Se você atender, será desconectado de suas conversas de voz atuais.
 	</text>
-	<button label="Aceitar" label_selected="Aceitar" name="Accept"/>
-	<button label="Rejeitar" label_selected="Rejeitar" name="Reject"/>
-	<button label="Enviar MI" name="Start IM"/>
+	<button label="Atender" label_selected="Atender" name="Accept"/>
+	<button label="Ignorar" label_selected="Ignorar" name="Reject"/>
+	<button label="Iniciar MI em vez disso" name="Start IM"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_pathfinding_console.xml b/indra/newview/skins/default/xui/pt/floater_pathfinding_console.xml
index 182f2513e0c..d04cf2a173c 100644
--- a/indra/newview/skins/default/xui/pt/floater_pathfinding_console.xml
+++ b/indra/newview/skins/default/xui/pt/floater_pathfinding_console.xml
@@ -71,7 +71,7 @@
 			<text name="show_label">
 				Exibir:
 			</text>
-			<check_box label="Mundo" name="show_world"/>
+			<check_box label="Testar" name="show_world"/>
 			<check_box label="Apenas móveis" name="show_world_movables_only"/>
 			<check_box label="Navmesh" name="show_navmesh"/>
 			<text name="show_walkability_label">
diff --git a/indra/newview/skins/default/xui/pt/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/pt/floater_texture_ctrl.xml
index a75cf34a944..ba4ef0afdef 100644
--- a/indra/newview/skins/default/xui/pt/floater_texture_ctrl.xml
+++ b/indra/newview/skins/default/xui/pt/floater_texture_ctrl.xml
@@ -19,7 +19,7 @@
 	<button label="Padrão" label_selected="Padrão" name="Default"/>
 	<button label="Branco" label_selected="Branco" name="Blank"/>
 	<button label="Nenhum" label_selected="Nenhum" name="None"/>
-	<check_box initial_value="true" label="Visualização em tempo real" name="apply_immediate_check"/>
+	<check_box initial_value="true" label="Inscrever-se agora" name="apply_immediate_check"/>
 	<text name="preview_disabled" value="Visualização desativada"/>
 	<filter_editor label="Filtrar texturas" name="inventory search editor"/>
 	<check_box initial_value="false" label="Exibir pastas" name="show_folders_check"/>
diff --git a/indra/newview/skins/default/xui/pt/floater_voice_chat_volume.xml b/indra/newview/skins/default/xui/pt/floater_voice_chat_volume.xml
new file mode 100644
index 00000000000..de7aa2df12e
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/floater_voice_chat_volume.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_voice_volume" title="VOLUME DO BATE-PAPO DE VOZ">
+	<slider label="Bate-papo de voz" name="chat_voice_volume"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_voice_effect.xml b/indra/newview/skins/default/xui/pt/floater_voice_effect.xml
index b29ca3d699f..71d3c33ae57 100644
--- a/indra/newview/skins/default/xui/pt/floater_voice_effect.xml
+++ b/indra/newview/skins/default/xui/pt/floater_voice_effect.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater label="Lugares" name="voice_effects" title="EFEITOS DE VOZ">
+<floater label="Lugares" name="voice_effects" title="AMOSTRA DE DISTORÇÃO DE VOZ">
 	<string name="no_voice_effect">
 		(Não distorcer voz)
 	</string>
diff --git a/indra/newview/skins/default/xui/pt/floater_voice_volume.xml b/indra/newview/skins/default/xui/pt/floater_voice_volume.xml
new file mode 100644
index 00000000000..dae47a99ae2
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/floater_voice_volume.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!--
+  Not can_close / no title to avoid window chrome
+  Single instance - only have one at a time, recycle it each spawn
+-->
+<floater name="floater_voice_volume" title="VOLUME DE VOZ">
+	<slider name="volume_slider" tool_tip="Volume de voz" value="0.5"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/pt/menu_cof_gear.xml b/indra/newview/skins/default/xui/pt/menu_cof_gear.xml
index 8716992a5e0..b59895573ee 100644
--- a/indra/newview/skins/default/xui/pt/menu_cof_gear.xml
+++ b/indra/newview/skins/default/xui/pt/menu_cof_gear.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear COF">
+<toggleable_menu name="Gear COF">
 	<menu label="Roupas novas" name="COF.Gear.New_Clothes"/>
-	<menu label="Nova parte do corpo" name="COF.Geear.New_Body_Parts"/>
-</menu>
+	<menu label="Novas partes do corpo" name="COF.Gear.New_Body_Parts"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_conversation.xml b/indra/newview/skins/default/xui/pt/menu_conversation.xml
new file mode 100644
index 00000000000..01316b887d4
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_conversation.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_conversation_participant">
+	<menu_item_call label="Encerrar conversa" name="close_conversation"/>
+	<menu_item_call label="Abrir conversa de voz" name="open_voice_conversation"/>
+	<menu_item_call label="Desconectar de voz" name="disconnect_from_voice"/>
+	<menu_item_call label="Exibir perfil" name="view_profile"/>
+	<menu_item_call label="MI" name="im"/>
+	<menu_item_call label="Oferecer teletransporte" name="offer_teleport"/>
+	<menu_item_call label="Chamada de voz" name="voice_call"/>
+	<menu_item_call label="Histórico de bate-papo..." name="chat_history"/>
+	<menu_item_call label="Adicionar amigo" name="add_friend"/>
+	<menu_item_call label="Remover amigo" name="remove_friend"/>
+	<menu_item_call label="Remover amigos" name="remove_friends"/>
+	<menu_item_call label="Convidar para entrar no grupo..." name="invite_to_group"/>
+	<menu_item_call label="Mais zoom" name="zoom_in"/>
+	<menu_item_call label="Mapa" name="map"/>
+	<menu_item_call label="Compartilhar" name="share"/>
+	<menu_item_call label="Pagar" name="pay"/>
+	<menu_item_check label="Bloquear voz" name="block_unblock"/>
+	<menu_item_check label="Bloquear texto" name="MuteText"/>
+	<menu_item_call label="Perfil do grupo" name="group_profile"/>
+	<menu_item_call label="Ativar grupo" name="activate_group"/>
+	<menu_item_call label="Sair do grupo" name="leave_group"/>
+	<context_menu label="Opções do moderador &gt;" name="Moderator Options">
+		<menu_item_check label="Pode bater papo por escrito" name="AllowTextChat"/>
+		<menu_item_call label="Silenciar este participante" name="ModerateVoiceMuteSelected"/>
+		<menu_item_call label="Desfazer silenciar deste participante" name="ModerateVoiceUnMuteSelected"/>
+		<menu_item_call label="Silenciar todos" name="ModerateVoiceMute"/>
+		<menu_item_call label="Desfazer silenciar para todos" name="ModerateVoiceUnmute"/>
+	</context_menu>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_conversation_log_gear.xml b/indra/newview/skins/default/xui/pt/menu_conversation_log_gear.xml
new file mode 100644
index 00000000000..616e6db46e9
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_conversation_log_gear.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Conversation Context Menu">
+	<menu_item_call label="MI..." name="IM"/>
+	<menu_item_call label="Chamada de voz..." name="Call"/>
+	<menu_item_call label="Abrir histórico de bate-papo..." name="Chat history"/>
+	<menu_item_call label="Exibir perfil" name="View Profile"/>
+	<menu_item_call label="Oferecer teletransporte" name="teleport"/>
+	<menu_item_call label="Adicionar amigo" name="add_friend"/>
+	<menu_item_call label="Remover amigo" name="remove_friend"/>
+	<menu_item_call label="Convidar para entrar no grupo..." name="Invite"/>
+	<menu_item_call label="Mapa" name="Map"/>
+	<menu_item_call label="Compartilhar" name="Share"/>
+	<menu_item_call label="Pagar" name="Pay"/>
+	<menu_item_check label="Bloquear/desbloquear" name="Block/Unblock"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_conversation_log_view.xml b/indra/newview/skins/default/xui/pt/menu_conversation_log_view.xml
new file mode 100644
index 00000000000..cab81175a08
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_conversation_log_view.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_conversation_view">
+	<menu_item_check label="Ordenar por nome" name="sort_by_name"/>
+	<menu_item_check label="Ordenar por data" name="sort_by_date"/>
+	<menu_item_check label="Ordenar com amigos acima" name="sort_by_friends"/>
+	<menu_item_call label="Exibir histórico de Bate-papo local..." name="view_nearby_chat_history"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_im_conversation.xml b/indra/newview/skins/default/xui/pt/menu_im_conversation.xml
new file mode 100644
index 00000000000..a8434dc3364
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_im_conversation.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Conversation Gear Menu">
+	<menu_item_call label="Exibir perfil" name="View Profile"/>
+	<menu_item_call label="Adicionar amigo" name="Add Friend"/>
+	<menu_item_call label="Remover amigo" name="remove_friend"/>
+	<menu_item_call label="Oferecer teletransporte" name="offer_teleport"/>
+	<menu_item_call label="Convidar para entrar no grupo..." name="invite_to_group"/>
+	<menu_item_call label="Histórico de bate-papo..." name="chat_history"/>
+	<menu_item_call label="Mais zoom" name="zoom_in"/>
+	<menu_item_call label="Mapa" name="map"/>
+	<menu_item_call label="Compartilhar" name="Share"/>
+	<menu_item_call label="Pagar" name="Pay"/>
+	<menu_item_check label="Bloquear voz" name="Block/Unblock"/>
+	<menu_item_check label="Bloquear texto" name="MuteText"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_im_session_showmodes.xml b/indra/newview/skins/default/xui/pt/menu_im_session_showmodes.xml
new file mode 100644
index 00000000000..398b890f667
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_im_session_showmodes.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_modes">
+	<menu_item_check label="Exibição compacta" name="compact_view"/>
+	<menu_item_check label="Exibição expandida" name="expanded_view"/>
+	<menu_item_check label="Mostrar hora" name="IMShowTime"/>
+	<menu_item_check label="Mostrar nomes em conversas individuais" name="IMShowNamesForP2PConv"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_object_icon.xml b/indra/newview/skins/default/xui/pt/menu_object_icon.xml
index 7af760a6ee4..df224a88fa2 100644
--- a/indra/newview/skins/default/xui/pt/menu_object_icon.xml
+++ b/indra/newview/skins/default/xui/pt/menu_object_icon.xml
@@ -2,4 +2,6 @@
 <menu name="Object Icon Menu">
 	<menu_item_call label="Perfil do objeto..." name="Object Profile"/>
 	<menu_item_call label="Bloquear..." name="Block"/>
+	<menu_item_call label="Mostrar no mapa" name="show_on_map"/>
+	<menu_item_call label="Teletransportar para lugar do objeto" name="teleport_to_object"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_outfit_gear.xml b/indra/newview/skins/default/xui/pt/menu_outfit_gear.xml
index 894f1d741cf..3602bdaac42 100644
--- a/indra/newview/skins/default/xui/pt/menu_outfit_gear.xml
+++ b/indra/newview/skins/default/xui/pt/menu_outfit_gear.xml
@@ -23,6 +23,8 @@
 		<menu_item_call label="Novo cabelo" name="New Hair"/>
 		<menu_item_call label="Novos olhos" name="New Eyes"/>
 	</menu>
+	<menu_item_call label="Expandir todas as pastas" name="expand"/>
+	<menu_item_call label="Recolher todas as pastas" name="collapse"/>
 	<menu_item_call label="Renomear look" name="rename"/>
 	<menu_item_call label="Excluir visual" name="delete_outfit"/>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_participant_view.xml b/indra/newview/skins/default/xui/pt/menu_participant_view.xml
new file mode 100644
index 00000000000..b61108cf545
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_participant_view.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="participant_manu_view">
+	<menu_item_check label="Ordenar conversas por tipo" name="sort_sessions_by_type"/>
+	<menu_item_check label="Ordenar conversas por nome" name="sort_sessions_by_name"/>
+	<menu_item_check label="Ordenar conversas por atividade recente" name="sort_sessions_by_recent"/>
+	<menu_item_check label="Ordenar participantes por nome" name="sort_participants_by_name"/>
+	<menu_item_check label="Ordenar participantes por atividade recente" name="sort_participants_by_recent"/>
+	<menu_item_call label="Preferências de bate-papo..." name="chat_preferences"/>
+	<menu_item_call label="Preferências de privacidade..." name="privacy_preferences"/>
+	<menu_item_check label="Registro de conversas..." name="Conversation"/>
+	<menu_item_check label="Traduzir Bate-papo local" name="Translate_chat"/>
+	<menu_item_check label="Configurações de tradução..." name="Translation_settings"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_people_blocked_gear.xml b/indra/newview/skins/default/xui/pt/menu_people_blocked_gear.xml
new file mode 100644
index 00000000000..8bbde9b38c9
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_people_blocked_gear.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_blocked_gear">
+	<menu_item_call label="Desbloquear" name="unblock"/>
+	<menu_item_call label="Perfil..." name="profile"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_people_blocked_plus.xml b/indra/newview/skins/default/xui/pt/menu_people_blocked_plus.xml
new file mode 100644
index 00000000000..e69935995ca
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_people_blocked_plus.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_blocked_plus">
+	<menu_item_call label="Bloquear residente por nome..." name="block_resident_by_name"/>
+	<menu_item_call label="Bloquear objeto por nome" name="block_object_by_name"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_people_blocked_view.xml b/indra/newview/skins/default/xui/pt/menu_people_blocked_view.xml
new file mode 100644
index 00000000000..b80d683c7be
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_people_blocked_view.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_blocked_view">
+	<menu_item_check label="Ordenar por nome" name="sort_by_name"/>
+	<menu_item_check label="Ordenar por tipo" name="sort_by_type"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_people_friends_view.xml b/indra/newview/skins/default/xui/pt/menu_people_friends_view.xml
new file mode 100644
index 00000000000..46caeae3105
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_people_friends_view.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="Ordenar por nome" name="sort_name"/>
+	<menu_item_check label="Ordenar por status" name="sort_status"/>
+	<menu_item_check label="Exibir ícones de pessoas" name="view_icons"/>
+	<menu_item_check label="Exibir permissões concedidas" name="view_permissions"/>
+	<menu_item_check label="Exibir registro de conversas..." name="view_conversation"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_people_groups.xml b/indra/newview/skins/default/xui/pt/menu_people_groups.xml
index 9a924ad7b93..2ba7af17cd8 100644
--- a/indra/newview/skins/default/xui/pt/menu_people_groups.xml
+++ b/indra/newview/skins/default/xui/pt/menu_people_groups.xml
@@ -2,7 +2,7 @@
 <menu name="menu_group_plus">
 	<menu_item_call label="Ver dados" name="View Info"/>
 	<menu_item_call label="Bate-papo" name="Chat"/>
-	<menu_item_call label="Ligar" name="Call"/>
+	<menu_item_call label="Chamada de voz" name="Call"/>
 	<menu_item_call label="Ativar" name="Activate"/>
 	<menu_item_call label="Sair" name="Leave"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_people_groups_view.xml b/indra/newview/skins/default/xui/pt/menu_people_groups_view.xml
new file mode 100644
index 00000000000..637e591ae19
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_people_groups_view.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="Mostrar ícones de grupos" name="Display Group Icons"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_people_nearby.xml b/indra/newview/skins/default/xui/pt/menu_people_nearby.xml
index 7c720f262ba..51464fed68f 100644
--- a/indra/newview/skins/default/xui/pt/menu_people_nearby.xml
+++ b/indra/newview/skins/default/xui/pt/menu_people_nearby.xml
@@ -1,13 +1,16 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Avatar Context Menu">
-	<menu_item_call label="Ver perfil" name="View Profile"/>
-	<menu_item_call label="Adicionar amigo..." name="Add Friend"/>
-	<menu_item_call label="Remover amigo..." name="Remove Friend"/>
-	<menu_item_call label="MI" name="IM"/>
-	<menu_item_call label="Ligar" name="Call"/>
-	<menu_item_call label="Mapa" name="Map"/>
-	<menu_item_call label="Compartilhar" name="Share"/>
-	<menu_item_call label="Pagar" name="Pay"/>
-	<menu_item_check label="Bloquear/desbloquear" name="Block/Unblock"/>
-	<menu_item_call label="Teletransportar?" name="teleport"/>
+	<menu_item_call label="Exibir perfil" name="view_profile"/>
+	<menu_item_call label="MI" name="im"/>
+	<menu_item_call label="Oferecer teletransporte" name="offer_teleport"/>
+	<menu_item_call label="Chamada de voz" name="voice_call"/>
+	<menu_item_call label="Exibir histórico de bate-papo..." name="chat_history"/>
+	<menu_item_call label="Adicionar amigo" name="add_friend"/>
+	<menu_item_call label="Remover amigo" name="remove_friend"/>
+	<menu_item_call label="Convidar para entrar no grupo..." name="invite_to_group"/>
+	<menu_item_call label="Mais zoom" name="zoom_in"/>
+	<menu_item_call label="Mapa" name="map"/>
+	<menu_item_call label="Compartilhar" name="share"/>
+	<menu_item_call label="Pagar" name="pay"/>
+	<menu_item_check label="Bloquear/desbloquear" name="block_unblock"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/pt/menu_people_nearby_multiselect.xml
index 79edb96b1c6..7f3c6ace278 100644
--- a/indra/newview/skins/default/xui/pt/menu_people_nearby_multiselect.xml
+++ b/indra/newview/skins/default/xui/pt/menu_people_nearby_multiselect.xml
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Multi-Selected People Context Menu">
-	<menu_item_call label="Adicionar amigo..." name="Add Friends"/>
-	<menu_item_call label="Remover amigo..." name="Remove Friend"/>
-	<menu_item_call label="MI" name="IM"/>
-	<menu_item_call label="Ligar" name="Call"/>
-	<menu_item_call label="Compartilhar" name="Share"/>
-	<menu_item_call label="Pagar" name="Pay"/>
-	<menu_item_call label="Teletransportar?" name="teleport"/>
+	<menu_item_call label="Adicionar amigo..." name="add_friends"/>
+	<menu_item_call label="Remover amigo..." name="remove_friends"/>
+	<menu_item_call label="MI" name="im"/>
+	<menu_item_call label="Ligar" name="call"/>
+	<menu_item_call label="Compartilhar" name="share"/>
+	<menu_item_call label="Pagar" name="pay"/>
+	<menu_item_call label="Oferecer teletransporte" name="offer_teleport"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_people_nearby_view.xml b/indra/newview/skins/default/xui/pt/menu_people_nearby_view.xml
new file mode 100644
index 00000000000..bce015e732c
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_people_nearby_view.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="Ordenar por conversas mais recentes" name="sort_by_recent_speakers"/>
+	<menu_item_check label="Ordenar por nome" name="sort_name"/>
+	<menu_item_check label="Ordenar por distância" name="sort_distance"/>
+	<menu_item_check label="Exibir ícones de pessoas" name="view_icons"/>
+	<menu_item_check label="Exibir mapa" name="view_map"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_people_recent_view.xml b/indra/newview/skins/default/xui/pt/menu_people_recent_view.xml
new file mode 100644
index 00000000000..e4b368fe143
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_people_recent_view.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="Ordenar por mais recente" name="sort_most"/>
+	<menu_item_check label="Ordenar por nome" name="sort_name"/>
+	<menu_item_check label="Exibir ícones de pessoas" name="view_icons"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_url_agent.xml b/indra/newview/skins/default/xui/pt/menu_url_agent.xml
index ba5e0551248..aa0a4264054 100644
--- a/indra/newview/skins/default/xui/pt/menu_url_agent.xml
+++ b/indra/newview/skins/default/xui/pt/menu_url_agent.xml
@@ -1,6 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Url Popup">
-	<menu_item_call label="Mostrar perfil de residente" name="show_agent"/>
+	<menu_item_call label="Exibir perfil" name="show_agent"/>
+	<menu_item_call label="Enviar MI..." name="send_im"/>
+	<menu_item_call label="Adicionar amigo..." name="add_friend"/>
 	<menu_item_call label="Copiar nome para área de transferência" name="url_copy_label"/>
 	<menu_item_call label="Copiar SLurl para área de transferência" name="url_copy"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_url_objectim.xml b/indra/newview/skins/default/xui/pt/menu_url_objectim.xml
index c1974441815..247a92567af 100644
--- a/indra/newview/skins/default/xui/pt/menu_url_objectim.xml
+++ b/indra/newview/skins/default/xui/pt/menu_url_objectim.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Url Popup">
-	<menu_item_call label="Mostrar informações sobre o objeto" name="show_object"/>
+	<menu_item_call label="Perfil do objeto..." name="show_object"/>
 	<menu_item_call label="Mostrar no mapa" name="show_on_map"/>
 	<menu_item_call label="Teletransportar para lugar do objeto" name="teleport_to_object"/>
 	<menu_item_call label="Copiar nome do objeto para área de transferência" name="url_copy_label"/>
diff --git a/indra/newview/skins/default/xui/pt/menu_viewer.xml b/indra/newview/skins/default/xui/pt/menu_viewer.xml
index ca378c1b583..703df84efb5 100644
--- a/indra/newview/skins/default/xui/pt/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/pt/menu_viewer.xml
@@ -16,10 +16,7 @@
 			<menu_item_call label="Parar minha animação" name="Stop Animating My Avatar"/>
 			<menu_item_call label="Andar/correr/voar..." name="Walk / run / fly"/>
 		</menu>
-		<menu label="Status" name="Status">
-			<menu_item_call label="Ausente" name="Set Away"/>
-			<menu_item_call label="Ocupado" name="Set Busy"/>
-		</menu>
+		<menu label="Status" name="Status"/>
 		<menu_item_call label="Comprar L$..." name="Buy and Sell L$"/>
 		<menu_item_call label="Caixa de saída do lojista..." name="MerchantOutbox"/>
 		<menu_item_call label="Painel da conta..." name="Manage My Account">
@@ -32,14 +29,18 @@
 		<menu_item_call label="Sair do [APP_NAME]" name="Quit"/>
 	</menu>
 	<menu label="Comunicar" name="Communicate">
-		<menu_item_check label="Bate-papo..." name="Nearby Chat"/>
+		<menu_item_check label="Conversas..." name="Conversations"/>
+		<menu_item_check label="Bate-papo local..." name="Nearby Chat"/>
 		<menu_item_check label="Falar" name="Speak"/>
-		<menu_item_check label="Configurações de voz..." name="Nearby Voice"/>
-		<menu_item_check label="Distorção de voz..." name="ShowVoice"/>
+		<menu label="Distorção de voz" name="VoiceMorphing">
+			<menu_item_check label="Não distorcer voz" name="NoVoiceMorphing"/>
+			<menu_item_check label="Visualizar..." name="Preview"/>
+			<menu_item_call label="Assinar..." name="Subscribe"/>
+		</menu>
 		<menu_item_check label="Gestos..." name="Gestures"/>
-		<menu_item_call label="Amigos" name="My Friends"/>
-		<menu_item_call label="Grupos" name="My Groups"/>
-		<menu_item_call label="Pessoas próximas" name="Active Speakers"/>
+		<menu_item_check label="Amigos" name="My Friends"/>
+		<menu_item_check label="Grupos" name="My Groups"/>
+		<menu_item_check label="Pessoas próximas" name="Active Speakers"/>
 		<menu_item_call label="Lista de bloqueados" name="Block List"/>
 	</menu>
 	<menu label="Mundo" name="World">
@@ -115,7 +116,6 @@
 			<menu_item_call label="Comprar" name="Menu Object Buy"/>
 			<menu_item_call label="Pegar" name="Menu Object Take"/>
 			<menu_item_call label="Pegar uma cópia" name="Take Copy"/>
-			<menu_item_call label="Salvar no meu inventário" name="Save Object Back to My Inventory"/>
 			<menu_item_call label="Salvar objeto de volta aos conteúdos do objeto" name="Save Object Back to Object Contents"/>
 			<menu_item_call label="Devolver objeto" name="Return Object back to Owner"/>
 		</menu>
@@ -130,6 +130,7 @@
 			<menu_item_call label="Linksets..." name="pathfinding_linksets_menu_item"/>
 			<menu_item_call label="Personagens..." name="pathfinding_characters_menu_item"/>
 			<menu_item_call label="Visualização/teste..." name="pathfinding_console_menu_item"/>
+			<menu_item_call label="Recarregar região" name="pathfinding_rebake_navmesh_item"/>
 		</menu>
 		<menu label="Opções" name="Options">
 			<menu_item_check label="Mostrar permissões avançadas" name="DebugPermissions"/>
@@ -159,6 +160,13 @@
 	<menu label="Ajuda" name="Help">
 		<menu_item_call label="Como..." name="How To"/>
 		<menu_item_call label="[SECOND_LIFE] Ajuda" name="Second Life Help"/>
+		<menu_item_call label="Guia do usuário" name="User’s guide"/>
+		<menu_item_call label="Base de conhecimento" name="Knowledge Base"/>
+		<menu_item_call label="Wiki" name="Wiki"/>
+		<menu_item_call label="Fóruns da comunidade" name="Community Forums"/>
+		<menu_item_call label="Portal de suporte" name="Support portal"/>
+		<menu_item_call label="Notícias do [SECOND_LIFE]" name="Second Life News"/>
+		<menu_item_call label="Blogs do [SECOND_LIFE]" name="Second Life Blogs"/>
 		<menu_item_call label="Denunciar abuso" name="Report Abuse"/>
 		<menu_item_call label="Relatar bug" name="Report Bug"/>
 		<menu_item_call label="Sobre [APP_NAME]" name="About Second Life"/>
@@ -336,9 +344,14 @@
 				<menu_item_call label="Toggle Character Geometry" name="Toggle Character Geometry"/>
 				<menu_item_check label="Allow Select Avatar" name="Allow Select Avatar"/>
 			</menu>
+			<menu label="Velocidade de animação" name="Animation Speed">
+				<menu_item_call label="Todas as animações 10% mais rápidas" name="All Animations 10 Faster"/>
+				<menu_item_call label="Todas as animações 10% mais lentas" name="All Animations 10 Slower"/>
+				<menu_item_call label="Redefinir todas as velocidades de animação" name="Reset All Animation Speed"/>
+				<menu_item_check label="Animações em câmera lenta" name="Slow Motion Animations"/>
+			</menu>
 			<menu_item_call label="Force Params to Default" name="Force Params to Default"/>
 			<menu_item_check label="Dados da animação" name="Animation Info"/>
-			<menu_item_check label="Mostrar animação de movimento" name="Slow Motion Animations"/>
 			<menu_item_check label="Disable Level Of Detail" name="Disable LOD"/>
 			<menu_item_check label="Show Collision Skeleton" name="Show Collision Skeleton"/>
 			<menu_item_check label="Display Agent Target" name="Display Agent Target"/>
diff --git a/indra/newview/skins/default/xui/pt/notifications.xml b/indra/newview/skins/default/xui/pt/notifications.xml
index ff7382bf801..d9f5e48745d 100644
--- a/indra/newview/skins/default/xui/pt/notifications.xml
+++ b/indra/newview/skins/default/xui/pt/notifications.xml
@@ -510,6 +510,24 @@ Consultar [_URL] para mais informações?
 		</url>
 		<usetemplate ignoretext="Meu driver gráfico está desatualizado" name="okcancelignore" notext="Não" yestext="Sim"/>
 	</notification>
+	<notification name="AMDOldDriver">
+		Provavelmente, há um driver mais recente para o seu chip gráfico.  A atualização dos drivers gráficos pode melhorar significativamente o desempenho.
+
+    Visitar [_URL] para verificar se há atualizações do driver?
+		<url name="url">
+			http://support.amd.com/us/Pages/AMDSupportHub.aspx
+		</url>
+		<usetemplate ignoretext="Meu driver gráfico está desatualizado" name="okcancelignore" notext="Não" yestext="Sim"/>
+	</notification>
+	<notification name="NVIDIAOldDriver">
+		Provavelmente, há um driver mais recente para o seu chip gráfico.  A atualização dos drivers gráficos pode melhorar significativamente o desempenho.
+
+    Visitar [_URL] para verificar se há atualizações do driver?
+		<url name="url">
+			http://www.nvidia.com.br/Download/index.aspx?lang=br
+		</url>
+		<usetemplate ignoretext="Meu driver gráfico está desatualizado" name="okcancelignore" notext="Não" yestext="Sim"/>
+	</notification>
 	<notification name="UnknownGPU">
 		A placa de vídeo do seu sistema não é reconhecida pelo [APP_NAME].
 Isto acontece quando novos hardwares que ainda não foram testados no [APP_NAME].  Talvez isso não cause problemas, mas pode ser preciso checar as configurações de vídeo. 
@@ -1533,10 +1551,13 @@ Para instalar a atualização, será preciso reiniciar o [APP_NAME].
 		Não é possível oferecer amizade neste momento. Por favor, tente novamente em breve.
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
-	<notification name="BusyModeSet">
-		Modo ocupado ativado. 
-O bate-papo e MIs não serão exibidos.  MIs enviadas para você receberão sua resposta de modo ocupado.  Todas as ofertas de teletransporte serão recusadas.  Todas as ofertas de inventário serão colocadas na Lixeira.
-		<usetemplate ignoretext="Passar meu status para o modo ocupado" name="okignore" yestext="OK"/>
+	<notification name="DoNotDisturbModeSet">
+		Não perturbe está ativado.  Você não será notificado de comunicações recebidas.
+
+- Outros residentes receberão a sua resposta de Não perturbe (definida em Preferências &gt; Geral).
+- As ofertas de teletransporte serão recusadas.
+- Chamadas de voz serão recusadas.
+		<usetemplate ignoretext="Altero meu status para o modo Não perturbe" name="okignore" yestext="OK"/>
 	</notification>
 	<notification name="JoinedTooManyGroupsMember">
 		Você atingiu o limite máximo de grupos. Saia de outro grupo para poder entrar nesse ou recuse o convite.
@@ -2022,6 +2043,10 @@ Mover para o inventário o(s) item(s)?
 		Deseja abrir o [http://secondlife.com/account/ Painel] para ver o histórico da sua conta?
 		<usetemplate ignoretext="Abrir o navegador para acessar minha conta" name="okcancelignore" notext="Cancelar" yestext="Ir para a página"/>
 	</notification>
+	<notification name="ConfirmAddingChatParticipants">
+		Quando você adiciona uma pessoa a uma conversa existente, uma nova conversa é criada.  Todos os participantes recebem notificações sobre a nova conversa.
+		<usetemplate ignoretext="Confirme a inclusão de participantes no bate-papo" name="okcancelignore" notext="Cancelar" yestext="Ok"/>
+	</notification>
 	<notification name="ConfirmQuit">
 		Tem certeza que deseja sair?
 		<usetemplate ignoretext="Confirmar antes de sair" name="okcancelignore" notext="Não sair" yestext="Sair"/>
@@ -2096,14 +2121,14 @@ Você deseja substituí-lo pelo objeto selecionado?
 			<button ignore="Never Replace" name="No" text="Não"/>
 		</form>
 	</notification>
-	<notification label="Aviso de Modo Ocupado" name="BusyModePay">
-		Você está no modo Ocupado, o que significa que você não receberá quaisquer itens oferecidos em troca deste pagamento.
+	<notification label="Aviso de modo Não perturbe" name="DoNotDisturbModePay">
+		Você ativou o Não perturbe. Você não receberá qualquer item oferecido em troca deste pagamento.
 
-Você gostaria de deixar o modo Ocupado antes de completar esta transação?
+Deseja desativar o Não perturbe antes de concluir esta transação?
 		<form name="form">
-			<ignore name="ignore" save_option="true" text="Estou prestes a pagar alguém ou um objeto no modo ocupado"/>
-			<button ignore="Always leave Busy Mode" name="Yes" text="Sim"/>
-			<button ignore="Never leave Busy Mode" name="No" text="Não"/>
+			<ignore name="ignore" text="Estou prestes a pagar alguém ou um objeto no modo Não perturbe"/>
+			<button ignore="Sempre manter no modo Não perturbe" name="Yes" text="OK"/>
+			<button ignore="Nunca sair do modo Não perturbe" name="No" text="Cancelar"/>
 		</form>
 	</notification>
 	<notification name="ConfirmDeleteProtectedCategory">
@@ -2238,11 +2263,8 @@ Inclua um link para facilitar o acesso para visitantes. Teste o link na barra de
 	<notification name="GroupNotice">
 		Assunto: [SUBJECT], Mensagem: [MESSAGE]
 	</notification>
-	<notification name="FriendOnline">
-		&lt;nolink&gt;[NAME]&lt;/nolink&gt; está online
-	</notification>
-	<notification name="FriendOffline">
-		&lt;nolink&gt;[NAME]&lt;/nolink&gt; está offline
+	<notification name="FriendOnlineOffline">
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; está [STATUS]
 	</notification>
 	<notification name="AddSelfFriend">
 		Você é o máximo! Mesmo assim, não dá para adicionar a si mesmo(a) como amigo(a).
@@ -2467,13 +2489,6 @@ Logo, não é possível voar aqui.
 	<notification name="DynamicPathfindingDisabled">
 		O pathfinding dinâmico não está habilitado nesta região.  Os objetos com script usando chamadas LSL de pathfinding podem não operar como o esperado na região.
 	</notification>
-	<notification name="PathfindingRebakeNavmesh">
-		A alteração de determinados objetos nesta região pode resultar no comportamento incorreto de outros objeto em movimento.  Para fazer com que os objetos em movimento se comportem corretamente, clique no botão “Recarregar região”.  Escolha “Ajuda” para obter mais informações.
-		<url name="url">
-			http://wiki.secondlife.com/wiki/Pathfinding_Tools_in_the_Second_Life_Viewer
-		</url>
-		<usetemplate helptext="Ajuda" ignoretext="A alteração de determinados objetos nesta região pode resultar no comportamento incorreto de outros objeto em movimento." name="okhelpignore" yestext="OK"/>
-	</notification>
 	<notification name="PathfindingCannotRebakeNavmesh">
 		Erro.  Pode haver um erro de rede ou do servidor, ou você pode não ter direitos de construção.  Às vezes, fazer login e logout novamente resolve este problema.
 		<usetemplate name="okbutton" yestext="OK"/>
@@ -2736,7 +2751,7 @@ OK?
 	<notification name="ScriptQuestionCaution">
 		Aviso: O objeto &apos;&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;&apos; deseja obter acesso total à sua conta de dólares Linden. Se você conceder acesso, ele poderá remover fundos de sua conta a qualquer momento ou esvaziar sua conta completamente, continuamente e sem avisos adicionais.
   
-Esse tipo de pedido raramente é legítimo. Não conceda acesso se você não entender completamente por que ele deseja acessar sua conta.
+Não conceda acesso se você não entender completamente por que ele deseja acessar sua conta.
 		<form name="form">
 			<button name="Grant" text="Permitir acesso total"/>
 			<button name="Deny" text="Negar"/>
@@ -3310,4 +3325,633 @@ Tentativa cancelada.
 		Você está excluindo [NUM_ITEMS] itens.  Tem certeza de que deseja continuar?
 		<usetemplate ignoretext="Tem certeza de que deseja excluir múltiplos itens?" name="okcancelignore" notext="Não" yestext="Sim"/>
 	</notification>
+	<notification name="AvatarFrozen">
+		[AV_FREEZER] congelou você. Você não pode se mover ou interagir com o mundo.
+	</notification>
+	<notification name="AvatarFrozenDuration">
+		[AV_FREEZER] congelou você por [AV_FREEZE_TIME] segundos. Você não pode se mover ou interagir com o mundo.
+	</notification>
+	<notification name="YouFrozeAvatar">
+		Avatar congelado.
+	</notification>
+	<notification name="AvatarHasUnFrozenYou">
+		[AV_FREEZER] descongelou você.
+	</notification>
+	<notification name="AvatarUnFrozen">
+		Avatar descongelado.
+	</notification>
+	<notification name="AvatarFreezeFailure">
+		O congelamento falhou porque você não tem permissão de administrador para esse lote.
+	</notification>
+	<notification name="AvatarFreezeThaw">
+		Seu congelamento expirou, vá cuidar da sua vida.
+	</notification>
+	<notification name="AvatarCantFreeze">
+		Não é possível congelar esse usuário.
+	</notification>
+	<notification name="NowOwnObject">
+		Agora você é o proprietário do objeto [OBJECT_NAME]
+	</notification>
+	<notification name="CantRezOnLand">
+		Não é possível renderizar objeto em [OBJECT_POS] porque o proprietário do terreno não permite.  Use a ferramenta de terrenos para ver a propriedade do terreno.
+	</notification>
+	<notification name="RezFailTooManyRequests">
+		O objeto não pode ser renderizado porque há muitas solicitações.
+	</notification>
+	<notification name="SitFailCantMove">
+		Você não pode sentar porque não pode se mover no momento.
+	</notification>
+	<notification name="SitFailNotAllowedOnLand">
+		Você não pode sentar porque não está autorizado a sentar nesse terreno.
+	</notification>
+	<notification name="SitFailNotSameRegion">
+		Tente chegar mais perto.  Não é possível sentar no objeto porque
+ele não está na mesma região que você.
+	</notification>
+	<notification name="NoNewObjectRegionFull">
+		Não foi possível criar um novo objeto. A região está cheia.
+	</notification>
+	<notification name="FailedToPlaceObject">
+		Falha ao posicionar objeto em local específico.  Tente novamente.
+	</notification>
+	<notification name="NoOwnNoGardening">
+		Você não pode criar árvores e grama em terrenos que não são sua propriedade.
+	</notification>
+	<notification name="NoCopyPermsNoObject">
+		A cópia falhou porque você não está autorizado a copiar o objeto &apos;[OBJ_NAME]&apos;.
+	</notification>
+	<notification name="NoTransPermsNoObject">
+		A cópia falhou porque o objeto &apos;[OBJ_NAME]&apos; não pode ser transferido para você.
+	</notification>
+	<notification name="AddToNavMeshNoCopy">
+		A cópia falhou porque o objeto &apos;[OBJ_NAME]&apos; contribui para o navmesh.
+	</notification>
+	<notification name="DupeWithNoRootsSelected">
+		Duplicar sem objetos raiz selecionados.
+	</notification>
+	<notification name="CantDupeCuzRegionIsFull">
+		Não é possível duplicar objetos porque a região está cheia.
+	</notification>
+	<notification name="CantDupeCuzParcelNotFound">
+		Não é possível duplicar os objetos - não é possível encontrar o lote em que eles estão.
+	</notification>
+	<notification name="CantCreateCuzParcelFull">
+		Não é possível criar objeto porque 
+o lote está cheio.
+	</notification>
+	<notification name="RezAttemptFailed">
+		Falha na tentativa de renderizar um objeto.
+	</notification>
+	<notification name="ToxicInvRezAttemptFailed">
+		Não é possível criar um item que causou problemas a essa região.
+	</notification>
+	<notification name="InvItemIsBlacklisted">
+		Esse item do inventário foi incluído na lista.
+	</notification>
+	<notification name="NoCanRezObjects">
+		No momento, você não está autorizado a criar objetos.
+	</notification>
+	<notification name="LandSearchBlocked">
+		Pesquisa de terreno bloqueada.
+Você realizou muitas pesquisas de terreno muito rápido.
+Tente novamente em instantes.
+	</notification>
+	<notification name="NotEnoughResourcesToAttach">
+		Não há recursos de script disponíveis suficientes para anexar objeto!
+	</notification>
+	<notification name="YouDiedAndGotTPHome">
+		Você morreu e foi teletransportado para seu início
+	</notification>
+	<notification name="EjectComingSoon">
+		Você não tem mais permissão para ficar aqui e tem [EJECT_TIME] segundos para sair.
+	</notification>
+	<notification name="NoEnterServerFull">
+		Você não pode entrar nesta região porque 
+o servidor está cheio.
+	</notification>
+	<notification name="SaveBackToInvDisabled">
+		Salvar no inventário foi desativado.
+	</notification>
+	<notification name="NoExistNoSaveToContents">
+		Não é possível salvar &apos;[OBJ_NAME]&apos; no conteúdo do objeto porque o objeto do qual ele foi renderizado não existe mais.
+	</notification>
+	<notification name="NoModNoSaveToContents">
+		Não é possível salvar &apos;[OBJ_NAME]&apos; no conteúdo do objeto porque você não tem permissão para modificar o objeto &apos;[DEST_NAME]&apos;.
+	</notification>
+	<notification name="NoSaveBackToInvDisabled">
+		Não é possível salvar &apos;[OBJ_NAME]&apos; no inventário -- essa operação foi desativada.
+	</notification>
+	<notification name="NoCopyNoSelCopy">
+		Você não pode copiar sua seleção porque não está autorizado a copiar o objeto &apos;[OBJ_NAME]&apos;.
+	</notification>
+	<notification name="NoTransNoSelCopy">
+		Você não pode copiar a seleção porque o objeto &apos;[OBJ_NAME]&apos; não é transferível.
+	</notification>
+	<notification name="NoTransNoCopy">
+		Você não pode copiar a seleção porque o objeto &apos;[OBJ_NAME]&apos; não é transferível.
+	</notification>
+	<notification name="NoPermsNoRemoval">
+		A remoção do objeto &apos;[OBJ_NAME]&apos; do simulador é proibida pelo sistema de permissões.
+	</notification>
+	<notification name="NoModNoSaveSelection">
+		Você não pode salvar sua seleção porque não está autorizado a modificar o objeto &apos;[OBJ_NAME]&apos;.
+	</notification>
+	<notification name="NoCopyNoSaveSelection">
+		Não é possível salvar sua seleção porque o objeto &apos;[OBJ_NAME]&apos; não é copiável.
+	</notification>
+	<notification name="NoModNoTaking">
+		Você não pode levar sua seleção porque não está autorizado a modificar o objeto &apos;[OBJ_NAME]&apos;.
+	</notification>
+	<notification name="RezDestInternalError">
+		Erro interno: tipo de destino desconhecido.
+	</notification>
+	<notification name="DeleteFailObjNotFound">
+		A exclusão falhou porque o objeto não foi encontrado
+	</notification>
+	<notification name="SorryCantEjectUser">
+		Não é possível expulsar esse usuário.
+	</notification>
+	<notification name="RegionSezNotAHome">
+		Esta região não permite que você a defina como seu início.
+	</notification>
+	<notification name="HomeLocationLimits">
+		Você só pode definir seu &quot;Início&quot; em seu terreno ou em um Infohub do continente.
+	</notification>
+	<notification name="HomePositionSet">
+		Posição de início definida.
+	</notification>
+	<notification name="AvatarEjected">
+		Avatar expulso.
+	</notification>
+	<notification name="AvatarEjectFailed">
+		A expulsão falhou porque você não tem permissão de administrador para esse lote.
+	</notification>
+	<notification name="CantMoveObjectParcelFull">
+		Não é possível mover &apos;[OBJECT_NAME]&apos; para
+[OBJ_POSITION] na região [REGION_NAME] porque o lote está cheio.
+	</notification>
+	<notification name="CantMoveObjectParcelPerms">
+		Não é possível mover &apos;[OBJECT_NAME]&apos; para
+[OBJ_POSITION] na região [REGION_NAME] porque seus objetos não são permitidos neste lote.
+	</notification>
+	<notification name="CantMoveObjectParcelResources">
+		Não é possível mover &apos;[OBJECT_NAME]&apos; para
+[OBJ_POSITION] na região [REGION_NAME] porque não há recursos suficientes para este objeto neste lote.
+	</notification>
+	<notification name="CantMoveObjectRegionVersion">
+		Não é possível mover &apos;[OBJECT_NAME]&apos; para
+[OBJ_POSITION] na região [REGION_NAME] porque outra região está executando uma versão mais antiga, que não dá suporte o recebimento deste objeto por meio de passagem de regiões.
+	</notification>
+	<notification name="CantMoveObjectNavMesh">
+		Não é possível mover &apos;[OBJECT_NAME]&apos; para
+[OBJ_POSITION] na região [REGION_NAME] porque você não está autorizado a modificar o navmesh além dos limites da região.
+	</notification>
+	<notification name="CantMoveObjectWTF">
+		Não é possível mover &apos;[OBJECT_NAME]&apos; para
+[OBJ_POSITION] na região [REGION_NAME] por uma razão desconhecida. ([FAILURE_TYPE])
+	</notification>
+	<notification name="NoPermModifyObject">
+		Você não está autorizado a modificar este objeto
+	</notification>
+	<notification name="CantEnablePhysObjContributesToNav">
+		Não é possível ativar propriedades físicas para um objeto que contribui para o navmesh.
+	</notification>
+	<notification name="CantEnablePhysKeyframedObj">
+		Não é possível ativar propriedades físicas para objetos keyframe.
+	</notification>
+	<notification name="CantEnablePhysNotEnoughLandResources">
+		Não é possível ativar propriedades físicas para o objeto -- recursos de terreno insuficientes.
+	</notification>
+	<notification name="CantEnablePhysCostTooGreat">
+		Não é possível ativar propriedades físicas para objeto com custo de recursos físicos acima de [MAX_OBJECTS]
+	</notification>
+	<notification name="PhantomWithConcavePiece">
+		Este objeto não pode ter uma peça côncava porque é phantom e contribui para o navmesh.
+	</notification>
+	<notification name="UnableAddItem">
+		Não é possível adicionar item!
+	</notification>
+	<notification name="UnableEditItem">
+		Não é possível editar isso!
+	</notification>
+	<notification name="NoPermToEdit">
+		Não é permitido editar isso.
+	</notification>
+	<notification name="NoPermToCopyInventory">
+		Não é permitido copiar esse inventário.
+	</notification>
+	<notification name="CantSaveItemDoesntExist">
+		Não é possível salvar no conteúdo do objeto: O item não existe mais.
+	</notification>
+	<notification name="CantSaveItemAlreadyExists">
+		Não é possível salvar no conteúdo do objeto: já existe um item com esse nome no inventário
+	</notification>
+	<notification name="CantSaveModifyAttachment">
+		Não é possível salvar no conteúdo do objeto: isso modificaria as permissões de anexo.
+	</notification>
+	<notification name="TooManyScripts">
+		Muitos scripts.
+	</notification>
+	<notification name="UnableAddScript">
+		Não é possível adicionar script!
+	</notification>
+	<notification name="AssetServerTimeoutObjReturn">
+		Servidor de objetos não respondeu a tempo.  Objeto retornado a sim.
+	</notification>
+	<notification name="RegionDisablePhysicsShapes">
+		Esta região não tem formas físicas ativadas.
+	</notification>
+	<notification name="NoModNavmeshAcrossRegions">
+		Você não pode modificar o navmesh além dos limites da região.
+	</notification>
+	<notification name="NoSetPhysicsPropertiesOnObjectType">
+		Não é possível definir as propriedades físicas neste tipo de objeto.
+	</notification>
+	<notification name="NoSetRootPrimWithNoShape">
+		Não é possível definir que um prim raiz não tenha forma.
+	</notification>
+	<notification name="NoRegionSupportPhysMats">
+		Esta região não tem materiais físicos ativados.
+	</notification>
+	<notification name="OnlyRootPrimPhysMats">
+		Apenas prims raiz podem ter seus materiais físicos ajustados.
+	</notification>
+	<notification name="NoSupportCharacterPhysMats">
+		Ainda não há suporte para a configuração dos materiais físicos em personagens.
+	</notification>
+	<notification name="InvalidPhysMatProperty">
+		Uma ou mais das propriedades do material físico são inválidas.
+	</notification>
+	<notification name="NoPermsAlterStitchingMeshObj">
+		Você não pode alterar o tipo de acabamento de um objeto mesh.
+	</notification>
+	<notification name="NoPermsAlterShapeMeshObj">
+		Você não pode alterar a forma de um objeto mesh
+	</notification>
+	<notification name="FullRegionCantEnter">
+		Você não pode entrar nesta região porque \nela está cheia.
+	</notification>
+	<notification name="LinkFailedOwnersDiffer">
+		Falha na vinculação -- proprietários diferentes
+	</notification>
+	<notification name="LinkFailedNoModNavmeshAcrossRegions">
+		Falha na vinculação -- não é possível modificar o navmesh além dos limites da região.
+	</notification>
+	<notification name="LinkFailedNoPermToEdit">
+		Ocorreu uma falha na vinculação porque você não tem permissão de edição.
+	</notification>
+	<notification name="LinkFailedTooManyPrims">
+		Falha na vinculação -- muitos prims
+	</notification>
+	<notification name="LinkFailedCantLinkNoCopyNoTrans">
+		Falha na vinculação -- não é possível vincular itens com cópia proibida a itens com transferência proibida
+	</notification>
+	<notification name="LinkFailedNothingLinkable">
+		Falha na vinculação -- nada é vinculável.
+	</notification>
+	<notification name="LinkFailedTooManyPathfindingChars">
+		Falha na vinculação -- muitos personagens com pathfinding
+	</notification>
+	<notification name="LinkFailedInsufficientLand">
+		Falha na vinculação -- recursos de terreno insuficientes
+	</notification>
+	<notification name="LinkFailedTooMuchPhysics">
+		O objeto usa muitos recursos físicos – sua dinâmica foi desativada.
+	</notification>
+	<notification name="TeleportedHomeByObjectOnParcel">
+		Você foi teletransportado para seu início pelo objeto &apos;[OBJECT_NAME]&apos; no lote &apos;[PARCEL_NAME]&apos;
+	</notification>
+	<notification name="TeleportedHomeByObject">
+		Você foi teletransportado para seu início pelo objeto &apos;[OBJECT_NAME]&apos;
+	</notification>
+	<notification name="TeleportedByAttachment">
+		Você foi teletransportado por um anexo em [ITEM_ID]
+	</notification>
+	<notification name="TeleportedByObjectOnParcel">
+		Você foi teletransportado pelo objeto &apos;[OBJECT_NAME]&apos; no lote &apos;[PARCEL_NAME]&apos;
+	</notification>
+	<notification name="TeleportedByObjectOwnedBy">
+		Você foi teletransportado pelo objeto &apos;[OBJECT_NAME]&apos; de propriedade de [OWNER_ID]
+	</notification>
+	<notification name="TeleportedByObjectUnknownUser">
+		Você foi teletransportado pelo objeto &apos;[OBJECT_NAME]&apos; de propriedade de um usuário desconhecido.
+	</notification>
+	<notification name="CantCreateObjectRegionFull">
+		Não foi possível criar o objeto solicitado. A região está cheia.
+	</notification>
+	<notification name="CantAttackMultipleObjOneSpot">
+		Não é possível anexar vários objetos a um local.
+	</notification>
+	<notification name="CantCreateMultipleObjAtLoc">
+		Você não pode criar vários objetos aqui.
+	</notification>
+	<notification name="UnableToCreateObjTimeOut">
+		Não foi possível criar o objeto solicitado. Objeto ausente do banco de dados.
+	</notification>
+	<notification name="UnableToCreateObjUnknown">
+		Não foi possível criar o objeto solicitado. A solicitação expirou. Tente novamente.
+	</notification>
+	<notification name="UnableToCreateObjMissingFromDB">
+		Não foi possível criar o objeto solicitado. Tente novamente.
+	</notification>
+	<notification name="RezFailureTookTooLong">
+		Falha na renderização, objeto solicitado demorou muito a carregar.
+	</notification>
+	<notification name="FailedToPlaceObjAtLoc">
+		Falha ao posicionar objeto em local específico.  Tente novamente.
+	</notification>
+	<notification name="CantCreatePlantsOnLand">
+		Você não pode criar plantas neste terreno.
+	</notification>
+	<notification name="CantRestoreObjectNoWorldPos">
+		Não é possível restaurar o objeto. Nenhuma posição encontrada no mundo.
+	</notification>
+	<notification name="CantRezObjectInvalidMeshData">
+		Não é possível renderizar o objeto porque os dados de mesh são inválidos.
+	</notification>
+	<notification name="CantRezObjectTooManyScripts">
+		Não foi possível renderizar objeto porque já há muitos scripts nesta região.
+	</notification>
+	<notification name="CantCreateObjectNoAccess">
+		Seus privilégios de acesso não permitem que você crie objetos aqui.
+	</notification>
+	<notification name="CantCreateObject">
+		No momento, você não está autorizado a criar objetos.
+	</notification>
+	<notification name="InvalidObjectParams">
+		Parâmetros de objeto inválidos
+	</notification>
+	<notification name="CantDuplicateObjectNoAcess">
+		Seus privilégios de acesso não permitem que você duplique objetos aqui.
+	</notification>
+	<notification name="CantChangeShape">
+		Você não está autorizado a alterar essa forma.
+	</notification>
+	<notification name="NoAccessToClaimObjects">
+		Seus privilégios de acesso não permitem que você reivindique objetos aqui.
+	</notification>
+	<notification name="DeedFailedNoPermToDeedForGroup">
+		A doação falhou porque você não está autorizado a doar objetos ao seu grupo.
+	</notification>
+	<notification name="NoPrivsToBuyObject">
+		Seus privilégios de acesso não permitem que você compre objetos aqui.
+	</notification>
+	<notification name="CantAttachObjectAvatarSittingOnIt">
+		Não é possível anexar objeto porque um avatar está sentado nele.
+	</notification>
+	<notification name="WhyAreYouTryingToWearShrubbery">
+		Árvores e grama não podem ser usadas como anexos.
+	</notification>
+	<notification name="CantAttachGroupOwnedObjs">
+		Não é possível anexar objetos de propriedade de um grupo.
+	</notification>
+	<notification name="CantAttachObjectsNotOwned">
+		Não é possível anexar objetos que não sua propriedade.
+	</notification>
+	<notification name="CantAttachNavmeshObjects">
+		Não é possível anexar objetos que contribuem com o navmesh.
+	</notification>
+	<notification name="CantAttachObjectNoMovePermissions">
+		Não é possível vincular objeto porque você não tem permissão para movê-lo.
+	</notification>
+	<notification name="CantAttachNotEnoughScriptResources">
+		Não há recursos de script disponíveis suficientes para anexar objeto!
+	</notification>
+	<notification name="CantDropItemTrialUser">
+		Não é possível largar objetos aqui. Tente a área de Avaliação grátis.
+	</notification>
+	<notification name="CantDropMeshAttachment">
+		Você não pode largar anexos mesh. Separe para o inventário e depois renderize no mundo.
+	</notification>
+	<notification name="CantDropAttachmentNoPermission">
+		Falha ao largar anexo: você não está autorizado a largá-lo aqui.
+	</notification>
+	<notification name="CantDropAttachmentInsufficientLandResources">
+		Falha ao largar anexo: recursos de terreno disponíveis insuficientes.
+	</notification>
+	<notification name="CantDropAttachmentInsufficientResources">
+		Falha ao largar anexos: recursos disponíveis insuficientes.
+	</notification>
+	<notification name="CantDropObjectFullParcel">
+		Não é possível largar objeto aqui.  O lote está cheio.
+	</notification>
+	<notification name="CantTouchObjectBannedFromParcel">
+		Não é possível tocar/pegar este objeto porque você foi banido do lote de terreno.
+	</notification>
+	<notification name="PlzNarrowDeleteParams">
+		Detalhe seus parâmetros de exclusão.
+	</notification>
+	<notification name="UnableToUploadAsset">
+		Não é possível carregar objeto.
+	</notification>
+	<notification name="CantTeleportCouldNotFindUser">
+		Não foi possível encontrar usuário para teletransportar para início
+	</notification>
+	<notification name="GodlikeRequestFailed">
+		solicitação de poderes de deus falhou
+	</notification>
+	<notification name="GenericRequestFailed">
+		falha em solicitação genérica
+	</notification>
+	<notification name="CantUploadPostcard">
+		Não foi possível carregar cartão postal.  Tente novamente mais tarde.
+	</notification>
+	<notification name="CantFetchInventoryForGroupNotice">
+		Não foi possível obter detalhes de inventário para o anúncio de grupo.
+	</notification>
+	<notification name="CantSendGroupNoticeNotPermitted">
+		Não é possível enviar anúncio de grupo -- não permitido.
+	</notification>
+	<notification name="CantSendGroupNoticeCantConstructInventory">
+		Não é possível enviar anúncio de grupo -- não foi possível construir inventário.
+	</notification>
+	<notification name="CantParceInventoryInNotice">
+		Não é possível processar o inventário do anúncio.
+	</notification>
+	<notification name="TerrainUploadFailed">
+		Falha no envio de terreno.
+	</notification>
+	<notification name="TerrainFileWritten">
+		Arquivo de terreno gravado.
+	</notification>
+	<notification name="TerrainFileWrittenStartingDownload">
+		Arquivo de terreno criado, iniciando o download...
+	</notification>
+	<notification name="TerrainBaked">
+		Terreno confeccionado.
+	</notification>
+	<notification name="TenObjectsDisabledPlzRefresh">
+		Apenas os 10 primeiros objetos selecionados foram desativados. Atualize e faça novas seleções, se necessário.
+	</notification>
+	<notification name="UpdateViewerBuyParcel">
+		Você precisa atualizar seu visualizador para comprar este lote.
+	</notification>
+	<notification name="CantBuyParcelNotForSale">
+		Não é possível comprar, este lote não está à venda.
+	</notification>
+	<notification name="CantBuySalePriceOrLandAreaChanged">
+		Não é possível comprar, o preço de venda ou a área do terreno foram alterados.
+	</notification>
+	<notification name="CantBuyParcelNotAuthorized">
+		Você não é o comprador autorizado deste lote.
+	</notification>
+	<notification name="CantBuyParcelAwaitingPurchaseAuth">
+		Você não pode comprar este lote porque já está aguardando aut. de compra
+	</notification>
+	<notification name="CantBuildOverflowParcel">
+		Não é possível criar objeto aqui porque isso sobrecarregaria o lote.
+	</notification>
+	<notification name="SelectedMultipleOwnedLand">
+		Você selecionou terreno com proprietários diferentes. Selecione uma área menor e tente novamente.
+	</notification>
+	<notification name="CantJoinTooFewLeasedParcels">
+		Não há lotes alugados suficientes na seleção para reunir.
+	</notification>
+	<notification name="CantDivideLandMultipleParcelsSelected">
+		Não é possível dividir o terreno.\nHá mais de um lote selecionado.\nTente selecionar um pedaço menor de terreno.
+	</notification>
+	<notification name="CantDivideLandCantFindParcel">
+		Não é possível dividir o terreno.\nNão é possível encontrar o lote.\nComunique isso em Ajuda -&gt; Relatar bug...
+	</notification>
+	<notification name="CantDivideLandWholeParcelSelected">
+		Não é possível dividir o terreno. O lote inteiro está selecionado.\nTente selecionar um pedaço menor do terreno.
+	</notification>
+	<notification name="LandHasBeenDivided">
+		O terreno foi dividido.
+	</notification>
+	<notification name="PassPurchased">
+		Você comprou um passe.
+	</notification>
+	<notification name="RegionDisallowsClassifieds">
+		A região não permite classificados.
+	</notification>
+	<notification name="LandPassExpireSoon">
+		Seu passe para este terreno está prestes a expirar.
+	</notification>
+	<notification name="CantSitNoSuitableSurface">
+		Não há uma superfície adequada para sentar, tente outro local.
+	</notification>
+	<notification name="CantSitNoRoom">
+		Não há espaço para sentar aqui, tente outro local.
+	</notification>
+	<notification name="ClaimObjectFailedNoPermission">
+		A reivindicação do objeto falhou porque você não tem permissão
+	</notification>
+	<notification name="ClaimObjectFailedNoMoney">
+		A reivindicação do objeto falhou porque você não tem L$ suficiente.
+	</notification>
+	<notification name="CantDeedGroupLand">
+		Não é possível doar terrenos de propriedade de um grupo.
+	</notification>
+	<notification name="BuyObjectFailedNoMoney">
+		A compra do objeto falhou porque você não tem L$ suficientes.
+	</notification>
+	<notification name="BuyInventoryFailedNoMoney">
+		A compra do inventário falhou porque você não tem L$ suficiente
+	</notification>
+	<notification name="BuyPassFailedNoMoney">
+		Você não tem L $ suficientes para comprar um passe para este terreno.
+	</notification>
+	<notification name="CantBuyPassTryAgain">
+		Não é possível comprar passe no momento.  Tente novamente mais tarde.
+	</notification>
+	<notification name="CantCreateObjectParcelFull">
+		Não é possível criar objeto porque \no lote está cheio.
+	</notification>
+	<notification name="FailedPlacingObject">
+		Falha ao posicionar objeto em local específico.  Tente novamente.
+	</notification>
+	<notification name="CantCreateLandmarkForEvent">
+		Não é possível criar marco para o evento.
+	</notification>
+	<notification name="GodBeatsFreeze">
+		Seus poderes de deus rompem o congelamento!
+	</notification>
+	<notification name="SpecialPowersRequestFailedLogged">
+		Falha na solicitação de poderes especiais. Essa solicitação foi registrada.
+	</notification>
+	<notification name="ExpireExplanation">
+		O sistema não pode processar sua solicitação no momento. A solicitação expirou.
+	</notification>
+	<notification name="DieExplanation">
+		O sistema não pode processar sua solicitação.
+	</notification>
+	<notification name="AddPrimitiveFailure">
+		Fundos insuficientes para criar prim.
+	</notification>
+	<notification name="RezObjectFailure">
+		Fundos insuficientes para criar objeto.
+	</notification>
+	<notification name="ResetHomePositionNotLegal">
+		Redefinir Início pois o Início não era legal.
+	</notification>
+	<notification name="CantInviteRegionFull">
+		No momento, você não pode convidar ninguém para seu local pois a região está cheia. Tente novamente mais tarde.
+	</notification>
+	<notification name="CantSetHomeAtRegion">
+		Esta região não permite que você a defina como seu início.
+	</notification>
+	<notification name="ListValidHomeLocations">
+		Você só pode definir seu &quot;Início&quot; em seu terreno ou em um Infohub do continente.
+	</notification>
+	<notification name="SetHomePosition">
+		Posição de início definida.
+	</notification>
+	<notification name="CantDerezInventoryError">
+		Não é possível desrenderizar objeto devido a uma falha de inventário.
+	</notification>
+	<notification name="CantCreateRequestedInv">
+		Não é possível criar o inventário solicitado.
+	</notification>
+	<notification name="CantCreateRequestedInvFolder">
+		Não é possível criar a pasta de inventário solicitada.
+	</notification>
+	<notification name="CantCreateInventory">
+		Não é possível criar esse inventário.
+	</notification>
+	<notification name="CantCreateLandmark">
+		Não é possível criar marco.
+	</notification>
+	<notification name="CantCreateOutfit">
+		Não é possível criar roupa agora. Tente novamente em instantes.
+	</notification>
+	<notification name="InventoryNotForSale">
+		O inventário não está à venda.
+	</notification>
+	<notification name="CantFindInvItem">
+		Não é possível encontrar item do inventário.
+	</notification>
+	<notification name="CantFindObject">
+		Não foi possível encontrar objeto.
+	</notification>
+	<notification name="CantTransfterMoneyRegionDisabled">
+		Transferências de dinheiro para objetos estão desativadas para esta região no momento.
+	</notification>
+	<notification name="CantPayNoAgent">
+		Não foi possível descobrir a quem pagar.
+	</notification>
+	<notification name="CantDonateToPublicObjects">
+		Não é possível dar L$ a objetos públicos.
+	</notification>
+	<notification name="InventoryCreationInWorldObjectFailed">
+		Falha na criação de inventário de objetos do mundo virtual.
+	</notification>
+	<notification name="UserBalanceOrLandUsageError">
+		Um erro interno impediu que seu visualizador fosse atualizado corretamente.  O saldo em L$ ou a propriedade de lotes exibidos em seu visualizador pode não refletir o saldo real nos servidores.
+	</notification>
+	<notification name="LargePrimAgentIntersect">
+		Não é possível criar grandes prims que interceptam outros jogadores.  Tente novamente quando os outros jogadores tiverem se movido.
+	</notification>
+	<notification name="PreferenceChatClearLog">
+		Isso excluirá os registros das conversas anteriores e qualquer backup desse arquivo.
+		<usetemplate ignoretext="Confirmar antes de excluir o registro com conversas anteriores." name="okcancelignore" notext="Cancelar" yestext="OK"/>
+	</notification>
+	<notification name="PreferenceChatDeleteTranscripts">
+		Isso excluirá todas as transcrições de todas as conversas anteriores. A lista de conversas antigas não será afetada. Todos os arquivos com as extensões .txt e txt.backup na pasta [FOLDER] serão excluídos.
+		<usetemplate ignoretext="Confirmar antes de excluir transcrições." name="okcancelignore" notext="Cancelar" yestext="OK"/>
+	</notification>
+	<notification name="PreferenceChatPathChanged">
+		Não foi possível mover arquivos. Caminho anterior restaurado.
+		<usetemplate ignoretext="Não foi possível mover arquivos. Caminho anterior restaurado." name="okignore" yestext="OK"/>
+	</notification>
 </notifications>
diff --git a/indra/newview/skins/default/xui/pt/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/pt/panel_avatar_list_item.xml
index b444593af82..22eb23ebc52 100644
--- a/indra/newview/skins/default/xui/pt/panel_avatar_list_item.xml
+++ b/indra/newview/skins/default/xui/pt/panel_avatar_list_item.xml
@@ -26,5 +26,6 @@
 	<icon name="permission_edit_mine_icon" tool_tip="Este amigo pode editar, excluir ou pegar seus pertences"/>
 	<icon name="permission_map_icon" tool_tip="Este amigo pode localizar você no mapa"/>
 	<icon name="permission_online_icon" tool_tip="Este amigo pode saber quando você estiver online"/>
+	<button name="info_btn" tool_tip="Mais informações"/>
 	<button name="profile_btn" tool_tip="Ver perfil"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/pt/panel_block_list_sidetray.xml
index c5f93d719a3..2fcf6b9932f 100644
--- a/indra/newview/skins/default/xui/pt/panel_block_list_sidetray.xml
+++ b/indra/newview/skins/default/xui/pt/panel_block_list_sidetray.xml
@@ -1,10 +1,11 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="block_list_panel">
-	<text name="title_text">
-		Lista de bloqueados
-	</text>
-	<scroll_list name="blocked" tool_tip="Lista atual dos residentes bloqueados"/>
-	<button label="Bloquear residente..." label_selected="Bloquear residente..." name="Block resident..." tool_tip="Selecione o residente a bloquear"/>
-	<button label="Bloquear objeto por nome..." label_selected="Bloquear objeto por nome..." name="Block object by name..."/>
-	<button label="Desbloquear" label_selected="Desbloquear" name="Unblock" tool_tip="Remover residente ou objeto da lista dos bloqueados"/>
+	<panel label="bottom_panel" name="blocked_buttons_panel">
+		<filter_editor label="Filtrar" name="blocked_filter_input"/>
+		<menu_button name="blocked_gear_btn" tool_tip="Ações em uma pessoa ou um objeto selecionado"/>
+		<menu_button name="view_btn" tool_tip="Opções de ordenação"/>
+		<menu_button name="plus_btn" tool_tip="Escolher um residente ou um objeto a ser bloqueado"/>
+		<button name="unblock_btn" tool_tip="Remover residente ou objeto da lista dos bloqueados"/>
+	</panel>
+	<block_list name="blocked" tool_tip="Lista atual dos residentes bloqueados"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_conversation_list_item.xml b/indra/newview/skins/default/xui/pt/panel_conversation_list_item.xml
new file mode 100644
index 00000000000..f56168c9629
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_conversation_list_item.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="conversation_list_item">
+	<layout_stack name="conversation_item_stack">
+		<layout_panel name="conversation_title_panel">
+			<text name="conversation_title" value="(carregando)"/>
+		</layout_panel>
+	</layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_conversation_log_list_item.xml b/indra/newview/skins/default/xui/pt/panel_conversation_log_list_item.xml
new file mode 100644
index 00000000000..74daded58f7
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_conversation_log_list_item.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="conversation_log_list_item">
+	<icon name="voice_session_icon" tool_tip="Uma conversa de voz foi incluída"/>
+	<icon name="unread_ims_icon" tool_tip="Chegaram mensagens enquanto você estava desconectado"/>
+	<button name="delete_btn" tool_tip="Remover esta entrada"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_group_list_item.xml b/indra/newview/skins/default/xui/pt/panel_group_list_item.xml
index 19c34d2f103..04908785077 100644
--- a/indra/newview/skins/default/xui/pt/panel_group_list_item.xml
+++ b/indra/newview/skins/default/xui/pt/panel_group_list_item.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="group_list_item">
 	<text name="group_name" value="Desconhecido"/>
+	<button name="info_btn" tool_tip="Mais informações"/>
 	<button name="profile_btn" tool_tip="Ver perfil"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_people.xml b/indra/newview/skins/default/xui/pt/panel_people.xml
index f3af15b9916..babb48c208f 100644
--- a/indra/newview/skins/default/xui/pt/panel_people.xml
+++ b/indra/newview/skins/default/xui/pt/panel_people.xml
@@ -14,81 +14,53 @@ Em busca de alguém para conversar? Procure no [secondlife:///app/worldmap Mapa-
 	<string name="no_filtered_friends_msg">
 		Não encontrou o que procura? Tente buscar no [secondlife:///app/search/people/[SEARCH_TERM] Search].
 	</string>
-	<string name="people_filter_label" value="Filtro de pessoas"/>
-	<string name="groups_filter_label" value="Filtro de grupos"/>
 	<string name="no_filtered_groups_msg" value="Não encontrou o que procura? Tente buscar no [secondlife:///app/search/groups/[SEARCH_TERM] Search]."/>
 	<string name="no_groups_msg" value="À procura de grupos interessantes? Tente fazer uma [secondlife:///app/search/groups Busca]."/>
 	<string name="MiniMapToolTipMsg" value="[REGION](Clique duas vezes para abrir o mapa, shift+arraste para a visão pan)"/>
 	<string name="AltMiniMapToolTipMsg" value="[REGION](Clique duas vezes para teletransportar, shift+arraste para a visão pan)"/>
-	<filter_editor label="Filtro" name="filter_input"/>
 	<tab_container name="tabs">
 		<panel label="PROXIMIDADE" name="nearby_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<menu_button name="nearby_view_sort_btn" tool_tip="Opções"/>
-				<button name="add_friend_btn" tool_tip="Adicionar o residente selecionado para sua lista de amigos"/>
+			<panel label="bottom_panel" name="nearby_buttons_panel">
+				<filter_editor label="Filtrar pessoas" name="nearby_filter_input"/>
+				<button name="gear_btn" tool_tip="Ações nas pessoas selecionadas"/>
+				<menu_button name="nearby_view_btn" tool_tip="Opções de exibição/ordenação"/>
+				<button name="add_friend_btn" tool_tip="Oferecer amizade ao residente"/>
+				<dnd_button name="nearby_del_btn" tool_tip="Remover a pessoa selecionada dos amigos"/>
 			</panel>
 		</panel>
-		<panel label="MEUS AMIGOS" name="friends_panel">
+		<panel label="AMIGOS" name="friends_panel">
+			<panel label="bottom_panel" name="friends_buttons_panel">
+				<filter_editor label="Filtrar pessoas" name="friends_filter_input"/>
+				<button name="gear_btn" tool_tip="Ações nas pessoas selecionadas"/>
+				<menu_button name="friends_view_btn" tool_tip="Opções de exibição/ordenação"/>
+				<button name="friends_add_btn" tool_tip="Oferecer amizade ao residente"/>
+				<dnd_button name="friends_del_btn" tool_tip="Remover a pessoa selecionada dos amigos"/>
+			</panel>
 			<accordion name="friends_accordion">
 				<accordion_tab name="tab_online" title="Online"/>
 				<accordion_tab name="tab_all" title="Todos"/>
 			</accordion>
-			<panel label="bottom_panel" name="bottom_panel">
-				<layout_stack name="bottom_panel">
-					<layout_panel name="options_gear_btn_panel">
-						<menu_button name="friends_viewsort_btn" tool_tip="Mostrar opções adicionais"/>
-					</layout_panel>
-					<layout_panel name="add_btn_panel">
-						<button name="add_btn" tool_tip="Oferecer amizade para um residente"/>
-					</layout_panel>
-					<layout_panel name="trash_btn_panel">
-						<dnd_button name="del_btn" tool_tip="Remover a pessoa selecionada da sua lista de amigos"/>
-					</layout_panel>
-				</layout_stack>
-			</panel>
 		</panel>
-		<panel label="MEUS GRUPOS" name="groups_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<menu_button name="groups_viewsort_btn" tool_tip="Opções"/>
-				<button name="plus_btn" tool_tip="Ingressar em um grupo/Criar novo grupo"/>
-				<button name="activate_btn" tool_tip="Ativar o grupo selecionado"/>
+		<panel label="GRUPOS" name="groups_panel">
+			<panel label="bottom_panel" name="groups_buttons_panel">
+				<filter_editor label="Filtrar grupos" name="groups_filter_input"/>
+				<menu_button name="groups_gear_btn" tool_tip="Ações no grupo selecionado"/>
+				<menu_button name="groups_view_btn" tool_tip="Opções de exibição/ordenação"/>
+				<menu_button name="plus_btn" tool_tip="Entrar em um grupo/Criar novo grupo"/>
+				<dnd_button name="minus_btn" tool_tip="Sair do grupo selecionado"/>
 			</panel>
 		</panel>
 		<panel label="RECENTE" name="recent_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<menu_button name="recent_viewsort_btn" tool_tip="Opções"/>
-				<button name="add_friend_btn" tool_tip="Adicionar o residente selecionado para sua lista de amigos"/>
+			<panel label="bottom_panel" name="recent_buttons_panel">
+				<filter_editor label="Filtrar pessoas" name="recent_filter_input"/>
+				<button name="gear_btn" tool_tip="Ações nas pessoas selecionadas"/>
+				<menu_button name="recent_view_btn" tool_tip="Opções de exibição/ordenação"/>
+				<button name="add_friend_btn" tool_tip="Oferecer amizade ao residente"/>
+				<dnd_button name="recent_del_btn" tool_tip="Remover a pessoa selecionada dos amigos"/>
 			</panel>
 		</panel>
+		<panel label="BLOQUEADA" name="blocked_panel">
+			<panel label="Residentes e objetos bloqueados" name="panel_block_list_sidetray"/>
+		</panel>
 	</tab_container>
-	<panel name="button_bar">
-		<layout_stack name="bottom_bar_ls">
-			<layout_panel name="view_profile_btn_lp">
-				<button label="Perfil" name="view_profile_btn" tool_tip="Exibir fotografia, grupos e outras informações dos residentes"/>
-			</layout_panel>
-			<layout_panel name="im_btn_lp">
-				<button label="MI" name="im_btn" tool_tip="Abrir sessão de mensagem instantânea"/>
-			</layout_panel>
-			<layout_panel name="call_btn_lp">
-				<button label="Ligar" name="call_btn" tool_tip="Ligar para este residente"/>
-			</layout_panel>
-			<layout_panel name="share_btn_lp">
-				<button label="Compartilhar" name="share_btn" tool_tip="Compartilhar item de inventário"/>
-			</layout_panel>
-			<layout_panel name="teleport_btn_lp">
-				<button label="Teletransportar" name="teleport_btn" tool_tip="Oferecer teletransporte"/>
-			</layout_panel>
-		</layout_stack>
-		<layout_stack name="bottom_bar_ls1">
-			<layout_panel name="group_info_btn_lp">
-				<button label="Perfil do grupo" name="group_info_btn" tool_tip="Exibir dados do grupo"/>
-			</layout_panel>
-			<layout_panel name="chat_btn_lp">
-				<button label="Bate-papo de grupo" name="chat_btn" tool_tip="Nova sessão de bate-papo"/>
-			</layout_panel>
-			<layout_panel name="group_call_btn_lp">
-				<button label="Ligar para o grupo" name="group_call_btn" tool_tip="Ligar para este grupo"/>
-			</layout_panel>
-		</layout_stack>
-	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_chat.xml b/indra/newview/skins/default/xui/pt/panel_preferences_chat.xml
index 350d53b81c7..baf14c2c23f 100644
--- a/indra/newview/skins/default/xui/pt/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/pt/panel_preferences_chat.xml
@@ -1,34 +1,86 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Chat" name="chat">
-	<text name="font_size">
-		Tamanho da fonte:
-	</text>
-	<radio_group name="chat_font_size">
-		<radio_item label="Pequeno" name="radio" value="0"/>
-		<radio_item label="Médio" name="radio2" value="1"/>
-		<radio_item label="Grande" name="radio3" value="2"/>
-	</radio_group>
-	<check_box initial_value="true" label="Executar animação digitada quando estiver conversando" name="play_typing_animation"/>
-	<check_box label="Enviar MIs por email se estiver desconectado" name="send_im_to_email"/>
-	<check_box label="Ativar MIs e bate-papos de texto simples" name="plain_text_chat_history"/>
-	<check_box label="Balão de bate-papo" name="bubble_text_chat"/>
-	<text name="show_ims_in_label">
-		Mostrar MIs em:
-	</text>
-	<text name="requires_restart_label">
-		(Reinicie para ativar)
-	</text>
-	<radio_group name="chat_window" tool_tip="Exibir cada bate-papo em uma janela separada ou exibir todos em uma única janela com uma aba para cada pessoa (requer reinício)">
-		<radio_item label="Janelas separadas" name="radio" value="0"/>
-		<radio_item label="Guias" name="radio2" value="1"/>
-	</radio_group>
-	<text name="disable_toast_label">
-		Ativar pop-ups de novos bate-papos:
-	</text>
-	<check_box label="Bate-papo de grupo" name="EnableGroupChatPopups" tool_tip="Exibir pop-up de bate-papos novos de grupos"/>
-	<check_box label="Bate-papos de MI" name="EnableIMChatPopups" tool_tip="Exibir pop-up de mensagens instantâneas novas"/>
-	<spinner label="Transição de avisos de bate-papos por perto:" name="nearby_toasts_lifetime"/>
-	<spinner label="Transição de avisos de bate-papos por perto:" name="nearby_toasts_fadingtime"/>
+	<panel>
+		<check_box initial_value="true" label="Executar animação digitada quando estiver conversando" name="play_typing_animation"/>
+		<check_box label="Enviar MIs por email se estiver desconectado" name="send_im_to_email"/>
+		<check_box label="Apenas amigos e grupos podem me ligar ou enviar MIs" name="voice_call_friends_only_check"/>
+		<text name="font_size">
+			Tamanho da fonte:
+		</text>
+		<combo_box name="chat_font_size">
+			<item label="Pequeno" name="Small" value="0"/>
+			<item label="Médio" name="Medium" value="1"/>
+			<item label="Grande" name="Large" value="2"/>
+		</combo_box>
+		<check_box label="Balão de bate-papo" name="bubble_text_chat"/>
+	</panel>
+	<panel>
+		<text name="notifications">
+			Notificações
+		</text>
+		<text name="friend_ims">
+			MIs de amigos:
+		</text>
+		<combo_box name="FriendIMOptions">
+			<item label="Abrir janela Conversas" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Abrir pop up com mensagem" name="PopUpMessage" value="toast"/>
+			<item label="Piscar botão da barra de ferramentas" name="FlashToolbarButton" value="flash"/>
+			<item label="Nenhum" name="None" value="none"/>
+		</combo_box>
+		<text name="non_friend_ims">
+			MIs de não amigos:
+		</text>
+		<combo_box name="NonFriendIMOptions">
+			<item label="Abrir janela Conversas" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Abrir pop up com mensagem" name="PopUpMessage" value="toast"/>
+			<item label="Piscar botão da barra de ferramentas" name="FlashToolbarButton" value="flash"/>
+			<item label="Nenhum" name="None" value="none"/>
+		</combo_box>
+		<text name="conference_ims">
+			MIs de conferências:
+		</text>
+		<combo_box name="ConferenceIMOptions">
+			<item label="Abrir janela Conversas" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Abrir pop up com mensagem" name="PopUpMessage" value="toast"/>
+			<item label="Piscar botão da barra de ferramentas" name="FlashToolbarButton" value="flash"/>
+			<item label="Nenhum" name="None" value="none"/>
+		</combo_box>
+		<text name="group_chat">
+			Bate-papo de grupo:
+		</text>
+		<combo_box name="GroupChatOptions">
+			<item label="Abrir janela Conversas" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Abrir pop up com mensagem" name="PopUpMessage" value="toast"/>
+			<item label="Piscar botão da barra de ferramentas" name="FlashToolbarButton" value="flash"/>
+			<item label="Nenhum" name="None" value="none"/>
+		</combo_box>
+		<text name="nearby_chat">
+			Bate-papo local:
+		</text>
+		<combo_box name="NearbyChatOptions">
+			<item label="Abrir janela Conversas" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Abrir pop up com mensagem" name="PopUpMessage" value="toast"/>
+			<item label="Piscar botão da barra de ferramentas" name="FlashToolBarButton" value="flash"/>
+			<item label="Nenhum" name="None" value="none"/>
+		</combo_box>
+		<text name="notifications_alert">
+			Para interromper temporariamente todas as notificações, use Comunicar &gt; Não perturbe.
+		</text>
+	</panel>
+	<panel>
+		<text name="play_sound">
+			Executar som:
+		</text>
+		<check_box label="Nova conversa" name="new_conversation"/>
+		<check_box label="Chamada de voz recebida" name="incoming_voice_call"/>
+		<check_box label="Oferta de teletransporte" name="teleport_offer"/>
+		<check_box label="Oferta de inventário" name="inventory_offer"/>
+	</panel>
+	<panel>
+		<button label="Limpar registro..." name="clear_log"/>
+		<button label="Excluir transcrições..." name="delete_transcripts"/>
+		<button label="Procurar..." label_selected="Procurar" name="log_path_button"/>
+	</panel>
 	<button label="Tradução..." name="ok_btn"/>
 	<button label="Substituição automática..." name="autoreplace_showgui"/>
 	<button label="Verificando a ortografia..." name="spellcheck_showgui"/>
diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_general.xml b/indra/newview/skins/default/xui/pt/panel_preferences_general.xml
index c53aa7d5f70..8a0495f9bb5 100644
--- a/indra/newview/skins/default/xui/pt/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/pt/panel_preferences_general.xml
@@ -69,6 +69,9 @@
 		<combo_box.item label="(nunca)" name="item4"/>
 	</combo_box>
 	<text name="text_box3">
-		Mensagem do modo ocupado:
+		Resposta de Não perturbe:
 	</text>
+	<text_editor name="do_not_disturb_response">
+		log_in_to_change
+	</text_editor>
 </panel>
diff --git a/indra/newview/skins/default/xui/pt/sidepanel_task_info.xml b/indra/newview/skins/default/xui/pt/sidepanel_task_info.xml
index 3cfe0fe4f41..f0fd438cef5 100644
--- a/indra/newview/skins/default/xui/pt/sidepanel_task_info.xml
+++ b/indra/newview/skins/default/xui/pt/sidepanel_task_info.xml
@@ -72,6 +72,7 @@
 			<combo_box.item label="Comprar objeto" name="Buyobject"/>
 			<combo_box.item label="Pagar por objeto" name="Payobject"/>
 			<combo_box.item label="Abrir" name="Open"/>
+			<combo_box.item label="Zoom" name="Zoom"/>
 		</combo_box>
 		<panel name="perms_inv">
 			<text name="perm_modify">
diff --git a/indra/newview/skins/default/xui/pt/strings.xml b/indra/newview/skins/default/xui/pt/strings.xml
index bc72b860201..4bf18aab705 100644
--- a/indra/newview/skins/default/xui/pt/strings.xml
+++ b/indra/newview/skins/default/xui/pt/strings.xml
@@ -128,7 +128,7 @@
 		Sair
 	</string>
 	<string name="create_account_url">
-		http://join.secondlife.com/index.php?lang=pt-BR&amp;sourceid=[sourceid]
+		http://join.secondlife.com/?sourceid=[sourceid]
 	</string>
 	<string name="LoginFailedViewerNotPermitted">
 		O visualizador utilizado já não é compatível com o Second Life.  Visite a página abaixo para baixar uma versão atual: http://secondlife.com/download
@@ -571,8 +571,8 @@ Pessoas com contas gratuitas não poderão acessar o Second Life no momento para
 	<string name="AvatarAway">
 		Distante
 	</string>
-	<string name="AvatarBusy">
-		Ocupado
+	<string name="AvatarDoNotDisturb">
+		Não perturbe
 	</string>
 	<string name="AvatarMuted">
 		Mudo
@@ -808,6 +808,12 @@ Pessoas com contas gratuitas não poderão acessar o Second Life no momento para
 	<string name="ST_NO_JOINT">
 		Não é possível encontrar a raiz (ROOT) ou junção (JOINT).
 	</string>
+	<string name="NearbyChatTitle">
+		Bate-papo local
+	</string>
+	<string name="NearbyChatLabel">
+		(Bate-papo local)
+	</string>
 	<string name="whisper">
 		sussurra:
 	</string>
@@ -871,6 +877,9 @@ Pessoas com contas gratuitas não poderão acessar o Second Life no momento para
 	<string name="ControlYourCamera">
 		Controle sua camera
 	</string>
+	<string name="AgentNameSubst">
+		(Você)
+	</string>
 	<string name="TeleportYourAgent">
 		Teletransportá-lo
 	</string>
@@ -955,18 +964,6 @@ Pessoas com contas gratuitas não poderão acessar o Second Life no momento para
 	<string name="dictionary_files">
 		Dicionários
 	</string>
-	<string name="AvatarSetNotAway">
-		deixar como ausente
-	</string>
-	<string name="AvatarSetAway">
-		deixar como ausente
-	</string>
-	<string name="AvatarSetNotBusy">
-		deixar como não ocupado
-	</string>
-	<string name="AvatarSetBusy">
-		Deixar como ocupado
-	</string>
 	<string name="shape">
 		Silhueta
 	</string>
@@ -1923,8 +1920,8 @@ Pessoas com contas gratuitas não poderão acessar o Second Life no momento para
 	<string name="PanelContentsNewScript">
 		Novo Script
 	</string>
-	<string name="BusyModeResponseDefault">
-		O residente para o qual escreveu está no modo &apos;ocupado&apos;, ou seja, ele prefere não receber nada no momento. Sua mensagem será exibida como uma MI mais tarde.
+	<string name="DoNotDisturbModeResponseDefault">
+		Este residente ativou o &quot;Não perturbe&quot; e verá sua mensagem mais tarde.
 	</string>
 	<string name="MuteByName">
 		(por nome)
@@ -2037,9 +2034,6 @@ Pessoas com contas gratuitas não poderão acessar o Second Life no momento para
 	<string name="GroupMoneyDate">
 		[weekday,datetime,utc] [mth,datetime,utc] [day,datetime,utc], [year,datetime,utc]
 	</string>
-	<string name="ViewerObjectContents">
-		Conteúdo
-	</string>
 	<string name="AcquiredItems">
 		Itens adquiridos
 	</string>
@@ -3753,7 +3747,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 		Região em geral
 	</string>
 	<string name="LocationCtrlSeeAVsTooltip">
-		Avatar visíveis e bate-papo permitido fora deste terreno
+		Os avatares neste lote não podem ser vistos ou ouvidos por avatares fora dele
 	</string>
 	<string name="LocationCtrlPathfindingDirtyTooltip">
 		Os objetos que se movem podem não se comportar corretamente nesta região até que ela seja recarregada.
@@ -3830,6 +3824,12 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 	<string name="IM_unblock_only_groups_friends">
 		Para visualizar esta mensagem, você deve desmarcar &quot;Apenas amigos e grupos podem me ligar ou enviar MIs&quot; em Preferências/Privacidade.
 	</string>
+	<string name="OnlineStatus">
+		Conectado
+	</string>
+	<string name="OfflineStatus">
+		Desconectado
+	</string>
 	<string name="answered_call">
 		Ligação atendida
 	</string>
@@ -3839,6 +3839,9 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 	<string name="you_joined_call">
 		Você entrou na ligação
 	</string>
+	<string name="you_auto_rejected_call-im">
+		Você recusou automaticamente a chamada de voz enquanto &quot;Não perturbe&quot; estava ativado.
+	</string>
 	<string name="name_started_call">
 		[NAME] iniciou uma ligação de voz
 	</string>
@@ -3851,6 +3854,9 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 	<string name="hang_up-im">
 		Saiu da ligação de voz
 	</string>
+	<string name="conference-title">
+		Bate-papo com várias pessoas
+	</string>
 	<string name="conference-title-incoming">
 		Conversa com [AGENT_NAME]
 	</string>
@@ -4726,6 +4732,9 @@ Tente colocar o caminho do editor entre aspas.
 	<string name="Command_Chat_Label">
 		Bate-papo
 	</string>
+	<string name="Command_Conversations_Label">
+		Conversas
+	</string>
 	<string name="Command_Compass_Label">
 		Bússola
 	</string>
@@ -4801,6 +4810,9 @@ Tente colocar o caminho do editor entre aspas.
 	<string name="Command_Chat_Tooltip">
 		Bater papo com pessoas próximas usando texto
 	</string>
+	<string name="Command_Conversations_Tooltip">
+		Conversar com todos
+	</string>
 	<string name="Command_Compass_Tooltip">
 		Bússola
 	</string>
@@ -4930,4 +4942,13 @@ Tente colocar o caminho do editor entre aspas.
 	<string name="UserDictionary">
 		[Usuário]
 	</string>
+	<string name="logging_calls_disabled_log_empty">
+		As conversas não estão sendo registradas. Para começar a manter um registro, selecione &quot;Salvar: apenas registro&quot; ou &quot;Salvar: registro e transcrições&quot; em Preferências&gt; Bate-papo.
+	</string>
+	<string name="logging_calls_disabled_log_not_empty">
+		Nenhuma conversa será registrada. Para recomeçar a gravação de registros, selecione &quot;Salvar: apenas registro&quot; ou &quot;Salvar: registro e transcrições&quot; em Preferências&gt; Bate-papo.
+	</string>
+	<string name="logging_calls_enabled_log_empty">
+		Não há conversas registradas. Depois que você entrar em contato com alguém, ou alguém entrar em contato com você, um registro será exibido aqui.
+	</string>
 </strings>
diff --git a/indra/newview/skins/default/xui/ru/floater_conversation_log.xml b/indra/newview/skins/default/xui/ru/floater_conversation_log.xml
new file mode 100644
index 00000000000..090ac7193ac
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_conversation_log.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_conversation_log" title="ЖУРНАЛ РАЗГОВОРА">
+	<panel name="buttons_panel">
+		<filter_editor label="Фильтр для людей" name="people_filter_input"/>
+		<menu_button name="conversation_view_btn" tool_tip="Параметры просмотра/сортировки"/>
+		<menu_button name="conversations_gear_btn" tool_tip="Действия с выбранным жителем или группой"/>
+	</panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_conversation_preview.xml b/indra/newview/skins/default/xui/ru/floater_conversation_preview.xml
new file mode 100644
index 00000000000..23225fcf56d
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_conversation_preview.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="preview_conversation" title="РАЗГОВОР:">
+	<floater.string name="Title">
+		РАЗГОВОР: [NAME]
+	</floater.string>
+	<text name="page_label" value="Страница"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_im_container.xml b/indra/newview/skins/default/xui/ru/floater_im_container.xml
index b147cfa2b32..eba7a19cd4a 100644
--- a/indra/newview/skins/default/xui/ru/floater_im_container.xml
+++ b/indra/newview/skins/default/xui/ru/floater_im_container.xml
@@ -1,2 +1,29 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<multi_floater name="floater_im_box" title="ОБЩЕНИЕ"/>
+<multi_floater name="floater_im_box" title="ОБЩЕНИЕ">
+	<string name="collapse_icon" value="Conv_toolbar_collapse"/>
+	<string name="expand_icon" value="Conv_toolbar_expand"/>
+	<layout_stack name="conversations_stack">
+		<layout_panel name="conversations_layout_panel">
+			<layout_stack name="conversations_pane_buttons_stack">
+				<layout_panel name="conversations_pane_buttons_expanded">
+					<menu_button name="sort_btn" tool_tip="Параметры просмотра/сортировки"/>
+					<button name="add_btn" tool_tip="Начать разговор"/>
+					<button name="speak_btn" tool_tip="Разговаривать через микрофон"/>
+				</layout_panel>
+				<layout_panel name="conversations_pane_buttons_collapsed">
+					<button name="expand_collapse_btn" tool_tip="Свернуть/развернуть этот список"/>
+				</layout_panel>
+			</layout_stack>
+		</layout_panel>
+		<layout_panel name="messages_layout_panel">
+			<panel_container name="im_box_tab_container">
+				<panel name="stub_panel">
+					<button name="stub_collapse_btn" tool_tip="Свернуть эту панель"/>
+					<text name="stub_textbox">
+						Разговор отображается в отдельном окне.   [secondlife:/// Вернуть.]
+					</text>
+				</panel>
+			</panel_container>
+		</layout_panel>
+	</layout_stack>
+</multi_floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_im_session.xml b/indra/newview/skins/default/xui/ru/floater_im_session.xml
index 604d9dc6d33..ea110ffb44a 100644
--- a/indra/newview/skins/default/xui/ru/floater_im_session.xml
+++ b/indra/newview/skins/default/xui/ru/floater_im_session.xml
@@ -1,8 +1,59 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="panel_im">
-	<layout_stack name="im_panels">
-		<layout_panel>
-			<line_editor label="Кому" name="chat_editor"/>
-		</layout_panel>
-	</layout_stack>
+	<floater.string name="call_btn_start">
+		Conv_toolbar_open_call
+	</floater.string>
+	<floater.string name="call_btn_stop">
+		Conv_toolbar_hang_up
+	</floater.string>
+	<floater.string name="collapseline_icon" value="Conv_collapse_to_one_line"/>
+	<floater.string name="expandline_icon" value="Conv_expand_one_line"/>
+	<floater.string name="collapse_icon" value="Conv_toolbar_collapse"/>
+	<floater.string name="expand_icon" value="Conv_toolbar_expand"/>
+	<floater.string name="tear_off_icon" value="Conv_toolbar_arrow_ne"/>
+	<floater.string name="return_icon" value="Conv_toolbar_arrow_sw"/>
+	<floater.string name="participant_added" value="[NAME] приглашен(а) на разговор."/>
+	<floater.string name="multiple_participants_added" value="[NAME] приглашены на разговор."/>
+	<floater.string name="tooltip_to_separate_window" value="Перенести этот разговор в отдельное окно"/>
+	<floater.string name="tooltip_to_main_window" value="Вернуть этот разговор в главное окно"/>
+	<floater.string name="start_call_button_tooltip" value="Открыть голосовое подключение"/>
+	<floater.string name="end_call_button_tooltip" value="Закрыть голосовое подключение"/>
+	<floater.string name="expcol_button_not_tearoff_tooltip" value="Свернуть эту панель"/>
+	<floater.string name="expcol_button_tearoff_and_expanded_tooltip" value="Свернуть список участников"/>
+	<floater.string name="expcol_button_tearoff_and_collapsed_tooltip" value="Развернуть список участников"/>
+	<view name="contents_view">
+		<layout_stack name="main_stack">
+			<layout_panel name="toolbar_panel">
+				<menu_button name="view_options_btn" tool_tip="Параметры просмотра/сортировки"/>
+				<menu_button name="gear_btn" tool_tip="Действия с выбранным жителем"/>
+				<button name="add_btn" tool_tip="Добавить участника в этот разговор"/>
+				<button name="voice_call_btn" tool_tip="Открыть голосовое подключение"/>
+				<button name="close_btn" tool_tip="Завершить этот разговор"/>
+				<button name="expand_collapse_btn" tool_tip="Развернуть/свернуть эту панель"/>
+			</layout_panel>
+			<layout_panel name="body_panel">
+				<layout_stack name="im_panels">
+					<layout_panel name="right_part_holder">
+						<panel name="trnsAndChat_panel">
+							<layout_stack name="translate_and_chat_stack">
+								<layout_panel name="translate_chat_checkbox_lp">
+									<check_box label="Переводить чат" name="translate_chat_checkbox"/>
+								</layout_panel>
+							</layout_stack>
+						</panel>
+					</layout_panel>
+				</layout_stack>
+			</layout_panel>
+			<layout_panel name="chat_layout_panel">
+				<layout_stack name="input_panels">
+					<layout_panel name="input_editor_layout_panel">
+						<chat_editor label="Кому" name="chat_editor"/>
+					</layout_panel>
+					<layout_panel name="input_button_layout_panel">
+						<button name="minz_btn" tool_tip="Показать/скрыть панель сообщений"/>
+					</layout_panel>
+				</layout_stack>
+			</layout_panel>
+		</layout_stack>
+	</view>
 </floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_incoming_call.xml b/indra/newview/skins/default/xui/ru/floater_incoming_call.xml
index 072c20147df..3f61421d0ce 100644
--- a/indra/newview/skins/default/xui/ru/floater_incoming_call.xml
+++ b/indra/newview/skins/default/xui/ru/floater_incoming_call.xml
@@ -10,7 +10,7 @@
 		анонимно
 	</floater.string>
 	<floater.string name="VoiceInviteP2P">
-		вызывает.
+		вызывает вас.
 	</floater.string>
 	<floater.string name="VoiceInviteAdHoc">
 		теперь участвует в групповом голосовом чате.
@@ -25,9 +25,9 @@
 		Хотите выйти из чата «[CURRENT_CHAT]» и присоединиться к этому голосовому чату?
 	</floater.string>
 	<text name="question">
-		Хотите выйти из чата «[CURRENT_CHAT]» и присоединиться к этому голосовому чату?
+		Если вы ответите, вы покинете текущий голосовой чат.
 	</text>
-	<button label="Принять" label_selected="Принять" name="Accept"/>
-	<button label="Отклонить" label_selected="Отклонить" name="Reject"/>
-	<button label="Начать IM" name="Start IM"/>
+	<button label="Ответить" label_selected="Ответить" name="Accept"/>
+	<button label="Игнорировать" label_selected="Игнорировать" name="Reject"/>
+	<button label="Открыть IM" name="Start IM"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_pathfinding_console.xml b/indra/newview/skins/default/xui/ru/floater_pathfinding_console.xml
index fa72df04fdc..8faddb18058 100644
--- a/indra/newview/skins/default/xui/ru/floater_pathfinding_console.xml
+++ b/indra/newview/skins/default/xui/ru/floater_pathfinding_console.xml
@@ -71,7 +71,7 @@
 			<text name="show_label">
 				Показать:
 			</text>
-			<check_box label="Мир" name="show_world"/>
+			<check_box label="Тест" name="show_world"/>
 			<check_box label="Только перемещаемые предметы" name="show_world_movables_only"/>
 			<check_box label="Навигационная сетка" name="show_navmesh"/>
 			<text name="show_walkability_label">
diff --git a/indra/newview/skins/default/xui/ru/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/ru/floater_texture_ctrl.xml
index db37089aeba..a9a21e7d4a1 100644
--- a/indra/newview/skins/default/xui/ru/floater_texture_ctrl.xml
+++ b/indra/newview/skins/default/xui/ru/floater_texture_ctrl.xml
@@ -19,7 +19,7 @@
 	<button label="По умолчанию" label_selected="По умолчанию" name="Default"/>
 	<button label="Очистить" label_selected="Очистить" name="Blank"/>
 	<button label="Нет" label_selected="Нет" name="None"/>
-	<check_box initial_value="истина" label="Просмотр вживую" name="apply_immediate_check"/>
+	<check_box initial_value="истина" label="Применить сейчас" name="apply_immediate_check"/>
 	<text name="preview_disabled" value="Просмотр отключен"/>
 	<filter_editor label="Фильтровать текстуры" name="inventory search editor"/>
 	<check_box initial_value="ложь" label="Показывать папки" name="show_folders_check"/>
diff --git a/indra/newview/skins/default/xui/ru/floater_voice_chat_volume.xml b/indra/newview/skins/default/xui/ru/floater_voice_chat_volume.xml
new file mode 100644
index 00000000000..5a7e7a70610
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_voice_chat_volume.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_voice_volume" title="ГРОМКОСТЬ ГОЛОСОВОГО ЧАТА">
+	<slider label="Голосовой чат" name="chat_voice_volume"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_voice_effect.xml b/indra/newview/skins/default/xui/ru/floater_voice_effect.xml
index 1eb8a94d7a7..d3cef042a31 100644
--- a/indra/newview/skins/default/xui/ru/floater_voice_effect.xml
+++ b/indra/newview/skins/default/xui/ru/floater_voice_effect.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater label="Места" name="voice_effects" title="ИЗМЕНЕНИЕ ГОЛОСА">
+<floater label="Места" name="voice_effects" title="ПРОСМОТР ИЗМЕНЕНИЯ ГОЛОСА">
 	<string name="no_voice_effect">
 		(Нет изменения голоса)
 	</string>
diff --git a/indra/newview/skins/default/xui/ru/floater_voice_volume.xml b/indra/newview/skins/default/xui/ru/floater_voice_volume.xml
new file mode 100644
index 00000000000..aca6bd518aa
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_voice_volume.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!--
+  Not can_close / no title to avoid window chrome
+  Single instance - only have one at a time, recycle it each spawn
+-->
+<floater name="floater_voice_volume" title="ГРОМКОСТЬ ГОЛОСА">
+	<slider name="volume_slider" tool_tip="Громкость голоса" value="0.5"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/menu_cof_gear.xml b/indra/newview/skins/default/xui/ru/menu_cof_gear.xml
index 0332c03a046..b7a32dfd753 100644
--- a/indra/newview/skins/default/xui/ru/menu_cof_gear.xml
+++ b/indra/newview/skins/default/xui/ru/menu_cof_gear.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu name="Gear COF">
 	<menu label="Новая одежда" name="COF.Gear.New_Clothes"/>
-	<menu label="Новые части тела" name="COF.Geear.New_Body_Parts"/>
+	<menu label="Новые части тела" name="COF.Gear.New_Body_Parts"/>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_conversation.xml b/indra/newview/skins/default/xui/ru/menu_conversation.xml
new file mode 100644
index 00000000000..530b1ea704e
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_conversation.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_conversation_participant">
+	<menu_item_call label="Закрыть разговор" name="close_conversation"/>
+	<menu_item_call label="Открыть голосовой чат" name="open_voice_conversation"/>
+	<menu_item_call label="Прекратить голосовой чат" name="disconnect_from_voice"/>
+	<menu_item_call label="Смотреть профиль" name="view_profile"/>
+	<menu_item_call label="IM" name="im"/>
+	<menu_item_call label="Предложить телепортацию" name="offer_teleport"/>
+	<menu_item_call label="Голосовой вызов" name="voice_call"/>
+	<menu_item_call label="Журнал чата..." name="chat_history"/>
+	<menu_item_call label="Добавить друга" name="add_friend"/>
+	<menu_item_call label="Удалить друга" name="remove_friend"/>
+	<menu_item_call label="Удалить друзей" name="remove_friends"/>
+	<menu_item_call label="Пригласить в группу..." name="invite_to_group"/>
+	<menu_item_call label="Приблизить" name="zoom_in"/>
+	<menu_item_call label="Карта" name="map"/>
+	<menu_item_call label="Поделиться" name="share"/>
+	<menu_item_call label="Заплатить" name="pay"/>
+	<menu_item_check label="Блокировать голос" name="block_unblock"/>
+	<menu_item_check label="Блокировать текст" name="MuteText"/>
+	<menu_item_call label="Профиль группы" name="group_profile"/>
+	<menu_item_call label="Активировать группу" name="activate_group"/>
+	<menu_item_call label="Покинуть группу" name="leave_group"/>
+	<context_menu label="Параметры модератора" name="Moderator Options">
+		<menu_item_check label="Разрешить текстовый чат" name="AllowTextChat"/>
+		<menu_item_call label="Заглушить этого участника" name="ModerateVoiceMuteSelected"/>
+		<menu_item_call label="Позволить говорить этому участнику" name="ModerateVoiceUnMuteSelected"/>
+		<menu_item_call label="Заглушить всех" name="ModerateVoiceMute"/>
+		<menu_item_call label="Позволить говорить всем" name="ModerateVoiceUnmute"/>
+	</context_menu>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_conversation_log_gear.xml b/indra/newview/skins/default/xui/ru/menu_conversation_log_gear.xml
new file mode 100644
index 00000000000..3fbffbe038a
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_conversation_log_gear.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Conversation Context Menu">
+	<menu_item_call label="IM..." name="IM"/>
+	<menu_item_call label="Голосовой вызов..." name="Call"/>
+	<menu_item_call label="Открыть журнал чата..." name="Chat history"/>
+	<menu_item_call label="Смотреть профиль" name="View Profile"/>
+	<menu_item_call label="Предложить телепорт" name="teleport"/>
+	<menu_item_call label="Добавить друга" name="add_friend"/>
+	<menu_item_call label="Удалить из друзей" name="remove_friend"/>
+	<menu_item_call label="Пригласить в группу..." name="Invite"/>
+	<menu_item_call label="Карта" name="Map"/>
+	<menu_item_call label="Поделиться" name="Share"/>
+	<menu_item_call label="Заплатить" name="Pay"/>
+	<menu_item_check label="Черный список" name="Block/Unblock"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_conversation_log_view.xml b/indra/newview/skins/default/xui/ru/menu_conversation_log_view.xml
new file mode 100644
index 00000000000..928146e273e
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_conversation_log_view.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_conversation_view">
+	<menu_item_check label="Сортировать по имени" name="sort_by_name"/>
+	<menu_item_check label="Сортировать по дате" name="sort_by_date"/>
+	<menu_item_check label="Сначала друзья" name="sort_by_friends"/>
+	<menu_item_call label="Посмотреть журнал локального чата..." name="view_nearby_chat_history"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_im_conversation.xml b/indra/newview/skins/default/xui/ru/menu_im_conversation.xml
new file mode 100644
index 00000000000..1db0b8bae30
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_im_conversation.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Conversation Gear Menu">
+	<menu_item_call label="Смотреть профиль" name="View Profile"/>
+	<menu_item_call label="Добавить друга" name="Add Friend"/>
+	<menu_item_call label="Удалить друга" name="remove_friend"/>
+	<menu_item_call label="Предложить телепортацию" name="offer_teleport"/>
+	<menu_item_call label="Пригласить в группу..." name="invite_to_group"/>
+	<menu_item_call label="Журнал чата..." name="chat_history"/>
+	<menu_item_call label="Приблизить" name="zoom_in"/>
+	<menu_item_call label="Карта" name="map"/>
+	<menu_item_call label="Поделиться" name="Share"/>
+	<menu_item_call label="Заплатить" name="Pay"/>
+	<menu_item_check label="Блокировать голос" name="Block/Unblock"/>
+	<menu_item_check label="Блокировать текст" name="MuteText"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_im_session_showmodes.xml b/indra/newview/skins/default/xui/ru/menu_im_session_showmodes.xml
new file mode 100644
index 00000000000..35cff8e4bf5
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_im_session_showmodes.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_modes">
+	<menu_item_check label="Компактный вид" name="compact_view"/>
+	<menu_item_check label="Развернутый вид" name="expanded_view"/>
+	<menu_item_check label="Показать время" name="IMShowTime"/>
+	<menu_item_check label="Показывать имена при разговорах" name="IMShowNamesForP2PConv"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_object_icon.xml b/indra/newview/skins/default/xui/ru/menu_object_icon.xml
index 6229b2e72fe..0c50abcfbdf 100644
--- a/indra/newview/skins/default/xui/ru/menu_object_icon.xml
+++ b/indra/newview/skins/default/xui/ru/menu_object_icon.xml
@@ -2,4 +2,6 @@
 <menu name="Object Icon Menu">
 	<menu_item_call label="Профиль объекта..." name="Object Profile"/>
 	<menu_item_call label="Блокировать..." name="Block"/>
+	<menu_item_call label="Показать на карте" name="show_on_map"/>
+	<menu_item_call label="Телепорт в местоположение объекта" name="teleport_to_object"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_outfit_gear.xml b/indra/newview/skins/default/xui/ru/menu_outfit_gear.xml
index 93dbd7d6a7a..d379a172166 100644
--- a/indra/newview/skins/default/xui/ru/menu_outfit_gear.xml
+++ b/indra/newview/skins/default/xui/ru/menu_outfit_gear.xml
@@ -23,6 +23,8 @@
 		<menu_item_call label="Новые волосы" name="New Hair"/>
 		<menu_item_call label="Новые глаза" name="New Eyes"/>
 	</menu>
+	<menu_item_call label="Открыть все папки" name="expand"/>
+	<menu_item_call label="Закрыть все папки" name="collapse"/>
 	<menu_item_call label="Переименовать костюм" name="rename"/>
 	<menu_item_call label="Удалить костюм" name="delete_outfit"/>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_participant_view.xml b/indra/newview/skins/default/xui/ru/menu_participant_view.xml
new file mode 100644
index 00000000000..851a42d428a
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_participant_view.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="participant_manu_view">
+	<menu_item_check label="Сортировать разговоры по типу" name="sort_sessions_by_type"/>
+	<menu_item_check label="Сортировать разговоры по имени" name="sort_sessions_by_name"/>
+	<menu_item_check label="Сортировать разговоры по последнему действию" name="sort_sessions_by_recent"/>
+	<menu_item_check label="Сортировать участников по имени" name="sort_participants_by_name"/>
+	<menu_item_check label="Сортировать участников по последнему действию" name="sort_participants_by_recent"/>
+	<menu_item_call label="Изменить настройки..." name="chat_preferences"/>
+	<menu_item_call label="Настройки приватности..." name="privacy_preferences"/>
+	<menu_item_check label="Журнал разговора..." name="Conversation"/>
+	<menu_item_check label="Перевести локальный чат" name="Translate_chat"/>
+	<menu_item_check label="Настройки перевода..." name="Translation_settings"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_people_blocked_gear.xml b/indra/newview/skins/default/xui/ru/menu_people_blocked_gear.xml
new file mode 100644
index 00000000000..157f2ad5e23
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_people_blocked_gear.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_blocked_gear">
+	<menu_item_call label="Разблокировать" name="unblock"/>
+	<menu_item_call label="Профиль…" name="profile"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_people_blocked_plus.xml b/indra/newview/skins/default/xui/ru/menu_people_blocked_plus.xml
new file mode 100644
index 00000000000..f42e8f8609b
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_people_blocked_plus.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_blocked_plus">
+	<menu_item_call label="Блокировать жителя по имени..." name="block_resident_by_name"/>
+	<menu_item_call label="Блокировать объект по имени" name="block_object_by_name"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_people_blocked_view.xml b/indra/newview/skins/default/xui/ru/menu_people_blocked_view.xml
new file mode 100644
index 00000000000..8c0150e8aed
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_people_blocked_view.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_blocked_view">
+	<menu_item_check label="Сортировать по имени" name="sort_by_name"/>
+	<menu_item_check label="Сортировать по типу" name="sort_by_type"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_people_friends_view.xml b/indra/newview/skins/default/xui/ru/menu_people_friends_view.xml
new file mode 100644
index 00000000000..7b2dba05396
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_people_friends_view.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="Сортировать по имени" name="sort_name"/>
+	<menu_item_check label="Сортировать по статусу" name="sort_status"/>
+	<menu_item_check label="Показывать значки людей" name="view_icons"/>
+	<menu_item_check label="Показывать разрешенные действия" name="view_permissions"/>
+	<menu_item_check label="Посмотреть журнал разговора..." name="view_conversation"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_people_groups.xml b/indra/newview/skins/default/xui/ru/menu_people_groups.xml
index e734a83ef08..78d73c9d1ed 100644
--- a/indra/newview/skins/default/xui/ru/menu_people_groups.xml
+++ b/indra/newview/skins/default/xui/ru/menu_people_groups.xml
@@ -2,7 +2,7 @@
 <menu name="menu_group_plus">
 	<menu_item_call label="Информация" name="View Info"/>
 	<menu_item_call label="Чат" name="Chat"/>
-	<menu_item_call label="Звонок" name="Call"/>
+	<menu_item_call label="Голосовой вызов" name="Call"/>
 	<menu_item_call label="Активация" name="Activate"/>
 	<menu_item_call label="Покинуть" name="Leave"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_people_groups_view.xml b/indra/newview/skins/default/xui/ru/menu_people_groups_view.xml
new file mode 100644
index 00000000000..cbf1c64774f
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_people_groups_view.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="Показывать значки группы" name="Display Group Icons"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_people_nearby.xml b/indra/newview/skins/default/xui/ru/menu_people_nearby.xml
index ebce959044d..d05b7e7d012 100644
--- a/indra/newview/skins/default/xui/ru/menu_people_nearby.xml
+++ b/indra/newview/skins/default/xui/ru/menu_people_nearby.xml
@@ -1,13 +1,16 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Avatar Context Menu">
-	<menu_item_call label="Смотреть профиль" name="View Profile"/>
-	<menu_item_call label="В друзья" name="Add Friend"/>
-	<menu_item_call label="Удалить из друзей" name="Remove Friend"/>
-	<menu_item_call label="IM" name="IM"/>
-	<menu_item_call label="Звонок" name="Call"/>
-	<menu_item_call label="Карта" name="Map"/>
-	<menu_item_call label="Поделиться" name="Share"/>
-	<menu_item_call label="Заплатить" name="Pay"/>
-	<menu_item_check label="Черный список" name="Block/Unblock"/>
-	<menu_item_call label="Предложить телепорт" name="teleport"/>
+	<menu_item_call label="Смотреть профиль" name="view_profile"/>
+	<menu_item_call label="IM" name="im"/>
+	<menu_item_call label="Предложить телепорт" name="offer_teleport"/>
+	<menu_item_call label="Голосовой вызов" name="voice_call"/>
+	<menu_item_call label="Посмотреть журнал чата..." name="chat_history"/>
+	<menu_item_call label="Добавить друга" name="add_friend"/>
+	<menu_item_call label="Удалить из друзей" name="remove_friend"/>
+	<menu_item_call label="Пригласить в группу..." name="invite_to_group"/>
+	<menu_item_call label="Приблизить" name="zoom_in"/>
+	<menu_item_call label="Карта" name="map"/>
+	<menu_item_call label="Поделиться" name="share"/>
+	<menu_item_call label="Заплатить" name="pay"/>
+	<menu_item_check label="Черный список" name="block_unblock"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/ru/menu_people_nearby_multiselect.xml
index 0e8e0d40537..88eb56c9f5e 100644
--- a/indra/newview/skins/default/xui/ru/menu_people_nearby_multiselect.xml
+++ b/indra/newview/skins/default/xui/ru/menu_people_nearby_multiselect.xml
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Multi-Selected People Context Menu">
-	<menu_item_call label="Добавить в друзья" name="Add Friends"/>
-	<menu_item_call label="Удалить из друзей" name="Remove Friend"/>
-	<menu_item_call label="IM" name="IM"/>
-	<menu_item_call label="Звонок" name="Call"/>
-	<menu_item_call label="Поделиться" name="Share"/>
-	<menu_item_call label="Заплатить" name="Pay"/>
-	<menu_item_call label="Предложить телепорт" name="teleport"/>
+	<menu_item_call label="Добавить в друзья" name="add_friends"/>
+	<menu_item_call label="Удалить из друзей" name="remove_friends"/>
+	<menu_item_call label="IM" name="im"/>
+	<menu_item_call label="Звонок" name="call"/>
+	<menu_item_call label="Поделиться" name="share"/>
+	<menu_item_call label="Заплатить" name="pay"/>
+	<menu_item_call label="Предложить телепорт" name="offer_teleport"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_people_nearby_view.xml b/indra/newview/skins/default/xui/ru/menu_people_nearby_view.xml
new file mode 100644
index 00000000000..2bc353ad583
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_people_nearby_view.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="Сортировать по недавно говорившим" name="sort_by_recent_speakers"/>
+	<menu_item_check label="Сортировать по имени" name="sort_name"/>
+	<menu_item_check label="Сортировать по расстоянию" name="sort_distance"/>
+	<menu_item_check label="Показывать значки людей" name="view_icons"/>
+	<menu_item_check label="Смотреть карту" name="view_map"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_people_recent_view.xml b/indra/newview/skins/default/xui/ru/menu_people_recent_view.xml
new file mode 100644
index 00000000000..a009cf081f3
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_people_recent_view.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="Сортировать по времени" name="sort_most"/>
+	<menu_item_check label="Сортировать по имени" name="sort_name"/>
+	<menu_item_check label="Показывать значки людей" name="view_icons"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_url_agent.xml b/indra/newview/skins/default/xui/ru/menu_url_agent.xml
index 0ba3ee152a5..230d049fad6 100644
--- a/indra/newview/skins/default/xui/ru/menu_url_agent.xml
+++ b/indra/newview/skins/default/xui/ru/menu_url_agent.xml
@@ -1,6 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Url Popup">
-	<menu_item_call label="Показать профиль жителя" name="show_agent"/>
+	<menu_item_call label="Смотреть профиль" name="show_agent"/>
+	<menu_item_call label="Отправить сообщение..." name="send_im"/>
+	<menu_item_call label="Добавить в друзья..." name="add_friend"/>
 	<menu_item_call label="Копировать название в буфер обмена" name="url_copy_label"/>
 	<menu_item_call label="Копировать URL-адрес SL в буфер обмена" name="url_copy"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_url_objectim.xml b/indra/newview/skins/default/xui/ru/menu_url_objectim.xml
index 6e7800d3f5d..1326db708e5 100644
--- a/indra/newview/skins/default/xui/ru/menu_url_objectim.xml
+++ b/indra/newview/skins/default/xui/ru/menu_url_objectim.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Url Popup">
-	<menu_item_call label="Показать информацию об объекте" name="show_object"/>
+	<menu_item_call label="Профиль объекта..." name="show_object"/>
 	<menu_item_call label="Показать на карте" name="show_on_map"/>
 	<menu_item_call label="Телепорт в местоположение объекта" name="teleport_to_object"/>
 	<menu_item_call label="Копировать название объекта в буфер обмена" name="url_copy_label"/>
diff --git a/indra/newview/skins/default/xui/ru/menu_viewer.xml b/indra/newview/skins/default/xui/ru/menu_viewer.xml
index d9425937c36..d6625361c58 100644
--- a/indra/newview/skins/default/xui/ru/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/ru/menu_viewer.xml
@@ -16,10 +16,7 @@
 			<menu_item_call label="Остановить анимацию" name="Stop Animating My Avatar"/>
 			<menu_item_call label="Ходьба / бег / полет..." name="Walk / run / fly"/>
 		</menu>
-		<menu label="Статус" name="Status">
-			<menu_item_call label="Нет на месте" name="Set Away"/>
-			<menu_item_call label="Не беспокоить" name="Set Busy"/>
-		</menu>
+		<menu label="Статус" name="Status"/>
 		<menu_item_call label="Купить L$..." name="Buy and Sell L$"/>
 		<menu_item_call label="Торговые исходящие..." name="MerchantOutbox"/>
 		<menu_item_call label="Информационная панель аккаунта..." name="Manage My Account"/>
@@ -30,14 +27,18 @@
 		<menu_item_call label="Выход из [APP_NAME]" name="Quit"/>
 	</menu>
 	<menu label="Общение" name="Communicate">
-		<menu_item_check label="Чат..." name="Nearby Chat"/>
+		<menu_item_check label="Разговоры..." name="Conversations"/>
+		<menu_item_check label="Локальный чат..." name="Nearby Chat"/>
 		<menu_item_check label="Говорить" name="Speak"/>
-		<menu_item_check label="Настройки голоса..." name="Nearby Voice"/>
-		<menu_item_check label="Изменение голоса..." name="ShowVoice"/>
+		<menu label="Изменение голоса" name="VoiceMorphing">
+			<menu_item_check label="Без изменения голоса" name="NoVoiceMorphing"/>
+			<menu_item_check label="Просмотр..." name="Preview"/>
+			<menu_item_call label="Подписаться..." name="Subscribe"/>
+		</menu>
 		<menu_item_check label="Жесты..." name="Gestures"/>
-		<menu_item_call label="Друзья" name="My Friends"/>
-		<menu_item_call label="Группы" name="My Groups"/>
-		<menu_item_call label="Люди неподалеку" name="Active Speakers"/>
+		<menu_item_check label="Друзья" name="My Friends"/>
+		<menu_item_check label="Группы" name="My Groups"/>
+		<menu_item_check label="Люди неподалеку" name="Active Speakers"/>
 		<menu_item_call label="Черный список" name="Block List"/>
 	</menu>
 	<menu label="Мир" name="World">
@@ -113,7 +114,6 @@
 			<menu_item_call label="Купить" name="Menu Object Buy"/>
 			<menu_item_call label="Взять" name="Menu Object Take"/>
 			<menu_item_call label="Взять копию" name="Take Copy"/>
-			<menu_item_call label="Сохранить в моем инвентаре" name="Save Object Back to My Inventory"/>
 			<menu_item_call label="Сохранить в контенте объектов" name="Save Object Back to Object Contents"/>
 			<menu_item_call label="Вернуть объект" name="Return Object back to Owner"/>
 		</menu>
@@ -128,6 +128,7 @@
 			<menu_item_call label="Наборы связей..." name="pathfinding_linksets_menu_item"/>
 			<menu_item_call label="Персонажи..." name="pathfinding_characters_menu_item"/>
 			<menu_item_call label="Просмотр/тестирование..." name="pathfinding_console_menu_item"/>
+			<menu_item_call label="Восстановить регион" name="pathfinding_rebake_navmesh_item"/>
 		</menu>
 		<menu label="Параметры" name="Options">
 			<menu_item_check label="Показать расширенные разрешения" name="DebugPermissions"/>
@@ -157,6 +158,13 @@
 	<menu label="Справка" name="Help">
 		<menu_item_call label="Инструкции..." name="How To"/>
 		<menu_item_call label="Справка по [SECOND_LIFE]" name="Second Life Help"/>
+		<menu_item_call label="Руководство пользователя" name="User’s guide"/>
+		<menu_item_call label="База знаний" name="Knowledge Base"/>
+		<menu_item_call label="Wiki" name="Wiki"/>
+		<menu_item_call label="Форумы сообщества" name="Community Forums"/>
+		<menu_item_call label="Портал поддержки" name="Support portal"/>
+		<menu_item_call label="Новости [SECOND_LIFE]" name="Second Life News"/>
+		<menu_item_call label="Блоги [SECOND_LIFE]" name="Second Life Blogs"/>
 		<menu_item_call label="Жалоба" name="Report Abuse"/>
 		<menu_item_call label="Сообщить об ошибке" name="Report Bug"/>
 		<menu_item_call label="О [APP_NAME]" name="About Second Life"/>
@@ -383,9 +391,14 @@
 				<menu_item_call label="Проверка женщины" name="Test Female"/>
 				<menu_item_check label="Разрешить выбор аватара" name="Allow Select Avatar"/>
 			</menu>
+			<menu label="Скорость анимации" name="Animation Speed">
+				<menu_item_call label="Ускорить все анимации на 10%" name="All Animations 10 Faster"/>
+				<menu_item_call label="Замедлить все анимации на 10%" name="All Animations 10 Slower"/>
+				<menu_item_call label="Восстановить скорость анимаций" name="Reset All Animation Speed"/>
+				<menu_item_check label="Анимация медленных движений" name="Slow Motion Animations"/>
+			</menu>
 			<menu_item_call label="Скинуть параметры" name="Force Params to Default"/>
 			<menu_item_check label="Данные об анимации" name="Animation Info"/>
-			<menu_item_check label="Анимация медленных движений" name="Slow Motion Animations"/>
 			<menu_item_check label="Показать взгляд" name="Show Look At"/>
 			<menu_item_check label="Показать указание" name="Show Point At"/>
 			<menu_item_check label="Отладка обновленных движений суставов" name="Debug Joint Updates"/>
diff --git a/indra/newview/skins/default/xui/ru/notifications.xml b/indra/newview/skins/default/xui/ru/notifications.xml
index 85b7074253f..00ab0b57633 100644
--- a/indra/newview/skins/default/xui/ru/notifications.xml
+++ b/indra/newview/skins/default/xui/ru/notifications.xml
@@ -516,6 +516,24 @@
 		</url>
 		<usetemplate ignoretext="Мой графический драйвер устарел" name="okcancelignore" notext="Нет" yestext="Да"/>
 	</notification>
+	<notification name="AMDOldDriver">
+		Возможно, для вашей видеокарты имеется более новый драйвер.  Обновление драйвера может существенно повысить быстродействие.
+
+    Проверить наличие обновления для драйвера по адресу [_URL]?
+		<url name="url">
+			http://support.amd.com/us/Pages/AMDSupportHub.aspx
+		</url>
+		<usetemplate ignoretext="Мой графический драйвер устарел" name="okcancelignore" notext="Нет" yestext="Да"/>
+	</notification>
+	<notification name="NVIDIAOldDriver">
+		Возможно, для вашей видеокарты имеется более новый драйвер.  Обновление драйвера может существенно повысить быстродействие.
+
+    Проверить наличие обновления для драйвера по адресу [_URL]?
+		<url name="url">
+			http://www.nvidia.com/Download/index.aspx?lang=ru-ru
+		</url>
+		<usetemplate ignoretext="Мой графический драйвер устарел" name="okcancelignore" notext="Нет" yestext="Да"/>
+	</notification>
 	<notification name="UnknownGPU">
 		В вашей системе установлена графическая карта, которую [APP_NAME] не может распознать.
 Так часто бывает, если новое оборудование еще не было проверено на работу с [APP_NAME].  Скорее всего, оно будет работать нормально, но, возможно, придется отрегулировать параметры графики.
@@ -1546,10 +1564,13 @@ http://secondlife.com/download.
 		Сейчас невозможно предложить дружбу. Повторите попытку через минуту.
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
-	<notification name="BusyModeSet">
-		Установлен режим «Занят».
-Сообщения чата и IM будут скрыты. На IM-сообщения будет возвращаться заданный ответ в режиме «Занят». Все предложения телепортации будут отклоняться. Все предложения инвентаря будут направлены в корзину.
-		<usetemplate ignoretext="Смена моего статуса на режим «Занят»" name="okignore" yestext="OK"/>
+	<notification name="DoNotDisturbModeSet">
+		Режим «Не беспокоить» включен.  Вы не будете получать уведомлений о входящих вызовах.
+
+- Другие жители будут получать ваш ответ, установленный для режима «Не беспокоить» (Настройки &gt; Общие).
+- Предложения телепортации будут отклоняться.
+- Голосовые вызовы будут отклоняться.
+		<usetemplate ignoretext="Смена моего статуса на режим «Не беспокоить»" name="okignore" yestext="OK"/>
 	</notification>
 	<notification name="JoinedTooManyGroupsMember">
 		Достигнуто максимальное количество групп. Выйдите из другой группы, прежде чем вступать в эту, или отклоните предложение.
@@ -2033,6 +2054,10 @@ http://secondlife.com/download.
 		Перейти на [http://secondlife.com/account/ информационную панель], чтобы увидеть историю аккаунта?
 		<usetemplate ignoretext="Запустить браузер для просмотра истории аккаунта" name="okcancelignore" notext="Отмена" yestext="Перейти на страницу"/>
 	</notification>
+	<notification name="ConfirmAddingChatParticipants">
+		При добавлении участника в существующий разговор будет создан новый разговор.  Все участники получат уведомления о новом разговоре.
+		<usetemplate ignoretext="Подтвердите добавление участников чата" name="okcancelignore" notext="Отмена" yestext="ОК"/>
+	</notification>
 	<notification name="ConfirmQuit">
 		Выйти из программы?
 		<usetemplate ignoretext="Подтверждать перед выходом" name="okcancelignore" notext="Не выходить" yestext="Выйти"/>
@@ -2107,14 +2132,14 @@ http://secondlife.com/download.
 			<button ignore="Не заменять" name="No" text="Отмена"/>
 		</form>
 	</notification>
-	<notification label="Предупреждение о режиме «Занят»" name="BusyModePay">
-		У вас включен режим «Занят», поэтому вы не получите никаких предметов, предлагаемых в обмен на этот платеж.
+	<notification label="Предупреждение режима «Не беспокоить»" name="DoNotDisturbModePay">
+		Включен режим «Не беспокоить». Вы не будете получать никаких предметов, предлагаемых в обмен за этот платеж.
 
-Хотите отключить режим «Занят» до завершения этой транзакции?
+Отключить режим «Не беспокоить» перед завершением этой операции?
 		<form name="form">
-			<ignore name="ignore" text="Я собираюсь заплатить за пользователя или объект, когда включен режим «Занят»"/>
-			<button ignore="Всегда отключать режим «Занят»" name="Yes" text="OK"/>
-			<button ignore="Не отключать режим «Занят»" name="No" text="Отмена"/>
+			<ignore name="ignore" text="Я собираюсь заплатить за пользователя или объект, когда включен режим «Не беспокоить»"/>
+			<button ignore="Всегда выходить из режима «Не беспокоить»" name="Yes" text="OK"/>
+			<button ignore="Не выходить из режима «Не беспокоить»" name="No" text="Отмена"/>
 		</form>
 	</notification>
 	<notification name="ConfirmDeleteProtectedCategory">
@@ -2249,11 +2274,8 @@ http://secondlife.com/download.
 	<notification name="GroupNotice">
 		Раздел: [SUBJECT], сообщение: [MESSAGE]
 	</notification>
-	<notification name="FriendOnline">
-		&lt;nolink&gt;[NAME]&lt;/nolink&gt; в сети
-	</notification>
-	<notification name="FriendOffline">
-		&lt;nolink&gt;[NAME]&lt;/nolink&gt; не в сети
+	<notification name="FriendOnlineOffline">
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; [STATUS]
 	</notification>
 	<notification name="AddSelfFriend">
 		Вы лучше всех, но нельзя добавить в друзья себя самого.
@@ -2482,13 +2504,6 @@ http://secondlife.com/download.
 	<notification name="DynamicPathfindingDisabled">
 		В этом регионе не разрешен динамический поиск пути.  Возможны нарушения работы скриптовых объектов с использованием вызовов LSL поиска пути.
 	</notification>
-	<notification name="PathfindingRebakeNavmesh">
-		Изменение некоторых объектов в регионе может привести к неправильному поведению других подвижных объектов.  Чтобы исправить их поведение, нажмите кнопку «Восстановить регион».  Более подробная информация – по ссылке «Справка».
-		<url name="url">
-			http://wiki.secondlife.com/wiki/Pathfinding_Tools_in_the_Second_Life_Viewer
-		</url>
-		<usetemplate helptext="Справка" ignoretext="Изменение некоторых объектов в регионе может привести к неправильному поведению других подвижных объектов." name="okhelpignore" yestext="OK"/>
-	</notification>
 	<notification name="PathfindingCannotRebakeNavmesh">
 		Произошла ошибка.  Возможно, неполадка в сети или на сервере, или у вас нет прав на строительство.  Иногда для устранения этой проблемы достаточно выйти и снова войти.
 		<usetemplate name="okbutton" yestext="OK"/>
@@ -2751,7 +2766,7 @@ http://secondlife.com/download.
 	<notification name="ScriptQuestionCaution">
 		Предупреждение. Объект «&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;» требует полного доступа к вашему аккаунту для Linden-долларов. Если разрешить такой доступ, объект сможет в любое время снимать средства с вашего аккаунта или полностью опустошать его неоднократно и без предупреждения.
   
-Такое требование чаще всего незаконно. Не разрешайте доступ к своему аккаунту, если только не полностью осознаете, зачем он нужен этому объекту.
+Не разрешайте доступ к своему аккаунту, если только не полностью осознаете, зачем он нужен этому объекту.
 		<form name="form">
 			<button name="Grant" text="Разрешить полный доступ"/>
 			<button name="Deny" text="Отклонить"/>
@@ -3333,4 +3348,632 @@ http://secondlife.com/download.
 		Вы удаляете несколько предметов ([NUM_ITEMS]).  Продолжить?
 		<usetemplate ignoretext="Удалить несколько предметов?" name="okcancelignore" notext="Нет" yestext="Да"/>
 	</notification>
+	<notification name="AvatarFrozen">
+		[AV_FREEZER] заморозил вас. В это время вы не можете перемещаться и выполнять другие действия с миром.
+	</notification>
+	<notification name="AvatarFrozenDuration">
+		[AV_FREEZER] заморозил вас на [AV_FREEZE_TIME] сек. В это время вы не можете перемещаться и выполнять другие действия с миром.
+	</notification>
+	<notification name="YouFrozeAvatar">
+		Аватар заморожен.
+	</notification>
+	<notification name="AvatarHasUnFrozenYou">
+		[AV_FREEZER] разморозил вас.
+	</notification>
+	<notification name="AvatarUnFrozen">
+		Аватар разморожен.
+	</notification>
+	<notification name="AvatarFreezeFailure">
+		Не удалось заморозить: у вас нет прав администратора на этом участке.
+	</notification>
+	<notification name="AvatarFreezeThaw">
+		Заморозка кончилась, занимайтесь своим делом.
+	</notification>
+	<notification name="AvatarCantFreeze">
+		Невозможно заморозить этого пользователя.
+	</notification>
+	<notification name="NowOwnObject">
+		Вы стали владельцем объекта [OBJECT_NAME]
+	</notification>
+	<notification name="CantRezOnLand">
+		Нельзя выложить объект на [OBJECT_POS]: это не разрешено владельцем земли.  Узнать, кто владелец, можно с помощью инструмента «Земля».
+	</notification>
+	<notification name="RezFailTooManyRequests">
+		Невозможно выложить объект: слишком много запросов.
+	</notification>
+	<notification name="SitFailCantMove">
+		Нельзя сесть: сейчас вы не можете двигаться.
+	</notification>
+	<notification name="SitFailNotAllowedOnLand">
+		Вам не разрешено садиться на этой земле.
+	</notification>
+	<notification name="SitFailNotSameRegion">
+		Попробуйте переместиться ближе.  Нельзя сесть на объект:
+он находится в другом регионе.
+	</notification>
+	<notification name="NoNewObjectRegionFull">
+		Невозможно создать новый объект. Регион уже заполнен.
+	</notification>
+	<notification name="FailedToPlaceObject">
+		Не удалось поместить объект в указанное место.  Повторите попытку.
+	</notification>
+	<notification name="NoOwnNoGardening">
+		Вы не можете создавать деревья и траву на чужой земле.
+	</notification>
+	<notification name="NoCopyPermsNoObject">
+		Не удалось скопировать: вам не разрешено копировать объект «[OBJ_NAME]».
+	</notification>
+	<notification name="NoTransPermsNoObject">
+		Не удалось скопировать: объект «[OBJ_NAME]» нельзя перенести к вам.
+	</notification>
+	<notification name="AddToNavMeshNoCopy">
+		Не удалось скопировать: объект «[OBJ_NAME]» относится к навигационной сетке.
+	</notification>
+	<notification name="DupeWithNoRootsSelected">
+		Выбран дубликат без корневых объектов.
+	</notification>
+	<notification name="CantDupeCuzRegionIsFull">
+		Невозможно дублировать объекты: регион заполнен.
+	</notification>
+	<notification name="CantDupeCuzParcelNotFound">
+		Невозможно дублировать объекты: не удалось найти их участок.
+	</notification>
+	<notification name="CantCreateCuzParcelFull">
+		Нельзя создать объект: 
+участок уже заполнен.
+	</notification>
+	<notification name="RezAttemptFailed">
+		Не удалось выложить объект.
+	</notification>
+	<notification name="ToxicInvRezAttemptFailed">
+		Невозможно создать элемент, который вызвал проблемы в этом регионе.
+	</notification>
+	<notification name="InvItemIsBlacklisted">
+		Этот предмет инвентаря находится в черном списке.
+	</notification>
+	<notification name="NoCanRezObjects">
+		Сейчас вам не разрешено создавать объекты.
+	</notification>
+	<notification name="LandSearchBlocked">
+		Поиск по земле заблокирован.
+Вы провели слишком много операций поиска за короткое время.
+Повторите попытку через минуту.
+	</notification>
+	<notification name="NotEnoughResourcesToAttach">
+		Недостаточно свободных ресурсов скриптинга для присоединения объекта!
+	</notification>
+	<notification name="YouDiedAndGotTPHome">
+		Вы умерли и были телепортированы в ваше домашнее местоположение
+	</notification>
+	<notification name="EjectComingSoon">
+		Вам запрещено здесь присутствовать; у вас есть [EJECT_TIME] сек, чтобы покинуть это место.
+	</notification>
+	<notification name="NoEnterServerFull">
+		Вам нет доступа в этот регион: 
+серпер переполнен.
+	</notification>
+	<notification name="SaveBackToInvDisabled">
+		Сохранение в инвентаре отключено.
+	</notification>
+	<notification name="NoExistNoSaveToContents">
+		Нельзя сохранить «[OBJ_NAME]» в содержимом объекта: объект, из которого оно было выложено, уже не существует.
+	</notification>
+	<notification name="NoModNoSaveToContents">
+		Нельзя сохранить «[OBJ_NAME]» в содержимом объекта: вам не разрешено изменять объект «[DEST_NAME]».
+	</notification>
+	<notification name="NoSaveBackToInvDisabled">
+		Невозможно сохранить «[OBJ_NAME]» в инвентаре: эта операция запрещена.
+	</notification>
+	<notification name="NoCopyNoSelCopy">
+		Нельзя скопировать выбранное: вам не разрешено копировать объект «[OBJ_NAME]».
+	</notification>
+	<notification name="NoTransNoSelCopy">
+		Невозможно скопировать выбранный предмет: объект «[OBJ_NAME]» не переносится.
+	</notification>
+	<notification name="NoTransNoCopy">
+		Невозможно скопировать выбранный предмет: объект «[OBJ_NAME]» не переносится.
+	</notification>
+	<notification name="NoPermsNoRemoval">
+		Удаление объекта «[OBJ_NAME]» из симулятора запрещено системой разрешений.
+	</notification>
+	<notification name="NoModNoSaveSelection">
+		Нельзя сохранить выбранное: вам не разрешено изменять объект «[OBJ_NAME]».
+	</notification>
+	<notification name="NoCopyNoSaveSelection">
+		Невозможно сохранить выбранный предмет: объект «[OBJ_NAME]» не копируется.
+	</notification>
+	<notification name="NoModNoTaking">
+		Нельзя забрать выбранное: вам не разрешено изменять объект «[OBJ_NAME]».
+	</notification>
+	<notification name="RezDestInternalError">
+		Внутренняя ошибка: неизвестный тип места назначения.
+	</notification>
+	<notification name="DeleteFailObjNotFound">
+		Невозможно удалить: объект не найден
+	</notification>
+	<notification name="SorryCantEjectUser">
+		Невозможно выбросить этого пользователя.
+	</notification>
+	<notification name="RegionSezNotAHome">
+		Вам не разрешено устанавливать свое домашнее местоположение в этом регионе.
+	</notification>
+	<notification name="HomeLocationLimits">
+		Задать домашнее местоположение можно только на вашей земле или в Инфохабе материка.
+	</notification>
+	<notification name="HomePositionSet">
+		Задано положение дома.
+	</notification>
+	<notification name="AvatarEjected">
+		Аватар выброшен.
+	</notification>
+	<notification name="AvatarEjectFailed">
+		Не удалось выбросить: у вас нет прав администратора на этом участке.
+	</notification>
+	<notification name="CantMoveObjectParcelFull">
+		Нельзя переместить объект «[OBJECT_NAME]» в позицию «[OBJ_POSITION]» региона [REGION_NAME]: участок уже заполнен.
+	</notification>
+	<notification name="CantMoveObjectParcelPerms">
+		Нельзя переместить объект «[OBJECT_NAME]» в позицию
+«[OBJ_POSITION]» региона [REGION_NAME]: вашим объектам не разрешено присутствовать на этом участке.
+	</notification>
+	<notification name="CantMoveObjectParcelResources">
+		Нельзя переместить объект «[OBJECT_NAME]» в позицию
+«[OBJ_POSITION]» региона [REGION_NAME]: на этом участке недостаточно ресурсов для данного объекта.
+	</notification>
+	<notification name="CantMoveObjectRegionVersion">
+		Нельзя переместить объект «[OBJECT_NAME]» в позицию
+[OBJ_POSITION] региона [REGION_NAME]: в другом регионе работает старая версия симулятора, которая не поддерживает прием этого объекта через границу регионов.
+	</notification>
+	<notification name="CantMoveObjectNavMesh">
+		Нельзя переместить объект «[OBJECT_NAME]» в позицию
+«[OBJ_POSITION]» региона [REGION_NAME]: вам не разрешено изменять навигационную сетку за пределами региона.
+	</notification>
+	<notification name="CantMoveObjectWTF">
+		Нельзя переместить объект «[OBJECT_NAME]» в позицию
+[OBJ_POSITION] региона [REGION_NAME] по неизвестной причине. ([FAILURE_TYPE])
+	</notification>
+	<notification name="NoPermModifyObject">
+		У вас нет прав на изменение этого объекта
+	</notification>
+	<notification name="CantEnablePhysObjContributesToNav">
+		Нельзя включить физику для объекта, который относится к навигационной сетке.
+	</notification>
+	<notification name="CantEnablePhysKeyframedObj">
+		Нельзя включить физику для объектов с ключевыми кадрами.
+	</notification>
+	<notification name="CantEnablePhysNotEnoughLandResources">
+		Нельзя включить физику для объекта -- недостаточно земельных ресурсов.
+	</notification>
+	<notification name="CantEnablePhysCostTooGreat">
+		Нельзя включить физику для объекта с расходом ресурсов физики больше [MAX_OBJECTS]
+	</notification>
+	<notification name="PhantomWithConcavePiece">
+		Этот объект не может содержать вогнутых элементов: это фантом, который относится к навигационной сетке.
+	</notification>
+	<notification name="UnableAddItem">
+		Невозможно добавить предмет!
+	</notification>
+	<notification name="UnableEditItem">
+		Редактирование невозможно!
+	</notification>
+	<notification name="NoPermToEdit">
+		Редактирование не разрешено.
+	</notification>
+	<notification name="NoPermToCopyInventory">
+		Не разрешено копировать этот инвентарь.
+	</notification>
+	<notification name="CantSaveItemDoesntExist">
+		Нельзя сохранить в содержимом объекта: предмет уже не существует.
+	</notification>
+	<notification name="CantSaveItemAlreadyExists">
+		Нельзя сохранить в содержимом объекта: предмет с таким названием уже есть в инвентаре
+	</notification>
+	<notification name="CantSaveModifyAttachment">
+		Нельзя сохранить в содержимом объекта: это приведет к изменению разрешений прикрепленного объекта.
+	</notification>
+	<notification name="TooManyScripts">
+		Слишком много скриптов.
+	</notification>
+	<notification name="UnableAddScript">
+		Невозможно добавить скрипт!
+	</notification>
+	<notification name="AssetServerTimeoutObjReturn">
+		Сервер активов не ответил в заданное время.  Объект возвращен в симулятор.
+	</notification>
+	<notification name="RegionDisablePhysicsShapes">
+		В этом регионе не разрешены фигуры с физическими данными.
+	</notification>
+	<notification name="NoModNavmeshAcrossRegions">
+		Нельзя изменять навигационную сетку за пределами региона.
+	</notification>
+	<notification name="NoSetPhysicsPropertiesOnObjectType">
+		Нельзя задать свойства физики для объекта этого типа.
+	</notification>
+	<notification name="NoSetRootPrimWithNoShape">
+		Нельзя задать корневой примитив без фигуры.
+	</notification>
+	<notification name="NoRegionSupportPhysMats">
+		В этом регионе не разрешены материалы с физическими данными.
+	</notification>
+	<notification name="OnlyRootPrimPhysMats">
+		Настройка материалов с физическими данными разрешена только для корневых примитивов.
+	</notification>
+	<notification name="NoSupportCharacterPhysMats">
+		Присвоение персонажам материалов с физическими данными еще не поддерживается.
+	</notification>
+	<notification name="InvalidPhysMatProperty">
+		Одно или несколько свойств указанного материала с физическими данными недопустимы.
+	</notification>
+	<notification name="NoPermsAlterStitchingMeshObj">
+		Не разрешается изменять тип стыковки меш-объекта.
+	</notification>
+	<notification name="NoPermsAlterShapeMeshObj">
+		Не разрешается изменять форму меш-объекта
+	</notification>
+	<notification name="FullRegionCantEnter">
+		Вам нет доступа в этот регион: \nрегион заполнен.
+	</notification>
+	<notification name="LinkFailedOwnersDiffer">
+		Связь невозможна -- разные владельцы
+	</notification>
+	<notification name="LinkFailedNoModNavmeshAcrossRegions">
+		Связь невозможна – нельзя изменять навигационную сетку за пределами региона.
+	</notification>
+	<notification name="LinkFailedNoPermToEdit">
+		Связь невозможна: у вас нет разрешения на редактирование.
+	</notification>
+	<notification name="LinkFailedTooManyPrims">
+		Связь невозможна -- слишком много примитивов
+	</notification>
+	<notification name="LinkFailedCantLinkNoCopyNoTrans">
+		Связь невозможна -- нельзя связать некопируемый и непереносимый объекты
+	</notification>
+	<notification name="LinkFailedNothingLinkable">
+		Связь невозможна -- нет связываемых объектов.
+	</notification>
+	<notification name="LinkFailedTooManyPathfindingChars">
+		Связь невозможна -- слишком много персонажей с поиском пути
+	</notification>
+	<notification name="LinkFailedInsufficientLand">
+		Связь невозможна -- недостаточно земельных ресурсов
+	</notification>
+	<notification name="LinkFailedTooMuchPhysics">
+		Объект использует слишком много ресурсов физики -- динамическое поведение отключено.
+	</notification>
+	<notification name="TeleportedHomeByObjectOnParcel">
+		Вы были телепортированы домой объектом «[OBJECT_NAME]» на участке «[PARCEL_NAME]»
+	</notification>
+	<notification name="TeleportedHomeByObject">
+		Вы были телепортированы домой объектом «[OBJECT_NAME]»
+	</notification>
+	<notification name="TeleportedByAttachment">
+		Вы были телепортированы прикрепленным объектом [ITEM_ID]
+	</notification>
+	<notification name="TeleportedByObjectOnParcel">
+		Вы были телепортированы объектом «[OBJECT_NAME]» на участке «[PARCEL_NAME]»
+	</notification>
+	<notification name="TeleportedByObjectOwnedBy">
+		Вы были телепортированы объектом «[OBJECT_NAME]», владелец – [OWNER_ID]
+	</notification>
+	<notification name="TeleportedByObjectUnknownUser">
+		Вы были телепортированы объектом «[OBJECT_NAME]», владелец неизвестен.
+	</notification>
+	<notification name="CantCreateObjectRegionFull">
+		Невозможно создать запрошенный объект. Регион уже заполнен.
+	</notification>
+	<notification name="CantAttackMultipleObjOneSpot">
+		Нельзя присоединить несколько объектов к одной точке.
+	</notification>
+	<notification name="CantCreateMultipleObjAtLoc">
+		Здесь нельзя создать несколько объектов.
+	</notification>
+	<notification name="UnableToCreateObjTimeOut">
+		Невозможно создать запрошенный объект. Объекта нет в базе данных.
+	</notification>
+	<notification name="UnableToCreateObjUnknown">
+		Невозможно создать запрошенный объект. Истекло время запроса. Повторите попытку.
+	</notification>
+	<notification name="UnableToCreateObjMissingFromDB">
+		Невозможно создать запрошенный объект. Повторите попытку.
+	</notification>
+	<notification name="RezFailureTookTooLong">
+		Не удалось выложить, загрузка нужного объекта длится слишком долго.
+	</notification>
+	<notification name="FailedToPlaceObjAtLoc">
+		Не удалось поместить объект в указанное место.  Повторите попытку.
+	</notification>
+	<notification name="CantCreatePlantsOnLand">
+		Вам нельзя создавать растения на этой земле.
+	</notification>
+	<notification name="CantRestoreObjectNoWorldPos">
+		Невозможно восстановить объект. Не найдена позиция в игровом мире.
+	</notification>
+	<notification name="CantRezObjectInvalidMeshData">
+		Невозможно выложить объект: его данные сетки неверны.
+	</notification>
+	<notification name="CantRezObjectTooManyScripts">
+		Невозможно выложить объект: в этом регионе уже сликом много скриптов.
+	</notification>
+	<notification name="CantCreateObjectNoAccess">
+		Ваши привилегии доступа не разрешают создание объектов на этом месте.
+	</notification>
+	<notification name="CantCreateObject">
+		Сейчас вам не разрешено создавать объекты.
+	</notification>
+	<notification name="InvalidObjectParams">
+		Неверные параметры объекта
+	</notification>
+	<notification name="CantDuplicateObjectNoAcess">
+		Ваши привилегии доступа не разрешают дублирование объектов на этом месте.
+	</notification>
+	<notification name="CantChangeShape">
+		Вам не разрешено изменять эту фигуру.
+	</notification>
+	<notification name="NoAccessToClaimObjects">
+		Ваши привилегии доступа не разрешают претендовать на объекты на этом месте.
+	</notification>
+	<notification name="DeedFailedNoPermToDeedForGroup">
+		Не удалось передать: вам не разрешено передавать объекты для этой группы.
+	</notification>
+	<notification name="NoPrivsToBuyObject">
+		Ваши привилегии доступа не разрешают покупать объекты на этом месте.
+	</notification>
+	<notification name="CantAttachObjectAvatarSittingOnIt">
+		Невозможно присоединить объект: на нем сидит аватар.
+	</notification>
+	<notification name="WhyAreYouTryingToWearShrubbery">
+		Деревья и траву нельзя носить как прикрепленные объекты.
+	</notification>
+	<notification name="CantAttachGroupOwnedObjs">
+		Нельзя присоединять объекты, принадлежащие группе.
+	</notification>
+	<notification name="CantAttachObjectsNotOwned">
+		Нельзя прикреплять объекты, которыми вы не владеете.
+	</notification>
+	<notification name="CantAttachNavmeshObjects">
+		Невозможно присоединить объекты, которые относятся к навигационной сетке.
+	</notification>
+	<notification name="CantAttachObjectNoMovePermissions">
+		Нельзя присоединить объект: вам не разрешено его перемещать.
+	</notification>
+	<notification name="CantAttachNotEnoughScriptResources">
+		Недостаточно свободных ресурсов скриптинга для присоединения объекта!
+	</notification>
+	<notification name="CantDropItemTrialUser">
+		Здесь нельзя сбрасывать объекты; перейдите в бесплатную область для гостей.
+	</notification>
+	<notification name="CantDropMeshAttachment">
+		Нельзя сбрасывать прикрепленные меш-объекты. Отсоедините их в инвентарь, а затем выложите в игровой мир.
+	</notification>
+	<notification name="CantDropAttachmentNoPermission">
+		Не удалось сбросить прикрепленный объект: вам не разрешено оставлять его здесь.
+	</notification>
+	<notification name="CantDropAttachmentInsufficientLandResources">
+		Не удалось сбросить прикрепленный объект: не хватает свободных земельных ресурсов.
+	</notification>
+	<notification name="CantDropAttachmentInsufficientResources">
+		Не удалось сбросить прикрепленные объекты: не хватает свободных ресурсов.
+	</notification>
+	<notification name="CantDropObjectFullParcel">
+		Нельзя сбросить объект здесь.  Участок уже заполнен.
+	</notification>
+	<notification name="CantTouchObjectBannedFromParcel">
+		Нельзя коснуться/взять этот объект: вы забанены на этом участке.
+	</notification>
+	<notification name="PlzNarrowDeleteParams">
+		Уточните параметры удаления.
+	</notification>
+	<notification name="UnableToUploadAsset">
+		Невозможно отправить актив.
+	</notification>
+	<notification name="CantTeleportCouldNotFindUser">
+		Не удалось найти пользователя для телепортации домой
+	</notification>
+	<notification name="GodlikeRequestFailed">
+		режим творца недоступен
+	</notification>
+	<notification name="GenericRequestFailed">
+		не удалось выполнить общий запрос
+	</notification>
+	<notification name="CantUploadPostcard">
+		Невозможно отправить открытку.  Повторите попытку позже.
+	</notification>
+	<notification name="CantFetchInventoryForGroupNotice">
+		Невозможно получить данные инвентаря для группового уведомления.
+	</notification>
+	<notification name="CantSendGroupNoticeNotPermitted">
+		Невозможно отправить групповое уведомление -- не разрешено.
+	</notification>
+	<notification name="CantSendGroupNoticeCantConstructInventory">
+		Невозможно отправить групповое уведомление -- не удалось собрать инвентарь.
+	</notification>
+	<notification name="CantParceInventoryInNotice">
+		Невозможно проанализировать инвентарь, указанный в уведомлении.
+	</notification>
+	<notification name="TerrainUploadFailed">
+		Не удалось загрузить ландшафт.
+	</notification>
+	<notification name="TerrainFileWritten">
+		Файл ландшафта записан.
+	</notification>
+	<notification name="TerrainFileWrittenStartingDownload">
+		Файл ландшафта записан, начинается загрузка...
+	</notification>
+	<notification name="TerrainBaked">
+		Ландшафт готов.
+	</notification>
+	<notification name="TenObjectsDisabledPlzRefresh">
+		Отключены только первые 10 выбранных объектов. Обновите экран и выберите объекты снова, если требуется.
+	</notification>
+	<notification name="UpdateViewerBuyParcel">
+		Для покупки этого участка необходимо обновить клиент.
+	</notification>
+	<notification name="CantBuyParcelNotForSale">
+		Невозможно купить, этот участок не предназначен для продажи.
+	</notification>
+	<notification name="CantBuySalePriceOrLandAreaChanged">
+		Невозможно купить: цена или площадь земли изменились.
+	</notification>
+	<notification name="CantBuyParcelNotAuthorized">
+		Вам не разрешено покупать этот участок.
+	</notification>
+	<notification name="CantBuyParcelAwaitingPurchaseAuth">
+		Вы не можете приобрести этот участок: он уже ожидает подтверждения покупки
+	</notification>
+	<notification name="CantBuildOverflowParcel">
+		Здесь нельзя создавать объекты – участок будет переполнен.
+	</notification>
+	<notification name="SelectedMultipleOwnedLand">
+		Вы выбрали землю с разными владельцами. Выберите меньшую область и повторите попытку.
+	</notification>
+	<notification name="CantJoinTooFewLeasedParcels">
+		Выбрано недостаточно арендуемых участков для вступления.
+	</notification>
+	<notification name="CantDivideLandMultipleParcelsSelected">
+		Нельзя разделить землю.\nВыбрано больше одного участка.\nВыберите меньшую территорию.
+	</notification>
+	<notification name="CantDivideLandCantFindParcel">
+		Нельзя разделить землю.\nНе удалось найти участок.\nСообщите об этой неполадке: Справка -&gt; Сообщить об ошибке...
+	</notification>
+	<notification name="CantDivideLandWholeParcelSelected">
+		Невозможно разделить землю. Выбран весь участок.\nПопробуйте выбрать территорию поменьше.
+	</notification>
+	<notification name="LandHasBeenDivided">
+		Земля разделена.
+	</notification>
+	<notification name="PassPurchased">
+		Вы приобрели пропуск.
+	</notification>
+	<notification name="RegionDisallowsClassifieds">
+		В регионе не разрешены рекламные объявления.
+	</notification>
+	<notification name="LandPassExpireSoon">
+		Ваш пропуск на эту землю скоро закончится.
+	</notification>
+	<notification name="CantSitNoSuitableSurface">
+		Нет подходящей поверхности, чтобы сесть. Попробуйте в другом месте.
+	</notification>
+	<notification name="CantSitNoRoom">
+		Здесь нет места, чтобы сесть. Попробуйте в другом месте.
+	</notification>
+	<notification name="ClaimObjectFailedNoPermission">
+		Невозможно претендовать на объект: у вас нет разрешения
+	</notification>
+	<notification name="ClaimObjectFailedNoMoney">
+		Невозможно претендовать на объект: у вас не хватает L$.
+	</notification>
+	<notification name="CantDeedGroupLand">
+		Нельзя передать землю, принадлежащую группе.
+	</notification>
+	<notification name="BuyObjectFailedNoMoney">
+		Не удалось купить объект: у вас не хватает L$.
+	</notification>
+	<notification name="BuyInventoryFailedNoMoney">
+		Не удалось купить инвентарь: у вас не хватает L$.
+	</notification>
+	<notification name="BuyPassFailedNoMoney">
+		У вас недостаточно L$, чтобы заплатить за проход на эту землю.
+	</notification>
+	<notification name="CantBuyPassTryAgain">
+		Сейчас нельзя купить пропуск.  Повторите попытку позже.
+	</notification>
+	<notification name="CantCreateObjectParcelFull">
+		Невозможно создать объект:\nучасток заполнен.
+	</notification>
+	<notification name="FailedPlacingObject">
+		Не удалось поместить объект в указанное место.  Повторите попытку.
+	</notification>
+	<notification name="CantCreateLandmarkForEvent">
+		Невозможно создать закладку для события.
+	</notification>
+	<notification name="GodBeatsFreeze">
+		Сила творца одолевает заморозку!
+	</notification>
+	<notification name="SpecialPowersRequestFailedLogged">
+		Не удалось выполнить запрос на особые способности. Запрос зарегистрирован.
+	</notification>
+	<notification name="ExpireExplanation">
+		Система сейчас не может обработать ваш запрос. Истекло время запроса.
+	</notification>
+	<notification name="DieExplanation">
+		Система не может обработать ваш запрос.
+	</notification>
+	<notification name="AddPrimitiveFailure">
+		Недостаточно денег для создания примитива.
+	</notification>
+	<notification name="RezObjectFailure">
+		Недостаточно денег для создания объекта.
+	</notification>
+	<notification name="ResetHomePositionNotLegal">
+		Недопустимое домашнее местоположение; восстановлено стандартное местоположение.
+	</notification>
+	<notification name="CantInviteRegionFull">
+		Сейчас вы не можете никого пригласить к себе: регион уже заполнен. Повторите попытку позже.
+	</notification>
+	<notification name="CantSetHomeAtRegion">
+		Вам не разрешено устанавливать свое домашнее местоположение в этом регионе.
+	</notification>
+	<notification name="ListValidHomeLocations">
+		Задать домашнее местоположение можно только на вашей земле или в Инфохабе материка.
+	</notification>
+	<notification name="SetHomePosition">
+		Домашнее местоположение задано.
+	</notification>
+	<notification name="CantDerezInventoryError">
+		Невозможно забрать объект: сбой инвентаря.
+	</notification>
+	<notification name="CantCreateRequestedInv">
+		Невозможно создать требуемый инвентарь.
+	</notification>
+	<notification name="CantCreateRequestedInvFolder">
+		Невозможно создать требуемую папку инвентаря.
+	</notification>
+	<notification name="CantCreateInventory">
+		Невозможно создать этот инвентарь.
+	</notification>
+	<notification name="CantCreateLandmark">
+		Невозможно создать закладку.
+	</notification>
+	<notification name="CantCreateOutfit">
+		Сейчас нельзя создать костюм. Попробуйте через минуту.
+	</notification>
+	<notification name="InventoryNotForSale">
+		Инвентарь не для продажи.
+	</notification>
+	<notification name="CantFindInvItem">
+		Не удалось найти предмет из инвентаря.
+	</notification>
+	<notification name="CantFindObject">
+		Не удалось найти объект.
+	</notification>
+	<notification name="CantTransfterMoneyRegionDisabled">
+		Сейчас в этом регионе запрещен перевод денег на объекты.
+	</notification>
+	<notification name="CantPayNoAgent">
+		Непонятно, кому платить.
+	</notification>
+	<notification name="CantDonateToPublicObjects">
+		Нельзя отдавать L$ за общедоступные объекты.
+	</notification>
+	<notification name="InventoryCreationInWorldObjectFailed">
+		Не удалось создать инвентарь в объекте игрового мира.
+	</notification>
+	<notification name="UserBalanceOrLandUsageError">
+		Не удалось обновить клиент из-за внутренней ошибки.  Отображаемый в клиенте баланс L$ или владение участками могут не соответствовать действительному балансу на серверах.
+	</notification>
+	<notification name="LargePrimAgentIntersect">
+		Нельзя создавать большие примитивы, которые пересекаются с другими игроками.  Повторите попытку, когда другие игроки уйдут.
+	</notification>
+	<notification name="PreferenceChatClearLog">
+		Будут удалены журналы предыдущих разговоров и все резервные копии этих файлов.
+		<usetemplate ignoretext="Подтверждать удаление журнала предыдущих разговоров." name="okcancelignore" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="PreferenceChatDeleteTranscripts">
+		Будут удалены записи всех предыдущих разговоров. Список прошедших разговоров не изменится. Все файлы с расширениями .txt и txt.backup в папке [FOLDER] будут удалены.
+		<usetemplate ignoretext="Подтверждать удаление записей." name="okcancelignore" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="PreferenceChatPathChanged">
+		Невозможно переместить файлы. Восстановлен прежний путь.
+		<usetemplate ignoretext="Невозможно переместить файлы. Восстановлен прежний путь." name="okignore" yestext="OK"/>
+	</notification>
 </notifications>
diff --git a/indra/newview/skins/default/xui/ru/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/ru/panel_avatar_list_item.xml
index 75e396222f9..4866bb7ed61 100644
--- a/indra/newview/skins/default/xui/ru/panel_avatar_list_item.xml
+++ b/indra/newview/skins/default/xui/ru/panel_avatar_list_item.xml
@@ -27,5 +27,6 @@
 	<icon name="permission_edit_mine_icon" tool_tip="Этот друг может изменять, удалять или брать ваши объекты"/>
 	<icon name="permission_map_icon" tool_tip="Этот друг может видеть вас на карте"/>
 	<icon name="permission_online_icon" tool_tip="Этот друг может видеть ваш статус в сети"/>
+	<button name="info_btn" tool_tip="Дополнительно"/>
 	<button name="profile_btn" tool_tip="Смотреть профиль"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/ru/panel_block_list_sidetray.xml
index 214ca8bf3a9..70a1b259969 100644
--- a/indra/newview/skins/default/xui/ru/panel_block_list_sidetray.xml
+++ b/indra/newview/skins/default/xui/ru/panel_block_list_sidetray.xml
@@ -1,10 +1,11 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="block_list_panel">
-	<text name="title_text">
-		Черный список
-	</text>
-	<scroll_list name="blocked" tool_tip="Список заблокированных жителей"/>
-	<button label="Заблокировать жителя" name="Block resident..." tool_tip="Выберите жителя для блокировки"/>
-	<button label="Блокировать объект по имени" name="Block object by name..." tool_tip="Выберите объект для блокировки по имени"/>
-	<button label="Разблокировать" name="Unblock" tool_tip="Удалить объект или жителя из списка заблокированных"/>
+	<panel label="bottom_panel" name="blocked_buttons_panel">
+		<filter_editor label="Фильтр" name="blocked_filter_input"/>
+		<menu_button name="blocked_gear_btn" tool_tip="Действия с выбранным жителем или объектом"/>
+		<menu_button name="view_btn" tool_tip="Параметры сортировки"/>
+		<menu_button name="plus_btn" tool_tip="Выберите жителя или объект для блокировки"/>
+		<button name="unblock_btn" tool_tip="Удалить объект или жителя из списка заблокированных"/>
+	</panel>
+	<block_list name="blocked" tool_tip="Список заблокированных жителей"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_conversation_list_item.xml b/indra/newview/skins/default/xui/ru/panel_conversation_list_item.xml
new file mode 100644
index 00000000000..4fdb4f9122e
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_conversation_list_item.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="conversation_list_item">
+	<layout_stack name="conversation_item_stack">
+		<layout_panel name="conversation_title_panel">
+			<text name="conversation_title" value="(загрузка)"/>
+		</layout_panel>
+	</layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_conversation_log_list_item.xml b/indra/newview/skins/default/xui/ru/panel_conversation_log_list_item.xml
new file mode 100644
index 00000000000..98fe7b99be0
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_conversation_log_list_item.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="conversation_log_list_item">
+	<icon name="voice_session_icon" tool_tip="Включая голосовой чат"/>
+	<icon name="unread_ims_icon" tool_tip="За время вашего отсутствия пришли сообщения"/>
+	<button name="delete_btn" tool_tip="Удалить эту запись"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_group_list_item.xml b/indra/newview/skins/default/xui/ru/panel_group_list_item.xml
index 7f000fb5a0d..b043ffbbe25 100644
--- a/indra/newview/skins/default/xui/ru/panel_group_list_item.xml
+++ b/indra/newview/skins/default/xui/ru/panel_group_list_item.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="group_list_item">
 	<text name="group_name" value="Неизвестно"/>
+	<button name="info_btn" tool_tip="Дополнительно"/>
 	<button name="profile_btn" tool_tip="Смотреть профиль"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_people.xml b/indra/newview/skins/default/xui/ru/panel_people.xml
index 607921f2d69..7da7fb3191f 100644
--- a/indra/newview/skins/default/xui/ru/panel_people.xml
+++ b/indra/newview/skins/default/xui/ru/panel_people.xml
@@ -14,81 +14,53 @@
 	<string name="no_filtered_friends_msg">
 		Не нашли того, что вам нужно? Воспользуйтесь [secondlife:///app/search/people/[SEARCH_TERM] поиском].
 	</string>
-	<string name="people_filter_label" value="Фильтр для людей"/>
-	<string name="groups_filter_label" value="Фильтр для групп"/>
 	<string name="no_filtered_groups_msg" value="Не нашли того, что вам нужно? Воспользуйтесь [secondlife:///app/search/groups/[SEARCH_TERM] поиском]."/>
 	<string name="no_groups_msg" value="Ищете группу, чтобы присоединиться к ней? Воспользуйтесь [secondlife:///app/search/groups поиском]."/>
 	<string name="MiniMapToolTipMsg" value="[REGION](Двойной щелчок открывает карту, shift+перетягивание – обзор)"/>
 	<string name="AltMiniMapToolTipMsg" value="[REGION](Двойной щелчок – телепортация, shift+перетягивание – обзор)"/>
-	<filter_editor label="Фильтр" name="filter_input"/>
 	<tab_container name="tabs">
 		<panel label="РЯДОМ" name="nearby_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<menu_button name="nearby_view_sort_btn" tool_tip="Опции"/>
-				<button name="add_friend_btn" tool_tip="Добавить выбранного жителя в список друзей"/>
+			<panel label="bottom_panel" name="nearby_buttons_panel">
+				<filter_editor label="Фильтр для людей" name="nearby_filter_input"/>
+				<button name="gear_btn" tool_tip="Действия с выбранным жителем"/>
+				<menu_button name="nearby_view_btn" tool_tip="Параметры просмотра/сортировки"/>
+				<button name="add_friend_btn" tool_tip="Предложить жителю дружбу"/>
+				<dnd_button name="nearby_del_btn" tool_tip="Удалить выбранного пользователя из друзей"/>
 			</panel>
 		</panel>
-		<panel label="МОИ ДРУЗЬЯ" name="friends_panel">
+		<panel label="ДРУЗЬЯ" name="friends_panel">
+			<panel label="bottom_panel" name="friends_buttons_panel">
+				<filter_editor label="Фильтр для людей" name="friends_filter_input"/>
+				<button name="gear_btn" tool_tip="Действия с выбранным жителем"/>
+				<menu_button name="friends_view_btn" tool_tip="Параметры просмотра/сортировки"/>
+				<button name="friends_add_btn" tool_tip="Предложить жителю дружбу"/>
+				<dnd_button name="friends_del_btn" tool_tip="Удалить выбранного пользователя из друзей"/>
+			</panel>
 			<accordion name="friends_accordion">
 				<accordion_tab name="tab_online" title="Онлайн"/>
 				<accordion_tab name="tab_all" title="Все"/>
 			</accordion>
-			<panel label="bottom_panel" name="bottom_panel">
-				<layout_stack name="bottom_panel">
-					<layout_panel name="options_gear_btn_panel">
-						<menu_button name="friends_viewsort_btn" tool_tip="Показать дополнительные параметры"/>
-					</layout_panel>
-					<layout_panel name="add_btn_panel">
-						<button name="add_btn" tool_tip="Предложить жителю дружбу"/>
-					</layout_panel>
-					<layout_panel name="trash_btn_panel">
-						<dnd_button name="del_btn" tool_tip="Удалить выбранного жителя из списка друзей"/>
-					</layout_panel>
-				</layout_stack>
-			</panel>
 		</panel>
-		<panel label="МОИ ГРУППЫ" name="groups_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<menu_button name="groups_viewsort_btn" tool_tip="Опции"/>
-				<button name="plus_btn" tool_tip="Присоединиться к группе/создать новую группу"/>
-				<button name="activate_btn" tool_tip="Активировать выбранную группу"/>
+		<panel label="ГРУППЫ" name="groups_panel">
+			<panel label="bottom_panel" name="groups_buttons_panel">
+				<filter_editor label="Фильтр для групп" name="groups_filter_input"/>
+				<menu_button name="groups_gear_btn" tool_tip="Действия с выбранной группой"/>
+				<menu_button name="groups_view_btn" tool_tip="Параметры просмотра/сортировки"/>
+				<menu_button name="plus_btn" tool_tip="Присоединиться к группе/создать новую группу"/>
+				<dnd_button name="minus_btn" tool_tip="Покинуть выбранную группу"/>
 			</panel>
 		</panel>
 		<panel label="НЕДАВНИЕ" name="recent_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<menu_button name="recent_viewsort_btn" tool_tip="Опции"/>
-				<button name="add_friend_btn" tool_tip="Добавить выбранного жителя в список друзей"/>
+			<panel label="bottom_panel" name="recent_buttons_panel">
+				<filter_editor label="Фильтр для людей" name="recent_filter_input"/>
+				<button name="gear_btn" tool_tip="Действия с выбранным жителем"/>
+				<menu_button name="recent_view_btn" tool_tip="Параметры просмотра/сортировки"/>
+				<button name="add_friend_btn" tool_tip="Предложить жителю дружбу"/>
+				<dnd_button name="recent_del_btn" tool_tip="Удалить выбранного пользователя из друзей"/>
 			</panel>
 		</panel>
+		<panel label="БЛОКИРОВАН" name="blocked_panel">
+			<panel label="Черный список жителей и объектов" name="panel_block_list_sidetray"/>
+		</panel>
 	</tab_container>
-	<panel name="button_bar">
-		<layout_stack name="bottom_bar_ls">
-			<layout_panel name="view_profile_btn_lp">
-				<button label="Профиль" name="view_profile_btn" tool_tip="Показать изображение, группы и прочую информацию о жителе"/>
-			</layout_panel>
-			<layout_panel name="im_btn_lp">
-				<button label="IM" name="im_btn" tool_tip="Начать сеанс IM"/>
-			</layout_panel>
-			<layout_panel name="call_btn_lp">
-				<button label="Звонок" name="call_btn" tool_tip="Позвонить этому жителю"/>
-			</layout_panel>
-			<layout_panel name="share_btn_lp">
-				<button label="Поделиться" name="share_btn" tool_tip="Поделиться объектом из инвентаря"/>
-			</layout_panel>
-			<layout_panel name="teleport_btn_lp">
-				<button label="Телепортация" name="teleport_btn" tool_tip="Предложить телепортацию"/>
-			</layout_panel>
-		</layout_stack>
-		<layout_stack name="bottom_bar_ls1">
-			<layout_panel name="group_info_btn_lp">
-				<button label="Профиль группы" name="group_info_btn" tool_tip="Показать информацию о группе"/>
-			</layout_panel>
-			<layout_panel name="chat_btn_lp">
-				<button label="Групповой чат" name="chat_btn" tool_tip="Открыть сеанс чата"/>
-			</layout_panel>
-			<layout_panel name="group_call_btn_lp">
-				<button label="Звонок группе" name="group_call_btn" tool_tip="Позвонить этой группе"/>
-			</layout_panel>
-		</layout_stack>
-	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_chat.xml b/indra/newview/skins/default/xui/ru/panel_preferences_chat.xml
index 9283fc9e6e5..6383fc8c2c0 100644
--- a/indra/newview/skins/default/xui/ru/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/ru/panel_preferences_chat.xml
@@ -1,34 +1,86 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Текстовый чат" name="chat">
-	<text name="font_size">
-		Размер шрифта:
-	</text>
-	<radio_group name="chat_font_size">
-		<radio_item label="Мелкий" name="radio" value="0"/>
-		<radio_item label="Средний" name="radio2" value="1"/>
-		<radio_item label="Крупный" name="radio3" value="2"/>
-	</radio_group>
-	<check_box initial_value="истина" label="Воспроизводить анимацию ввода текста при общении" name="play_typing_animation"/>
-	<check_box label="Отправлять мне сообщения по почте, когда меня нет в сети" name="send_im_to_email"/>
-	<check_box label="Вести журнал текстового IM и чата" name="plain_text_chat_history"/>
-	<check_box label="Чат в пузырьках" name="bubble_text_chat"/>
-	<text name="show_ims_in_label">
-		Показывать сообщения:
-	</text>
-	<text name="requires_restart_label">
-		(требуется перезапуск)
-	</text>
-	<radio_group name="chat_window" tool_tip="Показывать IM-сообщения в отдельных окнах или же в одном окне с несколькими вкладками (требуется перезапуск)">
-		<radio_item label="В отдельных окнах" name="radio" value="0"/>
-		<radio_item label="На вкладках" name="radio2" value="1"/>
-	</radio_group>
-	<text name="disable_toast_label">
-		Включить всплывающие сообщения с новыми репликами в чате:
-	</text>
-	<check_box label="Групповой чат" name="EnableGroupChatPopups" tool_tip="Отображать всплывающие уведомления при появлении сообщений в групповом чате"/>
-	<check_box label="Текстовые чаты" name="EnableIMChatPopups" tool_tip="Отображать всплывающие уведомления при получении IM-сообщений"/>
-	<spinner label="Время отображения всплывающих реплик:" name="nearby_toasts_lifetime"/>
-	<spinner label="Время затухания всплывающих реплик:" name="nearby_toasts_fadingtime"/>
+	<panel>
+		<check_box initial_value="истина" label="Воспроизводить анимацию ввода текста при общении" name="play_typing_animation"/>
+		<check_box label="Отправлять мне сообщения по почте, когда меня нет в сети" name="send_im_to_email"/>
+		<check_box label="Только друзья и группы могут звонить мне и отправлять IM" name="voice_call_friends_only_check"/>
+		<text name="font_size">
+			Размер шрифта:
+		</text>
+		<combo_box name="chat_font_size">
+			<item label="Мелкий" name="Small" value="0"/>
+			<item label="Средний" name="Medium" value="1"/>
+			<item label="Крупный" name="Large" value="2"/>
+		</combo_box>
+		<check_box label="Чат в пузырьках" name="bubble_text_chat"/>
+	</panel>
+	<panel>
+		<text name="notifications">
+			Уведомления
+		</text>
+		<text name="friend_ims">
+			IM друзей:
+		</text>
+		<combo_box name="FriendIMOptions">
+			<item label="Открыть окно разговоров" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Сообщение во всплывающем окне" name="PopUpMessage" value="всплывание"/>
+			<item label="Мигание кнопки на панели инструментов" name="FlashToolbarButton" value="мигание"/>
+			<item label="Нет" name="None" value="нет"/>
+		</combo_box>
+		<text name="non_friend_ims">
+			IM чужих:
+		</text>
+		<combo_box name="NonFriendIMOptions">
+			<item label="Открыть окно разговоров" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Сообщение во всплывающем окне" name="PopUpMessage" value="всплывание"/>
+			<item label="Мигание кнопки на панели инструментов" name="FlashToolbarButton" value="мигание"/>
+			<item label="Нет" name="None" value="нет"/>
+		</combo_box>
+		<text name="conference_ims">
+			IM конференции:
+		</text>
+		<combo_box name="ConferenceIMOptions">
+			<item label="Открыть окно разговоров" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Сообщение во всплывающем окне" name="PopUpMessage" value="всплывание"/>
+			<item label="Мигание кнопки на панели инструментов" name="FlashToolbarButton" value="мигание"/>
+			<item label="Нет" name="None" value="нет"/>
+		</combo_box>
+		<text name="group_chat">
+			Групповой чат:
+		</text>
+		<combo_box name="GroupChatOptions">
+			<item label="Открыть окно разговоров" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Сообщение во всплывающем окне" name="PopUpMessage" value="всплывание"/>
+			<item label="Мигание кнопки на панели инструментов" name="FlashToolbarButton" value="мигание"/>
+			<item label="Нет" name="None" value="нет"/>
+		</combo_box>
+		<text name="nearby_chat">
+			Локальный чат:
+		</text>
+		<combo_box name="NearbyChatOptions">
+			<item label="Открыть окно разговоров" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Сообщение во всплывающем окне" name="PopUpMessage" value="всплывание"/>
+			<item label="Мигание кнопки на панели инструментов" name="FlashToolBarButton" value="мигание"/>
+			<item label="Нет" name="None" value="нет"/>
+		</combo_box>
+		<text name="notifications_alert">
+			Для временного отключения всех уведомлений вызовите меню «Общение &gt; Не беспокоить».
+		</text>
+	</panel>
+	<panel>
+		<text name="play_sound">
+			Звук:
+		</text>
+		<check_box label="Новый разговор" name="new_conversation"/>
+		<check_box label="Входящий голосовой вызов" name="incoming_voice_call"/>
+		<check_box label="Предложение телепортации" name="teleport_offer"/>
+		<check_box label="Предложение инвентаря" name="inventory_offer"/>
+	</panel>
+	<panel>
+		<button label="Очистить журнал..." name="clear_log"/>
+		<button label="Удалить записи..." name="delete_transcripts"/>
+		<button label="Обзор..." label_selected="Обзор" name="log_path_button"/>
+	</panel>
 	<button label="Перевод..." name="ok_btn"/>
 	<button label="Автозамена..." name="autoreplace_showgui"/>
 	<button label="Проверка правописания..." name="spellcheck_showgui"/>
diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_general.xml b/indra/newview/skins/default/xui/ru/panel_preferences_general.xml
index d1bfedf2d85..c7a850f78a1 100644
--- a/indra/newview/skins/default/xui/ru/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/ru/panel_preferences_general.xml
@@ -68,9 +68,9 @@
 		<combo_box.item label="никогда" name="item4"/>
 	</combo_box>
 	<text name="text_box3">
-		Ответ в режиме «Занят»:
+		Ответ в режиме «Не беспокоить»:
 	</text>
-	<text_editor name="busy_response">
+	<text_editor name="do_not_disturb_response">
 		log_in_to_change
 	</text_editor>
 </panel>
diff --git a/indra/newview/skins/default/xui/ru/sidepanel_task_info.xml b/indra/newview/skins/default/xui/ru/sidepanel_task_info.xml
index e9dd3760b5c..5502530ca46 100644
--- a/indra/newview/skins/default/xui/ru/sidepanel_task_info.xml
+++ b/indra/newview/skins/default/xui/ru/sidepanel_task_info.xml
@@ -72,6 +72,7 @@
 			<combo_box.item label="Купить объект" name="Buyobject"/>
 			<combo_box.item label="Заплатить за объект" name="Payobject"/>
 			<combo_box.item label="Открыть" name="Open"/>
+			<combo_box.item label="Приблизить" name="Zoom"/>
 		</combo_box>
 		<panel name="perms_inv">
 			<text name="perm_modify">
diff --git a/indra/newview/skins/default/xui/ru/strings.xml b/indra/newview/skins/default/xui/ru/strings.xml
index f9ded799bff..d7d4df4a37c 100644
--- a/indra/newview/skins/default/xui/ru/strings.xml
+++ b/indra/newview/skins/default/xui/ru/strings.xml
@@ -137,7 +137,7 @@
 		Выйти
 	</string>
 	<string name="create_account_url">
-		http://join.secondlife.com/index.php?lang=ru-RU&amp;sourceid=[sourceid]
+		http://join.secondlife.com/?sourceid=[sourceid]
 	</string>
 	<string name="LoginFailedViewerNotPermitted">
 		У клиента, которым вы пользуетесь, больше нет доступа к игре Second Life. Загрузить новую версию клиента можно по адресу
@@ -619,7 +619,7 @@ support@secondlife.com.
 	<string name="AvatarAway">
 		Нет на месте
 	</string>
-	<string name="AvatarBusy">
+	<string name="AvatarDoNotDisturb">
 		Не беспокоить
 	</string>
 	<string name="AvatarMuted">
@@ -856,6 +856,12 @@ support@secondlife.com.
 	<string name="ST_NO_JOINT">
 		Не удается найти объект ROOT или JOINT.
 	</string>
+	<string name="NearbyChatTitle">
+		Локальный чат
+	</string>
+	<string name="NearbyChatLabel">
+		(Локальный чат)
+	</string>
 	<string name="whisper">
 		шепчет:
 	</string>
@@ -919,12 +925,15 @@ support@secondlife.com.
 	<string name="ControlYourCamera">
 		Управлять камерой
 	</string>
-	<string name="TeleportYourAgent">
-		Телепортировать вас
-	</string>
 	<string name="NotConnected">
 		Нет подключения
 	</string>
+	<string name="AgentNameSubst">
+		(Ð’Ñ‹)
+	</string>
+	<string name="TeleportYourAgent">
+		Телепортировать вас
+	</string>
 	<string name="SIM_ACCESS_PG">
 		Общий
 	</string>
@@ -1006,18 +1015,6 @@ support@secondlife.com.
 	<string name="dictionary_files">
 		Словари
 	</string>
-	<string name="AvatarSetNotAway">
-		На месте
-	</string>
-	<string name="AvatarSetAway">
-		Нет на месте
-	</string>
-	<string name="AvatarSetNotBusy">
-		Не занят(а)
-	</string>
-	<string name="AvatarSetBusy">
-		Не беспокоить
-	</string>
 	<string name="shape">
 		Фигура
 	</string>
@@ -1986,8 +1983,8 @@ support@secondlife.com.
 	<string name="PanelContentsNewScript">
 		Новый скрипт
 	</string>
-	<string name="BusyModeResponseDefault">
-		У адресата вашего сообщения задан статус «Не беспокоить».  Ваше сообщение все равно будет отображено на панели IM для просмотра позже.
+	<string name="DoNotDisturbModeResponseDefault">
+		Этот житель включил режим «Не беспокоить» и увидит ваше сообщение позже.
 	</string>
 	<string name="MuteByName">
 		(по имени)
@@ -2100,9 +2097,6 @@ support@secondlife.com.
 	<string name="GroupMoneyDate">
 		[weekday,datetime,utc], [day,datetime,utc] [mth,datetime,utc] [year,datetime,utc]
 	</string>
-	<string name="ViewerObjectContents">
-		Контент
-	</string>
 	<string name="AcquiredItems">
 		Купленные вещи
 	</string>
@@ -3871,7 +3865,7 @@ support@secondlife.com.
 		Область общей дозволенности
 	</string>
 	<string name="LocationCtrlSeeAVsTooltip">
-		Все жители с других участков могут видеть аватары и общаться в чате
+		Аватары на этом участке невидимы и неслышимы для аватаров с других участков
 	</string>
 	<string name="LocationCtrlPathfindingDirtyTooltip">
 		Возможны неполадки подвижных объектов в этом регионе, пока регион не будет восстановлен.
@@ -3948,6 +3942,12 @@ support@secondlife.com.
 	<string name="IM_unblock_only_groups_friends">
 		Для просмотра этого сообщения снимите флажок «Только друзья и группы могут звонить мне и отправлять IM» в окне «Настройки/Приватность».
 	</string>
+	<string name="OnlineStatus">
+		Онлайн
+	</string>
+	<string name="OfflineStatus">
+		Оффлайн
+	</string>
 	<string name="answered_call">
 		На ваш звонок ответили
 	</string>
@@ -3957,6 +3957,9 @@ support@secondlife.com.
 	<string name="you_joined_call">
 		Вы присоединились к голосовой беседе
 	</string>
+	<string name="you_auto_rejected_call-im">
+		Голосовой вызов автоматически отклонен, так как включен режим «Не беспокоить».
+	</string>
 	<string name="name_started_call">
 		Житель [NAME] начал голосовую беседу
 	</string>
@@ -3973,7 +3976,7 @@ support@secondlife.com.
 		Соединяется...
 	</string>
 	<string name="conference-title">
-		Спонтанная конференция
+		Чат с несколькими участниками
 	</string>
 	<string name="conference-title-incoming">
 		Конференция с жителем [AGENT_NAME]
@@ -4865,6 +4868,9 @@ support@secondlife.com.
 	<string name="Command_Chat_Label">
 		Чат
 	</string>
+	<string name="Command_Conversations_Label">
+		Разговоры
+	</string>
 	<string name="Command_Compass_Label">
 		Компас
 	</string>
@@ -4940,6 +4946,9 @@ support@secondlife.com.
 	<string name="Command_Chat_Tooltip">
 		Обменивайтесь текстовыми репликами с людьми вокруг вас
 	</string>
+	<string name="Command_Conversations_Tooltip">
+		Поговорить со всеми
+	</string>
 	<string name="Command_Compass_Tooltip">
 		Компас
 	</string>
@@ -5069,4 +5078,13 @@ support@secondlife.com.
 	<string name="UserDictionary">
 		[Пользователь]
 	</string>
+	<string name="logging_calls_disabled_log_empty">
+		Разговоры не записываются. Чтобы начать запись разговора, в меню «Настройки &gt; Чат» выберите «Сохранять: только журнал» или «Сохранять: журнал и записи».
+	</string>
+	<string name="logging_calls_disabled_log_not_empty">
+		Разговоры больше не будут записываться. Чтобы восстановить запись разговора, в меню «Настройки &gt; Чат» выберите «Сохранять: только журнал» или «Сохранять: журнал и записи».
+	</string>
+	<string name="logging_calls_enabled_log_empty">
+		Нет зарегистрированных разговоров. Если вы обратитесь к кому-то или наоборот, в журнале появится новая запись.
+	</string>
 </strings>
diff --git a/indra/newview/skins/default/xui/tr/floater_conversation_log.xml b/indra/newview/skins/default/xui/tr/floater_conversation_log.xml
new file mode 100644
index 00000000000..5f8dac506fd
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_conversation_log.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_conversation_log" title="SOHBET GÜNLÜĞÜ">
+	<panel name="buttons_panel">
+		<filter_editor label="KiÅŸileri Filtrele" name="people_filter_input"/>
+		<menu_button name="conversation_view_btn" tool_tip="Gösterme/sıralama seçenekleri"/>
+		<menu_button name="conversations_gear_btn" tool_tip="Seçilen kişi veya grup üzerindeki eylemler"/>
+	</panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_conversation_preview.xml b/indra/newview/skins/default/xui/tr/floater_conversation_preview.xml
new file mode 100644
index 00000000000..84403dfd682
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_conversation_preview.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="preview_conversation" title="KONUÅžMA:">
+	<floater.string name="Title">
+		KONUÅžMA: [NAME]
+	</floater.string>
+	<text name="page_label" value="Sayfa"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_im_container.xml b/indra/newview/skins/default/xui/tr/floater_im_container.xml
index 4451d1d309b..6504430b3cb 100644
--- a/indra/newview/skins/default/xui/tr/floater_im_container.xml
+++ b/indra/newview/skins/default/xui/tr/floater_im_container.xml
@@ -1,2 +1,29 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<multi_floater name="floater_im_box" title="SOHBETLER"/>
+<multi_floater name="floater_im_box" title="SOHBETLER">
+	<string name="collapse_icon" value="Conv_toolbar_collapse"/>
+	<string name="expand_icon" value="Conv_toolbar_expand"/>
+	<layout_stack name="conversations_stack">
+		<layout_panel name="conversations_layout_panel">
+			<layout_stack name="conversations_pane_buttons_stack">
+				<layout_panel name="conversations_pane_buttons_expanded">
+					<menu_button name="sort_btn" tool_tip="Gösterme/sıralama seçenekleri"/>
+					<button name="add_btn" tool_tip="Yeni bir sohbet baÅŸlat"/>
+					<button name="speak_btn" tool_tip="Mikrofonunuzu kullanarak kiÅŸilerle konuÅŸun"/>
+				</layout_panel>
+				<layout_panel name="conversations_pane_buttons_collapsed">
+					<button name="expand_collapse_btn" tool_tip="Bu listeyi Daralt/GeniÅŸlet"/>
+				</layout_panel>
+			</layout_stack>
+		</layout_panel>
+		<layout_panel name="messages_layout_panel">
+			<panel_container name="im_box_tab_container">
+				<panel name="stub_panel">
+					<button name="stub_collapse_btn" tool_tip="Bu panoyu daralt"/>
+					<text name="stub_textbox">
+						Sohbet ayrı bir pencerede.   [secondlife:/// Bunu geri getir.]
+					</text>
+				</panel>
+			</panel_container>
+		</layout_panel>
+	</layout_stack>
+</multi_floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_im_session.xml b/indra/newview/skins/default/xui/tr/floater_im_session.xml
index bed08b36c61..8ce8f0fe13d 100644
--- a/indra/newview/skins/default/xui/tr/floater_im_session.xml
+++ b/indra/newview/skins/default/xui/tr/floater_im_session.xml
@@ -1,8 +1,59 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="panel_im">
-	<layout_stack name="im_panels">
-		<layout_panel>
-			<line_editor label="Kime" name="chat_editor"/>
-		</layout_panel>
-	</layout_stack>
+	<floater.string name="call_btn_start">
+		Conv_toolbar_open_call
+	</floater.string>
+	<floater.string name="call_btn_stop">
+		Conv_toolbar_hang_up
+	</floater.string>
+	<floater.string name="collapseline_icon" value="Conv_collapse_to_one_line"/>
+	<floater.string name="expandline_icon" value="Conv_expand_one_line"/>
+	<floater.string name="collapse_icon" value="Conv_toolbar_collapse"/>
+	<floater.string name="expand_icon" value="Conv_toolbar_expand"/>
+	<floater.string name="tear_off_icon" value="Conv_toolbar_arrow_ne"/>
+	<floater.string name="return_icon" value="Conv_toolbar_arrow_sw"/>
+	<floater.string name="participant_added" value="[NAME] sohbete davet edildi."/>
+	<floater.string name="multiple_participants_added" value="[NAME] sohbete davet edildi."/>
+	<floater.string name="tooltip_to_separate_window" value="Bu sohbeti ayrı bir pencereye taşı"/>
+	<floater.string name="tooltip_to_main_window" value="Bu sohbeti ana pencereye geri taşı"/>
+	<floater.string name="start_call_button_tooltip" value="Ses bağlantısını aç"/>
+	<floater.string name="end_call_button_tooltip" value="Ses bağlantısını kapat"/>
+	<floater.string name="expcol_button_not_tearoff_tooltip" value="Bu panoyu daralt"/>
+	<floater.string name="expcol_button_tearoff_and_expanded_tooltip" value="Katılımcı listesini daralt"/>
+	<floater.string name="expcol_button_tearoff_and_collapsed_tooltip" value="Katılımcı listesini genişlet"/>
+	<view name="contents_view">
+		<layout_stack name="main_stack">
+			<layout_panel name="toolbar_panel">
+				<menu_button name="view_options_btn" tool_tip="Gösterme/sıralama seçenekleri"/>
+				<menu_button name="gear_btn" tool_tip="Seçilen kişi üzerindeki eylemler"/>
+				<button name="add_btn" tool_tip="Bu sohbete birini ekle"/>
+				<button name="voice_call_btn" tool_tip="Ses bağlantısını aç"/>
+				<button name="close_btn" tool_tip="Bu sohbeti bitir"/>
+				<button name="expand_collapse_btn" tool_tip="Bu panoyu Daralt/GeniÅŸlet"/>
+			</layout_panel>
+			<layout_panel name="body_panel">
+				<layout_stack name="im_panels">
+					<layout_panel name="right_part_holder">
+						<panel name="trnsAndChat_panel">
+							<layout_stack name="translate_and_chat_stack">
+								<layout_panel name="translate_chat_checkbox_lp">
+									<check_box label="Sohbeti çevir" name="translate_chat_checkbox"/>
+								</layout_panel>
+							</layout_stack>
+						</panel>
+					</layout_panel>
+				</layout_stack>
+			</layout_panel>
+			<layout_panel name="chat_layout_panel">
+				<layout_stack name="input_panels">
+					<layout_panel name="input_editor_layout_panel">
+						<chat_editor label="Kime" name="chat_editor"/>
+					</layout_panel>
+					<layout_panel name="input_button_layout_panel">
+						<button name="minz_btn" tool_tip="Mesaj panelini gösterir/gizler"/>
+					</layout_panel>
+				</layout_stack>
+			</layout_panel>
+		</layout_stack>
+	</view>
 </floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_incoming_call.xml b/indra/newview/skins/default/xui/tr/floater_incoming_call.xml
index adb03c2dff3..0f2b27241e0 100644
--- a/indra/newview/skins/default/xui/tr/floater_incoming_call.xml
+++ b/indra/newview/skins/default/xui/tr/floater_incoming_call.xml
@@ -10,7 +10,7 @@
 		anonim
 	</floater.string>
 	<floater.string name="VoiceInviteP2P">
-		arıyor.
+		sizi arıyor.
 	</floater.string>
 	<floater.string name="VoiceInviteAdHoc">
 		bir Sesli Sohbet aramasına bir konferans araması ile katıldı.
@@ -25,9 +25,9 @@
 		[CURRENT_CHAT] sohbetinden ayrılıp, bu sesli sohbete katılmak istiyor musunuz?
 	</floater.string>
 	<text name="question">
-		[CURRENT_CHAT] sohbetinden ayrılıp, bu sesli sohbete katılmak istiyor musunuz?
+		Yanıtlarsanız, mevcut sesli sohbetinizle bağlantınız kesilecek.
 	</text>
-	<button label="Kabul Et" label_selected="Kabul Et" name="Accept"/>
-	<button label="Reddet" label_selected="Reddet" name="Reject"/>
-	<button label="AÄ° BaÅŸlat" name="Start IM"/>
+	<button label="Yanıtla" label_selected="Yanıtla" name="Accept"/>
+	<button label="Yok say" label_selected="Yok say" name="Reject"/>
+	<button label="Bunun yerine Aİ aç" name="Start IM"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_pathfinding_console.xml b/indra/newview/skins/default/xui/tr/floater_pathfinding_console.xml
index 6eecc7fb776..35f47e6dfaa 100644
--- a/indra/newview/skins/default/xui/tr/floater_pathfinding_console.xml
+++ b/indra/newview/skins/default/xui/tr/floater_pathfinding_console.xml
@@ -71,7 +71,7 @@
 			<text name="show_label">
 				Göster:
 			</text>
-			<check_box label="Dünya" name="show_world"/>
+			<check_box label="Test" name="show_world"/>
 			<check_box label="Sadece hareket ettirilebilir nesneler" name="show_world_movables_only"/>
 			<check_box label="Navigasyon örgüsü" name="show_navmesh"/>
 			<text name="show_walkability_label">
diff --git a/indra/newview/skins/default/xui/tr/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/tr/floater_texture_ctrl.xml
index 889425f23a0..42483c09e18 100644
--- a/indra/newview/skins/default/xui/tr/floater_texture_ctrl.xml
+++ b/indra/newview/skins/default/xui/tr/floater_texture_ctrl.xml
@@ -19,7 +19,7 @@
 	<button label="Varsayılan" label_selected="Varsayılan" name="Default"/>
 	<button label="BoÅŸ" label_selected="BoÅŸ" name="Blank"/>
 	<button label="Hiçbiri" label_selected="Hiçbiri" name="None"/>
-	<check_box initial_value="true" label="Canlı Önizleme" name="apply_immediate_check"/>
+	<check_box initial_value="true" label="Åžimdi uygula" name="apply_immediate_check"/>
 	<text name="preview_disabled" value="Önizleme Devre Dışı"/>
 	<filter_editor label="Dokuları Filtrele" name="inventory search editor"/>
 	<check_box initial_value="false" label="Klasörleri göster" name="show_folders_check"/>
diff --git a/indra/newview/skins/default/xui/tr/floater_voice_chat_volume.xml b/indra/newview/skins/default/xui/tr/floater_voice_chat_volume.xml
new file mode 100644
index 00000000000..ec350bee60b
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_voice_chat_volume.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_voice_volume" title="SOHBET SES DÃœZEYÄ°">
+	<slider label="Sesli Sohbet" name="chat_voice_volume"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_voice_effect.xml b/indra/newview/skins/default/xui/tr/floater_voice_effect.xml
index 3534a3fe906..7a157244cd6 100644
--- a/indra/newview/skins/default/xui/tr/floater_voice_effect.xml
+++ b/indra/newview/skins/default/xui/tr/floater_voice_effect.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater label="Yerler" name="voice_effects" title="SES ÅžEKÄ°LLENDÄ°RME">
+<floater label="Yerler" name="voice_effects" title="SES ŞEKİLLENDİRME ÖNİZLEMESİ">
 	<string name="no_voice_effect">
 		(Ses Åžekillendirme Yok)
 	</string>
diff --git a/indra/newview/skins/default/xui/tr/floater_voice_volume.xml b/indra/newview/skins/default/xui/tr/floater_voice_volume.xml
new file mode 100644
index 00000000000..acf99d6199c
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_voice_volume.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!--
+  Not can_close / no title to avoid window chrome
+  Single instance - only have one at a time, recycle it each spawn
+-->
+<floater name="floater_voice_volume" title="SES DÃœZEYÄ°">
+	<slider name="volume_slider" tool_tip="Ses düzeyi" value="0.5"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/menu_cof_gear.xml b/indra/newview/skins/default/xui/tr/menu_cof_gear.xml
index f910e1fe910..9480d300298 100644
--- a/indra/newview/skins/default/xui/tr/menu_cof_gear.xml
+++ b/indra/newview/skins/default/xui/tr/menu_cof_gear.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu name="Gear COF">
 	<menu label="Yeni Giysiler" name="COF.Gear.New_Clothes"/>
-	<menu label="Yeni Vücut Bölümleri" name="COF.Geear.New_Body_Parts"/>
+	<menu label="Yeni Vücut Bölümleri" name="COF.Gear.New_Body_Parts"/>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_conversation.xml b/indra/newview/skins/default/xui/tr/menu_conversation.xml
new file mode 100644
index 00000000000..31404f25010
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_conversation.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_conversation_participant">
+	<menu_item_call label="Sohbeti kapat" name="close_conversation"/>
+	<menu_item_call label="Ses sohbetini aç" name="open_voice_conversation"/>
+	<menu_item_call label="Ses bağlantısını kes" name="disconnect_from_voice"/>
+	<menu_item_call label="Profili Göster" name="view_profile"/>
+	<menu_item_call label="AÄ°" name="im"/>
+	<menu_item_call label="Işınlama teklif et" name="offer_teleport"/>
+	<menu_item_call label="Sesli arama" name="voice_call"/>
+	<menu_item_call label="Sohbet geçmişi..." name="chat_history"/>
+	<menu_item_call label="ArkadaÅŸ ekle" name="add_friend"/>
+	<menu_item_call label="Arkadaşı çıkar" name="remove_friend"/>
+	<menu_item_call label="Arkadaşları çıkar" name="remove_friends"/>
+	<menu_item_call label="Gruba davet et..." name="invite_to_group"/>
+	<menu_item_call label="Yakınlaştır" name="zoom_in"/>
+	<menu_item_call label="Harita" name="map"/>
+	<menu_item_call label="PaylaÅŸ" name="share"/>
+	<menu_item_call label="Öde" name="pay"/>
+	<menu_item_check label="Sesi Engelle" name="block_unblock"/>
+	<menu_item_check label="Metni Engelle" name="MuteText"/>
+	<menu_item_call label="Grup Profili" name="group_profile"/>
+	<menu_item_call label="Grubu EtkinleÅŸtir" name="activate_group"/>
+	<menu_item_call label="Gruptan Ayrıl" name="leave_group"/>
+	<context_menu label="Moderatör Seçenekleri" name="Moderator Options">
+		<menu_item_check label="Metin sohbetine izin ver" name="AllowTextChat"/>
+		<menu_item_call label="Bu katılımcıyı engelle" name="ModerateVoiceMuteSelected"/>
+		<menu_item_call label="Bu katılımcının engellemesini kaldır" name="ModerateVoiceUnMuteSelected"/>
+		<menu_item_call label="Herkesi engelle" name="ModerateVoiceMute"/>
+		<menu_item_call label="Herkesin engellemesini kaldır" name="ModerateVoiceUnmute"/>
+	</context_menu>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_conversation_log_gear.xml b/indra/newview/skins/default/xui/tr/menu_conversation_log_gear.xml
new file mode 100644
index 00000000000..9e91780eb81
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_conversation_log_gear.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Conversation Context Menu">
+	<menu_item_call label="AÄ°..." name="IM"/>
+	<menu_item_call label="Sesli arama..." name="Call"/>
+	<menu_item_call label="Sohbet geçmişini aç..." name="Chat history"/>
+	<menu_item_call label="Profili Göster" name="View Profile"/>
+	<menu_item_call label="Işınlama Teklif Et" name="teleport"/>
+	<menu_item_call label="ArkadaÅŸ Ekle" name="add_friend"/>
+	<menu_item_call label="Arkadaşı Çıkar" name="remove_friend"/>
+	<menu_item_call label="Gruba davet et..." name="Invite"/>
+	<menu_item_call label="Harita" name="Map"/>
+	<menu_item_call label="PaylaÅŸ" name="Share"/>
+	<menu_item_call label="Öde" name="Pay"/>
+	<menu_item_check label="Engelle/Engeli Kaldır" name="Block/Unblock"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_conversation_log_view.xml b/indra/newview/skins/default/xui/tr/menu_conversation_log_view.xml
new file mode 100644
index 00000000000..9a77eaadd90
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_conversation_log_view.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_conversation_view">
+	<menu_item_check label="Ada göre sırala" name="sort_by_name"/>
+	<menu_item_check label="Tarihe göre sırala" name="sort_by_date"/>
+	<menu_item_check label="Arkadaşlar üstte olacak şekilde sırala" name="sort_by_friends"/>
+	<menu_item_call label="Yakındaki sohbet geçmişini göster..." name="view_nearby_chat_history"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_im_conversation.xml b/indra/newview/skins/default/xui/tr/menu_im_conversation.xml
new file mode 100644
index 00000000000..3b9738edceb
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_im_conversation.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Conversation Gear Menu">
+	<menu_item_call label="Profili Göster" name="View Profile"/>
+	<menu_item_call label="ArkadaÅŸ Ekle" name="Add Friend"/>
+	<menu_item_call label="Arkadaşı çıkar" name="remove_friend"/>
+	<menu_item_call label="Işınlama teklif et" name="offer_teleport"/>
+	<menu_item_call label="Gruba davet et..." name="invite_to_group"/>
+	<menu_item_call label="Sohbet geçmişi..." name="chat_history"/>
+	<menu_item_call label="Yakınlaştır" name="zoom_in"/>
+	<menu_item_call label="Harita" name="map"/>
+	<menu_item_call label="PaylaÅŸ" name="Share"/>
+	<menu_item_call label="Öde" name="Pay"/>
+	<menu_item_check label="Sesi Engelle" name="Block/Unblock"/>
+	<menu_item_check label="Metni Engelle" name="MuteText"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_im_session_showmodes.xml b/indra/newview/skins/default/xui/tr/menu_im_session_showmodes.xml
new file mode 100644
index 00000000000..c4d4357ac97
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_im_session_showmodes.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_modes">
+	<menu_item_check label="Daraltılmış görünüm" name="compact_view"/>
+	<menu_item_check label="Genişletilmiş görünüm" name="expanded_view"/>
+	<menu_item_check label="Zamanı göster" name="IMShowTime"/>
+	<menu_item_check label="Bire bir sohbetlerde adları göster" name="IMShowNamesForP2PConv"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_object_icon.xml b/indra/newview/skins/default/xui/tr/menu_object_icon.xml
index 34a2661d8af..3d5c68d9d3d 100644
--- a/indra/newview/skins/default/xui/tr/menu_object_icon.xml
+++ b/indra/newview/skins/default/xui/tr/menu_object_icon.xml
@@ -2,4 +2,6 @@
 <menu name="Object Icon Menu">
 	<menu_item_call label="Nesne Profili..." name="Object Profile"/>
 	<menu_item_call label="Engelle..." name="Block"/>
+	<menu_item_call label="Haritada Göster" name="show_on_map"/>
+	<menu_item_call label="Nesne Konumuna Işınla" name="teleport_to_object"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_outfit_gear.xml b/indra/newview/skins/default/xui/tr/menu_outfit_gear.xml
index d2e7e7107aa..674041e9c9b 100644
--- a/indra/newview/skins/default/xui/tr/menu_outfit_gear.xml
+++ b/indra/newview/skins/default/xui/tr/menu_outfit_gear.xml
@@ -23,6 +23,8 @@
 		<menu_item_call label="Yeni Saç" name="New Hair"/>
 		<menu_item_call label="Yeni Gözler" name="New Eyes"/>
 	</menu>
+	<menu_item_call label="Tüm klasörleri genişlet" name="expand"/>
+	<menu_item_call label="Tüm klasörleri daralt" name="collapse"/>
 	<menu_item_call label="Dış Görünümü Yeniden Adlandır" name="rename"/>
 	<menu_item_call label="Dış Görünümü Sil" name="delete_outfit"/>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_participant_view.xml b/indra/newview/skins/default/xui/tr/menu_participant_view.xml
new file mode 100644
index 00000000000..e9411ff350d
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_participant_view.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="participant_manu_view">
+	<menu_item_check label="Sohbetleri türe göre sırala" name="sort_sessions_by_type"/>
+	<menu_item_check label="Sohbetleri ada göre sırala" name="sort_sessions_by_name"/>
+	<menu_item_check label="Sohbetleri son faaliyetlere göre sırala" name="sort_sessions_by_recent"/>
+	<menu_item_check label="Katılımcıları ada göre sırala" name="sort_participants_by_name"/>
+	<menu_item_check label="Katılımcıları son faaliyetlere göre sırala" name="sort_participants_by_recent"/>
+	<menu_item_call label="Sohbet tercihleri..." name="chat_preferences"/>
+	<menu_item_call label="Gizlilik tercihleri..." name="privacy_preferences"/>
+	<menu_item_check label="Sohbet günlüğü..." name="Conversation"/>
+	<menu_item_check label="Yakındaki sohbeti çevir" name="Translate_chat"/>
+	<menu_item_check label="Çeviri ayarları..." name="Translation_settings"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_people_blocked_gear.xml b/indra/newview/skins/default/xui/tr/menu_people_blocked_gear.xml
new file mode 100644
index 00000000000..2bf1101b481
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_people_blocked_gear.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_blocked_gear">
+	<menu_item_call label="Engellemeyi Kaldır" name="unblock"/>
+	<menu_item_call label="Profil..." name="profile"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_people_blocked_plus.xml b/indra/newview/skins/default/xui/tr/menu_people_blocked_plus.xml
new file mode 100644
index 00000000000..a869e2ae7d6
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_people_blocked_plus.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_blocked_plus">
+	<menu_item_call label="Sakini ada göre engelle..." name="block_resident_by_name"/>
+	<menu_item_call label="Nesneyi ada göre engelle" name="block_object_by_name"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_people_blocked_view.xml b/indra/newview/skins/default/xui/tr/menu_people_blocked_view.xml
new file mode 100644
index 00000000000..14b3de3a9fc
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_people_blocked_view.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_blocked_view">
+	<menu_item_check label="Ada göre sırala" name="sort_by_name"/>
+	<menu_item_check label="Türe göre sırala" name="sort_by_type"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_people_friends_view.xml b/indra/newview/skins/default/xui/tr/menu_people_friends_view.xml
new file mode 100644
index 00000000000..609584d6a60
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_people_friends_view.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="Ada Göre Sırala" name="sort_name"/>
+	<menu_item_check label="Duruma Göre Sırala" name="sort_status"/>
+	<menu_item_check label="Kişi Simgelerini Göster" name="view_icons"/>
+	<menu_item_check label="Verilen İzinleri Göster" name="view_permissions"/>
+	<menu_item_check label="Sohbet Günlüğünü Göster..." name="view_conversation"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_people_groups.xml b/indra/newview/skins/default/xui/tr/menu_people_groups.xml
index 9f2946e310a..743b01844d1 100644
--- a/indra/newview/skins/default/xui/tr/menu_people_groups.xml
+++ b/indra/newview/skins/default/xui/tr/menu_people_groups.xml
@@ -2,7 +2,7 @@
 <menu name="menu_group_plus">
 	<menu_item_call label="Bilgileri Görüntüle" name="View Info"/>
 	<menu_item_call label="Sohbet" name="Chat"/>
-	<menu_item_call label="Ara" name="Call"/>
+	<menu_item_call label="Sesli arama" name="Call"/>
 	<menu_item_call label="EtkinleÅŸtir" name="Activate"/>
 	<menu_item_call label="Ayrıl" name="Leave"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_people_groups_view.xml b/indra/newview/skins/default/xui/tr/menu_people_groups_view.xml
new file mode 100644
index 00000000000..e550b20addd
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_people_groups_view.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="Grup Simgelerini Göster" name="Display Group Icons"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_people_nearby.xml b/indra/newview/skins/default/xui/tr/menu_people_nearby.xml
index ee859a9450d..2d61461c919 100644
--- a/indra/newview/skins/default/xui/tr/menu_people_nearby.xml
+++ b/indra/newview/skins/default/xui/tr/menu_people_nearby.xml
@@ -1,13 +1,16 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Avatar Context Menu">
-	<menu_item_call label="Profili Göster" name="View Profile"/>
-	<menu_item_call label="ArkadaÅŸ Ekle" name="Add Friend"/>
-	<menu_item_call label="Arkadaşı Çıkar" name="Remove Friend"/>
-	<menu_item_call label="AÄ°" name="IM"/>
-	<menu_item_call label="Ara" name="Call"/>
-	<menu_item_call label="Harita" name="Map"/>
-	<menu_item_call label="PaylaÅŸ" name="Share"/>
-	<menu_item_call label="Öde" name="Pay"/>
-	<menu_item_check label="Engelle/Engeli Kaldır" name="Block/Unblock"/>
-	<menu_item_call label="Işınlama Teklif Et" name="teleport"/>
+	<menu_item_call label="Profili Göster" name="view_profile"/>
+	<menu_item_call label="AÄ°" name="im"/>
+	<menu_item_call label="Işınlama Teklif Et" name="offer_teleport"/>
+	<menu_item_call label="Sesli arama" name="voice_call"/>
+	<menu_item_call label="Sohbet geçmişini göster..." name="chat_history"/>
+	<menu_item_call label="ArkadaÅŸ Ekle" name="add_friend"/>
+	<menu_item_call label="Arkadaşı Çıkar" name="remove_friend"/>
+	<menu_item_call label="Gruba davet et..." name="invite_to_group"/>
+	<menu_item_call label="Yakınlaştır" name="zoom_in"/>
+	<menu_item_call label="Harita" name="map"/>
+	<menu_item_call label="PaylaÅŸ" name="share"/>
+	<menu_item_call label="Öde" name="pay"/>
+	<menu_item_check label="Engelle/Engeli Kaldır" name="block_unblock"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/tr/menu_people_nearby_multiselect.xml
index 5c89f87906c..20695d98e8d 100644
--- a/indra/newview/skins/default/xui/tr/menu_people_nearby_multiselect.xml
+++ b/indra/newview/skins/default/xui/tr/menu_people_nearby_multiselect.xml
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Multi-Selected People Context Menu">
-	<menu_item_call label="ArkadaÅŸ Ekle" name="Add Friends"/>
-	<menu_item_call label="Arkadaşı Çıkar" name="Remove Friend"/>
-	<menu_item_call label="AÄ°" name="IM"/>
-	<menu_item_call label="Ara" name="Call"/>
-	<menu_item_call label="PaylaÅŸ" name="Share"/>
-	<menu_item_call label="Öde" name="Pay"/>
-	<menu_item_call label="Işınlama Teklif Et" name="teleport"/>
+	<menu_item_call label="ArkadaÅŸ Ekle" name="add_friends"/>
+	<menu_item_call label="Arkadaşı Çıkar" name="remove_friends"/>
+	<menu_item_call label="AÄ°" name="im"/>
+	<menu_item_call label="Ara" name="call"/>
+	<menu_item_call label="PaylaÅŸ" name="share"/>
+	<menu_item_call label="Öde" name="pay"/>
+	<menu_item_call label="Işınlama Teklif Et" name="offer_teleport"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_people_nearby_view.xml b/indra/newview/skins/default/xui/tr/menu_people_nearby_view.xml
new file mode 100644
index 00000000000..59ea7c145f6
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_people_nearby_view.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="Son Konuşanlara Göre Sırala" name="sort_by_recent_speakers"/>
+	<menu_item_check label="Ada Göre Sırala" name="sort_name"/>
+	<menu_item_check label="Mesafeye Göre Sırala" name="sort_distance"/>
+	<menu_item_check label="Kişi Simgelerini Göster" name="view_icons"/>
+	<menu_item_check label="Haritayı Göster" name="view_map"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_people_recent_view.xml b/indra/newview/skins/default/xui/tr/menu_people_recent_view.xml
new file mode 100644
index 00000000000..02be715ed2c
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_people_recent_view.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="En Sonunculara Göre Sırala" name="sort_most"/>
+	<menu_item_check label="Ada Göre Sırala" name="sort_name"/>
+	<menu_item_check label="Kişi Simgelerini Göster" name="view_icons"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_url_agent.xml b/indra/newview/skins/default/xui/tr/menu_url_agent.xml
index d82b52aea80..b14a0509bfe 100644
--- a/indra/newview/skins/default/xui/tr/menu_url_agent.xml
+++ b/indra/newview/skins/default/xui/tr/menu_url_agent.xml
@@ -1,6 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Url Popup">
-	<menu_item_call label="Sakin Profilini Göster" name="show_agent"/>
+	<menu_item_call label="Profili Göster" name="show_agent"/>
+	<menu_item_call label="Aİ Gönder..." name="send_im"/>
+	<menu_item_call label="ArkadaÅŸ Ekle..." name="add_friend"/>
 	<menu_item_call label="Adı panoya kopyala" name="url_copy_label"/>
 	<menu_item_call label="SLurl&apos;yi Panoya Kopyala" name="url_copy"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_url_objectim.xml b/indra/newview/skins/default/xui/tr/menu_url_objectim.xml
index d55e34c11c3..00fa3c27c2e 100644
--- a/indra/newview/skins/default/xui/tr/menu_url_objectim.xml
+++ b/indra/newview/skins/default/xui/tr/menu_url_objectim.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Url Popup">
-	<menu_item_call label="Nesne Bilgilerini Göster" name="show_object"/>
+	<menu_item_call label="Nesne Profili..." name="show_object"/>
 	<menu_item_call label="Haritada Göster" name="show_on_map"/>
 	<menu_item_call label="Nesne Konumuna Işınla" name="teleport_to_object"/>
 	<menu_item_call label="Nesne Adını panoya kopyala" name="url_copy_label"/>
diff --git a/indra/newview/skins/default/xui/tr/menu_viewer.xml b/indra/newview/skins/default/xui/tr/menu_viewer.xml
index 7a7faf6ac4b..c465966fc7e 100644
--- a/indra/newview/skins/default/xui/tr/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/tr/menu_viewer.xml
@@ -16,10 +16,7 @@
 			<menu_item_call label="Beni Anime Etmeyi Durdur" name="Stop Animating My Avatar"/>
 			<menu_item_call label="Yürü / koş / uç..." name="Walk / run / fly"/>
 		</menu>
-		<menu label="Durum" name="Status">
-			<menu_item_call label="Uzakta" name="Set Away"/>
-			<menu_item_call label="MeÅŸgul" name="Set Busy"/>
-		</menu>
+		<menu label="Durum" name="Status"/>
 		<menu_item_call label="L$ Satın Al..." name="Buy and Sell L$"/>
 		<menu_item_call label="Satıcı Giden Kutusu..." name="MerchantOutbox"/>
 		<menu_item_call label="Hesap kontrol paneli..." name="Manage My Account"/>
@@ -30,14 +27,18 @@
 		<menu_item_call label="[APP_NAME]&apos;den Çık" name="Quit"/>
 	</menu>
 	<menu label="Ä°letiÅŸim Kur" name="Communicate">
-		<menu_item_check label="Sohbet..." name="Nearby Chat"/>
+		<menu_item_check label="Sohbetler..." name="Conversations"/>
+		<menu_item_check label="Yakındaki Sohbet..." name="Nearby Chat"/>
 		<menu_item_check label="KonuÅŸ" name="Speak"/>
-		<menu_item_check label="Ses ayarları..." name="Nearby Voice"/>
-		<menu_item_check label="Ses ÅŸekillendirme..." name="ShowVoice"/>
+		<menu label="Ses ÅŸekillendirme" name="VoiceMorphing">
+			<menu_item_check label="Ses ÅŸekillendirme yok" name="NoVoiceMorphing"/>
+			<menu_item_check label="Önizleme..." name="Preview"/>
+			<menu_item_call label="Abone ol..." name="Subscribe"/>
+		</menu>
 		<menu_item_check label="Mimikler..." name="Gestures"/>
-		<menu_item_call label="ArkadaÅŸlar" name="My Friends"/>
-		<menu_item_call label="Gruplar" name="My Groups"/>
-		<menu_item_call label="Yakındaki kişiler" name="Active Speakers"/>
+		<menu_item_check label="ArkadaÅŸlar" name="My Friends"/>
+		<menu_item_check label="Gruplar" name="My Groups"/>
+		<menu_item_check label="Yakındaki kişiler" name="Active Speakers"/>
 		<menu_item_call label="Engelleme Listesi" name="Block List"/>
 	</menu>
 	<menu label="Dünya" name="World">
@@ -113,7 +114,6 @@
 			<menu_item_call label="Satın Al" name="Menu Object Buy"/>
 			<menu_item_call label="Al" name="Menu Object Take"/>
 			<menu_item_call label="Kopya Al" name="Take Copy"/>
-			<menu_item_call label="Envanterime Geri Kaydet" name="Save Object Back to My Inventory"/>
 			<menu_item_call label="Nesne İçeriklerine Geri Kaydet" name="Save Object Back to Object Contents"/>
 			<menu_item_call label="Nesneyi Ä°ade Et" name="Return Object back to Owner"/>
 		</menu>
@@ -128,6 +128,7 @@
 			<menu_item_call label="Bağlantı kümeleri..." name="pathfinding_linksets_menu_item"/>
 			<menu_item_call label="Karakterler..." name="pathfinding_characters_menu_item"/>
 			<menu_item_call label="Görüntüleme / test..." name="pathfinding_console_menu_item"/>
+			<menu_item_call label="Bölgeyi tekrar kaydet" name="pathfinding_rebake_navmesh_item"/>
 		</menu>
 		<menu label="Seçenklr." name="Options">
 			<menu_item_check label="Gelişmiş İzinleri Göster" name="DebugPermissions"/>
@@ -157,6 +158,13 @@
 	<menu label="Yardım" name="Help">
 		<menu_item_call label="Nasıl yapılır..." name="How To"/>
 		<menu_item_call label="[SECOND_LIFE] Yardımı" name="Second Life Help"/>
+		<menu_item_call label="Kullanıcı kılavuzu" name="User’s guide"/>
+		<menu_item_call label="Bilgi Bankası" name="Knowledge Base"/>
+		<menu_item_call label="Wiki" name="Wiki"/>
+		<menu_item_call label="Topluluk Forumları" name="Community Forums"/>
+		<menu_item_call label="Destek portalı" name="Support portal"/>
+		<menu_item_call label="[SECOND_LIFE] Haberleri" name="Second Life News"/>
+		<menu_item_call label="[SECOND_LIFE] Blogları" name="Second Life Blogs"/>
 		<menu_item_call label="Kötüye Kullanımı Bildir" name="Report Abuse"/>
 		<menu_item_call label="Hata Bildir" name="Report Bug"/>
 		<menu_item_call label="[APP_NAME] Hakkında" name="About Second Life"/>
@@ -383,9 +391,14 @@
 				<menu_item_call label="Test DiÅŸisi" name="Test Female"/>
 				<menu_item_check label="Avatar Seçimine İzin Ver" name="Allow Select Avatar"/>
 			</menu>
+			<menu label="Animasyon Hızı" name="Animation Speed">
+				<menu_item_call label="Tüm Animasyonlar %10 Daha Hızlı" name="All Animations 10 Faster"/>
+				<menu_item_call label="Tüm Animasyonlar %10 Daha Yavaş" name="All Animations 10 Slower"/>
+				<menu_item_call label="Tüm Animasyon Hızlarını Sıfırla" name="Reset All Animation Speed"/>
+				<menu_item_check label="Yavaş Hareket Animasyonları" name="Slow Motion Animations"/>
+			</menu>
 			<menu_item_call label="Parametreleri Varsayılana Zorla" name="Force Params to Default"/>
 			<menu_item_check label="Animasyon Bilgisi" name="Animation Info"/>
-			<menu_item_check label="Yavaş Hareket Animasyonları" name="Slow Motion Animations"/>
 			<menu_item_check label="Şuraya Bak&apos;ı Göster" name="Show Look At"/>
 			<menu_item_check label="Şuraya İşaret Et&apos;i Göster" name="Show Point At"/>
 			<menu_item_check label="Eklem Güncelleştirmeleri İçin Hata Ayıklama" name="Debug Joint Updates"/>
diff --git a/indra/newview/skins/default/xui/tr/notifications.xml b/indra/newview/skins/default/xui/tr/notifications.xml
index 488702f9caa..ad92a4b478d 100644
--- a/indra/newview/skins/default/xui/tr/notifications.xml
+++ b/indra/newview/skins/default/xui/tr/notifications.xml
@@ -516,6 +516,24 @@ Daha fazla bilgi için [_URL] adresini ziyaret etmek ister misiniz?
 		</url>
 		<usetemplate ignoretext="Grafik sürücüm güncel değil" name="okcancelignore" notext="Hayır" yestext="Evet"/>
 	</notification>
+	<notification name="AMDOldDriver">
+		Grafik yonganız için muhtemelen daha yeni bir sürücü mevcut.  Grafik sürücüleri güncellemek performansınızı kayda değer şekilde artırabilir.
+
+    Sürücü güncellemeleri için [_URL] adresini ziyaret etmek ister misiniz?
+		<url name="url">
+			http://support.amd.com/us/Pages/AMDSupportHub.aspx
+		</url>
+		<usetemplate ignoretext="Grafik sürücüm güncel değil" name="okcancelignore" notext="Hayır" yestext="Evet"/>
+	</notification>
+	<notification name="NVIDIAOldDriver">
+		Grafik yonganız için muhtemelen daha yeni bir sürücü mevcut.  Grafik sürücüleri güncellemek performansınızı kayda değer şekilde artırabilir.
+
+    Sürücü güncellemeleri için [_URL] adresini ziyaret etmek ister misiniz?
+		<url name="url">
+			http://www.nvidia.com/Download/index.aspx?lang=en-us
+		</url>
+		<usetemplate ignoretext="Grafik sürücüm güncel değil" name="okcancelignore" notext="Hayır" yestext="Evet"/>
+	</notification>
 	<notification name="UnknownGPU">
 		Sisteminiz [APP_NAME] uygulamasının tanımadığı bir grafik kartı içeriyor.
 Bu durum genellikle [APP_NAME] uygulaması ile henüz denenmemiş yeni donanımlar kullanıldığında ortaya çıkar.  Büyük olasılıkla bir sorun çıkmayacaktır, fakat grafik ayarlarınızı değiştirmeniz gerekebilir.
@@ -1546,10 +1564,13 @@ Gruptan ayrılmak istiyor musunuz?
 		Şu anda arkadaşlık teklif edilemiyor. Lütfen biraz sonra tekrar deneyin.
 		<usetemplate name="okbutton" yestext="Tamam"/>
 	</notification>
-	<notification name="BusyModeSet">
-		Durumunuz Meşgul olarak ayarlandı.
-Sohbet ve anlık iletiler gizlenecek. Anlık iletilere Meşgul durumu için belirlediğiniz yanıt gönderilecek. Tüm ışınlanma teklifleri reddedilecek. Tüm envanter teklifleri Çöp Kutunuza gidecek.
-		<usetemplate ignoretext="Durumumu MeÅŸgul olarak deÄŸiÅŸtiriyorum" name="okignore" yestext="Tamam"/>
+	<notification name="DoNotDisturbModeSet">
+		Rahatsız Etme açık.  Gelen iletişimlerle ilgili size bilgi verilmeyecek.
+
+- Diğer sakinlere sizin Rahatsız Etmeyin yanıtı iletilecektir (Tercihler &gt; Genel içerisinde ayarlanır).
+- Işınlanma teklifleri reddedilecektir.
+- Sesli aramalar reddedilecektir.
+		<usetemplate ignoretext="Durumumu Rahatsız Etme moduna değiştiriyorum" name="okignore" yestext="Tamam"/>
 	</notification>
 	<notification name="JoinedTooManyGroupsMember">
 		Maksimum grup sayısına eriştiniz. Lütfen bu gruba katılmadan önce başka bir gruptan ayrılın ya da bu teklifi reddedin.
@@ -2033,6 +2054,10 @@ Envanter öğesi/öğeleri taşınsın mı?
 		Hesap geçmişinizi görüntülemek için [http://secondlife.com/account/ Kontrol Paneli] adresine gitmek istiyor musunuz?
 		<usetemplate ignoretext="Hesap geçmişimi görüntülemek için tarayıcımı başlat" name="okcancelignore" notext="İptal" yestext="Sayfaya git"/>
 	</notification>
+	<notification name="ConfirmAddingChatParticipants">
+		Mevcut bir sohbete bir kişi eklediğinizde yeni bir sohbet oluşturulur.  Tüm katılımcılara yeni sohbet bildirimi gönderilir.
+		<usetemplate ignoretext="Sohbet katılımcılarının eklenmesini doğrula" name="okcancelignore" notext="İptal" yestext="Tamam"/>
+	</notification>
 	<notification name="ConfirmQuit">
 		Çıkmak istediğinize emin misiniz?
 		<usetemplate ignoretext="Çıkmadan önce doğrulama iste" name="okcancelignore" notext="Çıkma" yestext="Çık"/>
@@ -2107,14 +2132,14 @@ Bu nesneyi seçilen nesne ile değiştirmek istiyor musunuz?
 			<button ignore="Hiçbir Zaman Değiştirme" name="No" text="İptal"/>
 		</form>
 	</notification>
-	<notification label="Meşgul Durumu Uyarısı" name="BusyModePay">
-		Durumunuz Meşgul olarak ayarlanmış; bu da, bu ödemenin karşılığında teklif edilen hiçbir öğeyi almayacağınız anlamına gelir.
+	<notification label="Rahatsız Etme Modu Uyarısı" name="DoNotDisturbModePay">
+		Rahatsız Etme seçeneğini devreye aldınız. Bu ödemenin karşılığında sunulan hiçbir öğeyi almayacaksınız.
 
-Bu işlemi tamamlamadan önce Meşgul durumundan çıkmak ister misiniz?
+Bu işlemi tamamlamadan önce Rahatsız Etme&apos;yi kapatmak ister misiniz?
 		<form name="form">
-			<ignore name="ignore" text="Meşgul durumundayken bir kişiye veya bir nesneye ödeme yapmak üzereyim."/>
-			<button ignore="Her zaman Meşgul durumundan çık" name="Yes" text="Tamam"/>
-			<button ignore="Hiçbir zaman Meşgul durumundan çıkma" name="No" text="İptal"/>
+			<ignore name="ignore" text="Rahatsız Etmeyin modundayken bir kişiye veya bir nesneye ödeme yapmak üzereyim"/>
+			<button ignore="Rahatsız Etme Modundan daima çıkılsın" name="Yes" text="Tamam"/>
+			<button ignore="Rahatsız Etme Modundan asla çıkılmasın" name="No" text="İptal"/>
 		</form>
 	</notification>
 	<notification name="ConfirmDeleteProtectedCategory">
@@ -2249,11 +2274,8 @@ Diğer kişilerin bu konuma kolayca erişmesini sağlamak için bu adrese bir we
 	<notification name="GroupNotice">
 		Konu: [SUBJECT], Ä°leti: [MESSAGE]
 	</notification>
-	<notification name="FriendOnline">
-		&lt;nolink&gt;[NAME]&lt;/nolink&gt; çevrimiçi
-	</notification>
-	<notification name="FriendOffline">
-		&lt;nolink&gt;[NAME]&lt;/nolink&gt; çevrimdışı
+	<notification name="FriendOnlineOffline">
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; durumu: [STATUS]
 	</notification>
 	<notification name="AddSelfFriend">
 		Çok iyi biri olduğunuza eminiz fakat kendinizi arkadaş olarak ekleyemezsiniz.
@@ -2482,13 +2504,6 @@ Burada uçamazsınız.
 	<notification name="DynamicPathfindingDisabled">
 		Bu bölgede dinamik yol bulma etkin değil.  Yol bulma LSL çağrılarını kullanan komut dosyalı nesneler, bu bölgede beklendiiği gibi çalışmayabilir.
 	</notification>
-	<notification name="PathfindingRebakeNavmesh">
-		Bu bölgede belirli diğer nesneleri değiştirmek, hareket eden başka nesnelerin yanlış davranmasına neden olabilir.  Hareket eden başka nesnelerin doğru davranmasını sağlamak için “Bölgeyi yeniden kaydet” düğmesine tıklayın.  Daha fazla bilgi edinmek için “Yardım” seçimini yapın.
-		<url name="url">
-			http://wiki.secondlife.com/wiki/Pathfinding_Tools_in_the_Second_Life_Viewer
-		</url>
-		<usetemplate helptext="Yardım" ignoretext="Bu bölgede belirli diğer nesneleri değiştirmek, hareket eden başka nesnelerin yanlış davranmasına neden olabilir." name="okhelpignore" yestext="Tamam"/>
-	</notification>
 	<notification name="PathfindingCannotRebakeNavmesh">
 		Bir hata meydana geldi.  Bir ağ veya sunucu sorunu olabilir ya da oluşturma haklarına sahip olmayabilirsiniz.  Bazen oturumu kapatıp, tekrar açmak bu sorunu çözer.
 		<usetemplate name="okbutton" yestext="Tamam"/>
@@ -2751,7 +2766,7 @@ Kabul ediyor musunuz?
 	<notification name="ScriptQuestionCaution">
 		Uyarı: &apos;&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;&apos; nesnesi, Linden Dolar hesabınıza tam erişim istiyor. Eğer erişime izin verirseniz, süregelen bir şekilde, ilave uyarı olmaksızın, hesabınızdan herhangi bir zamanda fon çekebilir veya hesabınızı tamamen boşaltabilir.
   
-Bu türden bir talebin yerinde olması nadir bir durumdur. Eğer hesabınıza neden erişmek istediğini tam olarak anlamıyorsanız, erişime izin vermeyin.
+Eğer hesabınıza neden erişmek istediğini tam olarak anlamıyorsanız, erişime izin vermeyin.
 		<form name="form">
 			<button name="Grant" text="Tam eriÅŸime izin ver"/>
 			<button name="Deny" text="Reddet"/>
@@ -3333,4 +3348,626 @@ GiriÅŸim iptal edildi.
 		[NUM_ITEMS] öğeyi siliyorsunuz.  Devam etmek istediğinize emin misiniz?
 		<usetemplate ignoretext="Birden çok öğeyi silmek istediğinize emin misiniz?" name="okcancelignore" notext="Hayır" yestext="Evet"/>
 	</notification>
+	<notification name="AvatarFrozen">
+		[AV_FREEZER] sizi dondurdu. Hareket edemez veya dünyayla etkileşim kuramazsınız.
+	</notification>
+	<notification name="AvatarFrozenDuration">
+		[AV_FREEZER] sizi [AV_FREEZE_TIME] saniye boyunca dondurdu. Hareket edemez veya dünyayla etkileşim kuramazsınız.
+	</notification>
+	<notification name="YouFrozeAvatar">
+		Avatar donduruldu.
+	</notification>
+	<notification name="AvatarHasUnFrozenYou">
+		[AV_FREEZER] sizin dondurulmanızı kaldırdı.
+	</notification>
+	<notification name="AvatarUnFrozen">
+		Avatar artık dondurulmuş değil.
+	</notification>
+	<notification name="AvatarFreezeFailure">
+		Dondurma başarılamadı çünkü bu parsel için yönetici iznine sahip değilsiniz.
+	</notification>
+	<notification name="AvatarFreezeThaw">
+		Dondurmanızın süresi sona erdi, istediğinizi yapabilirsiniz.
+	</notification>
+	<notification name="AvatarCantFreeze">
+		Üzgünüz, bu kullanıcı dondurulamaz.
+	</notification>
+	<notification name="NowOwnObject">
+		Artık [OBJECT_NAME] nesnesinin sahibisiniz
+	</notification>
+	<notification name="CantRezOnLand">
+		[OBJECT_POS] konumunda nesneyi oluşturamazsınız çünkü bu arazinin sahibi buna izin vermiyor.  Arazinin sahibini görmek için arazi aracını kullanın.
+	</notification>
+	<notification name="RezFailTooManyRequests">
+		Çok fazla talep olduğu için nesne oluşturulamadı.
+	</notification>
+	<notification name="SitFailCantMove">
+		Oturamazsınız çünkü şu anda hareket edemezsiniz.
+	</notification>
+	<notification name="SitFailNotAllowedOnLand">
+		Oturamazsınız çünkü bu araziye girme izniniz yok.
+	</notification>
+	<notification name="SitFailNotSameRegion">
+		Daha yakına gelmeyi deneyin.  Nesne sizinle aynı bölgede olmadığı için nesnenin üzerine oturulamaz.
+	</notification>
+	<notification name="NoNewObjectRegionFull">
+		Yeni nesne oluşturulamıyor. Bölge dolu.
+	</notification>
+	<notification name="FailedToPlaceObject">
+		Belirtilen konuma nesne yerleştirilemedi.  Lütfen tekrar deneyin.
+	</notification>
+	<notification name="NoOwnNoGardening">
+		Sahibi olmadığınız arazide ağaçlar ve çimen oluşturamazsınız.
+	</notification>
+	<notification name="NoCopyPermsNoObject">
+		&apos;[OBJ_NAME]&apos; nesnesini kopyalama izniniz olmadığı için kopyalama başarılamadı.
+	</notification>
+	<notification name="NoTransPermsNoObject">
+		&apos;[OBJ_NAME]&apos; nesnesi size aktarılamadığı için kopyalama başarılamadı.
+	</notification>
+	<notification name="AddToNavMeshNoCopy">
+		&apos;[OBJ_NAME]&apos; nesnesi navmesh&apos;e katkıda bulunduğu için kopyalama başarılamadı.
+	</notification>
+	<notification name="DupeWithNoRootsSelected">
+		Kök nesne seçili olmayan kopya.
+	</notification>
+	<notification name="CantDupeCuzRegionIsFull">
+		Nesneler çoğaltılamıyor çünkü bölge dolu.
+	</notification>
+	<notification name="CantDupeCuzParcelNotFound">
+		Nesneler çoğaltılamadı - Üzerinde oldukları parsel bulunamadı.
+	</notification>
+	<notification name="CantCreateCuzParcelFull">
+		Nesne oluşturulamıyor çünkü
+parsel dolu.
+	</notification>
+	<notification name="RezAttemptFailed">
+		Bir nesneyi oluşturma girişimi başarısız oldu.
+	</notification>
+	<notification name="ToxicInvRezAttemptFailed">
+		Bu bölgede hatalara yol açmış olan öğe oluşturulamıyor.
+	</notification>
+	<notification name="InvItemIsBlacklisted">
+		Bu envanter öğesi kara listeye alınmış.
+	</notification>
+	<notification name="NoCanRezObjects">
+		Şu anda nesne oluşturmanıza izin verilmiyor.
+	</notification>
+	<notification name="LandSearchBlocked">
+		Arazi Arama Engellendi.
+Çok fazla sayıda arazi aramasını çok hızlı gerçekleştirdiniz.
+Lütfen bir dakika sonra tekrar deneyin.
+	</notification>
+	<notification name="NotEnoughResourcesToAttach">
+		Nesneyi iliştirmek için yeterli komut dosyası kaynağı mevcut değil!
+	</notification>
+	<notification name="YouDiedAndGotTPHome">
+		Hayatınızı kaybettiniz ve ana konumunuza ışınlandınız
+	</notification>
+	<notification name="EjectComingSoon">
+		Daha fazla burada olma izniniz yok ve ayrılmak için [EJECT_TIME] saniyeniz var.
+	</notification>
+	<notification name="NoEnterServerFull">
+		Bu bölgeye giremezsiniz çünkü 
+sunucu dolu.
+	</notification>
+	<notification name="SaveBackToInvDisabled">
+		Envantere Geri Kaydet devre dışı bırakıldı.
+	</notification>
+	<notification name="NoExistNoSaveToContents">
+		&apos;[OBJ_NAME]&apos; nesne içeriğine kaydedilemedi, çünkü oluşturulurken temel alınan nesne artık mevcut değil.
+	</notification>
+	<notification name="NoModNoSaveToContents">
+		&apos;[DEST_NAME]&apos; nesnesini değiştirme izniniz olmadığı için &apos;[OBJ_NAME]&apos; nesne içeriğine kaydedilemedi.
+	</notification>
+	<notification name="NoSaveBackToInvDisabled">
+		&apos;[OBJ_NAME]&apos; envantere geri kaydedilemez -- bu işlem devre dışı bırakıldı.
+	</notification>
+	<notification name="NoCopyNoSelCopy">
+		&apos;[OBJ_NAME]&apos; nesnesini kopyalama izniniz olmadığı için seçiminizi kopyalamayazsınız.
+	</notification>
+	<notification name="NoTransNoSelCopy">
+		&apos;[OBJ_NAME]&apos; nesnesi aktarılamaz olduğu için seçiminizi kopyalayamazsınız.
+	</notification>
+	<notification name="NoTransNoCopy">
+		&apos;[OBJ_NAME]&apos; nesnesi aktarılamaz olduğu için seçiminizi kopyalayamazsınız.
+	</notification>
+	<notification name="NoPermsNoRemoval">
+		Benzeticiden &apos;[OBJ_NAME]&apos; nesnesinin kaldırılmasına izinler sistemi izin vermiyor.
+	</notification>
+	<notification name="NoModNoSaveSelection">
+		&apos;[OBJ_NAME]&apos; nesnesini değiştirme izniniz olmadığı için seçiminizi kaydedemezsiniz.
+	</notification>
+	<notification name="NoCopyNoSaveSelection">
+		&apos;[OBJ_NAME]&apos; nesnesi kopyalanamaz olduğu için seçiminizi kaydedemezsiniz.
+	</notification>
+	<notification name="NoModNoTaking">
+		&apos;[OBJ_NAME]&apos; nesnesini değiştirme izniniz olmadığı için seçiminizi alamazsınız.
+	</notification>
+	<notification name="RezDestInternalError">
+		Dahili Hata: Bilinmeyen hedef türü.
+	</notification>
+	<notification name="DeleteFailObjNotFound">
+		Nesne bulunamadığı için silme başarılamadı
+	</notification>
+	<notification name="SorryCantEjectUser">
+		Üzgünüz, bu kullanıcı çıkartılamaz.
+	</notification>
+	<notification name="RegionSezNotAHome">
+		Bu bölge, ana konumunuzu buraya kurmanıza izin vermiyor.
+	</notification>
+	<notification name="HomeLocationLimits">
+		&apos;Ana Konum&apos;unuzu sadece arazinizde veya anakarada bir Bilgi Ä°stasyonu&apos;nda ayarlayabilirsiniz.
+	</notification>
+	<notification name="HomePositionSet">
+		Ana konum ayarlandı.
+	</notification>
+	<notification name="AvatarEjected">
+		Avatar çıkartıldı.
+	</notification>
+	<notification name="AvatarEjectFailed">
+		Çıkarma başarılamadı çünkü bu parsel için yönetici iznine sahip değilsiniz.
+	</notification>
+	<notification name="CantMoveObjectParcelFull">
+		[REGION_NAME] bölgesinde &apos;[OBJECT_NAME]&apos; nesnesi [OBJ_POSITION] konumuna hareket ettirilemiyor çünkü parsel dolu.
+	</notification>
+	<notification name="CantMoveObjectParcelPerms">
+		[REGION_NAME] bölgesinde &apos;[OBJECT_NAME]&apos; nesnesi [OBJ_POSITION] konumuna hareket ettirilemiyor çünkü bu parselde nesnelerinize izin verilmiyor.
+	</notification>
+	<notification name="CantMoveObjectParcelResources">
+		[REGION_NAME] bölgesinde &apos;[OBJECT_NAME]&apos; nesnesi [OBJ_POSITION] konumuna hareket ettirilemiyor, çünkü bu parselde bu nesne için yeterli kaynak yok.
+	</notification>
+	<notification name="CantMoveObjectRegionVersion">
+		[REGION_NAME] bölgesinde &apos;[OBJECT_NAME]&apos; nesnesi [OBJ_POSITION] konumuna hareket ettirilemiyor çünkü bölgede çalıştırılan eski versiyon, bölge değiştirme üzerinden bu nesnenin alınmasını desteklemiyor.
+	</notification>
+	<notification name="CantMoveObjectNavMesh">
+		[REGION_NAME] bölgesinde &apos;[OBJECT_NAME]&apos; nesnesi [OBJ_POSITION] konumuna hareket ettirilemiyor çünkü navmesh&apos;i bölge sınırları ötesinde değiştiremezsiniz.
+	</notification>
+	<notification name="CantMoveObjectWTF">
+		Bilinmeyen bir nedenden ötürü [REGION_NAME] bölgesinde &apos;[OBJECT_NAME]&apos; nesnesi [OBJ_POSITION] konumuna hareket ettirilemiyor. ([FAILURE_TYPE])
+	</notification>
+	<notification name="NoPermModifyObject">
+		Bu nesneyi deÄŸiÅŸtirme izniniz yok
+	</notification>
+	<notification name="CantEnablePhysObjContributesToNav">
+		Navmesh&apos;e katkıda bulunan bir nesne için fizik etkinleştirilemez.
+	</notification>
+	<notification name="CantEnablePhysKeyframedObj">
+		Anahtar karelenmiş nesneler için fizik etkinleştirilemez.
+	</notification>
+	<notification name="CantEnablePhysNotEnoughLandResources">
+		Nesne için fizik etkinleştirilemedi -- arazi kaynakları yetersiz.
+	</notification>
+	<notification name="CantEnablePhysCostTooGreat">
+		Fizik kaynağı maliyeti [MAX_OBJECTS]&apos;dan büyük nesne için fizik etkinleştirilemedi
+	</notification>
+	<notification name="PhantomWithConcavePiece">
+		Bu nesne fantom olduğu ve navmesh&apos;e katkıda bulunduğu için konkav bir parçaya sahip olamaz.
+	</notification>
+	<notification name="UnableAddItem">
+		Öğe eklenemedi!
+	</notification>
+	<notification name="UnableEditItem">
+		Bu düzenlenemiyor!
+	</notification>
+	<notification name="NoPermToEdit">
+		Bunu düzenleme izni yok.
+	</notification>
+	<notification name="NoPermToCopyInventory">
+		Bu envanteri kopyalama izni yok.
+	</notification>
+	<notification name="CantSaveItemDoesntExist">
+		Nesne içeriklerine kaydedilemedi: Öğe artık mevcut değil.
+	</notification>
+	<notification name="CantSaveItemAlreadyExists">
+		Nesne içeriklerine kaydedilemedi: Bu ada sahip öğe envanterde zaten mevcut
+	</notification>
+	<notification name="CantSaveModifyAttachment">
+		Nesne içeriklerine kaydedilemedi: Bu, aksesuar izinlerini değiştirmeyi gerektirirdi.
+	</notification>
+	<notification name="TooManyScripts">
+		Çok fazla komut dosyası.
+	</notification>
+	<notification name="UnableAddScript">
+		Komut dosyası eklenemedi!
+	</notification>
+	<notification name="AssetServerTimeoutObjReturn">
+		Varlık sunucusu zamanında yanıt vermedi.  Nesne sime iade edildi.
+	</notification>
+	<notification name="RegionDisablePhysicsShapes">
+		Bu bölgede fiziksel şekiller etkin değil.
+	</notification>
+	<notification name="NoModNavmeshAcrossRegions">
+		Navmesh&apos;i bölge sınırlarının ötesinde değiştiremezsiniz.
+	</notification>
+	<notification name="NoSetPhysicsPropertiesOnObjectType">
+		Bu nesne türü üzerinde fizik özellikleri ayarlanamaz.
+	</notification>
+	<notification name="NoSetRootPrimWithNoShape">
+		Kök prim şekilsiz olacak şekilde ayarlanamaz.
+	</notification>
+	<notification name="NoRegionSupportPhysMats">
+		Bu bölgede fiziksel malzemeler etkin değil.
+	</notification>
+	<notification name="OnlyRootPrimPhysMats">
+		Sadece kök primlerin fizik malzemeleri ayarlanabilir.
+	</notification>
+	<notification name="NoSupportCharacterPhysMats">
+		Karakterler üzerinde fizik malzemelerin ayarlanması henüz desteklenmiyor.
+	</notification>
+	<notification name="InvalidPhysMatProperty">
+		Belirtilen fizik malzemesi özelliklerinden biri veya daha fazlası geçersiz.
+	</notification>
+	<notification name="NoPermsAlterStitchingMeshObj">
+		Bir örgü nesnesinin dikiş türünü değiştiremezsiniz.
+	</notification>
+	<notification name="NoPermsAlterShapeMeshObj">
+		Bir örgü nesnesinin şeklini değiştiremezsiniz
+	</notification>
+	<notification name="FullRegionCantEnter">
+		Bu bölgeye giremezsiniz çünkü \nbölge dolu.
+	</notification>
+	<notification name="LinkFailedOwnersDiffer">
+		Bağlantı başarısız oldu -- sahipler farklı
+	</notification>
+	<notification name="LinkFailedNoModNavmeshAcrossRegions">
+		Bağlntı başarılamadı -- navmesh&apos;i bölge sınırlarının ötesinde değiştiremezsiniz.
+	</notification>
+	<notification name="LinkFailedNoPermToEdit">
+		Düzenleme iznine sahip olmadığınız için bağlantı başarılamadı.
+	</notification>
+	<notification name="LinkFailedTooManyPrims">
+		Bağlantı başarısız oldu -- çok fazla ilkel öğe var
+	</notification>
+	<notification name="LinkFailedCantLinkNoCopyNoTrans">
+		Bağlantı başarısız oldu -- aktarılamayanla kopyalanamayan arasında bağlantı kurulamaz
+	</notification>
+	<notification name="LinkFailedNothingLinkable">
+		Bağlantı başarısız oldu -- bağlantı verilebilecek bir şey yok.
+	</notification>
+	<notification name="LinkFailedTooManyPathfindingChars">
+		Bağlantı başarısız oldu -- çok fazla yol bulma karakteri var
+	</notification>
+	<notification name="LinkFailedInsufficientLand">
+		Bağlantı başarısız oldu -- arazi kaynakları yetersiz
+	</notification>
+	<notification name="LinkFailedTooMuchPhysics">
+		Nesne çok fazla fizik kaynağı kullanıyor -- dinamikleri devre dışı bırakıldı.
+	</notification>
+	<notification name="TeleportedHomeByObjectOnParcel">
+		&apos;[PARCEL_NAME]&apos; parseli üzerindeki &apos;[OBJECT_NAME]&apos; nesnesi tarafından ana konuma ışınlandınız
+	</notification>
+	<notification name="TeleportedHomeByObject">
+		&apos;[OBJECT_NAME]&apos; nesnesi tarafından ana konuma ışınlandınız
+	</notification>
+	<notification name="TeleportedByAttachment">
+		You have been teleported by an attachment on [ITEM_ID]
+	</notification>
+	<notification name="TeleportedByObjectOnParcel">
+		&apos;[PARCEL_NAME]&apos; parseli üzerindeki &apos;[OBJECT_NAME]&apos; nesnesi tarafından ışınlandınız
+	</notification>
+	<notification name="TeleportedByObjectOwnedBy">
+		Sahibi [OWNER_ID] olan &apos;[OBJECT_NAME]&apos; nesnesi tarafından ışınlandınız
+	</notification>
+	<notification name="TeleportedByObjectUnknownUser">
+		Bilinmeyen bir sahibi olan &apos;[OBJECT_NAME]&apos; nesnesi tarafından ışınlandınız.
+	</notification>
+	<notification name="CantCreateObjectRegionFull">
+		Talep edilen nesne oluşturulamıyor. Bölge dolu.
+	</notification>
+	<notification name="CantAttackMultipleObjOneSpot">
+		Tek bir noktaya birden fazla nesne iliÅŸtiremezsiniz.
+	</notification>
+	<notification name="CantCreateMultipleObjAtLoc">
+		Burada birden fazla nesne oluşturamazsınız.
+	</notification>
+	<notification name="UnableToCreateObjTimeOut">
+		Talep edilen nesne oluşturulamıyor. Nesne veri tabanında yok.
+	</notification>
+	<notification name="UnableToCreateObjUnknown">
+		Talep edilen nesne oluşturulamıyor. Talep zaman aşımına uğradı. Lütfen tekrar deneyin.
+	</notification>
+	<notification name="UnableToCreateObjMissingFromDB">
+		Talep edilen nesne oluşturulamıyor. Lütfen tekrar deneyin.
+	</notification>
+	<notification name="RezFailureTookTooLong">
+		Oluşturma başarısız oldu, talep edilen nesnenin yüklenmesi çok zaman aldı.
+	</notification>
+	<notification name="FailedToPlaceObjAtLoc">
+		Belirtilen konuma nesne yerleştirilemedi.  Lütfen tekrar deneyin.
+	</notification>
+	<notification name="CantCreatePlantsOnLand">
+		Bu arazide bitkiler oluşturamazsınız.
+	</notification>
+	<notification name="CantRestoreObjectNoWorldPos">
+		Nesne geri yüklenemiyor. Dünya konumu bulunamadı.
+	</notification>
+	<notification name="CantRezObjectInvalidMeshData">
+		Örgü verileri geçersiz olduğu için nesne oluşturulamadı.
+	</notification>
+	<notification name="CantRezObjectTooManyScripts">
+		Bölgede zaten fazlasıyla komut dosyası olduğu için nesne oluşturulamadı.
+	</notification>
+	<notification name="CantCreateObjectNoAccess">
+		Erişim ayrıcalıklarınız orada nesne oluşturmanıza izin vermiyor.
+	</notification>
+	<notification name="CantCreateObject">
+		Şu anda nesne oluşturmanıza izin verilmiyor.
+	</notification>
+	<notification name="InvalidObjectParams">
+		Geçersiz nesne parametreleri
+	</notification>
+	<notification name="CantDuplicateObjectNoAcess">
+		Erişim ayrıcalıklarınız burada nesne çoğaltmanıza izin vermiyor.
+	</notification>
+	<notification name="CantChangeShape">
+		Bu ÅŸekli deÄŸiÅŸtirmenize izin verilmiyor.
+	</notification>
+	<notification name="NoAccessToClaimObjects">
+		Erişim ayrıcalıklarınız burada nesneler üzerinde hak talebinde bulunmanıza izin vermiyor.
+	</notification>
+	<notification name="DeedFailedNoPermToDeedForGroup">
+		Grubunuz adına nesne devretmek için gerekli izne sahip olmadığınız için devretme başarılamadı.
+	</notification>
+	<notification name="NoPrivsToBuyObject">
+		Erişim ayrıcalıklarınız burada nesneler satın almanıza izin vermiyor.
+	</notification>
+	<notification name="CantAttachObjectAvatarSittingOnIt">
+		Üzerinde bir avatar oturduğu için nesne iliştirilemiyor.
+	</notification>
+	<notification name="WhyAreYouTryingToWearShrubbery">
+		Ağaçlar ve çimen aksesuar olarak giyilemez.
+	</notification>
+	<notification name="CantAttachGroupOwnedObjs">
+		Sahibi grup olan nesneler iliÅŸtirilemiyor.
+	</notification>
+	<notification name="CantAttachObjectsNotOwned">
+		Sahip olmadığınız nesneleri iliştiremezsiniz.
+	</notification>
+	<notification name="CantAttachNavmeshObjects">
+		Navmesh&apos;e katkıda bulunan nesneler iliştirilemez.
+	</notification>
+	<notification name="CantAttachObjectNoMovePermissions">
+		Nesneyi hareket ettirme izniniz olmadığı için nesneyi iliştiremiyorsanız.
+	</notification>
+	<notification name="CantAttachNotEnoughScriptResources">
+		Nesneyi iliştirmek için yeterli komut dosyası kaynağı mevcut değil!
+	</notification>
+	<notification name="CantDropItemTrialUser">
+		Buraya nesne düşüremezsiniz; Ücretsiz Deneme alanını deneyin.
+	</notification>
+	<notification name="CantDropMeshAttachment">
+		Örgü aksesuarlarını düşüremezsiniz. Envantere ayırın, sonra dünyada oluşturun.
+	</notification>
+	<notification name="CantDropAttachmentNoPermission">
+		Aksesuar düşürülemedi: Burada düşürme izniniz yok.
+	</notification>
+	<notification name="CantDropAttachmentInsufficientLandResources">
+		Aksesuar düşürülemedi: Mevcut arazi kaynakları yetersiz.
+	</notification>
+	<notification name="CantDropAttachmentInsufficientResources">
+		Aksesuarlar düşürülemedi: Mevcut kaynaklar yetersiz.
+	</notification>
+	<notification name="CantDropObjectFullParcel">
+		Nesne buraya düşürülemez.  Parsel dolu.
+	</notification>
+	<notification name="CantTouchObjectBannedFromParcel">
+		Bu arazi parselinde yasaklandığınız için bu nesneye dokunamıyor/tutamıyorsunuz.
+	</notification>
+	<notification name="PlzNarrowDeleteParams">
+		Lütfen silme parametrelerinizi daraltın.
+	</notification>
+	<notification name="UnableToUploadAsset">
+		Varlık karşıya yüklenemiyor.
+	</notification>
+	<notification name="CantTeleportCouldNotFindUser">
+		Ana konuma ışınlanacak kullanıcı bulunamadı
+	</notification>
+	<notification name="GodlikeRequestFailed">
+		tanrısal talep başarısız oldu
+	</notification>
+	<notification name="GenericRequestFailed">
+		genel talep başarısız oldu
+	</notification>
+	<notification name="CantUploadPostcard">
+		Posta kartı karşıya yüklenemiyor.  Daha sonra tekrar deneyin.
+	</notification>
+	<notification name="CantFetchInventoryForGroupNotice">
+		Grup bildirimi için envanter ayrıntıları alınamadı.
+	</notification>
+	<notification name="CantSendGroupNoticeNotPermitted">
+		Grup bildirimi gönderilemedi -- izin verilmiyor.
+	</notification>
+	<notification name="CantSendGroupNoticeCantConstructInventory">
+		Grup bildirimi gönderilemedi -- envanter oluşturulamadı.
+	</notification>
+	<notification name="CantParceInventoryInNotice">
+		Bildirimde envanter ayrıştırılamadı.
+	</notification>
+	<notification name="TerrainUploadFailed">
+		Yüzeyin karşıya yüklemesi başarılamadı.
+	</notification>
+	<notification name="TerrainFileWritten">
+		Yüzey dosyası yazıldı.
+	</notification>
+	<notification name="TerrainFileWrittenStartingDownload">
+		Yüzey dosyası yazıldı, karşıdan yükleme başlatılıyor...
+	</notification>
+	<notification name="TerrainBaked">
+		Yüzey kaydedildi.
+	</notification>
+	<notification name="TenObjectsDisabledPlzRefresh">
+		Sadece seçilen ilk 10 nesne devre dışı bırakıldı. Gerekiyorsa yenileyin ve ilave seçimler yapın.
+	</notification>
+	<notification name="UpdateViewerBuyParcel">
+		Bu parseli satın almak için görüntüleyicinizi güncelleştirmelisiniz.
+	</notification>
+	<notification name="CantBuyParcelNotForSale">
+		Satın alınamıyor, bu parsel satılık değil.
+	</notification>
+	<notification name="CantBuySalePriceOrLandAreaChanged">
+		Satın alınamıyor, satış fiyatı veya arazi bölgesi değişmiş.
+	</notification>
+	<notification name="CantBuyParcelNotAuthorized">
+		Bu parsel için yetkili alıcı değilsiniz.
+	</notification>
+	<notification name="CantBuyParcelAwaitingPurchaseAuth">
+		Bu parseli satın alamazsınız çünkü zaten satın alım yetkilendirmesi bekliyor
+	</notification>
+	<notification name="CantBuildOverflowParcel">
+		Burada nesneler inşa edemezsiniz, aksi halde parselin kaynak sınırları aşılır.
+	</notification>
+	<notification name="SelectedMultipleOwnedLand">
+		Farklı sahiplere ait araziler seçtiniz. Lütfen daha küçük bir alan seçin ve tekrar deneyin.
+	</notification>
+	<notification name="CantJoinTooFewLeasedParcels">
+		Seçimde birleştirilecek yeterli sayıda lease edilmiş parsel yok.
+	</notification>
+	<notification name="CantDivideLandMultipleParcelsSelected">
+		Arazi bölünemedi.\nBirden fazla parsel seçili durumda.\nDaha küçük bir arazi parçası seçmeyi deneyin.
+	</notification>
+	<notification name="CantDivideLandCantFindParcel">
+		Arazi bölünemiyor.\nParsel bulunamıyor.\nLütfen Yardım -&gt; Hata Bildir ile bildirin...
+	</notification>
+	<notification name="CantDivideLandWholeParcelSelected">
+		Arazi bölünemiyor. Tüm parsel seçilidir.\nDaha küçük bir arazi parçası seçmeyi deneyin.
+	</notification>
+	<notification name="LandHasBeenDivided">
+		Arazi bölündü.
+	</notification>
+	<notification name="PassPurchased">
+		Bir geçiş hakkı satın aldınız.
+	</notification>
+	<notification name="RegionDisallowsClassifieds">
+		Bölgede seri ilanlara izin verilmiyor.
+	</notification>
+	<notification name="LandPassExpireSoon">
+		Bu arazi için geçiş hakkınız sona ermek üzere.
+	</notification>
+	<notification name="CantSitNoSuitableSurface">
+		Üzerinde oturulabilecek uygun bir yüzey yok, başka bir noktayı deneyin.
+	</notification>
+	<notification name="CantSitNoRoom">
+		Burada oturacak yer yok, baÅŸka bir yer deneyin.
+	</notification>
+	<notification name="ClaimObjectFailedNoPermission">
+		İzniniz olmadığı için nesne üzerinde hak talep etme başarılamadı
+	</notification>
+	<notification name="ClaimObjectFailedNoMoney">
+		Sahip olduğunuz L$ yeterli olmadığı için nesne üzerinde hak talep etme başarılamadı.
+	</notification>
+	<notification name="CantDeedGroupLand">
+		Grubun sahip olduÄŸu araziyi devredemezsiniz.
+	</notification>
+	<notification name="BuyObjectFailedNoMoney">
+		Sahip olduğunuz L$ yeterli olmadığı için nesne satın alma başarılamadı.
+	</notification>
+	<notification name="BuyInventoryFailedNoMoney">
+		Sahip olduğunuz L$ yeterli olmadığı için envanter satın alma başarılamadı.
+	</notification>
+	<notification name="BuyPassFailedNoMoney">
+		Sahibi olduğunuz L$ bu araziye geçiş hakkı almanıza yeterli değil.
+	</notification>
+	<notification name="CantBuyPassTryAgain">
+		Şu anda geçiş hakkı satın alınamıyor.  Daha sonra tekrar deneyin.
+	</notification>
+	<notification name="CantCreateObjectParcelFull">
+		Nesne oluşturulamıyor çünkü \nparsel dolu.
+	</notification>
+	<notification name="FailedPlacingObject">
+		Belirtilen konuma nesne yerleştirilemedi.  Lütfen tekrar deneyin.
+	</notification>
+	<notification name="CantCreateLandmarkForEvent">
+		Etkinlik için yer imi oluşturulamıyor.
+	</notification>
+	<notification name="GodBeatsFreeze">
+		Tanrısal güçleriniz dondurmayı devre dışı bıraktı!
+	</notification>
+	<notification name="SpecialPowersRequestFailedLogged">
+		Özel yetkiler talebi başarısız oldu. Bu talep günlüğe kaydedildi.
+	</notification>
+	<notification name="ExpireExplanation">
+		Sistem şu anda talebinizi işleyemiyor. Talep zaman aşımına uğradı.
+	</notification>
+	<notification name="DieExplanation">
+		Sistem talebinizi iÅŸleyemiyor.
+	</notification>
+	<notification name="AddPrimitiveFailure">
+		İlkel öğeyi oluşturmak için yeterli fon yok.
+	</notification>
+	<notification name="RezObjectFailure">
+		Nesneyi oluşturmak için yeterli fon yok.
+	</notification>
+	<notification name="ResetHomePositionNotLegal">
+		Ana konum sıfırlandı çünkü Ana konum yasal değildi.
+	</notification>
+	<notification name="CantInviteRegionFull">
+		Şu anda konumunuza kimseyi davet edemezsiniz çünkü bölge dolu. Daha sonra tekrar deneyin.
+	</notification>
+	<notification name="CantSetHomeAtRegion">
+		Bu bölge, ana konumunuzu buraya kurmanıza izin vermiyor.
+	</notification>
+	<notification name="ListValidHomeLocations">
+		&apos;Ana Konum&apos;unuzu sadece arazinizde veya anakarada bir Bilgi Ä°stasyonu&apos;nda ayarlayabilirsiniz.
+	</notification>
+	<notification name="SetHomePosition">
+		Ana konum ayarlandı.
+	</notification>
+	<notification name="CantDerezInventoryError">
+		Envanter hatasından ötürü nesne oluşturulması geri alınamıyor.
+	</notification>
+	<notification name="CantCreateRequestedInv">
+		Talep edilen envanter oluşturulamadı.
+	</notification>
+	<notification name="CantCreateRequestedInvFolder">
+		Talep edilen envanter klasörü oluşturulamadı.
+	</notification>
+	<notification name="CantCreateInventory">
+		Bu envanter oluşturulamadı.
+	</notification>
+	<notification name="CantCreateLandmark">
+		Yer imi oluşturulamıyor.
+	</notification>
+	<notification name="CantCreateOutfit">
+		Dış görünüm şu anda oluşturulamıyor. Bir dakika sonra tekrar deneyin.
+	</notification>
+	<notification name="InventoryNotForSale">
+		Envanter satılık değil.
+	</notification>
+	<notification name="CantFindInvItem">
+		Envanter öğesi bulunamıyor.
+	</notification>
+	<notification name="CantFindObject">
+		Nesne bulunamıyor.
+	</notification>
+	<notification name="CantTransfterMoneyRegionDisabled">
+		Nesnelere para transferleri bölgede şu anda devre dışı bırakılmış durumda.
+	</notification>
+	<notification name="CantPayNoAgent">
+		Kime ödeme yapılacağı belirlenemedi.
+	</notification>
+	<notification name="CantDonateToPublicObjects">
+		Kamusal nesnelere L$ veremezsiniz.
+	</notification>
+	<notification name="InventoryCreationInWorldObjectFailed">
+		Dünya içerisindeki nesnede envater oluşturma başarısız oldu.
+	</notification>
+	<notification name="UserBalanceOrLandUsageError">
+		Dahili bir hata nedeniyle görüntüleyicinizi gerektiği gibi güncelleyemedik.  Görüntüleyicinizde gösterilen L$ bakiyesi veya parsel tutarı sunucular üzerinde gerçekteki bakiyenizi yansıtmayabilir.
+	</notification>
+	<notification name="LargePrimAgentIntersect">
+		Başka oyuncularla kesişen büyük primler oluşturulamaz.  Öbür oyuncular hareket ettiğinde lütfen tekrar deneyin.
+	</notification>
+	<notification name="PreferenceChatClearLog">
+		Bu, geçmiş sohbetlerin günlüklerini ve bu dosyanın tüm yedeklerini silecektir.
+		<usetemplate ignoretext="Ben geçmiş sohbetlerin günlüğünü silmeden önce doğrula." name="okcancelignore" notext="İptal" yestext="Tamam"/>
+	</notification>
+	<notification name="PreferenceChatDeleteTranscripts">
+		Bu, tüm geçmiş sohbetlerin dökümlerini silecektir. Geçmiş sohbetlerin listesi bundan etkilenmez. [FOLDER] klasöründe .txt ve txt.backup uzantısına sahip tüm dosyalar silinecektir.
+		<usetemplate ignoretext="Ben dökümleri silmeden önce doğrulama iste." name="okcancelignore" notext="İptal" yestext="Tamam"/>
+	</notification>
+	<notification name="PreferenceChatPathChanged">
+		Dosyalar taşınamıyor. Önceki yol geri yüklendi.
+		<usetemplate ignoretext="Dosyalar taşınamıyor. Önceki yol geri yüklendi." name="okignore" yestext="Tamam"/>
+	</notification>
 </notifications>
diff --git a/indra/newview/skins/default/xui/tr/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/tr/panel_avatar_list_item.xml
index 7542778acaf..f330bd85e8e 100644
--- a/indra/newview/skins/default/xui/tr/panel_avatar_list_item.xml
+++ b/indra/newview/skins/default/xui/tr/panel_avatar_list_item.xml
@@ -27,5 +27,6 @@
 	<icon name="permission_edit_mine_icon" tool_tip="Bu arkadaşınız nesnelerinizi düzenleyebilir, silebilir veya alabilir"/>
 	<icon name="permission_map_icon" tool_tip="Bu arkadaşınız haritada sizi bulabilir"/>
 	<icon name="permission_online_icon" tool_tip="Bu arkadaşınız çevrimiçi olduğunuzda sizi görebilir"/>
+	<button name="info_btn" tool_tip="Ek bilgi"/>
 	<button name="profile_btn" tool_tip="Profili göster"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/tr/panel_block_list_sidetray.xml
index 0464b7ec07a..87b67e249ed 100644
--- a/indra/newview/skins/default/xui/tr/panel_block_list_sidetray.xml
+++ b/indra/newview/skins/default/xui/tr/panel_block_list_sidetray.xml
@@ -1,10 +1,11 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="block_list_panel">
-	<text name="title_text">
-		Listeyi Engelle
-	</text>
-	<scroll_list name="blocked" tool_tip="Åžu anda engellenmiÅŸ olan Sakinler listesi"/>
-	<button label="Kişiyi engelle" name="Block resident..." tool_tip="Engellenecek bir Sakin seç"/>
-	<button label="Nesneyi ada göre engelle" name="Block object by name..." tool_tip="Ada göre engellenecek bir nesne seç"/>
-	<button label="Engellemeyi Kaldır" name="Unblock" tool_tip="Engelleme listesinden Sakini veya nesneyi kaldır"/>
+	<panel label="bottom_panel" name="blocked_buttons_panel">
+		<filter_editor label="Filtrele" name="blocked_filter_input"/>
+		<menu_button name="blocked_gear_btn" tool_tip="Seçilen kişi veya nesne üzerindeki eylemler"/>
+		<menu_button name="view_btn" tool_tip="Sıralama seçenekleri"/>
+		<menu_button name="plus_btn" tool_tip="Engellenecek bir Sakin veya nesne seç"/>
+		<button name="unblock_btn" tool_tip="Engelleme listesinden Sakini veya nesneyi kaldır"/>
+	</panel>
+	<block_list name="blocked" tool_tip="Åžu anda engellenmiÅŸ olan Sakinler listesi"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_conversation_list_item.xml b/indra/newview/skins/default/xui/tr/panel_conversation_list_item.xml
new file mode 100644
index 00000000000..c7227f02b65
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_conversation_list_item.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="conversation_list_item">
+	<layout_stack name="conversation_item_stack">
+		<layout_panel name="conversation_title_panel">
+			<text name="conversation_title" value="(yükleniyor)"/>
+		</layout_panel>
+	</layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_conversation_log_list_item.xml b/indra/newview/skins/default/xui/tr/panel_conversation_log_list_item.xml
new file mode 100644
index 00000000000..79895f9c211
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_conversation_log_list_item.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="conversation_log_list_item">
+	<icon name="voice_session_icon" tool_tip="Sohbet ses dahil edildi"/>
+	<icon name="unread_ims_icon" tool_tip="Oturumunuz kapalıyken mesajlar geldi"/>
+	<button name="delete_btn" tool_tip="Bu girişi kaldır"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_group_list_item.xml b/indra/newview/skins/default/xui/tr/panel_group_list_item.xml
index 2bc597f2fa9..f44d2b5e762 100644
--- a/indra/newview/skins/default/xui/tr/panel_group_list_item.xml
+++ b/indra/newview/skins/default/xui/tr/panel_group_list_item.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="group_list_item">
 	<text name="group_name" value="Bilinmiyor"/>
+	<button name="info_btn" tool_tip="Ek bilgi"/>
 	<button name="profile_btn" tool_tip="Profili göster"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_people.xml b/indra/newview/skins/default/xui/tr/panel_people.xml
index 1a1e53bac20..08efd0aa616 100644
--- a/indra/newview/skins/default/xui/tr/panel_people.xml
+++ b/indra/newview/skins/default/xui/tr/panel_people.xml
@@ -14,81 +14,53 @@ Birlikte takılacak kişiler mi arıyorsunuz? [secondlife:///app/worldmap Dünya
 	<string name="no_filtered_friends_msg">
 		Aradığınızı bulamadınız mı? [secondlife:///app/search/people/[SEARCH_TERM] Ara] deneyin.
 	</string>
-	<string name="people_filter_label" value="KiÅŸileri Filtrele"/>
-	<string name="groups_filter_label" value="Grupları Filtrele"/>
 	<string name="no_filtered_groups_msg" value="Aradığınızı bulamadınız mı? [secondlife:///app/search/groups/[SEARCH_TERM] Ara] deneyin."/>
 	<string name="no_groups_msg" value="Katılacak Gruplar mı arıyorsunuz? [secondlife:///app/search/groups Ara] deneyin."/>
 	<string name="MiniMapToolTipMsg" value="[REGION](Haritayı açmak için çift tıkla, yatay hareket için shift çek)"/>
 	<string name="AltMiniMapToolTipMsg" value="[REGION](Işınlamak için çift tıkla, yatay hareket için shift çek)"/>
-	<filter_editor label="Filtrele" name="filter_input"/>
 	<tab_container name="tabs">
 		<panel label="YAKIN" name="nearby_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<menu_button name="nearby_view_sort_btn" tool_tip="Seçenklr."/>
-				<button name="add_friend_btn" tool_tip="Seçilen Sakini arkadaş listene ekle"/>
+			<panel label="bottom_panel" name="nearby_buttons_panel">
+				<filter_editor label="KiÅŸileri Filtrele" name="nearby_filter_input"/>
+				<button name="gear_btn" tool_tip="Seçilen kişi üzerindeki eylemler"/>
+				<menu_button name="nearby_view_btn" tool_tip="Gösterme/sıralama seçenekleri"/>
+				<button name="add_friend_btn" tool_tip="Bir sakine arkadaşlık öner"/>
+				<dnd_button name="nearby_del_btn" tool_tip="Seçilen kişiyi arkadaş olarak kaldır"/>
 			</panel>
 		</panel>
-		<panel label="ARKADAÅžLARIM" name="friends_panel">
+		<panel label="ARKADAÅžLAR" name="friends_panel">
+			<panel label="bottom_panel" name="friends_buttons_panel">
+				<filter_editor label="KiÅŸileri Filtrele" name="friends_filter_input"/>
+				<button name="gear_btn" tool_tip="Seçilen kişi üzerindeki eylemler"/>
+				<menu_button name="friends_view_btn" tool_tip="Seçenekleri göster/sırala"/>
+				<button name="friends_add_btn" tool_tip="Bir sakine arkadaşlık öner"/>
+				<dnd_button name="friends_del_btn" tool_tip="Seçilen kişiyi arkadaş olarak kaldır"/>
+			</panel>
 			<accordion name="friends_accordion">
 				<accordion_tab name="tab_online" title="Çevrimiçi"/>
 				<accordion_tab name="tab_all" title="Tümü"/>
 			</accordion>
-			<panel label="bottom_panel" name="bottom_panel">
-				<layout_stack name="bottom_panel">
-					<layout_panel name="options_gear_btn_panel">
-						<menu_button name="friends_viewsort_btn" tool_tip="İlave seçenekleri göster"/>
-					</layout_panel>
-					<layout_panel name="add_btn_panel">
-						<button name="add_btn" tool_tip="Bir Sakine arkadaşlık öner"/>
-					</layout_panel>
-					<layout_panel name="trash_btn_panel">
-						<dnd_button name="del_btn" tool_tip="Seçilen kişiyi arkadaş Listenden çıkar"/>
-					</layout_panel>
-				</layout_stack>
-			</panel>
 		</panel>
-		<panel label="GRUPLARIM" name="groups_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<menu_button name="groups_viewsort_btn" tool_tip="Seçenklr."/>
-				<button name="plus_btn" tool_tip="Gruba katıl/yeni grup oluştur"/>
-				<button name="activate_btn" tool_tip="Seçilen grubu etkinleştir"/>
+		<panel label="GRUPLAR" name="groups_panel">
+			<panel label="bottom_panel" name="groups_buttons_panel">
+				<filter_editor label="Grupları Filtrele" name="groups_filter_input"/>
+				<menu_button name="groups_gear_btn" tool_tip="Seçilen grup üzerindeki eylemler"/>
+				<menu_button name="groups_view_btn" tool_tip="Seçenekleri göster/sırala"/>
+				<menu_button name="plus_btn" tool_tip="Gruba katıl/yeni grup oluştur"/>
+				<dnd_button name="minus_btn" tool_tip="Seçilen gruptan ayrıl"/>
 			</panel>
 		</panel>
 		<panel label="SON" name="recent_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<menu_button name="recent_viewsort_btn" tool_tip="Seçenklr."/>
-				<button name="add_friend_btn" tool_tip="Seçilen Sakini arkadaş listene ekle"/>
+			<panel label="bottom_panel" name="recent_buttons_panel">
+				<filter_editor label="KiÅŸileri Filtrele" name="recent_filter_input"/>
+				<button name="gear_btn" tool_tip="Seçilen kişi üzerindeki eylemler"/>
+				<menu_button name="recent_view_btn" tool_tip="Seçenekleri göster/sırala"/>
+				<button name="add_friend_btn" tool_tip="Bir sakine arkadaşlık öner"/>
+				<dnd_button name="recent_del_btn" tool_tip="Seçilen kişiyi arkadaş olarak kaldır"/>
 			</panel>
 		</panel>
+		<panel label="ENGELLENMÄ°Åž" name="blocked_panel">
+			<panel label="EngellenmiÅŸ Sakinler ve Nesneler" name="panel_block_list_sidetray"/>
+		</panel>
 	</tab_container>
-	<panel name="button_bar">
-		<layout_stack name="bottom_bar_ls">
-			<layout_panel name="view_profile_btn_lp">
-				<button label="Profil" name="view_profile_btn" tool_tip="Resim, grup ve diğer Sakin bilgilerini göster"/>
-			</layout_panel>
-			<layout_panel name="im_btn_lp">
-				<button label="Aİ" name="im_btn" tool_tip="Anlık ileti oturumu aç"/>
-			</layout_panel>
-			<layout_panel name="call_btn_lp">
-				<button label="Ara" name="call_btn" tool_tip="Bu Sakini ara"/>
-			</layout_panel>
-			<layout_panel name="share_btn_lp">
-				<button label="Paylaş" name="share_btn" tool_tip="Bir envanter öğesini paylaş"/>
-			</layout_panel>
-			<layout_panel name="teleport_btn_lp">
-				<button label="Işınla" name="teleport_btn" tool_tip="Işınlama teklif et"/>
-			</layout_panel>
-		</layout_stack>
-		<layout_stack name="bottom_bar_ls1">
-			<layout_panel name="group_info_btn_lp">
-				<button label="Grup Profili" name="group_info_btn" tool_tip="Grup bilgilerini göster"/>
-			</layout_panel>
-			<layout_panel name="chat_btn_lp">
-				<button label="Grup Sohbeti" name="chat_btn" tool_tip="Sohbet oturumu aç"/>
-			</layout_panel>
-			<layout_panel name="group_call_btn_lp">
-				<button label="Grup Araması" name="group_call_btn" tool_tip="Bu grubu ara"/>
-			</layout_panel>
-		</layout_stack>
-	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_preferences_chat.xml b/indra/newview/skins/default/xui/tr/panel_preferences_chat.xml
index 231e8fc5fe8..aaeebdfe6e8 100644
--- a/indra/newview/skins/default/xui/tr/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/tr/panel_preferences_chat.xml
@@ -1,34 +1,86 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Metin Sohbeti" name="chat">
-	<text name="font_size">
-		Font büyüklüğü:
-	</text>
-	<radio_group name="chat_font_size">
-		<radio_item label="Küçük" name="radio" value="0"/>
-		<radio_item label="Orta" name="radio2" value="1"/>
-		<radio_item label="Büyük" name="radio3" value="2"/>
-	</radio_group>
-	<check_box initial_value="true" label="Sohbet sırasında yazma animasyonunu oynat" name="play_typing_animation"/>
-	<check_box label="Çevrimdışı olduğunda Aİ&apos;ler e-posta ile bana gönderilsin" name="send_im_to_email"/>
-	<check_box label="Düz metin Aİ&apos;ler ve sohbet geçmişini etkinleştir" name="plain_text_chat_history"/>
-	<check_box label="Balon Sohbeti" name="bubble_text_chat"/>
-	<text name="show_ims_in_label">
-		Aİ&apos;leri şurada göster:
-	</text>
-	<text name="requires_restart_label">
-		(tekrar baÅŸlatma gerekir)
-	</text>
-	<radio_group name="chat_window" tool_tip="Anlık İletileri ayrı gezdiricilerde veya çoklu sekmelere sahip tek bir gezdiricide gösterin (tekrar başlatma gerekir)">
-		<radio_item label="Ayrı Pencereler" name="radio" value="0"/>
-		<radio_item label="Sekmeler" name="radio2" value="1"/>
-	</radio_group>
-	<text name="disable_toast_label">
-		Gelen sohbet için açılır pencereleri etkinleştir:
-	</text>
-	<check_box label="Grup Sohbetleri" name="EnableGroupChatPopups" tool_tip="Bir Grup Sohbet iletisi gönderildiğinde açılır pencereleri görmek için işaretle"/>
-	<check_box label="Aİ Sohbetleri" name="EnableIMChatPopups" tool_tip="Bir anlık ileti geldiğinde açılır pencereleri görmek için işaretle"/>
-	<spinner label="Yakındaki sohbet iletilerinin vurgulanma süresi:" name="nearby_toasts_lifetime"/>
-	<spinner label="Yakındaki sohbet iletilerinin sönme süresi:" name="nearby_toasts_fadingtime"/>
+	<panel>
+		<check_box initial_value="true" label="Sohbet sırasında yazma animasyonunu oynat" name="play_typing_animation"/>
+		<check_box label="Çevrimdışı olduğunda Aİ&apos;ler e-posta ile bana gönderilsin" name="send_im_to_email"/>
+		<check_box label="Sadece arkadaşlar ve gruplar beni arasın veya Aİ göndersin" name="voice_call_friends_only_check"/>
+		<text name="font_size">
+			Font büyüklüğü:
+		</text>
+		<combo_box name="chat_font_size">
+			<item label="Küçük" name="Small" value="0"/>
+			<item label="Orta" name="Medium" value="1"/>
+			<item label="Büyük" name="Large" value="2"/>
+		</combo_box>
+		<check_box label="Balon Sohbeti" name="bubble_text_chat"/>
+	</panel>
+	<panel>
+		<text name="notifications">
+			Bildirimler
+		</text>
+		<text name="friend_ims">
+			ArkadaÅŸ AÄ°&apos;leri:
+		</text>
+		<combo_box name="FriendIMOptions">
+			<item label="Sohbetler penceresini aç" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Mesajı aç" name="PopUpMessage" value="toast"/>
+			<item label="Araç çubuğu düğmesi yanıp sönsün" name="FlashToolbarButton" value="flash"/>
+			<item label="Hiçbiri" name="None" value="none"/>
+		</combo_box>
+		<text name="non_friend_ims">
+			ArkadaÅŸ harici AÄ°&apos;ler:
+		</text>
+		<combo_box name="NonFriendIMOptions">
+			<item label="Sohbetler penceresini aç" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Mesajı açılır pencerede göster" name="PopUpMessage" value="toast"/>
+			<item label="Araç çubuğu düğmesi yanıp sönsün" name="FlashToolbarButton" value="flash"/>
+			<item label="Hiçbiri" name="None" value="none"/>
+		</combo_box>
+		<text name="conference_ims">
+			Konferans AÄ°&apos;leri:
+		</text>
+		<combo_box name="ConferenceIMOptions">
+			<item label="Sohbetler penceresini aç" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Mesajı aç" name="PopUpMessage" value="toast"/>
+			<item label="Araç çubuğu düğmesi yanıp sönsün" name="FlashToolbarButton" value="flash"/>
+			<item label="Hiçbiri" name="None" value="none"/>
+		</combo_box>
+		<text name="group_chat">
+			Grup sohbeti:
+		</text>
+		<combo_box name="GroupChatOptions">
+			<item label="Sohbetler penceresini aç" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Mesajı aç" name="PopUpMessage" value="toast"/>
+			<item label="Araç çubuğu düğmesi yanıp sönsün" name="FlashToolbarButton" value="flash"/>
+			<item label="Hiçbiri" name="None" value="none"/>
+		</combo_box>
+		<text name="nearby_chat">
+			Yakındaki sohbet:
+		</text>
+		<combo_box name="NearbyChatOptions">
+			<item label="Sohbetler penceresini aç" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Mesajı aç" name="PopUpMessage" value="toast"/>
+			<item label="Araç çubuğu düğmesi yanıp sönsün" name="FlashToolBarButton" value="flash"/>
+			<item label="Hiçbiri" name="None" value="none"/>
+		</combo_box>
+		<text name="notifications_alert">
+			Tüm bildirimleri geçici olarak durdurmak için İletişim Kur &gt; Rahatsız Etme seçeneğini kullanın.
+		</text>
+	</panel>
+	<panel>
+		<text name="play_sound">
+			Sesi çal:
+		</text>
+		<check_box label="Yeni sohbet" name="new_conversation"/>
+		<check_box label="Gelen sesli arama" name="incoming_voice_call"/>
+		<check_box label="Işınlama teklifi" name="teleport_offer"/>
+		<check_box label="Envanter teklifi" name="inventory_offer"/>
+	</panel>
+	<panel>
+		<button label="Günlüğü temizle..." name="clear_log"/>
+		<button label="Dökümleri sil..." name="delete_transcripts"/>
+		<button label="Gözat..." label_selected="Gözat" name="log_path_button"/>
+	</panel>
 	<button label="Çeviri..." name="ok_btn"/>
 	<button label="Otomatik Yerine Koy..." name="autoreplace_showgui"/>
 	<button label="Yazım Denetimi Yapılıyor..." name="spellcheck_showgui"/>
diff --git a/indra/newview/skins/default/xui/tr/panel_preferences_general.xml b/indra/newview/skins/default/xui/tr/panel_preferences_general.xml
index 4a48b1588c1..1a13cf8f717 100644
--- a/indra/newview/skins/default/xui/tr/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/tr/panel_preferences_general.xml
@@ -68,9 +68,9 @@
 		<combo_box.item label="asla" name="item4"/>
 	</combo_box>
 	<text name="text_box3">
-		Meşgul durumu cevabı:
+		Rahatsız Etme yanıtı:
 	</text>
-	<text_editor name="busy_response">
+	<text_editor name="do_not_disturb_response">
 		log_in_to_change
 	</text_editor>
 </panel>
diff --git a/indra/newview/skins/default/xui/tr/sidepanel_task_info.xml b/indra/newview/skins/default/xui/tr/sidepanel_task_info.xml
index b0b9ab77169..9a4cf54fa79 100644
--- a/indra/newview/skins/default/xui/tr/sidepanel_task_info.xml
+++ b/indra/newview/skins/default/xui/tr/sidepanel_task_info.xml
@@ -72,6 +72,7 @@
 			<combo_box.item label="Nesneyi satın al" name="Buyobject"/>
 			<combo_box.item label="Nesneye ödeme yap" name="Payobject"/>
 			<combo_box.item label="Aç" name="Open"/>
+			<combo_box.item label="Yakınlaştır" name="Zoom"/>
 		</combo_box>
 		<panel name="perms_inv">
 			<text name="perm_modify">
diff --git a/indra/newview/skins/default/xui/tr/strings.xml b/indra/newview/skins/default/xui/tr/strings.xml
index 1be8f5974c7..155dc8749a0 100644
--- a/indra/newview/skins/default/xui/tr/strings.xml
+++ b/indra/newview/skins/default/xui/tr/strings.xml
@@ -137,7 +137,7 @@
 		Çık
 	</string>
 	<string name="create_account_url">
-		http://join.secondlife.com/index.php?lang=tr-TR&amp;sourceid=[sourceid]
+		http://join.secondlife.com/?sourceid=[sourceid]
 	</string>
 	<string name="LoginFailedViewerNotPermitted">
 		Kullandığınız görüntüleyici ile artık Second Life&apos;a erişemezsiniz. Yeni bir görüntüleyiciyi karşıdan yüklemek için lütfen şu sayfayı ziyaret edin:
@@ -619,8 +619,8 @@ Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin.
 	<string name="AvatarAway">
 		Uzakta
 	</string>
-	<string name="AvatarBusy">
-		MeÅŸgul
+	<string name="AvatarDoNotDisturb">
+		Rahatsız Etme
 	</string>
 	<string name="AvatarMuted">
 		EngellenmiÅŸ
@@ -856,6 +856,12 @@ Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin.
 	<string name="ST_NO_JOINT">
 		KÖK veya EKLEM bulunamıyor.
 	</string>
+	<string name="NearbyChatTitle">
+		Yakındaki sohbet
+	</string>
+	<string name="NearbyChatLabel">
+		(Yakındaki sohbet)
+	</string>
 	<string name="whisper">
 		fısıldar:
 	</string>
@@ -919,12 +925,15 @@ Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin.
 	<string name="ControlYourCamera">
 		Kameranızı kontrol etmek
 	</string>
-	<string name="TeleportYourAgent">
-		Sizi ışınlama
-	</string>
 	<string name="NotConnected">
 		Bağlı Değil
 	</string>
+	<string name="AgentNameSubst">
+		(Siz)
+	</string>
+	<string name="TeleportYourAgent">
+		Sizi ışınlama
+	</string>
 	<string name="SIM_ACCESS_PG">
 		Genel
 	</string>
@@ -1006,18 +1015,6 @@ Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin.
 	<string name="dictionary_files">
 		Sözlükler
 	</string>
-	<string name="AvatarSetNotAway">
-		Uzakta DeÄŸil
-	</string>
-	<string name="AvatarSetAway">
-		Uzakta
-	</string>
-	<string name="AvatarSetNotBusy">
-		MeÅŸgul DeÄŸil
-	</string>
-	<string name="AvatarSetBusy">
-		MeÅŸgul
-	</string>
 	<string name="shape">
 		Åžekil
 	</string>
@@ -1986,8 +1983,8 @@ Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin.
 	<string name="PanelContentsNewScript">
 		Yeni Komut Dosyası
 	</string>
-	<string name="BusyModeResponseDefault">
-		İleti gönderdiğiniz Sakin &apos;meşgul modu&apos;nda, bu da rahatsız edilmek istemediği anlamına geliyor.  İletiniz daha sonra incelenmesi için kendisine ait Aİ panelinde gösterilecektir.
+	<string name="DoNotDisturbModeResponseDefault">
+		Bu sakin &quot;Rahatsız Etme&quot; seçeneğini devreye almış, mesajınızı sonra görecek.
 	</string>
 	<string name="MuteByName">
 		(Adına göre)
@@ -2100,9 +2097,6 @@ Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin.
 	<string name="GroupMoneyDate">
 		[weekday,datetime,utc] [mth,datetime,utc] [day,datetime,utc], [year,datetime,utc]
 	</string>
-	<string name="ViewerObjectContents">
-		İçerik
-	</string>
 	<string name="AcquiredItems">
 		Alınan Öğeler
 	</string>
@@ -3874,7 +3868,7 @@ Bu iletiyi almaya devam ederseniz, lütfen [SUPPORT_SITE] bölümüne başvurun.
 		Genel Bölge
 	</string>
 	<string name="LocationCtrlSeeAVsTooltip">
-		Bu parselin dışında avatarlar görünür durumda ve sohbete izin veriliyor
+		Bu parselin içindeki avatarlar, bu parselin dışındaki avatarlar tarafından görülemez veya işitilemez
 	</string>
 	<string name="LocationCtrlPathfindingDirtyTooltip">
 		Bölge yeniden kaydedilinceye kadar hareket eden nesneler bu bölgede doğru davranmayabilir.
@@ -3951,6 +3945,12 @@ Bu iletiyi almaya devam ederseniz, lütfen [SUPPORT_SITE] bölümüne başvurun.
 	<string name="IM_unblock_only_groups_friends">
 		Bu mesajı görmek için Tercihler/Gizlilik&apos;de &apos;Sadece arkadaşlar ve gruplar beni arasın veya Aİ göndersin&apos; seçeneğinin işaretini kaldırmalısınız.
 	</string>
+	<string name="OnlineStatus">
+		Çevrimiçi
+	</string>
+	<string name="OfflineStatus">
+		Çevrimdışı
+	</string>
 	<string name="answered_call">
 		Aramanız yanıtlandı
 	</string>
@@ -3960,6 +3960,9 @@ Bu iletiyi almaya devam ederseniz, lütfen [SUPPORT_SITE] bölümüne başvurun.
 	<string name="you_joined_call">
 		Sesli aramaya katıldınız
 	</string>
+	<string name="you_auto_rejected_call-im">
+		&quot;Rahatsız Etme&quot; seçeneğini devredeyken sesli aramayı otomatik olarak reddettiniz.
+	</string>
 	<string name="name_started_call">
 		[NAME] bir sesli arama başlattı
 	</string>
@@ -3976,7 +3979,7 @@ Bu iletiyi almaya devam ederseniz, lütfen [SUPPORT_SITE] bölümüne başvurun.
 		Bağlanıyor...
 	</string>
 	<string name="conference-title">
-		Özel Konferans
+		Çok kişili sohbet
 	</string>
 	<string name="conference-title-incoming">
 		[AGENT_NAME] ile konferans
@@ -4866,6 +4869,9 @@ Düzenleyici yolunu çift tırnakla çevrelemeyi deneyin.
 	<string name="Command_Chat_Label">
 		Sohbet
 	</string>
+	<string name="Command_Conversations_Label">
+		Sohbetler
+	</string>
 	<string name="Command_Compass_Label">
 		Pusula
 	</string>
@@ -4941,6 +4947,9 @@ Düzenleyici yolunu çift tırnakla çevrelemeyi deneyin.
 	<string name="Command_Chat_Tooltip">
 		Metin kullanarak yakındaki kişilerle sohbet etmek
 	</string>
+	<string name="Command_Conversations_Tooltip">
+		Herkesle sohbet et
+	</string>
 	<string name="Command_Compass_Tooltip">
 		Pusula
 	</string>
@@ -5070,4 +5079,13 @@ Düzenleyici yolunu çift tırnakla çevrelemeyi deneyin.
 	<string name="UserDictionary">
 		[User]
 	</string>
+	<string name="logging_calls_disabled_log_empty">
+		Sohbetlerin günlüğü tutulmuyor. Bir günlük tutmaya başlamak için, Tercihler &gt; Sohbet altında &quot;Kaydet: Sadece günlük&quot; veya &quot;Kaydet: Günlük ve dökümler&quot; seçimini yapın.
+	</string>
+	<string name="logging_calls_disabled_log_not_empty">
+		Bundan böyle sohbetlerin günlükleri tutulmayacak. Bir günlük tutmaya devam etmek için, Tercihler &gt; Sohbet altında &quot;Kaydet: Sadece günlük&quot; veya &quot;Kaydet: Günlük ve dökümler&quot; seçimini yapın.
+	</string>
+	<string name="logging_calls_enabled_log_empty">
+		Günlüğü tutulmuş sohbet yok. Siz biriyle iletişime geçtikten sonra veya biri sizinle iletişime geçtikten sonra, burada bir günlük girişi gösterilir.
+	</string>
 </strings>
diff --git a/indra/newview/skins/default/xui/zh/floater_conversation_log.xml b/indra/newview/skins/default/xui/zh/floater_conversation_log.xml
new file mode 100644
index 00000000000..37115a0310e
--- /dev/null
+++ b/indra/newview/skins/default/xui/zh/floater_conversation_log.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_conversation_log" title="交談記錄">
+	<panel name="buttons_panel">
+		<filter_editor label="人員過濾器" name="people_filter_input"/>
+		<menu_button name="conversation_view_btn" tool_tip="檢視/排序的選項"/>
+		<menu_button name="conversations_gear_btn" tool_tip="對所選的人或群組採取動作"/>
+	</panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/zh/floater_conversation_preview.xml b/indra/newview/skins/default/xui/zh/floater_conversation_preview.xml
new file mode 100644
index 00000000000..ece263f440d
--- /dev/null
+++ b/indra/newview/skins/default/xui/zh/floater_conversation_preview.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="preview_conversation" title="交談:">
+	<floater.string name="Title">
+		交談:[NAME]
+	</floater.string>
+	<text name="page_label" value="頁"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/zh/floater_im_container.xml b/indra/newview/skins/default/xui/zh/floater_im_container.xml
index 2d66c659fe8..84ad869100c 100644
--- a/indra/newview/skins/default/xui/zh/floater_im_container.xml
+++ b/indra/newview/skins/default/xui/zh/floater_im_container.xml
@@ -1,2 +1,29 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<multi_floater name="floater_im_box" title="交談"/>
+<multi_floater name="floater_im_box" title="交談">
+	<string name="collapse_icon" value="Conv_toolbar_collapse"/>
+	<string name="expand_icon" value="Conv_toolbar_expand"/>
+	<layout_stack name="conversations_stack">
+		<layout_panel name="conversations_layout_panel">
+			<layout_stack name="conversations_pane_buttons_stack">
+				<layout_panel name="conversations_pane_buttons_expanded">
+					<menu_button name="sort_btn" tool_tip="檢視/排序的選項"/>
+					<button name="add_btn" tool_tip="開始新的交談"/>
+					<button name="speak_btn" tool_tip="用麥克風和大家交談"/>
+				</layout_panel>
+				<layout_panel name="conversations_pane_buttons_collapsed">
+					<button name="expand_collapse_btn" tool_tip="縮疊/展開這個清單"/>
+				</layout_panel>
+			</layout_stack>
+		</layout_panel>
+		<layout_panel name="messages_layout_panel">
+			<panel_container name="im_box_tab_container">
+				<panel name="stub_panel">
+					<button name="stub_collapse_btn" tool_tip="縮疊這一區塊"/>
+					<text name="stub_textbox">
+						這個交談另開了新視窗。   [secondlife:/// 把它收回來]
+					</text>
+				</panel>
+			</panel_container>
+		</layout_panel>
+	</layout_stack>
+</multi_floater>
diff --git a/indra/newview/skins/default/xui/zh/floater_im_session.xml b/indra/newview/skins/default/xui/zh/floater_im_session.xml
index 808a0b6720d..d63c5507db7 100644
--- a/indra/newview/skins/default/xui/zh/floater_im_session.xml
+++ b/indra/newview/skins/default/xui/zh/floater_im_session.xml
@@ -1,8 +1,59 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="panel_im">
-	<layout_stack name="im_panels">
-		<layout_panel>
-			<line_editor label="至" name="chat_editor"/>
-		</layout_panel>
-	</layout_stack>
+	<floater.string name="call_btn_start">
+		Conv_toolbar_open_call
+	</floater.string>
+	<floater.string name="call_btn_stop">
+		Conv_toolbar_hang_up
+	</floater.string>
+	<floater.string name="collapseline_icon" value="Conv_collapse_to_one_line"/>
+	<floater.string name="expandline_icon" value="Conv_expand_one_line"/>
+	<floater.string name="collapse_icon" value="Conv_toolbar_collapse"/>
+	<floater.string name="expand_icon" value="Conv_toolbar_expand"/>
+	<floater.string name="tear_off_icon" value="Conv_toolbar_arrow_ne"/>
+	<floater.string name="return_icon" value="Conv_toolbar_arrow_sw"/>
+	<floater.string name="participant_added" value="[NAME] 已受邀加入交談。"/>
+	<floater.string name="multiple_participants_added" value="[NAME] 已受邀加入交談。"/>
+	<floater.string name="tooltip_to_separate_window" value="為這個交談另開新視窗"/>
+	<floater.string name="tooltip_to_main_window" value="將這個交談移回到主視窗"/>
+	<floater.string name="start_call_button_tooltip" value="建立語音通聯"/>
+	<floater.string name="end_call_button_tooltip" value="切斷語音通聯"/>
+	<floater.string name="expcol_button_not_tearoff_tooltip" value="縮疊這一區塊"/>
+	<floater.string name="expcol_button_tearoff_and_expanded_tooltip" value="縮疊參與者清單"/>
+	<floater.string name="expcol_button_tearoff_and_collapsed_tooltip" value="展開參與者清單"/>
+	<view name="contents_view">
+		<layout_stack name="main_stack">
+			<layout_panel name="toolbar_panel">
+				<menu_button name="view_options_btn" tool_tip="檢視/排序的選項"/>
+				<menu_button name="gear_btn" tool_tip="對選取的人採取動作"/>
+				<button name="add_btn" tool_tip="新增某人到這個交談"/>
+				<button name="voice_call_btn" tool_tip="建立語音通聯"/>
+				<button name="close_btn" tool_tip="結束這個交談"/>
+				<button name="expand_collapse_btn" tool_tip="縮疊/展開這個框"/>
+			</layout_panel>
+			<layout_panel name="body_panel">
+				<layout_stack name="im_panels">
+					<layout_panel name="right_part_holder">
+						<panel name="trnsAndChat_panel">
+							<layout_stack name="translate_and_chat_stack">
+								<layout_panel name="translate_chat_checkbox_lp">
+									<check_box label="翻譯聊天內容" name="translate_chat_checkbox"/>
+								</layout_panel>
+							</layout_stack>
+						</panel>
+					</layout_panel>
+				</layout_stack>
+			</layout_panel>
+			<layout_panel name="chat_layout_panel">
+				<layout_stack name="input_panels">
+					<layout_panel name="input_editor_layout_panel">
+						<chat_editor label="至" name="chat_editor"/>
+					</layout_panel>
+					<layout_panel name="input_button_layout_panel">
+						<button name="minz_btn" tool_tip="顯示/隱藏訊息框"/>
+					</layout_panel>
+				</layout_stack>
+			</layout_panel>
+		</layout_stack>
+	</view>
 </floater>
diff --git a/indra/newview/skins/default/xui/zh/floater_incoming_call.xml b/indra/newview/skins/default/xui/zh/floater_incoming_call.xml
index 45a003d3c88..4526eff21d8 100644
--- a/indra/newview/skins/default/xui/zh/floater_incoming_call.xml
+++ b/indra/newview/skins/default/xui/zh/floater_incoming_call.xml
@@ -25,9 +25,9 @@
 		是否離開 [CURRENT_CHAT] 並加入這個語音聊天?
 	</floater.string>
 	<text name="question">
-		是否離開 [CURRENT_CHAT] 並加入這個語音聊天?
+		如果接聽,你將切斷目前的語音交談。
 	</text>
-	<button label="接受" label_selected="接受" name="Accept"/>
-	<button label="拒絕" label_selected="拒絕" name="Reject"/>
-	<button label="開始 IM" name="Start IM"/>
+	<button label="接聽" label_selected="接聽" name="Accept"/>
+	<button label="忽視" label_selected="忽視" name="Reject"/>
+	<button label="不接聽但開啟 IM" name="Start IM"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/zh/floater_pathfinding_console.xml b/indra/newview/skins/default/xui/zh/floater_pathfinding_console.xml
index be009b54d88..d0978b8b010 100644
--- a/indra/newview/skins/default/xui/zh/floater_pathfinding_console.xml
+++ b/indra/newview/skins/default/xui/zh/floater_pathfinding_console.xml
@@ -71,7 +71,7 @@
 			<text name="show_label">
 				顯示:
 			</text>
-			<check_box label="世界" name="show_world"/>
+			<check_box label="測試" name="show_world"/>
 			<check_box label="僅限可移動的" name="show_world_movables_only"/>
 			<check_box label="導航網面" name="show_navmesh"/>
 			<text name="show_walkability_label">
diff --git a/indra/newview/skins/default/xui/zh/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/zh/floater_texture_ctrl.xml
index e909a67e2c6..02d06323d47 100644
--- a/indra/newview/skins/default/xui/zh/floater_texture_ctrl.xml
+++ b/indra/newview/skins/default/xui/zh/floater_texture_ctrl.xml
@@ -19,7 +19,7 @@
 	<button label="預設" label_selected="預設" name="Default"/>
 	<button label="空白" label_selected="空白" name="Blank"/>
 	<button label="ç„¡" label_selected="ç„¡" name="None"/>
-	<check_box initial_value="true" label="實時預覽" name="apply_immediate_check"/>
+	<check_box initial_value="true" label="立即套用" name="apply_immediate_check"/>
 	<text name="preview_disabled" value="已停用預覽"/>
 	<filter_editor label="材質過濾器" name="inventory search editor"/>
 	<check_box initial_value="false" label="顯示資料夾" name="show_folders_check"/>
diff --git a/indra/newview/skins/default/xui/zh/floater_voice_chat_volume.xml b/indra/newview/skins/default/xui/zh/floater_voice_chat_volume.xml
new file mode 100644
index 00000000000..96caa7d3334
--- /dev/null
+++ b/indra/newview/skins/default/xui/zh/floater_voice_chat_volume.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_voice_volume" title="語音聊天音量">
+	<slider label="語音聊天" name="chat_voice_volume"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/zh/floater_voice_effect.xml b/indra/newview/skins/default/xui/zh/floater_voice_effect.xml
index 81e0204262e..aab5fa60289 100644
--- a/indra/newview/skins/default/xui/zh/floater_voice_effect.xml
+++ b/indra/newview/skins/default/xui/zh/floater_voice_effect.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater label="地點" name="voice_effects" title="語音變聲">
+<floater label="地點" name="voice_effects" title="語音變聲試聽">
 	<string name="no_voice_effect">
 		(無變聲效果)
 	</string>
diff --git a/indra/newview/skins/default/xui/zh/floater_voice_volume.xml b/indra/newview/skins/default/xui/zh/floater_voice_volume.xml
new file mode 100644
index 00000000000..4260a8d3314
--- /dev/null
+++ b/indra/newview/skins/default/xui/zh/floater_voice_volume.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!--
+  Not can_close / no title to avoid window chrome
+  Single instance - only have one at a time, recycle it each spawn
+-->
+<floater name="floater_voice_volume" title="音量">
+	<slider name="volume_slider" tool_tip="音量" value="0.5"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/zh/menu_cof_gear.xml b/indra/newview/skins/default/xui/zh/menu_cof_gear.xml
index cd069f96017..eb7093a23c9 100644
--- a/indra/newview/skins/default/xui/zh/menu_cof_gear.xml
+++ b/indra/newview/skins/default/xui/zh/menu_cof_gear.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu name="Gear COF">
 	<menu label="新衣服" name="COF.Gear.New_Clothes"/>
-	<menu label="新身體部位" name="COF.Geear.New_Body_Parts"/>
+	<menu label="新身體部位" name="COF.Gear.New_Body_Parts"/>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_conversation.xml b/indra/newview/skins/default/xui/zh/menu_conversation.xml
new file mode 100644
index 00000000000..507255d0c04
--- /dev/null
+++ b/indra/newview/skins/default/xui/zh/menu_conversation.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_conversation_participant">
+	<menu_item_call label="關閉交談" name="close_conversation"/>
+	<menu_item_call label="開啟語音交談" name="open_voice_conversation"/>
+	<menu_item_call label="切斷語音交談" name="disconnect_from_voice"/>
+	<menu_item_call label="察看檔案" name="view_profile"/>
+	<menu_item_call label="IM" name="im"/>
+	<menu_item_call label="發出瞬間傳送邀請" name="offer_teleport"/>
+	<menu_item_call label="語音通話" name="voice_call"/>
+	<menu_item_call label="聊天歷史……" name="chat_history"/>
+	<menu_item_call label="新增朋友" name="add_friend"/>
+	<menu_item_call label="移除朋友" name="remove_friend"/>
+	<menu_item_call label="移除朋友" name="remove_friends"/>
+	<menu_item_call label="邀請加入群組……" name="invite_to_group"/>
+	<menu_item_call label="放大" name="zoom_in"/>
+	<menu_item_call label="地圖" name="map"/>
+	<menu_item_call label="分享" name="share"/>
+	<menu_item_call label="支付" name="pay"/>
+	<menu_item_check label="禁止語音" name="block_unblock"/>
+	<menu_item_check label="禁止文字" name="MuteText"/>
+	<menu_item_call label="群組檔案" name="group_profile"/>
+	<menu_item_call label="啟用群組" name="activate_group"/>
+	<menu_item_call label="離開群組" name="leave_group"/>
+	<context_menu label="主持人選項" name="Moderator Options">
+		<menu_item_check label="允許文字聊天" name="AllowTextChat"/>
+		<menu_item_call label="將此人消音" name="ModerateVoiceMuteSelected"/>
+		<menu_item_call label="取消對此人的消音" name="ModerateVoiceUnMuteSelected"/>
+		<menu_item_call label="所有人消音" name="ModerateVoiceMute"/>
+		<menu_item_call label="取消所有人的消音" name="ModerateVoiceUnmute"/>
+	</context_menu>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_conversation_log_gear.xml b/indra/newview/skins/default/xui/zh/menu_conversation_log_gear.xml
new file mode 100644
index 00000000000..49e91417e89
--- /dev/null
+++ b/indra/newview/skins/default/xui/zh/menu_conversation_log_gear.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Conversation Context Menu">
+	<menu_item_call label="IM…" name="IM"/>
+	<menu_item_call label="語音通話…" name="Call"/>
+	<menu_item_call label="開啟聊天歷史…" name="Chat history"/>
+	<menu_item_call label="察看檔案" name="View Profile"/>
+	<menu_item_call label="發給瞬間傳送請求" name="teleport"/>
+	<menu_item_call label="加為朋友" name="add_friend"/>
+	<menu_item_call label="移除朋友" name="remove_friend"/>
+	<menu_item_call label="邀請加入群組……" name="Invite"/>
+	<menu_item_call label="地圖" name="Map"/>
+	<menu_item_call label="分享" name="Share"/>
+	<menu_item_call label="支付" name="Pay"/>
+	<menu_item_check label="封鎖/不再封鎖" name="Block/Unblock"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_conversation_log_view.xml b/indra/newview/skins/default/xui/zh/menu_conversation_log_view.xml
new file mode 100644
index 00000000000..3fa99a5cd7b
--- /dev/null
+++ b/indra/newview/skins/default/xui/zh/menu_conversation_log_view.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_conversation_view">
+	<menu_item_check label="依名稱排序" name="sort_by_name"/>
+	<menu_item_check label="依日期排序" name="sort_by_date"/>
+	<menu_item_check label="將朋友列在頂端" name="sort_by_friends"/>
+	<menu_item_call label="檢視附近聊天歷史……" name="view_nearby_chat_history"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_im_conversation.xml b/indra/newview/skins/default/xui/zh/menu_im_conversation.xml
new file mode 100644
index 00000000000..815b0b594cc
--- /dev/null
+++ b/indra/newview/skins/default/xui/zh/menu_im_conversation.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Conversation Gear Menu">
+	<menu_item_call label="察看檔案" name="View Profile"/>
+	<menu_item_call label="加為朋友" name="Add Friend"/>
+	<menu_item_call label="移除朋友" name="remove_friend"/>
+	<menu_item_call label="發出瞬間傳送邀請" name="offer_teleport"/>
+	<menu_item_call label="邀請加入群組……" name="invite_to_group"/>
+	<menu_item_call label="聊天歷史……" name="chat_history"/>
+	<menu_item_call label="放大" name="zoom_in"/>
+	<menu_item_call label="地圖" name="map"/>
+	<menu_item_call label="分享" name="Share"/>
+	<menu_item_call label="支付" name="Pay"/>
+	<menu_item_check label="禁止語音" name="Block/Unblock"/>
+	<menu_item_check label="禁止文字" name="MuteText"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_im_session_showmodes.xml b/indra/newview/skins/default/xui/zh/menu_im_session_showmodes.xml
new file mode 100644
index 00000000000..a7006e524a3
--- /dev/null
+++ b/indra/newview/skins/default/xui/zh/menu_im_session_showmodes.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_modes">
+	<menu_item_check label="精簡視野" name="compact_view"/>
+	<menu_item_check label="全展視野" name="expanded_view"/>
+	<menu_item_check label="顯示時間" name="IMShowTime"/>
+	<menu_item_check label="一對一交談時顯示名字" name="IMShowNamesForP2PConv"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_object_icon.xml b/indra/newview/skins/default/xui/zh/menu_object_icon.xml
index f4f93b0bdc2..9655732f2e0 100644
--- a/indra/newview/skins/default/xui/zh/menu_object_icon.xml
+++ b/indra/newview/skins/default/xui/zh/menu_object_icon.xml
@@ -2,4 +2,6 @@
 <menu name="Object Icon Menu">
 	<menu_item_call label="物件檔案..." name="Object Profile"/>
 	<menu_item_call label="封鎖…" name="Block"/>
+	<menu_item_call label="顯示在地圖上" name="show_on_map"/>
+	<menu_item_call label="瞬間傳送到物件位置" name="teleport_to_object"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_outfit_gear.xml b/indra/newview/skins/default/xui/zh/menu_outfit_gear.xml
index e85b4b71821..258d0d6b20e 100644
--- a/indra/newview/skins/default/xui/zh/menu_outfit_gear.xml
+++ b/indra/newview/skins/default/xui/zh/menu_outfit_gear.xml
@@ -23,6 +23,8 @@
 		<menu_item_call label="æ–°é ­é«®" name="New Hair"/>
 		<menu_item_call label="新眼睛" name="New Eyes"/>
 	</menu>
+	<menu_item_call label="展開全部資料夾" name="expand"/>
+	<menu_item_call label="摺疊全部資料夾" name="collapse"/>
 	<menu_item_call label="裝扮更名" name="rename"/>
 	<menu_item_call label="刪除裝扮" name="delete_outfit"/>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_participant_view.xml b/indra/newview/skins/default/xui/zh/menu_participant_view.xml
new file mode 100644
index 00000000000..8b35860eb60
--- /dev/null
+++ b/indra/newview/skins/default/xui/zh/menu_participant_view.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="participant_manu_view">
+	<menu_item_check label="將交談依類型排序" name="sort_sessions_by_type"/>
+	<menu_item_check label="將交談依名字排序" name="sort_sessions_by_name"/>
+	<menu_item_check label="將交談依最近活動排序" name="sort_sessions_by_recent"/>
+	<menu_item_check label="將參與者依名字排序" name="sort_participants_by_name"/>
+	<menu_item_check label="將參與者依最近活動排序" name="sort_participants_by_recent"/>
+	<menu_item_call label="聊天偏好設定……" name="chat_preferences"/>
+	<menu_item_call label="隱私偏好設定……" name="privacy_preferences"/>
+	<menu_item_check label="交談記錄……" name="Conversation"/>
+	<menu_item_check label="翻譯附近的聊天" name="Translate_chat"/>
+	<menu_item_check label="翻譯設定……" name="Translation_settings"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_people_blocked_gear.xml b/indra/newview/skins/default/xui/zh/menu_people_blocked_gear.xml
new file mode 100644
index 00000000000..9a2a3c403d5
--- /dev/null
+++ b/indra/newview/skins/default/xui/zh/menu_people_blocked_gear.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_blocked_gear">
+	<menu_item_call label="解除封鎖" name="unblock"/>
+	<menu_item_call label="檔案..." name="profile"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_people_blocked_plus.xml b/indra/newview/skins/default/xui/zh/menu_people_blocked_plus.xml
new file mode 100644
index 00000000000..a8cecb4e147
--- /dev/null
+++ b/indra/newview/skins/default/xui/zh/menu_people_blocked_plus.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_blocked_plus">
+	<menu_item_call label="按名字封鎖居民……" name="block_resident_by_name"/>
+	<menu_item_call label="依名稱封鎖物件" name="block_object_by_name"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_people_blocked_view.xml b/indra/newview/skins/default/xui/zh/menu_people_blocked_view.xml
new file mode 100644
index 00000000000..5b70cd35bff
--- /dev/null
+++ b/indra/newview/skins/default/xui/zh/menu_people_blocked_view.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_blocked_view">
+	<menu_item_check label="依名稱排序" name="sort_by_name"/>
+	<menu_item_check label="依類型排序" name="sort_by_type"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_people_friends_view.xml b/indra/newview/skins/default/xui/zh/menu_people_friends_view.xml
new file mode 100644
index 00000000000..4251238fd95
--- /dev/null
+++ b/indra/newview/skins/default/xui/zh/menu_people_friends_view.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="依名稱排序" name="sort_name"/>
+	<menu_item_check label="依狀態排序" name="sort_status"/>
+	<menu_item_check label="察看人群圖示" name="view_icons"/>
+	<menu_item_check label="察看許可權限" name="view_permissions"/>
+	<menu_item_check label="檢視交談記錄……" name="view_conversation"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_people_groups.xml b/indra/newview/skins/default/xui/zh/menu_people_groups.xml
index 5768c554c9c..b4b566f5cae 100644
--- a/indra/newview/skins/default/xui/zh/menu_people_groups.xml
+++ b/indra/newview/skins/default/xui/zh/menu_people_groups.xml
@@ -2,7 +2,7 @@
 <menu name="menu_group_plus">
 	<menu_item_call label="察看資訊" name="View Info"/>
 	<menu_item_call label="聊天" name="Chat"/>
-	<menu_item_call label="通話" name="Call"/>
+	<menu_item_call label="語音通話" name="Call"/>
 	<menu_item_call label="å•Ÿå‹•" name="Activate"/>
 	<menu_item_call label="退出" name="Leave"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_people_groups_view.xml b/indra/newview/skins/default/xui/zh/menu_people_groups_view.xml
new file mode 100644
index 00000000000..05a30d938f2
--- /dev/null
+++ b/indra/newview/skins/default/xui/zh/menu_people_groups_view.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="顯示群組圖示" name="Display Group Icons"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_people_nearby.xml b/indra/newview/skins/default/xui/zh/menu_people_nearby.xml
index 38d5f3d3247..d25adaf8fb5 100644
--- a/indra/newview/skins/default/xui/zh/menu_people_nearby.xml
+++ b/indra/newview/skins/default/xui/zh/menu_people_nearby.xml
@@ -1,13 +1,16 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Avatar Context Menu">
-	<menu_item_call label="察看檔案" name="View Profile"/>
-	<menu_item_call label="加為朋友" name="Add Friend"/>
-	<menu_item_call label="移除朋友" name="Remove Friend"/>
-	<menu_item_call label="IM" name="IM"/>
-	<menu_item_call label="通話" name="Call"/>
-	<menu_item_call label="地圖" name="Map"/>
-	<menu_item_call label="分享" name="Share"/>
-	<menu_item_call label="支付" name="Pay"/>
-	<menu_item_check label="封鎖/不再封鎖" name="Block/Unblock"/>
-	<menu_item_call label="發給瞬間傳送請求" name="teleport"/>
+	<menu_item_call label="察看檔案" name="view_profile"/>
+	<menu_item_call label="IM" name="im"/>
+	<menu_item_call label="發給瞬間傳送請求" name="offer_teleport"/>
+	<menu_item_call label="語音通話" name="voice_call"/>
+	<menu_item_call label="檢視聊天歷史……" name="chat_history"/>
+	<menu_item_call label="加為朋友" name="add_friend"/>
+	<menu_item_call label="移除朋友" name="remove_friend"/>
+	<menu_item_call label="邀請加入群組……" name="invite_to_group"/>
+	<menu_item_call label="放大" name="zoom_in"/>
+	<menu_item_call label="地圖" name="map"/>
+	<menu_item_call label="分享" name="share"/>
+	<menu_item_call label="支付" name="pay"/>
+	<menu_item_check label="封鎖/不再封鎖" name="block_unblock"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/zh/menu_people_nearby_multiselect.xml
index 1380e0b307c..69f0eab7dc9 100644
--- a/indra/newview/skins/default/xui/zh/menu_people_nearby_multiselect.xml
+++ b/indra/newview/skins/default/xui/zh/menu_people_nearby_multiselect.xml
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Multi-Selected People Context Menu">
-	<menu_item_call label="加為朋友" name="Add Friends"/>
-	<menu_item_call label="移除朋友" name="Remove Friend"/>
-	<menu_item_call label="IM" name="IM"/>
-	<menu_item_call label="通話" name="Call"/>
-	<menu_item_call label="分享" name="Share"/>
-	<menu_item_call label="支付" name="Pay"/>
-	<menu_item_call label="發給瞬間傳送請求" name="teleport"/>
+	<menu_item_call label="加為朋友" name="add_friends"/>
+	<menu_item_call label="移除朋友" name="remove_friends"/>
+	<menu_item_call label="IM" name="im"/>
+	<menu_item_call label="通話" name="call"/>
+	<menu_item_call label="分享" name="share"/>
+	<menu_item_call label="支付" name="pay"/>
+	<menu_item_call label="發給瞬間傳送請求" name="offer_teleport"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_people_nearby_view.xml b/indra/newview/skins/default/xui/zh/menu_people_nearby_view.xml
new file mode 100644
index 00000000000..9bc56384726
--- /dev/null
+++ b/indra/newview/skins/default/xui/zh/menu_people_nearby_view.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="依最近說話者排序" name="sort_by_recent_speakers"/>
+	<menu_item_check label="依名稱排序" name="sort_name"/>
+	<menu_item_check label="依距離排序" name="sort_distance"/>
+	<menu_item_check label="察看人群圖示" name="view_icons"/>
+	<menu_item_check label="察看地圖" name="view_map"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_people_recent_view.xml b/indra/newview/skins/default/xui/zh/menu_people_recent_view.xml
new file mode 100644
index 00000000000..382234c3ecf
--- /dev/null
+++ b/indra/newview/skins/default/xui/zh/menu_people_recent_view.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="依最近排序" name="sort_most"/>
+	<menu_item_check label="依名稱排序" name="sort_name"/>
+	<menu_item_check label="察看人群圖示" name="view_icons"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_url_agent.xml b/indra/newview/skins/default/xui/zh/menu_url_agent.xml
index 592bb6561e9..72629822d4b 100644
--- a/indra/newview/skins/default/xui/zh/menu_url_agent.xml
+++ b/indra/newview/skins/default/xui/zh/menu_url_agent.xml
@@ -1,6 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Url Popup">
-	<menu_item_call label="顯示居民檔案" name="show_agent"/>
+	<menu_item_call label="察看檔案" name="show_agent"/>
+	<menu_item_call label="送出 IM..." name="send_im"/>
+	<menu_item_call label="加為朋友..." name="add_friend"/>
 	<menu_item_call label="覆製名稱到剪貼簿" name="url_copy_label"/>
 	<menu_item_call label="覆製 SLurl 到剪貼簿" name="url_copy"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_url_objectim.xml b/indra/newview/skins/default/xui/zh/menu_url_objectim.xml
index b344b21c62f..9f3a9d58ffd 100644
--- a/indra/newview/skins/default/xui/zh/menu_url_objectim.xml
+++ b/indra/newview/skins/default/xui/zh/menu_url_objectim.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Url Popup">
-	<menu_item_call label="顯示物件資訊" name="show_object"/>
+	<menu_item_call label="物件檔案..." name="show_object"/>
 	<menu_item_call label="顯示在地圖上" name="show_on_map"/>
 	<menu_item_call label="瞬間傳送到物件位置" name="teleport_to_object"/>
 	<menu_item_call label="覆製物件名稱到剪貼簿" name="url_copy_label"/>
diff --git a/indra/newview/skins/default/xui/zh/menu_viewer.xml b/indra/newview/skins/default/xui/zh/menu_viewer.xml
index ac0e9e7e358..09bdc578196 100644
--- a/indra/newview/skins/default/xui/zh/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/zh/menu_viewer.xml
@@ -16,10 +16,7 @@
 			<menu_item_call label="停止我身上的動作" name="Stop Animating My Avatar"/>
 			<menu_item_call label="行走 / 跑步 / 飛行…" name="Walk / run / fly"/>
 		</menu>
-		<menu label="狀態" name="Status">
-			<menu_item_call label="離開" name="Set Away"/>
-			<menu_item_call label="忙碌" name="Set Busy"/>
-		</menu>
+		<menu label="狀態" name="Status"/>
 		<menu_item_call label="購買 L$…" name="Buy and Sell L$"/>
 		<menu_item_call label="商家發件匣…" name="MerchantOutbox"/>
 		<menu_item_call label="帳戶主控臺…" name="Manage My Account"/>
@@ -30,14 +27,18 @@
 		<menu_item_call label="退出 [APP_NAME]" name="Quit"/>
 	</menu>
 	<menu label="溝通" name="Communicate">
-		<menu_item_check label="聊天…" name="Nearby Chat"/>
+		<menu_item_check label="交談……" name="Conversations"/>
+		<menu_item_check label="附近的聊天……" name="Nearby Chat"/>
 		<menu_item_check label="說話" name="Speak"/>
-		<menu_item_check label="語音設定…" name="Nearby Voice"/>
-		<menu_item_check label="語音變聲…" name="ShowVoice"/>
+		<menu label="語音變聲" name="VoiceMorphing">
+			<menu_item_check label="沒有變聲效果" name="NoVoiceMorphing"/>
+			<menu_item_check label="預覽……" name="Preview"/>
+			<menu_item_call label="訂閱……" name="Subscribe"/>
+		</menu>
 		<menu_item_check label="姿勢…" name="Gestures"/>
-		<menu_item_call label="朋友" name="My Friends"/>
-		<menu_item_call label="群組" name="My Groups"/>
-		<menu_item_call label="附近的人群" name="Active Speakers"/>
+		<menu_item_check label="朋友" name="My Friends"/>
+		<menu_item_check label="群組" name="My Groups"/>
+		<menu_item_check label="附近的人群" name="Active Speakers"/>
 		<menu_item_call label="封鎖清單" name="Block List"/>
 	</menu>
 	<menu label="世界" name="World">
@@ -113,7 +114,6 @@
 			<menu_item_call label="購買" name="Menu Object Buy"/>
 			<menu_item_call label="取得" name="Menu Object Take"/>
 			<menu_item_call label="取得副本" name="Take Copy"/>
-			<menu_item_call label="回存到我的收納區" name="Save Object Back to My Inventory"/>
 			<menu_item_call label="回存到物件內容" name="Save Object Back to Object Contents"/>
 			<menu_item_call label="退回物件" name="Return Object back to Owner"/>
 		</menu>
@@ -128,6 +128,7 @@
 			<menu_item_call label="聯結集…" name="pathfinding_linksets_menu_item"/>
 			<menu_item_call label="角色…" name="pathfinding_characters_menu_item"/>
 			<menu_item_call label="察看 / 測試…" name="pathfinding_console_menu_item"/>
+			<menu_item_call label="重新產出地區" name="pathfinding_rebake_navmesh_item"/>
 		</menu>
 		<menu label="選項" name="Options">
 			<menu_item_check label="顯示進階權限" name="DebugPermissions"/>
@@ -157,6 +158,13 @@
 	<menu label="幫助" name="Help">
 		<menu_item_call label="簡易教學…" name="How To"/>
 		<menu_item_call label="[SECOND_LIFE] 幫助" name="Second Life Help"/>
+		<menu_item_call label="使用者指南" name="User’s guide"/>
+		<menu_item_call label="知識庫" name="Knowledge Base"/>
+		<menu_item_call label="維基" name="Wiki"/>
+		<menu_item_call label="社群論壇" name="Community Forums"/>
+		<menu_item_call label="支援入口" name="Support portal"/>
+		<menu_item_call label="[SECOND_LIFE] 最新消息" name="Second Life News"/>
+		<menu_item_call label="[SECOND_LIFE] 部落格" name="Second Life Blogs"/>
 		<menu_item_call label="違規舉報" name="Report Abuse"/>
 		<menu_item_call label="回報臭蟲" name="Report Bug"/>
 		<menu_item_call label="關於 [APP_NAME]" name="About Second Life"/>
@@ -383,9 +391,14 @@
 				<menu_item_call label="女性測試" name="Test Female"/>
 				<menu_item_check label="允許選擇化身" name="Allow Select Avatar"/>
 			</menu>
+			<menu label="動作速度" name="Animation Speed">
+				<menu_item_call label="所有動作加快 10%" name="All Animations 10 Faster"/>
+				<menu_item_call label="所有動作放慢 10%" name="All Animations 10 Slower"/>
+				<menu_item_call label="將所有動作恢復原速" name="Reset All Animation Speed"/>
+				<menu_item_check label="慢動作" name="Slow Motion Animations"/>
+			</menu>
 			<menu_item_call label="強制參數為預設值" name="Force Params to Default"/>
 			<menu_item_check label="動作資訊" name="Animation Info"/>
-			<menu_item_check label="慢動作" name="Slow Motion Animations"/>
 			<menu_item_check label="顯示注視在" name="Show Look At"/>
 			<menu_item_check label="顯示指向在" name="Show Point At"/>
 			<menu_item_check label="除錯旋軸的更新" name="Debug Joint Updates"/>
diff --git a/indra/newview/skins/default/xui/zh/notifications.xml b/indra/newview/skins/default/xui/zh/notifications.xml
index 9fecf2c104d..59be26d43bf 100644
--- a/indra/newview/skins/default/xui/zh/notifications.xml
+++ b/indra/newview/skins/default/xui/zh/notifications.xml
@@ -516,6 +516,24 @@
 		</url>
 		<usetemplate ignoretext="我的顯示驅動程式太老舊" name="okcancelignore" notext="否" yestext="是"/>
 	</notification>
+	<notification name="AMDOldDriver">
+		你的顯示卡很可能有新版的驅動程式。  更新顯示驅動程式會大幅改善性能。
+
+    前往 [_URL] 察看是否有新版驅動程式?
+		<url name="url">
+			http://support.amd.com/us/Pages/AMDSupportHub.aspx
+		</url>
+		<usetemplate ignoretext="我的顯示驅動程式太老舊" name="okcancelignore" notext="否" yestext="是"/>
+	</notification>
+	<notification name="NVIDIAOldDriver">
+		你的顯示卡很可能有新版的驅動程式。  更新顯示驅動程式會大幅改善性能。
+
+    前往 [_URL] 察看是否有新版驅動程式?
+		<url name="url">
+			http://www.nvidia.com/Download/index.aspx?lang=tw
+		</url>
+		<usetemplate ignoretext="我的顯示驅動程式太老舊" name="okcancelignore" notext="否" yestext="是"/>
+	</notification>
 	<notification name="UnknownGPU">
 		你的系統含有一個 [APP_NAME] 無法辨認的顯像卡。
 原因很可能是 [APP_NAME] 尚未針對新硬體完成測試。  這大概不會出問題,但你可能需要調整顯像設定。
@@ -1536,10 +1554,13 @@ SHA1 指紋:[MD5_DIGEST]
 		此時無法發出交友邀請。 請稍候再試。
 		<usetemplate name="okbutton" yestext="確定"/>
 	</notification>
-	<notification name="BusyModeSet">
-		已設為忙碌模式。
-聊天和即時訊息內容將被隱藏。 即時訊息發送者將收到你的「忙碌模式」回應。 所有的瞬間傳送邀請都將被婉拒。 此時起送給你的收納區物項都將丟入垃圾桶。
-		<usetemplate ignoretext="我變更我的狀態為忙碌模式" name="okignore" yestext="確定"/>
+	<notification name="DoNotDisturbModeSet">
+		「請勿打擾」模式目前是開啟狀態。  你將不會收到任何發給你的訊息通知。
+
+- 其他居民將收到你的「請勿打擾」回應(回應內容設於「偏好設定 &gt; 一般設定」)。
+- 所有瞬間傳送的邀請都將被婉拒。
+- 所有語音來電都將拒絕接聽。
+		<usetemplate ignoretext="我變更我的狀態為「請勿打擾」模式" name="okignore" yestext="確定"/>
 	</notification>
 	<notification name="JoinedTooManyGroupsMember">
 		你已達可同時加入的群組數上限。 請先離開另一個群組再加入這一個,或婉拒加入邀請。
@@ -2024,6 +2045,10 @@ SHA1 指紋:[MD5_DIGEST]
 		前往你的[http://secondlife.com/account/ 塗鴉牆]以察看你的帳戶歷史紀錄?
 		<usetemplate ignoretext="啟動我的瀏覽器以察看我的帳戶歷史紀錄" name="okcancelignore" notext="取消" yestext="前往頁面"/>
 	</notification>
+	<notification name="ConfirmAddingChatParticipants">
+		新增一個人到現有的交談,等於建立新的交談。  所有交談者將會收到新交談通知。
+		<usetemplate ignoretext="確認新增聊天者" name="okcancelignore" notext="取消" yestext="確定"/>
+	</notification>
 	<notification name="ConfirmQuit">
 		你確定你要結束退出?
 		<usetemplate ignoretext="當我結束退出時進行確認" name="okcancelignore" notext="不要結束退出" yestext="結束退出"/>
@@ -2098,14 +2123,14 @@ SHA1 指紋:[MD5_DIGEST]
 			<button ignore="絕不取代" name="No" text="取消"/>
 		</form>
 	</notification>
-	<notification label="忙碌模式警告" name="BusyModePay">
-		你現在處於忙碌模式,這意味著你付費後仍將不會收到任何物項。
+	<notification label="「請勿打擾」模式警告" name="DoNotDisturbModePay">
+		你已開啟「請勿打擾」。 你將不會收到任何付款購買的物項。
 
-你是否要先離開忙碌模式,再完成交易?
+是否要在完成交易之前,先關閉「請勿打擾」模式?
 		<form name="form">
-			<ignore name="ignore" text="當我在忙碌模式時,將要支付金錢或給他人物件"/>
-			<button ignore="總是離開忙碌模式" name="Yes" text="確定"/>
-			<button ignore="絕不離開忙碌模式" name="No" text="取消"/>
+			<ignore name="ignore" text="我即將在「請勿打擾」模式下,試圖付錢給他人或給一個物件"/>
+			<button ignore="固定選擇離開「請勿打擾」模式" name="Yes" text="確定"/>
+			<button ignore="永不離開「請勿打擾」模式" name="No" text="取消"/>
 		</form>
 	</notification>
 	<notification name="ConfirmDeleteProtectedCategory">
@@ -2240,11 +2265,8 @@ SHA1 指紋:[MD5_DIGEST]
 	<notification name="GroupNotice">
 		主旨:[SUBJECT],訊息:[MESSAGE]
 	</notification>
-	<notification name="FriendOnline">
-		&lt;nolink&gt;[NAME]&lt;/nolink&gt; 目前在線上
-	</notification>
-	<notification name="FriendOffline">
-		&lt;nolink&gt;[NAME]&lt;/nolink&gt; 目前離線
+	<notification name="FriendOnlineOffline">
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; 目前狀態為 [STATUS]
 	</notification>
 	<notification name="AddSelfFriend">
 		雖然你人很好,你還是不能把自己加為朋友。
@@ -2472,13 +2494,6 @@ SHA1 指紋:[MD5_DIGEST]
 	<notification name="DynamicPathfindingDisabled">
 		這地區並未啟用動態尋徑。  使用尋徑 LSL 呼叫的帶腳本物件,在此地區可能無法正常運作。
 	</notification>
-	<notification name="PathfindingRebakeNavmesh">
-		更改本地區的某些物件將導致其他移動物件的運作發生問題。  要使移動物件正常運作,請點按「重新產出地區」按鈕。  欲獲知詳情請選擇「幫助」。
-		<url name="url">
-			http://wiki.secondlife.com/wiki/Pathfinding_Tools_in_the_Second_Life_Viewer
-		</url>
-		<usetemplate helptext="幫助" ignoretext="更改本地區的某些物件將導致其他移動物件的運作發生問題。" name="okhelpignore" yestext="確定"/>
-	</notification>
 	<notification name="PathfindingCannotRebakeNavmesh">
 		發生錯誤。  問題可能出在網路或伺服器,也可能因為你無權建製物件。  有時,只要登出再登入即能解決這類問題。
 		<usetemplate name="okbutton" yestext="確定"/>
@@ -2741,7 +2756,7 @@ SHA1 指紋:[MD5_DIGEST]
 	<notification name="ScriptQuestionCaution">
 		警告:物件 &apos;&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;&apos; 要求全權存取你的林登幣帳戶。 你如果允許存取帳戶,它將可在任何時候從你帳戶取走資金,或完全加以清空,或定期取走部分資金,且不會發出警告。
   
-這很可能是種不當的要求。 如果你不完全瞭解它為何要求存取你的帳戶,請勿允准。
+如果你不完全瞭解它為何要求存取你的帳戶,請勿允准。
 		<form name="form">
 			<button name="Grant" text="允許全權存取"/>
 			<button name="Deny" text="拒絕"/>
@@ -3323,4 +3338,633 @@ SHA1 指紋:[MD5_DIGEST]
 		你正在刪除 [NUM_ITEMS] 個物項。  你確定你要繼續?
 		<usetemplate ignoretext="確定要刪除多個物項?" name="okcancelignore" notext="否" yestext="是"/>
 	</notification>
+	<notification name="AvatarFrozen">
+		[AV_FREEZER] 凍結了你。 你此時無法移動或與周遭互動。
+	</notification>
+	<notification name="AvatarFrozenDuration">
+		[AV_FREEZER] 凍結了你 [AV_FREEZE_TIME] 秒鐘。 你此時無法移動或與周遭互動。
+	</notification>
+	<notification name="YouFrozeAvatar">
+		化身已凍結。
+	</notification>
+	<notification name="AvatarHasUnFrozenYou">
+		[AV_FREEZER] 解除了對你的凍結。
+	</notification>
+	<notification name="AvatarUnFrozen">
+		化身已解除凍結。
+	</notification>
+	<notification name="AvatarFreezeFailure">
+		凍結失敗,因為你在該地段沒有管理員權限。
+	</notification>
+	<notification name="AvatarFreezeThaw">
+		你遭凍結的時間已過,請恢復正常活動。
+	</notification>
+	<notification name="AvatarCantFreeze">
+		抱歉,無法凍結該用戶。
+	</notification>
+	<notification name="NowOwnObject">
+		你現在是物件 [OBJECT_NAME] 的所有人
+	</notification>
+	<notification name="CantRezOnLand">
+		無法在 [OBJECT_POS] 產生物件,因為這土地的所有人不允許。  請用土地工具察看所有人。
+	</notification>
+	<notification name="RezFailTooManyRequests">
+		無法產生物件,此刻要求數目過多。
+	</notification>
+	<notification name="SitFailCantMove">
+		你無法坐下,因為此刻你不能移動。
+	</notification>
+	<notification name="SitFailNotAllowedOnLand">
+		你不能坐下,因為該土地不允許。
+	</notification>
+	<notification name="SitFailNotSameRegion">
+		請挨近一點。  無法坐在物件上,因為
+它和你不在同一個地區。
+	</notification>
+	<notification name="NoNewObjectRegionFull">
+		無法建立新物件。 地區已滿載。
+	</notification>
+	<notification name="FailedToPlaceObject">
+		無法將物件置於指定地點。  請再試一次。
+	</notification>
+	<notification name="NoOwnNoGardening">
+		你無法在別人的土地上建立樹和草。
+	</notification>
+	<notification name="NoCopyPermsNoObject">
+		複製失敗,你無權複製物件 &apos;[OBJ_NAME]&apos;。
+	</notification>
+	<notification name="NoTransPermsNoObject">
+		複製失敗,因為物件 &apos;[OBJ_NAME]&apos; 無法轉移給你。
+	</notification>
+	<notification name="AddToNavMeshNoCopy">
+		複製失敗,因為物件 &apos;[OBJ_NAME]&apos; 對導航網面有貢獻。
+	</notification>
+	<notification name="DupeWithNoRootsSelected">
+		選取了沒有根的重覆物件。
+	</notification>
+	<notification name="CantDupeCuzRegionIsFull">
+		無法複製物件,因為地區滿載。
+	</notification>
+	<notification name="CantDupeCuzParcelNotFound">
+		無法複製物件,找不到它們所在的地段。
+	</notification>
+	<notification name="CantCreateCuzParcelFull">
+		無法建立物件,因為 
+地段滿載。
+	</notification>
+	<notification name="RezAttemptFailed">
+		試圖產生物件失敗。
+	</notification>
+	<notification name="ToxicInvRezAttemptFailed">
+		無法建立已在此地區造成問題的物件。
+	</notification>
+	<notification name="InvItemIsBlacklisted">
+		該收納區物項已被列入黑名單。
+	</notification>
+	<notification name="NoCanRezObjects">
+		你此時無權建立物件。
+	</notification>
+	<notification name="LandSearchBlocked">
+		土地搜尋遭禁。
+你在短時間內進行了太多次土地搜尋。
+請稍候再試。
+	</notification>
+	<notification name="NotEnoughResourcesToAttach">
+		腳本資源不足,無法附著物件!
+	</notification>
+	<notification name="YouDiedAndGotTPHome">
+		你已經死亡並且被瞬間傳送回你的家的位置
+	</notification>
+	<notification name="EjectComingSoon">
+		你不再允許待在這裡,必須在 [EJECT_TIME] 秒內離開。
+	</notification>
+	<notification name="NoEnterServerFull">
+		你無法進入這地區,因為 
+伺服器滿載。
+	</notification>
+	<notification name="SaveBackToInvDisabled">
+		「儲存回收納區」功能已被停用。
+	</notification>
+	<notification name="NoExistNoSaveToContents">
+		無法將 &apos;[OBJ_NAME]&apos; 儲存到物件內容,因為產生它的來源物件已不存在。
+	</notification>
+	<notification name="NoModNoSaveToContents">
+		無法儲存 [OBJ_NAME] 到物件內容,你無權修改 &apos;[DEST_NAME]&apos; 物件。
+	</notification>
+	<notification name="NoSaveBackToInvDisabled">
+		無法將 &apos;[OBJ_NAME]&apos; 儲存回收納區,此動作已被停用。
+	</notification>
+	<notification name="NoCopyNoSelCopy">
+		無法複製你所選的,因為你無權複製物件 &apos;[OBJ_NAME]&apos;。
+	</notification>
+	<notification name="NoTransNoSelCopy">
+		無法選取複製,因為物件 &apos;[OBJ_NAME]&apos; 不可轉移。
+	</notification>
+	<notification name="NoTransNoCopy">
+		無法選取複製,因為物件 &apos;[OBJ_NAME]&apos; 不可轉移。
+	</notification>
+	<notification name="NoPermsNoRemoval">
+		權限系統不允許從模擬器移除物件 &apos;[OBJ_NAME]&apos;。
+	</notification>
+	<notification name="NoModNoSaveSelection">
+		無法儲存你所選的,因為你無權修改 &apos;[OBJ_NAME]&apos; 物件。
+	</notification>
+	<notification name="NoCopyNoSaveSelection">
+		無法儲存你所選的,因為物件 &apos;[OBJ_NAME]&apos; 不可複製。
+	</notification>
+	<notification name="NoModNoTaking">
+		無法拿取你所選的,因為你無權修改 &apos;[OBJ_NAME]&apos; 物件。
+	</notification>
+	<notification name="RezDestInternalError">
+		內部錯誤:未知的目的地類型。
+	</notification>
+	<notification name="DeleteFailObjNotFound">
+		刪除失敗,因為找不到物件
+	</notification>
+	<notification name="SorryCantEjectUser">
+		抱歉,無法踢出該用戶。
+	</notification>
+	<notification name="RegionSezNotAHome">
+		此地區不許你在此設定「我的家」。
+	</notification>
+	<notification name="HomeLocationLimits">
+		你只能在自己的土地或大陸資訊中心上設定「我的家」。
+	</notification>
+	<notification name="HomePositionSet">
+		我的家位置已定。
+	</notification>
+	<notification name="AvatarEjected">
+		化身已被踢出。
+	</notification>
+	<notification name="AvatarEjectFailed">
+		踢出失敗,因為你在該地段沒有管理員權限。
+	</notification>
+	<notification name="CantMoveObjectParcelFull">
+		無法移動 &apos;[OBJECT_NAME]&apos; 物件到
+地區 [REGION_NAME] 的 [OBJ_POSITION],因為該目標地段已滿載。
+	</notification>
+	<notification name="CantMoveObjectParcelPerms">
+		無法移動 &apos;[OBJECT_NAME]&apos; 物件到
+地區 [REGION_NAME] 的 [OBJ_POSITION],因為此地段不允許你的物件。
+	</notification>
+	<notification name="CantMoveObjectParcelResources">
+		無法移動 &apos;[OBJECT_NAME]&apos; 物件到
+ [REGION_NAME] 地區的 [OBJ_POSITION],因為此地段資源不足容納此物件。
+	</notification>
+	<notification name="CantMoveObjectRegionVersion">
+		無法移動 &apos;[OBJECT_NAME]&apos; 物件到
+ [REGION_NAME] 地區的 [OBJ_POSITION],因為該地區所執行的軟體版本過舊,不支援跨地區接受這個物件。
+	</notification>
+	<notification name="CantMoveObjectNavMesh">
+		無法移動 &apos;[OBJECT_NAME]&apos; 物件到
+地區 [REGION_NAME] 的 [OBJ_POSITION],因為你不得修改跨越地區界限的導航網面。
+	</notification>
+	<notification name="CantMoveObjectWTF">
+		無法移動 &apos;[OBJECT_NAME]&apos; 物件到
+地區 [REGION_NAME] 的 [OBJ_POSITION],原因不明。 ([FAILURE_TYPE])
+	</notification>
+	<notification name="NoPermModifyObject">
+		你無權變更該物件
+	</notification>
+	<notification name="CantEnablePhysObjContributesToNav">
+		對導航網面有貢獻的物件,無法啟用物理。
+	</notification>
+	<notification name="CantEnablePhysKeyframedObj">
+		鍵格動畫物件無法啟用物理。
+	</notification>
+	<notification name="CantEnablePhysNotEnoughLandResources">
+		無法啟用物件的物理——土地資源不足。
+	</notification>
+	<notification name="CantEnablePhysCostTooGreat">
+		物件的物理資源成本超過 [MAX_OBJECTS],無法啟用物理
+	</notification>
+	<notification name="PhantomWithConcavePiece">
+		此物件不得有凹面部件,因為物件是幻影物件,對導航網面有貢獻。
+	</notification>
+	<notification name="UnableAddItem">
+		無法新增項目!
+	</notification>
+	<notification name="UnableEditItem">
+		無法編輯這項目!
+	</notification>
+	<notification name="NoPermToEdit">
+		無權編輯這項目。
+	</notification>
+	<notification name="NoPermToCopyInventory">
+		無權複製該收納區。
+	</notification>
+	<notification name="CantSaveItemDoesntExist">
+		無法儲存到物件內容:該項目已不存在。
+	</notification>
+	<notification name="CantSaveItemAlreadyExists">
+		無法儲存到物件內容:收納區已存在同名稱的項目
+	</notification>
+	<notification name="CantSaveModifyAttachment">
+		無法儲存到物件內容:這麼做將修改附件的權限。
+	</notification>
+	<notification name="TooManyScripts">
+		腳本太多。
+	</notification>
+	<notification name="UnableAddScript">
+		無法新增腳本!
+	</notification>
+	<notification name="AssetServerTimeoutObjReturn">
+		資產伺服器未在正常時間內反應。  物件已返交模擬器。
+	</notification>
+	<notification name="RegionDisablePhysicsShapes">
+		本地區未啟用物理形狀。
+	</notification>
+	<notification name="NoModNavmeshAcrossRegions">
+		你無法變更跨越地區界限的導航網面。
+	</notification>
+	<notification name="NoSetPhysicsPropertiesOnObjectType">
+		該物件類型不得設定物理性質。
+	</notification>
+	<notification name="NoSetRootPrimWithNoShape">
+		根幾何元件無法設成無形狀。
+	</notification>
+	<notification name="NoRegionSupportPhysMats">
+		本地區未啟用物理材料。
+	</notification>
+	<notification name="OnlyRootPrimPhysMats">
+		只能調整根幾何元件的物理材料。
+	</notification>
+	<notification name="NoSupportCharacterPhysMats">
+		尚不支援角色設定物理材料。
+	</notification>
+	<notification name="InvalidPhysMatProperty">
+		指定的物理材料屬性中,至少有一個無效。
+	</notification>
+	<notification name="NoPermsAlterStitchingMeshObj">
+		網面物件的縫合類型不得變更。
+	</notification>
+	<notification name="NoPermsAlterShapeMeshObj">
+		網面物件的形狀不得變更。
+	</notification>
+	<notification name="FullRegionCantEnter">
+		你無法進入這地區,\n因為地區滿載。
+	</notification>
+	<notification name="LinkFailedOwnersDiffer">
+		聯結失敗——所有人不同
+	</notification>
+	<notification name="LinkFailedNoModNavmeshAcrossRegions">
+		聯結失敗——無法修改跨越地區界限的導航網面。
+	</notification>
+	<notification name="LinkFailedNoPermToEdit">
+		聯結失敗,你無權編輯。
+	</notification>
+	<notification name="LinkFailedTooManyPrims">
+		聯結失敗——幾何元件太多
+	</notification>
+	<notification name="LinkFailedCantLinkNoCopyNoTrans">
+		聯結失敗——無法將「禁止複製」和「禁止轉移」物件聯結起來
+	</notification>
+	<notification name="LinkFailedNothingLinkable">
+		聯結失敗——沒有可聯結的東西。
+	</notification>
+	<notification name="LinkFailedTooManyPathfindingChars">
+		聯結失敗——尋徑角色太多
+	</notification>
+	<notification name="LinkFailedInsufficientLand">
+		聯結失敗——土地資源不足
+	</notification>
+	<notification name="LinkFailedTooMuchPhysics">
+		物件使用了過多物理資源,其動態特性已被停用。
+	</notification>
+	<notification name="TeleportedHomeByObjectOnParcel">
+		你已被 &apos;[PARCEL_NAME]&apos; 地段的物件 &apos;[OBJECT_NAME]&apos; 成功瞬間傳送回家
+	</notification>
+	<notification name="TeleportedHomeByObject">
+		你已成功被物件 &apos;[OBJECT_NAME]&apos; 瞬間傳送回家
+	</notification>
+	<notification name="TeleportedByAttachment">
+		你已成功被 [ITEM_ID] 上的一個附件瞬間傳送
+	</notification>
+	<notification name="TeleportedByObjectOnParcel">
+		你已成功被 &apos;[PARCEL_NAME]&apos; 地段的物件 &apos;[OBJECT_NAME]&apos; 瞬間傳送
+	</notification>
+	<notification name="TeleportedByObjectOwnedBy">
+		你已成功被 [OWNER_ID] 擁有的物件 &apos;[OBJECT_NAME]&apos; 瞬間傳送
+	</notification>
+	<notification name="TeleportedByObjectUnknownUser">
+		你已成功被某未知用戶擁有的物件 &apos;[OBJECT_NAME]&apos; 瞬間傳送。
+	</notification>
+	<notification name="CantCreateObjectRegionFull">
+		無法建立要求的物件。 地區已滿載。
+	</notification>
+	<notification name="CantAttackMultipleObjOneSpot">
+		你不能將多個物件附著到同一個點。
+	</notification>
+	<notification name="CantCreateMultipleObjAtLoc">
+		你不能在此建立多個物件。
+	</notification>
+	<notification name="UnableToCreateObjTimeOut">
+		無法建立要求的物件。 物件在資料庫中找不到。
+	</notification>
+	<notification name="UnableToCreateObjUnknown">
+		無法建立要求的物件。 要求逾時,無法完成。 請再試一次。
+	</notification>
+	<notification name="UnableToCreateObjMissingFromDB">
+		無法建立要求的物件。 請再試一次。
+	</notification>
+	<notification name="RezFailureTookTooLong">
+		物件產生失敗,要求的物件載入時間太久。
+	</notification>
+	<notification name="FailedToPlaceObjAtLoc">
+		無法將物件置於指定地點。  請再試一次。
+	</notification>
+	<notification name="CantCreatePlantsOnLand">
+		你不得在這土地上建立植物。
+	</notification>
+	<notification name="CantRestoreObjectNoWorldPos">
+		無法恢復物件。 找不到虛擬世界的位置。
+	</notification>
+	<notification name="CantRezObjectInvalidMeshData">
+		無法產生物件,它的網面資料無效。
+	</notification>
+	<notification name="CantRezObjectTooManyScripts">
+		無法產生物件,因為這地區已有太多的腳本。
+	</notification>
+	<notification name="CantCreateObjectNoAccess">
+		你無權在此建立物件。
+	</notification>
+	<notification name="CantCreateObject">
+		你此時無權建立物件。
+	</notification>
+	<notification name="InvalidObjectParams">
+		無效的物件參數
+	</notification>
+	<notification name="CantDuplicateObjectNoAcess">
+		你權限不夠,無法在此複製物件。
+	</notification>
+	<notification name="CantChangeShape">
+		你無權變更這個形狀。
+	</notification>
+	<notification name="NoAccessToClaimObjects">
+		你權限不夠,無法在此收取物件。
+	</notification>
+	<notification name="DeedFailedNoPermToDeedForGroup">
+		讓渡失敗,你無權為你的群組讓渡物件。
+	</notification>
+	<notification name="NoPrivsToBuyObject">
+		你權限不夠,無法在此購買物件。
+	</notification>
+	<notification name="CantAttachObjectAvatarSittingOnIt">
+		無法附著物件,有個化身正坐在物件上。
+	</notification>
+	<notification name="WhyAreYouTryingToWearShrubbery">
+		樹和草不能當附件穿戴。
+	</notification>
+	<notification name="CantAttachGroupOwnedObjs">
+		無法附著群組所擁有的物件。
+	</notification>
+	<notification name="CantAttachObjectsNotOwned">
+		無法附著不是你擁有的物件。
+	</notification>
+	<notification name="CantAttachNavmeshObjects">
+		無法附著對導航網面有貢獻的物件。
+	</notification>
+	<notification name="CantAttachObjectNoMovePermissions">
+		無法附著物件,你無權移動該物件。
+	</notification>
+	<notification name="CantAttachNotEnoughScriptResources">
+		腳本資源不足,無法附著物件!
+	</notification>
+	<notification name="CantDropItemTrialUser">
+		你無法在此卸除物件,請到「自由嘗試」區域再試。
+	</notification>
+	<notification name="CantDropMeshAttachment">
+		你無法在此卸除附件。 請選擇把卸除附件送回收納區,再重新成形。
+	</notification>
+	<notification name="CantDropAttachmentNoPermission">
+		卸除附件失敗:你無權在此處卸除。
+	</notification>
+	<notification name="CantDropAttachmentInsufficientLandResources">
+		卸除附件失敗:可用土地資源不足。
+	</notification>
+	<notification name="CantDropAttachmentInsufficientResources">
+		卸除附件失敗:可用資源不足。
+	</notification>
+	<notification name="CantDropObjectFullParcel">
+		無法在此卸除物件。  地段滿載。
+	</notification>
+	<notification name="CantTouchObjectBannedFromParcel">
+		無法觸摸/抓取此物件,因為你在該土地地段遭禁。
+	</notification>
+	<notification name="PlzNarrowDeleteParams">
+		請將刪除參數範圍調小一點。
+	</notification>
+	<notification name="UnableToUploadAsset">
+		無法上傳資產。
+	</notification>
+	<notification name="CantTeleportCouldNotFindUser">
+		找不到要瞬間傳送到家的用戶
+	</notification>
+	<notification name="GodlikeRequestFailed">
+		要求神的權力失敗
+	</notification>
+	<notification name="GenericRequestFailed">
+		普通請求失敗
+	</notification>
+	<notification name="CantUploadPostcard">
+		無法上傳明信片。  請稍候再試一次。
+	</notification>
+	<notification name="CantFetchInventoryForGroupNotice">
+		無法取得群組通知的收納區細節。
+	</notification>
+	<notification name="CantSendGroupNoticeNotPermitted">
+		無法送出群組通知——未准許。
+	</notification>
+	<notification name="CantSendGroupNoticeCantConstructInventory">
+		無法送出群組通知——收納區建立失敗。
+	</notification>
+	<notification name="CantParceInventoryInNotice">
+		無法剖析通知裡的收納品項。
+	</notification>
+	<notification name="TerrainUploadFailed">
+		地形上傳失敗。
+	</notification>
+	<notification name="TerrainFileWritten">
+		地形檔案已寫入。
+	</notification>
+	<notification name="TerrainFileWrittenStartingDownload">
+		地形檔案已寫入,開始下載……
+	</notification>
+	<notification name="TerrainBaked">
+		地形已定貌。
+	</notification>
+	<notification name="TenObjectsDisabledPlzRefresh">
+		只成功停用前 10 個所選物件。 若有需要,請刷新之後再選取更多的項目。
+	</notification>
+	<notification name="UpdateViewerBuyParcel">
+		你必須先更新瀏覽器後,才可購買這個地段。
+	</notification>
+	<notification name="CantBuyParcelNotForSale">
+		無法購買,此地段不供出售。
+	</notification>
+	<notification name="CantBuySalePriceOrLandAreaChanged">
+		無法購買,售價或土地面積已變。
+	</notification>
+	<notification name="CantBuyParcelNotAuthorized">
+		你不是此地段的獲授權的買主。
+	</notification>
+	<notification name="CantBuyParcelAwaitingPurchaseAuth">
+		你無法購買此地段,該地段已在等候批准購買
+	</notification>
+	<notification name="CantBuildOverflowParcel">
+		你不得在此建立物件,這麼做將導致地段超載。
+	</notification>
+	<notification name="SelectedMultipleOwnedLand">
+		你選擇的土地範圍,為不同人所擁有。 請縮小選擇範圍,再試一次。
+	</notification>
+	<notification name="CantJoinTooFewLeasedParcels">
+		未選取足夠租用地段,無法合併。
+	</notification>
+	<notification name="CantDivideLandMultipleParcelsSelected">
+		無法分割土地,\n因為你選取了多個地段,\n請縮小所選土地。
+	</notification>
+	<notification name="CantDivideLandCantFindParcel">
+		無法分割土地。\n找不到地段。\n請到「幫助 &gt; 回報錯誤……」回報問題
+	</notification>
+	<notification name="CantDivideLandWholeParcelSelected">
+		無法分割土地。 選取了整個地段。\n請試著縮小所選的土地。
+	</notification>
+	<notification name="LandHasBeenDivided">
+		土地分割成功。
+	</notification>
+	<notification name="PassPurchased">
+		你購買了通行權。
+	</notification>
+	<notification name="RegionDisallowsClassifieds">
+		地區不允許分類廣告。
+	</notification>
+	<notification name="LandPassExpireSoon">
+		你在此土地的通行權即將到期失效。
+	</notification>
+	<notification name="CantSitNoSuitableSurface">
+		沒有合適的表面讓你坐下,請試一試別處。
+	</notification>
+	<notification name="CantSitNoRoom">
+		這裡沒有空間讓你坐下,請試試另一處。
+	</notification>
+	<notification name="ClaimObjectFailedNoPermission">
+		收取物件失敗,因為你權限不足。
+	</notification>
+	<notification name="ClaimObjectFailedNoMoney">
+		收取物件失敗,因為你 L$ 金額不足。
+	</notification>
+	<notification name="CantDeedGroupLand">
+		無法讓渡群組所擁有的土地。
+	</notification>
+	<notification name="BuyObjectFailedNoMoney">
+		購買物件失敗,你 L$ 金額不足。
+	</notification>
+	<notification name="BuyInventoryFailedNoMoney">
+		購買收納區失敗,你 L$ 金額不足。
+	</notification>
+	<notification name="BuyPassFailedNoMoney">
+		你的 L$ 不足,無法購買此土地的通行權。
+	</notification>
+	<notification name="CantBuyPassTryAgain">
+		此時無法購買通行權。  請稍候再試一次。
+	</notification>
+	<notification name="CantCreateObjectParcelFull">
+		無法建立物件,\n地段滿載。
+	</notification>
+	<notification name="FailedPlacingObject">
+		無法將物件置於指定地點。  請再試一次。
+	</notification>
+	<notification name="CantCreateLandmarkForEvent">
+		無法為活動建立地標。
+	</notification>
+	<notification name="GodBeatsFreeze">
+		你擁有的神力解除了凍結!
+	</notification>
+	<notification name="SpecialPowersRequestFailedLogged">
+		要求特殊能力失敗。 該要求已載入記錄。
+	</notification>
+	<notification name="ExpireExplanation">
+		系統此時無法處理你的要求。 要求逾時,無法完成。
+	</notification>
+	<notification name="DieExplanation">
+		系統無法處理你的要求。
+	</notification>
+	<notification name="AddPrimitiveFailure">
+		金額不足,無法建立幾何元件。
+	</notification>
+	<notification name="RezObjectFailure">
+		金額不足,無法建立物件。
+	</notification>
+	<notification name="ResetHomePositionNotLegal">
+		已重設「我的家」位置,因為前一個位置不合法。
+	</notification>
+	<notification name="CantInviteRegionFull">
+		此刻你無法邀請任何人到你的位置,因為地區滿載。 請稍候再試一次。
+	</notification>
+	<notification name="CantSetHomeAtRegion">
+		此地區不許你在此設定「我的家」。
+	</notification>
+	<notification name="ListValidHomeLocations">
+		你只能在自己的土地或大陸資訊中心上設定「我的家」。
+	</notification>
+	<notification name="SetHomePosition">
+		我的家位置已定。
+	</notification>
+	<notification name="CantDerezInventoryError">
+		收納區出錯,無法收納物件。
+	</notification>
+	<notification name="CantCreateRequestedInv">
+		無法建立要求的收納區。
+	</notification>
+	<notification name="CantCreateRequestedInvFolder">
+		無法建立要求的收納區資料夾。
+	</notification>
+	<notification name="CantCreateInventory">
+		無法建立該收納區。
+	</notification>
+	<notification name="CantCreateLandmark">
+		無法建立地標。
+	</notification>
+	<notification name="CantCreateOutfit">
+		此時無法建立裝扮。 請過一分鐘後再試。
+	</notification>
+	<notification name="InventoryNotForSale">
+		收納區沒有待售。
+	</notification>
+	<notification name="CantFindInvItem">
+		找不到收納區物項。
+	</notification>
+	<notification name="CantFindObject">
+		找不到物件。
+	</notification>
+	<notification name="CantTransfterMoneyRegionDisabled">
+		此地區目前未啟用轉移金錢給物件的功能。
+	</notification>
+	<notification name="CantPayNoAgent">
+		無法決定付款給誰。
+	</notification>
+	<notification name="CantDonateToPublicObjects">
+		你無法將 L$ 送給公共物件。
+	</notification>
+	<notification name="InventoryCreationInWorldObjectFailed">
+		針對虛擬世界物件建立收納區失敗。
+	</notification>
+	<notification name="UserBalanceOrLandUsageError">
+		發生內部錯誤,我們無法如常更新你的瀏覽器。  你瀏覽器顯示的 L$ 餘額或擁有地段,可能和伺服器上的正確數額不一致。
+	</notification>
+	<notification name="LargePrimAgentIntersect">
+		無法建立和其他參與者發生交截的大型幾何元件。  請等其他參與者移開後再試。
+	</notification>
+	<notification name="PreferenceChatClearLog">
+		這動作將刪除先前交談的記錄,和所有記錄備份。
+		<usetemplate ignoretext="刪除先前交談記錄前,先向我確認。" name="okcancelignore" notext="取消" yestext="確定"/>
+	</notification>
+	<notification name="PreferenceChatDeleteTranscripts">
+		這將刪除所有先前交談的內容記錄。 過去交談歷史清單不受影響。 資料夾 [FOLDER] 所有副檔名 .txt 和 txt.backup 的檔案都將刪除。
+		<usetemplate ignoretext="刪除交談內容記錄前先向我確認。" name="okcancelignore" notext="取消" yestext="確定"/>
+	</notification>
+	<notification name="PreferenceChatPathChanged">
+		無法移動檔案。 已恢復前一個路徑。
+		<usetemplate ignoretext="無法移動檔案。 已恢復前一個路徑。" name="okignore" yestext="確定"/>
+	</notification>
 </notifications>
diff --git a/indra/newview/skins/default/xui/zh/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/zh/panel_avatar_list_item.xml
index 1c8b56b3d62..e0a49a0addb 100644
--- a/indra/newview/skins/default/xui/zh/panel_avatar_list_item.xml
+++ b/indra/newview/skins/default/xui/zh/panel_avatar_list_item.xml
@@ -27,5 +27,6 @@
 	<icon name="permission_edit_mine_icon" tool_tip="這位朋友能編輯、刪除或取得你的物件"/>
 	<icon name="permission_map_icon" tool_tip="這位朋友能在地圖上找到你的位置"/>
 	<icon name="permission_online_icon" tool_tip="這位朋友當你上線能看到訊息"/>
+	<button name="info_btn" tool_tip="詳情"/>
 	<button name="profile_btn" tool_tip="察看檔案"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/zh/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/zh/panel_block_list_sidetray.xml
index 1dfa024138b..9f59bb32f81 100644
--- a/indra/newview/skins/default/xui/zh/panel_block_list_sidetray.xml
+++ b/indra/newview/skins/default/xui/zh/panel_block_list_sidetray.xml
@@ -1,10 +1,11 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="block_list_panel">
-	<text name="title_text">
-		封鎖清單
-	</text>
-	<scroll_list name="blocked" tool_tip="目前封鎖的居民清單"/>
-	<button label="封鎖他人" name="Block resident..." tool_tip="挑選一位居民以進行封鎖"/>
-	<button label="依名稱封鎖物件" name="Block object by name..." tool_tip="依名稱挑選一個物件進行封鎖"/>
-	<button label="解除封鎖" name="Unblock" tool_tip="將居民或物件由封鎖清單中移除"/>
+	<panel label="bottom_panel" name="blocked_buttons_panel">
+		<filter_editor label="過濾器" name="blocked_filter_input"/>
+		<menu_button name="blocked_gear_btn" tool_tip="對所選的人或物件採取動作"/>
+		<menu_button name="view_btn" tool_tip="排序選項"/>
+		<menu_button name="plus_btn" tool_tip="挑選一位居民或物件,加以封鎖"/>
+		<button name="unblock_btn" tool_tip="將居民或物件由封鎖清單中移除"/>
+	</panel>
+	<block_list name="blocked" tool_tip="目前封鎖的居民清單"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/zh/panel_conversation_list_item.xml b/indra/newview/skins/default/xui/zh/panel_conversation_list_item.xml
new file mode 100644
index 00000000000..6524d416456
--- /dev/null
+++ b/indra/newview/skins/default/xui/zh/panel_conversation_list_item.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="conversation_list_item">
+	<layout_stack name="conversation_item_stack">
+		<layout_panel name="conversation_title_panel">
+			<text name="conversation_title" value="(載入中)"/>
+		</layout_panel>
+	</layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/zh/panel_conversation_log_list_item.xml b/indra/newview/skins/default/xui/zh/panel_conversation_log_list_item.xml
new file mode 100644
index 00000000000..8446ce21309
--- /dev/null
+++ b/indra/newview/skins/default/xui/zh/panel_conversation_log_list_item.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="conversation_log_list_item">
+	<icon name="voice_session_icon" tool_tip="包含語音交談"/>
+	<icon name="unread_ims_icon" tool_tip="訊息在你登出期間傳來"/>
+	<button name="delete_btn" tool_tip="移除此項目"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/zh/panel_group_list_item.xml b/indra/newview/skins/default/xui/zh/panel_group_list_item.xml
index 175293cdf7f..fec4bb572ab 100644
--- a/indra/newview/skins/default/xui/zh/panel_group_list_item.xml
+++ b/indra/newview/skins/default/xui/zh/panel_group_list_item.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="group_list_item">
 	<text name="group_name" value="未知"/>
+	<button name="info_btn" tool_tip="詳情"/>
 	<button name="profile_btn" tool_tip="察看檔案"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/zh/panel_people.xml b/indra/newview/skins/default/xui/zh/panel_people.xml
index 59ea7b70e2d..5f7aca387a6 100644
--- a/indra/newview/skins/default/xui/zh/panel_people.xml
+++ b/indra/newview/skins/default/xui/zh/panel_people.xml
@@ -14,81 +14,53 @@
 	<string name="no_filtered_friends_msg">
 		找不到你要找的嗎? 請試試[secondlife:///app/search/people/[SEARCH_TERM] 搜尋]。
 	</string>
-	<string name="people_filter_label" value="人員過濾器"/>
-	<string name="groups_filter_label" value="群組過濾器"/>
 	<string name="no_filtered_groups_msg" value="找不到你要找的嗎? 請試試[secondlife:///app/search/groups/[SEARCH_TERM] 搜尋]。"/>
 	<string name="no_groups_msg" value="要尋找群組考慮加入嗎? 請試試[secondlife:///app/search/groups 搜尋]。"/>
 	<string name="MiniMapToolTipMsg" value="[REGION](雙擊以開啟地圖,按下 shift 鍵拖曳來平移)"/>
 	<string name="AltMiniMapToolTipMsg" value="[REGION](雙擊以瞬間傳送,按下 shift 鍵拖曳來平移)"/>
-	<filter_editor label="過濾器" name="filter_input"/>
 	<tab_container name="tabs">
 		<panel label="附近" name="nearby_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<menu_button name="nearby_view_sort_btn" tool_tip="選項"/>
-				<button name="add_friend_btn" tool_tip="添加所選的居民到你的朋友清單"/>
+			<panel label="bottom_panel" name="nearby_buttons_panel">
+				<filter_editor label="人員過濾器" name="nearby_filter_input"/>
+				<button name="gear_btn" tool_tip="對選取的人採取動作"/>
+				<menu_button name="nearby_view_btn" tool_tip="檢視/排序的選項"/>
+				<button name="add_friend_btn" tool_tip="向某位居民發出交友邀請"/>
+				<dnd_button name="nearby_del_btn" tool_tip="將選取的人從朋友名單移除"/>
 			</panel>
 		</panel>
-		<panel label="我的朋友" name="friends_panel">
+		<panel label="朋友" name="friends_panel">
+			<panel label="bottom_panel" name="friends_buttons_panel">
+				<filter_editor label="人員過濾器" name="friends_filter_input"/>
+				<button name="gear_btn" tool_tip="對選取的人採取動作"/>
+				<menu_button name="friends_view_btn" tool_tip="檢視/排序的選項"/>
+				<button name="friends_add_btn" tool_tip="向某位居民發出交友邀請"/>
+				<dnd_button name="friends_del_btn" tool_tip="將選取的人從朋友名單移除"/>
+			</panel>
 			<accordion name="friends_accordion">
 				<accordion_tab name="tab_online" title="上線"/>
 				<accordion_tab name="tab_all" title="全部"/>
 			</accordion>
-			<panel label="bottom_panel" name="bottom_panel">
-				<layout_stack name="bottom_panel">
-					<layout_panel name="options_gear_btn_panel">
-						<menu_button name="friends_viewsort_btn" tool_tip="顯示額外選項"/>
-					</layout_panel>
-					<layout_panel name="add_btn_panel">
-						<button name="add_btn" tool_tip="向居民發出交友邀請"/>
-					</layout_panel>
-					<layout_panel name="trash_btn_panel">
-						<dnd_button name="del_btn" tool_tip="由你的朋友清單移除所選擇的人"/>
-					</layout_panel>
-				</layout_stack>
-			</panel>
 		</panel>
-		<panel label="我的群組" name="groups_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<menu_button name="groups_viewsort_btn" tool_tip="選項"/>
-				<button name="plus_btn" tool_tip="加入群組/創立新群組"/>
-				<button name="activate_btn" tool_tip="啟用所選擇的群組"/>
+		<panel label="群組" name="groups_panel">
+			<panel label="bottom_panel" name="groups_buttons_panel">
+				<filter_editor label="群組過濾器" name="groups_filter_input"/>
+				<menu_button name="groups_gear_btn" tool_tip="對所選群組採取動作"/>
+				<menu_button name="groups_view_btn" tool_tip="檢視/排序的選項"/>
+				<menu_button name="plus_btn" tool_tip="加入群組/創立新群組"/>
+				<dnd_button name="minus_btn" tool_tip="離開所選群組"/>
 			</panel>
 		</panel>
 		<panel label="最近" name="recent_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<menu_button name="recent_viewsort_btn" tool_tip="選項"/>
-				<button name="add_friend_btn" tool_tip="添加所選的居民到你的朋友清單"/>
+			<panel label="bottom_panel" name="recent_buttons_panel">
+				<filter_editor label="人員過濾器" name="recent_filter_input"/>
+				<button name="gear_btn" tool_tip="對選取的人採取動作"/>
+				<menu_button name="recent_view_btn" tool_tip="檢視/排序的選項"/>
+				<button name="add_friend_btn" tool_tip="向某位居民發出交友邀請"/>
+				<dnd_button name="recent_del_btn" tool_tip="將選取的人從朋友名單移除"/>
 			</panel>
 		</panel>
+		<panel label="已封鎖的" name="blocked_panel">
+			<panel label="被封鎖的居民與物件" name="panel_block_list_sidetray"/>
+		</panel>
 	</tab_container>
-	<panel name="button_bar">
-		<layout_stack name="bottom_bar_ls">
-			<layout_panel name="view_profile_btn_lp">
-				<button label="檔案" name="view_profile_btn" tool_tip="顯示圖片、群組與其他居民資訊"/>
-			</layout_panel>
-			<layout_panel name="im_btn_lp">
-				<button label="IM" name="im_btn" tool_tip="開啟即時訊息會話"/>
-			</layout_panel>
-			<layout_panel name="call_btn_lp">
-				<button label="通話" name="call_btn" tool_tip="和這位居民通話"/>
-			</layout_panel>
-			<layout_panel name="share_btn_lp">
-				<button label="分享" name="share_btn" tool_tip="分享一個收納區物品"/>
-			</layout_panel>
-			<layout_panel name="teleport_btn_lp">
-				<button label="瞬間傳送" name="teleport_btn" tool_tip="發出瞬間傳送邀請"/>
-			</layout_panel>
-		</layout_stack>
-		<layout_stack name="bottom_bar_ls1">
-			<layout_panel name="group_info_btn_lp">
-				<button label="群組檔案" name="group_info_btn" tool_tip="顯示群組資訊"/>
-			</layout_panel>
-			<layout_panel name="chat_btn_lp">
-				<button label="群組聊天" name="chat_btn" tool_tip="開啟聊天會話"/>
-			</layout_panel>
-			<layout_panel name="group_call_btn_lp">
-				<button label="群組通話" name="group_call_btn" tool_tip="與此群組進行通話"/>
-			</layout_panel>
-		</layout_stack>
-	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/zh/panel_preferences_chat.xml b/indra/newview/skins/default/xui/zh/panel_preferences_chat.xml
index cf2f81d3139..e700e35516d 100644
--- a/indra/newview/skins/default/xui/zh/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/zh/panel_preferences_chat.xml
@@ -1,34 +1,86 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="文字聊天" name="chat">
-	<text name="font_size">
-		字型尺寸:
-	</text>
-	<radio_group name="chat_font_size">
-		<radio_item label="小" name="radio" value="0"/>
-		<radio_item label="中" name="radio2" value="1"/>
-		<radio_item label="大" name="radio3" value="2"/>
-	</radio_group>
-	<check_box initial_value="true" label="聊天時播放打字動作" name="play_typing_animation"/>
-	<check_box label="當我離線時將收到的 IM 訊息郵寄給我" name="send_im_to_email"/>
-	<check_box label="啟用純本文 IM 與聊天歷史紀錄" name="plain_text_chat_history"/>
-	<check_box label="聊天泡泡" name="bubble_text_chat"/>
-	<text name="show_ims_in_label">
-		顯示 IMs 於:
-	</text>
-	<text name="requires_restart_label">
-		(須重新啟動)
-	</text>
-	<radio_group name="chat_window" tool_tip="顯示你的即時訊息在分開的浮動視窗,或是使用很多頁籤的單一浮動視窗(須重新啟動)">
-		<radio_item label="分開視窗" name="radio" value="0"/>
-		<radio_item label="頁籤" name="radio2" value="1"/>
-	</radio_group>
-	<text name="disable_toast_label">
-		啟用傳入聊天的突顯示視窗:
-	</text>
-	<check_box label="群組聊天" name="EnableGroupChatPopups" tool_tip="當群組聊天訊息抵達時查看突顯式視窗"/>
-	<check_box label="IM 聊天" name="EnableIMChatPopups" tool_tip="當即時訊息抵達時查看突顯式視窗"/>
-	<spinner label="附近聊天內容提示框停駐時間:" name="nearby_toasts_lifetime"/>
-	<spinner label="附近聊天內容提示框消退時間:" name="nearby_toasts_fadingtime"/>
+	<panel>
+		<check_box initial_value="true" label="聊天時播放打字動作" name="play_typing_animation"/>
+		<check_box label="當我離線時將收到的 IM 訊息郵寄給我" name="send_im_to_email"/>
+		<check_box label="只有我的朋友和群組可以 IM 或與我通話。" name="voice_call_friends_only_check"/>
+		<text name="font_size">
+			字型尺寸:
+		</text>
+		<combo_box name="chat_font_size">
+			<item label="小" name="Small" value="0"/>
+			<item label="中" name="Medium" value="1"/>
+			<item label="大" name="Large" value="2"/>
+		</combo_box>
+		<check_box label="聊天泡泡" name="bubble_text_chat"/>
+	</panel>
+	<panel>
+		<text name="notifications">
+			通知
+		</text>
+		<text name="friend_ims">
+			朋友 IM:
+		</text>
+		<combo_box name="FriendIMOptions">
+			<item label="開啟交談視窗" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="以突顯式視窗顯示訊息" name="PopUpMessage" value="toast"/>
+			<item label="Flash 工具列按鈕" name="FlashToolbarButton" value="flash"/>
+			<item label="ç„¡" name="None" value="ç„¡"/>
+		</combo_box>
+		<text name="non_friend_ims">
+			非朋友 IM:
+		</text>
+		<combo_box name="NonFriendIMOptions">
+			<item label="開啟交談視窗" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="以突顯式視窗顯示訊息" name="PopUpMessage" value="toast"/>
+			<item label="Flash 工具列按鈕" name="FlashToolbarButton" value="flash"/>
+			<item label="ç„¡" name="None" value="ç„¡"/>
+		</combo_box>
+		<text name="conference_ims">
+			多方交談 IM:
+		</text>
+		<combo_box name="ConferenceIMOptions">
+			<item label="開啟交談視窗" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="以突顯式視窗顯示訊息" name="PopUpMessage" value="toast"/>
+			<item label="Flash 工具列按鈕" name="FlashToolbarButton" value="flash"/>
+			<item label="ç„¡" name="None" value="ç„¡"/>
+		</combo_box>
+		<text name="group_chat">
+			群組聊天:
+		</text>
+		<combo_box name="GroupChatOptions">
+			<item label="開啟交談視窗" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="以突顯式視窗顯示訊息" name="PopUpMessage" value="toast"/>
+			<item label="Flash 工具列按鈕" name="FlashToolbarButton" value="flash"/>
+			<item label="ç„¡" name="None" value="ç„¡"/>
+		</combo_box>
+		<text name="nearby_chat">
+			附近的聊天:
+		</text>
+		<combo_box name="NearbyChatOptions">
+			<item label="開啟交談視窗" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="以突顯式視窗顯示訊息" name="PopUpMessage" value="toast"/>
+			<item label="Flash 工具列按鈕" name="FlashToolBarButton" value="flash"/>
+			<item label="ç„¡" name="None" value="ç„¡"/>
+		</combo_box>
+		<text name="notifications_alert">
+			若要暫時停止所有通知,請設定「溝通 &gt; 請勿打擾」。
+		</text>
+	</panel>
+	<panel>
+		<text name="play_sound">
+			播放聲音:
+		</text>
+		<check_box label="新交談" name="new_conversation"/>
+		<check_box label="語音通話來電" name="incoming_voice_call"/>
+		<check_box label="瞬間傳送邀請" name="teleport_offer"/>
+		<check_box label="收納物品贈送" name="inventory_offer"/>
+	</panel>
+	<panel>
+		<button label="清空記錄……" name="clear_log"/>
+		<button label="刪除交談內容記錄……" name="delete_transcripts"/>
+		<button label="瀏覽…" label_selected="瀏覽" name="log_path_button"/>
+	</panel>
 	<button label="翻譯…" name="ok_btn"/>
 	<button label="自動取代…" name="autoreplace_showgui"/>
 	<button label="拼字檢查…" name="spellcheck_showgui"/>
diff --git a/indra/newview/skins/default/xui/zh/panel_preferences_general.xml b/indra/newview/skins/default/xui/zh/panel_preferences_general.xml
index 7e67a0d02d0..044edbed701 100644
--- a/indra/newview/skins/default/xui/zh/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/zh/panel_preferences_general.xml
@@ -68,9 +68,9 @@
 		<combo_box.item label="絕不" name="item4"/>
 	</combo_box>
 	<text name="text_box3">
-		忙碌模式回應:
+		「請勿打擾」預設回應:
 	</text>
-	<text_editor name="busy_response">
+	<text_editor name="do_not_disturb_response">
 		log_in_to_change
 	</text_editor>
 </panel>
diff --git a/indra/newview/skins/default/xui/zh/sidepanel_task_info.xml b/indra/newview/skins/default/xui/zh/sidepanel_task_info.xml
index 982dde40105..60f44a3d88f 100644
--- a/indra/newview/skins/default/xui/zh/sidepanel_task_info.xml
+++ b/indra/newview/skins/default/xui/zh/sidepanel_task_info.xml
@@ -72,6 +72,7 @@
 			<combo_box.item label="購買物件" name="Buyobject"/>
 			<combo_box.item label="支付物件" name="Payobject"/>
 			<combo_box.item label="打開" name="Open"/>
+			<combo_box.item label="縮放" name="Zoom"/>
 		</combo_box>
 		<panel name="perms_inv">
 			<text name="perm_modify">
diff --git a/indra/newview/skins/default/xui/zh/strings.xml b/indra/newview/skins/default/xui/zh/strings.xml
index 7e17ed68647..31713ac2816 100644
--- a/indra/newview/skins/default/xui/zh/strings.xml
+++ b/indra/newview/skins/default/xui/zh/strings.xml
@@ -614,8 +614,8 @@ http://secondlife.com/viewer-access-faq
 	<string name="AvatarAway">
 		離開
 	</string>
-	<string name="AvatarBusy">
-		忙碌
+	<string name="AvatarDoNotDisturb">
+		請勿打擾
 	</string>
 	<string name="AvatarMuted">
 		封鎖的
@@ -851,6 +851,12 @@ http://secondlife.com/viewer-access-faq
 	<string name="ST_NO_JOINT">
 		找不到 ROOT 或旋軸。
 	</string>
+	<string name="NearbyChatTitle">
+		附近的聊天中
+	</string>
+	<string name="NearbyChatLabel">
+		(附近的聊天)
+	</string>
 	<string name="whisper">
 		低語:
 	</string>
@@ -914,12 +920,15 @@ http://secondlife.com/viewer-access-faq
 	<string name="ControlYourCamera">
 		控制你的攝影機
 	</string>
-	<string name="TeleportYourAgent">
-		瞬間傳送你本人
-	</string>
 	<string name="NotConnected">
 		未聯接
 	</string>
+	<string name="AgentNameSubst">
+		(你)
+	</string>
+	<string name="TeleportYourAgent">
+		瞬間傳送你本人
+	</string>
 	<string name="SIM_ACCESS_PG">
 		一般普級
 	</string>
@@ -1001,18 +1010,6 @@ http://secondlife.com/viewer-access-faq
 	<string name="dictionary_files">
 		å­—å…¸
 	</string>
-	<string name="AvatarSetNotAway">
-		非離開
-	</string>
-	<string name="AvatarSetAway">
-		離開
-	</string>
-	<string name="AvatarSetNotBusy">
-		非忙碌
-	</string>
-	<string name="AvatarSetBusy">
-		忙碌
-	</string>
 	<string name="shape">
 		體形
 	</string>
@@ -1981,8 +1978,8 @@ http://secondlife.com/viewer-access-faq
 	<string name="PanelContentsNewScript">
 		新腳本
 	</string>
-	<string name="BusyModeResponseDefault">
-		你傳訊過去的居民目前處於忙碌狀態,這意味著他要求不被打擾。  你的訊息仍將留存並顯示於對方的 IM 面板上供稍後查閱。
+	<string name="DoNotDisturbModeResponseDefault">
+		這居民處於「請勿打擾」狀態,不會立即看到你的訊息。
 	</string>
 	<string name="MuteByName">
 		(按名稱)
@@ -2095,9 +2092,6 @@ http://secondlife.com/viewer-access-faq
 	<string name="GroupMoneyDate">
 		[weekday,datetime,utc] [mth,datetime,utc] [day,datetime,utc], [year,datetime,utc]
 	</string>
-	<string name="ViewerObjectContents">
-		內容
-	</string>
 	<string name="AcquiredItems">
 		取得物品
 	</string>
@@ -3869,7 +3863,7 @@ http://secondlife.com/viewer-access-faq
 		一般普級地區
 	</string>
 	<string name="LocationCtrlSeeAVsTooltip">
-		可看到本地段外的化身,並與之交談
+		這地段外的其他化身,看不見也聽不到位於地段裡的化身
 	</string>
 	<string name="LocationCtrlPathfindingDirtyTooltip">
 		地區重新產出之前,可移動物件可能無法正常運作。
@@ -3946,6 +3940,12 @@ http://secondlife.com/viewer-access-faq
 	<string name="IM_unblock_only_groups_friends">
 		要察看這訊息,你必須到「偏好設定 / 隱私」,取消勾選「只有我的朋友和群組可以 IM 或與我通話」。
 	</string>
+	<string name="OnlineStatus">
+		上線
+	</string>
+	<string name="OfflineStatus">
+		離線
+	</string>
 	<string name="answered_call">
 		你的通話已經接通
 	</string>
@@ -3955,6 +3955,9 @@ http://secondlife.com/viewer-access-faq
 	<string name="you_joined_call">
 		你發起了語音通話
 	</string>
+	<string name="you_auto_rejected_call-im">
+		因為處於「請勿打擾」模式,你已自動拒聽這通語音來電。
+	</string>
 	<string name="name_started_call">
 		[NAME] 發起了語音通話
 	</string>
@@ -3971,7 +3974,7 @@ http://secondlife.com/viewer-access-faq
 		聯接中...
 	</string>
 	<string name="conference-title">
-		臨時多方通話
+		多人聊天
 	</string>
 	<string name="conference-title-incoming">
 		和 [AGENT_NAME] 多方通話
@@ -4863,6 +4866,9 @@ http://secondlife.com/viewer-access-faq
 	<string name="Command_Chat_Label">
 		聊天
 	</string>
+	<string name="Command_Conversations_Label">
+		交談
+	</string>
 	<string name="Command_Compass_Label">
 		羅盤
 	</string>
@@ -4938,6 +4944,9 @@ http://secondlife.com/viewer-access-faq
 	<string name="Command_Chat_Tooltip">
 		透過文字和附近人們聊天
 	</string>
+	<string name="Command_Conversations_Tooltip">
+		和所有人交談
+	</string>
 	<string name="Command_Compass_Tooltip">
 		指南針
 	</string>
@@ -5067,4 +5076,13 @@ http://secondlife.com/viewer-access-faq
 	<string name="UserDictionary">
 		[User]
 	</string>
+	<string name="logging_calls_disabled_log_empty">
+		交談未留記錄。 若想開始留記錄,請到「偏好設定 &gt; 聊天」,選擇「儲存:只留歷史記錄」或「儲存:歷史記錄兼交談內容」。
+	</string>
+	<string name="logging_calls_disabled_log_not_empty">
+		將不再為交談留記錄。 若想恢復留存記錄,請到「偏好設定 &gt; 聊天」,選擇「儲存:只留歷史記錄」或「儲存:歷史記錄兼交談內容」。
+	</string>
+	<string name="logging_calls_enabled_log_empty">
+		目前沒有交談記錄。 在你聯絡某人或某人聯絡你之後,這裡將留存記錄。
+	</string>
 </strings>
-- 
GitLab


From b724791c2adb3e63c00547c40de2ae1b6ce45b9b Mon Sep 17 00:00:00 2001
From: Nyx Linden <nyx@lindenlab.com>
Date: Wed, 3 Apr 2013 18:59:50 -0400
Subject: [PATCH 410/436] SH-4050 FIX camera goes below ground when avatar
 offset set to 0

Added a constraint to ensure that the avatar's height (with offset)
does not go below 0.1 meters. Camera was getting confused since the avatar's
effective height was negative.

Note the avatar is mostly underground/contorted even at 0.1 meters, but
most users setting values this low will be making ultra-tinies and would
be hiding the avatar mesh. Camera stays above ground when height is at 0.1.
---
 indra/llappearance/llavatarappearance.cpp     | 21 ++++++++++++++++++-
 .../llappearance/llavatarappearancedefines.h  |  2 ++
 indra/newview/llvoavatar.cpp                  |  2 +-
 3 files changed, 23 insertions(+), 2 deletions(-)

diff --git a/indra/llappearance/llavatarappearance.cpp b/indra/llappearance/llavatarappearance.cpp
index 2d5744bb5ea..37b7f7b14e4 100644
--- a/indra/llappearance/llavatarappearance.cpp
+++ b/indra/llappearance/llavatarappearance.cpp
@@ -464,7 +464,7 @@ void LLAvatarAppearance::computeBodySize()
 
 	F32 old_offset = mAvatarOffset.mV[VZ];
 
-	mAvatarOffset.mV[VZ] = getVisualParamWeight(11001);
+	mAvatarOffset.mV[VZ] = getVisualParamWeight(AVATAR_HOVER);
 
 	mPelvisToFoot = hip.mV[VZ] * pelvis_scale.mV[VZ] -
 				 	knee.mV[VZ] * hip_scale.mV[VZ] -
@@ -488,6 +488,25 @@ void LLAvatarAppearance::computeBodySize()
 	mAvatarOffset.mV[VX] = 0.0f;
 	mAvatarOffset.mV[VY] = 0.0f;
 
+	// Certain configurations of avatars can force the overall height (with offset) to go negative.
+	// Enforce a constraint to make sure we don't go below 0.1 meters.
+	// Camera positioning and other things start to break down when your avatar is "walking" while being fully underground
+	if (new_body_size.mV[VZ] + mAvatarOffset.mV[VZ] < 0.1f) 
+	{
+		mAvatarOffset.mV[VZ] = -(new_body_size.mV[VZ] - 0.11f); // avoid floating point rounding making the above check continue to fail.
+
+		llassert(new_body_size.mV[VZ] + mAvatarOffset.mV[VZ] >= 0.1f);
+
+		if (mWearableData) 
+		{
+			LLWearable* shape = mWearableData->getWearable(LLWearableType::WT_SHAPE, 0);
+			if (shape) 
+			{
+				shape->setVisualParamWeight(AVATAR_HOVER, mAvatarOffset.mV[VZ], false);
+			}
+		}
+	}
+
 	if (new_body_size != mBodySize || old_offset != mAvatarOffset.mV[VZ])
 	{
 		mBodySize = new_body_size;
diff --git a/indra/llappearance/llavatarappearancedefines.h b/indra/llappearance/llavatarappearancedefines.h
index 496f85c1075..8a1d2c4707e 100644
--- a/indra/llappearance/llavatarappearancedefines.h
+++ b/indra/llappearance/llavatarappearancedefines.h
@@ -41,6 +41,8 @@ extern const S32 SCRATCH_TEX_WIDTH;
 extern const S32 SCRATCH_TEX_HEIGHT;
 extern const S32 IMPOSTOR_PERIOD;
 
+static const U32 AVATAR_HOVER = 11001;
+
 //--------------------------------------------------------------------
 // Enums
 //--------------------------------------------------------------------
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 725939dd3ee..6d9c150c436 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -3204,7 +3204,7 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent)
 		}
 
 		root_pos = gAgent.getPosGlobalFromAgent(getRenderPosition());
-		root_pos.mdV[VZ] += getVisualParamWeight(11001);
+		root_pos.mdV[VZ] += getVisualParamWeight(AVATAR_HOVER);
 
 
 		resolveHeightGlobal(root_pos, ground_under_pelvis, normal);
-- 
GitLab


From 4bcf1b911a4ea8e8ac8a6322918929732ec1b82d Mon Sep 17 00:00:00 2001
From: Nyx Linden <nyx@lindenlab.com>
Date: Wed, 3 Apr 2013 19:04:57 -0400
Subject: [PATCH 411/436] SH-4051 REVERT teen accounts unable to remove
 underclothes even when switching outfits

Reverting fix as additional problems were found that could lead to even accidental nudity.
This fix is not required for the current release as it is not a regression.
Will review options for fixing for the next release.
---
 indra/newview/llagentwearables.cpp | 50 ++++++------------------------
 indra/newview/llagentwearables.h   |  2 +-
 2 files changed, 10 insertions(+), 42 deletions(-)

diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp
index de9afe2e085..c88694ef76b 100755
--- a/indra/newview/llagentwearables.cpp
+++ b/indra/newview/llagentwearables.cpp
@@ -1124,19 +1124,14 @@ void LLAgentWearables::addWearableToAgentInventory(LLPointer<LLInventoryCallback
 						  cb);
 }
 
-void LLAgentWearables::removeWearable(const LLWearableType::EType type, bool do_remove_all, U32 index, BOOL will_replace)
+void LLAgentWearables::removeWearable(const LLWearableType::EType type, bool do_remove_all, U32 index)
 {
-	if (gAgent.isTeen() && 
+	if (gAgent.isTeen() &&
 		(type == LLWearableType::WT_UNDERSHIRT || type == LLWearableType::WT_UNDERPANTS))
 	{
 		// Can't take off underclothing in simple UI mode or on PG accounts
-		
-		if (getWearableCount(type) < 2 && !will_replace) 
-		{
-			// if there is 0 or 1 undergarment worn, and we're not going to be immediately adding another,
-			// we cannot allow the removal for teen accounts
-			return;
-		}
+		// TODO: enable the removing of a single undershirt/underpants if multiple are worn. - Nyx
+		return;
 	}
 	if (getWearableCount(type) == 0)
 	{
@@ -1244,31 +1239,6 @@ void LLAgentWearables::setWearableOutfit(const LLInventoryItem::item_array_t& it
 {
 	llinfos << "setWearableOutfit() start" << llendl;
 
-	S32 count = wearables.count();
-	llassert(items.count() == count);
-	S32 i;
-
-	bool has_undershirt = false;
-	bool has_underpants = false;
-
-	for (i = 0; i < count; i++)
-	{
-		LLViewerWearable* new_wearable = wearables[i];
-		if (new_wearable)
-		{
-			const LLWearableType::EType type = new_wearable->getType();
-			if (type == LLWearableType::WT_UNDERSHIRT) 
-			{
-				has_undershirt = true;
-			}
-			if (type == LLWearableType::WT_UNDERPANTS) 
-			{
-				has_underpants = true;
-			}
-		}
-	}
-
-
 	// TODO: Removed check for ensuring that teens don't remove undershirt and underwear. Handle later
 	if (remove)
 	{
@@ -1278,17 +1248,15 @@ void LLAgentWearables::setWearableOutfit(const LLInventoryItem::item_array_t& it
 		{
 			if (LLWearableType::getAssetType((LLWearableType::EType)type) == LLAssetType::AT_CLOTHING)
 			{
-				bool will_replace = false;
-				if ((type == LLWearableType::WT_UNDERSHIRT && has_undershirt) || 
-					(type == LLWearableType::WT_UNDERPANTS && has_underpants))
-				{
-					will_replace = true;
-				}
-				removeWearable((LLWearableType::EType)type, true, 0, will_replace);
+				removeWearable((LLWearableType::EType)type, true, 0);
 			}
 		}
 	}
 
+	S32 count = wearables.count();
+	llassert(items.count() == count);
+
+	S32 i;
 	for (i = 0; i < count; i++)
 	{
 		LLViewerWearable* new_wearable = wearables[i];
diff --git a/indra/newview/llagentwearables.h b/indra/newview/llagentwearables.h
index f2f224a5736..5be46486367 100644
--- a/indra/newview/llagentwearables.h
+++ b/indra/newview/llagentwearables.h
@@ -146,7 +146,7 @@ class LLAgentWearables : public LLInitClass<LLAgentWearables>, public LLWearable
 	// Removing wearables
 	//--------------------------------------------------------------------
 public:
-	void			removeWearable(const LLWearableType::EType type, bool do_remove_all /*= false*/, U32 index /*= 0*/, BOOL will_replace = false);
+	void			removeWearable(const LLWearableType::EType type, bool do_remove_all /*= false*/, U32 index /*= 0*/);
 private:
 	void			removeWearableFinal(const LLWearableType::EType type, bool do_remove_all /*= false*/, U32 index /*= 0*/);
 protected:
-- 
GitLab


From 08bd67c0dda8d013ad490e89543297ebc3a15e77 Mon Sep 17 00:00:00 2001
From: Nyx Linden <nyx@lindenlab.com>
Date: Thu, 4 Apr 2013 11:38:23 -0400
Subject: [PATCH 412/436] SH-4059 FIX other's hover parameters affects your
 avatar's setting

Added an additional sanity check to make sure that other avatars don't
affect your wearables.
---
 indra/llappearance/llavatarappearance.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/llappearance/llavatarappearance.cpp b/indra/llappearance/llavatarappearance.cpp
index 37b7f7b14e4..3bb759d4587 100644
--- a/indra/llappearance/llavatarappearance.cpp
+++ b/indra/llappearance/llavatarappearance.cpp
@@ -497,7 +497,7 @@ void LLAvatarAppearance::computeBodySize()
 
 		llassert(new_body_size.mV[VZ] + mAvatarOffset.mV[VZ] >= 0.1f);
 
-		if (mWearableData) 
+		if (mWearableData && isSelf()) 
 		{
 			LLWearable* shape = mWearableData->getWearable(LLWearableType::WT_SHAPE, 0);
 			if (shape) 
-- 
GitLab


From 460c81070e5fa1c51ce7e186a9ecb8c5f1c995e1 Mon Sep 17 00:00:00 2001
From: Oz Linden <oz@lindenlab.com>
Date: Thu, 4 Apr 2013 16:43:15 -0400
Subject: [PATCH 413/436] tag merge of DRTVWR-310

---
 .hgtags | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.hgtags b/.hgtags
index e7b221d0cbc..3d872799deb 100644
--- a/.hgtags
+++ b/.hgtags
@@ -434,3 +434,4 @@ fd6b510e83f56830e45670c428653134899d3e25 DRTVWR-305
 902caf2b9fdbdbc5c399c4d5ebcecaf9cb97bab8 DRTVWR-306
 5c6098fd17d40ee3a38ca6b64f6be9db7f61f0a8 3.5.0-beta7
 adc360e6bf21390d2665380951d85937cd29a604 3.5.0-release
+1ada73295ed0eaa4a772ef079c29f57069342c32 DRTVWR-310
-- 
GitLab


From 01fb17cbc5a1d6a3526c4115787dbae74f7bdb07 Mon Sep 17 00:00:00 2001
From: Oz Linden <oz@lindenlab.com>
Date: Fri, 12 Apr 2013 11:17:33 -0400
Subject: [PATCH 414/436] Added tag 3.5.1-beta1 for changeset 0ca3910763ce

---
 .hgtags | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.hgtags b/.hgtags
index e7b221d0cbc..310c6fbc189 100644
--- a/.hgtags
+++ b/.hgtags
@@ -434,3 +434,4 @@ fd6b510e83f56830e45670c428653134899d3e25 DRTVWR-305
 902caf2b9fdbdbc5c399c4d5ebcecaf9cb97bab8 DRTVWR-306
 5c6098fd17d40ee3a38ca6b64f6be9db7f61f0a8 3.5.0-beta7
 adc360e6bf21390d2665380951d85937cd29a604 3.5.0-release
+0ca3910763cec967703e45bc6208a325dccb9f95 3.5.1-beta1
-- 
GitLab


From f12b2c7bca1af81d5b7548e5b856dace92e8fea9 Mon Sep 17 00:00:00 2001
From: Oz Linden <oz@lindenlab.com>
Date: Fri, 12 Apr 2013 12:10:36 -0400
Subject: [PATCH 415/436] Added tag 3.5.1-beta1 for changeset 20cdf370f5c8

---
 .hgtags | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/.hgtags b/.hgtags
index d07ac6dbdab..53693c2cdff 100644
--- a/.hgtags
+++ b/.hgtags
@@ -436,3 +436,5 @@ fd6b510e83f56830e45670c428653134899d3e25 DRTVWR-305
 adc360e6bf21390d2665380951d85937cd29a604 3.5.0-release
 0ca3910763cec967703e45bc6208a325dccb9f95 3.5.1-beta1
 1ada73295ed0eaa4a772ef079c29f57069342c32 DRTVWR-310
+0ca3910763cec967703e45bc6208a325dccb9f95 3.5.1-beta1
+20cdf370f5c8be6193bef6fb3a81cc3f81275191 3.5.1-beta1
-- 
GitLab


From fac6ee27f2d3277494f011271064b0e5e7e02554 Mon Sep 17 00:00:00 2001
From: Oz Linden <oz@lindenlab.com>
Date: Fri, 12 Apr 2013 12:42:03 -0400
Subject: [PATCH 416/436] increment version to 3.5.2

---
 indra/llcommon/llversionviewer.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/llcommon/llversionviewer.h b/indra/llcommon/llversionviewer.h
index ae5e3ecade2..0ea130e86bf 100644
--- a/indra/llcommon/llversionviewer.h
+++ b/indra/llcommon/llversionviewer.h
@@ -29,7 +29,7 @@
 
 const S32 LL_VERSION_MAJOR = 3;
 const S32 LL_VERSION_MINOR = 5;
-const S32 LL_VERSION_PATCH = 1;
+const S32 LL_VERSION_PATCH = 2;
 const S32 LL_VERSION_BUILD = 264760;
 
 const char * const LL_CHANNEL = "Second Life Developer";
-- 
GitLab


From d091644bccb012e5e4a10de7c1f03583d798d07d Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Wed, 17 Apr 2013 16:06:27 -0400
Subject: [PATCH 417/436] SH-4125 FIX - problem was unpredictable ordering of
 avatar and llviewerregion deletion. Avoid trying to send metrics when we're
 shutting down and it's too late anyway. Reviewed by Nyx

---
 indra/newview/llvoavatar.cpp | 29 ++++++++++++++++-------------
 1 file changed, 16 insertions(+), 13 deletions(-)

diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 0475e9fc892..06fb23b84b3 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -802,14 +802,14 @@ void LLVOAvatar::debugAvatarRezTime(std::string notification_name, std::string c
 //------------------------------------------------------------------------
 LLVOAvatar::~LLVOAvatar()
 {
-		if (!mFullyLoaded)
-		{
+	if (!mFullyLoaded)
+	{
 		debugAvatarRezTime("AvatarRezLeftCloudNotification","left after ruth seconds as cloud");
-		}
-		else
-		{
+	}
+	else
+	{
 		debugAvatarRezTime("AvatarRezLeftNotification","left sometime after declouding");
-		}
+	}
 
 	logPendingPhases();
 	
@@ -6023,6 +6023,11 @@ void LLVOAvatar::stopPhase(const std::string& phase_name, bool err_check)
 
 void LLVOAvatar::logPendingPhases()
 {
+	if (!isAgentAvatarValid())
+	{
+		return;
+	}
+	
 	for (LLViewerStats::phase_map_t::iterator it = getPhases().begin();
 		 it != getPhases().end();
 		 ++it)
@@ -6057,6 +6062,11 @@ void LLVOAvatar::logPendingPhasesAllAvatars()
 
 void LLVOAvatar::logMetricsTimerRecord(const std::string& phase_name, F32 elapsed, bool completed)
 {
+	if (!isAgentAvatarValid())
+	{
+		return;
+	}
+	
 	LLSD record;
 	record["timer_name"] = phase_name;
 	record["avatar_id"] = getID();
@@ -6073,13 +6083,6 @@ void LLVOAvatar::logMetricsTimerRecord(const std::string& phase_name, F32 elapse
 	record["is_using_server_bakes"] = ((bool) isUsingServerBakes());
 	record["is_self"] = isSelf();
 	
-
-#if 0 // verbose logging
-	std::ostringstream ostr;
-	ostr << LLSDNotationStreamer(record);
-	LL_DEBUGS("Avatar") << "record\n" << ostr.str() << llendl;
-#endif
-
 	if (isAgentAvatarValid())
 	{
 		gAgentAvatarp->addMetricsTimerRecord(record);
-- 
GitLab


From 623cb0c39fed147600afe1298d25c5153a6a96a2 Mon Sep 17 00:00:00 2001
From: callum_linden <none@none>
Date: Wed, 17 Apr 2013 14:31:30 -0700
Subject: [PATCH 418/436] fix for missed merge changes

---
 indra/cmake/CMakeLists.txt | 2 --
 1 file changed, 2 deletions(-)

diff --git a/indra/cmake/CMakeLists.txt b/indra/cmake/CMakeLists.txt
index 88e1f4a686d..10a23ea068f 100644
--- a/indra/cmake/CMakeLists.txt
+++ b/indra/cmake/CMakeLists.txt
@@ -24,12 +24,10 @@ set(cmake_SOURCE_FILES
     DragDrop.cmake
     EXPAT.cmake
     ExamplePlugin.cmake
-    FMOD.cmake
     FindAPR.cmake
     FindAutobuild.cmake
     FindBerkeleyDB.cmake
     FindCARes.cmake
-    FindELFIO.cmake
     FindFMODEX.cmake
     FindGLH.cmake
     FindGoogleBreakpad.cmake
-- 
GitLab


From dbe504cbd47149e18778c2873486c0e88d629d20 Mon Sep 17 00:00:00 2001
From: Nyx Linden <nyx@lindenlab.com>
Date: Wed, 17 Apr 2013 18:33:39 -0400
Subject: [PATCH 419/436] SUN-70 MAINT-2597 FIX Crash when trying to edit
 no-modify objects

Added protection for invalid / empty inventory contents
---
 indra/newview/llviewerobject.cpp | 36 +++++++++++++++++++++-----------
 indra/newview/llviewerobject.h   |  2 +-
 2 files changed, 25 insertions(+), 13 deletions(-)

diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp
index fcf5af76ff4..670272e7be5 100644
--- a/indra/newview/llviewerobject.cpp
+++ b/indra/newview/llviewerobject.cpp
@@ -2697,24 +2697,33 @@ void LLViewerObject::processTaskInvFile(void** user_data, S32 error_code, LLExtS
 	if(ft && (0 == error_code) &&
 	   (object = gObjectList.findObject(ft->mTaskID)))
 	{
-		object->loadTaskInvFile(ft->mFilename);
+		if (object->loadTaskInvFile(ft->mFilename))
+		{
 
-		LLInventoryObject::object_list_t::iterator it = object->mInventory->begin();
-		LLInventoryObject::object_list_t::iterator end = object->mInventory->end();
-		std::list<LLUUID>& pending_lst = object->mPendingInventoryItemsIDs;
+			LLInventoryObject::object_list_t::iterator it = object->mInventory->begin();
+			LLInventoryObject::object_list_t::iterator end = object->mInventory->end();
+			std::list<LLUUID>& pending_lst = object->mPendingInventoryItemsIDs;
 
-		for (; it != end && pending_lst.size(); ++it)
-		{
-			LLViewerInventoryItem* item = dynamic_cast<LLViewerInventoryItem*>(it->get());
-			if(item && item->getType() != LLAssetType::AT_CATEGORY)
+			for (; it != end && pending_lst.size(); ++it)
 			{
-				std::list<LLUUID>::iterator id_it = std::find(pending_lst.begin(), pending_lst.begin(), item->getAssetUUID());
-				if (id_it != pending_lst.end())
+				LLViewerInventoryItem* item = dynamic_cast<LLViewerInventoryItem*>(it->get());
+				if(item && item->getType() != LLAssetType::AT_CATEGORY)
 				{
-					pending_lst.erase(id_it);
+					std::list<LLUUID>::iterator id_it = std::find(pending_lst.begin(), pending_lst.begin(), item->getAssetUUID());
+					if (id_it != pending_lst.end())
+					{
+						pending_lst.erase(id_it);
+					}
 				}
 			}
 		}
+		else
+		{
+			// MAINT-2597 - crash when trying to edit a no-mod object
+			// Somehow get an contents inventory response, but with an invalid stream (possibly 0 size?)
+			// Stated repro was specific to no-mod objects so failing without user interaction should be safe.
+			llwarns << "Trying to load invalid task inventory file. Ignoring file contents." << llendl;
+		}
 	}
 	else
 	{
@@ -2726,7 +2735,7 @@ void LLViewerObject::processTaskInvFile(void** user_data, S32 error_code, LLExtS
 	delete ft;
 }
 
-void LLViewerObject::loadTaskInvFile(const std::string& filename)
+BOOL LLViewerObject::loadTaskInvFile(const std::string& filename)
 {
 	std::string filename_and_local_path = gDirUtilp->getExpandedFilename(LL_PATH_CACHE, filename);
 	llifstream ifs(filename_and_local_path);
@@ -2773,8 +2782,11 @@ void LLViewerObject::loadTaskInvFile(const std::string& filename)
 	{
 		llwarns << "unable to load task inventory: " << filename_and_local_path
 				<< llendl;
+		return FALSE;
 	}
 	doInventoryCallback();
+
+	return TRUE;
 }
 
 void LLViewerObject::doInventoryCallback()
diff --git a/indra/newview/llviewerobject.h b/indra/newview/llviewerobject.h
index 728d279c39b..316dbce7d07 100644
--- a/indra/newview/llviewerobject.h
+++ b/indra/newview/llviewerobject.h
@@ -656,7 +656,7 @@ class LLViewerObject : public LLPrimitive, public LLRefCount, public LLGLUpdate
 	//
 
 	static void processTaskInvFile(void** user_data, S32 error_code, LLExtStat ext_status);
-	void loadTaskInvFile(const std::string& filename);
+	BOOL loadTaskInvFile(const std::string& filename);
 	void doInventoryCallback();
 	
 	BOOL isOnMap();
-- 
GitLab


From 1fa45e7448c82b9c242aafce0f449f925d620e89 Mon Sep 17 00:00:00 2001
From: callum_linden <none@none>
Date: Wed, 17 Apr 2013 15:46:40 -0700
Subject: [PATCH 420/436] Fix for Linux build now that gcc upgraded to 4.6 by
 default

---
 indra/llaudio/llaudioengine_fmodex.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/llaudio/llaudioengine_fmodex.cpp b/indra/llaudio/llaudioengine_fmodex.cpp
index 40a43884a1a..183b2f94bc5 100644
--- a/indra/llaudio/llaudioengine_fmodex.cpp
+++ b/indra/llaudio/llaudioengine_fmodex.cpp
@@ -476,7 +476,7 @@ bool LLAudioChannelFMODEX::updateBuffer()
 	if (mCurrentSourcep)
 	{
 		// SJB: warnings can spam and hurt framerate, disabling
-		FMOD_RESULT result;
+		//FMOD_RESULT result;
 
 		result = mChannelp->setVolume(getSecondaryGain() * mCurrentSourcep->getGain());
 		//Check_FMOD_Error(result, "FMOD::Channel::setVolume");
-- 
GitLab


From 6383c8829f4a34d6b3c0cf26b388b6ddf9746da1 Mon Sep 17 00:00:00 2001
From: callum_linden <none@none>
Date: Wed, 17 Apr 2013 15:56:45 -0700
Subject: [PATCH 421/436] New fix for the fix for Linux build now that gcc
 upgraded to 4.6 by default

---
 indra/llaudio/llaudioengine_fmodex.cpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/indra/llaudio/llaudioengine_fmodex.cpp b/indra/llaudio/llaudioengine_fmodex.cpp
index 183b2f94bc5..5ec30c7d1d0 100644
--- a/indra/llaudio/llaudioengine_fmodex.cpp
+++ b/indra/llaudio/llaudioengine_fmodex.cpp
@@ -478,10 +478,10 @@ bool LLAudioChannelFMODEX::updateBuffer()
 		// SJB: warnings can spam and hurt framerate, disabling
 		//FMOD_RESULT result;
 
-		result = mChannelp->setVolume(getSecondaryGain() * mCurrentSourcep->getGain());
+		mChannelp->setVolume(getSecondaryGain() * mCurrentSourcep->getGain());
 		//Check_FMOD_Error(result, "FMOD::Channel::setVolume");
 
-		result = mChannelp->setMode(mCurrentSourcep->isLoop() ? FMOD_LOOP_NORMAL : FMOD_LOOP_OFF);
+		mChannelp->setMode(mCurrentSourcep->isLoop() ? FMOD_LOOP_NORMAL : FMOD_LOOP_OFF);
 		/*if(Check_FMOD_Error(result, "FMOD::Channel::setMode"))
 		{
 			S32 index;
-- 
GitLab


From 490edf41ebb91adcc127bd21463772eb17baad8b Mon Sep 17 00:00:00 2001
From: Nyx Linden <nyx@lindenlab.com>
Date: Wed, 17 Apr 2013 19:20:42 -0400
Subject: [PATCH 422/436] BUG-2326 MAINT-2596 FIX crash when selecting
 non-existant user in resident picker

Added checks to validate that the selection list is non-empty
---
 doc/contributions.txt                   | 1 +
 indra/newview/llfloateravatarpicker.cpp | 9 ++++++++-
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/doc/contributions.txt b/doc/contributions.txt
index 32dd3c1a2ee..a63e3a22b03 100644
--- a/doc/contributions.txt
+++ b/doc/contributions.txt
@@ -299,6 +299,7 @@ ChickyBabes Zuzu
 Christopher  Organiser
 Ciaran Laval
 Cinder Roxley
+    BUG-2326
     STORM-1703
 Clara Young
 Coaldust Numbers
diff --git a/indra/newview/llfloateravatarpicker.cpp b/indra/newview/llfloateravatarpicker.cpp
index 3e0e82b579e..113aa9a8f25 100644
--- a/indra/newview/llfloateravatarpicker.cpp
+++ b/indra/newview/llfloateravatarpicker.cpp
@@ -818,7 +818,14 @@ bool LLFloaterAvatarPicker::isSelectBtnEnabled()
 			uuid_vec_t avatar_ids;
 			std::vector<LLAvatarName> avatar_names;
 			getSelectedAvatarData(list, avatar_ids, avatar_names);
-			return mOkButtonValidateSignal(avatar_ids);
+			if (avatar_ids.size() >= 1) 
+			{
+				ret_val = mOkButtonValidateSignal(avatar_ids);
+			}
+			else
+			{
+				ret_val = false;
+			}
 		}
 	}
 
-- 
GitLab


From 65080feae3e3297b603459edbc83d927501082ad Mon Sep 17 00:00:00 2001
From: Oz Linden <oz@lindenlab.com>
Date: Thu, 18 Apr 2013 11:25:42 -0400
Subject: [PATCH 423/436] tag merge of DRTVWR-313

---
 .hgtags | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.hgtags b/.hgtags
index 53693c2cdff..32a228465d3 100644
--- a/.hgtags
+++ b/.hgtags
@@ -438,3 +438,4 @@ adc360e6bf21390d2665380951d85937cd29a604 3.5.0-release
 1ada73295ed0eaa4a772ef079c29f57069342c32 DRTVWR-310
 0ca3910763cec967703e45bc6208a325dccb9f95 3.5.1-beta1
 20cdf370f5c8be6193bef6fb3a81cc3f81275191 3.5.1-beta1
+2319904200de367646b9a9442239a38d52c1eeb5 DRTVWR-313
-- 
GitLab


From c8e8ef8517efa174df8b4a3085548f2a658be21b Mon Sep 17 00:00:00 2001
From: Oz Linden <oz@lindenlab.com>
Date: Thu, 18 Apr 2013 13:18:45 -0400
Subject: [PATCH 424/436] Added tag 3.5.1-beta2 for changeset 9d8726eca785

---
 .hgtags | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.hgtags b/.hgtags
index 32a228465d3..ed123d34409 100644
--- a/.hgtags
+++ b/.hgtags
@@ -439,3 +439,4 @@ adc360e6bf21390d2665380951d85937cd29a604 3.5.0-release
 0ca3910763cec967703e45bc6208a325dccb9f95 3.5.1-beta1
 20cdf370f5c8be6193bef6fb3a81cc3f81275191 3.5.1-beta1
 2319904200de367646b9a9442239a38d52c1eeb5 DRTVWR-313
+9d8726eca785acad694564516f16dd639faf45c0 3.5.1-beta2
-- 
GitLab


From a1ca90f89327c6423acb7328eebf9d8afd49668d Mon Sep 17 00:00:00 2001
From: callum_linden <none@none>
Date: Thu, 18 Apr 2013 11:50:40 -0700
Subject: [PATCH 425/436] Blank line on end of files as per commit hook
 requirements

---
 indra/cmake/FMODEX.cmake | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/indra/cmake/FMODEX.cmake b/indra/cmake/FMODEX.cmake
index 448392437a4..65bc1cabeb8 100644
--- a/indra/cmake/FMODEX.cmake
+++ b/indra/cmake/FMODEX.cmake
@@ -42,4 +42,5 @@ if (FMODEX)
       set(FMODEX_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/include/fmodex)
     endif (FMODEX_LIBRARY AND FMODEX_INCLUDE_DIR)
   endif (STANDALONE)
-endif (FMODEX)
\ No newline at end of file
+endif (FMODEX)
+
-- 
GitLab


From 35cbd7d7774ce622ad868851776a3bda49b421bc Mon Sep 17 00:00:00 2001
From: Oz Linden <oz@lindenlab.com>
Date: Thu, 18 Apr 2013 14:55:03 -0400
Subject: [PATCH 426/436] add newline

---
 indra/cmake/FindFMODEX.cmake | 1 -
 1 file changed, 1 deletion(-)

diff --git a/indra/cmake/FindFMODEX.cmake b/indra/cmake/FindFMODEX.cmake
index 9b9b85d73e3..b621727c0ea 100644
--- a/indra/cmake/FindFMODEX.cmake
+++ b/indra/cmake/FindFMODEX.cmake
@@ -63,4 +63,3 @@ MARK_AS_ADVANCED(
   FMODEX_LIBRARY
   FMODEX_INCLUDE_DIR
   )
-  
\ No newline at end of file
-- 
GitLab


From adfa7d49de6d58671bc7121483e306a9f6d705ed Mon Sep 17 00:00:00 2001
From: Oz Linden <oz@lindenlab.com>
Date: Thu, 18 Apr 2013 14:55:23 -0400
Subject: [PATCH 427/436] tag merge of DRTVWR-298

---
 .hgtags | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.hgtags b/.hgtags
index 53693c2cdff..e85e6e85754 100644
--- a/.hgtags
+++ b/.hgtags
@@ -438,3 +438,4 @@ adc360e6bf21390d2665380951d85937cd29a604 3.5.0-release
 1ada73295ed0eaa4a772ef079c29f57069342c32 DRTVWR-310
 0ca3910763cec967703e45bc6208a325dccb9f95 3.5.1-beta1
 20cdf370f5c8be6193bef6fb3a81cc3f81275191 3.5.1-beta1
+78a8fe6abf331944d6b6bb1ce1024a6bc08141f4 DRTVWR-298
-- 
GitLab


From be1bb8d76dd33bf331cadeb817a89eb2940ac578 Mon Sep 17 00:00:00 2001
From: Oz Linden <oz@lindenlab.com>
Date: Fri, 19 Apr 2013 10:10:17 -0400
Subject: [PATCH 428/436] tag merge of DRTVWR-294

---
 .hgtags | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.hgtags b/.hgtags
index 7951e232afb..cb86c6a1de6 100755
--- a/.hgtags
+++ b/.hgtags
@@ -431,3 +431,4 @@ f6ca5bb75bca975ff0bc77e71e615f6478c4559c 3.5.0-beta3
 dd058a6093c493120d67c8e02c812c0f7b2d3db0 3.5.0-beta5
 fd6b510e83f56830e45670c428653134899d3e25 DRTVWR-305
 55339537d99afc394d1bb7fdb7d074bf321ca62f 3.5.0-beta6
+50ccc12f38c3c99f03b374e32429cb043b73e2a6 DRTVWR-294
-- 
GitLab


From d9de58b46ab4c5e248b8dd7b3f79e1672f1f215a Mon Sep 17 00:00:00 2001
From: callum <none@none>
Date: Fri, 19 Apr 2013 16:29:11 -0700
Subject: [PATCH 429/436] OPEN-173 FIX FMODEx Music stutters once every few
 seconds (OSS patch via Latif Khalifa & Siana Gearz)

---
 autobuild.xml                             | 12 +++----
 indra/llaudio/llstreamingaudio_fmodex.cpp | 39 +++++++++++++++++------
 indra/llaudio/llstreamingaudio_fmodex.h   |  2 --
 3 files changed, 35 insertions(+), 18 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index ba6b76e7b21..1bf09eab3d2 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -498,9 +498,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-	      <string>89a3df89da75444877cf3197416fed67</string>
+	      <string>10352aab979c333a52dbad21b6e6fba9</string>
               <key>url</key>
-	      <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmodex-private/rev/270029/arch/Darwin/installer/fmodex-4.44-darwin-20130205.tar.bz2</string>
+	      <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmodex-private/rev/274403/arch/Darwin/installer/fmodex-4.44-darwin-20130419.tar.bz2</string>
             </map>
             <key>name</key>
             <string>darwin</string>
@@ -510,9 +510,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-          <string>fd787931f49ece9bf99f4d1d1596f04b</string>
+          <string>79e45527aa9fb90b813599dff5ce01a7</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmodex-private/rev/269984/arch/Linux/installer/fmodex-4.44-linux-20130205.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmodex-private/rev/274378/arch/Linux/installer/fmodex-4.44-linux-20130419.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
@@ -522,9 +522,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-	      <string>9e0f62be63e74af18f670f864cac93da</string>
+	      <string>81a2f77651e37b704198c7ea72f63040</string>
               <key>url</key>
-	      <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmodex-private/rev/270026/arch/CYGWIN/installer/fmodex-4.44-windows-20130205.tar.bz2</string>
+	      <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmodex-private/rev/274401/arch/CYGWIN/installer/fmodex-4.44-windows-20130419.tar.bz2</string>
             </map>
             <key>name</key>
             <string>windows</string>
diff --git a/indra/llaudio/llstreamingaudio_fmodex.cpp b/indra/llaudio/llstreamingaudio_fmodex.cpp
index 4a74267650b..266fa2f57b2 100644
--- a/indra/llaudio/llstreamingaudio_fmodex.cpp
+++ b/indra/llaudio/llstreamingaudio_fmodex.cpp
@@ -153,7 +153,6 @@ void LLStreamingAudio_FMODEX::update()
 			// Reset volume to previously set volume
 			setGain(getGain());
 			mFMODInternetStreamChannelp->setPaused(false);
-			mLastStarved.stop();
 		}
 	}
 	else if(open_state == FMOD_OPENSTATE_ERROR)
@@ -168,21 +167,43 @@ void LLStreamingAudio_FMODEX::update()
 
 		if(mFMODInternetStreamChannelp->getCurrentSound(&sound) == FMOD_OK && sound)
 		{
+			FMOD_TAG tag;
+			S32 tagcount, dirtytagcount;
+
+			if(sound->getNumTags(&tagcount, &dirtytagcount) == FMOD_OK && dirtytagcount)
+			{
+				for(S32 i = 0; i < tagcount; ++i)
+				{
+					if(sound->getTag(NULL, i, &tag)!=FMOD_OK)
+						continue;
+
+					if (tag.type == FMOD_TAGTYPE_FMOD)
+					{
+						if (!strcmp(tag.name, "Sample Rate Change"))
+						{
+							llinfos << "Stream forced changing sample rate to " << *((float *)tag.data) << llendl;
+							mFMODInternetStreamChannelp->setFrequency(*((float *)tag.data));
+						}
+						continue;
+					}
+				}
+			}
+
 			if(starving)
 			{
-				if(!mLastStarved.getStarted())
+				bool paused = false;
+				mFMODInternetStreamChannelp->getPaused(&paused);
+				if(!paused)
 				{
-					llinfos << "Stream starvation detected! Muting stream audio until it clears." << llendl;
+					llinfos << "Stream starvation detected! Pausing stream until buffer nearly full." << llendl;
 					llinfos << "  (diskbusy="<<diskbusy<<")" << llendl;
 					llinfos << "  (progress="<<progress<<")" << llendl;
-					mFMODInternetStreamChannelp->setMute(true);
+					mFMODInternetStreamChannelp->setPaused(true);
 				}
-				mLastStarved.start();
 			}
-			else if(mLastStarved.getStarted() && mLastStarved.getElapsedTimeF32() > 1.f)
+			else if(progress > 80)
 			{
-				mLastStarved.stop();
-				mFMODInternetStreamChannelp->setMute(false);
+				mFMODInternetStreamChannelp->setPaused(false);
 			}
 		}
 	}
@@ -190,8 +211,6 @@ void LLStreamingAudio_FMODEX::update()
 
 void LLStreamingAudio_FMODEX::stop()
 {
-	mLastStarved.stop();
-
 	if (mFMODInternetStreamChannelp)
 	{
 		mFMODInternetStreamChannelp->setPaused(true);
diff --git a/indra/llaudio/llstreamingaudio_fmodex.h b/indra/llaudio/llstreamingaudio_fmodex.h
index 42b6b3aaa8f..1dee18ae7da 100644
--- a/indra/llaudio/llstreamingaudio_fmodex.h
+++ b/indra/llaudio/llstreamingaudio_fmodex.h
@@ -67,8 +67,6 @@ class LLStreamingAudio_FMODEX : public LLStreamingAudioInterface
 
 	std::string mURL;
 	F32 mGain;
-
-	LLTimer mLastStarved;
 };
 
 
-- 
GitLab


From b7cf8931d4899b37e01d21d7408bb8b974f46a3a Mon Sep 17 00:00:00 2001
From: callum <none@none>
Date: Fri, 19 Apr 2013 17:16:23 -0700
Subject: [PATCH 430/436] OPEN-173 FIX FMODEx Music stutters once every few
 seconds (OSS patch via Latif Khalifa & Siana Gearz) - additional fix. Team
 City gave me the wrong MD5 for 3p-package

---
 autobuild.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/autobuild.xml b/autobuild.xml
index 1bf09eab3d2..e3b25451381 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -522,7 +522,7 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-	      <string>81a2f77651e37b704198c7ea72f63040</string>
+	      <string>0980cdf98a322a780ba739e324d0b955</string>
               <key>url</key>
 	      <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmodex-private/rev/274401/arch/CYGWIN/installer/fmodex-4.44-windows-20130419.tar.bz2</string>
             </map>
-- 
GitLab


From 06d7845a5a40e012ad1bc7cc4ec15e82c00e5da4 Mon Sep 17 00:00:00 2001
From: Nyx Linden <nyx@lindenlab.com>
Date: Mon, 22 Apr 2013 19:14:24 -0400
Subject: [PATCH 431/436] SUN-72 SH-4132 FIX viewer builds cannot write to
 paths containing special characters.

Integrated Nicky Dasmijn's patch to handle the unicode file paths properly.
Code reviewed, patch was clean.
Tested locally, correctly allows wearables to load where they would fail before.
Should be ready for automated build & QA.
---
 doc/contributions.txt     |  1 +
 indra/llcommon/llfile.cpp | 21 +++++++++++++++------
 2 files changed, 16 insertions(+), 6 deletions(-)

diff --git a/doc/contributions.txt b/doc/contributions.txt
index a63e3a22b03..d7f050a9168 100644
--- a/doc/contributions.txt
+++ b/doc/contributions.txt
@@ -899,6 +899,7 @@ NickyD
 Nicky Dasmijn
 	VWR-29228
 	MAINT-873
+	SUN-72
 Nicky Perian
 	OPEN-1
 	STORM-1087
diff --git a/indra/llcommon/llfile.cpp b/indra/llcommon/llfile.cpp
index bc615ed39ec..864b6e69756 100644
--- a/indra/llcommon/llfile.cpp
+++ b/indra/llcommon/llfile.cpp
@@ -853,7 +853,8 @@ llifstream::llifstream(const std::string& _Filename,
 #if LL_WINDOWS
 	std::istream(&_M_filebuf)
 {
-	if (_M_filebuf.open(_Filename.c_str(), _Mode | ios_base::in) == 0)
+	llutf16string wideName = utf8str_to_utf16str( _Filename );
+	if (_M_filebuf.open(wideName.c_str(), _Mode | ios_base::in) == 0)
 	{
 		_Myios::setstate(ios_base::failbit);
 	}
@@ -872,7 +873,8 @@ llifstream::llifstream(const char* _Filename,
 #if LL_WINDOWS
 	std::istream(&_M_filebuf)
 {
-	if (_M_filebuf.open(_Filename, _Mode | ios_base::in) == 0)
+	llutf16string wideName = utf8str_to_utf16str( _Filename );
+	if (_M_filebuf.open(wideName.c_str(), _Mode | ios_base::in) == 0)
 	{
 		_Myios::setstate(ios_base::failbit);
 	}
@@ -917,8 +919,10 @@ bool llifstream::is_open() const
 
 void llifstream::open(const char* _Filename, ios_base::openmode _Mode)
 {	// open a C stream with specified mode
-	if (_M_filebuf.open(_Filename, _Mode | ios_base::in) == 0)
+
 #if LL_WINDOWS
+	llutf16string wideName = utf8str_to_utf16str( _Filename );
+	if (_M_filebuf.open( wideName.c_str(), _Mode | ios_base::in) == 0)
 	{
 		_Myios::setstate(ios_base::failbit);
 	}
@@ -927,6 +931,7 @@ void llifstream::open(const char* _Filename, ios_base::openmode _Mode)
 		_Myios::clear();
 	}
 #else
+	if (_M_filebuf.open(_Filename, _Mode | ios_base::in) == 0)
 	{
 		this->setstate(ios_base::failbit);
 	}
@@ -969,7 +974,8 @@ llofstream::llofstream(const std::string& _Filename,
 #if LL_WINDOWS
 	std::ostream(&_M_filebuf)
 {
-	if (_M_filebuf.open(_Filename.c_str(), _Mode | ios_base::out) == 0)
+	llutf16string wideName = utf8str_to_utf16str( _Filename );
+	if (_M_filebuf.open( wideName.c_str(), _Mode | ios_base::out) == 0)
 	{
 		_Myios::setstate(ios_base::failbit);
 	}
@@ -988,7 +994,8 @@ llofstream::llofstream(const char* _Filename,
 #if LL_WINDOWS
 	std::ostream(&_M_filebuf)
 {
-	if (_M_filebuf.open(_Filename, _Mode | ios_base::out) == 0)
+	llutf16string wideName = utf8str_to_utf16str( _Filename );
+	if (_M_filebuf.open( wideName.c_str(), _Mode | ios_base::out) == 0)
 	{
 		_Myios::setstate(ios_base::failbit);
 	}
@@ -1032,8 +1039,9 @@ bool llofstream::is_open() const
 
 void llofstream::open(const char* _Filename, ios_base::openmode _Mode)
 {	// open a C stream with specified mode
-	if (_M_filebuf.open(_Filename, _Mode | ios_base::out) == 0)
 #if LL_WINDOWS
+	llutf16string wideName = utf8str_to_utf16str( _Filename );
+	if (_M_filebuf.open( wideName.c_str(), _Mode | ios_base::out) == 0)
 	{
 		_Myios::setstate(ios_base::failbit);
 	}
@@ -1042,6 +1050,7 @@ void llofstream::open(const char* _Filename, ios_base::openmode _Mode)
 		_Myios::clear();
 	}
 #else
+	if (_M_filebuf.open(_Filename, _Mode | ios_base::out) == 0)
 	{
 		this->setstate(ios_base::failbit);
 	}
-- 
GitLab


From 5fcb76f2528923e498848005ab80b82cae8fcc8b Mon Sep 17 00:00:00 2001
From: Oz Linden <oz@lindenlab.com>
Date: Tue, 23 Apr 2013 11:43:14 -0400
Subject: [PATCH 432/436] tag merge of DRTVWR-314

---
 .hgtags | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.hgtags b/.hgtags
index ed123d34409..23225c70bb6 100644
--- a/.hgtags
+++ b/.hgtags
@@ -440,3 +440,4 @@ adc360e6bf21390d2665380951d85937cd29a604 3.5.0-release
 20cdf370f5c8be6193bef6fb3a81cc3f81275191 3.5.1-beta1
 2319904200de367646b9a9442239a38d52c1eeb5 DRTVWR-313
 9d8726eca785acad694564516f16dd639faf45c0 3.5.1-beta2
+4b7fa963b80e2056ab648f83a4d61310b3cedb3d DRTVWR-314
-- 
GitLab


From 0bc7056ae6b314fac508f2c417cc5818107cb72e Mon Sep 17 00:00:00 2001
From: Oz Linden <oz@lindenlab.com>
Date: Tue, 23 Apr 2013 12:27:12 -0400
Subject: [PATCH 433/436] Added tag 3.5.1-beta3 for changeset 65ae89aeb7ea

---
 .hgtags | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.hgtags b/.hgtags
index 23225c70bb6..f2ea8cb0ea2 100644
--- a/.hgtags
+++ b/.hgtags
@@ -441,3 +441,4 @@ adc360e6bf21390d2665380951d85937cd29a604 3.5.0-release
 2319904200de367646b9a9442239a38d52c1eeb5 DRTVWR-313
 9d8726eca785acad694564516f16dd639faf45c0 3.5.1-beta2
 4b7fa963b80e2056ab648f83a4d61310b3cedb3d DRTVWR-314
+65ae89aeb7ea674a555e439e963f17949322ac94 3.5.1-beta3
-- 
GitLab


From 80772aa1ad62a89129f24508e2005b20fec88854 Mon Sep 17 00:00:00 2001
From: eli <none@none>
Date: Wed, 24 Apr 2013 13:49:11 -0700
Subject: [PATCH 434/436] sync with viewer-development (per DRTVWR-309)

---
 .../xui/de/floater_conversation_log.xml       |   8 -
 .../xui/de/floater_conversation_preview.xml   |   7 -
 .../default/xui/de/floater_im_container.xml   |  29 +-
 .../default/xui/de/floater_im_session.xml     |  61 +-
 .../default/xui/de/floater_incoming_call.xml  |  10 +-
 .../xui/de/floater_pathfinding_console.xml    |   2 +-
 .../default/xui/de/floater_texture_ctrl.xml   |   2 +-
 .../xui/de/floater_voice_chat_volume.xml      |   4 -
 .../default/xui/de/floater_voice_effect.xml   |   2 +-
 .../default/xui/de/floater_voice_volume.xml   |   8 -
 .../skins/default/xui/de/menu_cof_gear.xml    |   6 +-
 .../default/xui/de/menu_conversation.xml      |  31 -
 .../xui/de/menu_conversation_log_gear.xml     |  15 -
 .../xui/de/menu_conversation_log_view.xml     |   7 -
 .../default/xui/de/menu_im_conversation.xml   |  15 -
 .../xui/de/menu_im_session_showmodes.xml      |   7 -
 .../skins/default/xui/de/menu_object_icon.xml |   2 -
 .../skins/default/xui/de/menu_outfit_gear.xml |   2 -
 .../default/xui/de/menu_participant_view.xml  |  13 -
 .../xui/de/menu_people_blocked_gear.xml       |   5 -
 .../xui/de/menu_people_blocked_plus.xml       |   5 -
 .../xui/de/menu_people_blocked_view.xml       |   5 -
 .../xui/de/menu_people_friends_view.xml       |   8 -
 .../default/xui/de/menu_people_groups.xml     |   2 +-
 .../xui/de/menu_people_groups_view.xml        |   4 -
 .../default/xui/de/menu_people_nearby.xml     |  23 +-
 .../xui/de/menu_people_nearby_multiselect.xml |  14 +-
 .../xui/de/menu_people_nearby_view.xml        |   8 -
 .../xui/de/menu_people_recent_view.xml        |   6 -
 .../skins/default/xui/de/menu_url_agent.xml   |   4 +-
 .../default/xui/de/menu_url_objectim.xml      |   2 +-
 .../skins/default/xui/de/menu_viewer.xml      |  37 +-
 .../skins/default/xui/de/notifications.xml    | 690 +----------------
 .../default/xui/de/panel_avatar_list_item.xml |   1 -
 .../xui/de/panel_block_list_sidetray.xml      |  15 +-
 .../xui/de/panel_conversation_list_item.xml   |   8 -
 .../de/panel_conversation_log_list_item.xml   |   6 -
 .../default/xui/de/panel_group_list_item.xml  |   1 -
 .../skins/default/xui/de/panel_people.xml     |  88 ++-
 .../default/xui/de/panel_preferences_chat.xml | 110 +--
 .../xui/de/panel_preferences_general.xml      |   4 +-
 .../default/xui/de/sidepanel_task_info.xml    |   1 -
 .../newview/skins/default/xui/de/strings.xml  |  68 +-
 .../default/xui/en/floater_im_session.xml     |  62 +-
 .../default/xui/en/menu_attachment_other.xml  |   8 +
 .../default/xui/en/menu_attachment_self.xml   |   8 +
 .../default/xui/en/menu_avatar_other.xml      |   8 +
 .../skins/default/xui/en/menu_avatar_self.xml |   8 +
 .../skins/default/xui/en/menu_login.xml       |  15 +-
 .../skins/default/xui/en/menu_viewer.xml      |  11 +-
 .../newview/skins/default/xui/en/strings.xml  |   1 +
 .../xui/es/floater_conversation_log.xml       |   8 -
 .../xui/es/floater_conversation_preview.xml   |   7 -
 .../default/xui/es/floater_im_container.xml   |  29 +-
 .../default/xui/es/floater_im_session.xml     |  61 +-
 .../default/xui/es/floater_incoming_call.xml  |  10 +-
 .../xui/es/floater_pathfinding_console.xml    |   2 +-
 .../default/xui/es/floater_texture_ctrl.xml   |   2 +-
 .../xui/es/floater_voice_chat_volume.xml      |   4 -
 .../default/xui/es/floater_voice_effect.xml   |   2 +-
 .../default/xui/es/floater_voice_volume.xml   |   8 -
 .../skins/default/xui/es/menu_cof_gear.xml    |   6 +-
 .../default/xui/es/menu_conversation.xml      |  31 -
 .../xui/es/menu_conversation_log_gear.xml     |  15 -
 .../xui/es/menu_conversation_log_view.xml     |   7 -
 .../default/xui/es/menu_im_conversation.xml   |  15 -
 .../xui/es/menu_im_session_showmodes.xml      |   7 -
 .../skins/default/xui/es/menu_object_icon.xml |   2 -
 .../skins/default/xui/es/menu_outfit_gear.xml |   2 -
 .../default/xui/es/menu_participant_view.xml  |  13 -
 .../xui/es/menu_people_blocked_gear.xml       |   5 -
 .../xui/es/menu_people_blocked_plus.xml       |   5 -
 .../xui/es/menu_people_blocked_view.xml       |   5 -
 .../xui/es/menu_people_friends_view.xml       |   8 -
 .../default/xui/es/menu_people_groups.xml     |   2 +-
 .../xui/es/menu_people_groups_view.xml        |   4 -
 .../default/xui/es/menu_people_nearby.xml     |  23 +-
 .../xui/es/menu_people_nearby_multiselect.xml |  14 +-
 .../xui/es/menu_people_nearby_view.xml        |   8 -
 .../xui/es/menu_people_recent_view.xml        |   6 -
 .../skins/default/xui/es/menu_url_agent.xml   |   4 +-
 .../default/xui/es/menu_url_objectim.xml      |   2 +-
 .../skins/default/xui/es/menu_viewer.xml      |  35 +-
 .../skins/default/xui/es/notifications.xml    | 692 +-----------------
 .../default/xui/es/panel_avatar_list_item.xml |   1 -
 .../xui/es/panel_block_list_sidetray.xml      |  15 +-
 .../xui/es/panel_conversation_list_item.xml   |   8 -
 .../es/panel_conversation_log_list_item.xml   |   6 -
 .../default/xui/es/panel_group_list_item.xml  |   1 -
 .../skins/default/xui/es/panel_people.xml     |  88 ++-
 .../default/xui/es/panel_preferences_chat.xml | 110 +--
 .../xui/es/panel_preferences_general.xml      |   5 +-
 .../default/xui/es/sidepanel_task_info.xml    |   1 -
 .../newview/skins/default/xui/es/strings.xml  |  63 +-
 .../xui/fr/floater_conversation_log.xml       |   8 -
 .../xui/fr/floater_conversation_preview.xml   |   7 -
 .../default/xui/fr/floater_im_container.xml   |  29 +-
 .../default/xui/fr/floater_im_session.xml     |  61 +-
 .../default/xui/fr/floater_incoming_call.xml  |  10 +-
 .../xui/fr/floater_pathfinding_console.xml    |   2 +-
 .../default/xui/fr/floater_texture_ctrl.xml   |   2 +-
 .../xui/fr/floater_voice_chat_volume.xml      |   4 -
 .../default/xui/fr/floater_voice_effect.xml   |   2 +-
 .../default/xui/fr/floater_voice_volume.xml   |   8 -
 .../skins/default/xui/fr/menu_cof_gear.xml    |   6 +-
 .../default/xui/fr/menu_conversation.xml      |  31 -
 .../xui/fr/menu_conversation_log_gear.xml     |  15 -
 .../xui/fr/menu_conversation_log_view.xml     |   7 -
 .../default/xui/fr/menu_im_conversation.xml   |  15 -
 .../xui/fr/menu_im_session_showmodes.xml      |   7 -
 .../skins/default/xui/fr/menu_object_icon.xml |   2 -
 .../skins/default/xui/fr/menu_outfit_gear.xml |   2 -
 .../default/xui/fr/menu_participant_view.xml  |  13 -
 .../xui/fr/menu_people_blocked_gear.xml       |   5 -
 .../xui/fr/menu_people_blocked_plus.xml       |   5 -
 .../xui/fr/menu_people_blocked_view.xml       |   5 -
 .../xui/fr/menu_people_friends_view.xml       |   8 -
 .../default/xui/fr/menu_people_groups.xml     |   2 +-
 .../xui/fr/menu_people_groups_view.xml        |   4 -
 .../default/xui/fr/menu_people_nearby.xml     |  23 +-
 .../xui/fr/menu_people_nearby_multiselect.xml |  14 +-
 .../xui/fr/menu_people_nearby_view.xml        |   8 -
 .../xui/fr/menu_people_recent_view.xml        |   6 -
 .../skins/default/xui/fr/menu_url_agent.xml   |   4 +-
 .../default/xui/fr/menu_url_objectim.xml      |   2 +-
 .../skins/default/xui/fr/menu_viewer.xml      |  37 +-
 .../skins/default/xui/fr/notifications.xml    | 690 +----------------
 .../default/xui/fr/panel_avatar_list_item.xml |   1 -
 .../xui/fr/panel_block_list_sidetray.xml      |  15 +-
 .../xui/fr/panel_conversation_list_item.xml   |   8 -
 .../fr/panel_conversation_log_list_item.xml   |   6 -
 .../default/xui/fr/panel_group_list_item.xml  |   1 -
 .../skins/default/xui/fr/panel_people.xml     |  88 ++-
 .../default/xui/fr/panel_preferences_chat.xml | 110 +--
 .../xui/fr/panel_preferences_general.xml      |   4 +-
 .../default/xui/fr/sidepanel_task_info.xml    |   1 -
 .../newview/skins/default/xui/fr/strings.xml  |  68 +-
 .../xui/it/floater_conversation_log.xml       |   8 -
 .../xui/it/floater_conversation_preview.xml   |   7 -
 .../default/xui/it/floater_im_container.xml   |  29 +-
 .../default/xui/it/floater_im_session.xml     |  61 +-
 .../default/xui/it/floater_incoming_call.xml  |  10 +-
 .../xui/it/floater_pathfinding_console.xml    |   2 +-
 .../default/xui/it/floater_texture_ctrl.xml   |   2 +-
 .../xui/it/floater_voice_chat_volume.xml      |   4 -
 .../default/xui/it/floater_voice_effect.xml   |   2 +-
 .../default/xui/it/floater_voice_volume.xml   |   8 -
 .../skins/default/xui/it/menu_cof_gear.xml    |   6 +-
 .../default/xui/it/menu_conversation.xml      |  31 -
 .../xui/it/menu_conversation_log_gear.xml     |  15 -
 .../xui/it/menu_conversation_log_view.xml     |   7 -
 .../default/xui/it/menu_im_conversation.xml   |  15 -
 .../xui/it/menu_im_session_showmodes.xml      |   7 -
 .../skins/default/xui/it/menu_object_icon.xml |   2 -
 .../skins/default/xui/it/menu_outfit_gear.xml |   2 -
 .../default/xui/it/menu_participant_view.xml  |  13 -
 .../xui/it/menu_people_blocked_gear.xml       |   5 -
 .../xui/it/menu_people_blocked_plus.xml       |   5 -
 .../xui/it/menu_people_blocked_view.xml       |   5 -
 .../xui/it/menu_people_friends_view.xml       |   8 -
 .../default/xui/it/menu_people_groups.xml     |   2 +-
 .../xui/it/menu_people_groups_view.xml        |   4 -
 .../default/xui/it/menu_people_nearby.xml     |  23 +-
 .../xui/it/menu_people_nearby_multiselect.xml |  14 +-
 .../xui/it/menu_people_nearby_view.xml        |   8 -
 .../xui/it/menu_people_recent_view.xml        |   6 -
 .../skins/default/xui/it/menu_url_agent.xml   |   4 +-
 .../default/xui/it/menu_url_objectim.xml      |   2 +-
 .../skins/default/xui/it/menu_viewer.xml      |  37 +-
 .../skins/default/xui/it/notifications.xml    | 692 +-----------------
 .../default/xui/it/panel_avatar_list_item.xml |   1 -
 .../xui/it/panel_block_list_sidetray.xml      |  15 +-
 .../xui/it/panel_conversation_list_item.xml   |   8 -
 .../it/panel_conversation_log_list_item.xml   |   6 -
 .../default/xui/it/panel_group_list_item.xml  |   1 -
 .../skins/default/xui/it/panel_people.xml     |  88 ++-
 .../default/xui/it/panel_preferences_chat.xml | 110 +--
 .../xui/it/panel_preferences_general.xml      |   5 +-
 .../default/xui/it/sidepanel_task_info.xml    |   1 -
 .../newview/skins/default/xui/it/strings.xml  |  63 +-
 .../xui/ja/floater_conversation_log.xml       |   8 -
 .../xui/ja/floater_conversation_preview.xml   |   7 -
 .../default/xui/ja/floater_im_container.xml   |  29 +-
 .../default/xui/ja/floater_im_session.xml     |  61 +-
 .../default/xui/ja/floater_incoming_call.xml  |  10 +-
 .../xui/ja/floater_pathfinding_console.xml    |   2 +-
 .../default/xui/ja/floater_texture_ctrl.xml   |   2 +-
 .../xui/ja/floater_voice_chat_volume.xml      |   4 -
 .../default/xui/ja/floater_voice_effect.xml   |   2 +-
 .../default/xui/ja/floater_voice_volume.xml   |   8 -
 .../skins/default/xui/ja/menu_cof_gear.xml    |   6 +-
 .../default/xui/ja/menu_conversation.xml      |  31 -
 .../xui/ja/menu_conversation_log_gear.xml     |  15 -
 .../xui/ja/menu_conversation_log_view.xml     |   7 -
 .../default/xui/ja/menu_im_conversation.xml   |  15 -
 .../xui/ja/menu_im_session_showmodes.xml      |   7 -
 .../skins/default/xui/ja/menu_object_icon.xml |   2 -
 .../skins/default/xui/ja/menu_outfit_gear.xml |   2 -
 .../default/xui/ja/menu_participant_view.xml  |  13 -
 .../xui/ja/menu_people_blocked_gear.xml       |   5 -
 .../xui/ja/menu_people_blocked_plus.xml       |   5 -
 .../xui/ja/menu_people_blocked_view.xml       |   5 -
 .../xui/ja/menu_people_friends_view.xml       |   8 -
 .../default/xui/ja/menu_people_groups.xml     |   2 +-
 .../xui/ja/menu_people_groups_view.xml        |   4 -
 .../default/xui/ja/menu_people_nearby.xml     |  23 +-
 .../xui/ja/menu_people_nearby_multiselect.xml |  14 +-
 .../xui/ja/menu_people_nearby_view.xml        |   8 -
 .../xui/ja/menu_people_recent_view.xml        |   6 -
 .../skins/default/xui/ja/menu_url_agent.xml   |   4 +-
 .../default/xui/ja/menu_url_objectim.xml      |   2 +-
 .../skins/default/xui/ja/menu_viewer.xml      |  37 +-
 .../skins/default/xui/ja/notifications.xml    | 686 +----------------
 .../default/xui/ja/panel_avatar_list_item.xml |   1 -
 .../xui/ja/panel_block_list_sidetray.xml      |  15 +-
 .../xui/ja/panel_conversation_list_item.xml   |   8 -
 .../ja/panel_conversation_log_list_item.xml   |   6 -
 .../default/xui/ja/panel_group_list_item.xml  |   1 -
 .../skins/default/xui/ja/panel_people.xml     |  90 ++-
 .../default/xui/ja/panel_preferences_chat.xml | 110 +--
 .../xui/ja/panel_preferences_general.xml      |   4 +-
 .../default/xui/ja/sidepanel_task_info.xml    |   1 -
 .../newview/skins/default/xui/ja/strings.xml  |  68 +-
 .../xui/pt/floater_conversation_log.xml       |   8 -
 .../xui/pt/floater_conversation_preview.xml   |   7 -
 .../default/xui/pt/floater_im_container.xml   |  29 +-
 .../default/xui/pt/floater_im_session.xml     |  61 +-
 .../default/xui/pt/floater_incoming_call.xml  |   8 +-
 .../xui/pt/floater_pathfinding_console.xml    |   2 +-
 .../default/xui/pt/floater_texture_ctrl.xml   |   2 +-
 .../xui/pt/floater_voice_chat_volume.xml      |   4 -
 .../default/xui/pt/floater_voice_effect.xml   |   2 +-
 .../default/xui/pt/floater_voice_volume.xml   |   8 -
 .../skins/default/xui/pt/menu_cof_gear.xml    |   6 +-
 .../default/xui/pt/menu_conversation.xml      |  31 -
 .../xui/pt/menu_conversation_log_gear.xml     |  15 -
 .../xui/pt/menu_conversation_log_view.xml     |   7 -
 .../default/xui/pt/menu_im_conversation.xml   |  15 -
 .../xui/pt/menu_im_session_showmodes.xml      |   7 -
 .../skins/default/xui/pt/menu_object_icon.xml |   2 -
 .../skins/default/xui/pt/menu_outfit_gear.xml |   2 -
 .../default/xui/pt/menu_participant_view.xml  |  13 -
 .../xui/pt/menu_people_blocked_gear.xml       |   5 -
 .../xui/pt/menu_people_blocked_plus.xml       |   5 -
 .../xui/pt/menu_people_blocked_view.xml       |   5 -
 .../xui/pt/menu_people_friends_view.xml       |   8 -
 .../default/xui/pt/menu_people_groups.xml     |   2 +-
 .../xui/pt/menu_people_groups_view.xml        |   4 -
 .../default/xui/pt/menu_people_nearby.xml     |  23 +-
 .../xui/pt/menu_people_nearby_multiselect.xml |  14 +-
 .../xui/pt/menu_people_nearby_view.xml        |   8 -
 .../xui/pt/menu_people_recent_view.xml        |   6 -
 .../skins/default/xui/pt/menu_url_agent.xml   |   4 +-
 .../default/xui/pt/menu_url_objectim.xml      |   2 +-
 .../skins/default/xui/pt/menu_viewer.xml      |  37 +-
 .../skins/default/xui/pt/notifications.xml    | 690 +----------------
 .../default/xui/pt/panel_avatar_list_item.xml |   1 -
 .../xui/pt/panel_block_list_sidetray.xml      |  15 +-
 .../xui/pt/panel_conversation_list_item.xml   |   8 -
 .../pt/panel_conversation_log_list_item.xml   |   6 -
 .../default/xui/pt/panel_group_list_item.xml  |   1 -
 .../skins/default/xui/pt/panel_people.xml     |  88 ++-
 .../default/xui/pt/panel_preferences_chat.xml | 110 +--
 .../xui/pt/panel_preferences_general.xml      |   5 +-
 .../default/xui/pt/sidepanel_task_info.xml    |   1 -
 .../newview/skins/default/xui/pt/strings.xml  |  63 +-
 .../xui/ru/floater_conversation_log.xml       |   8 -
 .../xui/ru/floater_conversation_preview.xml   |   7 -
 .../default/xui/ru/floater_im_container.xml   |  29 +-
 .../default/xui/ru/floater_im_session.xml     |  61 +-
 .../default/xui/ru/floater_incoming_call.xml  |  10 +-
 .../xui/ru/floater_pathfinding_console.xml    |   2 +-
 .../default/xui/ru/floater_texture_ctrl.xml   |   2 +-
 .../xui/ru/floater_voice_chat_volume.xml      |   4 -
 .../default/xui/ru/floater_voice_effect.xml   |   2 +-
 .../default/xui/ru/floater_voice_volume.xml   |   8 -
 .../skins/default/xui/ru/menu_cof_gear.xml    |   2 +-
 .../default/xui/ru/menu_conversation.xml      |  31 -
 .../xui/ru/menu_conversation_log_gear.xml     |  15 -
 .../xui/ru/menu_conversation_log_view.xml     |   7 -
 .../default/xui/ru/menu_im_conversation.xml   |  15 -
 .../xui/ru/menu_im_session_showmodes.xml      |   7 -
 .../skins/default/xui/ru/menu_object_icon.xml |   2 -
 .../skins/default/xui/ru/menu_outfit_gear.xml |   2 -
 .../default/xui/ru/menu_participant_view.xml  |  13 -
 .../xui/ru/menu_people_blocked_gear.xml       |   5 -
 .../xui/ru/menu_people_blocked_plus.xml       |   5 -
 .../xui/ru/menu_people_blocked_view.xml       |   5 -
 .../xui/ru/menu_people_friends_view.xml       |   8 -
 .../default/xui/ru/menu_people_groups.xml     |   2 +-
 .../xui/ru/menu_people_groups_view.xml        |   4 -
 .../default/xui/ru/menu_people_nearby.xml     |  23 +-
 .../xui/ru/menu_people_nearby_multiselect.xml |  14 +-
 .../xui/ru/menu_people_nearby_view.xml        |   8 -
 .../xui/ru/menu_people_recent_view.xml        |   6 -
 .../skins/default/xui/ru/menu_url_agent.xml   |   4 +-
 .../default/xui/ru/menu_url_objectim.xml      |   2 +-
 .../skins/default/xui/ru/menu_viewer.xml      |  37 +-
 .../skins/default/xui/ru/notifications.xml    | 689 +----------------
 .../default/xui/ru/panel_avatar_list_item.xml |   1 -
 .../xui/ru/panel_block_list_sidetray.xml      |  15 +-
 .../xui/ru/panel_conversation_list_item.xml   |   8 -
 .../ru/panel_conversation_log_list_item.xml   |   6 -
 .../default/xui/ru/panel_group_list_item.xml  |   1 -
 .../skins/default/xui/ru/panel_people.xml     |  88 ++-
 .../default/xui/ru/panel_preferences_chat.xml | 110 +--
 .../xui/ru/panel_preferences_general.xml      |   4 +-
 .../default/xui/ru/sidepanel_task_info.xml    |   1 -
 .../newview/skins/default/xui/ru/strings.xml  |  66 +-
 .../xui/tr/floater_conversation_log.xml       |   8 -
 .../xui/tr/floater_conversation_preview.xml   |   7 -
 .../default/xui/tr/floater_im_container.xml   |  29 +-
 .../default/xui/tr/floater_im_session.xml     |  61 +-
 .../default/xui/tr/floater_incoming_call.xml  |  10 +-
 .../xui/tr/floater_pathfinding_console.xml    |   2 +-
 .../default/xui/tr/floater_texture_ctrl.xml   |   2 +-
 .../xui/tr/floater_voice_chat_volume.xml      |   4 -
 .../default/xui/tr/floater_voice_effect.xml   |   2 +-
 .../default/xui/tr/floater_voice_volume.xml   |   8 -
 .../skins/default/xui/tr/menu_cof_gear.xml    |   2 +-
 .../default/xui/tr/menu_conversation.xml      |  31 -
 .../xui/tr/menu_conversation_log_gear.xml     |  15 -
 .../xui/tr/menu_conversation_log_view.xml     |   7 -
 .../default/xui/tr/menu_im_conversation.xml   |  15 -
 .../xui/tr/menu_im_session_showmodes.xml      |   7 -
 .../skins/default/xui/tr/menu_object_icon.xml |   2 -
 .../skins/default/xui/tr/menu_outfit_gear.xml |   2 -
 .../default/xui/tr/menu_participant_view.xml  |  13 -
 .../xui/tr/menu_people_blocked_gear.xml       |   5 -
 .../xui/tr/menu_people_blocked_plus.xml       |   5 -
 .../xui/tr/menu_people_blocked_view.xml       |   5 -
 .../xui/tr/menu_people_friends_view.xml       |   8 -
 .../default/xui/tr/menu_people_groups.xml     |   2 +-
 .../xui/tr/menu_people_groups_view.xml        |   4 -
 .../default/xui/tr/menu_people_nearby.xml     |  23 +-
 .../xui/tr/menu_people_nearby_multiselect.xml |  14 +-
 .../xui/tr/menu_people_nearby_view.xml        |   8 -
 .../xui/tr/menu_people_recent_view.xml        |   6 -
 .../skins/default/xui/tr/menu_url_agent.xml   |   4 +-
 .../default/xui/tr/menu_url_objectim.xml      |   2 +-
 .../skins/default/xui/tr/menu_viewer.xml      |  37 +-
 .../skins/default/xui/tr/notifications.xml    | 683 +----------------
 .../default/xui/tr/panel_avatar_list_item.xml |   1 -
 .../xui/tr/panel_block_list_sidetray.xml      |  15 +-
 .../xui/tr/panel_conversation_list_item.xml   |   8 -
 .../tr/panel_conversation_log_list_item.xml   |   6 -
 .../default/xui/tr/panel_group_list_item.xml  |   1 -
 .../skins/default/xui/tr/panel_people.xml     |  88 ++-
 .../default/xui/tr/panel_preferences_chat.xml | 110 +--
 .../xui/tr/panel_preferences_general.xml      |   4 +-
 .../default/xui/tr/sidepanel_task_info.xml    |   1 -
 .../newview/skins/default/xui/tr/strings.xml  |  68 +-
 .../xui/zh/floater_conversation_log.xml       |   8 -
 .../xui/zh/floater_conversation_preview.xml   |   7 -
 .../default/xui/zh/floater_im_container.xml   |  29 +-
 .../default/xui/zh/floater_im_session.xml     |  61 +-
 .../default/xui/zh/floater_incoming_call.xml  |   8 +-
 .../xui/zh/floater_pathfinding_console.xml    |   2 +-
 .../default/xui/zh/floater_texture_ctrl.xml   |   2 +-
 .../xui/zh/floater_voice_chat_volume.xml      |   4 -
 .../default/xui/zh/floater_voice_effect.xml   |   2 +-
 .../default/xui/zh/floater_voice_volume.xml   |   8 -
 .../skins/default/xui/zh/menu_cof_gear.xml    |   2 +-
 .../default/xui/zh/menu_conversation.xml      |  31 -
 .../xui/zh/menu_conversation_log_gear.xml     |  15 -
 .../xui/zh/menu_conversation_log_view.xml     |   7 -
 .../default/xui/zh/menu_im_conversation.xml   |  15 -
 .../xui/zh/menu_im_session_showmodes.xml      |   7 -
 .../skins/default/xui/zh/menu_object_icon.xml |   2 -
 .../skins/default/xui/zh/menu_outfit_gear.xml |   2 -
 .../default/xui/zh/menu_participant_view.xml  |  13 -
 .../xui/zh/menu_people_blocked_gear.xml       |   5 -
 .../xui/zh/menu_people_blocked_plus.xml       |   5 -
 .../xui/zh/menu_people_blocked_view.xml       |   5 -
 .../xui/zh/menu_people_friends_view.xml       |   8 -
 .../default/xui/zh/menu_people_groups.xml     |   2 +-
 .../xui/zh/menu_people_groups_view.xml        |   4 -
 .../default/xui/zh/menu_people_nearby.xml     |  23 +-
 .../xui/zh/menu_people_nearby_multiselect.xml |  14 +-
 .../xui/zh/menu_people_nearby_view.xml        |   8 -
 .../xui/zh/menu_people_recent_view.xml        |   6 -
 .../skins/default/xui/zh/menu_url_agent.xml   |   4 +-
 .../default/xui/zh/menu_url_objectim.xml      |   2 +-
 .../skins/default/xui/zh/menu_viewer.xml      |  37 +-
 .../skins/default/xui/zh/notifications.xml    | 690 +----------------
 .../default/xui/zh/panel_avatar_list_item.xml |   1 -
 .../xui/zh/panel_block_list_sidetray.xml      |  15 +-
 .../xui/zh/panel_conversation_list_item.xml   |   8 -
 .../zh/panel_conversation_log_list_item.xml   |   6 -
 .../default/xui/zh/panel_group_list_item.xml  |   1 -
 .../skins/default/xui/zh/panel_people.xml     |  88 ++-
 .../default/xui/zh/panel_preferences_chat.xml | 110 +--
 .../xui/zh/panel_preferences_general.xml      |   4 +-
 .../default/xui/zh/sidepanel_task_info.xml    |   1 -
 .../newview/skins/default/xui/zh/strings.xml  |  66 +-
 395 files changed, 1802 insertions(+), 10393 deletions(-)
 delete mode 100644 indra/newview/skins/default/xui/de/floater_conversation_log.xml
 delete mode 100644 indra/newview/skins/default/xui/de/floater_conversation_preview.xml
 delete mode 100644 indra/newview/skins/default/xui/de/floater_voice_chat_volume.xml
 delete mode 100644 indra/newview/skins/default/xui/de/floater_voice_volume.xml
 delete mode 100644 indra/newview/skins/default/xui/de/menu_conversation.xml
 delete mode 100644 indra/newview/skins/default/xui/de/menu_conversation_log_gear.xml
 delete mode 100644 indra/newview/skins/default/xui/de/menu_conversation_log_view.xml
 delete mode 100644 indra/newview/skins/default/xui/de/menu_im_conversation.xml
 delete mode 100644 indra/newview/skins/default/xui/de/menu_im_session_showmodes.xml
 delete mode 100644 indra/newview/skins/default/xui/de/menu_participant_view.xml
 delete mode 100644 indra/newview/skins/default/xui/de/menu_people_blocked_gear.xml
 delete mode 100644 indra/newview/skins/default/xui/de/menu_people_blocked_plus.xml
 delete mode 100644 indra/newview/skins/default/xui/de/menu_people_blocked_view.xml
 delete mode 100644 indra/newview/skins/default/xui/de/menu_people_friends_view.xml
 delete mode 100644 indra/newview/skins/default/xui/de/menu_people_groups_view.xml
 delete mode 100644 indra/newview/skins/default/xui/de/menu_people_nearby_view.xml
 delete mode 100644 indra/newview/skins/default/xui/de/menu_people_recent_view.xml
 delete mode 100644 indra/newview/skins/default/xui/de/panel_conversation_list_item.xml
 delete mode 100644 indra/newview/skins/default/xui/de/panel_conversation_log_list_item.xml
 delete mode 100644 indra/newview/skins/default/xui/es/floater_conversation_log.xml
 delete mode 100644 indra/newview/skins/default/xui/es/floater_conversation_preview.xml
 delete mode 100644 indra/newview/skins/default/xui/es/floater_voice_chat_volume.xml
 delete mode 100644 indra/newview/skins/default/xui/es/floater_voice_volume.xml
 delete mode 100644 indra/newview/skins/default/xui/es/menu_conversation.xml
 delete mode 100644 indra/newview/skins/default/xui/es/menu_conversation_log_gear.xml
 delete mode 100644 indra/newview/skins/default/xui/es/menu_conversation_log_view.xml
 delete mode 100644 indra/newview/skins/default/xui/es/menu_im_conversation.xml
 delete mode 100644 indra/newview/skins/default/xui/es/menu_im_session_showmodes.xml
 delete mode 100644 indra/newview/skins/default/xui/es/menu_participant_view.xml
 delete mode 100644 indra/newview/skins/default/xui/es/menu_people_blocked_gear.xml
 delete mode 100644 indra/newview/skins/default/xui/es/menu_people_blocked_plus.xml
 delete mode 100644 indra/newview/skins/default/xui/es/menu_people_blocked_view.xml
 delete mode 100644 indra/newview/skins/default/xui/es/menu_people_friends_view.xml
 delete mode 100644 indra/newview/skins/default/xui/es/menu_people_groups_view.xml
 delete mode 100644 indra/newview/skins/default/xui/es/menu_people_nearby_view.xml
 delete mode 100644 indra/newview/skins/default/xui/es/menu_people_recent_view.xml
 delete mode 100644 indra/newview/skins/default/xui/es/panel_conversation_list_item.xml
 delete mode 100644 indra/newview/skins/default/xui/es/panel_conversation_log_list_item.xml
 delete mode 100644 indra/newview/skins/default/xui/fr/floater_conversation_log.xml
 delete mode 100644 indra/newview/skins/default/xui/fr/floater_conversation_preview.xml
 delete mode 100644 indra/newview/skins/default/xui/fr/floater_voice_chat_volume.xml
 delete mode 100644 indra/newview/skins/default/xui/fr/floater_voice_volume.xml
 delete mode 100644 indra/newview/skins/default/xui/fr/menu_conversation.xml
 delete mode 100644 indra/newview/skins/default/xui/fr/menu_conversation_log_gear.xml
 delete mode 100644 indra/newview/skins/default/xui/fr/menu_conversation_log_view.xml
 delete mode 100644 indra/newview/skins/default/xui/fr/menu_im_conversation.xml
 delete mode 100644 indra/newview/skins/default/xui/fr/menu_im_session_showmodes.xml
 delete mode 100644 indra/newview/skins/default/xui/fr/menu_participant_view.xml
 delete mode 100644 indra/newview/skins/default/xui/fr/menu_people_blocked_gear.xml
 delete mode 100644 indra/newview/skins/default/xui/fr/menu_people_blocked_plus.xml
 delete mode 100644 indra/newview/skins/default/xui/fr/menu_people_blocked_view.xml
 delete mode 100644 indra/newview/skins/default/xui/fr/menu_people_friends_view.xml
 delete mode 100644 indra/newview/skins/default/xui/fr/menu_people_groups_view.xml
 delete mode 100644 indra/newview/skins/default/xui/fr/menu_people_nearby_view.xml
 delete mode 100644 indra/newview/skins/default/xui/fr/menu_people_recent_view.xml
 delete mode 100644 indra/newview/skins/default/xui/fr/panel_conversation_list_item.xml
 delete mode 100644 indra/newview/skins/default/xui/fr/panel_conversation_log_list_item.xml
 delete mode 100644 indra/newview/skins/default/xui/it/floater_conversation_log.xml
 delete mode 100644 indra/newview/skins/default/xui/it/floater_conversation_preview.xml
 delete mode 100644 indra/newview/skins/default/xui/it/floater_voice_chat_volume.xml
 delete mode 100644 indra/newview/skins/default/xui/it/floater_voice_volume.xml
 delete mode 100644 indra/newview/skins/default/xui/it/menu_conversation.xml
 delete mode 100644 indra/newview/skins/default/xui/it/menu_conversation_log_gear.xml
 delete mode 100644 indra/newview/skins/default/xui/it/menu_conversation_log_view.xml
 delete mode 100644 indra/newview/skins/default/xui/it/menu_im_conversation.xml
 delete mode 100644 indra/newview/skins/default/xui/it/menu_im_session_showmodes.xml
 delete mode 100644 indra/newview/skins/default/xui/it/menu_participant_view.xml
 delete mode 100644 indra/newview/skins/default/xui/it/menu_people_blocked_gear.xml
 delete mode 100644 indra/newview/skins/default/xui/it/menu_people_blocked_plus.xml
 delete mode 100644 indra/newview/skins/default/xui/it/menu_people_blocked_view.xml
 delete mode 100644 indra/newview/skins/default/xui/it/menu_people_friends_view.xml
 delete mode 100644 indra/newview/skins/default/xui/it/menu_people_groups_view.xml
 delete mode 100644 indra/newview/skins/default/xui/it/menu_people_nearby_view.xml
 delete mode 100644 indra/newview/skins/default/xui/it/menu_people_recent_view.xml
 delete mode 100644 indra/newview/skins/default/xui/it/panel_conversation_list_item.xml
 delete mode 100644 indra/newview/skins/default/xui/it/panel_conversation_log_list_item.xml
 delete mode 100644 indra/newview/skins/default/xui/ja/floater_conversation_log.xml
 delete mode 100644 indra/newview/skins/default/xui/ja/floater_conversation_preview.xml
 delete mode 100644 indra/newview/skins/default/xui/ja/floater_voice_chat_volume.xml
 delete mode 100644 indra/newview/skins/default/xui/ja/floater_voice_volume.xml
 delete mode 100644 indra/newview/skins/default/xui/ja/menu_conversation.xml
 delete mode 100644 indra/newview/skins/default/xui/ja/menu_conversation_log_gear.xml
 delete mode 100644 indra/newview/skins/default/xui/ja/menu_conversation_log_view.xml
 delete mode 100644 indra/newview/skins/default/xui/ja/menu_im_conversation.xml
 delete mode 100644 indra/newview/skins/default/xui/ja/menu_im_session_showmodes.xml
 delete mode 100644 indra/newview/skins/default/xui/ja/menu_participant_view.xml
 delete mode 100644 indra/newview/skins/default/xui/ja/menu_people_blocked_gear.xml
 delete mode 100644 indra/newview/skins/default/xui/ja/menu_people_blocked_plus.xml
 delete mode 100644 indra/newview/skins/default/xui/ja/menu_people_blocked_view.xml
 delete mode 100644 indra/newview/skins/default/xui/ja/menu_people_friends_view.xml
 delete mode 100644 indra/newview/skins/default/xui/ja/menu_people_groups_view.xml
 delete mode 100644 indra/newview/skins/default/xui/ja/menu_people_nearby_view.xml
 delete mode 100644 indra/newview/skins/default/xui/ja/menu_people_recent_view.xml
 delete mode 100644 indra/newview/skins/default/xui/ja/panel_conversation_list_item.xml
 delete mode 100644 indra/newview/skins/default/xui/ja/panel_conversation_log_list_item.xml
 delete mode 100644 indra/newview/skins/default/xui/pt/floater_conversation_log.xml
 delete mode 100644 indra/newview/skins/default/xui/pt/floater_conversation_preview.xml
 delete mode 100644 indra/newview/skins/default/xui/pt/floater_voice_chat_volume.xml
 delete mode 100644 indra/newview/skins/default/xui/pt/floater_voice_volume.xml
 delete mode 100644 indra/newview/skins/default/xui/pt/menu_conversation.xml
 delete mode 100644 indra/newview/skins/default/xui/pt/menu_conversation_log_gear.xml
 delete mode 100644 indra/newview/skins/default/xui/pt/menu_conversation_log_view.xml
 delete mode 100644 indra/newview/skins/default/xui/pt/menu_im_conversation.xml
 delete mode 100644 indra/newview/skins/default/xui/pt/menu_im_session_showmodes.xml
 delete mode 100644 indra/newview/skins/default/xui/pt/menu_participant_view.xml
 delete mode 100644 indra/newview/skins/default/xui/pt/menu_people_blocked_gear.xml
 delete mode 100644 indra/newview/skins/default/xui/pt/menu_people_blocked_plus.xml
 delete mode 100644 indra/newview/skins/default/xui/pt/menu_people_blocked_view.xml
 delete mode 100644 indra/newview/skins/default/xui/pt/menu_people_friends_view.xml
 delete mode 100644 indra/newview/skins/default/xui/pt/menu_people_groups_view.xml
 delete mode 100644 indra/newview/skins/default/xui/pt/menu_people_nearby_view.xml
 delete mode 100644 indra/newview/skins/default/xui/pt/menu_people_recent_view.xml
 delete mode 100644 indra/newview/skins/default/xui/pt/panel_conversation_list_item.xml
 delete mode 100644 indra/newview/skins/default/xui/pt/panel_conversation_log_list_item.xml
 delete mode 100644 indra/newview/skins/default/xui/ru/floater_conversation_log.xml
 delete mode 100644 indra/newview/skins/default/xui/ru/floater_conversation_preview.xml
 delete mode 100644 indra/newview/skins/default/xui/ru/floater_voice_chat_volume.xml
 delete mode 100644 indra/newview/skins/default/xui/ru/floater_voice_volume.xml
 delete mode 100644 indra/newview/skins/default/xui/ru/menu_conversation.xml
 delete mode 100644 indra/newview/skins/default/xui/ru/menu_conversation_log_gear.xml
 delete mode 100644 indra/newview/skins/default/xui/ru/menu_conversation_log_view.xml
 delete mode 100644 indra/newview/skins/default/xui/ru/menu_im_conversation.xml
 delete mode 100644 indra/newview/skins/default/xui/ru/menu_im_session_showmodes.xml
 delete mode 100644 indra/newview/skins/default/xui/ru/menu_participant_view.xml
 delete mode 100644 indra/newview/skins/default/xui/ru/menu_people_blocked_gear.xml
 delete mode 100644 indra/newview/skins/default/xui/ru/menu_people_blocked_plus.xml
 delete mode 100644 indra/newview/skins/default/xui/ru/menu_people_blocked_view.xml
 delete mode 100644 indra/newview/skins/default/xui/ru/menu_people_friends_view.xml
 delete mode 100644 indra/newview/skins/default/xui/ru/menu_people_groups_view.xml
 delete mode 100644 indra/newview/skins/default/xui/ru/menu_people_nearby_view.xml
 delete mode 100644 indra/newview/skins/default/xui/ru/menu_people_recent_view.xml
 delete mode 100644 indra/newview/skins/default/xui/ru/panel_conversation_list_item.xml
 delete mode 100644 indra/newview/skins/default/xui/ru/panel_conversation_log_list_item.xml
 delete mode 100644 indra/newview/skins/default/xui/tr/floater_conversation_log.xml
 delete mode 100644 indra/newview/skins/default/xui/tr/floater_conversation_preview.xml
 delete mode 100644 indra/newview/skins/default/xui/tr/floater_voice_chat_volume.xml
 delete mode 100644 indra/newview/skins/default/xui/tr/floater_voice_volume.xml
 delete mode 100644 indra/newview/skins/default/xui/tr/menu_conversation.xml
 delete mode 100644 indra/newview/skins/default/xui/tr/menu_conversation_log_gear.xml
 delete mode 100644 indra/newview/skins/default/xui/tr/menu_conversation_log_view.xml
 delete mode 100644 indra/newview/skins/default/xui/tr/menu_im_conversation.xml
 delete mode 100644 indra/newview/skins/default/xui/tr/menu_im_session_showmodes.xml
 delete mode 100644 indra/newview/skins/default/xui/tr/menu_participant_view.xml
 delete mode 100644 indra/newview/skins/default/xui/tr/menu_people_blocked_gear.xml
 delete mode 100644 indra/newview/skins/default/xui/tr/menu_people_blocked_plus.xml
 delete mode 100644 indra/newview/skins/default/xui/tr/menu_people_blocked_view.xml
 delete mode 100644 indra/newview/skins/default/xui/tr/menu_people_friends_view.xml
 delete mode 100644 indra/newview/skins/default/xui/tr/menu_people_groups_view.xml
 delete mode 100644 indra/newview/skins/default/xui/tr/menu_people_nearby_view.xml
 delete mode 100644 indra/newview/skins/default/xui/tr/menu_people_recent_view.xml
 delete mode 100644 indra/newview/skins/default/xui/tr/panel_conversation_list_item.xml
 delete mode 100644 indra/newview/skins/default/xui/tr/panel_conversation_log_list_item.xml
 delete mode 100644 indra/newview/skins/default/xui/zh/floater_conversation_log.xml
 delete mode 100644 indra/newview/skins/default/xui/zh/floater_conversation_preview.xml
 delete mode 100644 indra/newview/skins/default/xui/zh/floater_voice_chat_volume.xml
 delete mode 100644 indra/newview/skins/default/xui/zh/floater_voice_volume.xml
 delete mode 100644 indra/newview/skins/default/xui/zh/menu_conversation.xml
 delete mode 100644 indra/newview/skins/default/xui/zh/menu_conversation_log_gear.xml
 delete mode 100644 indra/newview/skins/default/xui/zh/menu_conversation_log_view.xml
 delete mode 100644 indra/newview/skins/default/xui/zh/menu_im_conversation.xml
 delete mode 100644 indra/newview/skins/default/xui/zh/menu_im_session_showmodes.xml
 delete mode 100644 indra/newview/skins/default/xui/zh/menu_participant_view.xml
 delete mode 100644 indra/newview/skins/default/xui/zh/menu_people_blocked_gear.xml
 delete mode 100644 indra/newview/skins/default/xui/zh/menu_people_blocked_plus.xml
 delete mode 100644 indra/newview/skins/default/xui/zh/menu_people_blocked_view.xml
 delete mode 100644 indra/newview/skins/default/xui/zh/menu_people_friends_view.xml
 delete mode 100644 indra/newview/skins/default/xui/zh/menu_people_groups_view.xml
 delete mode 100644 indra/newview/skins/default/xui/zh/menu_people_nearby_view.xml
 delete mode 100644 indra/newview/skins/default/xui/zh/menu_people_recent_view.xml
 delete mode 100644 indra/newview/skins/default/xui/zh/panel_conversation_list_item.xml
 delete mode 100644 indra/newview/skins/default/xui/zh/panel_conversation_log_list_item.xml

diff --git a/indra/newview/skins/default/xui/de/floater_conversation_log.xml b/indra/newview/skins/default/xui/de/floater_conversation_log.xml
deleted file mode 100644
index 19620a0fc9a..00000000000
--- a/indra/newview/skins/default/xui/de/floater_conversation_log.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_conversation_log" title="UNTERHALTUNGSPROTOKOLL">
-	<panel name="buttons_panel">
-		<filter_editor label="Nach Personen filtern" name="people_filter_input"/>
-		<menu_button name="conversation_view_btn" tool_tip="Anzeige-/Sortieroptionen"/>
-		<menu_button name="conversations_gear_btn" tool_tip="Aktionen für ausgewählte Person/Gruppe"/>
-	</panel>
-</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_conversation_preview.xml b/indra/newview/skins/default/xui/de/floater_conversation_preview.xml
deleted file mode 100644
index 010ad19076d..00000000000
--- a/indra/newview/skins/default/xui/de/floater_conversation_preview.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="preview_conversation" title="UNTERHALTUNG:">
-	<floater.string name="Title">
-		UNTERHALTUNG: [NAME]
-	</floater.string>
-	<text name="page_label" value="Seite"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_im_container.xml b/indra/newview/skins/default/xui/de/floater_im_container.xml
index 5bf916c8e98..95eda97938c 100644
--- a/indra/newview/skins/default/xui/de/floater_im_container.xml
+++ b/indra/newview/skins/default/xui/de/floater_im_container.xml
@@ -1,29 +1,2 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<multi_floater name="floater_im_box" title="GESPRÄCHE">
-	<string name="collapse_icon" value="Conv_toolbar_collapse"/>
-	<string name="expand_icon" value="Conv_toolbar_expand"/>
-	<layout_stack name="conversations_stack">
-		<layout_panel name="conversations_layout_panel">
-			<layout_stack name="conversations_pane_buttons_stack">
-				<layout_panel name="conversations_pane_buttons_expanded">
-					<menu_button name="sort_btn" tool_tip="Anzeige-/Sortieroptionen"/>
-					<button name="add_btn" tool_tip="Neue Unterhaltung starten"/>
-					<button name="speak_btn" tool_tip="Ãœber Ihr Mikrofon mit anderen sprechen"/>
-				</layout_panel>
-				<layout_panel name="conversations_pane_buttons_collapsed">
-					<button name="expand_collapse_btn" tool_tip="Diese Liste schließen/erweitern"/>
-				</layout_panel>
-			</layout_stack>
-		</layout_panel>
-		<layout_panel name="messages_layout_panel">
-			<panel_container name="im_box_tab_container">
-				<panel name="stub_panel">
-					<button name="stub_collapse_btn" tool_tip="Dieses Fenster schließen"/>
-					<text name="stub_textbox">
-						Diese Unterhaltung erscheint in einem separaten Fenster.   [secondlife:/// Zurückholen.]
-					</text>
-				</panel>
-			</panel_container>
-		</layout_panel>
-	</layout_stack>
-</multi_floater>
+<multi_floater name="floater_im_box" title="GESPRÄCHE"/>
diff --git a/indra/newview/skins/default/xui/de/floater_im_session.xml b/indra/newview/skins/default/xui/de/floater_im_session.xml
index f96eb72cb1d..abaf2756519 100644
--- a/indra/newview/skins/default/xui/de/floater_im_session.xml
+++ b/indra/newview/skins/default/xui/de/floater_im_session.xml
@@ -1,59 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="panel_im">
-	<floater.string name="call_btn_start">
-		Conv_toolbar_open_call
-	</floater.string>
-	<floater.string name="call_btn_stop">
-		Conv_toolbar_hang_up
-	</floater.string>
-	<floater.string name="collapseline_icon" value="Conv_collapse_to_one_line"/>
-	<floater.string name="expandline_icon" value="Conv_expand_one_line"/>
-	<floater.string name="collapse_icon" value="Conv_toolbar_collapse"/>
-	<floater.string name="expand_icon" value="Conv_toolbar_expand"/>
-	<floater.string name="tear_off_icon" value="Conv_toolbar_arrow_ne"/>
-	<floater.string name="return_icon" value="Conv_toolbar_arrow_sw"/>
-	<floater.string name="participant_added" value="[NAME] wurde zur Unterhaltung eingeladen."/>
-	<floater.string name="multiple_participants_added" value="[NAME] wurden zur Unterhaltung eingeladen."/>
-	<floater.string name="tooltip_to_separate_window" value="Diese Unterhaltung in separates Fenster verschieben"/>
-	<floater.string name="tooltip_to_main_window" value="Diese Unterhaltung zurück ins Hauptfenster verschieben"/>
-	<floater.string name="start_call_button_tooltip" value="Voice-Verbindung öffnen"/>
-	<floater.string name="end_call_button_tooltip" value="Voice-Verbindung schließen"/>
-	<floater.string name="expcol_button_not_tearoff_tooltip" value="Dieses Fenster schließen"/>
-	<floater.string name="expcol_button_tearoff_and_expanded_tooltip" value="Teilnehmerliste schließen"/>
-	<floater.string name="expcol_button_tearoff_and_collapsed_tooltip" value="Teilnehmerliste erweitern"/>
-	<view name="contents_view">
-		<layout_stack name="main_stack">
-			<layout_panel name="toolbar_panel">
-				<menu_button name="view_options_btn" tool_tip="Anzeige-/Sortieroptionen"/>
-				<menu_button name="gear_btn" tool_tip="Aktionen für ausgewählte Person"/>
-				<button name="add_btn" tool_tip="Jemanden zu dieser Unterhaltung hinzufügen"/>
-				<button name="voice_call_btn" tool_tip="Voice-Verbindung öffnen"/>
-				<button name="close_btn" tool_tip="Diese Unterhaltung beenden"/>
-				<button name="expand_collapse_btn" tool_tip="Dieses Fenster schließen/erweitern"/>
-			</layout_panel>
-			<layout_panel name="body_panel">
-				<layout_stack name="im_panels">
-					<layout_panel name="right_part_holder">
-						<panel name="trnsAndChat_panel">
-							<layout_stack name="translate_and_chat_stack">
-								<layout_panel name="translate_chat_checkbox_lp">
-									<check_box label="Chat übersetzen" name="translate_chat_checkbox"/>
-								</layout_panel>
-							</layout_stack>
-						</panel>
-					</layout_panel>
-				</layout_stack>
-			</layout_panel>
-			<layout_panel name="chat_layout_panel">
-				<layout_stack name="input_panels">
-					<layout_panel name="input_editor_layout_panel">
-						<chat_editor label="An" name="chat_editor"/>
-					</layout_panel>
-					<layout_panel name="input_button_layout_panel">
-						<button name="minz_btn" tool_tip="Nachrichtenfenster anzeigen/ausblenden"/>
-					</layout_panel>
-				</layout_stack>
-			</layout_panel>
-		</layout_stack>
-	</view>
+	<layout_stack name="im_panels">
+		<layout_panel>
+			<line_editor label="An" name="chat_editor"/>
+		</layout_panel>
+	</layout_stack>
 </floater>
diff --git a/indra/newview/skins/default/xui/de/floater_incoming_call.xml b/indra/newview/skins/default/xui/de/floater_incoming_call.xml
index f13842f4792..213d9f54f5c 100644
--- a/indra/newview/skins/default/xui/de/floater_incoming_call.xml
+++ b/indra/newview/skins/default/xui/de/floater_incoming_call.xml
@@ -10,7 +10,7 @@
 		Anonym
 	</floater.string>
 	<floater.string name="VoiceInviteP2P">
-		ruft Sie an.
+		ruft an.
 	</floater.string>
 	<floater.string name="VoiceInviteAdHoc">
 		ist einem Voice-Konferenz-Chat beigetreten.
@@ -25,9 +25,9 @@
 		Möchten Sie [CURRENT_CHAT] verlassen und diesem Voice-Chat beitreten?
 	</floater.string>
 	<text name="question">
-		Wenn Sie antworten, wird Ihre aktuelle Voice-Unterhaltung beendet.
+		Möchten Sie [CURRENT_CHAT] verlassen und diesem Voice-Chat beitreten?
 	</text>
-	<button label="Annehmen" label_selected="Annehmen" name="Accept"/>
-	<button label="Ignorieren" label_selected="Ignorieren" name="Reject"/>
-	<button label="Stattdessen IM öffnen" name="Start IM"/>
+	<button label="Akzeptieren" label_selected="Akzeptieren" name="Accept"/>
+	<button label="Ablehnen" label_selected="Ablehnen" name="Reject"/>
+	<button label="IM starten" name="Start IM"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/de/floater_pathfinding_console.xml b/indra/newview/skins/default/xui/de/floater_pathfinding_console.xml
index 88e9f53a4c3..ebf8f01632f 100644
--- a/indra/newview/skins/default/xui/de/floater_pathfinding_console.xml
+++ b/indra/newview/skins/default/xui/de/floater_pathfinding_console.xml
@@ -71,7 +71,7 @@
 			<text name="show_label">
 				Anzeigen:
 			</text>
-			<check_box label="Test" name="show_world"/>
+			<check_box label="Welt" name="show_world"/>
 			<check_box label="Nur bewegliche Objekte" name="show_world_movables_only"/>
 			<check_box label="Navmesh" name="show_navmesh"/>
 			<text name="show_walkability_label">
diff --git a/indra/newview/skins/default/xui/de/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/de/floater_texture_ctrl.xml
index b794d879f0f..9585622516b 100644
--- a/indra/newview/skins/default/xui/de/floater_texture_ctrl.xml
+++ b/indra/newview/skins/default/xui/de/floater_texture_ctrl.xml
@@ -20,7 +20,7 @@
 	<button label="Leer" label_selected="Leer" name="Blank"/>
 	<button label="Keine" label_selected="Keine" name="None"/>
 	<button label="" label_selected="" name="Pipette"/>
-	<check_box initial_value="true" label="Jetzt übernehmen" name="apply_immediate_check"/>
+	<check_box initial_value="true" label="Live-Vorschau" name="apply_immediate_check"/>
 	<text name="preview_disabled" value="Vorschau deaktiviert"/>
 	<filter_editor label="Texturen filtern" name="inventory search editor"/>
 	<check_box initial_value="false" label="Ordner anzeigen" name="show_folders_check"/>
diff --git a/indra/newview/skins/default/xui/de/floater_voice_chat_volume.xml b/indra/newview/skins/default/xui/de/floater_voice_chat_volume.xml
deleted file mode 100644
index 15259639e83..00000000000
--- a/indra/newview/skins/default/xui/de/floater_voice_chat_volume.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_voice_volume" title="VOICE-CHAT-LAUTSTÄRKE">
-	<slider label="Voice-Chat" name="chat_voice_volume"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_voice_effect.xml b/indra/newview/skins/default/xui/de/floater_voice_effect.xml
index 8d37950480a..413a46525c5 100644
--- a/indra/newview/skins/default/xui/de/floater_voice_effect.xml
+++ b/indra/newview/skins/default/xui/de/floater_voice_effect.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater label="Orte" name="voice_effects" title="VOICE-MORPHING-VORSCHAU">
+<floater label="Orte" name="voice_effects" title="VOICE MORPHING">
 	<string name="no_voice_effect">
 		(Kein Voice-Morphing)
 	</string>
diff --git a/indra/newview/skins/default/xui/de/floater_voice_volume.xml b/indra/newview/skins/default/xui/de/floater_voice_volume.xml
deleted file mode 100644
index 258627c94f4..00000000000
--- a/indra/newview/skins/default/xui/de/floater_voice_volume.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!--
-  Not can_close / no title to avoid window chrome
-  Single instance - only have one at a time, recycle it each spawn
--->
-<floater name="floater_voice_volume" title="LAUTSTÄRKE">
-	<slider name="volume_slider" tool_tip="Lautstärke" value="0.5"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/de/menu_cof_gear.xml b/indra/newview/skins/default/xui/de/menu_cof_gear.xml
index 2dd871b2eaa..54b218d22f7 100644
--- a/indra/newview/skins/default/xui/de/menu_cof_gear.xml
+++ b/indra/newview/skins/default/xui/de/menu_cof_gear.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="Gear COF">
+<menu name="Gear COF">
 	<menu label="Neue Kleider" name="COF.Gear.New_Clothes"/>
-	<menu label="Neue Körperteile" name="COF.Gear.New_Body_Parts"/>
-</toggleable_menu>
+	<menu label="Neue Körperteile" name="COF.Geear.New_Body_Parts"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/de/menu_conversation.xml b/indra/newview/skins/default/xui/de/menu_conversation.xml
deleted file mode 100644
index 30d3ab79e1a..00000000000
--- a/indra/newview/skins/default/xui/de/menu_conversation.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_conversation_participant">
-	<menu_item_call label="Unterhaltung schließen" name="close_conversation"/>
-	<menu_item_call label="Unterhaltung öffnen" name="open_voice_conversation"/>
-	<menu_item_call label="Voice-Verbindung trennen" name="disconnect_from_voice"/>
-	<menu_item_call label="Profil anzeigen" name="view_profile"/>
-	<menu_item_call label="IM" name="im"/>
-	<menu_item_call label="Teleport anbieten" name="offer_teleport"/>
-	<menu_item_call label="Voice-Anruf" name="voice_call"/>
-	<menu_item_call label="Chatverlauf..." name="chat_history"/>
-	<menu_item_call label="Freund hinzufügen" name="add_friend"/>
-	<menu_item_call label="Freund entfernen" name="remove_friend"/>
-	<menu_item_call label="Freunde entfernen" name="remove_friends"/>
-	<menu_item_call label="In Gruppe einladen..." name="invite_to_group"/>
-	<menu_item_call label="Hineinzoomen" name="zoom_in"/>
-	<menu_item_call label="Karte" name="map"/>
-	<menu_item_call label="Freigeben" name="share"/>
-	<menu_item_call label="Bezahlen" name="pay"/>
-	<menu_item_check label="Voice ignorieren" name="block_unblock"/>
-	<menu_item_check label="Text ignorieren" name="MuteText"/>
-	<menu_item_call label="Gruppenprofil" name="group_profile"/>
-	<menu_item_call label="Gruppe aktivieren" name="activate_group"/>
-	<menu_item_call label="Gruppe verlassen" name="leave_group"/>
-	<context_menu label="Moderatoroptionen" name="Moderator Options">
-		<menu_item_check label="Text-Chat zulassen" name="AllowTextChat"/>
-		<menu_item_call label="Diesen Teilnehmer stummschalten" name="ModerateVoiceMuteSelected"/>
-		<menu_item_call label="Stummschaltung für diesen Teilnehmer aufheben" name="ModerateVoiceUnMuteSelected"/>
-		<menu_item_call label="Alle stummschalten" name="ModerateVoiceMute"/>
-		<menu_item_call label="Stummschaltung für alle aufheben" name="ModerateVoiceUnmute"/>
-	</context_menu>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_conversation_log_gear.xml b/indra/newview/skins/default/xui/de/menu_conversation_log_gear.xml
deleted file mode 100644
index 2ef87621281..00000000000
--- a/indra/newview/skins/default/xui/de/menu_conversation_log_gear.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="Conversation Context Menu">
-	<menu_item_call label="IM..." name="IM"/>
-	<menu_item_call label="Voice-Anruf..." name="Call"/>
-	<menu_item_call label="Chatverlauf öffnen..." name="Chat history"/>
-	<menu_item_call label="Profil anzeigen" name="View Profile"/>
-	<menu_item_call label="Teleport anbieten" name="teleport"/>
-	<menu_item_call label="Freund hinzufügen" name="add_friend"/>
-	<menu_item_call label="Freund entfernen" name="remove_friend"/>
-	<menu_item_call label="In Gruppe einladen..." name="Invite"/>
-	<menu_item_call label="Karte" name="Map"/>
-	<menu_item_call label="Freigeben" name="Share"/>
-	<menu_item_call label="Bezahlen" name="Pay"/>
-	<menu_item_check label="Ignorieren/Nicht mehr ignorieren" name="Block/Unblock"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_conversation_log_view.xml b/indra/newview/skins/default/xui/de/menu_conversation_log_view.xml
deleted file mode 100644
index ae3cc5bc970..00000000000
--- a/indra/newview/skins/default/xui/de/menu_conversation_log_view.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_conversation_view">
-	<menu_item_check label="Nach Namen sortieren" name="sort_by_name"/>
-	<menu_item_check label="Nach Datum sortieren" name="sort_by_date"/>
-	<menu_item_check label="Freunde oben anzeigen" name="sort_by_friends"/>
-	<menu_item_call label="Verlaufsliste für „Chat in der Nähe“ anzeigen..." name="view_nearby_chat_history"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_im_conversation.xml b/indra/newview/skins/default/xui/de/menu_im_conversation.xml
deleted file mode 100644
index 875524b19de..00000000000
--- a/indra/newview/skins/default/xui/de/menu_im_conversation.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="Conversation Gear Menu">
-	<menu_item_call label="Profil anzeigen" name="View Profile"/>
-	<menu_item_call label="Freund hinzufügen" name="Add Friend"/>
-	<menu_item_call label="Freund entfernen" name="remove_friend"/>
-	<menu_item_call label="Teleport anbieten" name="offer_teleport"/>
-	<menu_item_call label="In Gruppe einladen..." name="invite_to_group"/>
-	<menu_item_call label="Chatverlauf..." name="chat_history"/>
-	<menu_item_call label="Hineinzoomen" name="zoom_in"/>
-	<menu_item_call label="Karte" name="map"/>
-	<menu_item_call label="Freigeben" name="Share"/>
-	<menu_item_call label="Bezahlen" name="Pay"/>
-	<menu_item_check label="Voice ignorieren" name="Block/Unblock"/>
-	<menu_item_check label="Text ignorieren" name="MuteText"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_im_session_showmodes.xml b/indra/newview/skins/default/xui/de/menu_im_session_showmodes.xml
deleted file mode 100644
index 48f62d29a10..00000000000
--- a/indra/newview/skins/default/xui/de/menu_im_session_showmodes.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_modes">
-	<menu_item_check label="Kompaktansicht" name="compact_view"/>
-	<menu_item_check label="Erweiterte Ansicht" name="expanded_view"/>
-	<menu_item_check label="Zeit anzeigen" name="IMShowTime"/>
-	<menu_item_check label="Namen in privaten Unterhaltungen anzeigen" name="IMShowNamesForP2PConv"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_object_icon.xml b/indra/newview/skins/default/xui/de/menu_object_icon.xml
index f92fa0f82b7..8b6c558416b 100644
--- a/indra/newview/skins/default/xui/de/menu_object_icon.xml
+++ b/indra/newview/skins/default/xui/de/menu_object_icon.xml
@@ -2,6 +2,4 @@
 <menu name="Object Icon Menu">
 	<menu_item_call label="Objektprofil..." name="Object Profile"/>
 	<menu_item_call label="Ignorieren..." name="Block"/>
-	<menu_item_call label="Auf Karte anzeigen" name="show_on_map"/>
-	<menu_item_call label="Zu Objektposition teleportieren" name="teleport_to_object"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/de/menu_outfit_gear.xml b/indra/newview/skins/default/xui/de/menu_outfit_gear.xml
index 0cf3c09882b..d56c93533cf 100644
--- a/indra/newview/skins/default/xui/de/menu_outfit_gear.xml
+++ b/indra/newview/skins/default/xui/de/menu_outfit_gear.xml
@@ -23,8 +23,6 @@
 		<menu_item_call label="Neues Haar" name="New Hair"/>
 		<menu_item_call label="Neue Augen" name="New Eyes"/>
 	</menu>
-	<menu_item_call label="Alle Ordner erweitern" name="expand"/>
-	<menu_item_call label="Alle Ordner schließen" name="collapse"/>
 	<menu_item_call label="Outfit neu benennen" name="rename"/>
 	<menu_item_call label="Outfit löschen" name="delete_outfit"/>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_participant_view.xml b/indra/newview/skins/default/xui/de/menu_participant_view.xml
deleted file mode 100644
index 6ceb9ac4c5c..00000000000
--- a/indra/newview/skins/default/xui/de/menu_participant_view.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="participant_manu_view">
-	<menu_item_check label="Unterhaltungen nach Typ sortieren" name="sort_sessions_by_type"/>
-	<menu_item_check label="Unterhaltungen nach Namen sortieren" name="sort_sessions_by_name"/>
-	<menu_item_check label="Unterhaltungen nach jüngster Aktivität sortieren" name="sort_sessions_by_recent"/>
-	<menu_item_check label="Teilnehmer nach Namen sortieren" name="sort_participants_by_name"/>
-	<menu_item_check label="Teilnehmer nach jüngster Aktivität sortieren" name="sort_participants_by_recent"/>
-	<menu_item_call label="Chat-Einstellungen..." name="chat_preferences"/>
-	<menu_item_call label="Privatsphäre-Einstellungen..." name="privacy_preferences"/>
-	<menu_item_check label="Unterhaltungsprotokoll..." name="Conversation"/>
-	<menu_item_check label="Chat in der Nähe übersetzen" name="Translate_chat"/>
-	<menu_item_check label="Ãœbersetzungseinstellungen..." name="Translation_settings"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_people_blocked_gear.xml b/indra/newview/skins/default/xui/de/menu_people_blocked_gear.xml
deleted file mode 100644
index f69a453e58c..00000000000
--- a/indra/newview/skins/default/xui/de/menu_people_blocked_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_blocked_gear">
-	<menu_item_call label="Nicht mehr ignorieren" name="unblock"/>
-	<menu_item_call label="Profil..." name="profile"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_people_blocked_plus.xml b/indra/newview/skins/default/xui/de/menu_people_blocked_plus.xml
deleted file mode 100644
index 041fde139db..00000000000
--- a/indra/newview/skins/default/xui/de/menu_people_blocked_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_blocked_plus">
-	<menu_item_call label="Einwohner nach Namen ignorieren..." name="block_resident_by_name"/>
-	<menu_item_call label="Objekt nach Namen ignorieren" name="block_object_by_name"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_people_blocked_view.xml b/indra/newview/skins/default/xui/de/menu_people_blocked_view.xml
deleted file mode 100644
index 1dae593ebe8..00000000000
--- a/indra/newview/skins/default/xui/de/menu_people_blocked_view.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_blocked_view">
-	<menu_item_check label="Nach Namen sortieren" name="sort_by_name"/>
-	<menu_item_check label="Nach Typ sortieren" name="sort_by_type"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_people_friends_view.xml b/indra/newview/skins/default/xui/de/menu_people_friends_view.xml
deleted file mode 100644
index da4890fe96c..00000000000
--- a/indra/newview/skins/default/xui/de/menu_people_friends_view.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_group_plus">
-	<menu_item_check label="Nach Namen sortieren" name="sort_name"/>
-	<menu_item_check label="Nach Status sortieren" name="sort_status"/>
-	<menu_item_check label="Symbole für Personen anzeigen" name="view_icons"/>
-	<menu_item_check label="Erteilte Genehmigungen anzeigen" name="view_permissions"/>
-	<menu_item_check label="Unterhaltungsprotokoll anzeigen..." name="view_conversation"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_people_groups.xml b/indra/newview/skins/default/xui/de/menu_people_groups.xml
index a69c82d3d85..76225ba2414 100644
--- a/indra/newview/skins/default/xui/de/menu_people_groups.xml
+++ b/indra/newview/skins/default/xui/de/menu_people_groups.xml
@@ -2,7 +2,7 @@
 <menu name="menu_group_plus">
 	<menu_item_call label="Info anzeigen" name="View Info"/>
 	<menu_item_call label="Chat" name="Chat"/>
-	<menu_item_call label="Voice-Anruf" name="Call"/>
+	<menu_item_call label="Anrufen" name="Call"/>
 	<menu_item_call label="Aktivieren" name="Activate"/>
 	<menu_item_call label="Verlassen" name="Leave"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/de/menu_people_groups_view.xml b/indra/newview/skins/default/xui/de/menu_people_groups_view.xml
deleted file mode 100644
index 20386bba567..00000000000
--- a/indra/newview/skins/default/xui/de/menu_people_groups_view.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_group_plus">
-	<menu_item_check label="Gruppensymbole anzeigen" name="Display Group Icons"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_people_nearby.xml b/indra/newview/skins/default/xui/de/menu_people_nearby.xml
index cdbb3ae917c..1db964357fe 100644
--- a/indra/newview/skins/default/xui/de/menu_people_nearby.xml
+++ b/indra/newview/skins/default/xui/de/menu_people_nearby.xml
@@ -1,16 +1,13 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Avatar Context Menu">
-	<menu_item_call label="Profil anzeigen" name="view_profile"/>
-	<menu_item_call label="IM" name="im"/>
-	<menu_item_call label="Teleport anbieten" name="offer_teleport"/>
-	<menu_item_call label="Voice-Anruf" name="voice_call"/>
-	<menu_item_call label="Chatverlauf anzeigen..." name="chat_history"/>
-	<menu_item_call label="Freund hinzufügen" name="add_friend"/>
-	<menu_item_call label="Freund entfernen" name="remove_friend"/>
-	<menu_item_call label="In Gruppe einladen..." name="invite_to_group"/>
-	<menu_item_call label="Hineinzoomen" name="zoom_in"/>
-	<menu_item_call label="Karte" name="map"/>
-	<menu_item_call label="Freigeben" name="share"/>
-	<menu_item_call label="Bezahlen" name="pay"/>
-	<menu_item_check label="Ignorieren/Nicht mehr ignorieren" name="block_unblock"/>
+	<menu_item_call label="Profil anzeigen" name="View Profile"/>
+	<menu_item_call label="Freund hinzufügen" name="Add Friend"/>
+	<menu_item_call label="Freund entfernen" name="Remove Friend"/>
+	<menu_item_call label="IM" name="IM"/>
+	<menu_item_call label="Anrufen" name="Call"/>
+	<menu_item_call label="Karte" name="Map"/>
+	<menu_item_call label="Teilen" name="Share"/>
+	<menu_item_call label="Bezahlen" name="Pay"/>
+	<menu_item_check label="Ignorieren/Freischalten" name="Block/Unblock"/>
+	<menu_item_call label="Teleport anbieten" name="teleport"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/de/menu_people_nearby_multiselect.xml
index ba6578e2d1d..b6e99edfe1f 100644
--- a/indra/newview/skins/default/xui/de/menu_people_nearby_multiselect.xml
+++ b/indra/newview/skins/default/xui/de/menu_people_nearby_multiselect.xml
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Multi-Selected People Context Menu">
-	<menu_item_call label="Freunde hinzufügen" name="add_friends"/>
-	<menu_item_call label="Freunde entfernen" name="remove_friends"/>
-	<menu_item_call label="IM" name="im"/>
-	<menu_item_call label="Anrufen" name="call"/>
-	<menu_item_call label="Freigeben" name="share"/>
-	<menu_item_call label="Bezahlen" name="pay"/>
-	<menu_item_call label="Teleport anbieten" name="offer_teleport"/>
+	<menu_item_call label="Freunde hinzufügen" name="Add Friends"/>
+	<menu_item_call label="Freunde entfernen" name="Remove Friend"/>
+	<menu_item_call label="IM" name="IM"/>
+	<menu_item_call label="Anrufen" name="Call"/>
+	<menu_item_call label="Teilen" name="Share"/>
+	<menu_item_call label="Bezahlen" name="Pay"/>
+	<menu_item_call label="Teleport anbieten" name="teleport"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_people_nearby_view.xml b/indra/newview/skins/default/xui/de/menu_people_nearby_view.xml
deleted file mode 100644
index d38ec650376..00000000000
--- a/indra/newview/skins/default/xui/de/menu_people_nearby_view.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_group_plus">
-	<menu_item_check label="Nach letzten Sprechern sortieren" name="sort_by_recent_speakers"/>
-	<menu_item_check label="Nach Namen sortieren" name="sort_name"/>
-	<menu_item_check label="Nach Nähe sortieren" name="sort_distance"/>
-	<menu_item_check label="Symbole für Personen anzeigen" name="view_icons"/>
-	<menu_item_check label="Karte anzeigen" name="view_map"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_people_recent_view.xml b/indra/newview/skins/default/xui/de/menu_people_recent_view.xml
deleted file mode 100644
index a116ad0bc16..00000000000
--- a/indra/newview/skins/default/xui/de/menu_people_recent_view.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_group_plus">
-	<menu_item_check label="Nach jüngsten sortieren" name="sort_most"/>
-	<menu_item_check label="Nach Namen sortieren" name="sort_name"/>
-	<menu_item_check label="Symbole für Personen anzeigen" name="view_icons"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_url_agent.xml b/indra/newview/skins/default/xui/de/menu_url_agent.xml
index c61ebb0eae2..9a808088fbe 100644
--- a/indra/newview/skins/default/xui/de/menu_url_agent.xml
+++ b/indra/newview/skins/default/xui/de/menu_url_agent.xml
@@ -1,8 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Url Popup">
-	<menu_item_call label="Profil anzeigen" name="show_agent"/>
-	<menu_item_call label="IM senden..." name="send_im"/>
-	<menu_item_call label="Freund hinzufügen..." name="add_friend"/>
+	<menu_item_call label="Einwohnerprofil anzeigen" name="show_agent"/>
 	<menu_item_call label="Name in Zwischenablage kopieren" name="url_copy_label"/>
 	<menu_item_call label="SLurl in die Zwischenablage kopieren" name="url_copy"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_url_objectim.xml b/indra/newview/skins/default/xui/de/menu_url_objectim.xml
index 77b7004e44f..90d3763d9c0 100644
--- a/indra/newview/skins/default/xui/de/menu_url_objectim.xml
+++ b/indra/newview/skins/default/xui/de/menu_url_objectim.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Url Popup">
-	<menu_item_call label="Objektprofil..." name="show_object"/>
+	<menu_item_call label="Objektinformationen anzeigen" name="show_object"/>
 	<menu_item_call label="Auf Karte zeigen" name="show_on_map"/>
 	<menu_item_call label="Zu Objekt-Position teleportieren" name="teleport_to_object"/>
 	<menu_item_call label="Objektname in Zwischenablage kopieren" name="url_copy_label"/>
diff --git a/indra/newview/skins/default/xui/de/menu_viewer.xml b/indra/newview/skins/default/xui/de/menu_viewer.xml
index 2c9d9fa7f12..845df1f0503 100644
--- a/indra/newview/skins/default/xui/de/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/de/menu_viewer.xml
@@ -16,7 +16,10 @@
 			<menu_item_call label="Animation meines Avatars stoppen" name="Stop Animating My Avatar"/>
 			<menu_item_call label="Gehen/Rennen/Fliegen..." name="Walk / run / fly"/>
 		</menu>
-		<menu label="Status" name="Status"/>
+		<menu label="Status" name="Status">
+			<menu_item_call label="Abwesend" name="Set Away"/>
+			<menu_item_call label="Beschäftigt" name="Set Busy"/>
+		</menu>
 		<menu_item_call label="L$ kaufen..." name="Buy and Sell L$"/>
 		<menu_item_call label="Händler-Outbox..." name="MerchantOutbox"/>
 		<menu_item_call label="Kontoübersicht..." name="Manage My Account">
@@ -29,18 +32,14 @@
 		<menu_item_call label="[APP_NAME] schließen" name="Quit"/>
 	</menu>
 	<menu label="Unterhalten" name="Communicate">
-		<menu_item_check label="Unterhaltungen..." name="Conversations"/>
-		<menu_item_check label="Chat in der Nähe..." name="Nearby Chat"/>
+		<menu_item_check label="Chat..." name="Nearby Chat"/>
 		<menu_item_check label="Sprechen" name="Speak"/>
-		<menu label="Voice-Morphing" name="VoiceMorphing">
-			<menu_item_check label="Kein Voice-Morphing" name="NoVoiceMorphing"/>
-			<menu_item_check label="Vorschau..." name="Preview"/>
-			<menu_item_call label="Abonnieren..." name="Subscribe"/>
-		</menu>
+		<menu_item_check label="Voice-Einstellungen..." name="Nearby Voice"/>
+		<menu_item_check label="Voice-Morphing..." name="ShowVoice"/>
 		<menu_item_check label="Gesten..." name="Gestures"/>
-		<menu_item_check label="Freunde" name="My Friends"/>
-		<menu_item_check label="Gruppen" name="My Groups"/>
-		<menu_item_check label="Leute in der Nähe" name="Active Speakers"/>
+		<menu_item_call label="Freunde" name="My Friends"/>
+		<menu_item_call label="Gruppen" name="My Groups"/>
+		<menu_item_call label="Leute in der Nähe" name="Active Speakers"/>
 		<menu_item_call label="Blockierliste" name="Block List"/>
 	</menu>
 	<menu label="Welt" name="World">
@@ -116,6 +115,7 @@
 			<menu_item_call label="Kaufen" name="Menu Object Buy"/>
 			<menu_item_call label="Nehmen" name="Menu Object Take"/>
 			<menu_item_call label="Kopie nehmen" name="Take Copy"/>
+			<menu_item_call label="Objekt wieder in meinem Inventar speichern" name="Save Object Back to My Inventory"/>
 			<menu_item_call label="Wieder in Objektinhalt speichern" name="Save Object Back to Object Contents"/>
 			<menu_item_call label="Objekt zurückgeben" name="Return Object back to Owner"/>
 		</menu>
@@ -130,7 +130,6 @@
 			<menu_item_call label="Linksets..." name="pathfinding_linksets_menu_item"/>
 			<menu_item_call label="Figuren..." name="pathfinding_characters_menu_item"/>
 			<menu_item_call label="Anzeigen/Testen..." name="pathfinding_console_menu_item"/>
-			<menu_item_call label="Region neu formen" name="pathfinding_rebake_navmesh_item"/>
 		</menu>
 		<menu label="Optionen" name="Options">
 			<menu_item_check label="Erweiterte Berechtigungen anzeigen" name="DebugPermissions"/>
@@ -160,13 +159,6 @@
 	<menu label="Hilfe" name="Help">
 		<menu_item_call label="Anweisungen..." name="How To"/>
 		<menu_item_call label="[SECOND_LIFE]-Hilfe" name="Second Life Help"/>
-		<menu_item_call label="Benutzerhandbuch" name="User’s guide"/>
-		<menu_item_call label="Knowledge Base" name="Knowledge Base"/>
-		<menu_item_call label="Wiki" name="Wiki"/>
-		<menu_item_call label="Community-Foren" name="Community Forums"/>
-		<menu_item_call label="Support-Portal" name="Support portal"/>
-		<menu_item_call label="[SECOND_LIFE]-Neuigkeiten" name="Second Life News"/>
-		<menu_item_call label="[SECOND_LIFE]-Blogs" name="Second Life Blogs"/>
 		<menu_item_call label="Missbrauch melden" name="Report Abuse"/>
 		<menu_item_call label="Fehler melden" name="Report Bug"/>
 		<menu_item_call label="INFO ÃœBER [APP_NAME]" name="About Second Life"/>
@@ -393,14 +385,9 @@
 				<menu_item_call label="Weiblich testen" name="Test Female"/>
 				<menu_item_check label="Avatarauswahl zulassen" name="Allow Select Avatar"/>
 			</menu>
-			<menu label="Animationsgeschwindigkeit" name="Animation Speed">
-				<menu_item_call label="Alle Animationen 10 % schneller" name="All Animations 10 Faster"/>
-				<menu_item_call label="Alle Animationen 10 % langsamer" name="All Animations 10 Slower"/>
-				<menu_item_call label="Alle Animationsgeschwindigkeiten zurücksetzen" name="Reset All Animation Speed"/>
-				<menu_item_check label="Zeitlupen-Animationen" name="Slow Motion Animations"/>
-			</menu>
 			<menu_item_call label="Param auf Standard erzwingen" name="Force Params to Default"/>
 			<menu_item_check label="Animations-Info" name="Animation Info"/>
+			<menu_item_check label="Zeitlupen-Animationen" name="Slow Motion Animations"/>
 			<menu_item_check label="Kamerafokus anzeigen" name="Show Look At"/>
 			<menu_item_check label="Klickpunkt anzeigen??" name="Show Point At"/>
 			<menu_item_check label="Fehler in Landaktualisierung beseitigen" name="Debug Joint Updates"/>
diff --git a/indra/newview/skins/default/xui/de/notifications.xml b/indra/newview/skins/default/xui/de/notifications.xml
index dc0d7dc6b4b..4b7a60b4eb7 100644
--- a/indra/newview/skins/default/xui/de/notifications.xml
+++ b/indra/newview/skins/default/xui/de/notifications.xml
@@ -523,24 +523,6 @@ Weitere Informationen finden Sie auf [_URL].
 		</url>
 		<usetemplate ignoretext="Mein Grafiktreiber ist veraltet" name="okcancelignore" notext="Nein" yestext="Ja"/>
 	</notification>
-	<notification name="AMDOldDriver">
-		Wahrscheinlich gibt es einen neueren Treiber für Ihren Grafikchip.  Durch Aktualisieren der Grafiktreiber lässt sich die Leistung u. U. beträchtlich verbessern.
-
-    Unter [_URL] nach aktualisierten Treibern suchen?
-		<url name="url">
-			http://support.amd.com/de/Pages/AMDSupportHub.aspx
-		</url>
-		<usetemplate ignoretext="Mein Grafiktreiber ist veraltet" name="okcancelignore" notext="Nein" yestext="Ja"/>
-	</notification>
-	<notification name="NVIDIAOldDriver">
-		Wahrscheinlich gibt es einen neueren Treiber für Ihren Grafikchip.  Durch Aktualisieren der Grafiktreiber lässt sich die Leistung u. U. beträchtlich verbessern.
-
-    Unter [_URL] nach aktualisierten Treibern suchen?
-		<url name="url">
-			http://www.nvidia.com/Download/index.aspx?lang=de-de
-		</url>
-		<usetemplate ignoretext="Mein Grafiktreiber ist veraltet" name="okcancelignore" notext="Nein" yestext="Ja"/>
-	</notification>
 	<notification name="UnknownGPU">
 		Ihr System verwendet eine Grafikkarte, die [APP_NAME] nicht erkennt.
 Dies passiert dann, wenn die neue Hardware noch nicht mit [APP_NAME] getestet wurde.  Wahrscheinlich wird das Programm richtig ausgeführt, aber Sie müssen eventuell ein paar Grafikeinstellungen vornehmen.
@@ -1576,13 +1558,10 @@ Diese Gruppe verlassen?
 		Sie können gerade keine Freundschaft anbieten. Warten Sie kurz und versuchen Sie es dann noch einmal.
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
-	<notification name="DoNotDisturbModeSet">
-		Nicht-stören-Modus ist aktiviert:  Sie erhalten keine Benachrichtigung über eingehende Kommunikation.
-
-- Andere Einwohner erhalten Ihre Nicht-stören-Antwort (festgelegt in Einstellungen &gt; Allgemein).
-- Teleport-Angebote werden abgelehnt.
-- Voice-Anrufe werden abgelehnt.
-		<usetemplate ignoretext="Ich ändere meinen Status zu „Nicht stören“" name="okignore" yestext="OK"/>
+	<notification name="BusyModeSet">
+		Beschäftigt-Modus ist aktiviert.
+Chat und Instant Messages werden ausgeblendet. Instant Messages (Sofortnachrichten) erhalten Ihre Beschäftigt-Antwort. Alle Teleport-Angebote werden abgelehnt. Alle Inventar-Angebote werden in Ihren Papierkorb geschoben.
+		<usetemplate ignoretext="Ich ändere meinen Status zu Beschäftigt" name="okignore" yestext="OK"/>
 	</notification>
 	<notification name="JoinedTooManyGroupsMember">
 		Sie haben die maximale Anzahl an Gruppen erreicht. Bitte verlassen Sie eine andere Gruppe, um dieser beitreten zu können oder lehnen Sie das Angebot ab.
@@ -2070,10 +2049,6 @@ Inventarobjekt(e) verschieben?
 		Möchten Sie Ihre [http://secondlife.com/account/ Startseite] aufrufen, um Ihre Konto-Statistik anzuzeigen?
 		<usetemplate ignoretext="Meinen Browser starten, um meine Konto-Statistik anzuzeigen" name="okcancelignore" notext="Abbrechen" yestext="Gehe zu Seite"/>
 	</notification>
-	<notification name="ConfirmAddingChatParticipants">
-		Wenn Sie eine Person zu einer vorhandenen Unterhaltung hinzufügen, wird eine neue Unterhaltung erstellt.  Alle Teilnehmer erhalten neue Unterhaltungsbenachrichtigungen.
-		<usetemplate ignoretext="Hinzufügen von Chat-Teilnehmern bestätigen" name="okcancelignore" notext="Abbrechen" yestext="OK"/>
-	</notification>
 	<notification name="ConfirmQuit">
 		Wirklich beenden?
 		<usetemplate ignoretext="Bestätigen, bevor Sitzung beendet wird" name="okcancelignore" notext="Nicht beenden" yestext="Beenden"/>
@@ -2147,14 +2122,14 @@ Möchten Sie es mit dem ausgewählten Objekt ersetzen?
 			<button ignore="Nie ersetzen" name="No" text="Abbrechen"/>
 		</form>
 	</notification>
-	<notification label="Warnung für Nicht-stören-Modus" name="DoNotDisturbModePay">
-		Sie haben den Nicht-stören-Modus aktiviert. Sie erhalten keine Artikel, die im Gegenzug für diese Zahlung angeboten werden.
+	<notification label="Beschäftigt-Modus-Warnung" name="BusyModePay">
+		Sie sind im Beschäftigt-Modus, sodass Sie im Austausch für diese Zahlung keine Objekte erhalten können.
 
-Möchten Sie den Nicht-stören-Modus deaktivieren, bevor Sie diese Transaktion abschließen?
+Möchten Sie den Bechäftigt-Modus verlassen, bevor Sie diese Transaktion abschließen?
 		<form name="form">
-			<ignore name="ignore" text="Ich bin im Begriff eine Person oder ein Objekt zu bezahlen, während ich im Nicht-stören-Modus bin."/>
-			<button ignore="„Nicht stören“-Modus immer verlassen" name="Yes" text="OK"/>
-			<button ignore="„Nicht stören“-Modus nie verlassen" name="No" text="Abbrechen"/>
+			<ignore name="ignore" save_option="true" text="Ich bin im Begriff eine Person oder ein Objekt zu bezahlen, während ich im Modus Beschäftigt bin."/>
+			<button ignore="Beschäftigt-Modus immer deaktivieren" name="Yes" text="OK"/>
+			<button ignore="Beschäftigt-Modus aktiviert lassen" name="No" text="Abbrechen"/>
 		</form>
 	</notification>
 	<notification name="ConfirmDeleteProtectedCategory">
@@ -2289,8 +2264,11 @@ Von einer Webseite zu diesem Formular linken, um anderen leichten Zugang zu dies
 	<notification name="GroupNotice">
 		Betreff: [SUBJECT], Nachricht: [MESSAGE]
 	</notification>
-	<notification name="FriendOnlineOffline">
-		&lt;nolink&gt;[NAME]&lt;/nolink&gt; ist [STATUS]
+	<notification name="FriendOnline">
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; ist online
+	</notification>
+	<notification name="FriendOffline">
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; ist offline
 	</notification>
 	<notification name="AddSelfFriend">
 		Obwohl Sie ein sehr netter Mensch sind, können Sie sich nicht selbst als Freund hinzufügen.
@@ -2518,6 +2496,13 @@ Fliegen ist hier nicht möglich.
 	<notification name="DynamicPathfindingDisabled">
 		Dynamisches Pathfinding ist in dieser Region nicht aktiviert. Geskriptete Objekte, die Pathfinding-LSL-Aufrufe verwenden, funktionieren in dieser Region u. U. nicht wie erwartet.
 	</notification>
+	<notification name="PathfindingRebakeNavmesh">
+		Wenn Sie bestimmte Objekte in dieser Region ändern, verhalten sich andere bewegliche Objekte u. U. inkorrekt. Um dieses Problem zu beheben, klicken Sie auf die Schaltfläche „Region neu formen“. Um weitere Informationen zu erhalten, klicken Sie auf „Hilfe“.
+		<url name="url">
+			http://wiki.secondlife.com/wiki/Pathfinding_Tools_in_the_Second_Life_Viewer
+		</url>
+		<usetemplate helptext="Hilfe" ignoretext="Wenn Sie bestimmte Objekte in dieser Region ändern, verhalten sich andere bewegliche Objekte u. U. inkorrekt." name="okhelpignore" yestext="OK"/>
+	</notification>
 	<notification name="PathfindingCannotRebakeNavmesh">
 		Fehler aufgetreten. Möglicherweise ist ein Netzwerk- oder Serverproblem aufgetreten oder Sie haben nicht die erforderlichen Baurechte. Dieses Problem lässt sich manchmal durch Ab- und Anmelden lösen.
 		<usetemplate name="okbutton" yestext="OK"/>
@@ -2780,7 +2765,7 @@ Ist das OK?
 	<notification name="ScriptQuestionCaution">
 		Achtung: Das Objekt „&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;“ fordert uneingeschränkten Zugriff auf Ihr Linden-Dollar-Konto an. Wenn Sie Zugriff gewähren, kann dieses Objekt jederzeit und ohne weitere Warnung Ihr Konto belasten bzw. ganz leeren.
   
-Gewähren Sie dem Objekt nur dann Zugriff, wenn Sie genau verstehen, wieso ein solcher Zugriff auf Ihr Konto erforderlich ist.
+Eine solche Anforderung ist nur in seltenen Fällen legitim. Gewähren Sie dem Objekt nur dann Zugriff, wenn Sie genau verstehen, wieso ein solcher Zugriff auf Ihr Konto erforderlich ist.
 		<form name="form">
 			<button name="Grant" text="Uneingeschränkten Zugriff gewähren"/>
 			<button name="Deny" text="Verweigern"/>
@@ -3361,633 +3346,4 @@ Versuch abgebrochen.
 		Sie sind dabei, [NUM_ITEMS] Objekte zu löschen. Möchten Sie diesen Vorgang wirklich fortsetzen?
 		<usetemplate ignoretext="Möchten Sie wirklich mehrere Objekte löschen?" name="okcancelignore" notext="Nein" yestext="Ja"/>
 	</notification>
-	<notification name="AvatarFrozen">
-		[AV_FREEZER] hat Sie eingefroren. Sie können sich nicht bewegen oder mit der Welt interagieren.
-	</notification>
-	<notification name="AvatarFrozenDuration">
-		[AV_FREEZER] hat Sie [AV_FREEZE_TIME] Sekunden lang eingefroren. Sie können sich nicht bewegen oder mit der Welt interagieren.
-	</notification>
-	<notification name="YouFrozeAvatar">
-		Avatar eingefroren.
-	</notification>
-	<notification name="AvatarHasUnFrozenYou">
-		[AV_FREEZER] hat Sie aufgetaut.
-	</notification>
-	<notification name="AvatarUnFrozen">
-		Avatar aufgetaut.
-	</notification>
-	<notification name="AvatarFreezeFailure">
-		Einfrieren fehlgeschlagen, da Sie keine Berechtigung für diese Parzelle haben.
-	</notification>
-	<notification name="AvatarFreezeThaw">
-		Sie sind nicht mehr eingefroren und können sich frei bewegen.
-	</notification>
-	<notification name="AvatarCantFreeze">
-		Dieser Benutzer kann nicht eingefroren werden.
-	</notification>
-	<notification name="NowOwnObject">
-		Sie sind jetzt Eigentümer des Objekts [OBJECT_NAME]
-	</notification>
-	<notification name="CantRezOnLand">
-		Objekt kann nicht an [OBJECT_POS] gerezzt werden, da der Landeigentümer dies nicht zulässt.  Machen Sie den Landeigentümer mit dem Landwerkzeug ausfindig.
-	</notification>
-	<notification name="RezFailTooManyRequests">
-		Objekt kann nicht gerezzt werden, da zu viele Anforderungen vorliegen.
-	</notification>
-	<notification name="SitFailCantMove">
-		Sie können sich nicht hinsetzen, da Sie zur Zeit unbeweglich sind.
-	</notification>
-	<notification name="SitFailNotAllowedOnLand">
-		Sie können sich nicht hinsetzen, da Sie auf diesem Land keine Berechtigung dazu haben.
-	</notification>
-	<notification name="SitFailNotSameRegion">
-		Kommen Sie näher heran.  Sitzen auf Objekt nicht möglich, da
-es sich nicht in der gleichen Region befindet wie Sie.
-	</notification>
-	<notification name="NoNewObjectRegionFull">
-		Neues Objekt kann nicht erstellt werden. Die Region ist voll.
-	</notification>
-	<notification name="FailedToPlaceObject">
-		Objekt konnte nicht an festgelegtem Ort platziert werden.  Versuchen Sie es erneut.
-	</notification>
-	<notification name="NoOwnNoGardening">
-		Auf Land, das Sie nicht besitzen, können Sie keine Bäume und Gräser erstellen.
-	</notification>
-	<notification name="NoCopyPermsNoObject">
-		Kopieren fehlgeschlagen, da Sie keine Berechtigung zum Kopieren des Objekts „OBJ_NAME]“ besitzen.
-	</notification>
-	<notification name="NoTransPermsNoObject">
-		Kopieren fehlgeschlagen, weil Objekt „[OBJ_NAME]“ nicht an Sie übertragen werden kann.
-	</notification>
-	<notification name="AddToNavMeshNoCopy">
-		Kopieren fehlgeschlagen, weil Objekt „[OBJ_NAME]“ zum Navmesh beiträgt.
-	</notification>
-	<notification name="DupeWithNoRootsSelected">
-		Ohne ausgewählte Hauptobjekte duplizieren.
-	</notification>
-	<notification name="CantDupeCuzRegionIsFull">
-		Objekte können nicht dupliziert werden, da die Region voll ist.
-	</notification>
-	<notification name="CantDupeCuzParcelNotFound">
-		Objekte können nicht dupliziert werden, da die Parzelle, in der sie sich befinden, nicht auffindbar ist.
-	</notification>
-	<notification name="CantCreateCuzParcelFull">
-		Objekt kann nicht erstellt werden, da 
-die Parzelle voll ist.
-	</notification>
-	<notification name="RezAttemptFailed">
-		Versuch zum Rezzen eines Objekts fehlgeschlagen.
-	</notification>
-	<notification name="ToxicInvRezAttemptFailed">
-		Objekt, das in dieser Region zu Problemen geführt hat, kann nicht erstellt werden.
-	</notification>
-	<notification name="InvItemIsBlacklisted">
-		Dieses Inventarobjekt ist auf der schwarzen Liste.
-	</notification>
-	<notification name="NoCanRezObjects">
-		Sie können gegenwärtig keine Objekte erstellen.
-	</notification>
-	<notification name="LandSearchBlocked">
-		Landsuche blockiert.
-Sie haben zu viele Landsuchen in zu kurzer Zeit durchgeführt.
-Warten Sie kurz und versuchen Sie es noch einmal.
-	</notification>
-	<notification name="NotEnoughResourcesToAttach">
-		Nicht genügend Skriptressourcen verfügbar, um Objekt anzuhängen.
-	</notification>
-	<notification name="YouDiedAndGotTPHome">
-		Sie sind gestorben und wurden nach Hause teleportiert
-	</notification>
-	<notification name="EjectComingSoon">
-		Sie nicht hier nicht mehr zugelassen und haben [EJECT_TIME] Sekunden Zeit, um zu gehen.
-	</notification>
-	<notification name="NoEnterServerFull">
-		Sie können diese Region nicht betreten, da 
-der Server voll ist.
-	</notification>
-	<notification name="SaveBackToInvDisabled">
-		Erneutes Speichern im Inventar ist deaktiviert.
-	</notification>
-	<notification name="NoExistNoSaveToContents">
-		„[OBJ_NAME]“ kann nicht im Objektinhalt gespeichert werden, da das Objekt, aus dem es gerezzt wurde, nicht mehr existiert.
-	</notification>
-	<notification name="NoModNoSaveToContents">
-		„[OBJ_NAME]“ kann nicht in Objektinhalt gespeichert werden, da Sie nicht die Berechtigung zum Modifizieren des Objekts „[DEST_NAME]“ besitzen.
-	</notification>
-	<notification name="NoSaveBackToInvDisabled">
-		„[OBJ_NAME]“ kann nicht erneut im Inventar gespeichert werden – dieser Vorgang wurde deaktiviert.
-	</notification>
-	<notification name="NoCopyNoSelCopy">
-		Sie können Ihre Auswahl nicht kopieren, da Sie nicht die Berechtigung zum Kopieren des Objekts „[OBJ_NAME]“ haben.
-	</notification>
-	<notification name="NoTransNoSelCopy">
-		Sie können Ihre Auswahl nicht kopieren, da das Objekt „[OBJ_NAME]“ nicht übertragbar ist.
-	</notification>
-	<notification name="NoTransNoCopy">
-		Sie können Ihre Auswahl nicht kopieren, da das Objekt „[OBJ_NAME]“ nicht übertragbar ist.
-	</notification>
-	<notification name="NoPermsNoRemoval">
-		Entfernen des Objekts „[OBJ_NAME]“ aus dem Simulator wird vom Berechtigungssystem nicht gestattet.
-	</notification>
-	<notification name="NoModNoSaveSelection">
-		Sie können Ihre Auswahl nicht speichern, da Sie keine Berechtigung zum Modifizieren des Objekts „[OBJ_NAME]“ besitzen.
-	</notification>
-	<notification name="NoCopyNoSaveSelection">
-		Ihre Auswahl kann nicht gespeichert werden, da das Objekt „[OBJ_NAME]“ nicht kopiert werden kann.
-	</notification>
-	<notification name="NoModNoTaking">
-		Sie können Ihre Auswahl nicht in Empfang nehmen, da Sie nicht die Berechtigung zum Modifizieren des Objekts „[OBJ_NAME]“ haben.
-	</notification>
-	<notification name="RezDestInternalError">
-		Interner Fehler: Unbekannter Zielttyp.
-	</notification>
-	<notification name="DeleteFailObjNotFound">
-		Löschen fehlgeschlagen, da Objekt nicht gefunden wurde
-	</notification>
-	<notification name="SorryCantEjectUser">
-		Dieser Benutzer kann nicht hinausgeworfen werden.
-	</notification>
-	<notification name="RegionSezNotAHome">
-		Diese Region gestattet nicht, dass Sie hier Ihr Zuhause festlegen.
-	</notification>
-	<notification name="HomeLocationLimits">
-		Ihr Zuhause kann sich nur auf Ihrem eigenen Land oder in einem Infohub auf dem Mainland befinden.
-	</notification>
-	<notification name="HomePositionSet">
-		Position für Zuhause festgelegt.
-	</notification>
-	<notification name="AvatarEjected">
-		Avatar hinausgeworfen.
-	</notification>
-	<notification name="AvatarEjectFailed">
-		Hinauswerfen fehlgeschlagen, da Sie keine Admin-Berechtigung für diese Parzelle haben.
-	</notification>
-	<notification name="CantMoveObjectParcelFull">
-		Objekt „[OBJECT_NAME]“ kann nicht nach
-[OBJ_POSITION] in Region [REGION_NAME] verschoben werden, da die Parzelle voll ist.
-	</notification>
-	<notification name="CantMoveObjectParcelPerms">
-		Objekt „[OBJECT_NAME]“ kann nicht nach
-[OBJ_POSITION] in Region [REGION_NAME] verschoben werden, da Ihre Objekte auf dieser Parzelle nicht gestattet sind.
-	</notification>
-	<notification name="CantMoveObjectParcelResources">
-		Objekt „[OBJECT_NAME]“ kann nicht nach
-[OBJ_POSITION] in Region [REGION_NAME] verschoben werden, da nicht genügend Ressourcen für dieses Objekt auf dieser Parzelle vorhanden sind.
-	</notification>
-	<notification name="CantMoveObjectRegionVersion">
-		Objekt „[OBJECT_NAME]“ kann nicht nach
-[OBJ_POSITION] in Region [REGION_NAME] verschoben werden, da die andere Region eine ältere Version verwendet, die das Empfangen dieses Objekts per Regionswechsel nicht unterstützt.
-	</notification>
-	<notification name="CantMoveObjectNavMesh">
-		Objekt „[OBJECT_NAME]“ kann nicht nach
-[OBJ_POSITION] in Region [REGION_NAME] verschoben werden, da Sie das Navmesh nicht regionsübergreifend modifizieren können.
-	</notification>
-	<notification name="CantMoveObjectWTF">
-		Objekt „[OBJECT_NAME]“ kann nicht nach
-[OBJ_POSITION] in Region [REGION_NAME] verschoben werden, da ein unbekannter Fehler vorliegt. ([FAILURE_TYPE])
-	</notification>
-	<notification name="NoPermModifyObject">
-		Ihnen fehlt die Berechtigung zum Modifizieren dieses Objekts.
-	</notification>
-	<notification name="CantEnablePhysObjContributesToNav">
-		Physik kann nicht für ein Objekt aktiviert werden, das zum Navmesh beiträgt.
-	</notification>
-	<notification name="CantEnablePhysKeyframedObj">
-		Physik für Keyframe-Objekte kann nicht aktiviert werden.
-	</notification>
-	<notification name="CantEnablePhysNotEnoughLandResources">
-		Physik für Objekte kann nicht aktiviert werden – nicht genügend Landressourcen.
-	</notification>
-	<notification name="CantEnablePhysCostTooGreat">
-		Physik für Objekt mit Physikressourcenkosten höher als [MAX_OBJECTS] kann nicht aktiviert werden.
-	</notification>
-	<notification name="PhantomWithConcavePiece">
-		Dieses Objekt kann kein konkaves Teil enthalten, da es ein Phantom ist und zum Navmesh beiträgt.
-	</notification>
-	<notification name="UnableAddItem">
-		Objekt konnte nicht hinzugefügt werden.
-	</notification>
-	<notification name="UnableEditItem">
-		Kein Bearbeiten möglich.
-	</notification>
-	<notification name="NoPermToEdit">
-		Bearbeiten nicht gestattet.
-	</notification>
-	<notification name="NoPermToCopyInventory">
-		Kopieren dieses Inventars nicht gestattet.
-	</notification>
-	<notification name="CantSaveItemDoesntExist">
-		Kein Speichern in Objektinhalt möglich: Objekt nicht mehr vorhanden.
-	</notification>
-	<notification name="CantSaveItemAlreadyExists">
-		Kein Speichern in Objektinhalt möglich: Artikel mit diesem Namen ist bereits im Inventar vorhanden.
-	</notification>
-	<notification name="CantSaveModifyAttachment">
-		Kein Speichern in Objektinhalt möglich: Dadurch würden die Anhängeberechtigungen geändert.
-	</notification>
-	<notification name="TooManyScripts">
-		Zu viele Skripts.
-	</notification>
-	<notification name="UnableAddScript">
-		Skript konnte nicht hinzugefügt werden.
-	</notification>
-	<notification name="AssetServerTimeoutObjReturn">
-		Asset-Server hat nicht rechtzeitig reagiert.  Objekt wurde zum Sim zurückübertragen.
-	</notification>
-	<notification name="RegionDisablePhysicsShapes">
-		In dieser Region sind keine Physikformen aktiviert.
-	</notification>
-	<notification name="NoModNavmeshAcrossRegions">
-		Sie können das Navmesh nicht regionsübergreifend modifizieren.
-	</notification>
-	<notification name="NoSetPhysicsPropertiesOnObjectType">
-		Für diesen Objekttyp können keine Physikeigenschaften gesetzt werden.
-	</notification>
-	<notification name="NoSetRootPrimWithNoShape">
-		Hauptprim kann nicht auf formlos eingestellt werden.
-	</notification>
-	<notification name="NoRegionSupportPhysMats">
-		In dieser Region sind keine Physikmaterialien aktiviert.
-	</notification>
-	<notification name="OnlyRootPrimPhysMats">
-		Nur bei Hauptprims können die Physikmaterialien angepasst werden.
-	</notification>
-	<notification name="NoSupportCharacterPhysMats">
-		Die Anwendung von Physikmaterialien auf Personen wird noch nicht unterstützt.
-	</notification>
-	<notification name="InvalidPhysMatProperty">
-		Eine oder mehrere der angegebenen Eigenschaften für Physikmaterialien waren ungültig.
-	</notification>
-	<notification name="NoPermsAlterStitchingMeshObj">
-		Sie können den Nahttyp eines Mesh-Objekts nicht ändern.
-	</notification>
-	<notification name="NoPermsAlterShapeMeshObj">
-		Sie können die Form eines Mesh-Objekts nicht ändern.
-	</notification>
-	<notification name="FullRegionCantEnter">
-		Sie können diese Region nicht betreten, \nda die Region voll ist.
-	</notification>
-	<notification name="LinkFailedOwnersDiffer">
-		Verknüpfungsfehler – Eigentümer sind unterschiedlich
-	</notification>
-	<notification name="LinkFailedNoModNavmeshAcrossRegions">
-		Verknüpfungsfehler – Navmesh kann nicht regionsübergreifend modifiziert werden.
-	</notification>
-	<notification name="LinkFailedNoPermToEdit">
-		Verknüpfungsfehler, da Sie keine Berechtigung zum Bearbeiten haben.
-	</notification>
-	<notification name="LinkFailedTooManyPrims">
-		Verknüpfungsfehler – zu viele Primitive
-	</notification>
-	<notification name="LinkFailedCantLinkNoCopyNoTrans">
-		Verknüpfungsfehler – nichtkopierfähige Objekte können nicht mit nichtübertragungsfähigen Objekten verknüpft werden
-	</notification>
-	<notification name="LinkFailedNothingLinkable">
-		Verknüpfungsfehler – nichts zum Verknüpfen vorhanden.
-	</notification>
-	<notification name="LinkFailedTooManyPathfindingChars">
-		Verknüpfungsfehler – zu viele Pathfinding-Figuren
-	</notification>
-	<notification name="LinkFailedInsufficientLand">
-		Verknüpfungsfehler – nicht genügend Landressourcen
-	</notification>
-	<notification name="LinkFailedTooMuchPhysics">
-		Objekt verwendet zu viele Physikressourcen – seine Dynamik wurde deaktiviert.
-	</notification>
-	<notification name="TeleportedHomeByObjectOnParcel">
-		Sie wurden vom Objekt „[OBJECT_NAME]“ auf der Parzelle „[PARCEL_NAME]“ nach Hause teleportiert
-	</notification>
-	<notification name="TeleportedHomeByObject">
-		Sie wurden von Objekt „[OBJECT_NAME]“ nach Hause teleportiert.
-	</notification>
-	<notification name="TeleportedByAttachment">
-		Sie wurden von einem Anhang an [ITEM_ID] teleportiert
-	</notification>
-	<notification name="TeleportedByObjectOnParcel">
-		Sie wurden von Objekt „[OBJECT_NAME]“ auf der Parzelle „[PARCEL_NAME]“ teleportiert
-	</notification>
-	<notification name="TeleportedByObjectOwnedBy">
-		Sie wurden von Objekt „[OBJECT_NAME]“, das [OWNER_ID] gehört, teleportiert
-	</notification>
-	<notification name="TeleportedByObjectUnknownUser">
-		Sie wurden von Objekt „[OBJECT_NAME]“, das einem unbekannten Benutzer gehört, teleportiert.
-	</notification>
-	<notification name="CantCreateObjectRegionFull">
-		Angefordertes Objekt kann nicht erstellt werden. Die Region ist voll.
-	</notification>
-	<notification name="CantAttackMultipleObjOneSpot">
-		Sie können nicht mehrere Objekte an ein und derselben Stelle anhängen.
-	</notification>
-	<notification name="CantCreateMultipleObjAtLoc">
-		Sie können hier nicht mehrere Objekte erstellen.
-	</notification>
-	<notification name="UnableToCreateObjTimeOut">
-		Angefordertes Objekt kann nicht erstellt werden. Objekt fehlt in Datenbank.
-	</notification>
-	<notification name="UnableToCreateObjUnknown">
-		Angefordertes Objekt kann nicht erstellt werden. Zeitüberschreitung bei Anforderung. Versuchen Sie es erneut.
-	</notification>
-	<notification name="UnableToCreateObjMissingFromDB">
-		Angefordertes Objekt kann nicht erstellt werden. Versuchen Sie es erneut.
-	</notification>
-	<notification name="RezFailureTookTooLong">
-		Fehler beim Rezzen; Laden des angeforderten Objekts hat zu lang gedauert.
-	</notification>
-	<notification name="FailedToPlaceObjAtLoc">
-		Objekt konnte nicht an angegebenem Ort platziert werden.  Versuchen Sie es erneut.
-	</notification>
-	<notification name="CantCreatePlantsOnLand">
-		Auf diesem Land können keine Pflanzen erstellt werden.
-	</notification>
-	<notification name="CantRestoreObjectNoWorldPos">
-		Objekt kann nicht wiederhergestellt werden. Keine Weltposition gefunden.
-	</notification>
-	<notification name="CantRezObjectInvalidMeshData">
-		Objekt kann nicht gerezzt werden, da seine Meshdaten ungültig sind.
-	</notification>
-	<notification name="CantRezObjectTooManyScripts">
-		Objekt kann nicht gerezzt werden, da die Region bereits zu viele Skripts aufweist.
-	</notification>
-	<notification name="CantCreateObjectNoAccess">
-		Ihr Zugangsberechtigungen gestatten nicht das Erstellen von Objekten an dieser Stelle.
-	</notification>
-	<notification name="CantCreateObject">
-		Sie können gegenwärtig keine Objekte erstellen.
-	</notification>
-	<notification name="InvalidObjectParams">
-		Ungültige Objektparameter
-	</notification>
-	<notification name="CantDuplicateObjectNoAcess">
-		Ihre Zugangsberechtigungen gestatten nicht das Duplizieren von Objekten an dieser Stelle.
-	</notification>
-	<notification name="CantChangeShape">
-		Sie können diese Form nicht ändern.
-	</notification>
-	<notification name="NoAccessToClaimObjects">
-		Ihr Zugangsberechtigungen gestatten nicht das Beanspruchen von Objekten an dieser Stelle.
-	</notification>
-	<notification name="DeedFailedNoPermToDeedForGroup">
-		Übertragung fehlgeschlagen, da Sie keine Berechtigung zum Übertragen von Objekten für Ihre Gruppe haben.
-	</notification>
-	<notification name="NoPrivsToBuyObject">
-		Ihr Zugangsberechtigungen gestatten nicht das Kaufen von Objekten an dieser Stelle.
-	</notification>
-	<notification name="CantAttachObjectAvatarSittingOnIt">
-		Objekt kann nicht angehängt werden, da ein Avatar darauf sitzt.
-	</notification>
-	<notification name="WhyAreYouTryingToWearShrubbery">
-		Bäume und Gräser können nicht als Anhänge getragen werden.
-	</notification>
-	<notification name="CantAttachGroupOwnedObjs">
-		Objekte im Gruppenbesitz können nicht angehängt werden.
-	</notification>
-	<notification name="CantAttachObjectsNotOwned">
-		Objekte, die Ihnen nicht gehören, können nicht angehängt werden.
-	</notification>
-	<notification name="CantAttachNavmeshObjects">
-		Objekte, die zum Navmesh beitragen, können nicht angehängt werden.
-	</notification>
-	<notification name="CantAttachObjectNoMovePermissions">
-		Objekt kann nicht angehängt werden, weil Sie es nicht verschieben dürfen.
-	</notification>
-	<notification name="CantAttachNotEnoughScriptResources">
-		Nicht genügend Skriptressourcen verfügbar, um Objekt anzuhängen.
-	</notification>
-	<notification name="CantDropItemTrialUser">
-		Ablegen von Objekten hier nicht möglich; versuchen Sie es mit dem kostenlosen Testbereich.
-	</notification>
-	<notification name="CantDropMeshAttachment">
-		Sie können keine Mesh-Anhänge ablegen. In Inventar zurückführen und inworld rezzen.
-	</notification>
-	<notification name="CantDropAttachmentNoPermission">
-		Anhang konnte nicht abgelegt werden: Ihnen fehlt die Berechtigung zum Ablegen an dieser Stelle.
-	</notification>
-	<notification name="CantDropAttachmentInsufficientLandResources">
-		Anhang konnte nicht abgelegt werden: nicht genügend Landressourcen verfügbar.
-	</notification>
-	<notification name="CantDropAttachmentInsufficientResources">
-		Anhänge konnten nicht abgelegt werden: nicht genügend Ressourcen.
-	</notification>
-	<notification name="CantDropObjectFullParcel">
-		Objekt kann nicht hier abgelegt werden.  Die Parzelle ist voll.
-	</notification>
-	<notification name="CantTouchObjectBannedFromParcel">
-		Dieses Objekt kann nicht berührt/angefasst werden, da Sie von der Landparzelle verbannt sind.
-	</notification>
-	<notification name="PlzNarrowDeleteParams">
-		Grenzen Sie Ihre Löschparameter ein.
-	</notification>
-	<notification name="UnableToUploadAsset">
-		Asset kann nicht hochgeladen werden.
-	</notification>
-	<notification name="CantTeleportCouldNotFindUser">
-		Keinen Benutzer zum Teleportieren nach Hause gefunden
-	</notification>
-	<notification name="GodlikeRequestFailed">
-		Anforderdung nach übernatürlichen Kräften fehlgeschlagen
-	</notification>
-	<notification name="GenericRequestFailed">
-		generische Anforderdung fehlgeschlagen
-	</notification>
-	<notification name="CantUploadPostcard">
-		Postkarte kann nicht hochgeladen werden.  Versuchen Sie es später erneut.
-	</notification>
-	<notification name="CantFetchInventoryForGroupNotice">
-		Inventardetails für Gruppenmitteilung kann nicht abgerufen werden.
-	</notification>
-	<notification name="CantSendGroupNoticeNotPermitted">
-		Gruppenmitteilung kann nicht gesendet werden – Vorgang nicht gestattet.
-	</notification>
-	<notification name="CantSendGroupNoticeCantConstructInventory">
-		Gruppenmitteilung kann nicht gesendet werden – Bauen von Inventar nicht möglich.
-	</notification>
-	<notification name="CantParceInventoryInNotice">
-		Inventar in Mitteilung kann nicht geparst werden.
-	</notification>
-	<notification name="TerrainUploadFailed">
-		Fehler beim Hochladen von Terrain.
-	</notification>
-	<notification name="TerrainFileWritten">
-		Terraindatei geschrieben.
-	</notification>
-	<notification name="TerrainFileWrittenStartingDownload">
-		Terraindatei geschrieben, Download beginnt...
-	</notification>
-	<notification name="TerrainBaked">
-		Terrain geformt.
-	</notification>
-	<notification name="TenObjectsDisabledPlzRefresh">
-		Nur die ersten 10 ausgewählten Objekte wurden deaktiviert. Aktualisieren Sie die Anzeige und wählen Sie ggf. weitere Objekte aus.
-	</notification>
-	<notification name="UpdateViewerBuyParcel">
-		Um diese Parzelle zu kaufen, müssen Sie Ihren Viewer aktualisieren.
-	</notification>
-	<notification name="CantBuyParcelNotForSale">
-		Kein Kauf möglich; die ausgewählte Parzelle steht nicht zum Verkauf.
-	</notification>
-	<notification name="CantBuySalePriceOrLandAreaChanged">
-		Kein Kauf möglich, da sich der Verkaufspreis oder die Fläche geändert haben.
-	</notification>
-	<notification name="CantBuyParcelNotAuthorized">
-		Sie sind nicht der autorisierte Käufer dieser Parzelle.
-	</notification>
-	<notification name="CantBuyParcelAwaitingPurchaseAuth">
-		Sie können diese Parzelle nicht kaufen, da sie bereits auf Kaufauthorisierung wartet.
-	</notification>
-	<notification name="CantBuildOverflowParcel">
-		Sie können hier keine Objekte bauen, denn dies würde den Rahmen der Parzelle sprengen.
-	</notification>
-	<notification name="SelectedMultipleOwnedLand">
-		Sie haben Land mit unterschiedlichen Besitzern ausgewählt. Wählen Sie ein kleineres Gebiet aus und versuchen Sie es erneut.
-	</notification>
-	<notification name="CantJoinTooFewLeasedParcels">
-		Auswahl enthält nicht genügend gemietete Parzellen zum Zusammenlegen.
-	</notification>
-	<notification name="CantDivideLandMultipleParcelsSelected">
-		Land kann nicht geteilt werden.\nMehr als eine Parzelle ist ausgewählt.\nWählen Sie ein kleineres Stück Land aus.
-	</notification>
-	<notification name="CantDivideLandCantFindParcel">
-		Land kann nicht geteilt werden.\nParzelle nicht auffindbar.\nMelden Sie das Problem über „Hilfe“ -&gt; „Fehler melden“...
-	</notification>
-	<notification name="CantDivideLandWholeParcelSelected">
-		Land kann nicht geteilt werden. Die gesamte Parzelle ist ausgewählt.\nWählen Sie ein kleineres Stück Land aus.
-	</notification>
-	<notification name="LandHasBeenDivided">
-		Land wurde geteilt.
-	</notification>
-	<notification name="PassPurchased">
-		Sie haben einen Pass gekauft.
-	</notification>
-	<notification name="RegionDisallowsClassifieds">
-		Region lässt keine Werbung zu.
-	</notification>
-	<notification name="LandPassExpireSoon">
-		Ihr Pass für dieses Land läuft demnächst ab.
-	</notification>
-	<notification name="CantSitNoSuitableSurface">
-		Keine geeignete Oberfläche zum Sitzen; probieren Sie es an einer anderen Stelle.
-	</notification>
-	<notification name="CantSitNoRoom">
-		Kein Platz zum Hinsetzen; probieren Sie es an einer anderen Stelle.
-	</notification>
-	<notification name="ClaimObjectFailedNoPermission">
-		Objektbeanspruchung fehlgeschlagen, da Sie keine Berechtigung haben.
-	</notification>
-	<notification name="ClaimObjectFailedNoMoney">
-		Objektbeanspruchung fehlgeschlagen, da Sie nicht genügend L$ haben.
-	</notification>
-	<notification name="CantDeedGroupLand">
-		Land in Gruppenbesitz kann nicht übertragen werden.
-	</notification>
-	<notification name="BuyObjectFailedNoMoney">
-		Objektkauf fehlgeschlagen, da Sie nicht genügend L$ haben.
-	</notification>
-	<notification name="BuyInventoryFailedNoMoney">
-		Inventarkauf fehlgeschlagen, da Sie nicht genügend L$ haben.
-	</notification>
-	<notification name="BuyPassFailedNoMoney">
-		Sie haben nicht genügend L$, um einen Pass für dieses Land zu kaufen.
-	</notification>
-	<notification name="CantBuyPassTryAgain">
-		Passkauf momentan nicht möglich.  Versuchen Sie es später erneut.
-	</notification>
-	<notification name="CantCreateObjectParcelFull">
-		Objekt kann nicht erstellt werden, \nda die Parzelle voll ist.
-	</notification>
-	<notification name="FailedPlacingObject">
-		Objekt konnte nicht an festgelegtem Ort platziert werden.  Versuchen Sie es erneut.
-	</notification>
-	<notification name="CantCreateLandmarkForEvent">
-		Landmarke für dieses Ereignis kann nicht erstellt werden.
-	</notification>
-	<notification name="GodBeatsFreeze">
-		Ihre übernatürlichen Kräfte heben das Einfrieren auf!
-	</notification>
-	<notification name="SpecialPowersRequestFailedLogged">
-		Anforderung nach Superpower fehlgeschlagen. Diese Anforderung wurde protokolliert.
-	</notification>
-	<notification name="ExpireExplanation">
-		Das System kann Ihre Anfrage momentan nicht verarbeiten. Zeitüberschreitung bei Anforderung.
-	</notification>
-	<notification name="DieExplanation">
-		Das System kann Ihre Anfrage nicht verarbeiten.
-	</notification>
-	<notification name="AddPrimitiveFailure">
-		Sie haben nicht genügend Geld, um Primitive zu erstellen.
-	</notification>
-	<notification name="RezObjectFailure">
-		Sie haben nicht genügend Geld, um Objekt zu erstellen.
-	</notification>
-	<notification name="ResetHomePositionNotLegal">
-		Zuhause-Position neu festlegen, da Zuhause nicht zulässig war.
-	</notification>
-	<notification name="CantInviteRegionFull">
-		Sie können gegenwärtig niemanden an Ihren Standort einladen, da die Region voll ist. Versuchen Sie es später erneut.
-	</notification>
-	<notification name="CantSetHomeAtRegion">
-		Diese Region gestattet nicht, dass Sie hier Ihr Zuhause festlegen.
-	</notification>
-	<notification name="ListValidHomeLocations">
-		Ihr Zuhause kann sich nur auf Ihrem eigenen Land oder in einem Infohub auf dem Mainland befinden.
-	</notification>
-	<notification name="SetHomePosition">
-		Position für Zuhause festgelegt.
-	</notification>
-	<notification name="CantDerezInventoryError">
-		Aufgrund eines Inventarfehlers kann das Rezzen dieses Objekts nicht aufgehoben werden.
-	</notification>
-	<notification name="CantCreateRequestedInv">
-		Angefordertes Inventar kann nicht erstellt werden.
-	</notification>
-	<notification name="CantCreateRequestedInvFolder">
-		Angeforderter Inventarordner kann nicht erstellt werden.
-	</notification>
-	<notification name="CantCreateInventory">
-		Dieses Inventar kann nicht erstellt werden.
-	</notification>
-	<notification name="CantCreateLandmark">
-		Landmarke kann nicht erstellt werden.
-	</notification>
-	<notification name="CantCreateOutfit">
-		Im Moment kann kein Outfit erstellt werden. Versuchen Sie es gleich noch einmal.
-	</notification>
-	<notification name="InventoryNotForSale">
-		Inventar steht nicht zum Verkauf.
-	</notification>
-	<notification name="CantFindInvItem">
-		Inventarobjekt kann nicht gefunden werden.
-	</notification>
-	<notification name="CantFindObject">
-		Objekt kann nicht gefunden werden.
-	</notification>
-	<notification name="CantTransfterMoneyRegionDisabled">
-		Geldüberweisungen an Objekte sind in dieser Region gegenwärtig deaktiviert.
-	</notification>
-	<notification name="CantPayNoAgent">
-		Nicht ersichtlich, wer bezahlt werden muss.
-	</notification>
-	<notification name="CantDonateToPublicObjects">
-		Sie können öffentlichen Objekten keine L$ geben.
-	</notification>
-	<notification name="InventoryCreationInWorldObjectFailed">
-		Inventarerstellung für Inworld-Objekt fehlgeschlagen.
-	</notification>
-	<notification name="UserBalanceOrLandUsageError">
-		Aufgrund eines internen Fehlers konnte Ihr Viewer nicht ordnungsgemäß aktualisiert werden.  Der in Ihrem Viewer angezeigte L$-Kontostand oder Parzellenbesitz stimmt möglicherweise nicht mit dem aktuellen Stand auf den Servern überein.
-	</notification>
-	<notification name="LargePrimAgentIntersect">
-		Große Prims, die sich mit anderen Spielern überschneiden, können nicht erstellt werden.  Bitte erneut versuchen, wenn sich die anderen Spieler bewegt haben.
-	</notification>
-	<notification name="PreferenceChatClearLog">
-		Dadurch werden die Protokolle vorheriger Unterhaltungen und alle Backups dieser Datei gelöscht.
-		<usetemplate ignoretext="Löschen des Protokolls vorheriger Unterhaltungen bestätigen." name="okcancelignore" notext="Abbrechen" yestext="OK"/>
-	</notification>
-	<notification name="PreferenceChatDeleteTranscripts">
-		Dadurch werden die Transkripte aller vorherigen Unterhaltungen gelöscht. Die Liste vergangener Unterhaltungen ist davon nicht betroffen. Alle Dateien mit den Suffixen .txt und txt.backup im Order [FOLDER] werden gelöscht.
-		<usetemplate ignoretext="Um Bestätigung bitten, bevor ich Transkripte lösche." name="okcancelignore" notext="Abbrechen" yestext="OK"/>
-	</notification>
-	<notification name="PreferenceChatPathChanged">
-		Dateien können nicht verschoben werden. Vorheriger Pfad wurde wiederhergestellt.
-		<usetemplate ignoretext="Dateien können nicht verschoben werden. Vorheriger Pfad wurde wiederhergestellt." name="okignore" yestext="OK"/>
-	</notification>
 </notifications>
diff --git a/indra/newview/skins/default/xui/de/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/de/panel_avatar_list_item.xml
index 79a2ebe9df9..dcfcffa6e2f 100644
--- a/indra/newview/skins/default/xui/de/panel_avatar_list_item.xml
+++ b/indra/newview/skins/default/xui/de/panel_avatar_list_item.xml
@@ -27,6 +27,5 @@
 	<icon name="permission_edit_mine_icon" tool_tip="Dieser Freund kann Ihre Objekte bearbeiten, löschen und an sich nehmen"/>
 	<icon name="permission_map_icon" tool_tip="Dieser Freund kann Sie auf der Karte finden"/>
 	<icon name="permission_online_icon" tool_tip="Dieser Freund kann sehen, wenn Sie online sind"/>
-	<button name="info_btn" tool_tip="Mehr Infos"/>
 	<button name="profile_btn" tool_tip="Profil anzeigen"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/de/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/de/panel_block_list_sidetray.xml
index c105a5b8a35..2d140515d4f 100644
--- a/indra/newview/skins/default/xui/de/panel_block_list_sidetray.xml
+++ b/indra/newview/skins/default/xui/de/panel_block_list_sidetray.xml
@@ -1,11 +1,10 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="block_list_panel" width="300">
-	<panel label="bottom_panel" name="blocked_buttons_panel">
-		<filter_editor label="Filtern" name="blocked_filter_input"/>
-		<menu_button name="blocked_gear_btn" tool_tip="Aktionen für ausgewählte(s) Person/Objekt"/>
-		<menu_button name="view_btn" tool_tip="Sortieroptionen"/>
-		<menu_button name="plus_btn" tool_tip="Einwohner oder Objekt zum ignorieren auswählen"/>
-		<button name="unblock_btn" tool_tip="Einwohner oder Objekt aus der Liste der ignorierten Einwohner oder Objekte entfernen"/>
-	</panel>
-	<block_list name="blocked" tool_tip="Liste der zur Zeit ignorierten Einwohner" width="290"/>
+	<text left_pad="5" name="title_text" width="260">
+		Liste der ignorierten Einwohner
+	</text>
+	<scroll_list name="blocked" tool_tip="Liste der zur Zeit ignorierten Einwohner" width="290"/>
+	<button label="Einwohner ignorieren" label_selected="Einwohner ignorieren..." name="Block resident..." tool_tip="Wählen Sie einen Einwohner, um ihn zu ignorieren"/>
+	<button label="Objekt nach Name ignorieren" label_selected="Objekt nach Name ignorieren..." name="Block object by name..." tool_tip="Ein Objekt auswählen, um nach Namen zu ignorieren."/>
+	<button label="Freischalten" label_selected="Freischalten" name="Unblock" tool_tip="Einwohner oder Objekt von der Liste der ignorierten Einwohner oder Objekte entfernen"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/de/panel_conversation_list_item.xml b/indra/newview/skins/default/xui/de/panel_conversation_list_item.xml
deleted file mode 100644
index a9bfe4754ee..00000000000
--- a/indra/newview/skins/default/xui/de/panel_conversation_list_item.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="conversation_list_item">
-	<layout_stack name="conversation_item_stack">
-		<layout_panel name="conversation_title_panel">
-			<text name="conversation_title" value="(laden)"/>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_conversation_log_list_item.xml b/indra/newview/skins/default/xui/de/panel_conversation_log_list_item.xml
deleted file mode 100644
index afeaa14e819..00000000000
--- a/indra/newview/skins/default/xui/de/panel_conversation_log_list_item.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="conversation_log_list_item">
-	<icon name="voice_session_icon" tool_tip="Enthielt eine Voice-Unterhaltung"/>
-	<icon name="unread_ims_icon" tool_tip="Nachrichten trafen ein, während Sie abgemeldet waren"/>
-	<button name="delete_btn" tool_tip="Diesen Eintrag entfernen"/>
-</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_group_list_item.xml b/indra/newview/skins/default/xui/de/panel_group_list_item.xml
index fc911a64dff..d097a2b18c3 100644
--- a/indra/newview/skins/default/xui/de/panel_group_list_item.xml
+++ b/indra/newview/skins/default/xui/de/panel_group_list_item.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="group_list_item">
 	<text name="group_name" value="Unbekannt"/>
-	<button name="info_btn" tool_tip="Mehr Infos"/>
 	<button name="profile_btn" tool_tip="Profil anzeigen"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/de/panel_people.xml b/indra/newview/skins/default/xui/de/panel_people.xml
index 8c05ca2c247..4e76147746c 100644
--- a/indra/newview/skins/default/xui/de/panel_people.xml
+++ b/indra/newview/skins/default/xui/de/panel_people.xml
@@ -14,53 +14,81 @@ Sie suchen nach Leuten? Verwenden Sie die [secondlife:///app/worldmap Karte].
 	<string name="no_filtered_friends_msg">
 		Sie haben nicht das Richtige gefunden? Versuchen Sie es mit der [secondlife:///app/search/people/[SEARCH_TERM] Suche].
 	</string>
+	<string name="people_filter_label" value="Nach Leuten filtern"/>
+	<string name="groups_filter_label" value="Nach Gruppen filtern"/>
 	<string name="no_filtered_groups_msg" value="Sie haben nicht das Richtige gefunden? Versuchen Sie es mit der [secondlife:///app/search/groups/[SEARCH_TERM] Suche]."/>
 	<string name="no_groups_msg" value="Suchen Sie nach Gruppen? Versuchen Sie es mit der [secondlife:///app/search/groups Suche]."/>
 	<string name="MiniMapToolTipMsg" value="[REGION](Doppelklicken, um Karte zu öffnen; Umschalttaste gedrückt halten und ziehen, um zu schwenken)"/>
 	<string name="AltMiniMapToolTipMsg" value="[REGION](Doppelklicken, um zu teleportieren; Umschalttaste gedrückt halten und ziehen, um zu schwenken)"/>
+	<filter_editor label="Filter" name="filter_input"/>
 	<tab_container name="tabs">
 		<panel label="IN DER NÄHE" name="nearby_panel">
-			<panel label="bottom_panel" name="nearby_buttons_panel">
-				<filter_editor label="Nach Personen filtern" name="nearby_filter_input"/>
-				<button name="gear_btn" tool_tip="Aktionen für ausgewählte Person"/>
-				<menu_button name="nearby_view_btn" tool_tip="Anzeige-/Sortieroptionen"/>
-				<button name="add_friend_btn" tool_tip="Einem Einwohner die Freundschaft anbieten"/>
-				<dnd_button name="nearby_del_btn" tool_tip="Ausgewählte Person als Freund entfernen"/>
+			<panel label="bottom_panel" name="bottom_panel">
+				<menu_button name="nearby_view_sort_btn" tool_tip="Optionen"/>
+				<button name="add_friend_btn" tool_tip="Ausgewählten Einwohner zur Freundeliste hinzufügen"/>
 			</panel>
 		</panel>
-		<panel label="FREUNDE" name="friends_panel">
-			<panel label="bottom_panel" name="friends_buttons_panel">
-				<filter_editor label="Nach Personen filtern" name="friends_filter_input"/>
-				<button name="gear_btn" tool_tip="Aktionen für ausgewählte Person"/>
-				<menu_button name="friends_view_btn" tool_tip="Anzeige-/Sortieroptionen"/>
-				<button name="friends_add_btn" tool_tip="Einem Einwohner die Freundschaft anbieten"/>
-				<dnd_button name="friends_del_btn" tool_tip="Ausgewählte Person als Freund entfernen"/>
-			</panel>
+		<panel label="MEINE FREUNDE" name="friends_panel">
 			<accordion name="friends_accordion">
 				<accordion_tab name="tab_online" title="Online"/>
 				<accordion_tab name="tab_all" title="Alle"/>
 			</accordion>
+			<panel label="bottom_panel" name="bottom_panel">
+				<layout_stack name="bottom_panel">
+					<layout_panel name="options_gear_btn_panel">
+						<menu_button name="friends_viewsort_btn" tool_tip="Zusätzliche Optionen anzeigen"/>
+					</layout_panel>
+					<layout_panel name="add_btn_panel">
+						<button name="add_btn" tool_tip="Bieten Sie einem Einwohner die Freundschaft an"/>
+					</layout_panel>
+					<layout_panel name="trash_btn_panel">
+						<dnd_button name="del_btn" tool_tip="Ausgewählte Person aus Ihrer Freundesliste entfernen"/>
+					</layout_panel>
+				</layout_stack>
+			</panel>
 		</panel>
-		<panel label="GRUPPEN" name="groups_panel">
-			<panel label="bottom_panel" name="groups_buttons_panel">
-				<filter_editor label="Nach Gruppen filtern" name="groups_filter_input"/>
-				<menu_button name="groups_gear_btn" tool_tip="Aktionen für ausgewählte Gruppe"/>
-				<menu_button name="groups_view_btn" tool_tip="Anzeige-/Sortieroptionen"/>
-				<menu_button name="plus_btn" tool_tip="Gruppe beitreten/Neue Gruppe erstellen"/>
-				<dnd_button name="minus_btn" tool_tip="Ausgewählte Gruppe verlassen"/>
+		<panel label="MEINE GRUPPEN" name="groups_panel">
+			<panel label="bottom_panel" name="bottom_panel">
+				<menu_button name="groups_viewsort_btn" tool_tip="Optionen"/>
+				<button name="plus_btn" tool_tip="Gruppe beitreten/Neue Gruppe erstellen"/>
+				<button name="activate_btn" tool_tip="Ausgewählte Gruppe aktivieren"/>
 			</panel>
 		</panel>
 		<panel label="AKTUELL" name="recent_panel">
-			<panel label="bottom_panel" name="recent_buttons_panel">
-				<filter_editor label="Nach Personen filtern" name="recent_filter_input"/>
-				<button name="gear_btn" tool_tip="Aktionen für ausgewählte Person"/>
-				<menu_button name="recent_view_btn" tool_tip="Anzeige-/Sortieroptionen"/>
-				<button name="add_friend_btn" tool_tip="Einem Einwohner die Freundschaft anbieten"/>
-				<dnd_button name="recent_del_btn" tool_tip="Ausgewählte Person als Freund entfernen"/>
+			<panel label="bottom_panel" name="bottom_panel">
+				<menu_button name="recent_viewsort_btn" tool_tip="Optionen"/>
+				<button name="add_friend_btn" tool_tip="Ausgewählten Einwohner zur Freundeliste hinzufügen"/>
 			</panel>
 		</panel>
-		<panel label="IGNORIERT" name="blocked_panel">
-			<panel label="Ignorierte Einwohner und Objekte" name="panel_block_list_sidetray"/>
-		</panel>
 	</tab_container>
+	<panel name="button_bar">
+		<layout_stack name="bottom_bar_ls">
+			<layout_panel name="view_profile_btn_lp">
+				<button label="Profil" name="view_profile_btn" tool_tip="Bilder, Gruppen und andere Einwohner-Informationen anzeigen"/>
+			</layout_panel>
+			<layout_panel name="im_btn_lp">
+				<button label="IM" name="im_btn" tool_tip="IM-Sitzung öffnen"/>
+			</layout_panel>
+			<layout_panel name="call_btn_lp">
+				<button label="Anrufen" name="call_btn" tool_tip="Diesen Einwohner anrufen"/>
+			</layout_panel>
+			<layout_panel name="share_btn_lp">
+				<button label="Freigeben" name="share_btn" tool_tip="Inventarobjekt freigeben"/>
+			</layout_panel>
+			<layout_panel name="teleport_btn_lp">
+				<button label="Teleportieren" name="teleport_btn" tool_tip="Teleport anbieten"/>
+			</layout_panel>
+		</layout_stack>
+		<layout_stack name="bottom_bar_ls1">
+			<layout_panel name="group_info_btn_lp">
+				<button label="Gruppenprofil" name="group_info_btn" tool_tip="Gruppeninformationen anzeigen"/>
+			</layout_panel>
+			<layout_panel name="chat_btn_lp">
+				<button label="Gruppen-Chat" name="chat_btn" tool_tip="Chat öffnen"/>
+			</layout_panel>
+			<layout_panel name="group_call_btn_lp">
+				<button label="Gruppe anrufen" name="group_call_btn" tool_tip="Diese Gruppe anrufen"/>
+			</layout_panel>
+		</layout_stack>
+	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/de/panel_preferences_chat.xml b/indra/newview/skins/default/xui/de/panel_preferences_chat.xml
index 8193fd42c11..c9ae3501473 100644
--- a/indra/newview/skins/default/xui/de/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/de/panel_preferences_chat.xml
@@ -1,86 +1,34 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Text-Chat" name="chat">
-	<panel>
-		<check_box initial_value="true" label="Beim Chatten Tippanimation abspielen" name="play_typing_animation"/>
-		<check_box label="IMs per Email zuschicken, wenn ich offline bin" name="send_im_to_email"/>
-		<check_box label="Nur IMs und Anrufe von Freunden oder Gruppen durchstellen" name="voice_call_friends_only_check"/>
-		<text name="font_size">
-			Schriftgröße:
-		</text>
-		<combo_box name="chat_font_size">
-			<item label="Klein" name="Small" value="0"/>
-			<item label="Mittel" name="Medium" value="1"/>
-			<item label="Groß" name="Large" value="2"/>
-		</combo_box>
-		<check_box label="Blasen-Chat" name="bubble_text_chat"/>
-	</panel>
-	<panel>
-		<text name="notifications">
-			Benachrichtigungen
-		</text>
-		<text name="friend_ims">
-			IMs von Freunden:
-		</text>
-		<combo_box name="FriendIMOptions">
-			<item label="Unterhaltungsfenster öffnen" name="OpenConversationsWindow" value="openconversations"/>
-			<item label="Nachricht in Popup anzeigen" name="PopUpMessage" value="toast"/>
-			<item label="Flash-Symbolleistenschaltfläche" name="FlashToolbarButton" value="flash"/>
-			<item label="None" name="None" value="none"/>
-		</combo_box>
-		<text name="non_friend_ims">
-			IMs von anderen:
-		</text>
-		<combo_box name="NonFriendIMOptions">
-			<item label="Unterhaltungsfenster öffnen" name="OpenConversationsWindow" value="openconversations"/>
-			<item label="Nachricht in Popup anzeigen" name="PopUpMessage" value="toast"/>
-			<item label="Flash-Symbolleistenschaltfläche" name="FlashToolbarButton" value="flash"/>
-			<item label="None" name="None" value="none"/>
-		</combo_box>
-		<text name="conference_ims">
-			Konferenz-IMs:
-		</text>
-		<combo_box name="ConferenceIMOptions">
-			<item label="Unterhaltungsfenster öffnen" name="OpenConversationsWindow" value="openconversations"/>
-			<item label="Nachricht in Popup anzeigen" name="PopUpMessage" value="toast"/>
-			<item label="Flash-Symbolleistenschaltfläche" name="FlashToolbarButton" value="flash"/>
-			<item label="None" name="None" value="none"/>
-		</combo_box>
-		<text name="group_chat">
-			Gruppen-Chat:
-		</text>
-		<combo_box name="GroupChatOptions">
-			<item label="Unterhaltungsfenster öffnen" name="OpenConversationsWindow" value="openconversations"/>
-			<item label="Nachricht in Popup anzeigen" name="PopUpMessage" value="toast"/>
-			<item label="Flash-Symbolleistenschaltfläche" name="FlashToolbarButton" value="flash"/>
-			<item label="None" name="None" value="none"/>
-		</combo_box>
-		<text name="nearby_chat">
-			Chat in der Nähe:
-		</text>
-		<combo_box name="NearbyChatOptions">
-			<item label="Unterhaltungsfenster öffnen" name="OpenConversationsWindow" value="openconversations"/>
-			<item label="Nachricht in Popup anzeigen" name="PopUpMessage" value="toast"/>
-			<item label="Flash-Symbolleistenschaltfläche" name="FlashToolBarButton" value="flash"/>
-			<item label="None" name="None" value="none"/>
-		</combo_box>
-		<text name="notifications_alert">
-			Um vorübergehend alle Benachrichtigungen zu stoppen, wählen Sie „Unterhalten“ &gt; „Nicht stören“.
-		</text>
-	</panel>
-	<panel>
-		<text name="play_sound">
-			Sound abspielen:
-		</text>
-		<check_box label="Neue Unterhaltung" name="new_conversation"/>
-		<check_box label="Eingehender Anruf..." name="incoming_voice_call"/>
-		<check_box label="Teleport-Angebot" name="teleport_offer"/>
-		<check_box label="Inventarangebot" name="inventory_offer"/>
-	</panel>
-	<panel>
-		<button label="Protokoll löschen..." name="clear_log"/>
-		<button label="Protokolle löschen..." name="delete_transcripts"/>
-		<button label="Durchsuchen..." label_selected="Durchsuchen" name="log_path_button"/>
-	</panel>
+	<text name="font_size">
+		Schriftgröße:
+	</text>
+	<radio_group name="chat_font_size">
+		<radio_item label="Klein" name="radio" value="0"/>
+		<radio_item label="Mittel" name="radio2" value="1"/>
+		<radio_item label="Groß" name="radio3" value="2"/>
+	</radio_group>
+	<check_box initial_value="true" label="Beim Chatten Tippanimation abspielen" name="play_typing_animation"/>
+	<check_box label="IMs per Email zuschicken, wenn ich offline bin" name="send_im_to_email"/>
+	<check_box label="Kompakten IM- und Text-Chatverlauf aktivieren" name="plain_text_chat_history"/>
+	<check_box label="Blasen-Chat" name="bubble_text_chat"/>
+	<text name="show_ims_in_label">
+		IMs anzeigen in:
+	</text>
+	<text name="requires_restart_label">
+		(Neustart erforderlich)
+	</text>
+	<radio_group name="chat_window" tool_tip="Zeigen Sie Ihre Sofortnachrichten (Instant Messages) in einem anderen Fenster oder in einem einzigen Fenster mit vielen Registerkarten an (Neustart erforderlich).">
+		<radio_item label="Getrennte Fenster" name="radio" value="0"/>
+		<radio_item label="Registerkarten" name="radio2" value="1"/>
+	</radio_group>
+	<text name="disable_toast_label">
+		Popups für eingehende Chats aktivieren:
+	</text>
+	<check_box label="Gruppen-Chats" name="EnableGroupChatPopups" tool_tip="Markieren, um Popups zu sehen, wenn Gruppen-Chat-Message eintrifft"/>
+	<check_box label="IM-Chats" name="EnableIMChatPopups" tool_tip="Markieren, um Popups zu sehen, wenn Instant Message eintrifft"/>
+	<spinner label="Lebenszeit von Toasts für Chat in der Nähe:" name="nearby_toasts_lifetime"/>
+	<spinner label="Ein-/Ausblenddauer von Toasts für Chat in der Nähe:" name="nearby_toasts_fadingtime"/>
 	<button label="Ãœbersetzen..." name="ok_btn"/>
 	<button label="Automatisch ersetzen..." name="autoreplace_showgui"/>
 	<button label="Rechtschreibprüfung..." name="spellcheck_showgui"/>
diff --git a/indra/newview/skins/default/xui/de/panel_preferences_general.xml b/indra/newview/skins/default/xui/de/panel_preferences_general.xml
index 4e453b6969f..979ccba48d1 100644
--- a/indra/newview/skins/default/xui/de/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/de/panel_preferences_general.xml
@@ -69,9 +69,9 @@
 		<combo_box.item label="nie" name="item4"/>
 	</combo_box>
 	<text name="text_box3">
-		Nicht-stören-Antwort:
+		Antwort, wenn im „Beschäftigt“-Modus:
 	</text>
-	<text_editor name="do_not_disturb_response">
+	<text_editor name="busy_response">
 		log_in_to_change
 	</text_editor>
 </panel>
diff --git a/indra/newview/skins/default/xui/de/sidepanel_task_info.xml b/indra/newview/skins/default/xui/de/sidepanel_task_info.xml
index 29239033fe9..4c8d77d336a 100644
--- a/indra/newview/skins/default/xui/de/sidepanel_task_info.xml
+++ b/indra/newview/skins/default/xui/de/sidepanel_task_info.xml
@@ -72,7 +72,6 @@
 			<combo_box.item label="Objekt kaufen" name="Buyobject"/>
 			<combo_box.item label="Objekt bezahlen" name="Payobject"/>
 			<combo_box.item label="Öffnen" name="Open"/>
-			<combo_box.item label="Zoomen" name="Zoom"/>
 		</combo_box>
 		<panel name="perms_inv">
 			<text name="perm_modify">
diff --git a/indra/newview/skins/default/xui/de/strings.xml b/indra/newview/skins/default/xui/de/strings.xml
index e142cb80296..79cb73ecf97 100644
--- a/indra/newview/skins/default/xui/de/strings.xml
+++ b/indra/newview/skins/default/xui/de/strings.xml
@@ -137,7 +137,7 @@
 		Beenden
 	</string>
 	<string name="create_account_url">
-		http://join.secondlife.com/?sourceid=[sourceid]
+		http://join.secondlife.com/index.php?lang=de-DE&amp;sourceid=[sourceid]
 	</string>
 	<string name="LoginFailedViewerNotPermitted">
 		Mit dem von Ihnen verwendeten Viewer ist der Zugriff auf Second Life nicht mehr möglich. Laden Sie von den folgenden Seite einen neuen Viewer herunter:
@@ -622,8 +622,8 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden.
 	<string name="AvatarAway">
 		Abwesend
 	</string>
-	<string name="AvatarDoNotDisturb">
-		Nicht stören
+	<string name="AvatarBusy">
+		Beschäftigt
 	</string>
 	<string name="AvatarMuted">
 		Ignoriert
@@ -859,12 +859,6 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden.
 	<string name="ST_NO_JOINT">
 		HAUPTVERZEICHNIS oder VERBINDUNG nicht gefunden.
 	</string>
-	<string name="NearbyChatTitle">
-		Chat in der Nähe
-	</string>
-	<string name="NearbyChatLabel">
-		(Chat in der Nähe)
-	</string>
 	<string name="whisper">
 		flüstert:
 	</string>
@@ -928,15 +922,12 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden.
 	<string name="ControlYourCamera">
 		Kamerasteuerung
 	</string>
-	<string name="NotConnected">
-		Nicht verbunden
-	</string>
-	<string name="AgentNameSubst">
-		(Sie)
-	</string>
 	<string name="TeleportYourAgent">
 		Sie teleportieren
 	</string>
+	<string name="NotConnected">
+		Nicht verbunden
+	</string>
 	<string name="SIM_ACCESS_PG">
 		Generell
 	</string>
@@ -1018,6 +1009,18 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden.
 	<string name="dictionary_files">
 		Wörterbücher
 	</string>
+	<string name="AvatarSetNotAway">
+		Nicht abwesend
+	</string>
+	<string name="AvatarSetAway">
+		Abwesend
+	</string>
+	<string name="AvatarSetNotBusy">
+		Nicht beschäftigt
+	</string>
+	<string name="AvatarSetBusy">
+		Beschäftigt
+	</string>
 	<string name="shape">
 		Form
 	</string>
@@ -1986,8 +1989,8 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden.
 	<string name="PanelContentsNewScript">
 		Neues Skript
 	</string>
-	<string name="DoNotDisturbModeResponseDefault">
-		Dieser Einwohner hat den Nicht-stören-Modus aktiviert und wird Ihre Nachricht später sehen.
+	<string name="BusyModeResponseDefault">
+		Der Einwohner/Die Einwohnerin ist „beschäftigt”, d.h. er/sie möchte im Moment nicht gestört werden.  Ihre Nachricht wird dem Einwohner/der Einwohnerin als IM angezeigt, und kann später beantwortet werden.
 	</string>
 	<string name="MuteByName">
 		(Nach Namen)
@@ -2100,6 +2103,9 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden.
 	<string name="GroupMoneyDate">
 		[weekday,datetime,utc] [mth,datetime,utc] [day,datetime,utc], [year,datetime,utc]
 	</string>
+	<string name="ViewerObjectContents">
+		Inhalte
+	</string>
 	<string name="AcquiredItems">
 		Erworbene Artikel
 	</string>
@@ -3871,7 +3877,7 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_
 		Generelle Region
 	</string>
 	<string name="LocationCtrlSeeAVsTooltip">
-		Avatare in dieser Parzelle können von Avataren außerhalb dieser Parzelle weder gesehen noch gehört werden
+		Avatare sichtbar; Chat außerhalb dieser Parzelle gestattet
 	</string>
 	<string name="LocationCtrlPathfindingDirtyTooltip">
 		Bewegliche Objekte verhalten sich in dieser Region u. U. erst dann korrekt, wenn die Region neu geformt wird.
@@ -3948,12 +3954,6 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_
 	<string name="IM_unblock_only_groups_friends">
 		Wenn Sie diese Meldung sehen, müssen Sie unter „Einstellungen“ &gt; „Privatsphäre“ die Option „Nur IMs und Anrufe von Freunden oder Gruppen durchstellen“ deaktivieren.
 	</string>
-	<string name="OnlineStatus">
-		Online
-	</string>
-	<string name="OfflineStatus">
-		Offline
-	</string>
 	<string name="answered_call">
 		Ihr Anruf wurde entgegengenommen
 	</string>
@@ -3963,9 +3963,6 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_
 	<string name="you_joined_call">
 		Sie sind dem Gespräch beigetreten
 	</string>
-	<string name="you_auto_rejected_call-im">
-		Sie haben den Voice-Anruf automatisch abgelehnt, während der Nicht-stören-Modus aktiviert war.
-	</string>
 	<string name="name_started_call">
 		[NAME] hat einen Voice-Anruf begonnen
 	</string>
@@ -3982,7 +3979,7 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_
 		Wird verbunden...
 	</string>
 	<string name="conference-title">
-		Chat mit mehreren Personen
+		Ad-hoc-Konferenz
 	</string>
 	<string name="conference-title-incoming">
 		Konferenz mit [AGENT_NAME]
@@ -4862,9 +4859,6 @@ Setzen Sie den Editorpfad in Anführungszeichen
 	<string name="Command_Chat_Label">
 		Chat
 	</string>
-	<string name="Command_Conversations_Label">
-		Unterhaltungen
-	</string>
 	<string name="Command_Compass_Label">
 		Kompass
 	</string>
@@ -4940,9 +4934,6 @@ Setzen Sie den Editorpfad in Anführungszeichen
 	<string name="Command_Chat_Tooltip">
 		Mit Leuten in der Nähe chatten
 	</string>
-	<string name="Command_Conversations_Tooltip">
-		Mit allen unterhalten
-	</string>
 	<string name="Command_Compass_Tooltip">
 		Kompass
 	</string>
@@ -5072,13 +5063,4 @@ Setzen Sie den Editorpfad in Anführungszeichen
 	<string name="UserDictionary">
 		[Benutzer]
 	</string>
-	<string name="logging_calls_disabled_log_empty">
-		Unterhaltungen werden nicht protokolliert. Um ein Protokoll zu starten, wählen Sie „Speichern: nur Protokoll“ oder „Speichern: Protokoll und Transkripte“ unter „Einstellungen“ &gt; „Chat“.
-	</string>
-	<string name="logging_calls_disabled_log_not_empty">
-		Es werden keine Unterhaltungen mehr protokolliert. Um weiterhin ein Protokoll zu führen, wählen Sie „Speichern: nur Protokoll“ oder „Speichern: Protokoll und Transkripte“ unter „Einstellungen“ &gt; „Chat“.
-	</string>
-	<string name="logging_calls_enabled_log_empty">
-		Keine protokollierten Unterhaltungen verfügbar. Hier erscheint ein Protokolleintrag, wenn Sie eine Person kontaktieren oder von einer Person kontaktiert werden.
-	</string>
 </strings>
diff --git a/indra/newview/skins/default/xui/en/floater_im_session.xml b/indra/newview/skins/default/xui/en/floater_im_session.xml
index 3b56e974d21..2152a9f6e9a 100644
--- a/indra/newview/skins/default/xui/en/floater_im_session.xml
+++ b/indra/newview/skins/default/xui/en/floater_im_session.xml
@@ -70,23 +70,26 @@
      top="0"
      left="0"
      right="-1"
-     bottom="-1">
+     bottom="-3">
         <layout_stack
          animate="false" 
          default_tab_group="2"
          follows="all"
          right="-5"
          bottom="-1"
+         top="0"
+         left="5"
+         border_size="0"
          layout="topleft"
          orientation="vertical"
          name="main_stack"
-         tab_group="1"
-         top="0"
-         left="5">
+         tab_group="1">
             <layout_panel
              auto_resize="false"
              name="toolbar_panel"
-             height="35">
+             height="35"
+             right="-1"
+             left="1">
                 <menu_button
                  menu_filename="menu_im_session_showmodes.xml"
                  follows="top|left"
@@ -164,7 +167,7 @@
                  image_unselected="Toolbar_Middle_Off"
                  layout="topleft"
                  top="5"
-                 right="-70"
+                 right="-67"
                  name="close_btn"
                  tool_tip="End this conversation"
                  width="31" />
@@ -196,7 +199,8 @@
             </layout_panel>
             <layout_panel
              name="body_panel"
-             height="235">
+             top="1"
+             bottom="-1">
                 <layout_stack
                  default_tab_group="2"
                  follows="all"
@@ -213,12 +217,14 @@
                      min_dim="0"
                      width="150" 
                      user_resize="true"
-                     auto_resize="false" />
+                     auto_resize="false" 
+                     bottom="-1" />
                     <layout_panel
                      default_tab_group="3"
                      tab_group="2"
                      name="right_part_holder"
-                     min_width="221">
+                     min_width="221"
+                     bottom="-1">
                         <layout_stack
                          animate="true" 
                          default_tab_group="2"
@@ -262,21 +268,28 @@
                 </layout_stack>
             </layout_panel>
             <layout_panel
-             height="35"
+             top_delta="0"
+             top="0"
+             height="26"
+             bottom="-1"
              auto_resize="false"
              name="chat_layout_panel">
                 <layout_stack
                  animate="false"
                  default_tab_group="2"
                  follows="all"
-                 right="-1"
                  orientation="horizontal"
                  name="input_panels"
                  top="0"
-                 bottom="-1"
-                 left="0">
+                 bottom="-2"
+                 left="0"
+                 right="-1">
                     <layout_panel
-                     name="input_editor_layout_panel">
+                     name="input_editor_layout_panel"
+                     auto_resize="true"
+                     user_resize="false"
+                     top="0"
+                     bottom="-1">
                         <chat_editor
                          layout="topleft"
                          expand_lines_count="5"
@@ -289,27 +302,32 @@
                          max_length="1023"
                          spellcheck="true"
                          tab_group="3"
-                         bottom="-8"
-                         left="5"
-                         right="-5"
+                         top="1"
+                         bottom="-2"
+                         left="4"
+                         right="-4"
                          wrap="true" />
                     </layout_panel>
                     <layout_panel
                      auto_resize="false"
+                     user_resize="false"
                      name="input_button_layout_panel"
-                     width="32">
+                     width="30"
+                     top="0"
+                     bottom="-1">
                         <button
+                         layout="topleft"
                          left="1"
-                         top="4"
+                         right="-1"
+                         top="1"
+                         height="22"
                          follows="left|right|top"
-                         height="25"
                          image_hover_unselected="Toolbar_Middle_Over"
                          image_overlay="Conv_expand_one_line"
                          image_selected="Toolbar_Middle_Selected"
                          image_unselected="Toolbar_Middle_Off"
                          name="minz_btn"
-                         tool_tip="Shows/hides message panel"
-                         width="28" />
+                         tool_tip="Shows/hides message panel" />
                     </layout_panel>
                 </layout_stack>
             </layout_panel>
diff --git a/indra/newview/skins/default/xui/en/menu_attachment_other.xml b/indra/newview/skins/default/xui/en/menu_attachment_other.xml
index b46b62ec4d1..46ba4bd29d2 100644
--- a/indra/newview/skins/default/xui/en/menu_attachment_other.xml
+++ b/indra/newview/skins/default/xui/en/menu_attachment_other.xml
@@ -79,6 +79,14 @@
             <menu_item_call.on_visible
              function="IsGodCustomerService"/>
         </menu_item_call>
+    <menu_item_call
+		 label="Dump XML"
+         name="Dump XML">
+            <menu_item_call.on_click
+             function="Advanced.AppearanceToXML" />
+            <menu_item_call.on_visible
+             function="Advanced.EnableAppearanceToXML"/>
+    </menu_item_call>
 	    <menu_item_call
          label="Zoom In"
           name="Zoom In">
diff --git a/indra/newview/skins/default/xui/en/menu_attachment_self.xml b/indra/newview/skins/default/xui/en/menu_attachment_self.xml
index b8128da3586..28e032ce5f0 100644
--- a/indra/newview/skins/default/xui/en/menu_attachment_self.xml
+++ b/indra/newview/skins/default/xui/en/menu_attachment_self.xml
@@ -123,6 +123,14 @@ name="Edit Outfit">
     <menu_item_call.on_visible
      function="IsGodCustomerService"/>
   </menu_item_call>
+    <menu_item_call
+		 label="Dump XML"
+         name="Dump XML">
+            <menu_item_call.on_click
+             function="Advanced.AppearanceToXML" />
+            <menu_item_call.on_visible
+             function="Advanced.EnableAppearanceToXML"/>
+    </menu_item_call>
   <menu_item_separator
   layout="topleft" />
   <menu_item_call
diff --git a/indra/newview/skins/default/xui/en/menu_avatar_other.xml b/indra/newview/skins/default/xui/en/menu_avatar_other.xml
index 276b5f106f7..e7c2b80da27 100644
--- a/indra/newview/skins/default/xui/en/menu_avatar_other.xml
+++ b/indra/newview/skins/default/xui/en/menu_avatar_other.xml
@@ -79,6 +79,14 @@
             <menu_item_call.on_visible
              function="IsGodCustomerService"/>
         </menu_item_call>
+    <menu_item_call
+		 label="Dump XML"
+         name="Dump XML">
+            <menu_item_call.on_click
+             function="Advanced.AppearanceToXML" />
+            <menu_item_call.on_visible
+             function="Advanced.EnableAppearanceToXML"/>
+    </menu_item_call>
 	    <menu_item_call
          label="Zoom In"
           name="Zoom In">
diff --git a/indra/newview/skins/default/xui/en/menu_avatar_self.xml b/indra/newview/skins/default/xui/en/menu_avatar_self.xml
index d9bdfece383..c1ff026a74e 100644
--- a/indra/newview/skins/default/xui/en/menu_avatar_self.xml
+++ b/indra/newview/skins/default/xui/en/menu_avatar_self.xml
@@ -261,4 +261,12 @@
             <menu_item_call.on_visible
              function="IsGodCustomerService"/>
     </menu_item_call>
+    <menu_item_call
+		 label="Dump XML"
+         name="Dump XML">
+            <menu_item_call.on_click
+             function="Advanced.AppearanceToXML" />
+            <menu_item_call.on_visible
+             function="Advanced.EnableAppearanceToXML"/>
+    </menu_item_call>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/en/menu_login.xml b/indra/newview/skins/default/xui/en/menu_login.xml
index 101e104eabf..52c4fb1613f 100644
--- a/indra/newview/skins/default/xui/en/menu_login.xml
+++ b/indra/newview/skins/default/xui/en/menu_login.xml
@@ -180,7 +180,8 @@
        name="Set Logging Level"
        tear_off="true">
         <menu_item_check
-          label="Debug">
+         name="Debug"
+         label="Debug">
           <menu_item_check.on_check
             function="Develop.CheckLoggingLevel"
             parameter="0" />
@@ -189,7 +190,8 @@
            parameter="0" />
         </menu_item_check>
         <menu_item_check
-          label="Info">
+         name="Info"
+         label="Info">
           <menu_item_check.on_check
             function="Develop.CheckLoggingLevel"
             parameter="1" />
@@ -198,7 +200,8 @@
            parameter="1" />
         </menu_item_check>
         <menu_item_check
-          label="Warning">
+         name="Warning"
+         label="Warning">
           <menu_item_check.on_check
             function="Develop.CheckLoggingLevel"
             parameter="2" />
@@ -207,7 +210,8 @@
            parameter="2" />
         </menu_item_check>
         <menu_item_check
-          label="Error">
+         name="Error"
+         label="Error">
           <menu_item_check.on_check
             function="Develop.CheckLoggingLevel"
             parameter="3" />
@@ -216,7 +220,8 @@
            parameter="3" />
         </menu_item_check>
         <menu_item_check
-          label="None">
+         name="None"
+         label="None">
           <menu_item_check.on_check
             function="Develop.CheckLoggingLevel"
             parameter="4" />
diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml
index 544f06ac0c4..a11cd13fdbb 100644
--- a/indra/newview/skins/default/xui/en/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/en/menu_viewer.xml
@@ -131,6 +131,7 @@
        name="Status"
        tear_off="true">
         <menu_item_check
+         name="Away"
          label="Away">
           <menu_item_check.on_check
            function="View.Status.CheckAway" />
@@ -138,6 +139,7 @@
            function="World.SetAway" />
         </menu_item_check>
         <menu_item_check
+         name="Do Not Disturb"
          label="Do Not Disturb">
           <menu_item_check.on_check
            function="View.Status.CheckDoNotDisturb" />
@@ -257,6 +259,7 @@
              parameter="speak" />
         </menu_item_check>
         <menu_item_check
+         name="Conversation Log..."
          label="Conversation Log...">
             <menu_item_check.on_check
              function="Floater.Visible"
@@ -352,6 +355,7 @@
         </menu_item_call>
       <menu_item_separator/>
       <menu_item_check
+       name="Do Not Disturb"
        label="Do Not Disturb">
         <menu_item_check.on_check
          function="View.Status.CheckDoNotDisturb" />
@@ -3051,13 +3055,6 @@
                 <menu_item_call.on_click
                  function="Advanced.PrintAgentInfo" />
             </menu_item_call>
-            <menu_item_call
-             label="Memory Stats"
-             name="Memory Stats"
-             shortcut="control|alt|shift|M">
-                <menu_item_call.on_click
-                 function="Advanced.PrintTextureMemoryStats" />
-            </menu_item_call>
             <menu_item_check
              label="Region Debug Console"
              name="Region Debug Console"
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index 5aa743b32d2..7c08aef65e3 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -2987,6 +2987,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 <string name="Higher">Higher</string>
 <string name="Hip Length">Hip Length</string>
 <string name="Hip Width">Hip Width</string>
+<string name="Hover">Hover</string>
 <string name="In">In</string>
 <string name="In Shdw Color">Inner Shadow Color</string>
 <string name="In Shdw Opacity">Inner Shadow Opacity</string>
diff --git a/indra/newview/skins/default/xui/es/floater_conversation_log.xml b/indra/newview/skins/default/xui/es/floater_conversation_log.xml
deleted file mode 100644
index 9202fab92df..00000000000
--- a/indra/newview/skins/default/xui/es/floater_conversation_log.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_conversation_log" title="REGISTRO DE CONVERSACIONES">
-	<panel name="buttons_panel">
-		<filter_editor label="Filtrar la gente" name="people_filter_input"/>
-		<menu_button name="conversation_view_btn" tool_tip="Opciones de vista/orden"/>
-		<menu_button name="conversations_gear_btn" tool_tip="Acciones en la persona o el grupo seleccionado"/>
-	</panel>
-</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_conversation_preview.xml b/indra/newview/skins/default/xui/es/floater_conversation_preview.xml
deleted file mode 100644
index f579e720fb2..00000000000
--- a/indra/newview/skins/default/xui/es/floater_conversation_preview.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="preview_conversation" title="CONVERSACIÓN:">
-	<floater.string name="Title">
-		CONVERSACIÓN: [NAME]
-	</floater.string>
-	<text name="page_label" value="Página"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_im_container.xml b/indra/newview/skins/default/xui/es/floater_im_container.xml
index f772441141a..1cd752e6ec4 100644
--- a/indra/newview/skins/default/xui/es/floater_im_container.xml
+++ b/indra/newview/skins/default/xui/es/floater_im_container.xml
@@ -1,29 +1,2 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<multi_floater name="floater_im_box" title="CONVERSACIONES">
-	<string name="collapse_icon" value="Conv_toolbar_collapse"/>
-	<string name="expand_icon" value="Conv_toolbar_expand"/>
-	<layout_stack name="conversations_stack">
-		<layout_panel name="conversations_layout_panel">
-			<layout_stack name="conversations_pane_buttons_stack">
-				<layout_panel name="conversations_pane_buttons_expanded">
-					<menu_button name="sort_btn" tool_tip="Opciones de vista/orden"/>
-					<button name="add_btn" tool_tip="Iniciar una conversación nueva"/>
-					<button name="speak_btn" tool_tip="Utiliza el micrófono para hablar con las personas"/>
-				</layout_panel>
-				<layout_panel name="conversations_pane_buttons_collapsed">
-					<button name="expand_collapse_btn" tool_tip="Cerrar/expandir esta lista"/>
-				</layout_panel>
-			</layout_stack>
-		</layout_panel>
-		<layout_panel name="messages_layout_panel">
-			<panel_container name="im_box_tab_container">
-				<panel name="stub_panel">
-					<button name="stub_collapse_btn" tool_tip="Cerrar este panel"/>
-					<text name="stub_textbox">
-						Esta conversación está en una ventana aparte.   [secondlife:/// Traerla de vuelta.]
-					</text>
-				</panel>
-			</panel_container>
-		</layout_panel>
-	</layout_stack>
-</multi_floater>
+<multi_floater name="floater_im_box" title="CONVERSACIONES"/>
diff --git a/indra/newview/skins/default/xui/es/floater_im_session.xml b/indra/newview/skins/default/xui/es/floater_im_session.xml
index 5f38fbd6151..3d9d17fc81a 100644
--- a/indra/newview/skins/default/xui/es/floater_im_session.xml
+++ b/indra/newview/skins/default/xui/es/floater_im_session.xml
@@ -1,59 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="panel_im">
-	<floater.string name="call_btn_start">
-		Conv_toolbar_open_call
-	</floater.string>
-	<floater.string name="call_btn_stop">
-		Conv_toolbar_hang_up
-	</floater.string>
-	<floater.string name="collapseline_icon" value="Conv_collapse_to_one_line"/>
-	<floater.string name="expandline_icon" value="Conv_expand_one_line"/>
-	<floater.string name="collapse_icon" value="Conv_toolbar_collapse"/>
-	<floater.string name="expand_icon" value="Conv_toolbar_expand"/>
-	<floater.string name="tear_off_icon" value="Conv_toolbar_arrow_ne"/>
-	<floater.string name="return_icon" value="Conv_toolbar_arrow_sw"/>
-	<floater.string name="participant_added" value="[NAME] ha sido invitado a la conversación."/>
-	<floater.string name="multiple_participants_added" value="[NAME] han sido invitados a la conversación."/>
-	<floater.string name="tooltip_to_separate_window" value="Mover esta conversación a otra ventana"/>
-	<floater.string name="tooltip_to_main_window" value="Volver a poner esta conversación en la ventana principal"/>
-	<floater.string name="start_call_button_tooltip" value="Abrir conexión de voz"/>
-	<floater.string name="end_call_button_tooltip" value="Cerrar la conexión de voz"/>
-	<floater.string name="expcol_button_not_tearoff_tooltip" value="Cerrar este panel"/>
-	<floater.string name="expcol_button_tearoff_and_expanded_tooltip" value="Cerrar la lista de participantes"/>
-	<floater.string name="expcol_button_tearoff_and_collapsed_tooltip" value="Expandir la lista de participantes"/>
-	<view name="contents_view">
-		<layout_stack name="main_stack">
-			<layout_panel name="toolbar_panel">
-				<menu_button name="view_options_btn" tool_tip="Opciones de vista/orden"/>
-				<menu_button name="gear_btn" tool_tip="Acciones en la persona seleccionada"/>
-				<button name="add_btn" tool_tip="Añadir alguien a esta conversación"/>
-				<button name="voice_call_btn" tool_tip="Abrir conexión de voz"/>
-				<button name="close_btn" tool_tip="Finalizar esta conversación"/>
-				<button name="expand_collapse_btn" tool_tip="Cerrar/expandir este panel"/>
-			</layout_panel>
-			<layout_panel name="body_panel">
-				<layout_stack name="im_panels">
-					<layout_panel name="right_part_holder">
-						<panel name="trnsAndChat_panel">
-							<layout_stack name="translate_and_chat_stack">
-								<layout_panel name="translate_chat_checkbox_lp">
-									<check_box label="Traducir el chat" name="translate_chat_checkbox"/>
-								</layout_panel>
-							</layout_stack>
-						</panel>
-					</layout_panel>
-				</layout_stack>
-			</layout_panel>
-			<layout_panel name="chat_layout_panel">
-				<layout_stack name="input_panels">
-					<layout_panel name="input_editor_layout_panel">
-						<chat_editor label="A" name="chat_editor"/>
-					</layout_panel>
-					<layout_panel name="input_button_layout_panel">
-						<button name="minz_btn" tool_tip="Muestra/oculta el panel de mensajes"/>
-					</layout_panel>
-				</layout_stack>
-			</layout_panel>
-		</layout_stack>
-	</view>
+	<layout_stack name="im_panels">
+		<layout_panel>
+			<line_editor label="A" name="chat_editor"/>
+		</layout_panel>
+	</layout_stack>
 </floater>
diff --git a/indra/newview/skins/default/xui/es/floater_incoming_call.xml b/indra/newview/skins/default/xui/es/floater_incoming_call.xml
index acbb25b7131..b5b756abb6a 100644
--- a/indra/newview/skins/default/xui/es/floater_incoming_call.xml
+++ b/indra/newview/skins/default/xui/es/floater_incoming_call.xml
@@ -10,7 +10,7 @@
 		anónimo
 	</floater.string>
 	<floater.string name="VoiceInviteP2P">
-		te está llamando.
+		está llamando.
 	</floater.string>
 	<floater.string name="VoiceInviteAdHoc">
 		ha entrado en un chat de voz en multiconferencia.
@@ -25,9 +25,9 @@
 		¿Quieres dejar [CURRENT_CHAT] y entrar en este chat de voz?
 	</floater.string>
 	<text name="question">
-		Si respondes, te desconectarás de la conversación de voz actual.
+		¿Quieres dejar [CURRENT_CHAT] y entrar a este chat de voz?
 	</text>
-	<button label="Responder" label_selected="Responder" name="Accept"/>
-	<button label="Ignorar" label_selected="Ignorar" name="Reject"/>
-	<button label="Abrir MI en su lugar" name="Start IM"/>
+	<button label="Aceptar" label_selected="Aceptar" name="Accept"/>
+	<button label="Rechazar" label_selected="Rechazar" name="Reject"/>
+	<button label="Comenzar un MI" name="Start IM"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/es/floater_pathfinding_console.xml b/indra/newview/skins/default/xui/es/floater_pathfinding_console.xml
index 3602270e5a5..e93ecc9e10d 100644
--- a/indra/newview/skins/default/xui/es/floater_pathfinding_console.xml
+++ b/indra/newview/skins/default/xui/es/floater_pathfinding_console.xml
@@ -71,7 +71,7 @@
 			<text name="show_label">
 				Mostrar:
 			</text>
-			<check_box label="Prueba" name="show_world"/>
+			<check_box label="Mundo virtual" name="show_world"/>
 			<check_box label="Solamente los objetos movibles" name="show_world_movables_only"/>
 			<check_box label="Navmesh" name="show_navmesh"/>
 			<text name="show_walkability_label">
diff --git a/indra/newview/skins/default/xui/es/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/es/floater_texture_ctrl.xml
index 01b024bc3e4..93bc9f293c1 100644
--- a/indra/newview/skins/default/xui/es/floater_texture_ctrl.xml
+++ b/indra/newview/skins/default/xui/es/floater_texture_ctrl.xml
@@ -20,7 +20,7 @@
 	<button label="Blanca" label_selected="Blanca" name="Blank"/>
 	<button label="Ninguna" label_selected="Ninguna" left="90" name="None"/>
 	<button label="" label_selected="" name="Pipette"/>
-	<check_box initial_value="true" label="Aplicarlo ahora" name="apply_immediate_check"/>
+	<check_box initial_value="true" label="Vista previa inmediata" name="apply_immediate_check"/>
 	<text name="preview_disabled" value="Vista previa inhabilitada"/>
 	<filter_editor label="Filtrar las texturas" name="inventory search editor"/>
 	<check_box initial_value="false" label="Ver las carpetas" name="show_folders_check"/>
diff --git a/indra/newview/skins/default/xui/es/floater_voice_chat_volume.xml b/indra/newview/skins/default/xui/es/floater_voice_chat_volume.xml
deleted file mode 100644
index 1115d672399..00000000000
--- a/indra/newview/skins/default/xui/es/floater_voice_chat_volume.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_voice_volume" title="VOLUMEN DE CHAT DE VOZ">
-	<slider label="Chat de voz" name="chat_voice_volume"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_voice_effect.xml b/indra/newview/skins/default/xui/es/floater_voice_effect.xml
index 02ebe80ff7d..1a265845af5 100644
--- a/indra/newview/skins/default/xui/es/floater_voice_effect.xml
+++ b/indra/newview/skins/default/xui/es/floater_voice_effect.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater label="Lugares" name="voice_effects" title="PROBAR TRANSFORMACIÓN DE VOZ">
+<floater label="Lugares" name="voice_effects" title="TRANSFORMACIÓN DE VOZ">
 	<string name="no_voice_effect">
 		(Sin transformación de voz)
 	</string>
diff --git a/indra/newview/skins/default/xui/es/floater_voice_volume.xml b/indra/newview/skins/default/xui/es/floater_voice_volume.xml
deleted file mode 100644
index 0ebc511887e..00000000000
--- a/indra/newview/skins/default/xui/es/floater_voice_volume.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!--
-  Not can_close / no title to avoid window chrome
-  Single instance - only have one at a time, recycle it each spawn
--->
-<floater name="floater_voice_volume" title="VOLUMEN DE VOZ">
-	<slider name="volume_slider" tool_tip="Volumen de la voz" value="0.5"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/es/menu_cof_gear.xml b/indra/newview/skins/default/xui/es/menu_cof_gear.xml
index a889992b8aa..ff8ad0977ac 100644
--- a/indra/newview/skins/default/xui/es/menu_cof_gear.xml
+++ b/indra/newview/skins/default/xui/es/menu_cof_gear.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="Gear COF">
+<menu name="Gear COF">
 	<menu label="Ropas nuevas" name="COF.Gear.New_Clothes"/>
-	<menu label="Nuevas partes del cuerpo" name="COF.Gear.New_Body_Parts"/>
-</toggleable_menu>
+	<menu label="Nuevas partes del cuerpo" name="COF.Geear.New_Body_Parts"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/es/menu_conversation.xml b/indra/newview/skins/default/xui/es/menu_conversation.xml
deleted file mode 100644
index e4e9a0bf63d..00000000000
--- a/indra/newview/skins/default/xui/es/menu_conversation.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_conversation_participant">
-	<menu_item_call label="Cerrar conversación" name="close_conversation"/>
-	<menu_item_call label="Abrir conversación de voz" name="open_voice_conversation"/>
-	<menu_item_call label="Desconectar de voz" name="disconnect_from_voice"/>
-	<menu_item_call label="Ver el perfil" name="view_profile"/>
-	<menu_item_call label="MI" name="im"/>
-	<menu_item_call label="Ofrecer teleporte" name="offer_teleport"/>
-	<menu_item_call label="Llamada de voz" name="voice_call"/>
-	<menu_item_call label="Historial del chat..." name="chat_history"/>
-	<menu_item_call label="Añadir como amigo" name="add_friend"/>
-	<menu_item_call label="Quitarle como amigo" name="remove_friend"/>
-	<menu_item_call label="Quitar amigos" name="remove_friends"/>
-	<menu_item_call label="Invitar al grupo..." name="invite_to_group"/>
-	<menu_item_call label="Acercar el zoom" name="zoom_in"/>
-	<menu_item_call label="Mapa" name="map"/>
-	<menu_item_call label="Compartir" name="share"/>
-	<menu_item_call label="Pagar" name="pay"/>
-	<menu_item_check label="Ignorar la voz" name="block_unblock"/>
-	<menu_item_check label="Ignorar el texto" name="MuteText"/>
-	<menu_item_call label="Perfil del grupo" name="group_profile"/>
-	<menu_item_call label="Activar el grupo" name="activate_group"/>
-	<menu_item_call label="Abandonar el grupo" name="leave_group"/>
-	<context_menu label="Opciones del moderador" name="Moderator Options">
-		<menu_item_check label="Permitir el chat de texto" name="AllowTextChat"/>
-		<menu_item_call label="Ignorar a este participante" name="ModerateVoiceMuteSelected"/>
-		<menu_item_call label="Quitar el silencio a este participante" name="ModerateVoiceUnMuteSelected"/>
-		<menu_item_call label="Silenciar a todos" name="ModerateVoiceMute"/>
-		<menu_item_call label="Quitar el silencio a todos" name="ModerateVoiceUnmute"/>
-	</context_menu>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_conversation_log_gear.xml b/indra/newview/skins/default/xui/es/menu_conversation_log_gear.xml
deleted file mode 100644
index 090e6fb0bf7..00000000000
--- a/indra/newview/skins/default/xui/es/menu_conversation_log_gear.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="Conversation Context Menu">
-	<menu_item_call label="MI..." name="IM"/>
-	<menu_item_call label="Llamada de voz..." name="Call"/>
-	<menu_item_call label="Abrir el historial de chat..." name="Chat history"/>
-	<menu_item_call label="Ver el perfil" name="View Profile"/>
-	<menu_item_call label="Ofrecer teleporte" name="teleport"/>
-	<menu_item_call label="Añadir como amigo" name="add_friend"/>
-	<menu_item_call label="Quitarle como amigo" name="remove_friend"/>
-	<menu_item_call label="Invitar al grupo..." name="Invite"/>
-	<menu_item_call label="Mapa" name="Map"/>
-	<menu_item_call label="Compartir" name="Share"/>
-	<menu_item_call label="Pagar" name="Pay"/>
-	<menu_item_check label="Ignorar / No ignorar" name="Block/Unblock"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_conversation_log_view.xml b/indra/newview/skins/default/xui/es/menu_conversation_log_view.xml
deleted file mode 100644
index b8b4616b2d9..00000000000
--- a/indra/newview/skins/default/xui/es/menu_conversation_log_view.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_conversation_view">
-	<menu_item_check label="Ordenar alfabéticamente" name="sort_by_name"/>
-	<menu_item_check label="Ordenar por fecha" name="sort_by_date"/>
-	<menu_item_check label="Ordenar con los amigos al principio" name="sort_by_friends"/>
-	<menu_item_call label="Ver el historial de chat..." name="view_nearby_chat_history"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_im_conversation.xml b/indra/newview/skins/default/xui/es/menu_im_conversation.xml
deleted file mode 100644
index 5ba0fb898e8..00000000000
--- a/indra/newview/skins/default/xui/es/menu_im_conversation.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="Conversation Gear Menu">
-	<menu_item_call label="Ver el perfil" name="View Profile"/>
-	<menu_item_call label="Añadir como amigo" name="Add Friend"/>
-	<menu_item_call label="Quitarle como amigo" name="remove_friend"/>
-	<menu_item_call label="Ofrecer teleporte" name="offer_teleport"/>
-	<menu_item_call label="Invitar al grupo..." name="invite_to_group"/>
-	<menu_item_call label="Historial del chat..." name="chat_history"/>
-	<menu_item_call label="Acercar el zoom" name="zoom_in"/>
-	<menu_item_call label="Mapa" name="map"/>
-	<menu_item_call label="Compartir" name="Share"/>
-	<menu_item_call label="Pagar" name="Pay"/>
-	<menu_item_check label="Ignorar la voz" name="Block/Unblock"/>
-	<menu_item_check label="Ignorar el texto" name="MuteText"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_im_session_showmodes.xml b/indra/newview/skins/default/xui/es/menu_im_session_showmodes.xml
deleted file mode 100644
index 6ea970b8265..00000000000
--- a/indra/newview/skins/default/xui/es/menu_im_session_showmodes.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_modes">
-	<menu_item_check label="Vista compacta" name="compact_view"/>
-	<menu_item_check label="Vista ampliada" name="expanded_view"/>
-	<menu_item_check label="Mostrar tiempo" name="IMShowTime"/>
-	<menu_item_check label="Mostrar los nombres en las conversaciones individuales" name="IMShowNamesForP2PConv"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_object_icon.xml b/indra/newview/skins/default/xui/es/menu_object_icon.xml
index a99c889bb06..7e4578b9504 100644
--- a/indra/newview/skins/default/xui/es/menu_object_icon.xml
+++ b/indra/newview/skins/default/xui/es/menu_object_icon.xml
@@ -2,6 +2,4 @@
 <menu name="Object Icon Menu">
 	<menu_item_call label="Perfil del objeto..." name="Object Profile"/>
 	<menu_item_call label="Ignorar..." name="Block"/>
-	<menu_item_call label="Mostrar en el mapa" name="show_on_map"/>
-	<menu_item_call label="Teleportarse a la posición del objeto" name="teleport_to_object"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/es/menu_outfit_gear.xml b/indra/newview/skins/default/xui/es/menu_outfit_gear.xml
index 56e64c729f7..558ff6afd3c 100644
--- a/indra/newview/skins/default/xui/es/menu_outfit_gear.xml
+++ b/indra/newview/skins/default/xui/es/menu_outfit_gear.xml
@@ -23,8 +23,6 @@
 		<menu_item_call label="Pelo nuevo" name="New Hair"/>
 		<menu_item_call label="Ojos nuevos" name="New Eyes"/>
 	</menu>
-	<menu_item_call label="Abrir todas las carpetas" name="expand"/>
-	<menu_item_call label="Cerrar todas las carpetas" name="collapse"/>
 	<menu_item_call label="Renombrar el vestuario" name="rename"/>
 	<menu_item_call label="Borrar el vestuario" name="delete_outfit"/>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_participant_view.xml b/indra/newview/skins/default/xui/es/menu_participant_view.xml
deleted file mode 100644
index fcfeeb922bf..00000000000
--- a/indra/newview/skins/default/xui/es/menu_participant_view.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="participant_manu_view">
-	<menu_item_check label="Ordenar las conversaciones por tipo" name="sort_sessions_by_type"/>
-	<menu_item_check label="Ordenar las conversaciones por nombre" name="sort_sessions_by_name"/>
-	<menu_item_check label="Ordenar las conversaciones por actividad reciente" name="sort_sessions_by_recent"/>
-	<menu_item_check label="Ordenar los participantes por nombre" name="sort_participants_by_name"/>
-	<menu_item_check label="Ordenar los participantes por actividad reciente" name="sort_participants_by_recent"/>
-	<menu_item_call label="Preferencias de chat..." name="chat_preferences"/>
-	<menu_item_call label="Preferencias de privacidad..." name="privacy_preferences"/>
-	<menu_item_check label="Registro de conversaciones..." name="Conversation"/>
-	<menu_item_check label="Traducir el chat" name="Translate_chat"/>
-	<menu_item_check label="Configuración de traducción..." name="Translation_settings"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_people_blocked_gear.xml b/indra/newview/skins/default/xui/es/menu_people_blocked_gear.xml
deleted file mode 100644
index 986389a4fe7..00000000000
--- a/indra/newview/skins/default/xui/es/menu_people_blocked_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_blocked_gear">
-	<menu_item_call label="No ignorar" name="unblock"/>
-	<menu_item_call label="Perfil..." name="profile"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_people_blocked_plus.xml b/indra/newview/skins/default/xui/es/menu_people_blocked_plus.xml
deleted file mode 100644
index 10f6a3fc14f..00000000000
--- a/indra/newview/skins/default/xui/es/menu_people_blocked_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_blocked_plus">
-	<menu_item_call label="Ignorar residentes según el nombre..." name="block_resident_by_name"/>
-	<menu_item_call label="Ignorar objetos según el nombre" name="block_object_by_name"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_people_blocked_view.xml b/indra/newview/skins/default/xui/es/menu_people_blocked_view.xml
deleted file mode 100644
index bc557c7ec15..00000000000
--- a/indra/newview/skins/default/xui/es/menu_people_blocked_view.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_blocked_view">
-	<menu_item_check label="Ordenar alfabéticamente" name="sort_by_name"/>
-	<menu_item_check label="Ordenar por tipo" name="sort_by_type"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_people_friends_view.xml b/indra/newview/skins/default/xui/es/menu_people_friends_view.xml
deleted file mode 100644
index ad896c1b74e..00000000000
--- a/indra/newview/skins/default/xui/es/menu_people_friends_view.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_group_plus">
-	<menu_item_check label="Ordenar alfabéticamente" name="sort_name"/>
-	<menu_item_check label="Ordenar por estatus" name="sort_status"/>
-	<menu_item_check label="Ver los iconos de la gente" name="view_icons"/>
-	<menu_item_check label="Ver permisos concedidos" name="view_permissions"/>
-	<menu_item_check label="Ver el registro de conversaciones..." name="view_conversation"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_people_groups.xml b/indra/newview/skins/default/xui/es/menu_people_groups.xml
index 125e25cd1a6..51bd2c72085 100644
--- a/indra/newview/skins/default/xui/es/menu_people_groups.xml
+++ b/indra/newview/skins/default/xui/es/menu_people_groups.xml
@@ -2,7 +2,7 @@
 <menu name="menu_group_plus">
 	<menu_item_call label="Ver la información" name="View Info"/>
 	<menu_item_call label="Chat" name="Chat"/>
-	<menu_item_call label="Llamada de voz" name="Call"/>
+	<menu_item_call label="Llamar" name="Call"/>
 	<menu_item_call label="Activar" name="Activate"/>
 	<menu_item_call label="Dejar" name="Leave"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/es/menu_people_groups_view.xml b/indra/newview/skins/default/xui/es/menu_people_groups_view.xml
deleted file mode 100644
index c3973625b0a..00000000000
--- a/indra/newview/skins/default/xui/es/menu_people_groups_view.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_group_plus">
-	<menu_item_check label="Mostrar los iconos de grupo" name="Display Group Icons"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_people_nearby.xml b/indra/newview/skins/default/xui/es/menu_people_nearby.xml
index 09bb119d5ad..dc1486d8796 100644
--- a/indra/newview/skins/default/xui/es/menu_people_nearby.xml
+++ b/indra/newview/skins/default/xui/es/menu_people_nearby.xml
@@ -1,16 +1,13 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Avatar Context Menu">
-	<menu_item_call label="Ver el perfil" name="view_profile"/>
-	<menu_item_call label="MI" name="im"/>
-	<menu_item_call label="Ofrecer teleporte" name="offer_teleport"/>
-	<menu_item_call label="Llamada de voz" name="voice_call"/>
-	<menu_item_call label="Ver el historial de chat..." name="chat_history"/>
-	<menu_item_call label="Añadir como amigo" name="add_friend"/>
-	<menu_item_call label="Quitarle como amigo" name="remove_friend"/>
-	<menu_item_call label="Invitar al grupo..." name="invite_to_group"/>
-	<menu_item_call label="Acercar el zoom" name="zoom_in"/>
-	<menu_item_call label="Mapa" name="map"/>
-	<menu_item_call label="Compartir" name="share"/>
-	<menu_item_call label="Pagar" name="pay"/>
-	<menu_item_check label="Ignorar / No ignorar" name="block_unblock"/>
+	<menu_item_call label="Ver el perfil" name="View Profile"/>
+	<menu_item_call label="Añadir como amigo" name="Add Friend"/>
+	<menu_item_call label="Quitarle como amigo" name="Remove Friend"/>
+	<menu_item_call label="MI" name="IM"/>
+	<menu_item_call label="Llamar" name="Call"/>
+	<menu_item_call label="Mapa" name="Map"/>
+	<menu_item_call label="Compartir" name="Share"/>
+	<menu_item_call label="Pagar" name="Pay"/>
+	<menu_item_check label="Ignorar / No ignorar" name="Block/Unblock"/>
+	<menu_item_call label="Ofrecer teleporte" name="teleport"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/es/menu_people_nearby_multiselect.xml
index 9df160f5ad9..227c5ebe58f 100644
--- a/indra/newview/skins/default/xui/es/menu_people_nearby_multiselect.xml
+++ b/indra/newview/skins/default/xui/es/menu_people_nearby_multiselect.xml
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Multi-Selected People Context Menu">
-	<menu_item_call label="Añadir como amigos" name="add_friends"/>
-	<menu_item_call label="Quitar amigos" name="remove_friends"/>
-	<menu_item_call label="MI" name="im"/>
-	<menu_item_call label="Visita" name="call"/>
-	<menu_item_call label="Compartir" name="share"/>
-	<menu_item_call label="Pagar" name="pay"/>
-	<menu_item_call label="Ofrecer teleporte" name="offer_teleport"/>
+	<menu_item_call label="Añadir como amigos" name="Add Friends"/>
+	<menu_item_call label="Quitar amigos" name="Remove Friend"/>
+	<menu_item_call label="MI" name="IM"/>
+	<menu_item_call label="Llamar" name="Call"/>
+	<menu_item_call label="Compartir" name="Share"/>
+	<menu_item_call label="Pagar" name="Pay"/>
+	<menu_item_call label="Ofrecer teleporte" name="teleport"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_people_nearby_view.xml b/indra/newview/skins/default/xui/es/menu_people_nearby_view.xml
deleted file mode 100644
index c2fb360dd1c..00000000000
--- a/indra/newview/skins/default/xui/es/menu_people_nearby_view.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_group_plus">
-	<menu_item_check label="Ordenar según las intervenciones recientes" name="sort_by_recent_speakers"/>
-	<menu_item_check label="Ordenar alfabéticamente" name="sort_name"/>
-	<menu_item_check label="Ordenar según distancia" name="sort_distance"/>
-	<menu_item_check label="Ver los iconos de la gente" name="view_icons"/>
-	<menu_item_check label="Ver mapa" name="view_map"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_people_recent_view.xml b/indra/newview/skins/default/xui/es/menu_people_recent_view.xml
deleted file mode 100644
index f0ffd140248..00000000000
--- a/indra/newview/skins/default/xui/es/menu_people_recent_view.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_group_plus">
-	<menu_item_check label="Ordenar por más reciente" name="sort_most"/>
-	<menu_item_check label="Ordenar alfabéticamente" name="sort_name"/>
-	<menu_item_check label="Ver los iconos de la gente" name="view_icons"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_url_agent.xml b/indra/newview/skins/default/xui/es/menu_url_agent.xml
index 69a03671aba..a089c8f68e3 100644
--- a/indra/newview/skins/default/xui/es/menu_url_agent.xml
+++ b/indra/newview/skins/default/xui/es/menu_url_agent.xml
@@ -1,8 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Url Popup">
-	<menu_item_call label="Ver el perfil" name="show_agent"/>
-	<menu_item_call label="Enviar un MI..." name="send_im"/>
-	<menu_item_call label="Añadir como amigo..." name="add_friend"/>
+	<menu_item_call label="Mostrar el perfil del Residente" name="show_agent"/>
 	<menu_item_call label="Copiar el nombre al portapapeles" name="url_copy_label"/>
 	<menu_item_call label="Copiar la SLurl al portapapeles" name="url_copy"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_url_objectim.xml b/indra/newview/skins/default/xui/es/menu_url_objectim.xml
index e78fdec5580..8791a290af6 100644
--- a/indra/newview/skins/default/xui/es/menu_url_objectim.xml
+++ b/indra/newview/skins/default/xui/es/menu_url_objectim.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Url Popup">
-	<menu_item_call label="Perfil del objeto..." name="show_object"/>
+	<menu_item_call label="Mostrar la información del objeto" name="show_object"/>
 	<menu_item_call label="Mostrar en el mapa" name="show_on_map"/>
 	<menu_item_call label="Teleportarse a la posición del objeto" name="teleport_to_object"/>
 	<menu_item_call label="Copiar el nombre del objeto al portapapeles" name="url_copy_label"/>
diff --git a/indra/newview/skins/default/xui/es/menu_viewer.xml b/indra/newview/skins/default/xui/es/menu_viewer.xml
index 30842f53f26..d80150ef6df 100644
--- a/indra/newview/skins/default/xui/es/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/es/menu_viewer.xml
@@ -16,7 +16,10 @@
 			<menu_item_call label="Parar mis animaciones" name="Stop Animating My Avatar"/>
 			<menu_item_call label="Caminar / Correr / Volar..." name="Walk / run / fly"/>
 		</menu>
-		<menu label="Estado" name="Status"/>
+		<menu label="Estado" name="Status">
+			<menu_item_call label="Ausente" name="Set Away"/>
+			<menu_item_call label="Ocupado" name="Set Busy"/>
+		</menu>
 		<menu_item_call label="Comprar L$..." name="Buy and Sell L$"/>
 		<menu_item_call label="Panel de control de la cuenta..." name="Manage My Account">
 			<menu_item_call.on_click name="ManageMyAccount_url" parameter="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=es"/>
@@ -28,18 +31,14 @@
 		<menu_item_call label="Salir de [APP_NAME]" name="Quit"/>
 	</menu>
 	<menu label="Comunicarme" name="Communicate">
-		<menu_item_check label="Conversaciones..." name="Conversations"/>
 		<menu_item_check label="Chat..." name="Nearby Chat"/>
 		<menu_item_check label="Hablar" name="Speak"/>
-		<menu label="Transformación de voz" name="VoiceMorphing">
-			<menu_item_check label="Sin transformación de voz" name="NoVoiceMorphing"/>
-			<menu_item_check label="Probar..." name="Preview"/>
-			<menu_item_call label="Suscribir..." name="Subscribe"/>
-		</menu>
+		<menu_item_check label="Configuración de voz..." name="Nearby Voice"/>
+		<menu_item_check label="Transformación de voz..." name="ShowVoice"/>
 		<menu_item_check label="Gestos..." name="Gestures"/>
-		<menu_item_check label="Amigos" name="My Friends"/>
-		<menu_item_check label="Grupos" name="My Groups"/>
-		<menu_item_check label="Gente cerca" name="Active Speakers"/>
+		<menu_item_call label="Amigos" name="My Friends"/>
+		<menu_item_call label="Grupos" name="My Groups"/>
+		<menu_item_call label="Gente cerca" name="Active Speakers"/>
 		<menu_item_call label="Lista de ignorados" name="Block List"/>
 	</menu>
 	<menu label="Mundo" name="World">
@@ -115,6 +114,7 @@
 			<menu_item_call label="Comprar" name="Menu Object Buy"/>
 			<menu_item_call label="Tomar" name="Menu Object Take"/>
 			<menu_item_call label="Coger una copia" name="Take Copy"/>
+			<menu_item_call label="Guardar una copia en mi inventario" name="Save Object Back to My Inventory"/>
 			<menu_item_call label="Guardar una copia del objeto en los contenidos de donde salió" name="Save Object Back to Object Contents"/>
 			<menu_item_call label="Devolver objeto" name="Return Object back to Owner"/>
 		</menu>
@@ -129,7 +129,6 @@
 			<menu_item_call label="Linksets..." name="pathfinding_linksets_menu_item"/>
 			<menu_item_call label="Personajes..." name="pathfinding_characters_menu_item"/>
 			<menu_item_call label="Ver/probar..." name="pathfinding_console_menu_item"/>
-			<menu_item_call label="Recargar la región" name="pathfinding_rebake_navmesh_item"/>
 		</menu>
 		<menu label="Opciones" name="Options">
 			<menu_item_check label="Mostrar los permisos avanzados" name="DebugPermissions"/>
@@ -159,13 +158,6 @@
 	<menu label="Ayuda" name="Help">
 		<menu_item_call label="Cómo..." name="How To"/>
 		<menu_item_call label="Ayuda de [SECOND_LIFE]" name="Second Life Help"/>
-		<menu_item_call label="Guía del usuario" name="User’s guide"/>
-		<menu_item_call label="Base de Conocimientos" name="Knowledge Base"/>
-		<menu_item_call label="Wiki" name="Wiki"/>
-		<menu_item_call label="Foros comunitarios" name="Community Forums"/>
-		<menu_item_call label="Portal de soporte" name="Support portal"/>
-		<menu_item_call label="Noticias de [SECOND_LIFE]" name="Second Life News"/>
-		<menu_item_call label="Blogs de [SECOND_LIFE]" name="Second Life Blogs"/>
 		<menu_item_call label="Denunciar una infracción" name="Report Abuse"/>
 		<menu_item_call label="Informar de un fallo" name="Report Bug"/>
 		<menu_item_call label="Acerca de [APP_NAME]" name="About Second Life"/>
@@ -343,14 +335,9 @@
 				<menu_item_call label="Toggle Character Geometry" name="Toggle Character Geometry"/>
 				<menu_item_check label="Allow Select Avatar" name="Allow Select Avatar"/>
 			</menu>
-			<menu label="Velocidad de animación" name="Animation Speed">
-				<menu_item_call label="Acelerar todas las animaciones un 10%" name="All Animations 10 Faster"/>
-				<menu_item_call label="Ralentizar todas las animaciones un 10%" name="All Animations 10 Slower"/>
-				<menu_item_call label="Restablecer la velocidad de todas las animaciones" name="Reset All Animation Speed"/>
-				<menu_item_check label="Animaciones a cámara lenta" name="Slow Motion Animations"/>
-			</menu>
 			<menu_item_call label="Force Params to Default" name="Force Params to Default"/>
 			<menu_item_check label="Animation Info" name="Animation Info"/>
+			<menu_item_check label="Slow Motion Animations" name="Slow Motion Animations"/>
 			<menu_item_check label="Disable Level Of Detail" name="Disable LOD"/>
 			<menu_item_check label="Show Collision Skeleton" name="Show Collision Skeleton"/>
 			<menu_item_check label="Display Agent Target" name="Display Agent Target"/>
diff --git a/indra/newview/skins/default/xui/es/notifications.xml b/indra/newview/skins/default/xui/es/notifications.xml
index 05455f54c39..7dfb27717d3 100644
--- a/indra/newview/skins/default/xui/es/notifications.xml
+++ b/indra/newview/skins/default/xui/es/notifications.xml
@@ -511,24 +511,6 @@ El objeto debe de haber sido borrado o estar fuera de rango (&apos;out of range&
 		</url>
 		<usetemplate ignoretext="Mi controlador de gráficos no está actualizado" name="okcancelignore" notext="No" yestext="Sí"/>
 	</notification>
-	<notification name="AMDOldDriver">
-		Probablemente ya existe un controlador más reciente para tu procesador de gráficos. La actualización del controlador de gráficos puede mejorar sustancialmente el rendimiento.
-
-    ¿Deseas visitar [_URL] para comprobar si hay controladores actualizados?
-		<url name="url">
-			http://support.amd.com/us/Pages/AMDSupportHub.aspx
-		</url>
-		<usetemplate ignoretext="Mi controlador de gráficos no está actualizado" name="okcancelignore" notext="No" yestext="Sí"/>
-	</notification>
-	<notification name="NVIDIAOldDriver">
-		Probablemente ya existe un controlador más reciente para tu procesador de gráficos.  La actualización del controlador de gráficos puede mejorar sustancialmente el rendimiento.
-
-    ¿Deseas visitar [_URL] para comprobar si hay controladores actualizados?
-		<url name="url">
-			http://www.nvidia.com/Download/index.aspx?lang=es
-		</url>
-		<usetemplate ignoretext="Mi controlador de gráficos no está actualizado" name="okcancelignore" notext="No" yestext="Sí"/>
-	</notification>
 	<notification name="UnknownGPU">
 		Tu sistema usa una tarjeta gráfica que [APP_NAME] no reconoce.
 Suele suceder con hardware nuevo que todavía no ha sido probado con [APP_NAME].  Probablemente todo irá bien, pero deberás ajustar tus configuraciones gráficas.
@@ -1571,13 +1553,10 @@ Debemos reiniciar [APP_NAME] para instalar la actualización.
 		En este momento, no se puede ofrecer el ser amigo. Por favor, vuelve a intentarlo en un momento.
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
-	<notification name="DoNotDisturbModeSet">
-		Está activado No molestar. No obtendrás un aviso cuando recibas comunicaciones.
-
-- Los otros residentes recibirán tu respuesta de No molestar (se configura en Preferencias &gt; General).
-- Se rehusarán los ofrecimientos de teleporte.
-- Se rechazarán las llamadas de voz.
-		<usetemplate ignoretext="Cambio mi estado al modo No molestar" name="okignore" yestext="OK"/>
+	<notification name="BusyModeSet">
+		Pasar al modo ocupado.
+Se ocultará el chat y los mensajes instantáneos   (éstos recibirán tu Respuesta en el modo ocupado). Se rehusarán todos los ofrecimientos de teleporte. Todas las ofertas de inventario irán a tu Papelera.
+		<usetemplate ignoretext="Cambio mi estado al modo ocupado" name="okignore" yestext="OK"/>
 	</notification>
 	<notification name="JoinedTooManyGroupsMember">
 		Has superado tu número máximo de grupos. Por favor, sal de al menos uno antes de entrar en éste, o rehúsa la oferta.
@@ -2064,10 +2043,6 @@ Dado que estos objetos tienen scripts, moverlos a tu inventario puede provocar u
 		¿Ir a tu [http://secondlife.com/account/ Panel de Control] para ver el historial de tu cuenta?
 		<usetemplate ignoretext="Abrir mi navegador para ver el historial de mi cuenta" name="okcancelignore" notext="Cancelar" yestext="Ir a la página"/>
 	</notification>
-	<notification name="ConfirmAddingChatParticipants">
-		Si agregas una persona a una conversación en curso, se creará una conversación nueva. Todos los participantes recibirán notificaciones de la nueva conversación.
-		<usetemplate ignoretext="Confirmar agregar participantes al chat" name="okcancelignore" notext="Cancelar" yestext="Aceptar"/>
-	</notification>
 	<notification name="ConfirmQuit">
 		¿Estás seguro de que quieres salir?
 		<usetemplate ignoretext="Confirmar antes de salir" name="okcancelignore" notext="No salir" yestext="Salir"/>
@@ -2141,14 +2116,14 @@ Linden Lab
 			<button ignore="Nunca reemplazar" name="No" text="Cancelar"/>
 		</form>
 	</notification>
-	<notification label="Advertencia del modo No molestar" name="DoNotDisturbModePay">
-		Tienes activado No molestar. No podrás recibir ningún objeto ofrecido a cambio de este pago.
+	<notification label="¡Aviso! Modo Ocupado" name="BusyModePay">
+		Estás en el modo Ocupado. Por tanto, no recibirás ningún ítem a cambio de este pago.
 
-¿Deseas desactivar No molestar antes de finalizar esta transacción?
+¿Quieres salir del modo Ocupado antes de completar esta transacción?
 		<form name="form">
-			<ignore name="ignore" text="Voy a pagar a una persona u objeto mientras estoy en el modo No molestar"/>
-			<button ignore="Salir siempre del modo No molestar" name="Yes" text="OK"/>
-			<button ignore="No salir nunca del modo No molestar" name="No" text="Cancelar"/>
+			<ignore name="ignore" save_option="true" text="Voy a pagar a una persona u objeto mientras estoy en el modo ocupado"/>
+			<button ignore="Siempre salir del modo Ocupado" name="Yes" text="OK"/>
+			<button ignore="Nunca salir del modo Ocupado" name="No" text="Cancelar"/>
 		</form>
 	</notification>
 	<notification name="ConfirmDeleteProtectedCategory">
@@ -2283,8 +2258,11 @@ Publícala en una página web para que otros puedan acceder fácilmente a esta p
 	<notification name="GroupNotice">
 		Asunto: [SUBJECT], Mensaje: [MESSAGE]
 	</notification>
-	<notification name="FriendOnlineOffline">
-		&lt;nolink&gt;[NAME]&lt;/nolink&gt; está [STATUS]
+	<notification name="FriendOnline">
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; está conectado
+	</notification>
+	<notification name="FriendOffline">
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; está desconectado
 	</notification>
 	<notification name="AddSelfFriend">
 		Aunque eres muy agradable, no puedes añadirte como amigo a ti mismo.
@@ -2512,6 +2490,13 @@ Aquí no puedes volar.
 	<notification name="DynamicPathfindingDisabled">
 		Esta región no tiene activado el pathfinding dinámico. Los objetos programados que utilicen llamadas LSL de pathfinding pueden tener un comportamiento inesperado en ella.
 	</notification>
+	<notification name="PathfindingRebakeNavmesh">
+		Si cambias ciertos objetos en esta región, otros objetos móviles podrían tener un comportamiento incorrecto. Para que los objetos móviles se comporten correctamente, pulsa el botón “Recargar la región”. Si quieres más información, elige “Ayuda”.
+		<url name="url">
+			http://wiki.secondlife.com/wiki/Pathfinding_Tools_in_the_Second_Life_Viewer
+		</url>
+		<usetemplate helptext="Ayuda" ignoretext="Si cambias ciertos objetos en esta región, otros objetos móviles podrían tener un comportamiento incorrecto." name="okhelpignore" yestext="OK"/>
+	</notification>
 	<notification name="PathfindingCannotRebakeNavmesh">
 		Se ha producido un error. Puede haber ocurrido un problema en la red o el servidor, o quizás no tengas derechos de construcción. Este problema podría resolverse cerrando la sesión e iniciando una sesión nueva.
 		<usetemplate name="okbutton" yestext="OK"/>
@@ -2772,9 +2757,9 @@ Del objeto: &lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;, propietario: [NAME]?
 		</form>
 	</notification>
 	<notification name="ScriptQuestionCaution">
-		Atención: El objeto &apos;&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;&apos; solicita un acceso pleno a tu cuenta de dólares Linden. Si le autorizas el acceso, podrá retirar fondos de tu cuenta en cualquier momento o vaciarla por completo, cuando lo desee y sin más advertencias.
+		Atención: El objeto &apos;&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;&apos; solicita un acceso total a tu cuenta de dólares Linden. Si le autorizas el acceso, podrá retirar fondos de tu cuenta en cualquier momento o vaciarla por completo, de manera permanente y sin más advertencias.
   
-No autorices el acceso a tu cuenta si no conoces cuál es la razón exacta.
+Estas solicitudes pocas veces son legítimas. No autorices el acceso si no conoces la razón exacta por la que desea el acceso a tu cuenta.
 		<form name="form">
 			<button name="Grant" text="Permitir acceso total"/>
 			<button name="Deny" text="Denegar"/>
@@ -3346,633 +3331,4 @@ Intento cancelado.
 		Vas a eliminar [NUM_ITEMS] objetos. ¿Estás seguro de que deseas continuar?
 		<usetemplate ignoretext="¿Estás seguro de que quieres eliminar varios elementos?" name="okcancelignore" notext="No" yestext="Sí"/>
 	</notification>
-	<notification name="AvatarFrozen">
-		[AV_FREEZER] te ha congelado. No puedes moverte ni interactuar con el mundo.
-	</notification>
-	<notification name="AvatarFrozenDuration">
-		[AV_FREEZER] te ha congelado durante [AV_FREEZE_TIME] segundos. No puedes moverte ni interactuar con el mundo.
-	</notification>
-	<notification name="YouFrozeAvatar">
-		Avatar congelado.
-	</notification>
-	<notification name="AvatarHasUnFrozenYou">
-		[AV_FREEZER] te ha descongelado.
-	</notification>
-	<notification name="AvatarUnFrozen">
-		Avatar descongelado.
-	</notification>
-	<notification name="AvatarFreezeFailure">
-		Error al congelar: no tienes permisos de administrador en esa parcela.
-	</notification>
-	<notification name="AvatarFreezeThaw">
-		La congelación ha terminado, puedes seguir con tus asuntos.
-	</notification>
-	<notification name="AvatarCantFreeze">
-		Lo sentimos, ese usuario no se puede congelar.
-	</notification>
-	<notification name="NowOwnObject">
-		Ahora eres el propietario del objeto [OBJECT_NAME]
-	</notification>
-	<notification name="CantRezOnLand">
-		No se puede colocar el objeto en [OBJECT_POS] porque el propietario de ese terreno no lo permite. Usa la herramienta de terreno para ver quién es el propietario.
-	</notification>
-	<notification name="RezFailTooManyRequests">
-		El objeto no se puede colocar porque hay demasiadas solicitudes.
-	</notification>
-	<notification name="SitFailCantMove">
-		No te puedes sentar porque en este momento no puedes desplazarte.
-	</notification>
-	<notification name="SitFailNotAllowedOnLand">
-		No te puedes sentar porque no tienes permiso para estar en ese terreno.
-	</notification>
-	<notification name="SitFailNotSameRegion">
-		Acércate. No te puedes sentar en el objeto porque
-no está en la misma región que tú.
-	</notification>
-	<notification name="NoNewObjectRegionFull">
-		No se puede crear el nuevo objeto. La región está llena.
-	</notification>
-	<notification name="FailedToPlaceObject">
-		Error al colocar el objeto en el lugar especificado.  Vuelve a intentarlo.
-	</notification>
-	<notification name="NoOwnNoGardening">
-		No puedes crear árboles y hierba en un terreno que no es tuyo.
-	</notification>
-	<notification name="NoCopyPermsNoObject">
-		Error al copiar: careces de permiso para copiar el objeto &apos;[OBJ_NAME]&apos;.
-	</notification>
-	<notification name="NoTransPermsNoObject">
-		Error al copiar: no se te puede transferir el objeto &apos;[OBJ_NAME]&apos;.
-	</notification>
-	<notification name="AddToNavMeshNoCopy">
-		Error al copiar porque el objeto &apos;[OBJ_NAME]&apos; contribuye al navmesh.
-	</notification>
-	<notification name="DupeWithNoRootsSelected">
-		Duplicación sin objetos raíz seleccionados.
-	</notification>
-	<notification name="CantDupeCuzRegionIsFull">
-		No se pueden duplicar objetos porque la región está llena.
-	</notification>
-	<notification name="CantDupeCuzParcelNotFound">
-		No se pueden duplicar los objetos: no se encuentra la parcela en la que se hallan.
-	</notification>
-	<notification name="CantCreateCuzParcelFull">
-		No se puede crear el objeto porque 
-la parcela está llena.
-	</notification>
-	<notification name="RezAttemptFailed">
-		Error al intentar colocar un objeto.
-	</notification>
-	<notification name="ToxicInvRezAttemptFailed">
-		No se puede crear un objeto que ha causado problemas en esta región.
-	</notification>
-	<notification name="InvItemIsBlacklisted">
-		Ese objeto de inventario está en la lista negra.
-	</notification>
-	<notification name="NoCanRezObjects">
-		Actualmente no tienes autorización para crear objetos.
-	</notification>
-	<notification name="LandSearchBlocked">
-		Búsqueda de terrenos bloqueada.
-Has realizado demasiadas búsquedas de terreno con excesiva rapidez.
-Prueba otra vez dentro de un minuto.
-	</notification>
-	<notification name="NotEnoughResourcesToAttach">
-		No hay suficientes recursos de script disponibles para anexar el objeto
-	</notification>
-	<notification name="YouDiedAndGotTPHome">
-		Has muerto y te has teleportado a tu lugar de origen
-	</notification>
-	<notification name="EjectComingSoon">
-		Te han expulsado de aquí y tienes [EJECT_TIME] segundos para salir.
-	</notification>
-	<notification name="NoEnterServerFull">
-		No puedes entrar en esta región porque 
-el servidor está lleno.
-	</notification>
-	<notification name="SaveBackToInvDisabled">
-		Se ha deshabilitado Devolver el objeto a mi inventario.
-	</notification>
-	<notification name="NoExistNoSaveToContents">
-		No se puede guardar &apos;[OBJ_NAME]&apos; en el contenido del objeto porque el objeto desde el cual ha sido colocado ya no existe.
-	</notification>
-	<notification name="NoModNoSaveToContents">
-		No se puede guardar &apos;[OBJ_NAME]&apos; en el contenido del objeto porque no tienes permiso para modificar el objeto &apos;[DEST_NAME]&apos;.
-	</notification>
-	<notification name="NoSaveBackToInvDisabled">
-		No se puede guardar &apos;[OBJ_NAME]&apos; de nuevo en el inventario; esta operación está desactivada.
-	</notification>
-	<notification name="NoCopyNoSelCopy">
-		No se puede copiar tu selección porque no tienes permiso para copiar el objeto &apos;[OBJ_NAME]&apos;.
-	</notification>
-	<notification name="NoTransNoSelCopy">
-		No se puede copiar tu selección porque el objeto &apos;[OBJ_NAME]&apos; es intransferible.
-	</notification>
-	<notification name="NoTransNoCopy">
-		No se puede copiar tu selección porque el objeto &apos;[OBJ_NAME]&apos; es intransferible.
-	</notification>
-	<notification name="NoPermsNoRemoval">
-		El sistema de permisos no admite la eliminación del objeto &apos;[OBJ_NAME]&apos; del simulador.
-	</notification>
-	<notification name="NoModNoSaveSelection">
-		No se puede guardar tu selección porque no tienes permiso para modificar el objeto &apos;[OBJ_NAME]&apos;.
-	</notification>
-	<notification name="NoCopyNoSaveSelection">
-		No se puede guardar tu selección porque el objeto &apos;[OBJ_NAME]&apos; no se puede copiar.
-	</notification>
-	<notification name="NoModNoTaking">
-		No se puede aceptar tu selección porque no tienes permiso para modificar el objeto &apos;[OBJ_NAME]&apos;.
-	</notification>
-	<notification name="RezDestInternalError">
-		Error interno: tipo de destino desconocido.
-	</notification>
-	<notification name="DeleteFailObjNotFound">
-		Error al borrar: el objeto no se encuentra
-	</notification>
-	<notification name="SorryCantEjectUser">
-		Lo sentimos, ese usuario no se puede expulsar.
-	</notification>
-	<notification name="RegionSezNotAHome">
-		Esta región no te permite configurar aquí tu lugar de origen.
-	</notification>
-	<notification name="HomeLocationLimits">
-		Tu &apos;Lugar de origen&apos; solo se puede configurar en tu terreno o en un punto de información del continente.
-	</notification>
-	<notification name="HomePositionSet">
-		Posición de origen ajustada.
-	</notification>
-	<notification name="AvatarEjected">
-		Avatar expulsado.
-	</notification>
-	<notification name="AvatarEjectFailed">
-		Error al expulsar: no tienes permiso de administrador en esa parcela.
-	</notification>
-	<notification name="CantMoveObjectParcelFull">
-		No se puede mover el objeto &apos;[OBJECT_NAME]&apos; a
-[OBJ_POSITION] en la región [REGION_NAME] porque la parcela está llena.
-	</notification>
-	<notification name="CantMoveObjectParcelPerms">
-		No se puede mover el objeto &apos;[OBJECT_NAME]&apos; a
-[OBJ_POSITION] de la región [REGION_NAME] porque tus objetos no están permitidos en esta parcela.
-	</notification>
-	<notification name="CantMoveObjectParcelResources">
-		No se puede mover el objeto &apos;[OBJECT_NAME]&apos; a
-[OBJ_POSITION] de la región [REGION_NAME] porque no hay suficientes recursos para este objeto en esta parcela.
-	</notification>
-	<notification name="CantMoveObjectRegionVersion">
-		No se puede mover el objeto &apos;[OBJECT_NAME]&apos; a
-[OBJ_POSITION] de la región [REGION_NAME] porque la otra región ejecuta una versión más antigua que no admite la recepción de este objeto atravesando regiones.
-	</notification>
-	<notification name="CantMoveObjectNavMesh">
-		No se puede mover el objeto &apos;[OBJECT_NAME]&apos; a
-[OBJ_POSITION] en la región [REGION_NAME] porque no puedes modificar el navmesh a través de límites de región.
-	</notification>
-	<notification name="CantMoveObjectWTF">
-		No se puede mover el objeto &apos;[OBJECT_NAME]&apos; a
-[OBJ_POSITION] en la región [REGION_NAME] por un motivo desconocido. ([FAILURE_TYPE])
-	</notification>
-	<notification name="NoPermModifyObject">
-		No tienes permiso para modificar ese objeto
-	</notification>
-	<notification name="CantEnablePhysObjContributesToNav">
-		No se puede habilitar la física para un objeto que contribuye al navmesh.
-	</notification>
-	<notification name="CantEnablePhysKeyframedObj">
-		No se puede activar la física para los objetos con fotogramas clave.
-	</notification>
-	<notification name="CantEnablePhysNotEnoughLandResources">
-		No se puede habilitar la física para el objeto: recursos de terreno insuficientes.
-	</notification>
-	<notification name="CantEnablePhysCostTooGreat">
-		No se puede activar la física para un objeto con un coste de recursos de física mayor que [MAX_OBJECTS]
-	</notification>
-	<notification name="PhantomWithConcavePiece">
-		Este objeto no puede tener una pieza cóncava porque es inmaterial y contribuye al navmesh.
-	</notification>
-	<notification name="UnableAddItem">
-		¡No se puede añadir un objeto!
-	</notification>
-	<notification name="UnableEditItem">
-		¡No se puede editar esto!
-	</notification>
-	<notification name="NoPermToEdit">
-		No puedes editar esto.
-	</notification>
-	<notification name="NoPermToCopyInventory">
-		No está permitido copiar ese inventario.
-	</notification>
-	<notification name="CantSaveItemDoesntExist">
-		No se puede guardar en el contenido del objeto: el objeto ya no existe.
-	</notification>
-	<notification name="CantSaveItemAlreadyExists">
-		No se puede guardar en el contenido del objeto: el inventario ya contiene un objeto con ese nombre
-	</notification>
-	<notification name="CantSaveModifyAttachment">
-		No se puede guardar en el contenido del objeto: se modificarían los permisos de anexo.
-	</notification>
-	<notification name="TooManyScripts">
-		Demasiados scripts.
-	</notification>
-	<notification name="UnableAddScript">
-		¡No se puede añadir un script!
-	</notification>
-	<notification name="AssetServerTimeoutObjReturn">
-		El servidor de objetos no respondió puntualmente. El objeto se ha devuelto al sim.
-	</notification>
-	<notification name="RegionDisablePhysicsShapes">
-		Esta región no tiene habilitadas las formas de física.
-	</notification>
-	<notification name="NoModNavmeshAcrossRegions">
-		No se puede modificar el navmesh a través de límites de región.
-	</notification>
-	<notification name="NoSetPhysicsPropertiesOnObjectType">
-		No se pueden establecer propiedades de física en ese tipo de objeto.
-	</notification>
-	<notification name="NoSetRootPrimWithNoShape">
-		No se puede establecer que un prim raíz no tenga forma.
-	</notification>
-	<notification name="NoRegionSupportPhysMats">
-		Esta región no tiene habilitados los materiales de física.
-	</notification>
-	<notification name="OnlyRootPrimPhysMats">
-		Solo se pueden ajustar los materiales de física de las prims raíces.
-	</notification>
-	<notification name="NoSupportCharacterPhysMats">
-		Aun no es posible configurar materiales de física para los personajes.
-	</notification>
-	<notification name="InvalidPhysMatProperty">
-		Una o varias de las propiedades de los materiales de física especificados no son válidas.
-	</notification>
-	<notification name="NoPermsAlterStitchingMeshObj">
-		No se puede cambiar el tipo de unión de un objeto de la malla.
-	</notification>
-	<notification name="NoPermsAlterShapeMeshObj">
-		No se puede cambiar la forma de un objeto de la malla
-	</notification>
-	<notification name="FullRegionCantEnter">
-		No puedes entrar en esta región porque \nla región está llena.
-	</notification>
-	<notification name="LinkFailedOwnersDiffer">
-		Error de vínculo: los propietarios son diferentes
-	</notification>
-	<notification name="LinkFailedNoModNavmeshAcrossRegions">
-		Error de vínculo: no se puede modificar el navmesh a través de límites de región.
-	</notification>
-	<notification name="LinkFailedNoPermToEdit">
-		Error de vínculo: no tienes permiso de edición.
-	</notification>
-	<notification name="LinkFailedTooManyPrims">
-		Error de vínculo: demasiadas primitivas
-	</notification>
-	<notification name="LinkFailedCantLinkNoCopyNoTrans">
-		Error de vínculo: no se pueden vincular &apos;no copiable&apos; y &apos;no transferible&apos;
-	</notification>
-	<notification name="LinkFailedNothingLinkable">
-		Error de vínculo: no hay objetos que se puedan vincular.
-	</notification>
-	<notification name="LinkFailedTooManyPathfindingChars">
-		Error de vínculo: demasiados personajes de pathfinding
-	</notification>
-	<notification name="LinkFailedInsufficientLand">
-		Error de vínculo: recursos de terreno insuficientes
-	</notification>
-	<notification name="LinkFailedTooMuchPhysics">
-		El objeto utiliza una cantidad excesiva de recursos de física; se ha desactivado su dinámica.
-	</notification>
-	<notification name="TeleportedHomeByObjectOnParcel">
-		Has sido teleportado al origen por el objeto &apos;[OBJECT_NAME]&apos; de la parcela &apos;[PARCEL_NAME]&apos;
-	</notification>
-	<notification name="TeleportedHomeByObject">
-		Has sido teleportado a tu origen por el objeto &apos;[OBJECT_NAME]&apos;
-	</notification>
-	<notification name="TeleportedByAttachment">
-		Has sido teleportado por un anexo de [ITEM_ID]
-	</notification>
-	<notification name="TeleportedByObjectOnParcel">
-		Has sido teleportado por el objeto &apos;[OBJECT_NAME]&apos; de la parcela &apos;[PARCEL_NAME]&apos;
-	</notification>
-	<notification name="TeleportedByObjectOwnedBy">
-		Has sido teleportado por el objeto &apos;[OBJECT_NAME]&apos; que es propiedad de [OWNER_ID]
-	</notification>
-	<notification name="TeleportedByObjectUnknownUser">
-		Has sido teleportado por el objeto &apos;[OBJECT_NAME]&apos; cuyo propietario es un usuario desconocido.
-	</notification>
-	<notification name="CantCreateObjectRegionFull">
-		No se puede crear el objeto solicitado. La región está llena.
-	</notification>
-	<notification name="CantAttackMultipleObjOneSpot">
-		No puedes anexar varios objetos a un solo lugar.
-	</notification>
-	<notification name="CantCreateMultipleObjAtLoc">
-		Aquí no se pueden crear varios objetos.
-	</notification>
-	<notification name="UnableToCreateObjTimeOut">
-		No se puede crear el objeto solicitado. El objeto no se encuentra en la base de datos.
-	</notification>
-	<notification name="UnableToCreateObjUnknown">
-		No se puede crear el objeto solicitado. Ha expirado el tiempo de la solicitud. Vuelve a intentarlo.
-	</notification>
-	<notification name="UnableToCreateObjMissingFromDB">
-		No se puede crear el objeto solicitado. Vuelve a intentarlo.
-	</notification>
-	<notification name="RezFailureTookTooLong">
-		Error al colocar: la carga del objeto solicitado ha tardado demasiado.
-	</notification>
-	<notification name="FailedToPlaceObjAtLoc">
-		Error al colocar el objeto en el lugar especificado. Vuelve a intentarlo.
-	</notification>
-	<notification name="CantCreatePlantsOnLand">
-		No se pueden crear plantas en este terreno.
-	</notification>
-	<notification name="CantRestoreObjectNoWorldPos">
-		No se puede restaurar el objeto. No se ha encontrado una posición del mundo.
-	</notification>
-	<notification name="CantRezObjectInvalidMeshData">
-		No se puede colocar el objeto porque sus datos de malla no son válidos.
-	</notification>
-	<notification name="CantRezObjectTooManyScripts">
-		No se puede colocar el objeto porque la región ya contiene demasiados scripts.
-	</notification>
-	<notification name="CantCreateObjectNoAccess">
-		Tus privilegios de acceso no te permiten crear objetos allí.
-	</notification>
-	<notification name="CantCreateObject">
-		Actualmente no tienes autorización para crear objetos.
-	</notification>
-	<notification name="InvalidObjectParams">
-		Los parámetros de objeto no son válidos
-	</notification>
-	<notification name="CantDuplicateObjectNoAcess">
-		Tus privilegios de acceso no te permiten duplicar objetos aquí.
-	</notification>
-	<notification name="CantChangeShape">
-		No tienes permiso para cambiar esta forma.
-	</notification>
-	<notification name="NoAccessToClaimObjects">
-		Tus privilegios de acceso no te permiten reclamar objetos aquí.
-	</notification>
-	<notification name="DeedFailedNoPermToDeedForGroup">
-		Error de transferencia: no tienes permiso para transferir objetos para tu grupo.
-	</notification>
-	<notification name="NoPrivsToBuyObject">
-		Tus privilegios de acceso no te autorizan a comprar objetos aquí.
-	</notification>
-	<notification name="CantAttachObjectAvatarSittingOnIt">
-		No se puede anexar el objeto porque un avatar está sentado en él.
-	</notification>
-	<notification name="WhyAreYouTryingToWearShrubbery">
-		No te puedes poner árboles y hierba como anexos.
-	</notification>
-	<notification name="CantAttachGroupOwnedObjs">
-		No se pueden anexar objetos que son propiedad de grupos.
-	</notification>
-	<notification name="CantAttachObjectsNotOwned">
-		No puedes anexar objetos de los que no eres propietario.
-	</notification>
-	<notification name="CantAttachNavmeshObjects">
-		No se pueden anexar objetos que contribuyen al navmesh.
-	</notification>
-	<notification name="CantAttachObjectNoMovePermissions">
-		No se puede anexar el objeto porque no tienes permiso para moverlo.
-	</notification>
-	<notification name="CantAttachNotEnoughScriptResources">
-		No hay suficientes recursos de script disponibles para anexar el objeto
-	</notification>
-	<notification name="CantDropItemTrialUser">
-		No se pueden soltar objetos aquí; inténtalo en la zona de prueba gratuita.
-	</notification>
-	<notification name="CantDropMeshAttachment">
-		No se pueden soltar anexos de la malla. Quítalos en el inventario y después colócalos en el mundo.
-	</notification>
-	<notification name="CantDropAttachmentNoPermission">
-		Error al soltar el anexo: no tienes permiso para soltarlo allí.
-	</notification>
-	<notification name="CantDropAttachmentInsufficientLandResources">
-		Error al soltar el anexo: recurso de terreno disponible insuficiente.
-	</notification>
-	<notification name="CantDropAttachmentInsufficientResources">
-		Error al soltar los anexos: los recursos disponibles son insuficientes.
-	</notification>
-	<notification name="CantDropObjectFullParcel">
-		No se puede soltar el objeto aquí. La parcela está llena.
-	</notification>
-	<notification name="CantTouchObjectBannedFromParcel">
-		No puedes tocar/agarrar este objeto porque tienes prohibida la entrada en la parcela de terreno.
-	</notification>
-	<notification name="PlzNarrowDeleteParams">
-		Acota los parámetros de eliminación.
-	</notification>
-	<notification name="UnableToUploadAsset">
-		No se puede subir el activo.
-	</notification>
-	<notification name="CantTeleportCouldNotFindUser">
-		No se ha podido encontrar el usuario para teleportarlo al origen
-	</notification>
-	<notification name="GodlikeRequestFailed">
-		error en la solicitud de superpoderes
-	</notification>
-	<notification name="GenericRequestFailed">
-		error de solicitud genérico
-	</notification>
-	<notification name="CantUploadPostcard">
-		No se puede subir la postal. Vuelve a intentarlo más tarde.
-	</notification>
-	<notification name="CantFetchInventoryForGroupNotice">
-		No se pueden obtener los datos de inventario del aviso de grupo.
-	</notification>
-	<notification name="CantSendGroupNoticeNotPermitted">
-		No se puede enviar el aviso de grupo: no está permitido.
-	</notification>
-	<notification name="CantSendGroupNoticeCantConstructInventory">
-		No se puede enviar el aviso del grupo: el inventario no se puede construir.
-	</notification>
-	<notification name="CantParceInventoryInNotice">
-		No se puede analizar el inventario del aviso.
-	</notification>
-	<notification name="TerrainUploadFailed">
-		Error al subir terreno.
-	</notification>
-	<notification name="TerrainFileWritten">
-		Se ha registrado el archivo de terreno.
-	</notification>
-	<notification name="TerrainFileWrittenStartingDownload">
-		Archivo de terreno registrado, iniciando la descarga...
-	</notification>
-	<notification name="TerrainBaked">
-		Terreno predeterminado.
-	</notification>
-	<notification name="TenObjectsDisabledPlzRefresh">
-		Solamente se han desactivado los 10 primeros objetos seleccionados. Si es preciso, actualiza y selecciona otros objetos.
-	</notification>
-	<notification name="UpdateViewerBuyParcel">
-		Para comprar esta parcela debes actualizar el visor.
-	</notification>
-	<notification name="CantBuyParcelNotForSale">
-		Error al comprar: esta parcela no está en venta.
-	</notification>
-	<notification name="CantBuySalePriceOrLandAreaChanged">
-		No se puede comprar: el precio de venta o la superficie del terreno han cambiado.
-	</notification>
-	<notification name="CantBuyParcelNotAuthorized">
-		No eres el comprador autorizado de esta parcela.
-	</notification>
-	<notification name="CantBuyParcelAwaitingPurchaseAuth">
-		No puedes comprar esta parcela porque ya está en espera de una autorización de compra
-	</notification>
-	<notification name="CantBuildOverflowParcel">
-		No se pueden construir objetos aquí porque se desbordaría la parcela.
-	</notification>
-	<notification name="SelectedMultipleOwnedLand">
-		Has seleccionado un terreno con propietarios diferentes. Selecciona un área más pequeña y repite la operación.
-	</notification>
-	<notification name="CantJoinTooFewLeasedParcels">
-		La selección no contiene suficientes parcelas alquiladas para unirlas.
-	</notification>
-	<notification name="CantDivideLandMultipleParcelsSelected">
-		No se puede dividir el terreno.\nHay varias parcelas seleccionadas.\nPrueba a seleccionar un terreno más pequeño.
-	</notification>
-	<notification name="CantDivideLandCantFindParcel">
-		No se puede dividir el terreno.\nNo se encuentra la parcela.\nAvísanos con Ayuda -&gt; Notificar fallo...
-	</notification>
-	<notification name="CantDivideLandWholeParcelSelected">
-		No se puede dividir el terreno. Está seleccionada la parcela completa.\nPrueba a seleccionar un terreno más pequeño.
-	</notification>
-	<notification name="LandHasBeenDivided">
-		El terreno se ha dividido.
-	</notification>
-	<notification name="PassPurchased">
-		Has comprado un pase.
-	</notification>
-	<notification name="RegionDisallowsClassifieds">
-		La región no permite anuncios.
-	</notification>
-	<notification name="LandPassExpireSoon">
-		Tu pase para este terreno está a punto de caducar.
-	</notification>
-	<notification name="CantSitNoSuitableSurface">
-		Esta superficie no es adecuada para sentarse, prueba en otro sitio.
-	</notification>
-	<notification name="CantSitNoRoom">
-		No hay sitio para sentarse aquí, prueba en otro lugar.
-	</notification>
-	<notification name="ClaimObjectFailedNoPermission">
-		Error al reclamar el objeto: no tienes permiso
-	</notification>
-	<notification name="ClaimObjectFailedNoMoney">
-		Error al reclamar el objeto: no tienes suficientes L$.
-	</notification>
-	<notification name="CantDeedGroupLand">
-		No se puede transferir un terreno propiedad de un grupo.
-	</notification>
-	<notification name="BuyObjectFailedNoMoney">
-		Error al comprar el objeto, no tienes suficientes L$.
-	</notification>
-	<notification name="BuyInventoryFailedNoMoney">
-		Error al comprar el inventario: no tienes suficientes L$.
-	</notification>
-	<notification name="BuyPassFailedNoMoney">
-		No tienes suficientes L$ para comprar un pase a este terreno.
-	</notification>
-	<notification name="CantBuyPassTryAgain">
-		No se puede comprar el pase ahora mismo. Vuelve a intentarlo más tarde.
-	</notification>
-	<notification name="CantCreateObjectParcelFull">
-		No se puede crear el objeto porque \nla parcela está llena.
-	</notification>
-	<notification name="FailedPlacingObject">
-		Error al colocar el objeto en el lugar especificado.  Vuelve a intentarlo.
-	</notification>
-	<notification name="CantCreateLandmarkForEvent">
-		No se puede crear un hito para el evento.
-	</notification>
-	<notification name="GodBeatsFreeze">
-		¡Tus superpoderes anulan la congelación!
-	</notification>
-	<notification name="SpecialPowersRequestFailedLogged">
-		Error en la solicitud de poderes especiales. Esta solicitud se ha registrado.
-	</notification>
-	<notification name="ExpireExplanation">
-		El sistema actualmente no puede procesar tu solicitud. Ha expirado el tiempo de la solicitud.
-	</notification>
-	<notification name="DieExplanation">
-		El sistema no puede procesar tu solicitud.
-	</notification>
-	<notification name="AddPrimitiveFailure">
-		Dinero insuficiente para crear la primitiva.
-	</notification>
-	<notification name="RezObjectFailure">
-		Dinero insuficiente para crear el objeto.
-	</notification>
-	<notification name="ResetHomePositionNotLegal">
-		Se ha restaurado la posición de origen, puesto que dicha posición no era válida.
-	</notification>
-	<notification name="CantInviteRegionFull">
-		Actualmente no puedes invitar a nadie a tu ubicación, puesto que la región está llena. Vuelve a intentarlo más tarde.
-	</notification>
-	<notification name="CantSetHomeAtRegion">
-		Esta región no te permite configurar aquí tu lugar de origen.
-	</notification>
-	<notification name="ListValidHomeLocations">
-		Tu &apos;Lugar de origen&apos; solo se puede configurar en tu terreno o en un punto de información del continente.
-	</notification>
-	<notification name="SetHomePosition">
-		Posición de origen ajustada.
-	</notification>
-	<notification name="CantDerezInventoryError">
-		No se puede quitar el objeto por un error del inventario.
-	</notification>
-	<notification name="CantCreateRequestedInv">
-		No se puede crear el inventario solicitado.
-	</notification>
-	<notification name="CantCreateRequestedInvFolder">
-		No se puede crear la carpeta de inventario solicitada.
-	</notification>
-	<notification name="CantCreateInventory">
-		No se puede crear el inventario.
-	</notification>
-	<notification name="CantCreateLandmark">
-		No se puede crear un hito.
-	</notification>
-	<notification name="CantCreateOutfit">
-		No se puede crear el vestuario en este momento. Prueba otra vez dentro de un minuto.
-	</notification>
-	<notification name="InventoryNotForSale">
-		El inventario no está en venta.
-	</notification>
-	<notification name="CantFindInvItem">
-		No se encuentra el objeto del inventario.
-	</notification>
-	<notification name="CantFindObject">
-		No se puede encontrar el objeto.
-	</notification>
-	<notification name="CantTransfterMoneyRegionDisabled">
-		En esta región actualmente no están activadas las transferencias de dinero a los objetos.
-	</notification>
-	<notification name="CantPayNoAgent">
-		No se ha averiguado a quién se debe pagar.
-	</notification>
-	<notification name="CantDonateToPublicObjects">
-		No se pueden dar L$ a los objetos públicos.
-	</notification>
-	<notification name="InventoryCreationInWorldObjectFailed">
-		Error al crear un inventario de objeto del mundo virtual.
-	</notification>
-	<notification name="UserBalanceOrLandUsageError">
-		Un error interno nos ha impedido actualizar tu visor correctamente. El saldo en L$ o las parcelas en propiedad presentadas en el visor podrían no coincidir con tu saldo real en los servidores.
-	</notification>
-	<notification name="LargePrimAgentIntersect">
-		No se pueden crear prims grandes que intersectan a otros jugadores. Reinténtalo cuando se hayan movido otros jugadores.
-	</notification>
-	<notification name="PreferenceChatClearLog">
-		Esto eliminará los registros de conversaciones anteriores y las copias de seguridad de ese archivo.
-		<usetemplate ignoretext="Confirmar antes de eliminar el registro de conversaciones anteriores." name="okcancelignore" notext="Cancelar" yestext="OK"/>
-	</notification>
-	<notification name="PreferenceChatDeleteTranscripts">
-		Esta acción eliminará las transcripciones de todas las conversaciones anteriores. La lista de conversaciones pasadas no resultará afectada. Se eliminarán de la carpeta [FOLDER] todos los archivos que tengan el sufijo .txt y txt.backup.
-		<usetemplate ignoretext="Confirmar antes de eliminar transcripciones." name="okcancelignore" notext="Cancelar" yestext="OK"/>
-	</notification>
-	<notification name="PreferenceChatPathChanged">
-		No se pueden mover los archivos. Ruta anterior restaurada.
-		<usetemplate ignoretext="No se pueden mover los archivos. Ruta anterior restaurada." name="okignore" yestext="OK"/>
-	</notification>
 </notifications>
diff --git a/indra/newview/skins/default/xui/es/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/es/panel_avatar_list_item.xml
index c73e34b299f..5220df5d21b 100644
--- a/indra/newview/skins/default/xui/es/panel_avatar_list_item.xml
+++ b/indra/newview/skins/default/xui/es/panel_avatar_list_item.xml
@@ -26,6 +26,5 @@
 	<icon name="permission_edit_mine_icon" tool_tip="Este amigo puede editar, eliminar o manipular tus objetos"/>
 	<icon name="permission_map_icon" tool_tip="Este amigo puede encontrarte en el mapa"/>
 	<icon name="permission_online_icon" tool_tip="Este amigo puede ver cuándo estás conectado"/>
-	<button name="info_btn" tool_tip="Más información"/>
 	<button name="profile_btn" tool_tip="Ver el perfil"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/es/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/es/panel_block_list_sidetray.xml
index a3de14ae670..cddbad1195c 100644
--- a/indra/newview/skins/default/xui/es/panel_block_list_sidetray.xml
+++ b/indra/newview/skins/default/xui/es/panel_block_list_sidetray.xml
@@ -1,11 +1,10 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="block_list_panel">
-	<panel label="bottom_panel" name="blocked_buttons_panel">
-		<filter_editor label="Filtro" name="blocked_filter_input"/>
-		<menu_button name="blocked_gear_btn" tool_tip="Acciones en la persona o el objeto seleccionado"/>
-		<menu_button name="view_btn" tool_tip="Opciones de clasificación"/>
-		<menu_button name="plus_btn" tool_tip="Elige un residente o un objeto para ignorarlo"/>
-		<button name="unblock_btn" tool_tip="Quita al Residente o al objeto de la lista de ignorados"/>
-	</panel>
-	<block_list name="blocked" tool_tip="Lista de los residentes ignorados actualmente"/>
+	<text name="title_text">
+		Lista de ignorados
+	</text>
+	<scroll_list name="blocked" tool_tip="Lista de los residentes ignorados actualmente"/>
+	<button label="Ignorar al residente..." label_selected="Ignorar al residente..." name="Block resident..." tool_tip="Elige a un Residente para ignorarle"/>
+	<button label="Ignorar objetos según el nombre..." label_selected="Ignorar objetos según el nombre..." name="Block object by name..."/>
+	<button label="No ignorar" label_selected="No ignorar" name="Unblock" tool_tip="Quita al Residente o al objeto de la lista de ignorados"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/es/panel_conversation_list_item.xml b/indra/newview/skins/default/xui/es/panel_conversation_list_item.xml
deleted file mode 100644
index cc4a7e951d5..00000000000
--- a/indra/newview/skins/default/xui/es/panel_conversation_list_item.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="conversation_list_item">
-	<layout_stack name="conversation_item_stack">
-		<layout_panel name="conversation_title_panel">
-			<text name="conversation_title" value="(cargando)"/>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_conversation_log_list_item.xml b/indra/newview/skins/default/xui/es/panel_conversation_log_list_item.xml
deleted file mode 100644
index 2fc8cd3affc..00000000000
--- a/indra/newview/skins/default/xui/es/panel_conversation_log_list_item.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="conversation_log_list_item">
-	<icon name="voice_session_icon" tool_tip="La conversación incluía voz"/>
-	<icon name="unread_ims_icon" tool_tip="Han llegado mensajes mientras no tenías conexión"/>
-	<button name="delete_btn" tool_tip="Quitar esta entrada"/>
-</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_group_list_item.xml b/indra/newview/skins/default/xui/es/panel_group_list_item.xml
index 4d682068d78..5c9f1c3688c 100644
--- a/indra/newview/skins/default/xui/es/panel_group_list_item.xml
+++ b/indra/newview/skins/default/xui/es/panel_group_list_item.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="group_list_item">
 	<text name="group_name" value="Desconocido"/>
-	<button name="info_btn" tool_tip="Más información"/>
 	<button name="profile_btn" tool_tip="Ver el perfil"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/es/panel_people.xml b/indra/newview/skins/default/xui/es/panel_people.xml
index 7a7dfca0b8e..a9d38dca250 100644
--- a/indra/newview/skins/default/xui/es/panel_people.xml
+++ b/indra/newview/skins/default/xui/es/panel_people.xml
@@ -14,53 +14,81 @@
 	<string name="no_filtered_friends_msg">
 		¿No encuentras lo que buscas? Prueba con [secondlife:///app/search/people/[SEARCH_TERM] Buscar].
 	</string>
+	<string name="people_filter_label" value="Filtrar a la gente"/>
+	<string name="groups_filter_label" value="Filtrar a los grupos"/>
 	<string name="no_filtered_groups_msg" value="¿No encuentras lo que buscas? Prueba con [secondlife:///app/search/groups/[SEARCH_TERM] Buscar]."/>
 	<string name="no_groups_msg" value="¿Buscas grupos en que participar? Prueba la [secondlife:///app/search/groups Búsqueda]."/>
 	<string name="MiniMapToolTipMsg" value="[REGION](Pulsa dos veces para abrir el mapa, pulsa mayús y arrastra para obtener una panorámica)"/>
 	<string name="AltMiniMapToolTipMsg" value="[REGION](Pulsa dos veces para teleportarte, pulsa mayús y arrastra para obtener una panorámica)"/>
+	<filter_editor label="Filtrar" name="filter_input"/>
 	<tab_container name="tabs">
 		<panel label="CERCANA" name="nearby_panel">
-			<panel label="bottom_panel" name="nearby_buttons_panel">
-				<filter_editor label="Filtrar la gente" name="nearby_filter_input"/>
-				<button name="gear_btn" tool_tip="Acciones en la persona seleccionada"/>
-				<menu_button name="nearby_view_btn" tool_tip="Opciones de vista/orden"/>
-				<button name="add_friend_btn" tool_tip="Ofrecer amistad a un residente"/>
-				<dnd_button name="nearby_del_btn" tool_tip="Quitar la persona seleccionada de la lista de amigos"/>
+			<panel label="bottom_panel" name="bottom_panel">
+				<menu_button name="nearby_view_sort_btn" tool_tip="Opciones"/>
+				<button name="add_friend_btn" tool_tip="Añadir al Residente seleccionado a la lista de tus amigos"/>
 			</panel>
 		</panel>
-		<panel label="AMIGOS" name="friends_panel">
-			<panel label="bottom_panel" name="friends_buttons_panel">
-				<filter_editor label="Filtrar la gente" name="friends_filter_input"/>
-				<button name="gear_btn" tool_tip="Acciones en la persona seleccionada"/>
-				<menu_button name="friends_view_btn" tool_tip="Opciones de vista/orden"/>
-				<button name="friends_add_btn" tool_tip="Ofrecer amistad a un residente"/>
-				<dnd_button name="friends_del_btn" tool_tip="Quitar la persona seleccionada de la lista de amigos"/>
-			</panel>
+		<panel label="MIS AMIGOS" name="friends_panel">
 			<accordion name="friends_accordion">
 				<accordion_tab name="tab_online" title="Conectado"/>
 				<accordion_tab name="tab_all" title="Todos"/>
 			</accordion>
+			<panel label="bottom_panel" name="bottom_panel">
+				<layout_stack name="bottom_panel">
+					<layout_panel name="options_gear_btn_panel">
+						<menu_button name="friends_viewsort_btn" tool_tip="Ver más opciones"/>
+					</layout_panel>
+					<layout_panel name="add_btn_panel">
+						<button name="add_btn" tool_tip="Ofrecer amistad a un Residente"/>
+					</layout_panel>
+					<layout_panel name="trash_btn_panel">
+						<dnd_button name="del_btn" tool_tip="Quitar a la persona seleccionada de tu lista de amigos"/>
+					</layout_panel>
+				</layout_stack>
+			</panel>
 		</panel>
-		<panel label="GRUPOS" name="groups_panel">
-			<panel label="bottom_panel" name="groups_buttons_panel">
-				<filter_editor label="Filtrar los grupos" name="groups_filter_input"/>
-				<menu_button name="groups_gear_btn" tool_tip="Acciones en el grupo seleccionado"/>
-				<menu_button name="groups_view_btn" tool_tip="Opciones de vista/orden"/>
-				<menu_button name="plus_btn" tool_tip="Entrar en un grupo o crear uno"/>
-				<dnd_button name="minus_btn" tool_tip="Dejar el grupo seleccionado"/>
+		<panel label="MIS GRUPOS" name="groups_panel">
+			<panel label="bottom_panel" name="bottom_panel">
+				<menu_button name="groups_viewsort_btn" tool_tip="Opciones"/>
+				<button name="plus_btn" tool_tip="Entrar en un grupo o crear uno"/>
+				<button name="activate_btn" tool_tip="Activar el grupo seleccionado"/>
 			</panel>
 		</panel>
 		<panel label="RECIENTE" name="recent_panel">
-			<panel label="bottom_panel" name="recent_buttons_panel">
-				<filter_editor label="Filtrar la gente" name="recent_filter_input"/>
-				<button name="gear_btn" tool_tip="Acciones en la persona seleccionada"/>
-				<menu_button name="recent_view_btn" tool_tip="Opciones de vista/orden"/>
-				<button name="add_friend_btn" tool_tip="Ofrecer amistad a un residente"/>
-				<dnd_button name="recent_del_btn" tool_tip="Quitar la persona seleccionada de la lista de amigos"/>
+			<panel label="bottom_panel" name="bottom_panel">
+				<menu_button name="recent_viewsort_btn" tool_tip="Opciones"/>
+				<button name="add_friend_btn" tool_tip="Añadir al Residente seleccionado a la lista de tus amigos"/>
 			</panel>
 		</panel>
-		<panel label="BLOQUEADO" name="blocked_panel">
-			<panel label="Residentes y objetos ignorados" name="panel_block_list_sidetray"/>
-		</panel>
 	</tab_container>
+	<panel name="button_bar">
+		<layout_stack name="bottom_bar_ls">
+			<layout_panel name="view_profile_btn_lp">
+				<button label="Perfil" name="view_profile_btn" tool_tip="Mostrar imágenes, grupos y otra información del Residente"/>
+			</layout_panel>
+			<layout_panel name="im_btn_lp">
+				<button label="MI" name="im_btn" tool_tip="Abrir una sesión de mensajes instantáneos"/>
+			</layout_panel>
+			<layout_panel name="call_btn_lp">
+				<button label="Llamar" name="call_btn" tool_tip="Llamar a este Residente"/>
+			</layout_panel>
+			<layout_panel name="share_btn_lp">
+				<button label="Compartir" name="share_btn" tool_tip="Compartir un objeto del inventario"/>
+			</layout_panel>
+			<layout_panel name="teleport_btn_lp">
+				<button label="Teleporte" name="teleport_btn" tool_tip="Ofrecer teleporte"/>
+			</layout_panel>
+		</layout_stack>
+		<layout_stack name="bottom_bar_ls1">
+			<layout_panel name="group_info_btn_lp">
+				<button label="Perfil del grupo" name="group_info_btn" tool_tip="Ver la información del grupo"/>
+			</layout_panel>
+			<layout_panel name="chat_btn_lp">
+				<button label="Chat de grupo" name="chat_btn" tool_tip="Abrir el chat"/>
+			</layout_panel>
+			<layout_panel name="group_call_btn_lp">
+				<button label="Llamar al grupo" name="group_call_btn" tool_tip="Llama a este grupo"/>
+			</layout_panel>
+		</layout_stack>
+	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/es/panel_preferences_chat.xml b/indra/newview/skins/default/xui/es/panel_preferences_chat.xml
index 28bc98f9885..b0b6114e88e 100644
--- a/indra/newview/skins/default/xui/es/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/es/panel_preferences_chat.xml
@@ -1,86 +1,34 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Chat de texto" name="chat">
-	<panel>
-		<check_box initial_value="true" label="Ejecutar la animación de escribir al hacerlo en el chat" name="play_typing_animation"/>
-		<check_box label="Cuando estoy desconectado, enviarme los MI al correo-e" name="send_im_to_email"/>
-		<check_box label="Sólo pueden llamarme o mandarme un MI mis amigos y grupos" name="voice_call_friends_only_check"/>
-		<text name="font_size">
-			Tamaño de la fuente:
-		</text>
-		<combo_box name="chat_font_size">
-			<item label="Pequeña" name="Small" value="0"/>
-			<item label="Mediana" name="Medium" value="1"/>
-			<item label="Grande" name="Large" value="2"/>
-		</combo_box>
-		<check_box label="Bocadillos del chat" name="bubble_text_chat"/>
-	</panel>
-	<panel>
-		<text name="notifications">
-			Notificaciones
-		</text>
-		<text name="friend_ims">
-			MI de amigos:
-		</text>
-		<combo_box name="FriendIMOptions">
-			<item label="Ventana Conversaciones abiertas" name="OpenConversationsWindow" value="openconversations"/>
-			<item label="Mensaje en ventana emergente" name="PopUpMessage" value="toast"/>
-			<item label="Botón de la barra de herramientas de Flash" name="FlashToolbarButton" value="flash"/>
-			<item label="Ninguno" name="None" value="ninguno"/>
-		</combo_box>
-		<text name="non_friend_ims">
-			MI de no amigos:
-		</text>
-		<combo_box name="NonFriendIMOptions">
-			<item label="Ventana Conversaciones abiertas" name="OpenConversationsWindow" value="openconversations"/>
-			<item label="Mensaje en ventana emergente" name="PopUpMessage" value="toast"/>
-			<item label="Botón de la barra de herramientas de Flash" name="FlashToolbarButton" value="flash"/>
-			<item label="Ninguno" name="None" value="ninguno"/>
-		</combo_box>
-		<text name="conference_ims">
-			MI de conferencia:
-		</text>
-		<combo_box name="ConferenceIMOptions">
-			<item label="Ventana Conversaciones abiertas" name="OpenConversationsWindow" value="openconversations"/>
-			<item label="Mensaje en ventana emergente" name="PopUpMessage" value="toast"/>
-			<item label="Botón de la barra de herramientas de Flash" name="FlashToolbarButton" value="flash"/>
-			<item label="Ninguno" name="None" value="ninguno"/>
-		</combo_box>
-		<text name="group_chat">
-			Chat de grupo:
-		</text>
-		<combo_box name="GroupChatOptions">
-			<item label="Ventana Conversaciones abiertas" name="OpenConversationsWindow" value="openconversations"/>
-			<item label="Mensaje en ventana emergente" name="PopUpMessage" value="toast"/>
-			<item label="Botón de la barra de herramientas de Flash" name="FlashToolbarButton" value="flash"/>
-			<item label="Ninguno" name="None" value="ninguno"/>
-		</combo_box>
-		<text name="nearby_chat">
-			Chat:
-		</text>
-		<combo_box name="NearbyChatOptions">
-			<item label="Ventana Conversaciones abiertas" name="OpenConversationsWindow" value="openconversations"/>
-			<item label="Mensaje en ventana emergente" name="PopUpMessage" value="toast"/>
-			<item label="Botón de la barra de herramientas de Flash" name="FlashToolBarButton" value="flash"/>
-			<item label="Ninguno" name="None" value="ninguno"/>
-		</combo_box>
-		<text name="notifications_alert">
-			Para suspender provisionalmente todas las notificaciones, usa Comunicarme &gt; No molestar.
-		</text>
-	</panel>
-	<panel>
-		<text name="play_sound">
-			Reproducir sonido:
-		</text>
-		<check_box label="Nueva conversación" name="new_conversation"/>
-		<check_box label="Llamada de voz entrante" name="incoming_voice_call"/>
-		<check_box label="Oferta de teleporte" name="teleport_offer"/>
-		<check_box label="Oferta de inventario" name="inventory_offer"/>
-	</panel>
-	<panel>
-		<button label="Limpiar el registro..." name="clear_log"/>
-		<button label="Eliminar transcripciones..." name="delete_transcripts"/>
-		<button label="Examinar..." label_selected="Examinar" name="log_path_button"/>
-	</panel>
+	<text name="font_size">
+		Tamaño de la fuente:
+	</text>
+	<radio_group name="chat_font_size">
+		<radio_item label="Disminuir" name="radio" value="0"/>
+		<radio_item label="Medio" name="radio2" value="1"/>
+		<radio_item label="Aumentar" name="radio3" value="2"/>
+	</radio_group>
+	<check_box initial_value="true" label="Ejecutar la animación de escribir al hacerlo en el chat" name="play_typing_animation"/>
+	<check_box label="Cuando estoy desconectado, enviarme los MI al correo-e" name="send_im_to_email"/>
+	<check_box label="Permitir el historial de MI y chat en texto sin formato" name="plain_text_chat_history"/>
+	<check_box label="Bocadillos del chat" name="bubble_text_chat"/>
+	<text name="show_ims_in_label">
+		Mostrar los MI en:
+	</text>
+	<text name="requires_restart_label">
+		(requiere reiniciar)
+	</text>
+	<radio_group name="chat_window" tool_tip="Muestra tus mensajes instantáneos en varias ventanas flotantes o en una sola con varias pestañas (requiere que reinicies)">
+		<radio_item label="Ventanas distintas" name="radio" value="0"/>
+		<radio_item label="Pestañas" name="radio2" value="1"/>
+	</radio_group>
+	<text name="disable_toast_label">
+		Permitir ventanas de chat emergentes:
+	</text>
+	<check_box label="Chats de grupo" name="EnableGroupChatPopups" tool_tip="Activa esta casilla para ver una ventana emergente cada vez que recibas un mensaje de un grupo de chat"/>
+	<check_box label="Chats de MI" name="EnableIMChatPopups" tool_tip="Activa esta casilla para ver una ventana emergente cada vez que recibas un mensaje instantáneo"/>
+	<spinner label="Duración de los interlocutores favoritos:" name="nearby_toasts_lifetime"/>
+	<spinner label="Tiempo de los otros interlocutores:" name="nearby_toasts_fadingtime"/>
 	<button label="Traducción…" name="ok_btn"/>
 	<button label="Reemplazo automático..." name="autoreplace_showgui"/>
 	<button label="Revisión ortográfica..." name="spellcheck_showgui"/>
diff --git a/indra/newview/skins/default/xui/es/panel_preferences_general.xml b/indra/newview/skins/default/xui/es/panel_preferences_general.xml
index 98b0081da92..4fc163f5b67 100644
--- a/indra/newview/skins/default/xui/es/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/es/panel_preferences_general.xml
@@ -69,9 +69,6 @@
 		<combo_box.item label="nunca" name="item4"/>
 	</combo_box>
 	<text name="text_box3">
-		Respuesta de No molestar:
+		Respuesta cuando estoy en modo ocupado:
 	</text>
-	<text_editor name="do_not_disturb_response">
-		log_in_to_change
-	</text_editor>
 </panel>
diff --git a/indra/newview/skins/default/xui/es/sidepanel_task_info.xml b/indra/newview/skins/default/xui/es/sidepanel_task_info.xml
index cb061796e79..9da29589536 100644
--- a/indra/newview/skins/default/xui/es/sidepanel_task_info.xml
+++ b/indra/newview/skins/default/xui/es/sidepanel_task_info.xml
@@ -72,7 +72,6 @@
 			<combo_box.item label="Comprar el objeto" name="Buyobject"/>
 			<combo_box.item label="Pagar el objeto" name="Payobject"/>
 			<combo_box.item label="Abrir" name="Open"/>
-			<combo_box.item label="Zoom" name="Zoom"/>
 		</combo_box>
 		<panel name="perms_inv">
 			<text name="perm_modify">
diff --git a/indra/newview/skins/default/xui/es/strings.xml b/indra/newview/skins/default/xui/es/strings.xml
index 937433e210f..52bcab54e58 100644
--- a/indra/newview/skins/default/xui/es/strings.xml
+++ b/indra/newview/skins/default/xui/es/strings.xml
@@ -128,7 +128,7 @@
 		Salir
 	</string>
 	<string name="create_account_url">
-		http://join.secondlife.com/?sourceid=[sourceid]
+		http://join.secondlife.com/index.php?lang=es-ES&amp;sourceid=[sourceid]
 	</string>
 	<string name="LoginFailedViewerNotPermitted">
 		Ya no puedes acceder a Second Life con el visor que estás utilizando. Visita la siguiente página para descargar un nuevo visor:
@@ -610,8 +610,8 @@ Intenta iniciar sesión de nuevo en unos instantes.
 	<string name="AvatarAway">
 		Ausente
 	</string>
-	<string name="AvatarDoNotDisturb">
-		No molestar
+	<string name="AvatarBusy">
+		Ocupado
 	</string>
 	<string name="AvatarMuted">
 		Ignorado
@@ -844,12 +844,6 @@ Intenta iniciar sesión de nuevo en unos instantes.
 	<string name="ST_NO_JOINT">
 		No se puede encontrar ROOT o JOINT.
 	</string>
-	<string name="NearbyChatTitle">
-		Chat
-	</string>
-	<string name="NearbyChatLabel">
-		(Chat)
-	</string>
 	<string name="whisper">
 		susurra:
 	</string>
@@ -913,9 +907,6 @@ Intenta iniciar sesión de nuevo en unos instantes.
 	<string name="ControlYourCamera">
 		Controlar su cámara
 	</string>
-	<string name="AgentNameSubst">
-		(Tú)
-	</string>
 	<string name="TeleportYourAgent">
 		Teleportarte
 	</string>
@@ -1000,6 +991,18 @@ Intenta iniciar sesión de nuevo en unos instantes.
 	<string name="dictionary_files">
 		Diccionarios
 	</string>
+	<string name="AvatarSetNotAway">
+		Salir del estado ausente
+	</string>
+	<string name="AvatarSetAway">
+		Pasar al estado ausente
+	</string>
+	<string name="AvatarSetNotBusy">
+		Salir del estado ocupado
+	</string>
+	<string name="AvatarSetBusy">
+		Pasar al estado ocupado
+	</string>
 	<string name="shape">
 		Forma
 	</string>
@@ -1956,8 +1959,8 @@ Intenta iniciar sesión de nuevo en unos instantes.
 	<string name="PanelContentsNewScript">
 		Script nuevo
 	</string>
-	<string name="DoNotDisturbModeResponseDefault">
-		Este residente tiene activado &apos;No molestar&apos; y verá tu mensaje más tarde.
+	<string name="BusyModeResponseDefault">
+		El Residente al que has enviado un mensaje ha solicitado que no se le moleste porque está en modo ocupado. Podrá ver tu mensaje más adelante, ya que éste aparecerá en su panel de MI.
 	</string>
 	<string name="MuteByName">
 		(Por el nombre)
@@ -2070,6 +2073,9 @@ Intenta iniciar sesión de nuevo en unos instantes.
 	<string name="GroupMoneyDate">
 		[weekday,datetime,utc] [mth,datetime,utc] [day,datetime,utc], [year,datetime,utc]
 	</string>
+	<string name="ViewerObjectContents">
+		Contenidos
+	</string>
 	<string name="AcquiredItems">
 		Artículos adquiridos
 	</string>
@@ -3787,7 +3793,7 @@ Si sigues recibiendo este mensaje, contacta con [SUPPORT_SITE].
 		Región General
 	</string>
 	<string name="LocationCtrlSeeAVsTooltip">
-		Los avatares que están en esta parcela no pueden ser vistos ni escuchados por los que están fuera de ella
+		Los avatares están visibles y está permitido el chat fuera de esta parcela
 	</string>
 	<string name="LocationCtrlPathfindingDirtyTooltip">
 		Los objetos que se mueven pueden presentar un comportamiento incorrecto en la región hasta que ésta se recargue.
@@ -3861,12 +3867,6 @@ Si sigues recibiendo este mensaje, contacta con [SUPPORT_SITE].
 	<string name="Saved_message">
 		(Guardado [LONG_TIMESTAMP])
 	</string>
-	<string name="OnlineStatus">
-		Conectado/a
-	</string>
-	<string name="OfflineStatus">
-		Desconectado/a
-	</string>
 	<string name="answered_call">
 		Han respondido a tu llamada
 	</string>
@@ -3876,9 +3876,6 @@ Si sigues recibiendo este mensaje, contacta con [SUPPORT_SITE].
 	<string name="you_joined_call">
 		Has entrado en la llamada de voz
 	</string>
-	<string name="you_auto_rejected_call-im">
-		Rechazaste la llamada de voz automáticamente porque estaba activado &apos;No molestar&apos;.
-	</string>
 	<string name="name_started_call">
 		[NAME] inició una llamada de voz
 	</string>
@@ -3891,9 +3888,6 @@ Si sigues recibiendo este mensaje, contacta con [SUPPORT_SITE].
 	<string name="hang_up-im">
 		Se colgó la llamada de voz
 	</string>
-	<string name="conference-title">
-		Chat multi-persona
-	</string>
 	<string name="conference-title-incoming">
 		Conferencia con [AGENT_NAME]
 	</string>
@@ -4772,9 +4766,6 @@ Inténtalo incluyendo la ruta de acceso al editor entre comillas
 	<string name="Command_Chat_Label">
 		Chat
 	</string>
-	<string name="Command_Conversations_Label">
-		Conversaciones
-	</string>
 	<string name="Command_Compass_Label">
 		Brújula
 	</string>
@@ -4850,9 +4841,6 @@ Inténtalo incluyendo la ruta de acceso al editor entre comillas
 	<string name="Command_Chat_Tooltip">
 		Habla por chat de texto con las personas próximas
 	</string>
-	<string name="Command_Conversations_Tooltip">
-		Conversar con todos
-	</string>
 	<string name="Command_Compass_Tooltip">
 		Brújula
 	</string>
@@ -4982,13 +4970,4 @@ Inténtalo incluyendo la ruta de acceso al editor entre comillas
 	<string name="UserDictionary">
 		[Usuario]
 	</string>
-	<string name="logging_calls_disabled_log_empty">
-		No se están registrando las conversaciones. Para empezar a grabar un registro, elige &quot;Guardar: Solo registro&quot; o &quot;Guardar: Registro y transcripciones&quot; en Preferencias &gt; Chat.
-	</string>
-	<string name="logging_calls_disabled_log_not_empty">
-		No se registrarán más conversaciones. Para reanudar la grabación de un registro, elige &quot;Guardar: Solo registro&quot; o &quot;Guardar: Registro y transcripciones&quot; en Preferencias &gt; Chat.
-	</string>
-	<string name="logging_calls_enabled_log_empty">
-		No hay conversaciones grabadas. Después de contactar con una persona, o de que alguien contacte contigo, aquí se mostrará una entrada de registro.
-	</string>
 </strings>
diff --git a/indra/newview/skins/default/xui/fr/floater_conversation_log.xml b/indra/newview/skins/default/xui/fr/floater_conversation_log.xml
deleted file mode 100644
index e9017c79b1f..00000000000
--- a/indra/newview/skins/default/xui/fr/floater_conversation_log.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_conversation_log" title="JOURNAL DES CONVERSATIONS">
-	<panel name="buttons_panel">
-		<filter_editor label="Filtrer les personnes" name="people_filter_input"/>
-		<menu_button name="conversation_view_btn" tool_tip="Options d&apos;affichage/de tri"/>
-		<menu_button name="conversations_gear_btn" tool_tip="Actions sur la personne ou le groupe sélectionné"/>
-	</panel>
-</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_conversation_preview.xml b/indra/newview/skins/default/xui/fr/floater_conversation_preview.xml
deleted file mode 100644
index 9a486a84c65..00000000000
--- a/indra/newview/skins/default/xui/fr/floater_conversation_preview.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="preview_conversation" title="CONVERSATION:">
-	<floater.string name="Title">
-		CONVERSATION: [NAME]
-	</floater.string>
-	<text name="page_label" value="Page"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_im_container.xml b/indra/newview/skins/default/xui/fr/floater_im_container.xml
index f0b17e84373..5ea073365e3 100644
--- a/indra/newview/skins/default/xui/fr/floater_im_container.xml
+++ b/indra/newview/skins/default/xui/fr/floater_im_container.xml
@@ -1,29 +1,2 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<multi_floater name="floater_im_box" title="CONVERSATIONS">
-	<string name="collapse_icon" value="Conv_toolbar_collapse"/>
-	<string name="expand_icon" value="Conv_toolbar_expand"/>
-	<layout_stack name="conversations_stack">
-		<layout_panel name="conversations_layout_panel">
-			<layout_stack name="conversations_pane_buttons_stack">
-				<layout_panel name="conversations_pane_buttons_expanded">
-					<menu_button name="sort_btn" tool_tip="Options d&apos;affichage/de tri"/>
-					<button name="add_btn" tool_tip="Commencer une nouvelle conversation"/>
-					<button name="speak_btn" tool_tip="Parler aux personnes en utilisant votre micro"/>
-				</layout_panel>
-				<layout_panel name="conversations_pane_buttons_collapsed">
-					<button name="expand_collapse_btn" tool_tip="Réduire/Développer cette liste"/>
-				</layout_panel>
-			</layout_stack>
-		</layout_panel>
-		<layout_panel name="messages_layout_panel">
-			<panel_container name="im_box_tab_container">
-				<panel name="stub_panel">
-					<button name="stub_collapse_btn" tool_tip="Réduire ce panneau"/>
-					<text name="stub_textbox">
-						Cette conversation s&apos;affiche dans une fenêtre distincte.   [secondlife:/// la rattacher.]
-					</text>
-				</panel>
-			</panel_container>
-		</layout_panel>
-	</layout_stack>
-</multi_floater>
+<multi_floater name="floater_im_box" title="CONVERSATIONS"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_im_session.xml b/indra/newview/skins/default/xui/fr/floater_im_session.xml
index 8ab98b8e4ea..516eb41362f 100644
--- a/indra/newview/skins/default/xui/fr/floater_im_session.xml
+++ b/indra/newview/skins/default/xui/fr/floater_im_session.xml
@@ -1,59 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="panel_im">
-	<floater.string name="call_btn_start">
-		Conv_toolbar_open_call
-	</floater.string>
-	<floater.string name="call_btn_stop">
-		Conv_toolbar_hang_up
-	</floater.string>
-	<floater.string name="collapseline_icon" value="Conv_collapse_to_one_line"/>
-	<floater.string name="expandline_icon" value="Conv_expand_one_line"/>
-	<floater.string name="collapse_icon" value="Conv_toolbar_collapse"/>
-	<floater.string name="expand_icon" value="Conv_toolbar_expand"/>
-	<floater.string name="tear_off_icon" value="Conv_toolbar_arrow_ne"/>
-	<floater.string name="return_icon" value="Conv_toolbar_arrow_sw"/>
-	<floater.string name="participant_added" value="[NAME] a été invité à la conversation."/>
-	<floater.string name="multiple_participants_added" value="[NAME] ont été invités à la conversation."/>
-	<floater.string name="tooltip_to_separate_window" value="Déplacer cette conversation dans une fenêtre distincte"/>
-	<floater.string name="tooltip_to_main_window" value="Replacer cette conversation dans la fenêtre principale"/>
-	<floater.string name="start_call_button_tooltip" value="Ouvrir une connexion vocale"/>
-	<floater.string name="end_call_button_tooltip" value="Fermer la connexion vocale"/>
-	<floater.string name="expcol_button_not_tearoff_tooltip" value="Réduire ce panneau"/>
-	<floater.string name="expcol_button_tearoff_and_expanded_tooltip" value="Réduire la liste des participants"/>
-	<floater.string name="expcol_button_tearoff_and_collapsed_tooltip" value="Développer la liste des participants"/>
-	<view name="contents_view">
-		<layout_stack name="main_stack">
-			<layout_panel name="toolbar_panel">
-				<menu_button name="view_options_btn" tool_tip="Options d&apos;affichage/de tri"/>
-				<menu_button name="gear_btn" tool_tip="Actions sur la personne sélectionnée"/>
-				<button name="add_btn" tool_tip="Ajouter un participant à cette conversation"/>
-				<button name="voice_call_btn" tool_tip="Ouvrir une connexion vocale"/>
-				<button name="close_btn" tool_tip="Mettre fin à cette conversation"/>
-				<button name="expand_collapse_btn" tool_tip="Réduire/Développer ce panneau"/>
-			</layout_panel>
-			<layout_panel name="body_panel">
-				<layout_stack name="im_panels">
-					<layout_panel name="right_part_holder">
-						<panel name="trnsAndChat_panel">
-							<layout_stack name="translate_and_chat_stack">
-								<layout_panel name="translate_chat_checkbox_lp">
-									<check_box label="Traduire le chat" name="translate_chat_checkbox"/>
-								</layout_panel>
-							</layout_stack>
-						</panel>
-					</layout_panel>
-				</layout_stack>
-			</layout_panel>
-			<layout_panel name="chat_layout_panel">
-				<layout_stack name="input_panels">
-					<layout_panel name="input_editor_layout_panel">
-						<chat_editor label="À" name="chat_editor"/>
-					</layout_panel>
-					<layout_panel name="input_button_layout_panel">
-						<button name="minz_btn" tool_tip="Affiche/Masque le panneau des messages"/>
-					</layout_panel>
-				</layout_stack>
-			</layout_panel>
-		</layout_stack>
-	</view>
+	<layout_stack name="im_panels">
+		<layout_panel>
+			<line_editor label="À" name="chat_editor"/>
+		</layout_panel>
+	</layout_stack>
 </floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_incoming_call.xml b/indra/newview/skins/default/xui/fr/floater_incoming_call.xml
index 9e6946ba9e4..7594eec5f2f 100644
--- a/indra/newview/skins/default/xui/fr/floater_incoming_call.xml
+++ b/indra/newview/skins/default/xui/fr/floater_incoming_call.xml
@@ -10,7 +10,7 @@
 		anonyme
 	</floater.string>
 	<floater.string name="VoiceInviteP2P">
-		vous appelle.
+		appelle.
 	</floater.string>
 	<floater.string name="VoiceInviteAdHoc">
 		a rejoint un chat vocal avec conférence.
@@ -25,9 +25,9 @@
 		Voulez-vous quitter [CURRENT_CHAT] et rejoindre ce chat vocal ?
 	</floater.string>
 	<text name="question">
-		Si vous répondez, vous serez déconnecté de votre conversation vocale actuelle.
+		Voulez-vous quitter [CURRENT_CHAT] et rejoindre ce chat vocal ?
 	</text>
-	<button label="Répondre" label_selected="Répondre" name="Accept"/>
-	<button label="Ignorer" label_selected="Ignorer" name="Reject"/>
-	<button label="Ouvrir IM à la place" name="Start IM"/>
+	<button label="Accepter" label_selected="Accepter" name="Accept"/>
+	<button label="Refuser" label_selected="Refuser" name="Reject"/>
+	<button label="Lancer IM" name="Start IM"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_pathfinding_console.xml b/indra/newview/skins/default/xui/fr/floater_pathfinding_console.xml
index 0bcf55aba59..02d969dc089 100644
--- a/indra/newview/skins/default/xui/fr/floater_pathfinding_console.xml
+++ b/indra/newview/skins/default/xui/fr/floater_pathfinding_console.xml
@@ -71,7 +71,7 @@
 			<text name="show_label">
 				Afficher :
 			</text>
-			<check_box label="Test" name="show_world"/>
+			<check_box label="Monde" name="show_world"/>
 			<check_box label="Mobiles uniquement" name="show_world_movables_only"/>
 			<check_box label="Maillage de navigation" name="show_navmesh"/>
 			<text name="show_walkability_label">
diff --git a/indra/newview/skins/default/xui/fr/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/fr/floater_texture_ctrl.xml
index eace67026c8..f86c1a42171 100644
--- a/indra/newview/skins/default/xui/fr/floater_texture_ctrl.xml
+++ b/indra/newview/skins/default/xui/fr/floater_texture_ctrl.xml
@@ -20,7 +20,7 @@
 	<button label="Vierge" label_selected="Vierge" name="Blank" width="60"/>
 	<button label="Aucune" label_selected="Aucune" left="68" name="None" width="60"/>
 	<button bottom="-240" label="" label_selected="" name="Pipette"/>
-	<check_box initial_value="true" label="Appliquer maintenant" name="apply_immediate_check"/>
+	<check_box initial_value="true" label="Aperçu direct" name="apply_immediate_check"/>
 	<text name="preview_disabled" value="Aperçu désactivé"/>
 	<filter_editor label="Filtrer les textures" name="inventory search editor"/>
 	<check_box initial_value="false" label="Afficher les dossiers" name="show_folders_check"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_voice_chat_volume.xml b/indra/newview/skins/default/xui/fr/floater_voice_chat_volume.xml
deleted file mode 100644
index f4f452eea7e..00000000000
--- a/indra/newview/skins/default/xui/fr/floater_voice_chat_volume.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_voice_volume" title="VOLUME DU CHAT VOCAL">
-	<slider label="Chat vocal" name="chat_voice_volume"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_voice_effect.xml b/indra/newview/skins/default/xui/fr/floater_voice_effect.xml
index f9a76d127e2..671fb5c14db 100644
--- a/indra/newview/skins/default/xui/fr/floater_voice_effect.xml
+++ b/indra/newview/skins/default/xui/fr/floater_voice_effect.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater label="Endroits" name="voice_effects" title="APERÇU DES EFFETS DE VOIX">
+<floater label="Endroits" name="voice_effects" title="EFFET DE VOIX">
 	<string name="no_voice_effect">
 		(Aucun effet de voix)
 	</string>
diff --git a/indra/newview/skins/default/xui/fr/floater_voice_volume.xml b/indra/newview/skins/default/xui/fr/floater_voice_volume.xml
deleted file mode 100644
index bf91a5bb799..00000000000
--- a/indra/newview/skins/default/xui/fr/floater_voice_volume.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!--
-  Not can_close / no title to avoid window chrome
-  Single instance - only have one at a time, recycle it each spawn
--->
-<floater name="floater_voice_volume" title="VOLUME DE LA VOIX">
-	<slider name="volume_slider" tool_tip="Volume de la voix" value="0.5"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/fr/menu_cof_gear.xml b/indra/newview/skins/default/xui/fr/menu_cof_gear.xml
index fea0486d8ac..8276d570259 100644
--- a/indra/newview/skins/default/xui/fr/menu_cof_gear.xml
+++ b/indra/newview/skins/default/xui/fr/menu_cof_gear.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="Gear COF">
+<menu name="Gear COF">
 	<menu label="Nouveaux habits" name="COF.Gear.New_Clothes"/>
-	<menu label="Nouvelles parties du corps" name="COF.Gear.New_Body_Parts"/>
-</toggleable_menu>
+	<menu label="Nouvelles parties du corps" name="COF.Geear.New_Body_Parts"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_conversation.xml b/indra/newview/skins/default/xui/fr/menu_conversation.xml
deleted file mode 100644
index 857ead603b5..00000000000
--- a/indra/newview/skins/default/xui/fr/menu_conversation.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_conversation_participant">
-	<menu_item_call label="Fermer la conversation" name="close_conversation"/>
-	<menu_item_call label="Ouvrir une conversation vocale" name="open_voice_conversation"/>
-	<menu_item_call label="Se déconnecter de la conversation et du canal vocal" name="disconnect_from_voice"/>
-	<menu_item_call label="Voir le profil" name="view_profile"/>
-	<menu_item_call label="IM" name="im"/>
-	<menu_item_call label="Proposer une téléportation." name="offer_teleport"/>
-	<menu_item_call label="Appel" name="voice_call"/>
-	<menu_item_call label="Historique du chat..." name="chat_history"/>
-	<menu_item_call label="Devenir amis" name="add_friend"/>
-	<menu_item_call label="Supprimer cet ami" name="remove_friend"/>
-	<menu_item_call label="Supprimer ces amis" name="remove_friends"/>
-	<menu_item_call label="Inviter dans le groupe..." name="invite_to_group"/>
-	<menu_item_call label="Zoomer en avant" name="zoom_in"/>
-	<menu_item_call label="Carte" name="map"/>
-	<menu_item_call label="Partager" name="share"/>
-	<menu_item_call label="Payer" name="pay"/>
-	<menu_item_check label="Bloquer le chat vocal" name="block_unblock"/>
-	<menu_item_check label="Ignorer le texte" name="MuteText"/>
-	<menu_item_call label="Profil du groupe" name="group_profile"/>
-	<menu_item_call label="Activer le groupe" name="activate_group"/>
-	<menu_item_call label="Quitter le groupe" name="leave_group"/>
-	<context_menu label="Options du modérateur" name="Moderator Options">
-		<menu_item_check label="Autoriser les chats écrits" name="AllowTextChat"/>
-		<menu_item_call label="Ignorer ce participant" name="ModerateVoiceMuteSelected"/>
-		<menu_item_call label="Ne plus ignorer ce participant" name="ModerateVoiceUnMuteSelected"/>
-		<menu_item_call label="Ignorer les autres" name="ModerateVoiceMute"/>
-		<menu_item_call label="Ne plus ignorer les autres" name="ModerateVoiceUnmute"/>
-	</context_menu>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_conversation_log_gear.xml b/indra/newview/skins/default/xui/fr/menu_conversation_log_gear.xml
deleted file mode 100644
index 4e7e84199db..00000000000
--- a/indra/newview/skins/default/xui/fr/menu_conversation_log_gear.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="Conversation Context Menu">
-	<menu_item_call label="IM..." name="IM"/>
-	<menu_item_call label="Appel..." name="Call"/>
-	<menu_item_call label="Ouvrir l&apos;historique du chat..." name="Chat history"/>
-	<menu_item_call label="Voir le profil" name="View Profile"/>
-	<menu_item_call label="Téléporter" name="teleport"/>
-	<menu_item_call label="Devenir amis" name="add_friend"/>
-	<menu_item_call label="Supprimer cet ami" name="remove_friend"/>
-	<menu_item_call label="Inviter dans le groupe..." name="Invite"/>
-	<menu_item_call label="Carte" name="Map"/>
-	<menu_item_call label="Partager" name="Share"/>
-	<menu_item_call label="Payer" name="Pay"/>
-	<menu_item_check label="Ignorer/Ne plus ignorer" name="Block/Unblock"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_conversation_log_view.xml b/indra/newview/skins/default/xui/fr/menu_conversation_log_view.xml
deleted file mode 100644
index c515a8e8e55..00000000000
--- a/indra/newview/skins/default/xui/fr/menu_conversation_log_view.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_conversation_view">
-	<menu_item_check label="Trier par nom" name="sort_by_name"/>
-	<menu_item_check label="Trier par date" name="sort_by_date"/>
-	<menu_item_check label="Trier avec les amis en haut" name="sort_by_friends"/>
-	<menu_item_call label="Afficher l&apos;historique du Chat près de moi" name="view_nearby_chat_history"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_im_conversation.xml b/indra/newview/skins/default/xui/fr/menu_im_conversation.xml
deleted file mode 100644
index 1ec5910c8fe..00000000000
--- a/indra/newview/skins/default/xui/fr/menu_im_conversation.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="Conversation Gear Menu">
-	<menu_item_call label="Voir le profil" name="View Profile"/>
-	<menu_item_call label="Devenir amis" name="Add Friend"/>
-	<menu_item_call label="Supprimer cet ami" name="remove_friend"/>
-	<menu_item_call label="Proposer une téléportation." name="offer_teleport"/>
-	<menu_item_call label="Inviter dans le groupe..." name="invite_to_group"/>
-	<menu_item_call label="Historique du chat..." name="chat_history"/>
-	<menu_item_call label="Zoomer en avant" name="zoom_in"/>
-	<menu_item_call label="Carte" name="map"/>
-	<menu_item_call label="Partager" name="Share"/>
-	<menu_item_call label="Payer" name="Pay"/>
-	<menu_item_check label="Bloquer le chat vocal" name="Block/Unblock"/>
-	<menu_item_check label="Ignorer le texte" name="MuteText"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_im_session_showmodes.xml b/indra/newview/skins/default/xui/fr/menu_im_session_showmodes.xml
deleted file mode 100644
index 03a091d1ccc..00000000000
--- a/indra/newview/skins/default/xui/fr/menu_im_session_showmodes.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_modes">
-	<menu_item_check label="Vue compacte" name="compact_view"/>
-	<menu_item_check label="Vue développée" name="expanded_view"/>
-	<menu_item_check label="Afficher l’heure" name="IMShowTime"/>
-	<menu_item_check label="Afficher les noms dans les conversations privées" name="IMShowNamesForP2PConv"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_object_icon.xml b/indra/newview/skins/default/xui/fr/menu_object_icon.xml
index 7c949301600..69f8e88a0de 100644
--- a/indra/newview/skins/default/xui/fr/menu_object_icon.xml
+++ b/indra/newview/skins/default/xui/fr/menu_object_icon.xml
@@ -2,6 +2,4 @@
 <menu name="Object Icon Menu">
 	<menu_item_call label="Profil de l&apos;objet..." name="Object Profile"/>
 	<menu_item_call label="Ignorer..." name="Block"/>
-	<menu_item_call label="Voir sur la carte" name="show_on_map"/>
-	<menu_item_call label="Me téléporter à l’emplacement de l&apos;objet" name="teleport_to_object"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_outfit_gear.xml b/indra/newview/skins/default/xui/fr/menu_outfit_gear.xml
index 21b19eded63..b5181f4f82e 100644
--- a/indra/newview/skins/default/xui/fr/menu_outfit_gear.xml
+++ b/indra/newview/skins/default/xui/fr/menu_outfit_gear.xml
@@ -23,8 +23,6 @@
 		<menu_item_call label="Nouveaux cheveux" name="New Hair"/>
 		<menu_item_call label="Nouveaux yeux" name="New Eyes"/>
 	</menu>
-	<menu_item_call label="Développer tous les dossiers" name="expand"/>
-	<menu_item_call label="Réduire tous les dossiers" name="collapse"/>
 	<menu_item_call label="Renommer la tenue" name="rename"/>
 	<menu_item_call label="Supprimer la tenue" name="delete_outfit"/>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_participant_view.xml b/indra/newview/skins/default/xui/fr/menu_participant_view.xml
deleted file mode 100644
index 1811082c841..00000000000
--- a/indra/newview/skins/default/xui/fr/menu_participant_view.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="participant_manu_view">
-	<menu_item_check label="Trier les conversations par type" name="sort_sessions_by_type"/>
-	<menu_item_check label="Trier les conversations par nom" name="sort_sessions_by_name"/>
-	<menu_item_check label="Trier les conversations par activité récente" name="sort_sessions_by_recent"/>
-	<menu_item_check label="Trier les participants par nom" name="sort_participants_by_name"/>
-	<menu_item_check label="Trier les participants par activité récente" name="sort_participants_by_recent"/>
-	<menu_item_call label="Préférences pour le chat..." name="chat_preferences"/>
-	<menu_item_call label="Préférences pour la confidentialité" name="privacy_preferences"/>
-	<menu_item_check label="Journal des conversations..." name="Conversation"/>
-	<menu_item_check label="Traduire le Chat près de moi" name="Translate_chat"/>
-	<menu_item_check label="Paramètres de traduction" name="Translation_settings"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_people_blocked_gear.xml b/indra/newview/skins/default/xui/fr/menu_people_blocked_gear.xml
deleted file mode 100644
index 47589572c25..00000000000
--- a/indra/newview/skins/default/xui/fr/menu_people_blocked_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_blocked_gear">
-	<menu_item_call label="Ne plus ignorer" name="unblock"/>
-	<menu_item_call label="Profil..." name="profile"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_people_blocked_plus.xml b/indra/newview/skins/default/xui/fr/menu_people_blocked_plus.xml
deleted file mode 100644
index 79880dd16d9..00000000000
--- a/indra/newview/skins/default/xui/fr/menu_people_blocked_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_blocked_plus">
-	<menu_item_call label="Ignorer un résident par son nom…" name="block_resident_by_name"/>
-	<menu_item_call label="Ignorer un objet par son nom" name="block_object_by_name"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_people_blocked_view.xml b/indra/newview/skins/default/xui/fr/menu_people_blocked_view.xml
deleted file mode 100644
index 13f15750909..00000000000
--- a/indra/newview/skins/default/xui/fr/menu_people_blocked_view.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_blocked_view">
-	<menu_item_check label="Trier par nom" name="sort_by_name"/>
-	<menu_item_check label="Trier par type" name="sort_by_type"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_people_friends_view.xml b/indra/newview/skins/default/xui/fr/menu_people_friends_view.xml
deleted file mode 100644
index cc81172462f..00000000000
--- a/indra/newview/skins/default/xui/fr/menu_people_friends_view.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_group_plus">
-	<menu_item_check label="Trier par nom" name="sort_name"/>
-	<menu_item_check label="Trier par statut" name="sort_status"/>
-	<menu_item_check label="Afficher les icônes des résidents" name="view_icons"/>
-	<menu_item_check label="Afficher les droits octroyés" name="view_permissions"/>
-	<menu_item_check label="Afficher le journal des conversations..." name="view_conversation"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_people_groups.xml b/indra/newview/skins/default/xui/fr/menu_people_groups.xml
index 8e32f065fae..eb51b4cf7e8 100644
--- a/indra/newview/skins/default/xui/fr/menu_people_groups.xml
+++ b/indra/newview/skins/default/xui/fr/menu_people_groups.xml
@@ -2,7 +2,7 @@
 <menu name="menu_group_plus">
 	<menu_item_call label="Afficher les infos" name="View Info"/>
 	<menu_item_call label="Chat" name="Chat"/>
-	<menu_item_call label="Appel" name="Call"/>
+	<menu_item_call label="Appeler" name="Call"/>
 	<menu_item_call label="Activer" name="Activate"/>
 	<menu_item_call label="Quitter" name="Leave"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_people_groups_view.xml b/indra/newview/skins/default/xui/fr/menu_people_groups_view.xml
deleted file mode 100644
index 79ede5e22df..00000000000
--- a/indra/newview/skins/default/xui/fr/menu_people_groups_view.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_group_plus">
-	<menu_item_check label="Afficher les icônes des groupes" name="Display Group Icons"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_people_nearby.xml b/indra/newview/skins/default/xui/fr/menu_people_nearby.xml
index 6f7d02ef743..26bd3978a9b 100644
--- a/indra/newview/skins/default/xui/fr/menu_people_nearby.xml
+++ b/indra/newview/skins/default/xui/fr/menu_people_nearby.xml
@@ -1,16 +1,13 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Avatar Context Menu">
-	<menu_item_call label="Voir le profil" name="view_profile"/>
-	<menu_item_call label="IM" name="im"/>
-	<menu_item_call label="Téléporter" name="offer_teleport"/>
-	<menu_item_call label="Appel" name="voice_call"/>
-	<menu_item_call label="Afficher l&apos;historique du chat..." name="chat_history"/>
-	<menu_item_call label="Devenir amis" name="add_friend"/>
-	<menu_item_call label="Supprimer cet ami" name="remove_friend"/>
-	<menu_item_call label="Inviter dans le groupe..." name="invite_to_group"/>
-	<menu_item_call label="Zoomer en avant" name="zoom_in"/>
-	<menu_item_call label="Carte" name="map"/>
-	<menu_item_call label="Partager" name="share"/>
-	<menu_item_call label="Payer" name="pay"/>
-	<menu_item_check label="Ignorer/Ne plus ignorer" name="block_unblock"/>
+	<menu_item_call label="Voir le profil" name="View Profile"/>
+	<menu_item_call label="Devenir amis" name="Add Friend"/>
+	<menu_item_call label="Supprimer cet ami" name="Remove Friend"/>
+	<menu_item_call label="IM" name="IM"/>
+	<menu_item_call label="Appeler" name="Call"/>
+	<menu_item_call label="Carte" name="Map"/>
+	<menu_item_call label="Partager" name="Share"/>
+	<menu_item_call label="Payer" name="Pay"/>
+	<menu_item_check label="Ignorer/Ne plus ignorer" name="Block/Unblock"/>
+	<menu_item_call label="Proposer une téléportation" name="teleport"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/fr/menu_people_nearby_multiselect.xml
index 37abf831c2f..8400ec0a14d 100644
--- a/indra/newview/skins/default/xui/fr/menu_people_nearby_multiselect.xml
+++ b/indra/newview/skins/default/xui/fr/menu_people_nearby_multiselect.xml
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Multi-Selected People Context Menu">
-	<menu_item_call label="Devenir amis" name="add_friends"/>
-	<menu_item_call label="Supprimer des amis" name="remove_friends"/>
-	<menu_item_call label="IM" name="im"/>
-	<menu_item_call label="Appeler" name="call"/>
-	<menu_item_call label="Partager" name="share"/>
-	<menu_item_call label="Payer" name="pay"/>
-	<menu_item_call label="Téléporter" name="offer_teleport"/>
+	<menu_item_call label="Devenir amis" name="Add Friends"/>
+	<menu_item_call label="Supprimer des amis" name="Remove Friend"/>
+	<menu_item_call label="IM" name="IM"/>
+	<menu_item_call label="Appeler" name="Call"/>
+	<menu_item_call label="Partager" name="Share"/>
+	<menu_item_call label="Payer" name="Pay"/>
+	<menu_item_call label="Proposer une téléportation" name="teleport"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_people_nearby_view.xml b/indra/newview/skins/default/xui/fr/menu_people_nearby_view.xml
deleted file mode 100644
index 086002dce5e..00000000000
--- a/indra/newview/skins/default/xui/fr/menu_people_nearby_view.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_group_plus">
-	<menu_item_check label="Trier par intervenants récents" name="sort_by_recent_speakers"/>
-	<menu_item_check label="Trier par nom" name="sort_name"/>
-	<menu_item_check label="Trier par distance" name="sort_distance"/>
-	<menu_item_check label="Afficher les icônes des résidents" name="view_icons"/>
-	<menu_item_check label="Afficher la carte" name="view_map"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_people_recent_view.xml b/indra/newview/skins/default/xui/fr/menu_people_recent_view.xml
deleted file mode 100644
index a7d698ab7c7..00000000000
--- a/indra/newview/skins/default/xui/fr/menu_people_recent_view.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_group_plus">
-	<menu_item_check label="Trier en commençant par le plus récent" name="sort_most"/>
-	<menu_item_check label="Trier par nom" name="sort_name"/>
-	<menu_item_check label="Afficher les icônes des résidents" name="view_icons"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_url_agent.xml b/indra/newview/skins/default/xui/fr/menu_url_agent.xml
index d701b3a4143..5ed627fbc33 100644
--- a/indra/newview/skins/default/xui/fr/menu_url_agent.xml
+++ b/indra/newview/skins/default/xui/fr/menu_url_agent.xml
@@ -1,8 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Url Popup">
-	<menu_item_call label="Voir le profil" name="show_agent"/>
-	<menu_item_call label="Envoyer IM..." name="send_im"/>
-	<menu_item_call label="Devenir amis..." name="add_friend"/>
+	<menu_item_call label="Voir le profil du résident" name="show_agent"/>
 	<menu_item_call label="Copier le nom dans le presse-papiers" name="url_copy_label"/>
 	<menu_item_call label="Copier la SLurl dans le presse-papiers" name="url_copy"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_url_objectim.xml b/indra/newview/skins/default/xui/fr/menu_url_objectim.xml
index 0a934d3e69c..f581c3ef9d8 100644
--- a/indra/newview/skins/default/xui/fr/menu_url_objectim.xml
+++ b/indra/newview/skins/default/xui/fr/menu_url_objectim.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Url Popup">
-	<menu_item_call label="Profil de l&apos;objet…" name="show_object"/>
+	<menu_item_call label="Afficher les informations sur l&apos;objet" name="show_object"/>
 	<menu_item_call label="Voir sur la carte" name="show_on_map"/>
 	<menu_item_call label="Me téléporter à l&apos;emplacement de l&apos;objet" name="teleport_to_object"/>
 	<menu_item_call label="Copier le nom de l&apos;objet dans le presse-papiers" name="url_copy_label"/>
diff --git a/indra/newview/skins/default/xui/fr/menu_viewer.xml b/indra/newview/skins/default/xui/fr/menu_viewer.xml
index 457b756c7d5..85020afe252 100644
--- a/indra/newview/skins/default/xui/fr/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/fr/menu_viewer.xml
@@ -16,7 +16,10 @@
 			<menu_item_call label="Arrêter mon animation" name="Stop Animating My Avatar"/>
 			<menu_item_call label="Marcher / Courir / Voler..." name="Walk / run / fly"/>
 		</menu>
-		<menu label="Statut" name="Status"/>
+		<menu label="Statut" name="Status">
+			<menu_item_call label="Absent" name="Set Away"/>
+			<menu_item_call label="Occupé" name="Set Busy"/>
+		</menu>
 		<menu_item_call label="Acheter des L$..." name="Buy and Sell L$"/>
 		<menu_item_call label="Boîte d&apos;envoi vendeur..." name="MerchantOutbox"/>
 		<menu_item_call label="Page d&apos;accueil du compte..." name="Manage My Account">
@@ -29,18 +32,14 @@
 		<menu_item_call label="Quitter [APP_NAME]" name="Quit"/>
 	</menu>
 	<menu label="Communiquer" name="Communicate">
-		<menu_item_check label="Conversations..." name="Conversations"/>
-		<menu_item_check label="Chat près de moi..." name="Nearby Chat"/>
+		<menu_item_check label="Chat..." name="Nearby Chat"/>
 		<menu_item_check label="Parler" name="Speak"/>
-		<menu label="Effet de voix" name="VoiceMorphing">
-			<menu_item_check label="Aucun effet de voix" name="NoVoiceMorphing"/>
-			<menu_item_check label="Aperçu..." name="Preview"/>
-			<menu_item_call label="S&apos;abonner..." name="Subscribe"/>
-		</menu>
+		<menu_item_check label="Paramètres vocaux..." name="Nearby Voice"/>
+		<menu_item_check label="Effet de voix..." name="ShowVoice"/>
 		<menu_item_check label="Gestes..." name="Gestures"/>
-		<menu_item_check label="Amis" name="My Friends"/>
-		<menu_item_check label="Groupes" name="My Groups"/>
-		<menu_item_check label="Personnes près de vous" name="Active Speakers"/>
+		<menu_item_call label="Amis" name="My Friends"/>
+		<menu_item_call label="Groupes" name="My Groups"/>
+		<menu_item_call label="Personnes près de vous" name="Active Speakers"/>
 		<menu_item_call label="Liste des ignorés" name="Block List"/>
 	</menu>
 	<menu label="Monde" name="World">
@@ -116,6 +115,7 @@
 			<menu_item_call label="Acheter" name="Menu Object Buy"/>
 			<menu_item_call label="Prendre" name="Menu Object Take"/>
 			<menu_item_call label="Prendre une copie" name="Take Copy"/>
+			<menu_item_call label="Enregistrer dans mon inventaire" name="Save Object Back to My Inventory"/>
 			<menu_item_call label="Enregistrer dans le contenu des objets" name="Save Object Back to Object Contents"/>
 			<menu_item_call label="Renvoi de l&apos;objet" name="Return Object back to Owner"/>
 		</menu>
@@ -130,7 +130,6 @@
 			<menu_item_call label="Groupes de liens..." name="pathfinding_linksets_menu_item"/>
 			<menu_item_call label="Personnages..." name="pathfinding_characters_menu_item"/>
 			<menu_item_call label="Vue / test..." name="pathfinding_console_menu_item"/>
-			<menu_item_call label="Refiger la région" name="pathfinding_rebake_navmesh_item"/>
 		</menu>
 		<menu label="Options" name="Options">
 			<menu_item_check label="Afficher les droits avancés" name="DebugPermissions"/>
@@ -160,13 +159,6 @@
 	<menu label="Aide" name="Help">
 		<menu_item_call label="Aide rapide..." name="How To"/>
 		<menu_item_call label="Aide de [SECOND_LIFE]" name="Second Life Help"/>
-		<menu_item_call label="Guide de l&apos;utilisateur" name="User’s guide"/>
-		<menu_item_call label="Base de connaissances" name="Knowledge Base"/>
-		<menu_item_call label="Wiki" name="Wiki"/>
-		<menu_item_call label="Forums de la communauté" name="Community Forums"/>
-		<menu_item_call label="Portail d&apos;assistance" name="Support portal"/>
-		<menu_item_call label="Actualités [SECOND_LIFE]" name="Second Life News"/>
-		<menu_item_call label="Blogs [SECOND_LIFE]" name="Second Life Blogs"/>
 		<menu_item_call label="Signaler une infraction" name="Report Abuse"/>
 		<menu_item_call label="Signaler un bug" name="Report Bug"/>
 		<menu_item_call label="À propos de [APP_NAME]" name="About Second Life"/>
@@ -393,14 +385,9 @@
 				<menu_item_call label="Test femme" name="Test Female"/>
 				<menu_item_check label="Autoriser la sélection de l&apos;avatar" name="Allow Select Avatar"/>
 			</menu>
-			<menu label="Vitesse d&apos;animation" name="Animation Speed">
-				<menu_item_call label="Toutes les animations 10 % plus rapides" name="All Animations 10 Faster"/>
-				<menu_item_call label="Toutes les animations 10 % plus lentes" name="All Animations 10 Slower"/>
-				<menu_item_call label="Réinitialiser la vitesse de toutes les animations" name="Reset All Animation Speed"/>
-				<menu_item_check label="Animations au ralenti" name="Slow Motion Animations"/>
-			</menu>
 			<menu_item_call label="Forcer les paramètres par défaut" name="Force Params to Default"/>
 			<menu_item_check label="Infos sur l&apos;animation" name="Animation Info"/>
+			<menu_item_check label="Animations au ralenti" name="Slow Motion Animations"/>
 			<menu_item_check label="Afficher la direction du regard" name="Show Look At"/>
 			<menu_item_check label="Afficher la direction du pointeur" name="Show Point At"/>
 			<menu_item_check label="Débogages des mises à jour" name="Debug Joint Updates"/>
diff --git a/indra/newview/skins/default/xui/fr/notifications.xml b/indra/newview/skins/default/xui/fr/notifications.xml
index e73cc6e6e04..30154d18730 100644
--- a/indra/newview/skins/default/xui/fr/notifications.xml
+++ b/indra/newview/skins/default/xui/fr/notifications.xml
@@ -515,24 +515,6 @@ Consulter [_URL] pour en savoir plus ?
 		</url>
 		<usetemplate ignoretext="Mon pilote graphique est obsolète." name="okcancelignore" notext="Non" yestext="Oui"/>
 	</notification>
-	<notification name="AMDOldDriver">
-		Il existe probablement un pilote plus récent pour votre puce graphique.  La mise à jour des pilotes graphiques est susceptible d&apos;améliorer considérablement les performances.
-
-    Visiter la page [_URL] pour rechercher d&apos;éventuelles mises à jour de pilotes ?
-		<url name="url">
-			http://support.amd.com/us/Pages/AMDSupportHub.aspx
-		</url>
-		<usetemplate ignoretext="Mon pilote graphique est obsolète." name="okcancelignore" notext="Non" yestext="Oui"/>
-	</notification>
-	<notification name="NVIDIAOldDriver">
-		Il existe probablement un pilote plus récent pour votre puce graphique.  La mise à jour des pilotes graphiques est susceptible d&apos;améliorer considérablement les performances.
-
-    Visiter la page [_URL] pour rechercher d&apos;éventuelles mises à jour de pilotes ?
-		<url name="url">
-			http://www.nvidia.com/Download/index.aspx?lang=fr
-		</url>
-		<usetemplate ignoretext="Mon pilote graphique est obsolète." name="okcancelignore" notext="Non" yestext="Oui"/>
-	</notification>
 	<notification name="UnknownGPU">
 		Votre système contient une carte graphique que [APP_NAME] ne reconnaît pas.
 Cela est souvent le cas avec le nouveau matériel qui n&apos;a pas encore été testé avec [APP_NAME].  Cela ne posera probablement pas de problème, mais vous devrez peut-être ajuster vos paramètres graphiques.
@@ -1561,13 +1543,10 @@ Quitter le groupe ?
 		Impossible de proposer votre amitié actuellement. Veuillez réessayer dans un moment.
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
-	<notification name="DoNotDisturbModeSet">
-		Ne pas déranger est activé.  Vous ne recevrez pas les notifications de communications entrantes.
-
-- Les autres résidents recevront votre réponse Ne pas déranger (définie dans Préférences &gt; Général).
-- Toutes les offres de téléportation seront refusées.
-- Les appels vocaux seront refusés.
-		<usetemplate ignoretext="J&apos;ai changé mon statut et suis désormais en mode Ne pas déranger." name="okignore" yestext="OK"/>
+	<notification name="BusyModeSet">
+		Le mode Occupé est sélectionné.
+Les chats et les messages instantanés ne s&apos;afficheront pas. Les messages instantanés génèreront la réponse en mode occupé que vous avez créée. Toutes les offres de téléportation seront refusées. Toutes les offres d&apos;inventaire iront dans la corbeille.
+		<usetemplate ignoretext="Je change mon statut en mode Occupé" name="okignore" yestext="OK"/>
 	</notification>
 	<notification name="JoinedTooManyGroupsMember">
 		Vous avez atteint le nombre de groupes maximum. Avant de pouvoir rejoindre ce groupe, vous devez en quitter un ou refuser cette offre.
@@ -2054,10 +2033,6 @@ Déplacer les objets de l&apos;inventaire ?
 		Accéder à votre [http://secondlife.com/account/ Page d&apos;accueil] pour consulter l&apos;historique de votre compte ?
 		<usetemplate ignoretext="Lancer mon navigateur pour consulter l&apos;historique de mon compte" name="okcancelignore" notext="Annuler" yestext="Aller sur cette page"/>
 	</notification>
-	<notification name="ConfirmAddingChatParticipants">
-		Quand vous ajoutez une personne à une conversation existante, une nouvelle conversation est créée.  Tous les participants recevront les notifications de nouvelle conversation.
-		<usetemplate ignoretext="Confirmer l&apos;ajout de participants au chat" name="okcancelignore" notext="Annuler" yestext="OK"/>
-	</notification>
 	<notification name="ConfirmQuit">
 		Êtes-vous certain de vouloir quitter ?
 		<usetemplate ignoretext="Confirmer avant de quitter" name="okcancelignore" notext="Ne pas quitter" yestext="Quitter"/>
@@ -2132,14 +2107,14 @@ Voulez-vous le remplacer par l&apos;objet sélectionné ?
 			<button ignore="Ne jamais remplacer" name="No" text="Annuler"/>
 		</form>
 	</notification>
-	<notification label="Avertissement de mode Ne pas déranger" name="DoNotDisturbModePay">
-		Vous avez activé Ne pas déranger. Vous ne recevrez aucun article proposé en échange de ce paiement.
+	<notification label="Réponse si occupé(e)" name="BusyModePay">
+		Vous êtes en mode occupé et vous ne recevrez donc aucun objet en échange de ce paiement.
 
-Voulez-vous désactiver Ne pas déranger avant de terminer cette transaction ?
+Souhaitez-vous quitter le mode occupé avant de terminer cette transaction ?
 		<form name="form">
-			<ignore name="ignore" text="Je suis sur le point de payer une personne ou un objet mais suis en mode Ne pas déranger"/>
-			<button ignore="Toujours quitter le mode Ne pas déranger" name="Yes" text="OK"/>
-			<button ignore="Ne jamais quitter le mode Ne pas déranger" name="No" text="Annuler"/>
+			<ignore name="ignore" save_option="true" text="Je suis sur le point de payer une personne ou un objet mais suis en mode Occupé"/>
+			<button ignore="Toujours quitter le mode occupé" name="Yes" text="OK"/>
+			<button ignore="Ne jamais quitter le mode occupé" name="No" text="Annuler"/>
 		</form>
 	</notification>
 	<notification name="ConfirmDeleteProtectedCategory">
@@ -2274,8 +2249,11 @@ Liez-la à partir d&apos;une page web pour permettre aux autres résidents d&apo
 	<notification name="GroupNotice">
 		Sujet : [SUBJECT], Message : [MESSAGE]
 	</notification>
-	<notification name="FriendOnlineOffline">
-		&lt;nolink&gt;[NAME]&lt;/nolink&gt; est [STATUS]
+	<notification name="FriendOnline">
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; est en ligne
+	</notification>
+	<notification name="FriendOffline">
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; est hors ligne
 	</notification>
 	<notification name="AddSelfFriend">
 		Même si vous êtes extrêmement sympathique, vous ne pouvez pas devenir ami avec vous-même.
@@ -2504,6 +2482,13 @@ Vous ne pouvez pas voler ici.
 	<notification name="DynamicPathfindingDisabled">
 		La recherche de chemin dynamique n&apos;est pas activée dans cette région. Il se peut que les objets scriptés utilisant des appels LSL de recherche de chemin ne fonctionnent pas comme prévu pour cette région.
 	</notification>
+	<notification name="PathfindingRebakeNavmesh">
+		La modification de certains objets de cette région risque d&apos;entraîner un comportement incorrect des autres objets mobiles. Pour que les objets mobiles se comportent correctement, cliquez sur Refiger la région. Pour plus d&apos;informations, choisissez Aide.
+		<url name="url">
+			http://wiki.secondlife.com/wiki/Pathfinding_Tools_in_the_Second_Life_Viewer
+		</url>
+		<usetemplate helptext="Aide" ignoretext="La modification de certains objets de cette région risque d&apos;entraîner un comportement incorrect des autres objets mobiles." name="okhelpignore" yestext="OK"/>
+	</notification>
 	<notification name="PathfindingCannotRebakeNavmesh">
 		Une erreur est survenue. Un problème réseau ou serveur s&apos;est peut-être produit ou vous ne disposez pas de droits de construction. Se déconnecter puis se reconnecter permet parfois de résoudre le problème.
 		<usetemplate name="okbutton" yestext="OK"/>
@@ -2766,7 +2751,7 @@ Acceptez-vous ?
 	<notification name="ScriptQuestionCaution">
 		Avertissement : l&apos;objet &lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt; souhaite un accès total à votre compte en Linden dollars. Si vous autorisez cet accès, il pourra supprimer des fonds de votre compte à tout moment ou le vider entièrement de façon continue sans avis préalable.
   
-N&apos;autorisez pas cet accès si vous ne comprenez pas entièrement pourquoi l&apos;objet souhaite accéder à votre compte.
+Il est rare qu&apos;une telle demande soit légitime. N&apos;autorisez pas cet accès si vous ne comprenez pas entièrement pourquoi l&apos;objet souhaite accéder à votre compte.
 		<form name="form">
 			<button name="Grant" text="Permettre un accès total"/>
 			<button name="Deny" text="Refuser"/>
@@ -3347,633 +3332,4 @@ Désactivation des mises à jour futures de ce fichier...
 		Vous allez supprimer [NUM_ITEMS] articles. Voulez-vous vraiment continuer ?
 		<usetemplate ignoretext="Voulez-vous vraiment supprimer plusieurs articles ?" name="okcancelignore" notext="Non" yestext="Oui"/>
 	</notification>
-	<notification name="AvatarFrozen">
-		[AV_FREEZER] vous a figé. Vous ne pouvez pas bouger ni interagir avec le monde.
-	</notification>
-	<notification name="AvatarFrozenDuration">
-		[AV_FREEZER] vous a figé pour une durée de [AV_FREEZE_TIME] secondes. Vous ne pouvez pas bouger ni interagir avec le monde.
-	</notification>
-	<notification name="YouFrozeAvatar">
-		Avatar figé.
-	</notification>
-	<notification name="AvatarHasUnFrozenYou">
-		[AV_FREEZER] vous a libéré.
-	</notification>
-	<notification name="AvatarUnFrozen">
-		Avatar libéré.
-	</notification>
-	<notification name="AvatarFreezeFailure">
-		Vous n&apos;avez pas pu figer ce que vous vouliez car vous ne disposez pas des droits d&apos;admin pour cette parcelle.
-	</notification>
-	<notification name="AvatarFreezeThaw">
-		Vous n&apos;êtes plus figé, vous pouvez reprendre votre vie.
-	</notification>
-	<notification name="AvatarCantFreeze">
-		Impossible de figer cet utilisateur.
-	</notification>
-	<notification name="NowOwnObject">
-		Vous êtes désormais le propriétaire de l&apos;objet [OBJECT_NAME].
-	</notification>
-	<notification name="CantRezOnLand">
-		Impossible de rezzer l&apos;objet à [OBJECT_POS] car le propriétaire de ce terrain de l&apos;autorise pas.  Utilisez l&apos;outil Terrain pour voir à qui appartiennent les terrains.
-	</notification>
-	<notification name="RezFailTooManyRequests">
-		Impossible de rezzer l&apos;objet car il y a trop de demandes.
-	</notification>
-	<notification name="SitFailCantMove">
-		Vous ne pouvez pas vous asseoir car vous ne pouvez actuellement pas bouger.
-	</notification>
-	<notification name="SitFailNotAllowedOnLand">
-		Vous ne pouvez pas vous asseoir car votre présence sur ce terrain n&apos;est pas autorisée.
-	</notification>
-	<notification name="SitFailNotSameRegion">
-		Essayez de vous rapprocher.  Impossible de vous asseoir sur l&apos;objet car
-il ne se trouve pas dans la même région que vous.
-	</notification>
-	<notification name="NoNewObjectRegionFull">
-		Création d&apos;un nouvel objet impossible. La région est pleine.
-	</notification>
-	<notification name="FailedToPlaceObject">
-		Échec du placement de l&apos;objet à l&apos;emplacement spécifié.  Veuillez réessayer.
-	</notification>
-	<notification name="NoOwnNoGardening">
-		Vous ne pouvez pas créer d&apos;arbres ni d&apos;herbe sur un terrain qui ne vous appartient pas.
-	</notification>
-	<notification name="NoCopyPermsNoObject">
-		Échec de la copie car vous ne disposez pas des droits requis pour copier l&apos;objet [OBJ_NAME].
-	</notification>
-	<notification name="NoTransPermsNoObject">
-		Échec de la copie car l&apos;objet [OBJ_NAME] ne peut pas vous être transféré.
-	</notification>
-	<notification name="AddToNavMeshNoCopy">
-		Échec de la copie car l&apos;objet [OBJ_NAME] contribue au maillage de navigation.
-	</notification>
-	<notification name="DupeWithNoRootsSelected">
-		Dupliquer sans objet racine sélectionné
-	</notification>
-	<notification name="CantDupeCuzRegionIsFull">
-		Impossible de dupliquer les objets car la région est pleine.
-	</notification>
-	<notification name="CantDupeCuzParcelNotFound">
-		Impossible de dupliquer les objets - la parcelle sur laquelle ils sont est introuvable.
-	</notification>
-	<notification name="CantCreateCuzParcelFull">
-		Création de l&apos;objet impossible car 
-la parcelle est pleine.
-	</notification>
-	<notification name="RezAttemptFailed">
-		Échec d&apos;une tentative pour rezzer un objet.
-	</notification>
-	<notification name="ToxicInvRezAttemptFailed">
-		Impossible de créer l&apos;article qui a provoqué des problèmes pour cette région.
-	</notification>
-	<notification name="InvItemIsBlacklisted">
-		Cet article d&apos;inventaire a été placé sur liste noire.
-	</notification>
-	<notification name="NoCanRezObjects">
-		Vous n&apos;êtes actuellement pas autorisé à créer des objets.
-	</notification>
-	<notification name="LandSearchBlocked">
-		Recherche de terrain bloquée.
-Vous avez effectué trop de recherches de terrain trop rapidement.
-Veuillez réessayer dans une minute.
-	</notification>
-	<notification name="NotEnoughResourcesToAttach">
-		Ressources de script insuffisantes pour attacher cet objet.
-	</notification>
-	<notification name="YouDiedAndGotTPHome">
-		Vous êtes mort et avez été téléporté à votre domicile.
-	</notification>
-	<notification name="EjectComingSoon">
-		Votre présence ici n&apos;est plus autorisée et vous disposez de [EJECT_TIME] secondes pour partir.
-	</notification>
-	<notification name="NoEnterServerFull">
-		Vous ne pouvez pas pénétrer dans cette région car 
-le serveur est plein.
-	</notification>
-	<notification name="SaveBackToInvDisabled">
-		Le réenregistrement dans l&apos;inventaire a été désactivé.
-	</notification>
-	<notification name="NoExistNoSaveToContents">
-		Impossible d&apos;enregistrer [OBJ_NAME] dans le contenu des objets car l&apos;objet à partir duquel il a été rezzé n&apos;existe plus.
-	</notification>
-	<notification name="NoModNoSaveToContents">
-		Impossible d&apos;enregistrer [OBJ_NAME] dans le contenu des objets car vous ne disposez pas des droits requis pour modifier l&apos;objet [DEST_NAME].
-	</notification>
-	<notification name="NoSaveBackToInvDisabled">
-		Impossible de réenregistrer [OBJ_NAME] dans l&apos;inventaire -- cette opération a été désactivée.
-	</notification>
-	<notification name="NoCopyNoSelCopy">
-		Vous ne pouvez pas copier votre sélection car vous n&apos;avez pas le droit de copier l&apos;objet [OBJ_NAME].
-	</notification>
-	<notification name="NoTransNoSelCopy">
-		Vous ne pouvez pas copier votre sélection car l&apos;objet [OBJ_NAME] n&apos;est pas transférable.
-	</notification>
-	<notification name="NoTransNoCopy">
-		Vous ne pouvez pas copier votre sélection car l&apos;objet [OBJ_NAME] n&apos;est pas transférable.
-	</notification>
-	<notification name="NoPermsNoRemoval">
-		La suppression de l&apos;objet [OBJ_NAME] du simulateur n&apos;est pas autorisée par le système de droits.
-	</notification>
-	<notification name="NoModNoSaveSelection">
-		Vous ne pouvez pas enregistrer votre sélection car vous n&apos;avez pas le droit de modifier l&apos;objet [OBJ_NAME].
-	</notification>
-	<notification name="NoCopyNoSaveSelection">
-		Vous ne pouvez pas enregistrer votre sélection car l&apos;objet [OBJ_NAME] ne peut pas être copié.
-	</notification>
-	<notification name="NoModNoTaking">
-		Vous ne pouvez pas prendre votre sélection car vous n&apos;avez pas le droit de modifier l&apos;objet [OBJ_NAME].
-	</notification>
-	<notification name="RezDestInternalError">
-		Erreur interne : type de destination inconnue.
-	</notification>
-	<notification name="DeleteFailObjNotFound">
-		Échec de la suppression car l&apos;objet est introuvable
-	</notification>
-	<notification name="SorryCantEjectUser">
-		Exclusion de cet utilisateur impossible.
-	</notification>
-	<notification name="RegionSezNotAHome">
-		Cette région ne vous permet pas d&apos;y définir votre domicile.
-	</notification>
-	<notification name="HomeLocationLimits">
-		Vous ne pouvez définir votre domicile que sur votre terrain ou un infohub du continent.
-	</notification>
-	<notification name="HomePositionSet">
-		Emplacement du domicile défini.
-	</notification>
-	<notification name="AvatarEjected">
-		Avatar expulsé.
-	</notification>
-	<notification name="AvatarEjectFailed">
-		Vous n&apos;avez pas pu réaliser l&apos;exclusion car vous ne disposez pas des droits d&apos;admin pour cette parcelle.
-	</notification>
-	<notification name="CantMoveObjectParcelFull">
-		Impossible de déplacer [OBJECT_NAME] jusqu&apos;à
-[OBJ_POSITION] dans la région [REGION_NAME] car la parcelle est pleine.
-	</notification>
-	<notification name="CantMoveObjectParcelPerms">
-		Impossible de déplacer [OBJECT_NAME] jusqu&apos;à
-[OBJ_POSITION] dans la région [REGION_NAME] car vos objets ne sont pas autorisés sur cette parcelle.
-	</notification>
-	<notification name="CantMoveObjectParcelResources">
-		Impossible de déplacer [OBJECT_NAME] jusqu&apos;à
-[OBJ_POSITION] dans la région [REGION_NAME] car il n&apos;y a pas suffisamment de ressources pour cet objet sur cette parcelle.
-	</notification>
-	<notification name="CantMoveObjectRegionVersion">
-		Impossible de déplacer [OBJECT_NAME] jusqu&apos;à
-[OBJ_POSITION] dans la région [REGION_NAME] car l&apos;autre région exécute une version plus ancienne qui ne prend pas en charge la réception de cet objet via le passage à une autre région.
-	</notification>
-	<notification name="CantMoveObjectNavMesh">
-		Impossible de déplacer [OBJECT_NAME] jusqu&apos;à
-[OBJ_POSITION] dans la région [REGION_NAME] car vous ne pouvez pas modifier le maillage de navigation d&apos;une région à une autre.
-	</notification>
-	<notification name="CantMoveObjectWTF">
-		Impossible de déplacer [OBJECT_NAME] jusqu&apos;à
-[OBJ_POSITION] dans la région [REGION_NAME] pour une raison inconnue. ([FAILURE_TYPE])
-	</notification>
-	<notification name="NoPermModifyObject">
-		Vous n&apos;êtes pas autorisé à modifier cet objet.
-	</notification>
-	<notification name="CantEnablePhysObjContributesToNav">
-		Impossible d&apos;activer les propriétés physiques pour un objet qui contribue au maillage de navigation.
-	</notification>
-	<notification name="CantEnablePhysKeyframedObj">
-		Impossible d&apos;activer les propriétés physiques pour les objets avec images-clés.
-	</notification>
-	<notification name="CantEnablePhysNotEnoughLandResources">
-		Impossible d&apos;activer les propriétés physiques pour l&apos;objet -- ressources de terrain insuffisantes.
-	</notification>
-	<notification name="CantEnablePhysCostTooGreat">
-		Impossible d&apos;activer les propriétés physiques pour les objets avec un coût de ressources physiques supérieur à [MAX_OBJECTS]
-	</notification>
-	<notification name="PhantomWithConcavePiece">
-		Cet objet ne peut pas contenir de morceau concave car c&apos;est un fantôme qui contribue au maillage de navigation.
-	</notification>
-	<notification name="UnableAddItem">
-		Ajout de l&apos;article impossible.
-	</notification>
-	<notification name="UnableEditItem">
-		Modification impossible
-	</notification>
-	<notification name="NoPermToEdit">
-		Modification interdite.
-	</notification>
-	<notification name="NoPermToCopyInventory">
-		Pas autorisé à copier cet inventaire.
-	</notification>
-	<notification name="CantSaveItemDoesntExist">
-		Impossible d&apos;enregistrer dans le contenu des objets : L&apos;article n&apos;existe plus.
-	</notification>
-	<notification name="CantSaveItemAlreadyExists">
-		Impossible d&apos;enregistrer dans le contenu des objets : Un article avec ce nom existe déjà dans l&apos;inventaire.
-	</notification>
-	<notification name="CantSaveModifyAttachment">
-		Impossible d&apos;enregistrer dans le contenu des objets : cela modifierait les droits d&apos;attache.
-	</notification>
-	<notification name="TooManyScripts">
-		Trop de scripts.
-	</notification>
-	<notification name="UnableAddScript">
-		Ajout du script impossible.
-	</notification>
-	<notification name="AssetServerTimeoutObjReturn">
-		Le serveur d&apos;actifs n&apos;a pas répondu assez vite.  Objet renvoyé dans le sim.
-	</notification>
-	<notification name="RegionDisablePhysicsShapes">
-		Les formes physiques ne sont pas activées pour cette région.
-	</notification>
-	<notification name="NoModNavmeshAcrossRegions">
-		Vous ne pouvez pas modifier le maillage de navigation d&apos;une région à une autre.
-	</notification>
-	<notification name="NoSetPhysicsPropertiesOnObjectType">
-		Impossible de définir les propriétés physiques pour ce type d&apos;objet.
-	</notification>
-	<notification name="NoSetRootPrimWithNoShape">
-		Vous devenez définir une forme pour la prim racine.
-	</notification>
-	<notification name="NoRegionSupportPhysMats">
-		Les matériaux physiques ne sont pas activés pour cette région.
-	</notification>
-	<notification name="OnlyRootPrimPhysMats">
-		Les matériaux physiques ne peuvent être ajustés que pour les prims racines.
-	</notification>
-	<notification name="NoSupportCharacterPhysMats">
-		La configuration de matériaux physiques sur les personnages n&apos;est pas prise en charge actuellement.
-	</notification>
-	<notification name="InvalidPhysMatProperty">
-		Une ou plusieurs propriétés des ressources physiques spécifiées n&apos;étaient pas valides.
-	</notification>
-	<notification name="NoPermsAlterStitchingMeshObj">
-		Vous ne pouvez pas changer le type de raccord d&apos;un objet avec maillage.
-	</notification>
-	<notification name="NoPermsAlterShapeMeshObj">
-		Vous ne pouvez pas changer la forme d&apos;un objet avec maillage.
-	</notification>
-	<notification name="FullRegionCantEnter">
-		Vous ne pouvez pas pénétrer dans cette région car \ncar la région est pleine.
-	</notification>
-	<notification name="LinkFailedOwnersDiffer">
-		Échec du lien -- les propriétaires sont différents
-	</notification>
-	<notification name="LinkFailedNoModNavmeshAcrossRegions">
-		Échec du lien -- vous ne pouvez pas modifier le maillage de navigation d&apos;une région à une autre.
-	</notification>
-	<notification name="LinkFailedNoPermToEdit">
-		Échec du lien car vous ne disposez pas des droits de modification.
-	</notification>
-	<notification name="LinkFailedTooManyPrims">
-		Échec du lien -- trop de primitives
-	</notification>
-	<notification name="LinkFailedCantLinkNoCopyNoTrans">
-		Échec du lien -- impossible de lier pas de copie et pas de transfert
-	</notification>
-	<notification name="LinkFailedNothingLinkable">
-		Échec du lien - il n&apos;y a rien qui puisse être lié.
-	</notification>
-	<notification name="LinkFailedTooManyPathfindingChars">
-		Échec du lien -- trop de personnages de recherche de chemin
-	</notification>
-	<notification name="LinkFailedInsufficientLand">
-		Échec du lien -- ressources de terrain insuffisantes
-	</notification>
-	<notification name="LinkFailedTooMuchPhysics">
-		Cet objet utilise trop de ressources physiques - sa dynamique a été désactivée.
-	</notification>
-	<notification name="TeleportedHomeByObjectOnParcel">
-		Vous avez été téléporté chez vous par l&apos;objet [OBJECT_NAME] sur la parcelle [PARCEL_NAME].
-	</notification>
-	<notification name="TeleportedHomeByObject">
-		Vous avez été téléporté chez vous par l&apos;objet [OBJECT_NAME].
-	</notification>
-	<notification name="TeleportedByAttachment">
-		Vous avez été téléporté par un élément sur [ITEM_ID]
-	</notification>
-	<notification name="TeleportedByObjectOnParcel">
-		Vous avez été téléporté par l&apos;objet [OBJECT_NAME] sur la parcelle [PARCEL_NAME].
-	</notification>
-	<notification name="TeleportedByObjectOwnedBy">
-		Vous avez été téléporté par l&apos;objet [OBJECT_NAME] appartenant à [OWNER_ID].
-	</notification>
-	<notification name="TeleportedByObjectUnknownUser">
-		Vous avez été téléporté par l&apos;objet [OBJECT_NAME] appartenant à un utilisateur inconnu.
-	</notification>
-	<notification name="CantCreateObjectRegionFull">
-		Création de l&apos;objet demandé impossible. La région est pleine.
-	</notification>
-	<notification name="CantAttackMultipleObjOneSpot">
-		Vous ne pouvez pas attacher plusieurs objets au même endroit.
-	</notification>
-	<notification name="CantCreateMultipleObjAtLoc">
-		Vous ne pouvez pas créer plusieurs objets ici.
-	</notification>
-	<notification name="UnableToCreateObjTimeOut">
-		Création de l&apos;objet demandé impossible. Objet absent de la base de données.
-	</notification>
-	<notification name="UnableToCreateObjUnknown">
-		Création de l&apos;objet demandé impossible. Délai d&apos;attente dépassé. Veuillez réessayer.
-	</notification>
-	<notification name="UnableToCreateObjMissingFromDB">
-		Création de l&apos;objet demandé impossible. Veuillez réessayer.
-	</notification>
-	<notification name="RezFailureTookTooLong">
-		Échec de l&apos;action « rezzer », le chargement de l&apos;objet demandé a pris trop longtemps.
-	</notification>
-	<notification name="FailedToPlaceObjAtLoc">
-		Échec du placement de l&apos;objet à l&apos;emplacement spécifié.  Veuillez réessayer.
-	</notification>
-	<notification name="CantCreatePlantsOnLand">
-		Vous ne pouvez pas créer de plantes sur ce terrain.
-	</notification>
-	<notification name="CantRestoreObjectNoWorldPos">
-		Impossible de restaurer l&apos;objet. Position dans le monde introuvable.
-	</notification>
-	<notification name="CantRezObjectInvalidMeshData">
-		Impossible de rezzer l&apos;objet car ses données de maillage ne sont pas valides.
-	</notification>
-	<notification name="CantRezObjectTooManyScripts">
-		Impossible de rezzer l&apos;objet car il y a déjà trop de scripts dans cette région.
-	</notification>
-	<notification name="CantCreateObjectNoAccess">
-		Vos privilèges d&apos;accès ne vous autorisent pas à créer des objets à cet endroit.
-	</notification>
-	<notification name="CantCreateObject">
-		Vous n&apos;êtes actuellement pas autorisé à créer des objets.
-	</notification>
-	<notification name="InvalidObjectParams">
-		Paramètres d&apos;objet non valides
-	</notification>
-	<notification name="CantDuplicateObjectNoAcess">
-		Vos privilèges d&apos;accès ne vous autorisent pas à dupliquer des objets ici.
-	</notification>
-	<notification name="CantChangeShape">
-		Vous n’êtes pas autorisé à modifier cette forme.
-	</notification>
-	<notification name="NoAccessToClaimObjects">
-		Vos privilèges d&apos;accès ne vous autorisent pas à revendiquer des objets ici.
-	</notification>
-	<notification name="DeedFailedNoPermToDeedForGroup">
-		Échec de la cession car vous de disposez pas des droits de cession des objets pour votre groupe.
-	</notification>
-	<notification name="NoPrivsToBuyObject">
-		Vos privilèges d&apos;accès ne vous autorisent pas à acheter des objets ici.
-	</notification>
-	<notification name="CantAttachObjectAvatarSittingOnIt">
-		Impossible d&apos;attacher l&apos;objet car un avatar est assis dessus.
-	</notification>
-	<notification name="WhyAreYouTryingToWearShrubbery">
-		Les arbres et les plantes ne peuvent pas être portés sous forme d&apos;éléments attachés.
-	</notification>
-	<notification name="CantAttachGroupOwnedObjs">
-		Impossible d&apos;attacher les objets appartenant au groupe.
-	</notification>
-	<notification name="CantAttachObjectsNotOwned">
-		Vous ne pouvez pas attacher des objets qui ne vous appartiennent pas.
-	</notification>
-	<notification name="CantAttachNavmeshObjects">
-		Impossible d&apos;attacher les objets contribuant au maillage de navigation.
-	</notification>
-	<notification name="CantAttachObjectNoMovePermissions">
-		Impossible d&apos;attacher l&apos;objet car vous n&apos;avez pas le droit de le déplacer.
-	</notification>
-	<notification name="CantAttachNotEnoughScriptResources">
-		Ressources de script insuffisantes pour attacher cet objet.
-	</notification>
-	<notification name="CantDropItemTrialUser">
-		Vous ne pouvez pas déposer d&apos;objets ici. Essayez la zone de période d&apos;essai gratuite.
-	</notification>
-	<notification name="CantDropMeshAttachment">
-		Vous ne pouvez pas déposer les éléments attachés avec maillage. Détachez-les dans l&apos;inventaire puis rezzez-les dans le monde.
-	</notification>
-	<notification name="CantDropAttachmentNoPermission">
-		L&apos;élément n&apos;a pas pu être déposé : vous n&apos;avez pas le droit de déposer des éléments à cet endroit.
-	</notification>
-	<notification name="CantDropAttachmentInsufficientLandResources">
-		L&apos;élément n&apos;a pas pu être déposé : ressources de terrain disponibles insuffisantes.
-	</notification>
-	<notification name="CantDropAttachmentInsufficientResources">
-		Les éléments n&apos;ont pas pu être déposés : ressources disponibles insuffisantes.
-	</notification>
-	<notification name="CantDropObjectFullParcel">
-		Impossible de déposer l&apos;objet ici.  La parcelle est pleine.
-	</notification>
-	<notification name="CantTouchObjectBannedFromParcel">
-		Vous ne pouvez pas toucher/attraper cet objet car vous êtes banni de cette parcelle de terrain.
-	</notification>
-	<notification name="PlzNarrowDeleteParams">
-		Veuillez affiner vos paramètres de suppression.
-	</notification>
-	<notification name="UnableToUploadAsset">
-		Chargement de l&apos;actif impossible.
-	</notification>
-	<notification name="CantTeleportCouldNotFindUser">
-		Impossible de trouver l&apos;utilisateur à téléporter chez lui
-	</notification>
-	<notification name="GodlikeRequestFailed">
-		échec de la demande de type divine
-	</notification>
-	<notification name="GenericRequestFailed">
-		échec de la demande générique
-	</notification>
-	<notification name="CantUploadPostcard">
-		Chargement de la carte postale impossible.  Réessayez ultérieurement.
-	</notification>
-	<notification name="CantFetchInventoryForGroupNotice">
-		Impossible récupérer les détails de l&apos;inventaire pour la notice au groupe.
-	</notification>
-	<notification name="CantSendGroupNoticeNotPermitted">
-		Impossible d&apos;envoyer une notice au groupe -- ce n&apos;est pas autorisé.
-	</notification>
-	<notification name="CantSendGroupNoticeCantConstructInventory">
-		Impossible d&apos;envoyer une notice au groupe - échec de la construction de l&apos;inventaire.
-	</notification>
-	<notification name="CantParceInventoryInNotice">
-		Impossible d&apos;analyser l&apos;inventaire dans la notice.
-	</notification>
-	<notification name="TerrainUploadFailed">
-		Échec du chargement du terrain.
-	</notification>
-	<notification name="TerrainFileWritten">
-		Fichier de terrain écrit
-	</notification>
-	<notification name="TerrainFileWrittenStartingDownload">
-		Fichier de terrain écrit, lancement du téléchargement...
-	</notification>
-	<notification name="TerrainBaked">
-		Terrain figé.
-	</notification>
-	<notification name="TenObjectsDisabledPlzRefresh">
-		Seuls les 10 premiers objets sélectionnés ont été désactivés. Actualisez et effectuez des sélections supplémentaires si nécessaire.
-	</notification>
-	<notification name="UpdateViewerBuyParcel">
-		Vous devez mettre votre client à jour pour acheter cette parcelle.
-	</notification>
-	<notification name="CantBuyParcelNotForSale">
-		Achat impossible, cette parcelle n&apos;est pas à vendre.
-	</notification>
-	<notification name="CantBuySalePriceOrLandAreaChanged">
-		Achat impossible, le prix de vente ou la zone de terrain a changé.
-	</notification>
-	<notification name="CantBuyParcelNotAuthorized">
-		Vous n&apos;êtes pas un acheteur autorisé pour cette parcelle.
-	</notification>
-	<notification name="CantBuyParcelAwaitingPurchaseAuth">
-		Vous ne pouvez pas acheter cette parcelle car elle est déjà en attente d&apos;une autorisation d&apos;achat.
-	</notification>
-	<notification name="CantBuildOverflowParcel">
-		Vous ne pouvez pas construire d&apos;objets ici car cela saturerait la parcelle.
-	</notification>
-	<notification name="SelectedMultipleOwnedLand">
-		Vous avez sélectionné des terrains avec des propriétaires différents. Sélectionnez une zone plus petite et réessayez.
-	</notification>
-	<notification name="CantJoinTooFewLeasedParcels">
-		Pas suffisamment de parcelles louées dans la sélection pour effectuer la fusion.
-	</notification>
-	<notification name="CantDivideLandMultipleParcelsSelected">
-		Division du terrain impossible.\nPlusieurs parcelles sont sélectionnées.\nVeuillez sélectionner un terrain plus petit.
-	</notification>
-	<notification name="CantDivideLandCantFindParcel">
-		Division du terrain impossible.\nParcelle introuvable.\nSignalez-le en allant à Aide -&gt; Signaler un bug...
-	</notification>
-	<notification name="CantDivideLandWholeParcelSelected">
-		Division du terrain impossible. Toute la parcelle est sélectionnée.\nVeuillez sélectionner un terrain plus petit.
-	</notification>
-	<notification name="LandHasBeenDivided">
-		Le terrain a été divisé.
-	</notification>
-	<notification name="PassPurchased">
-		Vous avez acheté un pass.
-	</notification>
-	<notification name="RegionDisallowsClassifieds">
-		Cette région n&apos;autorise pas les petites annonces.
-	</notification>
-	<notification name="LandPassExpireSoon">
-		Votre pass pour ce terrain arrive à expiration.
-	</notification>
-	<notification name="CantSitNoSuitableSurface">
-		Il n&apos;y a pas de surface appropriée sur laquelle s&apos;asseoir, essayez un autre endroit.
-	</notification>
-	<notification name="CantSitNoRoom">
-		Pas de place pour s&apos;asseoir ici, essayez un autre endroit.
-	</notification>
-	<notification name="ClaimObjectFailedNoPermission">
-		Échec de la revendication de l&apos;objet car vous ne disposez pas des droits requis.
-	</notification>
-	<notification name="ClaimObjectFailedNoMoney">
-		Échec de la revendication de l&apos;objet car vous ne disposez pas de suffisamment de L$.
-	</notification>
-	<notification name="CantDeedGroupLand">
-		Impossible de céder un terrain appartenant au groupe.
-	</notification>
-	<notification name="BuyObjectFailedNoMoney">
-		Échec de l&apos;achat de l&apos;objet car vous ne disposez pas de suffisamment de L$.
-	</notification>
-	<notification name="BuyInventoryFailedNoMoney">
-		Échec de l&apos;achat d&apos;inventaire car vous ne disposez pas de suffisamment de L$.
-	</notification>
-	<notification name="BuyPassFailedNoMoney">
-		Vous ne disposez pas de suffisamment de L$ pour acheter un pass pour ce terrain.
-	</notification>
-	<notification name="CantBuyPassTryAgain">
-		Impossible d&apos;acheter le pass actuellement.  Réessayez ultérieurement.
-	</notification>
-	<notification name="CantCreateObjectParcelFull">
-		Création de l&apos;objet impossible car \nla parcelle est pleine.
-	</notification>
-	<notification name="FailedPlacingObject">
-		Échec du placement de l&apos;objet à l&apos;emplacement spécifié.  Veuillez réessayer.
-	</notification>
-	<notification name="CantCreateLandmarkForEvent">
-		Impossible de créer le repère pour l&apos;événement.
-	</notification>
-	<notification name="GodBeatsFreeze">
-		Grâce à vos pouvoirs de type divin, vous n&apos;êtes plus figé.
-	</notification>
-	<notification name="SpecialPowersRequestFailedLogged">
-		Échec de la demande de pouvoirs spéciaux. Cette demande a été archivée.
-	</notification>
-	<notification name="ExpireExplanation">
-		Le système ne peut pas traiter votre demande actuellement. Délai d&apos;attente dépassé.
-	</notification>
-	<notification name="DieExplanation">
-		Le système ne peut pas traiter votre demande.
-	</notification>
-	<notification name="AddPrimitiveFailure">
-		Fonds insuffisants pour créer la primitive.
-	</notification>
-	<notification name="RezObjectFailure">
-		Fonds insuffisants pour créer l&apos;objet.
-	</notification>
-	<notification name="ResetHomePositionNotLegal">
-		Réinitialiser l&apos;emplacement du domicile car il n&apos;était pas légal.
-	</notification>
-	<notification name="CantInviteRegionFull">
-		Vous ne pouvez pas inviter quiconque là où vous vous trouvez actuellement car la région est pleine. Réessayez ultérieurement.
-	</notification>
-	<notification name="CantSetHomeAtRegion">
-		Cette région ne vous permet pas d&apos;y définir votre domicile.
-	</notification>
-	<notification name="ListValidHomeLocations">
-		Vous ne pouvez définir votre domicile que sur votre terrain ou un infohub du continent.
-	</notification>
-	<notification name="SetHomePosition">
-		Emplacement du domicile défini.
-	</notification>
-	<notification name="CantDerezInventoryError">
-		Impossible de dérezzer l&apos;objet à cause d&apos;un défaut d&apos;inventaire.
-	</notification>
-	<notification name="CantCreateRequestedInv">
-		Création de l&apos;inventaire demandé impossible.
-	</notification>
-	<notification name="CantCreateRequestedInvFolder">
-		Création du dossier d&apos;inventaire demandé impossible.
-	</notification>
-	<notification name="CantCreateInventory">
-		Création de cet inventaire impossible.
-	</notification>
-	<notification name="CantCreateLandmark">
-		Création du repère impossible.
-	</notification>
-	<notification name="CantCreateOutfit">
-		Création de la tenue impossible. Veuillez réessayer dans une minute.
-	</notification>
-	<notification name="InventoryNotForSale">
-		L&apos;inventaire n&apos;est pas à vendre.
-	</notification>
-	<notification name="CantFindInvItem">
-		Objet de l&apos;inventaire introuvable.
-	</notification>
-	<notification name="CantFindObject">
-		Objet introuvable.
-	</notification>
-	<notification name="CantTransfterMoneyRegionDisabled">
-		Les transferts d&apos;argent aux objets sont actuellement désactivés dans cette région.
-	</notification>
-	<notification name="CantPayNoAgent">
-		Impossible de savoir qui payer.
-	</notification>
-	<notification name="CantDonateToPublicObjects">
-		Vous ne pouvez pas donner de L$ à des objets publics.
-	</notification>
-	<notification name="InventoryCreationInWorldObjectFailed">
-		Échec de la création d&apos;inventaire sur l&apos;objet Second Life.
-	</notification>
-	<notification name="UserBalanceOrLandUsageError">
-		Une erreur interne nous a empêchés de mettre votre client à jour correctement.  Le solde de L$ et le patrimoine affichés dans votre client peuvent ne pas correspondre à votre solde réel sur les serveurs.
-	</notification>
-	<notification name="LargePrimAgentIntersect">
-		Impossible de créer de grandes prims qui coupent d&apos;autres joueurs.  Réessayez une fois que les autres joueurs se seront déplacés.
-	</notification>
-	<notification name="PreferenceChatClearLog">
-		Cela supprimera les journaux des conversations précédentes, ainsi que toute copie de sauvegarde de ce fichier.
-		<usetemplate ignoretext="Confirmer avant de supprimer le journal des conversations précédentes" name="okcancelignore" notext="Annuler" yestext="OK"/>
-	</notification>
-	<notification name="PreferenceChatDeleteTranscripts">
-		Cela supprimera les transcriptions de toutes les conversations précédentes. La liste des conversations passées ne sera pas affectée. Tous les fichiers avec les suffixes .txt et txt.backup dans le dossier [FOLDER] seront supprimés.
-		<usetemplate ignoretext="Confirmer avant la suppression des transcriptions" name="okcancelignore" notext="Annuler" yestext="OK"/>
-	</notification>
-	<notification name="PreferenceChatPathChanged">
-		Impossible de déplacer les fichiers. Chemin précédent rétabli.
-		<usetemplate ignoretext="Impossible de déplacer les fichiers. Chemin précédent rétabli." name="okignore" yestext="OK"/>
-	</notification>
 </notifications>
diff --git a/indra/newview/skins/default/xui/fr/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/fr/panel_avatar_list_item.xml
index c8fa9f340f9..54b8f53e59b 100644
--- a/indra/newview/skins/default/xui/fr/panel_avatar_list_item.xml
+++ b/indra/newview/skins/default/xui/fr/panel_avatar_list_item.xml
@@ -27,6 +27,5 @@
 	<icon name="permission_edit_mine_icon" tool_tip="Cet(te) ami(e) peut modifier, supprimer ou prendre vos objets."/>
 	<icon name="permission_map_icon" tool_tip="Cet(te) ami(e) peut vous localiser sur la carte."/>
 	<icon name="permission_online_icon" tool_tip="Cet(te) ami(e) peut voir lorsque vous êtes en ligne."/>
-	<button name="info_btn" tool_tip="En savoir plus"/>
 	<button name="profile_btn" tool_tip="Voir le profil"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/fr/panel_block_list_sidetray.xml
index 0e2b5a9c93a..96add2a74b1 100644
--- a/indra/newview/skins/default/xui/fr/panel_block_list_sidetray.xml
+++ b/indra/newview/skins/default/xui/fr/panel_block_list_sidetray.xml
@@ -1,11 +1,10 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="block_list_panel">
-	<panel label="bottom_panel" name="blocked_buttons_panel">
-		<filter_editor label="Filtrer" name="blocked_filter_input"/>
-		<menu_button name="blocked_gear_btn" tool_tip="Actions sur la personne ou l&apos;objet sélectionné"/>
-		<menu_button name="view_btn" tool_tip="Options de tri"/>
-		<menu_button name="plus_btn" tool_tip="Choisir un résident ou un objet à ignorer"/>
-		<button name="unblock_btn" tool_tip="Enlever le résident ou l’objet de la liste des ignorés"/>
-	</panel>
-	<block_list name="blocked" tool_tip="Liste des résidents actuellement ignorés"/>
+	<text name="title_text">
+		Liste des ignorés
+	</text>
+	<scroll_list name="blocked" tool_tip="Liste des résidents actuellement ignorés"/>
+	<button label="Ignorer une personne" label_selected="Ignorer le résident..." name="Block resident..." tool_tip="Choisir un résident à ignorer"/>
+	<button label="Ignorer un objet par son nom" label_selected="Ignorer un objet par son nom..." name="Block object by name..." tool_tip="Choisir un objet à ignorer par nom"/>
+	<button label="Ne plus ignorer" label_selected="Ne plus ignorer" name="Unblock" tool_tip="Enlever le résident ou l&apos;objet de la liste des ignorés"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_conversation_list_item.xml b/indra/newview/skins/default/xui/fr/panel_conversation_list_item.xml
deleted file mode 100644
index ebf18f64832..00000000000
--- a/indra/newview/skins/default/xui/fr/panel_conversation_list_item.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="conversation_list_item">
-	<layout_stack name="conversation_item_stack">
-		<layout_panel name="conversation_title_panel">
-			<text name="conversation_title" value="(chargement)"/>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_conversation_log_list_item.xml b/indra/newview/skins/default/xui/fr/panel_conversation_log_list_item.xml
deleted file mode 100644
index 9c277842b5a..00000000000
--- a/indra/newview/skins/default/xui/fr/panel_conversation_log_list_item.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="conversation_log_list_item">
-	<icon name="voice_session_icon" tool_tip="Incluait une conversation vocale"/>
-	<icon name="unread_ims_icon" tool_tip="Des messages sont arrivés pendant que vous étiez déconnecté."/>
-	<button name="delete_btn" tool_tip="Supprimer cette entrée"/>
-</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_group_list_item.xml b/indra/newview/skins/default/xui/fr/panel_group_list_item.xml
index b1b32af7c68..5fb69d19893 100644
--- a/indra/newview/skins/default/xui/fr/panel_group_list_item.xml
+++ b/indra/newview/skins/default/xui/fr/panel_group_list_item.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="group_list_item">
 	<text name="group_name" value="Inconnu"/>
-	<button name="info_btn" tool_tip="En savoir plus"/>
 	<button name="profile_btn" tool_tip="Voir le profil"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_people.xml b/indra/newview/skins/default/xui/fr/panel_people.xml
index 227ce26df72..f035853efcd 100644
--- a/indra/newview/skins/default/xui/fr/panel_people.xml
+++ b/indra/newview/skins/default/xui/fr/panel_people.xml
@@ -14,53 +14,81 @@ Pour rechercher des résidents avec qui passer du temps, utilisez [secondlife://
 	<string name="no_filtered_friends_msg">
 		Vous n&apos;avez pas trouvé ce que vous cherchiez ? Essayez [secondlife:///app/search/people/[SEARCH_TERM] Rechercher].
 	</string>
+	<string name="people_filter_label" value="Filtrer les personnes"/>
+	<string name="groups_filter_label" value="Filtrer les groupes"/>
 	<string name="no_filtered_groups_msg" value="Vous n&apos;avez pas trouvé ce que vous cherchiez ? Essayez [secondlife:///app/search/groups/[SEARCH_TERM] Rechercher]."/>
 	<string name="no_groups_msg" value="Vous souhaitez trouver des groupes à rejoindre ? Utilisez [secondlife:///app/search/groups Rechercher]."/>
 	<string name="MiniMapToolTipMsg" value="[REGION](Carte : double-clic ; Panoramique : Maj + faire glisser)"/>
 	<string name="AltMiniMapToolTipMsg" value="[REGION](Téléportation : double-clic ; Panoramique : Maj + faire glisser)"/>
+	<filter_editor label="Filtre" name="filter_input"/>
 	<tab_container name="tabs">
 		<panel label="PRÈS DE VOUS" name="nearby_panel">
-			<panel label="bottom_panel" name="nearby_buttons_panel">
-				<filter_editor label="Filtrer les personnes" name="nearby_filter_input"/>
-				<button name="gear_btn" tool_tip="Actions sur la personne sélectionnée"/>
-				<menu_button name="nearby_view_btn" tool_tip="Options d&apos;affichage/de tri"/>
-				<button name="add_friend_btn" tool_tip="Proposer à ce résident de devenir votre ami"/>
-				<dnd_button name="nearby_del_btn" tool_tip="Supprimer la personne sélectionnée des amis"/>
+			<panel label="bottom_panel" name="bottom_panel">
+				<menu_button name="nearby_view_sort_btn" tool_tip="Options"/>
+				<button name="add_friend_btn" tool_tip="Ajouter le résident sélectionné à votre liste d&apos;amis"/>
 			</panel>
 		</panel>
-		<panel label="AMIS" name="friends_panel">
-			<panel label="bottom_panel" name="friends_buttons_panel">
-				<filter_editor label="Filtrer les personnes" name="friends_filter_input"/>
-				<button name="gear_btn" tool_tip="Actions sur la personne sélectionnée"/>
-				<menu_button name="friends_view_btn" tool_tip="Options d&apos;affichage/de tri"/>
-				<button name="friends_add_btn" tool_tip="Proposer à ce résident de devenir votre ami"/>
-				<dnd_button name="friends_del_btn" tool_tip="Supprimer la personne sélectionnée des amis"/>
-			</panel>
+		<panel label="MES AMIS" name="friends_panel">
 			<accordion name="friends_accordion">
 				<accordion_tab name="tab_online" title="En ligne"/>
 				<accordion_tab name="tab_all" title="Tout"/>
 			</accordion>
+			<panel label="bottom_panel" name="bottom_panel">
+				<layout_stack name="bottom_panel">
+					<layout_panel name="options_gear_btn_panel">
+						<menu_button name="friends_viewsort_btn" tool_tip="Afficher d&apos;autres options"/>
+					</layout_panel>
+					<layout_panel name="add_btn_panel">
+						<button name="add_btn" tool_tip="Proposer à un résident de devenir votre ami"/>
+					</layout_panel>
+					<layout_panel name="trash_btn_panel">
+						<dnd_button name="del_btn" tool_tip="Supprimer le résident sélectionné de votre liste d&apos;amis."/>
+					</layout_panel>
+				</layout_stack>
+			</panel>
 		</panel>
-		<panel label="GROUPES" name="groups_panel">
-			<panel label="bottom_panel" name="groups_buttons_panel">
-				<filter_editor label="Filtrer les groupes" name="groups_filter_input"/>
-				<menu_button name="groups_gear_btn" tool_tip="Actions sur le groupe sélectionné"/>
-				<menu_button name="groups_view_btn" tool_tip="Options d&apos;affichage/de tri"/>
-				<menu_button name="plus_btn" tool_tip="Rejoindre/créer un nouveau groupe"/>
-				<dnd_button name="minus_btn" tool_tip="Quitter le groupe sélectionné"/>
+		<panel label="MES GROUPES" name="groups_panel">
+			<panel label="bottom_panel" name="bottom_panel">
+				<menu_button name="groups_viewsort_btn" tool_tip="Options"/>
+				<button name="plus_btn" tool_tip="Rejoindre/créer un nouveau groupe"/>
+				<button name="activate_btn" tool_tip="Activer le groupe sélectionné"/>
 			</panel>
 		</panel>
 		<panel label="RÉCENT" name="recent_panel">
-			<panel label="bottom_panel" name="recent_buttons_panel">
-				<filter_editor label="Filtrer les personnes" name="recent_filter_input"/>
-				<button name="gear_btn" tool_tip="Actions sur la personne sélectionnée"/>
-				<menu_button name="recent_view_btn" tool_tip="Options d&apos;affichage/de tri"/>
-				<button name="add_friend_btn" tool_tip="Proposer à ce résident de devenir votre ami"/>
-				<dnd_button name="recent_del_btn" tool_tip="Supprimer la personne sélectionnée des amis"/>
+			<panel label="bottom_panel" name="bottom_panel">
+				<menu_button name="recent_viewsort_btn" tool_tip="Options"/>
+				<button name="add_friend_btn" tool_tip="Ajouter le résident sélectionné à votre liste d&apos;amis"/>
 			</panel>
 		</panel>
-		<panel label="BLOQUÉ" name="blocked_panel">
-			<panel label="Résidents et objets ignorés" name="panel_block_list_sidetray"/>
-		</panel>
 	</tab_container>
+	<panel name="button_bar">
+		<layout_stack name="bottom_bar_ls">
+			<layout_panel name="view_profile_btn_lp">
+				<button label="Profil" name="view_profile_btn" tool_tip="Afficher la photo, les groupes et autres infos des résidents"/>
+			</layout_panel>
+			<layout_panel name="im_btn_lp">
+				<button label="IM" name="im_btn" tool_tip="Ouvrir une session IM."/>
+			</layout_panel>
+			<layout_panel name="call_btn_lp">
+				<button label="Appel" name="call_btn" tool_tip="Appeler ce résident."/>
+			</layout_panel>
+			<layout_panel name="share_btn_lp">
+				<button label="Partager" name="share_btn" tool_tip="Partager un article de l&apos;inventaire."/>
+			</layout_panel>
+			<layout_panel name="teleport_btn_lp">
+				<button label="Téléporter" name="teleport_btn" tool_tip="Proposer une téléportation."/>
+			</layout_panel>
+		</layout_stack>
+		<layout_stack name="bottom_bar_ls1">
+			<layout_panel name="group_info_btn_lp">
+				<button label="Profil du groupe" name="group_info_btn" tool_tip="Afficher les informations sur le groupe"/>
+			</layout_panel>
+			<layout_panel name="chat_btn_lp">
+				<button label="Chat de groupe" name="chat_btn" tool_tip="Ouvrir une session de chat"/>
+			</layout_panel>
+			<layout_panel name="group_call_btn_lp">
+				<button label="Appel de groupe" name="group_call_btn" tool_tip="Appeler ce groupe"/>
+			</layout_panel>
+		</layout_stack>
+	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml b/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml
index 972190dc159..550beb653ed 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml
@@ -1,86 +1,34 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Chat écrit" name="chat">
-	<panel>
-		<check_box initial_value="true" label="Exécuter l&apos;animation clavier quand vous écrivez" name="play_typing_animation"/>
-		<check_box label="M&apos;envoyer les IM par e-mail une fois déconnecté" name="send_im_to_email"/>
-		<check_box label="Seuls mes amis et groupes peuvent m&apos;appeler ou m&apos;envoyer un IM" name="voice_call_friends_only_check"/>
-		<text name="font_size">
-			Taille de la police :
-		</text>
-		<combo_box name="chat_font_size">
-			<item label="Petite" name="Small" value="0"/>
-			<item label="Moyenne" name="Medium" value="1"/>
-			<item label="Grande" name="Large" value="2"/>
-		</combo_box>
-		<check_box label="Bulles de chat" name="bubble_text_chat"/>
-	</panel>
-	<panel>
-		<text name="notifications">
-			Notifications
-		</text>
-		<text name="friend_ims">
-			IM amis :
-		</text>
-		<combo_box name="FriendIMOptions">
-			<item label="Ouvrir la fenêtre Conversation" name="OpenConversationsWindow" value="openconversations"/>
-			<item label="Afficher le message dans une fenêtre popup" name="PopUpMessage" value="toast"/>
-			<item label="Bouton de la barre d&apos;outils Flash" name="FlashToolbarButton" value="clignote"/>
-			<item label="Aucun(e)" name="None" value="aucun(e)"/>
-		</combo_box>
-		<text name="non_friend_ims">
-			IM non amis :
-		</text>
-		<combo_box name="NonFriendIMOptions">
-			<item label="Ouvrir la fenêtre Conversation" name="OpenConversationsWindow" value="openconversations"/>
-			<item label="Afficher le message dans une fenêtre popup" name="PopUpMessage" value="toast"/>
-			<item label="Bouton de la barre d&apos;outils Flash" name="FlashToolbarButton" value="clignote"/>
-			<item label="Aucun(e)" name="None" value="aucun(e)"/>
-		</combo_box>
-		<text name="conference_ims">
-			IM conférence :
-		</text>
-		<combo_box name="ConferenceIMOptions">
-			<item label="Ouvrir la fenêtre Conversation" name="OpenConversationsWindow" value="openconversations"/>
-			<item label="Afficher le message dans une fenêtre popup" name="PopUpMessage" value="toast"/>
-			<item label="Bouton de la barre d&apos;outils Flash" name="FlashToolbarButton" value="clignote"/>
-			<item label="Aucun(e)" name="None" value="aucun(e)"/>
-		</combo_box>
-		<text name="group_chat">
-			Chat de groupe :
-		</text>
-		<combo_box name="GroupChatOptions">
-			<item label="Ouvrir la fenêtre Conversation" name="OpenConversationsWindow" value="openconversations"/>
-			<item label="Afficher le message dans une fenêtre popup" name="PopUpMessage" value="toast"/>
-			<item label="Bouton de la barre d&apos;outils Flash" name="FlashToolbarButton" value="clignote"/>
-			<item label="Aucun(e)" name="None" value="aucun(e)"/>
-		</combo_box>
-		<text name="nearby_chat">
-			Chat près de moi :
-		</text>
-		<combo_box name="NearbyChatOptions">
-			<item label="Ouvrir la fenêtre Conversation" name="OpenConversationsWindow" value="openconversations"/>
-			<item label="Afficher le message dans une fenêtre popup" name="PopUpMessage" value="toast"/>
-			<item label="Bouton de la barre d&apos;outils Flash" name="FlashToolBarButton" value="clignote"/>
-			<item label="Aucun(e)" name="None" value="aucun(e)"/>
-		</combo_box>
-		<text name="notifications_alert">
-			Pour suspendre temporairement toutes les notifications, utilisez Communication &gt; Ne pas déranger.
-		</text>
-	</panel>
-	<panel>
-		<text name="play_sound">
-			Écouter le son :
-		</text>
-		<check_box label="Nouvelle conversation" name="new_conversation"/>
-		<check_box label="Appel entrant" name="incoming_voice_call"/>
-		<check_box label="Offre de téléportation" name="teleport_offer"/>
-		<check_box label="Offre d&apos;inventaire" name="inventory_offer"/>
-	</panel>
-	<panel>
-		<button label="Effacer le journal..." name="clear_log"/>
-		<button label="Supprimer les transcriptions..." name="delete_transcripts"/>
-		<button label="Parcourir..." label_selected="Parcourir" name="log_path_button"/>
-	</panel>
+	<text name="font_size">
+		Taille de la police :
+	</text>
+	<radio_group name="chat_font_size">
+		<radio_item label="Petite" name="radio" value="0"/>
+		<radio_item label="Moyenne" name="radio2" value="1"/>
+		<radio_item label="Grande" name="radio3" value="2"/>
+	</radio_group>
+	<check_box initial_value="true" label="Exécuter l&apos;animation clavier quand vous écrivez" name="play_typing_animation"/>
+	<check_box label="M&apos;envoyer les IM par e-mail une fois déconnecté" name="send_im_to_email"/>
+	<check_box label="Activer l&apos;historique des chats et des IM en texte brut" name="plain_text_chat_history"/>
+	<check_box label="Bulles de chat" name="bubble_text_chat"/>
+	<text name="show_ims_in_label">
+		Afficher les IM dans :
+	</text>
+	<text name="requires_restart_label">
+		(redémarrage requis)
+	</text>
+	<radio_group name="chat_window" tool_tip="Afficher vos messages instantanés dans plusieurs fenêtres ou dans une seule fenêtre avec plusieurs onglets (redémarrage requis)">
+		<radio_item label="Plusieurs fenêtres" name="radio" value="0"/>
+		<radio_item label="Onglets" name="radio2" value="1"/>
+	</radio_group>
+	<text name="disable_toast_label">
+		Activer les popups de chat entrant :
+	</text>
+	<check_box label="Chats de groupe" name="EnableGroupChatPopups" tool_tip="Cocher cette case pour qu&apos;un popup s&apos;affiche à réception d&apos;un message de chat de groupe."/>
+	<check_box label="Chats IM" name="EnableIMChatPopups" tool_tip="Cocher cette case pour qu&apos;un popup s&apos;affiche à réception d&apos;un message instantané."/>
+	<spinner label="Durée de vie du popup Chat près de moi :" name="nearby_toasts_lifetime"/>
+	<spinner label="Disparition progressive du popup Chat près de moi :" name="nearby_toasts_fadingtime"/>
 	<button label="Traduction..." name="ok_btn"/>
 	<button label="Rechercher/Remplacer..." name="autoreplace_showgui"/>
 	<button label="Orthographe..." name="spellcheck_showgui"/>
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_general.xml b/indra/newview/skins/default/xui/fr/panel_preferences_general.xml
index 533c392d6b9..66b84af3aa5 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_general.xml
@@ -69,9 +69,9 @@
 		<combo_box.item label="Jamais" name="item4"/>
 	</combo_box>
 	<text name="text_box3">
-		Réponse Ne pas déranger
+		Réponse si occupé(e) :
 	</text>
-	<text_editor name="do_not_disturb_response">
+	<text_editor name="busy_response">
 		log_in_to_change
 	</text_editor>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/sidepanel_task_info.xml b/indra/newview/skins/default/xui/fr/sidepanel_task_info.xml
index 896dd932e38..60027d41cb6 100644
--- a/indra/newview/skins/default/xui/fr/sidepanel_task_info.xml
+++ b/indra/newview/skins/default/xui/fr/sidepanel_task_info.xml
@@ -72,7 +72,6 @@
 			<combo_box.item label="Acheter l&apos;objet" name="Buyobject"/>
 			<combo_box.item label="Payer l&apos;objet" name="Payobject"/>
 			<combo_box.item label="Ouvrir" name="Open"/>
-			<combo_box.item label="Zoom" name="Zoom"/>
 		</combo_box>
 		<panel name="perms_inv">
 			<text name="perm_modify">
diff --git a/indra/newview/skins/default/xui/fr/strings.xml b/indra/newview/skins/default/xui/fr/strings.xml
index 69ed20f3764..6a2a3f559a5 100644
--- a/indra/newview/skins/default/xui/fr/strings.xml
+++ b/indra/newview/skins/default/xui/fr/strings.xml
@@ -137,7 +137,7 @@
 		Quitter
 	</string>
 	<string name="create_account_url">
-		http://join.secondlife.com/?sourceid=[sourceid]
+		http://join.secondlife.com/index.php?lang=fr-FR&amp;sourceid=[sourceid]
 	</string>
 	<string name="LoginFailedViewerNotPermitted">
 		Le client que vous utilisez ne permet plus d&apos;accéder à Second Life. Téléchargez un nouveau client à la page suivante :
@@ -622,8 +622,8 @@ Veuillez réessayer de vous connecter dans une minute.
 	<string name="AvatarAway">
 		Absent
 	</string>
-	<string name="AvatarDoNotDisturb">
-		Ne pas déranger
+	<string name="AvatarBusy">
+		Occupé
 	</string>
 	<string name="AvatarMuted">
 		Bloqué(e)
@@ -859,12 +859,6 @@ Veuillez réessayer de vous connecter dans une minute.
 	<string name="ST_NO_JOINT">
 		Impossible de trouver ROOT ou JOINT.
 	</string>
-	<string name="NearbyChatTitle">
-		Chat près de moi
-	</string>
-	<string name="NearbyChatLabel">
-		(Chat près de moi)
-	</string>
 	<string name="whisper">
 		chuchote :
 	</string>
@@ -928,15 +922,12 @@ Veuillez réessayer de vous connecter dans une minute.
 	<string name="ControlYourCamera">
 		Contrôler votre caméra
 	</string>
-	<string name="NotConnected">
-		Pas connecté(e)
-	</string>
-	<string name="AgentNameSubst">
-		(Vous)
-	</string>
 	<string name="TeleportYourAgent">
 		Vous téléporter
 	</string>
+	<string name="NotConnected">
+		Pas connecté(e)
+	</string>
 	<string name="SIM_ACCESS_PG">
 		Général
 	</string>
@@ -1018,6 +1009,18 @@ Veuillez réessayer de vous connecter dans une minute.
 	<string name="dictionary_files">
 		Dictionnaires
 	</string>
+	<string name="AvatarSetNotAway">
+		Présent
+	</string>
+	<string name="AvatarSetAway">
+		Absent
+	</string>
+	<string name="AvatarSetNotBusy">
+		Pas occupé
+	</string>
+	<string name="AvatarSetBusy">
+		Occupé
+	</string>
 	<string name="shape">
 		Silhouette
 	</string>
@@ -1986,8 +1989,8 @@ Veuillez réessayer de vous connecter dans une minute.
 	<string name="PanelContentsNewScript">
 		Nouveau script
 	</string>
-	<string name="DoNotDisturbModeResponseDefault">
-		Ce résident a activé Ne pas déranger et verra votre message plus tard.
+	<string name="BusyModeResponseDefault">
+		Le résident auquel vous avez envoyé un message est en mode Occupé, ce qui signifie qu&apos;il a demandé à ne pas être dérangé.  Votre message restera affiché dans son panneau IM afin qu&apos;il puisse le lire ultérieurement.
 	</string>
 	<string name="MuteByName">
 		(par nom)
@@ -2100,6 +2103,9 @@ Veuillez réessayer de vous connecter dans une minute.
 	<string name="GroupMoneyDate">
 		[weekday,datetime,utc] [day,datetime,utc] [mth,datetime,utc] [year,datetime,utc]
 	</string>
+	<string name="ViewerObjectContents">
+		Contenus
+	</string>
 	<string name="AcquiredItems">
 		Objets acquis
 	</string>
@@ -3871,7 +3877,7 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
 		Région de type Général
 	</string>
 	<string name="LocationCtrlSeeAVsTooltip">
-		Les avatars à l&apos;extérieur de cette parcelle ne peuvent pas voir ni entendre les avatars qui se trouvent à l&apos;intérieur.
+		Avatars visibles et chat autorisé en dehors de cette parcelle
 	</string>
 	<string name="LocationCtrlPathfindingDirtyTooltip">
 		Les objets mobiles risquent de ne pas se comporter correctement dans cette région tant qu&apos;elle n&apos;est pas refigée.
@@ -3948,12 +3954,6 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
 	<string name="IM_unblock_only_groups_friends">
 		Pour afficher ce message, vous devez désactiver la case Seuls mes amis et groupes peuvent m&apos;appeler ou m&apos;envoyer un IM, sous Préférences/Confidentialité.
 	</string>
-	<string name="OnlineStatus">
-		En ligne
-	</string>
-	<string name="OfflineStatus">
-		Hors ligne
-	</string>
 	<string name="answered_call">
 		Votre appel a fait l&apos;objet d&apos;une réponse
 	</string>
@@ -3963,9 +3963,6 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
 	<string name="you_joined_call">
 		Vous avez rejoint l&apos;appel
 	</string>
-	<string name="you_auto_rejected_call-im">
-		Vous avez automatiquement refusé l&apos;appel vocal quand le mode Ne pas déranger était activé.
-	</string>
 	<string name="name_started_call">
 		[NAME] appelle.
 	</string>
@@ -3982,7 +3979,7 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
 		Connexion en cours...
 	</string>
 	<string name="conference-title">
-		Chat à plusieurs
+		Conférence ad-hoc
 	</string>
 	<string name="conference-title-incoming">
 		Conférence avec [AGENT_NAME]
@@ -4862,9 +4859,6 @@ Essayez avec le chemin d&apos;accès à l&apos;éditeur entre guillemets doubles
 	<string name="Command_Chat_Label">
 		Chat
 	</string>
-	<string name="Command_Conversations_Label">
-		Conversations
-	</string>
 	<string name="Command_Compass_Label">
 		Boussole
 	</string>
@@ -4940,9 +4934,6 @@ Essayez avec le chemin d&apos;accès à l&apos;éditeur entre guillemets doubles
 	<string name="Command_Chat_Tooltip">
 		Parler aux personnes près de vous par chat écrit
 	</string>
-	<string name="Command_Conversations_Tooltip">
-		Parler à quelqu&apos;un
-	</string>
 	<string name="Command_Compass_Tooltip">
 		Boussole
 	</string>
@@ -5072,13 +5063,4 @@ Essayez avec le chemin d&apos;accès à l&apos;éditeur entre guillemets doubles
 	<string name="UserDictionary">
 		[User]
 	</string>
-	<string name="logging_calls_disabled_log_empty">
-		Les conversations ne sont pas archivées. Pour commencer à tenir un journal, choisissez Enregistrer : Journal seul ou Enregistrer : Journal et transcriptions sous Préférences &gt; Chat.
-	</string>
-	<string name="logging_calls_disabled_log_not_empty">
-		Aucune conversation ne sera plus enregistrée. Pour recommencer à tenir un journal, choisissez Enregistrer : Journal seul ou Enregistrer : Journal et transcriptions sous Préférences &gt; Chat.
-	</string>
-	<string name="logging_calls_enabled_log_empty">
-		Il n&apos;y a aucune conversation enregistrée. Quand quelqu&apos;un vous contacte ou quand vous contactez quelqu&apos;un, une entrée de journal s&apos;affiche ici.
-	</string>
 </strings>
diff --git a/indra/newview/skins/default/xui/it/floater_conversation_log.xml b/indra/newview/skins/default/xui/it/floater_conversation_log.xml
deleted file mode 100644
index 8354824ed14..00000000000
--- a/indra/newview/skins/default/xui/it/floater_conversation_log.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_conversation_log" title="REGISTRO CONVERSAZIONI">
-	<panel name="buttons_panel">
-		<filter_editor label="Filtro persone" name="people_filter_input"/>
-		<menu_button name="conversation_view_btn" tool_tip="Opzioni Mostra/Ordina"/>
-		<menu_button name="conversations_gear_btn" tool_tip="Azioni sulla persona o gruppo selezionato"/>
-	</panel>
-</floater>
diff --git a/indra/newview/skins/default/xui/it/floater_conversation_preview.xml b/indra/newview/skins/default/xui/it/floater_conversation_preview.xml
deleted file mode 100644
index d0e9c8ee0e3..00000000000
--- a/indra/newview/skins/default/xui/it/floater_conversation_preview.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="preview_conversation" title="CONVERSAZIONE:">
-	<floater.string name="Title">
-		CONVERSAZIONE: [NAME]
-	</floater.string>
-	<text name="page_label" value="Pagina"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/it/floater_im_container.xml b/indra/newview/skins/default/xui/it/floater_im_container.xml
index 10cf1b7f7ed..fb8e77b32fe 100644
--- a/indra/newview/skins/default/xui/it/floater_im_container.xml
+++ b/indra/newview/skins/default/xui/it/floater_im_container.xml
@@ -1,29 +1,2 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<multi_floater name="floater_im_box" title="CONVERSAZIONI">
-	<string name="collapse_icon" value="Conv_toolbar_collapse"/>
-	<string name="expand_icon" value="Conv_toolbar_expand"/>
-	<layout_stack name="conversations_stack">
-		<layout_panel name="conversations_layout_panel">
-			<layout_stack name="conversations_pane_buttons_stack">
-				<layout_panel name="conversations_pane_buttons_expanded">
-					<menu_button name="sort_btn" tool_tip="Opzioni Mostra/Ordina"/>
-					<button name="add_btn" tool_tip="Avvia una nuova conversazione"/>
-					<button name="speak_btn" tool_tip="Parla con le persone usando il microfono"/>
-				</layout_panel>
-				<layout_panel name="conversations_pane_buttons_collapsed">
-					<button name="expand_collapse_btn" tool_tip="Minimizza/espandi questo elenco"/>
-				</layout_panel>
-			</layout_stack>
-		</layout_panel>
-		<layout_panel name="messages_layout_panel">
-			<panel_container name="im_box_tab_container">
-				<panel name="stub_panel">
-					<button name="stub_collapse_btn" tool_tip="Minimizza questo pannello"/>
-					<text name="stub_textbox">
-						Questa conversazione in una finestra separata.   [secondlife:/// Ripristina conversazione.]
-					</text>
-				</panel>
-			</panel_container>
-		</layout_panel>
-	</layout_stack>
-</multi_floater>
+<multi_floater name="floater_im_box" title="CONVERSAZIONI"/>
diff --git a/indra/newview/skins/default/xui/it/floater_im_session.xml b/indra/newview/skins/default/xui/it/floater_im_session.xml
index d38ec7a5fe5..3d9d17fc81a 100644
--- a/indra/newview/skins/default/xui/it/floater_im_session.xml
+++ b/indra/newview/skins/default/xui/it/floater_im_session.xml
@@ -1,59 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="panel_im">
-	<floater.string name="call_btn_start">
-		Conv_toolbar_open_call
-	</floater.string>
-	<floater.string name="call_btn_stop">
-		Conv_toolbar_hang_up
-	</floater.string>
-	<floater.string name="collapseline_icon" value="Conv_collapse_to_one_line"/>
-	<floater.string name="expandline_icon" value="Conv_expand_one_line"/>
-	<floater.string name="collapse_icon" value="Conv_toolbar_collapse"/>
-	<floater.string name="expand_icon" value="Conv_toolbar_expand"/>
-	<floater.string name="tear_off_icon" value="Conv_toolbar_arrow_ne"/>
-	<floater.string name="return_icon" value="Conv_toolbar_arrow_sw"/>
-	<floater.string name="participant_added" value="[NAME] è stato invitato alla conversazione."/>
-	<floater.string name="multiple_participants_added" value="[NAME] sono stati invitati alla conversazione."/>
-	<floater.string name="tooltip_to_separate_window" value="Sposta questa conversazione in una finestra separata."/>
-	<floater.string name="tooltip_to_main_window" value="Sposta questa conversazione di nuovo nella finestra principale"/>
-	<floater.string name="start_call_button_tooltip" value="Apri collegamento voce"/>
-	<floater.string name="end_call_button_tooltip" value="Chiudi collegamento voce"/>
-	<floater.string name="expcol_button_not_tearoff_tooltip" value="Minimizza questo pannello"/>
-	<floater.string name="expcol_button_tearoff_and_expanded_tooltip" value="Minimizza elenco partecipanti"/>
-	<floater.string name="expcol_button_tearoff_and_collapsed_tooltip" value="Espandi l&apos;elenco dei partecipanti"/>
-	<view name="contents_view">
-		<layout_stack name="main_stack">
-			<layout_panel name="toolbar_panel">
-				<menu_button name="view_options_btn" tool_tip="Opzioni Mostra/Ordina"/>
-				<menu_button name="gear_btn" tool_tip="Azioni per la persona selezionata:"/>
-				<button name="add_btn" tool_tip="Aggiungi qualcuno a questa conversazione"/>
-				<button name="voice_call_btn" tool_tip="Apri collegamento voce"/>
-				<button name="close_btn" tool_tip="Termina questa conversazione"/>
-				<button name="expand_collapse_btn" tool_tip="Minimizza/espandi questo pannello"/>
-			</layout_panel>
-			<layout_panel name="body_panel">
-				<layout_stack name="im_panels">
-					<layout_panel name="right_part_holder">
-						<panel name="trnsAndChat_panel">
-							<layout_stack name="translate_and_chat_stack">
-								<layout_panel name="translate_chat_checkbox_lp">
-									<check_box label="Traduci chat" name="translate_chat_checkbox"/>
-								</layout_panel>
-							</layout_stack>
-						</panel>
-					</layout_panel>
-				</layout_stack>
-			</layout_panel>
-			<layout_panel name="chat_layout_panel">
-				<layout_stack name="input_panels">
-					<layout_panel name="input_editor_layout_panel">
-						<chat_editor label="A" name="chat_editor"/>
-					</layout_panel>
-					<layout_panel name="input_button_layout_panel">
-						<button name="minz_btn" tool_tip="Mostra/nascondi pannello messaggi"/>
-					</layout_panel>
-				</layout_stack>
-			</layout_panel>
-		</layout_stack>
-	</view>
+	<layout_stack name="im_panels">
+		<layout_panel>
+			<line_editor label="A" name="chat_editor"/>
+		</layout_panel>
+	</layout_stack>
 </floater>
diff --git a/indra/newview/skins/default/xui/it/floater_incoming_call.xml b/indra/newview/skins/default/xui/it/floater_incoming_call.xml
index 566920209d0..a95ed44662c 100644
--- a/indra/newview/skins/default/xui/it/floater_incoming_call.xml
+++ b/indra/newview/skins/default/xui/it/floater_incoming_call.xml
@@ -10,7 +10,7 @@
 		anonimo
 	</floater.string>
 	<floater.string name="VoiceInviteP2P">
-		ti sta chiamando.
+		sta chiamando.
 	</floater.string>
 	<floater.string name="VoiceInviteAdHoc">
 		ha aderito ad una chiamata in chat vocale in conferenza.
@@ -25,9 +25,9 @@
 		Vuoi abbandonare [CURRENT_CHAT] e aderire a questa voice chat?
 	</floater.string>
 	<text name="question">
-		Se rispondi, verrà interrotto il collegamento dalla conversazione a voce corrente.
+		Vuoi abbandonare [CURRENT_CHAT] e aderire a questa voice chat?
 	</text>
-	<button label="Risposta" label_selected="Risposta" name="Accept"/>
-	<button label="Ignora" label_selected="Ignora" name="Reject"/>
-	<button label="Apri invece IM" name="Start IM"/>
+	<button label="Accetta" label_selected="Accetta" name="Accept"/>
+	<button label="Rifiuta" label_selected="Rifiuta" name="Reject"/>
+	<button label="Inizia IM" name="Start IM"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/it/floater_pathfinding_console.xml b/indra/newview/skins/default/xui/it/floater_pathfinding_console.xml
index 77774441612..77be220a2ac 100644
--- a/indra/newview/skins/default/xui/it/floater_pathfinding_console.xml
+++ b/indra/newview/skins/default/xui/it/floater_pathfinding_console.xml
@@ -71,7 +71,7 @@
 			<text name="show_label">
 				Mostra:
 			</text>
-			<check_box label="Test" name="show_world"/>
+			<check_box label="Mondo" name="show_world"/>
 			<check_box label="Solo elementi spostabili" name="show_world_movables_only"/>
 			<check_box label="Navmesh" name="show_navmesh"/>
 			<text name="show_walkability_label">
diff --git a/indra/newview/skins/default/xui/it/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/it/floater_texture_ctrl.xml
index 27a17868a76..c97a91bb3fb 100644
--- a/indra/newview/skins/default/xui/it/floater_texture_ctrl.xml
+++ b/indra/newview/skins/default/xui/it/floater_texture_ctrl.xml
@@ -19,7 +19,7 @@
 	<button label="Default" label_selected="Default" name="Default"/>
 	<button label="Vuoto" label_selected="Vuoto" name="Blank"/>
 	<button label="Niente" label_selected="Niente" name="None"/>
-	<check_box initial_value="true" label="Applica adesso" name="apply_immediate_check"/>
+	<check_box initial_value="true" label="Anteprima dal vivo" name="apply_immediate_check"/>
 	<text name="preview_disabled" value="Anteprima disattivata"/>
 	<filter_editor label="Filtro texture" name="inventory search editor"/>
 	<check_box initial_value="false" label="Mostra cartelle" name="show_folders_check"/>
diff --git a/indra/newview/skins/default/xui/it/floater_voice_chat_volume.xml b/indra/newview/skins/default/xui/it/floater_voice_chat_volume.xml
deleted file mode 100644
index b168d067c27..00000000000
--- a/indra/newview/skins/default/xui/it/floater_voice_chat_volume.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_voice_volume" title="VOLUME CHAT VOCALE">
-	<slider label="Chat vocale" name="chat_voice_volume"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/it/floater_voice_effect.xml b/indra/newview/skins/default/xui/it/floater_voice_effect.xml
index f102622f5d1..c83b11f698a 100644
--- a/indra/newview/skins/default/xui/it/floater_voice_effect.xml
+++ b/indra/newview/skins/default/xui/it/floater_voice_effect.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater label="Luoghi" name="voice_effects" title="ANTEPRIMA MANIPOLAZIONE VOCE">
+<floater label="Luoghi" name="voice_effects" title="MANIPOLAZIONE VOCE">
 	<string name="no_voice_effect">
 		(Nessuna manipolazione voce)
 	</string>
diff --git a/indra/newview/skins/default/xui/it/floater_voice_volume.xml b/indra/newview/skins/default/xui/it/floater_voice_volume.xml
deleted file mode 100644
index eaeda7597f3..00000000000
--- a/indra/newview/skins/default/xui/it/floater_voice_volume.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!--
-  Not can_close / no title to avoid window chrome
-  Single instance - only have one at a time, recycle it each spawn
--->
-<floater name="floater_voice_volume" title="VOLUME VOCE">
-	<slider name="volume_slider" tool_tip="Volume voce" value="0.5"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/it/menu_cof_gear.xml b/indra/newview/skins/default/xui/it/menu_cof_gear.xml
index 984e4a16112..10524ba92d0 100644
--- a/indra/newview/skins/default/xui/it/menu_cof_gear.xml
+++ b/indra/newview/skins/default/xui/it/menu_cof_gear.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="Gear COF">
+<menu name="Gear COF">
 	<menu label="Nuovi abiti" name="COF.Gear.New_Clothes"/>
-	<menu label="Nuove parti del corpo" name="COF.Gear.New_Body_Parts"/>
-</toggleable_menu>
+	<menu label="Nuove parti del corpo" name="COF.Geear.New_Body_Parts"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/it/menu_conversation.xml b/indra/newview/skins/default/xui/it/menu_conversation.xml
deleted file mode 100644
index 46ced93f1df..00000000000
--- a/indra/newview/skins/default/xui/it/menu_conversation.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_conversation_participant">
-	<menu_item_call label="Chiudi la conversazione" name="close_conversation"/>
-	<menu_item_call label="Apri conversazione a voce" name="open_voice_conversation"/>
-	<menu_item_call label="Interrompi collegamento a voce" name="disconnect_from_voice"/>
-	<menu_item_call label="Vedi profilo" name="view_profile"/>
-	<menu_item_call label="IM" name="im"/>
-	<menu_item_call label="Offri teleport" name="offer_teleport"/>
-	<menu_item_call label="Chiamata a voce" name="voice_call"/>
-	<menu_item_call label="Cronologia chat..." name="chat_history"/>
-	<menu_item_call label="Aggiungi amico" name="add_friend"/>
-	<menu_item_call label="Rimuovi amico" name="remove_friend"/>
-	<menu_item_call label="Rimuovi amici" name="remove_friends"/>
-	<menu_item_call label="Invita al gruppo..." name="invite_to_group"/>
-	<menu_item_call label="Zoom avanti" name="zoom_in"/>
-	<menu_item_call label="Mappa" name="map"/>
-	<menu_item_call label="Condividi" name="share"/>
-	<menu_item_call label="Paga" name="pay"/>
-	<menu_item_check label="Blocca voce" name="block_unblock"/>
-	<menu_item_check label="Blocca testo" name="MuteText"/>
-	<menu_item_call label="Profilo del gruppo" name="group_profile"/>
-	<menu_item_call label="Attiva gruppo" name="activate_group"/>
-	<menu_item_call label="Lascia il gruppo" name="leave_group"/>
-	<context_menu label="Opzioni moderatore" name="Moderator Options">
-		<menu_item_check label="Consenti chat di testo" name="AllowTextChat"/>
-		<menu_item_call label="Disattiva audio di questo partecipante" name="ModerateVoiceMuteSelected"/>
-		<menu_item_call label="Riattiva audio di questo partecipante" name="ModerateVoiceUnMuteSelected"/>
-		<menu_item_call label="Disattiva audio di tutti" name="ModerateVoiceMute"/>
-		<menu_item_call label="Riattiva audio di tutti" name="ModerateVoiceUnmute"/>
-	</context_menu>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_conversation_log_gear.xml b/indra/newview/skins/default/xui/it/menu_conversation_log_gear.xml
deleted file mode 100644
index 5686a902eb2..00000000000
--- a/indra/newview/skins/default/xui/it/menu_conversation_log_gear.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="Conversation Context Menu">
-	<menu_item_call label="IM..." name="IM"/>
-	<menu_item_call label="Chiamata a voce..." name="Call"/>
-	<menu_item_call label="Apro la cronologia delle chat..." name="Chat history"/>
-	<menu_item_call label="Vedi profilo" name="View Profile"/>
-	<menu_item_call label="Offri Teleport" name="teleport"/>
-	<menu_item_call label="Aggiungi come amico" name="add_friend"/>
-	<menu_item_call label="Rimuovi amico" name="remove_friend"/>
-	<menu_item_call label="Invita al gruppo..." name="Invite"/>
-	<menu_item_call label="Mappa" name="Map"/>
-	<menu_item_call label="Condividi" name="Share"/>
-	<menu_item_call label="Paga" name="Pay"/>
-	<menu_item_check label="Blocca/Sblocca" name="Block/Unblock"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_conversation_log_view.xml b/indra/newview/skins/default/xui/it/menu_conversation_log_view.xml
deleted file mode 100644
index 73b05831ef3..00000000000
--- a/indra/newview/skins/default/xui/it/menu_conversation_log_view.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_conversation_view">
-	<menu_item_check label="Ordina in base al nome" name="sort_by_name"/>
-	<menu_item_check label="Ordina in base alla data" name="sort_by_date"/>
-	<menu_item_check label="Ordina con gli amici in alto" name="sort_by_friends"/>
-	<menu_item_call label="Mostra la cronologia delle chat vicine..." name="view_nearby_chat_history"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_im_conversation.xml b/indra/newview/skins/default/xui/it/menu_im_conversation.xml
deleted file mode 100644
index 1621d57e12b..00000000000
--- a/indra/newview/skins/default/xui/it/menu_im_conversation.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="Conversation Gear Menu">
-	<menu_item_call label="Vedi profilo" name="View Profile"/>
-	<menu_item_call label="Aggiungi come amico" name="Add Friend"/>
-	<menu_item_call label="Rimuovi amico" name="remove_friend"/>
-	<menu_item_call label="Offri teleport" name="offer_teleport"/>
-	<menu_item_call label="Invita al gruppo..." name="invite_to_group"/>
-	<menu_item_call label="Cronologia chat..." name="chat_history"/>
-	<menu_item_call label="Zoom avanti" name="zoom_in"/>
-	<menu_item_call label="Mappa" name="map"/>
-	<menu_item_call label="Condividi" name="Share"/>
-	<menu_item_call label="Paga" name="Pay"/>
-	<menu_item_check label="Blocca voce" name="Block/Unblock"/>
-	<menu_item_check label="Blocca testo" name="MuteText"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_im_session_showmodes.xml b/indra/newview/skins/default/xui/it/menu_im_session_showmodes.xml
deleted file mode 100644
index 350fbc5c6f6..00000000000
--- a/indra/newview/skins/default/xui/it/menu_im_session_showmodes.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_modes">
-	<menu_item_check label="Vista compatta" name="compact_view"/>
-	<menu_item_check label="Vista espansa" name="expanded_view"/>
-	<menu_item_check label="Mostra orario" name="IMShowTime"/>
-	<menu_item_check label="Mostra i nomi nelle conversazioni individuali" name="IMShowNamesForP2PConv"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_object_icon.xml b/indra/newview/skins/default/xui/it/menu_object_icon.xml
index 9623775af46..0f347b1a909 100644
--- a/indra/newview/skins/default/xui/it/menu_object_icon.xml
+++ b/indra/newview/skins/default/xui/it/menu_object_icon.xml
@@ -2,6 +2,4 @@
 <menu name="Object Icon Menu">
 	<menu_item_call label="Profilo oggetto..." name="Object Profile"/>
 	<menu_item_call label="Blocca..." name="Block"/>
-	<menu_item_call label="Mostra sulla mappa" name="show_on_map"/>
-	<menu_item_call label="Teleport sul luogo dell&apos;oggetto" name="teleport_to_object"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/it/menu_outfit_gear.xml b/indra/newview/skins/default/xui/it/menu_outfit_gear.xml
index 3ac0c5ce698..09fc867d7c4 100644
--- a/indra/newview/skins/default/xui/it/menu_outfit_gear.xml
+++ b/indra/newview/skins/default/xui/it/menu_outfit_gear.xml
@@ -23,8 +23,6 @@
 		<menu_item_call label="Nuovi capelli" name="New Hair"/>
 		<menu_item_call label="Nuovi occhi" name="New Eyes"/>
 	</menu>
-	<menu_item_call label="Apri tutte le cartelle" name="expand"/>
-	<menu_item_call label="Chiudi tutte le cartelle" name="collapse"/>
 	<menu_item_call label="Cambia nome del vestiario" name="rename"/>
 	<menu_item_call label="Elimina vestito" name="delete_outfit"/>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_participant_view.xml b/indra/newview/skins/default/xui/it/menu_participant_view.xml
deleted file mode 100644
index c87cda57bfd..00000000000
--- a/indra/newview/skins/default/xui/it/menu_participant_view.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="participant_manu_view">
-	<menu_item_check label="Ordina le conversazioni in base al tipo" name="sort_sessions_by_type"/>
-	<menu_item_check label="Ordina le conversazioni in base al nome" name="sort_sessions_by_name"/>
-	<menu_item_check label="Ordina le conversazioni in base alle attività più recenti" name="sort_sessions_by_recent"/>
-	<menu_item_check label="Ordina i partecipanti in base al nome" name="sort_participants_by_name"/>
-	<menu_item_check label="Ordina i partecipanti in base alle attività più recenti" name="sort_participants_by_recent"/>
-	<menu_item_call label="Preferenze chat..." name="chat_preferences"/>
-	<menu_item_call label="Preferenze privacy..." name="privacy_preferences"/>
-	<menu_item_check label="Registro conversazioni..." name="Conversation"/>
-	<menu_item_check label="Traduci chat vicina" name="Translate_chat"/>
-	<menu_item_check label="Impostazioni traduzione..." name="Translation_settings"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_people_blocked_gear.xml b/indra/newview/skins/default/xui/it/menu_people_blocked_gear.xml
deleted file mode 100644
index e9955923b25..00000000000
--- a/indra/newview/skins/default/xui/it/menu_people_blocked_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_blocked_gear">
-	<menu_item_call label="Sblocca" name="unblock"/>
-	<menu_item_call label="Profilo..." name="profile"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_people_blocked_plus.xml b/indra/newview/skins/default/xui/it/menu_people_blocked_plus.xml
deleted file mode 100644
index cbcf084b86b..00000000000
--- a/indra/newview/skins/default/xui/it/menu_people_blocked_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_blocked_plus">
-	<menu_item_call label="Blocca residente per nome..." name="block_resident_by_name"/>
-	<menu_item_call label="Blocca oggetto per nome" name="block_object_by_name"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_people_blocked_view.xml b/indra/newview/skins/default/xui/it/menu_people_blocked_view.xml
deleted file mode 100644
index fc80c73ae30..00000000000
--- a/indra/newview/skins/default/xui/it/menu_people_blocked_view.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_blocked_view">
-	<menu_item_check label="Ordina in base al nome" name="sort_by_name"/>
-	<menu_item_check label="Ordina in base al tipo" name="sort_by_type"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_people_friends_view.xml b/indra/newview/skins/default/xui/it/menu_people_friends_view.xml
deleted file mode 100644
index 972e359cfe5..00000000000
--- a/indra/newview/skins/default/xui/it/menu_people_friends_view.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_group_plus">
-	<menu_item_check label="Ordina in base al nome" name="sort_name"/>
-	<menu_item_check label="Ordina in base allo stato" name="sort_status"/>
-	<menu_item_check label="Mostra le icone delle persone" name="view_icons"/>
-	<menu_item_check label="Mostra le autorizzazioni concesse" name="view_permissions"/>
-	<menu_item_check label="Mostra il registro conversazioni..." name="view_conversation"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_people_groups.xml b/indra/newview/skins/default/xui/it/menu_people_groups.xml
index 8ca7537ee0f..30a97a1c724 100644
--- a/indra/newview/skins/default/xui/it/menu_people_groups.xml
+++ b/indra/newview/skins/default/xui/it/menu_people_groups.xml
@@ -2,7 +2,7 @@
 <menu name="menu_group_plus">
 	<menu_item_call label="Mostra informazioni" name="View Info"/>
 	<menu_item_call label="Chat" name="Chat"/>
-	<menu_item_call label="Chiamata a voce" name="Call"/>
+	<menu_item_call label="Chiama" name="Call"/>
 	<menu_item_call label="Attiva" name="Activate"/>
 	<menu_item_call label="Chiudi" name="Leave"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/it/menu_people_groups_view.xml b/indra/newview/skins/default/xui/it/menu_people_groups_view.xml
deleted file mode 100644
index 56b9abbd3ae..00000000000
--- a/indra/newview/skins/default/xui/it/menu_people_groups_view.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_group_plus">
-	<menu_item_check label="Mostra le icone di gruppo" name="Display Group Icons"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_people_nearby.xml b/indra/newview/skins/default/xui/it/menu_people_nearby.xml
index 1c09b1cfe25..a974bd181df 100644
--- a/indra/newview/skins/default/xui/it/menu_people_nearby.xml
+++ b/indra/newview/skins/default/xui/it/menu_people_nearby.xml
@@ -1,16 +1,13 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Avatar Context Menu">
-	<menu_item_call label="Vedi profilo" name="view_profile"/>
-	<menu_item_call label="IM" name="im"/>
-	<menu_item_call label="Offri Teleport" name="offer_teleport"/>
-	<menu_item_call label="Chiamata a voce" name="voice_call"/>
-	<menu_item_call label="Mostra la cronologia delle chat..." name="chat_history"/>
-	<menu_item_call label="Aggiungi come amico" name="add_friend"/>
-	<menu_item_call label="Rimuovi amico" name="remove_friend"/>
-	<menu_item_call label="Invita al gruppo..." name="invite_to_group"/>
-	<menu_item_call label="Zoom avanti" name="zoom_in"/>
-	<menu_item_call label="Mappa" name="map"/>
-	<menu_item_call label="Condividi" name="share"/>
-	<menu_item_call label="Paga" name="pay"/>
-	<menu_item_check label="Blocca/Sblocca" name="block_unblock"/>
+	<menu_item_call label="Vedi profilo" name="View Profile"/>
+	<menu_item_call label="Aggiungi amico" name="Add Friend"/>
+	<menu_item_call label="Rimuovi amico" name="Remove Friend"/>
+	<menu_item_call label="IM" name="IM"/>
+	<menu_item_call label="Chiama" name="Call"/>
+	<menu_item_call label="Mappa" name="Map"/>
+	<menu_item_call label="Condividi" name="Share"/>
+	<menu_item_call label="Paga" name="Pay"/>
+	<menu_item_check label="Blocca/Sblocca" name="Block/Unblock"/>
+	<menu_item_call label="Offri Teleport" name="teleport"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/it/menu_people_nearby_multiselect.xml
index b9ce70167f4..e0b9ceb63d8 100644
--- a/indra/newview/skins/default/xui/it/menu_people_nearby_multiselect.xml
+++ b/indra/newview/skins/default/xui/it/menu_people_nearby_multiselect.xml
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Multi-Selected People Context Menu">
-	<menu_item_call label="Aggiungi amici" name="add_friends"/>
-	<menu_item_call label="Rimuovi amici" name="remove_friends"/>
-	<menu_item_call label="IM" name="im"/>
-	<menu_item_call label="Chiama" name="call"/>
-	<menu_item_call label="Condividi" name="share"/>
-	<menu_item_call label="Paga" name="pay"/>
-	<menu_item_call label="Offri Teleport" name="offer_teleport"/>
+	<menu_item_call label="Aggiungi amici" name="Add Friends"/>
+	<menu_item_call label="Rimuovi amici" name="Remove Friend"/>
+	<menu_item_call label="IM" name="IM"/>
+	<menu_item_call label="Chiama" name="Call"/>
+	<menu_item_call label="Condividi" name="Share"/>
+	<menu_item_call label="Paga" name="Pay"/>
+	<menu_item_call label="Offri Teleport" name="teleport"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_people_nearby_view.xml b/indra/newview/skins/default/xui/it/menu_people_nearby_view.xml
deleted file mode 100644
index 223d88fee1c..00000000000
--- a/indra/newview/skins/default/xui/it/menu_people_nearby_view.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_group_plus">
-	<menu_item_check label="Ordina in base a intervenuti recenti" name="sort_by_recent_speakers"/>
-	<menu_item_check label="Ordina in base al nome" name="sort_name"/>
-	<menu_item_check label="Ordina in base alla distanza" name="sort_distance"/>
-	<menu_item_check label="Mostra le icone delle persone" name="view_icons"/>
-	<menu_item_check label="Mostra mappa" name="view_map"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_people_recent_view.xml b/indra/newview/skins/default/xui/it/menu_people_recent_view.xml
deleted file mode 100644
index fc6213bd085..00000000000
--- a/indra/newview/skins/default/xui/it/menu_people_recent_view.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_group_plus">
-	<menu_item_check label="Mostra prima i più recenti" name="sort_most"/>
-	<menu_item_check label="Ordina in base al nome" name="sort_name"/>
-	<menu_item_check label="Mostra le icone delle persone" name="view_icons"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_url_agent.xml b/indra/newview/skins/default/xui/it/menu_url_agent.xml
index abfbab35a34..37755d5749c 100644
--- a/indra/newview/skins/default/xui/it/menu_url_agent.xml
+++ b/indra/newview/skins/default/xui/it/menu_url_agent.xml
@@ -1,8 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Url Popup">
-	<menu_item_call label="Vedi profilo" name="show_agent"/>
-	<menu_item_call label="Manda IM..." name="send_im"/>
-	<menu_item_call label="Aggiungi come amico..." name="add_friend"/>
+	<menu_item_call label="Mostra profilo residente" name="show_agent"/>
 	<menu_item_call label="Copia nome negli Appunti" name="url_copy_label"/>
 	<menu_item_call label="Copia SLurl negli Appunti" name="url_copy"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_url_objectim.xml b/indra/newview/skins/default/xui/it/menu_url_objectim.xml
index 8456d14b63e..763e65f17c0 100644
--- a/indra/newview/skins/default/xui/it/menu_url_objectim.xml
+++ b/indra/newview/skins/default/xui/it/menu_url_objectim.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Url Popup">
-	<menu_item_call label="Profilo oggetto..." name="show_object"/>
+	<menu_item_call label="Mostra informazioni oggetto" name="show_object"/>
 	<menu_item_call label="Mostra sulla mappa" name="show_on_map"/>
 	<menu_item_call label="Teleport sul luogo dell&apos;oggetto" name="teleport_to_object"/>
 	<menu_item_call label="Copia nome oggetto negli Appunti" name="url_copy_label"/>
diff --git a/indra/newview/skins/default/xui/it/menu_viewer.xml b/indra/newview/skins/default/xui/it/menu_viewer.xml
index c93b92029f6..547c5a9b73c 100644
--- a/indra/newview/skins/default/xui/it/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/it/menu_viewer.xml
@@ -16,7 +16,10 @@
 			<menu_item_call label="Ferma animazione" name="Stop Animating My Avatar"/>
 			<menu_item_call label="Cammina / corri / vola..." name="Walk / run / fly"/>
 		</menu>
-		<menu label="Stato" name="Status"/>
+		<menu label="Stato" name="Status">
+			<menu_item_call label="Assente" name="Set Away"/>
+			<menu_item_call label="Non disponibile" name="Set Busy"/>
+		</menu>
 		<menu_item_call label="Acquista L$..." name="Buy and Sell L$"/>
 		<menu_item_call label="Casella venditore in uscita..." name="MerchantOutbox"/>
 		<menu_item_call label="Dashboard dell&apos;account..." name="Manage My Account">
@@ -29,18 +32,14 @@
 		<menu_item_call label="Esci da [APP_NAME]" name="Quit"/>
 	</menu>
 	<menu label="Comunica" name="Communicate">
-		<menu_item_check label="Conversazioni..." name="Conversations"/>
-		<menu_item_check label="Chat nei dintorni..." name="Nearby Chat"/>
+		<menu_item_check label="Chat..." name="Nearby Chat"/>
 		<menu_item_check label="Parla" name="Speak"/>
-		<menu label="Manipolazione voce" name="VoiceMorphing">
-			<menu_item_check label="Nessuna manipolazione voce" name="NoVoiceMorphing"/>
-			<menu_item_check label="Anteprima..." name="Preview"/>
-			<menu_item_call label="Abbonati..." name="Subscribe"/>
-		</menu>
+		<menu_item_check label="Impostazioni voce..." name="Nearby Voice"/>
+		<menu_item_check label="Manipolazione voce..." name="ShowVoice"/>
 		<menu_item_check label="Gesture..." name="Gestures"/>
-		<menu_item_check label="Amici" name="My Friends"/>
-		<menu_item_check label="Gruppi" name="My Groups"/>
-		<menu_item_check label="Persone vicine" name="Active Speakers"/>
+		<menu_item_call label="Amici" name="My Friends"/>
+		<menu_item_call label="Gruppi" name="My Groups"/>
+		<menu_item_call label="Persone vicine" name="Active Speakers"/>
 		<menu_item_call label="Blocca lista" name="Block List"/>
 	</menu>
 	<menu label="Mondo" name="World">
@@ -116,6 +115,7 @@
 			<menu_item_call label="Acquista" name="Menu Object Buy"/>
 			<menu_item_call label="Prendi" name="Menu Object Take"/>
 			<menu_item_call label="Prendi copia" name="Take Copy"/>
+			<menu_item_call label="Salva nell&apos;inventario" name="Save Object Back to My Inventory"/>
 			<menu_item_call label="Salva nei contenuti oggetto" name="Save Object Back to Object Contents"/>
 			<menu_item_call label="Restituisci oggetto" name="Return Object back to Owner"/>
 		</menu>
@@ -130,7 +130,6 @@
 			<menu_item_call label="Set collegati..." name="pathfinding_linksets_menu_item"/>
 			<menu_item_call label="Personaggi..." name="pathfinding_characters_menu_item"/>
 			<menu_item_call label="Visualizza / test..." name="pathfinding_console_menu_item"/>
-			<menu_item_call label="Rebake regione" name="pathfinding_rebake_navmesh_item"/>
 		</menu>
 		<menu label="Opzioni" name="Options">
 			<menu_item_check label="Mostra autorizzazioni avanzate" name="DebugPermissions"/>
@@ -160,13 +159,6 @@
 	<menu label="Aiuto" name="Help">
 		<menu_item_call label="Istruzioni..." name="How To"/>
 		<menu_item_call label="Aiuto di [SECOND_LIFE]" name="Second Life Help"/>
-		<menu_item_call label="Guida dell&apos;utente" name="User’s guide"/>
-		<menu_item_call label="Base di conoscenza" name="Knowledge Base"/>
-		<menu_item_call label="Wiki" name="Wiki"/>
-		<menu_item_call label="Forum della comunità" name="Community Forums"/>
-		<menu_item_call label="Portale assistenza" name="Support portal"/>
-		<menu_item_call label="[SECOND_LIFE] Notizie" name="Second Life News"/>
-		<menu_item_call label="[SECOND_LIFE] Blog" name="Second Life Blogs"/>
 		<menu_item_call label="Segnala abuso" name="Report Abuse"/>
 		<menu_item_call label="Segnala bug" name="Report Bug"/>
 		<menu_item_call label="Informazioni su [APP_NAME]" name="About Second Life"/>
@@ -344,14 +336,9 @@
 				<menu_item_call label="Alterna la geometria dei personaggi" name="Toggle Character Geometry"/>
 				<menu_item_check label="Consenti selezione avatar" name="Allow Select Avatar"/>
 			</menu>
-			<menu label="Velocità animazione" name="Animation Speed">
-				<menu_item_call label="Accelera tutte le animazioni del 10%" name="All Animations 10 Faster"/>
-				<menu_item_call label="Rallenta tutte le animazioni del 10%" name="All Animations 10 Slower"/>
-				<menu_item_call label="Ripristina la velocità di tutte le animazioni" name="Reset All Animation Speed"/>
-				<menu_item_check label="Animazioni lente" name="Slow Motion Animations"/>
-			</menu>
 			<menu_item_call label="Forza i parametri sui valori predefiniti" name="Force Params to Default"/>
 			<menu_item_check label="Informazioni sull&apos;animazione" name="Animation Info"/>
+			<menu_item_check label="Animazioni lente" name="Slow Motion Animations"/>
 			<menu_item_check label="Disabilita livello di dettaglio" name="Disable LOD"/>
 			<menu_item_check label="Mostra schemi collisione" name="Show Collision Skeleton"/>
 			<menu_item_check label="Mostra bersaglio" name="Display Agent Target"/>
diff --git a/indra/newview/skins/default/xui/it/notifications.xml b/indra/newview/skins/default/xui/it/notifications.xml
index 8adbebb62ac..d5fdde4e7de 100644
--- a/indra/newview/skins/default/xui/it/notifications.xml
+++ b/indra/newview/skins/default/xui/it/notifications.xml
@@ -513,24 +513,6 @@ Visitare [_URL] per ulteriori informazioni?
 		</url>
 		<usetemplate ignoretext="Driver grafica obsoleto" name="okcancelignore" notext="No" yestext="Sì"/>
 	</notification>
-	<notification name="AMDOldDriver">
-		È probabile che ci sia un driver aggiornato per il processore grafico.  L&apos;aggiornamento dei driver della grafica può migliorare le prestazioni in maniera significativa.
-
-    Visitare [_URL] per cercare un aggiornamento del driver?
-		<url name="url">
-			http://support.amd.com/it/Pages/AMDSupportHub.aspx
-		</url>
-		<usetemplate ignoretext="Driver grafica obsoleto" name="okcancelignore" notext="No" yestext="Sì"/>
-	</notification>
-	<notification name="NVIDIAOldDriver">
-		È probabile che ci sia un driver aggiornato per il processore grafico.  L&apos;aggiornamento dei driver della grafica può migliorare le prestazioni in maniera significativa.
-
-    Visitare [_URL] per cercare un aggiornamento del driver?
-		<url name="url">
-			http://www.nvidia.it/Download/index.aspx?lang=it
-		</url>
-		<usetemplate ignoretext="Driver grafica obsoleto" name="okcancelignore" notext="No" yestext="Sì"/>
-	</notification>
 	<notification name="UnknownGPU">
 		Il tuo sistema utilizza una scheda grafica che [APP_NAME] non riconosce.
 Questo succede spesso con un nuovo hardware che non è stato ancora testato con [APP_NAME].  Probabilmente tutto andrà bene, ma devi riconfigurare le tue impostazioni grafiche.
@@ -1566,13 +1548,10 @@ Vuoi cancellare quell&apos;elemento?
 		Impossibile offrire l&apos;amicizia in questo momento. Riprova fra poco.
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
-	<notification name="DoNotDisturbModeSet">
-		Non disturbare è attivo.  Non riceverai la notifica delle comunicazioni in arrivo.
-
-- Gli altri residenti riceveranno la tua risposta Non disturbare (impostata in Preferenze &gt; Generali).
-- Le offerte di teleport verranno rifiutate.
-- Le chiamate voce verranno rifiutate.
-		<usetemplate ignoretext="Io cambio il mio stato alla modalità Non disturbare." name="okignore" yestext="OK"/>
+	<notification name="BusyModeSet">
+		È stata impostata la modalità Non disponibile.
+La chat e gli IM verranno nascosti. Gli IM riceveranno la tua risposta di Non disponibile. Tutte le offerte di teleport verranno rifiutate. Tutte le offerte di Inventario andranno nel Cestino.
+		<usetemplate ignoretext="Cambio il mio stato sulla modalità Non disponibile" name="okignore" yestext="OK"/>
 	</notification>
 	<notification name="JoinedTooManyGroupsMember">
 		Hai raggiunto il numero massimo di gruppi. Per favore abbandona almeno un gruppo prima di aderire a questo, oppure declina l&apos;offerta.
@@ -2060,10 +2039,6 @@ Trasferisci gli elementi nell&apos;inventario?
 		Vai al [http://secondlife.com/account/ Dashboard] per vedere la cronologia del tuo account?
 		<usetemplate ignoretext="Lancia il browser per vedere la cronologia del mio account" name="okcancelignore" notext="Annulla" yestext="Vai alla pagina"/>
 	</notification>
-	<notification name="ConfirmAddingChatParticipants">
-		Quando aggiungi una persona a una conversazione esistente, viene creata una nuova conversazione.  Tutti i partecipanti riceveranno notifiche per la nuova conversazione.
-		<usetemplate ignoretext="Conferma l&apos;aggiunta dei partecipanti alla chat" name="okcancelignore" notext="Annulla" yestext="Ok"/>
-	</notification>
 	<notification name="ConfirmQuit">
 		Confermi di voler uscire?
 		<usetemplate ignoretext="Conferma prima di uscire" name="okcancelignore" notext="Non uscire" yestext="Esci"/>
@@ -2138,14 +2113,14 @@ Vuoi sostituirlo con l&apos;oggetto selezionato?
 			<button ignore="Never Replace" name="No" text="Annulla"/>
 		</form>
 	</notification>
-	<notification label="Avviso modalità Non disturbare" name="DoNotDisturbModePay">
-		Hai attivato la modalità Non disturbare. Non riceverai alcun oggetto offerto in cambio di questo pagamento.
+	<notification label="Avviso di &apos;Occupato&apos;" name="BusyModePay">
+		Sei in modalità &apos;Occupato&apos;, ciò significa che non riceverai ciò che attendi per questo pagamento.
 
-Vuoi disattivare la modalità Non disturbare prima di completare questa transazione?
+Desideri abbandonare la modalità &apos;Occupato&apos; prima di completare questa transazione?
 		<form name="form">
-			<ignore name="ignore" text="Sto per pagare una persona o un oggetto mentre sono in modalità Non disturbare"/>
-			<button ignore="Lascia sempre la modalità Non disturbare" name="Yes" text="OK"/>
-			<button ignore="Non lasciare mai la modalità Non disturbare" name="No" text="Annulla"/>
+			<ignore name="ignore" save_option="true" text="Sto per pagare una persona o un oggetto mentro sono in modalià Non disponibile"/>
+			<button ignore="Always leave Busy Mode" name="Yes" text="OK"/>
+			<button ignore="Never leave Busy Mode" name="No" text="Abbandona"/>
 		</form>
 	</notification>
 	<notification name="ConfirmDeleteProtectedCategory">
@@ -2280,8 +2255,11 @@ Inseriscilo in una pagina web per dare ad altri un accesso facile a questa ubica
 	<notification name="GroupNotice">
 		Oggetto: [SUBJECT], Messaggio: [MESSAGE]
 	</notification>
-	<notification name="FriendOnlineOffline">
-		&lt;nolink&gt;[NAME]&lt;/nolink&gt; è [STATUS]
+	<notification name="FriendOnline">
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; è online
+	</notification>
+	<notification name="FriendOffline">
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; è offline
 	</notification>
 	<notification name="AddSelfFriend">
 		Anche se sei molto simpatico, non puoi aggiungere te stesso all&apos;elenco degli amici.
@@ -2509,6 +2487,13 @@ Qui non puoi volare.
 	<notification name="DynamicPathfindingDisabled">
 		Il pathfinding dinamico non è attivato in questa regione.  Gli oggetti scriptati che usano chiamate LSL di pathfinding potrebbero non funzionare come previsto in questa regione.
 	</notification>
+	<notification name="PathfindingRebakeNavmesh">
+		Se modifichi alcuni oggetti in questa regione, ciò potrebbe causare il comportamento errato di altri oggetti in movimento.  Per fare in modo che gli oggetti in movimento si comportino correttamente, fai clic sul pulsante &quot;Rebake regione&quot;.  Per maggiori informazioni, seleziona la guida
+		<url name="url">
+			http://wiki.secondlife.com/wiki/Pathfinding_Tools_in_the_Second_Life_Viewer
+		</url>
+		<usetemplate helptext="Guida" ignoretext="Se modifichi alcuni oggetti in questa regione, ciò potrebbe causare il comportamento errato di altri oggetti in movimento." name="okhelpignore" yestext="OK"/>
+	</notification>
 	<notification name="PathfindingCannotRebakeNavmesh">
 		Si è verificato un errore.  Potrebbe trattarsi di un problema di rete o del server, oppure potresti non avere le autorizzazioni necessarie per la costruzione.  A volte il problema viene risolto uscendo ed eseguendo nuovamente l&apos;accesso.
 		<usetemplate name="okbutton" yestext="OK"/>
@@ -2769,9 +2754,9 @@ OK?
 		</form>
 	</notification>
 	<notification name="ScriptQuestionCaution">
-		Avviso: L&apos;oggetto &apos;&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;&apos; ha richiesto accesso completo al tuo account in Dollari Linden. Se consenti l&apos;accesso, potrà rimuovere fondi dal tuo account in qualunque momento e anche svuotare completamente l&apos;account, per un periodo illimitato e senza ulteriori avvisi.
+		Attenzione: L&apos;oggetto &apos;&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;&apos; ha richiesto accesso completo al tuo account in Dollari Linden. Se consenti l&apos;accesso, potrà rimuovere fondi dal tuo account in qalunque momento e anche svuotare completamente l&apos;account, per un periodo illimitato e senza ulteriori avvisi.
   
-Non consentire l&apos;accesso se non comprendi perfettamente il motivo per cui desidera accedere al tuo account.
+Raramente questo tipo di richiesta è legittima. Non consentire l&apos;accesso se non comprendi perfettamente il motivo per cui desidera accedere al tuo account.
 		<form name="form">
 			<button name="Grant" text="Consenti accesso totale"/>
 			<button name="Deny" text="Nega"/>
@@ -3353,633 +3338,4 @@ Tentativo annullato.
 		Stai per cancellare [NUM_ITEMS] elementi.  Vuoi continuare?
 		<usetemplate ignoretext="Sei sicuro di volere eliminare più oggetti?" name="okcancelignore" notext="No" yestext="Sì"/>
 	</notification>
-	<notification name="AvatarFrozen">
-		[AV_FREEZER] ti ha congelato. Non ti puoi muovere o interagire con il mondo.
-	</notification>
-	<notification name="AvatarFrozenDuration">
-		[AV_FREEZER] ti ha congelato per [AV_FREEZE_TIME] secondi. Non ti puoi muovere o interagire con il mondo.
-	</notification>
-	<notification name="YouFrozeAvatar">
-		Avatar congelato.
-	</notification>
-	<notification name="AvatarHasUnFrozenYou">
-		[AV_FREEZER] ti ha scongelato.
-	</notification>
-	<notification name="AvatarUnFrozen">
-		Avatar scongelato.
-	</notification>
-	<notification name="AvatarFreezeFailure">
-		La congelazione non ha avuto successo perché non hai le autorizzazioni dell&apos;amministratore per quel lotto.
-	</notification>
-	<notification name="AvatarFreezeThaw">
-		Non sei più congelato, puoi continuare.
-	</notification>
-	<notification name="AvatarCantFreeze">
-		Non puoi congelare quell&apos;utente.
-	</notification>
-	<notification name="NowOwnObject">
-		Sei ora il proprietario dell&apos;oggetto [OBJECT_NAME]
-	</notification>
-	<notification name="CantRezOnLand">
-		Non puoi rezzare l&apos;oggetto a [OBJECT_POS] perché non è consentito dal proprietario del terreno.  Usa lo strumento terreno per visualizzare a chi appartiene il terreno.
-	</notification>
-	<notification name="RezFailTooManyRequests">
-		Oggetto non razzato perché ci sono troppe richieste.
-	</notification>
-	<notification name="SitFailCantMove">
-		Non puoi sederti perché al momento non puoi muoverti.
-	</notification>
-	<notification name="SitFailNotAllowedOnLand">
-		Non puoi sederti perché non ti è consentito entrare in quel terreno.
-	</notification>
-	<notification name="SitFailNotSameRegion">
-		Proba ad avvicinarti.  Non puoi sederti su un oggetto perché
-non è nella stessa regione in cui ti trovi.
-	</notification>
-	<notification name="NoNewObjectRegionFull">
-		Impossibile creare il nuovo oggetto. La regione è piena.
-	</notification>
-	<notification name="FailedToPlaceObject">
-		Il posizionamento dell&apos;oggetto nella posizione specificata non è riuscito.  Riprova.
-	</notification>
-	<notification name="NoOwnNoGardening">
-		Non puoi creare alberi ed erba su terreni che non sono di tua proprietà.
-	</notification>
-	<notification name="NoCopyPermsNoObject">
-		Copia non riuscita perché non hai l&apos;autorizzazione necessaria per copiare l&apos;oggetto &apos;[OBJ_NAME]&apos;.
-	</notification>
-	<notification name="NoTransPermsNoObject">
-		La copia non è riuscita perché &apos;[OBJ_NAME]&apos; non può essere trasferito a te.
-	</notification>
-	<notification name="AddToNavMeshNoCopy">
-		La copia non è riuscita perché &apos;[OBJ_NAME]&apos; contribuisce al navmesh.
-	</notification>
-	<notification name="DupeWithNoRootsSelected">
-		Duplicato senza oggetto principale selezionato.
-	</notification>
-	<notification name="CantDupeCuzRegionIsFull">
-		Impossibile duplicare gli oggetti perché la regione è piena.
-	</notification>
-	<notification name="CantDupeCuzParcelNotFound">
-		Impossibile duplicare gli oggetti - Impossibile trovare i lotti in cui si trovano.
-	</notification>
-	<notification name="CantCreateCuzParcelFull">
-		Impossibile creare l&apos;oggetto perché 
-il lotto è pieno.
-	</notification>
-	<notification name="RezAttemptFailed">
-		Tentativo di rezzare un oggetto non riuscito.
-	</notification>
-	<notification name="ToxicInvRezAttemptFailed">
-		Impossibile creare un oggetto che ha causato problemi in questa regione.
-	</notification>
-	<notification name="InvItemIsBlacklisted">
-		L&apos;oggetto dell&apos;inventario è stato aggiunto alla blacklist.
-	</notification>
-	<notification name="NoCanRezObjects">
-		Al momento non ti è consentito creare oggetti.
-	</notification>
-	<notification name="LandSearchBlocked">
-		Ricerca terreno bloccata.
-Hai eseguito troppe ricerche terreno in un breve tempo.
-Riprova tra un minuto.
-	</notification>
-	<notification name="NotEnoughResourcesToAttach">
-		Risorse di script non sufficienti per collegare l&apos;oggetto.
-	</notification>
-	<notification name="YouDiedAndGotTPHome">
-		Sei deceduto e sei stato teleportato alla tua posizione iniziale
-	</notification>
-	<notification name="EjectComingSoon">
-		Non sei più benvenuto qui e hai [EJECT_TIME] secondi per andartene.
-	</notification>
-	<notification name="NoEnterServerFull">
-		Non puoi entrare in questa regione perché 
-il server è pieno.
-	</notification>
-	<notification name="SaveBackToInvDisabled">
-		Opzione Salva nell&apos;inventario disattivata
-	</notification>
-	<notification name="NoExistNoSaveToContents">
-		Impossibile salvare &apos;[OBJ_NAME]&apos; nei contenuti dell&apos;oggetto perché l&apos;oggetto da cui è stato razzato non esiste più.
-	</notification>
-	<notification name="NoModNoSaveToContents">
-		Impossibile salvare &apos;[OBJ_NAME]&apos; nei contenuti dell&apos;oggetto perché non hai l&apos;autorizzazione necessaria per modificare l&apos;oggetto &apos;[DEST_NAME]&apos;.
-	</notification>
-	<notification name="NoSaveBackToInvDisabled">
-		Impossibile riportare &apos;[OBJ_NAME]&apos; nell&apos;inventario -- questa operazione è stata disattivata.
-	</notification>
-	<notification name="NoCopyNoSelCopy">
-		Non puoi copiare l&apos;elemento selezionato perché non hai l&apos;autorizzazione necessaria per copiare l&apos;oggetto &apos;[OBJ_NAME]&apos;.
-	</notification>
-	<notification name="NoTransNoSelCopy">
-		Non puoi copiare la selezione perché l&apos;oggetto &apos;[OBJ_NAME]&apos; non può essere trasferito.
-	</notification>
-	<notification name="NoTransNoCopy">
-		Non puoi copiare la selezione perché l&apos;oggetto &apos;[OBJ_NAME]&apos; non può essere trasferito.
-	</notification>
-	<notification name="NoPermsNoRemoval">
-		La rimozione dell&apos;oggetto &apos;[OBJ_NAME]&apos; dal simulatore non è consentita dal sistema delle autorizzazioni.
-	</notification>
-	<notification name="NoModNoSaveSelection">
-		Non puoi salvare l&apos;elemento selezionato perché non hai l&apos;autorizzazione necessaria per modificare l&apos;oggetto &apos;[OBJ_NAME]&apos;.
-	</notification>
-	<notification name="NoCopyNoSaveSelection">
-		Non puoi salvare la selezione perché l&apos;oggetto &apos;[OBJ_NAME]&apos; non può essere copiato.
-	</notification>
-	<notification name="NoModNoTaking">
-		Non puoi prendere l&apos;elemento selezionato perché non hai l&apos;autorizzazione necessaria per modificare l&apos;oggetto &apos;[OBJ_NAME]&apos;.
-	</notification>
-	<notification name="RezDestInternalError">
-		Errore interno: Tipo di destinazione sconosciuto.
-	</notification>
-	<notification name="DeleteFailObjNotFound">
-		Cancellazione non riuscita perché l&apos;oggetto non è stato trovato.
-	</notification>
-	<notification name="SorryCantEjectUser">
-		Non puoi espellere quell&apos;utente.
-	</notification>
-	<notification name="RegionSezNotAHome">
-		Questa regione non ti consente di impostare qui la tua posizione iniziale.
-	</notification>
-	<notification name="HomeLocationLimits">
-		Puoi impostare la tua posizione iniziale nel tuo terreno o in un Infohub sulla terraferma.
-	</notification>
-	<notification name="HomePositionSet">
-		Posizione di base impostata.
-	</notification>
-	<notification name="AvatarEjected">
-		Avatar espulso.
-	</notification>
-	<notification name="AvatarEjectFailed">
-		L&apos;espulsione non ha avuto successo perché non hai l&apos;autorizzazione dell&apos;amministratore del lotto.
-	</notification>
-	<notification name="CantMoveObjectParcelFull">
-		Impossibile muovere l&apos;oggetto &apos;[OBJECT_NAME]&apos; a
-[OBJ_POSITION] nella regione [REGION_NAME] perché il lotto è pieno.
-	</notification>
-	<notification name="CantMoveObjectParcelPerms">
-		Impossibile muovere l&apos;oggetto &apos;[OBJECT_NAME]&apos; a
-[OBJ_POSITION] nella regione [REGION_NAME] perché i tuoi oggetti non sono ammessi su questo lotto.
-	</notification>
-	<notification name="CantMoveObjectParcelResources">
-		Impossibile muovere l&apos;oggetto &apos;[OBJECT_NAME]&apos; a
-[OBJ_POSITION] nella regione [REGION_NAME] perché non ci sono risorse sufficienti per l&apos;oggetto su questo lotto.
-	</notification>
-	<notification name="CantMoveObjectRegionVersion">
-		Impossibile muovere l&apos;oggetto &apos;[OBJECT_NAME]&apos; a
-[OBJ_POSITION] nella regione [REGION_NAME] perché nell&apos;altra regione è in esecuzione una versione precedente che non consente la ricezione di questo oggetto attraverso i confini tra regioni.
-	</notification>
-	<notification name="CantMoveObjectNavMesh">
-		Impossibile muovere l&apos;oggetto &apos;[OBJECT_NAME]&apos; a
-[OBJ_POSITION] nella regione [REGION_NAME] perché non puoi modificare il navmesh attraverso il confine tra regioni.
-	</notification>
-	<notification name="CantMoveObjectWTF">
-		Impossibile muovere l&apos;oggetto &apos;[OBJECT_NAME]&apos; a
-[OBJ_POSITION] nella regione [REGION_NAME] per un motivo sconosciuto. ([FAILURE_TYPE])
-	</notification>
-	<notification name="NoPermModifyObject">
-		Non hai l&apos;autorizzazione necessaria per modificare questa immagine
-	</notification>
-	<notification name="CantEnablePhysObjContributesToNav">
-		Non è possibile attivare la fisica per un oggetto che contribuisce al navmesh.
-	</notification>
-	<notification name="CantEnablePhysKeyframedObj">
-		Impossibile attivare la fisica per oggetti keyframe.
-	</notification>
-	<notification name="CantEnablePhysNotEnoughLandResources">
-		Impossibile attivare la fisica per l&apos;oggetto -- risorse di terreno insufficienti.
-	</notification>
-	<notification name="CantEnablePhysCostTooGreat">
-		Impossibile attivare la fisica per un oggetto con un costo delle risorse della fisica maggiore di [MAX_OBJECTS]
-	</notification>
-	<notification name="PhantomWithConcavePiece">
-		Questo oggetto non può avere un pezzo concavo perché è un oggetto fantasma e contribuisce al navmesh.
-	</notification>
-	<notification name="UnableAddItem">
-		Aggiunta elemento non riuscita
-	</notification>
-	<notification name="UnableEditItem">
-		Impossibile modificare questo elemento.
-	</notification>
-	<notification name="NoPermToEdit">
-		Non sei autorizzato a modificare questo elemento.
-	</notification>
-	<notification name="NoPermToCopyInventory">
-		Non ti è permesso copiare quell&apos;inventario.
-	</notification>
-	<notification name="CantSaveItemDoesntExist">
-		Impossibile salvare i contenuti dell&apos;oggetto: L&apos;elemento non esiste più.
-	</notification>
-	<notification name="CantSaveItemAlreadyExists">
-		Impossibile salvare i contenuti dell&apos;oggetto: Nell&apos;inventario esiste già un elemento con quel nome.
-	</notification>
-	<notification name="CantSaveModifyAttachment">
-		Impossibile salvare i contenuti dell&apos;oggetto: Verrebbero modificate le autorizzazioni per il collegamento.
-	</notification>
-	<notification name="TooManyScripts">
-		Troppi script.
-	</notification>
-	<notification name="UnableAddScript">
-		Aggiunta script non riuscita.
-	</notification>
-	<notification name="AssetServerTimeoutObjReturn">
-		Il server degli asset non ha inviato una risposta entro il tempo massimo.  Oggetto restituito al sim.
-	</notification>
-	<notification name="RegionDisablePhysicsShapes">
-		In questa regione non sono attivate le forme per la fisica.
-	</notification>
-	<notification name="NoModNavmeshAcrossRegions">
-		Non puoi modificare il navmesh attraverso il confine tra le regioni.
-	</notification>
-	<notification name="NoSetPhysicsPropertiesOnObjectType">
-		Impossibile impostare le proprietà della fisica per quel tipo di oggetto.
-	</notification>
-	<notification name="NoSetRootPrimWithNoShape">
-		impossibile impostare un prim principale senza forma.
-	</notification>
-	<notification name="NoRegionSupportPhysMats">
-		In questa regione non sono attivati i materiali per la fisica.
-	</notification>
-	<notification name="OnlyRootPrimPhysMats">
-		I materiali per la fisica possono essere modificati solo i prim principali.
-	</notification>
-	<notification name="NoSupportCharacterPhysMats">
-		L&apos;impostazione dei materiali per la fisica nei caratteri non è ancora supportata.
-	</notification>
-	<notification name="InvalidPhysMatProperty">
-		Almeno una delle proprietà dei materiali per la fisica non è valida.
-	</notification>
-	<notification name="NoPermsAlterStitchingMeshObj">
-		Non puoi alterare il tipo di punto di un oggetto con reticolo
-	</notification>
-	<notification name="NoPermsAlterShapeMeshObj">
-		Non puoi alterare la forma di un oggetto con reticolo
-	</notification>
-	<notification name="FullRegionCantEnter">
-		Non puoi entrare in questa regione perché è piena.
-	</notification>
-	<notification name="LinkFailedOwnersDiffer">
-		Collegamento non riuscito -- i proprietari non corrispondono
-	</notification>
-	<notification name="LinkFailedNoModNavmeshAcrossRegions">
-		Collegamento non riuscito -- non puoi modificare il navmesh attraverso il confine tra le regioni.
-	</notification>
-	<notification name="LinkFailedNoPermToEdit">
-		Collegamento non riuscito perché non hai le autorizzazioni necessarie per la modifica.
-	</notification>
-	<notification name="LinkFailedTooManyPrims">
-		Collegamento non riuscito -- troppe primitive.
-	</notification>
-	<notification name="LinkFailedCantLinkNoCopyNoTrans">
-		Collegamento non riuscito -- impossibile collegare elementi senza copia ed elementi senza trasferimento
-	</notification>
-	<notification name="LinkFailedNothingLinkable">
-		Collegamento non riuscito -- niente di collegabile.
-	</notification>
-	<notification name="LinkFailedTooManyPathfindingChars">
-		Collegamento non riuscito -- troppi personaggi con pathfinding
-	</notification>
-	<notification name="LinkFailedInsufficientLand">
-		Collegamento non riuscito -- risorse terreno non sufficienti
-	</notification>
-	<notification name="LinkFailedTooMuchPhysics">
-		L&apos;oggetto usa troppe risorse per la fisica -- le sue dinamiche sono state disattivate.
-	</notification>
-	<notification name="TeleportedHomeByObjectOnParcel">
-		Sei stato teleportato nella posizione iniziale dall&apos;oggetto &apos;[OBJECT_NAME]&apos; del lotto &apos;[PARCEL_NAME]&apos;
-	</notification>
-	<notification name="TeleportedHomeByObject">
-		Sei stato teleportato nella tua posizione iniziale dall&apos;oggetto &apos;[OBJECT_NAME]&apos;
-	</notification>
-	<notification name="TeleportedByAttachment">
-		Sei stato teletrasportato da un elemento collegato a [ITEM_ID]
-	</notification>
-	<notification name="TeleportedByObjectOnParcel">
-		Sei stato teleportato dall&apos;oggetto &apos;[OBJECT_NAME]&apos; sul lotto &apos;[PARCEL_NAME]&apos;
-	</notification>
-	<notification name="TeleportedByObjectOwnedBy">
-		Sei stato teleportato dall&apos;oggetto &apos;[OBJECT_NAME]&apos; di proprietà di [OWNER_ID]
-	</notification>
-	<notification name="TeleportedByObjectUnknownUser">
-		Sei stato teleportato dall&apos;oggetto &apos;[OBJECT_NAME]&apos; di proprietà di un utente sconosciuto.
-	</notification>
-	<notification name="CantCreateObjectRegionFull">
-		Impossibile creare l&apos;oggetto richiesto. La regione è piena.
-	</notification>
-	<notification name="CantAttackMultipleObjOneSpot">
-		Non puoi collegare più oggetti a un singolo luogo.
-	</notification>
-	<notification name="CantCreateMultipleObjAtLoc">
-		Non puoi creare oggetti multipli in questa posizione.
-	</notification>
-	<notification name="UnableToCreateObjTimeOut">
-		Impossibile creare l&apos;oggetto richiesto. L&apos;oggetto non è presente nel database.
-	</notification>
-	<notification name="UnableToCreateObjUnknown">
-		Impossibile creare l&apos;oggetto richiesto. Tempo scaduto per la richiesta. Riprova.
-	</notification>
-	<notification name="UnableToCreateObjMissingFromDB">
-		Impossibile creare l&apos;oggetto richiesto. Riprova.
-	</notification>
-	<notification name="RezFailureTookTooLong">
-		Rezzing non riuscito. Il caricamento dell&apos;oggetto richiesto è durato troppo a lungo.
-	</notification>
-	<notification name="FailedToPlaceObjAtLoc">
-		Il posizionamento dell&apos;oggetto nella posizione specificata non è riuscito.  Riprova.
-	</notification>
-	<notification name="CantCreatePlantsOnLand">
-		Non puoi creare piante su questo terreno.
-	</notification>
-	<notification name="CantRestoreObjectNoWorldPos">
-		Impossibile ripristinare l&apos;oggetto. Nessuna posizione trovata nel mondo virtuale.
-	</notification>
-	<notification name="CantRezObjectInvalidMeshData">
-		Impossibile rezzare l&apos;oggetto perché i dati del reticolo non sono validi.
-	</notification>
-	<notification name="CantRezObjectTooManyScripts">
-		Impossibile rezzare l&apos;oggetto perché ci sono già troppi script in questa regione.
-	</notification>
-	<notification name="CantCreateObjectNoAccess">
-		Le tue autorizzazioni di accesso non ti permettono di creare oggetti in quella posizione.
-	</notification>
-	<notification name="CantCreateObject">
-		Al momento non ti è consentito creare oggetti.
-	</notification>
-	<notification name="InvalidObjectParams">
-		Parametri oggetto non validi
-	</notification>
-	<notification name="CantDuplicateObjectNoAcess">
-		Le tue autorizzazioni di accesso non ti permettono di duplicare oggetti in questa posizione.
-	</notification>
-	<notification name="CantChangeShape">
-		Non ti è consentito modificare questa forma.
-	</notification>
-	<notification name="NoAccessToClaimObjects">
-		Le tue autorizzazioni di accesso non ti permettono di richiedere oggetti in questa posizione.
-	</notification>
-	<notification name="DeedFailedNoPermToDeedForGroup">
-		Assegnazione non riuscita perché non hai l&apos;autorizzazione necessaria per assegnare oggetti per il tuo gruppo.
-	</notification>
-	<notification name="NoPrivsToBuyObject">
-		Le tue autorizzazioni di accesso non ti permettono di acquistare oggetti in questa posizione.
-	</notification>
-	<notification name="CantAttachObjectAvatarSittingOnIt">
-		Impossibile collegare l&apos;oggetto perché un avatar è seduto sopra.
-	</notification>
-	<notification name="WhyAreYouTryingToWearShrubbery">
-		Alberi ed erba non possono essere indossati come collegati.
-	</notification>
-	<notification name="CantAttachGroupOwnedObjs">
-		Impossibile collegare oggetti di proprietà di un gruppo.
-	</notification>
-	<notification name="CantAttachObjectsNotOwned">
-		Non puoi collegare oggetti che non sono di tua proprietà.
-	</notification>
-	<notification name="CantAttachNavmeshObjects">
-		Impossibile collegare oggetti che contribuiscono a navmesh.
-	</notification>
-	<notification name="CantAttachObjectNoMovePermissions">
-		L&apos;oggetto non può essere collegato perché non sei autorizzato a muoverlo.
-	</notification>
-	<notification name="CantAttachNotEnoughScriptResources">
-		Risorse di script non sufficienti per collegare l&apos;oggetto.
-	</notification>
-	<notification name="CantDropItemTrialUser">
-		Non puoi lasciare oggetti qui, prova la zona Prova gratuita.
-	</notification>
-	<notification name="CantDropMeshAttachment">
-		Non puoi lasciare elementi collegati con reticolo. Separa nell&apos;inventario e quindi rezza nel mondo virtuale.
-	</notification>
-	<notification name="CantDropAttachmentNoPermission">
-		Impossibile rimuovere l&apos;elemento collegato: non hai l&apos;autorizzazione necessaria per rimuoverlo qui.
-	</notification>
-	<notification name="CantDropAttachmentInsufficientLandResources">
-		Impossibile rimuovere l&apos;elemento collegato: risorse terreno disponibili non sufficienti.
-	</notification>
-	<notification name="CantDropAttachmentInsufficientResources">
-		Impossibile rimuovere gli elementi collegati: risorse disponibili non sufficienti.
-	</notification>
-	<notification name="CantDropObjectFullParcel">
-		Non puoi lasciare l&apos;oggetto qui.  Il lotto è pieno.
-	</notification>
-	<notification name="CantTouchObjectBannedFromParcel">
-		Non puoi toccare/afferrare questo oggetto perché sei stato bandito dal lotto di terreno.
-	</notification>
-	<notification name="PlzNarrowDeleteParams">
-		Limita i parametri per la cancellazione.
-	</notification>
-	<notification name="UnableToUploadAsset">
-		Impossibile caricare l&apos;asset.
-	</notification>
-	<notification name="CantTeleportCouldNotFindUser">
-		Utente da teleportare alla posizione iniziale non trovato
-	</notification>
-	<notification name="GodlikeRequestFailed">
-		richiesta superpoteri non riuscita
-	</notification>
-	<notification name="GenericRequestFailed">
-		richiesta generica non riuscita
-	</notification>
-	<notification name="CantUploadPostcard">
-		Impossibile caricare la cartolina.  Riprova più tardi.
-	</notification>
-	<notification name="CantFetchInventoryForGroupNotice">
-		I dettagli dell&apos;inventario per la notifica di gruppo non sono stati trovati.
-	</notification>
-	<notification name="CantSendGroupNoticeNotPermitted">
-		Impossibile inviare la notifica di gruppo -- non consentita.
-	</notification>
-	<notification name="CantSendGroupNoticeCantConstructInventory">
-		Impossibile inviare la notifica di gruppo -- impossibile costruire l&apos;inventario.
-	</notification>
-	<notification name="CantParceInventoryInNotice">
-		Impossibile analizzare l&apos;inventario nella notifica.
-	</notification>
-	<notification name="TerrainUploadFailed">
-		Caricamento terreno non riuscito.
-	</notification>
-	<notification name="TerrainFileWritten">
-		File terreno scritto.
-	</notification>
-	<notification name="TerrainFileWrittenStartingDownload">
-		File terreno generato, avvio del download...
-	</notification>
-	<notification name="TerrainBaked">
-		Baking terreno completata.
-	</notification>
-	<notification name="TenObjectsDisabledPlzRefresh">
-		Sono stati disattivati solo i primi 10 oggetti. Se necessario, aggiorna e seleziona nuovamente.
-	</notification>
-	<notification name="UpdateViewerBuyParcel">
-		Devi aggiornare il Viewer per poter acquistare questo lotto.
-	</notification>
-	<notification name="CantBuyParcelNotForSale">
-		Impossibile acquistare, questo lotto non è in vendita.
-	</notification>
-	<notification name="CantBuySalePriceOrLandAreaChanged">
-		Impossibile acquistare. Il prezzo o l&apos;area del terreno sono stati cambiati.
-	</notification>
-	<notification name="CantBuyParcelNotAuthorized">
-		Non sei l&apos;acquirente autorizzato di questo lotto.
-	</notification>
-	<notification name="CantBuyParcelAwaitingPurchaseAuth">
-		Non puoi acquistare questo lotto perché è in attesa di autorizzazione all&apos;acquisto
-	</notification>
-	<notification name="CantBuildOverflowParcel">
-		Non puoi costruire oggetti qui perché si supererebbe il limite per il lotto.
-	</notification>
-	<notification name="SelectedMultipleOwnedLand">
-		hai selezionato terreni con proprietari diversi. Seleziona un&apos;area più piccola e riprova.
-	</notification>
-	<notification name="CantJoinTooFewLeasedParcels">
-		Non sono stati selezionati abbastanza lotti affittati da collegare.
-	</notification>
-	<notification name="CantDivideLandMultipleParcelsSelected">
-		Terreno non divisibile.\nHai selezionato più di un lotto.\nProva a selezionare una quantità di terreno più piccola.
-	</notification>
-	<notification name="CantDivideLandCantFindParcel">
-		impossibile suddividere il terreno.\nimpossibile trovare il lotto.\nInvia una segnalazione con Aiuto -&gt; Segnala bug...
-	</notification>
-	<notification name="CantDivideLandWholeParcelSelected">
-		Impossibile suddividere il terreno. È stato selezionato l&apos;intero lotto.\nProva a selezionare un pezzo di terreno più piccolo.
-	</notification>
-	<notification name="LandHasBeenDivided">
-		Il terreno è stato diviso.
-	</notification>
-	<notification name="PassPurchased">
-		Hai acquistato un pass.
-	</notification>
-	<notification name="RegionDisallowsClassifieds">
-		Nella regione non sono permessi gli annunci pubblicitari.
-	</notification>
-	<notification name="LandPassExpireSoon">
-		Il tuo pass per questo terreno è quasi scaduto.
-	</notification>
-	<notification name="CantSitNoSuitableSurface">
-		Nessuna superficie adatta a sedersi, prova un altro luogo.
-	</notification>
-	<notification name="CantSitNoRoom">
-		Non c&apos;è posto per sedersi, prova un altro luogo.
-	</notification>
-	<notification name="ClaimObjectFailedNoPermission">
-		La richiesta dell&apos;oggetto non ha avuto successo perché non hai l&apos;autorizzazione necessaria.
-	</notification>
-	<notification name="ClaimObjectFailedNoMoney">
-		La richiesta dell&apos;oggetto non ha avuto successo perché non hai L$ sufficienti.
-	</notification>
-	<notification name="CantDeedGroupLand">
-		Non puoi assegnare terreno di proprietà di un gruppo.
-	</notification>
-	<notification name="BuyObjectFailedNoMoney">
-		L&apos;acquisto dell&apos;oggetto non ha avuto successo perché non hai L$ sufficienti.
-	</notification>
-	<notification name="BuyInventoryFailedNoMoney">
-		L&apos;acquisto dell&apos;inventario non ha avuto successo perché non hai L$ sufficienti.
-	</notification>
-	<notification name="BuyPassFailedNoMoney">
-		Non hai abbastanza L$ per acquistare un pass per questo terreno.
-	</notification>
-	<notification name="CantBuyPassTryAgain">
-		Al momento non puoi acquistare un pass.  Riprova più tardi.
-	</notification>
-	<notification name="CantCreateObjectParcelFull">
-		Impossibile creare l&apos;oggetto perché il lotto è pieno.
-	</notification>
-	<notification name="FailedPlacingObject">
-		Il posizionamento dell&apos;oggetto nella posizione specificata non è riuscito.  Riprova.
-	</notification>
-	<notification name="CantCreateLandmarkForEvent">
-		Impossibile creare il punto di riferimento per l&apos;evento.
-	</notification>
-	<notification name="GodBeatsFreeze">
-		I tuoi superpoteri hanno interrotto la congelazione.
-	</notification>
-	<notification name="SpecialPowersRequestFailedLogged">
-		Richiesta di poteri speciali non riuscita. La richiesta è stata registrata.
-	</notification>
-	<notification name="ExpireExplanation">
-		Al momento il sistema non è in grado di elaborare la tua richiesta. Tempo scaduto per la richiesta.
-	</notification>
-	<notification name="DieExplanation">
-		Il sistema non è in grado di elaborare la tua richiesta.
-	</notification>
-	<notification name="AddPrimitiveFailure">
-		Denaro insufficiente per creare una primitiva.
-	</notification>
-	<notification name="RezObjectFailure">
-		Denaro insufficiente per creare un oggetto.
-	</notification>
-	<notification name="ResetHomePositionNotLegal">
-		Posizione iniziale ripristinata perché non era valida.
-	</notification>
-	<notification name="CantInviteRegionFull">
-		Al momento non puoi invitare nessuno alla tua posizione perché la regione è piena. Riprova più tardi.
-	</notification>
-	<notification name="CantSetHomeAtRegion">
-		Questa regione non ti consente di impostare qui la tua posizione iniziale.
-	</notification>
-	<notification name="ListValidHomeLocations">
-		Puoi impostare la tua posizione iniziale nel tuo terreno o in un Infohub sulla terraferma.
-	</notification>
-	<notification name="SetHomePosition">
-		Posizione di base impostata.
-	</notification>
-	<notification name="CantDerezInventoryError">
-		Impossibile derazzare l&apos;oggetto a causa di un errore nell&apos;inventario.
-	</notification>
-	<notification name="CantCreateRequestedInv">
-		Impossibile creare l&apos;inventario richiesto.
-	</notification>
-	<notification name="CantCreateRequestedInvFolder">
-		Impossibile creare la cartella dell&apos;inventario richiesta.
-	</notification>
-	<notification name="CantCreateInventory">
-		Impossibile creare quell&apos;inventario.
-	</notification>
-	<notification name="CantCreateLandmark">
-		Impossibile creare il punto di riferimento.
-	</notification>
-	<notification name="CantCreateOutfit">
-		Il vestiario non può essere creato in questo momento. Riprova tra un minuto.
-	</notification>
-	<notification name="InventoryNotForSale">
-		L&apos;inventario non è in vendita.
-	</notification>
-	<notification name="CantFindInvItem">
-		Impossibile trovare l&apos;elemento nell&apos;inventario.
-	</notification>
-	<notification name="CantFindObject">
-		Impossibile trovare l&apos;oggetto.
-	</notification>
-	<notification name="CantTransfterMoneyRegionDisabled">
-		Il trasferimento di denaro agli oggetti è attualmente disattivato in questa regione.
-	</notification>
-	<notification name="CantPayNoAgent">
-		Non si capisce chi deve essere pagato.
-	</notification>
-	<notification name="CantDonateToPublicObjects">
-		Non puoi dare L$ a oggetti pubblici.
-	</notification>
-	<notification name="InventoryCreationInWorldObjectFailed">
-		Creazione inventario non riuscito per un oggetto nel mondo virtuale.
-	</notification>
-	<notification name="UserBalanceOrLandUsageError">
-		Un errore interno ha impedito l&apos;aggiornamento del Viewer.  Il saldo in L$ o i lotti posseduti mostrati nel Viewer potrebbero non corrispondere ai valori correnti sui server.
-	</notification>
-	<notification name="LargePrimAgentIntersect">
-		Non puoi creare prim grandi che intersecano altri giocatori.  Riprova quando gli altri giocatori si sono spostati.
-	</notification>
-	<notification name="PreferenceChatClearLog">
-		Verranno cancellati i registri delle conversazioni precedenti e tutti gli eventuali backup di quel file.
-		<usetemplate ignoretext="Conferma prima di cancellare il registro delle conversazioni precedenti." name="okcancelignore" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="PreferenceChatDeleteTranscripts">
-		Verranno cancellate le trascrizioni di tutte le conversazioni precedenti. L&apos;elenco delle conversazioni passate non cambierà. Tutti i file con i suffissi .txt e txt.backup nella cartella [FOLDER] verranno cancellati.
-		<usetemplate ignoretext="Conferma prima di cancellare le trascrizioni." name="okcancelignore" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="PreferenceChatPathChanged">
-		Impossibile spostare i file. Il percorso precedente è stato ripristinato.
-		<usetemplate ignoretext="Impossibile spostare i file. Il percorso precedente è stato ripristinato." name="okignore" yestext="OK"/>
-	</notification>
 </notifications>
diff --git a/indra/newview/skins/default/xui/it/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/it/panel_avatar_list_item.xml
index cfceb5b9822..ede19b9e5ac 100644
--- a/indra/newview/skins/default/xui/it/panel_avatar_list_item.xml
+++ b/indra/newview/skins/default/xui/it/panel_avatar_list_item.xml
@@ -26,6 +26,5 @@
 	<icon name="permission_edit_mine_icon" tool_tip="Questo amico può modificare, cancellare o prendere i tuoi oggetti"/>
 	<icon name="permission_map_icon" tool_tip="Questo amico può identificarti sulla mappa"/>
 	<icon name="permission_online_icon" tool_tip="Questo amico può vedere se sei online"/>
-	<button name="info_btn" tool_tip="Maggiori informazioni"/>
 	<button name="profile_btn" tool_tip="Vedi profilo"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/it/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/it/panel_block_list_sidetray.xml
index 7ca2d3b57b1..610f561a65a 100644
--- a/indra/newview/skins/default/xui/it/panel_block_list_sidetray.xml
+++ b/indra/newview/skins/default/xui/it/panel_block_list_sidetray.xml
@@ -1,11 +1,10 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="block_list_panel">
-	<panel label="bottom_panel" name="blocked_buttons_panel">
-		<filter_editor label="Filtro" name="blocked_filter_input"/>
-		<menu_button name="blocked_gear_btn" tool_tip="Azioni sulla persona o oggetto selezionato"/>
-		<menu_button name="view_btn" tool_tip="Opzioni Ordina"/>
-		<menu_button name="plus_btn" tool_tip="Seleziona un residente o un oggetto da bloccare"/>
-		<button name="unblock_btn" tool_tip="Rimuovi un residente o un oggetto dalla lista bloccati"/>
-	</panel>
-	<block_list name="blocked" tool_tip="Lista degli attuali residenti bloccati"/>
+	<text name="title_text">
+		Blocca lista
+	</text>
+	<scroll_list name="blocked" tool_tip="Lista degli attuali residenti bloccati"/>
+	<button label="Blocca il residente..." label_selected="Blocca il residente..." name="Block resident..." tool_tip="Scegli un residente da bloccare"/>
+	<button label="Blocca l&apos;oggetto per nome..." label_selected="Blocca l&apos;oggetto per nome..." name="Block object by name..."/>
+	<button label="Sblocca" label_selected="Sblocca" name="Unblock" tool_tip="Rimuovi un residente o un oggetto dalla lista bloccati"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/it/panel_conversation_list_item.xml b/indra/newview/skins/default/xui/it/panel_conversation_list_item.xml
deleted file mode 100644
index ca6b65300a0..00000000000
--- a/indra/newview/skins/default/xui/it/panel_conversation_list_item.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="conversation_list_item">
-	<layout_stack name="conversation_item_stack">
-		<layout_panel name="conversation_title_panel">
-			<text name="conversation_title" value="(caricamento in corso)"/>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_conversation_log_list_item.xml b/indra/newview/skins/default/xui/it/panel_conversation_log_list_item.xml
deleted file mode 100644
index 624eaa639c2..00000000000
--- a/indra/newview/skins/default/xui/it/panel_conversation_log_list_item.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="conversation_log_list_item">
-	<icon name="voice_session_icon" tool_tip="La conversazione includeva la voce"/>
-	<icon name="unread_ims_icon" tool_tip="Sono arrivati dei messaggi mentre eri via"/>
-	<button name="delete_btn" tool_tip="Elimina questo elemento"/>
-</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_group_list_item.xml b/indra/newview/skins/default/xui/it/panel_group_list_item.xml
index 72e644008c9..7cdc4c7ff64 100644
--- a/indra/newview/skins/default/xui/it/panel_group_list_item.xml
+++ b/indra/newview/skins/default/xui/it/panel_group_list_item.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="group_list_item">
 	<text name="group_name" value="Sconosciuto"/>
-	<button name="info_btn" tool_tip="Maggiori informazioni"/>
 	<button name="profile_btn" tool_tip="Vedi profilo"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/it/panel_people.xml b/indra/newview/skins/default/xui/it/panel_people.xml
index e1468db76ea..f903ae6e2c0 100644
--- a/indra/newview/skins/default/xui/it/panel_people.xml
+++ b/indra/newview/skins/default/xui/it/panel_people.xml
@@ -14,53 +14,81 @@ Stai cercando persone da frequentare? Prova la [secondlife:///app/worldmap Mappa
 	<string name="no_filtered_friends_msg">
 		Non riesci a trovare quello che cerchi? Prova [secondlife:///app/search/people/[SEARCH_TERM] Cerca].
 	</string>
+	<string name="people_filter_label" value="Filtro persone"/>
+	<string name="groups_filter_label" value="Filtro gruppi"/>
 	<string name="no_filtered_groups_msg" value="Non riesci a trovare quello che cerchi? Prova [secondlife:///app/search/groups/[SEARCH_TERM] Cerca]."/>
 	<string name="no_groups_msg" value="Stai cercando gruppi di cui far parte? Prova [secondlife:///app/search/groups Cerca]."/>
 	<string name="MiniMapToolTipMsg" value="[REGION](Fai doppio clic per aprire la Mappa, premi il tasto Maiusc e trascina per la panoramica)"/>
 	<string name="AltMiniMapToolTipMsg" value="[REGION](Fai doppio clic per teleportarti, premi il tasto Maiusc e trascina per la panoramica)"/>
+	<filter_editor label="Filtro" name="filter_input"/>
 	<tab_container name="tabs">
 		<panel label="NELLE VICINANZE" name="nearby_panel">
-			<panel label="bottom_panel" name="nearby_buttons_panel">
-				<filter_editor label="Filtro persone" name="nearby_filter_input"/>
-				<button name="gear_btn" tool_tip="Azioni per la persona selezionata:"/>
-				<menu_button name="nearby_view_btn" tool_tip="Opzioni Mostra/Ordina"/>
-				<button name="add_friend_btn" tool_tip="Offri amicizia a un residente"/>
-				<dnd_button name="nearby_del_btn" tool_tip="Rimuovi la persona selezionata dagli amici"/>
+			<panel label="bottom_panel" name="bottom_panel">
+				<menu_button name="nearby_view_sort_btn" tool_tip="Opzioni"/>
+				<button name="add_friend_btn" tool_tip="Aggiungi il residente selezionato alla tua lista degli amici"/>
 			</panel>
 		</panel>
-		<panel label="AMICI" name="friends_panel">
-			<panel label="bottom_panel" name="friends_buttons_panel">
-				<filter_editor label="Filtro persone" name="friends_filter_input"/>
-				<button name="gear_btn" tool_tip="Azioni per la persona selezionata:"/>
-				<menu_button name="friends_view_btn" tool_tip="Opzioni Mostra/Ordina"/>
-				<button name="friends_add_btn" tool_tip="Offri amicizia a un residente"/>
-				<dnd_button name="friends_del_btn" tool_tip="Rimuovi la persona selezionata dagli amici"/>
-			</panel>
+		<panel label="I MIEI AMICI" name="friends_panel">
 			<accordion name="friends_accordion">
 				<accordion_tab name="tab_online" title="Online"/>
 				<accordion_tab name="tab_all" title="Tutto"/>
 			</accordion>
+			<panel label="bottom_panel" name="bottom_panel">
+				<layout_stack name="bottom_panel">
+					<layout_panel name="options_gear_btn_panel">
+						<menu_button name="friends_viewsort_btn" tool_tip="Mostra ulteriori opzioni"/>
+					</layout_panel>
+					<layout_panel name="add_btn_panel">
+						<button name="add_btn" tool_tip="Offri amicizia a un residente"/>
+					</layout_panel>
+					<layout_panel name="trash_btn_panel">
+						<dnd_button name="del_btn" tool_tip="Rimuovi la persona selezionata dalla lista degli amici"/>
+					</layout_panel>
+				</layout_stack>
+			</panel>
 		</panel>
-		<panel label="GRUPPI" name="groups_panel">
-			<panel label="bottom_panel" name="groups_buttons_panel">
-				<filter_editor label="Filtro gruppi" name="groups_filter_input"/>
-				<menu_button name="groups_gear_btn" tool_tip="Azioni per il gruppo selezionato:"/>
-				<menu_button name="groups_view_btn" tool_tip="Opzioni Mostra/Ordina"/>
-				<menu_button name="plus_btn" tool_tip="Aderisci al gruppo/Crea nuovo gruppo"/>
-				<dnd_button name="minus_btn" tool_tip="Lascia il gruppo selezionato"/>
+		<panel label="I MIEI GRUPPI" name="groups_panel">
+			<panel label="bottom_panel" name="bottom_panel">
+				<menu_button name="groups_viewsort_btn" tool_tip="Opzioni"/>
+				<button name="plus_btn" tool_tip="Aderisci al gruppo/Crea nuovo gruppo"/>
+				<button name="activate_btn" tool_tip="Attiva il gruppo selezionato"/>
 			</panel>
 		</panel>
 		<panel label="RECENTE" name="recent_panel">
-			<panel label="bottom_panel" name="recent_buttons_panel">
-				<filter_editor label="Filtro persone" name="recent_filter_input"/>
-				<button name="gear_btn" tool_tip="Azioni per la persona selezionata:"/>
-				<menu_button name="recent_view_btn" tool_tip="Opzioni Mostra/Ordina"/>
-				<button name="add_friend_btn" tool_tip="Offri amicizia a un residente"/>
-				<dnd_button name="recent_del_btn" tool_tip="Rimuovi la persona selezionata dagli amici"/>
+			<panel label="bottom_panel" name="bottom_panel">
+				<menu_button name="recent_viewsort_btn" tool_tip="Opzioni"/>
+				<button name="add_friend_btn" tool_tip="Aggiungi il residente selezionato alla tua lista degli amici"/>
 			</panel>
 		</panel>
-		<panel label="BLOCCATO" name="blocked_panel">
-			<panel label="Residenti e oggetti bloccati" name="panel_block_list_sidetray"/>
-		</panel>
 	</tab_container>
+	<panel name="button_bar">
+		<layout_stack name="bottom_bar_ls">
+			<layout_panel name="view_profile_btn_lp">
+				<button label="Profilo" name="view_profile_btn" tool_tip="Mostra immagine, gruppi e altre informazioni del residente"/>
+			</layout_panel>
+			<layout_panel name="im_btn_lp">
+				<button label="IM" name="im_btn" tool_tip="Apri una sessione messaggio istantaneo"/>
+			</layout_panel>
+			<layout_panel name="call_btn_lp">
+				<button label="Chiama" name="call_btn" tool_tip="Chiama questo residente"/>
+			</layout_panel>
+			<layout_panel name="share_btn_lp">
+				<button label="Condividi" name="share_btn" tool_tip="Condividi un oggetto dell&apos;inventario"/>
+			</layout_panel>
+			<layout_panel name="teleport_btn_lp">
+				<button label="Teleport" name="teleport_btn" tool_tip="Offri teleport"/>
+			</layout_panel>
+		</layout_stack>
+		<layout_stack name="bottom_bar_ls1">
+			<layout_panel name="group_info_btn_lp">
+				<button label="Profilo del gruppo" name="group_info_btn" tool_tip="Mostra informazioni gruppo"/>
+			</layout_panel>
+			<layout_panel name="chat_btn_lp">
+				<button label="Chat di gruppo" name="chat_btn" tool_tip="Apri sessione chat"/>
+			</layout_panel>
+			<layout_panel name="group_call_btn_lp">
+				<button label="Chiamata al gruppo" name="group_call_btn" tool_tip="Chiama questo gruppo"/>
+			</layout_panel>
+		</layout_stack>
+	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/it/panel_preferences_chat.xml b/indra/newview/skins/default/xui/it/panel_preferences_chat.xml
index c2ac6e97a9c..0c9c4027e58 100644
--- a/indra/newview/skins/default/xui/it/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/it/panel_preferences_chat.xml
@@ -1,86 +1,34 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Text Chat" name="chat">
-	<panel>
-		<check_box initial_value="true" label="Simula la battitura tasti quando scrivi" name="play_typing_animation"/>
-		<check_box label="Quando sono OFF-LINE, spediscimi gli IM in una e-mail" name="send_im_to_email"/>
-		<check_box label="Solo amici e gruppi possono chiamarmi o mandarmi IM" name="voice_call_friends_only_check"/>
-		<text name="font_size">
-			Dimensioni caratteri:
-		</text>
-		<combo_box name="chat_font_size">
-			<item label="Piccolo" name="Small" value="0"/>
-			<item label="Medio" name="Medium" value="1"/>
-			<item label="Grande" name="Large" value="2"/>
-		</combo_box>
-		<check_box label="Chat a vignetta" name="bubble_text_chat"/>
-	</panel>
-	<panel>
-		<text name="notifications">
-			Notifiche
-		</text>
-		<text name="friend_ims">
-			IM degli amici:
-		</text>
-		<combo_box name="FriendIMOptions">
-			<item label="Apri finestra Conversazioni" name="OpenConversationsWindow" value="openconversations"/>
-			<item label="Mostra il messaggio in una finestra pop-up" name="PopUpMessage" value="toast"/>
-			<item label="Pulsante barra strumenti Flash" name="FlashToolbarButton" value="flash"/>
-			<item label="Nessuno" name="None" value="none"/>
-		</combo_box>
-		<text name="non_friend_ims">
-			IM non di amici:
-		</text>
-		<combo_box name="NonFriendIMOptions">
-			<item label="Apri finestra Conversazioni" name="OpenConversationsWindow" value="openconversations"/>
-			<item label="Mostra il messaggio in una finestra pop-up" name="PopUpMessage" value="toast"/>
-			<item label="Pulsante barra strumenti Flash" name="FlashToolbarButton" value="flash"/>
-			<item label="Nessuno" name="None" value="none"/>
-		</combo_box>
-		<text name="conference_ims">
-			IM conferenza:
-		</text>
-		<combo_box name="ConferenceIMOptions">
-			<item label="Apri finestra Conversazioni" name="OpenConversationsWindow" value="openconversations"/>
-			<item label="Mostra il messaggio in una finestra pop-up" name="PopUpMessage" value="toast"/>
-			<item label="Pulsante barra strumenti Flash" name="FlashToolbarButton" value="flash"/>
-			<item label="Nessuno" name="None" value="none"/>
-		</combo_box>
-		<text name="group_chat">
-			Chat di gruppo:
-		</text>
-		<combo_box name="GroupChatOptions">
-			<item label="Apri finestra Conversazioni" name="OpenConversationsWindow" value="openconversations"/>
-			<item label="Mostra il messaggio in una finestra pop-up" name="PopUpMessage" value="toast"/>
-			<item label="Pulsante barra strumenti Flash" name="FlashToolbarButton" value="flash"/>
-			<item label="Nessuno" name="None" value="none"/>
-		</combo_box>
-		<text name="nearby_chat">
-			Chat nei dintorni:
-		</text>
-		<combo_box name="NearbyChatOptions">
-			<item label="Apri finestra Conversazioni" name="OpenConversationsWindow" value="openconversations"/>
-			<item label="Mostra il messaggio in una finestra pop-up" name="PopUpMessage" value="toast"/>
-			<item label="Pulsante barra strumenti Flash" name="FlashToolBarButton" value="flash"/>
-			<item label="Nessuno" name="None" value="none"/>
-		</combo_box>
-		<text name="notifications_alert">
-			Per interrompere temporaneamente le notifiche, usa Comunica &gt; Non disturbare.
-		</text>
-	</panel>
-	<panel>
-		<text name="play_sound">
-			Riproduci suono:
-		</text>
-		<check_box label="Nuova conversazione" name="new_conversation"/>
-		<check_box label="Chiamata voce in arrivo" name="incoming_voice_call"/>
-		<check_box label="Offerta di Teleport" name="teleport_offer"/>
-		<check_box label="Offerta inventario" name="inventory_offer"/>
-	</panel>
-	<panel>
-		<button label="Cancella registro..." name="clear_log"/>
-		<button label="Cancella trascrizioni..." name="delete_transcripts"/>
-		<button label="Sfoglia..." label_selected="Sfoglia" name="log_path_button"/>
-	</panel>
+	<text name="font_size">
+		Dimensioni caratteri:
+	</text>
+	<radio_group name="chat_font_size">
+		<radio_item label="Piccola" name="radio" value="0"/>
+		<radio_item label="Media" name="radio2" value="1"/>
+		<radio_item label="Grande" name="radio3" value="2"/>
+	</radio_group>
+	<check_box initial_value="true" label="Simula la battitura tasti quando scrivi" name="play_typing_animation"/>
+	<check_box label="Quando sono OFF-LINE, spediscimi gli IM in una e-mail" name="send_im_to_email"/>
+	<check_box label="Attiva IM in testo semplice e cronologia chat" name="plain_text_chat_history"/>
+	<check_box label="Chat a vignetta" name="bubble_text_chat"/>
+	<text name="show_ims_in_label">
+		Mostra gli IM in:
+	</text>
+	<text name="requires_restart_label">
+		(richiede il riavvio)
+	</text>
+	<radio_group name="chat_window" tool_tip="Mostra i tuoi messaggi istantanei in diverse finestre, o in una finestra con più schede (richiede il riavvio)">
+		<radio_item label="Finestre separate" name="radio" value="0"/>
+		<radio_item label="Schede" name="radio2" value="1"/>
+	</radio_group>
+	<text name="disable_toast_label">
+		Attiva popup per chat in arrivo:
+	</text>
+	<check_box label="Chat di gruppo" name="EnableGroupChatPopups" tool_tip="Seleziona per vedere una finestra popup quando arriva una chat di gruppo"/>
+	<check_box label="Chat IM" name="EnableIMChatPopups" tool_tip="Seleziona per vedere una finestra popup quando arriva un messaggio IM"/>
+	<spinner label="Durata chat vicine:" name="nearby_toasts_lifetime"/>
+	<spinner label="Durata dissolvenza chat vicine:" name="nearby_toasts_fadingtime"/>
 	<button label="Traduzione..." name="ok_btn"/>
 	<button label="Sostituzione automatica..." name="autoreplace_showgui"/>
 	<button label="Correzione ortografica..." name="spellcheck_showgui"/>
diff --git a/indra/newview/skins/default/xui/it/panel_preferences_general.xml b/indra/newview/skins/default/xui/it/panel_preferences_general.xml
index 45cc06c2eae..90a833471ce 100644
--- a/indra/newview/skins/default/xui/it/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/it/panel_preferences_general.xml
@@ -69,9 +69,6 @@
 		<combo_box.item label="mai" name="item4"/>
 	</combo_box>
 	<text name="text_box3">
-		Risposta Non disturbare:
+		Risposta in modalità occupato:
 	</text>
-	<text_editor name="do_not_disturb_response">
-		log_in_to_change
-	</text_editor>
 </panel>
diff --git a/indra/newview/skins/default/xui/it/sidepanel_task_info.xml b/indra/newview/skins/default/xui/it/sidepanel_task_info.xml
index 5f912dd126e..8a0f93e6509 100644
--- a/indra/newview/skins/default/xui/it/sidepanel_task_info.xml
+++ b/indra/newview/skins/default/xui/it/sidepanel_task_info.xml
@@ -72,7 +72,6 @@
 			<combo_box.item label="Acquista oggetto" name="Buyobject"/>
 			<combo_box.item label="Paga oggetto" name="Payobject"/>
 			<combo_box.item label="Apri" name="Open"/>
-			<combo_box.item label="Ingrandisci" name="Zoom"/>
 		</combo_box>
 		<panel name="perms_inv">
 			<text name="perm_modify">
diff --git a/indra/newview/skins/default/xui/it/strings.xml b/indra/newview/skins/default/xui/it/strings.xml
index f95318542b4..fb1e3874682 100644
--- a/indra/newview/skins/default/xui/it/strings.xml
+++ b/indra/newview/skins/default/xui/it/strings.xml
@@ -134,7 +134,7 @@
 		Esci
 	</string>
 	<string name="create_account_url">
-		http://join.secondlife.com/?sourceid=[sourceid]
+		http://join.secondlife.com/index.php?lang=it-IT&amp;sourceid=[sourceid]
 	</string>
 	<string name="LoginFailedViewerNotPermitted">
 		Il viewer utilizzato non è più in grado di accedere a Second Life. Visita la parina seguente per scaricare un nuovo viewer:
@@ -616,8 +616,8 @@ Prova ad accedere nuovamente tra un minuto.
 	<string name="AvatarAway">
 		Assente
 	</string>
-	<string name="AvatarDoNotDisturb">
-		Non disturbare
+	<string name="AvatarBusy">
+		Occupato
 	</string>
 	<string name="AvatarMuted">
 		Mutato
@@ -853,12 +853,6 @@ Prova ad accedere nuovamente tra un minuto.
 	<string name="ST_NO_JOINT">
 		Impossibile trovare ROOT o JOINT.
 	</string>
-	<string name="NearbyChatTitle">
-		Chat nei dintorni
-	</string>
-	<string name="NearbyChatLabel">
-		(Chat nei dintorni)
-	</string>
 	<string name="whisper">
 		sussurra:
 	</string>
@@ -922,9 +916,6 @@ Prova ad accedere nuovamente tra un minuto.
 	<string name="ControlYourCamera">
 		Controllare la tua fotocamera
 	</string>
-	<string name="AgentNameSubst">
-		(Tu)
-	</string>
 	<string name="TeleportYourAgent">
 		Teleportarti
 	</string>
@@ -1009,6 +1000,18 @@ Prova ad accedere nuovamente tra un minuto.
 	<string name="dictionary_files">
 		Dizionari
 	</string>
+	<string name="AvatarSetNotAway">
+		Imposta come non assente
+	</string>
+	<string name="AvatarSetAway">
+		Imposta come assente
+	</string>
+	<string name="AvatarSetNotBusy">
+		Imposta come non occupato
+	</string>
+	<string name="AvatarSetBusy">
+		Imposta come occupato
+	</string>
 	<string name="shape">
 		Figura corporea
 	</string>
@@ -1965,8 +1968,8 @@ Prova ad accedere nuovamente tra un minuto.
 	<string name="PanelContentsNewScript">
 		Nuovo script
 	</string>
-	<string name="DoNotDisturbModeResponseDefault">
-		Questo residente ha attivato la modalità &apos;Non disturbare&apos; e vedrà il tuo messaggio più tardi.
+	<string name="BusyModeResponseDefault">
+		Il residente al quale hai inviato un messaggio è in modalità &apos;occupato&apos;, ovvero ha chiesto di non essere disturbato.  Il tuo messaggio comparirà nel suo pannello IM, dove potrà essere letto in un secondo momento.
 	</string>
 	<string name="MuteByName">
 		(In base al nome)
@@ -2079,6 +2082,9 @@ Prova ad accedere nuovamente tra un minuto.
 	<string name="GroupMoneyDate">
 		[weekday,datetime,utc] [mth,datetime,utc] [day,datetime,utc], [year,datetime,utc]
 	</string>
+	<string name="ViewerObjectContents">
+		Contenuto
+	</string>
 	<string name="AcquiredItems">
 		Oggetti acquisiti
 	</string>
@@ -3793,7 +3799,7 @@ Se il messaggio persiste, contatta [SUPPORT_SITE].
 		Regione generale
 	</string>
 	<string name="LocationCtrlSeeAVsTooltip">
-		Gli avatar in questo lotto non possono essere visti o sentiti da avatar all&apos;esterno del lotto
+		Avatar visibili e chat consentita fuori di questo lotto
 	</string>
 	<string name="LocationCtrlPathfindingDirtyTooltip">
 		Gli oggetti che si muovono potrebbero non comportarsi correttamente in questa regione fino a quando non viene eseguito il rebake della regione.
@@ -3870,12 +3876,6 @@ Se il messaggio persiste, contatta [SUPPORT_SITE].
 	<string name="IM_unblock_only_groups_friends">
 		Per vedere questo messaggio, devi deselezionare &apos;Solo amici e gruppi possono chiamarmi o mandarmi IM&apos; in Preferenze/Privacy.
 	</string>
-	<string name="OnlineStatus">
-		Online
-	</string>
-	<string name="OfflineStatus">
-		Offline
-	</string>
 	<string name="answered_call">
 		Risposto alla chiamata
 	</string>
@@ -3885,9 +3885,6 @@ Se il messaggio persiste, contatta [SUPPORT_SITE].
 	<string name="you_joined_call">
 		Ti sei collegato alla chiamata in voce
 	</string>
-	<string name="you_auto_rejected_call-im">
-		Hai rifiutato automaticamente la chiamata voce mentre era attivata la modalità &apos;Non disturbare&apos;.
-	</string>
 	<string name="name_started_call">
 		[NAME] ha iniziato una chiamata vocale
 	</string>
@@ -3900,9 +3897,6 @@ Se il messaggio persiste, contatta [SUPPORT_SITE].
 	<string name="hang_up-im">
 		Chiusa la chiamata
 	</string>
-	<string name="conference-title">
-		Chat con più persone
-	</string>
 	<string name="conference-title-incoming">
 		Chiamata in conferenza con [AGENT_NAME]
 	</string>
@@ -4775,9 +4769,6 @@ Prova a racchiudere il percorso dell&apos;editor in doppie virgolette.
 	<string name="Command_Chat_Label">
 		Chat
 	</string>
-	<string name="Command_Conversations_Label">
-		Conversazioni
-	</string>
 	<string name="Command_Compass_Label">
 		Bussola
 	</string>
@@ -4853,9 +4844,6 @@ Prova a racchiudere il percorso dell&apos;editor in doppie virgolette.
 	<string name="Command_Chat_Tooltip">
 		Chatta con persone vicine usando il testo
 	</string>
-	<string name="Command_Conversations_Tooltip">
-		Conversa con chiunque
-	</string>
 	<string name="Command_Compass_Tooltip">
 		Bussola
 	</string>
@@ -4985,13 +4973,4 @@ Prova a racchiudere il percorso dell&apos;editor in doppie virgolette.
 	<string name="UserDictionary">
 		[User]
 	</string>
-	<string name="logging_calls_disabled_log_empty">
-		Le conversazioni non vengono registrate. Per iniziare a registrare, seleziona &quot;Salva: Solo registro&quot; oppure &quot;Salva: Registri e trascrizioni&quot; in Preferenze &gt; Chat.
-	</string>
-	<string name="logging_calls_disabled_log_not_empty">
-		Non verranno registrate più le conversazioni. Per riprendere a registrare, seleziona &quot;Salva: Solo registro&quot; oppure &quot;Salva: Registri e trascrizioni&quot; in Preferenze &gt; Chat.
-	</string>
-	<string name="logging_calls_enabled_log_empty">
-		Nessuna conversazione in registro. Dopo che hai contattato qualcuno o se qualcuno ti contatta, una voce del registro verrà mostrata qui.
-	</string>
 </strings>
diff --git a/indra/newview/skins/default/xui/ja/floater_conversation_log.xml b/indra/newview/skins/default/xui/ja/floater_conversation_log.xml
deleted file mode 100644
index 98b1a59a0db..00000000000
--- a/indra/newview/skins/default/xui/ja/floater_conversation_log.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_conversation_log" title="会話ログ">
-	<panel name="buttons_panel">
-		<filter_editor label="人をフィルター" name="people_filter_input"/>
-		<menu_button name="conversation_view_btn" tool_tip="表示 / 並べ替えのオプション"/>
-		<menu_button name="conversations_gear_btn" tool_tip="選択した住人・グループに対するアクション"/>
-	</panel>
-</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_conversation_preview.xml b/indra/newview/skins/default/xui/ja/floater_conversation_preview.xml
deleted file mode 100644
index ea0b23de483..00000000000
--- a/indra/newview/skins/default/xui/ja/floater_conversation_preview.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="preview_conversation" title="会話:">
-	<floater.string name="Title">
-		会話:[NAME]
-	</floater.string>
-	<text name="page_label" value="ページ"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_im_container.xml b/indra/newview/skins/default/xui/ja/floater_im_container.xml
index a155efdc1e6..06b65e27f0c 100644
--- a/indra/newview/skins/default/xui/ja/floater_im_container.xml
+++ b/indra/newview/skins/default/xui/ja/floater_im_container.xml
@@ -1,29 +1,2 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<multi_floater name="floater_im_box" title="会話">
-	<string name="collapse_icon" value="Conv_toolbar_collapse"/>
-	<string name="expand_icon" value="Conv_toolbar_expand"/>
-	<layout_stack name="conversations_stack">
-		<layout_panel name="conversations_layout_panel">
-			<layout_stack name="conversations_pane_buttons_stack">
-				<layout_panel name="conversations_pane_buttons_expanded">
-					<menu_button name="sort_btn" tool_tip="オプションの表示 / 並べ替え"/>
-					<button name="add_btn" tool_tip="新しい会話を開始"/>
-					<button name="speak_btn" tool_tip="マイクを使って人と話す"/>
-				</layout_panel>
-				<layout_panel name="conversations_pane_buttons_collapsed">
-					<button name="expand_collapse_btn" tool_tip="このリストを閉じる / 開く"/>
-				</layout_panel>
-			</layout_stack>
-		</layout_panel>
-		<layout_panel name="messages_layout_panel">
-			<panel_container name="im_box_tab_container">
-				<panel name="stub_panel">
-					<button name="stub_collapse_btn" tool_tip="このペインを閉じる"/>
-					<text name="stub_textbox">
-						この会話は、別のウィンドウに表示されます。[secondlife:/// 戻る.]
-					</text>
-				</panel>
-			</panel_container>
-		</layout_panel>
-	</layout_stack>
-</multi_floater>
+<multi_floater name="floater_im_box" title="会話"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_im_session.xml b/indra/newview/skins/default/xui/ja/floater_im_session.xml
index a44c843df7f..dfa1c85ca23 100644
--- a/indra/newview/skins/default/xui/ja/floater_im_session.xml
+++ b/indra/newview/skins/default/xui/ja/floater_im_session.xml
@@ -1,59 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="panel_im">
-	<floater.string name="call_btn_start">
-		Conv_toolbar_open_call
-	</floater.string>
-	<floater.string name="call_btn_stop">
-		Conv_toolbar_hang_up
-	</floater.string>
-	<floater.string name="collapseline_icon" value="Conv_collapse_to_one_line"/>
-	<floater.string name="expandline_icon" value="Conv_expand_one_line"/>
-	<floater.string name="collapse_icon" value="Conv_toolbar_collapse"/>
-	<floater.string name="expand_icon" value="Conv_toolbar_expand"/>
-	<floater.string name="tear_off_icon" value="Conv_toolbar_arrow_ne"/>
-	<floater.string name="return_icon" value="Conv_toolbar_arrow_sw"/>
-	<floater.string name="participant_added" value="[NAME] は会話に招待されました。"/>
-	<floater.string name="multiple_participants_added" value="[NAME] は会話に招待されました。"/>
-	<floater.string name="tooltip_to_separate_window" value="この会話を別のウィンドウへ移動する"/>
-	<floater.string name="tooltip_to_main_window" value="この会話をメインウィンドウへ戻す"/>
-	<floater.string name="start_call_button_tooltip" value="会話の接続を開く"/>
-	<floater.string name="end_call_button_tooltip" value="会話の接続を閉じる"/>
-	<floater.string name="expcol_button_not_tearoff_tooltip" value="このペインを閉じる"/>
-	<floater.string name="expcol_button_tearoff_and_expanded_tooltip" value="参加者リストを閉じる"/>
-	<floater.string name="expcol_button_tearoff_and_collapsed_tooltip" value="参加者リストを開く"/>
-	<view name="contents_view">
-		<layout_stack name="main_stack">
-			<layout_panel name="toolbar_panel">
-				<menu_button name="view_options_btn" tool_tip="表示 / 並べ替えのオプション"/>
-				<menu_button name="gear_btn" tool_tip="選択した人に対するアクション"/>
-				<button name="add_btn" tool_tip="この会話に他の人を追加する"/>
-				<button name="voice_call_btn" tool_tip="会話の接続を開く"/>
-				<button name="close_btn" tool_tip="この会話を終了する"/>
-				<button name="expand_collapse_btn" tool_tip="このペインを閉じる / 開く"/>
-			</layout_panel>
-			<layout_panel name="body_panel">
-				<layout_stack name="im_panels">
-					<layout_panel name="right_part_holder">
-						<panel name="trnsAndChat_panel">
-							<layout_stack name="translate_and_chat_stack">
-								<layout_panel name="translate_chat_checkbox_lp">
-									<check_box label="チャットを翻訳" name="translate_chat_checkbox"/>
-								</layout_panel>
-							</layout_stack>
-						</panel>
-					</layout_panel>
-				</layout_stack>
-			</layout_panel>
-			<layout_panel name="chat_layout_panel">
-				<layout_stack name="input_panels">
-					<layout_panel name="input_editor_layout_panel">
-						<chat_editor label="宛先" name="chat_editor"/>
-					</layout_panel>
-					<layout_panel name="input_button_layout_panel">
-						<button name="minz_btn" tool_tip="メッセージパネルの表示 / 非表示"/>
-					</layout_panel>
-				</layout_stack>
-			</layout_panel>
-		</layout_stack>
-	</view>
+	<layout_stack name="im_panels">
+		<layout_panel>
+			<line_editor label="宛先" name="chat_editor"/>
+		</layout_panel>
+	</layout_stack>
 </floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_incoming_call.xml b/indra/newview/skins/default/xui/ja/floater_incoming_call.xml
index 308f6f9a3de..f152fcd7381 100644
--- a/indra/newview/skins/default/xui/ja/floater_incoming_call.xml
+++ b/indra/newview/skins/default/xui/ja/floater_incoming_call.xml
@@ -10,7 +10,7 @@
 		匿名ユーザー
 	</floater.string>
 	<floater.string name="VoiceInviteP2P">
-		からコールを受けています。
+		がコールしています。
 	</floater.string>
 	<floater.string name="VoiceInviteAdHoc">
 		がコンファレンスチャットで、ボイスチャットに参加しました。
@@ -25,9 +25,9 @@
 		[CURRENT_CHAT]を退席して、このボイスチャットに参加しますか?
 	</floater.string>
 	<text name="question">
-		コールに応答すると、現在のボイスチャットから切断されます。
+		[CURRENT_CHAT] を退席して、このボイスチャットに参加しますか?
 	</text>
-	<button label="取る" label_selected="取る" name="Accept"/>
-	<button label="無視" label_selected="無視" name="Reject"/>
-	<button label="代わりに IM を開く" name="Start IM"/>
+	<button label="はい" label_selected="はい" name="Accept"/>
+	<button label="いいえ" label_selected="いいえ" name="Reject"/>
+	<button label="IM" name="Start IM"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_pathfinding_console.xml b/indra/newview/skins/default/xui/ja/floater_pathfinding_console.xml
index 9733c619181..ec107f3e6b9 100644
--- a/indra/newview/skins/default/xui/ja/floater_pathfinding_console.xml
+++ b/indra/newview/skins/default/xui/ja/floater_pathfinding_console.xml
@@ -71,7 +71,7 @@
 			<text name="show_label">
 				表示:
 			</text>
-			<check_box label="テスト" name="show_world"/>
+			<check_box label="世界" name="show_world"/>
 			<check_box label="可動物のみ" name="show_world_movables_only"/>
 			<check_box label="ナビメッシュ" name="show_navmesh"/>
 			<text name="show_walkability_label">
diff --git a/indra/newview/skins/default/xui/ja/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/ja/floater_texture_ctrl.xml
index 37233d3e686..3773812bb66 100644
--- a/indra/newview/skins/default/xui/ja/floater_texture_ctrl.xml
+++ b/indra/newview/skins/default/xui/ja/floater_texture_ctrl.xml
@@ -20,7 +20,7 @@
 	<button label="ブランク" label_selected="ブランク" name="Blank"/>
 	<button label="なし" label_selected="なし" name="None"/>
 	<button label="" label_selected="" name="Pipette"/>
-	<check_box initial_value="true" label="今すぐ適用" name="apply_immediate_check"/>
+	<check_box initial_value="true" label="ライブプレビュー" name="apply_immediate_check"/>
 	<text name="preview_disabled" value="プレビュー無効"/>
 	<filter_editor label="テクスチャをフィルター" name="inventory search editor"/>
 	<check_box initial_value="false" label="フォルダを表示" name="show_folders_check"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_voice_chat_volume.xml b/indra/newview/skins/default/xui/ja/floater_voice_chat_volume.xml
deleted file mode 100644
index 44e96c35ad4..00000000000
--- a/indra/newview/skins/default/xui/ja/floater_voice_chat_volume.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_voice_volume" title="ボイスチャットの音量">
-	<slider label="ボイスチャット" name="chat_voice_volume"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_voice_effect.xml b/indra/newview/skins/default/xui/ja/floater_voice_effect.xml
index b38ea9331ad..ee675e143b0 100644
--- a/indra/newview/skins/default/xui/ja/floater_voice_effect.xml
+++ b/indra/newview/skins/default/xui/ja/floater_voice_effect.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater label="場所" name="voice_effects" title="ボイスモーフィングのプレビュー">
+<floater label="場所" name="voice_effects" title="ボイスモーフィング">
 	<string name="no_voice_effect">
 		(ボイスモーフィングなし)
 	</string>
diff --git a/indra/newview/skins/default/xui/ja/floater_voice_volume.xml b/indra/newview/skins/default/xui/ja/floater_voice_volume.xml
deleted file mode 100644
index a380615d5a4..00000000000
--- a/indra/newview/skins/default/xui/ja/floater_voice_volume.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!--
-  Not can_close / no title to avoid window chrome
-  Single instance - only have one at a time, recycle it each spawn
--->
-<floater name="floater_voice_volume" title="ボイス音量">
-	<slider name="volume_slider" tool_tip="ボイス音量" value="0.5"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/ja/menu_cof_gear.xml b/indra/newview/skins/default/xui/ja/menu_cof_gear.xml
index 07bcefd9b37..a071abbd2e8 100644
--- a/indra/newview/skins/default/xui/ja/menu_cof_gear.xml
+++ b/indra/newview/skins/default/xui/ja/menu_cof_gear.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="Gear COF">
+<menu name="Gear COF">
 	<menu label="衣類" name="COF.Gear.New_Clothes"/>
-	<menu label="新しい身体部位" name="COF.Gear.New_Body_Parts"/>
-</toggleable_menu>
+	<menu label="新しい身体部位" name="COF.Geear.New_Body_Parts"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_conversation.xml b/indra/newview/skins/default/xui/ja/menu_conversation.xml
deleted file mode 100644
index c7df20d2529..00000000000
--- a/indra/newview/skins/default/xui/ja/menu_conversation.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_conversation_participant">
-	<menu_item_call label="会話を終える" name="close_conversation"/>
-	<menu_item_call label="ボイスチャットを始める" name="open_voice_conversation"/>
-	<menu_item_call label="ボイスチャットを切断する" name="disconnect_from_voice"/>
-	<menu_item_call label="プロフィールを表示" name="view_profile"/>
-	<menu_item_call label="IM" name="im"/>
-	<menu_item_call label="テレポートを送る" name="offer_teleport"/>
-	<menu_item_call label="ボイスコール" name="voice_call"/>
-	<menu_item_call label="チャットの履歴..." name="chat_history"/>
-	<menu_item_call label="フレンドを追加" name="add_friend"/>
-	<menu_item_call label="フレンドを削除" name="remove_friend"/>
-	<menu_item_call label="フレンドを削除" name="remove_friends"/>
-	<menu_item_call label="グループに招待..." name="invite_to_group"/>
-	<menu_item_call label="ズームイン" name="zoom_in"/>
-	<menu_item_call label="地図" name="map"/>
-	<menu_item_call label="共有" name="share"/>
-	<menu_item_call label="支払い" name="pay"/>
-	<menu_item_check label="ボイスをブロック" name="block_unblock"/>
-	<menu_item_check label="文字をブロックする" name="MuteText"/>
-	<menu_item_call label="グループ情報" name="group_profile"/>
-	<menu_item_call label="グループをアクティブにする" name="activate_group"/>
-	<menu_item_call label="グループから脱退する" name="leave_group"/>
-	<context_menu label="モデレーターのオプション" name="Moderator Options">
-		<menu_item_check label="文字チャットを許可" name="AllowTextChat"/>
-		<menu_item_call label="この参加者をミュートする" name="ModerateVoiceMuteSelected"/>
-		<menu_item_call label="この参加者のミュートを解除する" name="ModerateVoiceUnMuteSelected"/>
-		<menu_item_call label="全員の音声をミュートする" name="ModerateVoiceMute"/>
-		<menu_item_call label="全員のミュートを解除する" name="ModerateVoiceUnmute"/>
-	</context_menu>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_conversation_log_gear.xml b/indra/newview/skins/default/xui/ja/menu_conversation_log_gear.xml
deleted file mode 100644
index c9d4f947a48..00000000000
--- a/indra/newview/skins/default/xui/ja/menu_conversation_log_gear.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="Conversation Context Menu">
-	<menu_item_call label="IM..." name="IM"/>
-	<menu_item_call label="ボイスコール..." name="Call"/>
-	<menu_item_call label="チャットの履歴を開く..." name="Chat history"/>
-	<menu_item_call label="プロフィールを表示" name="View Profile"/>
-	<menu_item_call label="テレポートを送る" name="teleport"/>
-	<menu_item_call label="フレンド登録" name="add_friend"/>
-	<menu_item_call label="フレンドを削除" name="remove_friend"/>
-	<menu_item_call label="グループに招待..." name="Invite"/>
-	<menu_item_call label="地図" name="Map"/>
-	<menu_item_call label="共有" name="Share"/>
-	<menu_item_call label="支払い" name="Pay"/>
-	<menu_item_check label="ブロック・ブロック解除" name="Block/Unblock"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_conversation_log_view.xml b/indra/newview/skins/default/xui/ja/menu_conversation_log_view.xml
deleted file mode 100644
index bd4812603f7..00000000000
--- a/indra/newview/skins/default/xui/ja/menu_conversation_log_view.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_conversation_view">
-	<menu_item_check label="名前で並べ替え" name="sort_by_name"/>
-	<menu_item_check label="日付で並べ替え" name="sort_by_date"/>
-	<menu_item_check label="上位のフレンドを並べ替え" name="sort_by_friends"/>
-	<menu_item_call label="近くのチャットの履歴を表示..." name="view_nearby_chat_history"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_im_conversation.xml b/indra/newview/skins/default/xui/ja/menu_im_conversation.xml
deleted file mode 100644
index 55cd6610f75..00000000000
--- a/indra/newview/skins/default/xui/ja/menu_im_conversation.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="Conversation Gear Menu">
-	<menu_item_call label="プロフィールを表示" name="View Profile"/>
-	<menu_item_call label="フレンド登録" name="Add Friend"/>
-	<menu_item_call label="フレンドを削除" name="remove_friend"/>
-	<menu_item_call label="テレポートを送る" name="offer_teleport"/>
-	<menu_item_call label="グループに招待..." name="invite_to_group"/>
-	<menu_item_call label="チャットの履歴..." name="chat_history"/>
-	<menu_item_call label="ズームイン" name="zoom_in"/>
-	<menu_item_call label="地図" name="map"/>
-	<menu_item_call label="共有" name="Share"/>
-	<menu_item_call label="支払い" name="Pay"/>
-	<menu_item_check label="ボイスをブロック" name="Block/Unblock"/>
-	<menu_item_check label="文字をブロックする" name="MuteText"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_im_session_showmodes.xml b/indra/newview/skins/default/xui/ja/menu_im_session_showmodes.xml
deleted file mode 100644
index 222a7417189..00000000000
--- a/indra/newview/skins/default/xui/ja/menu_im_session_showmodes.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_modes">
-	<menu_item_check label="簡略表示" name="compact_view"/>
-	<menu_item_check label="詳細表示" name="expanded_view"/>
-	<menu_item_check label="時間を表示" name="IMShowTime"/>
-	<menu_item_check label="1対1の会話で名前を表示" name="IMShowNamesForP2PConv"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_object_icon.xml b/indra/newview/skins/default/xui/ja/menu_object_icon.xml
index 6448e9244ec..8c4f3286618 100644
--- a/indra/newview/skins/default/xui/ja/menu_object_icon.xml
+++ b/indra/newview/skins/default/xui/ja/menu_object_icon.xml
@@ -2,6 +2,4 @@
 <menu name="Object Icon Menu">
 	<menu_item_call label="オブジェクトのプロフィール..." name="Object Profile"/>
 	<menu_item_call label="ブロック..." name="Block"/>
-	<menu_item_call label="地図に表示" name="show_on_map"/>
-	<menu_item_call label="オブジェクトの場所にテレポート" name="teleport_to_object"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_outfit_gear.xml b/indra/newview/skins/default/xui/ja/menu_outfit_gear.xml
index 1969ae2a102..2bcbe1915b4 100644
--- a/indra/newview/skins/default/xui/ja/menu_outfit_gear.xml
+++ b/indra/newview/skins/default/xui/ja/menu_outfit_gear.xml
@@ -23,8 +23,6 @@
 		<menu_item_call label="髪" name="New Hair"/>
 		<menu_item_call label="ç›®" name="New Eyes"/>
 	</menu>
-	<menu_item_call label="フォルダをすべて開く" name="expand"/>
-	<menu_item_call label="フォルダをすべて閉じる" name="collapse"/>
 	<menu_item_call label="アウトフィットの名前を変更する" name="rename"/>
 	<menu_item_call label="アウトフィットを削除する" name="delete_outfit"/>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_participant_view.xml b/indra/newview/skins/default/xui/ja/menu_participant_view.xml
deleted file mode 100644
index 5816351d9de..00000000000
--- a/indra/newview/skins/default/xui/ja/menu_participant_view.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="participant_manu_view">
-	<menu_item_check label="会話をタイプで並べ替え" name="sort_sessions_by_type"/>
-	<menu_item_check label="会話を名前で並べ替え" name="sort_sessions_by_name"/>
-	<menu_item_check label="会話を最新アクティビティで並べ替え" name="sort_sessions_by_recent"/>
-	<menu_item_check label="参加者を名前で並べ替え" name="sort_participants_by_name"/>
-	<menu_item_check label="参加者を最新アクティビティで並べ替え" name="sort_participants_by_recent"/>
-	<menu_item_call label="チャットの環境設定..." name="chat_preferences"/>
-	<menu_item_call label="プライバシーの環境設定..." name="privacy_preferences"/>
-	<menu_item_check label="会話ログ..." name="Conversation"/>
-	<menu_item_check label="近くのチャットを翻訳" name="Translate_chat"/>
-	<menu_item_check label="翻訳の設定..." name="Translation_settings"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_people_blocked_gear.xml b/indra/newview/skins/default/xui/ja/menu_people_blocked_gear.xml
deleted file mode 100644
index b5c9d11e021..00000000000
--- a/indra/newview/skins/default/xui/ja/menu_people_blocked_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_blocked_gear">
-	<menu_item_call label="ブロック解除" name="unblock"/>
-	<menu_item_call label="プロフィール..." name="profile"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_people_blocked_plus.xml b/indra/newview/skins/default/xui/ja/menu_people_blocked_plus.xml
deleted file mode 100644
index 3e74b2ddff6..00000000000
--- a/indra/newview/skins/default/xui/ja/menu_people_blocked_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_blocked_plus">
-	<menu_item_call label="名前で住人をブロック..." name="block_resident_by_name"/>
-	<menu_item_call label="名前でオブジェクトをブロック..." name="block_object_by_name"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_people_blocked_view.xml b/indra/newview/skins/default/xui/ja/menu_people_blocked_view.xml
deleted file mode 100644
index 4b86a353f4b..00000000000
--- a/indra/newview/skins/default/xui/ja/menu_people_blocked_view.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_blocked_view">
-	<menu_item_check label="名前で並べ替え" name="sort_by_name"/>
-	<menu_item_check label="タイプによる並べ替え" name="sort_by_type"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_people_friends_view.xml b/indra/newview/skins/default/xui/ja/menu_people_friends_view.xml
deleted file mode 100644
index b95d11fdbdc..00000000000
--- a/indra/newview/skins/default/xui/ja/menu_people_friends_view.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_group_plus">
-	<menu_item_check label="名前で並べ替え" name="sort_name"/>
-	<menu_item_check label="オンライン状況で並べ替え" name="sort_status"/>
-	<menu_item_check label="人のアイコン表示" name="view_icons"/>
-	<menu_item_check label="与えられた権限を表示" name="view_permissions"/>
-	<menu_item_check label="会話ログを表示..." name="view_conversation"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_people_groups.xml b/indra/newview/skins/default/xui/ja/menu_people_groups.xml
index 2c0c85ba289..842d79dc4be 100644
--- a/indra/newview/skins/default/xui/ja/menu_people_groups.xml
+++ b/indra/newview/skins/default/xui/ja/menu_people_groups.xml
@@ -2,7 +2,7 @@
 <menu name="menu_group_plus">
 	<menu_item_call label="情報を表示" name="View Info"/>
 	<menu_item_call label="チャット" name="Chat"/>
-	<menu_item_call label="ボイスコール" name="Call"/>
+	<menu_item_call label="コール" name="Call"/>
 	<menu_item_call label="アクティブ" name="Activate"/>
 	<menu_item_call label="脱退" name="Leave"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_people_groups_view.xml b/indra/newview/skins/default/xui/ja/menu_people_groups_view.xml
deleted file mode 100644
index 4a9e402fa4f..00000000000
--- a/indra/newview/skins/default/xui/ja/menu_people_groups_view.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_group_plus">
-	<menu_item_check label="グループアイコンを表示" name="Display Group Icons"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_people_nearby.xml b/indra/newview/skins/default/xui/ja/menu_people_nearby.xml
index 972ab767bf4..8d84b0e521c 100644
--- a/indra/newview/skins/default/xui/ja/menu_people_nearby.xml
+++ b/indra/newview/skins/default/xui/ja/menu_people_nearby.xml
@@ -1,16 +1,13 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Avatar Context Menu">
-	<menu_item_call label="プロフィールを表示" name="view_profile"/>
-	<menu_item_call label="IM" name="im"/>
-	<menu_item_call label="テレポートを送る" name="offer_teleport"/>
-	<menu_item_call label="ボイスコール" name="voice_call"/>
-	<menu_item_call label="チャットの履歴を表示..." name="chat_history"/>
-	<menu_item_call label="フレンド登録" name="add_friend"/>
-	<menu_item_call label="フレンドを削除" name="remove_friend"/>
-	<menu_item_call label="グループに招待..." name="invite_to_group"/>
-	<menu_item_call label="ズームイン" name="zoom_in"/>
-	<menu_item_call label="地図" name="map"/>
-	<menu_item_call label="共有" name="share"/>
-	<menu_item_call label="支払い" name="pay"/>
-	<menu_item_check label="ブロック・ブロック解除" name="block_unblock"/>
+	<menu_item_call label="プロフィールの表示" name="View Profile"/>
+	<menu_item_call label="フレンド登録" name="Add Friend"/>
+	<menu_item_call label="フレンドを削除" name="Remove Friend"/>
+	<menu_item_call label="IM" name="IM"/>
+	<menu_item_call label="コール" name="Call"/>
+	<menu_item_call label="地図" name="Map"/>
+	<menu_item_call label="共有" name="Share"/>
+	<menu_item_call label="支払う" name="Pay"/>
+	<menu_item_check label="ブロック・ブロック解除" name="Block/Unblock"/>
+	<menu_item_call label="テレポートを送る" name="teleport"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/ja/menu_people_nearby_multiselect.xml
index fe85e278cfd..3f20e5d3ab1 100644
--- a/indra/newview/skins/default/xui/ja/menu_people_nearby_multiselect.xml
+++ b/indra/newview/skins/default/xui/ja/menu_people_nearby_multiselect.xml
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Multi-Selected People Context Menu">
-	<menu_item_call label="フレンド登録" name="add_friends"/>
-	<menu_item_call label="フレンドを削除" name="remove_friends"/>
-	<menu_item_call label="IM" name="im"/>
-	<menu_item_call label="コール" name="call"/>
-	<menu_item_call label="共有" name="share"/>
-	<menu_item_call label="支払い" name="pay"/>
-	<menu_item_call label="テレポートを送る" name="offer_teleport"/>
+	<menu_item_call label="フレンド登録" name="Add Friends"/>
+	<menu_item_call label="フレンドを削除" name="Remove Friend"/>
+	<menu_item_call label="IM" name="IM"/>
+	<menu_item_call label="コール" name="Call"/>
+	<menu_item_call label="共有" name="Share"/>
+	<menu_item_call label="支払う" name="Pay"/>
+	<menu_item_call label="テレポートを送る" name="teleport"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_people_nearby_view.xml b/indra/newview/skins/default/xui/ja/menu_people_nearby_view.xml
deleted file mode 100644
index b7cccc4396d..00000000000
--- a/indra/newview/skins/default/xui/ja/menu_people_nearby_view.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_group_plus">
-	<menu_item_check label="最近の発言者で並べ替え" name="sort_by_recent_speakers"/>
-	<menu_item_check label="名前で並べ替え" name="sort_name"/>
-	<menu_item_check label="距離で並べ替え" name="sort_distance"/>
-	<menu_item_check label="人のアイコン表示" name="view_icons"/>
-	<menu_item_check label="地図を表示" name="view_map"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_people_recent_view.xml b/indra/newview/skins/default/xui/ja/menu_people_recent_view.xml
deleted file mode 100644
index feaeba4398e..00000000000
--- a/indra/newview/skins/default/xui/ja/menu_people_recent_view.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_group_plus">
-	<menu_item_check label="新しい順に並べ替え" name="sort_most"/>
-	<menu_item_check label="名前で並べ替え" name="sort_name"/>
-	<menu_item_check label="人のアイコン表示" name="view_icons"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_url_agent.xml b/indra/newview/skins/default/xui/ja/menu_url_agent.xml
index 72722db7cca..92d118a5aec 100644
--- a/indra/newview/skins/default/xui/ja/menu_url_agent.xml
+++ b/indra/newview/skins/default/xui/ja/menu_url_agent.xml
@@ -1,8 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Url Popup">
-	<menu_item_call label="プロフィールを表示" name="show_agent"/>
-	<menu_item_call label="IM を送信..." name="send_im"/>
-	<menu_item_call label="フレンドを追加..." name="add_friend"/>
+	<menu_item_call label="住人のプロフィールを表示" name="show_agent"/>
 	<menu_item_call label="名前をクリップボードにコピー" name="url_copy_label"/>
 	<menu_item_call label="SLurl をクリップボードにコピー" name="url_copy"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_url_objectim.xml b/indra/newview/skins/default/xui/ja/menu_url_objectim.xml
index 9e340e3239c..d6a048dcfcc 100644
--- a/indra/newview/skins/default/xui/ja/menu_url_objectim.xml
+++ b/indra/newview/skins/default/xui/ja/menu_url_objectim.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Url Popup">
-	<menu_item_call label="オブジェクトのプロフィール..." name="show_object"/>
+	<menu_item_call label="オブジェクトの情報を表示" name="show_object"/>
 	<menu_item_call label="地図に表示" name="show_on_map"/>
 	<menu_item_call label="オブジェクトの場所にテレポート" name="teleport_to_object"/>
 	<menu_item_call label="オブジェクト名をクリップボードにコピー" name="url_copy_label"/>
diff --git a/indra/newview/skins/default/xui/ja/menu_viewer.xml b/indra/newview/skins/default/xui/ja/menu_viewer.xml
index 6f650242b4e..e60e6781c6e 100644
--- a/indra/newview/skins/default/xui/ja/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/ja/menu_viewer.xml
@@ -16,7 +16,10 @@
 			<menu_item_call label="私のアニメーションを停止する" name="Stop Animating My Avatar"/>
 			<menu_item_call label="歩行/走行/飛行..." name="Walk / run / fly"/>
 		</menu>
-		<menu label="ログイン" name="Status"/>
+		<menu label="ログイン" name="Status">
+			<menu_item_call label="一時退席中" name="Set Away"/>
+			<menu_item_call label="取り込み中" name="Set Busy"/>
+		</menu>
 		<menu_item_call label="L$ の購入..." name="Buy and Sell L$"/>
 		<menu_item_call label="マーチャントアウトボックス..." name="MerchantOutbox"/>
 		<menu_item_call label="マイアカウント..." name="Manage My Account">
@@ -29,18 +32,14 @@
 		<menu_item_call label="[APP_NAME] を終了" name="Quit"/>
 	</menu>
 	<menu label="コミュニケーション" name="Communicate">
-		<menu_item_check label="会話..." name="Conversations"/>
-		<menu_item_check label="近くのチャット..." name="Nearby Chat"/>
+		<menu_item_check label="チャット..." name="Nearby Chat"/>
 		<menu_item_check label="話す" name="Speak"/>
-		<menu label="ボイスモーフィング" name="VoiceMorphing">
-			<menu_item_check label="ボイスモーフィングなし" name="NoVoiceMorphing"/>
-			<menu_item_check label="プレビュー..." name="Preview"/>
-			<menu_item_call label="申し込む..." name="Subscribe"/>
-		</menu>
+		<menu_item_check label="ボイス設定..." name="Nearby Voice"/>
+		<menu_item_check label="ボイスモーフィング..." name="ShowVoice"/>
 		<menu_item_check label="ジェスチャー..." name="Gestures"/>
-		<menu_item_check label="フレンド" name="My Friends"/>
-		<menu_item_check label="グループ" name="My Groups"/>
-		<menu_item_check label="近くにいる人" name="Active Speakers"/>
+		<menu_item_call label="フレンド" name="My Friends"/>
+		<menu_item_call label="グループ" name="My Groups"/>
+		<menu_item_call label="近くにいる人" name="Active Speakers"/>
 		<menu_item_call label="リストをブロック" name="Block List"/>
 	</menu>
 	<menu label="世界" name="World">
@@ -116,6 +115,7 @@
 			<menu_item_call label="買う" name="Menu Object Buy"/>
 			<menu_item_call label="取る" name="Menu Object Take"/>
 			<menu_item_call label="コピーを取る" name="Take Copy"/>
+			<menu_item_call label="マイインベントリに保存" name="Save Object Back to My Inventory"/>
 			<menu_item_call label="オブジェクトの中身に保存" name="Save Object Back to Object Contents"/>
 			<menu_item_call label="オブジェクトを返却する" name="Return Object back to Owner"/>
 		</menu>
@@ -130,7 +130,6 @@
 			<menu_item_call label="リンクセット..." name="pathfinding_linksets_menu_item"/>
 			<menu_item_call label="キャラクター..." name="pathfinding_characters_menu_item"/>
 			<menu_item_call label="表示/テスト..." name="pathfinding_console_menu_item"/>
-			<menu_item_call label="地域の再構築" name="pathfinding_rebake_navmesh_item"/>
 		</menu>
 		<menu label="オプション" name="Options">
 			<menu_item_check label="権限の詳細を表示する" name="DebugPermissions"/>
@@ -160,13 +159,6 @@
 	<menu label="ヘルプ" name="Help">
 		<menu_item_call label="ハウツー..." name="How To"/>
 		<menu_item_call label="[SECOND_LIFE] ヘルプ" name="Second Life Help"/>
-		<menu_item_call label="ユーザーガイド" name="User’s guide"/>
-		<menu_item_call label="ナレッジベース" name="Knowledge Base"/>
-		<menu_item_call label="Wiki" name="Wiki"/>
-		<menu_item_call label="コミュニティフォーラム" name="Community Forums"/>
-		<menu_item_call label="日本語サポートページ" name="Support portal"/>
-		<menu_item_call label="[SECOND_LIFE] ニュース" name="Second Life News"/>
-		<menu_item_call label="[SECOND_LIFE] ブログ" name="Second Life Blogs"/>
 		<menu_item_call label="嫌がらせを報告する" name="Report Abuse"/>
 		<menu_item_call label="バグを報告する" name="Report Bug"/>
 		<menu_item_call label="[APP_NAME] について" name="About Second Life"/>
@@ -393,14 +385,9 @@
 				<menu_item_call label="女性アバターのテスト" name="Test Female"/>
 				<menu_item_check label="選択アバター許可" name="Allow Select Avatar"/>
 			</menu>
-			<menu label="アニメーションのスピード" name="Animation Speed">
-				<menu_item_call label="すべてのアニメーションのスピードを 10% アップ" name="All Animations 10 Faster"/>
-				<menu_item_call label="すべてのアニメーションのスピードを 10% ダウン" name="All Animations 10 Slower"/>
-				<menu_item_call label="すべてのアニメーションのスピードをリセット" name="Reset All Animation Speed"/>
-				<menu_item_check label="アニメーションをスローモーション" name="Slow Motion Animations"/>
-			</menu>
 			<menu_item_call label="パラメータを強制的にデフォルトにする" name="Force Params to Default"/>
 			<menu_item_check label="アニメーション情報" name="Animation Info"/>
+			<menu_item_check label="スローモーションのアニメーション" name="Slow Motion Animations"/>
 			<menu_item_check label="見ているものを表示する" name="Show Look At"/>
 			<menu_item_check label="クリックした場所を表示する" name="Show Point At"/>
 			<menu_item_check label="結合部のアップデートのデバッグ" name="Debug Joint Updates"/>
diff --git a/indra/newview/skins/default/xui/ja/notifications.xml b/indra/newview/skins/default/xui/ja/notifications.xml
index 356506f1912..d5cff18a24a 100644
--- a/indra/newview/skins/default/xui/ja/notifications.xml
+++ b/indra/newview/skins/default/xui/ja/notifications.xml
@@ -538,24 +538,6 @@ L$ が不足しているのでこのグループに参加することができ
 		</url>
 		<usetemplate ignoretext="使用しているグラフィックドライバが古い場合" name="okcancelignore" notext="いいえ" yestext="はい"/>
 	</notification>
-	<notification name="AMDOldDriver">
-		お使いのグラフィックチップには最新のドライバが存在するようです。グラフィックドライバを更新すると、パフォーマンスが大幅に改善されます。
-
-[_URL] へアクセスして、ドライバーを更新しますか。
-		<url name="url">
-			http://support.amd.com/us/Pages/AMDSupportHub.aspx
-		</url>
-		<usetemplate ignoretext="自分のグラフィックドライバが旧くなりました。" name="okcancelignore" notext="いいえ" yestext="はい"/>
-	</notification>
-	<notification name="NVIDIAOldDriver">
-		お使いのグラフィックチップには最新のドライバが存在するようです。グラフィックドライバを更新すると、パフォーマンスが大幅に改善されます。
-
-[_URL] へアクセスして、ドライバーを更新しますか。
-		<url name="url">
-			http://www.nvidia.com/Download/index.aspx?lang=en-us
-		</url>
-		<usetemplate ignoretext="自分のグラフィックドライバが旧くなりました。" name="okcancelignore" notext="いいえ" yestext="はい"/>
-	</notification>
 	<notification name="UnknownGPU">
 		お使いのシステムには、[APP_NAME] が認識できないグラフィックカードが搭載されています。
 [APP_NAME] でまだテストされていない最新ハードウェアのためだと考えられます。  問題ないとは思いますが、グラフィックの設定を調整する必要があるかもしれません。
@@ -1600,13 +1582,10 @@ http://secondlife.com/download から最新バージョンをダウンロード
 		現在フレンドシップを送れません。数分後にもう一度お試しください。
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
-	<notification name="DoNotDisturbModeSet">
-		「通知を受けない」がオンになります。着信通信はあなたには通知されません。
-
-- 他の住民は「通知を受けない」の応答(「設定」&gt;「一般」で設定)を受け取ることになります。
-- テレポートのオファーはすべて受け取り拒否となります。
-- ボイスコールは拒否されます。
-		<usetemplate ignoretext="マイ ログイン状態を「通知を受けない」モードに変更しました。" name="okignore" yestext="OK"/>
+	<notification name="BusyModeSet">
+		取り込み中モードになりました。
+チャットとインスタントメッセージは表示されません。 受信するインスタントメッセージには取り込み中返答メッセージが表示されます。 テレポートのオファーは受け取り拒否となります。 アイテムのオファーはすべてごみ箱に入ります。
+		<usetemplate ignoretext="ログイン状態を取り込み中モードに変更するとき" name="okignore" yestext="OK"/>
 	</notification>
 	<notification name="JoinedTooManyGroupsMember">
 		加入できるグループの最大限に達しました。 このグループに加入するために他のグループを脱退するか、この申し入れを断ってください。
@@ -2097,10 +2076,6 @@ L$ [AMOUNT] で、このクラシファイド広告を今すぐ公開します
 		[http://jp.secondlife.com/account/ マイアカウント] ページに移動してアカウント履歴を確認しますか?
 		<usetemplate ignoretext="ブラウザを起動してアカウント履歴を見るとき" name="okcancelignore" notext="取り消し" yestext="ページに移動"/>
 	</notification>
-	<notification name="ConfirmAddingChatParticipants">
-		既存の会話に人を加えると、新しい会話が作成されます。参加者全員に新しい会話についての通知が配信されます。
-		<usetemplate ignoretext="チャットの参加者の追加を確認してください" name="okcancelignore" notext="取り消し" yestext="OK"/>
-	</notification>
 	<notification name="ConfirmQuit">
 		終了しようとしています。続けますか?
 		<usetemplate ignoretext="終了時の確認" name="okcancelignore" notext="終了しない" yestext="終了"/>
@@ -2178,14 +2153,14 @@ Linden Lab
 			<button ignore="交換しない" name="No" text="キャンセル"/>
 		</form>
 	</notification>
-	<notification label="「通知を受けない」モードの警告" name="DoNotDisturbModePay">
-		「通知を受けない」をオンにします。この支払との交換で提供されるアイテムが受信されなくなります。
+	<notification label="取り込み中の警告" name="BusyModePay">
+		現在、「取り込み中」モードのため、支払いと引き換えにアイテムを受け取ることができません。
 
-このトランザクションを完了するために、「通知を受けない」をオフにしてもよろしいですか。
+この取引を行うために「取り込み中」の設定を解除しますか?
 		<form name="form">
-			<ignore name="ignore" text="「通知を受けない」モード時に、人や物を支払う予定です。"/>
-			<button ignore="「通知を受けない」モードを維持しない" name="Yes" text="OK"/>
-			<button ignore="「通知を受けない」モードを維持する" name="No" text="取り消し"/>
+			<ignore name="ignore" save_option="true" text="取り込み中モード時に支払をするとき"/>
+			<button ignore="常に「取り込み中」の設定を解除" name="Yes" text="OK"/>
+			<button ignore="常に「取り込み中」の設定を継続" name="No" text="キャンセル"/>
 		</form>
 	</notification>
 	<notification name="ConfirmDeleteProtectedCategory">
@@ -2321,8 +2296,11 @@ Web ページにリンクすると、他人がこの場所に簡単にアクセ
 	<notification name="GroupNotice">
 		件名: [SUBJECT]、メッセージ: [MESSAGE]
 	</notification>
-	<notification name="FriendOnlineOffline">
-		&lt;nolink&gt;[NAME]&lt;/nolink&gt; は [STATUS] です
+	<notification name="FriendOnline">
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; はオンラインです
+	</notification>
+	<notification name="FriendOffline">
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; はオフラインです
 	</notification>
 	<notification name="AddSelfFriend">
 		残念ながら自分自身をフレンド登録することはできません。
@@ -2552,6 +2530,13 @@ Web ページにリンクすると、他人がこの場所に簡単にアクセ
 	<notification name="DynamicPathfindingDisabled">
 		この地域(リージョン)でダイナミックパスファインディングが有効になっていません。パスファインディング LSL 呼び出しを使用するスクリプト化されたオブジェクトがこの地域(リージョン)では動作できません。
 	</notification>
+	<notification name="PathfindingRebakeNavmesh">
+		この地域(リージョン)のオブジェクトを変更すると、他の移動オブジェクトが正しく動作しなくなる恐れがあります。移動オブジェクトを正しく動作させるには、「地域の再構築」ボタンをクリックします。詳しい情報は見るには「ヘルプ」を選択してください。
+		<url name="url">
+			http://wiki.secondlife.com/wiki/Pathfinding_Tools_in_the_Second_Life_Viewer
+		</url>
+		<usetemplate helptext="ヘルプ" ignoretext="この地域(リージョン)のオブジェクトを変更すると、他の移動オブジェクトが正しく動作しなくなる恐れがあります。" name="okhelpignore" yestext="OK"/>
+	</notification>
 	<notification name="PathfindingCannotRebakeNavmesh">
 		エラーが発生しました。ネットワークまたはサーバーに問題があるか、制作権がない可能性があります。この問題は、一度ログアウトしてから、ログインし直すと解決される場合があります。
 		<usetemplate name="okbutton" yestext="OK"/>
@@ -2812,9 +2797,9 @@ Web ページにリンクすると、他人がこの場所に簡単にアクセ
 		</form>
 	</notification>
 	<notification name="ScriptQuestionCaution">
-		警告:オブジェクト &apos;&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;&apos; は、あなたのリンデンドルアカウントへのフルアクセスを要求しています。アクセスを許可すると、このオブジェクトは、特に警告を発せずに単発で、随時アカウントから資金を削除するか、アカウントを完全に空にします。
+		警告:オブジェクト &apos;&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;&apos; はあなたのリンデンドルアカウントへのトータルアクセスを希望しています。アクセスを許可すると、このオブジェクトはいつでもあなたのアカウントから資金を削除したり、今後警告を表示することなく継続的にアカウントを完全に空にできるようになります。
   
-そのオブジェクトがアカウントへのアクセスを要求する理由がよくわからない場合は、アクセスを許可しないでください。
+このようなリクエストが正当であることは稀です。このオブジェクトがあなたのアカウントにアクセスしたい理由を完全に理解している場合を除き、アクセスの許可は避けてください。
 		<form name="form">
 			<button name="Grant" text="トータルアクセスを許可"/>
 			<button name="Deny" text="拒否"/>
@@ -3393,627 +3378,4 @@ M キーを押して変更します。
 		[NUM_ITEMS] 個のアイテムを削除中です。続けますか?
 		<usetemplate ignoretext="複数のアイテムを削除しますか?" name="okcancelignore" notext="いいえ" yestext="はい"/>
 	</notification>
-	<notification name="AvatarFrozen">
-		[AV_FREEZER] によってあなたはフリーズされています。世界を動かすことも、世界とインタラクションすることもできません。
-	</notification>
-	<notification name="AvatarFrozenDuration">
-		[AV_FREEZER] によって、あなたは [AV_FREEZE_TIME] 秒間フリーズされました。世界を動かすことも、世界とインタラクションすることもできません。
-	</notification>
-	<notification name="YouFrozeAvatar">
-		アバターがフリーズされています。
-	</notification>
-	<notification name="AvatarHasUnFrozenYou">
-		[AV_FREEZER] によってフリーズが解除されています。
-	</notification>
-	<notification name="AvatarUnFrozen">
-		アバターのフリーズが解除されました。
-	</notification>
-	<notification name="AvatarFreezeFailure">
-		その区画の管理権限を持っていないため、フリーズに失敗しました。
-	</notification>
-	<notification name="AvatarFreezeThaw">
-		フリーズ期間が切れました。仕事に戻ってください。
-	</notification>
-	<notification name="AvatarCantFreeze">
-		残念ながら、そのユーザーをフリーズできません。
-	</notification>
-	<notification name="NowOwnObject">
-		これで、オブジェクト [OBJECT_NAME] の所有者になりました
-	</notification>
-	<notification name="CantRezOnLand">
-		この土地の所有者が許可していないため、[OBJECT_POS] でオブジェクトを Rez することができません。土地ツールを使用して、土地の所有を確認してください。
-	</notification>
-	<notification name="RezFailTooManyRequests">
-		リクエストが多すぎて、オブジェクトを Rez することができません。
-	</notification>
-	<notification name="SitFailCantMove">
-		今回移動できなかったため、座ることができません。
-	</notification>
-	<notification name="SitFailNotAllowedOnLand">
-		その土地に対して許可を受けていないため、座ることができません。
-	</notification>
-	<notification name="SitFailNotSameRegion">
-		移動して近づけてみてください。オブジェクトが同じリージョンにないため、オブジェクトを配置できません。
-	</notification>
-	<notification name="NoNewObjectRegionFull">
-		新しいオブジェクトを作成できません。リージョンが埋まっています。
-	</notification>
-	<notification name="FailedToPlaceObject">
-		指定した場所にオブジェクトを配置できませんでした。もう一度お試しください。
-	</notification>
-	<notification name="NoOwnNoGardening">
-		所有していない土地に木や草を植えることはできません。
-	</notification>
-	<notification name="NoCopyPermsNoObject">
-		オブジェクト &apos;[OBJ_NAME]&apos; をコピーする権限がないため、コピーに失敗しました。
-	</notification>
-	<notification name="NoTransPermsNoObject">
-		オブジェクト &apos;[OBJ_NAME]&apos; をあなたに転送できないため、コピーに失敗しました。
-	</notification>
-	<notification name="AddToNavMeshNoCopy">
-		オブジェクト &apos;[OBJ_NAME]&apos; がナビメッシュに貢献しているため、コピーに失敗しました。
-	</notification>
-	<notification name="DupeWithNoRootsSelected">
-		ルートオブジェクトを選択せずに複製します。
-	</notification>
-	<notification name="CantDupeCuzRegionIsFull">
-		リージョンが埋まっているため、オブジェクトのコピーを作成することができません。
-	</notification>
-	<notification name="CantDupeCuzParcelNotFound">
-		オブジェクトのコピーを作成できません。オブジェクトのある区画が見つかりません。
-	</notification>
-	<notification name="CantCreateCuzParcelFull">
-		区画がいっぱいのため、
-オブジェクトを作成できません。
-	</notification>
-	<notification name="RezAttemptFailed">
-		オブジェクトへの Rez の試みに失敗しました。
-	</notification>
-	<notification name="ToxicInvRezAttemptFailed">
-		このリージョンで問題を引き起こすアイテムは作成できません。
-	</notification>
-	<notification name="InvItemIsBlacklisted">
-		その持ち物アイテムはブラックリストに登録されています。
-	</notification>
-	<notification name="NoCanRezObjects">
-		現在あなたにはオブジェクトを作成するための許可がありません。
-	</notification>
-	<notification name="LandSearchBlocked">
-		土地の検索がブロックされました。
-短期間に多くの土地を検索したためです。
-しばらくしてから再度お試しください。
-	</notification>
-	<notification name="NotEnoughResourcesToAttach">
-		オブジェクトの着用に使用できるスクリプトリソースが足りません。
-	</notification>
-	<notification name="YouDiedAndGotTPHome">
-		死んでしまったので、ホームにテレポートされました。
-	</notification>
-	<notification name="EjectComingSoon">
-		ここへの入場が許可されていないため、[EJECT_TIME] 秒後に追放されます。
-	</notification>
-	<notification name="NoEnterServerFull">
-		サーバーが埋まっているため、
-このリージョンに入場することはできません。
-	</notification>
-	<notification name="SaveBackToInvDisabled">
-		「「持ち物」に保存」が無効になっています。
-	</notification>
-	<notification name="NoExistNoSaveToContents">
-		&apos;[OBJ_NAME]&apos; の Rez 元であるオブジェクトが存在しないため、このオブジェクトをオブジェクトコンテンツに保存できません。
-	</notification>
-	<notification name="NoModNoSaveToContents">
-		オブジェクト &apos;[DEST_NAME]&apos; を修正する権限がないため、オブジェクトのコンテンツに &apos;[OBJ_NAME]&apos; を保存できません。
-	</notification>
-	<notification name="NoSaveBackToInvDisabled">
-		インベントリに &apos;[OBJ_NAME]&apos; を保存することはできません - この操作が無効になっています。
-	</notification>
-	<notification name="NoCopyNoSelCopy">
-		オブジェクト &apos;[OBJ_NAME]&apos; を変更する権限を持っていないため、選択したものをコピーできません。
-	</notification>
-	<notification name="NoTransNoSelCopy">
-		オブジェクト &apos;[OBJ_NAME]&apos; を転送できないため、選択したものをコピーできません。
-	</notification>
-	<notification name="NoTransNoCopy">
-		オブジェクト &apos;[OBJ_NAME]&apos; を転送できないため、選択したものをコピーできません。
-	</notification>
-	<notification name="NoPermsNoRemoval">
-		シミュレータからのオブジェクト &apos;[OBJ_NAME]&apos; の削除は、権限システムによって無効にされています。
-	</notification>
-	<notification name="NoModNoSaveSelection">
-		オブジェクト &apos;[OBJ_NAME]&apos; を変更する権限を持っていないため、選択したものを保存できません。
-	</notification>
-	<notification name="NoCopyNoSaveSelection">
-		オブジェクト &apos;[OBJ_NAME]&apos; をコピーできないため、選択したものを保存できません。
-	</notification>
-	<notification name="NoModNoTaking">
-		オブジェクト &apos;[OBJ_NAME]&apos; を変更する権限を持っていないため、選択したものを取得できません。
-	</notification>
-	<notification name="RezDestInternalError">
-		内部エラー: 不明な宛先タイプ。
-	</notification>
-	<notification name="DeleteFailObjNotFound">
-		オブジェクトが見つからないため削除できませんでした。
-	</notification>
-	<notification name="SorryCantEjectUser">
-		残念ながら、そのユーザーを追放することはできません。
-	</notification>
-	<notification name="RegionSezNotAHome">
-		このリージョンでは、ここにホームの位置を設定できません。
-	</notification>
-	<notification name="HomeLocationLimits">
-		ホームの場所を設定できるのは、自分の土地か、またはメインランドのインフォハブでのみです。
-	</notification>
-	<notification name="HomePositionSet">
-		家の配置の設定。
-	</notification>
-	<notification name="AvatarEjected">
-		アバターが追放されました。
-	</notification>
-	<notification name="AvatarEjectFailed">
-		その区画の管理権限がないため、追放できませんでした。
-	</notification>
-	<notification name="CantMoveObjectParcelFull">
-		区画が埋まっているため、オブジェクト &apos;[OBJECT_NAME]&apos; を、リージョン [REGION_NAME] 内の [OBJ_POSITION] に移動できません。
-	</notification>
-	<notification name="CantMoveObjectParcelPerms">
-		オブジェクト &apos;[OBJECT_NAME]&apos; は、この区画で許可されていないため、リージョン [REGION_NAME] 内の [OBJ_POSITION] に移動できません。
-	</notification>
-	<notification name="CantMoveObjectParcelResources">
-		この区画でこのオブジェクトのリソースが不足しているため、オブジェクト &apos;[OBJECT_NAME]&apos; をリージョン [REGION_NAME] 内の [OBJ_POSITION] に移動できません。
-	</notification>
-	<notification name="CantMoveObjectRegionVersion">
-		オブジェクト &apos;[OBJECT_NAME]&apos; をリージョン [REGION_NAME] 内の [OBJ_POSITION] に移動することはできません。他のリージョンでは、リージョンの境界をまたいだこのオブジェクトを受信することができない古いバージョンを実行しているためです。
-	</notification>
-	<notification name="CantMoveObjectNavMesh">
-		リージョン境界をまたぐナビメッシュを変更できないため、オブジェクト &apos;[OBJECT_NAME]&apos; をリージョン [REGION_NAME] 内の [OBJ_POSITION] に移動できません。
-	</notification>
-	<notification name="CantMoveObjectWTF">
-		不明な理由により、オブジェクト &apos;[OBJECT_NAME]&apos; を、リージョン [REGION_NAME] 内の [OBJ_POSITION] に移動できません。
-([FAILURE_TYPE])
-	</notification>
-	<notification name="NoPermModifyObject">
-		そのオブジェクトを変更する権限がありません
-	</notification>
-	<notification name="CantEnablePhysObjContributesToNav">
-		ナビメッシュに貢献するオブジェクトに対して物理を有効にできません。
-	</notification>
-	<notification name="CantEnablePhysKeyframedObj">
-		キーフレームオブジェクトのために物理を有効にできません。
-	</notification>
-	<notification name="CantEnablePhysNotEnoughLandResources">
-		土地のリソースが足りないため、オブジェクトの物理を有効にできません。
-	</notification>
-	<notification name="CantEnablePhysCostTooGreat">
-		[MAX_OBJECTS] より大きい物理リソースコストを持つオブジェクトでは、物理を有効にできません。
-	</notification>
-	<notification name="PhantomWithConcavePiece">
-		このオブジェクトはファントムで、ナビメッシュに貢献しているため、くぼみを持たせることができません。
-	</notification>
-	<notification name="UnableAddItem">
-		アイテムを追加できません!
-	</notification>
-	<notification name="UnableEditItem">
-		これは編集できません!
-	</notification>
-	<notification name="NoPermToEdit">
-		これを編集する許可がありません。
-	</notification>
-	<notification name="NoPermToCopyInventory">
-		そのインベントリをコピーすることは許可されません。
-	</notification>
-	<notification name="CantSaveItemDoesntExist">
-		オブジェクトのコンテンツに保存できません。アイテムが存在していません。
-	</notification>
-	<notification name="CantSaveItemAlreadyExists">
-		オブジェクトのコンテンツに保存できません。同じ名前を持つアイテムがすでにインベントリに存在します。
-	</notification>
-	<notification name="CantSaveModifyAttachment">
-		オブジェクトのコンテンツに保存できません。このため、アタッチメントの権限が変更されます。
-	</notification>
-	<notification name="TooManyScripts">
-		スクリプトが多すぎます。
-	</notification>
-	<notification name="UnableAddScript">
-		テキストを追加できません!
-	</notification>
-	<notification name="AssetServerTimeoutObjReturn">
-		資産サーバーがタイムリーに応答しませんでした。オブジェクトが sim に返されました。
-	</notification>
-	<notification name="RegionDisablePhysicsShapes">
-		このリージョンでは、物理的シェイプが有効にされていません。
-	</notification>
-	<notification name="NoModNavmeshAcrossRegions">
-		リージョンの境界をまたぐナビメッシュは変更できません。
-	</notification>
-	<notification name="NoSetPhysicsPropertiesOnObjectType">
-		そのオブジェクトタイプの物理的プロパティを設定できません。
-	</notification>
-	<notification name="NoSetRootPrimWithNoShape">
-		ルートプリムを設定できないため、シェイプがありません。
-	</notification>
-	<notification name="NoRegionSupportPhysMats">
-		このリージョンでは、物理的素材が有効にされていません。
-	</notification>
-	<notification name="OnlyRootPrimPhysMats">
-		物理的素材を調整できるのは、ルートプリムだけです。
-	</notification>
-	<notification name="NoSupportCharacterPhysMats">
-		キャラクターへの物理的素材の設定はまだサポートされていません。
-	</notification>
-	<notification name="InvalidPhysMatProperty">
-		指定した物理的素材のプロパティが 1 つ以上無効です。
-	</notification>
-	<notification name="NoPermsAlterStitchingMeshObj">
-		メッシュオブジェクトの縫い目のタイプを変更することはできません。
-	</notification>
-	<notification name="NoPermsAlterShapeMeshObj">
-		メッシュオブジェクトの形状を変更することはできません
-	</notification>
-	<notification name="FullRegionCantEnter">
-		リージョンが埋まっているため、\nこのリージョンに入場できません。
-	</notification>
-	<notification name="LinkFailedOwnersDiffer">
-		リンクエラー -- 所有者が違います
-	</notification>
-	<notification name="LinkFailedNoModNavmeshAcrossRegions">
-		リンクエラー -- リージョンの境界をまたぐナビメッシュは変更できません。
-	</notification>
-	<notification name="LinkFailedNoPermToEdit">
-		リンクエラー -- 編集権限がありません。
-	</notification>
-	<notification name="LinkFailedTooManyPrims">
-		リンクエラー -- プリミティブが多すぎます。
-	</notification>
-	<notification name="LinkFailedCantLinkNoCopyNoTrans">
-		リンクエラー -- コピーなしと転送なしをリンクできません。
-	</notification>
-	<notification name="LinkFailedNothingLinkable">
-		リンクエラー -- リンクできるものがありません。
-	</notification>
-	<notification name="LinkFailedTooManyPathfindingChars">
-		リンクエラー -- パスファインディングの文字数が多すぎます
-	</notification>
-	<notification name="LinkFailedInsufficientLand">
-		リンクエラー -- 土地のリソースが足りません
-	</notification>
-	<notification name="LinkFailedTooMuchPhysics">
-		オブジェクトが使用している物理リソースが多すぎたため、ダイナミックスが無効にされました。
-	</notification>
-	<notification name="TeleportedHomeByObjectOnParcel">
-		区画 &apos;[PARCEL_NAME]&apos; のオブジェクト &apos;[OBJECT_NAME]&apos; によって、あなたはホームにテレポートされました。
-	</notification>
-	<notification name="TeleportedHomeByObject">
-		​オブジェクト ​&apos;[OBJECT_NAME]&apos; によって、あなたはホームへテレポートされています。
-	</notification>
-	<notification name="TeleportedByAttachment">
-		[ITEM_ID] へのアタッチメントによって、あなたはテレポートされています。
-	</notification>
-	<notification name="TeleportedByObjectOnParcel">
-		区画 &apos;[PARCEL_NAME]&apos; のオブジェクト &apos;[OBJECT_NAME]&apos; によって、あなたはテレポートされています。
-	</notification>
-	<notification name="TeleportedByObjectOwnedBy">
-		[OWNER_ID] が所有しているオブジェクト &apos;[OBJECT_NAME]&apos; によって、あなたはテレポートされています。
-	</notification>
-	<notification name="TeleportedByObjectUnknownUser">
-		不明なユーザーが所有しているオブジェクト &apos;[OBJECT_NAME]&apos; によって、あなたはテレポートされています。
-	</notification>
-	<notification name="CantCreateObjectRegionFull">
-		リクエストされたオブジェクトを作成できません。リージョンが埋まっています。
-	</notification>
-	<notification name="CantAttackMultipleObjOneSpot">
-		1 つの場所に複数のオブジェクトを着用することはできません。
-	</notification>
-	<notification name="CantCreateMultipleObjAtLoc">
-		ここでは、複数のオブジェクトを作成することはできません。
-	</notification>
-	<notification name="UnableToCreateObjTimeOut">
-		リクエストされたオブジェクトを作成できません。オブジェクトがデータベースに見つかりません。
-	</notification>
-	<notification name="UnableToCreateObjUnknown">
-		リクエストされたオブジェクトを作成できません。リクエストがタイムアウトになりました。もう一度お試しください。
-	</notification>
-	<notification name="UnableToCreateObjMissingFromDB">
-		要求されたオブジェクトを作成できません。もう一度お試しください。
-	</notification>
-	<notification name="RezFailureTookTooLong">
-		リクエストされたオブジェクトのロードに時間がかかりすぎたため、Rez に失敗しました。
-	</notification>
-	<notification name="FailedToPlaceObjAtLoc">
-		指定した場所にオブジェクトを配置できませんでした。もう一度お試しください。
-	</notification>
-	<notification name="CantCreatePlantsOnLand">
-		この土地に木を植えることはできません。
-	</notification>
-	<notification name="CantRestoreObjectNoWorldPos">
-		オブジェクトをリストアできません。ワールドの位置が見つかりません。
-	</notification>
-	<notification name="CantRezObjectInvalidMeshData">
-		メッシュデータが無効なため、オブジェクトを Rez することができません。
-	</notification>
-	<notification name="CantRezObjectTooManyScripts">
-		このリージョンに既に多くのスクリプトが存在するため、オブジェクトを Rez することができません。
-	</notification>
-	<notification name="CantCreateObjectNoAccess">
-		現在のアクセス権限では、そこにオブジェクトを作成できません。
-	</notification>
-	<notification name="CantCreateObject">
-		現在あなたにはオブジェクト作成する許可がありません。
-	</notification>
-	<notification name="InvalidObjectParams">
-		無効なオブジェクトパラメーター
-	</notification>
-	<notification name="CantDuplicateObjectNoAcess">
-		現在のアクセス権限では、ここにオブジェクトのコピーを作成できません。
-	</notification>
-	<notification name="CantChangeShape">
-		あなたにはこのシェイプを変更する許可がありません。
-	</notification>
-	<notification name="NoAccessToClaimObjects">
-		現在のアクセス権限では、ここにオブジェクトを取得できません。
-	</notification>
-	<notification name="DeedFailedNoPermToDeedForGroup">
-		あなたのグループにオブジェクトを譲渡する権限がないため、譲渡に失敗しました。
-	</notification>
-	<notification name="NoPrivsToBuyObject">
-		現在のアクセス権限では、ここでオブジェクトを購入できません。
-	</notification>
-	<notification name="CantAttachObjectAvatarSittingOnIt">
-		アバターがオブジェクトに存在するため、オブジェクトを着用できません。
-	</notification>
-	<notification name="WhyAreYouTryingToWearShrubbery">
-		木や草をアタッチメントとして着用できません。
-	</notification>
-	<notification name="CantAttachGroupOwnedObjs">
-		グループが所有しているオブジェクトは着用できません。
-	</notification>
-	<notification name="CantAttachObjectsNotOwned">
-		所有していないオブジェクトは着用できません。
-	</notification>
-	<notification name="CantAttachNavmeshObjects">
-		ナビメッシュに貢献しているオブジェクトは着用できません。
-	</notification>
-	<notification name="CantAttachObjectNoMovePermissions">
-		あなたにはオブジェクトを移動する権限がないため、そのオブジェクト添付できません。
-	</notification>
-	<notification name="CantAttachNotEnoughScriptResources">
-		オブジェクトの着用に使用できるスクリプトリソースが足りません。
-	</notification>
-	<notification name="CantDropItemTrialUser">
-		オブジェクトをここにドロップできません。フリートライアル領域をお試しください。
-	</notification>
-	<notification name="CantDropMeshAttachment">
-		メッシュアタッチメントをドロップすることはできません。インベントリから切り離して、ワールドで Rez してください。
-	</notification>
-	<notification name="CantDropAttachmentNoPermission">
-		アタッチメントのドロップに失敗しました。そこへドロップする権限がありません。
-	</notification>
-	<notification name="CantDropAttachmentInsufficientLandResources">
-		アタッチメントのドロップに失敗しました。利用できる土地リソースの数が足りません。
-	</notification>
-	<notification name="CantDropAttachmentInsufficientResources">
-		利用できるリソースが足りないため、アタッチメントのドロップに失敗しました。
-	</notification>
-	<notification name="CantDropObjectFullParcel">
-		ここにオブジェクトをドロップできません。区画が埋まっています。
-	</notification>
-	<notification name="CantTouchObjectBannedFromParcel">
-		土地区画に入場することを禁止されているため、このオブジェクトを触ったり、つかむことができません。
-	</notification>
-	<notification name="PlzNarrowDeleteParams">
-		削除パラメーターを絞ってください。
-	</notification>
-	<notification name="UnableToUploadAsset">
-		資産をアップロードできません。
-	</notification>
-	<notification name="CantTeleportCouldNotFindUser">
-		ホームをテレポートするユーザーが見つかりませんでした。
-	</notification>
-	<notification name="GodlikeRequestFailed">
-		過剰なリクエストが失敗しました
-	</notification>
-	<notification name="GenericRequestFailed">
-		一般的なリクエストに失敗しました
-	</notification>
-	<notification name="CantUploadPostcard">
-		ポストカードをアップロードできません。後でもう一度お試しください。
-	</notification>
-	<notification name="CantFetchInventoryForGroupNotice">
-		グループ通知のインベントリの詳細を取得できません。
-	</notification>
-	<notification name="CantSendGroupNoticeNotPermitted">
-		グループ通知の送信が許可されないため、送信できません。
-	</notification>
-	<notification name="CantSendGroupNoticeCantConstructInventory">
-		グループ通知を送信できません。持ち物を作成することもできません。
-	</notification>
-	<notification name="CantParceInventoryInNotice">
-		通知内の持ち物を検出できません。
-	</notification>
-	<notification name="TerrainUploadFailed">
-		地形のアップロードに失敗しました。
-	</notification>
-	<notification name="TerrainFileWritten">
-		地形ファイルが書き込まれました。
-	</notification>
-	<notification name="TerrainFileWrittenStartingDownload">
-		地形ファイルを書き出し、ダウンロードを開始しています...
-	</notification>
-	<notification name="TerrainBaked">
-		地形がベークされました。
-	</notification>
-	<notification name="TenObjectsDisabledPlzRefresh">
-		選択された最初の 10 個のオブジェクトのみが無効にされました。必要に応じて、リフレッシュして選択内容を追加してください。
-	</notification>
-	<notification name="UpdateViewerBuyParcel">
-		この区画を購入するには、ビューワをアップデートする必要があります。
-	</notification>
-	<notification name="CantBuyParcelNotForSale">
-		購入することができません。この区画は販売対象ではありません。
-	</notification>
-	<notification name="CantBuySalePriceOrLandAreaChanged">
-		販売価格または土地の面積が変わったため、購入できません。
-	</notification>
-	<notification name="CantBuyParcelNotAuthorized">
-		あなたはこの区画の委任された買い手ではありません。
-	</notification>
-	<notification name="CantBuyParcelAwaitingPurchaseAuth">
-		すでに購入の認証を待機しているため、この区画を購入できません。
-	</notification>
-	<notification name="CantBuildOverflowParcel">
-		区画をオーバーフローするため、ここでオブジェクトを構築することはできません。
-	</notification>
-	<notification name="SelectedMultipleOwnedLand">
-		所有者の違う土地を選びました。選択する面積を小さくして、もう一度試してください。
-	</notification>
-	<notification name="CantJoinTooFewLeasedParcels">
-		選択範囲のリース区画の数が少ないため、参加できません。
-	</notification>
-	<notification name="CantDivideLandMultipleParcelsSelected">
-		土地を分割できません。\n区画が複数選択されています。\nもっと小さい土地を選択してみてください。
-	</notification>
-	<notification name="CantDivideLandCantFindParcel">
-		土地を分解できません。\n区画が見つかりません。\n「Help」&gt;「Reprt Bug...」でレポートを行ってください。
-	</notification>
-	<notification name="CantDivideLandWholeParcelSelected">
-		土地を分割できません。区画全体を選択します。\n小さい土地を選択してみてください。
-	</notification>
-	<notification name="LandHasBeenDivided">
-		土地が分割されています。
-	</notification>
-	<notification name="PassPurchased">
-		入場許可を購入しました。
-	</notification>
-	<notification name="RegionDisallowsClassifieds">
-		リージョンでは、クラシファイド広告を許可しません。
-	</notification>
-	<notification name="LandPassExpireSoon">
-		この土地への入場許可はまもなく期限が切れます。
-	</notification>
-	<notification name="CantSitNoSuitableSurface">
-		配置に適した表面がありません。別の場所を試してみたください。
-	</notification>
-	<notification name="CantSitNoRoom">
-		ここには座る余地がありません。他の場所を試してください。
-	</notification>
-	<notification name="ClaimObjectFailedNoPermission">
-		権限がないため、オブジェクトを取得できませんでした。
-	</notification>
-	<notification name="ClaimObjectFailedNoMoney">
-		リンデンドルが足りないため、オブジェクトの取得に失敗しました。
-	</notification>
-	<notification name="CantDeedGroupLand">
-		グループ所有の土地は、譲渡できません。
-	</notification>
-	<notification name="BuyObjectFailedNoMoney">
-		リンデンドルが足りないため、オブジェクトの購入に失敗しました。
-	</notification>
-	<notification name="BuyInventoryFailedNoMoney">
-		リンデンドルが不足しているため、インベントリを購入できませんでした。
-	</notification>
-	<notification name="BuyPassFailedNoMoney">
-		リンデンドルが足りないため、この土地への入場許可を購入できません。
-	</notification>
-	<notification name="CantBuyPassTryAgain">
-		今すぐには入場許可を購入できません。後でもう一度お試しください。
-	</notification>
-	<notification name="CantCreateObjectParcelFull">
-		区画が埋まっているため、オブジェクトを\n作成することができません。
-	</notification>
-	<notification name="FailedPlacingObject">
-		指定した場所にオブジェクトを配置できませんでした。もう一度お試しください。
-	</notification>
-	<notification name="CantCreateLandmarkForEvent">
-		イベントのためのランドマークを作成することができません。
-	</notification>
-	<notification name="GodBeatsFreeze">
-		強力な力でフリーズを解除します。
-	</notification>
-	<notification name="SpecialPowersRequestFailedLogged">
-		特殊な権限のリクエストに失敗しました。このリクエストはログに記録されています。
-	</notification>
-	<notification name="ExpireExplanation">
-		システムは、現在あなたのリクエストを処理できません。リクエストがタイムアウトになりました。
-	</notification>
-	<notification name="DieExplanation">
-		システムは、あなたのリクエストを処理できません。
-	</notification>
-	<notification name="AddPrimitiveFailure">
-		プリミティブ広告を出すには、資金が足りません。
-	</notification>
-	<notification name="RezObjectFailure">
-		資金が足りないため、オブジェクトを作成できません。
-	</notification>
-	<notification name="ResetHomePositionNotLegal">
-		ホームが不正なため、ホームの位置をリセットします。
-	</notification>
-	<notification name="CantInviteRegionFull">
-		リージョンが埋まっているため、現在の場所に誰かを招待することはできません。後でもう一度お試しください。
-	</notification>
-	<notification name="CantSetHomeAtRegion">
-		このリージョンでは、ここにホームの位置を設定できません。
-	</notification>
-	<notification name="ListValidHomeLocations">
-		ホームの場所を設定できるのは、自分の土地か、またはメインランドのインフォハブでのみです。
-	</notification>
-	<notification name="SetHomePosition">
-		家の配置の設定。
-	</notification>
-	<notification name="CantDerezInventoryError">
-		インベントリエラーのため、オブジェクトの Rez 解除ができません。
-	</notification>
-	<notification name="CantCreateRequestedInv">
-		リクエストされたインベントリを作成できません。
-	</notification>
-	<notification name="CantCreateRequestedInvFolder">
-		リクエストされた持ち物フォルダーを作成できません。
-	</notification>
-	<notification name="CantCreateInventory">
-		そのインベントリを作成できません。
-	</notification>
-	<notification name="CantCreateLandmark">
-		ランドマークを作成できません。
-	</notification>
-	<notification name="CantCreateOutfit">
-		アウトフィットをすぐには作成できません。しばらくしてから再度お試しください。
-	</notification>
-	<notification name="InventoryNotForSale">
-		インベントリは販売対象ではありません。
-	</notification>
-	<notification name="CantFindInvItem">
-		持ち物アイテムを見つけることができません。
-	</notification>
-	<notification name="CantFindObject">
-		オブジェクトが見つかりません。
-	</notification>
-	<notification name="CantTransfterMoneyRegionDisabled">
-		オブジェクトへの送金は、このリージョンでは現在無効にされています。
-	</notification>
-	<notification name="CantPayNoAgent">
-		支払いの相手を把握できませんでした。
-	</notification>
-	<notification name="CantDonateToPublicObjects">
-		パブリックオブジェクトにリンデンドルを与えることはできません。
-	</notification>
-	<notification name="InventoryCreationInWorldObjectFailed">
-		インワールドオブジェクトでのインベントリ作成に失敗しました。
-	</notification>
-	<notification name="UserBalanceOrLandUsageError">
-		内部エラーが発生したため、ビューワを正しく更新できませんでした。ビューワに表示されるリンデンドルの残高または区画の所有は、サーバー上の実際の残高を反映していない可能性があります。
-	</notification>
-	<notification name="LargePrimAgentIntersect">
-		他のプレイヤーの関心を引く大きなプリムを作成できません。他のプレイヤーが移動したときに再試行してください。
-	</notification>
-	<notification name="PreferenceChatClearLog">
-		これにより、過去の会話のログ、およびそのファイルのすべてのバックアップが削除されます。
-		<usetemplate ignoretext="以前の会話のログを削除する前に確認してください。" name="okcancelignore" notext="取り消し" yestext="OK"/>
-	</notification>
-	<notification name="PreferenceChatDeleteTranscripts">
-		これにより、以前のすべての会話のテキストが削除されます。過去の会話のリストには影響しません。.txt および txt.backup の拡張子が付いたすべてのファイルが [FOLDER] フォルダーから削除されます。
-		<usetemplate ignoretext="テキストを削除するまえに確認してください。" name="okcancelignore" notext="取り消し" yestext="OK"/>
-	</notification>
-	<notification name="PreferenceChatPathChanged">
-		ファイルを移動できません。以前のパスがリストアされました。
-		<usetemplate ignoretext="ファイルを移動できません。以前のパスがリストアされました。" name="okignore" yestext="OK"/>
-	</notification>
 </notifications>
diff --git a/indra/newview/skins/default/xui/ja/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/ja/panel_avatar_list_item.xml
index 3ef8eba19f1..70d37c3badd 100644
--- a/indra/newview/skins/default/xui/ja/panel_avatar_list_item.xml
+++ b/indra/newview/skins/default/xui/ja/panel_avatar_list_item.xml
@@ -27,6 +27,5 @@
 	<icon name="permission_edit_mine_icon" tool_tip="このフレンドは、あなたのオブジェクトを編集・削除・取得することができます"/>
 	<icon name="permission_map_icon" tool_tip="このフレンドは地図上であなたの位置を表示できます"/>
 	<icon name="permission_online_icon" tool_tip="このフレンドはあなたがオンラインにいることを確認できます"/>
-	<button name="info_btn" tool_tip="詳細"/>
 	<button name="profile_btn" tool_tip="プロフィールの表示"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/ja/panel_block_list_sidetray.xml
index 9263e5f3476..5d6a6065aeb 100644
--- a/indra/newview/skins/default/xui/ja/panel_block_list_sidetray.xml
+++ b/indra/newview/skins/default/xui/ja/panel_block_list_sidetray.xml
@@ -1,11 +1,10 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="block_list_panel">
-	<panel label="bottom_panel" name="blocked_buttons_panel">
-		<filter_editor label="フィルター" name="blocked_filter_input"/>
-		<menu_button name="blocked_gear_btn" tool_tip="選択した住人・オブジェクトに対するアクション"/>
-		<menu_button name="view_btn" tool_tip="オプションを並べ替える"/>
-		<menu_button name="plus_btn" tool_tip="ブロックする住人・オブジェクトを選択"/>
-		<button name="unblock_btn" tool_tip="ブロックリストから住人・オブジェクトを削除"/>
-	</panel>
-	<block_list name="blocked" tool_tip="現在ブロックされている住人一覧"/>
+	<text name="title_text">
+		ブロックリスト
+	</text>
+	<scroll_list name="blocked" tool_tip="現在ブロックされている住人一覧"/>
+	<button label="アバターをブロック" label_selected="住人をブロック..." name="Block resident..." tool_tip="ブロックしたい住人を選んでください"/>
+	<button label="名前でオブジェクトをブロック..." label_selected="名前でオブジェクトをブロック..." name="Block object by name..." tool_tip="名前でブロックしたいオブジェクトを選んでください"/>
+	<button label="ブロック解除" label_selected="ブロック解除" name="Unblock" tool_tip="ブロックリストから住人・オブジェクトを削除"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_conversation_list_item.xml b/indra/newview/skins/default/xui/ja/panel_conversation_list_item.xml
deleted file mode 100644
index 09ffb92d368..00000000000
--- a/indra/newview/skins/default/xui/ja/panel_conversation_list_item.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="conversation_list_item">
-	<layout_stack name="conversation_item_stack">
-		<layout_panel name="conversation_title_panel">
-			<text name="conversation_title" value="(ローディング)"/>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_conversation_log_list_item.xml b/indra/newview/skins/default/xui/ja/panel_conversation_log_list_item.xml
deleted file mode 100644
index e05a67e31da..00000000000
--- a/indra/newview/skins/default/xui/ja/panel_conversation_log_list_item.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="conversation_log_list_item">
-	<icon name="voice_session_icon" tool_tip="ボイスチャット"/>
-	<icon name="unread_ims_icon" tool_tip="ログアウト時に表示されるメッセージ"/>
-	<button name="delete_btn" tool_tip="このエントリーを削除"/>
-</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_group_list_item.xml b/indra/newview/skins/default/xui/ja/panel_group_list_item.xml
index 77d3d8f3916..4b548049c8b 100644
--- a/indra/newview/skins/default/xui/ja/panel_group_list_item.xml
+++ b/indra/newview/skins/default/xui/ja/panel_group_list_item.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="group_list_item">
 	<text name="group_name" value="不明"/>
-	<button name="info_btn" tool_tip="詳細"/>
 	<button name="profile_btn" tool_tip="プロフィールの表示"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_people.xml b/indra/newview/skins/default/xui/ja/panel_people.xml
index 03ce87537a5..88c31451b51 100644
--- a/indra/newview/skins/default/xui/ja/panel_people.xml
+++ b/indra/newview/skins/default/xui/ja/panel_people.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <!-- Side tray panel -->
 <panel label="人" name="people_panel">
 	<string name="no_recent_people" value="最近交流した人はいません。 一緒に何かする仲間をお探しですか? [secondlife:///app/search/people 検索] か [secondlife:///app/worldmap 世界地図] をお試しください。"/>
@@ -14,53 +14,81 @@
 	<string name="no_filtered_friends_msg">
 		お探しのものは見つかりましたか? [secondlife:///app/search/people/[SEARCH_TERM] 検索] をお試しください。
 	</string>
+	<string name="people_filter_label" value="人をフィルター"/>
+	<string name="groups_filter_label" value="グループをフィルター"/>
 	<string name="no_filtered_groups_msg" value="お探しのものは見つかりましたか? [secondlife:///app/search/groups/[SEARCH_TERM] 検索] をお試しください。"/>
 	<string name="no_groups_msg" value="グループをお探しですか? [secondlife:///app/search/groups 検索] をお試しください。"/>
 	<string name="MiniMapToolTipMsg" value="[地域](ダブルクリックで地図を開く。Shift‐ドラッグで水平・垂直移動)"/>
 	<string name="AltMiniMapToolTipMsg" value="[地域](ダブルクリックでテレポート。Shift‐ドラッグで水平・垂直移動)"/>
+	<filter_editor label="フィルター" name="filter_input"/>
 	<tab_container name="tabs">
 		<panel label="近く" name="nearby_panel">
-			<panel label="bottom_panel" name="nearby_buttons_panel">
-				<filter_editor label="人をフィルター" name="nearby_filter_input"/>
-				<button name="gear_btn" tool_tip="選択した人に対するアクション"/>
-				<menu_button name="nearby_view_btn" tool_tip="表示 / 並べ替えのオプション"/>
-				<button name="add_friend_btn" tool_tip="フレンド登録を申し出ます"/>
-				<dnd_button name="nearby_del_btn" tool_tip="フレンドとして選択されている人を削除"/>
+			<panel label="bottom_panel" name="bottom_panel">
+				<menu_button name="nearby_view_sort_btn" tool_tip="オプション"/>
+				<button name="add_friend_btn" tool_tip="選択した住人をフレンドリストに登録"/>
 			</panel>
 		</panel>
-		<panel label="フレンド" name="friends_panel">
-			<panel label="bottom_panel" name="friends_buttons_panel">
-				<filter_editor label="人をフィルター" name="friends_filter_input"/>
-				<button name="gear_btn" tool_tip="選択した人に対するアクション"/>
-				<menu_button name="friends_view_btn" tool_tip="表示 / 並べ替えのオプション"/>
-				<button name="friends_add_btn" tool_tip="フレンド登録を申し出ます"/>
-				<dnd_button name="friends_del_btn" tool_tip="フレンドとして選択されている人を削除"/>
-			</panel>
+		<panel label="マイ フレンド" name="friends_panel">
 			<accordion name="friends_accordion">
 				<accordion_tab name="tab_online" title="オンライン"/>
 				<accordion_tab name="tab_all" title="全員"/>
 			</accordion>
+			<panel label="bottom_panel" name="bottom_panel">
+				<layout_stack name="bottom_panel">
+					<layout_panel name="options_gear_btn_panel">
+						<menu_button name="friends_viewsort_btn" tool_tip="オプションを表示します"/>
+					</layout_panel>
+					<layout_panel name="add_btn_panel">
+						<button name="add_btn" tool_tip="フレンド登録を申し出る"/>
+					</layout_panel>
+					<layout_panel name="trash_btn_panel">
+						<dnd_button name="del_btn" tool_tip="選択した人をフレンドリストから削除"/>
+					</layout_panel>
+				</layout_stack>
+			</panel>
 		</panel>
-		<panel label="グループ" name="groups_panel">
-			<panel label="bottom_panel" name="groups_buttons_panel">
-				<filter_editor label="フィルターグループ" name="groups_filter_input"/>
-				<menu_button name="groups_gear_btn" tool_tip="選択したグループに対するアクション"/>
-				<menu_button name="groups_view_btn" tool_tip="表示 / 並べ替えのオプション"/>
-				<menu_button name="plus_btn" tool_tip="グループに参加 / 新規グループを作成します"/>
-				<dnd_button name="minus_btn" tool_tip="選択したグループから脱退"/>
+		<panel label="マイ グループ" name="groups_panel">
+			<panel label="bottom_panel" name="bottom_panel">
+				<menu_button name="groups_viewsort_btn" tool_tip="オプション"/>
+				<button name="plus_btn" tool_tip="グループに参加 / 新規グループを作成します"/>
+				<button name="activate_btn" tool_tip="選択したグループをアクティブにします"/>
 			</panel>
 		</panel>
 		<panel label="最新" name="recent_panel">
-			<panel label="bottom_panel" name="recent_buttons_panel">
-				<filter_editor label="人をフィルター" name="recent_filter_input"/>
-				<button name="gear_btn" tool_tip="選択した人に対するアクション"/>
-				<menu_button name="recent_view_btn" tool_tip="表示 / 並べ替えのオプション"/>
-				<button name="add_friend_btn" tool_tip="フレンド登録を申し出ます"/>
-				<dnd_button name="recent_del_btn" tool_tip="フレンドとして選択されている人を削除"/>
+			<panel label="bottom_panel" name="bottom_panel">
+				<menu_button name="recent_viewsort_btn" tool_tip="オプション"/>
+				<button name="add_friend_btn" tool_tip="選択した住人をフレンドリストに登録"/>
 			</panel>
 		</panel>
-		<panel label="停止" name="blocked_panel">
-			<panel label="ブロックされた住人とオブジェクト" name="panel_block_list_sidetray"/>
-		</panel>
 	</tab_container>
+	<panel name="button_bar">
+		<layout_stack name="bottom_bar_ls">
+			<layout_panel name="view_profile_btn_lp">
+				<button label="プロフィール" name="view_profile_btn" tool_tip="写真、グループ、その他住人情報を表示"/>
+			</layout_panel>
+			<layout_panel name="im_btn_lp">
+				<button label="IM" name="im_btn" tool_tip="インスタントメッセージを開きます"/>
+			</layout_panel>
+			<layout_panel name="call_btn_lp">
+				<button label="コール" name="call_btn" tool_tip="この住人にコールする"/>
+			</layout_panel>
+			<layout_panel name="share_btn_lp">
+				<button label="共有" name="share_btn" tool_tip="インベントリのアイテムを共有する"/>
+			</layout_panel>
+			<layout_panel name="teleport_btn_lp">
+				<button label="テレポート" name="teleport_btn" tool_tip="テレポートを送ります"/>
+			</layout_panel>
+		</layout_stack>
+		<layout_stack name="bottom_bar_ls1">
+			<layout_panel name="group_info_btn_lp">
+				<button label="グループプロフィール" name="group_info_btn" tool_tip="グループプロフィールを表示します"/>
+			</layout_panel>
+			<layout_panel name="chat_btn_lp">
+				<button label="グループチャット" name="chat_btn" tool_tip="チャットを開始します"/>
+			</layout_panel>
+			<layout_panel name="group_call_btn_lp">
+				<button label="グループコール" name="group_call_btn" tool_tip="このグループにコールする"/>
+			</layout_panel>
+		</layout_stack>
+	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml b/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml
index ae5391c7bd8..b6e344ca480 100644
--- a/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml
@@ -1,86 +1,34 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="チャット" name="chat">
-	<panel>
-		<check_box initial_value="true" label="チャット中にタイピング動作のアニメーションを再生" name="play_typing_animation"/>
-		<check_box label="オフライン時に受け取った IM をメールで受信" name="send_im_to_email"/>
-		<check_box label="フレンドとグループ以外からはコールと IM を受信しない" name="voice_call_friends_only_check"/>
-		<text name="font_size">
-			文字の大きさ:
-		</text>
-		<combo_box name="chat_font_size">
-			<item label="小規模" name="Small" value="0"/>
-			<item label="中" name="Medium" value="1"/>
-			<item label="大規模" name="Large" value="2"/>
-		</combo_box>
-		<check_box label="吹き出しチャット" name="bubble_text_chat"/>
-	</panel>
-	<panel>
-		<text name="notifications">
-			通知
-		</text>
-		<text name="friend_ims">
-			フレンド IM:
-		</text>
-		<combo_box name="FriendIMOptions">
-			<item label="会話ウィンドウを開く" name="OpenConversationsWindow" value="openconversations"/>
-			<item label="メッセージのポップアップ" name="PopUpMessage" value="toast"/>
-			<item label="Flash ツールバーボタン" name="FlashToolbarButton" value="flash"/>
-			<item label="フィルターなし" name="None" value="none"/>
-		</combo_box>
-		<text name="non_friend_ims">
-			非フレンド IM:
-		</text>
-		<combo_box name="NonFriendIMOptions">
-			<item label="会話ウィンドウを開く" name="OpenConversationsWindow" value="openconversations"/>
-			<item label="メッセージのポップアップ" name="PopUpMessage" value="toast"/>
-			<item label="Flash ツールバーボタン" name="FlashToolbarButton" value="flash"/>
-			<item label="フィルターなし" name="None" value="none"/>
-		</combo_box>
-		<text name="conference_ims">
-			コンファレンス IM:
-		</text>
-		<combo_box name="ConferenceIMOptions">
-			<item label="会話ウィンドウを開く" name="OpenConversationsWindow" value="openconversations"/>
-			<item label="メッセージのポップアップ" name="PopUpMessage" value="toast"/>
-			<item label="Flashツールバーボタン" name="FlashToolbarButton" value="flash"/>
-			<item label="フィルターなし" name="None" value="none"/>
-		</combo_box>
-		<text name="group_chat">
-			グループチャット:
-		</text>
-		<combo_box name="GroupChatOptions">
-			<item label="会話ウィンドウを開く" name="OpenConversationsWindow" value="openconversations"/>
-			<item label="メッセージのポップアップ" name="PopUpMessage" value="toast"/>
-			<item label="Flash ツールバーボタン" name="FlashToolbarButton" value="flash"/>
-			<item label="なし" name="None" value="none"/>
-		</combo_box>
-		<text name="nearby_chat">
-			近くのチャット:
-		</text>
-		<combo_box name="NearbyChatOptions">
-			<item label="会話ウィンドウを開く" name="OpenConversationsWindow" value="openconversations"/>
-			<item label="メッセージのポップアップ" name="PopUpMessage" value="toast"/>
-			<item label="Flash ツールバーボタン" name="FlashToolBarButton" value="flash"/>
-			<item label="フィルターなし" name="None" value="none"/>
-		</combo_box>
-		<text name="notifications_alert">
-			すべての通知を一時的に受け付けないようにするには、「コミュニケート」&gt;「通知を受けない」を使用します。
-		</text>
-	</panel>
-	<panel>
-		<text name="play_sound">
-			音の再生:
-		</text>
-		<check_box label="新しい会話" name="new_conversation"/>
-		<check_box label="ボイスコールの着信" name="incoming_voice_call"/>
-		<check_box label="テレポートを渡す" name="teleport_offer"/>
-		<check_box label="アイテムのオファー" name="inventory_offer"/>
-	</panel>
-	<panel>
-		<button label="ログのクリア..." name="clear_log"/>
-		<button label="テキストの削除..." name="delete_transcripts"/>
-		<button label="参照..." label_selected="参照" name="log_path_button"/>
-	</panel>
+	<text name="font_size">
+		文字の大きさ:
+	</text>
+	<radio_group name="chat_font_size">
+		<radio_item label="小" name="radio" value="0"/>
+		<radio_item label="中" name="radio2" value="1"/>
+		<radio_item label="大" name="radio3" value="2"/>
+	</radio_group>
+	<check_box initial_value="true" label="チャット中にタイピング動作のアニメーションを再生" name="play_typing_animation"/>
+	<check_box label="オフライン時に受け取った IM をメールで受信" name="send_im_to_email"/>
+	<check_box label="IM とチャット履歴に文字だけ表示する" name="plain_text_chat_history"/>
+	<check_box label="吹き出しチャット" name="bubble_text_chat"/>
+	<text name="show_ims_in_label">
+		IM の表示方法:
+	</text>
+	<text name="requires_restart_label">
+		(再起動後に反映)
+	</text>
+	<radio_group name="chat_window" tool_tip="インスタントメッセージを別フローター、または1つのフローターに複数タブで表示します(要再起動)">
+		<radio_item label="別々のウィンドウ" name="radio" value="0"/>
+		<radio_item label="タブ" name="radio2" value="1"/>
+	</radio_group>
+	<text name="disable_toast_label">
+		受信チャットのポップアップを有効にする
+	</text>
+	<check_box label="グループチャット" name="EnableGroupChatPopups" tool_tip="これを選択すると、グループチャットメッセージを受信した際にポップアップが表示されます"/>
+	<check_box label="IM チャット" name="EnableIMChatPopups" tool_tip="これを選択すると、インスタントメッセージを受信した際にポップアップが表示されます"/>
+	<spinner label="近くのチャットメッセージが表示される長さ:" name="nearby_toasts_lifetime"/>
+	<spinner label="近くのチャットメッセージが消えるまでの長さ:" name="nearby_toasts_fadingtime"/>
 	<button label="他の言語..." name="ok_btn"/>
 	<button label="自動置換..." name="autoreplace_showgui"/>
 	<button label="スペルチェック中..." name="spellcheck_showgui"/>
diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_general.xml b/indra/newview/skins/default/xui/ja/panel_preferences_general.xml
index d70af7e099d..91e1514e496 100644
--- a/indra/newview/skins/default/xui/ja/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/ja/panel_preferences_general.xml
@@ -69,9 +69,9 @@
 		<combo_box.item label="一時退席設定なし" name="item4"/>
 	</combo_box>
 	<text name="text_box3">
-		「通知を受けない」応答:
+		取り込み中モード時の返事:
 	</text>
-	<text_editor name="do_not_disturb_response">
+	<text_editor name="busy_response">
 		log_in_to_change
 	</text_editor>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/sidepanel_task_info.xml b/indra/newview/skins/default/xui/ja/sidepanel_task_info.xml
index 4f65c8477bc..c61c73657fc 100644
--- a/indra/newview/skins/default/xui/ja/sidepanel_task_info.xml
+++ b/indra/newview/skins/default/xui/ja/sidepanel_task_info.xml
@@ -72,7 +72,6 @@
 			<combo_box.item label="オブジェクトを買う" name="Buyobject"/>
 			<combo_box.item label="オブジェクトに支払う" name="Payobject"/>
 			<combo_box.item label="開く" name="Open"/>
-			<combo_box.item label="ズーム" name="Zoom"/>
 		</combo_box>
 		<panel name="perms_inv">
 			<text name="perm_modify">
diff --git a/indra/newview/skins/default/xui/ja/strings.xml b/indra/newview/skins/default/xui/ja/strings.xml
index b27904c4d74..50697e55001 100644
--- a/indra/newview/skins/default/xui/ja/strings.xml
+++ b/indra/newview/skins/default/xui/ja/strings.xml
@@ -137,7 +137,7 @@
 		終了
 	</string>
 	<string name="create_account_url">
-		http://join.secondlife.com/?sourceid=[sourceid]
+		http://join.secondlife.com/index.php?lang=ja-JP&amp;sourceid=[sourceid]
 	</string>
 	<string name="LoginFailedViewerNotPermitted">
 		お使いの古いビューワでは Second Life にアクセスできません。以下のページから新しいビューワをダウンロードしてください:
@@ -622,8 +622,8 @@ support@secondlife.com にお問い合わせください。
 	<string name="AvatarAway">
 		一時退席中
 	</string>
-	<string name="AvatarDoNotDisturb">
-		通知を受けない
+	<string name="AvatarBusy">
+		取り込み中
 	</string>
 	<string name="AvatarMuted">
 		ブロック中
@@ -859,12 +859,6 @@ support@secondlife.com にお問い合わせください。
 	<string name="ST_NO_JOINT">
 		ROOT または JOINT が見つかりません
 	</string>
-	<string name="NearbyChatTitle">
-		近くのチャット
-	</string>
-	<string name="NearbyChatLabel">
-		(近くのチャット)
-	</string>
 	<string name="whisper">
 		のささやき:
 	</string>
@@ -928,15 +922,12 @@ support@secondlife.com にお問い合わせください。
 	<string name="ControlYourCamera">
 		カメラのコントロール
 	</string>
-	<string name="NotConnected">
-		接続されていません
-	</string>
-	<string name="AgentNameSubst">
-		(あなた)
-	</string>
 	<string name="TeleportYourAgent">
 		あなたをテレポート
 	</string>
+	<string name="NotConnected">
+		接続されていません
+	</string>
 	<string name="SIM_ACCESS_PG">
 		General
 	</string>
@@ -1018,6 +1009,18 @@ support@secondlife.com にお問い合わせください。
 	<string name="dictionary_files">
 		辞書
 	</string>
+	<string name="AvatarSetNotAway">
+		一時退席中解除
+	</string>
+	<string name="AvatarSetAway">
+		一時退席中
+	</string>
+	<string name="AvatarSetNotBusy">
+		取り込み中解除
+	</string>
+	<string name="AvatarSetBusy">
+		取り込み中
+	</string>
 	<string name="shape">
 		シェイプ
 	</string>
@@ -1986,8 +1989,8 @@ support@secondlife.com にお問い合わせください。
 	<string name="PanelContentsNewScript">
 		新規スクリプト
 	</string>
-	<string name="DoNotDisturbModeResponseDefault">
-		この住民が「通知を受けない」をオンにすると、あなたのメッセージが後で表示されるようになります。
+	<string name="BusyModeResponseDefault">
+		メッセージを送った住人は、誰にも邪魔をされたくないため現在「取り込み中」モードです。  あなたのメッセージは、あとで確認できるように IM パネルに表示されます。
 	</string>
 	<string name="MuteByName">
 		(名称別)
@@ -2100,6 +2103,9 @@ support@secondlife.com にお問い合わせください。
 	<string name="GroupMoneyDate">
 		[year,datetime,utc]年[mth,datetime,utc]月[day,datetime,utc]日[weekday,datetime,utc]
 	</string>
+	<string name="ViewerObjectContents">
+		内容
+	</string>
 	<string name="AcquiredItems">
 		取得アイテム
 	</string>
@@ -3871,7 +3877,7 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
 		General リージョン
 	</string>
 	<string name="LocationCtrlSeeAVsTooltip">
-		この区画内のアバターは、この区画の外にいるアバターからは見ることも聞くこともできません。
+		この区画外にアバターを見えるようにして、チャットも許可
 	</string>
 	<string name="LocationCtrlPathfindingDirtyTooltip">
 		地域(リージョン)が再構築されるまで、移動するオブジェクトは正しく動作しない可能性があります。
@@ -3948,12 +3954,6 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
 	<string name="IM_unblock_only_groups_friends">
 		このメッセージを表示するには、「環境設定」の「プライバシー」で「フレンドとグループ以外からはコールと IM を受信しない」チェックボックスをオフにします。
 	</string>
-	<string name="OnlineStatus">
-		オンライン
-	</string>
-	<string name="OfflineStatus">
-		オフライン
-	</string>
 	<string name="answered_call">
 		相手がコールを受けました
 	</string>
@@ -3963,9 +3963,6 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
 	<string name="you_joined_call">
 		ボイスコールに参加しました
 	</string>
-	<string name="you_auto_rejected_call-im">
-		「通知を受けない」がオンのときに、自動的にボイスコールを拒否しました。
-	</string>
 	<string name="name_started_call">
 		[NAME] はボイスコールを開始します
 	</string>
@@ -3982,7 +3979,7 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
 		接続中...
 	</string>
 	<string name="conference-title">
-		複数人チャット
+		アドホックコンファレンス
 	</string>
 	<string name="conference-title-incoming">
 		[AGENT_NAME] とコンファレンスする
@@ -4862,9 +4859,6 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
 	<string name="Command_Chat_Label">
 		チャット
 	</string>
-	<string name="Command_Conversations_Label">
-		会話
-	</string>
 	<string name="Command_Compass_Label">
 		コンパス
 	</string>
@@ -4940,9 +4934,6 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
 	<string name="Command_Chat_Tooltip">
 		近くの人と文字チャットする
 	</string>
-	<string name="Command_Conversations_Tooltip">
-		全員との会話
-	</string>
 	<string name="Command_Compass_Tooltip">
 		コンパス
 	</string>
@@ -5072,13 +5063,4 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
 	<string name="UserDictionary">
 		[User]
 	</string>
-	<string name="logging_calls_disabled_log_empty">
-		会話はログに記録されていません。ログの記録を開始するには、「環境設定」&gt;「チャット」で「保存: ログのみ」または「保存: ログと会話のテキスト」を選択します。
-	</string>
-	<string name="logging_calls_disabled_log_not_empty">
-		これ以上の会話は記録されません。ログの記録を再開するには、「環境設定」&gt;「チャット」で「保存: ログのみ」または「保存: ログと会話のテキスト」を選択します。
-	</string>
-	<string name="logging_calls_enabled_log_empty">
-		ログイン時の会話はありません。誰かにご連絡した後、または誰かがあなたに連絡した後、ログエントリがここに表示されます。
-	</string>
 </strings>
diff --git a/indra/newview/skins/default/xui/pt/floater_conversation_log.xml b/indra/newview/skins/default/xui/pt/floater_conversation_log.xml
deleted file mode 100644
index ae7dd3c4411..00000000000
--- a/indra/newview/skins/default/xui/pt/floater_conversation_log.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_conversation_log" title="REGISTRO DE CONVERSA">
-	<panel name="buttons_panel">
-		<filter_editor label="Filtrar pessoas" name="people_filter_input"/>
-		<menu_button name="conversation_view_btn" tool_tip="Opções de exibição/ordenação"/>
-		<menu_button name="conversations_gear_btn" tool_tip="Ações em uma pessoa ou um grupo selecionado"/>
-	</panel>
-</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_conversation_preview.xml b/indra/newview/skins/default/xui/pt/floater_conversation_preview.xml
deleted file mode 100644
index 97a2e8327c0..00000000000
--- a/indra/newview/skins/default/xui/pt/floater_conversation_preview.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="preview_conversation" title="CONVERSA:">
-	<floater.string name="Title">
-		CONVERSA: [NAME]
-	</floater.string>
-	<text name="page_label" value="Página"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_im_container.xml b/indra/newview/skins/default/xui/pt/floater_im_container.xml
index a1cea72b1e0..0fbb826a964 100644
--- a/indra/newview/skins/default/xui/pt/floater_im_container.xml
+++ b/indra/newview/skins/default/xui/pt/floater_im_container.xml
@@ -1,29 +1,2 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<multi_floater name="floater_im_box" title="CONVERSAS">
-	<string name="collapse_icon" value="Conv_toolbar_collapse"/>
-	<string name="expand_icon" value="Conv_toolbar_expand"/>
-	<layout_stack name="conversations_stack">
-		<layout_panel name="conversations_layout_panel">
-			<layout_stack name="conversations_pane_buttons_stack">
-				<layout_panel name="conversations_pane_buttons_expanded">
-					<menu_button name="sort_btn" tool_tip="Opções de exibição/ordenação"/>
-					<button name="add_btn" tool_tip="Iniciar uma nova conversa"/>
-					<button name="speak_btn" tool_tip="Fale com pessoas usando seu microfone"/>
-				</layout_panel>
-				<layout_panel name="conversations_pane_buttons_collapsed">
-					<button name="expand_collapse_btn" tool_tip="Recolher/expandir esta lista"/>
-				</layout_panel>
-			</layout_stack>
-		</layout_panel>
-		<layout_panel name="messages_layout_panel">
-			<panel_container name="im_box_tab_container">
-				<panel name="stub_panel">
-					<button name="stub_collapse_btn" tool_tip="Recolher este painel"/>
-					<text name="stub_textbox">
-						Esta conversa está em uma janela separada.   [secondlife:/// Trazer de volta.]
-					</text>
-				</panel>
-			</panel_container>
-		</layout_panel>
-	</layout_stack>
-</multi_floater>
+<multi_floater name="floater_im_box" title="CONVERSAS"/>
diff --git a/indra/newview/skins/default/xui/pt/floater_im_session.xml b/indra/newview/skins/default/xui/pt/floater_im_session.xml
index 9f6a7a06ad0..5543ffa41da 100644
--- a/indra/newview/skins/default/xui/pt/floater_im_session.xml
+++ b/indra/newview/skins/default/xui/pt/floater_im_session.xml
@@ -1,59 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="panel_im">
-	<floater.string name="call_btn_start">
-		Conv_toolbar_open_call
-	</floater.string>
-	<floater.string name="call_btn_stop">
-		Conv_toolbar_hang_up
-	</floater.string>
-	<floater.string name="collapseline_icon" value="Conv_collapse_to_one_line"/>
-	<floater.string name="expandline_icon" value="Conv_expand_one_line"/>
-	<floater.string name="collapse_icon" value="Conv_toolbar_collapse"/>
-	<floater.string name="expand_icon" value="Conv_toolbar_expand"/>
-	<floater.string name="tear_off_icon" value="Conv_toolbar_arrow_ne"/>
-	<floater.string name="return_icon" value="Conv_toolbar_arrow_sw"/>
-	<floater.string name="participant_added" value="[NAME] foi convidado para a conversa."/>
-	<floater.string name="multiple_participants_added" value="[NAME] foram convidados para a conversa."/>
-	<floater.string name="tooltip_to_separate_window" value="Mover esta conversa para uma janela separada"/>
-	<floater.string name="tooltip_to_main_window" value="Mover esta conversa para a janela principal"/>
-	<floater.string name="start_call_button_tooltip" value="Abrir conexão por voz"/>
-	<floater.string name="end_call_button_tooltip" value="Encerrar conexão por voz"/>
-	<floater.string name="expcol_button_not_tearoff_tooltip" value="Recolher este painel"/>
-	<floater.string name="expcol_button_tearoff_and_expanded_tooltip" value="Recolher lista de participantes"/>
-	<floater.string name="expcol_button_tearoff_and_collapsed_tooltip" value="Expandir a lista de participantes"/>
-	<view name="contents_view">
-		<layout_stack name="main_stack">
-			<layout_panel name="toolbar_panel">
-				<menu_button name="view_options_btn" tool_tip="Opções de exibição/ordenação"/>
-				<menu_button name="gear_btn" tool_tip="Ações nas pessoas selecionadas"/>
-				<button name="add_btn" tool_tip="Adicionar alguém a esta conversa"/>
-				<button name="voice_call_btn" tool_tip="Abrir conexão por voz"/>
-				<button name="close_btn" tool_tip="Encerrar esta conversa"/>
-				<button name="expand_collapse_btn" tool_tip="Recolher/expandir este painel"/>
-			</layout_panel>
-			<layout_panel name="body_panel">
-				<layout_stack name="im_panels">
-					<layout_panel name="right_part_holder">
-						<panel name="trnsAndChat_panel">
-							<layout_stack name="translate_and_chat_stack">
-								<layout_panel name="translate_chat_checkbox_lp">
-									<check_box label="Traduzir bate-papo" name="translate_chat_checkbox"/>
-								</layout_panel>
-							</layout_stack>
-						</panel>
-					</layout_panel>
-				</layout_stack>
-			</layout_panel>
-			<layout_panel name="chat_layout_panel">
-				<layout_stack name="input_panels">
-					<layout_panel name="input_editor_layout_panel">
-						<chat_editor label="Para" name="chat_editor"/>
-					</layout_panel>
-					<layout_panel name="input_button_layout_panel">
-						<button name="minz_btn" tool_tip="Mostrar/ocultar painel de mensagens"/>
-					</layout_panel>
-				</layout_stack>
-			</layout_panel>
-		</layout_stack>
-	</view>
+	<layout_stack name="im_panels">
+		<layout_panel>
+			<line_editor label="Para" name="chat_editor"/>
+		</layout_panel>
+	</layout_stack>
 </floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_incoming_call.xml b/indra/newview/skins/default/xui/pt/floater_incoming_call.xml
index 1e86f847ade..6344258fa0c 100644
--- a/indra/newview/skins/default/xui/pt/floater_incoming_call.xml
+++ b/indra/newview/skins/default/xui/pt/floater_incoming_call.xml
@@ -25,9 +25,9 @@
 		Sair do [CURRENT_CHAT] e entrar neste bate-papo de voz?
 	</floater.string>
 	<text name="question">
-		Se você atender, será desconectado de suas conversas de voz atuais.
+		Sair do [CURRENT_CHAT] e entrar neste bate-papo?
 	</text>
-	<button label="Atender" label_selected="Atender" name="Accept"/>
-	<button label="Ignorar" label_selected="Ignorar" name="Reject"/>
-	<button label="Iniciar MI em vez disso" name="Start IM"/>
+	<button label="Aceitar" label_selected="Aceitar" name="Accept"/>
+	<button label="Rejeitar" label_selected="Rejeitar" name="Reject"/>
+	<button label="Enviar MI" name="Start IM"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_pathfinding_console.xml b/indra/newview/skins/default/xui/pt/floater_pathfinding_console.xml
index d04cf2a173c..182f2513e0c 100644
--- a/indra/newview/skins/default/xui/pt/floater_pathfinding_console.xml
+++ b/indra/newview/skins/default/xui/pt/floater_pathfinding_console.xml
@@ -71,7 +71,7 @@
 			<text name="show_label">
 				Exibir:
 			</text>
-			<check_box label="Testar" name="show_world"/>
+			<check_box label="Mundo" name="show_world"/>
 			<check_box label="Apenas móveis" name="show_world_movables_only"/>
 			<check_box label="Navmesh" name="show_navmesh"/>
 			<text name="show_walkability_label">
diff --git a/indra/newview/skins/default/xui/pt/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/pt/floater_texture_ctrl.xml
index ba4ef0afdef..a75cf34a944 100644
--- a/indra/newview/skins/default/xui/pt/floater_texture_ctrl.xml
+++ b/indra/newview/skins/default/xui/pt/floater_texture_ctrl.xml
@@ -19,7 +19,7 @@
 	<button label="Padrão" label_selected="Padrão" name="Default"/>
 	<button label="Branco" label_selected="Branco" name="Blank"/>
 	<button label="Nenhum" label_selected="Nenhum" name="None"/>
-	<check_box initial_value="true" label="Inscrever-se agora" name="apply_immediate_check"/>
+	<check_box initial_value="true" label="Visualização em tempo real" name="apply_immediate_check"/>
 	<text name="preview_disabled" value="Visualização desativada"/>
 	<filter_editor label="Filtrar texturas" name="inventory search editor"/>
 	<check_box initial_value="false" label="Exibir pastas" name="show_folders_check"/>
diff --git a/indra/newview/skins/default/xui/pt/floater_voice_chat_volume.xml b/indra/newview/skins/default/xui/pt/floater_voice_chat_volume.xml
deleted file mode 100644
index de7aa2df12e..00000000000
--- a/indra/newview/skins/default/xui/pt/floater_voice_chat_volume.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_voice_volume" title="VOLUME DO BATE-PAPO DE VOZ">
-	<slider label="Bate-papo de voz" name="chat_voice_volume"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_voice_effect.xml b/indra/newview/skins/default/xui/pt/floater_voice_effect.xml
index 71d3c33ae57..b29ca3d699f 100644
--- a/indra/newview/skins/default/xui/pt/floater_voice_effect.xml
+++ b/indra/newview/skins/default/xui/pt/floater_voice_effect.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater label="Lugares" name="voice_effects" title="AMOSTRA DE DISTORÇÃO DE VOZ">
+<floater label="Lugares" name="voice_effects" title="EFEITOS DE VOZ">
 	<string name="no_voice_effect">
 		(Não distorcer voz)
 	</string>
diff --git a/indra/newview/skins/default/xui/pt/floater_voice_volume.xml b/indra/newview/skins/default/xui/pt/floater_voice_volume.xml
deleted file mode 100644
index dae47a99ae2..00000000000
--- a/indra/newview/skins/default/xui/pt/floater_voice_volume.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!--
-  Not can_close / no title to avoid window chrome
-  Single instance - only have one at a time, recycle it each spawn
--->
-<floater name="floater_voice_volume" title="VOLUME DE VOZ">
-	<slider name="volume_slider" tool_tip="Volume de voz" value="0.5"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/pt/menu_cof_gear.xml b/indra/newview/skins/default/xui/pt/menu_cof_gear.xml
index b59895573ee..8716992a5e0 100644
--- a/indra/newview/skins/default/xui/pt/menu_cof_gear.xml
+++ b/indra/newview/skins/default/xui/pt/menu_cof_gear.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="Gear COF">
+<menu name="Gear COF">
 	<menu label="Roupas novas" name="COF.Gear.New_Clothes"/>
-	<menu label="Novas partes do corpo" name="COF.Gear.New_Body_Parts"/>
-</toggleable_menu>
+	<menu label="Nova parte do corpo" name="COF.Geear.New_Body_Parts"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_conversation.xml b/indra/newview/skins/default/xui/pt/menu_conversation.xml
deleted file mode 100644
index 01316b887d4..00000000000
--- a/indra/newview/skins/default/xui/pt/menu_conversation.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_conversation_participant">
-	<menu_item_call label="Encerrar conversa" name="close_conversation"/>
-	<menu_item_call label="Abrir conversa de voz" name="open_voice_conversation"/>
-	<menu_item_call label="Desconectar de voz" name="disconnect_from_voice"/>
-	<menu_item_call label="Exibir perfil" name="view_profile"/>
-	<menu_item_call label="MI" name="im"/>
-	<menu_item_call label="Oferecer teletransporte" name="offer_teleport"/>
-	<menu_item_call label="Chamada de voz" name="voice_call"/>
-	<menu_item_call label="Histórico de bate-papo..." name="chat_history"/>
-	<menu_item_call label="Adicionar amigo" name="add_friend"/>
-	<menu_item_call label="Remover amigo" name="remove_friend"/>
-	<menu_item_call label="Remover amigos" name="remove_friends"/>
-	<menu_item_call label="Convidar para entrar no grupo..." name="invite_to_group"/>
-	<menu_item_call label="Mais zoom" name="zoom_in"/>
-	<menu_item_call label="Mapa" name="map"/>
-	<menu_item_call label="Compartilhar" name="share"/>
-	<menu_item_call label="Pagar" name="pay"/>
-	<menu_item_check label="Bloquear voz" name="block_unblock"/>
-	<menu_item_check label="Bloquear texto" name="MuteText"/>
-	<menu_item_call label="Perfil do grupo" name="group_profile"/>
-	<menu_item_call label="Ativar grupo" name="activate_group"/>
-	<menu_item_call label="Sair do grupo" name="leave_group"/>
-	<context_menu label="Opções do moderador &gt;" name="Moderator Options">
-		<menu_item_check label="Pode bater papo por escrito" name="AllowTextChat"/>
-		<menu_item_call label="Silenciar este participante" name="ModerateVoiceMuteSelected"/>
-		<menu_item_call label="Desfazer silenciar deste participante" name="ModerateVoiceUnMuteSelected"/>
-		<menu_item_call label="Silenciar todos" name="ModerateVoiceMute"/>
-		<menu_item_call label="Desfazer silenciar para todos" name="ModerateVoiceUnmute"/>
-	</context_menu>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_conversation_log_gear.xml b/indra/newview/skins/default/xui/pt/menu_conversation_log_gear.xml
deleted file mode 100644
index 616e6db46e9..00000000000
--- a/indra/newview/skins/default/xui/pt/menu_conversation_log_gear.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="Conversation Context Menu">
-	<menu_item_call label="MI..." name="IM"/>
-	<menu_item_call label="Chamada de voz..." name="Call"/>
-	<menu_item_call label="Abrir histórico de bate-papo..." name="Chat history"/>
-	<menu_item_call label="Exibir perfil" name="View Profile"/>
-	<menu_item_call label="Oferecer teletransporte" name="teleport"/>
-	<menu_item_call label="Adicionar amigo" name="add_friend"/>
-	<menu_item_call label="Remover amigo" name="remove_friend"/>
-	<menu_item_call label="Convidar para entrar no grupo..." name="Invite"/>
-	<menu_item_call label="Mapa" name="Map"/>
-	<menu_item_call label="Compartilhar" name="Share"/>
-	<menu_item_call label="Pagar" name="Pay"/>
-	<menu_item_check label="Bloquear/desbloquear" name="Block/Unblock"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_conversation_log_view.xml b/indra/newview/skins/default/xui/pt/menu_conversation_log_view.xml
deleted file mode 100644
index cab81175a08..00000000000
--- a/indra/newview/skins/default/xui/pt/menu_conversation_log_view.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_conversation_view">
-	<menu_item_check label="Ordenar por nome" name="sort_by_name"/>
-	<menu_item_check label="Ordenar por data" name="sort_by_date"/>
-	<menu_item_check label="Ordenar com amigos acima" name="sort_by_friends"/>
-	<menu_item_call label="Exibir histórico de Bate-papo local..." name="view_nearby_chat_history"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_im_conversation.xml b/indra/newview/skins/default/xui/pt/menu_im_conversation.xml
deleted file mode 100644
index a8434dc3364..00000000000
--- a/indra/newview/skins/default/xui/pt/menu_im_conversation.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="Conversation Gear Menu">
-	<menu_item_call label="Exibir perfil" name="View Profile"/>
-	<menu_item_call label="Adicionar amigo" name="Add Friend"/>
-	<menu_item_call label="Remover amigo" name="remove_friend"/>
-	<menu_item_call label="Oferecer teletransporte" name="offer_teleport"/>
-	<menu_item_call label="Convidar para entrar no grupo..." name="invite_to_group"/>
-	<menu_item_call label="Histórico de bate-papo..." name="chat_history"/>
-	<menu_item_call label="Mais zoom" name="zoom_in"/>
-	<menu_item_call label="Mapa" name="map"/>
-	<menu_item_call label="Compartilhar" name="Share"/>
-	<menu_item_call label="Pagar" name="Pay"/>
-	<menu_item_check label="Bloquear voz" name="Block/Unblock"/>
-	<menu_item_check label="Bloquear texto" name="MuteText"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_im_session_showmodes.xml b/indra/newview/skins/default/xui/pt/menu_im_session_showmodes.xml
deleted file mode 100644
index 398b890f667..00000000000
--- a/indra/newview/skins/default/xui/pt/menu_im_session_showmodes.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_modes">
-	<menu_item_check label="Exibição compacta" name="compact_view"/>
-	<menu_item_check label="Exibição expandida" name="expanded_view"/>
-	<menu_item_check label="Mostrar hora" name="IMShowTime"/>
-	<menu_item_check label="Mostrar nomes em conversas individuais" name="IMShowNamesForP2PConv"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_object_icon.xml b/indra/newview/skins/default/xui/pt/menu_object_icon.xml
index df224a88fa2..7af760a6ee4 100644
--- a/indra/newview/skins/default/xui/pt/menu_object_icon.xml
+++ b/indra/newview/skins/default/xui/pt/menu_object_icon.xml
@@ -2,6 +2,4 @@
 <menu name="Object Icon Menu">
 	<menu_item_call label="Perfil do objeto..." name="Object Profile"/>
 	<menu_item_call label="Bloquear..." name="Block"/>
-	<menu_item_call label="Mostrar no mapa" name="show_on_map"/>
-	<menu_item_call label="Teletransportar para lugar do objeto" name="teleport_to_object"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_outfit_gear.xml b/indra/newview/skins/default/xui/pt/menu_outfit_gear.xml
index 3602bdaac42..894f1d741cf 100644
--- a/indra/newview/skins/default/xui/pt/menu_outfit_gear.xml
+++ b/indra/newview/skins/default/xui/pt/menu_outfit_gear.xml
@@ -23,8 +23,6 @@
 		<menu_item_call label="Novo cabelo" name="New Hair"/>
 		<menu_item_call label="Novos olhos" name="New Eyes"/>
 	</menu>
-	<menu_item_call label="Expandir todas as pastas" name="expand"/>
-	<menu_item_call label="Recolher todas as pastas" name="collapse"/>
 	<menu_item_call label="Renomear look" name="rename"/>
 	<menu_item_call label="Excluir visual" name="delete_outfit"/>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_participant_view.xml b/indra/newview/skins/default/xui/pt/menu_participant_view.xml
deleted file mode 100644
index b61108cf545..00000000000
--- a/indra/newview/skins/default/xui/pt/menu_participant_view.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="participant_manu_view">
-	<menu_item_check label="Ordenar conversas por tipo" name="sort_sessions_by_type"/>
-	<menu_item_check label="Ordenar conversas por nome" name="sort_sessions_by_name"/>
-	<menu_item_check label="Ordenar conversas por atividade recente" name="sort_sessions_by_recent"/>
-	<menu_item_check label="Ordenar participantes por nome" name="sort_participants_by_name"/>
-	<menu_item_check label="Ordenar participantes por atividade recente" name="sort_participants_by_recent"/>
-	<menu_item_call label="Preferências de bate-papo..." name="chat_preferences"/>
-	<menu_item_call label="Preferências de privacidade..." name="privacy_preferences"/>
-	<menu_item_check label="Registro de conversas..." name="Conversation"/>
-	<menu_item_check label="Traduzir Bate-papo local" name="Translate_chat"/>
-	<menu_item_check label="Configurações de tradução..." name="Translation_settings"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_people_blocked_gear.xml b/indra/newview/skins/default/xui/pt/menu_people_blocked_gear.xml
deleted file mode 100644
index 8bbde9b38c9..00000000000
--- a/indra/newview/skins/default/xui/pt/menu_people_blocked_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_blocked_gear">
-	<menu_item_call label="Desbloquear" name="unblock"/>
-	<menu_item_call label="Perfil..." name="profile"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_people_blocked_plus.xml b/indra/newview/skins/default/xui/pt/menu_people_blocked_plus.xml
deleted file mode 100644
index e69935995ca..00000000000
--- a/indra/newview/skins/default/xui/pt/menu_people_blocked_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_blocked_plus">
-	<menu_item_call label="Bloquear residente por nome..." name="block_resident_by_name"/>
-	<menu_item_call label="Bloquear objeto por nome" name="block_object_by_name"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_people_blocked_view.xml b/indra/newview/skins/default/xui/pt/menu_people_blocked_view.xml
deleted file mode 100644
index b80d683c7be..00000000000
--- a/indra/newview/skins/default/xui/pt/menu_people_blocked_view.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_blocked_view">
-	<menu_item_check label="Ordenar por nome" name="sort_by_name"/>
-	<menu_item_check label="Ordenar por tipo" name="sort_by_type"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_people_friends_view.xml b/indra/newview/skins/default/xui/pt/menu_people_friends_view.xml
deleted file mode 100644
index 46caeae3105..00000000000
--- a/indra/newview/skins/default/xui/pt/menu_people_friends_view.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_group_plus">
-	<menu_item_check label="Ordenar por nome" name="sort_name"/>
-	<menu_item_check label="Ordenar por status" name="sort_status"/>
-	<menu_item_check label="Exibir ícones de pessoas" name="view_icons"/>
-	<menu_item_check label="Exibir permissões concedidas" name="view_permissions"/>
-	<menu_item_check label="Exibir registro de conversas..." name="view_conversation"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_people_groups.xml b/indra/newview/skins/default/xui/pt/menu_people_groups.xml
index 2ba7af17cd8..9a924ad7b93 100644
--- a/indra/newview/skins/default/xui/pt/menu_people_groups.xml
+++ b/indra/newview/skins/default/xui/pt/menu_people_groups.xml
@@ -2,7 +2,7 @@
 <menu name="menu_group_plus">
 	<menu_item_call label="Ver dados" name="View Info"/>
 	<menu_item_call label="Bate-papo" name="Chat"/>
-	<menu_item_call label="Chamada de voz" name="Call"/>
+	<menu_item_call label="Ligar" name="Call"/>
 	<menu_item_call label="Ativar" name="Activate"/>
 	<menu_item_call label="Sair" name="Leave"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_people_groups_view.xml b/indra/newview/skins/default/xui/pt/menu_people_groups_view.xml
deleted file mode 100644
index 637e591ae19..00000000000
--- a/indra/newview/skins/default/xui/pt/menu_people_groups_view.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_group_plus">
-	<menu_item_check label="Mostrar ícones de grupos" name="Display Group Icons"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_people_nearby.xml b/indra/newview/skins/default/xui/pt/menu_people_nearby.xml
index 51464fed68f..7c720f262ba 100644
--- a/indra/newview/skins/default/xui/pt/menu_people_nearby.xml
+++ b/indra/newview/skins/default/xui/pt/menu_people_nearby.xml
@@ -1,16 +1,13 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Avatar Context Menu">
-	<menu_item_call label="Exibir perfil" name="view_profile"/>
-	<menu_item_call label="MI" name="im"/>
-	<menu_item_call label="Oferecer teletransporte" name="offer_teleport"/>
-	<menu_item_call label="Chamada de voz" name="voice_call"/>
-	<menu_item_call label="Exibir histórico de bate-papo..." name="chat_history"/>
-	<menu_item_call label="Adicionar amigo" name="add_friend"/>
-	<menu_item_call label="Remover amigo" name="remove_friend"/>
-	<menu_item_call label="Convidar para entrar no grupo..." name="invite_to_group"/>
-	<menu_item_call label="Mais zoom" name="zoom_in"/>
-	<menu_item_call label="Mapa" name="map"/>
-	<menu_item_call label="Compartilhar" name="share"/>
-	<menu_item_call label="Pagar" name="pay"/>
-	<menu_item_check label="Bloquear/desbloquear" name="block_unblock"/>
+	<menu_item_call label="Ver perfil" name="View Profile"/>
+	<menu_item_call label="Adicionar amigo..." name="Add Friend"/>
+	<menu_item_call label="Remover amigo..." name="Remove Friend"/>
+	<menu_item_call label="MI" name="IM"/>
+	<menu_item_call label="Ligar" name="Call"/>
+	<menu_item_call label="Mapa" name="Map"/>
+	<menu_item_call label="Compartilhar" name="Share"/>
+	<menu_item_call label="Pagar" name="Pay"/>
+	<menu_item_check label="Bloquear/desbloquear" name="Block/Unblock"/>
+	<menu_item_call label="Teletransportar?" name="teleport"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/pt/menu_people_nearby_multiselect.xml
index 7f3c6ace278..79edb96b1c6 100644
--- a/indra/newview/skins/default/xui/pt/menu_people_nearby_multiselect.xml
+++ b/indra/newview/skins/default/xui/pt/menu_people_nearby_multiselect.xml
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Multi-Selected People Context Menu">
-	<menu_item_call label="Adicionar amigo..." name="add_friends"/>
-	<menu_item_call label="Remover amigo..." name="remove_friends"/>
-	<menu_item_call label="MI" name="im"/>
-	<menu_item_call label="Ligar" name="call"/>
-	<menu_item_call label="Compartilhar" name="share"/>
-	<menu_item_call label="Pagar" name="pay"/>
-	<menu_item_call label="Oferecer teletransporte" name="offer_teleport"/>
+	<menu_item_call label="Adicionar amigo..." name="Add Friends"/>
+	<menu_item_call label="Remover amigo..." name="Remove Friend"/>
+	<menu_item_call label="MI" name="IM"/>
+	<menu_item_call label="Ligar" name="Call"/>
+	<menu_item_call label="Compartilhar" name="Share"/>
+	<menu_item_call label="Pagar" name="Pay"/>
+	<menu_item_call label="Teletransportar?" name="teleport"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_people_nearby_view.xml b/indra/newview/skins/default/xui/pt/menu_people_nearby_view.xml
deleted file mode 100644
index bce015e732c..00000000000
--- a/indra/newview/skins/default/xui/pt/menu_people_nearby_view.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_group_plus">
-	<menu_item_check label="Ordenar por conversas mais recentes" name="sort_by_recent_speakers"/>
-	<menu_item_check label="Ordenar por nome" name="sort_name"/>
-	<menu_item_check label="Ordenar por distância" name="sort_distance"/>
-	<menu_item_check label="Exibir ícones de pessoas" name="view_icons"/>
-	<menu_item_check label="Exibir mapa" name="view_map"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_people_recent_view.xml b/indra/newview/skins/default/xui/pt/menu_people_recent_view.xml
deleted file mode 100644
index e4b368fe143..00000000000
--- a/indra/newview/skins/default/xui/pt/menu_people_recent_view.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_group_plus">
-	<menu_item_check label="Ordenar por mais recente" name="sort_most"/>
-	<menu_item_check label="Ordenar por nome" name="sort_name"/>
-	<menu_item_check label="Exibir ícones de pessoas" name="view_icons"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_url_agent.xml b/indra/newview/skins/default/xui/pt/menu_url_agent.xml
index aa0a4264054..ba5e0551248 100644
--- a/indra/newview/skins/default/xui/pt/menu_url_agent.xml
+++ b/indra/newview/skins/default/xui/pt/menu_url_agent.xml
@@ -1,8 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Url Popup">
-	<menu_item_call label="Exibir perfil" name="show_agent"/>
-	<menu_item_call label="Enviar MI..." name="send_im"/>
-	<menu_item_call label="Adicionar amigo..." name="add_friend"/>
+	<menu_item_call label="Mostrar perfil de residente" name="show_agent"/>
 	<menu_item_call label="Copiar nome para área de transferência" name="url_copy_label"/>
 	<menu_item_call label="Copiar SLurl para área de transferência" name="url_copy"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_url_objectim.xml b/indra/newview/skins/default/xui/pt/menu_url_objectim.xml
index 247a92567af..c1974441815 100644
--- a/indra/newview/skins/default/xui/pt/menu_url_objectim.xml
+++ b/indra/newview/skins/default/xui/pt/menu_url_objectim.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Url Popup">
-	<menu_item_call label="Perfil do objeto..." name="show_object"/>
+	<menu_item_call label="Mostrar informações sobre o objeto" name="show_object"/>
 	<menu_item_call label="Mostrar no mapa" name="show_on_map"/>
 	<menu_item_call label="Teletransportar para lugar do objeto" name="teleport_to_object"/>
 	<menu_item_call label="Copiar nome do objeto para área de transferência" name="url_copy_label"/>
diff --git a/indra/newview/skins/default/xui/pt/menu_viewer.xml b/indra/newview/skins/default/xui/pt/menu_viewer.xml
index 703df84efb5..ca378c1b583 100644
--- a/indra/newview/skins/default/xui/pt/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/pt/menu_viewer.xml
@@ -16,7 +16,10 @@
 			<menu_item_call label="Parar minha animação" name="Stop Animating My Avatar"/>
 			<menu_item_call label="Andar/correr/voar..." name="Walk / run / fly"/>
 		</menu>
-		<menu label="Status" name="Status"/>
+		<menu label="Status" name="Status">
+			<menu_item_call label="Ausente" name="Set Away"/>
+			<menu_item_call label="Ocupado" name="Set Busy"/>
+		</menu>
 		<menu_item_call label="Comprar L$..." name="Buy and Sell L$"/>
 		<menu_item_call label="Caixa de saída do lojista..." name="MerchantOutbox"/>
 		<menu_item_call label="Painel da conta..." name="Manage My Account">
@@ -29,18 +32,14 @@
 		<menu_item_call label="Sair do [APP_NAME]" name="Quit"/>
 	</menu>
 	<menu label="Comunicar" name="Communicate">
-		<menu_item_check label="Conversas..." name="Conversations"/>
-		<menu_item_check label="Bate-papo local..." name="Nearby Chat"/>
+		<menu_item_check label="Bate-papo..." name="Nearby Chat"/>
 		<menu_item_check label="Falar" name="Speak"/>
-		<menu label="Distorção de voz" name="VoiceMorphing">
-			<menu_item_check label="Não distorcer voz" name="NoVoiceMorphing"/>
-			<menu_item_check label="Visualizar..." name="Preview"/>
-			<menu_item_call label="Assinar..." name="Subscribe"/>
-		</menu>
+		<menu_item_check label="Configurações de voz..." name="Nearby Voice"/>
+		<menu_item_check label="Distorção de voz..." name="ShowVoice"/>
 		<menu_item_check label="Gestos..." name="Gestures"/>
-		<menu_item_check label="Amigos" name="My Friends"/>
-		<menu_item_check label="Grupos" name="My Groups"/>
-		<menu_item_check label="Pessoas próximas" name="Active Speakers"/>
+		<menu_item_call label="Amigos" name="My Friends"/>
+		<menu_item_call label="Grupos" name="My Groups"/>
+		<menu_item_call label="Pessoas próximas" name="Active Speakers"/>
 		<menu_item_call label="Lista de bloqueados" name="Block List"/>
 	</menu>
 	<menu label="Mundo" name="World">
@@ -116,6 +115,7 @@
 			<menu_item_call label="Comprar" name="Menu Object Buy"/>
 			<menu_item_call label="Pegar" name="Menu Object Take"/>
 			<menu_item_call label="Pegar uma cópia" name="Take Copy"/>
+			<menu_item_call label="Salvar no meu inventário" name="Save Object Back to My Inventory"/>
 			<menu_item_call label="Salvar objeto de volta aos conteúdos do objeto" name="Save Object Back to Object Contents"/>
 			<menu_item_call label="Devolver objeto" name="Return Object back to Owner"/>
 		</menu>
@@ -130,7 +130,6 @@
 			<menu_item_call label="Linksets..." name="pathfinding_linksets_menu_item"/>
 			<menu_item_call label="Personagens..." name="pathfinding_characters_menu_item"/>
 			<menu_item_call label="Visualização/teste..." name="pathfinding_console_menu_item"/>
-			<menu_item_call label="Recarregar região" name="pathfinding_rebake_navmesh_item"/>
 		</menu>
 		<menu label="Opções" name="Options">
 			<menu_item_check label="Mostrar permissões avançadas" name="DebugPermissions"/>
@@ -160,13 +159,6 @@
 	<menu label="Ajuda" name="Help">
 		<menu_item_call label="Como..." name="How To"/>
 		<menu_item_call label="[SECOND_LIFE] Ajuda" name="Second Life Help"/>
-		<menu_item_call label="Guia do usuário" name="User’s guide"/>
-		<menu_item_call label="Base de conhecimento" name="Knowledge Base"/>
-		<menu_item_call label="Wiki" name="Wiki"/>
-		<menu_item_call label="Fóruns da comunidade" name="Community Forums"/>
-		<menu_item_call label="Portal de suporte" name="Support portal"/>
-		<menu_item_call label="Notícias do [SECOND_LIFE]" name="Second Life News"/>
-		<menu_item_call label="Blogs do [SECOND_LIFE]" name="Second Life Blogs"/>
 		<menu_item_call label="Denunciar abuso" name="Report Abuse"/>
 		<menu_item_call label="Relatar bug" name="Report Bug"/>
 		<menu_item_call label="Sobre [APP_NAME]" name="About Second Life"/>
@@ -344,14 +336,9 @@
 				<menu_item_call label="Toggle Character Geometry" name="Toggle Character Geometry"/>
 				<menu_item_check label="Allow Select Avatar" name="Allow Select Avatar"/>
 			</menu>
-			<menu label="Velocidade de animação" name="Animation Speed">
-				<menu_item_call label="Todas as animações 10% mais rápidas" name="All Animations 10 Faster"/>
-				<menu_item_call label="Todas as animações 10% mais lentas" name="All Animations 10 Slower"/>
-				<menu_item_call label="Redefinir todas as velocidades de animação" name="Reset All Animation Speed"/>
-				<menu_item_check label="Animações em câmera lenta" name="Slow Motion Animations"/>
-			</menu>
 			<menu_item_call label="Force Params to Default" name="Force Params to Default"/>
 			<menu_item_check label="Dados da animação" name="Animation Info"/>
+			<menu_item_check label="Mostrar animação de movimento" name="Slow Motion Animations"/>
 			<menu_item_check label="Disable Level Of Detail" name="Disable LOD"/>
 			<menu_item_check label="Show Collision Skeleton" name="Show Collision Skeleton"/>
 			<menu_item_check label="Display Agent Target" name="Display Agent Target"/>
diff --git a/indra/newview/skins/default/xui/pt/notifications.xml b/indra/newview/skins/default/xui/pt/notifications.xml
index d9f5e48745d..ff7382bf801 100644
--- a/indra/newview/skins/default/xui/pt/notifications.xml
+++ b/indra/newview/skins/default/xui/pt/notifications.xml
@@ -510,24 +510,6 @@ Consultar [_URL] para mais informações?
 		</url>
 		<usetemplate ignoretext="Meu driver gráfico está desatualizado" name="okcancelignore" notext="Não" yestext="Sim"/>
 	</notification>
-	<notification name="AMDOldDriver">
-		Provavelmente, há um driver mais recente para o seu chip gráfico.  A atualização dos drivers gráficos pode melhorar significativamente o desempenho.
-
-    Visitar [_URL] para verificar se há atualizações do driver?
-		<url name="url">
-			http://support.amd.com/us/Pages/AMDSupportHub.aspx
-		</url>
-		<usetemplate ignoretext="Meu driver gráfico está desatualizado" name="okcancelignore" notext="Não" yestext="Sim"/>
-	</notification>
-	<notification name="NVIDIAOldDriver">
-		Provavelmente, há um driver mais recente para o seu chip gráfico.  A atualização dos drivers gráficos pode melhorar significativamente o desempenho.
-
-    Visitar [_URL] para verificar se há atualizações do driver?
-		<url name="url">
-			http://www.nvidia.com.br/Download/index.aspx?lang=br
-		</url>
-		<usetemplate ignoretext="Meu driver gráfico está desatualizado" name="okcancelignore" notext="Não" yestext="Sim"/>
-	</notification>
 	<notification name="UnknownGPU">
 		A placa de vídeo do seu sistema não é reconhecida pelo [APP_NAME].
 Isto acontece quando novos hardwares que ainda não foram testados no [APP_NAME].  Talvez isso não cause problemas, mas pode ser preciso checar as configurações de vídeo. 
@@ -1551,13 +1533,10 @@ Para instalar a atualização, será preciso reiniciar o [APP_NAME].
 		Não é possível oferecer amizade neste momento. Por favor, tente novamente em breve.
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
-	<notification name="DoNotDisturbModeSet">
-		Não perturbe está ativado.  Você não será notificado de comunicações recebidas.
-
-- Outros residentes receberão a sua resposta de Não perturbe (definida em Preferências &gt; Geral).
-- As ofertas de teletransporte serão recusadas.
-- Chamadas de voz serão recusadas.
-		<usetemplate ignoretext="Altero meu status para o modo Não perturbe" name="okignore" yestext="OK"/>
+	<notification name="BusyModeSet">
+		Modo ocupado ativado. 
+O bate-papo e MIs não serão exibidos.  MIs enviadas para você receberão sua resposta de modo ocupado.  Todas as ofertas de teletransporte serão recusadas.  Todas as ofertas de inventário serão colocadas na Lixeira.
+		<usetemplate ignoretext="Passar meu status para o modo ocupado" name="okignore" yestext="OK"/>
 	</notification>
 	<notification name="JoinedTooManyGroupsMember">
 		Você atingiu o limite máximo de grupos. Saia de outro grupo para poder entrar nesse ou recuse o convite.
@@ -2043,10 +2022,6 @@ Mover para o inventário o(s) item(s)?
 		Deseja abrir o [http://secondlife.com/account/ Painel] para ver o histórico da sua conta?
 		<usetemplate ignoretext="Abrir o navegador para acessar minha conta" name="okcancelignore" notext="Cancelar" yestext="Ir para a página"/>
 	</notification>
-	<notification name="ConfirmAddingChatParticipants">
-		Quando você adiciona uma pessoa a uma conversa existente, uma nova conversa é criada.  Todos os participantes recebem notificações sobre a nova conversa.
-		<usetemplate ignoretext="Confirme a inclusão de participantes no bate-papo" name="okcancelignore" notext="Cancelar" yestext="Ok"/>
-	</notification>
 	<notification name="ConfirmQuit">
 		Tem certeza que deseja sair?
 		<usetemplate ignoretext="Confirmar antes de sair" name="okcancelignore" notext="Não sair" yestext="Sair"/>
@@ -2121,14 +2096,14 @@ Você deseja substituí-lo pelo objeto selecionado?
 			<button ignore="Never Replace" name="No" text="Não"/>
 		</form>
 	</notification>
-	<notification label="Aviso de modo Não perturbe" name="DoNotDisturbModePay">
-		Você ativou o Não perturbe. Você não receberá qualquer item oferecido em troca deste pagamento.
+	<notification label="Aviso de Modo Ocupado" name="BusyModePay">
+		Você está no modo Ocupado, o que significa que você não receberá quaisquer itens oferecidos em troca deste pagamento.
 
-Deseja desativar o Não perturbe antes de concluir esta transação?
+Você gostaria de deixar o modo Ocupado antes de completar esta transação?
 		<form name="form">
-			<ignore name="ignore" text="Estou prestes a pagar alguém ou um objeto no modo Não perturbe"/>
-			<button ignore="Sempre manter no modo Não perturbe" name="Yes" text="OK"/>
-			<button ignore="Nunca sair do modo Não perturbe" name="No" text="Cancelar"/>
+			<ignore name="ignore" save_option="true" text="Estou prestes a pagar alguém ou um objeto no modo ocupado"/>
+			<button ignore="Always leave Busy Mode" name="Yes" text="Sim"/>
+			<button ignore="Never leave Busy Mode" name="No" text="Não"/>
 		</form>
 	</notification>
 	<notification name="ConfirmDeleteProtectedCategory">
@@ -2263,8 +2238,11 @@ Inclua um link para facilitar o acesso para visitantes. Teste o link na barra de
 	<notification name="GroupNotice">
 		Assunto: [SUBJECT], Mensagem: [MESSAGE]
 	</notification>
-	<notification name="FriendOnlineOffline">
-		&lt;nolink&gt;[NAME]&lt;/nolink&gt; está [STATUS]
+	<notification name="FriendOnline">
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; está online
+	</notification>
+	<notification name="FriendOffline">
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; está offline
 	</notification>
 	<notification name="AddSelfFriend">
 		Você é o máximo! Mesmo assim, não dá para adicionar a si mesmo(a) como amigo(a).
@@ -2489,6 +2467,13 @@ Logo, não é possível voar aqui.
 	<notification name="DynamicPathfindingDisabled">
 		O pathfinding dinâmico não está habilitado nesta região.  Os objetos com script usando chamadas LSL de pathfinding podem não operar como o esperado na região.
 	</notification>
+	<notification name="PathfindingRebakeNavmesh">
+		A alteração de determinados objetos nesta região pode resultar no comportamento incorreto de outros objeto em movimento.  Para fazer com que os objetos em movimento se comportem corretamente, clique no botão “Recarregar região”.  Escolha “Ajuda” para obter mais informações.
+		<url name="url">
+			http://wiki.secondlife.com/wiki/Pathfinding_Tools_in_the_Second_Life_Viewer
+		</url>
+		<usetemplate helptext="Ajuda" ignoretext="A alteração de determinados objetos nesta região pode resultar no comportamento incorreto de outros objeto em movimento." name="okhelpignore" yestext="OK"/>
+	</notification>
 	<notification name="PathfindingCannotRebakeNavmesh">
 		Erro.  Pode haver um erro de rede ou do servidor, ou você pode não ter direitos de construção.  Às vezes, fazer login e logout novamente resolve este problema.
 		<usetemplate name="okbutton" yestext="OK"/>
@@ -2751,7 +2736,7 @@ OK?
 	<notification name="ScriptQuestionCaution">
 		Aviso: O objeto &apos;&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;&apos; deseja obter acesso total à sua conta de dólares Linden. Se você conceder acesso, ele poderá remover fundos de sua conta a qualquer momento ou esvaziar sua conta completamente, continuamente e sem avisos adicionais.
   
-Não conceda acesso se você não entender completamente por que ele deseja acessar sua conta.
+Esse tipo de pedido raramente é legítimo. Não conceda acesso se você não entender completamente por que ele deseja acessar sua conta.
 		<form name="form">
 			<button name="Grant" text="Permitir acesso total"/>
 			<button name="Deny" text="Negar"/>
@@ -3325,633 +3310,4 @@ Tentativa cancelada.
 		Você está excluindo [NUM_ITEMS] itens.  Tem certeza de que deseja continuar?
 		<usetemplate ignoretext="Tem certeza de que deseja excluir múltiplos itens?" name="okcancelignore" notext="Não" yestext="Sim"/>
 	</notification>
-	<notification name="AvatarFrozen">
-		[AV_FREEZER] congelou você. Você não pode se mover ou interagir com o mundo.
-	</notification>
-	<notification name="AvatarFrozenDuration">
-		[AV_FREEZER] congelou você por [AV_FREEZE_TIME] segundos. Você não pode se mover ou interagir com o mundo.
-	</notification>
-	<notification name="YouFrozeAvatar">
-		Avatar congelado.
-	</notification>
-	<notification name="AvatarHasUnFrozenYou">
-		[AV_FREEZER] descongelou você.
-	</notification>
-	<notification name="AvatarUnFrozen">
-		Avatar descongelado.
-	</notification>
-	<notification name="AvatarFreezeFailure">
-		O congelamento falhou porque você não tem permissão de administrador para esse lote.
-	</notification>
-	<notification name="AvatarFreezeThaw">
-		Seu congelamento expirou, vá cuidar da sua vida.
-	</notification>
-	<notification name="AvatarCantFreeze">
-		Não é possível congelar esse usuário.
-	</notification>
-	<notification name="NowOwnObject">
-		Agora você é o proprietário do objeto [OBJECT_NAME]
-	</notification>
-	<notification name="CantRezOnLand">
-		Não é possível renderizar objeto em [OBJECT_POS] porque o proprietário do terreno não permite.  Use a ferramenta de terrenos para ver a propriedade do terreno.
-	</notification>
-	<notification name="RezFailTooManyRequests">
-		O objeto não pode ser renderizado porque há muitas solicitações.
-	</notification>
-	<notification name="SitFailCantMove">
-		Você não pode sentar porque não pode se mover no momento.
-	</notification>
-	<notification name="SitFailNotAllowedOnLand">
-		Você não pode sentar porque não está autorizado a sentar nesse terreno.
-	</notification>
-	<notification name="SitFailNotSameRegion">
-		Tente chegar mais perto.  Não é possível sentar no objeto porque
-ele não está na mesma região que você.
-	</notification>
-	<notification name="NoNewObjectRegionFull">
-		Não foi possível criar um novo objeto. A região está cheia.
-	</notification>
-	<notification name="FailedToPlaceObject">
-		Falha ao posicionar objeto em local específico.  Tente novamente.
-	</notification>
-	<notification name="NoOwnNoGardening">
-		Você não pode criar árvores e grama em terrenos que não são sua propriedade.
-	</notification>
-	<notification name="NoCopyPermsNoObject">
-		A cópia falhou porque você não está autorizado a copiar o objeto &apos;[OBJ_NAME]&apos;.
-	</notification>
-	<notification name="NoTransPermsNoObject">
-		A cópia falhou porque o objeto &apos;[OBJ_NAME]&apos; não pode ser transferido para você.
-	</notification>
-	<notification name="AddToNavMeshNoCopy">
-		A cópia falhou porque o objeto &apos;[OBJ_NAME]&apos; contribui para o navmesh.
-	</notification>
-	<notification name="DupeWithNoRootsSelected">
-		Duplicar sem objetos raiz selecionados.
-	</notification>
-	<notification name="CantDupeCuzRegionIsFull">
-		Não é possível duplicar objetos porque a região está cheia.
-	</notification>
-	<notification name="CantDupeCuzParcelNotFound">
-		Não é possível duplicar os objetos - não é possível encontrar o lote em que eles estão.
-	</notification>
-	<notification name="CantCreateCuzParcelFull">
-		Não é possível criar objeto porque 
-o lote está cheio.
-	</notification>
-	<notification name="RezAttemptFailed">
-		Falha na tentativa de renderizar um objeto.
-	</notification>
-	<notification name="ToxicInvRezAttemptFailed">
-		Não é possível criar um item que causou problemas a essa região.
-	</notification>
-	<notification name="InvItemIsBlacklisted">
-		Esse item do inventário foi incluído na lista.
-	</notification>
-	<notification name="NoCanRezObjects">
-		No momento, você não está autorizado a criar objetos.
-	</notification>
-	<notification name="LandSearchBlocked">
-		Pesquisa de terreno bloqueada.
-Você realizou muitas pesquisas de terreno muito rápido.
-Tente novamente em instantes.
-	</notification>
-	<notification name="NotEnoughResourcesToAttach">
-		Não há recursos de script disponíveis suficientes para anexar objeto!
-	</notification>
-	<notification name="YouDiedAndGotTPHome">
-		Você morreu e foi teletransportado para seu início
-	</notification>
-	<notification name="EjectComingSoon">
-		Você não tem mais permissão para ficar aqui e tem [EJECT_TIME] segundos para sair.
-	</notification>
-	<notification name="NoEnterServerFull">
-		Você não pode entrar nesta região porque 
-o servidor está cheio.
-	</notification>
-	<notification name="SaveBackToInvDisabled">
-		Salvar no inventário foi desativado.
-	</notification>
-	<notification name="NoExistNoSaveToContents">
-		Não é possível salvar &apos;[OBJ_NAME]&apos; no conteúdo do objeto porque o objeto do qual ele foi renderizado não existe mais.
-	</notification>
-	<notification name="NoModNoSaveToContents">
-		Não é possível salvar &apos;[OBJ_NAME]&apos; no conteúdo do objeto porque você não tem permissão para modificar o objeto &apos;[DEST_NAME]&apos;.
-	</notification>
-	<notification name="NoSaveBackToInvDisabled">
-		Não é possível salvar &apos;[OBJ_NAME]&apos; no inventário -- essa operação foi desativada.
-	</notification>
-	<notification name="NoCopyNoSelCopy">
-		Você não pode copiar sua seleção porque não está autorizado a copiar o objeto &apos;[OBJ_NAME]&apos;.
-	</notification>
-	<notification name="NoTransNoSelCopy">
-		Você não pode copiar a seleção porque o objeto &apos;[OBJ_NAME]&apos; não é transferível.
-	</notification>
-	<notification name="NoTransNoCopy">
-		Você não pode copiar a seleção porque o objeto &apos;[OBJ_NAME]&apos; não é transferível.
-	</notification>
-	<notification name="NoPermsNoRemoval">
-		A remoção do objeto &apos;[OBJ_NAME]&apos; do simulador é proibida pelo sistema de permissões.
-	</notification>
-	<notification name="NoModNoSaveSelection">
-		Você não pode salvar sua seleção porque não está autorizado a modificar o objeto &apos;[OBJ_NAME]&apos;.
-	</notification>
-	<notification name="NoCopyNoSaveSelection">
-		Não é possível salvar sua seleção porque o objeto &apos;[OBJ_NAME]&apos; não é copiável.
-	</notification>
-	<notification name="NoModNoTaking">
-		Você não pode levar sua seleção porque não está autorizado a modificar o objeto &apos;[OBJ_NAME]&apos;.
-	</notification>
-	<notification name="RezDestInternalError">
-		Erro interno: tipo de destino desconhecido.
-	</notification>
-	<notification name="DeleteFailObjNotFound">
-		A exclusão falhou porque o objeto não foi encontrado
-	</notification>
-	<notification name="SorryCantEjectUser">
-		Não é possível expulsar esse usuário.
-	</notification>
-	<notification name="RegionSezNotAHome">
-		Esta região não permite que você a defina como seu início.
-	</notification>
-	<notification name="HomeLocationLimits">
-		Você só pode definir seu &quot;Início&quot; em seu terreno ou em um Infohub do continente.
-	</notification>
-	<notification name="HomePositionSet">
-		Posição de início definida.
-	</notification>
-	<notification name="AvatarEjected">
-		Avatar expulso.
-	</notification>
-	<notification name="AvatarEjectFailed">
-		A expulsão falhou porque você não tem permissão de administrador para esse lote.
-	</notification>
-	<notification name="CantMoveObjectParcelFull">
-		Não é possível mover &apos;[OBJECT_NAME]&apos; para
-[OBJ_POSITION] na região [REGION_NAME] porque o lote está cheio.
-	</notification>
-	<notification name="CantMoveObjectParcelPerms">
-		Não é possível mover &apos;[OBJECT_NAME]&apos; para
-[OBJ_POSITION] na região [REGION_NAME] porque seus objetos não são permitidos neste lote.
-	</notification>
-	<notification name="CantMoveObjectParcelResources">
-		Não é possível mover &apos;[OBJECT_NAME]&apos; para
-[OBJ_POSITION] na região [REGION_NAME] porque não há recursos suficientes para este objeto neste lote.
-	</notification>
-	<notification name="CantMoveObjectRegionVersion">
-		Não é possível mover &apos;[OBJECT_NAME]&apos; para
-[OBJ_POSITION] na região [REGION_NAME] porque outra região está executando uma versão mais antiga, que não dá suporte o recebimento deste objeto por meio de passagem de regiões.
-	</notification>
-	<notification name="CantMoveObjectNavMesh">
-		Não é possível mover &apos;[OBJECT_NAME]&apos; para
-[OBJ_POSITION] na região [REGION_NAME] porque você não está autorizado a modificar o navmesh além dos limites da região.
-	</notification>
-	<notification name="CantMoveObjectWTF">
-		Não é possível mover &apos;[OBJECT_NAME]&apos; para
-[OBJ_POSITION] na região [REGION_NAME] por uma razão desconhecida. ([FAILURE_TYPE])
-	</notification>
-	<notification name="NoPermModifyObject">
-		Você não está autorizado a modificar este objeto
-	</notification>
-	<notification name="CantEnablePhysObjContributesToNav">
-		Não é possível ativar propriedades físicas para um objeto que contribui para o navmesh.
-	</notification>
-	<notification name="CantEnablePhysKeyframedObj">
-		Não é possível ativar propriedades físicas para objetos keyframe.
-	</notification>
-	<notification name="CantEnablePhysNotEnoughLandResources">
-		Não é possível ativar propriedades físicas para o objeto -- recursos de terreno insuficientes.
-	</notification>
-	<notification name="CantEnablePhysCostTooGreat">
-		Não é possível ativar propriedades físicas para objeto com custo de recursos físicos acima de [MAX_OBJECTS]
-	</notification>
-	<notification name="PhantomWithConcavePiece">
-		Este objeto não pode ter uma peça côncava porque é phantom e contribui para o navmesh.
-	</notification>
-	<notification name="UnableAddItem">
-		Não é possível adicionar item!
-	</notification>
-	<notification name="UnableEditItem">
-		Não é possível editar isso!
-	</notification>
-	<notification name="NoPermToEdit">
-		Não é permitido editar isso.
-	</notification>
-	<notification name="NoPermToCopyInventory">
-		Não é permitido copiar esse inventário.
-	</notification>
-	<notification name="CantSaveItemDoesntExist">
-		Não é possível salvar no conteúdo do objeto: O item não existe mais.
-	</notification>
-	<notification name="CantSaveItemAlreadyExists">
-		Não é possível salvar no conteúdo do objeto: já existe um item com esse nome no inventário
-	</notification>
-	<notification name="CantSaveModifyAttachment">
-		Não é possível salvar no conteúdo do objeto: isso modificaria as permissões de anexo.
-	</notification>
-	<notification name="TooManyScripts">
-		Muitos scripts.
-	</notification>
-	<notification name="UnableAddScript">
-		Não é possível adicionar script!
-	</notification>
-	<notification name="AssetServerTimeoutObjReturn">
-		Servidor de objetos não respondeu a tempo.  Objeto retornado a sim.
-	</notification>
-	<notification name="RegionDisablePhysicsShapes">
-		Esta região não tem formas físicas ativadas.
-	</notification>
-	<notification name="NoModNavmeshAcrossRegions">
-		Você não pode modificar o navmesh além dos limites da região.
-	</notification>
-	<notification name="NoSetPhysicsPropertiesOnObjectType">
-		Não é possível definir as propriedades físicas neste tipo de objeto.
-	</notification>
-	<notification name="NoSetRootPrimWithNoShape">
-		Não é possível definir que um prim raiz não tenha forma.
-	</notification>
-	<notification name="NoRegionSupportPhysMats">
-		Esta região não tem materiais físicos ativados.
-	</notification>
-	<notification name="OnlyRootPrimPhysMats">
-		Apenas prims raiz podem ter seus materiais físicos ajustados.
-	</notification>
-	<notification name="NoSupportCharacterPhysMats">
-		Ainda não há suporte para a configuração dos materiais físicos em personagens.
-	</notification>
-	<notification name="InvalidPhysMatProperty">
-		Uma ou mais das propriedades do material físico são inválidas.
-	</notification>
-	<notification name="NoPermsAlterStitchingMeshObj">
-		Você não pode alterar o tipo de acabamento de um objeto mesh.
-	</notification>
-	<notification name="NoPermsAlterShapeMeshObj">
-		Você não pode alterar a forma de um objeto mesh
-	</notification>
-	<notification name="FullRegionCantEnter">
-		Você não pode entrar nesta região porque \nela está cheia.
-	</notification>
-	<notification name="LinkFailedOwnersDiffer">
-		Falha na vinculação -- proprietários diferentes
-	</notification>
-	<notification name="LinkFailedNoModNavmeshAcrossRegions">
-		Falha na vinculação -- não é possível modificar o navmesh além dos limites da região.
-	</notification>
-	<notification name="LinkFailedNoPermToEdit">
-		Ocorreu uma falha na vinculação porque você não tem permissão de edição.
-	</notification>
-	<notification name="LinkFailedTooManyPrims">
-		Falha na vinculação -- muitos prims
-	</notification>
-	<notification name="LinkFailedCantLinkNoCopyNoTrans">
-		Falha na vinculação -- não é possível vincular itens com cópia proibida a itens com transferência proibida
-	</notification>
-	<notification name="LinkFailedNothingLinkable">
-		Falha na vinculação -- nada é vinculável.
-	</notification>
-	<notification name="LinkFailedTooManyPathfindingChars">
-		Falha na vinculação -- muitos personagens com pathfinding
-	</notification>
-	<notification name="LinkFailedInsufficientLand">
-		Falha na vinculação -- recursos de terreno insuficientes
-	</notification>
-	<notification name="LinkFailedTooMuchPhysics">
-		O objeto usa muitos recursos físicos – sua dinâmica foi desativada.
-	</notification>
-	<notification name="TeleportedHomeByObjectOnParcel">
-		Você foi teletransportado para seu início pelo objeto &apos;[OBJECT_NAME]&apos; no lote &apos;[PARCEL_NAME]&apos;
-	</notification>
-	<notification name="TeleportedHomeByObject">
-		Você foi teletransportado para seu início pelo objeto &apos;[OBJECT_NAME]&apos;
-	</notification>
-	<notification name="TeleportedByAttachment">
-		Você foi teletransportado por um anexo em [ITEM_ID]
-	</notification>
-	<notification name="TeleportedByObjectOnParcel">
-		Você foi teletransportado pelo objeto &apos;[OBJECT_NAME]&apos; no lote &apos;[PARCEL_NAME]&apos;
-	</notification>
-	<notification name="TeleportedByObjectOwnedBy">
-		Você foi teletransportado pelo objeto &apos;[OBJECT_NAME]&apos; de propriedade de [OWNER_ID]
-	</notification>
-	<notification name="TeleportedByObjectUnknownUser">
-		Você foi teletransportado pelo objeto &apos;[OBJECT_NAME]&apos; de propriedade de um usuário desconhecido.
-	</notification>
-	<notification name="CantCreateObjectRegionFull">
-		Não foi possível criar o objeto solicitado. A região está cheia.
-	</notification>
-	<notification name="CantAttackMultipleObjOneSpot">
-		Não é possível anexar vários objetos a um local.
-	</notification>
-	<notification name="CantCreateMultipleObjAtLoc">
-		Você não pode criar vários objetos aqui.
-	</notification>
-	<notification name="UnableToCreateObjTimeOut">
-		Não foi possível criar o objeto solicitado. Objeto ausente do banco de dados.
-	</notification>
-	<notification name="UnableToCreateObjUnknown">
-		Não foi possível criar o objeto solicitado. A solicitação expirou. Tente novamente.
-	</notification>
-	<notification name="UnableToCreateObjMissingFromDB">
-		Não foi possível criar o objeto solicitado. Tente novamente.
-	</notification>
-	<notification name="RezFailureTookTooLong">
-		Falha na renderização, objeto solicitado demorou muito a carregar.
-	</notification>
-	<notification name="FailedToPlaceObjAtLoc">
-		Falha ao posicionar objeto em local específico.  Tente novamente.
-	</notification>
-	<notification name="CantCreatePlantsOnLand">
-		Você não pode criar plantas neste terreno.
-	</notification>
-	<notification name="CantRestoreObjectNoWorldPos">
-		Não é possível restaurar o objeto. Nenhuma posição encontrada no mundo.
-	</notification>
-	<notification name="CantRezObjectInvalidMeshData">
-		Não é possível renderizar o objeto porque os dados de mesh são inválidos.
-	</notification>
-	<notification name="CantRezObjectTooManyScripts">
-		Não foi possível renderizar objeto porque já há muitos scripts nesta região.
-	</notification>
-	<notification name="CantCreateObjectNoAccess">
-		Seus privilégios de acesso não permitem que você crie objetos aqui.
-	</notification>
-	<notification name="CantCreateObject">
-		No momento, você não está autorizado a criar objetos.
-	</notification>
-	<notification name="InvalidObjectParams">
-		Parâmetros de objeto inválidos
-	</notification>
-	<notification name="CantDuplicateObjectNoAcess">
-		Seus privilégios de acesso não permitem que você duplique objetos aqui.
-	</notification>
-	<notification name="CantChangeShape">
-		Você não está autorizado a alterar essa forma.
-	</notification>
-	<notification name="NoAccessToClaimObjects">
-		Seus privilégios de acesso não permitem que você reivindique objetos aqui.
-	</notification>
-	<notification name="DeedFailedNoPermToDeedForGroup">
-		A doação falhou porque você não está autorizado a doar objetos ao seu grupo.
-	</notification>
-	<notification name="NoPrivsToBuyObject">
-		Seus privilégios de acesso não permitem que você compre objetos aqui.
-	</notification>
-	<notification name="CantAttachObjectAvatarSittingOnIt">
-		Não é possível anexar objeto porque um avatar está sentado nele.
-	</notification>
-	<notification name="WhyAreYouTryingToWearShrubbery">
-		Árvores e grama não podem ser usadas como anexos.
-	</notification>
-	<notification name="CantAttachGroupOwnedObjs">
-		Não é possível anexar objetos de propriedade de um grupo.
-	</notification>
-	<notification name="CantAttachObjectsNotOwned">
-		Não é possível anexar objetos que não sua propriedade.
-	</notification>
-	<notification name="CantAttachNavmeshObjects">
-		Não é possível anexar objetos que contribuem com o navmesh.
-	</notification>
-	<notification name="CantAttachObjectNoMovePermissions">
-		Não é possível vincular objeto porque você não tem permissão para movê-lo.
-	</notification>
-	<notification name="CantAttachNotEnoughScriptResources">
-		Não há recursos de script disponíveis suficientes para anexar objeto!
-	</notification>
-	<notification name="CantDropItemTrialUser">
-		Não é possível largar objetos aqui. Tente a área de Avaliação grátis.
-	</notification>
-	<notification name="CantDropMeshAttachment">
-		Você não pode largar anexos mesh. Separe para o inventário e depois renderize no mundo.
-	</notification>
-	<notification name="CantDropAttachmentNoPermission">
-		Falha ao largar anexo: você não está autorizado a largá-lo aqui.
-	</notification>
-	<notification name="CantDropAttachmentInsufficientLandResources">
-		Falha ao largar anexo: recursos de terreno disponíveis insuficientes.
-	</notification>
-	<notification name="CantDropAttachmentInsufficientResources">
-		Falha ao largar anexos: recursos disponíveis insuficientes.
-	</notification>
-	<notification name="CantDropObjectFullParcel">
-		Não é possível largar objeto aqui.  O lote está cheio.
-	</notification>
-	<notification name="CantTouchObjectBannedFromParcel">
-		Não é possível tocar/pegar este objeto porque você foi banido do lote de terreno.
-	</notification>
-	<notification name="PlzNarrowDeleteParams">
-		Detalhe seus parâmetros de exclusão.
-	</notification>
-	<notification name="UnableToUploadAsset">
-		Não é possível carregar objeto.
-	</notification>
-	<notification name="CantTeleportCouldNotFindUser">
-		Não foi possível encontrar usuário para teletransportar para início
-	</notification>
-	<notification name="GodlikeRequestFailed">
-		solicitação de poderes de deus falhou
-	</notification>
-	<notification name="GenericRequestFailed">
-		falha em solicitação genérica
-	</notification>
-	<notification name="CantUploadPostcard">
-		Não foi possível carregar cartão postal.  Tente novamente mais tarde.
-	</notification>
-	<notification name="CantFetchInventoryForGroupNotice">
-		Não foi possível obter detalhes de inventário para o anúncio de grupo.
-	</notification>
-	<notification name="CantSendGroupNoticeNotPermitted">
-		Não é possível enviar anúncio de grupo -- não permitido.
-	</notification>
-	<notification name="CantSendGroupNoticeCantConstructInventory">
-		Não é possível enviar anúncio de grupo -- não foi possível construir inventário.
-	</notification>
-	<notification name="CantParceInventoryInNotice">
-		Não é possível processar o inventário do anúncio.
-	</notification>
-	<notification name="TerrainUploadFailed">
-		Falha no envio de terreno.
-	</notification>
-	<notification name="TerrainFileWritten">
-		Arquivo de terreno gravado.
-	</notification>
-	<notification name="TerrainFileWrittenStartingDownload">
-		Arquivo de terreno criado, iniciando o download...
-	</notification>
-	<notification name="TerrainBaked">
-		Terreno confeccionado.
-	</notification>
-	<notification name="TenObjectsDisabledPlzRefresh">
-		Apenas os 10 primeiros objetos selecionados foram desativados. Atualize e faça novas seleções, se necessário.
-	</notification>
-	<notification name="UpdateViewerBuyParcel">
-		Você precisa atualizar seu visualizador para comprar este lote.
-	</notification>
-	<notification name="CantBuyParcelNotForSale">
-		Não é possível comprar, este lote não está à venda.
-	</notification>
-	<notification name="CantBuySalePriceOrLandAreaChanged">
-		Não é possível comprar, o preço de venda ou a área do terreno foram alterados.
-	</notification>
-	<notification name="CantBuyParcelNotAuthorized">
-		Você não é o comprador autorizado deste lote.
-	</notification>
-	<notification name="CantBuyParcelAwaitingPurchaseAuth">
-		Você não pode comprar este lote porque já está aguardando aut. de compra
-	</notification>
-	<notification name="CantBuildOverflowParcel">
-		Não é possível criar objeto aqui porque isso sobrecarregaria o lote.
-	</notification>
-	<notification name="SelectedMultipleOwnedLand">
-		Você selecionou terreno com proprietários diferentes. Selecione uma área menor e tente novamente.
-	</notification>
-	<notification name="CantJoinTooFewLeasedParcels">
-		Não há lotes alugados suficientes na seleção para reunir.
-	</notification>
-	<notification name="CantDivideLandMultipleParcelsSelected">
-		Não é possível dividir o terreno.\nHá mais de um lote selecionado.\nTente selecionar um pedaço menor de terreno.
-	</notification>
-	<notification name="CantDivideLandCantFindParcel">
-		Não é possível dividir o terreno.\nNão é possível encontrar o lote.\nComunique isso em Ajuda -&gt; Relatar bug...
-	</notification>
-	<notification name="CantDivideLandWholeParcelSelected">
-		Não é possível dividir o terreno. O lote inteiro está selecionado.\nTente selecionar um pedaço menor do terreno.
-	</notification>
-	<notification name="LandHasBeenDivided">
-		O terreno foi dividido.
-	</notification>
-	<notification name="PassPurchased">
-		Você comprou um passe.
-	</notification>
-	<notification name="RegionDisallowsClassifieds">
-		A região não permite classificados.
-	</notification>
-	<notification name="LandPassExpireSoon">
-		Seu passe para este terreno está prestes a expirar.
-	</notification>
-	<notification name="CantSitNoSuitableSurface">
-		Não há uma superfície adequada para sentar, tente outro local.
-	</notification>
-	<notification name="CantSitNoRoom">
-		Não há espaço para sentar aqui, tente outro local.
-	</notification>
-	<notification name="ClaimObjectFailedNoPermission">
-		A reivindicação do objeto falhou porque você não tem permissão
-	</notification>
-	<notification name="ClaimObjectFailedNoMoney">
-		A reivindicação do objeto falhou porque você não tem L$ suficiente.
-	</notification>
-	<notification name="CantDeedGroupLand">
-		Não é possível doar terrenos de propriedade de um grupo.
-	</notification>
-	<notification name="BuyObjectFailedNoMoney">
-		A compra do objeto falhou porque você não tem L$ suficientes.
-	</notification>
-	<notification name="BuyInventoryFailedNoMoney">
-		A compra do inventário falhou porque você não tem L$ suficiente
-	</notification>
-	<notification name="BuyPassFailedNoMoney">
-		Você não tem L $ suficientes para comprar um passe para este terreno.
-	</notification>
-	<notification name="CantBuyPassTryAgain">
-		Não é possível comprar passe no momento.  Tente novamente mais tarde.
-	</notification>
-	<notification name="CantCreateObjectParcelFull">
-		Não é possível criar objeto porque \no lote está cheio.
-	</notification>
-	<notification name="FailedPlacingObject">
-		Falha ao posicionar objeto em local específico.  Tente novamente.
-	</notification>
-	<notification name="CantCreateLandmarkForEvent">
-		Não é possível criar marco para o evento.
-	</notification>
-	<notification name="GodBeatsFreeze">
-		Seus poderes de deus rompem o congelamento!
-	</notification>
-	<notification name="SpecialPowersRequestFailedLogged">
-		Falha na solicitação de poderes especiais. Essa solicitação foi registrada.
-	</notification>
-	<notification name="ExpireExplanation">
-		O sistema não pode processar sua solicitação no momento. A solicitação expirou.
-	</notification>
-	<notification name="DieExplanation">
-		O sistema não pode processar sua solicitação.
-	</notification>
-	<notification name="AddPrimitiveFailure">
-		Fundos insuficientes para criar prim.
-	</notification>
-	<notification name="RezObjectFailure">
-		Fundos insuficientes para criar objeto.
-	</notification>
-	<notification name="ResetHomePositionNotLegal">
-		Redefinir Início pois o Início não era legal.
-	</notification>
-	<notification name="CantInviteRegionFull">
-		No momento, você não pode convidar ninguém para seu local pois a região está cheia. Tente novamente mais tarde.
-	</notification>
-	<notification name="CantSetHomeAtRegion">
-		Esta região não permite que você a defina como seu início.
-	</notification>
-	<notification name="ListValidHomeLocations">
-		Você só pode definir seu &quot;Início&quot; em seu terreno ou em um Infohub do continente.
-	</notification>
-	<notification name="SetHomePosition">
-		Posição de início definida.
-	</notification>
-	<notification name="CantDerezInventoryError">
-		Não é possível desrenderizar objeto devido a uma falha de inventário.
-	</notification>
-	<notification name="CantCreateRequestedInv">
-		Não é possível criar o inventário solicitado.
-	</notification>
-	<notification name="CantCreateRequestedInvFolder">
-		Não é possível criar a pasta de inventário solicitada.
-	</notification>
-	<notification name="CantCreateInventory">
-		Não é possível criar esse inventário.
-	</notification>
-	<notification name="CantCreateLandmark">
-		Não é possível criar marco.
-	</notification>
-	<notification name="CantCreateOutfit">
-		Não é possível criar roupa agora. Tente novamente em instantes.
-	</notification>
-	<notification name="InventoryNotForSale">
-		O inventário não está à venda.
-	</notification>
-	<notification name="CantFindInvItem">
-		Não é possível encontrar item do inventário.
-	</notification>
-	<notification name="CantFindObject">
-		Não foi possível encontrar objeto.
-	</notification>
-	<notification name="CantTransfterMoneyRegionDisabled">
-		Transferências de dinheiro para objetos estão desativadas para esta região no momento.
-	</notification>
-	<notification name="CantPayNoAgent">
-		Não foi possível descobrir a quem pagar.
-	</notification>
-	<notification name="CantDonateToPublicObjects">
-		Não é possível dar L$ a objetos públicos.
-	</notification>
-	<notification name="InventoryCreationInWorldObjectFailed">
-		Falha na criação de inventário de objetos do mundo virtual.
-	</notification>
-	<notification name="UserBalanceOrLandUsageError">
-		Um erro interno impediu que seu visualizador fosse atualizado corretamente.  O saldo em L$ ou a propriedade de lotes exibidos em seu visualizador pode não refletir o saldo real nos servidores.
-	</notification>
-	<notification name="LargePrimAgentIntersect">
-		Não é possível criar grandes prims que interceptam outros jogadores.  Tente novamente quando os outros jogadores tiverem se movido.
-	</notification>
-	<notification name="PreferenceChatClearLog">
-		Isso excluirá os registros das conversas anteriores e qualquer backup desse arquivo.
-		<usetemplate ignoretext="Confirmar antes de excluir o registro com conversas anteriores." name="okcancelignore" notext="Cancelar" yestext="OK"/>
-	</notification>
-	<notification name="PreferenceChatDeleteTranscripts">
-		Isso excluirá todas as transcrições de todas as conversas anteriores. A lista de conversas antigas não será afetada. Todos os arquivos com as extensões .txt e txt.backup na pasta [FOLDER] serão excluídos.
-		<usetemplate ignoretext="Confirmar antes de excluir transcrições." name="okcancelignore" notext="Cancelar" yestext="OK"/>
-	</notification>
-	<notification name="PreferenceChatPathChanged">
-		Não foi possível mover arquivos. Caminho anterior restaurado.
-		<usetemplate ignoretext="Não foi possível mover arquivos. Caminho anterior restaurado." name="okignore" yestext="OK"/>
-	</notification>
 </notifications>
diff --git a/indra/newview/skins/default/xui/pt/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/pt/panel_avatar_list_item.xml
index 22eb23ebc52..b444593af82 100644
--- a/indra/newview/skins/default/xui/pt/panel_avatar_list_item.xml
+++ b/indra/newview/skins/default/xui/pt/panel_avatar_list_item.xml
@@ -26,6 +26,5 @@
 	<icon name="permission_edit_mine_icon" tool_tip="Este amigo pode editar, excluir ou pegar seus pertences"/>
 	<icon name="permission_map_icon" tool_tip="Este amigo pode localizar você no mapa"/>
 	<icon name="permission_online_icon" tool_tip="Este amigo pode saber quando você estiver online"/>
-	<button name="info_btn" tool_tip="Mais informações"/>
 	<button name="profile_btn" tool_tip="Ver perfil"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/pt/panel_block_list_sidetray.xml
index 2fcf6b9932f..c5f93d719a3 100644
--- a/indra/newview/skins/default/xui/pt/panel_block_list_sidetray.xml
+++ b/indra/newview/skins/default/xui/pt/panel_block_list_sidetray.xml
@@ -1,11 +1,10 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="block_list_panel">
-	<panel label="bottom_panel" name="blocked_buttons_panel">
-		<filter_editor label="Filtrar" name="blocked_filter_input"/>
-		<menu_button name="blocked_gear_btn" tool_tip="Ações em uma pessoa ou um objeto selecionado"/>
-		<menu_button name="view_btn" tool_tip="Opções de ordenação"/>
-		<menu_button name="plus_btn" tool_tip="Escolher um residente ou um objeto a ser bloqueado"/>
-		<button name="unblock_btn" tool_tip="Remover residente ou objeto da lista dos bloqueados"/>
-	</panel>
-	<block_list name="blocked" tool_tip="Lista atual dos residentes bloqueados"/>
+	<text name="title_text">
+		Lista de bloqueados
+	</text>
+	<scroll_list name="blocked" tool_tip="Lista atual dos residentes bloqueados"/>
+	<button label="Bloquear residente..." label_selected="Bloquear residente..." name="Block resident..." tool_tip="Selecione o residente a bloquear"/>
+	<button label="Bloquear objeto por nome..." label_selected="Bloquear objeto por nome..." name="Block object by name..."/>
+	<button label="Desbloquear" label_selected="Desbloquear" name="Unblock" tool_tip="Remover residente ou objeto da lista dos bloqueados"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_conversation_list_item.xml b/indra/newview/skins/default/xui/pt/panel_conversation_list_item.xml
deleted file mode 100644
index f56168c9629..00000000000
--- a/indra/newview/skins/default/xui/pt/panel_conversation_list_item.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="conversation_list_item">
-	<layout_stack name="conversation_item_stack">
-		<layout_panel name="conversation_title_panel">
-			<text name="conversation_title" value="(carregando)"/>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_conversation_log_list_item.xml b/indra/newview/skins/default/xui/pt/panel_conversation_log_list_item.xml
deleted file mode 100644
index 74daded58f7..00000000000
--- a/indra/newview/skins/default/xui/pt/panel_conversation_log_list_item.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="conversation_log_list_item">
-	<icon name="voice_session_icon" tool_tip="Uma conversa de voz foi incluída"/>
-	<icon name="unread_ims_icon" tool_tip="Chegaram mensagens enquanto você estava desconectado"/>
-	<button name="delete_btn" tool_tip="Remover esta entrada"/>
-</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_group_list_item.xml b/indra/newview/skins/default/xui/pt/panel_group_list_item.xml
index 04908785077..19c34d2f103 100644
--- a/indra/newview/skins/default/xui/pt/panel_group_list_item.xml
+++ b/indra/newview/skins/default/xui/pt/panel_group_list_item.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="group_list_item">
 	<text name="group_name" value="Desconhecido"/>
-	<button name="info_btn" tool_tip="Mais informações"/>
 	<button name="profile_btn" tool_tip="Ver perfil"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_people.xml b/indra/newview/skins/default/xui/pt/panel_people.xml
index babb48c208f..f3af15b9916 100644
--- a/indra/newview/skins/default/xui/pt/panel_people.xml
+++ b/indra/newview/skins/default/xui/pt/panel_people.xml
@@ -14,53 +14,81 @@ Em busca de alguém para conversar? Procure no [secondlife:///app/worldmap Mapa-
 	<string name="no_filtered_friends_msg">
 		Não encontrou o que procura? Tente buscar no [secondlife:///app/search/people/[SEARCH_TERM] Search].
 	</string>
+	<string name="people_filter_label" value="Filtro de pessoas"/>
+	<string name="groups_filter_label" value="Filtro de grupos"/>
 	<string name="no_filtered_groups_msg" value="Não encontrou o que procura? Tente buscar no [secondlife:///app/search/groups/[SEARCH_TERM] Search]."/>
 	<string name="no_groups_msg" value="À procura de grupos interessantes? Tente fazer uma [secondlife:///app/search/groups Busca]."/>
 	<string name="MiniMapToolTipMsg" value="[REGION](Clique duas vezes para abrir o mapa, shift+arraste para a visão pan)"/>
 	<string name="AltMiniMapToolTipMsg" value="[REGION](Clique duas vezes para teletransportar, shift+arraste para a visão pan)"/>
+	<filter_editor label="Filtro" name="filter_input"/>
 	<tab_container name="tabs">
 		<panel label="PROXIMIDADE" name="nearby_panel">
-			<panel label="bottom_panel" name="nearby_buttons_panel">
-				<filter_editor label="Filtrar pessoas" name="nearby_filter_input"/>
-				<button name="gear_btn" tool_tip="Ações nas pessoas selecionadas"/>
-				<menu_button name="nearby_view_btn" tool_tip="Opções de exibição/ordenação"/>
-				<button name="add_friend_btn" tool_tip="Oferecer amizade ao residente"/>
-				<dnd_button name="nearby_del_btn" tool_tip="Remover a pessoa selecionada dos amigos"/>
+			<panel label="bottom_panel" name="bottom_panel">
+				<menu_button name="nearby_view_sort_btn" tool_tip="Opções"/>
+				<button name="add_friend_btn" tool_tip="Adicionar o residente selecionado para sua lista de amigos"/>
 			</panel>
 		</panel>
-		<panel label="AMIGOS" name="friends_panel">
-			<panel label="bottom_panel" name="friends_buttons_panel">
-				<filter_editor label="Filtrar pessoas" name="friends_filter_input"/>
-				<button name="gear_btn" tool_tip="Ações nas pessoas selecionadas"/>
-				<menu_button name="friends_view_btn" tool_tip="Opções de exibição/ordenação"/>
-				<button name="friends_add_btn" tool_tip="Oferecer amizade ao residente"/>
-				<dnd_button name="friends_del_btn" tool_tip="Remover a pessoa selecionada dos amigos"/>
-			</panel>
+		<panel label="MEUS AMIGOS" name="friends_panel">
 			<accordion name="friends_accordion">
 				<accordion_tab name="tab_online" title="Online"/>
 				<accordion_tab name="tab_all" title="Todos"/>
 			</accordion>
+			<panel label="bottom_panel" name="bottom_panel">
+				<layout_stack name="bottom_panel">
+					<layout_panel name="options_gear_btn_panel">
+						<menu_button name="friends_viewsort_btn" tool_tip="Mostrar opções adicionais"/>
+					</layout_panel>
+					<layout_panel name="add_btn_panel">
+						<button name="add_btn" tool_tip="Oferecer amizade para um residente"/>
+					</layout_panel>
+					<layout_panel name="trash_btn_panel">
+						<dnd_button name="del_btn" tool_tip="Remover a pessoa selecionada da sua lista de amigos"/>
+					</layout_panel>
+				</layout_stack>
+			</panel>
 		</panel>
-		<panel label="GRUPOS" name="groups_panel">
-			<panel label="bottom_panel" name="groups_buttons_panel">
-				<filter_editor label="Filtrar grupos" name="groups_filter_input"/>
-				<menu_button name="groups_gear_btn" tool_tip="Ações no grupo selecionado"/>
-				<menu_button name="groups_view_btn" tool_tip="Opções de exibição/ordenação"/>
-				<menu_button name="plus_btn" tool_tip="Entrar em um grupo/Criar novo grupo"/>
-				<dnd_button name="minus_btn" tool_tip="Sair do grupo selecionado"/>
+		<panel label="MEUS GRUPOS" name="groups_panel">
+			<panel label="bottom_panel" name="bottom_panel">
+				<menu_button name="groups_viewsort_btn" tool_tip="Opções"/>
+				<button name="plus_btn" tool_tip="Ingressar em um grupo/Criar novo grupo"/>
+				<button name="activate_btn" tool_tip="Ativar o grupo selecionado"/>
 			</panel>
 		</panel>
 		<panel label="RECENTE" name="recent_panel">
-			<panel label="bottom_panel" name="recent_buttons_panel">
-				<filter_editor label="Filtrar pessoas" name="recent_filter_input"/>
-				<button name="gear_btn" tool_tip="Ações nas pessoas selecionadas"/>
-				<menu_button name="recent_view_btn" tool_tip="Opções de exibição/ordenação"/>
-				<button name="add_friend_btn" tool_tip="Oferecer amizade ao residente"/>
-				<dnd_button name="recent_del_btn" tool_tip="Remover a pessoa selecionada dos amigos"/>
+			<panel label="bottom_panel" name="bottom_panel">
+				<menu_button name="recent_viewsort_btn" tool_tip="Opções"/>
+				<button name="add_friend_btn" tool_tip="Adicionar o residente selecionado para sua lista de amigos"/>
 			</panel>
 		</panel>
-		<panel label="BLOQUEADA" name="blocked_panel">
-			<panel label="Residentes e objetos bloqueados" name="panel_block_list_sidetray"/>
-		</panel>
 	</tab_container>
+	<panel name="button_bar">
+		<layout_stack name="bottom_bar_ls">
+			<layout_panel name="view_profile_btn_lp">
+				<button label="Perfil" name="view_profile_btn" tool_tip="Exibir fotografia, grupos e outras informações dos residentes"/>
+			</layout_panel>
+			<layout_panel name="im_btn_lp">
+				<button label="MI" name="im_btn" tool_tip="Abrir sessão de mensagem instantânea"/>
+			</layout_panel>
+			<layout_panel name="call_btn_lp">
+				<button label="Ligar" name="call_btn" tool_tip="Ligar para este residente"/>
+			</layout_panel>
+			<layout_panel name="share_btn_lp">
+				<button label="Compartilhar" name="share_btn" tool_tip="Compartilhar item de inventário"/>
+			</layout_panel>
+			<layout_panel name="teleport_btn_lp">
+				<button label="Teletransportar" name="teleport_btn" tool_tip="Oferecer teletransporte"/>
+			</layout_panel>
+		</layout_stack>
+		<layout_stack name="bottom_bar_ls1">
+			<layout_panel name="group_info_btn_lp">
+				<button label="Perfil do grupo" name="group_info_btn" tool_tip="Exibir dados do grupo"/>
+			</layout_panel>
+			<layout_panel name="chat_btn_lp">
+				<button label="Bate-papo de grupo" name="chat_btn" tool_tip="Nova sessão de bate-papo"/>
+			</layout_panel>
+			<layout_panel name="group_call_btn_lp">
+				<button label="Ligar para o grupo" name="group_call_btn" tool_tip="Ligar para este grupo"/>
+			</layout_panel>
+		</layout_stack>
+	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_chat.xml b/indra/newview/skins/default/xui/pt/panel_preferences_chat.xml
index baf14c2c23f..350d53b81c7 100644
--- a/indra/newview/skins/default/xui/pt/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/pt/panel_preferences_chat.xml
@@ -1,86 +1,34 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Chat" name="chat">
-	<panel>
-		<check_box initial_value="true" label="Executar animação digitada quando estiver conversando" name="play_typing_animation"/>
-		<check_box label="Enviar MIs por email se estiver desconectado" name="send_im_to_email"/>
-		<check_box label="Apenas amigos e grupos podem me ligar ou enviar MIs" name="voice_call_friends_only_check"/>
-		<text name="font_size">
-			Tamanho da fonte:
-		</text>
-		<combo_box name="chat_font_size">
-			<item label="Pequeno" name="Small" value="0"/>
-			<item label="Médio" name="Medium" value="1"/>
-			<item label="Grande" name="Large" value="2"/>
-		</combo_box>
-		<check_box label="Balão de bate-papo" name="bubble_text_chat"/>
-	</panel>
-	<panel>
-		<text name="notifications">
-			Notificações
-		</text>
-		<text name="friend_ims">
-			MIs de amigos:
-		</text>
-		<combo_box name="FriendIMOptions">
-			<item label="Abrir janela Conversas" name="OpenConversationsWindow" value="openconversations"/>
-			<item label="Abrir pop up com mensagem" name="PopUpMessage" value="toast"/>
-			<item label="Piscar botão da barra de ferramentas" name="FlashToolbarButton" value="flash"/>
-			<item label="Nenhum" name="None" value="none"/>
-		</combo_box>
-		<text name="non_friend_ims">
-			MIs de não amigos:
-		</text>
-		<combo_box name="NonFriendIMOptions">
-			<item label="Abrir janela Conversas" name="OpenConversationsWindow" value="openconversations"/>
-			<item label="Abrir pop up com mensagem" name="PopUpMessage" value="toast"/>
-			<item label="Piscar botão da barra de ferramentas" name="FlashToolbarButton" value="flash"/>
-			<item label="Nenhum" name="None" value="none"/>
-		</combo_box>
-		<text name="conference_ims">
-			MIs de conferências:
-		</text>
-		<combo_box name="ConferenceIMOptions">
-			<item label="Abrir janela Conversas" name="OpenConversationsWindow" value="openconversations"/>
-			<item label="Abrir pop up com mensagem" name="PopUpMessage" value="toast"/>
-			<item label="Piscar botão da barra de ferramentas" name="FlashToolbarButton" value="flash"/>
-			<item label="Nenhum" name="None" value="none"/>
-		</combo_box>
-		<text name="group_chat">
-			Bate-papo de grupo:
-		</text>
-		<combo_box name="GroupChatOptions">
-			<item label="Abrir janela Conversas" name="OpenConversationsWindow" value="openconversations"/>
-			<item label="Abrir pop up com mensagem" name="PopUpMessage" value="toast"/>
-			<item label="Piscar botão da barra de ferramentas" name="FlashToolbarButton" value="flash"/>
-			<item label="Nenhum" name="None" value="none"/>
-		</combo_box>
-		<text name="nearby_chat">
-			Bate-papo local:
-		</text>
-		<combo_box name="NearbyChatOptions">
-			<item label="Abrir janela Conversas" name="OpenConversationsWindow" value="openconversations"/>
-			<item label="Abrir pop up com mensagem" name="PopUpMessage" value="toast"/>
-			<item label="Piscar botão da barra de ferramentas" name="FlashToolBarButton" value="flash"/>
-			<item label="Nenhum" name="None" value="none"/>
-		</combo_box>
-		<text name="notifications_alert">
-			Para interromper temporariamente todas as notificações, use Comunicar &gt; Não perturbe.
-		</text>
-	</panel>
-	<panel>
-		<text name="play_sound">
-			Executar som:
-		</text>
-		<check_box label="Nova conversa" name="new_conversation"/>
-		<check_box label="Chamada de voz recebida" name="incoming_voice_call"/>
-		<check_box label="Oferta de teletransporte" name="teleport_offer"/>
-		<check_box label="Oferta de inventário" name="inventory_offer"/>
-	</panel>
-	<panel>
-		<button label="Limpar registro..." name="clear_log"/>
-		<button label="Excluir transcrições..." name="delete_transcripts"/>
-		<button label="Procurar..." label_selected="Procurar" name="log_path_button"/>
-	</panel>
+	<text name="font_size">
+		Tamanho da fonte:
+	</text>
+	<radio_group name="chat_font_size">
+		<radio_item label="Pequeno" name="radio" value="0"/>
+		<radio_item label="Médio" name="radio2" value="1"/>
+		<radio_item label="Grande" name="radio3" value="2"/>
+	</radio_group>
+	<check_box initial_value="true" label="Executar animação digitada quando estiver conversando" name="play_typing_animation"/>
+	<check_box label="Enviar MIs por email se estiver desconectado" name="send_im_to_email"/>
+	<check_box label="Ativar MIs e bate-papos de texto simples" name="plain_text_chat_history"/>
+	<check_box label="Balão de bate-papo" name="bubble_text_chat"/>
+	<text name="show_ims_in_label">
+		Mostrar MIs em:
+	</text>
+	<text name="requires_restart_label">
+		(Reinicie para ativar)
+	</text>
+	<radio_group name="chat_window" tool_tip="Exibir cada bate-papo em uma janela separada ou exibir todos em uma única janela com uma aba para cada pessoa (requer reinício)">
+		<radio_item label="Janelas separadas" name="radio" value="0"/>
+		<radio_item label="Guias" name="radio2" value="1"/>
+	</radio_group>
+	<text name="disable_toast_label">
+		Ativar pop-ups de novos bate-papos:
+	</text>
+	<check_box label="Bate-papo de grupo" name="EnableGroupChatPopups" tool_tip="Exibir pop-up de bate-papos novos de grupos"/>
+	<check_box label="Bate-papos de MI" name="EnableIMChatPopups" tool_tip="Exibir pop-up de mensagens instantâneas novas"/>
+	<spinner label="Transição de avisos de bate-papos por perto:" name="nearby_toasts_lifetime"/>
+	<spinner label="Transição de avisos de bate-papos por perto:" name="nearby_toasts_fadingtime"/>
 	<button label="Tradução..." name="ok_btn"/>
 	<button label="Substituição automática..." name="autoreplace_showgui"/>
 	<button label="Verificando a ortografia..." name="spellcheck_showgui"/>
diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_general.xml b/indra/newview/skins/default/xui/pt/panel_preferences_general.xml
index 8a0495f9bb5..c53aa7d5f70 100644
--- a/indra/newview/skins/default/xui/pt/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/pt/panel_preferences_general.xml
@@ -69,9 +69,6 @@
 		<combo_box.item label="(nunca)" name="item4"/>
 	</combo_box>
 	<text name="text_box3">
-		Resposta de Não perturbe:
+		Mensagem do modo ocupado:
 	</text>
-	<text_editor name="do_not_disturb_response">
-		log_in_to_change
-	</text_editor>
 </panel>
diff --git a/indra/newview/skins/default/xui/pt/sidepanel_task_info.xml b/indra/newview/skins/default/xui/pt/sidepanel_task_info.xml
index f0fd438cef5..3cfe0fe4f41 100644
--- a/indra/newview/skins/default/xui/pt/sidepanel_task_info.xml
+++ b/indra/newview/skins/default/xui/pt/sidepanel_task_info.xml
@@ -72,7 +72,6 @@
 			<combo_box.item label="Comprar objeto" name="Buyobject"/>
 			<combo_box.item label="Pagar por objeto" name="Payobject"/>
 			<combo_box.item label="Abrir" name="Open"/>
-			<combo_box.item label="Zoom" name="Zoom"/>
 		</combo_box>
 		<panel name="perms_inv">
 			<text name="perm_modify">
diff --git a/indra/newview/skins/default/xui/pt/strings.xml b/indra/newview/skins/default/xui/pt/strings.xml
index 4bf18aab705..bc72b860201 100644
--- a/indra/newview/skins/default/xui/pt/strings.xml
+++ b/indra/newview/skins/default/xui/pt/strings.xml
@@ -128,7 +128,7 @@
 		Sair
 	</string>
 	<string name="create_account_url">
-		http://join.secondlife.com/?sourceid=[sourceid]
+		http://join.secondlife.com/index.php?lang=pt-BR&amp;sourceid=[sourceid]
 	</string>
 	<string name="LoginFailedViewerNotPermitted">
 		O visualizador utilizado já não é compatível com o Second Life.  Visite a página abaixo para baixar uma versão atual: http://secondlife.com/download
@@ -571,8 +571,8 @@ Pessoas com contas gratuitas não poderão acessar o Second Life no momento para
 	<string name="AvatarAway">
 		Distante
 	</string>
-	<string name="AvatarDoNotDisturb">
-		Não perturbe
+	<string name="AvatarBusy">
+		Ocupado
 	</string>
 	<string name="AvatarMuted">
 		Mudo
@@ -808,12 +808,6 @@ Pessoas com contas gratuitas não poderão acessar o Second Life no momento para
 	<string name="ST_NO_JOINT">
 		Não é possível encontrar a raiz (ROOT) ou junção (JOINT).
 	</string>
-	<string name="NearbyChatTitle">
-		Bate-papo local
-	</string>
-	<string name="NearbyChatLabel">
-		(Bate-papo local)
-	</string>
 	<string name="whisper">
 		sussurra:
 	</string>
@@ -877,9 +871,6 @@ Pessoas com contas gratuitas não poderão acessar o Second Life no momento para
 	<string name="ControlYourCamera">
 		Controle sua camera
 	</string>
-	<string name="AgentNameSubst">
-		(Você)
-	</string>
 	<string name="TeleportYourAgent">
 		Teletransportá-lo
 	</string>
@@ -964,6 +955,18 @@ Pessoas com contas gratuitas não poderão acessar o Second Life no momento para
 	<string name="dictionary_files">
 		Dicionários
 	</string>
+	<string name="AvatarSetNotAway">
+		deixar como ausente
+	</string>
+	<string name="AvatarSetAway">
+		deixar como ausente
+	</string>
+	<string name="AvatarSetNotBusy">
+		deixar como não ocupado
+	</string>
+	<string name="AvatarSetBusy">
+		Deixar como ocupado
+	</string>
 	<string name="shape">
 		Silhueta
 	</string>
@@ -1920,8 +1923,8 @@ Pessoas com contas gratuitas não poderão acessar o Second Life no momento para
 	<string name="PanelContentsNewScript">
 		Novo Script
 	</string>
-	<string name="DoNotDisturbModeResponseDefault">
-		Este residente ativou o &quot;Não perturbe&quot; e verá sua mensagem mais tarde.
+	<string name="BusyModeResponseDefault">
+		O residente para o qual escreveu está no modo &apos;ocupado&apos;, ou seja, ele prefere não receber nada no momento. Sua mensagem será exibida como uma MI mais tarde.
 	</string>
 	<string name="MuteByName">
 		(por nome)
@@ -2034,6 +2037,9 @@ Pessoas com contas gratuitas não poderão acessar o Second Life no momento para
 	<string name="GroupMoneyDate">
 		[weekday,datetime,utc] [mth,datetime,utc] [day,datetime,utc], [year,datetime,utc]
 	</string>
+	<string name="ViewerObjectContents">
+		Conteúdo
+	</string>
 	<string name="AcquiredItems">
 		Itens adquiridos
 	</string>
@@ -3747,7 +3753,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 		Região em geral
 	</string>
 	<string name="LocationCtrlSeeAVsTooltip">
-		Os avatares neste lote não podem ser vistos ou ouvidos por avatares fora dele
+		Avatar visíveis e bate-papo permitido fora deste terreno
 	</string>
 	<string name="LocationCtrlPathfindingDirtyTooltip">
 		Os objetos que se movem podem não se comportar corretamente nesta região até que ela seja recarregada.
@@ -3824,12 +3830,6 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 	<string name="IM_unblock_only_groups_friends">
 		Para visualizar esta mensagem, você deve desmarcar &quot;Apenas amigos e grupos podem me ligar ou enviar MIs&quot; em Preferências/Privacidade.
 	</string>
-	<string name="OnlineStatus">
-		Conectado
-	</string>
-	<string name="OfflineStatus">
-		Desconectado
-	</string>
 	<string name="answered_call">
 		Ligação atendida
 	</string>
@@ -3839,9 +3839,6 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 	<string name="you_joined_call">
 		Você entrou na ligação
 	</string>
-	<string name="you_auto_rejected_call-im">
-		Você recusou automaticamente a chamada de voz enquanto &quot;Não perturbe&quot; estava ativado.
-	</string>
 	<string name="name_started_call">
 		[NAME] iniciou uma ligação de voz
 	</string>
@@ -3854,9 +3851,6 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 	<string name="hang_up-im">
 		Saiu da ligação de voz
 	</string>
-	<string name="conference-title">
-		Bate-papo com várias pessoas
-	</string>
 	<string name="conference-title-incoming">
 		Conversa com [AGENT_NAME]
 	</string>
@@ -4732,9 +4726,6 @@ Tente colocar o caminho do editor entre aspas.
 	<string name="Command_Chat_Label">
 		Bate-papo
 	</string>
-	<string name="Command_Conversations_Label">
-		Conversas
-	</string>
 	<string name="Command_Compass_Label">
 		Bússola
 	</string>
@@ -4810,9 +4801,6 @@ Tente colocar o caminho do editor entre aspas.
 	<string name="Command_Chat_Tooltip">
 		Bater papo com pessoas próximas usando texto
 	</string>
-	<string name="Command_Conversations_Tooltip">
-		Conversar com todos
-	</string>
 	<string name="Command_Compass_Tooltip">
 		Bússola
 	</string>
@@ -4942,13 +4930,4 @@ Tente colocar o caminho do editor entre aspas.
 	<string name="UserDictionary">
 		[Usuário]
 	</string>
-	<string name="logging_calls_disabled_log_empty">
-		As conversas não estão sendo registradas. Para começar a manter um registro, selecione &quot;Salvar: apenas registro&quot; ou &quot;Salvar: registro e transcrições&quot; em Preferências&gt; Bate-papo.
-	</string>
-	<string name="logging_calls_disabled_log_not_empty">
-		Nenhuma conversa será registrada. Para recomeçar a gravação de registros, selecione &quot;Salvar: apenas registro&quot; ou &quot;Salvar: registro e transcrições&quot; em Preferências&gt; Bate-papo.
-	</string>
-	<string name="logging_calls_enabled_log_empty">
-		Não há conversas registradas. Depois que você entrar em contato com alguém, ou alguém entrar em contato com você, um registro será exibido aqui.
-	</string>
 </strings>
diff --git a/indra/newview/skins/default/xui/ru/floater_conversation_log.xml b/indra/newview/skins/default/xui/ru/floater_conversation_log.xml
deleted file mode 100644
index 090ac7193ac..00000000000
--- a/indra/newview/skins/default/xui/ru/floater_conversation_log.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_conversation_log" title="ЖУРНАЛ РАЗГОВОРА">
-	<panel name="buttons_panel">
-		<filter_editor label="Фильтр для людей" name="people_filter_input"/>
-		<menu_button name="conversation_view_btn" tool_tip="Параметры просмотра/сортировки"/>
-		<menu_button name="conversations_gear_btn" tool_tip="Действия с выбранным жителем или группой"/>
-	</panel>
-</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_conversation_preview.xml b/indra/newview/skins/default/xui/ru/floater_conversation_preview.xml
deleted file mode 100644
index 23225fcf56d..00000000000
--- a/indra/newview/skins/default/xui/ru/floater_conversation_preview.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="preview_conversation" title="РАЗГОВОР:">
-	<floater.string name="Title">
-		РАЗГОВОР: [NAME]
-	</floater.string>
-	<text name="page_label" value="Страница"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_im_container.xml b/indra/newview/skins/default/xui/ru/floater_im_container.xml
index eba7a19cd4a..b147cfa2b32 100644
--- a/indra/newview/skins/default/xui/ru/floater_im_container.xml
+++ b/indra/newview/skins/default/xui/ru/floater_im_container.xml
@@ -1,29 +1,2 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<multi_floater name="floater_im_box" title="ОБЩЕНИЕ">
-	<string name="collapse_icon" value="Conv_toolbar_collapse"/>
-	<string name="expand_icon" value="Conv_toolbar_expand"/>
-	<layout_stack name="conversations_stack">
-		<layout_panel name="conversations_layout_panel">
-			<layout_stack name="conversations_pane_buttons_stack">
-				<layout_panel name="conversations_pane_buttons_expanded">
-					<menu_button name="sort_btn" tool_tip="Параметры просмотра/сортировки"/>
-					<button name="add_btn" tool_tip="Начать разговор"/>
-					<button name="speak_btn" tool_tip="Разговаривать через микрофон"/>
-				</layout_panel>
-				<layout_panel name="conversations_pane_buttons_collapsed">
-					<button name="expand_collapse_btn" tool_tip="Свернуть/развернуть этот список"/>
-				</layout_panel>
-			</layout_stack>
-		</layout_panel>
-		<layout_panel name="messages_layout_panel">
-			<panel_container name="im_box_tab_container">
-				<panel name="stub_panel">
-					<button name="stub_collapse_btn" tool_tip="Свернуть эту панель"/>
-					<text name="stub_textbox">
-						Разговор отображается в отдельном окне.   [secondlife:/// Вернуть.]
-					</text>
-				</panel>
-			</panel_container>
-		</layout_panel>
-	</layout_stack>
-</multi_floater>
+<multi_floater name="floater_im_box" title="ОБЩЕНИЕ"/>
diff --git a/indra/newview/skins/default/xui/ru/floater_im_session.xml b/indra/newview/skins/default/xui/ru/floater_im_session.xml
index ea110ffb44a..604d9dc6d33 100644
--- a/indra/newview/skins/default/xui/ru/floater_im_session.xml
+++ b/indra/newview/skins/default/xui/ru/floater_im_session.xml
@@ -1,59 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="panel_im">
-	<floater.string name="call_btn_start">
-		Conv_toolbar_open_call
-	</floater.string>
-	<floater.string name="call_btn_stop">
-		Conv_toolbar_hang_up
-	</floater.string>
-	<floater.string name="collapseline_icon" value="Conv_collapse_to_one_line"/>
-	<floater.string name="expandline_icon" value="Conv_expand_one_line"/>
-	<floater.string name="collapse_icon" value="Conv_toolbar_collapse"/>
-	<floater.string name="expand_icon" value="Conv_toolbar_expand"/>
-	<floater.string name="tear_off_icon" value="Conv_toolbar_arrow_ne"/>
-	<floater.string name="return_icon" value="Conv_toolbar_arrow_sw"/>
-	<floater.string name="participant_added" value="[NAME] приглашен(а) на разговор."/>
-	<floater.string name="multiple_participants_added" value="[NAME] приглашены на разговор."/>
-	<floater.string name="tooltip_to_separate_window" value="Перенести этот разговор в отдельное окно"/>
-	<floater.string name="tooltip_to_main_window" value="Вернуть этот разговор в главное окно"/>
-	<floater.string name="start_call_button_tooltip" value="Открыть голосовое подключение"/>
-	<floater.string name="end_call_button_tooltip" value="Закрыть голосовое подключение"/>
-	<floater.string name="expcol_button_not_tearoff_tooltip" value="Свернуть эту панель"/>
-	<floater.string name="expcol_button_tearoff_and_expanded_tooltip" value="Свернуть список участников"/>
-	<floater.string name="expcol_button_tearoff_and_collapsed_tooltip" value="Развернуть список участников"/>
-	<view name="contents_view">
-		<layout_stack name="main_stack">
-			<layout_panel name="toolbar_panel">
-				<menu_button name="view_options_btn" tool_tip="Параметры просмотра/сортировки"/>
-				<menu_button name="gear_btn" tool_tip="Действия с выбранным жителем"/>
-				<button name="add_btn" tool_tip="Добавить участника в этот разговор"/>
-				<button name="voice_call_btn" tool_tip="Открыть голосовое подключение"/>
-				<button name="close_btn" tool_tip="Завершить этот разговор"/>
-				<button name="expand_collapse_btn" tool_tip="Развернуть/свернуть эту панель"/>
-			</layout_panel>
-			<layout_panel name="body_panel">
-				<layout_stack name="im_panels">
-					<layout_panel name="right_part_holder">
-						<panel name="trnsAndChat_panel">
-							<layout_stack name="translate_and_chat_stack">
-								<layout_panel name="translate_chat_checkbox_lp">
-									<check_box label="Переводить чат" name="translate_chat_checkbox"/>
-								</layout_panel>
-							</layout_stack>
-						</panel>
-					</layout_panel>
-				</layout_stack>
-			</layout_panel>
-			<layout_panel name="chat_layout_panel">
-				<layout_stack name="input_panels">
-					<layout_panel name="input_editor_layout_panel">
-						<chat_editor label="Кому" name="chat_editor"/>
-					</layout_panel>
-					<layout_panel name="input_button_layout_panel">
-						<button name="minz_btn" tool_tip="Показать/скрыть панель сообщений"/>
-					</layout_panel>
-				</layout_stack>
-			</layout_panel>
-		</layout_stack>
-	</view>
+	<layout_stack name="im_panels">
+		<layout_panel>
+			<line_editor label="Кому" name="chat_editor"/>
+		</layout_panel>
+	</layout_stack>
 </floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_incoming_call.xml b/indra/newview/skins/default/xui/ru/floater_incoming_call.xml
index 3f61421d0ce..072c20147df 100644
--- a/indra/newview/skins/default/xui/ru/floater_incoming_call.xml
+++ b/indra/newview/skins/default/xui/ru/floater_incoming_call.xml
@@ -10,7 +10,7 @@
 		анонимно
 	</floater.string>
 	<floater.string name="VoiceInviteP2P">
-		вызывает вас.
+		вызывает.
 	</floater.string>
 	<floater.string name="VoiceInviteAdHoc">
 		теперь участвует в групповом голосовом чате.
@@ -25,9 +25,9 @@
 		Хотите выйти из чата «[CURRENT_CHAT]» и присоединиться к этому голосовому чату?
 	</floater.string>
 	<text name="question">
-		Если вы ответите, вы покинете текущий голосовой чат.
+		Хотите выйти из чата «[CURRENT_CHAT]» и присоединиться к этому голосовому чату?
 	</text>
-	<button label="Ответить" label_selected="Ответить" name="Accept"/>
-	<button label="Игнорировать" label_selected="Игнорировать" name="Reject"/>
-	<button label="Открыть IM" name="Start IM"/>
+	<button label="Принять" label_selected="Принять" name="Accept"/>
+	<button label="Отклонить" label_selected="Отклонить" name="Reject"/>
+	<button label="Начать IM" name="Start IM"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_pathfinding_console.xml b/indra/newview/skins/default/xui/ru/floater_pathfinding_console.xml
index 8faddb18058..fa72df04fdc 100644
--- a/indra/newview/skins/default/xui/ru/floater_pathfinding_console.xml
+++ b/indra/newview/skins/default/xui/ru/floater_pathfinding_console.xml
@@ -71,7 +71,7 @@
 			<text name="show_label">
 				Показать:
 			</text>
-			<check_box label="Тест" name="show_world"/>
+			<check_box label="Мир" name="show_world"/>
 			<check_box label="Только перемещаемые предметы" name="show_world_movables_only"/>
 			<check_box label="Навигационная сетка" name="show_navmesh"/>
 			<text name="show_walkability_label">
diff --git a/indra/newview/skins/default/xui/ru/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/ru/floater_texture_ctrl.xml
index a9a21e7d4a1..db37089aeba 100644
--- a/indra/newview/skins/default/xui/ru/floater_texture_ctrl.xml
+++ b/indra/newview/skins/default/xui/ru/floater_texture_ctrl.xml
@@ -19,7 +19,7 @@
 	<button label="По умолчанию" label_selected="По умолчанию" name="Default"/>
 	<button label="Очистить" label_selected="Очистить" name="Blank"/>
 	<button label="Нет" label_selected="Нет" name="None"/>
-	<check_box initial_value="истина" label="Применить сейчас" name="apply_immediate_check"/>
+	<check_box initial_value="истина" label="Просмотр вживую" name="apply_immediate_check"/>
 	<text name="preview_disabled" value="Просмотр отключен"/>
 	<filter_editor label="Фильтровать текстуры" name="inventory search editor"/>
 	<check_box initial_value="ложь" label="Показывать папки" name="show_folders_check"/>
diff --git a/indra/newview/skins/default/xui/ru/floater_voice_chat_volume.xml b/indra/newview/skins/default/xui/ru/floater_voice_chat_volume.xml
deleted file mode 100644
index 5a7e7a70610..00000000000
--- a/indra/newview/skins/default/xui/ru/floater_voice_chat_volume.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_voice_volume" title="ГРОМКОСТЬ ГОЛОСОВОГО ЧАТА">
-	<slider label="Голосовой чат" name="chat_voice_volume"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_voice_effect.xml b/indra/newview/skins/default/xui/ru/floater_voice_effect.xml
index d3cef042a31..1eb8a94d7a7 100644
--- a/indra/newview/skins/default/xui/ru/floater_voice_effect.xml
+++ b/indra/newview/skins/default/xui/ru/floater_voice_effect.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater label="Места" name="voice_effects" title="ПРОСМОТР ИЗМЕНЕНИЯ ГОЛОСА">
+<floater label="Места" name="voice_effects" title="ИЗМЕНЕНИЕ ГОЛОСА">
 	<string name="no_voice_effect">
 		(Нет изменения голоса)
 	</string>
diff --git a/indra/newview/skins/default/xui/ru/floater_voice_volume.xml b/indra/newview/skins/default/xui/ru/floater_voice_volume.xml
deleted file mode 100644
index aca6bd518aa..00000000000
--- a/indra/newview/skins/default/xui/ru/floater_voice_volume.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!--
-  Not can_close / no title to avoid window chrome
-  Single instance - only have one at a time, recycle it each spawn
--->
-<floater name="floater_voice_volume" title="ГРОМКОСТЬ ГОЛОСА">
-	<slider name="volume_slider" tool_tip="Громкость голоса" value="0.5"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/ru/menu_cof_gear.xml b/indra/newview/skins/default/xui/ru/menu_cof_gear.xml
index b7a32dfd753..0332c03a046 100644
--- a/indra/newview/skins/default/xui/ru/menu_cof_gear.xml
+++ b/indra/newview/skins/default/xui/ru/menu_cof_gear.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu name="Gear COF">
 	<menu label="Новая одежда" name="COF.Gear.New_Clothes"/>
-	<menu label="Новые части тела" name="COF.Gear.New_Body_Parts"/>
+	<menu label="Новые части тела" name="COF.Geear.New_Body_Parts"/>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_conversation.xml b/indra/newview/skins/default/xui/ru/menu_conversation.xml
deleted file mode 100644
index 530b1ea704e..00000000000
--- a/indra/newview/skins/default/xui/ru/menu_conversation.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_conversation_participant">
-	<menu_item_call label="Закрыть разговор" name="close_conversation"/>
-	<menu_item_call label="Открыть голосовой чат" name="open_voice_conversation"/>
-	<menu_item_call label="Прекратить голосовой чат" name="disconnect_from_voice"/>
-	<menu_item_call label="Смотреть профиль" name="view_profile"/>
-	<menu_item_call label="IM" name="im"/>
-	<menu_item_call label="Предложить телепортацию" name="offer_teleport"/>
-	<menu_item_call label="Голосовой вызов" name="voice_call"/>
-	<menu_item_call label="Журнал чата..." name="chat_history"/>
-	<menu_item_call label="Добавить друга" name="add_friend"/>
-	<menu_item_call label="Удалить друга" name="remove_friend"/>
-	<menu_item_call label="Удалить друзей" name="remove_friends"/>
-	<menu_item_call label="Пригласить в группу..." name="invite_to_group"/>
-	<menu_item_call label="Приблизить" name="zoom_in"/>
-	<menu_item_call label="Карта" name="map"/>
-	<menu_item_call label="Поделиться" name="share"/>
-	<menu_item_call label="Заплатить" name="pay"/>
-	<menu_item_check label="Блокировать голос" name="block_unblock"/>
-	<menu_item_check label="Блокировать текст" name="MuteText"/>
-	<menu_item_call label="Профиль группы" name="group_profile"/>
-	<menu_item_call label="Активировать группу" name="activate_group"/>
-	<menu_item_call label="Покинуть группу" name="leave_group"/>
-	<context_menu label="Параметры модератора" name="Moderator Options">
-		<menu_item_check label="Разрешить текстовый чат" name="AllowTextChat"/>
-		<menu_item_call label="Заглушить этого участника" name="ModerateVoiceMuteSelected"/>
-		<menu_item_call label="Позволить говорить этому участнику" name="ModerateVoiceUnMuteSelected"/>
-		<menu_item_call label="Заглушить всех" name="ModerateVoiceMute"/>
-		<menu_item_call label="Позволить говорить всем" name="ModerateVoiceUnmute"/>
-	</context_menu>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_conversation_log_gear.xml b/indra/newview/skins/default/xui/ru/menu_conversation_log_gear.xml
deleted file mode 100644
index 3fbffbe038a..00000000000
--- a/indra/newview/skins/default/xui/ru/menu_conversation_log_gear.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="Conversation Context Menu">
-	<menu_item_call label="IM..." name="IM"/>
-	<menu_item_call label="Голосовой вызов..." name="Call"/>
-	<menu_item_call label="Открыть журнал чата..." name="Chat history"/>
-	<menu_item_call label="Смотреть профиль" name="View Profile"/>
-	<menu_item_call label="Предложить телепорт" name="teleport"/>
-	<menu_item_call label="Добавить друга" name="add_friend"/>
-	<menu_item_call label="Удалить из друзей" name="remove_friend"/>
-	<menu_item_call label="Пригласить в группу..." name="Invite"/>
-	<menu_item_call label="Карта" name="Map"/>
-	<menu_item_call label="Поделиться" name="Share"/>
-	<menu_item_call label="Заплатить" name="Pay"/>
-	<menu_item_check label="Черный список" name="Block/Unblock"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_conversation_log_view.xml b/indra/newview/skins/default/xui/ru/menu_conversation_log_view.xml
deleted file mode 100644
index 928146e273e..00000000000
--- a/indra/newview/skins/default/xui/ru/menu_conversation_log_view.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_conversation_view">
-	<menu_item_check label="Сортировать по имени" name="sort_by_name"/>
-	<menu_item_check label="Сортировать по дате" name="sort_by_date"/>
-	<menu_item_check label="Сначала друзья" name="sort_by_friends"/>
-	<menu_item_call label="Посмотреть журнал локального чата..." name="view_nearby_chat_history"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_im_conversation.xml b/indra/newview/skins/default/xui/ru/menu_im_conversation.xml
deleted file mode 100644
index 1db0b8bae30..00000000000
--- a/indra/newview/skins/default/xui/ru/menu_im_conversation.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="Conversation Gear Menu">
-	<menu_item_call label="Смотреть профиль" name="View Profile"/>
-	<menu_item_call label="Добавить друга" name="Add Friend"/>
-	<menu_item_call label="Удалить друга" name="remove_friend"/>
-	<menu_item_call label="Предложить телепортацию" name="offer_teleport"/>
-	<menu_item_call label="Пригласить в группу..." name="invite_to_group"/>
-	<menu_item_call label="Журнал чата..." name="chat_history"/>
-	<menu_item_call label="Приблизить" name="zoom_in"/>
-	<menu_item_call label="Карта" name="map"/>
-	<menu_item_call label="Поделиться" name="Share"/>
-	<menu_item_call label="Заплатить" name="Pay"/>
-	<menu_item_check label="Блокировать голос" name="Block/Unblock"/>
-	<menu_item_check label="Блокировать текст" name="MuteText"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_im_session_showmodes.xml b/indra/newview/skins/default/xui/ru/menu_im_session_showmodes.xml
deleted file mode 100644
index 35cff8e4bf5..00000000000
--- a/indra/newview/skins/default/xui/ru/menu_im_session_showmodes.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_modes">
-	<menu_item_check label="Компактный вид" name="compact_view"/>
-	<menu_item_check label="Развернутый вид" name="expanded_view"/>
-	<menu_item_check label="Показать время" name="IMShowTime"/>
-	<menu_item_check label="Показывать имена при разговорах" name="IMShowNamesForP2PConv"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_object_icon.xml b/indra/newview/skins/default/xui/ru/menu_object_icon.xml
index 0c50abcfbdf..6229b2e72fe 100644
--- a/indra/newview/skins/default/xui/ru/menu_object_icon.xml
+++ b/indra/newview/skins/default/xui/ru/menu_object_icon.xml
@@ -2,6 +2,4 @@
 <menu name="Object Icon Menu">
 	<menu_item_call label="Профиль объекта..." name="Object Profile"/>
 	<menu_item_call label="Блокировать..." name="Block"/>
-	<menu_item_call label="Показать на карте" name="show_on_map"/>
-	<menu_item_call label="Телепорт в местоположение объекта" name="teleport_to_object"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_outfit_gear.xml b/indra/newview/skins/default/xui/ru/menu_outfit_gear.xml
index d379a172166..93dbd7d6a7a 100644
--- a/indra/newview/skins/default/xui/ru/menu_outfit_gear.xml
+++ b/indra/newview/skins/default/xui/ru/menu_outfit_gear.xml
@@ -23,8 +23,6 @@
 		<menu_item_call label="Новые волосы" name="New Hair"/>
 		<menu_item_call label="Новые глаза" name="New Eyes"/>
 	</menu>
-	<menu_item_call label="Открыть все папки" name="expand"/>
-	<menu_item_call label="Закрыть все папки" name="collapse"/>
 	<menu_item_call label="Переименовать костюм" name="rename"/>
 	<menu_item_call label="Удалить костюм" name="delete_outfit"/>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_participant_view.xml b/indra/newview/skins/default/xui/ru/menu_participant_view.xml
deleted file mode 100644
index 851a42d428a..00000000000
--- a/indra/newview/skins/default/xui/ru/menu_participant_view.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="participant_manu_view">
-	<menu_item_check label="Сортировать разговоры по типу" name="sort_sessions_by_type"/>
-	<menu_item_check label="Сортировать разговоры по имени" name="sort_sessions_by_name"/>
-	<menu_item_check label="Сортировать разговоры по последнему действию" name="sort_sessions_by_recent"/>
-	<menu_item_check label="Сортировать участников по имени" name="sort_participants_by_name"/>
-	<menu_item_check label="Сортировать участников по последнему действию" name="sort_participants_by_recent"/>
-	<menu_item_call label="Изменить настройки..." name="chat_preferences"/>
-	<menu_item_call label="Настройки приватности..." name="privacy_preferences"/>
-	<menu_item_check label="Журнал разговора..." name="Conversation"/>
-	<menu_item_check label="Перевести локальный чат" name="Translate_chat"/>
-	<menu_item_check label="Настройки перевода..." name="Translation_settings"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_people_blocked_gear.xml b/indra/newview/skins/default/xui/ru/menu_people_blocked_gear.xml
deleted file mode 100644
index 157f2ad5e23..00000000000
--- a/indra/newview/skins/default/xui/ru/menu_people_blocked_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_blocked_gear">
-	<menu_item_call label="Разблокировать" name="unblock"/>
-	<menu_item_call label="Профиль…" name="profile"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_people_blocked_plus.xml b/indra/newview/skins/default/xui/ru/menu_people_blocked_plus.xml
deleted file mode 100644
index f42e8f8609b..00000000000
--- a/indra/newview/skins/default/xui/ru/menu_people_blocked_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_blocked_plus">
-	<menu_item_call label="Блокировать жителя по имени..." name="block_resident_by_name"/>
-	<menu_item_call label="Блокировать объект по имени" name="block_object_by_name"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_people_blocked_view.xml b/indra/newview/skins/default/xui/ru/menu_people_blocked_view.xml
deleted file mode 100644
index 8c0150e8aed..00000000000
--- a/indra/newview/skins/default/xui/ru/menu_people_blocked_view.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_blocked_view">
-	<menu_item_check label="Сортировать по имени" name="sort_by_name"/>
-	<menu_item_check label="Сортировать по типу" name="sort_by_type"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_people_friends_view.xml b/indra/newview/skins/default/xui/ru/menu_people_friends_view.xml
deleted file mode 100644
index 7b2dba05396..00000000000
--- a/indra/newview/skins/default/xui/ru/menu_people_friends_view.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_group_plus">
-	<menu_item_check label="Сортировать по имени" name="sort_name"/>
-	<menu_item_check label="Сортировать по статусу" name="sort_status"/>
-	<menu_item_check label="Показывать значки людей" name="view_icons"/>
-	<menu_item_check label="Показывать разрешенные действия" name="view_permissions"/>
-	<menu_item_check label="Посмотреть журнал разговора..." name="view_conversation"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_people_groups.xml b/indra/newview/skins/default/xui/ru/menu_people_groups.xml
index 78d73c9d1ed..e734a83ef08 100644
--- a/indra/newview/skins/default/xui/ru/menu_people_groups.xml
+++ b/indra/newview/skins/default/xui/ru/menu_people_groups.xml
@@ -2,7 +2,7 @@
 <menu name="menu_group_plus">
 	<menu_item_call label="Информация" name="View Info"/>
 	<menu_item_call label="Чат" name="Chat"/>
-	<menu_item_call label="Голосовой вызов" name="Call"/>
+	<menu_item_call label="Звонок" name="Call"/>
 	<menu_item_call label="Активация" name="Activate"/>
 	<menu_item_call label="Покинуть" name="Leave"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_people_groups_view.xml b/indra/newview/skins/default/xui/ru/menu_people_groups_view.xml
deleted file mode 100644
index cbf1c64774f..00000000000
--- a/indra/newview/skins/default/xui/ru/menu_people_groups_view.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_group_plus">
-	<menu_item_check label="Показывать значки группы" name="Display Group Icons"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_people_nearby.xml b/indra/newview/skins/default/xui/ru/menu_people_nearby.xml
index d05b7e7d012..ebce959044d 100644
--- a/indra/newview/skins/default/xui/ru/menu_people_nearby.xml
+++ b/indra/newview/skins/default/xui/ru/menu_people_nearby.xml
@@ -1,16 +1,13 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Avatar Context Menu">
-	<menu_item_call label="Смотреть профиль" name="view_profile"/>
-	<menu_item_call label="IM" name="im"/>
-	<menu_item_call label="Предложить телепорт" name="offer_teleport"/>
-	<menu_item_call label="Голосовой вызов" name="voice_call"/>
-	<menu_item_call label="Посмотреть журнал чата..." name="chat_history"/>
-	<menu_item_call label="Добавить друга" name="add_friend"/>
-	<menu_item_call label="Удалить из друзей" name="remove_friend"/>
-	<menu_item_call label="Пригласить в группу..." name="invite_to_group"/>
-	<menu_item_call label="Приблизить" name="zoom_in"/>
-	<menu_item_call label="Карта" name="map"/>
-	<menu_item_call label="Поделиться" name="share"/>
-	<menu_item_call label="Заплатить" name="pay"/>
-	<menu_item_check label="Черный список" name="block_unblock"/>
+	<menu_item_call label="Смотреть профиль" name="View Profile"/>
+	<menu_item_call label="В друзья" name="Add Friend"/>
+	<menu_item_call label="Удалить из друзей" name="Remove Friend"/>
+	<menu_item_call label="IM" name="IM"/>
+	<menu_item_call label="Звонок" name="Call"/>
+	<menu_item_call label="Карта" name="Map"/>
+	<menu_item_call label="Поделиться" name="Share"/>
+	<menu_item_call label="Заплатить" name="Pay"/>
+	<menu_item_check label="Черный список" name="Block/Unblock"/>
+	<menu_item_call label="Предложить телепорт" name="teleport"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/ru/menu_people_nearby_multiselect.xml
index 88eb56c9f5e..0e8e0d40537 100644
--- a/indra/newview/skins/default/xui/ru/menu_people_nearby_multiselect.xml
+++ b/indra/newview/skins/default/xui/ru/menu_people_nearby_multiselect.xml
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Multi-Selected People Context Menu">
-	<menu_item_call label="Добавить в друзья" name="add_friends"/>
-	<menu_item_call label="Удалить из друзей" name="remove_friends"/>
-	<menu_item_call label="IM" name="im"/>
-	<menu_item_call label="Звонок" name="call"/>
-	<menu_item_call label="Поделиться" name="share"/>
-	<menu_item_call label="Заплатить" name="pay"/>
-	<menu_item_call label="Предложить телепорт" name="offer_teleport"/>
+	<menu_item_call label="Добавить в друзья" name="Add Friends"/>
+	<menu_item_call label="Удалить из друзей" name="Remove Friend"/>
+	<menu_item_call label="IM" name="IM"/>
+	<menu_item_call label="Звонок" name="Call"/>
+	<menu_item_call label="Поделиться" name="Share"/>
+	<menu_item_call label="Заплатить" name="Pay"/>
+	<menu_item_call label="Предложить телепорт" name="teleport"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_people_nearby_view.xml b/indra/newview/skins/default/xui/ru/menu_people_nearby_view.xml
deleted file mode 100644
index 2bc353ad583..00000000000
--- a/indra/newview/skins/default/xui/ru/menu_people_nearby_view.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_group_plus">
-	<menu_item_check label="Сортировать по недавно говорившим" name="sort_by_recent_speakers"/>
-	<menu_item_check label="Сортировать по имени" name="sort_name"/>
-	<menu_item_check label="Сортировать по расстоянию" name="sort_distance"/>
-	<menu_item_check label="Показывать значки людей" name="view_icons"/>
-	<menu_item_check label="Смотреть карту" name="view_map"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_people_recent_view.xml b/indra/newview/skins/default/xui/ru/menu_people_recent_view.xml
deleted file mode 100644
index a009cf081f3..00000000000
--- a/indra/newview/skins/default/xui/ru/menu_people_recent_view.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_group_plus">
-	<menu_item_check label="Сортировать по времени" name="sort_most"/>
-	<menu_item_check label="Сортировать по имени" name="sort_name"/>
-	<menu_item_check label="Показывать значки людей" name="view_icons"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_url_agent.xml b/indra/newview/skins/default/xui/ru/menu_url_agent.xml
index 230d049fad6..0ba3ee152a5 100644
--- a/indra/newview/skins/default/xui/ru/menu_url_agent.xml
+++ b/indra/newview/skins/default/xui/ru/menu_url_agent.xml
@@ -1,8 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Url Popup">
-	<menu_item_call label="Смотреть профиль" name="show_agent"/>
-	<menu_item_call label="Отправить сообщение..." name="send_im"/>
-	<menu_item_call label="Добавить в друзья..." name="add_friend"/>
+	<menu_item_call label="Показать профиль жителя" name="show_agent"/>
 	<menu_item_call label="Копировать название в буфер обмена" name="url_copy_label"/>
 	<menu_item_call label="Копировать URL-адрес SL в буфер обмена" name="url_copy"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_url_objectim.xml b/indra/newview/skins/default/xui/ru/menu_url_objectim.xml
index 1326db708e5..6e7800d3f5d 100644
--- a/indra/newview/skins/default/xui/ru/menu_url_objectim.xml
+++ b/indra/newview/skins/default/xui/ru/menu_url_objectim.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Url Popup">
-	<menu_item_call label="Профиль объекта..." name="show_object"/>
+	<menu_item_call label="Показать информацию об объекте" name="show_object"/>
 	<menu_item_call label="Показать на карте" name="show_on_map"/>
 	<menu_item_call label="Телепорт в местоположение объекта" name="teleport_to_object"/>
 	<menu_item_call label="Копировать название объекта в буфер обмена" name="url_copy_label"/>
diff --git a/indra/newview/skins/default/xui/ru/menu_viewer.xml b/indra/newview/skins/default/xui/ru/menu_viewer.xml
index d6625361c58..d9425937c36 100644
--- a/indra/newview/skins/default/xui/ru/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/ru/menu_viewer.xml
@@ -16,7 +16,10 @@
 			<menu_item_call label="Остановить анимацию" name="Stop Animating My Avatar"/>
 			<menu_item_call label="Ходьба / бег / полет..." name="Walk / run / fly"/>
 		</menu>
-		<menu label="Статус" name="Status"/>
+		<menu label="Статус" name="Status">
+			<menu_item_call label="Нет на месте" name="Set Away"/>
+			<menu_item_call label="Не беспокоить" name="Set Busy"/>
+		</menu>
 		<menu_item_call label="Купить L$..." name="Buy and Sell L$"/>
 		<menu_item_call label="Торговые исходящие..." name="MerchantOutbox"/>
 		<menu_item_call label="Информационная панель аккаунта..." name="Manage My Account"/>
@@ -27,18 +30,14 @@
 		<menu_item_call label="Выход из [APP_NAME]" name="Quit"/>
 	</menu>
 	<menu label="Общение" name="Communicate">
-		<menu_item_check label="Разговоры..." name="Conversations"/>
-		<menu_item_check label="Локальный чат..." name="Nearby Chat"/>
+		<menu_item_check label="Чат..." name="Nearby Chat"/>
 		<menu_item_check label="Говорить" name="Speak"/>
-		<menu label="Изменение голоса" name="VoiceMorphing">
-			<menu_item_check label="Без изменения голоса" name="NoVoiceMorphing"/>
-			<menu_item_check label="Просмотр..." name="Preview"/>
-			<menu_item_call label="Подписаться..." name="Subscribe"/>
-		</menu>
+		<menu_item_check label="Настройки голоса..." name="Nearby Voice"/>
+		<menu_item_check label="Изменение голоса..." name="ShowVoice"/>
 		<menu_item_check label="Жесты..." name="Gestures"/>
-		<menu_item_check label="Друзья" name="My Friends"/>
-		<menu_item_check label="Группы" name="My Groups"/>
-		<menu_item_check label="Люди неподалеку" name="Active Speakers"/>
+		<menu_item_call label="Друзья" name="My Friends"/>
+		<menu_item_call label="Группы" name="My Groups"/>
+		<menu_item_call label="Люди неподалеку" name="Active Speakers"/>
 		<menu_item_call label="Черный список" name="Block List"/>
 	</menu>
 	<menu label="Мир" name="World">
@@ -114,6 +113,7 @@
 			<menu_item_call label="Купить" name="Menu Object Buy"/>
 			<menu_item_call label="Взять" name="Menu Object Take"/>
 			<menu_item_call label="Взять копию" name="Take Copy"/>
+			<menu_item_call label="Сохранить в моем инвентаре" name="Save Object Back to My Inventory"/>
 			<menu_item_call label="Сохранить в контенте объектов" name="Save Object Back to Object Contents"/>
 			<menu_item_call label="Вернуть объект" name="Return Object back to Owner"/>
 		</menu>
@@ -128,7 +128,6 @@
 			<menu_item_call label="Наборы связей..." name="pathfinding_linksets_menu_item"/>
 			<menu_item_call label="Персонажи..." name="pathfinding_characters_menu_item"/>
 			<menu_item_call label="Просмотр/тестирование..." name="pathfinding_console_menu_item"/>
-			<menu_item_call label="Восстановить регион" name="pathfinding_rebake_navmesh_item"/>
 		</menu>
 		<menu label="Параметры" name="Options">
 			<menu_item_check label="Показать расширенные разрешения" name="DebugPermissions"/>
@@ -158,13 +157,6 @@
 	<menu label="Справка" name="Help">
 		<menu_item_call label="Инструкции..." name="How To"/>
 		<menu_item_call label="Справка по [SECOND_LIFE]" name="Second Life Help"/>
-		<menu_item_call label="Руководство пользователя" name="User’s guide"/>
-		<menu_item_call label="База знаний" name="Knowledge Base"/>
-		<menu_item_call label="Wiki" name="Wiki"/>
-		<menu_item_call label="Форумы сообщества" name="Community Forums"/>
-		<menu_item_call label="Портал поддержки" name="Support portal"/>
-		<menu_item_call label="Новости [SECOND_LIFE]" name="Second Life News"/>
-		<menu_item_call label="Блоги [SECOND_LIFE]" name="Second Life Blogs"/>
 		<menu_item_call label="Жалоба" name="Report Abuse"/>
 		<menu_item_call label="Сообщить об ошибке" name="Report Bug"/>
 		<menu_item_call label="О [APP_NAME]" name="About Second Life"/>
@@ -391,14 +383,9 @@
 				<menu_item_call label="Проверка женщины" name="Test Female"/>
 				<menu_item_check label="Разрешить выбор аватара" name="Allow Select Avatar"/>
 			</menu>
-			<menu label="Скорость анимации" name="Animation Speed">
-				<menu_item_call label="Ускорить все анимации на 10%" name="All Animations 10 Faster"/>
-				<menu_item_call label="Замедлить все анимации на 10%" name="All Animations 10 Slower"/>
-				<menu_item_call label="Восстановить скорость анимаций" name="Reset All Animation Speed"/>
-				<menu_item_check label="Анимация медленных движений" name="Slow Motion Animations"/>
-			</menu>
 			<menu_item_call label="Скинуть параметры" name="Force Params to Default"/>
 			<menu_item_check label="Данные об анимации" name="Animation Info"/>
+			<menu_item_check label="Анимация медленных движений" name="Slow Motion Animations"/>
 			<menu_item_check label="Показать взгляд" name="Show Look At"/>
 			<menu_item_check label="Показать указание" name="Show Point At"/>
 			<menu_item_check label="Отладка обновленных движений суставов" name="Debug Joint Updates"/>
diff --git a/indra/newview/skins/default/xui/ru/notifications.xml b/indra/newview/skins/default/xui/ru/notifications.xml
index 00ab0b57633..85b7074253f 100644
--- a/indra/newview/skins/default/xui/ru/notifications.xml
+++ b/indra/newview/skins/default/xui/ru/notifications.xml
@@ -516,24 +516,6 @@
 		</url>
 		<usetemplate ignoretext="Мой графический драйвер устарел" name="okcancelignore" notext="Нет" yestext="Да"/>
 	</notification>
-	<notification name="AMDOldDriver">
-		Возможно, для вашей видеокарты имеется более новый драйвер.  Обновление драйвера может существенно повысить быстродействие.
-
-    Проверить наличие обновления для драйвера по адресу [_URL]?
-		<url name="url">
-			http://support.amd.com/us/Pages/AMDSupportHub.aspx
-		</url>
-		<usetemplate ignoretext="Мой графический драйвер устарел" name="okcancelignore" notext="Нет" yestext="Да"/>
-	</notification>
-	<notification name="NVIDIAOldDriver">
-		Возможно, для вашей видеокарты имеется более новый драйвер.  Обновление драйвера может существенно повысить быстродействие.
-
-    Проверить наличие обновления для драйвера по адресу [_URL]?
-		<url name="url">
-			http://www.nvidia.com/Download/index.aspx?lang=ru-ru
-		</url>
-		<usetemplate ignoretext="Мой графический драйвер устарел" name="okcancelignore" notext="Нет" yestext="Да"/>
-	</notification>
 	<notification name="UnknownGPU">
 		В вашей системе установлена графическая карта, которую [APP_NAME] не может распознать.
 Так часто бывает, если новое оборудование еще не было проверено на работу с [APP_NAME].  Скорее всего, оно будет работать нормально, но, возможно, придется отрегулировать параметры графики.
@@ -1564,13 +1546,10 @@ http://secondlife.com/download.
 		Сейчас невозможно предложить дружбу. Повторите попытку через минуту.
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
-	<notification name="DoNotDisturbModeSet">
-		Режим «Не беспокоить» включен.  Вы не будете получать уведомлений о входящих вызовах.
-
-- Другие жители будут получать ваш ответ, установленный для режима «Не беспокоить» (Настройки &gt; Общие).
-- Предложения телепортации будут отклоняться.
-- Голосовые вызовы будут отклоняться.
-		<usetemplate ignoretext="Смена моего статуса на режим «Не беспокоить»" name="okignore" yestext="OK"/>
+	<notification name="BusyModeSet">
+		Установлен режим «Занят».
+Сообщения чата и IM будут скрыты. На IM-сообщения будет возвращаться заданный ответ в режиме «Занят». Все предложения телепортации будут отклоняться. Все предложения инвентаря будут направлены в корзину.
+		<usetemplate ignoretext="Смена моего статуса на режим «Занят»" name="okignore" yestext="OK"/>
 	</notification>
 	<notification name="JoinedTooManyGroupsMember">
 		Достигнуто максимальное количество групп. Выйдите из другой группы, прежде чем вступать в эту, или отклоните предложение.
@@ -2054,10 +2033,6 @@ http://secondlife.com/download.
 		Перейти на [http://secondlife.com/account/ информационную панель], чтобы увидеть историю аккаунта?
 		<usetemplate ignoretext="Запустить браузер для просмотра истории аккаунта" name="okcancelignore" notext="Отмена" yestext="Перейти на страницу"/>
 	</notification>
-	<notification name="ConfirmAddingChatParticipants">
-		При добавлении участника в существующий разговор будет создан новый разговор.  Все участники получат уведомления о новом разговоре.
-		<usetemplate ignoretext="Подтвердите добавление участников чата" name="okcancelignore" notext="Отмена" yestext="ОК"/>
-	</notification>
 	<notification name="ConfirmQuit">
 		Выйти из программы?
 		<usetemplate ignoretext="Подтверждать перед выходом" name="okcancelignore" notext="Не выходить" yestext="Выйти"/>
@@ -2132,14 +2107,14 @@ http://secondlife.com/download.
 			<button ignore="Не заменять" name="No" text="Отмена"/>
 		</form>
 	</notification>
-	<notification label="Предупреждение режима «Не беспокоить»" name="DoNotDisturbModePay">
-		Включен режим «Не беспокоить». Вы не будете получать никаких предметов, предлагаемых в обмен за этот платеж.
+	<notification label="Предупреждение о режиме «Занят»" name="BusyModePay">
+		У вас включен режим «Занят», поэтому вы не получите никаких предметов, предлагаемых в обмен на этот платеж.
 
-Отключить режим «Не беспокоить» перед завершением этой операции?
+Хотите отключить режим «Занят» до завершения этой транзакции?
 		<form name="form">
-			<ignore name="ignore" text="Я собираюсь заплатить за пользователя или объект, когда включен режим «Не беспокоить»"/>
-			<button ignore="Всегда выходить из режима «Не беспокоить»" name="Yes" text="OK"/>
-			<button ignore="Не выходить из режима «Не беспокоить»" name="No" text="Отмена"/>
+			<ignore name="ignore" text="Я собираюсь заплатить за пользователя или объект, когда включен режим «Занят»"/>
+			<button ignore="Всегда отключать режим «Занят»" name="Yes" text="OK"/>
+			<button ignore="Не отключать режим «Занят»" name="No" text="Отмена"/>
 		</form>
 	</notification>
 	<notification name="ConfirmDeleteProtectedCategory">
@@ -2274,8 +2249,11 @@ http://secondlife.com/download.
 	<notification name="GroupNotice">
 		Раздел: [SUBJECT], сообщение: [MESSAGE]
 	</notification>
-	<notification name="FriendOnlineOffline">
-		&lt;nolink&gt;[NAME]&lt;/nolink&gt; [STATUS]
+	<notification name="FriendOnline">
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; в сети
+	</notification>
+	<notification name="FriendOffline">
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; не в сети
 	</notification>
 	<notification name="AddSelfFriend">
 		Вы лучше всех, но нельзя добавить в друзья себя самого.
@@ -2504,6 +2482,13 @@ http://secondlife.com/download.
 	<notification name="DynamicPathfindingDisabled">
 		В этом регионе не разрешен динамический поиск пути.  Возможны нарушения работы скриптовых объектов с использованием вызовов LSL поиска пути.
 	</notification>
+	<notification name="PathfindingRebakeNavmesh">
+		Изменение некоторых объектов в регионе может привести к неправильному поведению других подвижных объектов.  Чтобы исправить их поведение, нажмите кнопку «Восстановить регион».  Более подробная информация – по ссылке «Справка».
+		<url name="url">
+			http://wiki.secondlife.com/wiki/Pathfinding_Tools_in_the_Second_Life_Viewer
+		</url>
+		<usetemplate helptext="Справка" ignoretext="Изменение некоторых объектов в регионе может привести к неправильному поведению других подвижных объектов." name="okhelpignore" yestext="OK"/>
+	</notification>
 	<notification name="PathfindingCannotRebakeNavmesh">
 		Произошла ошибка.  Возможно, неполадка в сети или на сервере, или у вас нет прав на строительство.  Иногда для устранения этой проблемы достаточно выйти и снова войти.
 		<usetemplate name="okbutton" yestext="OK"/>
@@ -2766,7 +2751,7 @@ http://secondlife.com/download.
 	<notification name="ScriptQuestionCaution">
 		Предупреждение. Объект «&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;» требует полного доступа к вашему аккаунту для Linden-долларов. Если разрешить такой доступ, объект сможет в любое время снимать средства с вашего аккаунта или полностью опустошать его неоднократно и без предупреждения.
   
-Не разрешайте доступ к своему аккаунту, если только не полностью осознаете, зачем он нужен этому объекту.
+Такое требование чаще всего незаконно. Не разрешайте доступ к своему аккаунту, если только не полностью осознаете, зачем он нужен этому объекту.
 		<form name="form">
 			<button name="Grant" text="Разрешить полный доступ"/>
 			<button name="Deny" text="Отклонить"/>
@@ -3348,632 +3333,4 @@ http://secondlife.com/download.
 		Вы удаляете несколько предметов ([NUM_ITEMS]).  Продолжить?
 		<usetemplate ignoretext="Удалить несколько предметов?" name="okcancelignore" notext="Нет" yestext="Да"/>
 	</notification>
-	<notification name="AvatarFrozen">
-		[AV_FREEZER] заморозил вас. В это время вы не можете перемещаться и выполнять другие действия с миром.
-	</notification>
-	<notification name="AvatarFrozenDuration">
-		[AV_FREEZER] заморозил вас на [AV_FREEZE_TIME] сек. В это время вы не можете перемещаться и выполнять другие действия с миром.
-	</notification>
-	<notification name="YouFrozeAvatar">
-		Аватар заморожен.
-	</notification>
-	<notification name="AvatarHasUnFrozenYou">
-		[AV_FREEZER] разморозил вас.
-	</notification>
-	<notification name="AvatarUnFrozen">
-		Аватар разморожен.
-	</notification>
-	<notification name="AvatarFreezeFailure">
-		Не удалось заморозить: у вас нет прав администратора на этом участке.
-	</notification>
-	<notification name="AvatarFreezeThaw">
-		Заморозка кончилась, занимайтесь своим делом.
-	</notification>
-	<notification name="AvatarCantFreeze">
-		Невозможно заморозить этого пользователя.
-	</notification>
-	<notification name="NowOwnObject">
-		Вы стали владельцем объекта [OBJECT_NAME]
-	</notification>
-	<notification name="CantRezOnLand">
-		Нельзя выложить объект на [OBJECT_POS]: это не разрешено владельцем земли.  Узнать, кто владелец, можно с помощью инструмента «Земля».
-	</notification>
-	<notification name="RezFailTooManyRequests">
-		Невозможно выложить объект: слишком много запросов.
-	</notification>
-	<notification name="SitFailCantMove">
-		Нельзя сесть: сейчас вы не можете двигаться.
-	</notification>
-	<notification name="SitFailNotAllowedOnLand">
-		Вам не разрешено садиться на этой земле.
-	</notification>
-	<notification name="SitFailNotSameRegion">
-		Попробуйте переместиться ближе.  Нельзя сесть на объект:
-он находится в другом регионе.
-	</notification>
-	<notification name="NoNewObjectRegionFull">
-		Невозможно создать новый объект. Регион уже заполнен.
-	</notification>
-	<notification name="FailedToPlaceObject">
-		Не удалось поместить объект в указанное место.  Повторите попытку.
-	</notification>
-	<notification name="NoOwnNoGardening">
-		Вы не можете создавать деревья и траву на чужой земле.
-	</notification>
-	<notification name="NoCopyPermsNoObject">
-		Не удалось скопировать: вам не разрешено копировать объект «[OBJ_NAME]».
-	</notification>
-	<notification name="NoTransPermsNoObject">
-		Не удалось скопировать: объект «[OBJ_NAME]» нельзя перенести к вам.
-	</notification>
-	<notification name="AddToNavMeshNoCopy">
-		Не удалось скопировать: объект «[OBJ_NAME]» относится к навигационной сетке.
-	</notification>
-	<notification name="DupeWithNoRootsSelected">
-		Выбран дубликат без корневых объектов.
-	</notification>
-	<notification name="CantDupeCuzRegionIsFull">
-		Невозможно дублировать объекты: регион заполнен.
-	</notification>
-	<notification name="CantDupeCuzParcelNotFound">
-		Невозможно дублировать объекты: не удалось найти их участок.
-	</notification>
-	<notification name="CantCreateCuzParcelFull">
-		Нельзя создать объект: 
-участок уже заполнен.
-	</notification>
-	<notification name="RezAttemptFailed">
-		Не удалось выложить объект.
-	</notification>
-	<notification name="ToxicInvRezAttemptFailed">
-		Невозможно создать элемент, который вызвал проблемы в этом регионе.
-	</notification>
-	<notification name="InvItemIsBlacklisted">
-		Этот предмет инвентаря находится в черном списке.
-	</notification>
-	<notification name="NoCanRezObjects">
-		Сейчас вам не разрешено создавать объекты.
-	</notification>
-	<notification name="LandSearchBlocked">
-		Поиск по земле заблокирован.
-Вы провели слишком много операций поиска за короткое время.
-Повторите попытку через минуту.
-	</notification>
-	<notification name="NotEnoughResourcesToAttach">
-		Недостаточно свободных ресурсов скриптинга для присоединения объекта!
-	</notification>
-	<notification name="YouDiedAndGotTPHome">
-		Вы умерли и были телепортированы в ваше домашнее местоположение
-	</notification>
-	<notification name="EjectComingSoon">
-		Вам запрещено здесь присутствовать; у вас есть [EJECT_TIME] сек, чтобы покинуть это место.
-	</notification>
-	<notification name="NoEnterServerFull">
-		Вам нет доступа в этот регион: 
-серпер переполнен.
-	</notification>
-	<notification name="SaveBackToInvDisabled">
-		Сохранение в инвентаре отключено.
-	</notification>
-	<notification name="NoExistNoSaveToContents">
-		Нельзя сохранить «[OBJ_NAME]» в содержимом объекта: объект, из которого оно было выложено, уже не существует.
-	</notification>
-	<notification name="NoModNoSaveToContents">
-		Нельзя сохранить «[OBJ_NAME]» в содержимом объекта: вам не разрешено изменять объект «[DEST_NAME]».
-	</notification>
-	<notification name="NoSaveBackToInvDisabled">
-		Невозможно сохранить «[OBJ_NAME]» в инвентаре: эта операция запрещена.
-	</notification>
-	<notification name="NoCopyNoSelCopy">
-		Нельзя скопировать выбранное: вам не разрешено копировать объект «[OBJ_NAME]».
-	</notification>
-	<notification name="NoTransNoSelCopy">
-		Невозможно скопировать выбранный предмет: объект «[OBJ_NAME]» не переносится.
-	</notification>
-	<notification name="NoTransNoCopy">
-		Невозможно скопировать выбранный предмет: объект «[OBJ_NAME]» не переносится.
-	</notification>
-	<notification name="NoPermsNoRemoval">
-		Удаление объекта «[OBJ_NAME]» из симулятора запрещено системой разрешений.
-	</notification>
-	<notification name="NoModNoSaveSelection">
-		Нельзя сохранить выбранное: вам не разрешено изменять объект «[OBJ_NAME]».
-	</notification>
-	<notification name="NoCopyNoSaveSelection">
-		Невозможно сохранить выбранный предмет: объект «[OBJ_NAME]» не копируется.
-	</notification>
-	<notification name="NoModNoTaking">
-		Нельзя забрать выбранное: вам не разрешено изменять объект «[OBJ_NAME]».
-	</notification>
-	<notification name="RezDestInternalError">
-		Внутренняя ошибка: неизвестный тип места назначения.
-	</notification>
-	<notification name="DeleteFailObjNotFound">
-		Невозможно удалить: объект не найден
-	</notification>
-	<notification name="SorryCantEjectUser">
-		Невозможно выбросить этого пользователя.
-	</notification>
-	<notification name="RegionSezNotAHome">
-		Вам не разрешено устанавливать свое домашнее местоположение в этом регионе.
-	</notification>
-	<notification name="HomeLocationLimits">
-		Задать домашнее местоположение можно только на вашей земле или в Инфохабе материка.
-	</notification>
-	<notification name="HomePositionSet">
-		Задано положение дома.
-	</notification>
-	<notification name="AvatarEjected">
-		Аватар выброшен.
-	</notification>
-	<notification name="AvatarEjectFailed">
-		Не удалось выбросить: у вас нет прав администратора на этом участке.
-	</notification>
-	<notification name="CantMoveObjectParcelFull">
-		Нельзя переместить объект «[OBJECT_NAME]» в позицию «[OBJ_POSITION]» региона [REGION_NAME]: участок уже заполнен.
-	</notification>
-	<notification name="CantMoveObjectParcelPerms">
-		Нельзя переместить объект «[OBJECT_NAME]» в позицию
-«[OBJ_POSITION]» региона [REGION_NAME]: вашим объектам не разрешено присутствовать на этом участке.
-	</notification>
-	<notification name="CantMoveObjectParcelResources">
-		Нельзя переместить объект «[OBJECT_NAME]» в позицию
-«[OBJ_POSITION]» региона [REGION_NAME]: на этом участке недостаточно ресурсов для данного объекта.
-	</notification>
-	<notification name="CantMoveObjectRegionVersion">
-		Нельзя переместить объект «[OBJECT_NAME]» в позицию
-[OBJ_POSITION] региона [REGION_NAME]: в другом регионе работает старая версия симулятора, которая не поддерживает прием этого объекта через границу регионов.
-	</notification>
-	<notification name="CantMoveObjectNavMesh">
-		Нельзя переместить объект «[OBJECT_NAME]» в позицию
-«[OBJ_POSITION]» региона [REGION_NAME]: вам не разрешено изменять навигационную сетку за пределами региона.
-	</notification>
-	<notification name="CantMoveObjectWTF">
-		Нельзя переместить объект «[OBJECT_NAME]» в позицию
-[OBJ_POSITION] региона [REGION_NAME] по неизвестной причине. ([FAILURE_TYPE])
-	</notification>
-	<notification name="NoPermModifyObject">
-		У вас нет прав на изменение этого объекта
-	</notification>
-	<notification name="CantEnablePhysObjContributesToNav">
-		Нельзя включить физику для объекта, который относится к навигационной сетке.
-	</notification>
-	<notification name="CantEnablePhysKeyframedObj">
-		Нельзя включить физику для объектов с ключевыми кадрами.
-	</notification>
-	<notification name="CantEnablePhysNotEnoughLandResources">
-		Нельзя включить физику для объекта -- недостаточно земельных ресурсов.
-	</notification>
-	<notification name="CantEnablePhysCostTooGreat">
-		Нельзя включить физику для объекта с расходом ресурсов физики больше [MAX_OBJECTS]
-	</notification>
-	<notification name="PhantomWithConcavePiece">
-		Этот объект не может содержать вогнутых элементов: это фантом, который относится к навигационной сетке.
-	</notification>
-	<notification name="UnableAddItem">
-		Невозможно добавить предмет!
-	</notification>
-	<notification name="UnableEditItem">
-		Редактирование невозможно!
-	</notification>
-	<notification name="NoPermToEdit">
-		Редактирование не разрешено.
-	</notification>
-	<notification name="NoPermToCopyInventory">
-		Не разрешено копировать этот инвентарь.
-	</notification>
-	<notification name="CantSaveItemDoesntExist">
-		Нельзя сохранить в содержимом объекта: предмет уже не существует.
-	</notification>
-	<notification name="CantSaveItemAlreadyExists">
-		Нельзя сохранить в содержимом объекта: предмет с таким названием уже есть в инвентаре
-	</notification>
-	<notification name="CantSaveModifyAttachment">
-		Нельзя сохранить в содержимом объекта: это приведет к изменению разрешений прикрепленного объекта.
-	</notification>
-	<notification name="TooManyScripts">
-		Слишком много скриптов.
-	</notification>
-	<notification name="UnableAddScript">
-		Невозможно добавить скрипт!
-	</notification>
-	<notification name="AssetServerTimeoutObjReturn">
-		Сервер активов не ответил в заданное время.  Объект возвращен в симулятор.
-	</notification>
-	<notification name="RegionDisablePhysicsShapes">
-		В этом регионе не разрешены фигуры с физическими данными.
-	</notification>
-	<notification name="NoModNavmeshAcrossRegions">
-		Нельзя изменять навигационную сетку за пределами региона.
-	</notification>
-	<notification name="NoSetPhysicsPropertiesOnObjectType">
-		Нельзя задать свойства физики для объекта этого типа.
-	</notification>
-	<notification name="NoSetRootPrimWithNoShape">
-		Нельзя задать корневой примитив без фигуры.
-	</notification>
-	<notification name="NoRegionSupportPhysMats">
-		В этом регионе не разрешены материалы с физическими данными.
-	</notification>
-	<notification name="OnlyRootPrimPhysMats">
-		Настройка материалов с физическими данными разрешена только для корневых примитивов.
-	</notification>
-	<notification name="NoSupportCharacterPhysMats">
-		Присвоение персонажам материалов с физическими данными еще не поддерживается.
-	</notification>
-	<notification name="InvalidPhysMatProperty">
-		Одно или несколько свойств указанного материала с физическими данными недопустимы.
-	</notification>
-	<notification name="NoPermsAlterStitchingMeshObj">
-		Не разрешается изменять тип стыковки меш-объекта.
-	</notification>
-	<notification name="NoPermsAlterShapeMeshObj">
-		Не разрешается изменять форму меш-объекта
-	</notification>
-	<notification name="FullRegionCantEnter">
-		Вам нет доступа в этот регион: \nрегион заполнен.
-	</notification>
-	<notification name="LinkFailedOwnersDiffer">
-		Связь невозможна -- разные владельцы
-	</notification>
-	<notification name="LinkFailedNoModNavmeshAcrossRegions">
-		Связь невозможна – нельзя изменять навигационную сетку за пределами региона.
-	</notification>
-	<notification name="LinkFailedNoPermToEdit">
-		Связь невозможна: у вас нет разрешения на редактирование.
-	</notification>
-	<notification name="LinkFailedTooManyPrims">
-		Связь невозможна -- слишком много примитивов
-	</notification>
-	<notification name="LinkFailedCantLinkNoCopyNoTrans">
-		Связь невозможна -- нельзя связать некопируемый и непереносимый объекты
-	</notification>
-	<notification name="LinkFailedNothingLinkable">
-		Связь невозможна -- нет связываемых объектов.
-	</notification>
-	<notification name="LinkFailedTooManyPathfindingChars">
-		Связь невозможна -- слишком много персонажей с поиском пути
-	</notification>
-	<notification name="LinkFailedInsufficientLand">
-		Связь невозможна -- недостаточно земельных ресурсов
-	</notification>
-	<notification name="LinkFailedTooMuchPhysics">
-		Объект использует слишком много ресурсов физики -- динамическое поведение отключено.
-	</notification>
-	<notification name="TeleportedHomeByObjectOnParcel">
-		Вы были телепортированы домой объектом «[OBJECT_NAME]» на участке «[PARCEL_NAME]»
-	</notification>
-	<notification name="TeleportedHomeByObject">
-		Вы были телепортированы домой объектом «[OBJECT_NAME]»
-	</notification>
-	<notification name="TeleportedByAttachment">
-		Вы были телепортированы прикрепленным объектом [ITEM_ID]
-	</notification>
-	<notification name="TeleportedByObjectOnParcel">
-		Вы были телепортированы объектом «[OBJECT_NAME]» на участке «[PARCEL_NAME]»
-	</notification>
-	<notification name="TeleportedByObjectOwnedBy">
-		Вы были телепортированы объектом «[OBJECT_NAME]», владелец – [OWNER_ID]
-	</notification>
-	<notification name="TeleportedByObjectUnknownUser">
-		Вы были телепортированы объектом «[OBJECT_NAME]», владелец неизвестен.
-	</notification>
-	<notification name="CantCreateObjectRegionFull">
-		Невозможно создать запрошенный объект. Регион уже заполнен.
-	</notification>
-	<notification name="CantAttackMultipleObjOneSpot">
-		Нельзя присоединить несколько объектов к одной точке.
-	</notification>
-	<notification name="CantCreateMultipleObjAtLoc">
-		Здесь нельзя создать несколько объектов.
-	</notification>
-	<notification name="UnableToCreateObjTimeOut">
-		Невозможно создать запрошенный объект. Объекта нет в базе данных.
-	</notification>
-	<notification name="UnableToCreateObjUnknown">
-		Невозможно создать запрошенный объект. Истекло время запроса. Повторите попытку.
-	</notification>
-	<notification name="UnableToCreateObjMissingFromDB">
-		Невозможно создать запрошенный объект. Повторите попытку.
-	</notification>
-	<notification name="RezFailureTookTooLong">
-		Не удалось выложить, загрузка нужного объекта длится слишком долго.
-	</notification>
-	<notification name="FailedToPlaceObjAtLoc">
-		Не удалось поместить объект в указанное место.  Повторите попытку.
-	</notification>
-	<notification name="CantCreatePlantsOnLand">
-		Вам нельзя создавать растения на этой земле.
-	</notification>
-	<notification name="CantRestoreObjectNoWorldPos">
-		Невозможно восстановить объект. Не найдена позиция в игровом мире.
-	</notification>
-	<notification name="CantRezObjectInvalidMeshData">
-		Невозможно выложить объект: его данные сетки неверны.
-	</notification>
-	<notification name="CantRezObjectTooManyScripts">
-		Невозможно выложить объект: в этом регионе уже сликом много скриптов.
-	</notification>
-	<notification name="CantCreateObjectNoAccess">
-		Ваши привилегии доступа не разрешают создание объектов на этом месте.
-	</notification>
-	<notification name="CantCreateObject">
-		Сейчас вам не разрешено создавать объекты.
-	</notification>
-	<notification name="InvalidObjectParams">
-		Неверные параметры объекта
-	</notification>
-	<notification name="CantDuplicateObjectNoAcess">
-		Ваши привилегии доступа не разрешают дублирование объектов на этом месте.
-	</notification>
-	<notification name="CantChangeShape">
-		Вам не разрешено изменять эту фигуру.
-	</notification>
-	<notification name="NoAccessToClaimObjects">
-		Ваши привилегии доступа не разрешают претендовать на объекты на этом месте.
-	</notification>
-	<notification name="DeedFailedNoPermToDeedForGroup">
-		Не удалось передать: вам не разрешено передавать объекты для этой группы.
-	</notification>
-	<notification name="NoPrivsToBuyObject">
-		Ваши привилегии доступа не разрешают покупать объекты на этом месте.
-	</notification>
-	<notification name="CantAttachObjectAvatarSittingOnIt">
-		Невозможно присоединить объект: на нем сидит аватар.
-	</notification>
-	<notification name="WhyAreYouTryingToWearShrubbery">
-		Деревья и траву нельзя носить как прикрепленные объекты.
-	</notification>
-	<notification name="CantAttachGroupOwnedObjs">
-		Нельзя присоединять объекты, принадлежащие группе.
-	</notification>
-	<notification name="CantAttachObjectsNotOwned">
-		Нельзя прикреплять объекты, которыми вы не владеете.
-	</notification>
-	<notification name="CantAttachNavmeshObjects">
-		Невозможно присоединить объекты, которые относятся к навигационной сетке.
-	</notification>
-	<notification name="CantAttachObjectNoMovePermissions">
-		Нельзя присоединить объект: вам не разрешено его перемещать.
-	</notification>
-	<notification name="CantAttachNotEnoughScriptResources">
-		Недостаточно свободных ресурсов скриптинга для присоединения объекта!
-	</notification>
-	<notification name="CantDropItemTrialUser">
-		Здесь нельзя сбрасывать объекты; перейдите в бесплатную область для гостей.
-	</notification>
-	<notification name="CantDropMeshAttachment">
-		Нельзя сбрасывать прикрепленные меш-объекты. Отсоедините их в инвентарь, а затем выложите в игровой мир.
-	</notification>
-	<notification name="CantDropAttachmentNoPermission">
-		Не удалось сбросить прикрепленный объект: вам не разрешено оставлять его здесь.
-	</notification>
-	<notification name="CantDropAttachmentInsufficientLandResources">
-		Не удалось сбросить прикрепленный объект: не хватает свободных земельных ресурсов.
-	</notification>
-	<notification name="CantDropAttachmentInsufficientResources">
-		Не удалось сбросить прикрепленные объекты: не хватает свободных ресурсов.
-	</notification>
-	<notification name="CantDropObjectFullParcel">
-		Нельзя сбросить объект здесь.  Участок уже заполнен.
-	</notification>
-	<notification name="CantTouchObjectBannedFromParcel">
-		Нельзя коснуться/взять этот объект: вы забанены на этом участке.
-	</notification>
-	<notification name="PlzNarrowDeleteParams">
-		Уточните параметры удаления.
-	</notification>
-	<notification name="UnableToUploadAsset">
-		Невозможно отправить актив.
-	</notification>
-	<notification name="CantTeleportCouldNotFindUser">
-		Не удалось найти пользователя для телепортации домой
-	</notification>
-	<notification name="GodlikeRequestFailed">
-		режим творца недоступен
-	</notification>
-	<notification name="GenericRequestFailed">
-		не удалось выполнить общий запрос
-	</notification>
-	<notification name="CantUploadPostcard">
-		Невозможно отправить открытку.  Повторите попытку позже.
-	</notification>
-	<notification name="CantFetchInventoryForGroupNotice">
-		Невозможно получить данные инвентаря для группового уведомления.
-	</notification>
-	<notification name="CantSendGroupNoticeNotPermitted">
-		Невозможно отправить групповое уведомление -- не разрешено.
-	</notification>
-	<notification name="CantSendGroupNoticeCantConstructInventory">
-		Невозможно отправить групповое уведомление -- не удалось собрать инвентарь.
-	</notification>
-	<notification name="CantParceInventoryInNotice">
-		Невозможно проанализировать инвентарь, указанный в уведомлении.
-	</notification>
-	<notification name="TerrainUploadFailed">
-		Не удалось загрузить ландшафт.
-	</notification>
-	<notification name="TerrainFileWritten">
-		Файл ландшафта записан.
-	</notification>
-	<notification name="TerrainFileWrittenStartingDownload">
-		Файл ландшафта записан, начинается загрузка...
-	</notification>
-	<notification name="TerrainBaked">
-		Ландшафт готов.
-	</notification>
-	<notification name="TenObjectsDisabledPlzRefresh">
-		Отключены только первые 10 выбранных объектов. Обновите экран и выберите объекты снова, если требуется.
-	</notification>
-	<notification name="UpdateViewerBuyParcel">
-		Для покупки этого участка необходимо обновить клиент.
-	</notification>
-	<notification name="CantBuyParcelNotForSale">
-		Невозможно купить, этот участок не предназначен для продажи.
-	</notification>
-	<notification name="CantBuySalePriceOrLandAreaChanged">
-		Невозможно купить: цена или площадь земли изменились.
-	</notification>
-	<notification name="CantBuyParcelNotAuthorized">
-		Вам не разрешено покупать этот участок.
-	</notification>
-	<notification name="CantBuyParcelAwaitingPurchaseAuth">
-		Вы не можете приобрести этот участок: он уже ожидает подтверждения покупки
-	</notification>
-	<notification name="CantBuildOverflowParcel">
-		Здесь нельзя создавать объекты – участок будет переполнен.
-	</notification>
-	<notification name="SelectedMultipleOwnedLand">
-		Вы выбрали землю с разными владельцами. Выберите меньшую область и повторите попытку.
-	</notification>
-	<notification name="CantJoinTooFewLeasedParcels">
-		Выбрано недостаточно арендуемых участков для вступления.
-	</notification>
-	<notification name="CantDivideLandMultipleParcelsSelected">
-		Нельзя разделить землю.\nВыбрано больше одного участка.\nВыберите меньшую территорию.
-	</notification>
-	<notification name="CantDivideLandCantFindParcel">
-		Нельзя разделить землю.\nНе удалось найти участок.\nСообщите об этой неполадке: Справка -&gt; Сообщить об ошибке...
-	</notification>
-	<notification name="CantDivideLandWholeParcelSelected">
-		Невозможно разделить землю. Выбран весь участок.\nПопробуйте выбрать территорию поменьше.
-	</notification>
-	<notification name="LandHasBeenDivided">
-		Земля разделена.
-	</notification>
-	<notification name="PassPurchased">
-		Вы приобрели пропуск.
-	</notification>
-	<notification name="RegionDisallowsClassifieds">
-		В регионе не разрешены рекламные объявления.
-	</notification>
-	<notification name="LandPassExpireSoon">
-		Ваш пропуск на эту землю скоро закончится.
-	</notification>
-	<notification name="CantSitNoSuitableSurface">
-		Нет подходящей поверхности, чтобы сесть. Попробуйте в другом месте.
-	</notification>
-	<notification name="CantSitNoRoom">
-		Здесь нет места, чтобы сесть. Попробуйте в другом месте.
-	</notification>
-	<notification name="ClaimObjectFailedNoPermission">
-		Невозможно претендовать на объект: у вас нет разрешения
-	</notification>
-	<notification name="ClaimObjectFailedNoMoney">
-		Невозможно претендовать на объект: у вас не хватает L$.
-	</notification>
-	<notification name="CantDeedGroupLand">
-		Нельзя передать землю, принадлежащую группе.
-	</notification>
-	<notification name="BuyObjectFailedNoMoney">
-		Не удалось купить объект: у вас не хватает L$.
-	</notification>
-	<notification name="BuyInventoryFailedNoMoney">
-		Не удалось купить инвентарь: у вас не хватает L$.
-	</notification>
-	<notification name="BuyPassFailedNoMoney">
-		У вас недостаточно L$, чтобы заплатить за проход на эту землю.
-	</notification>
-	<notification name="CantBuyPassTryAgain">
-		Сейчас нельзя купить пропуск.  Повторите попытку позже.
-	</notification>
-	<notification name="CantCreateObjectParcelFull">
-		Невозможно создать объект:\nучасток заполнен.
-	</notification>
-	<notification name="FailedPlacingObject">
-		Не удалось поместить объект в указанное место.  Повторите попытку.
-	</notification>
-	<notification name="CantCreateLandmarkForEvent">
-		Невозможно создать закладку для события.
-	</notification>
-	<notification name="GodBeatsFreeze">
-		Сила творца одолевает заморозку!
-	</notification>
-	<notification name="SpecialPowersRequestFailedLogged">
-		Не удалось выполнить запрос на особые способности. Запрос зарегистрирован.
-	</notification>
-	<notification name="ExpireExplanation">
-		Система сейчас не может обработать ваш запрос. Истекло время запроса.
-	</notification>
-	<notification name="DieExplanation">
-		Система не может обработать ваш запрос.
-	</notification>
-	<notification name="AddPrimitiveFailure">
-		Недостаточно денег для создания примитива.
-	</notification>
-	<notification name="RezObjectFailure">
-		Недостаточно денег для создания объекта.
-	</notification>
-	<notification name="ResetHomePositionNotLegal">
-		Недопустимое домашнее местоположение; восстановлено стандартное местоположение.
-	</notification>
-	<notification name="CantInviteRegionFull">
-		Сейчас вы не можете никого пригласить к себе: регион уже заполнен. Повторите попытку позже.
-	</notification>
-	<notification name="CantSetHomeAtRegion">
-		Вам не разрешено устанавливать свое домашнее местоположение в этом регионе.
-	</notification>
-	<notification name="ListValidHomeLocations">
-		Задать домашнее местоположение можно только на вашей земле или в Инфохабе материка.
-	</notification>
-	<notification name="SetHomePosition">
-		Домашнее местоположение задано.
-	</notification>
-	<notification name="CantDerezInventoryError">
-		Невозможно забрать объект: сбой инвентаря.
-	</notification>
-	<notification name="CantCreateRequestedInv">
-		Невозможно создать требуемый инвентарь.
-	</notification>
-	<notification name="CantCreateRequestedInvFolder">
-		Невозможно создать требуемую папку инвентаря.
-	</notification>
-	<notification name="CantCreateInventory">
-		Невозможно создать этот инвентарь.
-	</notification>
-	<notification name="CantCreateLandmark">
-		Невозможно создать закладку.
-	</notification>
-	<notification name="CantCreateOutfit">
-		Сейчас нельзя создать костюм. Попробуйте через минуту.
-	</notification>
-	<notification name="InventoryNotForSale">
-		Инвентарь не для продажи.
-	</notification>
-	<notification name="CantFindInvItem">
-		Не удалось найти предмет из инвентаря.
-	</notification>
-	<notification name="CantFindObject">
-		Не удалось найти объект.
-	</notification>
-	<notification name="CantTransfterMoneyRegionDisabled">
-		Сейчас в этом регионе запрещен перевод денег на объекты.
-	</notification>
-	<notification name="CantPayNoAgent">
-		Непонятно, кому платить.
-	</notification>
-	<notification name="CantDonateToPublicObjects">
-		Нельзя отдавать L$ за общедоступные объекты.
-	</notification>
-	<notification name="InventoryCreationInWorldObjectFailed">
-		Не удалось создать инвентарь в объекте игрового мира.
-	</notification>
-	<notification name="UserBalanceOrLandUsageError">
-		Не удалось обновить клиент из-за внутренней ошибки.  Отображаемый в клиенте баланс L$ или владение участками могут не соответствовать действительному балансу на серверах.
-	</notification>
-	<notification name="LargePrimAgentIntersect">
-		Нельзя создавать большие примитивы, которые пересекаются с другими игроками.  Повторите попытку, когда другие игроки уйдут.
-	</notification>
-	<notification name="PreferenceChatClearLog">
-		Будут удалены журналы предыдущих разговоров и все резервные копии этих файлов.
-		<usetemplate ignoretext="Подтверждать удаление журнала предыдущих разговоров." name="okcancelignore" notext="Отмена" yestext="OK"/>
-	</notification>
-	<notification name="PreferenceChatDeleteTranscripts">
-		Будут удалены записи всех предыдущих разговоров. Список прошедших разговоров не изменится. Все файлы с расширениями .txt и txt.backup в папке [FOLDER] будут удалены.
-		<usetemplate ignoretext="Подтверждать удаление записей." name="okcancelignore" notext="Отмена" yestext="OK"/>
-	</notification>
-	<notification name="PreferenceChatPathChanged">
-		Невозможно переместить файлы. Восстановлен прежний путь.
-		<usetemplate ignoretext="Невозможно переместить файлы. Восстановлен прежний путь." name="okignore" yestext="OK"/>
-	</notification>
 </notifications>
diff --git a/indra/newview/skins/default/xui/ru/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/ru/panel_avatar_list_item.xml
index 4866bb7ed61..75e396222f9 100644
--- a/indra/newview/skins/default/xui/ru/panel_avatar_list_item.xml
+++ b/indra/newview/skins/default/xui/ru/panel_avatar_list_item.xml
@@ -27,6 +27,5 @@
 	<icon name="permission_edit_mine_icon" tool_tip="Этот друг может изменять, удалять или брать ваши объекты"/>
 	<icon name="permission_map_icon" tool_tip="Этот друг может видеть вас на карте"/>
 	<icon name="permission_online_icon" tool_tip="Этот друг может видеть ваш статус в сети"/>
-	<button name="info_btn" tool_tip="Дополнительно"/>
 	<button name="profile_btn" tool_tip="Смотреть профиль"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/ru/panel_block_list_sidetray.xml
index 70a1b259969..214ca8bf3a9 100644
--- a/indra/newview/skins/default/xui/ru/panel_block_list_sidetray.xml
+++ b/indra/newview/skins/default/xui/ru/panel_block_list_sidetray.xml
@@ -1,11 +1,10 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="block_list_panel">
-	<panel label="bottom_panel" name="blocked_buttons_panel">
-		<filter_editor label="Фильтр" name="blocked_filter_input"/>
-		<menu_button name="blocked_gear_btn" tool_tip="Действия с выбранным жителем или объектом"/>
-		<menu_button name="view_btn" tool_tip="Параметры сортировки"/>
-		<menu_button name="plus_btn" tool_tip="Выберите жителя или объект для блокировки"/>
-		<button name="unblock_btn" tool_tip="Удалить объект или жителя из списка заблокированных"/>
-	</panel>
-	<block_list name="blocked" tool_tip="Список заблокированных жителей"/>
+	<text name="title_text">
+		Черный список
+	</text>
+	<scroll_list name="blocked" tool_tip="Список заблокированных жителей"/>
+	<button label="Заблокировать жителя" name="Block resident..." tool_tip="Выберите жителя для блокировки"/>
+	<button label="Блокировать объект по имени" name="Block object by name..." tool_tip="Выберите объект для блокировки по имени"/>
+	<button label="Разблокировать" name="Unblock" tool_tip="Удалить объект или жителя из списка заблокированных"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_conversation_list_item.xml b/indra/newview/skins/default/xui/ru/panel_conversation_list_item.xml
deleted file mode 100644
index 4fdb4f9122e..00000000000
--- a/indra/newview/skins/default/xui/ru/panel_conversation_list_item.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="conversation_list_item">
-	<layout_stack name="conversation_item_stack">
-		<layout_panel name="conversation_title_panel">
-			<text name="conversation_title" value="(загрузка)"/>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_conversation_log_list_item.xml b/indra/newview/skins/default/xui/ru/panel_conversation_log_list_item.xml
deleted file mode 100644
index 98fe7b99be0..00000000000
--- a/indra/newview/skins/default/xui/ru/panel_conversation_log_list_item.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="conversation_log_list_item">
-	<icon name="voice_session_icon" tool_tip="Включая голосовой чат"/>
-	<icon name="unread_ims_icon" tool_tip="За время вашего отсутствия пришли сообщения"/>
-	<button name="delete_btn" tool_tip="Удалить эту запись"/>
-</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_group_list_item.xml b/indra/newview/skins/default/xui/ru/panel_group_list_item.xml
index b043ffbbe25..7f000fb5a0d 100644
--- a/indra/newview/skins/default/xui/ru/panel_group_list_item.xml
+++ b/indra/newview/skins/default/xui/ru/panel_group_list_item.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="group_list_item">
 	<text name="group_name" value="Неизвестно"/>
-	<button name="info_btn" tool_tip="Дополнительно"/>
 	<button name="profile_btn" tool_tip="Смотреть профиль"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_people.xml b/indra/newview/skins/default/xui/ru/panel_people.xml
index 7da7fb3191f..607921f2d69 100644
--- a/indra/newview/skins/default/xui/ru/panel_people.xml
+++ b/indra/newview/skins/default/xui/ru/panel_people.xml
@@ -14,53 +14,81 @@
 	<string name="no_filtered_friends_msg">
 		Не нашли того, что вам нужно? Воспользуйтесь [secondlife:///app/search/people/[SEARCH_TERM] поиском].
 	</string>
+	<string name="people_filter_label" value="Фильтр для людей"/>
+	<string name="groups_filter_label" value="Фильтр для групп"/>
 	<string name="no_filtered_groups_msg" value="Не нашли того, что вам нужно? Воспользуйтесь [secondlife:///app/search/groups/[SEARCH_TERM] поиском]."/>
 	<string name="no_groups_msg" value="Ищете группу, чтобы присоединиться к ней? Воспользуйтесь [secondlife:///app/search/groups поиском]."/>
 	<string name="MiniMapToolTipMsg" value="[REGION](Двойной щелчок открывает карту, shift+перетягивание – обзор)"/>
 	<string name="AltMiniMapToolTipMsg" value="[REGION](Двойной щелчок – телепортация, shift+перетягивание – обзор)"/>
+	<filter_editor label="Фильтр" name="filter_input"/>
 	<tab_container name="tabs">
 		<panel label="РЯДОМ" name="nearby_panel">
-			<panel label="bottom_panel" name="nearby_buttons_panel">
-				<filter_editor label="Фильтр для людей" name="nearby_filter_input"/>
-				<button name="gear_btn" tool_tip="Действия с выбранным жителем"/>
-				<menu_button name="nearby_view_btn" tool_tip="Параметры просмотра/сортировки"/>
-				<button name="add_friend_btn" tool_tip="Предложить жителю дружбу"/>
-				<dnd_button name="nearby_del_btn" tool_tip="Удалить выбранного пользователя из друзей"/>
+			<panel label="bottom_panel" name="bottom_panel">
+				<menu_button name="nearby_view_sort_btn" tool_tip="Опции"/>
+				<button name="add_friend_btn" tool_tip="Добавить выбранного жителя в список друзей"/>
 			</panel>
 		</panel>
-		<panel label="ДРУЗЬЯ" name="friends_panel">
-			<panel label="bottom_panel" name="friends_buttons_panel">
-				<filter_editor label="Фильтр для людей" name="friends_filter_input"/>
-				<button name="gear_btn" tool_tip="Действия с выбранным жителем"/>
-				<menu_button name="friends_view_btn" tool_tip="Параметры просмотра/сортировки"/>
-				<button name="friends_add_btn" tool_tip="Предложить жителю дружбу"/>
-				<dnd_button name="friends_del_btn" tool_tip="Удалить выбранного пользователя из друзей"/>
-			</panel>
+		<panel label="МОИ ДРУЗЬЯ" name="friends_panel">
 			<accordion name="friends_accordion">
 				<accordion_tab name="tab_online" title="Онлайн"/>
 				<accordion_tab name="tab_all" title="Все"/>
 			</accordion>
+			<panel label="bottom_panel" name="bottom_panel">
+				<layout_stack name="bottom_panel">
+					<layout_panel name="options_gear_btn_panel">
+						<menu_button name="friends_viewsort_btn" tool_tip="Показать дополнительные параметры"/>
+					</layout_panel>
+					<layout_panel name="add_btn_panel">
+						<button name="add_btn" tool_tip="Предложить жителю дружбу"/>
+					</layout_panel>
+					<layout_panel name="trash_btn_panel">
+						<dnd_button name="del_btn" tool_tip="Удалить выбранного жителя из списка друзей"/>
+					</layout_panel>
+				</layout_stack>
+			</panel>
 		</panel>
-		<panel label="ГРУППЫ" name="groups_panel">
-			<panel label="bottom_panel" name="groups_buttons_panel">
-				<filter_editor label="Фильтр для групп" name="groups_filter_input"/>
-				<menu_button name="groups_gear_btn" tool_tip="Действия с выбранной группой"/>
-				<menu_button name="groups_view_btn" tool_tip="Параметры просмотра/сортировки"/>
-				<menu_button name="plus_btn" tool_tip="Присоединиться к группе/создать новую группу"/>
-				<dnd_button name="minus_btn" tool_tip="Покинуть выбранную группу"/>
+		<panel label="МОИ ГРУППЫ" name="groups_panel">
+			<panel label="bottom_panel" name="bottom_panel">
+				<menu_button name="groups_viewsort_btn" tool_tip="Опции"/>
+				<button name="plus_btn" tool_tip="Присоединиться к группе/создать новую группу"/>
+				<button name="activate_btn" tool_tip="Активировать выбранную группу"/>
 			</panel>
 		</panel>
 		<panel label="НЕДАВНИЕ" name="recent_panel">
-			<panel label="bottom_panel" name="recent_buttons_panel">
-				<filter_editor label="Фильтр для людей" name="recent_filter_input"/>
-				<button name="gear_btn" tool_tip="Действия с выбранным жителем"/>
-				<menu_button name="recent_view_btn" tool_tip="Параметры просмотра/сортировки"/>
-				<button name="add_friend_btn" tool_tip="Предложить жителю дружбу"/>
-				<dnd_button name="recent_del_btn" tool_tip="Удалить выбранного пользователя из друзей"/>
+			<panel label="bottom_panel" name="bottom_panel">
+				<menu_button name="recent_viewsort_btn" tool_tip="Опции"/>
+				<button name="add_friend_btn" tool_tip="Добавить выбранного жителя в список друзей"/>
 			</panel>
 		</panel>
-		<panel label="БЛОКИРОВАН" name="blocked_panel">
-			<panel label="Черный список жителей и объектов" name="panel_block_list_sidetray"/>
-		</panel>
 	</tab_container>
+	<panel name="button_bar">
+		<layout_stack name="bottom_bar_ls">
+			<layout_panel name="view_profile_btn_lp">
+				<button label="Профиль" name="view_profile_btn" tool_tip="Показать изображение, группы и прочую информацию о жителе"/>
+			</layout_panel>
+			<layout_panel name="im_btn_lp">
+				<button label="IM" name="im_btn" tool_tip="Начать сеанс IM"/>
+			</layout_panel>
+			<layout_panel name="call_btn_lp">
+				<button label="Звонок" name="call_btn" tool_tip="Позвонить этому жителю"/>
+			</layout_panel>
+			<layout_panel name="share_btn_lp">
+				<button label="Поделиться" name="share_btn" tool_tip="Поделиться объектом из инвентаря"/>
+			</layout_panel>
+			<layout_panel name="teleport_btn_lp">
+				<button label="Телепортация" name="teleport_btn" tool_tip="Предложить телепортацию"/>
+			</layout_panel>
+		</layout_stack>
+		<layout_stack name="bottom_bar_ls1">
+			<layout_panel name="group_info_btn_lp">
+				<button label="Профиль группы" name="group_info_btn" tool_tip="Показать информацию о группе"/>
+			</layout_panel>
+			<layout_panel name="chat_btn_lp">
+				<button label="Групповой чат" name="chat_btn" tool_tip="Открыть сеанс чата"/>
+			</layout_panel>
+			<layout_panel name="group_call_btn_lp">
+				<button label="Звонок группе" name="group_call_btn" tool_tip="Позвонить этой группе"/>
+			</layout_panel>
+		</layout_stack>
+	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_chat.xml b/indra/newview/skins/default/xui/ru/panel_preferences_chat.xml
index 6383fc8c2c0..9283fc9e6e5 100644
--- a/indra/newview/skins/default/xui/ru/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/ru/panel_preferences_chat.xml
@@ -1,86 +1,34 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Текстовый чат" name="chat">
-	<panel>
-		<check_box initial_value="истина" label="Воспроизводить анимацию ввода текста при общении" name="play_typing_animation"/>
-		<check_box label="Отправлять мне сообщения по почте, когда меня нет в сети" name="send_im_to_email"/>
-		<check_box label="Только друзья и группы могут звонить мне и отправлять IM" name="voice_call_friends_only_check"/>
-		<text name="font_size">
-			Размер шрифта:
-		</text>
-		<combo_box name="chat_font_size">
-			<item label="Мелкий" name="Small" value="0"/>
-			<item label="Средний" name="Medium" value="1"/>
-			<item label="Крупный" name="Large" value="2"/>
-		</combo_box>
-		<check_box label="Чат в пузырьках" name="bubble_text_chat"/>
-	</panel>
-	<panel>
-		<text name="notifications">
-			Уведомления
-		</text>
-		<text name="friend_ims">
-			IM друзей:
-		</text>
-		<combo_box name="FriendIMOptions">
-			<item label="Открыть окно разговоров" name="OpenConversationsWindow" value="openconversations"/>
-			<item label="Сообщение во всплывающем окне" name="PopUpMessage" value="всплывание"/>
-			<item label="Мигание кнопки на панели инструментов" name="FlashToolbarButton" value="мигание"/>
-			<item label="Нет" name="None" value="нет"/>
-		</combo_box>
-		<text name="non_friend_ims">
-			IM чужих:
-		</text>
-		<combo_box name="NonFriendIMOptions">
-			<item label="Открыть окно разговоров" name="OpenConversationsWindow" value="openconversations"/>
-			<item label="Сообщение во всплывающем окне" name="PopUpMessage" value="всплывание"/>
-			<item label="Мигание кнопки на панели инструментов" name="FlashToolbarButton" value="мигание"/>
-			<item label="Нет" name="None" value="нет"/>
-		</combo_box>
-		<text name="conference_ims">
-			IM конференции:
-		</text>
-		<combo_box name="ConferenceIMOptions">
-			<item label="Открыть окно разговоров" name="OpenConversationsWindow" value="openconversations"/>
-			<item label="Сообщение во всплывающем окне" name="PopUpMessage" value="всплывание"/>
-			<item label="Мигание кнопки на панели инструментов" name="FlashToolbarButton" value="мигание"/>
-			<item label="Нет" name="None" value="нет"/>
-		</combo_box>
-		<text name="group_chat">
-			Групповой чат:
-		</text>
-		<combo_box name="GroupChatOptions">
-			<item label="Открыть окно разговоров" name="OpenConversationsWindow" value="openconversations"/>
-			<item label="Сообщение во всплывающем окне" name="PopUpMessage" value="всплывание"/>
-			<item label="Мигание кнопки на панели инструментов" name="FlashToolbarButton" value="мигание"/>
-			<item label="Нет" name="None" value="нет"/>
-		</combo_box>
-		<text name="nearby_chat">
-			Локальный чат:
-		</text>
-		<combo_box name="NearbyChatOptions">
-			<item label="Открыть окно разговоров" name="OpenConversationsWindow" value="openconversations"/>
-			<item label="Сообщение во всплывающем окне" name="PopUpMessage" value="всплывание"/>
-			<item label="Мигание кнопки на панели инструментов" name="FlashToolBarButton" value="мигание"/>
-			<item label="Нет" name="None" value="нет"/>
-		</combo_box>
-		<text name="notifications_alert">
-			Для временного отключения всех уведомлений вызовите меню «Общение &gt; Не беспокоить».
-		</text>
-	</panel>
-	<panel>
-		<text name="play_sound">
-			Звук:
-		</text>
-		<check_box label="Новый разговор" name="new_conversation"/>
-		<check_box label="Входящий голосовой вызов" name="incoming_voice_call"/>
-		<check_box label="Предложение телепортации" name="teleport_offer"/>
-		<check_box label="Предложение инвентаря" name="inventory_offer"/>
-	</panel>
-	<panel>
-		<button label="Очистить журнал..." name="clear_log"/>
-		<button label="Удалить записи..." name="delete_transcripts"/>
-		<button label="Обзор..." label_selected="Обзор" name="log_path_button"/>
-	</panel>
+	<text name="font_size">
+		Размер шрифта:
+	</text>
+	<radio_group name="chat_font_size">
+		<radio_item label="Мелкий" name="radio" value="0"/>
+		<radio_item label="Средний" name="radio2" value="1"/>
+		<radio_item label="Крупный" name="radio3" value="2"/>
+	</radio_group>
+	<check_box initial_value="истина" label="Воспроизводить анимацию ввода текста при общении" name="play_typing_animation"/>
+	<check_box label="Отправлять мне сообщения по почте, когда меня нет в сети" name="send_im_to_email"/>
+	<check_box label="Вести журнал текстового IM и чата" name="plain_text_chat_history"/>
+	<check_box label="Чат в пузырьках" name="bubble_text_chat"/>
+	<text name="show_ims_in_label">
+		Показывать сообщения:
+	</text>
+	<text name="requires_restart_label">
+		(требуется перезапуск)
+	</text>
+	<radio_group name="chat_window" tool_tip="Показывать IM-сообщения в отдельных окнах или же в одном окне с несколькими вкладками (требуется перезапуск)">
+		<radio_item label="В отдельных окнах" name="radio" value="0"/>
+		<radio_item label="На вкладках" name="radio2" value="1"/>
+	</radio_group>
+	<text name="disable_toast_label">
+		Включить всплывающие сообщения с новыми репликами в чате:
+	</text>
+	<check_box label="Групповой чат" name="EnableGroupChatPopups" tool_tip="Отображать всплывающие уведомления при появлении сообщений в групповом чате"/>
+	<check_box label="Текстовые чаты" name="EnableIMChatPopups" tool_tip="Отображать всплывающие уведомления при получении IM-сообщений"/>
+	<spinner label="Время отображения всплывающих реплик:" name="nearby_toasts_lifetime"/>
+	<spinner label="Время затухания всплывающих реплик:" name="nearby_toasts_fadingtime"/>
 	<button label="Перевод..." name="ok_btn"/>
 	<button label="Автозамена..." name="autoreplace_showgui"/>
 	<button label="Проверка правописания..." name="spellcheck_showgui"/>
diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_general.xml b/indra/newview/skins/default/xui/ru/panel_preferences_general.xml
index c7a850f78a1..d1bfedf2d85 100644
--- a/indra/newview/skins/default/xui/ru/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/ru/panel_preferences_general.xml
@@ -68,9 +68,9 @@
 		<combo_box.item label="никогда" name="item4"/>
 	</combo_box>
 	<text name="text_box3">
-		Ответ в режиме «Не беспокоить»:
+		Ответ в режиме «Занят»:
 	</text>
-	<text_editor name="do_not_disturb_response">
+	<text_editor name="busy_response">
 		log_in_to_change
 	</text_editor>
 </panel>
diff --git a/indra/newview/skins/default/xui/ru/sidepanel_task_info.xml b/indra/newview/skins/default/xui/ru/sidepanel_task_info.xml
index 5502530ca46..e9dd3760b5c 100644
--- a/indra/newview/skins/default/xui/ru/sidepanel_task_info.xml
+++ b/indra/newview/skins/default/xui/ru/sidepanel_task_info.xml
@@ -72,7 +72,6 @@
 			<combo_box.item label="Купить объект" name="Buyobject"/>
 			<combo_box.item label="Заплатить за объект" name="Payobject"/>
 			<combo_box.item label="Открыть" name="Open"/>
-			<combo_box.item label="Приблизить" name="Zoom"/>
 		</combo_box>
 		<panel name="perms_inv">
 			<text name="perm_modify">
diff --git a/indra/newview/skins/default/xui/ru/strings.xml b/indra/newview/skins/default/xui/ru/strings.xml
index d7d4df4a37c..f9ded799bff 100644
--- a/indra/newview/skins/default/xui/ru/strings.xml
+++ b/indra/newview/skins/default/xui/ru/strings.xml
@@ -137,7 +137,7 @@
 		Выйти
 	</string>
 	<string name="create_account_url">
-		http://join.secondlife.com/?sourceid=[sourceid]
+		http://join.secondlife.com/index.php?lang=ru-RU&amp;sourceid=[sourceid]
 	</string>
 	<string name="LoginFailedViewerNotPermitted">
 		У клиента, которым вы пользуетесь, больше нет доступа к игре Second Life. Загрузить новую версию клиента можно по адресу
@@ -619,7 +619,7 @@ support@secondlife.com.
 	<string name="AvatarAway">
 		Нет на месте
 	</string>
-	<string name="AvatarDoNotDisturb">
+	<string name="AvatarBusy">
 		Не беспокоить
 	</string>
 	<string name="AvatarMuted">
@@ -856,12 +856,6 @@ support@secondlife.com.
 	<string name="ST_NO_JOINT">
 		Не удается найти объект ROOT или JOINT.
 	</string>
-	<string name="NearbyChatTitle">
-		Локальный чат
-	</string>
-	<string name="NearbyChatLabel">
-		(Локальный чат)
-	</string>
 	<string name="whisper">
 		шепчет:
 	</string>
@@ -925,15 +919,12 @@ support@secondlife.com.
 	<string name="ControlYourCamera">
 		Управлять камерой
 	</string>
-	<string name="NotConnected">
-		Нет подключения
-	</string>
-	<string name="AgentNameSubst">
-		(Ð’Ñ‹)
-	</string>
 	<string name="TeleportYourAgent">
 		Телепортировать вас
 	</string>
+	<string name="NotConnected">
+		Нет подключения
+	</string>
 	<string name="SIM_ACCESS_PG">
 		Общий
 	</string>
@@ -1015,6 +1006,18 @@ support@secondlife.com.
 	<string name="dictionary_files">
 		Словари
 	</string>
+	<string name="AvatarSetNotAway">
+		На месте
+	</string>
+	<string name="AvatarSetAway">
+		Нет на месте
+	</string>
+	<string name="AvatarSetNotBusy">
+		Не занят(а)
+	</string>
+	<string name="AvatarSetBusy">
+		Не беспокоить
+	</string>
 	<string name="shape">
 		Фигура
 	</string>
@@ -1983,8 +1986,8 @@ support@secondlife.com.
 	<string name="PanelContentsNewScript">
 		Новый скрипт
 	</string>
-	<string name="DoNotDisturbModeResponseDefault">
-		Этот житель включил режим «Не беспокоить» и увидит ваше сообщение позже.
+	<string name="BusyModeResponseDefault">
+		У адресата вашего сообщения задан статус «Не беспокоить».  Ваше сообщение все равно будет отображено на панели IM для просмотра позже.
 	</string>
 	<string name="MuteByName">
 		(по имени)
@@ -2097,6 +2100,9 @@ support@secondlife.com.
 	<string name="GroupMoneyDate">
 		[weekday,datetime,utc], [day,datetime,utc] [mth,datetime,utc] [year,datetime,utc]
 	</string>
+	<string name="ViewerObjectContents">
+		Контент
+	</string>
 	<string name="AcquiredItems">
 		Купленные вещи
 	</string>
@@ -3865,7 +3871,7 @@ support@secondlife.com.
 		Область общей дозволенности
 	</string>
 	<string name="LocationCtrlSeeAVsTooltip">
-		Аватары на этом участке невидимы и неслышимы для аватаров с других участков
+		Все жители с других участков могут видеть аватары и общаться в чате
 	</string>
 	<string name="LocationCtrlPathfindingDirtyTooltip">
 		Возможны неполадки подвижных объектов в этом регионе, пока регион не будет восстановлен.
@@ -3942,12 +3948,6 @@ support@secondlife.com.
 	<string name="IM_unblock_only_groups_friends">
 		Для просмотра этого сообщения снимите флажок «Только друзья и группы могут звонить мне и отправлять IM» в окне «Настройки/Приватность».
 	</string>
-	<string name="OnlineStatus">
-		Онлайн
-	</string>
-	<string name="OfflineStatus">
-		Оффлайн
-	</string>
 	<string name="answered_call">
 		На ваш звонок ответили
 	</string>
@@ -3957,9 +3957,6 @@ support@secondlife.com.
 	<string name="you_joined_call">
 		Вы присоединились к голосовой беседе
 	</string>
-	<string name="you_auto_rejected_call-im">
-		Голосовой вызов автоматически отклонен, так как включен режим «Не беспокоить».
-	</string>
 	<string name="name_started_call">
 		Житель [NAME] начал голосовую беседу
 	</string>
@@ -3976,7 +3973,7 @@ support@secondlife.com.
 		Соединяется...
 	</string>
 	<string name="conference-title">
-		Чат с несколькими участниками
+		Спонтанная конференция
 	</string>
 	<string name="conference-title-incoming">
 		Конференция с жителем [AGENT_NAME]
@@ -4868,9 +4865,6 @@ support@secondlife.com.
 	<string name="Command_Chat_Label">
 		Чат
 	</string>
-	<string name="Command_Conversations_Label">
-		Разговоры
-	</string>
 	<string name="Command_Compass_Label">
 		Компас
 	</string>
@@ -4946,9 +4940,6 @@ support@secondlife.com.
 	<string name="Command_Chat_Tooltip">
 		Обменивайтесь текстовыми репликами с людьми вокруг вас
 	</string>
-	<string name="Command_Conversations_Tooltip">
-		Поговорить со всеми
-	</string>
 	<string name="Command_Compass_Tooltip">
 		Компас
 	</string>
@@ -5078,13 +5069,4 @@ support@secondlife.com.
 	<string name="UserDictionary">
 		[Пользователь]
 	</string>
-	<string name="logging_calls_disabled_log_empty">
-		Разговоры не записываются. Чтобы начать запись разговора, в меню «Настройки &gt; Чат» выберите «Сохранять: только журнал» или «Сохранять: журнал и записи».
-	</string>
-	<string name="logging_calls_disabled_log_not_empty">
-		Разговоры больше не будут записываться. Чтобы восстановить запись разговора, в меню «Настройки &gt; Чат» выберите «Сохранять: только журнал» или «Сохранять: журнал и записи».
-	</string>
-	<string name="logging_calls_enabled_log_empty">
-		Нет зарегистрированных разговоров. Если вы обратитесь к кому-то или наоборот, в журнале появится новая запись.
-	</string>
 </strings>
diff --git a/indra/newview/skins/default/xui/tr/floater_conversation_log.xml b/indra/newview/skins/default/xui/tr/floater_conversation_log.xml
deleted file mode 100644
index 5f8dac506fd..00000000000
--- a/indra/newview/skins/default/xui/tr/floater_conversation_log.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_conversation_log" title="SOHBET GÜNLÜĞÜ">
-	<panel name="buttons_panel">
-		<filter_editor label="KiÅŸileri Filtrele" name="people_filter_input"/>
-		<menu_button name="conversation_view_btn" tool_tip="Gösterme/sıralama seçenekleri"/>
-		<menu_button name="conversations_gear_btn" tool_tip="Seçilen kişi veya grup üzerindeki eylemler"/>
-	</panel>
-</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_conversation_preview.xml b/indra/newview/skins/default/xui/tr/floater_conversation_preview.xml
deleted file mode 100644
index 84403dfd682..00000000000
--- a/indra/newview/skins/default/xui/tr/floater_conversation_preview.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="preview_conversation" title="KONUÅžMA:">
-	<floater.string name="Title">
-		KONUÅžMA: [NAME]
-	</floater.string>
-	<text name="page_label" value="Sayfa"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_im_container.xml b/indra/newview/skins/default/xui/tr/floater_im_container.xml
index 6504430b3cb..4451d1d309b 100644
--- a/indra/newview/skins/default/xui/tr/floater_im_container.xml
+++ b/indra/newview/skins/default/xui/tr/floater_im_container.xml
@@ -1,29 +1,2 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<multi_floater name="floater_im_box" title="SOHBETLER">
-	<string name="collapse_icon" value="Conv_toolbar_collapse"/>
-	<string name="expand_icon" value="Conv_toolbar_expand"/>
-	<layout_stack name="conversations_stack">
-		<layout_panel name="conversations_layout_panel">
-			<layout_stack name="conversations_pane_buttons_stack">
-				<layout_panel name="conversations_pane_buttons_expanded">
-					<menu_button name="sort_btn" tool_tip="Gösterme/sıralama seçenekleri"/>
-					<button name="add_btn" tool_tip="Yeni bir sohbet baÅŸlat"/>
-					<button name="speak_btn" tool_tip="Mikrofonunuzu kullanarak kiÅŸilerle konuÅŸun"/>
-				</layout_panel>
-				<layout_panel name="conversations_pane_buttons_collapsed">
-					<button name="expand_collapse_btn" tool_tip="Bu listeyi Daralt/GeniÅŸlet"/>
-				</layout_panel>
-			</layout_stack>
-		</layout_panel>
-		<layout_panel name="messages_layout_panel">
-			<panel_container name="im_box_tab_container">
-				<panel name="stub_panel">
-					<button name="stub_collapse_btn" tool_tip="Bu panoyu daralt"/>
-					<text name="stub_textbox">
-						Sohbet ayrı bir pencerede.   [secondlife:/// Bunu geri getir.]
-					</text>
-				</panel>
-			</panel_container>
-		</layout_panel>
-	</layout_stack>
-</multi_floater>
+<multi_floater name="floater_im_box" title="SOHBETLER"/>
diff --git a/indra/newview/skins/default/xui/tr/floater_im_session.xml b/indra/newview/skins/default/xui/tr/floater_im_session.xml
index 8ce8f0fe13d..bed08b36c61 100644
--- a/indra/newview/skins/default/xui/tr/floater_im_session.xml
+++ b/indra/newview/skins/default/xui/tr/floater_im_session.xml
@@ -1,59 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="panel_im">
-	<floater.string name="call_btn_start">
-		Conv_toolbar_open_call
-	</floater.string>
-	<floater.string name="call_btn_stop">
-		Conv_toolbar_hang_up
-	</floater.string>
-	<floater.string name="collapseline_icon" value="Conv_collapse_to_one_line"/>
-	<floater.string name="expandline_icon" value="Conv_expand_one_line"/>
-	<floater.string name="collapse_icon" value="Conv_toolbar_collapse"/>
-	<floater.string name="expand_icon" value="Conv_toolbar_expand"/>
-	<floater.string name="tear_off_icon" value="Conv_toolbar_arrow_ne"/>
-	<floater.string name="return_icon" value="Conv_toolbar_arrow_sw"/>
-	<floater.string name="participant_added" value="[NAME] sohbete davet edildi."/>
-	<floater.string name="multiple_participants_added" value="[NAME] sohbete davet edildi."/>
-	<floater.string name="tooltip_to_separate_window" value="Bu sohbeti ayrı bir pencereye taşı"/>
-	<floater.string name="tooltip_to_main_window" value="Bu sohbeti ana pencereye geri taşı"/>
-	<floater.string name="start_call_button_tooltip" value="Ses bağlantısını aç"/>
-	<floater.string name="end_call_button_tooltip" value="Ses bağlantısını kapat"/>
-	<floater.string name="expcol_button_not_tearoff_tooltip" value="Bu panoyu daralt"/>
-	<floater.string name="expcol_button_tearoff_and_expanded_tooltip" value="Katılımcı listesini daralt"/>
-	<floater.string name="expcol_button_tearoff_and_collapsed_tooltip" value="Katılımcı listesini genişlet"/>
-	<view name="contents_view">
-		<layout_stack name="main_stack">
-			<layout_panel name="toolbar_panel">
-				<menu_button name="view_options_btn" tool_tip="Gösterme/sıralama seçenekleri"/>
-				<menu_button name="gear_btn" tool_tip="Seçilen kişi üzerindeki eylemler"/>
-				<button name="add_btn" tool_tip="Bu sohbete birini ekle"/>
-				<button name="voice_call_btn" tool_tip="Ses bağlantısını aç"/>
-				<button name="close_btn" tool_tip="Bu sohbeti bitir"/>
-				<button name="expand_collapse_btn" tool_tip="Bu panoyu Daralt/GeniÅŸlet"/>
-			</layout_panel>
-			<layout_panel name="body_panel">
-				<layout_stack name="im_panels">
-					<layout_panel name="right_part_holder">
-						<panel name="trnsAndChat_panel">
-							<layout_stack name="translate_and_chat_stack">
-								<layout_panel name="translate_chat_checkbox_lp">
-									<check_box label="Sohbeti çevir" name="translate_chat_checkbox"/>
-								</layout_panel>
-							</layout_stack>
-						</panel>
-					</layout_panel>
-				</layout_stack>
-			</layout_panel>
-			<layout_panel name="chat_layout_panel">
-				<layout_stack name="input_panels">
-					<layout_panel name="input_editor_layout_panel">
-						<chat_editor label="Kime" name="chat_editor"/>
-					</layout_panel>
-					<layout_panel name="input_button_layout_panel">
-						<button name="minz_btn" tool_tip="Mesaj panelini gösterir/gizler"/>
-					</layout_panel>
-				</layout_stack>
-			</layout_panel>
-		</layout_stack>
-	</view>
+	<layout_stack name="im_panels">
+		<layout_panel>
+			<line_editor label="Kime" name="chat_editor"/>
+		</layout_panel>
+	</layout_stack>
 </floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_incoming_call.xml b/indra/newview/skins/default/xui/tr/floater_incoming_call.xml
index 0f2b27241e0..adb03c2dff3 100644
--- a/indra/newview/skins/default/xui/tr/floater_incoming_call.xml
+++ b/indra/newview/skins/default/xui/tr/floater_incoming_call.xml
@@ -10,7 +10,7 @@
 		anonim
 	</floater.string>
 	<floater.string name="VoiceInviteP2P">
-		sizi arıyor.
+		arıyor.
 	</floater.string>
 	<floater.string name="VoiceInviteAdHoc">
 		bir Sesli Sohbet aramasına bir konferans araması ile katıldı.
@@ -25,9 +25,9 @@
 		[CURRENT_CHAT] sohbetinden ayrılıp, bu sesli sohbete katılmak istiyor musunuz?
 	</floater.string>
 	<text name="question">
-		Yanıtlarsanız, mevcut sesli sohbetinizle bağlantınız kesilecek.
+		[CURRENT_CHAT] sohbetinden ayrılıp, bu sesli sohbete katılmak istiyor musunuz?
 	</text>
-	<button label="Yanıtla" label_selected="Yanıtla" name="Accept"/>
-	<button label="Yok say" label_selected="Yok say" name="Reject"/>
-	<button label="Bunun yerine Aİ aç" name="Start IM"/>
+	<button label="Kabul Et" label_selected="Kabul Et" name="Accept"/>
+	<button label="Reddet" label_selected="Reddet" name="Reject"/>
+	<button label="AÄ° BaÅŸlat" name="Start IM"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_pathfinding_console.xml b/indra/newview/skins/default/xui/tr/floater_pathfinding_console.xml
index 35f47e6dfaa..6eecc7fb776 100644
--- a/indra/newview/skins/default/xui/tr/floater_pathfinding_console.xml
+++ b/indra/newview/skins/default/xui/tr/floater_pathfinding_console.xml
@@ -71,7 +71,7 @@
 			<text name="show_label">
 				Göster:
 			</text>
-			<check_box label="Test" name="show_world"/>
+			<check_box label="Dünya" name="show_world"/>
 			<check_box label="Sadece hareket ettirilebilir nesneler" name="show_world_movables_only"/>
 			<check_box label="Navigasyon örgüsü" name="show_navmesh"/>
 			<text name="show_walkability_label">
diff --git a/indra/newview/skins/default/xui/tr/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/tr/floater_texture_ctrl.xml
index 42483c09e18..889425f23a0 100644
--- a/indra/newview/skins/default/xui/tr/floater_texture_ctrl.xml
+++ b/indra/newview/skins/default/xui/tr/floater_texture_ctrl.xml
@@ -19,7 +19,7 @@
 	<button label="Varsayılan" label_selected="Varsayılan" name="Default"/>
 	<button label="BoÅŸ" label_selected="BoÅŸ" name="Blank"/>
 	<button label="Hiçbiri" label_selected="Hiçbiri" name="None"/>
-	<check_box initial_value="true" label="Åžimdi uygula" name="apply_immediate_check"/>
+	<check_box initial_value="true" label="Canlı Önizleme" name="apply_immediate_check"/>
 	<text name="preview_disabled" value="Önizleme Devre Dışı"/>
 	<filter_editor label="Dokuları Filtrele" name="inventory search editor"/>
 	<check_box initial_value="false" label="Klasörleri göster" name="show_folders_check"/>
diff --git a/indra/newview/skins/default/xui/tr/floater_voice_chat_volume.xml b/indra/newview/skins/default/xui/tr/floater_voice_chat_volume.xml
deleted file mode 100644
index ec350bee60b..00000000000
--- a/indra/newview/skins/default/xui/tr/floater_voice_chat_volume.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_voice_volume" title="SOHBET SES DÃœZEYÄ°">
-	<slider label="Sesli Sohbet" name="chat_voice_volume"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_voice_effect.xml b/indra/newview/skins/default/xui/tr/floater_voice_effect.xml
index 7a157244cd6..3534a3fe906 100644
--- a/indra/newview/skins/default/xui/tr/floater_voice_effect.xml
+++ b/indra/newview/skins/default/xui/tr/floater_voice_effect.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater label="Yerler" name="voice_effects" title="SES ŞEKİLLENDİRME ÖNİZLEMESİ">
+<floater label="Yerler" name="voice_effects" title="SES ÅžEKÄ°LLENDÄ°RME">
 	<string name="no_voice_effect">
 		(Ses Åžekillendirme Yok)
 	</string>
diff --git a/indra/newview/skins/default/xui/tr/floater_voice_volume.xml b/indra/newview/skins/default/xui/tr/floater_voice_volume.xml
deleted file mode 100644
index acf99d6199c..00000000000
--- a/indra/newview/skins/default/xui/tr/floater_voice_volume.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!--
-  Not can_close / no title to avoid window chrome
-  Single instance - only have one at a time, recycle it each spawn
--->
-<floater name="floater_voice_volume" title="SES DÃœZEYÄ°">
-	<slider name="volume_slider" tool_tip="Ses düzeyi" value="0.5"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/tr/menu_cof_gear.xml b/indra/newview/skins/default/xui/tr/menu_cof_gear.xml
index 9480d300298..f910e1fe910 100644
--- a/indra/newview/skins/default/xui/tr/menu_cof_gear.xml
+++ b/indra/newview/skins/default/xui/tr/menu_cof_gear.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu name="Gear COF">
 	<menu label="Yeni Giysiler" name="COF.Gear.New_Clothes"/>
-	<menu label="Yeni Vücut Bölümleri" name="COF.Gear.New_Body_Parts"/>
+	<menu label="Yeni Vücut Bölümleri" name="COF.Geear.New_Body_Parts"/>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_conversation.xml b/indra/newview/skins/default/xui/tr/menu_conversation.xml
deleted file mode 100644
index 31404f25010..00000000000
--- a/indra/newview/skins/default/xui/tr/menu_conversation.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_conversation_participant">
-	<menu_item_call label="Sohbeti kapat" name="close_conversation"/>
-	<menu_item_call label="Ses sohbetini aç" name="open_voice_conversation"/>
-	<menu_item_call label="Ses bağlantısını kes" name="disconnect_from_voice"/>
-	<menu_item_call label="Profili Göster" name="view_profile"/>
-	<menu_item_call label="AÄ°" name="im"/>
-	<menu_item_call label="Işınlama teklif et" name="offer_teleport"/>
-	<menu_item_call label="Sesli arama" name="voice_call"/>
-	<menu_item_call label="Sohbet geçmişi..." name="chat_history"/>
-	<menu_item_call label="ArkadaÅŸ ekle" name="add_friend"/>
-	<menu_item_call label="Arkadaşı çıkar" name="remove_friend"/>
-	<menu_item_call label="Arkadaşları çıkar" name="remove_friends"/>
-	<menu_item_call label="Gruba davet et..." name="invite_to_group"/>
-	<menu_item_call label="Yakınlaştır" name="zoom_in"/>
-	<menu_item_call label="Harita" name="map"/>
-	<menu_item_call label="PaylaÅŸ" name="share"/>
-	<menu_item_call label="Öde" name="pay"/>
-	<menu_item_check label="Sesi Engelle" name="block_unblock"/>
-	<menu_item_check label="Metni Engelle" name="MuteText"/>
-	<menu_item_call label="Grup Profili" name="group_profile"/>
-	<menu_item_call label="Grubu EtkinleÅŸtir" name="activate_group"/>
-	<menu_item_call label="Gruptan Ayrıl" name="leave_group"/>
-	<context_menu label="Moderatör Seçenekleri" name="Moderator Options">
-		<menu_item_check label="Metin sohbetine izin ver" name="AllowTextChat"/>
-		<menu_item_call label="Bu katılımcıyı engelle" name="ModerateVoiceMuteSelected"/>
-		<menu_item_call label="Bu katılımcının engellemesini kaldır" name="ModerateVoiceUnMuteSelected"/>
-		<menu_item_call label="Herkesi engelle" name="ModerateVoiceMute"/>
-		<menu_item_call label="Herkesin engellemesini kaldır" name="ModerateVoiceUnmute"/>
-	</context_menu>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_conversation_log_gear.xml b/indra/newview/skins/default/xui/tr/menu_conversation_log_gear.xml
deleted file mode 100644
index 9e91780eb81..00000000000
--- a/indra/newview/skins/default/xui/tr/menu_conversation_log_gear.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="Conversation Context Menu">
-	<menu_item_call label="AÄ°..." name="IM"/>
-	<menu_item_call label="Sesli arama..." name="Call"/>
-	<menu_item_call label="Sohbet geçmişini aç..." name="Chat history"/>
-	<menu_item_call label="Profili Göster" name="View Profile"/>
-	<menu_item_call label="Işınlama Teklif Et" name="teleport"/>
-	<menu_item_call label="ArkadaÅŸ Ekle" name="add_friend"/>
-	<menu_item_call label="Arkadaşı Çıkar" name="remove_friend"/>
-	<menu_item_call label="Gruba davet et..." name="Invite"/>
-	<menu_item_call label="Harita" name="Map"/>
-	<menu_item_call label="PaylaÅŸ" name="Share"/>
-	<menu_item_call label="Öde" name="Pay"/>
-	<menu_item_check label="Engelle/Engeli Kaldır" name="Block/Unblock"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_conversation_log_view.xml b/indra/newview/skins/default/xui/tr/menu_conversation_log_view.xml
deleted file mode 100644
index 9a77eaadd90..00000000000
--- a/indra/newview/skins/default/xui/tr/menu_conversation_log_view.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_conversation_view">
-	<menu_item_check label="Ada göre sırala" name="sort_by_name"/>
-	<menu_item_check label="Tarihe göre sırala" name="sort_by_date"/>
-	<menu_item_check label="Arkadaşlar üstte olacak şekilde sırala" name="sort_by_friends"/>
-	<menu_item_call label="Yakındaki sohbet geçmişini göster..." name="view_nearby_chat_history"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_im_conversation.xml b/indra/newview/skins/default/xui/tr/menu_im_conversation.xml
deleted file mode 100644
index 3b9738edceb..00000000000
--- a/indra/newview/skins/default/xui/tr/menu_im_conversation.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="Conversation Gear Menu">
-	<menu_item_call label="Profili Göster" name="View Profile"/>
-	<menu_item_call label="ArkadaÅŸ Ekle" name="Add Friend"/>
-	<menu_item_call label="Arkadaşı çıkar" name="remove_friend"/>
-	<menu_item_call label="Işınlama teklif et" name="offer_teleport"/>
-	<menu_item_call label="Gruba davet et..." name="invite_to_group"/>
-	<menu_item_call label="Sohbet geçmişi..." name="chat_history"/>
-	<menu_item_call label="Yakınlaştır" name="zoom_in"/>
-	<menu_item_call label="Harita" name="map"/>
-	<menu_item_call label="PaylaÅŸ" name="Share"/>
-	<menu_item_call label="Öde" name="Pay"/>
-	<menu_item_check label="Sesi Engelle" name="Block/Unblock"/>
-	<menu_item_check label="Metni Engelle" name="MuteText"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_im_session_showmodes.xml b/indra/newview/skins/default/xui/tr/menu_im_session_showmodes.xml
deleted file mode 100644
index c4d4357ac97..00000000000
--- a/indra/newview/skins/default/xui/tr/menu_im_session_showmodes.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_modes">
-	<menu_item_check label="Daraltılmış görünüm" name="compact_view"/>
-	<menu_item_check label="Genişletilmiş görünüm" name="expanded_view"/>
-	<menu_item_check label="Zamanı göster" name="IMShowTime"/>
-	<menu_item_check label="Bire bir sohbetlerde adları göster" name="IMShowNamesForP2PConv"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_object_icon.xml b/indra/newview/skins/default/xui/tr/menu_object_icon.xml
index 3d5c68d9d3d..34a2661d8af 100644
--- a/indra/newview/skins/default/xui/tr/menu_object_icon.xml
+++ b/indra/newview/skins/default/xui/tr/menu_object_icon.xml
@@ -2,6 +2,4 @@
 <menu name="Object Icon Menu">
 	<menu_item_call label="Nesne Profili..." name="Object Profile"/>
 	<menu_item_call label="Engelle..." name="Block"/>
-	<menu_item_call label="Haritada Göster" name="show_on_map"/>
-	<menu_item_call label="Nesne Konumuna Işınla" name="teleport_to_object"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_outfit_gear.xml b/indra/newview/skins/default/xui/tr/menu_outfit_gear.xml
index 674041e9c9b..d2e7e7107aa 100644
--- a/indra/newview/skins/default/xui/tr/menu_outfit_gear.xml
+++ b/indra/newview/skins/default/xui/tr/menu_outfit_gear.xml
@@ -23,8 +23,6 @@
 		<menu_item_call label="Yeni Saç" name="New Hair"/>
 		<menu_item_call label="Yeni Gözler" name="New Eyes"/>
 	</menu>
-	<menu_item_call label="Tüm klasörleri genişlet" name="expand"/>
-	<menu_item_call label="Tüm klasörleri daralt" name="collapse"/>
 	<menu_item_call label="Dış Görünümü Yeniden Adlandır" name="rename"/>
 	<menu_item_call label="Dış Görünümü Sil" name="delete_outfit"/>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_participant_view.xml b/indra/newview/skins/default/xui/tr/menu_participant_view.xml
deleted file mode 100644
index e9411ff350d..00000000000
--- a/indra/newview/skins/default/xui/tr/menu_participant_view.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="participant_manu_view">
-	<menu_item_check label="Sohbetleri türe göre sırala" name="sort_sessions_by_type"/>
-	<menu_item_check label="Sohbetleri ada göre sırala" name="sort_sessions_by_name"/>
-	<menu_item_check label="Sohbetleri son faaliyetlere göre sırala" name="sort_sessions_by_recent"/>
-	<menu_item_check label="Katılımcıları ada göre sırala" name="sort_participants_by_name"/>
-	<menu_item_check label="Katılımcıları son faaliyetlere göre sırala" name="sort_participants_by_recent"/>
-	<menu_item_call label="Sohbet tercihleri..." name="chat_preferences"/>
-	<menu_item_call label="Gizlilik tercihleri..." name="privacy_preferences"/>
-	<menu_item_check label="Sohbet günlüğü..." name="Conversation"/>
-	<menu_item_check label="Yakındaki sohbeti çevir" name="Translate_chat"/>
-	<menu_item_check label="Çeviri ayarları..." name="Translation_settings"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_people_blocked_gear.xml b/indra/newview/skins/default/xui/tr/menu_people_blocked_gear.xml
deleted file mode 100644
index 2bf1101b481..00000000000
--- a/indra/newview/skins/default/xui/tr/menu_people_blocked_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_blocked_gear">
-	<menu_item_call label="Engellemeyi Kaldır" name="unblock"/>
-	<menu_item_call label="Profil..." name="profile"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_people_blocked_plus.xml b/indra/newview/skins/default/xui/tr/menu_people_blocked_plus.xml
deleted file mode 100644
index a869e2ae7d6..00000000000
--- a/indra/newview/skins/default/xui/tr/menu_people_blocked_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_blocked_plus">
-	<menu_item_call label="Sakini ada göre engelle..." name="block_resident_by_name"/>
-	<menu_item_call label="Nesneyi ada göre engelle" name="block_object_by_name"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_people_blocked_view.xml b/indra/newview/skins/default/xui/tr/menu_people_blocked_view.xml
deleted file mode 100644
index 14b3de3a9fc..00000000000
--- a/indra/newview/skins/default/xui/tr/menu_people_blocked_view.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_blocked_view">
-	<menu_item_check label="Ada göre sırala" name="sort_by_name"/>
-	<menu_item_check label="Türe göre sırala" name="sort_by_type"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_people_friends_view.xml b/indra/newview/skins/default/xui/tr/menu_people_friends_view.xml
deleted file mode 100644
index 609584d6a60..00000000000
--- a/indra/newview/skins/default/xui/tr/menu_people_friends_view.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_group_plus">
-	<menu_item_check label="Ada Göre Sırala" name="sort_name"/>
-	<menu_item_check label="Duruma Göre Sırala" name="sort_status"/>
-	<menu_item_check label="Kişi Simgelerini Göster" name="view_icons"/>
-	<menu_item_check label="Verilen İzinleri Göster" name="view_permissions"/>
-	<menu_item_check label="Sohbet Günlüğünü Göster..." name="view_conversation"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_people_groups.xml b/indra/newview/skins/default/xui/tr/menu_people_groups.xml
index 743b01844d1..9f2946e310a 100644
--- a/indra/newview/skins/default/xui/tr/menu_people_groups.xml
+++ b/indra/newview/skins/default/xui/tr/menu_people_groups.xml
@@ -2,7 +2,7 @@
 <menu name="menu_group_plus">
 	<menu_item_call label="Bilgileri Görüntüle" name="View Info"/>
 	<menu_item_call label="Sohbet" name="Chat"/>
-	<menu_item_call label="Sesli arama" name="Call"/>
+	<menu_item_call label="Ara" name="Call"/>
 	<menu_item_call label="EtkinleÅŸtir" name="Activate"/>
 	<menu_item_call label="Ayrıl" name="Leave"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_people_groups_view.xml b/indra/newview/skins/default/xui/tr/menu_people_groups_view.xml
deleted file mode 100644
index e550b20addd..00000000000
--- a/indra/newview/skins/default/xui/tr/menu_people_groups_view.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_group_plus">
-	<menu_item_check label="Grup Simgelerini Göster" name="Display Group Icons"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_people_nearby.xml b/indra/newview/skins/default/xui/tr/menu_people_nearby.xml
index 2d61461c919..ee859a9450d 100644
--- a/indra/newview/skins/default/xui/tr/menu_people_nearby.xml
+++ b/indra/newview/skins/default/xui/tr/menu_people_nearby.xml
@@ -1,16 +1,13 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Avatar Context Menu">
-	<menu_item_call label="Profili Göster" name="view_profile"/>
-	<menu_item_call label="AÄ°" name="im"/>
-	<menu_item_call label="Işınlama Teklif Et" name="offer_teleport"/>
-	<menu_item_call label="Sesli arama" name="voice_call"/>
-	<menu_item_call label="Sohbet geçmişini göster..." name="chat_history"/>
-	<menu_item_call label="ArkadaÅŸ Ekle" name="add_friend"/>
-	<menu_item_call label="Arkadaşı Çıkar" name="remove_friend"/>
-	<menu_item_call label="Gruba davet et..." name="invite_to_group"/>
-	<menu_item_call label="Yakınlaştır" name="zoom_in"/>
-	<menu_item_call label="Harita" name="map"/>
-	<menu_item_call label="PaylaÅŸ" name="share"/>
-	<menu_item_call label="Öde" name="pay"/>
-	<menu_item_check label="Engelle/Engeli Kaldır" name="block_unblock"/>
+	<menu_item_call label="Profili Göster" name="View Profile"/>
+	<menu_item_call label="ArkadaÅŸ Ekle" name="Add Friend"/>
+	<menu_item_call label="Arkadaşı Çıkar" name="Remove Friend"/>
+	<menu_item_call label="AÄ°" name="IM"/>
+	<menu_item_call label="Ara" name="Call"/>
+	<menu_item_call label="Harita" name="Map"/>
+	<menu_item_call label="PaylaÅŸ" name="Share"/>
+	<menu_item_call label="Öde" name="Pay"/>
+	<menu_item_check label="Engelle/Engeli Kaldır" name="Block/Unblock"/>
+	<menu_item_call label="Işınlama Teklif Et" name="teleport"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/tr/menu_people_nearby_multiselect.xml
index 20695d98e8d..5c89f87906c 100644
--- a/indra/newview/skins/default/xui/tr/menu_people_nearby_multiselect.xml
+++ b/indra/newview/skins/default/xui/tr/menu_people_nearby_multiselect.xml
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Multi-Selected People Context Menu">
-	<menu_item_call label="ArkadaÅŸ Ekle" name="add_friends"/>
-	<menu_item_call label="Arkadaşı Çıkar" name="remove_friends"/>
-	<menu_item_call label="AÄ°" name="im"/>
-	<menu_item_call label="Ara" name="call"/>
-	<menu_item_call label="PaylaÅŸ" name="share"/>
-	<menu_item_call label="Öde" name="pay"/>
-	<menu_item_call label="Işınlama Teklif Et" name="offer_teleport"/>
+	<menu_item_call label="ArkadaÅŸ Ekle" name="Add Friends"/>
+	<menu_item_call label="Arkadaşı Çıkar" name="Remove Friend"/>
+	<menu_item_call label="AÄ°" name="IM"/>
+	<menu_item_call label="Ara" name="Call"/>
+	<menu_item_call label="PaylaÅŸ" name="Share"/>
+	<menu_item_call label="Öde" name="Pay"/>
+	<menu_item_call label="Işınlama Teklif Et" name="teleport"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_people_nearby_view.xml b/indra/newview/skins/default/xui/tr/menu_people_nearby_view.xml
deleted file mode 100644
index 59ea7c145f6..00000000000
--- a/indra/newview/skins/default/xui/tr/menu_people_nearby_view.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_group_plus">
-	<menu_item_check label="Son Konuşanlara Göre Sırala" name="sort_by_recent_speakers"/>
-	<menu_item_check label="Ada Göre Sırala" name="sort_name"/>
-	<menu_item_check label="Mesafeye Göre Sırala" name="sort_distance"/>
-	<menu_item_check label="Kişi Simgelerini Göster" name="view_icons"/>
-	<menu_item_check label="Haritayı Göster" name="view_map"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_people_recent_view.xml b/indra/newview/skins/default/xui/tr/menu_people_recent_view.xml
deleted file mode 100644
index 02be715ed2c..00000000000
--- a/indra/newview/skins/default/xui/tr/menu_people_recent_view.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_group_plus">
-	<menu_item_check label="En Sonunculara Göre Sırala" name="sort_most"/>
-	<menu_item_check label="Ada Göre Sırala" name="sort_name"/>
-	<menu_item_check label="Kişi Simgelerini Göster" name="view_icons"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_url_agent.xml b/indra/newview/skins/default/xui/tr/menu_url_agent.xml
index b14a0509bfe..d82b52aea80 100644
--- a/indra/newview/skins/default/xui/tr/menu_url_agent.xml
+++ b/indra/newview/skins/default/xui/tr/menu_url_agent.xml
@@ -1,8 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Url Popup">
-	<menu_item_call label="Profili Göster" name="show_agent"/>
-	<menu_item_call label="Aİ Gönder..." name="send_im"/>
-	<menu_item_call label="ArkadaÅŸ Ekle..." name="add_friend"/>
+	<menu_item_call label="Sakin Profilini Göster" name="show_agent"/>
 	<menu_item_call label="Adı panoya kopyala" name="url_copy_label"/>
 	<menu_item_call label="SLurl&apos;yi Panoya Kopyala" name="url_copy"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_url_objectim.xml b/indra/newview/skins/default/xui/tr/menu_url_objectim.xml
index 00fa3c27c2e..d55e34c11c3 100644
--- a/indra/newview/skins/default/xui/tr/menu_url_objectim.xml
+++ b/indra/newview/skins/default/xui/tr/menu_url_objectim.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Url Popup">
-	<menu_item_call label="Nesne Profili..." name="show_object"/>
+	<menu_item_call label="Nesne Bilgilerini Göster" name="show_object"/>
 	<menu_item_call label="Haritada Göster" name="show_on_map"/>
 	<menu_item_call label="Nesne Konumuna Işınla" name="teleport_to_object"/>
 	<menu_item_call label="Nesne Adını panoya kopyala" name="url_copy_label"/>
diff --git a/indra/newview/skins/default/xui/tr/menu_viewer.xml b/indra/newview/skins/default/xui/tr/menu_viewer.xml
index c465966fc7e..7a7faf6ac4b 100644
--- a/indra/newview/skins/default/xui/tr/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/tr/menu_viewer.xml
@@ -16,7 +16,10 @@
 			<menu_item_call label="Beni Anime Etmeyi Durdur" name="Stop Animating My Avatar"/>
 			<menu_item_call label="Yürü / koş / uç..." name="Walk / run / fly"/>
 		</menu>
-		<menu label="Durum" name="Status"/>
+		<menu label="Durum" name="Status">
+			<menu_item_call label="Uzakta" name="Set Away"/>
+			<menu_item_call label="MeÅŸgul" name="Set Busy"/>
+		</menu>
 		<menu_item_call label="L$ Satın Al..." name="Buy and Sell L$"/>
 		<menu_item_call label="Satıcı Giden Kutusu..." name="MerchantOutbox"/>
 		<menu_item_call label="Hesap kontrol paneli..." name="Manage My Account"/>
@@ -27,18 +30,14 @@
 		<menu_item_call label="[APP_NAME]&apos;den Çık" name="Quit"/>
 	</menu>
 	<menu label="Ä°letiÅŸim Kur" name="Communicate">
-		<menu_item_check label="Sohbetler..." name="Conversations"/>
-		<menu_item_check label="Yakındaki Sohbet..." name="Nearby Chat"/>
+		<menu_item_check label="Sohbet..." name="Nearby Chat"/>
 		<menu_item_check label="KonuÅŸ" name="Speak"/>
-		<menu label="Ses ÅŸekillendirme" name="VoiceMorphing">
-			<menu_item_check label="Ses ÅŸekillendirme yok" name="NoVoiceMorphing"/>
-			<menu_item_check label="Önizleme..." name="Preview"/>
-			<menu_item_call label="Abone ol..." name="Subscribe"/>
-		</menu>
+		<menu_item_check label="Ses ayarları..." name="Nearby Voice"/>
+		<menu_item_check label="Ses ÅŸekillendirme..." name="ShowVoice"/>
 		<menu_item_check label="Mimikler..." name="Gestures"/>
-		<menu_item_check label="ArkadaÅŸlar" name="My Friends"/>
-		<menu_item_check label="Gruplar" name="My Groups"/>
-		<menu_item_check label="Yakındaki kişiler" name="Active Speakers"/>
+		<menu_item_call label="ArkadaÅŸlar" name="My Friends"/>
+		<menu_item_call label="Gruplar" name="My Groups"/>
+		<menu_item_call label="Yakındaki kişiler" name="Active Speakers"/>
 		<menu_item_call label="Engelleme Listesi" name="Block List"/>
 	</menu>
 	<menu label="Dünya" name="World">
@@ -114,6 +113,7 @@
 			<menu_item_call label="Satın Al" name="Menu Object Buy"/>
 			<menu_item_call label="Al" name="Menu Object Take"/>
 			<menu_item_call label="Kopya Al" name="Take Copy"/>
+			<menu_item_call label="Envanterime Geri Kaydet" name="Save Object Back to My Inventory"/>
 			<menu_item_call label="Nesne İçeriklerine Geri Kaydet" name="Save Object Back to Object Contents"/>
 			<menu_item_call label="Nesneyi Ä°ade Et" name="Return Object back to Owner"/>
 		</menu>
@@ -128,7 +128,6 @@
 			<menu_item_call label="Bağlantı kümeleri..." name="pathfinding_linksets_menu_item"/>
 			<menu_item_call label="Karakterler..." name="pathfinding_characters_menu_item"/>
 			<menu_item_call label="Görüntüleme / test..." name="pathfinding_console_menu_item"/>
-			<menu_item_call label="Bölgeyi tekrar kaydet" name="pathfinding_rebake_navmesh_item"/>
 		</menu>
 		<menu label="Seçenklr." name="Options">
 			<menu_item_check label="Gelişmiş İzinleri Göster" name="DebugPermissions"/>
@@ -158,13 +157,6 @@
 	<menu label="Yardım" name="Help">
 		<menu_item_call label="Nasıl yapılır..." name="How To"/>
 		<menu_item_call label="[SECOND_LIFE] Yardımı" name="Second Life Help"/>
-		<menu_item_call label="Kullanıcı kılavuzu" name="User’s guide"/>
-		<menu_item_call label="Bilgi Bankası" name="Knowledge Base"/>
-		<menu_item_call label="Wiki" name="Wiki"/>
-		<menu_item_call label="Topluluk Forumları" name="Community Forums"/>
-		<menu_item_call label="Destek portalı" name="Support portal"/>
-		<menu_item_call label="[SECOND_LIFE] Haberleri" name="Second Life News"/>
-		<menu_item_call label="[SECOND_LIFE] Blogları" name="Second Life Blogs"/>
 		<menu_item_call label="Kötüye Kullanımı Bildir" name="Report Abuse"/>
 		<menu_item_call label="Hata Bildir" name="Report Bug"/>
 		<menu_item_call label="[APP_NAME] Hakkında" name="About Second Life"/>
@@ -391,14 +383,9 @@
 				<menu_item_call label="Test DiÅŸisi" name="Test Female"/>
 				<menu_item_check label="Avatar Seçimine İzin Ver" name="Allow Select Avatar"/>
 			</menu>
-			<menu label="Animasyon Hızı" name="Animation Speed">
-				<menu_item_call label="Tüm Animasyonlar %10 Daha Hızlı" name="All Animations 10 Faster"/>
-				<menu_item_call label="Tüm Animasyonlar %10 Daha Yavaş" name="All Animations 10 Slower"/>
-				<menu_item_call label="Tüm Animasyon Hızlarını Sıfırla" name="Reset All Animation Speed"/>
-				<menu_item_check label="Yavaş Hareket Animasyonları" name="Slow Motion Animations"/>
-			</menu>
 			<menu_item_call label="Parametreleri Varsayılana Zorla" name="Force Params to Default"/>
 			<menu_item_check label="Animasyon Bilgisi" name="Animation Info"/>
+			<menu_item_check label="Yavaş Hareket Animasyonları" name="Slow Motion Animations"/>
 			<menu_item_check label="Şuraya Bak&apos;ı Göster" name="Show Look At"/>
 			<menu_item_check label="Şuraya İşaret Et&apos;i Göster" name="Show Point At"/>
 			<menu_item_check label="Eklem Güncelleştirmeleri İçin Hata Ayıklama" name="Debug Joint Updates"/>
diff --git a/indra/newview/skins/default/xui/tr/notifications.xml b/indra/newview/skins/default/xui/tr/notifications.xml
index ad92a4b478d..488702f9caa 100644
--- a/indra/newview/skins/default/xui/tr/notifications.xml
+++ b/indra/newview/skins/default/xui/tr/notifications.xml
@@ -516,24 +516,6 @@ Daha fazla bilgi için [_URL] adresini ziyaret etmek ister misiniz?
 		</url>
 		<usetemplate ignoretext="Grafik sürücüm güncel değil" name="okcancelignore" notext="Hayır" yestext="Evet"/>
 	</notification>
-	<notification name="AMDOldDriver">
-		Grafik yonganız için muhtemelen daha yeni bir sürücü mevcut.  Grafik sürücüleri güncellemek performansınızı kayda değer şekilde artırabilir.
-
-    Sürücü güncellemeleri için [_URL] adresini ziyaret etmek ister misiniz?
-		<url name="url">
-			http://support.amd.com/us/Pages/AMDSupportHub.aspx
-		</url>
-		<usetemplate ignoretext="Grafik sürücüm güncel değil" name="okcancelignore" notext="Hayır" yestext="Evet"/>
-	</notification>
-	<notification name="NVIDIAOldDriver">
-		Grafik yonganız için muhtemelen daha yeni bir sürücü mevcut.  Grafik sürücüleri güncellemek performansınızı kayda değer şekilde artırabilir.
-
-    Sürücü güncellemeleri için [_URL] adresini ziyaret etmek ister misiniz?
-		<url name="url">
-			http://www.nvidia.com/Download/index.aspx?lang=en-us
-		</url>
-		<usetemplate ignoretext="Grafik sürücüm güncel değil" name="okcancelignore" notext="Hayır" yestext="Evet"/>
-	</notification>
 	<notification name="UnknownGPU">
 		Sisteminiz [APP_NAME] uygulamasının tanımadığı bir grafik kartı içeriyor.
 Bu durum genellikle [APP_NAME] uygulaması ile henüz denenmemiş yeni donanımlar kullanıldığında ortaya çıkar.  Büyük olasılıkla bir sorun çıkmayacaktır, fakat grafik ayarlarınızı değiştirmeniz gerekebilir.
@@ -1564,13 +1546,10 @@ Gruptan ayrılmak istiyor musunuz?
 		Şu anda arkadaşlık teklif edilemiyor. Lütfen biraz sonra tekrar deneyin.
 		<usetemplate name="okbutton" yestext="Tamam"/>
 	</notification>
-	<notification name="DoNotDisturbModeSet">
-		Rahatsız Etme açık.  Gelen iletişimlerle ilgili size bilgi verilmeyecek.
-
-- Diğer sakinlere sizin Rahatsız Etmeyin yanıtı iletilecektir (Tercihler &gt; Genel içerisinde ayarlanır).
-- Işınlanma teklifleri reddedilecektir.
-- Sesli aramalar reddedilecektir.
-		<usetemplate ignoretext="Durumumu Rahatsız Etme moduna değiştiriyorum" name="okignore" yestext="Tamam"/>
+	<notification name="BusyModeSet">
+		Durumunuz Meşgul olarak ayarlandı.
+Sohbet ve anlık iletiler gizlenecek. Anlık iletilere Meşgul durumu için belirlediğiniz yanıt gönderilecek. Tüm ışınlanma teklifleri reddedilecek. Tüm envanter teklifleri Çöp Kutunuza gidecek.
+		<usetemplate ignoretext="Durumumu MeÅŸgul olarak deÄŸiÅŸtiriyorum" name="okignore" yestext="Tamam"/>
 	</notification>
 	<notification name="JoinedTooManyGroupsMember">
 		Maksimum grup sayısına eriştiniz. Lütfen bu gruba katılmadan önce başka bir gruptan ayrılın ya da bu teklifi reddedin.
@@ -2054,10 +2033,6 @@ Envanter öğesi/öğeleri taşınsın mı?
 		Hesap geçmişinizi görüntülemek için [http://secondlife.com/account/ Kontrol Paneli] adresine gitmek istiyor musunuz?
 		<usetemplate ignoretext="Hesap geçmişimi görüntülemek için tarayıcımı başlat" name="okcancelignore" notext="İptal" yestext="Sayfaya git"/>
 	</notification>
-	<notification name="ConfirmAddingChatParticipants">
-		Mevcut bir sohbete bir kişi eklediğinizde yeni bir sohbet oluşturulur.  Tüm katılımcılara yeni sohbet bildirimi gönderilir.
-		<usetemplate ignoretext="Sohbet katılımcılarının eklenmesini doğrula" name="okcancelignore" notext="İptal" yestext="Tamam"/>
-	</notification>
 	<notification name="ConfirmQuit">
 		Çıkmak istediğinize emin misiniz?
 		<usetemplate ignoretext="Çıkmadan önce doğrulama iste" name="okcancelignore" notext="Çıkma" yestext="Çık"/>
@@ -2132,14 +2107,14 @@ Bu nesneyi seçilen nesne ile değiştirmek istiyor musunuz?
 			<button ignore="Hiçbir Zaman Değiştirme" name="No" text="İptal"/>
 		</form>
 	</notification>
-	<notification label="Rahatsız Etme Modu Uyarısı" name="DoNotDisturbModePay">
-		Rahatsız Etme seçeneğini devreye aldınız. Bu ödemenin karşılığında sunulan hiçbir öğeyi almayacaksınız.
+	<notification label="Meşgul Durumu Uyarısı" name="BusyModePay">
+		Durumunuz Meşgul olarak ayarlanmış; bu da, bu ödemenin karşılığında teklif edilen hiçbir öğeyi almayacağınız anlamına gelir.
 
-Bu işlemi tamamlamadan önce Rahatsız Etme&apos;yi kapatmak ister misiniz?
+Bu işlemi tamamlamadan önce Meşgul durumundan çıkmak ister misiniz?
 		<form name="form">
-			<ignore name="ignore" text="Rahatsız Etmeyin modundayken bir kişiye veya bir nesneye ödeme yapmak üzereyim"/>
-			<button ignore="Rahatsız Etme Modundan daima çıkılsın" name="Yes" text="Tamam"/>
-			<button ignore="Rahatsız Etme Modundan asla çıkılmasın" name="No" text="İptal"/>
+			<ignore name="ignore" text="Meşgul durumundayken bir kişiye veya bir nesneye ödeme yapmak üzereyim."/>
+			<button ignore="Her zaman Meşgul durumundan çık" name="Yes" text="Tamam"/>
+			<button ignore="Hiçbir zaman Meşgul durumundan çıkma" name="No" text="İptal"/>
 		</form>
 	</notification>
 	<notification name="ConfirmDeleteProtectedCategory">
@@ -2274,8 +2249,11 @@ Diğer kişilerin bu konuma kolayca erişmesini sağlamak için bu adrese bir we
 	<notification name="GroupNotice">
 		Konu: [SUBJECT], Ä°leti: [MESSAGE]
 	</notification>
-	<notification name="FriendOnlineOffline">
-		&lt;nolink&gt;[NAME]&lt;/nolink&gt; durumu: [STATUS]
+	<notification name="FriendOnline">
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; çevrimiçi
+	</notification>
+	<notification name="FriendOffline">
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; çevrimdışı
 	</notification>
 	<notification name="AddSelfFriend">
 		Çok iyi biri olduğunuza eminiz fakat kendinizi arkadaş olarak ekleyemezsiniz.
@@ -2504,6 +2482,13 @@ Burada uçamazsınız.
 	<notification name="DynamicPathfindingDisabled">
 		Bu bölgede dinamik yol bulma etkin değil.  Yol bulma LSL çağrılarını kullanan komut dosyalı nesneler, bu bölgede beklendiiği gibi çalışmayabilir.
 	</notification>
+	<notification name="PathfindingRebakeNavmesh">
+		Bu bölgede belirli diğer nesneleri değiştirmek, hareket eden başka nesnelerin yanlış davranmasına neden olabilir.  Hareket eden başka nesnelerin doğru davranmasını sağlamak için “Bölgeyi yeniden kaydet” düğmesine tıklayın.  Daha fazla bilgi edinmek için “Yardım” seçimini yapın.
+		<url name="url">
+			http://wiki.secondlife.com/wiki/Pathfinding_Tools_in_the_Second_Life_Viewer
+		</url>
+		<usetemplate helptext="Yardım" ignoretext="Bu bölgede belirli diğer nesneleri değiştirmek, hareket eden başka nesnelerin yanlış davranmasına neden olabilir." name="okhelpignore" yestext="Tamam"/>
+	</notification>
 	<notification name="PathfindingCannotRebakeNavmesh">
 		Bir hata meydana geldi.  Bir ağ veya sunucu sorunu olabilir ya da oluşturma haklarına sahip olmayabilirsiniz.  Bazen oturumu kapatıp, tekrar açmak bu sorunu çözer.
 		<usetemplate name="okbutton" yestext="Tamam"/>
@@ -2766,7 +2751,7 @@ Kabul ediyor musunuz?
 	<notification name="ScriptQuestionCaution">
 		Uyarı: &apos;&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;&apos; nesnesi, Linden Dolar hesabınıza tam erişim istiyor. Eğer erişime izin verirseniz, süregelen bir şekilde, ilave uyarı olmaksızın, hesabınızdan herhangi bir zamanda fon çekebilir veya hesabınızı tamamen boşaltabilir.
   
-Eğer hesabınıza neden erişmek istediğini tam olarak anlamıyorsanız, erişime izin vermeyin.
+Bu türden bir talebin yerinde olması nadir bir durumdur. Eğer hesabınıza neden erişmek istediğini tam olarak anlamıyorsanız, erişime izin vermeyin.
 		<form name="form">
 			<button name="Grant" text="Tam eriÅŸime izin ver"/>
 			<button name="Deny" text="Reddet"/>
@@ -3348,626 +3333,4 @@ GiriÅŸim iptal edildi.
 		[NUM_ITEMS] öğeyi siliyorsunuz.  Devam etmek istediğinize emin misiniz?
 		<usetemplate ignoretext="Birden çok öğeyi silmek istediğinize emin misiniz?" name="okcancelignore" notext="Hayır" yestext="Evet"/>
 	</notification>
-	<notification name="AvatarFrozen">
-		[AV_FREEZER] sizi dondurdu. Hareket edemez veya dünyayla etkileşim kuramazsınız.
-	</notification>
-	<notification name="AvatarFrozenDuration">
-		[AV_FREEZER] sizi [AV_FREEZE_TIME] saniye boyunca dondurdu. Hareket edemez veya dünyayla etkileşim kuramazsınız.
-	</notification>
-	<notification name="YouFrozeAvatar">
-		Avatar donduruldu.
-	</notification>
-	<notification name="AvatarHasUnFrozenYou">
-		[AV_FREEZER] sizin dondurulmanızı kaldırdı.
-	</notification>
-	<notification name="AvatarUnFrozen">
-		Avatar artık dondurulmuş değil.
-	</notification>
-	<notification name="AvatarFreezeFailure">
-		Dondurma başarılamadı çünkü bu parsel için yönetici iznine sahip değilsiniz.
-	</notification>
-	<notification name="AvatarFreezeThaw">
-		Dondurmanızın süresi sona erdi, istediğinizi yapabilirsiniz.
-	</notification>
-	<notification name="AvatarCantFreeze">
-		Üzgünüz, bu kullanıcı dondurulamaz.
-	</notification>
-	<notification name="NowOwnObject">
-		Artık [OBJECT_NAME] nesnesinin sahibisiniz
-	</notification>
-	<notification name="CantRezOnLand">
-		[OBJECT_POS] konumunda nesneyi oluşturamazsınız çünkü bu arazinin sahibi buna izin vermiyor.  Arazinin sahibini görmek için arazi aracını kullanın.
-	</notification>
-	<notification name="RezFailTooManyRequests">
-		Çok fazla talep olduğu için nesne oluşturulamadı.
-	</notification>
-	<notification name="SitFailCantMove">
-		Oturamazsınız çünkü şu anda hareket edemezsiniz.
-	</notification>
-	<notification name="SitFailNotAllowedOnLand">
-		Oturamazsınız çünkü bu araziye girme izniniz yok.
-	</notification>
-	<notification name="SitFailNotSameRegion">
-		Daha yakına gelmeyi deneyin.  Nesne sizinle aynı bölgede olmadığı için nesnenin üzerine oturulamaz.
-	</notification>
-	<notification name="NoNewObjectRegionFull">
-		Yeni nesne oluşturulamıyor. Bölge dolu.
-	</notification>
-	<notification name="FailedToPlaceObject">
-		Belirtilen konuma nesne yerleştirilemedi.  Lütfen tekrar deneyin.
-	</notification>
-	<notification name="NoOwnNoGardening">
-		Sahibi olmadığınız arazide ağaçlar ve çimen oluşturamazsınız.
-	</notification>
-	<notification name="NoCopyPermsNoObject">
-		&apos;[OBJ_NAME]&apos; nesnesini kopyalama izniniz olmadığı için kopyalama başarılamadı.
-	</notification>
-	<notification name="NoTransPermsNoObject">
-		&apos;[OBJ_NAME]&apos; nesnesi size aktarılamadığı için kopyalama başarılamadı.
-	</notification>
-	<notification name="AddToNavMeshNoCopy">
-		&apos;[OBJ_NAME]&apos; nesnesi navmesh&apos;e katkıda bulunduğu için kopyalama başarılamadı.
-	</notification>
-	<notification name="DupeWithNoRootsSelected">
-		Kök nesne seçili olmayan kopya.
-	</notification>
-	<notification name="CantDupeCuzRegionIsFull">
-		Nesneler çoğaltılamıyor çünkü bölge dolu.
-	</notification>
-	<notification name="CantDupeCuzParcelNotFound">
-		Nesneler çoğaltılamadı - Üzerinde oldukları parsel bulunamadı.
-	</notification>
-	<notification name="CantCreateCuzParcelFull">
-		Nesne oluşturulamıyor çünkü
-parsel dolu.
-	</notification>
-	<notification name="RezAttemptFailed">
-		Bir nesneyi oluşturma girişimi başarısız oldu.
-	</notification>
-	<notification name="ToxicInvRezAttemptFailed">
-		Bu bölgede hatalara yol açmış olan öğe oluşturulamıyor.
-	</notification>
-	<notification name="InvItemIsBlacklisted">
-		Bu envanter öğesi kara listeye alınmış.
-	</notification>
-	<notification name="NoCanRezObjects">
-		Şu anda nesne oluşturmanıza izin verilmiyor.
-	</notification>
-	<notification name="LandSearchBlocked">
-		Arazi Arama Engellendi.
-Çok fazla sayıda arazi aramasını çok hızlı gerçekleştirdiniz.
-Lütfen bir dakika sonra tekrar deneyin.
-	</notification>
-	<notification name="NotEnoughResourcesToAttach">
-		Nesneyi iliştirmek için yeterli komut dosyası kaynağı mevcut değil!
-	</notification>
-	<notification name="YouDiedAndGotTPHome">
-		Hayatınızı kaybettiniz ve ana konumunuza ışınlandınız
-	</notification>
-	<notification name="EjectComingSoon">
-		Daha fazla burada olma izniniz yok ve ayrılmak için [EJECT_TIME] saniyeniz var.
-	</notification>
-	<notification name="NoEnterServerFull">
-		Bu bölgeye giremezsiniz çünkü 
-sunucu dolu.
-	</notification>
-	<notification name="SaveBackToInvDisabled">
-		Envantere Geri Kaydet devre dışı bırakıldı.
-	</notification>
-	<notification name="NoExistNoSaveToContents">
-		&apos;[OBJ_NAME]&apos; nesne içeriğine kaydedilemedi, çünkü oluşturulurken temel alınan nesne artık mevcut değil.
-	</notification>
-	<notification name="NoModNoSaveToContents">
-		&apos;[DEST_NAME]&apos; nesnesini değiştirme izniniz olmadığı için &apos;[OBJ_NAME]&apos; nesne içeriğine kaydedilemedi.
-	</notification>
-	<notification name="NoSaveBackToInvDisabled">
-		&apos;[OBJ_NAME]&apos; envantere geri kaydedilemez -- bu işlem devre dışı bırakıldı.
-	</notification>
-	<notification name="NoCopyNoSelCopy">
-		&apos;[OBJ_NAME]&apos; nesnesini kopyalama izniniz olmadığı için seçiminizi kopyalamayazsınız.
-	</notification>
-	<notification name="NoTransNoSelCopy">
-		&apos;[OBJ_NAME]&apos; nesnesi aktarılamaz olduğu için seçiminizi kopyalayamazsınız.
-	</notification>
-	<notification name="NoTransNoCopy">
-		&apos;[OBJ_NAME]&apos; nesnesi aktarılamaz olduğu için seçiminizi kopyalayamazsınız.
-	</notification>
-	<notification name="NoPermsNoRemoval">
-		Benzeticiden &apos;[OBJ_NAME]&apos; nesnesinin kaldırılmasına izinler sistemi izin vermiyor.
-	</notification>
-	<notification name="NoModNoSaveSelection">
-		&apos;[OBJ_NAME]&apos; nesnesini değiştirme izniniz olmadığı için seçiminizi kaydedemezsiniz.
-	</notification>
-	<notification name="NoCopyNoSaveSelection">
-		&apos;[OBJ_NAME]&apos; nesnesi kopyalanamaz olduğu için seçiminizi kaydedemezsiniz.
-	</notification>
-	<notification name="NoModNoTaking">
-		&apos;[OBJ_NAME]&apos; nesnesini değiştirme izniniz olmadığı için seçiminizi alamazsınız.
-	</notification>
-	<notification name="RezDestInternalError">
-		Dahili Hata: Bilinmeyen hedef türü.
-	</notification>
-	<notification name="DeleteFailObjNotFound">
-		Nesne bulunamadığı için silme başarılamadı
-	</notification>
-	<notification name="SorryCantEjectUser">
-		Üzgünüz, bu kullanıcı çıkartılamaz.
-	</notification>
-	<notification name="RegionSezNotAHome">
-		Bu bölge, ana konumunuzu buraya kurmanıza izin vermiyor.
-	</notification>
-	<notification name="HomeLocationLimits">
-		&apos;Ana Konum&apos;unuzu sadece arazinizde veya anakarada bir Bilgi Ä°stasyonu&apos;nda ayarlayabilirsiniz.
-	</notification>
-	<notification name="HomePositionSet">
-		Ana konum ayarlandı.
-	</notification>
-	<notification name="AvatarEjected">
-		Avatar çıkartıldı.
-	</notification>
-	<notification name="AvatarEjectFailed">
-		Çıkarma başarılamadı çünkü bu parsel için yönetici iznine sahip değilsiniz.
-	</notification>
-	<notification name="CantMoveObjectParcelFull">
-		[REGION_NAME] bölgesinde &apos;[OBJECT_NAME]&apos; nesnesi [OBJ_POSITION] konumuna hareket ettirilemiyor çünkü parsel dolu.
-	</notification>
-	<notification name="CantMoveObjectParcelPerms">
-		[REGION_NAME] bölgesinde &apos;[OBJECT_NAME]&apos; nesnesi [OBJ_POSITION] konumuna hareket ettirilemiyor çünkü bu parselde nesnelerinize izin verilmiyor.
-	</notification>
-	<notification name="CantMoveObjectParcelResources">
-		[REGION_NAME] bölgesinde &apos;[OBJECT_NAME]&apos; nesnesi [OBJ_POSITION] konumuna hareket ettirilemiyor, çünkü bu parselde bu nesne için yeterli kaynak yok.
-	</notification>
-	<notification name="CantMoveObjectRegionVersion">
-		[REGION_NAME] bölgesinde &apos;[OBJECT_NAME]&apos; nesnesi [OBJ_POSITION] konumuna hareket ettirilemiyor çünkü bölgede çalıştırılan eski versiyon, bölge değiştirme üzerinden bu nesnenin alınmasını desteklemiyor.
-	</notification>
-	<notification name="CantMoveObjectNavMesh">
-		[REGION_NAME] bölgesinde &apos;[OBJECT_NAME]&apos; nesnesi [OBJ_POSITION] konumuna hareket ettirilemiyor çünkü navmesh&apos;i bölge sınırları ötesinde değiştiremezsiniz.
-	</notification>
-	<notification name="CantMoveObjectWTF">
-		Bilinmeyen bir nedenden ötürü [REGION_NAME] bölgesinde &apos;[OBJECT_NAME]&apos; nesnesi [OBJ_POSITION] konumuna hareket ettirilemiyor. ([FAILURE_TYPE])
-	</notification>
-	<notification name="NoPermModifyObject">
-		Bu nesneyi deÄŸiÅŸtirme izniniz yok
-	</notification>
-	<notification name="CantEnablePhysObjContributesToNav">
-		Navmesh&apos;e katkıda bulunan bir nesne için fizik etkinleştirilemez.
-	</notification>
-	<notification name="CantEnablePhysKeyframedObj">
-		Anahtar karelenmiş nesneler için fizik etkinleştirilemez.
-	</notification>
-	<notification name="CantEnablePhysNotEnoughLandResources">
-		Nesne için fizik etkinleştirilemedi -- arazi kaynakları yetersiz.
-	</notification>
-	<notification name="CantEnablePhysCostTooGreat">
-		Fizik kaynağı maliyeti [MAX_OBJECTS]&apos;dan büyük nesne için fizik etkinleştirilemedi
-	</notification>
-	<notification name="PhantomWithConcavePiece">
-		Bu nesne fantom olduğu ve navmesh&apos;e katkıda bulunduğu için konkav bir parçaya sahip olamaz.
-	</notification>
-	<notification name="UnableAddItem">
-		Öğe eklenemedi!
-	</notification>
-	<notification name="UnableEditItem">
-		Bu düzenlenemiyor!
-	</notification>
-	<notification name="NoPermToEdit">
-		Bunu düzenleme izni yok.
-	</notification>
-	<notification name="NoPermToCopyInventory">
-		Bu envanteri kopyalama izni yok.
-	</notification>
-	<notification name="CantSaveItemDoesntExist">
-		Nesne içeriklerine kaydedilemedi: Öğe artık mevcut değil.
-	</notification>
-	<notification name="CantSaveItemAlreadyExists">
-		Nesne içeriklerine kaydedilemedi: Bu ada sahip öğe envanterde zaten mevcut
-	</notification>
-	<notification name="CantSaveModifyAttachment">
-		Nesne içeriklerine kaydedilemedi: Bu, aksesuar izinlerini değiştirmeyi gerektirirdi.
-	</notification>
-	<notification name="TooManyScripts">
-		Çok fazla komut dosyası.
-	</notification>
-	<notification name="UnableAddScript">
-		Komut dosyası eklenemedi!
-	</notification>
-	<notification name="AssetServerTimeoutObjReturn">
-		Varlık sunucusu zamanında yanıt vermedi.  Nesne sime iade edildi.
-	</notification>
-	<notification name="RegionDisablePhysicsShapes">
-		Bu bölgede fiziksel şekiller etkin değil.
-	</notification>
-	<notification name="NoModNavmeshAcrossRegions">
-		Navmesh&apos;i bölge sınırlarının ötesinde değiştiremezsiniz.
-	</notification>
-	<notification name="NoSetPhysicsPropertiesOnObjectType">
-		Bu nesne türü üzerinde fizik özellikleri ayarlanamaz.
-	</notification>
-	<notification name="NoSetRootPrimWithNoShape">
-		Kök prim şekilsiz olacak şekilde ayarlanamaz.
-	</notification>
-	<notification name="NoRegionSupportPhysMats">
-		Bu bölgede fiziksel malzemeler etkin değil.
-	</notification>
-	<notification name="OnlyRootPrimPhysMats">
-		Sadece kök primlerin fizik malzemeleri ayarlanabilir.
-	</notification>
-	<notification name="NoSupportCharacterPhysMats">
-		Karakterler üzerinde fizik malzemelerin ayarlanması henüz desteklenmiyor.
-	</notification>
-	<notification name="InvalidPhysMatProperty">
-		Belirtilen fizik malzemesi özelliklerinden biri veya daha fazlası geçersiz.
-	</notification>
-	<notification name="NoPermsAlterStitchingMeshObj">
-		Bir örgü nesnesinin dikiş türünü değiştiremezsiniz.
-	</notification>
-	<notification name="NoPermsAlterShapeMeshObj">
-		Bir örgü nesnesinin şeklini değiştiremezsiniz
-	</notification>
-	<notification name="FullRegionCantEnter">
-		Bu bölgeye giremezsiniz çünkü \nbölge dolu.
-	</notification>
-	<notification name="LinkFailedOwnersDiffer">
-		Bağlantı başarısız oldu -- sahipler farklı
-	</notification>
-	<notification name="LinkFailedNoModNavmeshAcrossRegions">
-		Bağlntı başarılamadı -- navmesh&apos;i bölge sınırlarının ötesinde değiştiremezsiniz.
-	</notification>
-	<notification name="LinkFailedNoPermToEdit">
-		Düzenleme iznine sahip olmadığınız için bağlantı başarılamadı.
-	</notification>
-	<notification name="LinkFailedTooManyPrims">
-		Bağlantı başarısız oldu -- çok fazla ilkel öğe var
-	</notification>
-	<notification name="LinkFailedCantLinkNoCopyNoTrans">
-		Bağlantı başarısız oldu -- aktarılamayanla kopyalanamayan arasında bağlantı kurulamaz
-	</notification>
-	<notification name="LinkFailedNothingLinkable">
-		Bağlantı başarısız oldu -- bağlantı verilebilecek bir şey yok.
-	</notification>
-	<notification name="LinkFailedTooManyPathfindingChars">
-		Bağlantı başarısız oldu -- çok fazla yol bulma karakteri var
-	</notification>
-	<notification name="LinkFailedInsufficientLand">
-		Bağlantı başarısız oldu -- arazi kaynakları yetersiz
-	</notification>
-	<notification name="LinkFailedTooMuchPhysics">
-		Nesne çok fazla fizik kaynağı kullanıyor -- dinamikleri devre dışı bırakıldı.
-	</notification>
-	<notification name="TeleportedHomeByObjectOnParcel">
-		&apos;[PARCEL_NAME]&apos; parseli üzerindeki &apos;[OBJECT_NAME]&apos; nesnesi tarafından ana konuma ışınlandınız
-	</notification>
-	<notification name="TeleportedHomeByObject">
-		&apos;[OBJECT_NAME]&apos; nesnesi tarafından ana konuma ışınlandınız
-	</notification>
-	<notification name="TeleportedByAttachment">
-		You have been teleported by an attachment on [ITEM_ID]
-	</notification>
-	<notification name="TeleportedByObjectOnParcel">
-		&apos;[PARCEL_NAME]&apos; parseli üzerindeki &apos;[OBJECT_NAME]&apos; nesnesi tarafından ışınlandınız
-	</notification>
-	<notification name="TeleportedByObjectOwnedBy">
-		Sahibi [OWNER_ID] olan &apos;[OBJECT_NAME]&apos; nesnesi tarafından ışınlandınız
-	</notification>
-	<notification name="TeleportedByObjectUnknownUser">
-		Bilinmeyen bir sahibi olan &apos;[OBJECT_NAME]&apos; nesnesi tarafından ışınlandınız.
-	</notification>
-	<notification name="CantCreateObjectRegionFull">
-		Talep edilen nesne oluşturulamıyor. Bölge dolu.
-	</notification>
-	<notification name="CantAttackMultipleObjOneSpot">
-		Tek bir noktaya birden fazla nesne iliÅŸtiremezsiniz.
-	</notification>
-	<notification name="CantCreateMultipleObjAtLoc">
-		Burada birden fazla nesne oluşturamazsınız.
-	</notification>
-	<notification name="UnableToCreateObjTimeOut">
-		Talep edilen nesne oluşturulamıyor. Nesne veri tabanında yok.
-	</notification>
-	<notification name="UnableToCreateObjUnknown">
-		Talep edilen nesne oluşturulamıyor. Talep zaman aşımına uğradı. Lütfen tekrar deneyin.
-	</notification>
-	<notification name="UnableToCreateObjMissingFromDB">
-		Talep edilen nesne oluşturulamıyor. Lütfen tekrar deneyin.
-	</notification>
-	<notification name="RezFailureTookTooLong">
-		Oluşturma başarısız oldu, talep edilen nesnenin yüklenmesi çok zaman aldı.
-	</notification>
-	<notification name="FailedToPlaceObjAtLoc">
-		Belirtilen konuma nesne yerleştirilemedi.  Lütfen tekrar deneyin.
-	</notification>
-	<notification name="CantCreatePlantsOnLand">
-		Bu arazide bitkiler oluşturamazsınız.
-	</notification>
-	<notification name="CantRestoreObjectNoWorldPos">
-		Nesne geri yüklenemiyor. Dünya konumu bulunamadı.
-	</notification>
-	<notification name="CantRezObjectInvalidMeshData">
-		Örgü verileri geçersiz olduğu için nesne oluşturulamadı.
-	</notification>
-	<notification name="CantRezObjectTooManyScripts">
-		Bölgede zaten fazlasıyla komut dosyası olduğu için nesne oluşturulamadı.
-	</notification>
-	<notification name="CantCreateObjectNoAccess">
-		Erişim ayrıcalıklarınız orada nesne oluşturmanıza izin vermiyor.
-	</notification>
-	<notification name="CantCreateObject">
-		Şu anda nesne oluşturmanıza izin verilmiyor.
-	</notification>
-	<notification name="InvalidObjectParams">
-		Geçersiz nesne parametreleri
-	</notification>
-	<notification name="CantDuplicateObjectNoAcess">
-		Erişim ayrıcalıklarınız burada nesne çoğaltmanıza izin vermiyor.
-	</notification>
-	<notification name="CantChangeShape">
-		Bu ÅŸekli deÄŸiÅŸtirmenize izin verilmiyor.
-	</notification>
-	<notification name="NoAccessToClaimObjects">
-		Erişim ayrıcalıklarınız burada nesneler üzerinde hak talebinde bulunmanıza izin vermiyor.
-	</notification>
-	<notification name="DeedFailedNoPermToDeedForGroup">
-		Grubunuz adına nesne devretmek için gerekli izne sahip olmadığınız için devretme başarılamadı.
-	</notification>
-	<notification name="NoPrivsToBuyObject">
-		Erişim ayrıcalıklarınız burada nesneler satın almanıza izin vermiyor.
-	</notification>
-	<notification name="CantAttachObjectAvatarSittingOnIt">
-		Üzerinde bir avatar oturduğu için nesne iliştirilemiyor.
-	</notification>
-	<notification name="WhyAreYouTryingToWearShrubbery">
-		Ağaçlar ve çimen aksesuar olarak giyilemez.
-	</notification>
-	<notification name="CantAttachGroupOwnedObjs">
-		Sahibi grup olan nesneler iliÅŸtirilemiyor.
-	</notification>
-	<notification name="CantAttachObjectsNotOwned">
-		Sahip olmadığınız nesneleri iliştiremezsiniz.
-	</notification>
-	<notification name="CantAttachNavmeshObjects">
-		Navmesh&apos;e katkıda bulunan nesneler iliştirilemez.
-	</notification>
-	<notification name="CantAttachObjectNoMovePermissions">
-		Nesneyi hareket ettirme izniniz olmadığı için nesneyi iliştiremiyorsanız.
-	</notification>
-	<notification name="CantAttachNotEnoughScriptResources">
-		Nesneyi iliştirmek için yeterli komut dosyası kaynağı mevcut değil!
-	</notification>
-	<notification name="CantDropItemTrialUser">
-		Buraya nesne düşüremezsiniz; Ücretsiz Deneme alanını deneyin.
-	</notification>
-	<notification name="CantDropMeshAttachment">
-		Örgü aksesuarlarını düşüremezsiniz. Envantere ayırın, sonra dünyada oluşturun.
-	</notification>
-	<notification name="CantDropAttachmentNoPermission">
-		Aksesuar düşürülemedi: Burada düşürme izniniz yok.
-	</notification>
-	<notification name="CantDropAttachmentInsufficientLandResources">
-		Aksesuar düşürülemedi: Mevcut arazi kaynakları yetersiz.
-	</notification>
-	<notification name="CantDropAttachmentInsufficientResources">
-		Aksesuarlar düşürülemedi: Mevcut kaynaklar yetersiz.
-	</notification>
-	<notification name="CantDropObjectFullParcel">
-		Nesne buraya düşürülemez.  Parsel dolu.
-	</notification>
-	<notification name="CantTouchObjectBannedFromParcel">
-		Bu arazi parselinde yasaklandığınız için bu nesneye dokunamıyor/tutamıyorsunuz.
-	</notification>
-	<notification name="PlzNarrowDeleteParams">
-		Lütfen silme parametrelerinizi daraltın.
-	</notification>
-	<notification name="UnableToUploadAsset">
-		Varlık karşıya yüklenemiyor.
-	</notification>
-	<notification name="CantTeleportCouldNotFindUser">
-		Ana konuma ışınlanacak kullanıcı bulunamadı
-	</notification>
-	<notification name="GodlikeRequestFailed">
-		tanrısal talep başarısız oldu
-	</notification>
-	<notification name="GenericRequestFailed">
-		genel talep başarısız oldu
-	</notification>
-	<notification name="CantUploadPostcard">
-		Posta kartı karşıya yüklenemiyor.  Daha sonra tekrar deneyin.
-	</notification>
-	<notification name="CantFetchInventoryForGroupNotice">
-		Grup bildirimi için envanter ayrıntıları alınamadı.
-	</notification>
-	<notification name="CantSendGroupNoticeNotPermitted">
-		Grup bildirimi gönderilemedi -- izin verilmiyor.
-	</notification>
-	<notification name="CantSendGroupNoticeCantConstructInventory">
-		Grup bildirimi gönderilemedi -- envanter oluşturulamadı.
-	</notification>
-	<notification name="CantParceInventoryInNotice">
-		Bildirimde envanter ayrıştırılamadı.
-	</notification>
-	<notification name="TerrainUploadFailed">
-		Yüzeyin karşıya yüklemesi başarılamadı.
-	</notification>
-	<notification name="TerrainFileWritten">
-		Yüzey dosyası yazıldı.
-	</notification>
-	<notification name="TerrainFileWrittenStartingDownload">
-		Yüzey dosyası yazıldı, karşıdan yükleme başlatılıyor...
-	</notification>
-	<notification name="TerrainBaked">
-		Yüzey kaydedildi.
-	</notification>
-	<notification name="TenObjectsDisabledPlzRefresh">
-		Sadece seçilen ilk 10 nesne devre dışı bırakıldı. Gerekiyorsa yenileyin ve ilave seçimler yapın.
-	</notification>
-	<notification name="UpdateViewerBuyParcel">
-		Bu parseli satın almak için görüntüleyicinizi güncelleştirmelisiniz.
-	</notification>
-	<notification name="CantBuyParcelNotForSale">
-		Satın alınamıyor, bu parsel satılık değil.
-	</notification>
-	<notification name="CantBuySalePriceOrLandAreaChanged">
-		Satın alınamıyor, satış fiyatı veya arazi bölgesi değişmiş.
-	</notification>
-	<notification name="CantBuyParcelNotAuthorized">
-		Bu parsel için yetkili alıcı değilsiniz.
-	</notification>
-	<notification name="CantBuyParcelAwaitingPurchaseAuth">
-		Bu parseli satın alamazsınız çünkü zaten satın alım yetkilendirmesi bekliyor
-	</notification>
-	<notification name="CantBuildOverflowParcel">
-		Burada nesneler inşa edemezsiniz, aksi halde parselin kaynak sınırları aşılır.
-	</notification>
-	<notification name="SelectedMultipleOwnedLand">
-		Farklı sahiplere ait araziler seçtiniz. Lütfen daha küçük bir alan seçin ve tekrar deneyin.
-	</notification>
-	<notification name="CantJoinTooFewLeasedParcels">
-		Seçimde birleştirilecek yeterli sayıda lease edilmiş parsel yok.
-	</notification>
-	<notification name="CantDivideLandMultipleParcelsSelected">
-		Arazi bölünemedi.\nBirden fazla parsel seçili durumda.\nDaha küçük bir arazi parçası seçmeyi deneyin.
-	</notification>
-	<notification name="CantDivideLandCantFindParcel">
-		Arazi bölünemiyor.\nParsel bulunamıyor.\nLütfen Yardım -&gt; Hata Bildir ile bildirin...
-	</notification>
-	<notification name="CantDivideLandWholeParcelSelected">
-		Arazi bölünemiyor. Tüm parsel seçilidir.\nDaha küçük bir arazi parçası seçmeyi deneyin.
-	</notification>
-	<notification name="LandHasBeenDivided">
-		Arazi bölündü.
-	</notification>
-	<notification name="PassPurchased">
-		Bir geçiş hakkı satın aldınız.
-	</notification>
-	<notification name="RegionDisallowsClassifieds">
-		Bölgede seri ilanlara izin verilmiyor.
-	</notification>
-	<notification name="LandPassExpireSoon">
-		Bu arazi için geçiş hakkınız sona ermek üzere.
-	</notification>
-	<notification name="CantSitNoSuitableSurface">
-		Üzerinde oturulabilecek uygun bir yüzey yok, başka bir noktayı deneyin.
-	</notification>
-	<notification name="CantSitNoRoom">
-		Burada oturacak yer yok, baÅŸka bir yer deneyin.
-	</notification>
-	<notification name="ClaimObjectFailedNoPermission">
-		İzniniz olmadığı için nesne üzerinde hak talep etme başarılamadı
-	</notification>
-	<notification name="ClaimObjectFailedNoMoney">
-		Sahip olduğunuz L$ yeterli olmadığı için nesne üzerinde hak talep etme başarılamadı.
-	</notification>
-	<notification name="CantDeedGroupLand">
-		Grubun sahip olduÄŸu araziyi devredemezsiniz.
-	</notification>
-	<notification name="BuyObjectFailedNoMoney">
-		Sahip olduğunuz L$ yeterli olmadığı için nesne satın alma başarılamadı.
-	</notification>
-	<notification name="BuyInventoryFailedNoMoney">
-		Sahip olduğunuz L$ yeterli olmadığı için envanter satın alma başarılamadı.
-	</notification>
-	<notification name="BuyPassFailedNoMoney">
-		Sahibi olduğunuz L$ bu araziye geçiş hakkı almanıza yeterli değil.
-	</notification>
-	<notification name="CantBuyPassTryAgain">
-		Şu anda geçiş hakkı satın alınamıyor.  Daha sonra tekrar deneyin.
-	</notification>
-	<notification name="CantCreateObjectParcelFull">
-		Nesne oluşturulamıyor çünkü \nparsel dolu.
-	</notification>
-	<notification name="FailedPlacingObject">
-		Belirtilen konuma nesne yerleştirilemedi.  Lütfen tekrar deneyin.
-	</notification>
-	<notification name="CantCreateLandmarkForEvent">
-		Etkinlik için yer imi oluşturulamıyor.
-	</notification>
-	<notification name="GodBeatsFreeze">
-		Tanrısal güçleriniz dondurmayı devre dışı bıraktı!
-	</notification>
-	<notification name="SpecialPowersRequestFailedLogged">
-		Özel yetkiler talebi başarısız oldu. Bu talep günlüğe kaydedildi.
-	</notification>
-	<notification name="ExpireExplanation">
-		Sistem şu anda talebinizi işleyemiyor. Talep zaman aşımına uğradı.
-	</notification>
-	<notification name="DieExplanation">
-		Sistem talebinizi iÅŸleyemiyor.
-	</notification>
-	<notification name="AddPrimitiveFailure">
-		İlkel öğeyi oluşturmak için yeterli fon yok.
-	</notification>
-	<notification name="RezObjectFailure">
-		Nesneyi oluşturmak için yeterli fon yok.
-	</notification>
-	<notification name="ResetHomePositionNotLegal">
-		Ana konum sıfırlandı çünkü Ana konum yasal değildi.
-	</notification>
-	<notification name="CantInviteRegionFull">
-		Şu anda konumunuza kimseyi davet edemezsiniz çünkü bölge dolu. Daha sonra tekrar deneyin.
-	</notification>
-	<notification name="CantSetHomeAtRegion">
-		Bu bölge, ana konumunuzu buraya kurmanıza izin vermiyor.
-	</notification>
-	<notification name="ListValidHomeLocations">
-		&apos;Ana Konum&apos;unuzu sadece arazinizde veya anakarada bir Bilgi Ä°stasyonu&apos;nda ayarlayabilirsiniz.
-	</notification>
-	<notification name="SetHomePosition">
-		Ana konum ayarlandı.
-	</notification>
-	<notification name="CantDerezInventoryError">
-		Envanter hatasından ötürü nesne oluşturulması geri alınamıyor.
-	</notification>
-	<notification name="CantCreateRequestedInv">
-		Talep edilen envanter oluşturulamadı.
-	</notification>
-	<notification name="CantCreateRequestedInvFolder">
-		Talep edilen envanter klasörü oluşturulamadı.
-	</notification>
-	<notification name="CantCreateInventory">
-		Bu envanter oluşturulamadı.
-	</notification>
-	<notification name="CantCreateLandmark">
-		Yer imi oluşturulamıyor.
-	</notification>
-	<notification name="CantCreateOutfit">
-		Dış görünüm şu anda oluşturulamıyor. Bir dakika sonra tekrar deneyin.
-	</notification>
-	<notification name="InventoryNotForSale">
-		Envanter satılık değil.
-	</notification>
-	<notification name="CantFindInvItem">
-		Envanter öğesi bulunamıyor.
-	</notification>
-	<notification name="CantFindObject">
-		Nesne bulunamıyor.
-	</notification>
-	<notification name="CantTransfterMoneyRegionDisabled">
-		Nesnelere para transferleri bölgede şu anda devre dışı bırakılmış durumda.
-	</notification>
-	<notification name="CantPayNoAgent">
-		Kime ödeme yapılacağı belirlenemedi.
-	</notification>
-	<notification name="CantDonateToPublicObjects">
-		Kamusal nesnelere L$ veremezsiniz.
-	</notification>
-	<notification name="InventoryCreationInWorldObjectFailed">
-		Dünya içerisindeki nesnede envater oluşturma başarısız oldu.
-	</notification>
-	<notification name="UserBalanceOrLandUsageError">
-		Dahili bir hata nedeniyle görüntüleyicinizi gerektiği gibi güncelleyemedik.  Görüntüleyicinizde gösterilen L$ bakiyesi veya parsel tutarı sunucular üzerinde gerçekteki bakiyenizi yansıtmayabilir.
-	</notification>
-	<notification name="LargePrimAgentIntersect">
-		Başka oyuncularla kesişen büyük primler oluşturulamaz.  Öbür oyuncular hareket ettiğinde lütfen tekrar deneyin.
-	</notification>
-	<notification name="PreferenceChatClearLog">
-		Bu, geçmiş sohbetlerin günlüklerini ve bu dosyanın tüm yedeklerini silecektir.
-		<usetemplate ignoretext="Ben geçmiş sohbetlerin günlüğünü silmeden önce doğrula." name="okcancelignore" notext="İptal" yestext="Tamam"/>
-	</notification>
-	<notification name="PreferenceChatDeleteTranscripts">
-		Bu, tüm geçmiş sohbetlerin dökümlerini silecektir. Geçmiş sohbetlerin listesi bundan etkilenmez. [FOLDER] klasöründe .txt ve txt.backup uzantısına sahip tüm dosyalar silinecektir.
-		<usetemplate ignoretext="Ben dökümleri silmeden önce doğrulama iste." name="okcancelignore" notext="İptal" yestext="Tamam"/>
-	</notification>
-	<notification name="PreferenceChatPathChanged">
-		Dosyalar taşınamıyor. Önceki yol geri yüklendi.
-		<usetemplate ignoretext="Dosyalar taşınamıyor. Önceki yol geri yüklendi." name="okignore" yestext="Tamam"/>
-	</notification>
 </notifications>
diff --git a/indra/newview/skins/default/xui/tr/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/tr/panel_avatar_list_item.xml
index f330bd85e8e..7542778acaf 100644
--- a/indra/newview/skins/default/xui/tr/panel_avatar_list_item.xml
+++ b/indra/newview/skins/default/xui/tr/panel_avatar_list_item.xml
@@ -27,6 +27,5 @@
 	<icon name="permission_edit_mine_icon" tool_tip="Bu arkadaşınız nesnelerinizi düzenleyebilir, silebilir veya alabilir"/>
 	<icon name="permission_map_icon" tool_tip="Bu arkadaşınız haritada sizi bulabilir"/>
 	<icon name="permission_online_icon" tool_tip="Bu arkadaşınız çevrimiçi olduğunuzda sizi görebilir"/>
-	<button name="info_btn" tool_tip="Ek bilgi"/>
 	<button name="profile_btn" tool_tip="Profili göster"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/tr/panel_block_list_sidetray.xml
index 87b67e249ed..0464b7ec07a 100644
--- a/indra/newview/skins/default/xui/tr/panel_block_list_sidetray.xml
+++ b/indra/newview/skins/default/xui/tr/panel_block_list_sidetray.xml
@@ -1,11 +1,10 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="block_list_panel">
-	<panel label="bottom_panel" name="blocked_buttons_panel">
-		<filter_editor label="Filtrele" name="blocked_filter_input"/>
-		<menu_button name="blocked_gear_btn" tool_tip="Seçilen kişi veya nesne üzerindeki eylemler"/>
-		<menu_button name="view_btn" tool_tip="Sıralama seçenekleri"/>
-		<menu_button name="plus_btn" tool_tip="Engellenecek bir Sakin veya nesne seç"/>
-		<button name="unblock_btn" tool_tip="Engelleme listesinden Sakini veya nesneyi kaldır"/>
-	</panel>
-	<block_list name="blocked" tool_tip="Åžu anda engellenmiÅŸ olan Sakinler listesi"/>
+	<text name="title_text">
+		Listeyi Engelle
+	</text>
+	<scroll_list name="blocked" tool_tip="Åžu anda engellenmiÅŸ olan Sakinler listesi"/>
+	<button label="Kişiyi engelle" name="Block resident..." tool_tip="Engellenecek bir Sakin seç"/>
+	<button label="Nesneyi ada göre engelle" name="Block object by name..." tool_tip="Ada göre engellenecek bir nesne seç"/>
+	<button label="Engellemeyi Kaldır" name="Unblock" tool_tip="Engelleme listesinden Sakini veya nesneyi kaldır"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_conversation_list_item.xml b/indra/newview/skins/default/xui/tr/panel_conversation_list_item.xml
deleted file mode 100644
index c7227f02b65..00000000000
--- a/indra/newview/skins/default/xui/tr/panel_conversation_list_item.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="conversation_list_item">
-	<layout_stack name="conversation_item_stack">
-		<layout_panel name="conversation_title_panel">
-			<text name="conversation_title" value="(yükleniyor)"/>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_conversation_log_list_item.xml b/indra/newview/skins/default/xui/tr/panel_conversation_log_list_item.xml
deleted file mode 100644
index 79895f9c211..00000000000
--- a/indra/newview/skins/default/xui/tr/panel_conversation_log_list_item.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="conversation_log_list_item">
-	<icon name="voice_session_icon" tool_tip="Sohbet ses dahil edildi"/>
-	<icon name="unread_ims_icon" tool_tip="Oturumunuz kapalıyken mesajlar geldi"/>
-	<button name="delete_btn" tool_tip="Bu girişi kaldır"/>
-</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_group_list_item.xml b/indra/newview/skins/default/xui/tr/panel_group_list_item.xml
index f44d2b5e762..2bc597f2fa9 100644
--- a/indra/newview/skins/default/xui/tr/panel_group_list_item.xml
+++ b/indra/newview/skins/default/xui/tr/panel_group_list_item.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="group_list_item">
 	<text name="group_name" value="Bilinmiyor"/>
-	<button name="info_btn" tool_tip="Ek bilgi"/>
 	<button name="profile_btn" tool_tip="Profili göster"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_people.xml b/indra/newview/skins/default/xui/tr/panel_people.xml
index 08efd0aa616..1a1e53bac20 100644
--- a/indra/newview/skins/default/xui/tr/panel_people.xml
+++ b/indra/newview/skins/default/xui/tr/panel_people.xml
@@ -14,53 +14,81 @@ Birlikte takılacak kişiler mi arıyorsunuz? [secondlife:///app/worldmap Dünya
 	<string name="no_filtered_friends_msg">
 		Aradığınızı bulamadınız mı? [secondlife:///app/search/people/[SEARCH_TERM] Ara] deneyin.
 	</string>
+	<string name="people_filter_label" value="KiÅŸileri Filtrele"/>
+	<string name="groups_filter_label" value="Grupları Filtrele"/>
 	<string name="no_filtered_groups_msg" value="Aradığınızı bulamadınız mı? [secondlife:///app/search/groups/[SEARCH_TERM] Ara] deneyin."/>
 	<string name="no_groups_msg" value="Katılacak Gruplar mı arıyorsunuz? [secondlife:///app/search/groups Ara] deneyin."/>
 	<string name="MiniMapToolTipMsg" value="[REGION](Haritayı açmak için çift tıkla, yatay hareket için shift çek)"/>
 	<string name="AltMiniMapToolTipMsg" value="[REGION](Işınlamak için çift tıkla, yatay hareket için shift çek)"/>
+	<filter_editor label="Filtrele" name="filter_input"/>
 	<tab_container name="tabs">
 		<panel label="YAKIN" name="nearby_panel">
-			<panel label="bottom_panel" name="nearby_buttons_panel">
-				<filter_editor label="KiÅŸileri Filtrele" name="nearby_filter_input"/>
-				<button name="gear_btn" tool_tip="Seçilen kişi üzerindeki eylemler"/>
-				<menu_button name="nearby_view_btn" tool_tip="Gösterme/sıralama seçenekleri"/>
-				<button name="add_friend_btn" tool_tip="Bir sakine arkadaşlık öner"/>
-				<dnd_button name="nearby_del_btn" tool_tip="Seçilen kişiyi arkadaş olarak kaldır"/>
+			<panel label="bottom_panel" name="bottom_panel">
+				<menu_button name="nearby_view_sort_btn" tool_tip="Seçenklr."/>
+				<button name="add_friend_btn" tool_tip="Seçilen Sakini arkadaş listene ekle"/>
 			</panel>
 		</panel>
-		<panel label="ARKADAÅžLAR" name="friends_panel">
-			<panel label="bottom_panel" name="friends_buttons_panel">
-				<filter_editor label="KiÅŸileri Filtrele" name="friends_filter_input"/>
-				<button name="gear_btn" tool_tip="Seçilen kişi üzerindeki eylemler"/>
-				<menu_button name="friends_view_btn" tool_tip="Seçenekleri göster/sırala"/>
-				<button name="friends_add_btn" tool_tip="Bir sakine arkadaşlık öner"/>
-				<dnd_button name="friends_del_btn" tool_tip="Seçilen kişiyi arkadaş olarak kaldır"/>
-			</panel>
+		<panel label="ARKADAÅžLARIM" name="friends_panel">
 			<accordion name="friends_accordion">
 				<accordion_tab name="tab_online" title="Çevrimiçi"/>
 				<accordion_tab name="tab_all" title="Tümü"/>
 			</accordion>
+			<panel label="bottom_panel" name="bottom_panel">
+				<layout_stack name="bottom_panel">
+					<layout_panel name="options_gear_btn_panel">
+						<menu_button name="friends_viewsort_btn" tool_tip="İlave seçenekleri göster"/>
+					</layout_panel>
+					<layout_panel name="add_btn_panel">
+						<button name="add_btn" tool_tip="Bir Sakine arkadaşlık öner"/>
+					</layout_panel>
+					<layout_panel name="trash_btn_panel">
+						<dnd_button name="del_btn" tool_tip="Seçilen kişiyi arkadaş Listenden çıkar"/>
+					</layout_panel>
+				</layout_stack>
+			</panel>
 		</panel>
-		<panel label="GRUPLAR" name="groups_panel">
-			<panel label="bottom_panel" name="groups_buttons_panel">
-				<filter_editor label="Grupları Filtrele" name="groups_filter_input"/>
-				<menu_button name="groups_gear_btn" tool_tip="Seçilen grup üzerindeki eylemler"/>
-				<menu_button name="groups_view_btn" tool_tip="Seçenekleri göster/sırala"/>
-				<menu_button name="plus_btn" tool_tip="Gruba katıl/yeni grup oluştur"/>
-				<dnd_button name="minus_btn" tool_tip="Seçilen gruptan ayrıl"/>
+		<panel label="GRUPLARIM" name="groups_panel">
+			<panel label="bottom_panel" name="bottom_panel">
+				<menu_button name="groups_viewsort_btn" tool_tip="Seçenklr."/>
+				<button name="plus_btn" tool_tip="Gruba katıl/yeni grup oluştur"/>
+				<button name="activate_btn" tool_tip="Seçilen grubu etkinleştir"/>
 			</panel>
 		</panel>
 		<panel label="SON" name="recent_panel">
-			<panel label="bottom_panel" name="recent_buttons_panel">
-				<filter_editor label="KiÅŸileri Filtrele" name="recent_filter_input"/>
-				<button name="gear_btn" tool_tip="Seçilen kişi üzerindeki eylemler"/>
-				<menu_button name="recent_view_btn" tool_tip="Seçenekleri göster/sırala"/>
-				<button name="add_friend_btn" tool_tip="Bir sakine arkadaşlık öner"/>
-				<dnd_button name="recent_del_btn" tool_tip="Seçilen kişiyi arkadaş olarak kaldır"/>
+			<panel label="bottom_panel" name="bottom_panel">
+				<menu_button name="recent_viewsort_btn" tool_tip="Seçenklr."/>
+				<button name="add_friend_btn" tool_tip="Seçilen Sakini arkadaş listene ekle"/>
 			</panel>
 		</panel>
-		<panel label="ENGELLENMÄ°Åž" name="blocked_panel">
-			<panel label="EngellenmiÅŸ Sakinler ve Nesneler" name="panel_block_list_sidetray"/>
-		</panel>
 	</tab_container>
+	<panel name="button_bar">
+		<layout_stack name="bottom_bar_ls">
+			<layout_panel name="view_profile_btn_lp">
+				<button label="Profil" name="view_profile_btn" tool_tip="Resim, grup ve diğer Sakin bilgilerini göster"/>
+			</layout_panel>
+			<layout_panel name="im_btn_lp">
+				<button label="Aİ" name="im_btn" tool_tip="Anlık ileti oturumu aç"/>
+			</layout_panel>
+			<layout_panel name="call_btn_lp">
+				<button label="Ara" name="call_btn" tool_tip="Bu Sakini ara"/>
+			</layout_panel>
+			<layout_panel name="share_btn_lp">
+				<button label="Paylaş" name="share_btn" tool_tip="Bir envanter öğesini paylaş"/>
+			</layout_panel>
+			<layout_panel name="teleport_btn_lp">
+				<button label="Işınla" name="teleport_btn" tool_tip="Işınlama teklif et"/>
+			</layout_panel>
+		</layout_stack>
+		<layout_stack name="bottom_bar_ls1">
+			<layout_panel name="group_info_btn_lp">
+				<button label="Grup Profili" name="group_info_btn" tool_tip="Grup bilgilerini göster"/>
+			</layout_panel>
+			<layout_panel name="chat_btn_lp">
+				<button label="Grup Sohbeti" name="chat_btn" tool_tip="Sohbet oturumu aç"/>
+			</layout_panel>
+			<layout_panel name="group_call_btn_lp">
+				<button label="Grup Araması" name="group_call_btn" tool_tip="Bu grubu ara"/>
+			</layout_panel>
+		</layout_stack>
+	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_preferences_chat.xml b/indra/newview/skins/default/xui/tr/panel_preferences_chat.xml
index aaeebdfe6e8..231e8fc5fe8 100644
--- a/indra/newview/skins/default/xui/tr/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/tr/panel_preferences_chat.xml
@@ -1,86 +1,34 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Metin Sohbeti" name="chat">
-	<panel>
-		<check_box initial_value="true" label="Sohbet sırasında yazma animasyonunu oynat" name="play_typing_animation"/>
-		<check_box label="Çevrimdışı olduğunda Aİ&apos;ler e-posta ile bana gönderilsin" name="send_im_to_email"/>
-		<check_box label="Sadece arkadaşlar ve gruplar beni arasın veya Aİ göndersin" name="voice_call_friends_only_check"/>
-		<text name="font_size">
-			Font büyüklüğü:
-		</text>
-		<combo_box name="chat_font_size">
-			<item label="Küçük" name="Small" value="0"/>
-			<item label="Orta" name="Medium" value="1"/>
-			<item label="Büyük" name="Large" value="2"/>
-		</combo_box>
-		<check_box label="Balon Sohbeti" name="bubble_text_chat"/>
-	</panel>
-	<panel>
-		<text name="notifications">
-			Bildirimler
-		</text>
-		<text name="friend_ims">
-			ArkadaÅŸ AÄ°&apos;leri:
-		</text>
-		<combo_box name="FriendIMOptions">
-			<item label="Sohbetler penceresini aç" name="OpenConversationsWindow" value="openconversations"/>
-			<item label="Mesajı aç" name="PopUpMessage" value="toast"/>
-			<item label="Araç çubuğu düğmesi yanıp sönsün" name="FlashToolbarButton" value="flash"/>
-			<item label="Hiçbiri" name="None" value="none"/>
-		</combo_box>
-		<text name="non_friend_ims">
-			ArkadaÅŸ harici AÄ°&apos;ler:
-		</text>
-		<combo_box name="NonFriendIMOptions">
-			<item label="Sohbetler penceresini aç" name="OpenConversationsWindow" value="openconversations"/>
-			<item label="Mesajı açılır pencerede göster" name="PopUpMessage" value="toast"/>
-			<item label="Araç çubuğu düğmesi yanıp sönsün" name="FlashToolbarButton" value="flash"/>
-			<item label="Hiçbiri" name="None" value="none"/>
-		</combo_box>
-		<text name="conference_ims">
-			Konferans AÄ°&apos;leri:
-		</text>
-		<combo_box name="ConferenceIMOptions">
-			<item label="Sohbetler penceresini aç" name="OpenConversationsWindow" value="openconversations"/>
-			<item label="Mesajı aç" name="PopUpMessage" value="toast"/>
-			<item label="Araç çubuğu düğmesi yanıp sönsün" name="FlashToolbarButton" value="flash"/>
-			<item label="Hiçbiri" name="None" value="none"/>
-		</combo_box>
-		<text name="group_chat">
-			Grup sohbeti:
-		</text>
-		<combo_box name="GroupChatOptions">
-			<item label="Sohbetler penceresini aç" name="OpenConversationsWindow" value="openconversations"/>
-			<item label="Mesajı aç" name="PopUpMessage" value="toast"/>
-			<item label="Araç çubuğu düğmesi yanıp sönsün" name="FlashToolbarButton" value="flash"/>
-			<item label="Hiçbiri" name="None" value="none"/>
-		</combo_box>
-		<text name="nearby_chat">
-			Yakındaki sohbet:
-		</text>
-		<combo_box name="NearbyChatOptions">
-			<item label="Sohbetler penceresini aç" name="OpenConversationsWindow" value="openconversations"/>
-			<item label="Mesajı aç" name="PopUpMessage" value="toast"/>
-			<item label="Araç çubuğu düğmesi yanıp sönsün" name="FlashToolBarButton" value="flash"/>
-			<item label="Hiçbiri" name="None" value="none"/>
-		</combo_box>
-		<text name="notifications_alert">
-			Tüm bildirimleri geçici olarak durdurmak için İletişim Kur &gt; Rahatsız Etme seçeneğini kullanın.
-		</text>
-	</panel>
-	<panel>
-		<text name="play_sound">
-			Sesi çal:
-		</text>
-		<check_box label="Yeni sohbet" name="new_conversation"/>
-		<check_box label="Gelen sesli arama" name="incoming_voice_call"/>
-		<check_box label="Işınlama teklifi" name="teleport_offer"/>
-		<check_box label="Envanter teklifi" name="inventory_offer"/>
-	</panel>
-	<panel>
-		<button label="Günlüğü temizle..." name="clear_log"/>
-		<button label="Dökümleri sil..." name="delete_transcripts"/>
-		<button label="Gözat..." label_selected="Gözat" name="log_path_button"/>
-	</panel>
+	<text name="font_size">
+		Font büyüklüğü:
+	</text>
+	<radio_group name="chat_font_size">
+		<radio_item label="Küçük" name="radio" value="0"/>
+		<radio_item label="Orta" name="radio2" value="1"/>
+		<radio_item label="Büyük" name="radio3" value="2"/>
+	</radio_group>
+	<check_box initial_value="true" label="Sohbet sırasında yazma animasyonunu oynat" name="play_typing_animation"/>
+	<check_box label="Çevrimdışı olduğunda Aİ&apos;ler e-posta ile bana gönderilsin" name="send_im_to_email"/>
+	<check_box label="Düz metin Aİ&apos;ler ve sohbet geçmişini etkinleştir" name="plain_text_chat_history"/>
+	<check_box label="Balon Sohbeti" name="bubble_text_chat"/>
+	<text name="show_ims_in_label">
+		Aİ&apos;leri şurada göster:
+	</text>
+	<text name="requires_restart_label">
+		(tekrar baÅŸlatma gerekir)
+	</text>
+	<radio_group name="chat_window" tool_tip="Anlık İletileri ayrı gezdiricilerde veya çoklu sekmelere sahip tek bir gezdiricide gösterin (tekrar başlatma gerekir)">
+		<radio_item label="Ayrı Pencereler" name="radio" value="0"/>
+		<radio_item label="Sekmeler" name="radio2" value="1"/>
+	</radio_group>
+	<text name="disable_toast_label">
+		Gelen sohbet için açılır pencereleri etkinleştir:
+	</text>
+	<check_box label="Grup Sohbetleri" name="EnableGroupChatPopups" tool_tip="Bir Grup Sohbet iletisi gönderildiğinde açılır pencereleri görmek için işaretle"/>
+	<check_box label="Aİ Sohbetleri" name="EnableIMChatPopups" tool_tip="Bir anlık ileti geldiğinde açılır pencereleri görmek için işaretle"/>
+	<spinner label="Yakındaki sohbet iletilerinin vurgulanma süresi:" name="nearby_toasts_lifetime"/>
+	<spinner label="Yakındaki sohbet iletilerinin sönme süresi:" name="nearby_toasts_fadingtime"/>
 	<button label="Çeviri..." name="ok_btn"/>
 	<button label="Otomatik Yerine Koy..." name="autoreplace_showgui"/>
 	<button label="Yazım Denetimi Yapılıyor..." name="spellcheck_showgui"/>
diff --git a/indra/newview/skins/default/xui/tr/panel_preferences_general.xml b/indra/newview/skins/default/xui/tr/panel_preferences_general.xml
index 1a13cf8f717..4a48b1588c1 100644
--- a/indra/newview/skins/default/xui/tr/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/tr/panel_preferences_general.xml
@@ -68,9 +68,9 @@
 		<combo_box.item label="asla" name="item4"/>
 	</combo_box>
 	<text name="text_box3">
-		Rahatsız Etme yanıtı:
+		Meşgul durumu cevabı:
 	</text>
-	<text_editor name="do_not_disturb_response">
+	<text_editor name="busy_response">
 		log_in_to_change
 	</text_editor>
 </panel>
diff --git a/indra/newview/skins/default/xui/tr/sidepanel_task_info.xml b/indra/newview/skins/default/xui/tr/sidepanel_task_info.xml
index 9a4cf54fa79..b0b9ab77169 100644
--- a/indra/newview/skins/default/xui/tr/sidepanel_task_info.xml
+++ b/indra/newview/skins/default/xui/tr/sidepanel_task_info.xml
@@ -72,7 +72,6 @@
 			<combo_box.item label="Nesneyi satın al" name="Buyobject"/>
 			<combo_box.item label="Nesneye ödeme yap" name="Payobject"/>
 			<combo_box.item label="Aç" name="Open"/>
-			<combo_box.item label="Yakınlaştır" name="Zoom"/>
 		</combo_box>
 		<panel name="perms_inv">
 			<text name="perm_modify">
diff --git a/indra/newview/skins/default/xui/tr/strings.xml b/indra/newview/skins/default/xui/tr/strings.xml
index 155dc8749a0..1be8f5974c7 100644
--- a/indra/newview/skins/default/xui/tr/strings.xml
+++ b/indra/newview/skins/default/xui/tr/strings.xml
@@ -137,7 +137,7 @@
 		Çık
 	</string>
 	<string name="create_account_url">
-		http://join.secondlife.com/?sourceid=[sourceid]
+		http://join.secondlife.com/index.php?lang=tr-TR&amp;sourceid=[sourceid]
 	</string>
 	<string name="LoginFailedViewerNotPermitted">
 		Kullandığınız görüntüleyici ile artık Second Life&apos;a erişemezsiniz. Yeni bir görüntüleyiciyi karşıdan yüklemek için lütfen şu sayfayı ziyaret edin:
@@ -619,8 +619,8 @@ Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin.
 	<string name="AvatarAway">
 		Uzakta
 	</string>
-	<string name="AvatarDoNotDisturb">
-		Rahatsız Etme
+	<string name="AvatarBusy">
+		MeÅŸgul
 	</string>
 	<string name="AvatarMuted">
 		EngellenmiÅŸ
@@ -856,12 +856,6 @@ Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin.
 	<string name="ST_NO_JOINT">
 		KÖK veya EKLEM bulunamıyor.
 	</string>
-	<string name="NearbyChatTitle">
-		Yakındaki sohbet
-	</string>
-	<string name="NearbyChatLabel">
-		(Yakındaki sohbet)
-	</string>
 	<string name="whisper">
 		fısıldar:
 	</string>
@@ -925,15 +919,12 @@ Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin.
 	<string name="ControlYourCamera">
 		Kameranızı kontrol etmek
 	</string>
-	<string name="NotConnected">
-		Bağlı Değil
-	</string>
-	<string name="AgentNameSubst">
-		(Siz)
-	</string>
 	<string name="TeleportYourAgent">
 		Sizi ışınlama
 	</string>
+	<string name="NotConnected">
+		Bağlı Değil
+	</string>
 	<string name="SIM_ACCESS_PG">
 		Genel
 	</string>
@@ -1015,6 +1006,18 @@ Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin.
 	<string name="dictionary_files">
 		Sözlükler
 	</string>
+	<string name="AvatarSetNotAway">
+		Uzakta DeÄŸil
+	</string>
+	<string name="AvatarSetAway">
+		Uzakta
+	</string>
+	<string name="AvatarSetNotBusy">
+		MeÅŸgul DeÄŸil
+	</string>
+	<string name="AvatarSetBusy">
+		MeÅŸgul
+	</string>
 	<string name="shape">
 		Åžekil
 	</string>
@@ -1983,8 +1986,8 @@ Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin.
 	<string name="PanelContentsNewScript">
 		Yeni Komut Dosyası
 	</string>
-	<string name="DoNotDisturbModeResponseDefault">
-		Bu sakin &quot;Rahatsız Etme&quot; seçeneğini devreye almış, mesajınızı sonra görecek.
+	<string name="BusyModeResponseDefault">
+		İleti gönderdiğiniz Sakin &apos;meşgul modu&apos;nda, bu da rahatsız edilmek istemediği anlamına geliyor.  İletiniz daha sonra incelenmesi için kendisine ait Aİ panelinde gösterilecektir.
 	</string>
 	<string name="MuteByName">
 		(Adına göre)
@@ -2097,6 +2100,9 @@ Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin.
 	<string name="GroupMoneyDate">
 		[weekday,datetime,utc] [mth,datetime,utc] [day,datetime,utc], [year,datetime,utc]
 	</string>
+	<string name="ViewerObjectContents">
+		İçerik
+	</string>
 	<string name="AcquiredItems">
 		Alınan Öğeler
 	</string>
@@ -3868,7 +3874,7 @@ Bu iletiyi almaya devam ederseniz, lütfen [SUPPORT_SITE] bölümüne başvurun.
 		Genel Bölge
 	</string>
 	<string name="LocationCtrlSeeAVsTooltip">
-		Bu parselin içindeki avatarlar, bu parselin dışındaki avatarlar tarafından görülemez veya işitilemez
+		Bu parselin dışında avatarlar görünür durumda ve sohbete izin veriliyor
 	</string>
 	<string name="LocationCtrlPathfindingDirtyTooltip">
 		Bölge yeniden kaydedilinceye kadar hareket eden nesneler bu bölgede doğru davranmayabilir.
@@ -3945,12 +3951,6 @@ Bu iletiyi almaya devam ederseniz, lütfen [SUPPORT_SITE] bölümüne başvurun.
 	<string name="IM_unblock_only_groups_friends">
 		Bu mesajı görmek için Tercihler/Gizlilik&apos;de &apos;Sadece arkadaşlar ve gruplar beni arasın veya Aİ göndersin&apos; seçeneğinin işaretini kaldırmalısınız.
 	</string>
-	<string name="OnlineStatus">
-		Çevrimiçi
-	</string>
-	<string name="OfflineStatus">
-		Çevrimdışı
-	</string>
 	<string name="answered_call">
 		Aramanız yanıtlandı
 	</string>
@@ -3960,9 +3960,6 @@ Bu iletiyi almaya devam ederseniz, lütfen [SUPPORT_SITE] bölümüne başvurun.
 	<string name="you_joined_call">
 		Sesli aramaya katıldınız
 	</string>
-	<string name="you_auto_rejected_call-im">
-		&quot;Rahatsız Etme&quot; seçeneğini devredeyken sesli aramayı otomatik olarak reddettiniz.
-	</string>
 	<string name="name_started_call">
 		[NAME] bir sesli arama başlattı
 	</string>
@@ -3979,7 +3976,7 @@ Bu iletiyi almaya devam ederseniz, lütfen [SUPPORT_SITE] bölümüne başvurun.
 		Bağlanıyor...
 	</string>
 	<string name="conference-title">
-		Çok kişili sohbet
+		Özel Konferans
 	</string>
 	<string name="conference-title-incoming">
 		[AGENT_NAME] ile konferans
@@ -4869,9 +4866,6 @@ Düzenleyici yolunu çift tırnakla çevrelemeyi deneyin.
 	<string name="Command_Chat_Label">
 		Sohbet
 	</string>
-	<string name="Command_Conversations_Label">
-		Sohbetler
-	</string>
 	<string name="Command_Compass_Label">
 		Pusula
 	</string>
@@ -4947,9 +4941,6 @@ Düzenleyici yolunu çift tırnakla çevrelemeyi deneyin.
 	<string name="Command_Chat_Tooltip">
 		Metin kullanarak yakındaki kişilerle sohbet etmek
 	</string>
-	<string name="Command_Conversations_Tooltip">
-		Herkesle sohbet et
-	</string>
 	<string name="Command_Compass_Tooltip">
 		Pusula
 	</string>
@@ -5079,13 +5070,4 @@ Düzenleyici yolunu çift tırnakla çevrelemeyi deneyin.
 	<string name="UserDictionary">
 		[User]
 	</string>
-	<string name="logging_calls_disabled_log_empty">
-		Sohbetlerin günlüğü tutulmuyor. Bir günlük tutmaya başlamak için, Tercihler &gt; Sohbet altında &quot;Kaydet: Sadece günlük&quot; veya &quot;Kaydet: Günlük ve dökümler&quot; seçimini yapın.
-	</string>
-	<string name="logging_calls_disabled_log_not_empty">
-		Bundan böyle sohbetlerin günlükleri tutulmayacak. Bir günlük tutmaya devam etmek için, Tercihler &gt; Sohbet altında &quot;Kaydet: Sadece günlük&quot; veya &quot;Kaydet: Günlük ve dökümler&quot; seçimini yapın.
-	</string>
-	<string name="logging_calls_enabled_log_empty">
-		Günlüğü tutulmuş sohbet yok. Siz biriyle iletişime geçtikten sonra veya biri sizinle iletişime geçtikten sonra, burada bir günlük girişi gösterilir.
-	</string>
 </strings>
diff --git a/indra/newview/skins/default/xui/zh/floater_conversation_log.xml b/indra/newview/skins/default/xui/zh/floater_conversation_log.xml
deleted file mode 100644
index 37115a0310e..00000000000
--- a/indra/newview/skins/default/xui/zh/floater_conversation_log.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_conversation_log" title="交談記錄">
-	<panel name="buttons_panel">
-		<filter_editor label="人員過濾器" name="people_filter_input"/>
-		<menu_button name="conversation_view_btn" tool_tip="檢視/排序的選項"/>
-		<menu_button name="conversations_gear_btn" tool_tip="對所選的人或群組採取動作"/>
-	</panel>
-</floater>
diff --git a/indra/newview/skins/default/xui/zh/floater_conversation_preview.xml b/indra/newview/skins/default/xui/zh/floater_conversation_preview.xml
deleted file mode 100644
index ece263f440d..00000000000
--- a/indra/newview/skins/default/xui/zh/floater_conversation_preview.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="preview_conversation" title="交談:">
-	<floater.string name="Title">
-		交談:[NAME]
-	</floater.string>
-	<text name="page_label" value="頁"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/zh/floater_im_container.xml b/indra/newview/skins/default/xui/zh/floater_im_container.xml
index 84ad869100c..2d66c659fe8 100644
--- a/indra/newview/skins/default/xui/zh/floater_im_container.xml
+++ b/indra/newview/skins/default/xui/zh/floater_im_container.xml
@@ -1,29 +1,2 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<multi_floater name="floater_im_box" title="交談">
-	<string name="collapse_icon" value="Conv_toolbar_collapse"/>
-	<string name="expand_icon" value="Conv_toolbar_expand"/>
-	<layout_stack name="conversations_stack">
-		<layout_panel name="conversations_layout_panel">
-			<layout_stack name="conversations_pane_buttons_stack">
-				<layout_panel name="conversations_pane_buttons_expanded">
-					<menu_button name="sort_btn" tool_tip="檢視/排序的選項"/>
-					<button name="add_btn" tool_tip="開始新的交談"/>
-					<button name="speak_btn" tool_tip="用麥克風和大家交談"/>
-				</layout_panel>
-				<layout_panel name="conversations_pane_buttons_collapsed">
-					<button name="expand_collapse_btn" tool_tip="縮疊/展開這個清單"/>
-				</layout_panel>
-			</layout_stack>
-		</layout_panel>
-		<layout_panel name="messages_layout_panel">
-			<panel_container name="im_box_tab_container">
-				<panel name="stub_panel">
-					<button name="stub_collapse_btn" tool_tip="縮疊這一區塊"/>
-					<text name="stub_textbox">
-						這個交談另開了新視窗。   [secondlife:/// 把它收回來]
-					</text>
-				</panel>
-			</panel_container>
-		</layout_panel>
-	</layout_stack>
-</multi_floater>
+<multi_floater name="floater_im_box" title="交談"/>
diff --git a/indra/newview/skins/default/xui/zh/floater_im_session.xml b/indra/newview/skins/default/xui/zh/floater_im_session.xml
index d63c5507db7..808a0b6720d 100644
--- a/indra/newview/skins/default/xui/zh/floater_im_session.xml
+++ b/indra/newview/skins/default/xui/zh/floater_im_session.xml
@@ -1,59 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="panel_im">
-	<floater.string name="call_btn_start">
-		Conv_toolbar_open_call
-	</floater.string>
-	<floater.string name="call_btn_stop">
-		Conv_toolbar_hang_up
-	</floater.string>
-	<floater.string name="collapseline_icon" value="Conv_collapse_to_one_line"/>
-	<floater.string name="expandline_icon" value="Conv_expand_one_line"/>
-	<floater.string name="collapse_icon" value="Conv_toolbar_collapse"/>
-	<floater.string name="expand_icon" value="Conv_toolbar_expand"/>
-	<floater.string name="tear_off_icon" value="Conv_toolbar_arrow_ne"/>
-	<floater.string name="return_icon" value="Conv_toolbar_arrow_sw"/>
-	<floater.string name="participant_added" value="[NAME] 已受邀加入交談。"/>
-	<floater.string name="multiple_participants_added" value="[NAME] 已受邀加入交談。"/>
-	<floater.string name="tooltip_to_separate_window" value="為這個交談另開新視窗"/>
-	<floater.string name="tooltip_to_main_window" value="將這個交談移回到主視窗"/>
-	<floater.string name="start_call_button_tooltip" value="建立語音通聯"/>
-	<floater.string name="end_call_button_tooltip" value="切斷語音通聯"/>
-	<floater.string name="expcol_button_not_tearoff_tooltip" value="縮疊這一區塊"/>
-	<floater.string name="expcol_button_tearoff_and_expanded_tooltip" value="縮疊參與者清單"/>
-	<floater.string name="expcol_button_tearoff_and_collapsed_tooltip" value="展開參與者清單"/>
-	<view name="contents_view">
-		<layout_stack name="main_stack">
-			<layout_panel name="toolbar_panel">
-				<menu_button name="view_options_btn" tool_tip="檢視/排序的選項"/>
-				<menu_button name="gear_btn" tool_tip="對選取的人採取動作"/>
-				<button name="add_btn" tool_tip="新增某人到這個交談"/>
-				<button name="voice_call_btn" tool_tip="建立語音通聯"/>
-				<button name="close_btn" tool_tip="結束這個交談"/>
-				<button name="expand_collapse_btn" tool_tip="縮疊/展開這個框"/>
-			</layout_panel>
-			<layout_panel name="body_panel">
-				<layout_stack name="im_panels">
-					<layout_panel name="right_part_holder">
-						<panel name="trnsAndChat_panel">
-							<layout_stack name="translate_and_chat_stack">
-								<layout_panel name="translate_chat_checkbox_lp">
-									<check_box label="翻譯聊天內容" name="translate_chat_checkbox"/>
-								</layout_panel>
-							</layout_stack>
-						</panel>
-					</layout_panel>
-				</layout_stack>
-			</layout_panel>
-			<layout_panel name="chat_layout_panel">
-				<layout_stack name="input_panels">
-					<layout_panel name="input_editor_layout_panel">
-						<chat_editor label="至" name="chat_editor"/>
-					</layout_panel>
-					<layout_panel name="input_button_layout_panel">
-						<button name="minz_btn" tool_tip="顯示/隱藏訊息框"/>
-					</layout_panel>
-				</layout_stack>
-			</layout_panel>
-		</layout_stack>
-	</view>
+	<layout_stack name="im_panels">
+		<layout_panel>
+			<line_editor label="至" name="chat_editor"/>
+		</layout_panel>
+	</layout_stack>
 </floater>
diff --git a/indra/newview/skins/default/xui/zh/floater_incoming_call.xml b/indra/newview/skins/default/xui/zh/floater_incoming_call.xml
index 4526eff21d8..45a003d3c88 100644
--- a/indra/newview/skins/default/xui/zh/floater_incoming_call.xml
+++ b/indra/newview/skins/default/xui/zh/floater_incoming_call.xml
@@ -25,9 +25,9 @@
 		是否離開 [CURRENT_CHAT] 並加入這個語音聊天?
 	</floater.string>
 	<text name="question">
-		如果接聽,你將切斷目前的語音交談。
+		是否離開 [CURRENT_CHAT] 並加入這個語音聊天?
 	</text>
-	<button label="接聽" label_selected="接聽" name="Accept"/>
-	<button label="忽視" label_selected="忽視" name="Reject"/>
-	<button label="不接聽但開啟 IM" name="Start IM"/>
+	<button label="接受" label_selected="接受" name="Accept"/>
+	<button label="拒絕" label_selected="拒絕" name="Reject"/>
+	<button label="開始 IM" name="Start IM"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/zh/floater_pathfinding_console.xml b/indra/newview/skins/default/xui/zh/floater_pathfinding_console.xml
index d0978b8b010..be009b54d88 100644
--- a/indra/newview/skins/default/xui/zh/floater_pathfinding_console.xml
+++ b/indra/newview/skins/default/xui/zh/floater_pathfinding_console.xml
@@ -71,7 +71,7 @@
 			<text name="show_label">
 				顯示:
 			</text>
-			<check_box label="測試" name="show_world"/>
+			<check_box label="世界" name="show_world"/>
 			<check_box label="僅限可移動的" name="show_world_movables_only"/>
 			<check_box label="導航網面" name="show_navmesh"/>
 			<text name="show_walkability_label">
diff --git a/indra/newview/skins/default/xui/zh/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/zh/floater_texture_ctrl.xml
index 02d06323d47..e909a67e2c6 100644
--- a/indra/newview/skins/default/xui/zh/floater_texture_ctrl.xml
+++ b/indra/newview/skins/default/xui/zh/floater_texture_ctrl.xml
@@ -19,7 +19,7 @@
 	<button label="預設" label_selected="預設" name="Default"/>
 	<button label="空白" label_selected="空白" name="Blank"/>
 	<button label="ç„¡" label_selected="ç„¡" name="None"/>
-	<check_box initial_value="true" label="立即套用" name="apply_immediate_check"/>
+	<check_box initial_value="true" label="實時預覽" name="apply_immediate_check"/>
 	<text name="preview_disabled" value="已停用預覽"/>
 	<filter_editor label="材質過濾器" name="inventory search editor"/>
 	<check_box initial_value="false" label="顯示資料夾" name="show_folders_check"/>
diff --git a/indra/newview/skins/default/xui/zh/floater_voice_chat_volume.xml b/indra/newview/skins/default/xui/zh/floater_voice_chat_volume.xml
deleted file mode 100644
index 96caa7d3334..00000000000
--- a/indra/newview/skins/default/xui/zh/floater_voice_chat_volume.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_voice_volume" title="語音聊天音量">
-	<slider label="語音聊天" name="chat_voice_volume"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/zh/floater_voice_effect.xml b/indra/newview/skins/default/xui/zh/floater_voice_effect.xml
index aab5fa60289..81e0204262e 100644
--- a/indra/newview/skins/default/xui/zh/floater_voice_effect.xml
+++ b/indra/newview/skins/default/xui/zh/floater_voice_effect.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater label="地點" name="voice_effects" title="語音變聲試聽">
+<floater label="地點" name="voice_effects" title="語音變聲">
 	<string name="no_voice_effect">
 		(無變聲效果)
 	</string>
diff --git a/indra/newview/skins/default/xui/zh/floater_voice_volume.xml b/indra/newview/skins/default/xui/zh/floater_voice_volume.xml
deleted file mode 100644
index 4260a8d3314..00000000000
--- a/indra/newview/skins/default/xui/zh/floater_voice_volume.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!--
-  Not can_close / no title to avoid window chrome
-  Single instance - only have one at a time, recycle it each spawn
--->
-<floater name="floater_voice_volume" title="音量">
-	<slider name="volume_slider" tool_tip="音量" value="0.5"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/zh/menu_cof_gear.xml b/indra/newview/skins/default/xui/zh/menu_cof_gear.xml
index eb7093a23c9..cd069f96017 100644
--- a/indra/newview/skins/default/xui/zh/menu_cof_gear.xml
+++ b/indra/newview/skins/default/xui/zh/menu_cof_gear.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu name="Gear COF">
 	<menu label="新衣服" name="COF.Gear.New_Clothes"/>
-	<menu label="新身體部位" name="COF.Gear.New_Body_Parts"/>
+	<menu label="新身體部位" name="COF.Geear.New_Body_Parts"/>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_conversation.xml b/indra/newview/skins/default/xui/zh/menu_conversation.xml
deleted file mode 100644
index 507255d0c04..00000000000
--- a/indra/newview/skins/default/xui/zh/menu_conversation.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_conversation_participant">
-	<menu_item_call label="關閉交談" name="close_conversation"/>
-	<menu_item_call label="開啟語音交談" name="open_voice_conversation"/>
-	<menu_item_call label="切斷語音交談" name="disconnect_from_voice"/>
-	<menu_item_call label="察看檔案" name="view_profile"/>
-	<menu_item_call label="IM" name="im"/>
-	<menu_item_call label="發出瞬間傳送邀請" name="offer_teleport"/>
-	<menu_item_call label="語音通話" name="voice_call"/>
-	<menu_item_call label="聊天歷史……" name="chat_history"/>
-	<menu_item_call label="新增朋友" name="add_friend"/>
-	<menu_item_call label="移除朋友" name="remove_friend"/>
-	<menu_item_call label="移除朋友" name="remove_friends"/>
-	<menu_item_call label="邀請加入群組……" name="invite_to_group"/>
-	<menu_item_call label="放大" name="zoom_in"/>
-	<menu_item_call label="地圖" name="map"/>
-	<menu_item_call label="分享" name="share"/>
-	<menu_item_call label="支付" name="pay"/>
-	<menu_item_check label="禁止語音" name="block_unblock"/>
-	<menu_item_check label="禁止文字" name="MuteText"/>
-	<menu_item_call label="群組檔案" name="group_profile"/>
-	<menu_item_call label="啟用群組" name="activate_group"/>
-	<menu_item_call label="離開群組" name="leave_group"/>
-	<context_menu label="主持人選項" name="Moderator Options">
-		<menu_item_check label="允許文字聊天" name="AllowTextChat"/>
-		<menu_item_call label="將此人消音" name="ModerateVoiceMuteSelected"/>
-		<menu_item_call label="取消對此人的消音" name="ModerateVoiceUnMuteSelected"/>
-		<menu_item_call label="所有人消音" name="ModerateVoiceMute"/>
-		<menu_item_call label="取消所有人的消音" name="ModerateVoiceUnmute"/>
-	</context_menu>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_conversation_log_gear.xml b/indra/newview/skins/default/xui/zh/menu_conversation_log_gear.xml
deleted file mode 100644
index 49e91417e89..00000000000
--- a/indra/newview/skins/default/xui/zh/menu_conversation_log_gear.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="Conversation Context Menu">
-	<menu_item_call label="IM…" name="IM"/>
-	<menu_item_call label="語音通話…" name="Call"/>
-	<menu_item_call label="開啟聊天歷史…" name="Chat history"/>
-	<menu_item_call label="察看檔案" name="View Profile"/>
-	<menu_item_call label="發給瞬間傳送請求" name="teleport"/>
-	<menu_item_call label="加為朋友" name="add_friend"/>
-	<menu_item_call label="移除朋友" name="remove_friend"/>
-	<menu_item_call label="邀請加入群組……" name="Invite"/>
-	<menu_item_call label="地圖" name="Map"/>
-	<menu_item_call label="分享" name="Share"/>
-	<menu_item_call label="支付" name="Pay"/>
-	<menu_item_check label="封鎖/不再封鎖" name="Block/Unblock"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_conversation_log_view.xml b/indra/newview/skins/default/xui/zh/menu_conversation_log_view.xml
deleted file mode 100644
index 3fa99a5cd7b..00000000000
--- a/indra/newview/skins/default/xui/zh/menu_conversation_log_view.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_conversation_view">
-	<menu_item_check label="依名稱排序" name="sort_by_name"/>
-	<menu_item_check label="依日期排序" name="sort_by_date"/>
-	<menu_item_check label="將朋友列在頂端" name="sort_by_friends"/>
-	<menu_item_call label="檢視附近聊天歷史……" name="view_nearby_chat_history"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_im_conversation.xml b/indra/newview/skins/default/xui/zh/menu_im_conversation.xml
deleted file mode 100644
index 815b0b594cc..00000000000
--- a/indra/newview/skins/default/xui/zh/menu_im_conversation.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="Conversation Gear Menu">
-	<menu_item_call label="察看檔案" name="View Profile"/>
-	<menu_item_call label="加為朋友" name="Add Friend"/>
-	<menu_item_call label="移除朋友" name="remove_friend"/>
-	<menu_item_call label="發出瞬間傳送邀請" name="offer_teleport"/>
-	<menu_item_call label="邀請加入群組……" name="invite_to_group"/>
-	<menu_item_call label="聊天歷史……" name="chat_history"/>
-	<menu_item_call label="放大" name="zoom_in"/>
-	<menu_item_call label="地圖" name="map"/>
-	<menu_item_call label="分享" name="Share"/>
-	<menu_item_call label="支付" name="Pay"/>
-	<menu_item_check label="禁止語音" name="Block/Unblock"/>
-	<menu_item_check label="禁止文字" name="MuteText"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_im_session_showmodes.xml b/indra/newview/skins/default/xui/zh/menu_im_session_showmodes.xml
deleted file mode 100644
index a7006e524a3..00000000000
--- a/indra/newview/skins/default/xui/zh/menu_im_session_showmodes.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_modes">
-	<menu_item_check label="精簡視野" name="compact_view"/>
-	<menu_item_check label="全展視野" name="expanded_view"/>
-	<menu_item_check label="顯示時間" name="IMShowTime"/>
-	<menu_item_check label="一對一交談時顯示名字" name="IMShowNamesForP2PConv"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_object_icon.xml b/indra/newview/skins/default/xui/zh/menu_object_icon.xml
index 9655732f2e0..f4f93b0bdc2 100644
--- a/indra/newview/skins/default/xui/zh/menu_object_icon.xml
+++ b/indra/newview/skins/default/xui/zh/menu_object_icon.xml
@@ -2,6 +2,4 @@
 <menu name="Object Icon Menu">
 	<menu_item_call label="物件檔案..." name="Object Profile"/>
 	<menu_item_call label="封鎖…" name="Block"/>
-	<menu_item_call label="顯示在地圖上" name="show_on_map"/>
-	<menu_item_call label="瞬間傳送到物件位置" name="teleport_to_object"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_outfit_gear.xml b/indra/newview/skins/default/xui/zh/menu_outfit_gear.xml
index 258d0d6b20e..e85b4b71821 100644
--- a/indra/newview/skins/default/xui/zh/menu_outfit_gear.xml
+++ b/indra/newview/skins/default/xui/zh/menu_outfit_gear.xml
@@ -23,8 +23,6 @@
 		<menu_item_call label="æ–°é ­é«®" name="New Hair"/>
 		<menu_item_call label="新眼睛" name="New Eyes"/>
 	</menu>
-	<menu_item_call label="展開全部資料夾" name="expand"/>
-	<menu_item_call label="摺疊全部資料夾" name="collapse"/>
 	<menu_item_call label="裝扮更名" name="rename"/>
 	<menu_item_call label="刪除裝扮" name="delete_outfit"/>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_participant_view.xml b/indra/newview/skins/default/xui/zh/menu_participant_view.xml
deleted file mode 100644
index 8b35860eb60..00000000000
--- a/indra/newview/skins/default/xui/zh/menu_participant_view.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="participant_manu_view">
-	<menu_item_check label="將交談依類型排序" name="sort_sessions_by_type"/>
-	<menu_item_check label="將交談依名字排序" name="sort_sessions_by_name"/>
-	<menu_item_check label="將交談依最近活動排序" name="sort_sessions_by_recent"/>
-	<menu_item_check label="將參與者依名字排序" name="sort_participants_by_name"/>
-	<menu_item_check label="將參與者依最近活動排序" name="sort_participants_by_recent"/>
-	<menu_item_call label="聊天偏好設定……" name="chat_preferences"/>
-	<menu_item_call label="隱私偏好設定……" name="privacy_preferences"/>
-	<menu_item_check label="交談記錄……" name="Conversation"/>
-	<menu_item_check label="翻譯附近的聊天" name="Translate_chat"/>
-	<menu_item_check label="翻譯設定……" name="Translation_settings"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_people_blocked_gear.xml b/indra/newview/skins/default/xui/zh/menu_people_blocked_gear.xml
deleted file mode 100644
index 9a2a3c403d5..00000000000
--- a/indra/newview/skins/default/xui/zh/menu_people_blocked_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_blocked_gear">
-	<menu_item_call label="解除封鎖" name="unblock"/>
-	<menu_item_call label="檔案..." name="profile"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_people_blocked_plus.xml b/indra/newview/skins/default/xui/zh/menu_people_blocked_plus.xml
deleted file mode 100644
index a8cecb4e147..00000000000
--- a/indra/newview/skins/default/xui/zh/menu_people_blocked_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_blocked_plus">
-	<menu_item_call label="按名字封鎖居民……" name="block_resident_by_name"/>
-	<menu_item_call label="依名稱封鎖物件" name="block_object_by_name"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_people_blocked_view.xml b/indra/newview/skins/default/xui/zh/menu_people_blocked_view.xml
deleted file mode 100644
index 5b70cd35bff..00000000000
--- a/indra/newview/skins/default/xui/zh/menu_people_blocked_view.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_blocked_view">
-	<menu_item_check label="依名稱排序" name="sort_by_name"/>
-	<menu_item_check label="依類型排序" name="sort_by_type"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_people_friends_view.xml b/indra/newview/skins/default/xui/zh/menu_people_friends_view.xml
deleted file mode 100644
index 4251238fd95..00000000000
--- a/indra/newview/skins/default/xui/zh/menu_people_friends_view.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_group_plus">
-	<menu_item_check label="依名稱排序" name="sort_name"/>
-	<menu_item_check label="依狀態排序" name="sort_status"/>
-	<menu_item_check label="察看人群圖示" name="view_icons"/>
-	<menu_item_check label="察看許可權限" name="view_permissions"/>
-	<menu_item_check label="檢視交談記錄……" name="view_conversation"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_people_groups.xml b/indra/newview/skins/default/xui/zh/menu_people_groups.xml
index b4b566f5cae..5768c554c9c 100644
--- a/indra/newview/skins/default/xui/zh/menu_people_groups.xml
+++ b/indra/newview/skins/default/xui/zh/menu_people_groups.xml
@@ -2,7 +2,7 @@
 <menu name="menu_group_plus">
 	<menu_item_call label="察看資訊" name="View Info"/>
 	<menu_item_call label="聊天" name="Chat"/>
-	<menu_item_call label="語音通話" name="Call"/>
+	<menu_item_call label="通話" name="Call"/>
 	<menu_item_call label="å•Ÿå‹•" name="Activate"/>
 	<menu_item_call label="退出" name="Leave"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_people_groups_view.xml b/indra/newview/skins/default/xui/zh/menu_people_groups_view.xml
deleted file mode 100644
index 05a30d938f2..00000000000
--- a/indra/newview/skins/default/xui/zh/menu_people_groups_view.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_group_plus">
-	<menu_item_check label="顯示群組圖示" name="Display Group Icons"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_people_nearby.xml b/indra/newview/skins/default/xui/zh/menu_people_nearby.xml
index d25adaf8fb5..38d5f3d3247 100644
--- a/indra/newview/skins/default/xui/zh/menu_people_nearby.xml
+++ b/indra/newview/skins/default/xui/zh/menu_people_nearby.xml
@@ -1,16 +1,13 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Avatar Context Menu">
-	<menu_item_call label="察看檔案" name="view_profile"/>
-	<menu_item_call label="IM" name="im"/>
-	<menu_item_call label="發給瞬間傳送請求" name="offer_teleport"/>
-	<menu_item_call label="語音通話" name="voice_call"/>
-	<menu_item_call label="檢視聊天歷史……" name="chat_history"/>
-	<menu_item_call label="加為朋友" name="add_friend"/>
-	<menu_item_call label="移除朋友" name="remove_friend"/>
-	<menu_item_call label="邀請加入群組……" name="invite_to_group"/>
-	<menu_item_call label="放大" name="zoom_in"/>
-	<menu_item_call label="地圖" name="map"/>
-	<menu_item_call label="分享" name="share"/>
-	<menu_item_call label="支付" name="pay"/>
-	<menu_item_check label="封鎖/不再封鎖" name="block_unblock"/>
+	<menu_item_call label="察看檔案" name="View Profile"/>
+	<menu_item_call label="加為朋友" name="Add Friend"/>
+	<menu_item_call label="移除朋友" name="Remove Friend"/>
+	<menu_item_call label="IM" name="IM"/>
+	<menu_item_call label="通話" name="Call"/>
+	<menu_item_call label="地圖" name="Map"/>
+	<menu_item_call label="分享" name="Share"/>
+	<menu_item_call label="支付" name="Pay"/>
+	<menu_item_check label="封鎖/不再封鎖" name="Block/Unblock"/>
+	<menu_item_call label="發給瞬間傳送請求" name="teleport"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/zh/menu_people_nearby_multiselect.xml
index 69f0eab7dc9..1380e0b307c 100644
--- a/indra/newview/skins/default/xui/zh/menu_people_nearby_multiselect.xml
+++ b/indra/newview/skins/default/xui/zh/menu_people_nearby_multiselect.xml
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Multi-Selected People Context Menu">
-	<menu_item_call label="加為朋友" name="add_friends"/>
-	<menu_item_call label="移除朋友" name="remove_friends"/>
-	<menu_item_call label="IM" name="im"/>
-	<menu_item_call label="通話" name="call"/>
-	<menu_item_call label="分享" name="share"/>
-	<menu_item_call label="支付" name="pay"/>
-	<menu_item_call label="發給瞬間傳送請求" name="offer_teleport"/>
+	<menu_item_call label="加為朋友" name="Add Friends"/>
+	<menu_item_call label="移除朋友" name="Remove Friend"/>
+	<menu_item_call label="IM" name="IM"/>
+	<menu_item_call label="通話" name="Call"/>
+	<menu_item_call label="分享" name="Share"/>
+	<menu_item_call label="支付" name="Pay"/>
+	<menu_item_call label="發給瞬間傳送請求" name="teleport"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_people_nearby_view.xml b/indra/newview/skins/default/xui/zh/menu_people_nearby_view.xml
deleted file mode 100644
index 9bc56384726..00000000000
--- a/indra/newview/skins/default/xui/zh/menu_people_nearby_view.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_group_plus">
-	<menu_item_check label="依最近說話者排序" name="sort_by_recent_speakers"/>
-	<menu_item_check label="依名稱排序" name="sort_name"/>
-	<menu_item_check label="依距離排序" name="sort_distance"/>
-	<menu_item_check label="察看人群圖示" name="view_icons"/>
-	<menu_item_check label="察看地圖" name="view_map"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_people_recent_view.xml b/indra/newview/skins/default/xui/zh/menu_people_recent_view.xml
deleted file mode 100644
index 382234c3ecf..00000000000
--- a/indra/newview/skins/default/xui/zh/menu_people_recent_view.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_group_plus">
-	<menu_item_check label="依最近排序" name="sort_most"/>
-	<menu_item_check label="依名稱排序" name="sort_name"/>
-	<menu_item_check label="察看人群圖示" name="view_icons"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_url_agent.xml b/indra/newview/skins/default/xui/zh/menu_url_agent.xml
index 72629822d4b..592bb6561e9 100644
--- a/indra/newview/skins/default/xui/zh/menu_url_agent.xml
+++ b/indra/newview/skins/default/xui/zh/menu_url_agent.xml
@@ -1,8 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Url Popup">
-	<menu_item_call label="察看檔案" name="show_agent"/>
-	<menu_item_call label="送出 IM..." name="send_im"/>
-	<menu_item_call label="加為朋友..." name="add_friend"/>
+	<menu_item_call label="顯示居民檔案" name="show_agent"/>
 	<menu_item_call label="覆製名稱到剪貼簿" name="url_copy_label"/>
 	<menu_item_call label="覆製 SLurl 到剪貼簿" name="url_copy"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_url_objectim.xml b/indra/newview/skins/default/xui/zh/menu_url_objectim.xml
index 9f3a9d58ffd..b344b21c62f 100644
--- a/indra/newview/skins/default/xui/zh/menu_url_objectim.xml
+++ b/indra/newview/skins/default/xui/zh/menu_url_objectim.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Url Popup">
-	<menu_item_call label="物件檔案..." name="show_object"/>
+	<menu_item_call label="顯示物件資訊" name="show_object"/>
 	<menu_item_call label="顯示在地圖上" name="show_on_map"/>
 	<menu_item_call label="瞬間傳送到物件位置" name="teleport_to_object"/>
 	<menu_item_call label="覆製物件名稱到剪貼簿" name="url_copy_label"/>
diff --git a/indra/newview/skins/default/xui/zh/menu_viewer.xml b/indra/newview/skins/default/xui/zh/menu_viewer.xml
index 09bdc578196..ac0e9e7e358 100644
--- a/indra/newview/skins/default/xui/zh/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/zh/menu_viewer.xml
@@ -16,7 +16,10 @@
 			<menu_item_call label="停止我身上的動作" name="Stop Animating My Avatar"/>
 			<menu_item_call label="行走 / 跑步 / 飛行…" name="Walk / run / fly"/>
 		</menu>
-		<menu label="狀態" name="Status"/>
+		<menu label="狀態" name="Status">
+			<menu_item_call label="離開" name="Set Away"/>
+			<menu_item_call label="忙碌" name="Set Busy"/>
+		</menu>
 		<menu_item_call label="購買 L$…" name="Buy and Sell L$"/>
 		<menu_item_call label="商家發件匣…" name="MerchantOutbox"/>
 		<menu_item_call label="帳戶主控臺…" name="Manage My Account"/>
@@ -27,18 +30,14 @@
 		<menu_item_call label="退出 [APP_NAME]" name="Quit"/>
 	</menu>
 	<menu label="溝通" name="Communicate">
-		<menu_item_check label="交談……" name="Conversations"/>
-		<menu_item_check label="附近的聊天……" name="Nearby Chat"/>
+		<menu_item_check label="聊天…" name="Nearby Chat"/>
 		<menu_item_check label="說話" name="Speak"/>
-		<menu label="語音變聲" name="VoiceMorphing">
-			<menu_item_check label="沒有變聲效果" name="NoVoiceMorphing"/>
-			<menu_item_check label="預覽……" name="Preview"/>
-			<menu_item_call label="訂閱……" name="Subscribe"/>
-		</menu>
+		<menu_item_check label="語音設定…" name="Nearby Voice"/>
+		<menu_item_check label="語音變聲…" name="ShowVoice"/>
 		<menu_item_check label="姿勢…" name="Gestures"/>
-		<menu_item_check label="朋友" name="My Friends"/>
-		<menu_item_check label="群組" name="My Groups"/>
-		<menu_item_check label="附近的人群" name="Active Speakers"/>
+		<menu_item_call label="朋友" name="My Friends"/>
+		<menu_item_call label="群組" name="My Groups"/>
+		<menu_item_call label="附近的人群" name="Active Speakers"/>
 		<menu_item_call label="封鎖清單" name="Block List"/>
 	</menu>
 	<menu label="世界" name="World">
@@ -114,6 +113,7 @@
 			<menu_item_call label="購買" name="Menu Object Buy"/>
 			<menu_item_call label="取得" name="Menu Object Take"/>
 			<menu_item_call label="取得副本" name="Take Copy"/>
+			<menu_item_call label="回存到我的收納區" name="Save Object Back to My Inventory"/>
 			<menu_item_call label="回存到物件內容" name="Save Object Back to Object Contents"/>
 			<menu_item_call label="退回物件" name="Return Object back to Owner"/>
 		</menu>
@@ -128,7 +128,6 @@
 			<menu_item_call label="聯結集…" name="pathfinding_linksets_menu_item"/>
 			<menu_item_call label="角色…" name="pathfinding_characters_menu_item"/>
 			<menu_item_call label="察看 / 測試…" name="pathfinding_console_menu_item"/>
-			<menu_item_call label="重新產出地區" name="pathfinding_rebake_navmesh_item"/>
 		</menu>
 		<menu label="選項" name="Options">
 			<menu_item_check label="顯示進階權限" name="DebugPermissions"/>
@@ -158,13 +157,6 @@
 	<menu label="幫助" name="Help">
 		<menu_item_call label="簡易教學…" name="How To"/>
 		<menu_item_call label="[SECOND_LIFE] 幫助" name="Second Life Help"/>
-		<menu_item_call label="使用者指南" name="User’s guide"/>
-		<menu_item_call label="知識庫" name="Knowledge Base"/>
-		<menu_item_call label="維基" name="Wiki"/>
-		<menu_item_call label="社群論壇" name="Community Forums"/>
-		<menu_item_call label="支援入口" name="Support portal"/>
-		<menu_item_call label="[SECOND_LIFE] 最新消息" name="Second Life News"/>
-		<menu_item_call label="[SECOND_LIFE] 部落格" name="Second Life Blogs"/>
 		<menu_item_call label="違規舉報" name="Report Abuse"/>
 		<menu_item_call label="回報臭蟲" name="Report Bug"/>
 		<menu_item_call label="關於 [APP_NAME]" name="About Second Life"/>
@@ -391,14 +383,9 @@
 				<menu_item_call label="女性測試" name="Test Female"/>
 				<menu_item_check label="允許選擇化身" name="Allow Select Avatar"/>
 			</menu>
-			<menu label="動作速度" name="Animation Speed">
-				<menu_item_call label="所有動作加快 10%" name="All Animations 10 Faster"/>
-				<menu_item_call label="所有動作放慢 10%" name="All Animations 10 Slower"/>
-				<menu_item_call label="將所有動作恢復原速" name="Reset All Animation Speed"/>
-				<menu_item_check label="慢動作" name="Slow Motion Animations"/>
-			</menu>
 			<menu_item_call label="強制參數為預設值" name="Force Params to Default"/>
 			<menu_item_check label="動作資訊" name="Animation Info"/>
+			<menu_item_check label="慢動作" name="Slow Motion Animations"/>
 			<menu_item_check label="顯示注視在" name="Show Look At"/>
 			<menu_item_check label="顯示指向在" name="Show Point At"/>
 			<menu_item_check label="除錯旋軸的更新" name="Debug Joint Updates"/>
diff --git a/indra/newview/skins/default/xui/zh/notifications.xml b/indra/newview/skins/default/xui/zh/notifications.xml
index 59be26d43bf..9fecf2c104d 100644
--- a/indra/newview/skins/default/xui/zh/notifications.xml
+++ b/indra/newview/skins/default/xui/zh/notifications.xml
@@ -516,24 +516,6 @@
 		</url>
 		<usetemplate ignoretext="我的顯示驅動程式太老舊" name="okcancelignore" notext="否" yestext="是"/>
 	</notification>
-	<notification name="AMDOldDriver">
-		你的顯示卡很可能有新版的驅動程式。  更新顯示驅動程式會大幅改善性能。
-
-    前往 [_URL] 察看是否有新版驅動程式?
-		<url name="url">
-			http://support.amd.com/us/Pages/AMDSupportHub.aspx
-		</url>
-		<usetemplate ignoretext="我的顯示驅動程式太老舊" name="okcancelignore" notext="否" yestext="是"/>
-	</notification>
-	<notification name="NVIDIAOldDriver">
-		你的顯示卡很可能有新版的驅動程式。  更新顯示驅動程式會大幅改善性能。
-
-    前往 [_URL] 察看是否有新版驅動程式?
-		<url name="url">
-			http://www.nvidia.com/Download/index.aspx?lang=tw
-		</url>
-		<usetemplate ignoretext="我的顯示驅動程式太老舊" name="okcancelignore" notext="否" yestext="是"/>
-	</notification>
 	<notification name="UnknownGPU">
 		你的系統含有一個 [APP_NAME] 無法辨認的顯像卡。
 原因很可能是 [APP_NAME] 尚未針對新硬體完成測試。  這大概不會出問題,但你可能需要調整顯像設定。
@@ -1554,13 +1536,10 @@ SHA1 指紋:[MD5_DIGEST]
 		此時無法發出交友邀請。 請稍候再試。
 		<usetemplate name="okbutton" yestext="確定"/>
 	</notification>
-	<notification name="DoNotDisturbModeSet">
-		「請勿打擾」模式目前是開啟狀態。  你將不會收到任何發給你的訊息通知。
-
-- 其他居民將收到你的「請勿打擾」回應(回應內容設於「偏好設定 &gt; 一般設定」)。
-- 所有瞬間傳送的邀請都將被婉拒。
-- 所有語音來電都將拒絕接聽。
-		<usetemplate ignoretext="我變更我的狀態為「請勿打擾」模式" name="okignore" yestext="確定"/>
+	<notification name="BusyModeSet">
+		已設為忙碌模式。
+聊天和即時訊息內容將被隱藏。 即時訊息發送者將收到你的「忙碌模式」回應。 所有的瞬間傳送邀請都將被婉拒。 此時起送給你的收納區物項都將丟入垃圾桶。
+		<usetemplate ignoretext="我變更我的狀態為忙碌模式" name="okignore" yestext="確定"/>
 	</notification>
 	<notification name="JoinedTooManyGroupsMember">
 		你已達可同時加入的群組數上限。 請先離開另一個群組再加入這一個,或婉拒加入邀請。
@@ -2045,10 +2024,6 @@ SHA1 指紋:[MD5_DIGEST]
 		前往你的[http://secondlife.com/account/ 塗鴉牆]以察看你的帳戶歷史紀錄?
 		<usetemplate ignoretext="啟動我的瀏覽器以察看我的帳戶歷史紀錄" name="okcancelignore" notext="取消" yestext="前往頁面"/>
 	</notification>
-	<notification name="ConfirmAddingChatParticipants">
-		新增一個人到現有的交談,等於建立新的交談。  所有交談者將會收到新交談通知。
-		<usetemplate ignoretext="確認新增聊天者" name="okcancelignore" notext="取消" yestext="確定"/>
-	</notification>
 	<notification name="ConfirmQuit">
 		你確定你要結束退出?
 		<usetemplate ignoretext="當我結束退出時進行確認" name="okcancelignore" notext="不要結束退出" yestext="結束退出"/>
@@ -2123,14 +2098,14 @@ SHA1 指紋:[MD5_DIGEST]
 			<button ignore="絕不取代" name="No" text="取消"/>
 		</form>
 	</notification>
-	<notification label="「請勿打擾」模式警告" name="DoNotDisturbModePay">
-		你已開啟「請勿打擾」。 你將不會收到任何付款購買的物項。
+	<notification label="忙碌模式警告" name="BusyModePay">
+		你現在處於忙碌模式,這意味著你付費後仍將不會收到任何物項。
 
-是否要在完成交易之前,先關閉「請勿打擾」模式?
+你是否要先離開忙碌模式,再完成交易?
 		<form name="form">
-			<ignore name="ignore" text="我即將在「請勿打擾」模式下,試圖付錢給他人或給一個物件"/>
-			<button ignore="固定選擇離開「請勿打擾」模式" name="Yes" text="確定"/>
-			<button ignore="永不離開「請勿打擾」模式" name="No" text="取消"/>
+			<ignore name="ignore" text="當我在忙碌模式時,將要支付金錢或給他人物件"/>
+			<button ignore="總是離開忙碌模式" name="Yes" text="確定"/>
+			<button ignore="絕不離開忙碌模式" name="No" text="取消"/>
 		</form>
 	</notification>
 	<notification name="ConfirmDeleteProtectedCategory">
@@ -2265,8 +2240,11 @@ SHA1 指紋:[MD5_DIGEST]
 	<notification name="GroupNotice">
 		主旨:[SUBJECT],訊息:[MESSAGE]
 	</notification>
-	<notification name="FriendOnlineOffline">
-		&lt;nolink&gt;[NAME]&lt;/nolink&gt; 目前狀態為 [STATUS]
+	<notification name="FriendOnline">
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; 目前在線上
+	</notification>
+	<notification name="FriendOffline">
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; 目前離線
 	</notification>
 	<notification name="AddSelfFriend">
 		雖然你人很好,你還是不能把自己加為朋友。
@@ -2494,6 +2472,13 @@ SHA1 指紋:[MD5_DIGEST]
 	<notification name="DynamicPathfindingDisabled">
 		這地區並未啟用動態尋徑。  使用尋徑 LSL 呼叫的帶腳本物件,在此地區可能無法正常運作。
 	</notification>
+	<notification name="PathfindingRebakeNavmesh">
+		更改本地區的某些物件將導致其他移動物件的運作發生問題。  要使移動物件正常運作,請點按「重新產出地區」按鈕。  欲獲知詳情請選擇「幫助」。
+		<url name="url">
+			http://wiki.secondlife.com/wiki/Pathfinding_Tools_in_the_Second_Life_Viewer
+		</url>
+		<usetemplate helptext="幫助" ignoretext="更改本地區的某些物件將導致其他移動物件的運作發生問題。" name="okhelpignore" yestext="確定"/>
+	</notification>
 	<notification name="PathfindingCannotRebakeNavmesh">
 		發生錯誤。  問題可能出在網路或伺服器,也可能因為你無權建製物件。  有時,只要登出再登入即能解決這類問題。
 		<usetemplate name="okbutton" yestext="確定"/>
@@ -2756,7 +2741,7 @@ SHA1 指紋:[MD5_DIGEST]
 	<notification name="ScriptQuestionCaution">
 		警告:物件 &apos;&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;&apos; 要求全權存取你的林登幣帳戶。 你如果允許存取帳戶,它將可在任何時候從你帳戶取走資金,或完全加以清空,或定期取走部分資金,且不會發出警告。
   
-如果你不完全瞭解它為何要求存取你的帳戶,請勿允准。
+這很可能是種不當的要求。 如果你不完全瞭解它為何要求存取你的帳戶,請勿允准。
 		<form name="form">
 			<button name="Grant" text="允許全權存取"/>
 			<button name="Deny" text="拒絕"/>
@@ -3338,633 +3323,4 @@ SHA1 指紋:[MD5_DIGEST]
 		你正在刪除 [NUM_ITEMS] 個物項。  你確定你要繼續?
 		<usetemplate ignoretext="確定要刪除多個物項?" name="okcancelignore" notext="否" yestext="是"/>
 	</notification>
-	<notification name="AvatarFrozen">
-		[AV_FREEZER] 凍結了你。 你此時無法移動或與周遭互動。
-	</notification>
-	<notification name="AvatarFrozenDuration">
-		[AV_FREEZER] 凍結了你 [AV_FREEZE_TIME] 秒鐘。 你此時無法移動或與周遭互動。
-	</notification>
-	<notification name="YouFrozeAvatar">
-		化身已凍結。
-	</notification>
-	<notification name="AvatarHasUnFrozenYou">
-		[AV_FREEZER] 解除了對你的凍結。
-	</notification>
-	<notification name="AvatarUnFrozen">
-		化身已解除凍結。
-	</notification>
-	<notification name="AvatarFreezeFailure">
-		凍結失敗,因為你在該地段沒有管理員權限。
-	</notification>
-	<notification name="AvatarFreezeThaw">
-		你遭凍結的時間已過,請恢復正常活動。
-	</notification>
-	<notification name="AvatarCantFreeze">
-		抱歉,無法凍結該用戶。
-	</notification>
-	<notification name="NowOwnObject">
-		你現在是物件 [OBJECT_NAME] 的所有人
-	</notification>
-	<notification name="CantRezOnLand">
-		無法在 [OBJECT_POS] 產生物件,因為這土地的所有人不允許。  請用土地工具察看所有人。
-	</notification>
-	<notification name="RezFailTooManyRequests">
-		無法產生物件,此刻要求數目過多。
-	</notification>
-	<notification name="SitFailCantMove">
-		你無法坐下,因為此刻你不能移動。
-	</notification>
-	<notification name="SitFailNotAllowedOnLand">
-		你不能坐下,因為該土地不允許。
-	</notification>
-	<notification name="SitFailNotSameRegion">
-		請挨近一點。  無法坐在物件上,因為
-它和你不在同一個地區。
-	</notification>
-	<notification name="NoNewObjectRegionFull">
-		無法建立新物件。 地區已滿載。
-	</notification>
-	<notification name="FailedToPlaceObject">
-		無法將物件置於指定地點。  請再試一次。
-	</notification>
-	<notification name="NoOwnNoGardening">
-		你無法在別人的土地上建立樹和草。
-	</notification>
-	<notification name="NoCopyPermsNoObject">
-		複製失敗,你無權複製物件 &apos;[OBJ_NAME]&apos;。
-	</notification>
-	<notification name="NoTransPermsNoObject">
-		複製失敗,因為物件 &apos;[OBJ_NAME]&apos; 無法轉移給你。
-	</notification>
-	<notification name="AddToNavMeshNoCopy">
-		複製失敗,因為物件 &apos;[OBJ_NAME]&apos; 對導航網面有貢獻。
-	</notification>
-	<notification name="DupeWithNoRootsSelected">
-		選取了沒有根的重覆物件。
-	</notification>
-	<notification name="CantDupeCuzRegionIsFull">
-		無法複製物件,因為地區滿載。
-	</notification>
-	<notification name="CantDupeCuzParcelNotFound">
-		無法複製物件,找不到它們所在的地段。
-	</notification>
-	<notification name="CantCreateCuzParcelFull">
-		無法建立物件,因為 
-地段滿載。
-	</notification>
-	<notification name="RezAttemptFailed">
-		試圖產生物件失敗。
-	</notification>
-	<notification name="ToxicInvRezAttemptFailed">
-		無法建立已在此地區造成問題的物件。
-	</notification>
-	<notification name="InvItemIsBlacklisted">
-		該收納區物項已被列入黑名單。
-	</notification>
-	<notification name="NoCanRezObjects">
-		你此時無權建立物件。
-	</notification>
-	<notification name="LandSearchBlocked">
-		土地搜尋遭禁。
-你在短時間內進行了太多次土地搜尋。
-請稍候再試。
-	</notification>
-	<notification name="NotEnoughResourcesToAttach">
-		腳本資源不足,無法附著物件!
-	</notification>
-	<notification name="YouDiedAndGotTPHome">
-		你已經死亡並且被瞬間傳送回你的家的位置
-	</notification>
-	<notification name="EjectComingSoon">
-		你不再允許待在這裡,必須在 [EJECT_TIME] 秒內離開。
-	</notification>
-	<notification name="NoEnterServerFull">
-		你無法進入這地區,因為 
-伺服器滿載。
-	</notification>
-	<notification name="SaveBackToInvDisabled">
-		「儲存回收納區」功能已被停用。
-	</notification>
-	<notification name="NoExistNoSaveToContents">
-		無法將 &apos;[OBJ_NAME]&apos; 儲存到物件內容,因為產生它的來源物件已不存在。
-	</notification>
-	<notification name="NoModNoSaveToContents">
-		無法儲存 [OBJ_NAME] 到物件內容,你無權修改 &apos;[DEST_NAME]&apos; 物件。
-	</notification>
-	<notification name="NoSaveBackToInvDisabled">
-		無法將 &apos;[OBJ_NAME]&apos; 儲存回收納區,此動作已被停用。
-	</notification>
-	<notification name="NoCopyNoSelCopy">
-		無法複製你所選的,因為你無權複製物件 &apos;[OBJ_NAME]&apos;。
-	</notification>
-	<notification name="NoTransNoSelCopy">
-		無法選取複製,因為物件 &apos;[OBJ_NAME]&apos; 不可轉移。
-	</notification>
-	<notification name="NoTransNoCopy">
-		無法選取複製,因為物件 &apos;[OBJ_NAME]&apos; 不可轉移。
-	</notification>
-	<notification name="NoPermsNoRemoval">
-		權限系統不允許從模擬器移除物件 &apos;[OBJ_NAME]&apos;。
-	</notification>
-	<notification name="NoModNoSaveSelection">
-		無法儲存你所選的,因為你無權修改 &apos;[OBJ_NAME]&apos; 物件。
-	</notification>
-	<notification name="NoCopyNoSaveSelection">
-		無法儲存你所選的,因為物件 &apos;[OBJ_NAME]&apos; 不可複製。
-	</notification>
-	<notification name="NoModNoTaking">
-		無法拿取你所選的,因為你無權修改 &apos;[OBJ_NAME]&apos; 物件。
-	</notification>
-	<notification name="RezDestInternalError">
-		內部錯誤:未知的目的地類型。
-	</notification>
-	<notification name="DeleteFailObjNotFound">
-		刪除失敗,因為找不到物件
-	</notification>
-	<notification name="SorryCantEjectUser">
-		抱歉,無法踢出該用戶。
-	</notification>
-	<notification name="RegionSezNotAHome">
-		此地區不許你在此設定「我的家」。
-	</notification>
-	<notification name="HomeLocationLimits">
-		你只能在自己的土地或大陸資訊中心上設定「我的家」。
-	</notification>
-	<notification name="HomePositionSet">
-		我的家位置已定。
-	</notification>
-	<notification name="AvatarEjected">
-		化身已被踢出。
-	</notification>
-	<notification name="AvatarEjectFailed">
-		踢出失敗,因為你在該地段沒有管理員權限。
-	</notification>
-	<notification name="CantMoveObjectParcelFull">
-		無法移動 &apos;[OBJECT_NAME]&apos; 物件到
-地區 [REGION_NAME] 的 [OBJ_POSITION],因為該目標地段已滿載。
-	</notification>
-	<notification name="CantMoveObjectParcelPerms">
-		無法移動 &apos;[OBJECT_NAME]&apos; 物件到
-地區 [REGION_NAME] 的 [OBJ_POSITION],因為此地段不允許你的物件。
-	</notification>
-	<notification name="CantMoveObjectParcelResources">
-		無法移動 &apos;[OBJECT_NAME]&apos; 物件到
- [REGION_NAME] 地區的 [OBJ_POSITION],因為此地段資源不足容納此物件。
-	</notification>
-	<notification name="CantMoveObjectRegionVersion">
-		無法移動 &apos;[OBJECT_NAME]&apos; 物件到
- [REGION_NAME] 地區的 [OBJ_POSITION],因為該地區所執行的軟體版本過舊,不支援跨地區接受這個物件。
-	</notification>
-	<notification name="CantMoveObjectNavMesh">
-		無法移動 &apos;[OBJECT_NAME]&apos; 物件到
-地區 [REGION_NAME] 的 [OBJ_POSITION],因為你不得修改跨越地區界限的導航網面。
-	</notification>
-	<notification name="CantMoveObjectWTF">
-		無法移動 &apos;[OBJECT_NAME]&apos; 物件到
-地區 [REGION_NAME] 的 [OBJ_POSITION],原因不明。 ([FAILURE_TYPE])
-	</notification>
-	<notification name="NoPermModifyObject">
-		你無權變更該物件
-	</notification>
-	<notification name="CantEnablePhysObjContributesToNav">
-		對導航網面有貢獻的物件,無法啟用物理。
-	</notification>
-	<notification name="CantEnablePhysKeyframedObj">
-		鍵格動畫物件無法啟用物理。
-	</notification>
-	<notification name="CantEnablePhysNotEnoughLandResources">
-		無法啟用物件的物理——土地資源不足。
-	</notification>
-	<notification name="CantEnablePhysCostTooGreat">
-		物件的物理資源成本超過 [MAX_OBJECTS],無法啟用物理
-	</notification>
-	<notification name="PhantomWithConcavePiece">
-		此物件不得有凹面部件,因為物件是幻影物件,對導航網面有貢獻。
-	</notification>
-	<notification name="UnableAddItem">
-		無法新增項目!
-	</notification>
-	<notification name="UnableEditItem">
-		無法編輯這項目!
-	</notification>
-	<notification name="NoPermToEdit">
-		無權編輯這項目。
-	</notification>
-	<notification name="NoPermToCopyInventory">
-		無權複製該收納區。
-	</notification>
-	<notification name="CantSaveItemDoesntExist">
-		無法儲存到物件內容:該項目已不存在。
-	</notification>
-	<notification name="CantSaveItemAlreadyExists">
-		無法儲存到物件內容:收納區已存在同名稱的項目
-	</notification>
-	<notification name="CantSaveModifyAttachment">
-		無法儲存到物件內容:這麼做將修改附件的權限。
-	</notification>
-	<notification name="TooManyScripts">
-		腳本太多。
-	</notification>
-	<notification name="UnableAddScript">
-		無法新增腳本!
-	</notification>
-	<notification name="AssetServerTimeoutObjReturn">
-		資產伺服器未在正常時間內反應。  物件已返交模擬器。
-	</notification>
-	<notification name="RegionDisablePhysicsShapes">
-		本地區未啟用物理形狀。
-	</notification>
-	<notification name="NoModNavmeshAcrossRegions">
-		你無法變更跨越地區界限的導航網面。
-	</notification>
-	<notification name="NoSetPhysicsPropertiesOnObjectType">
-		該物件類型不得設定物理性質。
-	</notification>
-	<notification name="NoSetRootPrimWithNoShape">
-		根幾何元件無法設成無形狀。
-	</notification>
-	<notification name="NoRegionSupportPhysMats">
-		本地區未啟用物理材料。
-	</notification>
-	<notification name="OnlyRootPrimPhysMats">
-		只能調整根幾何元件的物理材料。
-	</notification>
-	<notification name="NoSupportCharacterPhysMats">
-		尚不支援角色設定物理材料。
-	</notification>
-	<notification name="InvalidPhysMatProperty">
-		指定的物理材料屬性中,至少有一個無效。
-	</notification>
-	<notification name="NoPermsAlterStitchingMeshObj">
-		網面物件的縫合類型不得變更。
-	</notification>
-	<notification name="NoPermsAlterShapeMeshObj">
-		網面物件的形狀不得變更。
-	</notification>
-	<notification name="FullRegionCantEnter">
-		你無法進入這地區,\n因為地區滿載。
-	</notification>
-	<notification name="LinkFailedOwnersDiffer">
-		聯結失敗——所有人不同
-	</notification>
-	<notification name="LinkFailedNoModNavmeshAcrossRegions">
-		聯結失敗——無法修改跨越地區界限的導航網面。
-	</notification>
-	<notification name="LinkFailedNoPermToEdit">
-		聯結失敗,你無權編輯。
-	</notification>
-	<notification name="LinkFailedTooManyPrims">
-		聯結失敗——幾何元件太多
-	</notification>
-	<notification name="LinkFailedCantLinkNoCopyNoTrans">
-		聯結失敗——無法將「禁止複製」和「禁止轉移」物件聯結起來
-	</notification>
-	<notification name="LinkFailedNothingLinkable">
-		聯結失敗——沒有可聯結的東西。
-	</notification>
-	<notification name="LinkFailedTooManyPathfindingChars">
-		聯結失敗——尋徑角色太多
-	</notification>
-	<notification name="LinkFailedInsufficientLand">
-		聯結失敗——土地資源不足
-	</notification>
-	<notification name="LinkFailedTooMuchPhysics">
-		物件使用了過多物理資源,其動態特性已被停用。
-	</notification>
-	<notification name="TeleportedHomeByObjectOnParcel">
-		你已被 &apos;[PARCEL_NAME]&apos; 地段的物件 &apos;[OBJECT_NAME]&apos; 成功瞬間傳送回家
-	</notification>
-	<notification name="TeleportedHomeByObject">
-		你已成功被物件 &apos;[OBJECT_NAME]&apos; 瞬間傳送回家
-	</notification>
-	<notification name="TeleportedByAttachment">
-		你已成功被 [ITEM_ID] 上的一個附件瞬間傳送
-	</notification>
-	<notification name="TeleportedByObjectOnParcel">
-		你已成功被 &apos;[PARCEL_NAME]&apos; 地段的物件 &apos;[OBJECT_NAME]&apos; 瞬間傳送
-	</notification>
-	<notification name="TeleportedByObjectOwnedBy">
-		你已成功被 [OWNER_ID] 擁有的物件 &apos;[OBJECT_NAME]&apos; 瞬間傳送
-	</notification>
-	<notification name="TeleportedByObjectUnknownUser">
-		你已成功被某未知用戶擁有的物件 &apos;[OBJECT_NAME]&apos; 瞬間傳送。
-	</notification>
-	<notification name="CantCreateObjectRegionFull">
-		無法建立要求的物件。 地區已滿載。
-	</notification>
-	<notification name="CantAttackMultipleObjOneSpot">
-		你不能將多個物件附著到同一個點。
-	</notification>
-	<notification name="CantCreateMultipleObjAtLoc">
-		你不能在此建立多個物件。
-	</notification>
-	<notification name="UnableToCreateObjTimeOut">
-		無法建立要求的物件。 物件在資料庫中找不到。
-	</notification>
-	<notification name="UnableToCreateObjUnknown">
-		無法建立要求的物件。 要求逾時,無法完成。 請再試一次。
-	</notification>
-	<notification name="UnableToCreateObjMissingFromDB">
-		無法建立要求的物件。 請再試一次。
-	</notification>
-	<notification name="RezFailureTookTooLong">
-		物件產生失敗,要求的物件載入時間太久。
-	</notification>
-	<notification name="FailedToPlaceObjAtLoc">
-		無法將物件置於指定地點。  請再試一次。
-	</notification>
-	<notification name="CantCreatePlantsOnLand">
-		你不得在這土地上建立植物。
-	</notification>
-	<notification name="CantRestoreObjectNoWorldPos">
-		無法恢復物件。 找不到虛擬世界的位置。
-	</notification>
-	<notification name="CantRezObjectInvalidMeshData">
-		無法產生物件,它的網面資料無效。
-	</notification>
-	<notification name="CantRezObjectTooManyScripts">
-		無法產生物件,因為這地區已有太多的腳本。
-	</notification>
-	<notification name="CantCreateObjectNoAccess">
-		你無權在此建立物件。
-	</notification>
-	<notification name="CantCreateObject">
-		你此時無權建立物件。
-	</notification>
-	<notification name="InvalidObjectParams">
-		無效的物件參數
-	</notification>
-	<notification name="CantDuplicateObjectNoAcess">
-		你權限不夠,無法在此複製物件。
-	</notification>
-	<notification name="CantChangeShape">
-		你無權變更這個形狀。
-	</notification>
-	<notification name="NoAccessToClaimObjects">
-		你權限不夠,無法在此收取物件。
-	</notification>
-	<notification name="DeedFailedNoPermToDeedForGroup">
-		讓渡失敗,你無權為你的群組讓渡物件。
-	</notification>
-	<notification name="NoPrivsToBuyObject">
-		你權限不夠,無法在此購買物件。
-	</notification>
-	<notification name="CantAttachObjectAvatarSittingOnIt">
-		無法附著物件,有個化身正坐在物件上。
-	</notification>
-	<notification name="WhyAreYouTryingToWearShrubbery">
-		樹和草不能當附件穿戴。
-	</notification>
-	<notification name="CantAttachGroupOwnedObjs">
-		無法附著群組所擁有的物件。
-	</notification>
-	<notification name="CantAttachObjectsNotOwned">
-		無法附著不是你擁有的物件。
-	</notification>
-	<notification name="CantAttachNavmeshObjects">
-		無法附著對導航網面有貢獻的物件。
-	</notification>
-	<notification name="CantAttachObjectNoMovePermissions">
-		無法附著物件,你無權移動該物件。
-	</notification>
-	<notification name="CantAttachNotEnoughScriptResources">
-		腳本資源不足,無法附著物件!
-	</notification>
-	<notification name="CantDropItemTrialUser">
-		你無法在此卸除物件,請到「自由嘗試」區域再試。
-	</notification>
-	<notification name="CantDropMeshAttachment">
-		你無法在此卸除附件。 請選擇把卸除附件送回收納區,再重新成形。
-	</notification>
-	<notification name="CantDropAttachmentNoPermission">
-		卸除附件失敗:你無權在此處卸除。
-	</notification>
-	<notification name="CantDropAttachmentInsufficientLandResources">
-		卸除附件失敗:可用土地資源不足。
-	</notification>
-	<notification name="CantDropAttachmentInsufficientResources">
-		卸除附件失敗:可用資源不足。
-	</notification>
-	<notification name="CantDropObjectFullParcel">
-		無法在此卸除物件。  地段滿載。
-	</notification>
-	<notification name="CantTouchObjectBannedFromParcel">
-		無法觸摸/抓取此物件,因為你在該土地地段遭禁。
-	</notification>
-	<notification name="PlzNarrowDeleteParams">
-		請將刪除參數範圍調小一點。
-	</notification>
-	<notification name="UnableToUploadAsset">
-		無法上傳資產。
-	</notification>
-	<notification name="CantTeleportCouldNotFindUser">
-		找不到要瞬間傳送到家的用戶
-	</notification>
-	<notification name="GodlikeRequestFailed">
-		要求神的權力失敗
-	</notification>
-	<notification name="GenericRequestFailed">
-		普通請求失敗
-	</notification>
-	<notification name="CantUploadPostcard">
-		無法上傳明信片。  請稍候再試一次。
-	</notification>
-	<notification name="CantFetchInventoryForGroupNotice">
-		無法取得群組通知的收納區細節。
-	</notification>
-	<notification name="CantSendGroupNoticeNotPermitted">
-		無法送出群組通知——未准許。
-	</notification>
-	<notification name="CantSendGroupNoticeCantConstructInventory">
-		無法送出群組通知——收納區建立失敗。
-	</notification>
-	<notification name="CantParceInventoryInNotice">
-		無法剖析通知裡的收納品項。
-	</notification>
-	<notification name="TerrainUploadFailed">
-		地形上傳失敗。
-	</notification>
-	<notification name="TerrainFileWritten">
-		地形檔案已寫入。
-	</notification>
-	<notification name="TerrainFileWrittenStartingDownload">
-		地形檔案已寫入,開始下載……
-	</notification>
-	<notification name="TerrainBaked">
-		地形已定貌。
-	</notification>
-	<notification name="TenObjectsDisabledPlzRefresh">
-		只成功停用前 10 個所選物件。 若有需要,請刷新之後再選取更多的項目。
-	</notification>
-	<notification name="UpdateViewerBuyParcel">
-		你必須先更新瀏覽器後,才可購買這個地段。
-	</notification>
-	<notification name="CantBuyParcelNotForSale">
-		無法購買,此地段不供出售。
-	</notification>
-	<notification name="CantBuySalePriceOrLandAreaChanged">
-		無法購買,售價或土地面積已變。
-	</notification>
-	<notification name="CantBuyParcelNotAuthorized">
-		你不是此地段的獲授權的買主。
-	</notification>
-	<notification name="CantBuyParcelAwaitingPurchaseAuth">
-		你無法購買此地段,該地段已在等候批准購買
-	</notification>
-	<notification name="CantBuildOverflowParcel">
-		你不得在此建立物件,這麼做將導致地段超載。
-	</notification>
-	<notification name="SelectedMultipleOwnedLand">
-		你選擇的土地範圍,為不同人所擁有。 請縮小選擇範圍,再試一次。
-	</notification>
-	<notification name="CantJoinTooFewLeasedParcels">
-		未選取足夠租用地段,無法合併。
-	</notification>
-	<notification name="CantDivideLandMultipleParcelsSelected">
-		無法分割土地,\n因為你選取了多個地段,\n請縮小所選土地。
-	</notification>
-	<notification name="CantDivideLandCantFindParcel">
-		無法分割土地。\n找不到地段。\n請到「幫助 &gt; 回報錯誤……」回報問題
-	</notification>
-	<notification name="CantDivideLandWholeParcelSelected">
-		無法分割土地。 選取了整個地段。\n請試著縮小所選的土地。
-	</notification>
-	<notification name="LandHasBeenDivided">
-		土地分割成功。
-	</notification>
-	<notification name="PassPurchased">
-		你購買了通行權。
-	</notification>
-	<notification name="RegionDisallowsClassifieds">
-		地區不允許分類廣告。
-	</notification>
-	<notification name="LandPassExpireSoon">
-		你在此土地的通行權即將到期失效。
-	</notification>
-	<notification name="CantSitNoSuitableSurface">
-		沒有合適的表面讓你坐下,請試一試別處。
-	</notification>
-	<notification name="CantSitNoRoom">
-		這裡沒有空間讓你坐下,請試試另一處。
-	</notification>
-	<notification name="ClaimObjectFailedNoPermission">
-		收取物件失敗,因為你權限不足。
-	</notification>
-	<notification name="ClaimObjectFailedNoMoney">
-		收取物件失敗,因為你 L$ 金額不足。
-	</notification>
-	<notification name="CantDeedGroupLand">
-		無法讓渡群組所擁有的土地。
-	</notification>
-	<notification name="BuyObjectFailedNoMoney">
-		購買物件失敗,你 L$ 金額不足。
-	</notification>
-	<notification name="BuyInventoryFailedNoMoney">
-		購買收納區失敗,你 L$ 金額不足。
-	</notification>
-	<notification name="BuyPassFailedNoMoney">
-		你的 L$ 不足,無法購買此土地的通行權。
-	</notification>
-	<notification name="CantBuyPassTryAgain">
-		此時無法購買通行權。  請稍候再試一次。
-	</notification>
-	<notification name="CantCreateObjectParcelFull">
-		無法建立物件,\n地段滿載。
-	</notification>
-	<notification name="FailedPlacingObject">
-		無法將物件置於指定地點。  請再試一次。
-	</notification>
-	<notification name="CantCreateLandmarkForEvent">
-		無法為活動建立地標。
-	</notification>
-	<notification name="GodBeatsFreeze">
-		你擁有的神力解除了凍結!
-	</notification>
-	<notification name="SpecialPowersRequestFailedLogged">
-		要求特殊能力失敗。 該要求已載入記錄。
-	</notification>
-	<notification name="ExpireExplanation">
-		系統此時無法處理你的要求。 要求逾時,無法完成。
-	</notification>
-	<notification name="DieExplanation">
-		系統無法處理你的要求。
-	</notification>
-	<notification name="AddPrimitiveFailure">
-		金額不足,無法建立幾何元件。
-	</notification>
-	<notification name="RezObjectFailure">
-		金額不足,無法建立物件。
-	</notification>
-	<notification name="ResetHomePositionNotLegal">
-		已重設「我的家」位置,因為前一個位置不合法。
-	</notification>
-	<notification name="CantInviteRegionFull">
-		此刻你無法邀請任何人到你的位置,因為地區滿載。 請稍候再試一次。
-	</notification>
-	<notification name="CantSetHomeAtRegion">
-		此地區不許你在此設定「我的家」。
-	</notification>
-	<notification name="ListValidHomeLocations">
-		你只能在自己的土地或大陸資訊中心上設定「我的家」。
-	</notification>
-	<notification name="SetHomePosition">
-		我的家位置已定。
-	</notification>
-	<notification name="CantDerezInventoryError">
-		收納區出錯,無法收納物件。
-	</notification>
-	<notification name="CantCreateRequestedInv">
-		無法建立要求的收納區。
-	</notification>
-	<notification name="CantCreateRequestedInvFolder">
-		無法建立要求的收納區資料夾。
-	</notification>
-	<notification name="CantCreateInventory">
-		無法建立該收納區。
-	</notification>
-	<notification name="CantCreateLandmark">
-		無法建立地標。
-	</notification>
-	<notification name="CantCreateOutfit">
-		此時無法建立裝扮。 請過一分鐘後再試。
-	</notification>
-	<notification name="InventoryNotForSale">
-		收納區沒有待售。
-	</notification>
-	<notification name="CantFindInvItem">
-		找不到收納區物項。
-	</notification>
-	<notification name="CantFindObject">
-		找不到物件。
-	</notification>
-	<notification name="CantTransfterMoneyRegionDisabled">
-		此地區目前未啟用轉移金錢給物件的功能。
-	</notification>
-	<notification name="CantPayNoAgent">
-		無法決定付款給誰。
-	</notification>
-	<notification name="CantDonateToPublicObjects">
-		你無法將 L$ 送給公共物件。
-	</notification>
-	<notification name="InventoryCreationInWorldObjectFailed">
-		針對虛擬世界物件建立收納區失敗。
-	</notification>
-	<notification name="UserBalanceOrLandUsageError">
-		發生內部錯誤,我們無法如常更新你的瀏覽器。  你瀏覽器顯示的 L$ 餘額或擁有地段,可能和伺服器上的正確數額不一致。
-	</notification>
-	<notification name="LargePrimAgentIntersect">
-		無法建立和其他參與者發生交截的大型幾何元件。  請等其他參與者移開後再試。
-	</notification>
-	<notification name="PreferenceChatClearLog">
-		這動作將刪除先前交談的記錄,和所有記錄備份。
-		<usetemplate ignoretext="刪除先前交談記錄前,先向我確認。" name="okcancelignore" notext="取消" yestext="確定"/>
-	</notification>
-	<notification name="PreferenceChatDeleteTranscripts">
-		這將刪除所有先前交談的內容記錄。 過去交談歷史清單不受影響。 資料夾 [FOLDER] 所有副檔名 .txt 和 txt.backup 的檔案都將刪除。
-		<usetemplate ignoretext="刪除交談內容記錄前先向我確認。" name="okcancelignore" notext="取消" yestext="確定"/>
-	</notification>
-	<notification name="PreferenceChatPathChanged">
-		無法移動檔案。 已恢復前一個路徑。
-		<usetemplate ignoretext="無法移動檔案。 已恢復前一個路徑。" name="okignore" yestext="確定"/>
-	</notification>
 </notifications>
diff --git a/indra/newview/skins/default/xui/zh/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/zh/panel_avatar_list_item.xml
index e0a49a0addb..1c8b56b3d62 100644
--- a/indra/newview/skins/default/xui/zh/panel_avatar_list_item.xml
+++ b/indra/newview/skins/default/xui/zh/panel_avatar_list_item.xml
@@ -27,6 +27,5 @@
 	<icon name="permission_edit_mine_icon" tool_tip="這位朋友能編輯、刪除或取得你的物件"/>
 	<icon name="permission_map_icon" tool_tip="這位朋友能在地圖上找到你的位置"/>
 	<icon name="permission_online_icon" tool_tip="這位朋友當你上線能看到訊息"/>
-	<button name="info_btn" tool_tip="詳情"/>
 	<button name="profile_btn" tool_tip="察看檔案"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/zh/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/zh/panel_block_list_sidetray.xml
index 9f59bb32f81..1dfa024138b 100644
--- a/indra/newview/skins/default/xui/zh/panel_block_list_sidetray.xml
+++ b/indra/newview/skins/default/xui/zh/panel_block_list_sidetray.xml
@@ -1,11 +1,10 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="block_list_panel">
-	<panel label="bottom_panel" name="blocked_buttons_panel">
-		<filter_editor label="過濾器" name="blocked_filter_input"/>
-		<menu_button name="blocked_gear_btn" tool_tip="對所選的人或物件採取動作"/>
-		<menu_button name="view_btn" tool_tip="排序選項"/>
-		<menu_button name="plus_btn" tool_tip="挑選一位居民或物件,加以封鎖"/>
-		<button name="unblock_btn" tool_tip="將居民或物件由封鎖清單中移除"/>
-	</panel>
-	<block_list name="blocked" tool_tip="目前封鎖的居民清單"/>
+	<text name="title_text">
+		封鎖清單
+	</text>
+	<scroll_list name="blocked" tool_tip="目前封鎖的居民清單"/>
+	<button label="封鎖他人" name="Block resident..." tool_tip="挑選一位居民以進行封鎖"/>
+	<button label="依名稱封鎖物件" name="Block object by name..." tool_tip="依名稱挑選一個物件進行封鎖"/>
+	<button label="解除封鎖" name="Unblock" tool_tip="將居民或物件由封鎖清單中移除"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/zh/panel_conversation_list_item.xml b/indra/newview/skins/default/xui/zh/panel_conversation_list_item.xml
deleted file mode 100644
index 6524d416456..00000000000
--- a/indra/newview/skins/default/xui/zh/panel_conversation_list_item.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="conversation_list_item">
-	<layout_stack name="conversation_item_stack">
-		<layout_panel name="conversation_title_panel">
-			<text name="conversation_title" value="(載入中)"/>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/default/xui/zh/panel_conversation_log_list_item.xml b/indra/newview/skins/default/xui/zh/panel_conversation_log_list_item.xml
deleted file mode 100644
index 8446ce21309..00000000000
--- a/indra/newview/skins/default/xui/zh/panel_conversation_log_list_item.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="conversation_log_list_item">
-	<icon name="voice_session_icon" tool_tip="包含語音交談"/>
-	<icon name="unread_ims_icon" tool_tip="訊息在你登出期間傳來"/>
-	<button name="delete_btn" tool_tip="移除此項目"/>
-</panel>
diff --git a/indra/newview/skins/default/xui/zh/panel_group_list_item.xml b/indra/newview/skins/default/xui/zh/panel_group_list_item.xml
index fec4bb572ab..175293cdf7f 100644
--- a/indra/newview/skins/default/xui/zh/panel_group_list_item.xml
+++ b/indra/newview/skins/default/xui/zh/panel_group_list_item.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="group_list_item">
 	<text name="group_name" value="未知"/>
-	<button name="info_btn" tool_tip="詳情"/>
 	<button name="profile_btn" tool_tip="察看檔案"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/zh/panel_people.xml b/indra/newview/skins/default/xui/zh/panel_people.xml
index 5f7aca387a6..59ea7b70e2d 100644
--- a/indra/newview/skins/default/xui/zh/panel_people.xml
+++ b/indra/newview/skins/default/xui/zh/panel_people.xml
@@ -14,53 +14,81 @@
 	<string name="no_filtered_friends_msg">
 		找不到你要找的嗎? 請試試[secondlife:///app/search/people/[SEARCH_TERM] 搜尋]。
 	</string>
+	<string name="people_filter_label" value="人員過濾器"/>
+	<string name="groups_filter_label" value="群組過濾器"/>
 	<string name="no_filtered_groups_msg" value="找不到你要找的嗎? 請試試[secondlife:///app/search/groups/[SEARCH_TERM] 搜尋]。"/>
 	<string name="no_groups_msg" value="要尋找群組考慮加入嗎? 請試試[secondlife:///app/search/groups 搜尋]。"/>
 	<string name="MiniMapToolTipMsg" value="[REGION](雙擊以開啟地圖,按下 shift 鍵拖曳來平移)"/>
 	<string name="AltMiniMapToolTipMsg" value="[REGION](雙擊以瞬間傳送,按下 shift 鍵拖曳來平移)"/>
+	<filter_editor label="過濾器" name="filter_input"/>
 	<tab_container name="tabs">
 		<panel label="附近" name="nearby_panel">
-			<panel label="bottom_panel" name="nearby_buttons_panel">
-				<filter_editor label="人員過濾器" name="nearby_filter_input"/>
-				<button name="gear_btn" tool_tip="對選取的人採取動作"/>
-				<menu_button name="nearby_view_btn" tool_tip="檢視/排序的選項"/>
-				<button name="add_friend_btn" tool_tip="向某位居民發出交友邀請"/>
-				<dnd_button name="nearby_del_btn" tool_tip="將選取的人從朋友名單移除"/>
+			<panel label="bottom_panel" name="bottom_panel">
+				<menu_button name="nearby_view_sort_btn" tool_tip="選項"/>
+				<button name="add_friend_btn" tool_tip="添加所選的居民到你的朋友清單"/>
 			</panel>
 		</panel>
-		<panel label="朋友" name="friends_panel">
-			<panel label="bottom_panel" name="friends_buttons_panel">
-				<filter_editor label="人員過濾器" name="friends_filter_input"/>
-				<button name="gear_btn" tool_tip="對選取的人採取動作"/>
-				<menu_button name="friends_view_btn" tool_tip="檢視/排序的選項"/>
-				<button name="friends_add_btn" tool_tip="向某位居民發出交友邀請"/>
-				<dnd_button name="friends_del_btn" tool_tip="將選取的人從朋友名單移除"/>
-			</panel>
+		<panel label="我的朋友" name="friends_panel">
 			<accordion name="friends_accordion">
 				<accordion_tab name="tab_online" title="上線"/>
 				<accordion_tab name="tab_all" title="全部"/>
 			</accordion>
+			<panel label="bottom_panel" name="bottom_panel">
+				<layout_stack name="bottom_panel">
+					<layout_panel name="options_gear_btn_panel">
+						<menu_button name="friends_viewsort_btn" tool_tip="顯示額外選項"/>
+					</layout_panel>
+					<layout_panel name="add_btn_panel">
+						<button name="add_btn" tool_tip="向居民發出交友邀請"/>
+					</layout_panel>
+					<layout_panel name="trash_btn_panel">
+						<dnd_button name="del_btn" tool_tip="由你的朋友清單移除所選擇的人"/>
+					</layout_panel>
+				</layout_stack>
+			</panel>
 		</panel>
-		<panel label="群組" name="groups_panel">
-			<panel label="bottom_panel" name="groups_buttons_panel">
-				<filter_editor label="群組過濾器" name="groups_filter_input"/>
-				<menu_button name="groups_gear_btn" tool_tip="對所選群組採取動作"/>
-				<menu_button name="groups_view_btn" tool_tip="檢視/排序的選項"/>
-				<menu_button name="plus_btn" tool_tip="加入群組/創立新群組"/>
-				<dnd_button name="minus_btn" tool_tip="離開所選群組"/>
+		<panel label="我的群組" name="groups_panel">
+			<panel label="bottom_panel" name="bottom_panel">
+				<menu_button name="groups_viewsort_btn" tool_tip="選項"/>
+				<button name="plus_btn" tool_tip="加入群組/創立新群組"/>
+				<button name="activate_btn" tool_tip="啟用所選擇的群組"/>
 			</panel>
 		</panel>
 		<panel label="最近" name="recent_panel">
-			<panel label="bottom_panel" name="recent_buttons_panel">
-				<filter_editor label="人員過濾器" name="recent_filter_input"/>
-				<button name="gear_btn" tool_tip="對選取的人採取動作"/>
-				<menu_button name="recent_view_btn" tool_tip="檢視/排序的選項"/>
-				<button name="add_friend_btn" tool_tip="向某位居民發出交友邀請"/>
-				<dnd_button name="recent_del_btn" tool_tip="將選取的人從朋友名單移除"/>
+			<panel label="bottom_panel" name="bottom_panel">
+				<menu_button name="recent_viewsort_btn" tool_tip="選項"/>
+				<button name="add_friend_btn" tool_tip="添加所選的居民到你的朋友清單"/>
 			</panel>
 		</panel>
-		<panel label="已封鎖的" name="blocked_panel">
-			<panel label="被封鎖的居民與物件" name="panel_block_list_sidetray"/>
-		</panel>
 	</tab_container>
+	<panel name="button_bar">
+		<layout_stack name="bottom_bar_ls">
+			<layout_panel name="view_profile_btn_lp">
+				<button label="檔案" name="view_profile_btn" tool_tip="顯示圖片、群組與其他居民資訊"/>
+			</layout_panel>
+			<layout_panel name="im_btn_lp">
+				<button label="IM" name="im_btn" tool_tip="開啟即時訊息會話"/>
+			</layout_panel>
+			<layout_panel name="call_btn_lp">
+				<button label="通話" name="call_btn" tool_tip="和這位居民通話"/>
+			</layout_panel>
+			<layout_panel name="share_btn_lp">
+				<button label="分享" name="share_btn" tool_tip="分享一個收納區物品"/>
+			</layout_panel>
+			<layout_panel name="teleport_btn_lp">
+				<button label="瞬間傳送" name="teleport_btn" tool_tip="發出瞬間傳送邀請"/>
+			</layout_panel>
+		</layout_stack>
+		<layout_stack name="bottom_bar_ls1">
+			<layout_panel name="group_info_btn_lp">
+				<button label="群組檔案" name="group_info_btn" tool_tip="顯示群組資訊"/>
+			</layout_panel>
+			<layout_panel name="chat_btn_lp">
+				<button label="群組聊天" name="chat_btn" tool_tip="開啟聊天會話"/>
+			</layout_panel>
+			<layout_panel name="group_call_btn_lp">
+				<button label="群組通話" name="group_call_btn" tool_tip="與此群組進行通話"/>
+			</layout_panel>
+		</layout_stack>
+	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/zh/panel_preferences_chat.xml b/indra/newview/skins/default/xui/zh/panel_preferences_chat.xml
index e700e35516d..cf2f81d3139 100644
--- a/indra/newview/skins/default/xui/zh/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/zh/panel_preferences_chat.xml
@@ -1,86 +1,34 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="文字聊天" name="chat">
-	<panel>
-		<check_box initial_value="true" label="聊天時播放打字動作" name="play_typing_animation"/>
-		<check_box label="當我離線時將收到的 IM 訊息郵寄給我" name="send_im_to_email"/>
-		<check_box label="只有我的朋友和群組可以 IM 或與我通話。" name="voice_call_friends_only_check"/>
-		<text name="font_size">
-			字型尺寸:
-		</text>
-		<combo_box name="chat_font_size">
-			<item label="小" name="Small" value="0"/>
-			<item label="中" name="Medium" value="1"/>
-			<item label="大" name="Large" value="2"/>
-		</combo_box>
-		<check_box label="聊天泡泡" name="bubble_text_chat"/>
-	</panel>
-	<panel>
-		<text name="notifications">
-			通知
-		</text>
-		<text name="friend_ims">
-			朋友 IM:
-		</text>
-		<combo_box name="FriendIMOptions">
-			<item label="開啟交談視窗" name="OpenConversationsWindow" value="openconversations"/>
-			<item label="以突顯式視窗顯示訊息" name="PopUpMessage" value="toast"/>
-			<item label="Flash 工具列按鈕" name="FlashToolbarButton" value="flash"/>
-			<item label="ç„¡" name="None" value="ç„¡"/>
-		</combo_box>
-		<text name="non_friend_ims">
-			非朋友 IM:
-		</text>
-		<combo_box name="NonFriendIMOptions">
-			<item label="開啟交談視窗" name="OpenConversationsWindow" value="openconversations"/>
-			<item label="以突顯式視窗顯示訊息" name="PopUpMessage" value="toast"/>
-			<item label="Flash 工具列按鈕" name="FlashToolbarButton" value="flash"/>
-			<item label="ç„¡" name="None" value="ç„¡"/>
-		</combo_box>
-		<text name="conference_ims">
-			多方交談 IM:
-		</text>
-		<combo_box name="ConferenceIMOptions">
-			<item label="開啟交談視窗" name="OpenConversationsWindow" value="openconversations"/>
-			<item label="以突顯式視窗顯示訊息" name="PopUpMessage" value="toast"/>
-			<item label="Flash 工具列按鈕" name="FlashToolbarButton" value="flash"/>
-			<item label="ç„¡" name="None" value="ç„¡"/>
-		</combo_box>
-		<text name="group_chat">
-			群組聊天:
-		</text>
-		<combo_box name="GroupChatOptions">
-			<item label="開啟交談視窗" name="OpenConversationsWindow" value="openconversations"/>
-			<item label="以突顯式視窗顯示訊息" name="PopUpMessage" value="toast"/>
-			<item label="Flash 工具列按鈕" name="FlashToolbarButton" value="flash"/>
-			<item label="ç„¡" name="None" value="ç„¡"/>
-		</combo_box>
-		<text name="nearby_chat">
-			附近的聊天:
-		</text>
-		<combo_box name="NearbyChatOptions">
-			<item label="開啟交談視窗" name="OpenConversationsWindow" value="openconversations"/>
-			<item label="以突顯式視窗顯示訊息" name="PopUpMessage" value="toast"/>
-			<item label="Flash 工具列按鈕" name="FlashToolBarButton" value="flash"/>
-			<item label="ç„¡" name="None" value="ç„¡"/>
-		</combo_box>
-		<text name="notifications_alert">
-			若要暫時停止所有通知,請設定「溝通 &gt; 請勿打擾」。
-		</text>
-	</panel>
-	<panel>
-		<text name="play_sound">
-			播放聲音:
-		</text>
-		<check_box label="新交談" name="new_conversation"/>
-		<check_box label="語音通話來電" name="incoming_voice_call"/>
-		<check_box label="瞬間傳送邀請" name="teleport_offer"/>
-		<check_box label="收納物品贈送" name="inventory_offer"/>
-	</panel>
-	<panel>
-		<button label="清空記錄……" name="clear_log"/>
-		<button label="刪除交談內容記錄……" name="delete_transcripts"/>
-		<button label="瀏覽…" label_selected="瀏覽" name="log_path_button"/>
-	</panel>
+	<text name="font_size">
+		字型尺寸:
+	</text>
+	<radio_group name="chat_font_size">
+		<radio_item label="小" name="radio" value="0"/>
+		<radio_item label="中" name="radio2" value="1"/>
+		<radio_item label="大" name="radio3" value="2"/>
+	</radio_group>
+	<check_box initial_value="true" label="聊天時播放打字動作" name="play_typing_animation"/>
+	<check_box label="當我離線時將收到的 IM 訊息郵寄給我" name="send_im_to_email"/>
+	<check_box label="啟用純本文 IM 與聊天歷史紀錄" name="plain_text_chat_history"/>
+	<check_box label="聊天泡泡" name="bubble_text_chat"/>
+	<text name="show_ims_in_label">
+		顯示 IMs 於:
+	</text>
+	<text name="requires_restart_label">
+		(須重新啟動)
+	</text>
+	<radio_group name="chat_window" tool_tip="顯示你的即時訊息在分開的浮動視窗,或是使用很多頁籤的單一浮動視窗(須重新啟動)">
+		<radio_item label="分開視窗" name="radio" value="0"/>
+		<radio_item label="頁籤" name="radio2" value="1"/>
+	</radio_group>
+	<text name="disable_toast_label">
+		啟用傳入聊天的突顯示視窗:
+	</text>
+	<check_box label="群組聊天" name="EnableGroupChatPopups" tool_tip="當群組聊天訊息抵達時查看突顯式視窗"/>
+	<check_box label="IM 聊天" name="EnableIMChatPopups" tool_tip="當即時訊息抵達時查看突顯式視窗"/>
+	<spinner label="附近聊天內容提示框停駐時間:" name="nearby_toasts_lifetime"/>
+	<spinner label="附近聊天內容提示框消退時間:" name="nearby_toasts_fadingtime"/>
 	<button label="翻譯…" name="ok_btn"/>
 	<button label="自動取代…" name="autoreplace_showgui"/>
 	<button label="拼字檢查…" name="spellcheck_showgui"/>
diff --git a/indra/newview/skins/default/xui/zh/panel_preferences_general.xml b/indra/newview/skins/default/xui/zh/panel_preferences_general.xml
index 044edbed701..7e67a0d02d0 100644
--- a/indra/newview/skins/default/xui/zh/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/zh/panel_preferences_general.xml
@@ -68,9 +68,9 @@
 		<combo_box.item label="絕不" name="item4"/>
 	</combo_box>
 	<text name="text_box3">
-		「請勿打擾」預設回應:
+		忙碌模式回應:
 	</text>
-	<text_editor name="do_not_disturb_response">
+	<text_editor name="busy_response">
 		log_in_to_change
 	</text_editor>
 </panel>
diff --git a/indra/newview/skins/default/xui/zh/sidepanel_task_info.xml b/indra/newview/skins/default/xui/zh/sidepanel_task_info.xml
index 60f44a3d88f..982dde40105 100644
--- a/indra/newview/skins/default/xui/zh/sidepanel_task_info.xml
+++ b/indra/newview/skins/default/xui/zh/sidepanel_task_info.xml
@@ -72,7 +72,6 @@
 			<combo_box.item label="購買物件" name="Buyobject"/>
 			<combo_box.item label="支付物件" name="Payobject"/>
 			<combo_box.item label="打開" name="Open"/>
-			<combo_box.item label="縮放" name="Zoom"/>
 		</combo_box>
 		<panel name="perms_inv">
 			<text name="perm_modify">
diff --git a/indra/newview/skins/default/xui/zh/strings.xml b/indra/newview/skins/default/xui/zh/strings.xml
index 31713ac2816..7e17ed68647 100644
--- a/indra/newview/skins/default/xui/zh/strings.xml
+++ b/indra/newview/skins/default/xui/zh/strings.xml
@@ -614,8 +614,8 @@ http://secondlife.com/viewer-access-faq
 	<string name="AvatarAway">
 		離開
 	</string>
-	<string name="AvatarDoNotDisturb">
-		請勿打擾
+	<string name="AvatarBusy">
+		忙碌
 	</string>
 	<string name="AvatarMuted">
 		封鎖的
@@ -851,12 +851,6 @@ http://secondlife.com/viewer-access-faq
 	<string name="ST_NO_JOINT">
 		找不到 ROOT 或旋軸。
 	</string>
-	<string name="NearbyChatTitle">
-		附近的聊天中
-	</string>
-	<string name="NearbyChatLabel">
-		(附近的聊天)
-	</string>
 	<string name="whisper">
 		低語:
 	</string>
@@ -920,15 +914,12 @@ http://secondlife.com/viewer-access-faq
 	<string name="ControlYourCamera">
 		控制你的攝影機
 	</string>
-	<string name="NotConnected">
-		未聯接
-	</string>
-	<string name="AgentNameSubst">
-		(你)
-	</string>
 	<string name="TeleportYourAgent">
 		瞬間傳送你本人
 	</string>
+	<string name="NotConnected">
+		未聯接
+	</string>
 	<string name="SIM_ACCESS_PG">
 		一般普級
 	</string>
@@ -1010,6 +1001,18 @@ http://secondlife.com/viewer-access-faq
 	<string name="dictionary_files">
 		å­—å…¸
 	</string>
+	<string name="AvatarSetNotAway">
+		非離開
+	</string>
+	<string name="AvatarSetAway">
+		離開
+	</string>
+	<string name="AvatarSetNotBusy">
+		非忙碌
+	</string>
+	<string name="AvatarSetBusy">
+		忙碌
+	</string>
 	<string name="shape">
 		體形
 	</string>
@@ -1978,8 +1981,8 @@ http://secondlife.com/viewer-access-faq
 	<string name="PanelContentsNewScript">
 		新腳本
 	</string>
-	<string name="DoNotDisturbModeResponseDefault">
-		這居民處於「請勿打擾」狀態,不會立即看到你的訊息。
+	<string name="BusyModeResponseDefault">
+		你傳訊過去的居民目前處於忙碌狀態,這意味著他要求不被打擾。  你的訊息仍將留存並顯示於對方的 IM 面板上供稍後查閱。
 	</string>
 	<string name="MuteByName">
 		(按名稱)
@@ -2092,6 +2095,9 @@ http://secondlife.com/viewer-access-faq
 	<string name="GroupMoneyDate">
 		[weekday,datetime,utc] [mth,datetime,utc] [day,datetime,utc], [year,datetime,utc]
 	</string>
+	<string name="ViewerObjectContents">
+		內容
+	</string>
 	<string name="AcquiredItems">
 		取得物品
 	</string>
@@ -3863,7 +3869,7 @@ http://secondlife.com/viewer-access-faq
 		一般普級地區
 	</string>
 	<string name="LocationCtrlSeeAVsTooltip">
-		這地段外的其他化身,看不見也聽不到位於地段裡的化身
+		可看到本地段外的化身,並與之交談
 	</string>
 	<string name="LocationCtrlPathfindingDirtyTooltip">
 		地區重新產出之前,可移動物件可能無法正常運作。
@@ -3940,12 +3946,6 @@ http://secondlife.com/viewer-access-faq
 	<string name="IM_unblock_only_groups_friends">
 		要察看這訊息,你必須到「偏好設定 / 隱私」,取消勾選「只有我的朋友和群組可以 IM 或與我通話」。
 	</string>
-	<string name="OnlineStatus">
-		上線
-	</string>
-	<string name="OfflineStatus">
-		離線
-	</string>
 	<string name="answered_call">
 		你的通話已經接通
 	</string>
@@ -3955,9 +3955,6 @@ http://secondlife.com/viewer-access-faq
 	<string name="you_joined_call">
 		你發起了語音通話
 	</string>
-	<string name="you_auto_rejected_call-im">
-		因為處於「請勿打擾」模式,你已自動拒聽這通語音來電。
-	</string>
 	<string name="name_started_call">
 		[NAME] 發起了語音通話
 	</string>
@@ -3974,7 +3971,7 @@ http://secondlife.com/viewer-access-faq
 		聯接中...
 	</string>
 	<string name="conference-title">
-		多人聊天
+		臨時多方通話
 	</string>
 	<string name="conference-title-incoming">
 		和 [AGENT_NAME] 多方通話
@@ -4866,9 +4863,6 @@ http://secondlife.com/viewer-access-faq
 	<string name="Command_Chat_Label">
 		聊天
 	</string>
-	<string name="Command_Conversations_Label">
-		交談
-	</string>
 	<string name="Command_Compass_Label">
 		羅盤
 	</string>
@@ -4944,9 +4938,6 @@ http://secondlife.com/viewer-access-faq
 	<string name="Command_Chat_Tooltip">
 		透過文字和附近人們聊天
 	</string>
-	<string name="Command_Conversations_Tooltip">
-		和所有人交談
-	</string>
 	<string name="Command_Compass_Tooltip">
 		指南針
 	</string>
@@ -5076,13 +5067,4 @@ http://secondlife.com/viewer-access-faq
 	<string name="UserDictionary">
 		[User]
 	</string>
-	<string name="logging_calls_disabled_log_empty">
-		交談未留記錄。 若想開始留記錄,請到「偏好設定 &gt; 聊天」,選擇「儲存:只留歷史記錄」或「儲存:歷史記錄兼交談內容」。
-	</string>
-	<string name="logging_calls_disabled_log_not_empty">
-		將不再為交談留記錄。 若想恢復留存記錄,請到「偏好設定 &gt; 聊天」,選擇「儲存:只留歷史記錄」或「儲存:歷史記錄兼交談內容」。
-	</string>
-	<string name="logging_calls_enabled_log_empty">
-		目前沒有交談記錄。 在你聯絡某人或某人聯絡你之後,這裡將留存記錄。
-	</string>
 </strings>
-- 
GitLab


From 774277e9cf3b6b55c7aaaa9dadfe2ef2ddb0b0c2 Mon Sep 17 00:00:00 2001
From: eli <none@none>
Date: Wed, 24 Apr 2013 13:56:53 -0700
Subject: [PATCH 435/436] FIX INTL-114 translation for 9 languages of major
 update from CHUI (based on latest merge with viewer-development)

---
 .../xui/de/floater_conversation_log.xml       |   8 +
 .../xui/de/floater_conversation_preview.xml   |   7 +
 .../default/xui/de/floater_im_container.xml   |  29 +-
 .../default/xui/de/floater_im_session.xml     |  61 +-
 .../default/xui/de/floater_incoming_call.xml  |  10 +-
 .../xui/de/floater_pathfinding_console.xml    |   2 +-
 .../default/xui/de/floater_texture_ctrl.xml   |   2 +-
 .../xui/de/floater_voice_chat_volume.xml      |   4 +
 .../default/xui/de/floater_voice_effect.xml   |   2 +-
 .../default/xui/de/floater_voice_volume.xml   |   8 +
 .../skins/default/xui/de/menu_cof_gear.xml    |   6 +-
 .../default/xui/de/menu_conversation.xml      |  31 +
 .../xui/de/menu_conversation_log_gear.xml     |  15 +
 .../xui/de/menu_conversation_log_view.xml     |   7 +
 .../default/xui/de/menu_im_conversation.xml   |  15 +
 .../xui/de/menu_im_session_showmodes.xml      |   7 +
 .../skins/default/xui/de/menu_object_icon.xml |   2 +
 .../skins/default/xui/de/menu_outfit_gear.xml |   2 +
 .../default/xui/de/menu_participant_view.xml  |  13 +
 .../xui/de/menu_people_blocked_gear.xml       |   5 +
 .../xui/de/menu_people_blocked_plus.xml       |   5 +
 .../xui/de/menu_people_blocked_view.xml       |   5 +
 .../xui/de/menu_people_friends_view.xml       |   8 +
 .../default/xui/de/menu_people_groups.xml     |   2 +-
 .../xui/de/menu_people_groups_view.xml        |   4 +
 .../default/xui/de/menu_people_nearby.xml     |  23 +-
 .../xui/de/menu_people_nearby_multiselect.xml |  14 +-
 .../xui/de/menu_people_nearby_view.xml        |   8 +
 .../xui/de/menu_people_recent_view.xml        |   6 +
 .../skins/default/xui/de/menu_url_agent.xml   |   4 +-
 .../default/xui/de/menu_url_objectim.xml      |   2 +-
 .../skins/default/xui/de/menu_viewer.xml      |  37 +-
 .../skins/default/xui/de/notifications.xml    | 690 ++++++++++++++++-
 .../default/xui/de/panel_avatar_list_item.xml |   1 +
 .../xui/de/panel_block_list_sidetray.xml      |  15 +-
 .../xui/de/panel_conversation_list_item.xml   |   8 +
 .../de/panel_conversation_log_list_item.xml   |   6 +
 .../default/xui/de/panel_group_list_item.xml  |   1 +
 .../skins/default/xui/de/panel_people.xml     |  88 +--
 .../default/xui/de/panel_preferences_chat.xml | 110 ++-
 .../xui/de/panel_preferences_general.xml      |   4 +-
 .../default/xui/de/sidepanel_task_info.xml    |   1 +
 .../newview/skins/default/xui/de/strings.xml  |  68 +-
 .../xui/es/floater_conversation_log.xml       |   8 +
 .../xui/es/floater_conversation_preview.xml   |   7 +
 .../default/xui/es/floater_im_container.xml   |  29 +-
 .../default/xui/es/floater_im_session.xml     |  61 +-
 .../default/xui/es/floater_incoming_call.xml  |  10 +-
 .../xui/es/floater_pathfinding_console.xml    |   2 +-
 .../default/xui/es/floater_texture_ctrl.xml   |   2 +-
 .../xui/es/floater_voice_chat_volume.xml      |   4 +
 .../default/xui/es/floater_voice_effect.xml   |   2 +-
 .../default/xui/es/floater_voice_volume.xml   |   8 +
 .../skins/default/xui/es/menu_cof_gear.xml    |   6 +-
 .../default/xui/es/menu_conversation.xml      |  31 +
 .../xui/es/menu_conversation_log_gear.xml     |  15 +
 .../xui/es/menu_conversation_log_view.xml     |   7 +
 .../default/xui/es/menu_im_conversation.xml   |  15 +
 .../xui/es/menu_im_session_showmodes.xml      |   7 +
 .../skins/default/xui/es/menu_object_icon.xml |   2 +
 .../skins/default/xui/es/menu_outfit_gear.xml |   2 +
 .../default/xui/es/menu_participant_view.xml  |  13 +
 .../xui/es/menu_people_blocked_gear.xml       |   5 +
 .../xui/es/menu_people_blocked_plus.xml       |   5 +
 .../xui/es/menu_people_blocked_view.xml       |   5 +
 .../xui/es/menu_people_friends_view.xml       |   8 +
 .../default/xui/es/menu_people_groups.xml     |   2 +-
 .../xui/es/menu_people_groups_view.xml        |   4 +
 .../default/xui/es/menu_people_nearby.xml     |  23 +-
 .../xui/es/menu_people_nearby_multiselect.xml |  14 +-
 .../xui/es/menu_people_nearby_view.xml        |   8 +
 .../xui/es/menu_people_recent_view.xml        |   6 +
 .../skins/default/xui/es/menu_url_agent.xml   |   4 +-
 .../default/xui/es/menu_url_objectim.xml      |   2 +-
 .../skins/default/xui/es/menu_viewer.xml      |  35 +-
 .../skins/default/xui/es/notifications.xml    | 692 +++++++++++++++++-
 .../default/xui/es/panel_avatar_list_item.xml |   1 +
 .../xui/es/panel_block_list_sidetray.xml      |  15 +-
 .../xui/es/panel_conversation_list_item.xml   |   8 +
 .../es/panel_conversation_log_list_item.xml   |   6 +
 .../default/xui/es/panel_group_list_item.xml  |   1 +
 .../skins/default/xui/es/panel_people.xml     |  88 +--
 .../default/xui/es/panel_preferences_chat.xml | 110 ++-
 .../xui/es/panel_preferences_general.xml      |   5 +-
 .../default/xui/es/sidepanel_task_info.xml    |   1 +
 .../newview/skins/default/xui/es/strings.xml  |  63 +-
 .../xui/fr/floater_conversation_log.xml       |   8 +
 .../xui/fr/floater_conversation_preview.xml   |   7 +
 .../default/xui/fr/floater_im_container.xml   |  29 +-
 .../default/xui/fr/floater_im_session.xml     |  61 +-
 .../default/xui/fr/floater_incoming_call.xml  |  10 +-
 .../xui/fr/floater_pathfinding_console.xml    |   2 +-
 .../default/xui/fr/floater_texture_ctrl.xml   |   2 +-
 .../xui/fr/floater_voice_chat_volume.xml      |   4 +
 .../default/xui/fr/floater_voice_effect.xml   |   2 +-
 .../default/xui/fr/floater_voice_volume.xml   |   8 +
 .../skins/default/xui/fr/menu_cof_gear.xml    |   6 +-
 .../default/xui/fr/menu_conversation.xml      |  31 +
 .../xui/fr/menu_conversation_log_gear.xml     |  15 +
 .../xui/fr/menu_conversation_log_view.xml     |   7 +
 .../default/xui/fr/menu_im_conversation.xml   |  15 +
 .../xui/fr/menu_im_session_showmodes.xml      |   7 +
 .../skins/default/xui/fr/menu_object_icon.xml |   2 +
 .../skins/default/xui/fr/menu_outfit_gear.xml |   2 +
 .../default/xui/fr/menu_participant_view.xml  |  13 +
 .../xui/fr/menu_people_blocked_gear.xml       |   5 +
 .../xui/fr/menu_people_blocked_plus.xml       |   5 +
 .../xui/fr/menu_people_blocked_view.xml       |   5 +
 .../xui/fr/menu_people_friends_view.xml       |   8 +
 .../default/xui/fr/menu_people_groups.xml     |   2 +-
 .../xui/fr/menu_people_groups_view.xml        |   4 +
 .../default/xui/fr/menu_people_nearby.xml     |  23 +-
 .../xui/fr/menu_people_nearby_multiselect.xml |  14 +-
 .../xui/fr/menu_people_nearby_view.xml        |   8 +
 .../xui/fr/menu_people_recent_view.xml        |   6 +
 .../skins/default/xui/fr/menu_url_agent.xml   |   4 +-
 .../default/xui/fr/menu_url_objectim.xml      |   2 +-
 .../skins/default/xui/fr/menu_viewer.xml      |  37 +-
 .../skins/default/xui/fr/notifications.xml    | 690 ++++++++++++++++-
 .../default/xui/fr/panel_avatar_list_item.xml |   1 +
 .../xui/fr/panel_block_list_sidetray.xml      |  15 +-
 .../xui/fr/panel_conversation_list_item.xml   |   8 +
 .../fr/panel_conversation_log_list_item.xml   |   6 +
 .../default/xui/fr/panel_group_list_item.xml  |   1 +
 .../skins/default/xui/fr/panel_people.xml     |  88 +--
 .../default/xui/fr/panel_preferences_chat.xml | 110 ++-
 .../xui/fr/panel_preferences_general.xml      |   4 +-
 .../default/xui/fr/sidepanel_task_info.xml    |   1 +
 .../newview/skins/default/xui/fr/strings.xml  |  68 +-
 .../xui/it/floater_conversation_log.xml       |   8 +
 .../xui/it/floater_conversation_preview.xml   |   7 +
 .../default/xui/it/floater_im_container.xml   |  29 +-
 .../default/xui/it/floater_im_session.xml     |  61 +-
 .../default/xui/it/floater_incoming_call.xml  |  10 +-
 .../xui/it/floater_pathfinding_console.xml    |   2 +-
 .../default/xui/it/floater_texture_ctrl.xml   |   2 +-
 .../xui/it/floater_voice_chat_volume.xml      |   4 +
 .../default/xui/it/floater_voice_effect.xml   |   2 +-
 .../default/xui/it/floater_voice_volume.xml   |   8 +
 .../skins/default/xui/it/menu_cof_gear.xml    |   6 +-
 .../default/xui/it/menu_conversation.xml      |  31 +
 .../xui/it/menu_conversation_log_gear.xml     |  15 +
 .../xui/it/menu_conversation_log_view.xml     |   7 +
 .../default/xui/it/menu_im_conversation.xml   |  15 +
 .../xui/it/menu_im_session_showmodes.xml      |   7 +
 .../skins/default/xui/it/menu_object_icon.xml |   2 +
 .../skins/default/xui/it/menu_outfit_gear.xml |   2 +
 .../default/xui/it/menu_participant_view.xml  |  13 +
 .../xui/it/menu_people_blocked_gear.xml       |   5 +
 .../xui/it/menu_people_blocked_plus.xml       |   5 +
 .../xui/it/menu_people_blocked_view.xml       |   5 +
 .../xui/it/menu_people_friends_view.xml       |   8 +
 .../default/xui/it/menu_people_groups.xml     |   2 +-
 .../xui/it/menu_people_groups_view.xml        |   4 +
 .../default/xui/it/menu_people_nearby.xml     |  23 +-
 .../xui/it/menu_people_nearby_multiselect.xml |  14 +-
 .../xui/it/menu_people_nearby_view.xml        |   8 +
 .../xui/it/menu_people_recent_view.xml        |   6 +
 .../skins/default/xui/it/menu_url_agent.xml   |   4 +-
 .../default/xui/it/menu_url_objectim.xml      |   2 +-
 .../skins/default/xui/it/menu_viewer.xml      |  37 +-
 .../skins/default/xui/it/notifications.xml    | 692 +++++++++++++++++-
 .../default/xui/it/panel_avatar_list_item.xml |   1 +
 .../xui/it/panel_block_list_sidetray.xml      |  15 +-
 .../xui/it/panel_conversation_list_item.xml   |   8 +
 .../it/panel_conversation_log_list_item.xml   |   6 +
 .../default/xui/it/panel_group_list_item.xml  |   1 +
 .../skins/default/xui/it/panel_people.xml     |  88 +--
 .../default/xui/it/panel_preferences_chat.xml | 110 ++-
 .../xui/it/panel_preferences_general.xml      |   5 +-
 .../default/xui/it/sidepanel_task_info.xml    |   1 +
 .../newview/skins/default/xui/it/strings.xml  |  63 +-
 .../xui/ja/floater_conversation_log.xml       |   8 +
 .../xui/ja/floater_conversation_preview.xml   |   7 +
 .../default/xui/ja/floater_im_container.xml   |  29 +-
 .../default/xui/ja/floater_im_session.xml     |  61 +-
 .../default/xui/ja/floater_incoming_call.xml  |  10 +-
 .../xui/ja/floater_pathfinding_console.xml    |   2 +-
 .../default/xui/ja/floater_texture_ctrl.xml   |   2 +-
 .../xui/ja/floater_voice_chat_volume.xml      |   4 +
 .../default/xui/ja/floater_voice_effect.xml   |   2 +-
 .../default/xui/ja/floater_voice_volume.xml   |   8 +
 .../skins/default/xui/ja/menu_cof_gear.xml    |   6 +-
 .../default/xui/ja/menu_conversation.xml      |  31 +
 .../xui/ja/menu_conversation_log_gear.xml     |  15 +
 .../xui/ja/menu_conversation_log_view.xml     |   7 +
 .../default/xui/ja/menu_im_conversation.xml   |  15 +
 .../xui/ja/menu_im_session_showmodes.xml      |   7 +
 .../skins/default/xui/ja/menu_object_icon.xml |   2 +
 .../skins/default/xui/ja/menu_outfit_gear.xml |   2 +
 .../default/xui/ja/menu_participant_view.xml  |  13 +
 .../xui/ja/menu_people_blocked_gear.xml       |   5 +
 .../xui/ja/menu_people_blocked_plus.xml       |   5 +
 .../xui/ja/menu_people_blocked_view.xml       |   5 +
 .../xui/ja/menu_people_friends_view.xml       |   8 +
 .../default/xui/ja/menu_people_groups.xml     |   2 +-
 .../xui/ja/menu_people_groups_view.xml        |   4 +
 .../default/xui/ja/menu_people_nearby.xml     |  23 +-
 .../xui/ja/menu_people_nearby_multiselect.xml |  14 +-
 .../xui/ja/menu_people_nearby_view.xml        |   8 +
 .../xui/ja/menu_people_recent_view.xml        |   6 +
 .../skins/default/xui/ja/menu_url_agent.xml   |   4 +-
 .../default/xui/ja/menu_url_objectim.xml      |   2 +-
 .../skins/default/xui/ja/menu_viewer.xml      |  37 +-
 .../skins/default/xui/ja/notifications.xml    | 686 ++++++++++++++++-
 .../default/xui/ja/panel_avatar_list_item.xml |   1 +
 .../xui/ja/panel_block_list_sidetray.xml      |  15 +-
 .../xui/ja/panel_conversation_list_item.xml   |   8 +
 .../ja/panel_conversation_log_list_item.xml   |   6 +
 .../default/xui/ja/panel_group_list_item.xml  |   1 +
 .../skins/default/xui/ja/panel_people.xml     |  90 +--
 .../default/xui/ja/panel_preferences_chat.xml | 110 ++-
 .../xui/ja/panel_preferences_general.xml      |   4 +-
 .../default/xui/ja/sidepanel_task_info.xml    |   1 +
 .../newview/skins/default/xui/ja/strings.xml  |  68 +-
 .../xui/pt/floater_conversation_log.xml       |   8 +
 .../xui/pt/floater_conversation_preview.xml   |   7 +
 .../default/xui/pt/floater_im_container.xml   |  29 +-
 .../default/xui/pt/floater_im_session.xml     |  61 +-
 .../default/xui/pt/floater_incoming_call.xml  |   8 +-
 .../xui/pt/floater_pathfinding_console.xml    |   2 +-
 .../default/xui/pt/floater_texture_ctrl.xml   |   2 +-
 .../xui/pt/floater_voice_chat_volume.xml      |   4 +
 .../default/xui/pt/floater_voice_effect.xml   |   2 +-
 .../default/xui/pt/floater_voice_volume.xml   |   8 +
 .../skins/default/xui/pt/menu_cof_gear.xml    |   6 +-
 .../default/xui/pt/menu_conversation.xml      |  31 +
 .../xui/pt/menu_conversation_log_gear.xml     |  15 +
 .../xui/pt/menu_conversation_log_view.xml     |   7 +
 .../default/xui/pt/menu_im_conversation.xml   |  15 +
 .../xui/pt/menu_im_session_showmodes.xml      |   7 +
 .../skins/default/xui/pt/menu_object_icon.xml |   2 +
 .../skins/default/xui/pt/menu_outfit_gear.xml |   2 +
 .../default/xui/pt/menu_participant_view.xml  |  13 +
 .../xui/pt/menu_people_blocked_gear.xml       |   5 +
 .../xui/pt/menu_people_blocked_plus.xml       |   5 +
 .../xui/pt/menu_people_blocked_view.xml       |   5 +
 .../xui/pt/menu_people_friends_view.xml       |   8 +
 .../default/xui/pt/menu_people_groups.xml     |   2 +-
 .../xui/pt/menu_people_groups_view.xml        |   4 +
 .../default/xui/pt/menu_people_nearby.xml     |  23 +-
 .../xui/pt/menu_people_nearby_multiselect.xml |  14 +-
 .../xui/pt/menu_people_nearby_view.xml        |   8 +
 .../xui/pt/menu_people_recent_view.xml        |   6 +
 .../skins/default/xui/pt/menu_url_agent.xml   |   4 +-
 .../default/xui/pt/menu_url_objectim.xml      |   2 +-
 .../skins/default/xui/pt/menu_viewer.xml      |  37 +-
 .../skins/default/xui/pt/notifications.xml    | 690 ++++++++++++++++-
 .../default/xui/pt/panel_avatar_list_item.xml |   1 +
 .../xui/pt/panel_block_list_sidetray.xml      |  15 +-
 .../xui/pt/panel_conversation_list_item.xml   |   8 +
 .../pt/panel_conversation_log_list_item.xml   |   6 +
 .../default/xui/pt/panel_group_list_item.xml  |   1 +
 .../skins/default/xui/pt/panel_people.xml     |  88 +--
 .../default/xui/pt/panel_preferences_chat.xml | 110 ++-
 .../xui/pt/panel_preferences_general.xml      |   5 +-
 .../default/xui/pt/sidepanel_task_info.xml    |   1 +
 .../newview/skins/default/xui/pt/strings.xml  |  63 +-
 .../xui/ru/floater_conversation_log.xml       |   8 +
 .../xui/ru/floater_conversation_preview.xml   |   7 +
 .../default/xui/ru/floater_im_container.xml   |  29 +-
 .../default/xui/ru/floater_im_session.xml     |  61 +-
 .../default/xui/ru/floater_incoming_call.xml  |  10 +-
 .../xui/ru/floater_pathfinding_console.xml    |   2 +-
 .../default/xui/ru/floater_texture_ctrl.xml   |   2 +-
 .../xui/ru/floater_voice_chat_volume.xml      |   4 +
 .../default/xui/ru/floater_voice_effect.xml   |   2 +-
 .../default/xui/ru/floater_voice_volume.xml   |   8 +
 .../skins/default/xui/ru/menu_cof_gear.xml    |   2 +-
 .../default/xui/ru/menu_conversation.xml      |  31 +
 .../xui/ru/menu_conversation_log_gear.xml     |  15 +
 .../xui/ru/menu_conversation_log_view.xml     |   7 +
 .../default/xui/ru/menu_im_conversation.xml   |  15 +
 .../xui/ru/menu_im_session_showmodes.xml      |   7 +
 .../skins/default/xui/ru/menu_object_icon.xml |   2 +
 .../skins/default/xui/ru/menu_outfit_gear.xml |   2 +
 .../default/xui/ru/menu_participant_view.xml  |  13 +
 .../xui/ru/menu_people_blocked_gear.xml       |   5 +
 .../xui/ru/menu_people_blocked_plus.xml       |   5 +
 .../xui/ru/menu_people_blocked_view.xml       |   5 +
 .../xui/ru/menu_people_friends_view.xml       |   8 +
 .../default/xui/ru/menu_people_groups.xml     |   2 +-
 .../xui/ru/menu_people_groups_view.xml        |   4 +
 .../default/xui/ru/menu_people_nearby.xml     |  23 +-
 .../xui/ru/menu_people_nearby_multiselect.xml |  14 +-
 .../xui/ru/menu_people_nearby_view.xml        |   8 +
 .../xui/ru/menu_people_recent_view.xml        |   6 +
 .../skins/default/xui/ru/menu_url_agent.xml   |   4 +-
 .../default/xui/ru/menu_url_objectim.xml      |   2 +-
 .../skins/default/xui/ru/menu_viewer.xml      |  37 +-
 .../skins/default/xui/ru/notifications.xml    | 689 ++++++++++++++++-
 .../default/xui/ru/panel_avatar_list_item.xml |   1 +
 .../xui/ru/panel_block_list_sidetray.xml      |  15 +-
 .../xui/ru/panel_conversation_list_item.xml   |   8 +
 .../ru/panel_conversation_log_list_item.xml   |   6 +
 .../default/xui/ru/panel_group_list_item.xml  |   1 +
 .../skins/default/xui/ru/panel_people.xml     |  88 +--
 .../default/xui/ru/panel_preferences_chat.xml | 110 ++-
 .../xui/ru/panel_preferences_general.xml      |   4 +-
 .../default/xui/ru/sidepanel_task_info.xml    |   1 +
 .../newview/skins/default/xui/ru/strings.xml  |  66 +-
 .../xui/tr/floater_conversation_log.xml       |   8 +
 .../xui/tr/floater_conversation_preview.xml   |   7 +
 .../default/xui/tr/floater_im_container.xml   |  29 +-
 .../default/xui/tr/floater_im_session.xml     |  61 +-
 .../default/xui/tr/floater_incoming_call.xml  |  10 +-
 .../xui/tr/floater_pathfinding_console.xml    |   2 +-
 .../default/xui/tr/floater_texture_ctrl.xml   |   2 +-
 .../xui/tr/floater_voice_chat_volume.xml      |   4 +
 .../default/xui/tr/floater_voice_effect.xml   |   2 +-
 .../default/xui/tr/floater_voice_volume.xml   |   8 +
 .../skins/default/xui/tr/menu_cof_gear.xml    |   2 +-
 .../default/xui/tr/menu_conversation.xml      |  31 +
 .../xui/tr/menu_conversation_log_gear.xml     |  15 +
 .../xui/tr/menu_conversation_log_view.xml     |   7 +
 .../default/xui/tr/menu_im_conversation.xml   |  15 +
 .../xui/tr/menu_im_session_showmodes.xml      |   7 +
 .../skins/default/xui/tr/menu_object_icon.xml |   2 +
 .../skins/default/xui/tr/menu_outfit_gear.xml |   2 +
 .../default/xui/tr/menu_participant_view.xml  |  13 +
 .../xui/tr/menu_people_blocked_gear.xml       |   5 +
 .../xui/tr/menu_people_blocked_plus.xml       |   5 +
 .../xui/tr/menu_people_blocked_view.xml       |   5 +
 .../xui/tr/menu_people_friends_view.xml       |   8 +
 .../default/xui/tr/menu_people_groups.xml     |   2 +-
 .../xui/tr/menu_people_groups_view.xml        |   4 +
 .../default/xui/tr/menu_people_nearby.xml     |  23 +-
 .../xui/tr/menu_people_nearby_multiselect.xml |  14 +-
 .../xui/tr/menu_people_nearby_view.xml        |   8 +
 .../xui/tr/menu_people_recent_view.xml        |   6 +
 .../skins/default/xui/tr/menu_url_agent.xml   |   4 +-
 .../default/xui/tr/menu_url_objectim.xml      |   2 +-
 .../skins/default/xui/tr/menu_viewer.xml      |  37 +-
 .../skins/default/xui/tr/notifications.xml    | 683 ++++++++++++++++-
 .../default/xui/tr/panel_avatar_list_item.xml |   1 +
 .../xui/tr/panel_block_list_sidetray.xml      |  15 +-
 .../xui/tr/panel_conversation_list_item.xml   |   8 +
 .../tr/panel_conversation_log_list_item.xml   |   6 +
 .../default/xui/tr/panel_group_list_item.xml  |   1 +
 .../skins/default/xui/tr/panel_people.xml     |  88 +--
 .../default/xui/tr/panel_preferences_chat.xml | 110 ++-
 .../xui/tr/panel_preferences_general.xml      |   4 +-
 .../default/xui/tr/sidepanel_task_info.xml    |   1 +
 .../newview/skins/default/xui/tr/strings.xml  |  68 +-
 .../xui/zh/floater_conversation_log.xml       |   8 +
 .../xui/zh/floater_conversation_preview.xml   |   7 +
 .../default/xui/zh/floater_im_container.xml   |  29 +-
 .../default/xui/zh/floater_im_session.xml     |  61 +-
 .../default/xui/zh/floater_incoming_call.xml  |   8 +-
 .../xui/zh/floater_pathfinding_console.xml    |   2 +-
 .../default/xui/zh/floater_texture_ctrl.xml   |   2 +-
 .../xui/zh/floater_voice_chat_volume.xml      |   4 +
 .../default/xui/zh/floater_voice_effect.xml   |   2 +-
 .../default/xui/zh/floater_voice_volume.xml   |   8 +
 .../skins/default/xui/zh/menu_cof_gear.xml    |   2 +-
 .../default/xui/zh/menu_conversation.xml      |  31 +
 .../xui/zh/menu_conversation_log_gear.xml     |  15 +
 .../xui/zh/menu_conversation_log_view.xml     |   7 +
 .../default/xui/zh/menu_im_conversation.xml   |  15 +
 .../xui/zh/menu_im_session_showmodes.xml      |   7 +
 .../skins/default/xui/zh/menu_object_icon.xml |   2 +
 .../skins/default/xui/zh/menu_outfit_gear.xml |   2 +
 .../default/xui/zh/menu_participant_view.xml  |  13 +
 .../xui/zh/menu_people_blocked_gear.xml       |   5 +
 .../xui/zh/menu_people_blocked_plus.xml       |   5 +
 .../xui/zh/menu_people_blocked_view.xml       |   5 +
 .../xui/zh/menu_people_friends_view.xml       |   8 +
 .../default/xui/zh/menu_people_groups.xml     |   2 +-
 .../xui/zh/menu_people_groups_view.xml        |   4 +
 .../default/xui/zh/menu_people_nearby.xml     |  23 +-
 .../xui/zh/menu_people_nearby_multiselect.xml |  14 +-
 .../xui/zh/menu_people_nearby_view.xml        |   8 +
 .../xui/zh/menu_people_recent_view.xml        |   6 +
 .../skins/default/xui/zh/menu_url_agent.xml   |   4 +-
 .../default/xui/zh/menu_url_objectim.xml      |   2 +-
 .../skins/default/xui/zh/menu_viewer.xml      |  37 +-
 .../skins/default/xui/zh/notifications.xml    | 690 ++++++++++++++++-
 .../default/xui/zh/panel_avatar_list_item.xml |   1 +
 .../xui/zh/panel_block_list_sidetray.xml      |  15 +-
 .../xui/zh/panel_conversation_list_item.xml   |   8 +
 .../zh/panel_conversation_log_list_item.xml   |   6 +
 .../default/xui/zh/panel_group_list_item.xml  |   1 +
 .../skins/default/xui/zh/panel_people.xml     |  88 +--
 .../default/xui/zh/panel_preferences_chat.xml | 110 ++-
 .../xui/zh/panel_preferences_general.xml      |   4 +-
 .../default/xui/zh/sidepanel_task_info.xml    |   1 +
 .../newview/skins/default/xui/zh/strings.xml  |  66 +-
 387 files changed, 10359 insertions(+), 1715 deletions(-)
 create mode 100644 indra/newview/skins/default/xui/de/floater_conversation_log.xml
 create mode 100644 indra/newview/skins/default/xui/de/floater_conversation_preview.xml
 create mode 100644 indra/newview/skins/default/xui/de/floater_voice_chat_volume.xml
 create mode 100644 indra/newview/skins/default/xui/de/floater_voice_volume.xml
 create mode 100644 indra/newview/skins/default/xui/de/menu_conversation.xml
 create mode 100644 indra/newview/skins/default/xui/de/menu_conversation_log_gear.xml
 create mode 100644 indra/newview/skins/default/xui/de/menu_conversation_log_view.xml
 create mode 100644 indra/newview/skins/default/xui/de/menu_im_conversation.xml
 create mode 100644 indra/newview/skins/default/xui/de/menu_im_session_showmodes.xml
 create mode 100644 indra/newview/skins/default/xui/de/menu_participant_view.xml
 create mode 100644 indra/newview/skins/default/xui/de/menu_people_blocked_gear.xml
 create mode 100644 indra/newview/skins/default/xui/de/menu_people_blocked_plus.xml
 create mode 100644 indra/newview/skins/default/xui/de/menu_people_blocked_view.xml
 create mode 100644 indra/newview/skins/default/xui/de/menu_people_friends_view.xml
 create mode 100644 indra/newview/skins/default/xui/de/menu_people_groups_view.xml
 create mode 100644 indra/newview/skins/default/xui/de/menu_people_nearby_view.xml
 create mode 100644 indra/newview/skins/default/xui/de/menu_people_recent_view.xml
 create mode 100644 indra/newview/skins/default/xui/de/panel_conversation_list_item.xml
 create mode 100644 indra/newview/skins/default/xui/de/panel_conversation_log_list_item.xml
 create mode 100644 indra/newview/skins/default/xui/es/floater_conversation_log.xml
 create mode 100644 indra/newview/skins/default/xui/es/floater_conversation_preview.xml
 create mode 100644 indra/newview/skins/default/xui/es/floater_voice_chat_volume.xml
 create mode 100644 indra/newview/skins/default/xui/es/floater_voice_volume.xml
 create mode 100644 indra/newview/skins/default/xui/es/menu_conversation.xml
 create mode 100644 indra/newview/skins/default/xui/es/menu_conversation_log_gear.xml
 create mode 100644 indra/newview/skins/default/xui/es/menu_conversation_log_view.xml
 create mode 100644 indra/newview/skins/default/xui/es/menu_im_conversation.xml
 create mode 100644 indra/newview/skins/default/xui/es/menu_im_session_showmodes.xml
 create mode 100644 indra/newview/skins/default/xui/es/menu_participant_view.xml
 create mode 100644 indra/newview/skins/default/xui/es/menu_people_blocked_gear.xml
 create mode 100644 indra/newview/skins/default/xui/es/menu_people_blocked_plus.xml
 create mode 100644 indra/newview/skins/default/xui/es/menu_people_blocked_view.xml
 create mode 100644 indra/newview/skins/default/xui/es/menu_people_friends_view.xml
 create mode 100644 indra/newview/skins/default/xui/es/menu_people_groups_view.xml
 create mode 100644 indra/newview/skins/default/xui/es/menu_people_nearby_view.xml
 create mode 100644 indra/newview/skins/default/xui/es/menu_people_recent_view.xml
 create mode 100644 indra/newview/skins/default/xui/es/panel_conversation_list_item.xml
 create mode 100644 indra/newview/skins/default/xui/es/panel_conversation_log_list_item.xml
 create mode 100644 indra/newview/skins/default/xui/fr/floater_conversation_log.xml
 create mode 100644 indra/newview/skins/default/xui/fr/floater_conversation_preview.xml
 create mode 100644 indra/newview/skins/default/xui/fr/floater_voice_chat_volume.xml
 create mode 100644 indra/newview/skins/default/xui/fr/floater_voice_volume.xml
 create mode 100644 indra/newview/skins/default/xui/fr/menu_conversation.xml
 create mode 100644 indra/newview/skins/default/xui/fr/menu_conversation_log_gear.xml
 create mode 100644 indra/newview/skins/default/xui/fr/menu_conversation_log_view.xml
 create mode 100644 indra/newview/skins/default/xui/fr/menu_im_conversation.xml
 create mode 100644 indra/newview/skins/default/xui/fr/menu_im_session_showmodes.xml
 create mode 100644 indra/newview/skins/default/xui/fr/menu_participant_view.xml
 create mode 100644 indra/newview/skins/default/xui/fr/menu_people_blocked_gear.xml
 create mode 100644 indra/newview/skins/default/xui/fr/menu_people_blocked_plus.xml
 create mode 100644 indra/newview/skins/default/xui/fr/menu_people_blocked_view.xml
 create mode 100644 indra/newview/skins/default/xui/fr/menu_people_friends_view.xml
 create mode 100644 indra/newview/skins/default/xui/fr/menu_people_groups_view.xml
 create mode 100644 indra/newview/skins/default/xui/fr/menu_people_nearby_view.xml
 create mode 100644 indra/newview/skins/default/xui/fr/menu_people_recent_view.xml
 create mode 100644 indra/newview/skins/default/xui/fr/panel_conversation_list_item.xml
 create mode 100644 indra/newview/skins/default/xui/fr/panel_conversation_log_list_item.xml
 create mode 100644 indra/newview/skins/default/xui/it/floater_conversation_log.xml
 create mode 100644 indra/newview/skins/default/xui/it/floater_conversation_preview.xml
 create mode 100644 indra/newview/skins/default/xui/it/floater_voice_chat_volume.xml
 create mode 100644 indra/newview/skins/default/xui/it/floater_voice_volume.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_conversation.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_conversation_log_gear.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_conversation_log_view.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_im_conversation.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_im_session_showmodes.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_participant_view.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_people_blocked_gear.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_people_blocked_plus.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_people_blocked_view.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_people_friends_view.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_people_groups_view.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_people_nearby_view.xml
 create mode 100644 indra/newview/skins/default/xui/it/menu_people_recent_view.xml
 create mode 100644 indra/newview/skins/default/xui/it/panel_conversation_list_item.xml
 create mode 100644 indra/newview/skins/default/xui/it/panel_conversation_log_list_item.xml
 create mode 100644 indra/newview/skins/default/xui/ja/floater_conversation_log.xml
 create mode 100644 indra/newview/skins/default/xui/ja/floater_conversation_preview.xml
 create mode 100644 indra/newview/skins/default/xui/ja/floater_voice_chat_volume.xml
 create mode 100644 indra/newview/skins/default/xui/ja/floater_voice_volume.xml
 create mode 100644 indra/newview/skins/default/xui/ja/menu_conversation.xml
 create mode 100644 indra/newview/skins/default/xui/ja/menu_conversation_log_gear.xml
 create mode 100644 indra/newview/skins/default/xui/ja/menu_conversation_log_view.xml
 create mode 100644 indra/newview/skins/default/xui/ja/menu_im_conversation.xml
 create mode 100644 indra/newview/skins/default/xui/ja/menu_im_session_showmodes.xml
 create mode 100644 indra/newview/skins/default/xui/ja/menu_participant_view.xml
 create mode 100644 indra/newview/skins/default/xui/ja/menu_people_blocked_gear.xml
 create mode 100644 indra/newview/skins/default/xui/ja/menu_people_blocked_plus.xml
 create mode 100644 indra/newview/skins/default/xui/ja/menu_people_blocked_view.xml
 create mode 100644 indra/newview/skins/default/xui/ja/menu_people_friends_view.xml
 create mode 100644 indra/newview/skins/default/xui/ja/menu_people_groups_view.xml
 create mode 100644 indra/newview/skins/default/xui/ja/menu_people_nearby_view.xml
 create mode 100644 indra/newview/skins/default/xui/ja/menu_people_recent_view.xml
 create mode 100644 indra/newview/skins/default/xui/ja/panel_conversation_list_item.xml
 create mode 100644 indra/newview/skins/default/xui/ja/panel_conversation_log_list_item.xml
 create mode 100644 indra/newview/skins/default/xui/pt/floater_conversation_log.xml
 create mode 100644 indra/newview/skins/default/xui/pt/floater_conversation_preview.xml
 create mode 100644 indra/newview/skins/default/xui/pt/floater_voice_chat_volume.xml
 create mode 100644 indra/newview/skins/default/xui/pt/floater_voice_volume.xml
 create mode 100644 indra/newview/skins/default/xui/pt/menu_conversation.xml
 create mode 100644 indra/newview/skins/default/xui/pt/menu_conversation_log_gear.xml
 create mode 100644 indra/newview/skins/default/xui/pt/menu_conversation_log_view.xml
 create mode 100644 indra/newview/skins/default/xui/pt/menu_im_conversation.xml
 create mode 100644 indra/newview/skins/default/xui/pt/menu_im_session_showmodes.xml
 create mode 100644 indra/newview/skins/default/xui/pt/menu_participant_view.xml
 create mode 100644 indra/newview/skins/default/xui/pt/menu_people_blocked_gear.xml
 create mode 100644 indra/newview/skins/default/xui/pt/menu_people_blocked_plus.xml
 create mode 100644 indra/newview/skins/default/xui/pt/menu_people_blocked_view.xml
 create mode 100644 indra/newview/skins/default/xui/pt/menu_people_friends_view.xml
 create mode 100644 indra/newview/skins/default/xui/pt/menu_people_groups_view.xml
 create mode 100644 indra/newview/skins/default/xui/pt/menu_people_nearby_view.xml
 create mode 100644 indra/newview/skins/default/xui/pt/menu_people_recent_view.xml
 create mode 100644 indra/newview/skins/default/xui/pt/panel_conversation_list_item.xml
 create mode 100644 indra/newview/skins/default/xui/pt/panel_conversation_log_list_item.xml
 create mode 100644 indra/newview/skins/default/xui/ru/floater_conversation_log.xml
 create mode 100644 indra/newview/skins/default/xui/ru/floater_conversation_preview.xml
 create mode 100644 indra/newview/skins/default/xui/ru/floater_voice_chat_volume.xml
 create mode 100644 indra/newview/skins/default/xui/ru/floater_voice_volume.xml
 create mode 100644 indra/newview/skins/default/xui/ru/menu_conversation.xml
 create mode 100644 indra/newview/skins/default/xui/ru/menu_conversation_log_gear.xml
 create mode 100644 indra/newview/skins/default/xui/ru/menu_conversation_log_view.xml
 create mode 100644 indra/newview/skins/default/xui/ru/menu_im_conversation.xml
 create mode 100644 indra/newview/skins/default/xui/ru/menu_im_session_showmodes.xml
 create mode 100644 indra/newview/skins/default/xui/ru/menu_participant_view.xml
 create mode 100644 indra/newview/skins/default/xui/ru/menu_people_blocked_gear.xml
 create mode 100644 indra/newview/skins/default/xui/ru/menu_people_blocked_plus.xml
 create mode 100644 indra/newview/skins/default/xui/ru/menu_people_blocked_view.xml
 create mode 100644 indra/newview/skins/default/xui/ru/menu_people_friends_view.xml
 create mode 100644 indra/newview/skins/default/xui/ru/menu_people_groups_view.xml
 create mode 100644 indra/newview/skins/default/xui/ru/menu_people_nearby_view.xml
 create mode 100644 indra/newview/skins/default/xui/ru/menu_people_recent_view.xml
 create mode 100644 indra/newview/skins/default/xui/ru/panel_conversation_list_item.xml
 create mode 100644 indra/newview/skins/default/xui/ru/panel_conversation_log_list_item.xml
 create mode 100644 indra/newview/skins/default/xui/tr/floater_conversation_log.xml
 create mode 100644 indra/newview/skins/default/xui/tr/floater_conversation_preview.xml
 create mode 100644 indra/newview/skins/default/xui/tr/floater_voice_chat_volume.xml
 create mode 100644 indra/newview/skins/default/xui/tr/floater_voice_volume.xml
 create mode 100644 indra/newview/skins/default/xui/tr/menu_conversation.xml
 create mode 100644 indra/newview/skins/default/xui/tr/menu_conversation_log_gear.xml
 create mode 100644 indra/newview/skins/default/xui/tr/menu_conversation_log_view.xml
 create mode 100644 indra/newview/skins/default/xui/tr/menu_im_conversation.xml
 create mode 100644 indra/newview/skins/default/xui/tr/menu_im_session_showmodes.xml
 create mode 100644 indra/newview/skins/default/xui/tr/menu_participant_view.xml
 create mode 100644 indra/newview/skins/default/xui/tr/menu_people_blocked_gear.xml
 create mode 100644 indra/newview/skins/default/xui/tr/menu_people_blocked_plus.xml
 create mode 100644 indra/newview/skins/default/xui/tr/menu_people_blocked_view.xml
 create mode 100644 indra/newview/skins/default/xui/tr/menu_people_friends_view.xml
 create mode 100644 indra/newview/skins/default/xui/tr/menu_people_groups_view.xml
 create mode 100644 indra/newview/skins/default/xui/tr/menu_people_nearby_view.xml
 create mode 100644 indra/newview/skins/default/xui/tr/menu_people_recent_view.xml
 create mode 100644 indra/newview/skins/default/xui/tr/panel_conversation_list_item.xml
 create mode 100644 indra/newview/skins/default/xui/tr/panel_conversation_log_list_item.xml
 create mode 100644 indra/newview/skins/default/xui/zh/floater_conversation_log.xml
 create mode 100644 indra/newview/skins/default/xui/zh/floater_conversation_preview.xml
 create mode 100644 indra/newview/skins/default/xui/zh/floater_voice_chat_volume.xml
 create mode 100644 indra/newview/skins/default/xui/zh/floater_voice_volume.xml
 create mode 100644 indra/newview/skins/default/xui/zh/menu_conversation.xml
 create mode 100644 indra/newview/skins/default/xui/zh/menu_conversation_log_gear.xml
 create mode 100644 indra/newview/skins/default/xui/zh/menu_conversation_log_view.xml
 create mode 100644 indra/newview/skins/default/xui/zh/menu_im_conversation.xml
 create mode 100644 indra/newview/skins/default/xui/zh/menu_im_session_showmodes.xml
 create mode 100644 indra/newview/skins/default/xui/zh/menu_participant_view.xml
 create mode 100644 indra/newview/skins/default/xui/zh/menu_people_blocked_gear.xml
 create mode 100644 indra/newview/skins/default/xui/zh/menu_people_blocked_plus.xml
 create mode 100644 indra/newview/skins/default/xui/zh/menu_people_blocked_view.xml
 create mode 100644 indra/newview/skins/default/xui/zh/menu_people_friends_view.xml
 create mode 100644 indra/newview/skins/default/xui/zh/menu_people_groups_view.xml
 create mode 100644 indra/newview/skins/default/xui/zh/menu_people_nearby_view.xml
 create mode 100644 indra/newview/skins/default/xui/zh/menu_people_recent_view.xml
 create mode 100644 indra/newview/skins/default/xui/zh/panel_conversation_list_item.xml
 create mode 100644 indra/newview/skins/default/xui/zh/panel_conversation_log_list_item.xml

diff --git a/indra/newview/skins/default/xui/de/floater_conversation_log.xml b/indra/newview/skins/default/xui/de/floater_conversation_log.xml
new file mode 100644
index 00000000000..19620a0fc9a
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/floater_conversation_log.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_conversation_log" title="UNTERHALTUNGSPROTOKOLL">
+	<panel name="buttons_panel">
+		<filter_editor label="Nach Personen filtern" name="people_filter_input"/>
+		<menu_button name="conversation_view_btn" tool_tip="Anzeige-/Sortieroptionen"/>
+		<menu_button name="conversations_gear_btn" tool_tip="Aktionen für ausgewählte Person/Gruppe"/>
+	</panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_conversation_preview.xml b/indra/newview/skins/default/xui/de/floater_conversation_preview.xml
new file mode 100644
index 00000000000..010ad19076d
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/floater_conversation_preview.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="preview_conversation" title="UNTERHALTUNG:">
+	<floater.string name="Title">
+		UNTERHALTUNG: [NAME]
+	</floater.string>
+	<text name="page_label" value="Seite"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_im_container.xml b/indra/newview/skins/default/xui/de/floater_im_container.xml
index 95eda97938c..5bf916c8e98 100644
--- a/indra/newview/skins/default/xui/de/floater_im_container.xml
+++ b/indra/newview/skins/default/xui/de/floater_im_container.xml
@@ -1,2 +1,29 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<multi_floater name="floater_im_box" title="GESPRÄCHE"/>
+<multi_floater name="floater_im_box" title="GESPRÄCHE">
+	<string name="collapse_icon" value="Conv_toolbar_collapse"/>
+	<string name="expand_icon" value="Conv_toolbar_expand"/>
+	<layout_stack name="conversations_stack">
+		<layout_panel name="conversations_layout_panel">
+			<layout_stack name="conversations_pane_buttons_stack">
+				<layout_panel name="conversations_pane_buttons_expanded">
+					<menu_button name="sort_btn" tool_tip="Anzeige-/Sortieroptionen"/>
+					<button name="add_btn" tool_tip="Neue Unterhaltung starten"/>
+					<button name="speak_btn" tool_tip="Ãœber Ihr Mikrofon mit anderen sprechen"/>
+				</layout_panel>
+				<layout_panel name="conversations_pane_buttons_collapsed">
+					<button name="expand_collapse_btn" tool_tip="Diese Liste schließen/erweitern"/>
+				</layout_panel>
+			</layout_stack>
+		</layout_panel>
+		<layout_panel name="messages_layout_panel">
+			<panel_container name="im_box_tab_container">
+				<panel name="stub_panel">
+					<button name="stub_collapse_btn" tool_tip="Dieses Fenster schließen"/>
+					<text name="stub_textbox">
+						Diese Unterhaltung erscheint in einem separaten Fenster.   [secondlife:/// Zurückholen.]
+					</text>
+				</panel>
+			</panel_container>
+		</layout_panel>
+	</layout_stack>
+</multi_floater>
diff --git a/indra/newview/skins/default/xui/de/floater_im_session.xml b/indra/newview/skins/default/xui/de/floater_im_session.xml
index abaf2756519..f96eb72cb1d 100644
--- a/indra/newview/skins/default/xui/de/floater_im_session.xml
+++ b/indra/newview/skins/default/xui/de/floater_im_session.xml
@@ -1,8 +1,59 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="panel_im">
-	<layout_stack name="im_panels">
-		<layout_panel>
-			<line_editor label="An" name="chat_editor"/>
-		</layout_panel>
-	</layout_stack>
+	<floater.string name="call_btn_start">
+		Conv_toolbar_open_call
+	</floater.string>
+	<floater.string name="call_btn_stop">
+		Conv_toolbar_hang_up
+	</floater.string>
+	<floater.string name="collapseline_icon" value="Conv_collapse_to_one_line"/>
+	<floater.string name="expandline_icon" value="Conv_expand_one_line"/>
+	<floater.string name="collapse_icon" value="Conv_toolbar_collapse"/>
+	<floater.string name="expand_icon" value="Conv_toolbar_expand"/>
+	<floater.string name="tear_off_icon" value="Conv_toolbar_arrow_ne"/>
+	<floater.string name="return_icon" value="Conv_toolbar_arrow_sw"/>
+	<floater.string name="participant_added" value="[NAME] wurde zur Unterhaltung eingeladen."/>
+	<floater.string name="multiple_participants_added" value="[NAME] wurden zur Unterhaltung eingeladen."/>
+	<floater.string name="tooltip_to_separate_window" value="Diese Unterhaltung in separates Fenster verschieben"/>
+	<floater.string name="tooltip_to_main_window" value="Diese Unterhaltung zurück ins Hauptfenster verschieben"/>
+	<floater.string name="start_call_button_tooltip" value="Voice-Verbindung öffnen"/>
+	<floater.string name="end_call_button_tooltip" value="Voice-Verbindung schließen"/>
+	<floater.string name="expcol_button_not_tearoff_tooltip" value="Dieses Fenster schließen"/>
+	<floater.string name="expcol_button_tearoff_and_expanded_tooltip" value="Teilnehmerliste schließen"/>
+	<floater.string name="expcol_button_tearoff_and_collapsed_tooltip" value="Teilnehmerliste erweitern"/>
+	<view name="contents_view">
+		<layout_stack name="main_stack">
+			<layout_panel name="toolbar_panel">
+				<menu_button name="view_options_btn" tool_tip="Anzeige-/Sortieroptionen"/>
+				<menu_button name="gear_btn" tool_tip="Aktionen für ausgewählte Person"/>
+				<button name="add_btn" tool_tip="Jemanden zu dieser Unterhaltung hinzufügen"/>
+				<button name="voice_call_btn" tool_tip="Voice-Verbindung öffnen"/>
+				<button name="close_btn" tool_tip="Diese Unterhaltung beenden"/>
+				<button name="expand_collapse_btn" tool_tip="Dieses Fenster schließen/erweitern"/>
+			</layout_panel>
+			<layout_panel name="body_panel">
+				<layout_stack name="im_panels">
+					<layout_panel name="right_part_holder">
+						<panel name="trnsAndChat_panel">
+							<layout_stack name="translate_and_chat_stack">
+								<layout_panel name="translate_chat_checkbox_lp">
+									<check_box label="Chat übersetzen" name="translate_chat_checkbox"/>
+								</layout_panel>
+							</layout_stack>
+						</panel>
+					</layout_panel>
+				</layout_stack>
+			</layout_panel>
+			<layout_panel name="chat_layout_panel">
+				<layout_stack name="input_panels">
+					<layout_panel name="input_editor_layout_panel">
+						<chat_editor label="An" name="chat_editor"/>
+					</layout_panel>
+					<layout_panel name="input_button_layout_panel">
+						<button name="minz_btn" tool_tip="Nachrichtenfenster anzeigen/ausblenden"/>
+					</layout_panel>
+				</layout_stack>
+			</layout_panel>
+		</layout_stack>
+	</view>
 </floater>
diff --git a/indra/newview/skins/default/xui/de/floater_incoming_call.xml b/indra/newview/skins/default/xui/de/floater_incoming_call.xml
index 213d9f54f5c..f13842f4792 100644
--- a/indra/newview/skins/default/xui/de/floater_incoming_call.xml
+++ b/indra/newview/skins/default/xui/de/floater_incoming_call.xml
@@ -10,7 +10,7 @@
 		Anonym
 	</floater.string>
 	<floater.string name="VoiceInviteP2P">
-		ruft an.
+		ruft Sie an.
 	</floater.string>
 	<floater.string name="VoiceInviteAdHoc">
 		ist einem Voice-Konferenz-Chat beigetreten.
@@ -25,9 +25,9 @@
 		Möchten Sie [CURRENT_CHAT] verlassen und diesem Voice-Chat beitreten?
 	</floater.string>
 	<text name="question">
-		Möchten Sie [CURRENT_CHAT] verlassen und diesem Voice-Chat beitreten?
+		Wenn Sie antworten, wird Ihre aktuelle Voice-Unterhaltung beendet.
 	</text>
-	<button label="Akzeptieren" label_selected="Akzeptieren" name="Accept"/>
-	<button label="Ablehnen" label_selected="Ablehnen" name="Reject"/>
-	<button label="IM starten" name="Start IM"/>
+	<button label="Annehmen" label_selected="Annehmen" name="Accept"/>
+	<button label="Ignorieren" label_selected="Ignorieren" name="Reject"/>
+	<button label="Stattdessen IM öffnen" name="Start IM"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/de/floater_pathfinding_console.xml b/indra/newview/skins/default/xui/de/floater_pathfinding_console.xml
index ebf8f01632f..88e9f53a4c3 100644
--- a/indra/newview/skins/default/xui/de/floater_pathfinding_console.xml
+++ b/indra/newview/skins/default/xui/de/floater_pathfinding_console.xml
@@ -71,7 +71,7 @@
 			<text name="show_label">
 				Anzeigen:
 			</text>
-			<check_box label="Welt" name="show_world"/>
+			<check_box label="Test" name="show_world"/>
 			<check_box label="Nur bewegliche Objekte" name="show_world_movables_only"/>
 			<check_box label="Navmesh" name="show_navmesh"/>
 			<text name="show_walkability_label">
diff --git a/indra/newview/skins/default/xui/de/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/de/floater_texture_ctrl.xml
index 9585622516b..b794d879f0f 100644
--- a/indra/newview/skins/default/xui/de/floater_texture_ctrl.xml
+++ b/indra/newview/skins/default/xui/de/floater_texture_ctrl.xml
@@ -20,7 +20,7 @@
 	<button label="Leer" label_selected="Leer" name="Blank"/>
 	<button label="Keine" label_selected="Keine" name="None"/>
 	<button label="" label_selected="" name="Pipette"/>
-	<check_box initial_value="true" label="Live-Vorschau" name="apply_immediate_check"/>
+	<check_box initial_value="true" label="Jetzt übernehmen" name="apply_immediate_check"/>
 	<text name="preview_disabled" value="Vorschau deaktiviert"/>
 	<filter_editor label="Texturen filtern" name="inventory search editor"/>
 	<check_box initial_value="false" label="Ordner anzeigen" name="show_folders_check"/>
diff --git a/indra/newview/skins/default/xui/de/floater_voice_chat_volume.xml b/indra/newview/skins/default/xui/de/floater_voice_chat_volume.xml
new file mode 100644
index 00000000000..15259639e83
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/floater_voice_chat_volume.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_voice_volume" title="VOICE-CHAT-LAUTSTÄRKE">
+	<slider label="Voice-Chat" name="chat_voice_volume"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_voice_effect.xml b/indra/newview/skins/default/xui/de/floater_voice_effect.xml
index 413a46525c5..8d37950480a 100644
--- a/indra/newview/skins/default/xui/de/floater_voice_effect.xml
+++ b/indra/newview/skins/default/xui/de/floater_voice_effect.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater label="Orte" name="voice_effects" title="VOICE MORPHING">
+<floater label="Orte" name="voice_effects" title="VOICE-MORPHING-VORSCHAU">
 	<string name="no_voice_effect">
 		(Kein Voice-Morphing)
 	</string>
diff --git a/indra/newview/skins/default/xui/de/floater_voice_volume.xml b/indra/newview/skins/default/xui/de/floater_voice_volume.xml
new file mode 100644
index 00000000000..258627c94f4
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/floater_voice_volume.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!--
+  Not can_close / no title to avoid window chrome
+  Single instance - only have one at a time, recycle it each spawn
+-->
+<floater name="floater_voice_volume" title="LAUTSTÄRKE">
+	<slider name="volume_slider" tool_tip="Lautstärke" value="0.5"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/menu_cof_gear.xml b/indra/newview/skins/default/xui/de/menu_cof_gear.xml
index 54b218d22f7..2dd871b2eaa 100644
--- a/indra/newview/skins/default/xui/de/menu_cof_gear.xml
+++ b/indra/newview/skins/default/xui/de/menu_cof_gear.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear COF">
+<toggleable_menu name="Gear COF">
 	<menu label="Neue Kleider" name="COF.Gear.New_Clothes"/>
-	<menu label="Neue Körperteile" name="COF.Geear.New_Body_Parts"/>
-</menu>
+	<menu label="Neue Körperteile" name="COF.Gear.New_Body_Parts"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_conversation.xml b/indra/newview/skins/default/xui/de/menu_conversation.xml
new file mode 100644
index 00000000000..30d3ab79e1a
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/menu_conversation.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_conversation_participant">
+	<menu_item_call label="Unterhaltung schließen" name="close_conversation"/>
+	<menu_item_call label="Unterhaltung öffnen" name="open_voice_conversation"/>
+	<menu_item_call label="Voice-Verbindung trennen" name="disconnect_from_voice"/>
+	<menu_item_call label="Profil anzeigen" name="view_profile"/>
+	<menu_item_call label="IM" name="im"/>
+	<menu_item_call label="Teleport anbieten" name="offer_teleport"/>
+	<menu_item_call label="Voice-Anruf" name="voice_call"/>
+	<menu_item_call label="Chatverlauf..." name="chat_history"/>
+	<menu_item_call label="Freund hinzufügen" name="add_friend"/>
+	<menu_item_call label="Freund entfernen" name="remove_friend"/>
+	<menu_item_call label="Freunde entfernen" name="remove_friends"/>
+	<menu_item_call label="In Gruppe einladen..." name="invite_to_group"/>
+	<menu_item_call label="Hineinzoomen" name="zoom_in"/>
+	<menu_item_call label="Karte" name="map"/>
+	<menu_item_call label="Freigeben" name="share"/>
+	<menu_item_call label="Bezahlen" name="pay"/>
+	<menu_item_check label="Voice ignorieren" name="block_unblock"/>
+	<menu_item_check label="Text ignorieren" name="MuteText"/>
+	<menu_item_call label="Gruppenprofil" name="group_profile"/>
+	<menu_item_call label="Gruppe aktivieren" name="activate_group"/>
+	<menu_item_call label="Gruppe verlassen" name="leave_group"/>
+	<context_menu label="Moderatoroptionen" name="Moderator Options">
+		<menu_item_check label="Text-Chat zulassen" name="AllowTextChat"/>
+		<menu_item_call label="Diesen Teilnehmer stummschalten" name="ModerateVoiceMuteSelected"/>
+		<menu_item_call label="Stummschaltung für diesen Teilnehmer aufheben" name="ModerateVoiceUnMuteSelected"/>
+		<menu_item_call label="Alle stummschalten" name="ModerateVoiceMute"/>
+		<menu_item_call label="Stummschaltung für alle aufheben" name="ModerateVoiceUnmute"/>
+	</context_menu>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_conversation_log_gear.xml b/indra/newview/skins/default/xui/de/menu_conversation_log_gear.xml
new file mode 100644
index 00000000000..2ef87621281
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/menu_conversation_log_gear.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Conversation Context Menu">
+	<menu_item_call label="IM..." name="IM"/>
+	<menu_item_call label="Voice-Anruf..." name="Call"/>
+	<menu_item_call label="Chatverlauf öffnen..." name="Chat history"/>
+	<menu_item_call label="Profil anzeigen" name="View Profile"/>
+	<menu_item_call label="Teleport anbieten" name="teleport"/>
+	<menu_item_call label="Freund hinzufügen" name="add_friend"/>
+	<menu_item_call label="Freund entfernen" name="remove_friend"/>
+	<menu_item_call label="In Gruppe einladen..." name="Invite"/>
+	<menu_item_call label="Karte" name="Map"/>
+	<menu_item_call label="Freigeben" name="Share"/>
+	<menu_item_call label="Bezahlen" name="Pay"/>
+	<menu_item_check label="Ignorieren/Nicht mehr ignorieren" name="Block/Unblock"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_conversation_log_view.xml b/indra/newview/skins/default/xui/de/menu_conversation_log_view.xml
new file mode 100644
index 00000000000..ae3cc5bc970
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/menu_conversation_log_view.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_conversation_view">
+	<menu_item_check label="Nach Namen sortieren" name="sort_by_name"/>
+	<menu_item_check label="Nach Datum sortieren" name="sort_by_date"/>
+	<menu_item_check label="Freunde oben anzeigen" name="sort_by_friends"/>
+	<menu_item_call label="Verlaufsliste für „Chat in der Nähe“ anzeigen..." name="view_nearby_chat_history"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_im_conversation.xml b/indra/newview/skins/default/xui/de/menu_im_conversation.xml
new file mode 100644
index 00000000000..875524b19de
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/menu_im_conversation.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Conversation Gear Menu">
+	<menu_item_call label="Profil anzeigen" name="View Profile"/>
+	<menu_item_call label="Freund hinzufügen" name="Add Friend"/>
+	<menu_item_call label="Freund entfernen" name="remove_friend"/>
+	<menu_item_call label="Teleport anbieten" name="offer_teleport"/>
+	<menu_item_call label="In Gruppe einladen..." name="invite_to_group"/>
+	<menu_item_call label="Chatverlauf..." name="chat_history"/>
+	<menu_item_call label="Hineinzoomen" name="zoom_in"/>
+	<menu_item_call label="Karte" name="map"/>
+	<menu_item_call label="Freigeben" name="Share"/>
+	<menu_item_call label="Bezahlen" name="Pay"/>
+	<menu_item_check label="Voice ignorieren" name="Block/Unblock"/>
+	<menu_item_check label="Text ignorieren" name="MuteText"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_im_session_showmodes.xml b/indra/newview/skins/default/xui/de/menu_im_session_showmodes.xml
new file mode 100644
index 00000000000..48f62d29a10
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/menu_im_session_showmodes.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_modes">
+	<menu_item_check label="Kompaktansicht" name="compact_view"/>
+	<menu_item_check label="Erweiterte Ansicht" name="expanded_view"/>
+	<menu_item_check label="Zeit anzeigen" name="IMShowTime"/>
+	<menu_item_check label="Namen in privaten Unterhaltungen anzeigen" name="IMShowNamesForP2PConv"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_object_icon.xml b/indra/newview/skins/default/xui/de/menu_object_icon.xml
index 8b6c558416b..f92fa0f82b7 100644
--- a/indra/newview/skins/default/xui/de/menu_object_icon.xml
+++ b/indra/newview/skins/default/xui/de/menu_object_icon.xml
@@ -2,4 +2,6 @@
 <menu name="Object Icon Menu">
 	<menu_item_call label="Objektprofil..." name="Object Profile"/>
 	<menu_item_call label="Ignorieren..." name="Block"/>
+	<menu_item_call label="Auf Karte anzeigen" name="show_on_map"/>
+	<menu_item_call label="Zu Objektposition teleportieren" name="teleport_to_object"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/de/menu_outfit_gear.xml b/indra/newview/skins/default/xui/de/menu_outfit_gear.xml
index d56c93533cf..0cf3c09882b 100644
--- a/indra/newview/skins/default/xui/de/menu_outfit_gear.xml
+++ b/indra/newview/skins/default/xui/de/menu_outfit_gear.xml
@@ -23,6 +23,8 @@
 		<menu_item_call label="Neues Haar" name="New Hair"/>
 		<menu_item_call label="Neue Augen" name="New Eyes"/>
 	</menu>
+	<menu_item_call label="Alle Ordner erweitern" name="expand"/>
+	<menu_item_call label="Alle Ordner schließen" name="collapse"/>
 	<menu_item_call label="Outfit neu benennen" name="rename"/>
 	<menu_item_call label="Outfit löschen" name="delete_outfit"/>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_participant_view.xml b/indra/newview/skins/default/xui/de/menu_participant_view.xml
new file mode 100644
index 00000000000..6ceb9ac4c5c
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/menu_participant_view.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="participant_manu_view">
+	<menu_item_check label="Unterhaltungen nach Typ sortieren" name="sort_sessions_by_type"/>
+	<menu_item_check label="Unterhaltungen nach Namen sortieren" name="sort_sessions_by_name"/>
+	<menu_item_check label="Unterhaltungen nach jüngster Aktivität sortieren" name="sort_sessions_by_recent"/>
+	<menu_item_check label="Teilnehmer nach Namen sortieren" name="sort_participants_by_name"/>
+	<menu_item_check label="Teilnehmer nach jüngster Aktivität sortieren" name="sort_participants_by_recent"/>
+	<menu_item_call label="Chat-Einstellungen..." name="chat_preferences"/>
+	<menu_item_call label="Privatsphäre-Einstellungen..." name="privacy_preferences"/>
+	<menu_item_check label="Unterhaltungsprotokoll..." name="Conversation"/>
+	<menu_item_check label="Chat in der Nähe übersetzen" name="Translate_chat"/>
+	<menu_item_check label="Ãœbersetzungseinstellungen..." name="Translation_settings"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_people_blocked_gear.xml b/indra/newview/skins/default/xui/de/menu_people_blocked_gear.xml
new file mode 100644
index 00000000000..f69a453e58c
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/menu_people_blocked_gear.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_blocked_gear">
+	<menu_item_call label="Nicht mehr ignorieren" name="unblock"/>
+	<menu_item_call label="Profil..." name="profile"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_people_blocked_plus.xml b/indra/newview/skins/default/xui/de/menu_people_blocked_plus.xml
new file mode 100644
index 00000000000..041fde139db
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/menu_people_blocked_plus.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_blocked_plus">
+	<menu_item_call label="Einwohner nach Namen ignorieren..." name="block_resident_by_name"/>
+	<menu_item_call label="Objekt nach Namen ignorieren" name="block_object_by_name"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_people_blocked_view.xml b/indra/newview/skins/default/xui/de/menu_people_blocked_view.xml
new file mode 100644
index 00000000000..1dae593ebe8
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/menu_people_blocked_view.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_blocked_view">
+	<menu_item_check label="Nach Namen sortieren" name="sort_by_name"/>
+	<menu_item_check label="Nach Typ sortieren" name="sort_by_type"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_people_friends_view.xml b/indra/newview/skins/default/xui/de/menu_people_friends_view.xml
new file mode 100644
index 00000000000..da4890fe96c
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/menu_people_friends_view.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="Nach Namen sortieren" name="sort_name"/>
+	<menu_item_check label="Nach Status sortieren" name="sort_status"/>
+	<menu_item_check label="Symbole für Personen anzeigen" name="view_icons"/>
+	<menu_item_check label="Erteilte Genehmigungen anzeigen" name="view_permissions"/>
+	<menu_item_check label="Unterhaltungsprotokoll anzeigen..." name="view_conversation"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_people_groups.xml b/indra/newview/skins/default/xui/de/menu_people_groups.xml
index 76225ba2414..a69c82d3d85 100644
--- a/indra/newview/skins/default/xui/de/menu_people_groups.xml
+++ b/indra/newview/skins/default/xui/de/menu_people_groups.xml
@@ -2,7 +2,7 @@
 <menu name="menu_group_plus">
 	<menu_item_call label="Info anzeigen" name="View Info"/>
 	<menu_item_call label="Chat" name="Chat"/>
-	<menu_item_call label="Anrufen" name="Call"/>
+	<menu_item_call label="Voice-Anruf" name="Call"/>
 	<menu_item_call label="Aktivieren" name="Activate"/>
 	<menu_item_call label="Verlassen" name="Leave"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/de/menu_people_groups_view.xml b/indra/newview/skins/default/xui/de/menu_people_groups_view.xml
new file mode 100644
index 00000000000..20386bba567
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/menu_people_groups_view.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="Gruppensymbole anzeigen" name="Display Group Icons"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_people_nearby.xml b/indra/newview/skins/default/xui/de/menu_people_nearby.xml
index 1db964357fe..cdbb3ae917c 100644
--- a/indra/newview/skins/default/xui/de/menu_people_nearby.xml
+++ b/indra/newview/skins/default/xui/de/menu_people_nearby.xml
@@ -1,13 +1,16 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Avatar Context Menu">
-	<menu_item_call label="Profil anzeigen" name="View Profile"/>
-	<menu_item_call label="Freund hinzufügen" name="Add Friend"/>
-	<menu_item_call label="Freund entfernen" name="Remove Friend"/>
-	<menu_item_call label="IM" name="IM"/>
-	<menu_item_call label="Anrufen" name="Call"/>
-	<menu_item_call label="Karte" name="Map"/>
-	<menu_item_call label="Teilen" name="Share"/>
-	<menu_item_call label="Bezahlen" name="Pay"/>
-	<menu_item_check label="Ignorieren/Freischalten" name="Block/Unblock"/>
-	<menu_item_call label="Teleport anbieten" name="teleport"/>
+	<menu_item_call label="Profil anzeigen" name="view_profile"/>
+	<menu_item_call label="IM" name="im"/>
+	<menu_item_call label="Teleport anbieten" name="offer_teleport"/>
+	<menu_item_call label="Voice-Anruf" name="voice_call"/>
+	<menu_item_call label="Chatverlauf anzeigen..." name="chat_history"/>
+	<menu_item_call label="Freund hinzufügen" name="add_friend"/>
+	<menu_item_call label="Freund entfernen" name="remove_friend"/>
+	<menu_item_call label="In Gruppe einladen..." name="invite_to_group"/>
+	<menu_item_call label="Hineinzoomen" name="zoom_in"/>
+	<menu_item_call label="Karte" name="map"/>
+	<menu_item_call label="Freigeben" name="share"/>
+	<menu_item_call label="Bezahlen" name="pay"/>
+	<menu_item_check label="Ignorieren/Nicht mehr ignorieren" name="block_unblock"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/de/menu_people_nearby_multiselect.xml
index b6e99edfe1f..ba6578e2d1d 100644
--- a/indra/newview/skins/default/xui/de/menu_people_nearby_multiselect.xml
+++ b/indra/newview/skins/default/xui/de/menu_people_nearby_multiselect.xml
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Multi-Selected People Context Menu">
-	<menu_item_call label="Freunde hinzufügen" name="Add Friends"/>
-	<menu_item_call label="Freunde entfernen" name="Remove Friend"/>
-	<menu_item_call label="IM" name="IM"/>
-	<menu_item_call label="Anrufen" name="Call"/>
-	<menu_item_call label="Teilen" name="Share"/>
-	<menu_item_call label="Bezahlen" name="Pay"/>
-	<menu_item_call label="Teleport anbieten" name="teleport"/>
+	<menu_item_call label="Freunde hinzufügen" name="add_friends"/>
+	<menu_item_call label="Freunde entfernen" name="remove_friends"/>
+	<menu_item_call label="IM" name="im"/>
+	<menu_item_call label="Anrufen" name="call"/>
+	<menu_item_call label="Freigeben" name="share"/>
+	<menu_item_call label="Bezahlen" name="pay"/>
+	<menu_item_call label="Teleport anbieten" name="offer_teleport"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_people_nearby_view.xml b/indra/newview/skins/default/xui/de/menu_people_nearby_view.xml
new file mode 100644
index 00000000000..d38ec650376
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/menu_people_nearby_view.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="Nach letzten Sprechern sortieren" name="sort_by_recent_speakers"/>
+	<menu_item_check label="Nach Namen sortieren" name="sort_name"/>
+	<menu_item_check label="Nach Nähe sortieren" name="sort_distance"/>
+	<menu_item_check label="Symbole für Personen anzeigen" name="view_icons"/>
+	<menu_item_check label="Karte anzeigen" name="view_map"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_people_recent_view.xml b/indra/newview/skins/default/xui/de/menu_people_recent_view.xml
new file mode 100644
index 00000000000..a116ad0bc16
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/menu_people_recent_view.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="Nach jüngsten sortieren" name="sort_most"/>
+	<menu_item_check label="Nach Namen sortieren" name="sort_name"/>
+	<menu_item_check label="Symbole für Personen anzeigen" name="view_icons"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_url_agent.xml b/indra/newview/skins/default/xui/de/menu_url_agent.xml
index 9a808088fbe..c61ebb0eae2 100644
--- a/indra/newview/skins/default/xui/de/menu_url_agent.xml
+++ b/indra/newview/skins/default/xui/de/menu_url_agent.xml
@@ -1,6 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Url Popup">
-	<menu_item_call label="Einwohnerprofil anzeigen" name="show_agent"/>
+	<menu_item_call label="Profil anzeigen" name="show_agent"/>
+	<menu_item_call label="IM senden..." name="send_im"/>
+	<menu_item_call label="Freund hinzufügen..." name="add_friend"/>
 	<menu_item_call label="Name in Zwischenablage kopieren" name="url_copy_label"/>
 	<menu_item_call label="SLurl in die Zwischenablage kopieren" name="url_copy"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_url_objectim.xml b/indra/newview/skins/default/xui/de/menu_url_objectim.xml
index 90d3763d9c0..77b7004e44f 100644
--- a/indra/newview/skins/default/xui/de/menu_url_objectim.xml
+++ b/indra/newview/skins/default/xui/de/menu_url_objectim.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Url Popup">
-	<menu_item_call label="Objektinformationen anzeigen" name="show_object"/>
+	<menu_item_call label="Objektprofil..." name="show_object"/>
 	<menu_item_call label="Auf Karte zeigen" name="show_on_map"/>
 	<menu_item_call label="Zu Objekt-Position teleportieren" name="teleport_to_object"/>
 	<menu_item_call label="Objektname in Zwischenablage kopieren" name="url_copy_label"/>
diff --git a/indra/newview/skins/default/xui/de/menu_viewer.xml b/indra/newview/skins/default/xui/de/menu_viewer.xml
index 845df1f0503..2c9d9fa7f12 100644
--- a/indra/newview/skins/default/xui/de/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/de/menu_viewer.xml
@@ -16,10 +16,7 @@
 			<menu_item_call label="Animation meines Avatars stoppen" name="Stop Animating My Avatar"/>
 			<menu_item_call label="Gehen/Rennen/Fliegen..." name="Walk / run / fly"/>
 		</menu>
-		<menu label="Status" name="Status">
-			<menu_item_call label="Abwesend" name="Set Away"/>
-			<menu_item_call label="Beschäftigt" name="Set Busy"/>
-		</menu>
+		<menu label="Status" name="Status"/>
 		<menu_item_call label="L$ kaufen..." name="Buy and Sell L$"/>
 		<menu_item_call label="Händler-Outbox..." name="MerchantOutbox"/>
 		<menu_item_call label="Kontoübersicht..." name="Manage My Account">
@@ -32,14 +29,18 @@
 		<menu_item_call label="[APP_NAME] schließen" name="Quit"/>
 	</menu>
 	<menu label="Unterhalten" name="Communicate">
-		<menu_item_check label="Chat..." name="Nearby Chat"/>
+		<menu_item_check label="Unterhaltungen..." name="Conversations"/>
+		<menu_item_check label="Chat in der Nähe..." name="Nearby Chat"/>
 		<menu_item_check label="Sprechen" name="Speak"/>
-		<menu_item_check label="Voice-Einstellungen..." name="Nearby Voice"/>
-		<menu_item_check label="Voice-Morphing..." name="ShowVoice"/>
+		<menu label="Voice-Morphing" name="VoiceMorphing">
+			<menu_item_check label="Kein Voice-Morphing" name="NoVoiceMorphing"/>
+			<menu_item_check label="Vorschau..." name="Preview"/>
+			<menu_item_call label="Abonnieren..." name="Subscribe"/>
+		</menu>
 		<menu_item_check label="Gesten..." name="Gestures"/>
-		<menu_item_call label="Freunde" name="My Friends"/>
-		<menu_item_call label="Gruppen" name="My Groups"/>
-		<menu_item_call label="Leute in der Nähe" name="Active Speakers"/>
+		<menu_item_check label="Freunde" name="My Friends"/>
+		<menu_item_check label="Gruppen" name="My Groups"/>
+		<menu_item_check label="Leute in der Nähe" name="Active Speakers"/>
 		<menu_item_call label="Blockierliste" name="Block List"/>
 	</menu>
 	<menu label="Welt" name="World">
@@ -115,7 +116,6 @@
 			<menu_item_call label="Kaufen" name="Menu Object Buy"/>
 			<menu_item_call label="Nehmen" name="Menu Object Take"/>
 			<menu_item_call label="Kopie nehmen" name="Take Copy"/>
-			<menu_item_call label="Objekt wieder in meinem Inventar speichern" name="Save Object Back to My Inventory"/>
 			<menu_item_call label="Wieder in Objektinhalt speichern" name="Save Object Back to Object Contents"/>
 			<menu_item_call label="Objekt zurückgeben" name="Return Object back to Owner"/>
 		</menu>
@@ -130,6 +130,7 @@
 			<menu_item_call label="Linksets..." name="pathfinding_linksets_menu_item"/>
 			<menu_item_call label="Figuren..." name="pathfinding_characters_menu_item"/>
 			<menu_item_call label="Anzeigen/Testen..." name="pathfinding_console_menu_item"/>
+			<menu_item_call label="Region neu formen" name="pathfinding_rebake_navmesh_item"/>
 		</menu>
 		<menu label="Optionen" name="Options">
 			<menu_item_check label="Erweiterte Berechtigungen anzeigen" name="DebugPermissions"/>
@@ -159,6 +160,13 @@
 	<menu label="Hilfe" name="Help">
 		<menu_item_call label="Anweisungen..." name="How To"/>
 		<menu_item_call label="[SECOND_LIFE]-Hilfe" name="Second Life Help"/>
+		<menu_item_call label="Benutzerhandbuch" name="User’s guide"/>
+		<menu_item_call label="Knowledge Base" name="Knowledge Base"/>
+		<menu_item_call label="Wiki" name="Wiki"/>
+		<menu_item_call label="Community-Foren" name="Community Forums"/>
+		<menu_item_call label="Support-Portal" name="Support portal"/>
+		<menu_item_call label="[SECOND_LIFE]-Neuigkeiten" name="Second Life News"/>
+		<menu_item_call label="[SECOND_LIFE]-Blogs" name="Second Life Blogs"/>
 		<menu_item_call label="Missbrauch melden" name="Report Abuse"/>
 		<menu_item_call label="Fehler melden" name="Report Bug"/>
 		<menu_item_call label="INFO ÃœBER [APP_NAME]" name="About Second Life"/>
@@ -385,9 +393,14 @@
 				<menu_item_call label="Weiblich testen" name="Test Female"/>
 				<menu_item_check label="Avatarauswahl zulassen" name="Allow Select Avatar"/>
 			</menu>
+			<menu label="Animationsgeschwindigkeit" name="Animation Speed">
+				<menu_item_call label="Alle Animationen 10 % schneller" name="All Animations 10 Faster"/>
+				<menu_item_call label="Alle Animationen 10 % langsamer" name="All Animations 10 Slower"/>
+				<menu_item_call label="Alle Animationsgeschwindigkeiten zurücksetzen" name="Reset All Animation Speed"/>
+				<menu_item_check label="Zeitlupen-Animationen" name="Slow Motion Animations"/>
+			</menu>
 			<menu_item_call label="Param auf Standard erzwingen" name="Force Params to Default"/>
 			<menu_item_check label="Animations-Info" name="Animation Info"/>
-			<menu_item_check label="Zeitlupen-Animationen" name="Slow Motion Animations"/>
 			<menu_item_check label="Kamerafokus anzeigen" name="Show Look At"/>
 			<menu_item_check label="Klickpunkt anzeigen??" name="Show Point At"/>
 			<menu_item_check label="Fehler in Landaktualisierung beseitigen" name="Debug Joint Updates"/>
diff --git a/indra/newview/skins/default/xui/de/notifications.xml b/indra/newview/skins/default/xui/de/notifications.xml
index 4b7a60b4eb7..dc0d7dc6b4b 100644
--- a/indra/newview/skins/default/xui/de/notifications.xml
+++ b/indra/newview/skins/default/xui/de/notifications.xml
@@ -523,6 +523,24 @@ Weitere Informationen finden Sie auf [_URL].
 		</url>
 		<usetemplate ignoretext="Mein Grafiktreiber ist veraltet" name="okcancelignore" notext="Nein" yestext="Ja"/>
 	</notification>
+	<notification name="AMDOldDriver">
+		Wahrscheinlich gibt es einen neueren Treiber für Ihren Grafikchip.  Durch Aktualisieren der Grafiktreiber lässt sich die Leistung u. U. beträchtlich verbessern.
+
+    Unter [_URL] nach aktualisierten Treibern suchen?
+		<url name="url">
+			http://support.amd.com/de/Pages/AMDSupportHub.aspx
+		</url>
+		<usetemplate ignoretext="Mein Grafiktreiber ist veraltet" name="okcancelignore" notext="Nein" yestext="Ja"/>
+	</notification>
+	<notification name="NVIDIAOldDriver">
+		Wahrscheinlich gibt es einen neueren Treiber für Ihren Grafikchip.  Durch Aktualisieren der Grafiktreiber lässt sich die Leistung u. U. beträchtlich verbessern.
+
+    Unter [_URL] nach aktualisierten Treibern suchen?
+		<url name="url">
+			http://www.nvidia.com/Download/index.aspx?lang=de-de
+		</url>
+		<usetemplate ignoretext="Mein Grafiktreiber ist veraltet" name="okcancelignore" notext="Nein" yestext="Ja"/>
+	</notification>
 	<notification name="UnknownGPU">
 		Ihr System verwendet eine Grafikkarte, die [APP_NAME] nicht erkennt.
 Dies passiert dann, wenn die neue Hardware noch nicht mit [APP_NAME] getestet wurde.  Wahrscheinlich wird das Programm richtig ausgeführt, aber Sie müssen eventuell ein paar Grafikeinstellungen vornehmen.
@@ -1558,10 +1576,13 @@ Diese Gruppe verlassen?
 		Sie können gerade keine Freundschaft anbieten. Warten Sie kurz und versuchen Sie es dann noch einmal.
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
-	<notification name="BusyModeSet">
-		Beschäftigt-Modus ist aktiviert.
-Chat und Instant Messages werden ausgeblendet. Instant Messages (Sofortnachrichten) erhalten Ihre Beschäftigt-Antwort. Alle Teleport-Angebote werden abgelehnt. Alle Inventar-Angebote werden in Ihren Papierkorb geschoben.
-		<usetemplate ignoretext="Ich ändere meinen Status zu Beschäftigt" name="okignore" yestext="OK"/>
+	<notification name="DoNotDisturbModeSet">
+		Nicht-stören-Modus ist aktiviert:  Sie erhalten keine Benachrichtigung über eingehende Kommunikation.
+
+- Andere Einwohner erhalten Ihre Nicht-stören-Antwort (festgelegt in Einstellungen &gt; Allgemein).
+- Teleport-Angebote werden abgelehnt.
+- Voice-Anrufe werden abgelehnt.
+		<usetemplate ignoretext="Ich ändere meinen Status zu „Nicht stören“" name="okignore" yestext="OK"/>
 	</notification>
 	<notification name="JoinedTooManyGroupsMember">
 		Sie haben die maximale Anzahl an Gruppen erreicht. Bitte verlassen Sie eine andere Gruppe, um dieser beitreten zu können oder lehnen Sie das Angebot ab.
@@ -2049,6 +2070,10 @@ Inventarobjekt(e) verschieben?
 		Möchten Sie Ihre [http://secondlife.com/account/ Startseite] aufrufen, um Ihre Konto-Statistik anzuzeigen?
 		<usetemplate ignoretext="Meinen Browser starten, um meine Konto-Statistik anzuzeigen" name="okcancelignore" notext="Abbrechen" yestext="Gehe zu Seite"/>
 	</notification>
+	<notification name="ConfirmAddingChatParticipants">
+		Wenn Sie eine Person zu einer vorhandenen Unterhaltung hinzufügen, wird eine neue Unterhaltung erstellt.  Alle Teilnehmer erhalten neue Unterhaltungsbenachrichtigungen.
+		<usetemplate ignoretext="Hinzufügen von Chat-Teilnehmern bestätigen" name="okcancelignore" notext="Abbrechen" yestext="OK"/>
+	</notification>
 	<notification name="ConfirmQuit">
 		Wirklich beenden?
 		<usetemplate ignoretext="Bestätigen, bevor Sitzung beendet wird" name="okcancelignore" notext="Nicht beenden" yestext="Beenden"/>
@@ -2122,14 +2147,14 @@ Möchten Sie es mit dem ausgewählten Objekt ersetzen?
 			<button ignore="Nie ersetzen" name="No" text="Abbrechen"/>
 		</form>
 	</notification>
-	<notification label="Beschäftigt-Modus-Warnung" name="BusyModePay">
-		Sie sind im Beschäftigt-Modus, sodass Sie im Austausch für diese Zahlung keine Objekte erhalten können.
+	<notification label="Warnung für Nicht-stören-Modus" name="DoNotDisturbModePay">
+		Sie haben den Nicht-stören-Modus aktiviert. Sie erhalten keine Artikel, die im Gegenzug für diese Zahlung angeboten werden.
 
-Möchten Sie den Bechäftigt-Modus verlassen, bevor Sie diese Transaktion abschließen?
+Möchten Sie den Nicht-stören-Modus deaktivieren, bevor Sie diese Transaktion abschließen?
 		<form name="form">
-			<ignore name="ignore" save_option="true" text="Ich bin im Begriff eine Person oder ein Objekt zu bezahlen, während ich im Modus Beschäftigt bin."/>
-			<button ignore="Beschäftigt-Modus immer deaktivieren" name="Yes" text="OK"/>
-			<button ignore="Beschäftigt-Modus aktiviert lassen" name="No" text="Abbrechen"/>
+			<ignore name="ignore" text="Ich bin im Begriff eine Person oder ein Objekt zu bezahlen, während ich im Nicht-stören-Modus bin."/>
+			<button ignore="„Nicht stören“-Modus immer verlassen" name="Yes" text="OK"/>
+			<button ignore="„Nicht stören“-Modus nie verlassen" name="No" text="Abbrechen"/>
 		</form>
 	</notification>
 	<notification name="ConfirmDeleteProtectedCategory">
@@ -2264,11 +2289,8 @@ Von einer Webseite zu diesem Formular linken, um anderen leichten Zugang zu dies
 	<notification name="GroupNotice">
 		Betreff: [SUBJECT], Nachricht: [MESSAGE]
 	</notification>
-	<notification name="FriendOnline">
-		&lt;nolink&gt;[NAME]&lt;/nolink&gt; ist online
-	</notification>
-	<notification name="FriendOffline">
-		&lt;nolink&gt;[NAME]&lt;/nolink&gt; ist offline
+	<notification name="FriendOnlineOffline">
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; ist [STATUS]
 	</notification>
 	<notification name="AddSelfFriend">
 		Obwohl Sie ein sehr netter Mensch sind, können Sie sich nicht selbst als Freund hinzufügen.
@@ -2496,13 +2518,6 @@ Fliegen ist hier nicht möglich.
 	<notification name="DynamicPathfindingDisabled">
 		Dynamisches Pathfinding ist in dieser Region nicht aktiviert. Geskriptete Objekte, die Pathfinding-LSL-Aufrufe verwenden, funktionieren in dieser Region u. U. nicht wie erwartet.
 	</notification>
-	<notification name="PathfindingRebakeNavmesh">
-		Wenn Sie bestimmte Objekte in dieser Region ändern, verhalten sich andere bewegliche Objekte u. U. inkorrekt. Um dieses Problem zu beheben, klicken Sie auf die Schaltfläche „Region neu formen“. Um weitere Informationen zu erhalten, klicken Sie auf „Hilfe“.
-		<url name="url">
-			http://wiki.secondlife.com/wiki/Pathfinding_Tools_in_the_Second_Life_Viewer
-		</url>
-		<usetemplate helptext="Hilfe" ignoretext="Wenn Sie bestimmte Objekte in dieser Region ändern, verhalten sich andere bewegliche Objekte u. U. inkorrekt." name="okhelpignore" yestext="OK"/>
-	</notification>
 	<notification name="PathfindingCannotRebakeNavmesh">
 		Fehler aufgetreten. Möglicherweise ist ein Netzwerk- oder Serverproblem aufgetreten oder Sie haben nicht die erforderlichen Baurechte. Dieses Problem lässt sich manchmal durch Ab- und Anmelden lösen.
 		<usetemplate name="okbutton" yestext="OK"/>
@@ -2765,7 +2780,7 @@ Ist das OK?
 	<notification name="ScriptQuestionCaution">
 		Achtung: Das Objekt „&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;“ fordert uneingeschränkten Zugriff auf Ihr Linden-Dollar-Konto an. Wenn Sie Zugriff gewähren, kann dieses Objekt jederzeit und ohne weitere Warnung Ihr Konto belasten bzw. ganz leeren.
   
-Eine solche Anforderung ist nur in seltenen Fällen legitim. Gewähren Sie dem Objekt nur dann Zugriff, wenn Sie genau verstehen, wieso ein solcher Zugriff auf Ihr Konto erforderlich ist.
+Gewähren Sie dem Objekt nur dann Zugriff, wenn Sie genau verstehen, wieso ein solcher Zugriff auf Ihr Konto erforderlich ist.
 		<form name="form">
 			<button name="Grant" text="Uneingeschränkten Zugriff gewähren"/>
 			<button name="Deny" text="Verweigern"/>
@@ -3346,4 +3361,633 @@ Versuch abgebrochen.
 		Sie sind dabei, [NUM_ITEMS] Objekte zu löschen. Möchten Sie diesen Vorgang wirklich fortsetzen?
 		<usetemplate ignoretext="Möchten Sie wirklich mehrere Objekte löschen?" name="okcancelignore" notext="Nein" yestext="Ja"/>
 	</notification>
+	<notification name="AvatarFrozen">
+		[AV_FREEZER] hat Sie eingefroren. Sie können sich nicht bewegen oder mit der Welt interagieren.
+	</notification>
+	<notification name="AvatarFrozenDuration">
+		[AV_FREEZER] hat Sie [AV_FREEZE_TIME] Sekunden lang eingefroren. Sie können sich nicht bewegen oder mit der Welt interagieren.
+	</notification>
+	<notification name="YouFrozeAvatar">
+		Avatar eingefroren.
+	</notification>
+	<notification name="AvatarHasUnFrozenYou">
+		[AV_FREEZER] hat Sie aufgetaut.
+	</notification>
+	<notification name="AvatarUnFrozen">
+		Avatar aufgetaut.
+	</notification>
+	<notification name="AvatarFreezeFailure">
+		Einfrieren fehlgeschlagen, da Sie keine Berechtigung für diese Parzelle haben.
+	</notification>
+	<notification name="AvatarFreezeThaw">
+		Sie sind nicht mehr eingefroren und können sich frei bewegen.
+	</notification>
+	<notification name="AvatarCantFreeze">
+		Dieser Benutzer kann nicht eingefroren werden.
+	</notification>
+	<notification name="NowOwnObject">
+		Sie sind jetzt Eigentümer des Objekts [OBJECT_NAME]
+	</notification>
+	<notification name="CantRezOnLand">
+		Objekt kann nicht an [OBJECT_POS] gerezzt werden, da der Landeigentümer dies nicht zulässt.  Machen Sie den Landeigentümer mit dem Landwerkzeug ausfindig.
+	</notification>
+	<notification name="RezFailTooManyRequests">
+		Objekt kann nicht gerezzt werden, da zu viele Anforderungen vorliegen.
+	</notification>
+	<notification name="SitFailCantMove">
+		Sie können sich nicht hinsetzen, da Sie zur Zeit unbeweglich sind.
+	</notification>
+	<notification name="SitFailNotAllowedOnLand">
+		Sie können sich nicht hinsetzen, da Sie auf diesem Land keine Berechtigung dazu haben.
+	</notification>
+	<notification name="SitFailNotSameRegion">
+		Kommen Sie näher heran.  Sitzen auf Objekt nicht möglich, da
+es sich nicht in der gleichen Region befindet wie Sie.
+	</notification>
+	<notification name="NoNewObjectRegionFull">
+		Neues Objekt kann nicht erstellt werden. Die Region ist voll.
+	</notification>
+	<notification name="FailedToPlaceObject">
+		Objekt konnte nicht an festgelegtem Ort platziert werden.  Versuchen Sie es erneut.
+	</notification>
+	<notification name="NoOwnNoGardening">
+		Auf Land, das Sie nicht besitzen, können Sie keine Bäume und Gräser erstellen.
+	</notification>
+	<notification name="NoCopyPermsNoObject">
+		Kopieren fehlgeschlagen, da Sie keine Berechtigung zum Kopieren des Objekts „OBJ_NAME]“ besitzen.
+	</notification>
+	<notification name="NoTransPermsNoObject">
+		Kopieren fehlgeschlagen, weil Objekt „[OBJ_NAME]“ nicht an Sie übertragen werden kann.
+	</notification>
+	<notification name="AddToNavMeshNoCopy">
+		Kopieren fehlgeschlagen, weil Objekt „[OBJ_NAME]“ zum Navmesh beiträgt.
+	</notification>
+	<notification name="DupeWithNoRootsSelected">
+		Ohne ausgewählte Hauptobjekte duplizieren.
+	</notification>
+	<notification name="CantDupeCuzRegionIsFull">
+		Objekte können nicht dupliziert werden, da die Region voll ist.
+	</notification>
+	<notification name="CantDupeCuzParcelNotFound">
+		Objekte können nicht dupliziert werden, da die Parzelle, in der sie sich befinden, nicht auffindbar ist.
+	</notification>
+	<notification name="CantCreateCuzParcelFull">
+		Objekt kann nicht erstellt werden, da 
+die Parzelle voll ist.
+	</notification>
+	<notification name="RezAttemptFailed">
+		Versuch zum Rezzen eines Objekts fehlgeschlagen.
+	</notification>
+	<notification name="ToxicInvRezAttemptFailed">
+		Objekt, das in dieser Region zu Problemen geführt hat, kann nicht erstellt werden.
+	</notification>
+	<notification name="InvItemIsBlacklisted">
+		Dieses Inventarobjekt ist auf der schwarzen Liste.
+	</notification>
+	<notification name="NoCanRezObjects">
+		Sie können gegenwärtig keine Objekte erstellen.
+	</notification>
+	<notification name="LandSearchBlocked">
+		Landsuche blockiert.
+Sie haben zu viele Landsuchen in zu kurzer Zeit durchgeführt.
+Warten Sie kurz und versuchen Sie es noch einmal.
+	</notification>
+	<notification name="NotEnoughResourcesToAttach">
+		Nicht genügend Skriptressourcen verfügbar, um Objekt anzuhängen.
+	</notification>
+	<notification name="YouDiedAndGotTPHome">
+		Sie sind gestorben und wurden nach Hause teleportiert
+	</notification>
+	<notification name="EjectComingSoon">
+		Sie nicht hier nicht mehr zugelassen und haben [EJECT_TIME] Sekunden Zeit, um zu gehen.
+	</notification>
+	<notification name="NoEnterServerFull">
+		Sie können diese Region nicht betreten, da 
+der Server voll ist.
+	</notification>
+	<notification name="SaveBackToInvDisabled">
+		Erneutes Speichern im Inventar ist deaktiviert.
+	</notification>
+	<notification name="NoExistNoSaveToContents">
+		„[OBJ_NAME]“ kann nicht im Objektinhalt gespeichert werden, da das Objekt, aus dem es gerezzt wurde, nicht mehr existiert.
+	</notification>
+	<notification name="NoModNoSaveToContents">
+		„[OBJ_NAME]“ kann nicht in Objektinhalt gespeichert werden, da Sie nicht die Berechtigung zum Modifizieren des Objekts „[DEST_NAME]“ besitzen.
+	</notification>
+	<notification name="NoSaveBackToInvDisabled">
+		„[OBJ_NAME]“ kann nicht erneut im Inventar gespeichert werden – dieser Vorgang wurde deaktiviert.
+	</notification>
+	<notification name="NoCopyNoSelCopy">
+		Sie können Ihre Auswahl nicht kopieren, da Sie nicht die Berechtigung zum Kopieren des Objekts „[OBJ_NAME]“ haben.
+	</notification>
+	<notification name="NoTransNoSelCopy">
+		Sie können Ihre Auswahl nicht kopieren, da das Objekt „[OBJ_NAME]“ nicht übertragbar ist.
+	</notification>
+	<notification name="NoTransNoCopy">
+		Sie können Ihre Auswahl nicht kopieren, da das Objekt „[OBJ_NAME]“ nicht übertragbar ist.
+	</notification>
+	<notification name="NoPermsNoRemoval">
+		Entfernen des Objekts „[OBJ_NAME]“ aus dem Simulator wird vom Berechtigungssystem nicht gestattet.
+	</notification>
+	<notification name="NoModNoSaveSelection">
+		Sie können Ihre Auswahl nicht speichern, da Sie keine Berechtigung zum Modifizieren des Objekts „[OBJ_NAME]“ besitzen.
+	</notification>
+	<notification name="NoCopyNoSaveSelection">
+		Ihre Auswahl kann nicht gespeichert werden, da das Objekt „[OBJ_NAME]“ nicht kopiert werden kann.
+	</notification>
+	<notification name="NoModNoTaking">
+		Sie können Ihre Auswahl nicht in Empfang nehmen, da Sie nicht die Berechtigung zum Modifizieren des Objekts „[OBJ_NAME]“ haben.
+	</notification>
+	<notification name="RezDestInternalError">
+		Interner Fehler: Unbekannter Zielttyp.
+	</notification>
+	<notification name="DeleteFailObjNotFound">
+		Löschen fehlgeschlagen, da Objekt nicht gefunden wurde
+	</notification>
+	<notification name="SorryCantEjectUser">
+		Dieser Benutzer kann nicht hinausgeworfen werden.
+	</notification>
+	<notification name="RegionSezNotAHome">
+		Diese Region gestattet nicht, dass Sie hier Ihr Zuhause festlegen.
+	</notification>
+	<notification name="HomeLocationLimits">
+		Ihr Zuhause kann sich nur auf Ihrem eigenen Land oder in einem Infohub auf dem Mainland befinden.
+	</notification>
+	<notification name="HomePositionSet">
+		Position für Zuhause festgelegt.
+	</notification>
+	<notification name="AvatarEjected">
+		Avatar hinausgeworfen.
+	</notification>
+	<notification name="AvatarEjectFailed">
+		Hinauswerfen fehlgeschlagen, da Sie keine Admin-Berechtigung für diese Parzelle haben.
+	</notification>
+	<notification name="CantMoveObjectParcelFull">
+		Objekt „[OBJECT_NAME]“ kann nicht nach
+[OBJ_POSITION] in Region [REGION_NAME] verschoben werden, da die Parzelle voll ist.
+	</notification>
+	<notification name="CantMoveObjectParcelPerms">
+		Objekt „[OBJECT_NAME]“ kann nicht nach
+[OBJ_POSITION] in Region [REGION_NAME] verschoben werden, da Ihre Objekte auf dieser Parzelle nicht gestattet sind.
+	</notification>
+	<notification name="CantMoveObjectParcelResources">
+		Objekt „[OBJECT_NAME]“ kann nicht nach
+[OBJ_POSITION] in Region [REGION_NAME] verschoben werden, da nicht genügend Ressourcen für dieses Objekt auf dieser Parzelle vorhanden sind.
+	</notification>
+	<notification name="CantMoveObjectRegionVersion">
+		Objekt „[OBJECT_NAME]“ kann nicht nach
+[OBJ_POSITION] in Region [REGION_NAME] verschoben werden, da die andere Region eine ältere Version verwendet, die das Empfangen dieses Objekts per Regionswechsel nicht unterstützt.
+	</notification>
+	<notification name="CantMoveObjectNavMesh">
+		Objekt „[OBJECT_NAME]“ kann nicht nach
+[OBJ_POSITION] in Region [REGION_NAME] verschoben werden, da Sie das Navmesh nicht regionsübergreifend modifizieren können.
+	</notification>
+	<notification name="CantMoveObjectWTF">
+		Objekt „[OBJECT_NAME]“ kann nicht nach
+[OBJ_POSITION] in Region [REGION_NAME] verschoben werden, da ein unbekannter Fehler vorliegt. ([FAILURE_TYPE])
+	</notification>
+	<notification name="NoPermModifyObject">
+		Ihnen fehlt die Berechtigung zum Modifizieren dieses Objekts.
+	</notification>
+	<notification name="CantEnablePhysObjContributesToNav">
+		Physik kann nicht für ein Objekt aktiviert werden, das zum Navmesh beiträgt.
+	</notification>
+	<notification name="CantEnablePhysKeyframedObj">
+		Physik für Keyframe-Objekte kann nicht aktiviert werden.
+	</notification>
+	<notification name="CantEnablePhysNotEnoughLandResources">
+		Physik für Objekte kann nicht aktiviert werden – nicht genügend Landressourcen.
+	</notification>
+	<notification name="CantEnablePhysCostTooGreat">
+		Physik für Objekt mit Physikressourcenkosten höher als [MAX_OBJECTS] kann nicht aktiviert werden.
+	</notification>
+	<notification name="PhantomWithConcavePiece">
+		Dieses Objekt kann kein konkaves Teil enthalten, da es ein Phantom ist und zum Navmesh beiträgt.
+	</notification>
+	<notification name="UnableAddItem">
+		Objekt konnte nicht hinzugefügt werden.
+	</notification>
+	<notification name="UnableEditItem">
+		Kein Bearbeiten möglich.
+	</notification>
+	<notification name="NoPermToEdit">
+		Bearbeiten nicht gestattet.
+	</notification>
+	<notification name="NoPermToCopyInventory">
+		Kopieren dieses Inventars nicht gestattet.
+	</notification>
+	<notification name="CantSaveItemDoesntExist">
+		Kein Speichern in Objektinhalt möglich: Objekt nicht mehr vorhanden.
+	</notification>
+	<notification name="CantSaveItemAlreadyExists">
+		Kein Speichern in Objektinhalt möglich: Artikel mit diesem Namen ist bereits im Inventar vorhanden.
+	</notification>
+	<notification name="CantSaveModifyAttachment">
+		Kein Speichern in Objektinhalt möglich: Dadurch würden die Anhängeberechtigungen geändert.
+	</notification>
+	<notification name="TooManyScripts">
+		Zu viele Skripts.
+	</notification>
+	<notification name="UnableAddScript">
+		Skript konnte nicht hinzugefügt werden.
+	</notification>
+	<notification name="AssetServerTimeoutObjReturn">
+		Asset-Server hat nicht rechtzeitig reagiert.  Objekt wurde zum Sim zurückübertragen.
+	</notification>
+	<notification name="RegionDisablePhysicsShapes">
+		In dieser Region sind keine Physikformen aktiviert.
+	</notification>
+	<notification name="NoModNavmeshAcrossRegions">
+		Sie können das Navmesh nicht regionsübergreifend modifizieren.
+	</notification>
+	<notification name="NoSetPhysicsPropertiesOnObjectType">
+		Für diesen Objekttyp können keine Physikeigenschaften gesetzt werden.
+	</notification>
+	<notification name="NoSetRootPrimWithNoShape">
+		Hauptprim kann nicht auf formlos eingestellt werden.
+	</notification>
+	<notification name="NoRegionSupportPhysMats">
+		In dieser Region sind keine Physikmaterialien aktiviert.
+	</notification>
+	<notification name="OnlyRootPrimPhysMats">
+		Nur bei Hauptprims können die Physikmaterialien angepasst werden.
+	</notification>
+	<notification name="NoSupportCharacterPhysMats">
+		Die Anwendung von Physikmaterialien auf Personen wird noch nicht unterstützt.
+	</notification>
+	<notification name="InvalidPhysMatProperty">
+		Eine oder mehrere der angegebenen Eigenschaften für Physikmaterialien waren ungültig.
+	</notification>
+	<notification name="NoPermsAlterStitchingMeshObj">
+		Sie können den Nahttyp eines Mesh-Objekts nicht ändern.
+	</notification>
+	<notification name="NoPermsAlterShapeMeshObj">
+		Sie können die Form eines Mesh-Objekts nicht ändern.
+	</notification>
+	<notification name="FullRegionCantEnter">
+		Sie können diese Region nicht betreten, \nda die Region voll ist.
+	</notification>
+	<notification name="LinkFailedOwnersDiffer">
+		Verknüpfungsfehler – Eigentümer sind unterschiedlich
+	</notification>
+	<notification name="LinkFailedNoModNavmeshAcrossRegions">
+		Verknüpfungsfehler – Navmesh kann nicht regionsübergreifend modifiziert werden.
+	</notification>
+	<notification name="LinkFailedNoPermToEdit">
+		Verknüpfungsfehler, da Sie keine Berechtigung zum Bearbeiten haben.
+	</notification>
+	<notification name="LinkFailedTooManyPrims">
+		Verknüpfungsfehler – zu viele Primitive
+	</notification>
+	<notification name="LinkFailedCantLinkNoCopyNoTrans">
+		Verknüpfungsfehler – nichtkopierfähige Objekte können nicht mit nichtübertragungsfähigen Objekten verknüpft werden
+	</notification>
+	<notification name="LinkFailedNothingLinkable">
+		Verknüpfungsfehler – nichts zum Verknüpfen vorhanden.
+	</notification>
+	<notification name="LinkFailedTooManyPathfindingChars">
+		Verknüpfungsfehler – zu viele Pathfinding-Figuren
+	</notification>
+	<notification name="LinkFailedInsufficientLand">
+		Verknüpfungsfehler – nicht genügend Landressourcen
+	</notification>
+	<notification name="LinkFailedTooMuchPhysics">
+		Objekt verwendet zu viele Physikressourcen – seine Dynamik wurde deaktiviert.
+	</notification>
+	<notification name="TeleportedHomeByObjectOnParcel">
+		Sie wurden vom Objekt „[OBJECT_NAME]“ auf der Parzelle „[PARCEL_NAME]“ nach Hause teleportiert
+	</notification>
+	<notification name="TeleportedHomeByObject">
+		Sie wurden von Objekt „[OBJECT_NAME]“ nach Hause teleportiert.
+	</notification>
+	<notification name="TeleportedByAttachment">
+		Sie wurden von einem Anhang an [ITEM_ID] teleportiert
+	</notification>
+	<notification name="TeleportedByObjectOnParcel">
+		Sie wurden von Objekt „[OBJECT_NAME]“ auf der Parzelle „[PARCEL_NAME]“ teleportiert
+	</notification>
+	<notification name="TeleportedByObjectOwnedBy">
+		Sie wurden von Objekt „[OBJECT_NAME]“, das [OWNER_ID] gehört, teleportiert
+	</notification>
+	<notification name="TeleportedByObjectUnknownUser">
+		Sie wurden von Objekt „[OBJECT_NAME]“, das einem unbekannten Benutzer gehört, teleportiert.
+	</notification>
+	<notification name="CantCreateObjectRegionFull">
+		Angefordertes Objekt kann nicht erstellt werden. Die Region ist voll.
+	</notification>
+	<notification name="CantAttackMultipleObjOneSpot">
+		Sie können nicht mehrere Objekte an ein und derselben Stelle anhängen.
+	</notification>
+	<notification name="CantCreateMultipleObjAtLoc">
+		Sie können hier nicht mehrere Objekte erstellen.
+	</notification>
+	<notification name="UnableToCreateObjTimeOut">
+		Angefordertes Objekt kann nicht erstellt werden. Objekt fehlt in Datenbank.
+	</notification>
+	<notification name="UnableToCreateObjUnknown">
+		Angefordertes Objekt kann nicht erstellt werden. Zeitüberschreitung bei Anforderung. Versuchen Sie es erneut.
+	</notification>
+	<notification name="UnableToCreateObjMissingFromDB">
+		Angefordertes Objekt kann nicht erstellt werden. Versuchen Sie es erneut.
+	</notification>
+	<notification name="RezFailureTookTooLong">
+		Fehler beim Rezzen; Laden des angeforderten Objekts hat zu lang gedauert.
+	</notification>
+	<notification name="FailedToPlaceObjAtLoc">
+		Objekt konnte nicht an angegebenem Ort platziert werden.  Versuchen Sie es erneut.
+	</notification>
+	<notification name="CantCreatePlantsOnLand">
+		Auf diesem Land können keine Pflanzen erstellt werden.
+	</notification>
+	<notification name="CantRestoreObjectNoWorldPos">
+		Objekt kann nicht wiederhergestellt werden. Keine Weltposition gefunden.
+	</notification>
+	<notification name="CantRezObjectInvalidMeshData">
+		Objekt kann nicht gerezzt werden, da seine Meshdaten ungültig sind.
+	</notification>
+	<notification name="CantRezObjectTooManyScripts">
+		Objekt kann nicht gerezzt werden, da die Region bereits zu viele Skripts aufweist.
+	</notification>
+	<notification name="CantCreateObjectNoAccess">
+		Ihr Zugangsberechtigungen gestatten nicht das Erstellen von Objekten an dieser Stelle.
+	</notification>
+	<notification name="CantCreateObject">
+		Sie können gegenwärtig keine Objekte erstellen.
+	</notification>
+	<notification name="InvalidObjectParams">
+		Ungültige Objektparameter
+	</notification>
+	<notification name="CantDuplicateObjectNoAcess">
+		Ihre Zugangsberechtigungen gestatten nicht das Duplizieren von Objekten an dieser Stelle.
+	</notification>
+	<notification name="CantChangeShape">
+		Sie können diese Form nicht ändern.
+	</notification>
+	<notification name="NoAccessToClaimObjects">
+		Ihr Zugangsberechtigungen gestatten nicht das Beanspruchen von Objekten an dieser Stelle.
+	</notification>
+	<notification name="DeedFailedNoPermToDeedForGroup">
+		Übertragung fehlgeschlagen, da Sie keine Berechtigung zum Übertragen von Objekten für Ihre Gruppe haben.
+	</notification>
+	<notification name="NoPrivsToBuyObject">
+		Ihr Zugangsberechtigungen gestatten nicht das Kaufen von Objekten an dieser Stelle.
+	</notification>
+	<notification name="CantAttachObjectAvatarSittingOnIt">
+		Objekt kann nicht angehängt werden, da ein Avatar darauf sitzt.
+	</notification>
+	<notification name="WhyAreYouTryingToWearShrubbery">
+		Bäume und Gräser können nicht als Anhänge getragen werden.
+	</notification>
+	<notification name="CantAttachGroupOwnedObjs">
+		Objekte im Gruppenbesitz können nicht angehängt werden.
+	</notification>
+	<notification name="CantAttachObjectsNotOwned">
+		Objekte, die Ihnen nicht gehören, können nicht angehängt werden.
+	</notification>
+	<notification name="CantAttachNavmeshObjects">
+		Objekte, die zum Navmesh beitragen, können nicht angehängt werden.
+	</notification>
+	<notification name="CantAttachObjectNoMovePermissions">
+		Objekt kann nicht angehängt werden, weil Sie es nicht verschieben dürfen.
+	</notification>
+	<notification name="CantAttachNotEnoughScriptResources">
+		Nicht genügend Skriptressourcen verfügbar, um Objekt anzuhängen.
+	</notification>
+	<notification name="CantDropItemTrialUser">
+		Ablegen von Objekten hier nicht möglich; versuchen Sie es mit dem kostenlosen Testbereich.
+	</notification>
+	<notification name="CantDropMeshAttachment">
+		Sie können keine Mesh-Anhänge ablegen. In Inventar zurückführen und inworld rezzen.
+	</notification>
+	<notification name="CantDropAttachmentNoPermission">
+		Anhang konnte nicht abgelegt werden: Ihnen fehlt die Berechtigung zum Ablegen an dieser Stelle.
+	</notification>
+	<notification name="CantDropAttachmentInsufficientLandResources">
+		Anhang konnte nicht abgelegt werden: nicht genügend Landressourcen verfügbar.
+	</notification>
+	<notification name="CantDropAttachmentInsufficientResources">
+		Anhänge konnten nicht abgelegt werden: nicht genügend Ressourcen.
+	</notification>
+	<notification name="CantDropObjectFullParcel">
+		Objekt kann nicht hier abgelegt werden.  Die Parzelle ist voll.
+	</notification>
+	<notification name="CantTouchObjectBannedFromParcel">
+		Dieses Objekt kann nicht berührt/angefasst werden, da Sie von der Landparzelle verbannt sind.
+	</notification>
+	<notification name="PlzNarrowDeleteParams">
+		Grenzen Sie Ihre Löschparameter ein.
+	</notification>
+	<notification name="UnableToUploadAsset">
+		Asset kann nicht hochgeladen werden.
+	</notification>
+	<notification name="CantTeleportCouldNotFindUser">
+		Keinen Benutzer zum Teleportieren nach Hause gefunden
+	</notification>
+	<notification name="GodlikeRequestFailed">
+		Anforderdung nach übernatürlichen Kräften fehlgeschlagen
+	</notification>
+	<notification name="GenericRequestFailed">
+		generische Anforderdung fehlgeschlagen
+	</notification>
+	<notification name="CantUploadPostcard">
+		Postkarte kann nicht hochgeladen werden.  Versuchen Sie es später erneut.
+	</notification>
+	<notification name="CantFetchInventoryForGroupNotice">
+		Inventardetails für Gruppenmitteilung kann nicht abgerufen werden.
+	</notification>
+	<notification name="CantSendGroupNoticeNotPermitted">
+		Gruppenmitteilung kann nicht gesendet werden – Vorgang nicht gestattet.
+	</notification>
+	<notification name="CantSendGroupNoticeCantConstructInventory">
+		Gruppenmitteilung kann nicht gesendet werden – Bauen von Inventar nicht möglich.
+	</notification>
+	<notification name="CantParceInventoryInNotice">
+		Inventar in Mitteilung kann nicht geparst werden.
+	</notification>
+	<notification name="TerrainUploadFailed">
+		Fehler beim Hochladen von Terrain.
+	</notification>
+	<notification name="TerrainFileWritten">
+		Terraindatei geschrieben.
+	</notification>
+	<notification name="TerrainFileWrittenStartingDownload">
+		Terraindatei geschrieben, Download beginnt...
+	</notification>
+	<notification name="TerrainBaked">
+		Terrain geformt.
+	</notification>
+	<notification name="TenObjectsDisabledPlzRefresh">
+		Nur die ersten 10 ausgewählten Objekte wurden deaktiviert. Aktualisieren Sie die Anzeige und wählen Sie ggf. weitere Objekte aus.
+	</notification>
+	<notification name="UpdateViewerBuyParcel">
+		Um diese Parzelle zu kaufen, müssen Sie Ihren Viewer aktualisieren.
+	</notification>
+	<notification name="CantBuyParcelNotForSale">
+		Kein Kauf möglich; die ausgewählte Parzelle steht nicht zum Verkauf.
+	</notification>
+	<notification name="CantBuySalePriceOrLandAreaChanged">
+		Kein Kauf möglich, da sich der Verkaufspreis oder die Fläche geändert haben.
+	</notification>
+	<notification name="CantBuyParcelNotAuthorized">
+		Sie sind nicht der autorisierte Käufer dieser Parzelle.
+	</notification>
+	<notification name="CantBuyParcelAwaitingPurchaseAuth">
+		Sie können diese Parzelle nicht kaufen, da sie bereits auf Kaufauthorisierung wartet.
+	</notification>
+	<notification name="CantBuildOverflowParcel">
+		Sie können hier keine Objekte bauen, denn dies würde den Rahmen der Parzelle sprengen.
+	</notification>
+	<notification name="SelectedMultipleOwnedLand">
+		Sie haben Land mit unterschiedlichen Besitzern ausgewählt. Wählen Sie ein kleineres Gebiet aus und versuchen Sie es erneut.
+	</notification>
+	<notification name="CantJoinTooFewLeasedParcels">
+		Auswahl enthält nicht genügend gemietete Parzellen zum Zusammenlegen.
+	</notification>
+	<notification name="CantDivideLandMultipleParcelsSelected">
+		Land kann nicht geteilt werden.\nMehr als eine Parzelle ist ausgewählt.\nWählen Sie ein kleineres Stück Land aus.
+	</notification>
+	<notification name="CantDivideLandCantFindParcel">
+		Land kann nicht geteilt werden.\nParzelle nicht auffindbar.\nMelden Sie das Problem über „Hilfe“ -&gt; „Fehler melden“...
+	</notification>
+	<notification name="CantDivideLandWholeParcelSelected">
+		Land kann nicht geteilt werden. Die gesamte Parzelle ist ausgewählt.\nWählen Sie ein kleineres Stück Land aus.
+	</notification>
+	<notification name="LandHasBeenDivided">
+		Land wurde geteilt.
+	</notification>
+	<notification name="PassPurchased">
+		Sie haben einen Pass gekauft.
+	</notification>
+	<notification name="RegionDisallowsClassifieds">
+		Region lässt keine Werbung zu.
+	</notification>
+	<notification name="LandPassExpireSoon">
+		Ihr Pass für dieses Land läuft demnächst ab.
+	</notification>
+	<notification name="CantSitNoSuitableSurface">
+		Keine geeignete Oberfläche zum Sitzen; probieren Sie es an einer anderen Stelle.
+	</notification>
+	<notification name="CantSitNoRoom">
+		Kein Platz zum Hinsetzen; probieren Sie es an einer anderen Stelle.
+	</notification>
+	<notification name="ClaimObjectFailedNoPermission">
+		Objektbeanspruchung fehlgeschlagen, da Sie keine Berechtigung haben.
+	</notification>
+	<notification name="ClaimObjectFailedNoMoney">
+		Objektbeanspruchung fehlgeschlagen, da Sie nicht genügend L$ haben.
+	</notification>
+	<notification name="CantDeedGroupLand">
+		Land in Gruppenbesitz kann nicht übertragen werden.
+	</notification>
+	<notification name="BuyObjectFailedNoMoney">
+		Objektkauf fehlgeschlagen, da Sie nicht genügend L$ haben.
+	</notification>
+	<notification name="BuyInventoryFailedNoMoney">
+		Inventarkauf fehlgeschlagen, da Sie nicht genügend L$ haben.
+	</notification>
+	<notification name="BuyPassFailedNoMoney">
+		Sie haben nicht genügend L$, um einen Pass für dieses Land zu kaufen.
+	</notification>
+	<notification name="CantBuyPassTryAgain">
+		Passkauf momentan nicht möglich.  Versuchen Sie es später erneut.
+	</notification>
+	<notification name="CantCreateObjectParcelFull">
+		Objekt kann nicht erstellt werden, \nda die Parzelle voll ist.
+	</notification>
+	<notification name="FailedPlacingObject">
+		Objekt konnte nicht an festgelegtem Ort platziert werden.  Versuchen Sie es erneut.
+	</notification>
+	<notification name="CantCreateLandmarkForEvent">
+		Landmarke für dieses Ereignis kann nicht erstellt werden.
+	</notification>
+	<notification name="GodBeatsFreeze">
+		Ihre übernatürlichen Kräfte heben das Einfrieren auf!
+	</notification>
+	<notification name="SpecialPowersRequestFailedLogged">
+		Anforderung nach Superpower fehlgeschlagen. Diese Anforderung wurde protokolliert.
+	</notification>
+	<notification name="ExpireExplanation">
+		Das System kann Ihre Anfrage momentan nicht verarbeiten. Zeitüberschreitung bei Anforderung.
+	</notification>
+	<notification name="DieExplanation">
+		Das System kann Ihre Anfrage nicht verarbeiten.
+	</notification>
+	<notification name="AddPrimitiveFailure">
+		Sie haben nicht genügend Geld, um Primitive zu erstellen.
+	</notification>
+	<notification name="RezObjectFailure">
+		Sie haben nicht genügend Geld, um Objekt zu erstellen.
+	</notification>
+	<notification name="ResetHomePositionNotLegal">
+		Zuhause-Position neu festlegen, da Zuhause nicht zulässig war.
+	</notification>
+	<notification name="CantInviteRegionFull">
+		Sie können gegenwärtig niemanden an Ihren Standort einladen, da die Region voll ist. Versuchen Sie es später erneut.
+	</notification>
+	<notification name="CantSetHomeAtRegion">
+		Diese Region gestattet nicht, dass Sie hier Ihr Zuhause festlegen.
+	</notification>
+	<notification name="ListValidHomeLocations">
+		Ihr Zuhause kann sich nur auf Ihrem eigenen Land oder in einem Infohub auf dem Mainland befinden.
+	</notification>
+	<notification name="SetHomePosition">
+		Position für Zuhause festgelegt.
+	</notification>
+	<notification name="CantDerezInventoryError">
+		Aufgrund eines Inventarfehlers kann das Rezzen dieses Objekts nicht aufgehoben werden.
+	</notification>
+	<notification name="CantCreateRequestedInv">
+		Angefordertes Inventar kann nicht erstellt werden.
+	</notification>
+	<notification name="CantCreateRequestedInvFolder">
+		Angeforderter Inventarordner kann nicht erstellt werden.
+	</notification>
+	<notification name="CantCreateInventory">
+		Dieses Inventar kann nicht erstellt werden.
+	</notification>
+	<notification name="CantCreateLandmark">
+		Landmarke kann nicht erstellt werden.
+	</notification>
+	<notification name="CantCreateOutfit">
+		Im Moment kann kein Outfit erstellt werden. Versuchen Sie es gleich noch einmal.
+	</notification>
+	<notification name="InventoryNotForSale">
+		Inventar steht nicht zum Verkauf.
+	</notification>
+	<notification name="CantFindInvItem">
+		Inventarobjekt kann nicht gefunden werden.
+	</notification>
+	<notification name="CantFindObject">
+		Objekt kann nicht gefunden werden.
+	</notification>
+	<notification name="CantTransfterMoneyRegionDisabled">
+		Geldüberweisungen an Objekte sind in dieser Region gegenwärtig deaktiviert.
+	</notification>
+	<notification name="CantPayNoAgent">
+		Nicht ersichtlich, wer bezahlt werden muss.
+	</notification>
+	<notification name="CantDonateToPublicObjects">
+		Sie können öffentlichen Objekten keine L$ geben.
+	</notification>
+	<notification name="InventoryCreationInWorldObjectFailed">
+		Inventarerstellung für Inworld-Objekt fehlgeschlagen.
+	</notification>
+	<notification name="UserBalanceOrLandUsageError">
+		Aufgrund eines internen Fehlers konnte Ihr Viewer nicht ordnungsgemäß aktualisiert werden.  Der in Ihrem Viewer angezeigte L$-Kontostand oder Parzellenbesitz stimmt möglicherweise nicht mit dem aktuellen Stand auf den Servern überein.
+	</notification>
+	<notification name="LargePrimAgentIntersect">
+		Große Prims, die sich mit anderen Spielern überschneiden, können nicht erstellt werden.  Bitte erneut versuchen, wenn sich die anderen Spieler bewegt haben.
+	</notification>
+	<notification name="PreferenceChatClearLog">
+		Dadurch werden die Protokolle vorheriger Unterhaltungen und alle Backups dieser Datei gelöscht.
+		<usetemplate ignoretext="Löschen des Protokolls vorheriger Unterhaltungen bestätigen." name="okcancelignore" notext="Abbrechen" yestext="OK"/>
+	</notification>
+	<notification name="PreferenceChatDeleteTranscripts">
+		Dadurch werden die Transkripte aller vorherigen Unterhaltungen gelöscht. Die Liste vergangener Unterhaltungen ist davon nicht betroffen. Alle Dateien mit den Suffixen .txt und txt.backup im Order [FOLDER] werden gelöscht.
+		<usetemplate ignoretext="Um Bestätigung bitten, bevor ich Transkripte lösche." name="okcancelignore" notext="Abbrechen" yestext="OK"/>
+	</notification>
+	<notification name="PreferenceChatPathChanged">
+		Dateien können nicht verschoben werden. Vorheriger Pfad wurde wiederhergestellt.
+		<usetemplate ignoretext="Dateien können nicht verschoben werden. Vorheriger Pfad wurde wiederhergestellt." name="okignore" yestext="OK"/>
+	</notification>
 </notifications>
diff --git a/indra/newview/skins/default/xui/de/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/de/panel_avatar_list_item.xml
index dcfcffa6e2f..79a2ebe9df9 100644
--- a/indra/newview/skins/default/xui/de/panel_avatar_list_item.xml
+++ b/indra/newview/skins/default/xui/de/panel_avatar_list_item.xml
@@ -27,5 +27,6 @@
 	<icon name="permission_edit_mine_icon" tool_tip="Dieser Freund kann Ihre Objekte bearbeiten, löschen und an sich nehmen"/>
 	<icon name="permission_map_icon" tool_tip="Dieser Freund kann Sie auf der Karte finden"/>
 	<icon name="permission_online_icon" tool_tip="Dieser Freund kann sehen, wenn Sie online sind"/>
+	<button name="info_btn" tool_tip="Mehr Infos"/>
 	<button name="profile_btn" tool_tip="Profil anzeigen"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/de/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/de/panel_block_list_sidetray.xml
index 2d140515d4f..c105a5b8a35 100644
--- a/indra/newview/skins/default/xui/de/panel_block_list_sidetray.xml
+++ b/indra/newview/skins/default/xui/de/panel_block_list_sidetray.xml
@@ -1,10 +1,11 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="block_list_panel" width="300">
-	<text left_pad="5" name="title_text" width="260">
-		Liste der ignorierten Einwohner
-	</text>
-	<scroll_list name="blocked" tool_tip="Liste der zur Zeit ignorierten Einwohner" width="290"/>
-	<button label="Einwohner ignorieren" label_selected="Einwohner ignorieren..." name="Block resident..." tool_tip="Wählen Sie einen Einwohner, um ihn zu ignorieren"/>
-	<button label="Objekt nach Name ignorieren" label_selected="Objekt nach Name ignorieren..." name="Block object by name..." tool_tip="Ein Objekt auswählen, um nach Namen zu ignorieren."/>
-	<button label="Freischalten" label_selected="Freischalten" name="Unblock" tool_tip="Einwohner oder Objekt von der Liste der ignorierten Einwohner oder Objekte entfernen"/>
+	<panel label="bottom_panel" name="blocked_buttons_panel">
+		<filter_editor label="Filtern" name="blocked_filter_input"/>
+		<menu_button name="blocked_gear_btn" tool_tip="Aktionen für ausgewählte(s) Person/Objekt"/>
+		<menu_button name="view_btn" tool_tip="Sortieroptionen"/>
+		<menu_button name="plus_btn" tool_tip="Einwohner oder Objekt zum ignorieren auswählen"/>
+		<button name="unblock_btn" tool_tip="Einwohner oder Objekt aus der Liste der ignorierten Einwohner oder Objekte entfernen"/>
+	</panel>
+	<block_list name="blocked" tool_tip="Liste der zur Zeit ignorierten Einwohner" width="290"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/de/panel_conversation_list_item.xml b/indra/newview/skins/default/xui/de/panel_conversation_list_item.xml
new file mode 100644
index 00000000000..a9bfe4754ee
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/panel_conversation_list_item.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="conversation_list_item">
+	<layout_stack name="conversation_item_stack">
+		<layout_panel name="conversation_title_panel">
+			<text name="conversation_title" value="(laden)"/>
+		</layout_panel>
+	</layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_conversation_log_list_item.xml b/indra/newview/skins/default/xui/de/panel_conversation_log_list_item.xml
new file mode 100644
index 00000000000..afeaa14e819
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/panel_conversation_log_list_item.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="conversation_log_list_item">
+	<icon name="voice_session_icon" tool_tip="Enthielt eine Voice-Unterhaltung"/>
+	<icon name="unread_ims_icon" tool_tip="Nachrichten trafen ein, während Sie abgemeldet waren"/>
+	<button name="delete_btn" tool_tip="Diesen Eintrag entfernen"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_group_list_item.xml b/indra/newview/skins/default/xui/de/panel_group_list_item.xml
index d097a2b18c3..fc911a64dff 100644
--- a/indra/newview/skins/default/xui/de/panel_group_list_item.xml
+++ b/indra/newview/skins/default/xui/de/panel_group_list_item.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="group_list_item">
 	<text name="group_name" value="Unbekannt"/>
+	<button name="info_btn" tool_tip="Mehr Infos"/>
 	<button name="profile_btn" tool_tip="Profil anzeigen"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/de/panel_people.xml b/indra/newview/skins/default/xui/de/panel_people.xml
index 4e76147746c..8c05ca2c247 100644
--- a/indra/newview/skins/default/xui/de/panel_people.xml
+++ b/indra/newview/skins/default/xui/de/panel_people.xml
@@ -14,81 +14,53 @@ Sie suchen nach Leuten? Verwenden Sie die [secondlife:///app/worldmap Karte].
 	<string name="no_filtered_friends_msg">
 		Sie haben nicht das Richtige gefunden? Versuchen Sie es mit der [secondlife:///app/search/people/[SEARCH_TERM] Suche].
 	</string>
-	<string name="people_filter_label" value="Nach Leuten filtern"/>
-	<string name="groups_filter_label" value="Nach Gruppen filtern"/>
 	<string name="no_filtered_groups_msg" value="Sie haben nicht das Richtige gefunden? Versuchen Sie es mit der [secondlife:///app/search/groups/[SEARCH_TERM] Suche]."/>
 	<string name="no_groups_msg" value="Suchen Sie nach Gruppen? Versuchen Sie es mit der [secondlife:///app/search/groups Suche]."/>
 	<string name="MiniMapToolTipMsg" value="[REGION](Doppelklicken, um Karte zu öffnen; Umschalttaste gedrückt halten und ziehen, um zu schwenken)"/>
 	<string name="AltMiniMapToolTipMsg" value="[REGION](Doppelklicken, um zu teleportieren; Umschalttaste gedrückt halten und ziehen, um zu schwenken)"/>
-	<filter_editor label="Filter" name="filter_input"/>
 	<tab_container name="tabs">
 		<panel label="IN DER NÄHE" name="nearby_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<menu_button name="nearby_view_sort_btn" tool_tip="Optionen"/>
-				<button name="add_friend_btn" tool_tip="Ausgewählten Einwohner zur Freundeliste hinzufügen"/>
+			<panel label="bottom_panel" name="nearby_buttons_panel">
+				<filter_editor label="Nach Personen filtern" name="nearby_filter_input"/>
+				<button name="gear_btn" tool_tip="Aktionen für ausgewählte Person"/>
+				<menu_button name="nearby_view_btn" tool_tip="Anzeige-/Sortieroptionen"/>
+				<button name="add_friend_btn" tool_tip="Einem Einwohner die Freundschaft anbieten"/>
+				<dnd_button name="nearby_del_btn" tool_tip="Ausgewählte Person als Freund entfernen"/>
 			</panel>
 		</panel>
-		<panel label="MEINE FREUNDE" name="friends_panel">
+		<panel label="FREUNDE" name="friends_panel">
+			<panel label="bottom_panel" name="friends_buttons_panel">
+				<filter_editor label="Nach Personen filtern" name="friends_filter_input"/>
+				<button name="gear_btn" tool_tip="Aktionen für ausgewählte Person"/>
+				<menu_button name="friends_view_btn" tool_tip="Anzeige-/Sortieroptionen"/>
+				<button name="friends_add_btn" tool_tip="Einem Einwohner die Freundschaft anbieten"/>
+				<dnd_button name="friends_del_btn" tool_tip="Ausgewählte Person als Freund entfernen"/>
+			</panel>
 			<accordion name="friends_accordion">
 				<accordion_tab name="tab_online" title="Online"/>
 				<accordion_tab name="tab_all" title="Alle"/>
 			</accordion>
-			<panel label="bottom_panel" name="bottom_panel">
-				<layout_stack name="bottom_panel">
-					<layout_panel name="options_gear_btn_panel">
-						<menu_button name="friends_viewsort_btn" tool_tip="Zusätzliche Optionen anzeigen"/>
-					</layout_panel>
-					<layout_panel name="add_btn_panel">
-						<button name="add_btn" tool_tip="Bieten Sie einem Einwohner die Freundschaft an"/>
-					</layout_panel>
-					<layout_panel name="trash_btn_panel">
-						<dnd_button name="del_btn" tool_tip="Ausgewählte Person aus Ihrer Freundesliste entfernen"/>
-					</layout_panel>
-				</layout_stack>
-			</panel>
 		</panel>
-		<panel label="MEINE GRUPPEN" name="groups_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<menu_button name="groups_viewsort_btn" tool_tip="Optionen"/>
-				<button name="plus_btn" tool_tip="Gruppe beitreten/Neue Gruppe erstellen"/>
-				<button name="activate_btn" tool_tip="Ausgewählte Gruppe aktivieren"/>
+		<panel label="GRUPPEN" name="groups_panel">
+			<panel label="bottom_panel" name="groups_buttons_panel">
+				<filter_editor label="Nach Gruppen filtern" name="groups_filter_input"/>
+				<menu_button name="groups_gear_btn" tool_tip="Aktionen für ausgewählte Gruppe"/>
+				<menu_button name="groups_view_btn" tool_tip="Anzeige-/Sortieroptionen"/>
+				<menu_button name="plus_btn" tool_tip="Gruppe beitreten/Neue Gruppe erstellen"/>
+				<dnd_button name="minus_btn" tool_tip="Ausgewählte Gruppe verlassen"/>
 			</panel>
 		</panel>
 		<panel label="AKTUELL" name="recent_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<menu_button name="recent_viewsort_btn" tool_tip="Optionen"/>
-				<button name="add_friend_btn" tool_tip="Ausgewählten Einwohner zur Freundeliste hinzufügen"/>
+			<panel label="bottom_panel" name="recent_buttons_panel">
+				<filter_editor label="Nach Personen filtern" name="recent_filter_input"/>
+				<button name="gear_btn" tool_tip="Aktionen für ausgewählte Person"/>
+				<menu_button name="recent_view_btn" tool_tip="Anzeige-/Sortieroptionen"/>
+				<button name="add_friend_btn" tool_tip="Einem Einwohner die Freundschaft anbieten"/>
+				<dnd_button name="recent_del_btn" tool_tip="Ausgewählte Person als Freund entfernen"/>
 			</panel>
 		</panel>
+		<panel label="IGNORIERT" name="blocked_panel">
+			<panel label="Ignorierte Einwohner und Objekte" name="panel_block_list_sidetray"/>
+		</panel>
 	</tab_container>
-	<panel name="button_bar">
-		<layout_stack name="bottom_bar_ls">
-			<layout_panel name="view_profile_btn_lp">
-				<button label="Profil" name="view_profile_btn" tool_tip="Bilder, Gruppen und andere Einwohner-Informationen anzeigen"/>
-			</layout_panel>
-			<layout_panel name="im_btn_lp">
-				<button label="IM" name="im_btn" tool_tip="IM-Sitzung öffnen"/>
-			</layout_panel>
-			<layout_panel name="call_btn_lp">
-				<button label="Anrufen" name="call_btn" tool_tip="Diesen Einwohner anrufen"/>
-			</layout_panel>
-			<layout_panel name="share_btn_lp">
-				<button label="Freigeben" name="share_btn" tool_tip="Inventarobjekt freigeben"/>
-			</layout_panel>
-			<layout_panel name="teleport_btn_lp">
-				<button label="Teleportieren" name="teleport_btn" tool_tip="Teleport anbieten"/>
-			</layout_panel>
-		</layout_stack>
-		<layout_stack name="bottom_bar_ls1">
-			<layout_panel name="group_info_btn_lp">
-				<button label="Gruppenprofil" name="group_info_btn" tool_tip="Gruppeninformationen anzeigen"/>
-			</layout_panel>
-			<layout_panel name="chat_btn_lp">
-				<button label="Gruppen-Chat" name="chat_btn" tool_tip="Chat öffnen"/>
-			</layout_panel>
-			<layout_panel name="group_call_btn_lp">
-				<button label="Gruppe anrufen" name="group_call_btn" tool_tip="Diese Gruppe anrufen"/>
-			</layout_panel>
-		</layout_stack>
-	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/de/panel_preferences_chat.xml b/indra/newview/skins/default/xui/de/panel_preferences_chat.xml
index c9ae3501473..8193fd42c11 100644
--- a/indra/newview/skins/default/xui/de/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/de/panel_preferences_chat.xml
@@ -1,34 +1,86 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Text-Chat" name="chat">
-	<text name="font_size">
-		Schriftgröße:
-	</text>
-	<radio_group name="chat_font_size">
-		<radio_item label="Klein" name="radio" value="0"/>
-		<radio_item label="Mittel" name="radio2" value="1"/>
-		<radio_item label="Groß" name="radio3" value="2"/>
-	</radio_group>
-	<check_box initial_value="true" label="Beim Chatten Tippanimation abspielen" name="play_typing_animation"/>
-	<check_box label="IMs per Email zuschicken, wenn ich offline bin" name="send_im_to_email"/>
-	<check_box label="Kompakten IM- und Text-Chatverlauf aktivieren" name="plain_text_chat_history"/>
-	<check_box label="Blasen-Chat" name="bubble_text_chat"/>
-	<text name="show_ims_in_label">
-		IMs anzeigen in:
-	</text>
-	<text name="requires_restart_label">
-		(Neustart erforderlich)
-	</text>
-	<radio_group name="chat_window" tool_tip="Zeigen Sie Ihre Sofortnachrichten (Instant Messages) in einem anderen Fenster oder in einem einzigen Fenster mit vielen Registerkarten an (Neustart erforderlich).">
-		<radio_item label="Getrennte Fenster" name="radio" value="0"/>
-		<radio_item label="Registerkarten" name="radio2" value="1"/>
-	</radio_group>
-	<text name="disable_toast_label">
-		Popups für eingehende Chats aktivieren:
-	</text>
-	<check_box label="Gruppen-Chats" name="EnableGroupChatPopups" tool_tip="Markieren, um Popups zu sehen, wenn Gruppen-Chat-Message eintrifft"/>
-	<check_box label="IM-Chats" name="EnableIMChatPopups" tool_tip="Markieren, um Popups zu sehen, wenn Instant Message eintrifft"/>
-	<spinner label="Lebenszeit von Toasts für Chat in der Nähe:" name="nearby_toasts_lifetime"/>
-	<spinner label="Ein-/Ausblenddauer von Toasts für Chat in der Nähe:" name="nearby_toasts_fadingtime"/>
+	<panel>
+		<check_box initial_value="true" label="Beim Chatten Tippanimation abspielen" name="play_typing_animation"/>
+		<check_box label="IMs per Email zuschicken, wenn ich offline bin" name="send_im_to_email"/>
+		<check_box label="Nur IMs und Anrufe von Freunden oder Gruppen durchstellen" name="voice_call_friends_only_check"/>
+		<text name="font_size">
+			Schriftgröße:
+		</text>
+		<combo_box name="chat_font_size">
+			<item label="Klein" name="Small" value="0"/>
+			<item label="Mittel" name="Medium" value="1"/>
+			<item label="Groß" name="Large" value="2"/>
+		</combo_box>
+		<check_box label="Blasen-Chat" name="bubble_text_chat"/>
+	</panel>
+	<panel>
+		<text name="notifications">
+			Benachrichtigungen
+		</text>
+		<text name="friend_ims">
+			IMs von Freunden:
+		</text>
+		<combo_box name="FriendIMOptions">
+			<item label="Unterhaltungsfenster öffnen" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Nachricht in Popup anzeigen" name="PopUpMessage" value="toast"/>
+			<item label="Flash-Symbolleistenschaltfläche" name="FlashToolbarButton" value="flash"/>
+			<item label="None" name="None" value="none"/>
+		</combo_box>
+		<text name="non_friend_ims">
+			IMs von anderen:
+		</text>
+		<combo_box name="NonFriendIMOptions">
+			<item label="Unterhaltungsfenster öffnen" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Nachricht in Popup anzeigen" name="PopUpMessage" value="toast"/>
+			<item label="Flash-Symbolleistenschaltfläche" name="FlashToolbarButton" value="flash"/>
+			<item label="None" name="None" value="none"/>
+		</combo_box>
+		<text name="conference_ims">
+			Konferenz-IMs:
+		</text>
+		<combo_box name="ConferenceIMOptions">
+			<item label="Unterhaltungsfenster öffnen" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Nachricht in Popup anzeigen" name="PopUpMessage" value="toast"/>
+			<item label="Flash-Symbolleistenschaltfläche" name="FlashToolbarButton" value="flash"/>
+			<item label="None" name="None" value="none"/>
+		</combo_box>
+		<text name="group_chat">
+			Gruppen-Chat:
+		</text>
+		<combo_box name="GroupChatOptions">
+			<item label="Unterhaltungsfenster öffnen" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Nachricht in Popup anzeigen" name="PopUpMessage" value="toast"/>
+			<item label="Flash-Symbolleistenschaltfläche" name="FlashToolbarButton" value="flash"/>
+			<item label="None" name="None" value="none"/>
+		</combo_box>
+		<text name="nearby_chat">
+			Chat in der Nähe:
+		</text>
+		<combo_box name="NearbyChatOptions">
+			<item label="Unterhaltungsfenster öffnen" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Nachricht in Popup anzeigen" name="PopUpMessage" value="toast"/>
+			<item label="Flash-Symbolleistenschaltfläche" name="FlashToolBarButton" value="flash"/>
+			<item label="None" name="None" value="none"/>
+		</combo_box>
+		<text name="notifications_alert">
+			Um vorübergehend alle Benachrichtigungen zu stoppen, wählen Sie „Unterhalten“ &gt; „Nicht stören“.
+		</text>
+	</panel>
+	<panel>
+		<text name="play_sound">
+			Sound abspielen:
+		</text>
+		<check_box label="Neue Unterhaltung" name="new_conversation"/>
+		<check_box label="Eingehender Anruf..." name="incoming_voice_call"/>
+		<check_box label="Teleport-Angebot" name="teleport_offer"/>
+		<check_box label="Inventarangebot" name="inventory_offer"/>
+	</panel>
+	<panel>
+		<button label="Protokoll löschen..." name="clear_log"/>
+		<button label="Protokolle löschen..." name="delete_transcripts"/>
+		<button label="Durchsuchen..." label_selected="Durchsuchen" name="log_path_button"/>
+	</panel>
 	<button label="Ãœbersetzen..." name="ok_btn"/>
 	<button label="Automatisch ersetzen..." name="autoreplace_showgui"/>
 	<button label="Rechtschreibprüfung..." name="spellcheck_showgui"/>
diff --git a/indra/newview/skins/default/xui/de/panel_preferences_general.xml b/indra/newview/skins/default/xui/de/panel_preferences_general.xml
index 979ccba48d1..4e453b6969f 100644
--- a/indra/newview/skins/default/xui/de/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/de/panel_preferences_general.xml
@@ -69,9 +69,9 @@
 		<combo_box.item label="nie" name="item4"/>
 	</combo_box>
 	<text name="text_box3">
-		Antwort, wenn im „Beschäftigt“-Modus:
+		Nicht-stören-Antwort:
 	</text>
-	<text_editor name="busy_response">
+	<text_editor name="do_not_disturb_response">
 		log_in_to_change
 	</text_editor>
 </panel>
diff --git a/indra/newview/skins/default/xui/de/sidepanel_task_info.xml b/indra/newview/skins/default/xui/de/sidepanel_task_info.xml
index 4c8d77d336a..29239033fe9 100644
--- a/indra/newview/skins/default/xui/de/sidepanel_task_info.xml
+++ b/indra/newview/skins/default/xui/de/sidepanel_task_info.xml
@@ -72,6 +72,7 @@
 			<combo_box.item label="Objekt kaufen" name="Buyobject"/>
 			<combo_box.item label="Objekt bezahlen" name="Payobject"/>
 			<combo_box.item label="Öffnen" name="Open"/>
+			<combo_box.item label="Zoomen" name="Zoom"/>
 		</combo_box>
 		<panel name="perms_inv">
 			<text name="perm_modify">
diff --git a/indra/newview/skins/default/xui/de/strings.xml b/indra/newview/skins/default/xui/de/strings.xml
index 79cb73ecf97..e142cb80296 100644
--- a/indra/newview/skins/default/xui/de/strings.xml
+++ b/indra/newview/skins/default/xui/de/strings.xml
@@ -137,7 +137,7 @@
 		Beenden
 	</string>
 	<string name="create_account_url">
-		http://join.secondlife.com/index.php?lang=de-DE&amp;sourceid=[sourceid]
+		http://join.secondlife.com/?sourceid=[sourceid]
 	</string>
 	<string name="LoginFailedViewerNotPermitted">
 		Mit dem von Ihnen verwendeten Viewer ist der Zugriff auf Second Life nicht mehr möglich. Laden Sie von den folgenden Seite einen neuen Viewer herunter:
@@ -622,8 +622,8 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden.
 	<string name="AvatarAway">
 		Abwesend
 	</string>
-	<string name="AvatarBusy">
-		Beschäftigt
+	<string name="AvatarDoNotDisturb">
+		Nicht stören
 	</string>
 	<string name="AvatarMuted">
 		Ignoriert
@@ -859,6 +859,12 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden.
 	<string name="ST_NO_JOINT">
 		HAUPTVERZEICHNIS oder VERBINDUNG nicht gefunden.
 	</string>
+	<string name="NearbyChatTitle">
+		Chat in der Nähe
+	</string>
+	<string name="NearbyChatLabel">
+		(Chat in der Nähe)
+	</string>
 	<string name="whisper">
 		flüstert:
 	</string>
@@ -922,12 +928,15 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden.
 	<string name="ControlYourCamera">
 		Kamerasteuerung
 	</string>
-	<string name="TeleportYourAgent">
-		Sie teleportieren
-	</string>
 	<string name="NotConnected">
 		Nicht verbunden
 	</string>
+	<string name="AgentNameSubst">
+		(Sie)
+	</string>
+	<string name="TeleportYourAgent">
+		Sie teleportieren
+	</string>
 	<string name="SIM_ACCESS_PG">
 		Generell
 	</string>
@@ -1009,18 +1018,6 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden.
 	<string name="dictionary_files">
 		Wörterbücher
 	</string>
-	<string name="AvatarSetNotAway">
-		Nicht abwesend
-	</string>
-	<string name="AvatarSetAway">
-		Abwesend
-	</string>
-	<string name="AvatarSetNotBusy">
-		Nicht beschäftigt
-	</string>
-	<string name="AvatarSetBusy">
-		Beschäftigt
-	</string>
 	<string name="shape">
 		Form
 	</string>
@@ -1989,8 +1986,8 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden.
 	<string name="PanelContentsNewScript">
 		Neues Skript
 	</string>
-	<string name="BusyModeResponseDefault">
-		Der Einwohner/Die Einwohnerin ist „beschäftigt”, d.h. er/sie möchte im Moment nicht gestört werden.  Ihre Nachricht wird dem Einwohner/der Einwohnerin als IM angezeigt, und kann später beantwortet werden.
+	<string name="DoNotDisturbModeResponseDefault">
+		Dieser Einwohner hat den Nicht-stören-Modus aktiviert und wird Ihre Nachricht später sehen.
 	</string>
 	<string name="MuteByName">
 		(Nach Namen)
@@ -2103,9 +2100,6 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden.
 	<string name="GroupMoneyDate">
 		[weekday,datetime,utc] [mth,datetime,utc] [day,datetime,utc], [year,datetime,utc]
 	</string>
-	<string name="ViewerObjectContents">
-		Inhalte
-	</string>
 	<string name="AcquiredItems">
 		Erworbene Artikel
 	</string>
@@ -3877,7 +3871,7 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_
 		Generelle Region
 	</string>
 	<string name="LocationCtrlSeeAVsTooltip">
-		Avatare sichtbar; Chat außerhalb dieser Parzelle gestattet
+		Avatare in dieser Parzelle können von Avataren außerhalb dieser Parzelle weder gesehen noch gehört werden
 	</string>
 	<string name="LocationCtrlPathfindingDirtyTooltip">
 		Bewegliche Objekte verhalten sich in dieser Region u. U. erst dann korrekt, wenn die Region neu geformt wird.
@@ -3954,6 +3948,12 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_
 	<string name="IM_unblock_only_groups_friends">
 		Wenn Sie diese Meldung sehen, müssen Sie unter „Einstellungen“ &gt; „Privatsphäre“ die Option „Nur IMs und Anrufe von Freunden oder Gruppen durchstellen“ deaktivieren.
 	</string>
+	<string name="OnlineStatus">
+		Online
+	</string>
+	<string name="OfflineStatus">
+		Offline
+	</string>
 	<string name="answered_call">
 		Ihr Anruf wurde entgegengenommen
 	</string>
@@ -3963,6 +3963,9 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_
 	<string name="you_joined_call">
 		Sie sind dem Gespräch beigetreten
 	</string>
+	<string name="you_auto_rejected_call-im">
+		Sie haben den Voice-Anruf automatisch abgelehnt, während der Nicht-stören-Modus aktiviert war.
+	</string>
 	<string name="name_started_call">
 		[NAME] hat einen Voice-Anruf begonnen
 	</string>
@@ -3979,7 +3982,7 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_
 		Wird verbunden...
 	</string>
 	<string name="conference-title">
-		Ad-hoc-Konferenz
+		Chat mit mehreren Personen
 	</string>
 	<string name="conference-title-incoming">
 		Konferenz mit [AGENT_NAME]
@@ -4859,6 +4862,9 @@ Setzen Sie den Editorpfad in Anführungszeichen
 	<string name="Command_Chat_Label">
 		Chat
 	</string>
+	<string name="Command_Conversations_Label">
+		Unterhaltungen
+	</string>
 	<string name="Command_Compass_Label">
 		Kompass
 	</string>
@@ -4934,6 +4940,9 @@ Setzen Sie den Editorpfad in Anführungszeichen
 	<string name="Command_Chat_Tooltip">
 		Mit Leuten in der Nähe chatten
 	</string>
+	<string name="Command_Conversations_Tooltip">
+		Mit allen unterhalten
+	</string>
 	<string name="Command_Compass_Tooltip">
 		Kompass
 	</string>
@@ -5063,4 +5072,13 @@ Setzen Sie den Editorpfad in Anführungszeichen
 	<string name="UserDictionary">
 		[Benutzer]
 	</string>
+	<string name="logging_calls_disabled_log_empty">
+		Unterhaltungen werden nicht protokolliert. Um ein Protokoll zu starten, wählen Sie „Speichern: nur Protokoll“ oder „Speichern: Protokoll und Transkripte“ unter „Einstellungen“ &gt; „Chat“.
+	</string>
+	<string name="logging_calls_disabled_log_not_empty">
+		Es werden keine Unterhaltungen mehr protokolliert. Um weiterhin ein Protokoll zu führen, wählen Sie „Speichern: nur Protokoll“ oder „Speichern: Protokoll und Transkripte“ unter „Einstellungen“ &gt; „Chat“.
+	</string>
+	<string name="logging_calls_enabled_log_empty">
+		Keine protokollierten Unterhaltungen verfügbar. Hier erscheint ein Protokolleintrag, wenn Sie eine Person kontaktieren oder von einer Person kontaktiert werden.
+	</string>
 </strings>
diff --git a/indra/newview/skins/default/xui/es/floater_conversation_log.xml b/indra/newview/skins/default/xui/es/floater_conversation_log.xml
new file mode 100644
index 00000000000..9202fab92df
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_conversation_log.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_conversation_log" title="REGISTRO DE CONVERSACIONES">
+	<panel name="buttons_panel">
+		<filter_editor label="Filtrar la gente" name="people_filter_input"/>
+		<menu_button name="conversation_view_btn" tool_tip="Opciones de vista/orden"/>
+		<menu_button name="conversations_gear_btn" tool_tip="Acciones en la persona o el grupo seleccionado"/>
+	</panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_conversation_preview.xml b/indra/newview/skins/default/xui/es/floater_conversation_preview.xml
new file mode 100644
index 00000000000..f579e720fb2
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_conversation_preview.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="preview_conversation" title="CONVERSACIÓN:">
+	<floater.string name="Title">
+		CONVERSACIÓN: [NAME]
+	</floater.string>
+	<text name="page_label" value="Página"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_im_container.xml b/indra/newview/skins/default/xui/es/floater_im_container.xml
index 1cd752e6ec4..f772441141a 100644
--- a/indra/newview/skins/default/xui/es/floater_im_container.xml
+++ b/indra/newview/skins/default/xui/es/floater_im_container.xml
@@ -1,2 +1,29 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<multi_floater name="floater_im_box" title="CONVERSACIONES"/>
+<multi_floater name="floater_im_box" title="CONVERSACIONES">
+	<string name="collapse_icon" value="Conv_toolbar_collapse"/>
+	<string name="expand_icon" value="Conv_toolbar_expand"/>
+	<layout_stack name="conversations_stack">
+		<layout_panel name="conversations_layout_panel">
+			<layout_stack name="conversations_pane_buttons_stack">
+				<layout_panel name="conversations_pane_buttons_expanded">
+					<menu_button name="sort_btn" tool_tip="Opciones de vista/orden"/>
+					<button name="add_btn" tool_tip="Iniciar una conversación nueva"/>
+					<button name="speak_btn" tool_tip="Utiliza el micrófono para hablar con las personas"/>
+				</layout_panel>
+				<layout_panel name="conversations_pane_buttons_collapsed">
+					<button name="expand_collapse_btn" tool_tip="Cerrar/expandir esta lista"/>
+				</layout_panel>
+			</layout_stack>
+		</layout_panel>
+		<layout_panel name="messages_layout_panel">
+			<panel_container name="im_box_tab_container">
+				<panel name="stub_panel">
+					<button name="stub_collapse_btn" tool_tip="Cerrar este panel"/>
+					<text name="stub_textbox">
+						Esta conversación está en una ventana aparte.   [secondlife:/// Traerla de vuelta.]
+					</text>
+				</panel>
+			</panel_container>
+		</layout_panel>
+	</layout_stack>
+</multi_floater>
diff --git a/indra/newview/skins/default/xui/es/floater_im_session.xml b/indra/newview/skins/default/xui/es/floater_im_session.xml
index 3d9d17fc81a..5f38fbd6151 100644
--- a/indra/newview/skins/default/xui/es/floater_im_session.xml
+++ b/indra/newview/skins/default/xui/es/floater_im_session.xml
@@ -1,8 +1,59 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="panel_im">
-	<layout_stack name="im_panels">
-		<layout_panel>
-			<line_editor label="A" name="chat_editor"/>
-		</layout_panel>
-	</layout_stack>
+	<floater.string name="call_btn_start">
+		Conv_toolbar_open_call
+	</floater.string>
+	<floater.string name="call_btn_stop">
+		Conv_toolbar_hang_up
+	</floater.string>
+	<floater.string name="collapseline_icon" value="Conv_collapse_to_one_line"/>
+	<floater.string name="expandline_icon" value="Conv_expand_one_line"/>
+	<floater.string name="collapse_icon" value="Conv_toolbar_collapse"/>
+	<floater.string name="expand_icon" value="Conv_toolbar_expand"/>
+	<floater.string name="tear_off_icon" value="Conv_toolbar_arrow_ne"/>
+	<floater.string name="return_icon" value="Conv_toolbar_arrow_sw"/>
+	<floater.string name="participant_added" value="[NAME] ha sido invitado a la conversación."/>
+	<floater.string name="multiple_participants_added" value="[NAME] han sido invitados a la conversación."/>
+	<floater.string name="tooltip_to_separate_window" value="Mover esta conversación a otra ventana"/>
+	<floater.string name="tooltip_to_main_window" value="Volver a poner esta conversación en la ventana principal"/>
+	<floater.string name="start_call_button_tooltip" value="Abrir conexión de voz"/>
+	<floater.string name="end_call_button_tooltip" value="Cerrar la conexión de voz"/>
+	<floater.string name="expcol_button_not_tearoff_tooltip" value="Cerrar este panel"/>
+	<floater.string name="expcol_button_tearoff_and_expanded_tooltip" value="Cerrar la lista de participantes"/>
+	<floater.string name="expcol_button_tearoff_and_collapsed_tooltip" value="Expandir la lista de participantes"/>
+	<view name="contents_view">
+		<layout_stack name="main_stack">
+			<layout_panel name="toolbar_panel">
+				<menu_button name="view_options_btn" tool_tip="Opciones de vista/orden"/>
+				<menu_button name="gear_btn" tool_tip="Acciones en la persona seleccionada"/>
+				<button name="add_btn" tool_tip="Añadir alguien a esta conversación"/>
+				<button name="voice_call_btn" tool_tip="Abrir conexión de voz"/>
+				<button name="close_btn" tool_tip="Finalizar esta conversación"/>
+				<button name="expand_collapse_btn" tool_tip="Cerrar/expandir este panel"/>
+			</layout_panel>
+			<layout_panel name="body_panel">
+				<layout_stack name="im_panels">
+					<layout_panel name="right_part_holder">
+						<panel name="trnsAndChat_panel">
+							<layout_stack name="translate_and_chat_stack">
+								<layout_panel name="translate_chat_checkbox_lp">
+									<check_box label="Traducir el chat" name="translate_chat_checkbox"/>
+								</layout_panel>
+							</layout_stack>
+						</panel>
+					</layout_panel>
+				</layout_stack>
+			</layout_panel>
+			<layout_panel name="chat_layout_panel">
+				<layout_stack name="input_panels">
+					<layout_panel name="input_editor_layout_panel">
+						<chat_editor label="A" name="chat_editor"/>
+					</layout_panel>
+					<layout_panel name="input_button_layout_panel">
+						<button name="minz_btn" tool_tip="Muestra/oculta el panel de mensajes"/>
+					</layout_panel>
+				</layout_stack>
+			</layout_panel>
+		</layout_stack>
+	</view>
 </floater>
diff --git a/indra/newview/skins/default/xui/es/floater_incoming_call.xml b/indra/newview/skins/default/xui/es/floater_incoming_call.xml
index b5b756abb6a..acbb25b7131 100644
--- a/indra/newview/skins/default/xui/es/floater_incoming_call.xml
+++ b/indra/newview/skins/default/xui/es/floater_incoming_call.xml
@@ -10,7 +10,7 @@
 		anónimo
 	</floater.string>
 	<floater.string name="VoiceInviteP2P">
-		está llamando.
+		te está llamando.
 	</floater.string>
 	<floater.string name="VoiceInviteAdHoc">
 		ha entrado en un chat de voz en multiconferencia.
@@ -25,9 +25,9 @@
 		¿Quieres dejar [CURRENT_CHAT] y entrar en este chat de voz?
 	</floater.string>
 	<text name="question">
-		¿Quieres dejar [CURRENT_CHAT] y entrar a este chat de voz?
+		Si respondes, te desconectarás de la conversación de voz actual.
 	</text>
-	<button label="Aceptar" label_selected="Aceptar" name="Accept"/>
-	<button label="Rechazar" label_selected="Rechazar" name="Reject"/>
-	<button label="Comenzar un MI" name="Start IM"/>
+	<button label="Responder" label_selected="Responder" name="Accept"/>
+	<button label="Ignorar" label_selected="Ignorar" name="Reject"/>
+	<button label="Abrir MI en su lugar" name="Start IM"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/es/floater_pathfinding_console.xml b/indra/newview/skins/default/xui/es/floater_pathfinding_console.xml
index e93ecc9e10d..3602270e5a5 100644
--- a/indra/newview/skins/default/xui/es/floater_pathfinding_console.xml
+++ b/indra/newview/skins/default/xui/es/floater_pathfinding_console.xml
@@ -71,7 +71,7 @@
 			<text name="show_label">
 				Mostrar:
 			</text>
-			<check_box label="Mundo virtual" name="show_world"/>
+			<check_box label="Prueba" name="show_world"/>
 			<check_box label="Solamente los objetos movibles" name="show_world_movables_only"/>
 			<check_box label="Navmesh" name="show_navmesh"/>
 			<text name="show_walkability_label">
diff --git a/indra/newview/skins/default/xui/es/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/es/floater_texture_ctrl.xml
index 93bc9f293c1..01b024bc3e4 100644
--- a/indra/newview/skins/default/xui/es/floater_texture_ctrl.xml
+++ b/indra/newview/skins/default/xui/es/floater_texture_ctrl.xml
@@ -20,7 +20,7 @@
 	<button label="Blanca" label_selected="Blanca" name="Blank"/>
 	<button label="Ninguna" label_selected="Ninguna" left="90" name="None"/>
 	<button label="" label_selected="" name="Pipette"/>
-	<check_box initial_value="true" label="Vista previa inmediata" name="apply_immediate_check"/>
+	<check_box initial_value="true" label="Aplicarlo ahora" name="apply_immediate_check"/>
 	<text name="preview_disabled" value="Vista previa inhabilitada"/>
 	<filter_editor label="Filtrar las texturas" name="inventory search editor"/>
 	<check_box initial_value="false" label="Ver las carpetas" name="show_folders_check"/>
diff --git a/indra/newview/skins/default/xui/es/floater_voice_chat_volume.xml b/indra/newview/skins/default/xui/es/floater_voice_chat_volume.xml
new file mode 100644
index 00000000000..1115d672399
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_voice_chat_volume.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_voice_volume" title="VOLUMEN DE CHAT DE VOZ">
+	<slider label="Chat de voz" name="chat_voice_volume"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_voice_effect.xml b/indra/newview/skins/default/xui/es/floater_voice_effect.xml
index 1a265845af5..02ebe80ff7d 100644
--- a/indra/newview/skins/default/xui/es/floater_voice_effect.xml
+++ b/indra/newview/skins/default/xui/es/floater_voice_effect.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater label="Lugares" name="voice_effects" title="TRANSFORMACIÓN DE VOZ">
+<floater label="Lugares" name="voice_effects" title="PROBAR TRANSFORMACIÓN DE VOZ">
 	<string name="no_voice_effect">
 		(Sin transformación de voz)
 	</string>
diff --git a/indra/newview/skins/default/xui/es/floater_voice_volume.xml b/indra/newview/skins/default/xui/es/floater_voice_volume.xml
new file mode 100644
index 00000000000..0ebc511887e
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_voice_volume.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!--
+  Not can_close / no title to avoid window chrome
+  Single instance - only have one at a time, recycle it each spawn
+-->
+<floater name="floater_voice_volume" title="VOLUMEN DE VOZ">
+	<slider name="volume_slider" tool_tip="Volumen de la voz" value="0.5"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/es/menu_cof_gear.xml b/indra/newview/skins/default/xui/es/menu_cof_gear.xml
index ff8ad0977ac..a889992b8aa 100644
--- a/indra/newview/skins/default/xui/es/menu_cof_gear.xml
+++ b/indra/newview/skins/default/xui/es/menu_cof_gear.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear COF">
+<toggleable_menu name="Gear COF">
 	<menu label="Ropas nuevas" name="COF.Gear.New_Clothes"/>
-	<menu label="Nuevas partes del cuerpo" name="COF.Geear.New_Body_Parts"/>
-</menu>
+	<menu label="Nuevas partes del cuerpo" name="COF.Gear.New_Body_Parts"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_conversation.xml b/indra/newview/skins/default/xui/es/menu_conversation.xml
new file mode 100644
index 00000000000..e4e9a0bf63d
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_conversation.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_conversation_participant">
+	<menu_item_call label="Cerrar conversación" name="close_conversation"/>
+	<menu_item_call label="Abrir conversación de voz" name="open_voice_conversation"/>
+	<menu_item_call label="Desconectar de voz" name="disconnect_from_voice"/>
+	<menu_item_call label="Ver el perfil" name="view_profile"/>
+	<menu_item_call label="MI" name="im"/>
+	<menu_item_call label="Ofrecer teleporte" name="offer_teleport"/>
+	<menu_item_call label="Llamada de voz" name="voice_call"/>
+	<menu_item_call label="Historial del chat..." name="chat_history"/>
+	<menu_item_call label="Añadir como amigo" name="add_friend"/>
+	<menu_item_call label="Quitarle como amigo" name="remove_friend"/>
+	<menu_item_call label="Quitar amigos" name="remove_friends"/>
+	<menu_item_call label="Invitar al grupo..." name="invite_to_group"/>
+	<menu_item_call label="Acercar el zoom" name="zoom_in"/>
+	<menu_item_call label="Mapa" name="map"/>
+	<menu_item_call label="Compartir" name="share"/>
+	<menu_item_call label="Pagar" name="pay"/>
+	<menu_item_check label="Ignorar la voz" name="block_unblock"/>
+	<menu_item_check label="Ignorar el texto" name="MuteText"/>
+	<menu_item_call label="Perfil del grupo" name="group_profile"/>
+	<menu_item_call label="Activar el grupo" name="activate_group"/>
+	<menu_item_call label="Abandonar el grupo" name="leave_group"/>
+	<context_menu label="Opciones del moderador" name="Moderator Options">
+		<menu_item_check label="Permitir el chat de texto" name="AllowTextChat"/>
+		<menu_item_call label="Ignorar a este participante" name="ModerateVoiceMuteSelected"/>
+		<menu_item_call label="Quitar el silencio a este participante" name="ModerateVoiceUnMuteSelected"/>
+		<menu_item_call label="Silenciar a todos" name="ModerateVoiceMute"/>
+		<menu_item_call label="Quitar el silencio a todos" name="ModerateVoiceUnmute"/>
+	</context_menu>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_conversation_log_gear.xml b/indra/newview/skins/default/xui/es/menu_conversation_log_gear.xml
new file mode 100644
index 00000000000..090e6fb0bf7
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_conversation_log_gear.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Conversation Context Menu">
+	<menu_item_call label="MI..." name="IM"/>
+	<menu_item_call label="Llamada de voz..." name="Call"/>
+	<menu_item_call label="Abrir el historial de chat..." name="Chat history"/>
+	<menu_item_call label="Ver el perfil" name="View Profile"/>
+	<menu_item_call label="Ofrecer teleporte" name="teleport"/>
+	<menu_item_call label="Añadir como amigo" name="add_friend"/>
+	<menu_item_call label="Quitarle como amigo" name="remove_friend"/>
+	<menu_item_call label="Invitar al grupo..." name="Invite"/>
+	<menu_item_call label="Mapa" name="Map"/>
+	<menu_item_call label="Compartir" name="Share"/>
+	<menu_item_call label="Pagar" name="Pay"/>
+	<menu_item_check label="Ignorar / No ignorar" name="Block/Unblock"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_conversation_log_view.xml b/indra/newview/skins/default/xui/es/menu_conversation_log_view.xml
new file mode 100644
index 00000000000..b8b4616b2d9
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_conversation_log_view.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_conversation_view">
+	<menu_item_check label="Ordenar alfabéticamente" name="sort_by_name"/>
+	<menu_item_check label="Ordenar por fecha" name="sort_by_date"/>
+	<menu_item_check label="Ordenar con los amigos al principio" name="sort_by_friends"/>
+	<menu_item_call label="Ver el historial de chat..." name="view_nearby_chat_history"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_im_conversation.xml b/indra/newview/skins/default/xui/es/menu_im_conversation.xml
new file mode 100644
index 00000000000..5ba0fb898e8
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_im_conversation.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Conversation Gear Menu">
+	<menu_item_call label="Ver el perfil" name="View Profile"/>
+	<menu_item_call label="Añadir como amigo" name="Add Friend"/>
+	<menu_item_call label="Quitarle como amigo" name="remove_friend"/>
+	<menu_item_call label="Ofrecer teleporte" name="offer_teleport"/>
+	<menu_item_call label="Invitar al grupo..." name="invite_to_group"/>
+	<menu_item_call label="Historial del chat..." name="chat_history"/>
+	<menu_item_call label="Acercar el zoom" name="zoom_in"/>
+	<menu_item_call label="Mapa" name="map"/>
+	<menu_item_call label="Compartir" name="Share"/>
+	<menu_item_call label="Pagar" name="Pay"/>
+	<menu_item_check label="Ignorar la voz" name="Block/Unblock"/>
+	<menu_item_check label="Ignorar el texto" name="MuteText"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_im_session_showmodes.xml b/indra/newview/skins/default/xui/es/menu_im_session_showmodes.xml
new file mode 100644
index 00000000000..6ea970b8265
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_im_session_showmodes.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_modes">
+	<menu_item_check label="Vista compacta" name="compact_view"/>
+	<menu_item_check label="Vista ampliada" name="expanded_view"/>
+	<menu_item_check label="Mostrar tiempo" name="IMShowTime"/>
+	<menu_item_check label="Mostrar los nombres en las conversaciones individuales" name="IMShowNamesForP2PConv"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_object_icon.xml b/indra/newview/skins/default/xui/es/menu_object_icon.xml
index 7e4578b9504..a99c889bb06 100644
--- a/indra/newview/skins/default/xui/es/menu_object_icon.xml
+++ b/indra/newview/skins/default/xui/es/menu_object_icon.xml
@@ -2,4 +2,6 @@
 <menu name="Object Icon Menu">
 	<menu_item_call label="Perfil del objeto..." name="Object Profile"/>
 	<menu_item_call label="Ignorar..." name="Block"/>
+	<menu_item_call label="Mostrar en el mapa" name="show_on_map"/>
+	<menu_item_call label="Teleportarse a la posición del objeto" name="teleport_to_object"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/es/menu_outfit_gear.xml b/indra/newview/skins/default/xui/es/menu_outfit_gear.xml
index 558ff6afd3c..56e64c729f7 100644
--- a/indra/newview/skins/default/xui/es/menu_outfit_gear.xml
+++ b/indra/newview/skins/default/xui/es/menu_outfit_gear.xml
@@ -23,6 +23,8 @@
 		<menu_item_call label="Pelo nuevo" name="New Hair"/>
 		<menu_item_call label="Ojos nuevos" name="New Eyes"/>
 	</menu>
+	<menu_item_call label="Abrir todas las carpetas" name="expand"/>
+	<menu_item_call label="Cerrar todas las carpetas" name="collapse"/>
 	<menu_item_call label="Renombrar el vestuario" name="rename"/>
 	<menu_item_call label="Borrar el vestuario" name="delete_outfit"/>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_participant_view.xml b/indra/newview/skins/default/xui/es/menu_participant_view.xml
new file mode 100644
index 00000000000..fcfeeb922bf
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_participant_view.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="participant_manu_view">
+	<menu_item_check label="Ordenar las conversaciones por tipo" name="sort_sessions_by_type"/>
+	<menu_item_check label="Ordenar las conversaciones por nombre" name="sort_sessions_by_name"/>
+	<menu_item_check label="Ordenar las conversaciones por actividad reciente" name="sort_sessions_by_recent"/>
+	<menu_item_check label="Ordenar los participantes por nombre" name="sort_participants_by_name"/>
+	<menu_item_check label="Ordenar los participantes por actividad reciente" name="sort_participants_by_recent"/>
+	<menu_item_call label="Preferencias de chat..." name="chat_preferences"/>
+	<menu_item_call label="Preferencias de privacidad..." name="privacy_preferences"/>
+	<menu_item_check label="Registro de conversaciones..." name="Conversation"/>
+	<menu_item_check label="Traducir el chat" name="Translate_chat"/>
+	<menu_item_check label="Configuración de traducción..." name="Translation_settings"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_people_blocked_gear.xml b/indra/newview/skins/default/xui/es/menu_people_blocked_gear.xml
new file mode 100644
index 00000000000..986389a4fe7
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_people_blocked_gear.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_blocked_gear">
+	<menu_item_call label="No ignorar" name="unblock"/>
+	<menu_item_call label="Perfil..." name="profile"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_people_blocked_plus.xml b/indra/newview/skins/default/xui/es/menu_people_blocked_plus.xml
new file mode 100644
index 00000000000..10f6a3fc14f
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_people_blocked_plus.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_blocked_plus">
+	<menu_item_call label="Ignorar residentes según el nombre..." name="block_resident_by_name"/>
+	<menu_item_call label="Ignorar objetos según el nombre" name="block_object_by_name"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_people_blocked_view.xml b/indra/newview/skins/default/xui/es/menu_people_blocked_view.xml
new file mode 100644
index 00000000000..bc557c7ec15
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_people_blocked_view.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_blocked_view">
+	<menu_item_check label="Ordenar alfabéticamente" name="sort_by_name"/>
+	<menu_item_check label="Ordenar por tipo" name="sort_by_type"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_people_friends_view.xml b/indra/newview/skins/default/xui/es/menu_people_friends_view.xml
new file mode 100644
index 00000000000..ad896c1b74e
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_people_friends_view.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="Ordenar alfabéticamente" name="sort_name"/>
+	<menu_item_check label="Ordenar por estatus" name="sort_status"/>
+	<menu_item_check label="Ver los iconos de la gente" name="view_icons"/>
+	<menu_item_check label="Ver permisos concedidos" name="view_permissions"/>
+	<menu_item_check label="Ver el registro de conversaciones..." name="view_conversation"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_people_groups.xml b/indra/newview/skins/default/xui/es/menu_people_groups.xml
index 51bd2c72085..125e25cd1a6 100644
--- a/indra/newview/skins/default/xui/es/menu_people_groups.xml
+++ b/indra/newview/skins/default/xui/es/menu_people_groups.xml
@@ -2,7 +2,7 @@
 <menu name="menu_group_plus">
 	<menu_item_call label="Ver la información" name="View Info"/>
 	<menu_item_call label="Chat" name="Chat"/>
-	<menu_item_call label="Llamar" name="Call"/>
+	<menu_item_call label="Llamada de voz" name="Call"/>
 	<menu_item_call label="Activar" name="Activate"/>
 	<menu_item_call label="Dejar" name="Leave"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/es/menu_people_groups_view.xml b/indra/newview/skins/default/xui/es/menu_people_groups_view.xml
new file mode 100644
index 00000000000..c3973625b0a
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_people_groups_view.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="Mostrar los iconos de grupo" name="Display Group Icons"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_people_nearby.xml b/indra/newview/skins/default/xui/es/menu_people_nearby.xml
index dc1486d8796..09bb119d5ad 100644
--- a/indra/newview/skins/default/xui/es/menu_people_nearby.xml
+++ b/indra/newview/skins/default/xui/es/menu_people_nearby.xml
@@ -1,13 +1,16 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Avatar Context Menu">
-	<menu_item_call label="Ver el perfil" name="View Profile"/>
-	<menu_item_call label="Añadir como amigo" name="Add Friend"/>
-	<menu_item_call label="Quitarle como amigo" name="Remove Friend"/>
-	<menu_item_call label="MI" name="IM"/>
-	<menu_item_call label="Llamar" name="Call"/>
-	<menu_item_call label="Mapa" name="Map"/>
-	<menu_item_call label="Compartir" name="Share"/>
-	<menu_item_call label="Pagar" name="Pay"/>
-	<menu_item_check label="Ignorar / No ignorar" name="Block/Unblock"/>
-	<menu_item_call label="Ofrecer teleporte" name="teleport"/>
+	<menu_item_call label="Ver el perfil" name="view_profile"/>
+	<menu_item_call label="MI" name="im"/>
+	<menu_item_call label="Ofrecer teleporte" name="offer_teleport"/>
+	<menu_item_call label="Llamada de voz" name="voice_call"/>
+	<menu_item_call label="Ver el historial de chat..." name="chat_history"/>
+	<menu_item_call label="Añadir como amigo" name="add_friend"/>
+	<menu_item_call label="Quitarle como amigo" name="remove_friend"/>
+	<menu_item_call label="Invitar al grupo..." name="invite_to_group"/>
+	<menu_item_call label="Acercar el zoom" name="zoom_in"/>
+	<menu_item_call label="Mapa" name="map"/>
+	<menu_item_call label="Compartir" name="share"/>
+	<menu_item_call label="Pagar" name="pay"/>
+	<menu_item_check label="Ignorar / No ignorar" name="block_unblock"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/es/menu_people_nearby_multiselect.xml
index 227c5ebe58f..9df160f5ad9 100644
--- a/indra/newview/skins/default/xui/es/menu_people_nearby_multiselect.xml
+++ b/indra/newview/skins/default/xui/es/menu_people_nearby_multiselect.xml
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Multi-Selected People Context Menu">
-	<menu_item_call label="Añadir como amigos" name="Add Friends"/>
-	<menu_item_call label="Quitar amigos" name="Remove Friend"/>
-	<menu_item_call label="MI" name="IM"/>
-	<menu_item_call label="Llamar" name="Call"/>
-	<menu_item_call label="Compartir" name="Share"/>
-	<menu_item_call label="Pagar" name="Pay"/>
-	<menu_item_call label="Ofrecer teleporte" name="teleport"/>
+	<menu_item_call label="Añadir como amigos" name="add_friends"/>
+	<menu_item_call label="Quitar amigos" name="remove_friends"/>
+	<menu_item_call label="MI" name="im"/>
+	<menu_item_call label="Visita" name="call"/>
+	<menu_item_call label="Compartir" name="share"/>
+	<menu_item_call label="Pagar" name="pay"/>
+	<menu_item_call label="Ofrecer teleporte" name="offer_teleport"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_people_nearby_view.xml b/indra/newview/skins/default/xui/es/menu_people_nearby_view.xml
new file mode 100644
index 00000000000..c2fb360dd1c
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_people_nearby_view.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="Ordenar según las intervenciones recientes" name="sort_by_recent_speakers"/>
+	<menu_item_check label="Ordenar alfabéticamente" name="sort_name"/>
+	<menu_item_check label="Ordenar según distancia" name="sort_distance"/>
+	<menu_item_check label="Ver los iconos de la gente" name="view_icons"/>
+	<menu_item_check label="Ver mapa" name="view_map"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_people_recent_view.xml b/indra/newview/skins/default/xui/es/menu_people_recent_view.xml
new file mode 100644
index 00000000000..f0ffd140248
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_people_recent_view.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="Ordenar por más reciente" name="sort_most"/>
+	<menu_item_check label="Ordenar alfabéticamente" name="sort_name"/>
+	<menu_item_check label="Ver los iconos de la gente" name="view_icons"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_url_agent.xml b/indra/newview/skins/default/xui/es/menu_url_agent.xml
index a089c8f68e3..69a03671aba 100644
--- a/indra/newview/skins/default/xui/es/menu_url_agent.xml
+++ b/indra/newview/skins/default/xui/es/menu_url_agent.xml
@@ -1,6 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Url Popup">
-	<menu_item_call label="Mostrar el perfil del Residente" name="show_agent"/>
+	<menu_item_call label="Ver el perfil" name="show_agent"/>
+	<menu_item_call label="Enviar un MI..." name="send_im"/>
+	<menu_item_call label="Añadir como amigo..." name="add_friend"/>
 	<menu_item_call label="Copiar el nombre al portapapeles" name="url_copy_label"/>
 	<menu_item_call label="Copiar la SLurl al portapapeles" name="url_copy"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_url_objectim.xml b/indra/newview/skins/default/xui/es/menu_url_objectim.xml
index 8791a290af6..e78fdec5580 100644
--- a/indra/newview/skins/default/xui/es/menu_url_objectim.xml
+++ b/indra/newview/skins/default/xui/es/menu_url_objectim.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Url Popup">
-	<menu_item_call label="Mostrar la información del objeto" name="show_object"/>
+	<menu_item_call label="Perfil del objeto..." name="show_object"/>
 	<menu_item_call label="Mostrar en el mapa" name="show_on_map"/>
 	<menu_item_call label="Teleportarse a la posición del objeto" name="teleport_to_object"/>
 	<menu_item_call label="Copiar el nombre del objeto al portapapeles" name="url_copy_label"/>
diff --git a/indra/newview/skins/default/xui/es/menu_viewer.xml b/indra/newview/skins/default/xui/es/menu_viewer.xml
index d80150ef6df..30842f53f26 100644
--- a/indra/newview/skins/default/xui/es/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/es/menu_viewer.xml
@@ -16,10 +16,7 @@
 			<menu_item_call label="Parar mis animaciones" name="Stop Animating My Avatar"/>
 			<menu_item_call label="Caminar / Correr / Volar..." name="Walk / run / fly"/>
 		</menu>
-		<menu label="Estado" name="Status">
-			<menu_item_call label="Ausente" name="Set Away"/>
-			<menu_item_call label="Ocupado" name="Set Busy"/>
-		</menu>
+		<menu label="Estado" name="Status"/>
 		<menu_item_call label="Comprar L$..." name="Buy and Sell L$"/>
 		<menu_item_call label="Panel de control de la cuenta..." name="Manage My Account">
 			<menu_item_call.on_click name="ManageMyAccount_url" parameter="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=es"/>
@@ -31,14 +28,18 @@
 		<menu_item_call label="Salir de [APP_NAME]" name="Quit"/>
 	</menu>
 	<menu label="Comunicarme" name="Communicate">
+		<menu_item_check label="Conversaciones..." name="Conversations"/>
 		<menu_item_check label="Chat..." name="Nearby Chat"/>
 		<menu_item_check label="Hablar" name="Speak"/>
-		<menu_item_check label="Configuración de voz..." name="Nearby Voice"/>
-		<menu_item_check label="Transformación de voz..." name="ShowVoice"/>
+		<menu label="Transformación de voz" name="VoiceMorphing">
+			<menu_item_check label="Sin transformación de voz" name="NoVoiceMorphing"/>
+			<menu_item_check label="Probar..." name="Preview"/>
+			<menu_item_call label="Suscribir..." name="Subscribe"/>
+		</menu>
 		<menu_item_check label="Gestos..." name="Gestures"/>
-		<menu_item_call label="Amigos" name="My Friends"/>
-		<menu_item_call label="Grupos" name="My Groups"/>
-		<menu_item_call label="Gente cerca" name="Active Speakers"/>
+		<menu_item_check label="Amigos" name="My Friends"/>
+		<menu_item_check label="Grupos" name="My Groups"/>
+		<menu_item_check label="Gente cerca" name="Active Speakers"/>
 		<menu_item_call label="Lista de ignorados" name="Block List"/>
 	</menu>
 	<menu label="Mundo" name="World">
@@ -114,7 +115,6 @@
 			<menu_item_call label="Comprar" name="Menu Object Buy"/>
 			<menu_item_call label="Tomar" name="Menu Object Take"/>
 			<menu_item_call label="Coger una copia" name="Take Copy"/>
-			<menu_item_call label="Guardar una copia en mi inventario" name="Save Object Back to My Inventory"/>
 			<menu_item_call label="Guardar una copia del objeto en los contenidos de donde salió" name="Save Object Back to Object Contents"/>
 			<menu_item_call label="Devolver objeto" name="Return Object back to Owner"/>
 		</menu>
@@ -129,6 +129,7 @@
 			<menu_item_call label="Linksets..." name="pathfinding_linksets_menu_item"/>
 			<menu_item_call label="Personajes..." name="pathfinding_characters_menu_item"/>
 			<menu_item_call label="Ver/probar..." name="pathfinding_console_menu_item"/>
+			<menu_item_call label="Recargar la región" name="pathfinding_rebake_navmesh_item"/>
 		</menu>
 		<menu label="Opciones" name="Options">
 			<menu_item_check label="Mostrar los permisos avanzados" name="DebugPermissions"/>
@@ -158,6 +159,13 @@
 	<menu label="Ayuda" name="Help">
 		<menu_item_call label="Cómo..." name="How To"/>
 		<menu_item_call label="Ayuda de [SECOND_LIFE]" name="Second Life Help"/>
+		<menu_item_call label="Guía del usuario" name="User’s guide"/>
+		<menu_item_call label="Base de Conocimientos" name="Knowledge Base"/>
+		<menu_item_call label="Wiki" name="Wiki"/>
+		<menu_item_call label="Foros comunitarios" name="Community Forums"/>
+		<menu_item_call label="Portal de soporte" name="Support portal"/>
+		<menu_item_call label="Noticias de [SECOND_LIFE]" name="Second Life News"/>
+		<menu_item_call label="Blogs de [SECOND_LIFE]" name="Second Life Blogs"/>
 		<menu_item_call label="Denunciar una infracción" name="Report Abuse"/>
 		<menu_item_call label="Informar de un fallo" name="Report Bug"/>
 		<menu_item_call label="Acerca de [APP_NAME]" name="About Second Life"/>
@@ -335,9 +343,14 @@
 				<menu_item_call label="Toggle Character Geometry" name="Toggle Character Geometry"/>
 				<menu_item_check label="Allow Select Avatar" name="Allow Select Avatar"/>
 			</menu>
+			<menu label="Velocidad de animación" name="Animation Speed">
+				<menu_item_call label="Acelerar todas las animaciones un 10%" name="All Animations 10 Faster"/>
+				<menu_item_call label="Ralentizar todas las animaciones un 10%" name="All Animations 10 Slower"/>
+				<menu_item_call label="Restablecer la velocidad de todas las animaciones" name="Reset All Animation Speed"/>
+				<menu_item_check label="Animaciones a cámara lenta" name="Slow Motion Animations"/>
+			</menu>
 			<menu_item_call label="Force Params to Default" name="Force Params to Default"/>
 			<menu_item_check label="Animation Info" name="Animation Info"/>
-			<menu_item_check label="Slow Motion Animations" name="Slow Motion Animations"/>
 			<menu_item_check label="Disable Level Of Detail" name="Disable LOD"/>
 			<menu_item_check label="Show Collision Skeleton" name="Show Collision Skeleton"/>
 			<menu_item_check label="Display Agent Target" name="Display Agent Target"/>
diff --git a/indra/newview/skins/default/xui/es/notifications.xml b/indra/newview/skins/default/xui/es/notifications.xml
index 7dfb27717d3..05455f54c39 100644
--- a/indra/newview/skins/default/xui/es/notifications.xml
+++ b/indra/newview/skins/default/xui/es/notifications.xml
@@ -511,6 +511,24 @@ El objeto debe de haber sido borrado o estar fuera de rango (&apos;out of range&
 		</url>
 		<usetemplate ignoretext="Mi controlador de gráficos no está actualizado" name="okcancelignore" notext="No" yestext="Sí"/>
 	</notification>
+	<notification name="AMDOldDriver">
+		Probablemente ya existe un controlador más reciente para tu procesador de gráficos. La actualización del controlador de gráficos puede mejorar sustancialmente el rendimiento.
+
+    ¿Deseas visitar [_URL] para comprobar si hay controladores actualizados?
+		<url name="url">
+			http://support.amd.com/us/Pages/AMDSupportHub.aspx
+		</url>
+		<usetemplate ignoretext="Mi controlador de gráficos no está actualizado" name="okcancelignore" notext="No" yestext="Sí"/>
+	</notification>
+	<notification name="NVIDIAOldDriver">
+		Probablemente ya existe un controlador más reciente para tu procesador de gráficos.  La actualización del controlador de gráficos puede mejorar sustancialmente el rendimiento.
+
+    ¿Deseas visitar [_URL] para comprobar si hay controladores actualizados?
+		<url name="url">
+			http://www.nvidia.com/Download/index.aspx?lang=es
+		</url>
+		<usetemplate ignoretext="Mi controlador de gráficos no está actualizado" name="okcancelignore" notext="No" yestext="Sí"/>
+	</notification>
 	<notification name="UnknownGPU">
 		Tu sistema usa una tarjeta gráfica que [APP_NAME] no reconoce.
 Suele suceder con hardware nuevo que todavía no ha sido probado con [APP_NAME].  Probablemente todo irá bien, pero deberás ajustar tus configuraciones gráficas.
@@ -1553,10 +1571,13 @@ Debemos reiniciar [APP_NAME] para instalar la actualización.
 		En este momento, no se puede ofrecer el ser amigo. Por favor, vuelve a intentarlo en un momento.
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
-	<notification name="BusyModeSet">
-		Pasar al modo ocupado.
-Se ocultará el chat y los mensajes instantáneos   (éstos recibirán tu Respuesta en el modo ocupado). Se rehusarán todos los ofrecimientos de teleporte. Todas las ofertas de inventario irán a tu Papelera.
-		<usetemplate ignoretext="Cambio mi estado al modo ocupado" name="okignore" yestext="OK"/>
+	<notification name="DoNotDisturbModeSet">
+		Está activado No molestar. No obtendrás un aviso cuando recibas comunicaciones.
+
+- Los otros residentes recibirán tu respuesta de No molestar (se configura en Preferencias &gt; General).
+- Se rehusarán los ofrecimientos de teleporte.
+- Se rechazarán las llamadas de voz.
+		<usetemplate ignoretext="Cambio mi estado al modo No molestar" name="okignore" yestext="OK"/>
 	</notification>
 	<notification name="JoinedTooManyGroupsMember">
 		Has superado tu número máximo de grupos. Por favor, sal de al menos uno antes de entrar en éste, o rehúsa la oferta.
@@ -2043,6 +2064,10 @@ Dado que estos objetos tienen scripts, moverlos a tu inventario puede provocar u
 		¿Ir a tu [http://secondlife.com/account/ Panel de Control] para ver el historial de tu cuenta?
 		<usetemplate ignoretext="Abrir mi navegador para ver el historial de mi cuenta" name="okcancelignore" notext="Cancelar" yestext="Ir a la página"/>
 	</notification>
+	<notification name="ConfirmAddingChatParticipants">
+		Si agregas una persona a una conversación en curso, se creará una conversación nueva. Todos los participantes recibirán notificaciones de la nueva conversación.
+		<usetemplate ignoretext="Confirmar agregar participantes al chat" name="okcancelignore" notext="Cancelar" yestext="Aceptar"/>
+	</notification>
 	<notification name="ConfirmQuit">
 		¿Estás seguro de que quieres salir?
 		<usetemplate ignoretext="Confirmar antes de salir" name="okcancelignore" notext="No salir" yestext="Salir"/>
@@ -2116,14 +2141,14 @@ Linden Lab
 			<button ignore="Nunca reemplazar" name="No" text="Cancelar"/>
 		</form>
 	</notification>
-	<notification label="¡Aviso! Modo Ocupado" name="BusyModePay">
-		Estás en el modo Ocupado. Por tanto, no recibirás ningún ítem a cambio de este pago.
+	<notification label="Advertencia del modo No molestar" name="DoNotDisturbModePay">
+		Tienes activado No molestar. No podrás recibir ningún objeto ofrecido a cambio de este pago.
 
-¿Quieres salir del modo Ocupado antes de completar esta transacción?
+¿Deseas desactivar No molestar antes de finalizar esta transacción?
 		<form name="form">
-			<ignore name="ignore" save_option="true" text="Voy a pagar a una persona u objeto mientras estoy en el modo ocupado"/>
-			<button ignore="Siempre salir del modo Ocupado" name="Yes" text="OK"/>
-			<button ignore="Nunca salir del modo Ocupado" name="No" text="Cancelar"/>
+			<ignore name="ignore" text="Voy a pagar a una persona u objeto mientras estoy en el modo No molestar"/>
+			<button ignore="Salir siempre del modo No molestar" name="Yes" text="OK"/>
+			<button ignore="No salir nunca del modo No molestar" name="No" text="Cancelar"/>
 		</form>
 	</notification>
 	<notification name="ConfirmDeleteProtectedCategory">
@@ -2258,11 +2283,8 @@ Publícala en una página web para que otros puedan acceder fácilmente a esta p
 	<notification name="GroupNotice">
 		Asunto: [SUBJECT], Mensaje: [MESSAGE]
 	</notification>
-	<notification name="FriendOnline">
-		&lt;nolink&gt;[NAME]&lt;/nolink&gt; está conectado
-	</notification>
-	<notification name="FriendOffline">
-		&lt;nolink&gt;[NAME]&lt;/nolink&gt; está desconectado
+	<notification name="FriendOnlineOffline">
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; está [STATUS]
 	</notification>
 	<notification name="AddSelfFriend">
 		Aunque eres muy agradable, no puedes añadirte como amigo a ti mismo.
@@ -2490,13 +2512,6 @@ Aquí no puedes volar.
 	<notification name="DynamicPathfindingDisabled">
 		Esta región no tiene activado el pathfinding dinámico. Los objetos programados que utilicen llamadas LSL de pathfinding pueden tener un comportamiento inesperado en ella.
 	</notification>
-	<notification name="PathfindingRebakeNavmesh">
-		Si cambias ciertos objetos en esta región, otros objetos móviles podrían tener un comportamiento incorrecto. Para que los objetos móviles se comporten correctamente, pulsa el botón “Recargar la región”. Si quieres más información, elige “Ayuda”.
-		<url name="url">
-			http://wiki.secondlife.com/wiki/Pathfinding_Tools_in_the_Second_Life_Viewer
-		</url>
-		<usetemplate helptext="Ayuda" ignoretext="Si cambias ciertos objetos en esta región, otros objetos móviles podrían tener un comportamiento incorrecto." name="okhelpignore" yestext="OK"/>
-	</notification>
 	<notification name="PathfindingCannotRebakeNavmesh">
 		Se ha producido un error. Puede haber ocurrido un problema en la red o el servidor, o quizás no tengas derechos de construcción. Este problema podría resolverse cerrando la sesión e iniciando una sesión nueva.
 		<usetemplate name="okbutton" yestext="OK"/>
@@ -2757,9 +2772,9 @@ Del objeto: &lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;, propietario: [NAME]?
 		</form>
 	</notification>
 	<notification name="ScriptQuestionCaution">
-		Atención: El objeto &apos;&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;&apos; solicita un acceso total a tu cuenta de dólares Linden. Si le autorizas el acceso, podrá retirar fondos de tu cuenta en cualquier momento o vaciarla por completo, de manera permanente y sin más advertencias.
+		Atención: El objeto &apos;&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;&apos; solicita un acceso pleno a tu cuenta de dólares Linden. Si le autorizas el acceso, podrá retirar fondos de tu cuenta en cualquier momento o vaciarla por completo, cuando lo desee y sin más advertencias.
   
-Estas solicitudes pocas veces son legítimas. No autorices el acceso si no conoces la razón exacta por la que desea el acceso a tu cuenta.
+No autorices el acceso a tu cuenta si no conoces cuál es la razón exacta.
 		<form name="form">
 			<button name="Grant" text="Permitir acceso total"/>
 			<button name="Deny" text="Denegar"/>
@@ -3331,4 +3346,633 @@ Intento cancelado.
 		Vas a eliminar [NUM_ITEMS] objetos. ¿Estás seguro de que deseas continuar?
 		<usetemplate ignoretext="¿Estás seguro de que quieres eliminar varios elementos?" name="okcancelignore" notext="No" yestext="Sí"/>
 	</notification>
+	<notification name="AvatarFrozen">
+		[AV_FREEZER] te ha congelado. No puedes moverte ni interactuar con el mundo.
+	</notification>
+	<notification name="AvatarFrozenDuration">
+		[AV_FREEZER] te ha congelado durante [AV_FREEZE_TIME] segundos. No puedes moverte ni interactuar con el mundo.
+	</notification>
+	<notification name="YouFrozeAvatar">
+		Avatar congelado.
+	</notification>
+	<notification name="AvatarHasUnFrozenYou">
+		[AV_FREEZER] te ha descongelado.
+	</notification>
+	<notification name="AvatarUnFrozen">
+		Avatar descongelado.
+	</notification>
+	<notification name="AvatarFreezeFailure">
+		Error al congelar: no tienes permisos de administrador en esa parcela.
+	</notification>
+	<notification name="AvatarFreezeThaw">
+		La congelación ha terminado, puedes seguir con tus asuntos.
+	</notification>
+	<notification name="AvatarCantFreeze">
+		Lo sentimos, ese usuario no se puede congelar.
+	</notification>
+	<notification name="NowOwnObject">
+		Ahora eres el propietario del objeto [OBJECT_NAME]
+	</notification>
+	<notification name="CantRezOnLand">
+		No se puede colocar el objeto en [OBJECT_POS] porque el propietario de ese terreno no lo permite. Usa la herramienta de terreno para ver quién es el propietario.
+	</notification>
+	<notification name="RezFailTooManyRequests">
+		El objeto no se puede colocar porque hay demasiadas solicitudes.
+	</notification>
+	<notification name="SitFailCantMove">
+		No te puedes sentar porque en este momento no puedes desplazarte.
+	</notification>
+	<notification name="SitFailNotAllowedOnLand">
+		No te puedes sentar porque no tienes permiso para estar en ese terreno.
+	</notification>
+	<notification name="SitFailNotSameRegion">
+		Acércate. No te puedes sentar en el objeto porque
+no está en la misma región que tú.
+	</notification>
+	<notification name="NoNewObjectRegionFull">
+		No se puede crear el nuevo objeto. La región está llena.
+	</notification>
+	<notification name="FailedToPlaceObject">
+		Error al colocar el objeto en el lugar especificado.  Vuelve a intentarlo.
+	</notification>
+	<notification name="NoOwnNoGardening">
+		No puedes crear árboles y hierba en un terreno que no es tuyo.
+	</notification>
+	<notification name="NoCopyPermsNoObject">
+		Error al copiar: careces de permiso para copiar el objeto &apos;[OBJ_NAME]&apos;.
+	</notification>
+	<notification name="NoTransPermsNoObject">
+		Error al copiar: no se te puede transferir el objeto &apos;[OBJ_NAME]&apos;.
+	</notification>
+	<notification name="AddToNavMeshNoCopy">
+		Error al copiar porque el objeto &apos;[OBJ_NAME]&apos; contribuye al navmesh.
+	</notification>
+	<notification name="DupeWithNoRootsSelected">
+		Duplicación sin objetos raíz seleccionados.
+	</notification>
+	<notification name="CantDupeCuzRegionIsFull">
+		No se pueden duplicar objetos porque la región está llena.
+	</notification>
+	<notification name="CantDupeCuzParcelNotFound">
+		No se pueden duplicar los objetos: no se encuentra la parcela en la que se hallan.
+	</notification>
+	<notification name="CantCreateCuzParcelFull">
+		No se puede crear el objeto porque 
+la parcela está llena.
+	</notification>
+	<notification name="RezAttemptFailed">
+		Error al intentar colocar un objeto.
+	</notification>
+	<notification name="ToxicInvRezAttemptFailed">
+		No se puede crear un objeto que ha causado problemas en esta región.
+	</notification>
+	<notification name="InvItemIsBlacklisted">
+		Ese objeto de inventario está en la lista negra.
+	</notification>
+	<notification name="NoCanRezObjects">
+		Actualmente no tienes autorización para crear objetos.
+	</notification>
+	<notification name="LandSearchBlocked">
+		Búsqueda de terrenos bloqueada.
+Has realizado demasiadas búsquedas de terreno con excesiva rapidez.
+Prueba otra vez dentro de un minuto.
+	</notification>
+	<notification name="NotEnoughResourcesToAttach">
+		No hay suficientes recursos de script disponibles para anexar el objeto
+	</notification>
+	<notification name="YouDiedAndGotTPHome">
+		Has muerto y te has teleportado a tu lugar de origen
+	</notification>
+	<notification name="EjectComingSoon">
+		Te han expulsado de aquí y tienes [EJECT_TIME] segundos para salir.
+	</notification>
+	<notification name="NoEnterServerFull">
+		No puedes entrar en esta región porque 
+el servidor está lleno.
+	</notification>
+	<notification name="SaveBackToInvDisabled">
+		Se ha deshabilitado Devolver el objeto a mi inventario.
+	</notification>
+	<notification name="NoExistNoSaveToContents">
+		No se puede guardar &apos;[OBJ_NAME]&apos; en el contenido del objeto porque el objeto desde el cual ha sido colocado ya no existe.
+	</notification>
+	<notification name="NoModNoSaveToContents">
+		No se puede guardar &apos;[OBJ_NAME]&apos; en el contenido del objeto porque no tienes permiso para modificar el objeto &apos;[DEST_NAME]&apos;.
+	</notification>
+	<notification name="NoSaveBackToInvDisabled">
+		No se puede guardar &apos;[OBJ_NAME]&apos; de nuevo en el inventario; esta operación está desactivada.
+	</notification>
+	<notification name="NoCopyNoSelCopy">
+		No se puede copiar tu selección porque no tienes permiso para copiar el objeto &apos;[OBJ_NAME]&apos;.
+	</notification>
+	<notification name="NoTransNoSelCopy">
+		No se puede copiar tu selección porque el objeto &apos;[OBJ_NAME]&apos; es intransferible.
+	</notification>
+	<notification name="NoTransNoCopy">
+		No se puede copiar tu selección porque el objeto &apos;[OBJ_NAME]&apos; es intransferible.
+	</notification>
+	<notification name="NoPermsNoRemoval">
+		El sistema de permisos no admite la eliminación del objeto &apos;[OBJ_NAME]&apos; del simulador.
+	</notification>
+	<notification name="NoModNoSaveSelection">
+		No se puede guardar tu selección porque no tienes permiso para modificar el objeto &apos;[OBJ_NAME]&apos;.
+	</notification>
+	<notification name="NoCopyNoSaveSelection">
+		No se puede guardar tu selección porque el objeto &apos;[OBJ_NAME]&apos; no se puede copiar.
+	</notification>
+	<notification name="NoModNoTaking">
+		No se puede aceptar tu selección porque no tienes permiso para modificar el objeto &apos;[OBJ_NAME]&apos;.
+	</notification>
+	<notification name="RezDestInternalError">
+		Error interno: tipo de destino desconocido.
+	</notification>
+	<notification name="DeleteFailObjNotFound">
+		Error al borrar: el objeto no se encuentra
+	</notification>
+	<notification name="SorryCantEjectUser">
+		Lo sentimos, ese usuario no se puede expulsar.
+	</notification>
+	<notification name="RegionSezNotAHome">
+		Esta región no te permite configurar aquí tu lugar de origen.
+	</notification>
+	<notification name="HomeLocationLimits">
+		Tu &apos;Lugar de origen&apos; solo se puede configurar en tu terreno o en un punto de información del continente.
+	</notification>
+	<notification name="HomePositionSet">
+		Posición de origen ajustada.
+	</notification>
+	<notification name="AvatarEjected">
+		Avatar expulsado.
+	</notification>
+	<notification name="AvatarEjectFailed">
+		Error al expulsar: no tienes permiso de administrador en esa parcela.
+	</notification>
+	<notification name="CantMoveObjectParcelFull">
+		No se puede mover el objeto &apos;[OBJECT_NAME]&apos; a
+[OBJ_POSITION] en la región [REGION_NAME] porque la parcela está llena.
+	</notification>
+	<notification name="CantMoveObjectParcelPerms">
+		No se puede mover el objeto &apos;[OBJECT_NAME]&apos; a
+[OBJ_POSITION] de la región [REGION_NAME] porque tus objetos no están permitidos en esta parcela.
+	</notification>
+	<notification name="CantMoveObjectParcelResources">
+		No se puede mover el objeto &apos;[OBJECT_NAME]&apos; a
+[OBJ_POSITION] de la región [REGION_NAME] porque no hay suficientes recursos para este objeto en esta parcela.
+	</notification>
+	<notification name="CantMoveObjectRegionVersion">
+		No se puede mover el objeto &apos;[OBJECT_NAME]&apos; a
+[OBJ_POSITION] de la región [REGION_NAME] porque la otra región ejecuta una versión más antigua que no admite la recepción de este objeto atravesando regiones.
+	</notification>
+	<notification name="CantMoveObjectNavMesh">
+		No se puede mover el objeto &apos;[OBJECT_NAME]&apos; a
+[OBJ_POSITION] en la región [REGION_NAME] porque no puedes modificar el navmesh a través de límites de región.
+	</notification>
+	<notification name="CantMoveObjectWTF">
+		No se puede mover el objeto &apos;[OBJECT_NAME]&apos; a
+[OBJ_POSITION] en la región [REGION_NAME] por un motivo desconocido. ([FAILURE_TYPE])
+	</notification>
+	<notification name="NoPermModifyObject">
+		No tienes permiso para modificar ese objeto
+	</notification>
+	<notification name="CantEnablePhysObjContributesToNav">
+		No se puede habilitar la física para un objeto que contribuye al navmesh.
+	</notification>
+	<notification name="CantEnablePhysKeyframedObj">
+		No se puede activar la física para los objetos con fotogramas clave.
+	</notification>
+	<notification name="CantEnablePhysNotEnoughLandResources">
+		No se puede habilitar la física para el objeto: recursos de terreno insuficientes.
+	</notification>
+	<notification name="CantEnablePhysCostTooGreat">
+		No se puede activar la física para un objeto con un coste de recursos de física mayor que [MAX_OBJECTS]
+	</notification>
+	<notification name="PhantomWithConcavePiece">
+		Este objeto no puede tener una pieza cóncava porque es inmaterial y contribuye al navmesh.
+	</notification>
+	<notification name="UnableAddItem">
+		¡No se puede añadir un objeto!
+	</notification>
+	<notification name="UnableEditItem">
+		¡No se puede editar esto!
+	</notification>
+	<notification name="NoPermToEdit">
+		No puedes editar esto.
+	</notification>
+	<notification name="NoPermToCopyInventory">
+		No está permitido copiar ese inventario.
+	</notification>
+	<notification name="CantSaveItemDoesntExist">
+		No se puede guardar en el contenido del objeto: el objeto ya no existe.
+	</notification>
+	<notification name="CantSaveItemAlreadyExists">
+		No se puede guardar en el contenido del objeto: el inventario ya contiene un objeto con ese nombre
+	</notification>
+	<notification name="CantSaveModifyAttachment">
+		No se puede guardar en el contenido del objeto: se modificarían los permisos de anexo.
+	</notification>
+	<notification name="TooManyScripts">
+		Demasiados scripts.
+	</notification>
+	<notification name="UnableAddScript">
+		¡No se puede añadir un script!
+	</notification>
+	<notification name="AssetServerTimeoutObjReturn">
+		El servidor de objetos no respondió puntualmente. El objeto se ha devuelto al sim.
+	</notification>
+	<notification name="RegionDisablePhysicsShapes">
+		Esta región no tiene habilitadas las formas de física.
+	</notification>
+	<notification name="NoModNavmeshAcrossRegions">
+		No se puede modificar el navmesh a través de límites de región.
+	</notification>
+	<notification name="NoSetPhysicsPropertiesOnObjectType">
+		No se pueden establecer propiedades de física en ese tipo de objeto.
+	</notification>
+	<notification name="NoSetRootPrimWithNoShape">
+		No se puede establecer que un prim raíz no tenga forma.
+	</notification>
+	<notification name="NoRegionSupportPhysMats">
+		Esta región no tiene habilitados los materiales de física.
+	</notification>
+	<notification name="OnlyRootPrimPhysMats">
+		Solo se pueden ajustar los materiales de física de las prims raíces.
+	</notification>
+	<notification name="NoSupportCharacterPhysMats">
+		Aun no es posible configurar materiales de física para los personajes.
+	</notification>
+	<notification name="InvalidPhysMatProperty">
+		Una o varias de las propiedades de los materiales de física especificados no son válidas.
+	</notification>
+	<notification name="NoPermsAlterStitchingMeshObj">
+		No se puede cambiar el tipo de unión de un objeto de la malla.
+	</notification>
+	<notification name="NoPermsAlterShapeMeshObj">
+		No se puede cambiar la forma de un objeto de la malla
+	</notification>
+	<notification name="FullRegionCantEnter">
+		No puedes entrar en esta región porque \nla región está llena.
+	</notification>
+	<notification name="LinkFailedOwnersDiffer">
+		Error de vínculo: los propietarios son diferentes
+	</notification>
+	<notification name="LinkFailedNoModNavmeshAcrossRegions">
+		Error de vínculo: no se puede modificar el navmesh a través de límites de región.
+	</notification>
+	<notification name="LinkFailedNoPermToEdit">
+		Error de vínculo: no tienes permiso de edición.
+	</notification>
+	<notification name="LinkFailedTooManyPrims">
+		Error de vínculo: demasiadas primitivas
+	</notification>
+	<notification name="LinkFailedCantLinkNoCopyNoTrans">
+		Error de vínculo: no se pueden vincular &apos;no copiable&apos; y &apos;no transferible&apos;
+	</notification>
+	<notification name="LinkFailedNothingLinkable">
+		Error de vínculo: no hay objetos que se puedan vincular.
+	</notification>
+	<notification name="LinkFailedTooManyPathfindingChars">
+		Error de vínculo: demasiados personajes de pathfinding
+	</notification>
+	<notification name="LinkFailedInsufficientLand">
+		Error de vínculo: recursos de terreno insuficientes
+	</notification>
+	<notification name="LinkFailedTooMuchPhysics">
+		El objeto utiliza una cantidad excesiva de recursos de física; se ha desactivado su dinámica.
+	</notification>
+	<notification name="TeleportedHomeByObjectOnParcel">
+		Has sido teleportado al origen por el objeto &apos;[OBJECT_NAME]&apos; de la parcela &apos;[PARCEL_NAME]&apos;
+	</notification>
+	<notification name="TeleportedHomeByObject">
+		Has sido teleportado a tu origen por el objeto &apos;[OBJECT_NAME]&apos;
+	</notification>
+	<notification name="TeleportedByAttachment">
+		Has sido teleportado por un anexo de [ITEM_ID]
+	</notification>
+	<notification name="TeleportedByObjectOnParcel">
+		Has sido teleportado por el objeto &apos;[OBJECT_NAME]&apos; de la parcela &apos;[PARCEL_NAME]&apos;
+	</notification>
+	<notification name="TeleportedByObjectOwnedBy">
+		Has sido teleportado por el objeto &apos;[OBJECT_NAME]&apos; que es propiedad de [OWNER_ID]
+	</notification>
+	<notification name="TeleportedByObjectUnknownUser">
+		Has sido teleportado por el objeto &apos;[OBJECT_NAME]&apos; cuyo propietario es un usuario desconocido.
+	</notification>
+	<notification name="CantCreateObjectRegionFull">
+		No se puede crear el objeto solicitado. La región está llena.
+	</notification>
+	<notification name="CantAttackMultipleObjOneSpot">
+		No puedes anexar varios objetos a un solo lugar.
+	</notification>
+	<notification name="CantCreateMultipleObjAtLoc">
+		Aquí no se pueden crear varios objetos.
+	</notification>
+	<notification name="UnableToCreateObjTimeOut">
+		No se puede crear el objeto solicitado. El objeto no se encuentra en la base de datos.
+	</notification>
+	<notification name="UnableToCreateObjUnknown">
+		No se puede crear el objeto solicitado. Ha expirado el tiempo de la solicitud. Vuelve a intentarlo.
+	</notification>
+	<notification name="UnableToCreateObjMissingFromDB">
+		No se puede crear el objeto solicitado. Vuelve a intentarlo.
+	</notification>
+	<notification name="RezFailureTookTooLong">
+		Error al colocar: la carga del objeto solicitado ha tardado demasiado.
+	</notification>
+	<notification name="FailedToPlaceObjAtLoc">
+		Error al colocar el objeto en el lugar especificado. Vuelve a intentarlo.
+	</notification>
+	<notification name="CantCreatePlantsOnLand">
+		No se pueden crear plantas en este terreno.
+	</notification>
+	<notification name="CantRestoreObjectNoWorldPos">
+		No se puede restaurar el objeto. No se ha encontrado una posición del mundo.
+	</notification>
+	<notification name="CantRezObjectInvalidMeshData">
+		No se puede colocar el objeto porque sus datos de malla no son válidos.
+	</notification>
+	<notification name="CantRezObjectTooManyScripts">
+		No se puede colocar el objeto porque la región ya contiene demasiados scripts.
+	</notification>
+	<notification name="CantCreateObjectNoAccess">
+		Tus privilegios de acceso no te permiten crear objetos allí.
+	</notification>
+	<notification name="CantCreateObject">
+		Actualmente no tienes autorización para crear objetos.
+	</notification>
+	<notification name="InvalidObjectParams">
+		Los parámetros de objeto no son válidos
+	</notification>
+	<notification name="CantDuplicateObjectNoAcess">
+		Tus privilegios de acceso no te permiten duplicar objetos aquí.
+	</notification>
+	<notification name="CantChangeShape">
+		No tienes permiso para cambiar esta forma.
+	</notification>
+	<notification name="NoAccessToClaimObjects">
+		Tus privilegios de acceso no te permiten reclamar objetos aquí.
+	</notification>
+	<notification name="DeedFailedNoPermToDeedForGroup">
+		Error de transferencia: no tienes permiso para transferir objetos para tu grupo.
+	</notification>
+	<notification name="NoPrivsToBuyObject">
+		Tus privilegios de acceso no te autorizan a comprar objetos aquí.
+	</notification>
+	<notification name="CantAttachObjectAvatarSittingOnIt">
+		No se puede anexar el objeto porque un avatar está sentado en él.
+	</notification>
+	<notification name="WhyAreYouTryingToWearShrubbery">
+		No te puedes poner árboles y hierba como anexos.
+	</notification>
+	<notification name="CantAttachGroupOwnedObjs">
+		No se pueden anexar objetos que son propiedad de grupos.
+	</notification>
+	<notification name="CantAttachObjectsNotOwned">
+		No puedes anexar objetos de los que no eres propietario.
+	</notification>
+	<notification name="CantAttachNavmeshObjects">
+		No se pueden anexar objetos que contribuyen al navmesh.
+	</notification>
+	<notification name="CantAttachObjectNoMovePermissions">
+		No se puede anexar el objeto porque no tienes permiso para moverlo.
+	</notification>
+	<notification name="CantAttachNotEnoughScriptResources">
+		No hay suficientes recursos de script disponibles para anexar el objeto
+	</notification>
+	<notification name="CantDropItemTrialUser">
+		No se pueden soltar objetos aquí; inténtalo en la zona de prueba gratuita.
+	</notification>
+	<notification name="CantDropMeshAttachment">
+		No se pueden soltar anexos de la malla. Quítalos en el inventario y después colócalos en el mundo.
+	</notification>
+	<notification name="CantDropAttachmentNoPermission">
+		Error al soltar el anexo: no tienes permiso para soltarlo allí.
+	</notification>
+	<notification name="CantDropAttachmentInsufficientLandResources">
+		Error al soltar el anexo: recurso de terreno disponible insuficiente.
+	</notification>
+	<notification name="CantDropAttachmentInsufficientResources">
+		Error al soltar los anexos: los recursos disponibles son insuficientes.
+	</notification>
+	<notification name="CantDropObjectFullParcel">
+		No se puede soltar el objeto aquí. La parcela está llena.
+	</notification>
+	<notification name="CantTouchObjectBannedFromParcel">
+		No puedes tocar/agarrar este objeto porque tienes prohibida la entrada en la parcela de terreno.
+	</notification>
+	<notification name="PlzNarrowDeleteParams">
+		Acota los parámetros de eliminación.
+	</notification>
+	<notification name="UnableToUploadAsset">
+		No se puede subir el activo.
+	</notification>
+	<notification name="CantTeleportCouldNotFindUser">
+		No se ha podido encontrar el usuario para teleportarlo al origen
+	</notification>
+	<notification name="GodlikeRequestFailed">
+		error en la solicitud de superpoderes
+	</notification>
+	<notification name="GenericRequestFailed">
+		error de solicitud genérico
+	</notification>
+	<notification name="CantUploadPostcard">
+		No se puede subir la postal. Vuelve a intentarlo más tarde.
+	</notification>
+	<notification name="CantFetchInventoryForGroupNotice">
+		No se pueden obtener los datos de inventario del aviso de grupo.
+	</notification>
+	<notification name="CantSendGroupNoticeNotPermitted">
+		No se puede enviar el aviso de grupo: no está permitido.
+	</notification>
+	<notification name="CantSendGroupNoticeCantConstructInventory">
+		No se puede enviar el aviso del grupo: el inventario no se puede construir.
+	</notification>
+	<notification name="CantParceInventoryInNotice">
+		No se puede analizar el inventario del aviso.
+	</notification>
+	<notification name="TerrainUploadFailed">
+		Error al subir terreno.
+	</notification>
+	<notification name="TerrainFileWritten">
+		Se ha registrado el archivo de terreno.
+	</notification>
+	<notification name="TerrainFileWrittenStartingDownload">
+		Archivo de terreno registrado, iniciando la descarga...
+	</notification>
+	<notification name="TerrainBaked">
+		Terreno predeterminado.
+	</notification>
+	<notification name="TenObjectsDisabledPlzRefresh">
+		Solamente se han desactivado los 10 primeros objetos seleccionados. Si es preciso, actualiza y selecciona otros objetos.
+	</notification>
+	<notification name="UpdateViewerBuyParcel">
+		Para comprar esta parcela debes actualizar el visor.
+	</notification>
+	<notification name="CantBuyParcelNotForSale">
+		Error al comprar: esta parcela no está en venta.
+	</notification>
+	<notification name="CantBuySalePriceOrLandAreaChanged">
+		No se puede comprar: el precio de venta o la superficie del terreno han cambiado.
+	</notification>
+	<notification name="CantBuyParcelNotAuthorized">
+		No eres el comprador autorizado de esta parcela.
+	</notification>
+	<notification name="CantBuyParcelAwaitingPurchaseAuth">
+		No puedes comprar esta parcela porque ya está en espera de una autorización de compra
+	</notification>
+	<notification name="CantBuildOverflowParcel">
+		No se pueden construir objetos aquí porque se desbordaría la parcela.
+	</notification>
+	<notification name="SelectedMultipleOwnedLand">
+		Has seleccionado un terreno con propietarios diferentes. Selecciona un área más pequeña y repite la operación.
+	</notification>
+	<notification name="CantJoinTooFewLeasedParcels">
+		La selección no contiene suficientes parcelas alquiladas para unirlas.
+	</notification>
+	<notification name="CantDivideLandMultipleParcelsSelected">
+		No se puede dividir el terreno.\nHay varias parcelas seleccionadas.\nPrueba a seleccionar un terreno más pequeño.
+	</notification>
+	<notification name="CantDivideLandCantFindParcel">
+		No se puede dividir el terreno.\nNo se encuentra la parcela.\nAvísanos con Ayuda -&gt; Notificar fallo...
+	</notification>
+	<notification name="CantDivideLandWholeParcelSelected">
+		No se puede dividir el terreno. Está seleccionada la parcela completa.\nPrueba a seleccionar un terreno más pequeño.
+	</notification>
+	<notification name="LandHasBeenDivided">
+		El terreno se ha dividido.
+	</notification>
+	<notification name="PassPurchased">
+		Has comprado un pase.
+	</notification>
+	<notification name="RegionDisallowsClassifieds">
+		La región no permite anuncios.
+	</notification>
+	<notification name="LandPassExpireSoon">
+		Tu pase para este terreno está a punto de caducar.
+	</notification>
+	<notification name="CantSitNoSuitableSurface">
+		Esta superficie no es adecuada para sentarse, prueba en otro sitio.
+	</notification>
+	<notification name="CantSitNoRoom">
+		No hay sitio para sentarse aquí, prueba en otro lugar.
+	</notification>
+	<notification name="ClaimObjectFailedNoPermission">
+		Error al reclamar el objeto: no tienes permiso
+	</notification>
+	<notification name="ClaimObjectFailedNoMoney">
+		Error al reclamar el objeto: no tienes suficientes L$.
+	</notification>
+	<notification name="CantDeedGroupLand">
+		No se puede transferir un terreno propiedad de un grupo.
+	</notification>
+	<notification name="BuyObjectFailedNoMoney">
+		Error al comprar el objeto, no tienes suficientes L$.
+	</notification>
+	<notification name="BuyInventoryFailedNoMoney">
+		Error al comprar el inventario: no tienes suficientes L$.
+	</notification>
+	<notification name="BuyPassFailedNoMoney">
+		No tienes suficientes L$ para comprar un pase a este terreno.
+	</notification>
+	<notification name="CantBuyPassTryAgain">
+		No se puede comprar el pase ahora mismo. Vuelve a intentarlo más tarde.
+	</notification>
+	<notification name="CantCreateObjectParcelFull">
+		No se puede crear el objeto porque \nla parcela está llena.
+	</notification>
+	<notification name="FailedPlacingObject">
+		Error al colocar el objeto en el lugar especificado.  Vuelve a intentarlo.
+	</notification>
+	<notification name="CantCreateLandmarkForEvent">
+		No se puede crear un hito para el evento.
+	</notification>
+	<notification name="GodBeatsFreeze">
+		¡Tus superpoderes anulan la congelación!
+	</notification>
+	<notification name="SpecialPowersRequestFailedLogged">
+		Error en la solicitud de poderes especiales. Esta solicitud se ha registrado.
+	</notification>
+	<notification name="ExpireExplanation">
+		El sistema actualmente no puede procesar tu solicitud. Ha expirado el tiempo de la solicitud.
+	</notification>
+	<notification name="DieExplanation">
+		El sistema no puede procesar tu solicitud.
+	</notification>
+	<notification name="AddPrimitiveFailure">
+		Dinero insuficiente para crear la primitiva.
+	</notification>
+	<notification name="RezObjectFailure">
+		Dinero insuficiente para crear el objeto.
+	</notification>
+	<notification name="ResetHomePositionNotLegal">
+		Se ha restaurado la posición de origen, puesto que dicha posición no era válida.
+	</notification>
+	<notification name="CantInviteRegionFull">
+		Actualmente no puedes invitar a nadie a tu ubicación, puesto que la región está llena. Vuelve a intentarlo más tarde.
+	</notification>
+	<notification name="CantSetHomeAtRegion">
+		Esta región no te permite configurar aquí tu lugar de origen.
+	</notification>
+	<notification name="ListValidHomeLocations">
+		Tu &apos;Lugar de origen&apos; solo se puede configurar en tu terreno o en un punto de información del continente.
+	</notification>
+	<notification name="SetHomePosition">
+		Posición de origen ajustada.
+	</notification>
+	<notification name="CantDerezInventoryError">
+		No se puede quitar el objeto por un error del inventario.
+	</notification>
+	<notification name="CantCreateRequestedInv">
+		No se puede crear el inventario solicitado.
+	</notification>
+	<notification name="CantCreateRequestedInvFolder">
+		No se puede crear la carpeta de inventario solicitada.
+	</notification>
+	<notification name="CantCreateInventory">
+		No se puede crear el inventario.
+	</notification>
+	<notification name="CantCreateLandmark">
+		No se puede crear un hito.
+	</notification>
+	<notification name="CantCreateOutfit">
+		No se puede crear el vestuario en este momento. Prueba otra vez dentro de un minuto.
+	</notification>
+	<notification name="InventoryNotForSale">
+		El inventario no está en venta.
+	</notification>
+	<notification name="CantFindInvItem">
+		No se encuentra el objeto del inventario.
+	</notification>
+	<notification name="CantFindObject">
+		No se puede encontrar el objeto.
+	</notification>
+	<notification name="CantTransfterMoneyRegionDisabled">
+		En esta región actualmente no están activadas las transferencias de dinero a los objetos.
+	</notification>
+	<notification name="CantPayNoAgent">
+		No se ha averiguado a quién se debe pagar.
+	</notification>
+	<notification name="CantDonateToPublicObjects">
+		No se pueden dar L$ a los objetos públicos.
+	</notification>
+	<notification name="InventoryCreationInWorldObjectFailed">
+		Error al crear un inventario de objeto del mundo virtual.
+	</notification>
+	<notification name="UserBalanceOrLandUsageError">
+		Un error interno nos ha impedido actualizar tu visor correctamente. El saldo en L$ o las parcelas en propiedad presentadas en el visor podrían no coincidir con tu saldo real en los servidores.
+	</notification>
+	<notification name="LargePrimAgentIntersect">
+		No se pueden crear prims grandes que intersectan a otros jugadores. Reinténtalo cuando se hayan movido otros jugadores.
+	</notification>
+	<notification name="PreferenceChatClearLog">
+		Esto eliminará los registros de conversaciones anteriores y las copias de seguridad de ese archivo.
+		<usetemplate ignoretext="Confirmar antes de eliminar el registro de conversaciones anteriores." name="okcancelignore" notext="Cancelar" yestext="OK"/>
+	</notification>
+	<notification name="PreferenceChatDeleteTranscripts">
+		Esta acción eliminará las transcripciones de todas las conversaciones anteriores. La lista de conversaciones pasadas no resultará afectada. Se eliminarán de la carpeta [FOLDER] todos los archivos que tengan el sufijo .txt y txt.backup.
+		<usetemplate ignoretext="Confirmar antes de eliminar transcripciones." name="okcancelignore" notext="Cancelar" yestext="OK"/>
+	</notification>
+	<notification name="PreferenceChatPathChanged">
+		No se pueden mover los archivos. Ruta anterior restaurada.
+		<usetemplate ignoretext="No se pueden mover los archivos. Ruta anterior restaurada." name="okignore" yestext="OK"/>
+	</notification>
 </notifications>
diff --git a/indra/newview/skins/default/xui/es/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/es/panel_avatar_list_item.xml
index 5220df5d21b..c73e34b299f 100644
--- a/indra/newview/skins/default/xui/es/panel_avatar_list_item.xml
+++ b/indra/newview/skins/default/xui/es/panel_avatar_list_item.xml
@@ -26,5 +26,6 @@
 	<icon name="permission_edit_mine_icon" tool_tip="Este amigo puede editar, eliminar o manipular tus objetos"/>
 	<icon name="permission_map_icon" tool_tip="Este amigo puede encontrarte en el mapa"/>
 	<icon name="permission_online_icon" tool_tip="Este amigo puede ver cuándo estás conectado"/>
+	<button name="info_btn" tool_tip="Más información"/>
 	<button name="profile_btn" tool_tip="Ver el perfil"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/es/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/es/panel_block_list_sidetray.xml
index cddbad1195c..a3de14ae670 100644
--- a/indra/newview/skins/default/xui/es/panel_block_list_sidetray.xml
+++ b/indra/newview/skins/default/xui/es/panel_block_list_sidetray.xml
@@ -1,10 +1,11 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="block_list_panel">
-	<text name="title_text">
-		Lista de ignorados
-	</text>
-	<scroll_list name="blocked" tool_tip="Lista de los residentes ignorados actualmente"/>
-	<button label="Ignorar al residente..." label_selected="Ignorar al residente..." name="Block resident..." tool_tip="Elige a un Residente para ignorarle"/>
-	<button label="Ignorar objetos según el nombre..." label_selected="Ignorar objetos según el nombre..." name="Block object by name..."/>
-	<button label="No ignorar" label_selected="No ignorar" name="Unblock" tool_tip="Quita al Residente o al objeto de la lista de ignorados"/>
+	<panel label="bottom_panel" name="blocked_buttons_panel">
+		<filter_editor label="Filtro" name="blocked_filter_input"/>
+		<menu_button name="blocked_gear_btn" tool_tip="Acciones en la persona o el objeto seleccionado"/>
+		<menu_button name="view_btn" tool_tip="Opciones de clasificación"/>
+		<menu_button name="plus_btn" tool_tip="Elige un residente o un objeto para ignorarlo"/>
+		<button name="unblock_btn" tool_tip="Quita al Residente o al objeto de la lista de ignorados"/>
+	</panel>
+	<block_list name="blocked" tool_tip="Lista de los residentes ignorados actualmente"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/es/panel_conversation_list_item.xml b/indra/newview/skins/default/xui/es/panel_conversation_list_item.xml
new file mode 100644
index 00000000000..cc4a7e951d5
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_conversation_list_item.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="conversation_list_item">
+	<layout_stack name="conversation_item_stack">
+		<layout_panel name="conversation_title_panel">
+			<text name="conversation_title" value="(cargando)"/>
+		</layout_panel>
+	</layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_conversation_log_list_item.xml b/indra/newview/skins/default/xui/es/panel_conversation_log_list_item.xml
new file mode 100644
index 00000000000..2fc8cd3affc
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_conversation_log_list_item.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="conversation_log_list_item">
+	<icon name="voice_session_icon" tool_tip="La conversación incluía voz"/>
+	<icon name="unread_ims_icon" tool_tip="Han llegado mensajes mientras no tenías conexión"/>
+	<button name="delete_btn" tool_tip="Quitar esta entrada"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_group_list_item.xml b/indra/newview/skins/default/xui/es/panel_group_list_item.xml
index 5c9f1c3688c..4d682068d78 100644
--- a/indra/newview/skins/default/xui/es/panel_group_list_item.xml
+++ b/indra/newview/skins/default/xui/es/panel_group_list_item.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="group_list_item">
 	<text name="group_name" value="Desconocido"/>
+	<button name="info_btn" tool_tip="Más información"/>
 	<button name="profile_btn" tool_tip="Ver el perfil"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/es/panel_people.xml b/indra/newview/skins/default/xui/es/panel_people.xml
index a9d38dca250..7a7dfca0b8e 100644
--- a/indra/newview/skins/default/xui/es/panel_people.xml
+++ b/indra/newview/skins/default/xui/es/panel_people.xml
@@ -14,81 +14,53 @@
 	<string name="no_filtered_friends_msg">
 		¿No encuentras lo que buscas? Prueba con [secondlife:///app/search/people/[SEARCH_TERM] Buscar].
 	</string>
-	<string name="people_filter_label" value="Filtrar a la gente"/>
-	<string name="groups_filter_label" value="Filtrar a los grupos"/>
 	<string name="no_filtered_groups_msg" value="¿No encuentras lo que buscas? Prueba con [secondlife:///app/search/groups/[SEARCH_TERM] Buscar]."/>
 	<string name="no_groups_msg" value="¿Buscas grupos en que participar? Prueba la [secondlife:///app/search/groups Búsqueda]."/>
 	<string name="MiniMapToolTipMsg" value="[REGION](Pulsa dos veces para abrir el mapa, pulsa mayús y arrastra para obtener una panorámica)"/>
 	<string name="AltMiniMapToolTipMsg" value="[REGION](Pulsa dos veces para teleportarte, pulsa mayús y arrastra para obtener una panorámica)"/>
-	<filter_editor label="Filtrar" name="filter_input"/>
 	<tab_container name="tabs">
 		<panel label="CERCANA" name="nearby_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<menu_button name="nearby_view_sort_btn" tool_tip="Opciones"/>
-				<button name="add_friend_btn" tool_tip="Añadir al Residente seleccionado a la lista de tus amigos"/>
+			<panel label="bottom_panel" name="nearby_buttons_panel">
+				<filter_editor label="Filtrar la gente" name="nearby_filter_input"/>
+				<button name="gear_btn" tool_tip="Acciones en la persona seleccionada"/>
+				<menu_button name="nearby_view_btn" tool_tip="Opciones de vista/orden"/>
+				<button name="add_friend_btn" tool_tip="Ofrecer amistad a un residente"/>
+				<dnd_button name="nearby_del_btn" tool_tip="Quitar la persona seleccionada de la lista de amigos"/>
 			</panel>
 		</panel>
-		<panel label="MIS AMIGOS" name="friends_panel">
+		<panel label="AMIGOS" name="friends_panel">
+			<panel label="bottom_panel" name="friends_buttons_panel">
+				<filter_editor label="Filtrar la gente" name="friends_filter_input"/>
+				<button name="gear_btn" tool_tip="Acciones en la persona seleccionada"/>
+				<menu_button name="friends_view_btn" tool_tip="Opciones de vista/orden"/>
+				<button name="friends_add_btn" tool_tip="Ofrecer amistad a un residente"/>
+				<dnd_button name="friends_del_btn" tool_tip="Quitar la persona seleccionada de la lista de amigos"/>
+			</panel>
 			<accordion name="friends_accordion">
 				<accordion_tab name="tab_online" title="Conectado"/>
 				<accordion_tab name="tab_all" title="Todos"/>
 			</accordion>
-			<panel label="bottom_panel" name="bottom_panel">
-				<layout_stack name="bottom_panel">
-					<layout_panel name="options_gear_btn_panel">
-						<menu_button name="friends_viewsort_btn" tool_tip="Ver más opciones"/>
-					</layout_panel>
-					<layout_panel name="add_btn_panel">
-						<button name="add_btn" tool_tip="Ofrecer amistad a un Residente"/>
-					</layout_panel>
-					<layout_panel name="trash_btn_panel">
-						<dnd_button name="del_btn" tool_tip="Quitar a la persona seleccionada de tu lista de amigos"/>
-					</layout_panel>
-				</layout_stack>
-			</panel>
 		</panel>
-		<panel label="MIS GRUPOS" name="groups_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<menu_button name="groups_viewsort_btn" tool_tip="Opciones"/>
-				<button name="plus_btn" tool_tip="Entrar en un grupo o crear uno"/>
-				<button name="activate_btn" tool_tip="Activar el grupo seleccionado"/>
+		<panel label="GRUPOS" name="groups_panel">
+			<panel label="bottom_panel" name="groups_buttons_panel">
+				<filter_editor label="Filtrar los grupos" name="groups_filter_input"/>
+				<menu_button name="groups_gear_btn" tool_tip="Acciones en el grupo seleccionado"/>
+				<menu_button name="groups_view_btn" tool_tip="Opciones de vista/orden"/>
+				<menu_button name="plus_btn" tool_tip="Entrar en un grupo o crear uno"/>
+				<dnd_button name="minus_btn" tool_tip="Dejar el grupo seleccionado"/>
 			</panel>
 		</panel>
 		<panel label="RECIENTE" name="recent_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<menu_button name="recent_viewsort_btn" tool_tip="Opciones"/>
-				<button name="add_friend_btn" tool_tip="Añadir al Residente seleccionado a la lista de tus amigos"/>
+			<panel label="bottom_panel" name="recent_buttons_panel">
+				<filter_editor label="Filtrar la gente" name="recent_filter_input"/>
+				<button name="gear_btn" tool_tip="Acciones en la persona seleccionada"/>
+				<menu_button name="recent_view_btn" tool_tip="Opciones de vista/orden"/>
+				<button name="add_friend_btn" tool_tip="Ofrecer amistad a un residente"/>
+				<dnd_button name="recent_del_btn" tool_tip="Quitar la persona seleccionada de la lista de amigos"/>
 			</panel>
 		</panel>
+		<panel label="BLOQUEADO" name="blocked_panel">
+			<panel label="Residentes y objetos ignorados" name="panel_block_list_sidetray"/>
+		</panel>
 	</tab_container>
-	<panel name="button_bar">
-		<layout_stack name="bottom_bar_ls">
-			<layout_panel name="view_profile_btn_lp">
-				<button label="Perfil" name="view_profile_btn" tool_tip="Mostrar imágenes, grupos y otra información del Residente"/>
-			</layout_panel>
-			<layout_panel name="im_btn_lp">
-				<button label="MI" name="im_btn" tool_tip="Abrir una sesión de mensajes instantáneos"/>
-			</layout_panel>
-			<layout_panel name="call_btn_lp">
-				<button label="Llamar" name="call_btn" tool_tip="Llamar a este Residente"/>
-			</layout_panel>
-			<layout_panel name="share_btn_lp">
-				<button label="Compartir" name="share_btn" tool_tip="Compartir un objeto del inventario"/>
-			</layout_panel>
-			<layout_panel name="teleport_btn_lp">
-				<button label="Teleporte" name="teleport_btn" tool_tip="Ofrecer teleporte"/>
-			</layout_panel>
-		</layout_stack>
-		<layout_stack name="bottom_bar_ls1">
-			<layout_panel name="group_info_btn_lp">
-				<button label="Perfil del grupo" name="group_info_btn" tool_tip="Ver la información del grupo"/>
-			</layout_panel>
-			<layout_panel name="chat_btn_lp">
-				<button label="Chat de grupo" name="chat_btn" tool_tip="Abrir el chat"/>
-			</layout_panel>
-			<layout_panel name="group_call_btn_lp">
-				<button label="Llamar al grupo" name="group_call_btn" tool_tip="Llama a este grupo"/>
-			</layout_panel>
-		</layout_stack>
-	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/es/panel_preferences_chat.xml b/indra/newview/skins/default/xui/es/panel_preferences_chat.xml
index b0b6114e88e..28bc98f9885 100644
--- a/indra/newview/skins/default/xui/es/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/es/panel_preferences_chat.xml
@@ -1,34 +1,86 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Chat de texto" name="chat">
-	<text name="font_size">
-		Tamaño de la fuente:
-	</text>
-	<radio_group name="chat_font_size">
-		<radio_item label="Disminuir" name="radio" value="0"/>
-		<radio_item label="Medio" name="radio2" value="1"/>
-		<radio_item label="Aumentar" name="radio3" value="2"/>
-	</radio_group>
-	<check_box initial_value="true" label="Ejecutar la animación de escribir al hacerlo en el chat" name="play_typing_animation"/>
-	<check_box label="Cuando estoy desconectado, enviarme los MI al correo-e" name="send_im_to_email"/>
-	<check_box label="Permitir el historial de MI y chat en texto sin formato" name="plain_text_chat_history"/>
-	<check_box label="Bocadillos del chat" name="bubble_text_chat"/>
-	<text name="show_ims_in_label">
-		Mostrar los MI en:
-	</text>
-	<text name="requires_restart_label">
-		(requiere reiniciar)
-	</text>
-	<radio_group name="chat_window" tool_tip="Muestra tus mensajes instantáneos en varias ventanas flotantes o en una sola con varias pestañas (requiere que reinicies)">
-		<radio_item label="Ventanas distintas" name="radio" value="0"/>
-		<radio_item label="Pestañas" name="radio2" value="1"/>
-	</radio_group>
-	<text name="disable_toast_label">
-		Permitir ventanas de chat emergentes:
-	</text>
-	<check_box label="Chats de grupo" name="EnableGroupChatPopups" tool_tip="Activa esta casilla para ver una ventana emergente cada vez que recibas un mensaje de un grupo de chat"/>
-	<check_box label="Chats de MI" name="EnableIMChatPopups" tool_tip="Activa esta casilla para ver una ventana emergente cada vez que recibas un mensaje instantáneo"/>
-	<spinner label="Duración de los interlocutores favoritos:" name="nearby_toasts_lifetime"/>
-	<spinner label="Tiempo de los otros interlocutores:" name="nearby_toasts_fadingtime"/>
+	<panel>
+		<check_box initial_value="true" label="Ejecutar la animación de escribir al hacerlo en el chat" name="play_typing_animation"/>
+		<check_box label="Cuando estoy desconectado, enviarme los MI al correo-e" name="send_im_to_email"/>
+		<check_box label="Sólo pueden llamarme o mandarme un MI mis amigos y grupos" name="voice_call_friends_only_check"/>
+		<text name="font_size">
+			Tamaño de la fuente:
+		</text>
+		<combo_box name="chat_font_size">
+			<item label="Pequeña" name="Small" value="0"/>
+			<item label="Mediana" name="Medium" value="1"/>
+			<item label="Grande" name="Large" value="2"/>
+		</combo_box>
+		<check_box label="Bocadillos del chat" name="bubble_text_chat"/>
+	</panel>
+	<panel>
+		<text name="notifications">
+			Notificaciones
+		</text>
+		<text name="friend_ims">
+			MI de amigos:
+		</text>
+		<combo_box name="FriendIMOptions">
+			<item label="Ventana Conversaciones abiertas" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Mensaje en ventana emergente" name="PopUpMessage" value="toast"/>
+			<item label="Botón de la barra de herramientas de Flash" name="FlashToolbarButton" value="flash"/>
+			<item label="Ninguno" name="None" value="ninguno"/>
+		</combo_box>
+		<text name="non_friend_ims">
+			MI de no amigos:
+		</text>
+		<combo_box name="NonFriendIMOptions">
+			<item label="Ventana Conversaciones abiertas" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Mensaje en ventana emergente" name="PopUpMessage" value="toast"/>
+			<item label="Botón de la barra de herramientas de Flash" name="FlashToolbarButton" value="flash"/>
+			<item label="Ninguno" name="None" value="ninguno"/>
+		</combo_box>
+		<text name="conference_ims">
+			MI de conferencia:
+		</text>
+		<combo_box name="ConferenceIMOptions">
+			<item label="Ventana Conversaciones abiertas" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Mensaje en ventana emergente" name="PopUpMessage" value="toast"/>
+			<item label="Botón de la barra de herramientas de Flash" name="FlashToolbarButton" value="flash"/>
+			<item label="Ninguno" name="None" value="ninguno"/>
+		</combo_box>
+		<text name="group_chat">
+			Chat de grupo:
+		</text>
+		<combo_box name="GroupChatOptions">
+			<item label="Ventana Conversaciones abiertas" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Mensaje en ventana emergente" name="PopUpMessage" value="toast"/>
+			<item label="Botón de la barra de herramientas de Flash" name="FlashToolbarButton" value="flash"/>
+			<item label="Ninguno" name="None" value="ninguno"/>
+		</combo_box>
+		<text name="nearby_chat">
+			Chat:
+		</text>
+		<combo_box name="NearbyChatOptions">
+			<item label="Ventana Conversaciones abiertas" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Mensaje en ventana emergente" name="PopUpMessage" value="toast"/>
+			<item label="Botón de la barra de herramientas de Flash" name="FlashToolBarButton" value="flash"/>
+			<item label="Ninguno" name="None" value="ninguno"/>
+		</combo_box>
+		<text name="notifications_alert">
+			Para suspender provisionalmente todas las notificaciones, usa Comunicarme &gt; No molestar.
+		</text>
+	</panel>
+	<panel>
+		<text name="play_sound">
+			Reproducir sonido:
+		</text>
+		<check_box label="Nueva conversación" name="new_conversation"/>
+		<check_box label="Llamada de voz entrante" name="incoming_voice_call"/>
+		<check_box label="Oferta de teleporte" name="teleport_offer"/>
+		<check_box label="Oferta de inventario" name="inventory_offer"/>
+	</panel>
+	<panel>
+		<button label="Limpiar el registro..." name="clear_log"/>
+		<button label="Eliminar transcripciones..." name="delete_transcripts"/>
+		<button label="Examinar..." label_selected="Examinar" name="log_path_button"/>
+	</panel>
 	<button label="Traducción…" name="ok_btn"/>
 	<button label="Reemplazo automático..." name="autoreplace_showgui"/>
 	<button label="Revisión ortográfica..." name="spellcheck_showgui"/>
diff --git a/indra/newview/skins/default/xui/es/panel_preferences_general.xml b/indra/newview/skins/default/xui/es/panel_preferences_general.xml
index 4fc163f5b67..98b0081da92 100644
--- a/indra/newview/skins/default/xui/es/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/es/panel_preferences_general.xml
@@ -69,6 +69,9 @@
 		<combo_box.item label="nunca" name="item4"/>
 	</combo_box>
 	<text name="text_box3">
-		Respuesta cuando estoy en modo ocupado:
+		Respuesta de No molestar:
 	</text>
+	<text_editor name="do_not_disturb_response">
+		log_in_to_change
+	</text_editor>
 </panel>
diff --git a/indra/newview/skins/default/xui/es/sidepanel_task_info.xml b/indra/newview/skins/default/xui/es/sidepanel_task_info.xml
index 9da29589536..cb061796e79 100644
--- a/indra/newview/skins/default/xui/es/sidepanel_task_info.xml
+++ b/indra/newview/skins/default/xui/es/sidepanel_task_info.xml
@@ -72,6 +72,7 @@
 			<combo_box.item label="Comprar el objeto" name="Buyobject"/>
 			<combo_box.item label="Pagar el objeto" name="Payobject"/>
 			<combo_box.item label="Abrir" name="Open"/>
+			<combo_box.item label="Zoom" name="Zoom"/>
 		</combo_box>
 		<panel name="perms_inv">
 			<text name="perm_modify">
diff --git a/indra/newview/skins/default/xui/es/strings.xml b/indra/newview/skins/default/xui/es/strings.xml
index 52bcab54e58..937433e210f 100644
--- a/indra/newview/skins/default/xui/es/strings.xml
+++ b/indra/newview/skins/default/xui/es/strings.xml
@@ -128,7 +128,7 @@
 		Salir
 	</string>
 	<string name="create_account_url">
-		http://join.secondlife.com/index.php?lang=es-ES&amp;sourceid=[sourceid]
+		http://join.secondlife.com/?sourceid=[sourceid]
 	</string>
 	<string name="LoginFailedViewerNotPermitted">
 		Ya no puedes acceder a Second Life con el visor que estás utilizando. Visita la siguiente página para descargar un nuevo visor:
@@ -610,8 +610,8 @@ Intenta iniciar sesión de nuevo en unos instantes.
 	<string name="AvatarAway">
 		Ausente
 	</string>
-	<string name="AvatarBusy">
-		Ocupado
+	<string name="AvatarDoNotDisturb">
+		No molestar
 	</string>
 	<string name="AvatarMuted">
 		Ignorado
@@ -844,6 +844,12 @@ Intenta iniciar sesión de nuevo en unos instantes.
 	<string name="ST_NO_JOINT">
 		No se puede encontrar ROOT o JOINT.
 	</string>
+	<string name="NearbyChatTitle">
+		Chat
+	</string>
+	<string name="NearbyChatLabel">
+		(Chat)
+	</string>
 	<string name="whisper">
 		susurra:
 	</string>
@@ -907,6 +913,9 @@ Intenta iniciar sesión de nuevo en unos instantes.
 	<string name="ControlYourCamera">
 		Controlar su cámara
 	</string>
+	<string name="AgentNameSubst">
+		(Tú)
+	</string>
 	<string name="TeleportYourAgent">
 		Teleportarte
 	</string>
@@ -991,18 +1000,6 @@ Intenta iniciar sesión de nuevo en unos instantes.
 	<string name="dictionary_files">
 		Diccionarios
 	</string>
-	<string name="AvatarSetNotAway">
-		Salir del estado ausente
-	</string>
-	<string name="AvatarSetAway">
-		Pasar al estado ausente
-	</string>
-	<string name="AvatarSetNotBusy">
-		Salir del estado ocupado
-	</string>
-	<string name="AvatarSetBusy">
-		Pasar al estado ocupado
-	</string>
 	<string name="shape">
 		Forma
 	</string>
@@ -1959,8 +1956,8 @@ Intenta iniciar sesión de nuevo en unos instantes.
 	<string name="PanelContentsNewScript">
 		Script nuevo
 	</string>
-	<string name="BusyModeResponseDefault">
-		El Residente al que has enviado un mensaje ha solicitado que no se le moleste porque está en modo ocupado. Podrá ver tu mensaje más adelante, ya que éste aparecerá en su panel de MI.
+	<string name="DoNotDisturbModeResponseDefault">
+		Este residente tiene activado &apos;No molestar&apos; y verá tu mensaje más tarde.
 	</string>
 	<string name="MuteByName">
 		(Por el nombre)
@@ -2073,9 +2070,6 @@ Intenta iniciar sesión de nuevo en unos instantes.
 	<string name="GroupMoneyDate">
 		[weekday,datetime,utc] [mth,datetime,utc] [day,datetime,utc], [year,datetime,utc]
 	</string>
-	<string name="ViewerObjectContents">
-		Contenidos
-	</string>
 	<string name="AcquiredItems">
 		Artículos adquiridos
 	</string>
@@ -3793,7 +3787,7 @@ Si sigues recibiendo este mensaje, contacta con [SUPPORT_SITE].
 		Región General
 	</string>
 	<string name="LocationCtrlSeeAVsTooltip">
-		Los avatares están visibles y está permitido el chat fuera de esta parcela
+		Los avatares que están en esta parcela no pueden ser vistos ni escuchados por los que están fuera de ella
 	</string>
 	<string name="LocationCtrlPathfindingDirtyTooltip">
 		Los objetos que se mueven pueden presentar un comportamiento incorrecto en la región hasta que ésta se recargue.
@@ -3867,6 +3861,12 @@ Si sigues recibiendo este mensaje, contacta con [SUPPORT_SITE].
 	<string name="Saved_message">
 		(Guardado [LONG_TIMESTAMP])
 	</string>
+	<string name="OnlineStatus">
+		Conectado/a
+	</string>
+	<string name="OfflineStatus">
+		Desconectado/a
+	</string>
 	<string name="answered_call">
 		Han respondido a tu llamada
 	</string>
@@ -3876,6 +3876,9 @@ Si sigues recibiendo este mensaje, contacta con [SUPPORT_SITE].
 	<string name="you_joined_call">
 		Has entrado en la llamada de voz
 	</string>
+	<string name="you_auto_rejected_call-im">
+		Rechazaste la llamada de voz automáticamente porque estaba activado &apos;No molestar&apos;.
+	</string>
 	<string name="name_started_call">
 		[NAME] inició una llamada de voz
 	</string>
@@ -3888,6 +3891,9 @@ Si sigues recibiendo este mensaje, contacta con [SUPPORT_SITE].
 	<string name="hang_up-im">
 		Se colgó la llamada de voz
 	</string>
+	<string name="conference-title">
+		Chat multi-persona
+	</string>
 	<string name="conference-title-incoming">
 		Conferencia con [AGENT_NAME]
 	</string>
@@ -4766,6 +4772,9 @@ Inténtalo incluyendo la ruta de acceso al editor entre comillas
 	<string name="Command_Chat_Label">
 		Chat
 	</string>
+	<string name="Command_Conversations_Label">
+		Conversaciones
+	</string>
 	<string name="Command_Compass_Label">
 		Brújula
 	</string>
@@ -4841,6 +4850,9 @@ Inténtalo incluyendo la ruta de acceso al editor entre comillas
 	<string name="Command_Chat_Tooltip">
 		Habla por chat de texto con las personas próximas
 	</string>
+	<string name="Command_Conversations_Tooltip">
+		Conversar con todos
+	</string>
 	<string name="Command_Compass_Tooltip">
 		Brújula
 	</string>
@@ -4970,4 +4982,13 @@ Inténtalo incluyendo la ruta de acceso al editor entre comillas
 	<string name="UserDictionary">
 		[Usuario]
 	</string>
+	<string name="logging_calls_disabled_log_empty">
+		No se están registrando las conversaciones. Para empezar a grabar un registro, elige &quot;Guardar: Solo registro&quot; o &quot;Guardar: Registro y transcripciones&quot; en Preferencias &gt; Chat.
+	</string>
+	<string name="logging_calls_disabled_log_not_empty">
+		No se registrarán más conversaciones. Para reanudar la grabación de un registro, elige &quot;Guardar: Solo registro&quot; o &quot;Guardar: Registro y transcripciones&quot; en Preferencias &gt; Chat.
+	</string>
+	<string name="logging_calls_enabled_log_empty">
+		No hay conversaciones grabadas. Después de contactar con una persona, o de que alguien contacte contigo, aquí se mostrará una entrada de registro.
+	</string>
 </strings>
diff --git a/indra/newview/skins/default/xui/fr/floater_conversation_log.xml b/indra/newview/skins/default/xui/fr/floater_conversation_log.xml
new file mode 100644
index 00000000000..e9017c79b1f
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_conversation_log.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_conversation_log" title="JOURNAL DES CONVERSATIONS">
+	<panel name="buttons_panel">
+		<filter_editor label="Filtrer les personnes" name="people_filter_input"/>
+		<menu_button name="conversation_view_btn" tool_tip="Options d&apos;affichage/de tri"/>
+		<menu_button name="conversations_gear_btn" tool_tip="Actions sur la personne ou le groupe sélectionné"/>
+	</panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_conversation_preview.xml b/indra/newview/skins/default/xui/fr/floater_conversation_preview.xml
new file mode 100644
index 00000000000..9a486a84c65
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_conversation_preview.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="preview_conversation" title="CONVERSATION:">
+	<floater.string name="Title">
+		CONVERSATION: [NAME]
+	</floater.string>
+	<text name="page_label" value="Page"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_im_container.xml b/indra/newview/skins/default/xui/fr/floater_im_container.xml
index 5ea073365e3..f0b17e84373 100644
--- a/indra/newview/skins/default/xui/fr/floater_im_container.xml
+++ b/indra/newview/skins/default/xui/fr/floater_im_container.xml
@@ -1,2 +1,29 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<multi_floater name="floater_im_box" title="CONVERSATIONS"/>
+<multi_floater name="floater_im_box" title="CONVERSATIONS">
+	<string name="collapse_icon" value="Conv_toolbar_collapse"/>
+	<string name="expand_icon" value="Conv_toolbar_expand"/>
+	<layout_stack name="conversations_stack">
+		<layout_panel name="conversations_layout_panel">
+			<layout_stack name="conversations_pane_buttons_stack">
+				<layout_panel name="conversations_pane_buttons_expanded">
+					<menu_button name="sort_btn" tool_tip="Options d&apos;affichage/de tri"/>
+					<button name="add_btn" tool_tip="Commencer une nouvelle conversation"/>
+					<button name="speak_btn" tool_tip="Parler aux personnes en utilisant votre micro"/>
+				</layout_panel>
+				<layout_panel name="conversations_pane_buttons_collapsed">
+					<button name="expand_collapse_btn" tool_tip="Réduire/Développer cette liste"/>
+				</layout_panel>
+			</layout_stack>
+		</layout_panel>
+		<layout_panel name="messages_layout_panel">
+			<panel_container name="im_box_tab_container">
+				<panel name="stub_panel">
+					<button name="stub_collapse_btn" tool_tip="Réduire ce panneau"/>
+					<text name="stub_textbox">
+						Cette conversation s&apos;affiche dans une fenêtre distincte.   [secondlife:/// la rattacher.]
+					</text>
+				</panel>
+			</panel_container>
+		</layout_panel>
+	</layout_stack>
+</multi_floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_im_session.xml b/indra/newview/skins/default/xui/fr/floater_im_session.xml
index 516eb41362f..8ab98b8e4ea 100644
--- a/indra/newview/skins/default/xui/fr/floater_im_session.xml
+++ b/indra/newview/skins/default/xui/fr/floater_im_session.xml
@@ -1,8 +1,59 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="panel_im">
-	<layout_stack name="im_panels">
-		<layout_panel>
-			<line_editor label="À" name="chat_editor"/>
-		</layout_panel>
-	</layout_stack>
+	<floater.string name="call_btn_start">
+		Conv_toolbar_open_call
+	</floater.string>
+	<floater.string name="call_btn_stop">
+		Conv_toolbar_hang_up
+	</floater.string>
+	<floater.string name="collapseline_icon" value="Conv_collapse_to_one_line"/>
+	<floater.string name="expandline_icon" value="Conv_expand_one_line"/>
+	<floater.string name="collapse_icon" value="Conv_toolbar_collapse"/>
+	<floater.string name="expand_icon" value="Conv_toolbar_expand"/>
+	<floater.string name="tear_off_icon" value="Conv_toolbar_arrow_ne"/>
+	<floater.string name="return_icon" value="Conv_toolbar_arrow_sw"/>
+	<floater.string name="participant_added" value="[NAME] a été invité à la conversation."/>
+	<floater.string name="multiple_participants_added" value="[NAME] ont été invités à la conversation."/>
+	<floater.string name="tooltip_to_separate_window" value="Déplacer cette conversation dans une fenêtre distincte"/>
+	<floater.string name="tooltip_to_main_window" value="Replacer cette conversation dans la fenêtre principale"/>
+	<floater.string name="start_call_button_tooltip" value="Ouvrir une connexion vocale"/>
+	<floater.string name="end_call_button_tooltip" value="Fermer la connexion vocale"/>
+	<floater.string name="expcol_button_not_tearoff_tooltip" value="Réduire ce panneau"/>
+	<floater.string name="expcol_button_tearoff_and_expanded_tooltip" value="Réduire la liste des participants"/>
+	<floater.string name="expcol_button_tearoff_and_collapsed_tooltip" value="Développer la liste des participants"/>
+	<view name="contents_view">
+		<layout_stack name="main_stack">
+			<layout_panel name="toolbar_panel">
+				<menu_button name="view_options_btn" tool_tip="Options d&apos;affichage/de tri"/>
+				<menu_button name="gear_btn" tool_tip="Actions sur la personne sélectionnée"/>
+				<button name="add_btn" tool_tip="Ajouter un participant à cette conversation"/>
+				<button name="voice_call_btn" tool_tip="Ouvrir une connexion vocale"/>
+				<button name="close_btn" tool_tip="Mettre fin à cette conversation"/>
+				<button name="expand_collapse_btn" tool_tip="Réduire/Développer ce panneau"/>
+			</layout_panel>
+			<layout_panel name="body_panel">
+				<layout_stack name="im_panels">
+					<layout_panel name="right_part_holder">
+						<panel name="trnsAndChat_panel">
+							<layout_stack name="translate_and_chat_stack">
+								<layout_panel name="translate_chat_checkbox_lp">
+									<check_box label="Traduire le chat" name="translate_chat_checkbox"/>
+								</layout_panel>
+							</layout_stack>
+						</panel>
+					</layout_panel>
+				</layout_stack>
+			</layout_panel>
+			<layout_panel name="chat_layout_panel">
+				<layout_stack name="input_panels">
+					<layout_panel name="input_editor_layout_panel">
+						<chat_editor label="À" name="chat_editor"/>
+					</layout_panel>
+					<layout_panel name="input_button_layout_panel">
+						<button name="minz_btn" tool_tip="Affiche/Masque le panneau des messages"/>
+					</layout_panel>
+				</layout_stack>
+			</layout_panel>
+		</layout_stack>
+	</view>
 </floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_incoming_call.xml b/indra/newview/skins/default/xui/fr/floater_incoming_call.xml
index 7594eec5f2f..9e6946ba9e4 100644
--- a/indra/newview/skins/default/xui/fr/floater_incoming_call.xml
+++ b/indra/newview/skins/default/xui/fr/floater_incoming_call.xml
@@ -10,7 +10,7 @@
 		anonyme
 	</floater.string>
 	<floater.string name="VoiceInviteP2P">
-		appelle.
+		vous appelle.
 	</floater.string>
 	<floater.string name="VoiceInviteAdHoc">
 		a rejoint un chat vocal avec conférence.
@@ -25,9 +25,9 @@
 		Voulez-vous quitter [CURRENT_CHAT] et rejoindre ce chat vocal ?
 	</floater.string>
 	<text name="question">
-		Voulez-vous quitter [CURRENT_CHAT] et rejoindre ce chat vocal ?
+		Si vous répondez, vous serez déconnecté de votre conversation vocale actuelle.
 	</text>
-	<button label="Accepter" label_selected="Accepter" name="Accept"/>
-	<button label="Refuser" label_selected="Refuser" name="Reject"/>
-	<button label="Lancer IM" name="Start IM"/>
+	<button label="Répondre" label_selected="Répondre" name="Accept"/>
+	<button label="Ignorer" label_selected="Ignorer" name="Reject"/>
+	<button label="Ouvrir IM à la place" name="Start IM"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_pathfinding_console.xml b/indra/newview/skins/default/xui/fr/floater_pathfinding_console.xml
index 02d969dc089..0bcf55aba59 100644
--- a/indra/newview/skins/default/xui/fr/floater_pathfinding_console.xml
+++ b/indra/newview/skins/default/xui/fr/floater_pathfinding_console.xml
@@ -71,7 +71,7 @@
 			<text name="show_label">
 				Afficher :
 			</text>
-			<check_box label="Monde" name="show_world"/>
+			<check_box label="Test" name="show_world"/>
 			<check_box label="Mobiles uniquement" name="show_world_movables_only"/>
 			<check_box label="Maillage de navigation" name="show_navmesh"/>
 			<text name="show_walkability_label">
diff --git a/indra/newview/skins/default/xui/fr/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/fr/floater_texture_ctrl.xml
index f86c1a42171..eace67026c8 100644
--- a/indra/newview/skins/default/xui/fr/floater_texture_ctrl.xml
+++ b/indra/newview/skins/default/xui/fr/floater_texture_ctrl.xml
@@ -20,7 +20,7 @@
 	<button label="Vierge" label_selected="Vierge" name="Blank" width="60"/>
 	<button label="Aucune" label_selected="Aucune" left="68" name="None" width="60"/>
 	<button bottom="-240" label="" label_selected="" name="Pipette"/>
-	<check_box initial_value="true" label="Aperçu direct" name="apply_immediate_check"/>
+	<check_box initial_value="true" label="Appliquer maintenant" name="apply_immediate_check"/>
 	<text name="preview_disabled" value="Aperçu désactivé"/>
 	<filter_editor label="Filtrer les textures" name="inventory search editor"/>
 	<check_box initial_value="false" label="Afficher les dossiers" name="show_folders_check"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_voice_chat_volume.xml b/indra/newview/skins/default/xui/fr/floater_voice_chat_volume.xml
new file mode 100644
index 00000000000..f4f452eea7e
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_voice_chat_volume.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_voice_volume" title="VOLUME DU CHAT VOCAL">
+	<slider label="Chat vocal" name="chat_voice_volume"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_voice_effect.xml b/indra/newview/skins/default/xui/fr/floater_voice_effect.xml
index 671fb5c14db..f9a76d127e2 100644
--- a/indra/newview/skins/default/xui/fr/floater_voice_effect.xml
+++ b/indra/newview/skins/default/xui/fr/floater_voice_effect.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater label="Endroits" name="voice_effects" title="EFFET DE VOIX">
+<floater label="Endroits" name="voice_effects" title="APERÇU DES EFFETS DE VOIX">
 	<string name="no_voice_effect">
 		(Aucun effet de voix)
 	</string>
diff --git a/indra/newview/skins/default/xui/fr/floater_voice_volume.xml b/indra/newview/skins/default/xui/fr/floater_voice_volume.xml
new file mode 100644
index 00000000000..bf91a5bb799
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_voice_volume.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!--
+  Not can_close / no title to avoid window chrome
+  Single instance - only have one at a time, recycle it each spawn
+-->
+<floater name="floater_voice_volume" title="VOLUME DE LA VOIX">
+	<slider name="volume_slider" tool_tip="Volume de la voix" value="0.5"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/menu_cof_gear.xml b/indra/newview/skins/default/xui/fr/menu_cof_gear.xml
index 8276d570259..fea0486d8ac 100644
--- a/indra/newview/skins/default/xui/fr/menu_cof_gear.xml
+++ b/indra/newview/skins/default/xui/fr/menu_cof_gear.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear COF">
+<toggleable_menu name="Gear COF">
 	<menu label="Nouveaux habits" name="COF.Gear.New_Clothes"/>
-	<menu label="Nouvelles parties du corps" name="COF.Geear.New_Body_Parts"/>
-</menu>
+	<menu label="Nouvelles parties du corps" name="COF.Gear.New_Body_Parts"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_conversation.xml b/indra/newview/skins/default/xui/fr/menu_conversation.xml
new file mode 100644
index 00000000000..857ead603b5
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/menu_conversation.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_conversation_participant">
+	<menu_item_call label="Fermer la conversation" name="close_conversation"/>
+	<menu_item_call label="Ouvrir une conversation vocale" name="open_voice_conversation"/>
+	<menu_item_call label="Se déconnecter de la conversation et du canal vocal" name="disconnect_from_voice"/>
+	<menu_item_call label="Voir le profil" name="view_profile"/>
+	<menu_item_call label="IM" name="im"/>
+	<menu_item_call label="Proposer une téléportation." name="offer_teleport"/>
+	<menu_item_call label="Appel" name="voice_call"/>
+	<menu_item_call label="Historique du chat..." name="chat_history"/>
+	<menu_item_call label="Devenir amis" name="add_friend"/>
+	<menu_item_call label="Supprimer cet ami" name="remove_friend"/>
+	<menu_item_call label="Supprimer ces amis" name="remove_friends"/>
+	<menu_item_call label="Inviter dans le groupe..." name="invite_to_group"/>
+	<menu_item_call label="Zoomer en avant" name="zoom_in"/>
+	<menu_item_call label="Carte" name="map"/>
+	<menu_item_call label="Partager" name="share"/>
+	<menu_item_call label="Payer" name="pay"/>
+	<menu_item_check label="Bloquer le chat vocal" name="block_unblock"/>
+	<menu_item_check label="Ignorer le texte" name="MuteText"/>
+	<menu_item_call label="Profil du groupe" name="group_profile"/>
+	<menu_item_call label="Activer le groupe" name="activate_group"/>
+	<menu_item_call label="Quitter le groupe" name="leave_group"/>
+	<context_menu label="Options du modérateur" name="Moderator Options">
+		<menu_item_check label="Autoriser les chats écrits" name="AllowTextChat"/>
+		<menu_item_call label="Ignorer ce participant" name="ModerateVoiceMuteSelected"/>
+		<menu_item_call label="Ne plus ignorer ce participant" name="ModerateVoiceUnMuteSelected"/>
+		<menu_item_call label="Ignorer les autres" name="ModerateVoiceMute"/>
+		<menu_item_call label="Ne plus ignorer les autres" name="ModerateVoiceUnmute"/>
+	</context_menu>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_conversation_log_gear.xml b/indra/newview/skins/default/xui/fr/menu_conversation_log_gear.xml
new file mode 100644
index 00000000000..4e7e84199db
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/menu_conversation_log_gear.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Conversation Context Menu">
+	<menu_item_call label="IM..." name="IM"/>
+	<menu_item_call label="Appel..." name="Call"/>
+	<menu_item_call label="Ouvrir l&apos;historique du chat..." name="Chat history"/>
+	<menu_item_call label="Voir le profil" name="View Profile"/>
+	<menu_item_call label="Téléporter" name="teleport"/>
+	<menu_item_call label="Devenir amis" name="add_friend"/>
+	<menu_item_call label="Supprimer cet ami" name="remove_friend"/>
+	<menu_item_call label="Inviter dans le groupe..." name="Invite"/>
+	<menu_item_call label="Carte" name="Map"/>
+	<menu_item_call label="Partager" name="Share"/>
+	<menu_item_call label="Payer" name="Pay"/>
+	<menu_item_check label="Ignorer/Ne plus ignorer" name="Block/Unblock"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_conversation_log_view.xml b/indra/newview/skins/default/xui/fr/menu_conversation_log_view.xml
new file mode 100644
index 00000000000..c515a8e8e55
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/menu_conversation_log_view.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_conversation_view">
+	<menu_item_check label="Trier par nom" name="sort_by_name"/>
+	<menu_item_check label="Trier par date" name="sort_by_date"/>
+	<menu_item_check label="Trier avec les amis en haut" name="sort_by_friends"/>
+	<menu_item_call label="Afficher l&apos;historique du Chat près de moi" name="view_nearby_chat_history"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_im_conversation.xml b/indra/newview/skins/default/xui/fr/menu_im_conversation.xml
new file mode 100644
index 00000000000..1ec5910c8fe
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/menu_im_conversation.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Conversation Gear Menu">
+	<menu_item_call label="Voir le profil" name="View Profile"/>
+	<menu_item_call label="Devenir amis" name="Add Friend"/>
+	<menu_item_call label="Supprimer cet ami" name="remove_friend"/>
+	<menu_item_call label="Proposer une téléportation." name="offer_teleport"/>
+	<menu_item_call label="Inviter dans le groupe..." name="invite_to_group"/>
+	<menu_item_call label="Historique du chat..." name="chat_history"/>
+	<menu_item_call label="Zoomer en avant" name="zoom_in"/>
+	<menu_item_call label="Carte" name="map"/>
+	<menu_item_call label="Partager" name="Share"/>
+	<menu_item_call label="Payer" name="Pay"/>
+	<menu_item_check label="Bloquer le chat vocal" name="Block/Unblock"/>
+	<menu_item_check label="Ignorer le texte" name="MuteText"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_im_session_showmodes.xml b/indra/newview/skins/default/xui/fr/menu_im_session_showmodes.xml
new file mode 100644
index 00000000000..03a091d1ccc
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/menu_im_session_showmodes.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_modes">
+	<menu_item_check label="Vue compacte" name="compact_view"/>
+	<menu_item_check label="Vue développée" name="expanded_view"/>
+	<menu_item_check label="Afficher l’heure" name="IMShowTime"/>
+	<menu_item_check label="Afficher les noms dans les conversations privées" name="IMShowNamesForP2PConv"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_object_icon.xml b/indra/newview/skins/default/xui/fr/menu_object_icon.xml
index 69f8e88a0de..7c949301600 100644
--- a/indra/newview/skins/default/xui/fr/menu_object_icon.xml
+++ b/indra/newview/skins/default/xui/fr/menu_object_icon.xml
@@ -2,4 +2,6 @@
 <menu name="Object Icon Menu">
 	<menu_item_call label="Profil de l&apos;objet..." name="Object Profile"/>
 	<menu_item_call label="Ignorer..." name="Block"/>
+	<menu_item_call label="Voir sur la carte" name="show_on_map"/>
+	<menu_item_call label="Me téléporter à l’emplacement de l&apos;objet" name="teleport_to_object"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_outfit_gear.xml b/indra/newview/skins/default/xui/fr/menu_outfit_gear.xml
index b5181f4f82e..21b19eded63 100644
--- a/indra/newview/skins/default/xui/fr/menu_outfit_gear.xml
+++ b/indra/newview/skins/default/xui/fr/menu_outfit_gear.xml
@@ -23,6 +23,8 @@
 		<menu_item_call label="Nouveaux cheveux" name="New Hair"/>
 		<menu_item_call label="Nouveaux yeux" name="New Eyes"/>
 	</menu>
+	<menu_item_call label="Développer tous les dossiers" name="expand"/>
+	<menu_item_call label="Réduire tous les dossiers" name="collapse"/>
 	<menu_item_call label="Renommer la tenue" name="rename"/>
 	<menu_item_call label="Supprimer la tenue" name="delete_outfit"/>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_participant_view.xml b/indra/newview/skins/default/xui/fr/menu_participant_view.xml
new file mode 100644
index 00000000000..1811082c841
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/menu_participant_view.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="participant_manu_view">
+	<menu_item_check label="Trier les conversations par type" name="sort_sessions_by_type"/>
+	<menu_item_check label="Trier les conversations par nom" name="sort_sessions_by_name"/>
+	<menu_item_check label="Trier les conversations par activité récente" name="sort_sessions_by_recent"/>
+	<menu_item_check label="Trier les participants par nom" name="sort_participants_by_name"/>
+	<menu_item_check label="Trier les participants par activité récente" name="sort_participants_by_recent"/>
+	<menu_item_call label="Préférences pour le chat..." name="chat_preferences"/>
+	<menu_item_call label="Préférences pour la confidentialité" name="privacy_preferences"/>
+	<menu_item_check label="Journal des conversations..." name="Conversation"/>
+	<menu_item_check label="Traduire le Chat près de moi" name="Translate_chat"/>
+	<menu_item_check label="Paramètres de traduction" name="Translation_settings"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_people_blocked_gear.xml b/indra/newview/skins/default/xui/fr/menu_people_blocked_gear.xml
new file mode 100644
index 00000000000..47589572c25
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/menu_people_blocked_gear.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_blocked_gear">
+	<menu_item_call label="Ne plus ignorer" name="unblock"/>
+	<menu_item_call label="Profil..." name="profile"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_people_blocked_plus.xml b/indra/newview/skins/default/xui/fr/menu_people_blocked_plus.xml
new file mode 100644
index 00000000000..79880dd16d9
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/menu_people_blocked_plus.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_blocked_plus">
+	<menu_item_call label="Ignorer un résident par son nom…" name="block_resident_by_name"/>
+	<menu_item_call label="Ignorer un objet par son nom" name="block_object_by_name"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_people_blocked_view.xml b/indra/newview/skins/default/xui/fr/menu_people_blocked_view.xml
new file mode 100644
index 00000000000..13f15750909
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/menu_people_blocked_view.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_blocked_view">
+	<menu_item_check label="Trier par nom" name="sort_by_name"/>
+	<menu_item_check label="Trier par type" name="sort_by_type"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_people_friends_view.xml b/indra/newview/skins/default/xui/fr/menu_people_friends_view.xml
new file mode 100644
index 00000000000..cc81172462f
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/menu_people_friends_view.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="Trier par nom" name="sort_name"/>
+	<menu_item_check label="Trier par statut" name="sort_status"/>
+	<menu_item_check label="Afficher les icônes des résidents" name="view_icons"/>
+	<menu_item_check label="Afficher les droits octroyés" name="view_permissions"/>
+	<menu_item_check label="Afficher le journal des conversations..." name="view_conversation"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_people_groups.xml b/indra/newview/skins/default/xui/fr/menu_people_groups.xml
index eb51b4cf7e8..8e32f065fae 100644
--- a/indra/newview/skins/default/xui/fr/menu_people_groups.xml
+++ b/indra/newview/skins/default/xui/fr/menu_people_groups.xml
@@ -2,7 +2,7 @@
 <menu name="menu_group_plus">
 	<menu_item_call label="Afficher les infos" name="View Info"/>
 	<menu_item_call label="Chat" name="Chat"/>
-	<menu_item_call label="Appeler" name="Call"/>
+	<menu_item_call label="Appel" name="Call"/>
 	<menu_item_call label="Activer" name="Activate"/>
 	<menu_item_call label="Quitter" name="Leave"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_people_groups_view.xml b/indra/newview/skins/default/xui/fr/menu_people_groups_view.xml
new file mode 100644
index 00000000000..79ede5e22df
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/menu_people_groups_view.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="Afficher les icônes des groupes" name="Display Group Icons"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_people_nearby.xml b/indra/newview/skins/default/xui/fr/menu_people_nearby.xml
index 26bd3978a9b..6f7d02ef743 100644
--- a/indra/newview/skins/default/xui/fr/menu_people_nearby.xml
+++ b/indra/newview/skins/default/xui/fr/menu_people_nearby.xml
@@ -1,13 +1,16 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Avatar Context Menu">
-	<menu_item_call label="Voir le profil" name="View Profile"/>
-	<menu_item_call label="Devenir amis" name="Add Friend"/>
-	<menu_item_call label="Supprimer cet ami" name="Remove Friend"/>
-	<menu_item_call label="IM" name="IM"/>
-	<menu_item_call label="Appeler" name="Call"/>
-	<menu_item_call label="Carte" name="Map"/>
-	<menu_item_call label="Partager" name="Share"/>
-	<menu_item_call label="Payer" name="Pay"/>
-	<menu_item_check label="Ignorer/Ne plus ignorer" name="Block/Unblock"/>
-	<menu_item_call label="Proposer une téléportation" name="teleport"/>
+	<menu_item_call label="Voir le profil" name="view_profile"/>
+	<menu_item_call label="IM" name="im"/>
+	<menu_item_call label="Téléporter" name="offer_teleport"/>
+	<menu_item_call label="Appel" name="voice_call"/>
+	<menu_item_call label="Afficher l&apos;historique du chat..." name="chat_history"/>
+	<menu_item_call label="Devenir amis" name="add_friend"/>
+	<menu_item_call label="Supprimer cet ami" name="remove_friend"/>
+	<menu_item_call label="Inviter dans le groupe..." name="invite_to_group"/>
+	<menu_item_call label="Zoomer en avant" name="zoom_in"/>
+	<menu_item_call label="Carte" name="map"/>
+	<menu_item_call label="Partager" name="share"/>
+	<menu_item_call label="Payer" name="pay"/>
+	<menu_item_check label="Ignorer/Ne plus ignorer" name="block_unblock"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/fr/menu_people_nearby_multiselect.xml
index 8400ec0a14d..37abf831c2f 100644
--- a/indra/newview/skins/default/xui/fr/menu_people_nearby_multiselect.xml
+++ b/indra/newview/skins/default/xui/fr/menu_people_nearby_multiselect.xml
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Multi-Selected People Context Menu">
-	<menu_item_call label="Devenir amis" name="Add Friends"/>
-	<menu_item_call label="Supprimer des amis" name="Remove Friend"/>
-	<menu_item_call label="IM" name="IM"/>
-	<menu_item_call label="Appeler" name="Call"/>
-	<menu_item_call label="Partager" name="Share"/>
-	<menu_item_call label="Payer" name="Pay"/>
-	<menu_item_call label="Proposer une téléportation" name="teleport"/>
+	<menu_item_call label="Devenir amis" name="add_friends"/>
+	<menu_item_call label="Supprimer des amis" name="remove_friends"/>
+	<menu_item_call label="IM" name="im"/>
+	<menu_item_call label="Appeler" name="call"/>
+	<menu_item_call label="Partager" name="share"/>
+	<menu_item_call label="Payer" name="pay"/>
+	<menu_item_call label="Téléporter" name="offer_teleport"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_people_nearby_view.xml b/indra/newview/skins/default/xui/fr/menu_people_nearby_view.xml
new file mode 100644
index 00000000000..086002dce5e
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/menu_people_nearby_view.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="Trier par intervenants récents" name="sort_by_recent_speakers"/>
+	<menu_item_check label="Trier par nom" name="sort_name"/>
+	<menu_item_check label="Trier par distance" name="sort_distance"/>
+	<menu_item_check label="Afficher les icônes des résidents" name="view_icons"/>
+	<menu_item_check label="Afficher la carte" name="view_map"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_people_recent_view.xml b/indra/newview/skins/default/xui/fr/menu_people_recent_view.xml
new file mode 100644
index 00000000000..a7d698ab7c7
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/menu_people_recent_view.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="Trier en commençant par le plus récent" name="sort_most"/>
+	<menu_item_check label="Trier par nom" name="sort_name"/>
+	<menu_item_check label="Afficher les icônes des résidents" name="view_icons"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_url_agent.xml b/indra/newview/skins/default/xui/fr/menu_url_agent.xml
index 5ed627fbc33..d701b3a4143 100644
--- a/indra/newview/skins/default/xui/fr/menu_url_agent.xml
+++ b/indra/newview/skins/default/xui/fr/menu_url_agent.xml
@@ -1,6 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Url Popup">
-	<menu_item_call label="Voir le profil du résident" name="show_agent"/>
+	<menu_item_call label="Voir le profil" name="show_agent"/>
+	<menu_item_call label="Envoyer IM..." name="send_im"/>
+	<menu_item_call label="Devenir amis..." name="add_friend"/>
 	<menu_item_call label="Copier le nom dans le presse-papiers" name="url_copy_label"/>
 	<menu_item_call label="Copier la SLurl dans le presse-papiers" name="url_copy"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_url_objectim.xml b/indra/newview/skins/default/xui/fr/menu_url_objectim.xml
index f581c3ef9d8..0a934d3e69c 100644
--- a/indra/newview/skins/default/xui/fr/menu_url_objectim.xml
+++ b/indra/newview/skins/default/xui/fr/menu_url_objectim.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Url Popup">
-	<menu_item_call label="Afficher les informations sur l&apos;objet" name="show_object"/>
+	<menu_item_call label="Profil de l&apos;objet…" name="show_object"/>
 	<menu_item_call label="Voir sur la carte" name="show_on_map"/>
 	<menu_item_call label="Me téléporter à l&apos;emplacement de l&apos;objet" name="teleport_to_object"/>
 	<menu_item_call label="Copier le nom de l&apos;objet dans le presse-papiers" name="url_copy_label"/>
diff --git a/indra/newview/skins/default/xui/fr/menu_viewer.xml b/indra/newview/skins/default/xui/fr/menu_viewer.xml
index 85020afe252..457b756c7d5 100644
--- a/indra/newview/skins/default/xui/fr/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/fr/menu_viewer.xml
@@ -16,10 +16,7 @@
 			<menu_item_call label="Arrêter mon animation" name="Stop Animating My Avatar"/>
 			<menu_item_call label="Marcher / Courir / Voler..." name="Walk / run / fly"/>
 		</menu>
-		<menu label="Statut" name="Status">
-			<menu_item_call label="Absent" name="Set Away"/>
-			<menu_item_call label="Occupé" name="Set Busy"/>
-		</menu>
+		<menu label="Statut" name="Status"/>
 		<menu_item_call label="Acheter des L$..." name="Buy and Sell L$"/>
 		<menu_item_call label="Boîte d&apos;envoi vendeur..." name="MerchantOutbox"/>
 		<menu_item_call label="Page d&apos;accueil du compte..." name="Manage My Account">
@@ -32,14 +29,18 @@
 		<menu_item_call label="Quitter [APP_NAME]" name="Quit"/>
 	</menu>
 	<menu label="Communiquer" name="Communicate">
-		<menu_item_check label="Chat..." name="Nearby Chat"/>
+		<menu_item_check label="Conversations..." name="Conversations"/>
+		<menu_item_check label="Chat près de moi..." name="Nearby Chat"/>
 		<menu_item_check label="Parler" name="Speak"/>
-		<menu_item_check label="Paramètres vocaux..." name="Nearby Voice"/>
-		<menu_item_check label="Effet de voix..." name="ShowVoice"/>
+		<menu label="Effet de voix" name="VoiceMorphing">
+			<menu_item_check label="Aucun effet de voix" name="NoVoiceMorphing"/>
+			<menu_item_check label="Aperçu..." name="Preview"/>
+			<menu_item_call label="S&apos;abonner..." name="Subscribe"/>
+		</menu>
 		<menu_item_check label="Gestes..." name="Gestures"/>
-		<menu_item_call label="Amis" name="My Friends"/>
-		<menu_item_call label="Groupes" name="My Groups"/>
-		<menu_item_call label="Personnes près de vous" name="Active Speakers"/>
+		<menu_item_check label="Amis" name="My Friends"/>
+		<menu_item_check label="Groupes" name="My Groups"/>
+		<menu_item_check label="Personnes près de vous" name="Active Speakers"/>
 		<menu_item_call label="Liste des ignorés" name="Block List"/>
 	</menu>
 	<menu label="Monde" name="World">
@@ -115,7 +116,6 @@
 			<menu_item_call label="Acheter" name="Menu Object Buy"/>
 			<menu_item_call label="Prendre" name="Menu Object Take"/>
 			<menu_item_call label="Prendre une copie" name="Take Copy"/>
-			<menu_item_call label="Enregistrer dans mon inventaire" name="Save Object Back to My Inventory"/>
 			<menu_item_call label="Enregistrer dans le contenu des objets" name="Save Object Back to Object Contents"/>
 			<menu_item_call label="Renvoi de l&apos;objet" name="Return Object back to Owner"/>
 		</menu>
@@ -130,6 +130,7 @@
 			<menu_item_call label="Groupes de liens..." name="pathfinding_linksets_menu_item"/>
 			<menu_item_call label="Personnages..." name="pathfinding_characters_menu_item"/>
 			<menu_item_call label="Vue / test..." name="pathfinding_console_menu_item"/>
+			<menu_item_call label="Refiger la région" name="pathfinding_rebake_navmesh_item"/>
 		</menu>
 		<menu label="Options" name="Options">
 			<menu_item_check label="Afficher les droits avancés" name="DebugPermissions"/>
@@ -159,6 +160,13 @@
 	<menu label="Aide" name="Help">
 		<menu_item_call label="Aide rapide..." name="How To"/>
 		<menu_item_call label="Aide de [SECOND_LIFE]" name="Second Life Help"/>
+		<menu_item_call label="Guide de l&apos;utilisateur" name="User’s guide"/>
+		<menu_item_call label="Base de connaissances" name="Knowledge Base"/>
+		<menu_item_call label="Wiki" name="Wiki"/>
+		<menu_item_call label="Forums de la communauté" name="Community Forums"/>
+		<menu_item_call label="Portail d&apos;assistance" name="Support portal"/>
+		<menu_item_call label="Actualités [SECOND_LIFE]" name="Second Life News"/>
+		<menu_item_call label="Blogs [SECOND_LIFE]" name="Second Life Blogs"/>
 		<menu_item_call label="Signaler une infraction" name="Report Abuse"/>
 		<menu_item_call label="Signaler un bug" name="Report Bug"/>
 		<menu_item_call label="À propos de [APP_NAME]" name="About Second Life"/>
@@ -385,9 +393,14 @@
 				<menu_item_call label="Test femme" name="Test Female"/>
 				<menu_item_check label="Autoriser la sélection de l&apos;avatar" name="Allow Select Avatar"/>
 			</menu>
+			<menu label="Vitesse d&apos;animation" name="Animation Speed">
+				<menu_item_call label="Toutes les animations 10 % plus rapides" name="All Animations 10 Faster"/>
+				<menu_item_call label="Toutes les animations 10 % plus lentes" name="All Animations 10 Slower"/>
+				<menu_item_call label="Réinitialiser la vitesse de toutes les animations" name="Reset All Animation Speed"/>
+				<menu_item_check label="Animations au ralenti" name="Slow Motion Animations"/>
+			</menu>
 			<menu_item_call label="Forcer les paramètres par défaut" name="Force Params to Default"/>
 			<menu_item_check label="Infos sur l&apos;animation" name="Animation Info"/>
-			<menu_item_check label="Animations au ralenti" name="Slow Motion Animations"/>
 			<menu_item_check label="Afficher la direction du regard" name="Show Look At"/>
 			<menu_item_check label="Afficher la direction du pointeur" name="Show Point At"/>
 			<menu_item_check label="Débogages des mises à jour" name="Debug Joint Updates"/>
diff --git a/indra/newview/skins/default/xui/fr/notifications.xml b/indra/newview/skins/default/xui/fr/notifications.xml
index 30154d18730..e73cc6e6e04 100644
--- a/indra/newview/skins/default/xui/fr/notifications.xml
+++ b/indra/newview/skins/default/xui/fr/notifications.xml
@@ -515,6 +515,24 @@ Consulter [_URL] pour en savoir plus ?
 		</url>
 		<usetemplate ignoretext="Mon pilote graphique est obsolète." name="okcancelignore" notext="Non" yestext="Oui"/>
 	</notification>
+	<notification name="AMDOldDriver">
+		Il existe probablement un pilote plus récent pour votre puce graphique.  La mise à jour des pilotes graphiques est susceptible d&apos;améliorer considérablement les performances.
+
+    Visiter la page [_URL] pour rechercher d&apos;éventuelles mises à jour de pilotes ?
+		<url name="url">
+			http://support.amd.com/us/Pages/AMDSupportHub.aspx
+		</url>
+		<usetemplate ignoretext="Mon pilote graphique est obsolète." name="okcancelignore" notext="Non" yestext="Oui"/>
+	</notification>
+	<notification name="NVIDIAOldDriver">
+		Il existe probablement un pilote plus récent pour votre puce graphique.  La mise à jour des pilotes graphiques est susceptible d&apos;améliorer considérablement les performances.
+
+    Visiter la page [_URL] pour rechercher d&apos;éventuelles mises à jour de pilotes ?
+		<url name="url">
+			http://www.nvidia.com/Download/index.aspx?lang=fr
+		</url>
+		<usetemplate ignoretext="Mon pilote graphique est obsolète." name="okcancelignore" notext="Non" yestext="Oui"/>
+	</notification>
 	<notification name="UnknownGPU">
 		Votre système contient une carte graphique que [APP_NAME] ne reconnaît pas.
 Cela est souvent le cas avec le nouveau matériel qui n&apos;a pas encore été testé avec [APP_NAME].  Cela ne posera probablement pas de problème, mais vous devrez peut-être ajuster vos paramètres graphiques.
@@ -1543,10 +1561,13 @@ Quitter le groupe ?
 		Impossible de proposer votre amitié actuellement. Veuillez réessayer dans un moment.
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
-	<notification name="BusyModeSet">
-		Le mode Occupé est sélectionné.
-Les chats et les messages instantanés ne s&apos;afficheront pas. Les messages instantanés génèreront la réponse en mode occupé que vous avez créée. Toutes les offres de téléportation seront refusées. Toutes les offres d&apos;inventaire iront dans la corbeille.
-		<usetemplate ignoretext="Je change mon statut en mode Occupé" name="okignore" yestext="OK"/>
+	<notification name="DoNotDisturbModeSet">
+		Ne pas déranger est activé.  Vous ne recevrez pas les notifications de communications entrantes.
+
+- Les autres résidents recevront votre réponse Ne pas déranger (définie dans Préférences &gt; Général).
+- Toutes les offres de téléportation seront refusées.
+- Les appels vocaux seront refusés.
+		<usetemplate ignoretext="J&apos;ai changé mon statut et suis désormais en mode Ne pas déranger." name="okignore" yestext="OK"/>
 	</notification>
 	<notification name="JoinedTooManyGroupsMember">
 		Vous avez atteint le nombre de groupes maximum. Avant de pouvoir rejoindre ce groupe, vous devez en quitter un ou refuser cette offre.
@@ -2033,6 +2054,10 @@ Déplacer les objets de l&apos;inventaire ?
 		Accéder à votre [http://secondlife.com/account/ Page d&apos;accueil] pour consulter l&apos;historique de votre compte ?
 		<usetemplate ignoretext="Lancer mon navigateur pour consulter l&apos;historique de mon compte" name="okcancelignore" notext="Annuler" yestext="Aller sur cette page"/>
 	</notification>
+	<notification name="ConfirmAddingChatParticipants">
+		Quand vous ajoutez une personne à une conversation existante, une nouvelle conversation est créée.  Tous les participants recevront les notifications de nouvelle conversation.
+		<usetemplate ignoretext="Confirmer l&apos;ajout de participants au chat" name="okcancelignore" notext="Annuler" yestext="OK"/>
+	</notification>
 	<notification name="ConfirmQuit">
 		Êtes-vous certain de vouloir quitter ?
 		<usetemplate ignoretext="Confirmer avant de quitter" name="okcancelignore" notext="Ne pas quitter" yestext="Quitter"/>
@@ -2107,14 +2132,14 @@ Voulez-vous le remplacer par l&apos;objet sélectionné ?
 			<button ignore="Ne jamais remplacer" name="No" text="Annuler"/>
 		</form>
 	</notification>
-	<notification label="Réponse si occupé(e)" name="BusyModePay">
-		Vous êtes en mode occupé et vous ne recevrez donc aucun objet en échange de ce paiement.
+	<notification label="Avertissement de mode Ne pas déranger" name="DoNotDisturbModePay">
+		Vous avez activé Ne pas déranger. Vous ne recevrez aucun article proposé en échange de ce paiement.
 
-Souhaitez-vous quitter le mode occupé avant de terminer cette transaction ?
+Voulez-vous désactiver Ne pas déranger avant de terminer cette transaction ?
 		<form name="form">
-			<ignore name="ignore" save_option="true" text="Je suis sur le point de payer une personne ou un objet mais suis en mode Occupé"/>
-			<button ignore="Toujours quitter le mode occupé" name="Yes" text="OK"/>
-			<button ignore="Ne jamais quitter le mode occupé" name="No" text="Annuler"/>
+			<ignore name="ignore" text="Je suis sur le point de payer une personne ou un objet mais suis en mode Ne pas déranger"/>
+			<button ignore="Toujours quitter le mode Ne pas déranger" name="Yes" text="OK"/>
+			<button ignore="Ne jamais quitter le mode Ne pas déranger" name="No" text="Annuler"/>
 		</form>
 	</notification>
 	<notification name="ConfirmDeleteProtectedCategory">
@@ -2249,11 +2274,8 @@ Liez-la à partir d&apos;une page web pour permettre aux autres résidents d&apo
 	<notification name="GroupNotice">
 		Sujet : [SUBJECT], Message : [MESSAGE]
 	</notification>
-	<notification name="FriendOnline">
-		&lt;nolink&gt;[NAME]&lt;/nolink&gt; est en ligne
-	</notification>
-	<notification name="FriendOffline">
-		&lt;nolink&gt;[NAME]&lt;/nolink&gt; est hors ligne
+	<notification name="FriendOnlineOffline">
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; est [STATUS]
 	</notification>
 	<notification name="AddSelfFriend">
 		Même si vous êtes extrêmement sympathique, vous ne pouvez pas devenir ami avec vous-même.
@@ -2482,13 +2504,6 @@ Vous ne pouvez pas voler ici.
 	<notification name="DynamicPathfindingDisabled">
 		La recherche de chemin dynamique n&apos;est pas activée dans cette région. Il se peut que les objets scriptés utilisant des appels LSL de recherche de chemin ne fonctionnent pas comme prévu pour cette région.
 	</notification>
-	<notification name="PathfindingRebakeNavmesh">
-		La modification de certains objets de cette région risque d&apos;entraîner un comportement incorrect des autres objets mobiles. Pour que les objets mobiles se comportent correctement, cliquez sur Refiger la région. Pour plus d&apos;informations, choisissez Aide.
-		<url name="url">
-			http://wiki.secondlife.com/wiki/Pathfinding_Tools_in_the_Second_Life_Viewer
-		</url>
-		<usetemplate helptext="Aide" ignoretext="La modification de certains objets de cette région risque d&apos;entraîner un comportement incorrect des autres objets mobiles." name="okhelpignore" yestext="OK"/>
-	</notification>
 	<notification name="PathfindingCannotRebakeNavmesh">
 		Une erreur est survenue. Un problème réseau ou serveur s&apos;est peut-être produit ou vous ne disposez pas de droits de construction. Se déconnecter puis se reconnecter permet parfois de résoudre le problème.
 		<usetemplate name="okbutton" yestext="OK"/>
@@ -2751,7 +2766,7 @@ Acceptez-vous ?
 	<notification name="ScriptQuestionCaution">
 		Avertissement : l&apos;objet &lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt; souhaite un accès total à votre compte en Linden dollars. Si vous autorisez cet accès, il pourra supprimer des fonds de votre compte à tout moment ou le vider entièrement de façon continue sans avis préalable.
   
-Il est rare qu&apos;une telle demande soit légitime. N&apos;autorisez pas cet accès si vous ne comprenez pas entièrement pourquoi l&apos;objet souhaite accéder à votre compte.
+N&apos;autorisez pas cet accès si vous ne comprenez pas entièrement pourquoi l&apos;objet souhaite accéder à votre compte.
 		<form name="form">
 			<button name="Grant" text="Permettre un accès total"/>
 			<button name="Deny" text="Refuser"/>
@@ -3332,4 +3347,633 @@ Désactivation des mises à jour futures de ce fichier...
 		Vous allez supprimer [NUM_ITEMS] articles. Voulez-vous vraiment continuer ?
 		<usetemplate ignoretext="Voulez-vous vraiment supprimer plusieurs articles ?" name="okcancelignore" notext="Non" yestext="Oui"/>
 	</notification>
+	<notification name="AvatarFrozen">
+		[AV_FREEZER] vous a figé. Vous ne pouvez pas bouger ni interagir avec le monde.
+	</notification>
+	<notification name="AvatarFrozenDuration">
+		[AV_FREEZER] vous a figé pour une durée de [AV_FREEZE_TIME] secondes. Vous ne pouvez pas bouger ni interagir avec le monde.
+	</notification>
+	<notification name="YouFrozeAvatar">
+		Avatar figé.
+	</notification>
+	<notification name="AvatarHasUnFrozenYou">
+		[AV_FREEZER] vous a libéré.
+	</notification>
+	<notification name="AvatarUnFrozen">
+		Avatar libéré.
+	</notification>
+	<notification name="AvatarFreezeFailure">
+		Vous n&apos;avez pas pu figer ce que vous vouliez car vous ne disposez pas des droits d&apos;admin pour cette parcelle.
+	</notification>
+	<notification name="AvatarFreezeThaw">
+		Vous n&apos;êtes plus figé, vous pouvez reprendre votre vie.
+	</notification>
+	<notification name="AvatarCantFreeze">
+		Impossible de figer cet utilisateur.
+	</notification>
+	<notification name="NowOwnObject">
+		Vous êtes désormais le propriétaire de l&apos;objet [OBJECT_NAME].
+	</notification>
+	<notification name="CantRezOnLand">
+		Impossible de rezzer l&apos;objet à [OBJECT_POS] car le propriétaire de ce terrain de l&apos;autorise pas.  Utilisez l&apos;outil Terrain pour voir à qui appartiennent les terrains.
+	</notification>
+	<notification name="RezFailTooManyRequests">
+		Impossible de rezzer l&apos;objet car il y a trop de demandes.
+	</notification>
+	<notification name="SitFailCantMove">
+		Vous ne pouvez pas vous asseoir car vous ne pouvez actuellement pas bouger.
+	</notification>
+	<notification name="SitFailNotAllowedOnLand">
+		Vous ne pouvez pas vous asseoir car votre présence sur ce terrain n&apos;est pas autorisée.
+	</notification>
+	<notification name="SitFailNotSameRegion">
+		Essayez de vous rapprocher.  Impossible de vous asseoir sur l&apos;objet car
+il ne se trouve pas dans la même région que vous.
+	</notification>
+	<notification name="NoNewObjectRegionFull">
+		Création d&apos;un nouvel objet impossible. La région est pleine.
+	</notification>
+	<notification name="FailedToPlaceObject">
+		Échec du placement de l&apos;objet à l&apos;emplacement spécifié.  Veuillez réessayer.
+	</notification>
+	<notification name="NoOwnNoGardening">
+		Vous ne pouvez pas créer d&apos;arbres ni d&apos;herbe sur un terrain qui ne vous appartient pas.
+	</notification>
+	<notification name="NoCopyPermsNoObject">
+		Échec de la copie car vous ne disposez pas des droits requis pour copier l&apos;objet [OBJ_NAME].
+	</notification>
+	<notification name="NoTransPermsNoObject">
+		Échec de la copie car l&apos;objet [OBJ_NAME] ne peut pas vous être transféré.
+	</notification>
+	<notification name="AddToNavMeshNoCopy">
+		Échec de la copie car l&apos;objet [OBJ_NAME] contribue au maillage de navigation.
+	</notification>
+	<notification name="DupeWithNoRootsSelected">
+		Dupliquer sans objet racine sélectionné
+	</notification>
+	<notification name="CantDupeCuzRegionIsFull">
+		Impossible de dupliquer les objets car la région est pleine.
+	</notification>
+	<notification name="CantDupeCuzParcelNotFound">
+		Impossible de dupliquer les objets - la parcelle sur laquelle ils sont est introuvable.
+	</notification>
+	<notification name="CantCreateCuzParcelFull">
+		Création de l&apos;objet impossible car 
+la parcelle est pleine.
+	</notification>
+	<notification name="RezAttemptFailed">
+		Échec d&apos;une tentative pour rezzer un objet.
+	</notification>
+	<notification name="ToxicInvRezAttemptFailed">
+		Impossible de créer l&apos;article qui a provoqué des problèmes pour cette région.
+	</notification>
+	<notification name="InvItemIsBlacklisted">
+		Cet article d&apos;inventaire a été placé sur liste noire.
+	</notification>
+	<notification name="NoCanRezObjects">
+		Vous n&apos;êtes actuellement pas autorisé à créer des objets.
+	</notification>
+	<notification name="LandSearchBlocked">
+		Recherche de terrain bloquée.
+Vous avez effectué trop de recherches de terrain trop rapidement.
+Veuillez réessayer dans une minute.
+	</notification>
+	<notification name="NotEnoughResourcesToAttach">
+		Ressources de script insuffisantes pour attacher cet objet.
+	</notification>
+	<notification name="YouDiedAndGotTPHome">
+		Vous êtes mort et avez été téléporté à votre domicile.
+	</notification>
+	<notification name="EjectComingSoon">
+		Votre présence ici n&apos;est plus autorisée et vous disposez de [EJECT_TIME] secondes pour partir.
+	</notification>
+	<notification name="NoEnterServerFull">
+		Vous ne pouvez pas pénétrer dans cette région car 
+le serveur est plein.
+	</notification>
+	<notification name="SaveBackToInvDisabled">
+		Le réenregistrement dans l&apos;inventaire a été désactivé.
+	</notification>
+	<notification name="NoExistNoSaveToContents">
+		Impossible d&apos;enregistrer [OBJ_NAME] dans le contenu des objets car l&apos;objet à partir duquel il a été rezzé n&apos;existe plus.
+	</notification>
+	<notification name="NoModNoSaveToContents">
+		Impossible d&apos;enregistrer [OBJ_NAME] dans le contenu des objets car vous ne disposez pas des droits requis pour modifier l&apos;objet [DEST_NAME].
+	</notification>
+	<notification name="NoSaveBackToInvDisabled">
+		Impossible de réenregistrer [OBJ_NAME] dans l&apos;inventaire -- cette opération a été désactivée.
+	</notification>
+	<notification name="NoCopyNoSelCopy">
+		Vous ne pouvez pas copier votre sélection car vous n&apos;avez pas le droit de copier l&apos;objet [OBJ_NAME].
+	</notification>
+	<notification name="NoTransNoSelCopy">
+		Vous ne pouvez pas copier votre sélection car l&apos;objet [OBJ_NAME] n&apos;est pas transférable.
+	</notification>
+	<notification name="NoTransNoCopy">
+		Vous ne pouvez pas copier votre sélection car l&apos;objet [OBJ_NAME] n&apos;est pas transférable.
+	</notification>
+	<notification name="NoPermsNoRemoval">
+		La suppression de l&apos;objet [OBJ_NAME] du simulateur n&apos;est pas autorisée par le système de droits.
+	</notification>
+	<notification name="NoModNoSaveSelection">
+		Vous ne pouvez pas enregistrer votre sélection car vous n&apos;avez pas le droit de modifier l&apos;objet [OBJ_NAME].
+	</notification>
+	<notification name="NoCopyNoSaveSelection">
+		Vous ne pouvez pas enregistrer votre sélection car l&apos;objet [OBJ_NAME] ne peut pas être copié.
+	</notification>
+	<notification name="NoModNoTaking">
+		Vous ne pouvez pas prendre votre sélection car vous n&apos;avez pas le droit de modifier l&apos;objet [OBJ_NAME].
+	</notification>
+	<notification name="RezDestInternalError">
+		Erreur interne : type de destination inconnue.
+	</notification>
+	<notification name="DeleteFailObjNotFound">
+		Échec de la suppression car l&apos;objet est introuvable
+	</notification>
+	<notification name="SorryCantEjectUser">
+		Exclusion de cet utilisateur impossible.
+	</notification>
+	<notification name="RegionSezNotAHome">
+		Cette région ne vous permet pas d&apos;y définir votre domicile.
+	</notification>
+	<notification name="HomeLocationLimits">
+		Vous ne pouvez définir votre domicile que sur votre terrain ou un infohub du continent.
+	</notification>
+	<notification name="HomePositionSet">
+		Emplacement du domicile défini.
+	</notification>
+	<notification name="AvatarEjected">
+		Avatar expulsé.
+	</notification>
+	<notification name="AvatarEjectFailed">
+		Vous n&apos;avez pas pu réaliser l&apos;exclusion car vous ne disposez pas des droits d&apos;admin pour cette parcelle.
+	</notification>
+	<notification name="CantMoveObjectParcelFull">
+		Impossible de déplacer [OBJECT_NAME] jusqu&apos;à
+[OBJ_POSITION] dans la région [REGION_NAME] car la parcelle est pleine.
+	</notification>
+	<notification name="CantMoveObjectParcelPerms">
+		Impossible de déplacer [OBJECT_NAME] jusqu&apos;à
+[OBJ_POSITION] dans la région [REGION_NAME] car vos objets ne sont pas autorisés sur cette parcelle.
+	</notification>
+	<notification name="CantMoveObjectParcelResources">
+		Impossible de déplacer [OBJECT_NAME] jusqu&apos;à
+[OBJ_POSITION] dans la région [REGION_NAME] car il n&apos;y a pas suffisamment de ressources pour cet objet sur cette parcelle.
+	</notification>
+	<notification name="CantMoveObjectRegionVersion">
+		Impossible de déplacer [OBJECT_NAME] jusqu&apos;à
+[OBJ_POSITION] dans la région [REGION_NAME] car l&apos;autre région exécute une version plus ancienne qui ne prend pas en charge la réception de cet objet via le passage à une autre région.
+	</notification>
+	<notification name="CantMoveObjectNavMesh">
+		Impossible de déplacer [OBJECT_NAME] jusqu&apos;à
+[OBJ_POSITION] dans la région [REGION_NAME] car vous ne pouvez pas modifier le maillage de navigation d&apos;une région à une autre.
+	</notification>
+	<notification name="CantMoveObjectWTF">
+		Impossible de déplacer [OBJECT_NAME] jusqu&apos;à
+[OBJ_POSITION] dans la région [REGION_NAME] pour une raison inconnue. ([FAILURE_TYPE])
+	</notification>
+	<notification name="NoPermModifyObject">
+		Vous n&apos;êtes pas autorisé à modifier cet objet.
+	</notification>
+	<notification name="CantEnablePhysObjContributesToNav">
+		Impossible d&apos;activer les propriétés physiques pour un objet qui contribue au maillage de navigation.
+	</notification>
+	<notification name="CantEnablePhysKeyframedObj">
+		Impossible d&apos;activer les propriétés physiques pour les objets avec images-clés.
+	</notification>
+	<notification name="CantEnablePhysNotEnoughLandResources">
+		Impossible d&apos;activer les propriétés physiques pour l&apos;objet -- ressources de terrain insuffisantes.
+	</notification>
+	<notification name="CantEnablePhysCostTooGreat">
+		Impossible d&apos;activer les propriétés physiques pour les objets avec un coût de ressources physiques supérieur à [MAX_OBJECTS]
+	</notification>
+	<notification name="PhantomWithConcavePiece">
+		Cet objet ne peut pas contenir de morceau concave car c&apos;est un fantôme qui contribue au maillage de navigation.
+	</notification>
+	<notification name="UnableAddItem">
+		Ajout de l&apos;article impossible.
+	</notification>
+	<notification name="UnableEditItem">
+		Modification impossible
+	</notification>
+	<notification name="NoPermToEdit">
+		Modification interdite.
+	</notification>
+	<notification name="NoPermToCopyInventory">
+		Pas autorisé à copier cet inventaire.
+	</notification>
+	<notification name="CantSaveItemDoesntExist">
+		Impossible d&apos;enregistrer dans le contenu des objets : L&apos;article n&apos;existe plus.
+	</notification>
+	<notification name="CantSaveItemAlreadyExists">
+		Impossible d&apos;enregistrer dans le contenu des objets : Un article avec ce nom existe déjà dans l&apos;inventaire.
+	</notification>
+	<notification name="CantSaveModifyAttachment">
+		Impossible d&apos;enregistrer dans le contenu des objets : cela modifierait les droits d&apos;attache.
+	</notification>
+	<notification name="TooManyScripts">
+		Trop de scripts.
+	</notification>
+	<notification name="UnableAddScript">
+		Ajout du script impossible.
+	</notification>
+	<notification name="AssetServerTimeoutObjReturn">
+		Le serveur d&apos;actifs n&apos;a pas répondu assez vite.  Objet renvoyé dans le sim.
+	</notification>
+	<notification name="RegionDisablePhysicsShapes">
+		Les formes physiques ne sont pas activées pour cette région.
+	</notification>
+	<notification name="NoModNavmeshAcrossRegions">
+		Vous ne pouvez pas modifier le maillage de navigation d&apos;une région à une autre.
+	</notification>
+	<notification name="NoSetPhysicsPropertiesOnObjectType">
+		Impossible de définir les propriétés physiques pour ce type d&apos;objet.
+	</notification>
+	<notification name="NoSetRootPrimWithNoShape">
+		Vous devenez définir une forme pour la prim racine.
+	</notification>
+	<notification name="NoRegionSupportPhysMats">
+		Les matériaux physiques ne sont pas activés pour cette région.
+	</notification>
+	<notification name="OnlyRootPrimPhysMats">
+		Les matériaux physiques ne peuvent être ajustés que pour les prims racines.
+	</notification>
+	<notification name="NoSupportCharacterPhysMats">
+		La configuration de matériaux physiques sur les personnages n&apos;est pas prise en charge actuellement.
+	</notification>
+	<notification name="InvalidPhysMatProperty">
+		Une ou plusieurs propriétés des ressources physiques spécifiées n&apos;étaient pas valides.
+	</notification>
+	<notification name="NoPermsAlterStitchingMeshObj">
+		Vous ne pouvez pas changer le type de raccord d&apos;un objet avec maillage.
+	</notification>
+	<notification name="NoPermsAlterShapeMeshObj">
+		Vous ne pouvez pas changer la forme d&apos;un objet avec maillage.
+	</notification>
+	<notification name="FullRegionCantEnter">
+		Vous ne pouvez pas pénétrer dans cette région car \ncar la région est pleine.
+	</notification>
+	<notification name="LinkFailedOwnersDiffer">
+		Échec du lien -- les propriétaires sont différents
+	</notification>
+	<notification name="LinkFailedNoModNavmeshAcrossRegions">
+		Échec du lien -- vous ne pouvez pas modifier le maillage de navigation d&apos;une région à une autre.
+	</notification>
+	<notification name="LinkFailedNoPermToEdit">
+		Échec du lien car vous ne disposez pas des droits de modification.
+	</notification>
+	<notification name="LinkFailedTooManyPrims">
+		Échec du lien -- trop de primitives
+	</notification>
+	<notification name="LinkFailedCantLinkNoCopyNoTrans">
+		Échec du lien -- impossible de lier pas de copie et pas de transfert
+	</notification>
+	<notification name="LinkFailedNothingLinkable">
+		Échec du lien - il n&apos;y a rien qui puisse être lié.
+	</notification>
+	<notification name="LinkFailedTooManyPathfindingChars">
+		Échec du lien -- trop de personnages de recherche de chemin
+	</notification>
+	<notification name="LinkFailedInsufficientLand">
+		Échec du lien -- ressources de terrain insuffisantes
+	</notification>
+	<notification name="LinkFailedTooMuchPhysics">
+		Cet objet utilise trop de ressources physiques - sa dynamique a été désactivée.
+	</notification>
+	<notification name="TeleportedHomeByObjectOnParcel">
+		Vous avez été téléporté chez vous par l&apos;objet [OBJECT_NAME] sur la parcelle [PARCEL_NAME].
+	</notification>
+	<notification name="TeleportedHomeByObject">
+		Vous avez été téléporté chez vous par l&apos;objet [OBJECT_NAME].
+	</notification>
+	<notification name="TeleportedByAttachment">
+		Vous avez été téléporté par un élément sur [ITEM_ID]
+	</notification>
+	<notification name="TeleportedByObjectOnParcel">
+		Vous avez été téléporté par l&apos;objet [OBJECT_NAME] sur la parcelle [PARCEL_NAME].
+	</notification>
+	<notification name="TeleportedByObjectOwnedBy">
+		Vous avez été téléporté par l&apos;objet [OBJECT_NAME] appartenant à [OWNER_ID].
+	</notification>
+	<notification name="TeleportedByObjectUnknownUser">
+		Vous avez été téléporté par l&apos;objet [OBJECT_NAME] appartenant à un utilisateur inconnu.
+	</notification>
+	<notification name="CantCreateObjectRegionFull">
+		Création de l&apos;objet demandé impossible. La région est pleine.
+	</notification>
+	<notification name="CantAttackMultipleObjOneSpot">
+		Vous ne pouvez pas attacher plusieurs objets au même endroit.
+	</notification>
+	<notification name="CantCreateMultipleObjAtLoc">
+		Vous ne pouvez pas créer plusieurs objets ici.
+	</notification>
+	<notification name="UnableToCreateObjTimeOut">
+		Création de l&apos;objet demandé impossible. Objet absent de la base de données.
+	</notification>
+	<notification name="UnableToCreateObjUnknown">
+		Création de l&apos;objet demandé impossible. Délai d&apos;attente dépassé. Veuillez réessayer.
+	</notification>
+	<notification name="UnableToCreateObjMissingFromDB">
+		Création de l&apos;objet demandé impossible. Veuillez réessayer.
+	</notification>
+	<notification name="RezFailureTookTooLong">
+		Échec de l&apos;action « rezzer », le chargement de l&apos;objet demandé a pris trop longtemps.
+	</notification>
+	<notification name="FailedToPlaceObjAtLoc">
+		Échec du placement de l&apos;objet à l&apos;emplacement spécifié.  Veuillez réessayer.
+	</notification>
+	<notification name="CantCreatePlantsOnLand">
+		Vous ne pouvez pas créer de plantes sur ce terrain.
+	</notification>
+	<notification name="CantRestoreObjectNoWorldPos">
+		Impossible de restaurer l&apos;objet. Position dans le monde introuvable.
+	</notification>
+	<notification name="CantRezObjectInvalidMeshData">
+		Impossible de rezzer l&apos;objet car ses données de maillage ne sont pas valides.
+	</notification>
+	<notification name="CantRezObjectTooManyScripts">
+		Impossible de rezzer l&apos;objet car il y a déjà trop de scripts dans cette région.
+	</notification>
+	<notification name="CantCreateObjectNoAccess">
+		Vos privilèges d&apos;accès ne vous autorisent pas à créer des objets à cet endroit.
+	</notification>
+	<notification name="CantCreateObject">
+		Vous n&apos;êtes actuellement pas autorisé à créer des objets.
+	</notification>
+	<notification name="InvalidObjectParams">
+		Paramètres d&apos;objet non valides
+	</notification>
+	<notification name="CantDuplicateObjectNoAcess">
+		Vos privilèges d&apos;accès ne vous autorisent pas à dupliquer des objets ici.
+	</notification>
+	<notification name="CantChangeShape">
+		Vous n’êtes pas autorisé à modifier cette forme.
+	</notification>
+	<notification name="NoAccessToClaimObjects">
+		Vos privilèges d&apos;accès ne vous autorisent pas à revendiquer des objets ici.
+	</notification>
+	<notification name="DeedFailedNoPermToDeedForGroup">
+		Échec de la cession car vous de disposez pas des droits de cession des objets pour votre groupe.
+	</notification>
+	<notification name="NoPrivsToBuyObject">
+		Vos privilèges d&apos;accès ne vous autorisent pas à acheter des objets ici.
+	</notification>
+	<notification name="CantAttachObjectAvatarSittingOnIt">
+		Impossible d&apos;attacher l&apos;objet car un avatar est assis dessus.
+	</notification>
+	<notification name="WhyAreYouTryingToWearShrubbery">
+		Les arbres et les plantes ne peuvent pas être portés sous forme d&apos;éléments attachés.
+	</notification>
+	<notification name="CantAttachGroupOwnedObjs">
+		Impossible d&apos;attacher les objets appartenant au groupe.
+	</notification>
+	<notification name="CantAttachObjectsNotOwned">
+		Vous ne pouvez pas attacher des objets qui ne vous appartiennent pas.
+	</notification>
+	<notification name="CantAttachNavmeshObjects">
+		Impossible d&apos;attacher les objets contribuant au maillage de navigation.
+	</notification>
+	<notification name="CantAttachObjectNoMovePermissions">
+		Impossible d&apos;attacher l&apos;objet car vous n&apos;avez pas le droit de le déplacer.
+	</notification>
+	<notification name="CantAttachNotEnoughScriptResources">
+		Ressources de script insuffisantes pour attacher cet objet.
+	</notification>
+	<notification name="CantDropItemTrialUser">
+		Vous ne pouvez pas déposer d&apos;objets ici. Essayez la zone de période d&apos;essai gratuite.
+	</notification>
+	<notification name="CantDropMeshAttachment">
+		Vous ne pouvez pas déposer les éléments attachés avec maillage. Détachez-les dans l&apos;inventaire puis rezzez-les dans le monde.
+	</notification>
+	<notification name="CantDropAttachmentNoPermission">
+		L&apos;élément n&apos;a pas pu être déposé : vous n&apos;avez pas le droit de déposer des éléments à cet endroit.
+	</notification>
+	<notification name="CantDropAttachmentInsufficientLandResources">
+		L&apos;élément n&apos;a pas pu être déposé : ressources de terrain disponibles insuffisantes.
+	</notification>
+	<notification name="CantDropAttachmentInsufficientResources">
+		Les éléments n&apos;ont pas pu être déposés : ressources disponibles insuffisantes.
+	</notification>
+	<notification name="CantDropObjectFullParcel">
+		Impossible de déposer l&apos;objet ici.  La parcelle est pleine.
+	</notification>
+	<notification name="CantTouchObjectBannedFromParcel">
+		Vous ne pouvez pas toucher/attraper cet objet car vous êtes banni de cette parcelle de terrain.
+	</notification>
+	<notification name="PlzNarrowDeleteParams">
+		Veuillez affiner vos paramètres de suppression.
+	</notification>
+	<notification name="UnableToUploadAsset">
+		Chargement de l&apos;actif impossible.
+	</notification>
+	<notification name="CantTeleportCouldNotFindUser">
+		Impossible de trouver l&apos;utilisateur à téléporter chez lui
+	</notification>
+	<notification name="GodlikeRequestFailed">
+		échec de la demande de type divine
+	</notification>
+	<notification name="GenericRequestFailed">
+		échec de la demande générique
+	</notification>
+	<notification name="CantUploadPostcard">
+		Chargement de la carte postale impossible.  Réessayez ultérieurement.
+	</notification>
+	<notification name="CantFetchInventoryForGroupNotice">
+		Impossible récupérer les détails de l&apos;inventaire pour la notice au groupe.
+	</notification>
+	<notification name="CantSendGroupNoticeNotPermitted">
+		Impossible d&apos;envoyer une notice au groupe -- ce n&apos;est pas autorisé.
+	</notification>
+	<notification name="CantSendGroupNoticeCantConstructInventory">
+		Impossible d&apos;envoyer une notice au groupe - échec de la construction de l&apos;inventaire.
+	</notification>
+	<notification name="CantParceInventoryInNotice">
+		Impossible d&apos;analyser l&apos;inventaire dans la notice.
+	</notification>
+	<notification name="TerrainUploadFailed">
+		Échec du chargement du terrain.
+	</notification>
+	<notification name="TerrainFileWritten">
+		Fichier de terrain écrit
+	</notification>
+	<notification name="TerrainFileWrittenStartingDownload">
+		Fichier de terrain écrit, lancement du téléchargement...
+	</notification>
+	<notification name="TerrainBaked">
+		Terrain figé.
+	</notification>
+	<notification name="TenObjectsDisabledPlzRefresh">
+		Seuls les 10 premiers objets sélectionnés ont été désactivés. Actualisez et effectuez des sélections supplémentaires si nécessaire.
+	</notification>
+	<notification name="UpdateViewerBuyParcel">
+		Vous devez mettre votre client à jour pour acheter cette parcelle.
+	</notification>
+	<notification name="CantBuyParcelNotForSale">
+		Achat impossible, cette parcelle n&apos;est pas à vendre.
+	</notification>
+	<notification name="CantBuySalePriceOrLandAreaChanged">
+		Achat impossible, le prix de vente ou la zone de terrain a changé.
+	</notification>
+	<notification name="CantBuyParcelNotAuthorized">
+		Vous n&apos;êtes pas un acheteur autorisé pour cette parcelle.
+	</notification>
+	<notification name="CantBuyParcelAwaitingPurchaseAuth">
+		Vous ne pouvez pas acheter cette parcelle car elle est déjà en attente d&apos;une autorisation d&apos;achat.
+	</notification>
+	<notification name="CantBuildOverflowParcel">
+		Vous ne pouvez pas construire d&apos;objets ici car cela saturerait la parcelle.
+	</notification>
+	<notification name="SelectedMultipleOwnedLand">
+		Vous avez sélectionné des terrains avec des propriétaires différents. Sélectionnez une zone plus petite et réessayez.
+	</notification>
+	<notification name="CantJoinTooFewLeasedParcels">
+		Pas suffisamment de parcelles louées dans la sélection pour effectuer la fusion.
+	</notification>
+	<notification name="CantDivideLandMultipleParcelsSelected">
+		Division du terrain impossible.\nPlusieurs parcelles sont sélectionnées.\nVeuillez sélectionner un terrain plus petit.
+	</notification>
+	<notification name="CantDivideLandCantFindParcel">
+		Division du terrain impossible.\nParcelle introuvable.\nSignalez-le en allant à Aide -&gt; Signaler un bug...
+	</notification>
+	<notification name="CantDivideLandWholeParcelSelected">
+		Division du terrain impossible. Toute la parcelle est sélectionnée.\nVeuillez sélectionner un terrain plus petit.
+	</notification>
+	<notification name="LandHasBeenDivided">
+		Le terrain a été divisé.
+	</notification>
+	<notification name="PassPurchased">
+		Vous avez acheté un pass.
+	</notification>
+	<notification name="RegionDisallowsClassifieds">
+		Cette région n&apos;autorise pas les petites annonces.
+	</notification>
+	<notification name="LandPassExpireSoon">
+		Votre pass pour ce terrain arrive à expiration.
+	</notification>
+	<notification name="CantSitNoSuitableSurface">
+		Il n&apos;y a pas de surface appropriée sur laquelle s&apos;asseoir, essayez un autre endroit.
+	</notification>
+	<notification name="CantSitNoRoom">
+		Pas de place pour s&apos;asseoir ici, essayez un autre endroit.
+	</notification>
+	<notification name="ClaimObjectFailedNoPermission">
+		Échec de la revendication de l&apos;objet car vous ne disposez pas des droits requis.
+	</notification>
+	<notification name="ClaimObjectFailedNoMoney">
+		Échec de la revendication de l&apos;objet car vous ne disposez pas de suffisamment de L$.
+	</notification>
+	<notification name="CantDeedGroupLand">
+		Impossible de céder un terrain appartenant au groupe.
+	</notification>
+	<notification name="BuyObjectFailedNoMoney">
+		Échec de l&apos;achat de l&apos;objet car vous ne disposez pas de suffisamment de L$.
+	</notification>
+	<notification name="BuyInventoryFailedNoMoney">
+		Échec de l&apos;achat d&apos;inventaire car vous ne disposez pas de suffisamment de L$.
+	</notification>
+	<notification name="BuyPassFailedNoMoney">
+		Vous ne disposez pas de suffisamment de L$ pour acheter un pass pour ce terrain.
+	</notification>
+	<notification name="CantBuyPassTryAgain">
+		Impossible d&apos;acheter le pass actuellement.  Réessayez ultérieurement.
+	</notification>
+	<notification name="CantCreateObjectParcelFull">
+		Création de l&apos;objet impossible car \nla parcelle est pleine.
+	</notification>
+	<notification name="FailedPlacingObject">
+		Échec du placement de l&apos;objet à l&apos;emplacement spécifié.  Veuillez réessayer.
+	</notification>
+	<notification name="CantCreateLandmarkForEvent">
+		Impossible de créer le repère pour l&apos;événement.
+	</notification>
+	<notification name="GodBeatsFreeze">
+		Grâce à vos pouvoirs de type divin, vous n&apos;êtes plus figé.
+	</notification>
+	<notification name="SpecialPowersRequestFailedLogged">
+		Échec de la demande de pouvoirs spéciaux. Cette demande a été archivée.
+	</notification>
+	<notification name="ExpireExplanation">
+		Le système ne peut pas traiter votre demande actuellement. Délai d&apos;attente dépassé.
+	</notification>
+	<notification name="DieExplanation">
+		Le système ne peut pas traiter votre demande.
+	</notification>
+	<notification name="AddPrimitiveFailure">
+		Fonds insuffisants pour créer la primitive.
+	</notification>
+	<notification name="RezObjectFailure">
+		Fonds insuffisants pour créer l&apos;objet.
+	</notification>
+	<notification name="ResetHomePositionNotLegal">
+		Réinitialiser l&apos;emplacement du domicile car il n&apos;était pas légal.
+	</notification>
+	<notification name="CantInviteRegionFull">
+		Vous ne pouvez pas inviter quiconque là où vous vous trouvez actuellement car la région est pleine. Réessayez ultérieurement.
+	</notification>
+	<notification name="CantSetHomeAtRegion">
+		Cette région ne vous permet pas d&apos;y définir votre domicile.
+	</notification>
+	<notification name="ListValidHomeLocations">
+		Vous ne pouvez définir votre domicile que sur votre terrain ou un infohub du continent.
+	</notification>
+	<notification name="SetHomePosition">
+		Emplacement du domicile défini.
+	</notification>
+	<notification name="CantDerezInventoryError">
+		Impossible de dérezzer l&apos;objet à cause d&apos;un défaut d&apos;inventaire.
+	</notification>
+	<notification name="CantCreateRequestedInv">
+		Création de l&apos;inventaire demandé impossible.
+	</notification>
+	<notification name="CantCreateRequestedInvFolder">
+		Création du dossier d&apos;inventaire demandé impossible.
+	</notification>
+	<notification name="CantCreateInventory">
+		Création de cet inventaire impossible.
+	</notification>
+	<notification name="CantCreateLandmark">
+		Création du repère impossible.
+	</notification>
+	<notification name="CantCreateOutfit">
+		Création de la tenue impossible. Veuillez réessayer dans une minute.
+	</notification>
+	<notification name="InventoryNotForSale">
+		L&apos;inventaire n&apos;est pas à vendre.
+	</notification>
+	<notification name="CantFindInvItem">
+		Objet de l&apos;inventaire introuvable.
+	</notification>
+	<notification name="CantFindObject">
+		Objet introuvable.
+	</notification>
+	<notification name="CantTransfterMoneyRegionDisabled">
+		Les transferts d&apos;argent aux objets sont actuellement désactivés dans cette région.
+	</notification>
+	<notification name="CantPayNoAgent">
+		Impossible de savoir qui payer.
+	</notification>
+	<notification name="CantDonateToPublicObjects">
+		Vous ne pouvez pas donner de L$ à des objets publics.
+	</notification>
+	<notification name="InventoryCreationInWorldObjectFailed">
+		Échec de la création d&apos;inventaire sur l&apos;objet Second Life.
+	</notification>
+	<notification name="UserBalanceOrLandUsageError">
+		Une erreur interne nous a empêchés de mettre votre client à jour correctement.  Le solde de L$ et le patrimoine affichés dans votre client peuvent ne pas correspondre à votre solde réel sur les serveurs.
+	</notification>
+	<notification name="LargePrimAgentIntersect">
+		Impossible de créer de grandes prims qui coupent d&apos;autres joueurs.  Réessayez une fois que les autres joueurs se seront déplacés.
+	</notification>
+	<notification name="PreferenceChatClearLog">
+		Cela supprimera les journaux des conversations précédentes, ainsi que toute copie de sauvegarde de ce fichier.
+		<usetemplate ignoretext="Confirmer avant de supprimer le journal des conversations précédentes" name="okcancelignore" notext="Annuler" yestext="OK"/>
+	</notification>
+	<notification name="PreferenceChatDeleteTranscripts">
+		Cela supprimera les transcriptions de toutes les conversations précédentes. La liste des conversations passées ne sera pas affectée. Tous les fichiers avec les suffixes .txt et txt.backup dans le dossier [FOLDER] seront supprimés.
+		<usetemplate ignoretext="Confirmer avant la suppression des transcriptions" name="okcancelignore" notext="Annuler" yestext="OK"/>
+	</notification>
+	<notification name="PreferenceChatPathChanged">
+		Impossible de déplacer les fichiers. Chemin précédent rétabli.
+		<usetemplate ignoretext="Impossible de déplacer les fichiers. Chemin précédent rétabli." name="okignore" yestext="OK"/>
+	</notification>
 </notifications>
diff --git a/indra/newview/skins/default/xui/fr/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/fr/panel_avatar_list_item.xml
index 54b8f53e59b..c8fa9f340f9 100644
--- a/indra/newview/skins/default/xui/fr/panel_avatar_list_item.xml
+++ b/indra/newview/skins/default/xui/fr/panel_avatar_list_item.xml
@@ -27,5 +27,6 @@
 	<icon name="permission_edit_mine_icon" tool_tip="Cet(te) ami(e) peut modifier, supprimer ou prendre vos objets."/>
 	<icon name="permission_map_icon" tool_tip="Cet(te) ami(e) peut vous localiser sur la carte."/>
 	<icon name="permission_online_icon" tool_tip="Cet(te) ami(e) peut voir lorsque vous êtes en ligne."/>
+	<button name="info_btn" tool_tip="En savoir plus"/>
 	<button name="profile_btn" tool_tip="Voir le profil"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/fr/panel_block_list_sidetray.xml
index 96add2a74b1..0e2b5a9c93a 100644
--- a/indra/newview/skins/default/xui/fr/panel_block_list_sidetray.xml
+++ b/indra/newview/skins/default/xui/fr/panel_block_list_sidetray.xml
@@ -1,10 +1,11 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="block_list_panel">
-	<text name="title_text">
-		Liste des ignorés
-	</text>
-	<scroll_list name="blocked" tool_tip="Liste des résidents actuellement ignorés"/>
-	<button label="Ignorer une personne" label_selected="Ignorer le résident..." name="Block resident..." tool_tip="Choisir un résident à ignorer"/>
-	<button label="Ignorer un objet par son nom" label_selected="Ignorer un objet par son nom..." name="Block object by name..." tool_tip="Choisir un objet à ignorer par nom"/>
-	<button label="Ne plus ignorer" label_selected="Ne plus ignorer" name="Unblock" tool_tip="Enlever le résident ou l&apos;objet de la liste des ignorés"/>
+	<panel label="bottom_panel" name="blocked_buttons_panel">
+		<filter_editor label="Filtrer" name="blocked_filter_input"/>
+		<menu_button name="blocked_gear_btn" tool_tip="Actions sur la personne ou l&apos;objet sélectionné"/>
+		<menu_button name="view_btn" tool_tip="Options de tri"/>
+		<menu_button name="plus_btn" tool_tip="Choisir un résident ou un objet à ignorer"/>
+		<button name="unblock_btn" tool_tip="Enlever le résident ou l’objet de la liste des ignorés"/>
+	</panel>
+	<block_list name="blocked" tool_tip="Liste des résidents actuellement ignorés"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_conversation_list_item.xml b/indra/newview/skins/default/xui/fr/panel_conversation_list_item.xml
new file mode 100644
index 00000000000..ebf18f64832
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/panel_conversation_list_item.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="conversation_list_item">
+	<layout_stack name="conversation_item_stack">
+		<layout_panel name="conversation_title_panel">
+			<text name="conversation_title" value="(chargement)"/>
+		</layout_panel>
+	</layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_conversation_log_list_item.xml b/indra/newview/skins/default/xui/fr/panel_conversation_log_list_item.xml
new file mode 100644
index 00000000000..9c277842b5a
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/panel_conversation_log_list_item.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="conversation_log_list_item">
+	<icon name="voice_session_icon" tool_tip="Incluait une conversation vocale"/>
+	<icon name="unread_ims_icon" tool_tip="Des messages sont arrivés pendant que vous étiez déconnecté."/>
+	<button name="delete_btn" tool_tip="Supprimer cette entrée"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_group_list_item.xml b/indra/newview/skins/default/xui/fr/panel_group_list_item.xml
index 5fb69d19893..b1b32af7c68 100644
--- a/indra/newview/skins/default/xui/fr/panel_group_list_item.xml
+++ b/indra/newview/skins/default/xui/fr/panel_group_list_item.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="group_list_item">
 	<text name="group_name" value="Inconnu"/>
+	<button name="info_btn" tool_tip="En savoir plus"/>
 	<button name="profile_btn" tool_tip="Voir le profil"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_people.xml b/indra/newview/skins/default/xui/fr/panel_people.xml
index f035853efcd..227ce26df72 100644
--- a/indra/newview/skins/default/xui/fr/panel_people.xml
+++ b/indra/newview/skins/default/xui/fr/panel_people.xml
@@ -14,81 +14,53 @@ Pour rechercher des résidents avec qui passer du temps, utilisez [secondlife://
 	<string name="no_filtered_friends_msg">
 		Vous n&apos;avez pas trouvé ce que vous cherchiez ? Essayez [secondlife:///app/search/people/[SEARCH_TERM] Rechercher].
 	</string>
-	<string name="people_filter_label" value="Filtrer les personnes"/>
-	<string name="groups_filter_label" value="Filtrer les groupes"/>
 	<string name="no_filtered_groups_msg" value="Vous n&apos;avez pas trouvé ce que vous cherchiez ? Essayez [secondlife:///app/search/groups/[SEARCH_TERM] Rechercher]."/>
 	<string name="no_groups_msg" value="Vous souhaitez trouver des groupes à rejoindre ? Utilisez [secondlife:///app/search/groups Rechercher]."/>
 	<string name="MiniMapToolTipMsg" value="[REGION](Carte : double-clic ; Panoramique : Maj + faire glisser)"/>
 	<string name="AltMiniMapToolTipMsg" value="[REGION](Téléportation : double-clic ; Panoramique : Maj + faire glisser)"/>
-	<filter_editor label="Filtre" name="filter_input"/>
 	<tab_container name="tabs">
 		<panel label="PRÈS DE VOUS" name="nearby_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<menu_button name="nearby_view_sort_btn" tool_tip="Options"/>
-				<button name="add_friend_btn" tool_tip="Ajouter le résident sélectionné à votre liste d&apos;amis"/>
+			<panel label="bottom_panel" name="nearby_buttons_panel">
+				<filter_editor label="Filtrer les personnes" name="nearby_filter_input"/>
+				<button name="gear_btn" tool_tip="Actions sur la personne sélectionnée"/>
+				<menu_button name="nearby_view_btn" tool_tip="Options d&apos;affichage/de tri"/>
+				<button name="add_friend_btn" tool_tip="Proposer à ce résident de devenir votre ami"/>
+				<dnd_button name="nearby_del_btn" tool_tip="Supprimer la personne sélectionnée des amis"/>
 			</panel>
 		</panel>
-		<panel label="MES AMIS" name="friends_panel">
+		<panel label="AMIS" name="friends_panel">
+			<panel label="bottom_panel" name="friends_buttons_panel">
+				<filter_editor label="Filtrer les personnes" name="friends_filter_input"/>
+				<button name="gear_btn" tool_tip="Actions sur la personne sélectionnée"/>
+				<menu_button name="friends_view_btn" tool_tip="Options d&apos;affichage/de tri"/>
+				<button name="friends_add_btn" tool_tip="Proposer à ce résident de devenir votre ami"/>
+				<dnd_button name="friends_del_btn" tool_tip="Supprimer la personne sélectionnée des amis"/>
+			</panel>
 			<accordion name="friends_accordion">
 				<accordion_tab name="tab_online" title="En ligne"/>
 				<accordion_tab name="tab_all" title="Tout"/>
 			</accordion>
-			<panel label="bottom_panel" name="bottom_panel">
-				<layout_stack name="bottom_panel">
-					<layout_panel name="options_gear_btn_panel">
-						<menu_button name="friends_viewsort_btn" tool_tip="Afficher d&apos;autres options"/>
-					</layout_panel>
-					<layout_panel name="add_btn_panel">
-						<button name="add_btn" tool_tip="Proposer à un résident de devenir votre ami"/>
-					</layout_panel>
-					<layout_panel name="trash_btn_panel">
-						<dnd_button name="del_btn" tool_tip="Supprimer le résident sélectionné de votre liste d&apos;amis."/>
-					</layout_panel>
-				</layout_stack>
-			</panel>
 		</panel>
-		<panel label="MES GROUPES" name="groups_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<menu_button name="groups_viewsort_btn" tool_tip="Options"/>
-				<button name="plus_btn" tool_tip="Rejoindre/créer un nouveau groupe"/>
-				<button name="activate_btn" tool_tip="Activer le groupe sélectionné"/>
+		<panel label="GROUPES" name="groups_panel">
+			<panel label="bottom_panel" name="groups_buttons_panel">
+				<filter_editor label="Filtrer les groupes" name="groups_filter_input"/>
+				<menu_button name="groups_gear_btn" tool_tip="Actions sur le groupe sélectionné"/>
+				<menu_button name="groups_view_btn" tool_tip="Options d&apos;affichage/de tri"/>
+				<menu_button name="plus_btn" tool_tip="Rejoindre/créer un nouveau groupe"/>
+				<dnd_button name="minus_btn" tool_tip="Quitter le groupe sélectionné"/>
 			</panel>
 		</panel>
 		<panel label="RÉCENT" name="recent_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<menu_button name="recent_viewsort_btn" tool_tip="Options"/>
-				<button name="add_friend_btn" tool_tip="Ajouter le résident sélectionné à votre liste d&apos;amis"/>
+			<panel label="bottom_panel" name="recent_buttons_panel">
+				<filter_editor label="Filtrer les personnes" name="recent_filter_input"/>
+				<button name="gear_btn" tool_tip="Actions sur la personne sélectionnée"/>
+				<menu_button name="recent_view_btn" tool_tip="Options d&apos;affichage/de tri"/>
+				<button name="add_friend_btn" tool_tip="Proposer à ce résident de devenir votre ami"/>
+				<dnd_button name="recent_del_btn" tool_tip="Supprimer la personne sélectionnée des amis"/>
 			</panel>
 		</panel>
+		<panel label="BLOQUÉ" name="blocked_panel">
+			<panel label="Résidents et objets ignorés" name="panel_block_list_sidetray"/>
+		</panel>
 	</tab_container>
-	<panel name="button_bar">
-		<layout_stack name="bottom_bar_ls">
-			<layout_panel name="view_profile_btn_lp">
-				<button label="Profil" name="view_profile_btn" tool_tip="Afficher la photo, les groupes et autres infos des résidents"/>
-			</layout_panel>
-			<layout_panel name="im_btn_lp">
-				<button label="IM" name="im_btn" tool_tip="Ouvrir une session IM."/>
-			</layout_panel>
-			<layout_panel name="call_btn_lp">
-				<button label="Appel" name="call_btn" tool_tip="Appeler ce résident."/>
-			</layout_panel>
-			<layout_panel name="share_btn_lp">
-				<button label="Partager" name="share_btn" tool_tip="Partager un article de l&apos;inventaire."/>
-			</layout_panel>
-			<layout_panel name="teleport_btn_lp">
-				<button label="Téléporter" name="teleport_btn" tool_tip="Proposer une téléportation."/>
-			</layout_panel>
-		</layout_stack>
-		<layout_stack name="bottom_bar_ls1">
-			<layout_panel name="group_info_btn_lp">
-				<button label="Profil du groupe" name="group_info_btn" tool_tip="Afficher les informations sur le groupe"/>
-			</layout_panel>
-			<layout_panel name="chat_btn_lp">
-				<button label="Chat de groupe" name="chat_btn" tool_tip="Ouvrir une session de chat"/>
-			</layout_panel>
-			<layout_panel name="group_call_btn_lp">
-				<button label="Appel de groupe" name="group_call_btn" tool_tip="Appeler ce groupe"/>
-			</layout_panel>
-		</layout_stack>
-	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml b/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml
index 550beb653ed..972190dc159 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml
@@ -1,34 +1,86 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Chat écrit" name="chat">
-	<text name="font_size">
-		Taille de la police :
-	</text>
-	<radio_group name="chat_font_size">
-		<radio_item label="Petite" name="radio" value="0"/>
-		<radio_item label="Moyenne" name="radio2" value="1"/>
-		<radio_item label="Grande" name="radio3" value="2"/>
-	</radio_group>
-	<check_box initial_value="true" label="Exécuter l&apos;animation clavier quand vous écrivez" name="play_typing_animation"/>
-	<check_box label="M&apos;envoyer les IM par e-mail une fois déconnecté" name="send_im_to_email"/>
-	<check_box label="Activer l&apos;historique des chats et des IM en texte brut" name="plain_text_chat_history"/>
-	<check_box label="Bulles de chat" name="bubble_text_chat"/>
-	<text name="show_ims_in_label">
-		Afficher les IM dans :
-	</text>
-	<text name="requires_restart_label">
-		(redémarrage requis)
-	</text>
-	<radio_group name="chat_window" tool_tip="Afficher vos messages instantanés dans plusieurs fenêtres ou dans une seule fenêtre avec plusieurs onglets (redémarrage requis)">
-		<radio_item label="Plusieurs fenêtres" name="radio" value="0"/>
-		<radio_item label="Onglets" name="radio2" value="1"/>
-	</radio_group>
-	<text name="disable_toast_label">
-		Activer les popups de chat entrant :
-	</text>
-	<check_box label="Chats de groupe" name="EnableGroupChatPopups" tool_tip="Cocher cette case pour qu&apos;un popup s&apos;affiche à réception d&apos;un message de chat de groupe."/>
-	<check_box label="Chats IM" name="EnableIMChatPopups" tool_tip="Cocher cette case pour qu&apos;un popup s&apos;affiche à réception d&apos;un message instantané."/>
-	<spinner label="Durée de vie du popup Chat près de moi :" name="nearby_toasts_lifetime"/>
-	<spinner label="Disparition progressive du popup Chat près de moi :" name="nearby_toasts_fadingtime"/>
+	<panel>
+		<check_box initial_value="true" label="Exécuter l&apos;animation clavier quand vous écrivez" name="play_typing_animation"/>
+		<check_box label="M&apos;envoyer les IM par e-mail une fois déconnecté" name="send_im_to_email"/>
+		<check_box label="Seuls mes amis et groupes peuvent m&apos;appeler ou m&apos;envoyer un IM" name="voice_call_friends_only_check"/>
+		<text name="font_size">
+			Taille de la police :
+		</text>
+		<combo_box name="chat_font_size">
+			<item label="Petite" name="Small" value="0"/>
+			<item label="Moyenne" name="Medium" value="1"/>
+			<item label="Grande" name="Large" value="2"/>
+		</combo_box>
+		<check_box label="Bulles de chat" name="bubble_text_chat"/>
+	</panel>
+	<panel>
+		<text name="notifications">
+			Notifications
+		</text>
+		<text name="friend_ims">
+			IM amis :
+		</text>
+		<combo_box name="FriendIMOptions">
+			<item label="Ouvrir la fenêtre Conversation" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Afficher le message dans une fenêtre popup" name="PopUpMessage" value="toast"/>
+			<item label="Bouton de la barre d&apos;outils Flash" name="FlashToolbarButton" value="clignote"/>
+			<item label="Aucun(e)" name="None" value="aucun(e)"/>
+		</combo_box>
+		<text name="non_friend_ims">
+			IM non amis :
+		</text>
+		<combo_box name="NonFriendIMOptions">
+			<item label="Ouvrir la fenêtre Conversation" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Afficher le message dans une fenêtre popup" name="PopUpMessage" value="toast"/>
+			<item label="Bouton de la barre d&apos;outils Flash" name="FlashToolbarButton" value="clignote"/>
+			<item label="Aucun(e)" name="None" value="aucun(e)"/>
+		</combo_box>
+		<text name="conference_ims">
+			IM conférence :
+		</text>
+		<combo_box name="ConferenceIMOptions">
+			<item label="Ouvrir la fenêtre Conversation" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Afficher le message dans une fenêtre popup" name="PopUpMessage" value="toast"/>
+			<item label="Bouton de la barre d&apos;outils Flash" name="FlashToolbarButton" value="clignote"/>
+			<item label="Aucun(e)" name="None" value="aucun(e)"/>
+		</combo_box>
+		<text name="group_chat">
+			Chat de groupe :
+		</text>
+		<combo_box name="GroupChatOptions">
+			<item label="Ouvrir la fenêtre Conversation" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Afficher le message dans une fenêtre popup" name="PopUpMessage" value="toast"/>
+			<item label="Bouton de la barre d&apos;outils Flash" name="FlashToolbarButton" value="clignote"/>
+			<item label="Aucun(e)" name="None" value="aucun(e)"/>
+		</combo_box>
+		<text name="nearby_chat">
+			Chat près de moi :
+		</text>
+		<combo_box name="NearbyChatOptions">
+			<item label="Ouvrir la fenêtre Conversation" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Afficher le message dans une fenêtre popup" name="PopUpMessage" value="toast"/>
+			<item label="Bouton de la barre d&apos;outils Flash" name="FlashToolBarButton" value="clignote"/>
+			<item label="Aucun(e)" name="None" value="aucun(e)"/>
+		</combo_box>
+		<text name="notifications_alert">
+			Pour suspendre temporairement toutes les notifications, utilisez Communication &gt; Ne pas déranger.
+		</text>
+	</panel>
+	<panel>
+		<text name="play_sound">
+			Écouter le son :
+		</text>
+		<check_box label="Nouvelle conversation" name="new_conversation"/>
+		<check_box label="Appel entrant" name="incoming_voice_call"/>
+		<check_box label="Offre de téléportation" name="teleport_offer"/>
+		<check_box label="Offre d&apos;inventaire" name="inventory_offer"/>
+	</panel>
+	<panel>
+		<button label="Effacer le journal..." name="clear_log"/>
+		<button label="Supprimer les transcriptions..." name="delete_transcripts"/>
+		<button label="Parcourir..." label_selected="Parcourir" name="log_path_button"/>
+	</panel>
 	<button label="Traduction..." name="ok_btn"/>
 	<button label="Rechercher/Remplacer..." name="autoreplace_showgui"/>
 	<button label="Orthographe..." name="spellcheck_showgui"/>
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_general.xml b/indra/newview/skins/default/xui/fr/panel_preferences_general.xml
index 66b84af3aa5..533c392d6b9 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_general.xml
@@ -69,9 +69,9 @@
 		<combo_box.item label="Jamais" name="item4"/>
 	</combo_box>
 	<text name="text_box3">
-		Réponse si occupé(e) :
+		Réponse Ne pas déranger
 	</text>
-	<text_editor name="busy_response">
+	<text_editor name="do_not_disturb_response">
 		log_in_to_change
 	</text_editor>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/sidepanel_task_info.xml b/indra/newview/skins/default/xui/fr/sidepanel_task_info.xml
index 60027d41cb6..896dd932e38 100644
--- a/indra/newview/skins/default/xui/fr/sidepanel_task_info.xml
+++ b/indra/newview/skins/default/xui/fr/sidepanel_task_info.xml
@@ -72,6 +72,7 @@
 			<combo_box.item label="Acheter l&apos;objet" name="Buyobject"/>
 			<combo_box.item label="Payer l&apos;objet" name="Payobject"/>
 			<combo_box.item label="Ouvrir" name="Open"/>
+			<combo_box.item label="Zoom" name="Zoom"/>
 		</combo_box>
 		<panel name="perms_inv">
 			<text name="perm_modify">
diff --git a/indra/newview/skins/default/xui/fr/strings.xml b/indra/newview/skins/default/xui/fr/strings.xml
index 6a2a3f559a5..69ed20f3764 100644
--- a/indra/newview/skins/default/xui/fr/strings.xml
+++ b/indra/newview/skins/default/xui/fr/strings.xml
@@ -137,7 +137,7 @@
 		Quitter
 	</string>
 	<string name="create_account_url">
-		http://join.secondlife.com/index.php?lang=fr-FR&amp;sourceid=[sourceid]
+		http://join.secondlife.com/?sourceid=[sourceid]
 	</string>
 	<string name="LoginFailedViewerNotPermitted">
 		Le client que vous utilisez ne permet plus d&apos;accéder à Second Life. Téléchargez un nouveau client à la page suivante :
@@ -622,8 +622,8 @@ Veuillez réessayer de vous connecter dans une minute.
 	<string name="AvatarAway">
 		Absent
 	</string>
-	<string name="AvatarBusy">
-		Occupé
+	<string name="AvatarDoNotDisturb">
+		Ne pas déranger
 	</string>
 	<string name="AvatarMuted">
 		Bloqué(e)
@@ -859,6 +859,12 @@ Veuillez réessayer de vous connecter dans une minute.
 	<string name="ST_NO_JOINT">
 		Impossible de trouver ROOT ou JOINT.
 	</string>
+	<string name="NearbyChatTitle">
+		Chat près de moi
+	</string>
+	<string name="NearbyChatLabel">
+		(Chat près de moi)
+	</string>
 	<string name="whisper">
 		chuchote :
 	</string>
@@ -922,12 +928,15 @@ Veuillez réessayer de vous connecter dans une minute.
 	<string name="ControlYourCamera">
 		Contrôler votre caméra
 	</string>
-	<string name="TeleportYourAgent">
-		Vous téléporter
-	</string>
 	<string name="NotConnected">
 		Pas connecté(e)
 	</string>
+	<string name="AgentNameSubst">
+		(Vous)
+	</string>
+	<string name="TeleportYourAgent">
+		Vous téléporter
+	</string>
 	<string name="SIM_ACCESS_PG">
 		Général
 	</string>
@@ -1009,18 +1018,6 @@ Veuillez réessayer de vous connecter dans une minute.
 	<string name="dictionary_files">
 		Dictionnaires
 	</string>
-	<string name="AvatarSetNotAway">
-		Présent
-	</string>
-	<string name="AvatarSetAway">
-		Absent
-	</string>
-	<string name="AvatarSetNotBusy">
-		Pas occupé
-	</string>
-	<string name="AvatarSetBusy">
-		Occupé
-	</string>
 	<string name="shape">
 		Silhouette
 	</string>
@@ -1989,8 +1986,8 @@ Veuillez réessayer de vous connecter dans une minute.
 	<string name="PanelContentsNewScript">
 		Nouveau script
 	</string>
-	<string name="BusyModeResponseDefault">
-		Le résident auquel vous avez envoyé un message est en mode Occupé, ce qui signifie qu&apos;il a demandé à ne pas être dérangé.  Votre message restera affiché dans son panneau IM afin qu&apos;il puisse le lire ultérieurement.
+	<string name="DoNotDisturbModeResponseDefault">
+		Ce résident a activé Ne pas déranger et verra votre message plus tard.
 	</string>
 	<string name="MuteByName">
 		(par nom)
@@ -2103,9 +2100,6 @@ Veuillez réessayer de vous connecter dans une minute.
 	<string name="GroupMoneyDate">
 		[weekday,datetime,utc] [day,datetime,utc] [mth,datetime,utc] [year,datetime,utc]
 	</string>
-	<string name="ViewerObjectContents">
-		Contenus
-	</string>
 	<string name="AcquiredItems">
 		Objets acquis
 	</string>
@@ -3877,7 +3871,7 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
 		Région de type Général
 	</string>
 	<string name="LocationCtrlSeeAVsTooltip">
-		Avatars visibles et chat autorisé en dehors de cette parcelle
+		Les avatars à l&apos;extérieur de cette parcelle ne peuvent pas voir ni entendre les avatars qui se trouvent à l&apos;intérieur.
 	</string>
 	<string name="LocationCtrlPathfindingDirtyTooltip">
 		Les objets mobiles risquent de ne pas se comporter correctement dans cette région tant qu&apos;elle n&apos;est pas refigée.
@@ -3954,6 +3948,12 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
 	<string name="IM_unblock_only_groups_friends">
 		Pour afficher ce message, vous devez désactiver la case Seuls mes amis et groupes peuvent m&apos;appeler ou m&apos;envoyer un IM, sous Préférences/Confidentialité.
 	</string>
+	<string name="OnlineStatus">
+		En ligne
+	</string>
+	<string name="OfflineStatus">
+		Hors ligne
+	</string>
 	<string name="answered_call">
 		Votre appel a fait l&apos;objet d&apos;une réponse
 	</string>
@@ -3963,6 +3963,9 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
 	<string name="you_joined_call">
 		Vous avez rejoint l&apos;appel
 	</string>
+	<string name="you_auto_rejected_call-im">
+		Vous avez automatiquement refusé l&apos;appel vocal quand le mode Ne pas déranger était activé.
+	</string>
 	<string name="name_started_call">
 		[NAME] appelle.
 	</string>
@@ -3979,7 +3982,7 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
 		Connexion en cours...
 	</string>
 	<string name="conference-title">
-		Conférence ad-hoc
+		Chat à plusieurs
 	</string>
 	<string name="conference-title-incoming">
 		Conférence avec [AGENT_NAME]
@@ -4859,6 +4862,9 @@ Essayez avec le chemin d&apos;accès à l&apos;éditeur entre guillemets doubles
 	<string name="Command_Chat_Label">
 		Chat
 	</string>
+	<string name="Command_Conversations_Label">
+		Conversations
+	</string>
 	<string name="Command_Compass_Label">
 		Boussole
 	</string>
@@ -4934,6 +4940,9 @@ Essayez avec le chemin d&apos;accès à l&apos;éditeur entre guillemets doubles
 	<string name="Command_Chat_Tooltip">
 		Parler aux personnes près de vous par chat écrit
 	</string>
+	<string name="Command_Conversations_Tooltip">
+		Parler à quelqu&apos;un
+	</string>
 	<string name="Command_Compass_Tooltip">
 		Boussole
 	</string>
@@ -5063,4 +5072,13 @@ Essayez avec le chemin d&apos;accès à l&apos;éditeur entre guillemets doubles
 	<string name="UserDictionary">
 		[User]
 	</string>
+	<string name="logging_calls_disabled_log_empty">
+		Les conversations ne sont pas archivées. Pour commencer à tenir un journal, choisissez Enregistrer : Journal seul ou Enregistrer : Journal et transcriptions sous Préférences &gt; Chat.
+	</string>
+	<string name="logging_calls_disabled_log_not_empty">
+		Aucune conversation ne sera plus enregistrée. Pour recommencer à tenir un journal, choisissez Enregistrer : Journal seul ou Enregistrer : Journal et transcriptions sous Préférences &gt; Chat.
+	</string>
+	<string name="logging_calls_enabled_log_empty">
+		Il n&apos;y a aucune conversation enregistrée. Quand quelqu&apos;un vous contacte ou quand vous contactez quelqu&apos;un, une entrée de journal s&apos;affiche ici.
+	</string>
 </strings>
diff --git a/indra/newview/skins/default/xui/it/floater_conversation_log.xml b/indra/newview/skins/default/xui/it/floater_conversation_log.xml
new file mode 100644
index 00000000000..8354824ed14
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/floater_conversation_log.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_conversation_log" title="REGISTRO CONVERSAZIONI">
+	<panel name="buttons_panel">
+		<filter_editor label="Filtro persone" name="people_filter_input"/>
+		<menu_button name="conversation_view_btn" tool_tip="Opzioni Mostra/Ordina"/>
+		<menu_button name="conversations_gear_btn" tool_tip="Azioni sulla persona o gruppo selezionato"/>
+	</panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/it/floater_conversation_preview.xml b/indra/newview/skins/default/xui/it/floater_conversation_preview.xml
new file mode 100644
index 00000000000..d0e9c8ee0e3
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/floater_conversation_preview.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="preview_conversation" title="CONVERSAZIONE:">
+	<floater.string name="Title">
+		CONVERSAZIONE: [NAME]
+	</floater.string>
+	<text name="page_label" value="Pagina"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/it/floater_im_container.xml b/indra/newview/skins/default/xui/it/floater_im_container.xml
index fb8e77b32fe..10cf1b7f7ed 100644
--- a/indra/newview/skins/default/xui/it/floater_im_container.xml
+++ b/indra/newview/skins/default/xui/it/floater_im_container.xml
@@ -1,2 +1,29 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<multi_floater name="floater_im_box" title="CONVERSAZIONI"/>
+<multi_floater name="floater_im_box" title="CONVERSAZIONI">
+	<string name="collapse_icon" value="Conv_toolbar_collapse"/>
+	<string name="expand_icon" value="Conv_toolbar_expand"/>
+	<layout_stack name="conversations_stack">
+		<layout_panel name="conversations_layout_panel">
+			<layout_stack name="conversations_pane_buttons_stack">
+				<layout_panel name="conversations_pane_buttons_expanded">
+					<menu_button name="sort_btn" tool_tip="Opzioni Mostra/Ordina"/>
+					<button name="add_btn" tool_tip="Avvia una nuova conversazione"/>
+					<button name="speak_btn" tool_tip="Parla con le persone usando il microfono"/>
+				</layout_panel>
+				<layout_panel name="conversations_pane_buttons_collapsed">
+					<button name="expand_collapse_btn" tool_tip="Minimizza/espandi questo elenco"/>
+				</layout_panel>
+			</layout_stack>
+		</layout_panel>
+		<layout_panel name="messages_layout_panel">
+			<panel_container name="im_box_tab_container">
+				<panel name="stub_panel">
+					<button name="stub_collapse_btn" tool_tip="Minimizza questo pannello"/>
+					<text name="stub_textbox">
+						Questa conversazione in una finestra separata.   [secondlife:/// Ripristina conversazione.]
+					</text>
+				</panel>
+			</panel_container>
+		</layout_panel>
+	</layout_stack>
+</multi_floater>
diff --git a/indra/newview/skins/default/xui/it/floater_im_session.xml b/indra/newview/skins/default/xui/it/floater_im_session.xml
index 3d9d17fc81a..d38ec7a5fe5 100644
--- a/indra/newview/skins/default/xui/it/floater_im_session.xml
+++ b/indra/newview/skins/default/xui/it/floater_im_session.xml
@@ -1,8 +1,59 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="panel_im">
-	<layout_stack name="im_panels">
-		<layout_panel>
-			<line_editor label="A" name="chat_editor"/>
-		</layout_panel>
-	</layout_stack>
+	<floater.string name="call_btn_start">
+		Conv_toolbar_open_call
+	</floater.string>
+	<floater.string name="call_btn_stop">
+		Conv_toolbar_hang_up
+	</floater.string>
+	<floater.string name="collapseline_icon" value="Conv_collapse_to_one_line"/>
+	<floater.string name="expandline_icon" value="Conv_expand_one_line"/>
+	<floater.string name="collapse_icon" value="Conv_toolbar_collapse"/>
+	<floater.string name="expand_icon" value="Conv_toolbar_expand"/>
+	<floater.string name="tear_off_icon" value="Conv_toolbar_arrow_ne"/>
+	<floater.string name="return_icon" value="Conv_toolbar_arrow_sw"/>
+	<floater.string name="participant_added" value="[NAME] è stato invitato alla conversazione."/>
+	<floater.string name="multiple_participants_added" value="[NAME] sono stati invitati alla conversazione."/>
+	<floater.string name="tooltip_to_separate_window" value="Sposta questa conversazione in una finestra separata."/>
+	<floater.string name="tooltip_to_main_window" value="Sposta questa conversazione di nuovo nella finestra principale"/>
+	<floater.string name="start_call_button_tooltip" value="Apri collegamento voce"/>
+	<floater.string name="end_call_button_tooltip" value="Chiudi collegamento voce"/>
+	<floater.string name="expcol_button_not_tearoff_tooltip" value="Minimizza questo pannello"/>
+	<floater.string name="expcol_button_tearoff_and_expanded_tooltip" value="Minimizza elenco partecipanti"/>
+	<floater.string name="expcol_button_tearoff_and_collapsed_tooltip" value="Espandi l&apos;elenco dei partecipanti"/>
+	<view name="contents_view">
+		<layout_stack name="main_stack">
+			<layout_panel name="toolbar_panel">
+				<menu_button name="view_options_btn" tool_tip="Opzioni Mostra/Ordina"/>
+				<menu_button name="gear_btn" tool_tip="Azioni per la persona selezionata:"/>
+				<button name="add_btn" tool_tip="Aggiungi qualcuno a questa conversazione"/>
+				<button name="voice_call_btn" tool_tip="Apri collegamento voce"/>
+				<button name="close_btn" tool_tip="Termina questa conversazione"/>
+				<button name="expand_collapse_btn" tool_tip="Minimizza/espandi questo pannello"/>
+			</layout_panel>
+			<layout_panel name="body_panel">
+				<layout_stack name="im_panels">
+					<layout_panel name="right_part_holder">
+						<panel name="trnsAndChat_panel">
+							<layout_stack name="translate_and_chat_stack">
+								<layout_panel name="translate_chat_checkbox_lp">
+									<check_box label="Traduci chat" name="translate_chat_checkbox"/>
+								</layout_panel>
+							</layout_stack>
+						</panel>
+					</layout_panel>
+				</layout_stack>
+			</layout_panel>
+			<layout_panel name="chat_layout_panel">
+				<layout_stack name="input_panels">
+					<layout_panel name="input_editor_layout_panel">
+						<chat_editor label="A" name="chat_editor"/>
+					</layout_panel>
+					<layout_panel name="input_button_layout_panel">
+						<button name="minz_btn" tool_tip="Mostra/nascondi pannello messaggi"/>
+					</layout_panel>
+				</layout_stack>
+			</layout_panel>
+		</layout_stack>
+	</view>
 </floater>
diff --git a/indra/newview/skins/default/xui/it/floater_incoming_call.xml b/indra/newview/skins/default/xui/it/floater_incoming_call.xml
index a95ed44662c..566920209d0 100644
--- a/indra/newview/skins/default/xui/it/floater_incoming_call.xml
+++ b/indra/newview/skins/default/xui/it/floater_incoming_call.xml
@@ -10,7 +10,7 @@
 		anonimo
 	</floater.string>
 	<floater.string name="VoiceInviteP2P">
-		sta chiamando.
+		ti sta chiamando.
 	</floater.string>
 	<floater.string name="VoiceInviteAdHoc">
 		ha aderito ad una chiamata in chat vocale in conferenza.
@@ -25,9 +25,9 @@
 		Vuoi abbandonare [CURRENT_CHAT] e aderire a questa voice chat?
 	</floater.string>
 	<text name="question">
-		Vuoi abbandonare [CURRENT_CHAT] e aderire a questa voice chat?
+		Se rispondi, verrà interrotto il collegamento dalla conversazione a voce corrente.
 	</text>
-	<button label="Accetta" label_selected="Accetta" name="Accept"/>
-	<button label="Rifiuta" label_selected="Rifiuta" name="Reject"/>
-	<button label="Inizia IM" name="Start IM"/>
+	<button label="Risposta" label_selected="Risposta" name="Accept"/>
+	<button label="Ignora" label_selected="Ignora" name="Reject"/>
+	<button label="Apri invece IM" name="Start IM"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/it/floater_pathfinding_console.xml b/indra/newview/skins/default/xui/it/floater_pathfinding_console.xml
index 77be220a2ac..77774441612 100644
--- a/indra/newview/skins/default/xui/it/floater_pathfinding_console.xml
+++ b/indra/newview/skins/default/xui/it/floater_pathfinding_console.xml
@@ -71,7 +71,7 @@
 			<text name="show_label">
 				Mostra:
 			</text>
-			<check_box label="Mondo" name="show_world"/>
+			<check_box label="Test" name="show_world"/>
 			<check_box label="Solo elementi spostabili" name="show_world_movables_only"/>
 			<check_box label="Navmesh" name="show_navmesh"/>
 			<text name="show_walkability_label">
diff --git a/indra/newview/skins/default/xui/it/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/it/floater_texture_ctrl.xml
index c97a91bb3fb..27a17868a76 100644
--- a/indra/newview/skins/default/xui/it/floater_texture_ctrl.xml
+++ b/indra/newview/skins/default/xui/it/floater_texture_ctrl.xml
@@ -19,7 +19,7 @@
 	<button label="Default" label_selected="Default" name="Default"/>
 	<button label="Vuoto" label_selected="Vuoto" name="Blank"/>
 	<button label="Niente" label_selected="Niente" name="None"/>
-	<check_box initial_value="true" label="Anteprima dal vivo" name="apply_immediate_check"/>
+	<check_box initial_value="true" label="Applica adesso" name="apply_immediate_check"/>
 	<text name="preview_disabled" value="Anteprima disattivata"/>
 	<filter_editor label="Filtro texture" name="inventory search editor"/>
 	<check_box initial_value="false" label="Mostra cartelle" name="show_folders_check"/>
diff --git a/indra/newview/skins/default/xui/it/floater_voice_chat_volume.xml b/indra/newview/skins/default/xui/it/floater_voice_chat_volume.xml
new file mode 100644
index 00000000000..b168d067c27
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/floater_voice_chat_volume.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_voice_volume" title="VOLUME CHAT VOCALE">
+	<slider label="Chat vocale" name="chat_voice_volume"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/it/floater_voice_effect.xml b/indra/newview/skins/default/xui/it/floater_voice_effect.xml
index c83b11f698a..f102622f5d1 100644
--- a/indra/newview/skins/default/xui/it/floater_voice_effect.xml
+++ b/indra/newview/skins/default/xui/it/floater_voice_effect.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater label="Luoghi" name="voice_effects" title="MANIPOLAZIONE VOCE">
+<floater label="Luoghi" name="voice_effects" title="ANTEPRIMA MANIPOLAZIONE VOCE">
 	<string name="no_voice_effect">
 		(Nessuna manipolazione voce)
 	</string>
diff --git a/indra/newview/skins/default/xui/it/floater_voice_volume.xml b/indra/newview/skins/default/xui/it/floater_voice_volume.xml
new file mode 100644
index 00000000000..eaeda7597f3
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/floater_voice_volume.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!--
+  Not can_close / no title to avoid window chrome
+  Single instance - only have one at a time, recycle it each spawn
+-->
+<floater name="floater_voice_volume" title="VOLUME VOCE">
+	<slider name="volume_slider" tool_tip="Volume voce" value="0.5"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/it/menu_cof_gear.xml b/indra/newview/skins/default/xui/it/menu_cof_gear.xml
index 10524ba92d0..984e4a16112 100644
--- a/indra/newview/skins/default/xui/it/menu_cof_gear.xml
+++ b/indra/newview/skins/default/xui/it/menu_cof_gear.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear COF">
+<toggleable_menu name="Gear COF">
 	<menu label="Nuovi abiti" name="COF.Gear.New_Clothes"/>
-	<menu label="Nuove parti del corpo" name="COF.Geear.New_Body_Parts"/>
-</menu>
+	<menu label="Nuove parti del corpo" name="COF.Gear.New_Body_Parts"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_conversation.xml b/indra/newview/skins/default/xui/it/menu_conversation.xml
new file mode 100644
index 00000000000..46ced93f1df
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_conversation.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_conversation_participant">
+	<menu_item_call label="Chiudi la conversazione" name="close_conversation"/>
+	<menu_item_call label="Apri conversazione a voce" name="open_voice_conversation"/>
+	<menu_item_call label="Interrompi collegamento a voce" name="disconnect_from_voice"/>
+	<menu_item_call label="Vedi profilo" name="view_profile"/>
+	<menu_item_call label="IM" name="im"/>
+	<menu_item_call label="Offri teleport" name="offer_teleport"/>
+	<menu_item_call label="Chiamata a voce" name="voice_call"/>
+	<menu_item_call label="Cronologia chat..." name="chat_history"/>
+	<menu_item_call label="Aggiungi amico" name="add_friend"/>
+	<menu_item_call label="Rimuovi amico" name="remove_friend"/>
+	<menu_item_call label="Rimuovi amici" name="remove_friends"/>
+	<menu_item_call label="Invita al gruppo..." name="invite_to_group"/>
+	<menu_item_call label="Zoom avanti" name="zoom_in"/>
+	<menu_item_call label="Mappa" name="map"/>
+	<menu_item_call label="Condividi" name="share"/>
+	<menu_item_call label="Paga" name="pay"/>
+	<menu_item_check label="Blocca voce" name="block_unblock"/>
+	<menu_item_check label="Blocca testo" name="MuteText"/>
+	<menu_item_call label="Profilo del gruppo" name="group_profile"/>
+	<menu_item_call label="Attiva gruppo" name="activate_group"/>
+	<menu_item_call label="Lascia il gruppo" name="leave_group"/>
+	<context_menu label="Opzioni moderatore" name="Moderator Options">
+		<menu_item_check label="Consenti chat di testo" name="AllowTextChat"/>
+		<menu_item_call label="Disattiva audio di questo partecipante" name="ModerateVoiceMuteSelected"/>
+		<menu_item_call label="Riattiva audio di questo partecipante" name="ModerateVoiceUnMuteSelected"/>
+		<menu_item_call label="Disattiva audio di tutti" name="ModerateVoiceMute"/>
+		<menu_item_call label="Riattiva audio di tutti" name="ModerateVoiceUnmute"/>
+	</context_menu>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_conversation_log_gear.xml b/indra/newview/skins/default/xui/it/menu_conversation_log_gear.xml
new file mode 100644
index 00000000000..5686a902eb2
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_conversation_log_gear.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Conversation Context Menu">
+	<menu_item_call label="IM..." name="IM"/>
+	<menu_item_call label="Chiamata a voce..." name="Call"/>
+	<menu_item_call label="Apro la cronologia delle chat..." name="Chat history"/>
+	<menu_item_call label="Vedi profilo" name="View Profile"/>
+	<menu_item_call label="Offri Teleport" name="teleport"/>
+	<menu_item_call label="Aggiungi come amico" name="add_friend"/>
+	<menu_item_call label="Rimuovi amico" name="remove_friend"/>
+	<menu_item_call label="Invita al gruppo..." name="Invite"/>
+	<menu_item_call label="Mappa" name="Map"/>
+	<menu_item_call label="Condividi" name="Share"/>
+	<menu_item_call label="Paga" name="Pay"/>
+	<menu_item_check label="Blocca/Sblocca" name="Block/Unblock"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_conversation_log_view.xml b/indra/newview/skins/default/xui/it/menu_conversation_log_view.xml
new file mode 100644
index 00000000000..73b05831ef3
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_conversation_log_view.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_conversation_view">
+	<menu_item_check label="Ordina in base al nome" name="sort_by_name"/>
+	<menu_item_check label="Ordina in base alla data" name="sort_by_date"/>
+	<menu_item_check label="Ordina con gli amici in alto" name="sort_by_friends"/>
+	<menu_item_call label="Mostra la cronologia delle chat vicine..." name="view_nearby_chat_history"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_im_conversation.xml b/indra/newview/skins/default/xui/it/menu_im_conversation.xml
new file mode 100644
index 00000000000..1621d57e12b
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_im_conversation.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Conversation Gear Menu">
+	<menu_item_call label="Vedi profilo" name="View Profile"/>
+	<menu_item_call label="Aggiungi come amico" name="Add Friend"/>
+	<menu_item_call label="Rimuovi amico" name="remove_friend"/>
+	<menu_item_call label="Offri teleport" name="offer_teleport"/>
+	<menu_item_call label="Invita al gruppo..." name="invite_to_group"/>
+	<menu_item_call label="Cronologia chat..." name="chat_history"/>
+	<menu_item_call label="Zoom avanti" name="zoom_in"/>
+	<menu_item_call label="Mappa" name="map"/>
+	<menu_item_call label="Condividi" name="Share"/>
+	<menu_item_call label="Paga" name="Pay"/>
+	<menu_item_check label="Blocca voce" name="Block/Unblock"/>
+	<menu_item_check label="Blocca testo" name="MuteText"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_im_session_showmodes.xml b/indra/newview/skins/default/xui/it/menu_im_session_showmodes.xml
new file mode 100644
index 00000000000..350fbc5c6f6
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_im_session_showmodes.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_modes">
+	<menu_item_check label="Vista compatta" name="compact_view"/>
+	<menu_item_check label="Vista espansa" name="expanded_view"/>
+	<menu_item_check label="Mostra orario" name="IMShowTime"/>
+	<menu_item_check label="Mostra i nomi nelle conversazioni individuali" name="IMShowNamesForP2PConv"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_object_icon.xml b/indra/newview/skins/default/xui/it/menu_object_icon.xml
index 0f347b1a909..9623775af46 100644
--- a/indra/newview/skins/default/xui/it/menu_object_icon.xml
+++ b/indra/newview/skins/default/xui/it/menu_object_icon.xml
@@ -2,4 +2,6 @@
 <menu name="Object Icon Menu">
 	<menu_item_call label="Profilo oggetto..." name="Object Profile"/>
 	<menu_item_call label="Blocca..." name="Block"/>
+	<menu_item_call label="Mostra sulla mappa" name="show_on_map"/>
+	<menu_item_call label="Teleport sul luogo dell&apos;oggetto" name="teleport_to_object"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/it/menu_outfit_gear.xml b/indra/newview/skins/default/xui/it/menu_outfit_gear.xml
index 09fc867d7c4..3ac0c5ce698 100644
--- a/indra/newview/skins/default/xui/it/menu_outfit_gear.xml
+++ b/indra/newview/skins/default/xui/it/menu_outfit_gear.xml
@@ -23,6 +23,8 @@
 		<menu_item_call label="Nuovi capelli" name="New Hair"/>
 		<menu_item_call label="Nuovi occhi" name="New Eyes"/>
 	</menu>
+	<menu_item_call label="Apri tutte le cartelle" name="expand"/>
+	<menu_item_call label="Chiudi tutte le cartelle" name="collapse"/>
 	<menu_item_call label="Cambia nome del vestiario" name="rename"/>
 	<menu_item_call label="Elimina vestito" name="delete_outfit"/>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_participant_view.xml b/indra/newview/skins/default/xui/it/menu_participant_view.xml
new file mode 100644
index 00000000000..c87cda57bfd
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_participant_view.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="participant_manu_view">
+	<menu_item_check label="Ordina le conversazioni in base al tipo" name="sort_sessions_by_type"/>
+	<menu_item_check label="Ordina le conversazioni in base al nome" name="sort_sessions_by_name"/>
+	<menu_item_check label="Ordina le conversazioni in base alle attività più recenti" name="sort_sessions_by_recent"/>
+	<menu_item_check label="Ordina i partecipanti in base al nome" name="sort_participants_by_name"/>
+	<menu_item_check label="Ordina i partecipanti in base alle attività più recenti" name="sort_participants_by_recent"/>
+	<menu_item_call label="Preferenze chat..." name="chat_preferences"/>
+	<menu_item_call label="Preferenze privacy..." name="privacy_preferences"/>
+	<menu_item_check label="Registro conversazioni..." name="Conversation"/>
+	<menu_item_check label="Traduci chat vicina" name="Translate_chat"/>
+	<menu_item_check label="Impostazioni traduzione..." name="Translation_settings"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_people_blocked_gear.xml b/indra/newview/skins/default/xui/it/menu_people_blocked_gear.xml
new file mode 100644
index 00000000000..e9955923b25
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_people_blocked_gear.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_blocked_gear">
+	<menu_item_call label="Sblocca" name="unblock"/>
+	<menu_item_call label="Profilo..." name="profile"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_people_blocked_plus.xml b/indra/newview/skins/default/xui/it/menu_people_blocked_plus.xml
new file mode 100644
index 00000000000..cbcf084b86b
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_people_blocked_plus.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_blocked_plus">
+	<menu_item_call label="Blocca residente per nome..." name="block_resident_by_name"/>
+	<menu_item_call label="Blocca oggetto per nome" name="block_object_by_name"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_people_blocked_view.xml b/indra/newview/skins/default/xui/it/menu_people_blocked_view.xml
new file mode 100644
index 00000000000..fc80c73ae30
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_people_blocked_view.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_blocked_view">
+	<menu_item_check label="Ordina in base al nome" name="sort_by_name"/>
+	<menu_item_check label="Ordina in base al tipo" name="sort_by_type"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_people_friends_view.xml b/indra/newview/skins/default/xui/it/menu_people_friends_view.xml
new file mode 100644
index 00000000000..972e359cfe5
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_people_friends_view.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="Ordina in base al nome" name="sort_name"/>
+	<menu_item_check label="Ordina in base allo stato" name="sort_status"/>
+	<menu_item_check label="Mostra le icone delle persone" name="view_icons"/>
+	<menu_item_check label="Mostra le autorizzazioni concesse" name="view_permissions"/>
+	<menu_item_check label="Mostra il registro conversazioni..." name="view_conversation"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_people_groups.xml b/indra/newview/skins/default/xui/it/menu_people_groups.xml
index 30a97a1c724..8ca7537ee0f 100644
--- a/indra/newview/skins/default/xui/it/menu_people_groups.xml
+++ b/indra/newview/skins/default/xui/it/menu_people_groups.xml
@@ -2,7 +2,7 @@
 <menu name="menu_group_plus">
 	<menu_item_call label="Mostra informazioni" name="View Info"/>
 	<menu_item_call label="Chat" name="Chat"/>
-	<menu_item_call label="Chiama" name="Call"/>
+	<menu_item_call label="Chiamata a voce" name="Call"/>
 	<menu_item_call label="Attiva" name="Activate"/>
 	<menu_item_call label="Chiudi" name="Leave"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/it/menu_people_groups_view.xml b/indra/newview/skins/default/xui/it/menu_people_groups_view.xml
new file mode 100644
index 00000000000..56b9abbd3ae
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_people_groups_view.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="Mostra le icone di gruppo" name="Display Group Icons"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_people_nearby.xml b/indra/newview/skins/default/xui/it/menu_people_nearby.xml
index a974bd181df..1c09b1cfe25 100644
--- a/indra/newview/skins/default/xui/it/menu_people_nearby.xml
+++ b/indra/newview/skins/default/xui/it/menu_people_nearby.xml
@@ -1,13 +1,16 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Avatar Context Menu">
-	<menu_item_call label="Vedi profilo" name="View Profile"/>
-	<menu_item_call label="Aggiungi amico" name="Add Friend"/>
-	<menu_item_call label="Rimuovi amico" name="Remove Friend"/>
-	<menu_item_call label="IM" name="IM"/>
-	<menu_item_call label="Chiama" name="Call"/>
-	<menu_item_call label="Mappa" name="Map"/>
-	<menu_item_call label="Condividi" name="Share"/>
-	<menu_item_call label="Paga" name="Pay"/>
-	<menu_item_check label="Blocca/Sblocca" name="Block/Unblock"/>
-	<menu_item_call label="Offri Teleport" name="teleport"/>
+	<menu_item_call label="Vedi profilo" name="view_profile"/>
+	<menu_item_call label="IM" name="im"/>
+	<menu_item_call label="Offri Teleport" name="offer_teleport"/>
+	<menu_item_call label="Chiamata a voce" name="voice_call"/>
+	<menu_item_call label="Mostra la cronologia delle chat..." name="chat_history"/>
+	<menu_item_call label="Aggiungi come amico" name="add_friend"/>
+	<menu_item_call label="Rimuovi amico" name="remove_friend"/>
+	<menu_item_call label="Invita al gruppo..." name="invite_to_group"/>
+	<menu_item_call label="Zoom avanti" name="zoom_in"/>
+	<menu_item_call label="Mappa" name="map"/>
+	<menu_item_call label="Condividi" name="share"/>
+	<menu_item_call label="Paga" name="pay"/>
+	<menu_item_check label="Blocca/Sblocca" name="block_unblock"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/it/menu_people_nearby_multiselect.xml
index e0b9ceb63d8..b9ce70167f4 100644
--- a/indra/newview/skins/default/xui/it/menu_people_nearby_multiselect.xml
+++ b/indra/newview/skins/default/xui/it/menu_people_nearby_multiselect.xml
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Multi-Selected People Context Menu">
-	<menu_item_call label="Aggiungi amici" name="Add Friends"/>
-	<menu_item_call label="Rimuovi amici" name="Remove Friend"/>
-	<menu_item_call label="IM" name="IM"/>
-	<menu_item_call label="Chiama" name="Call"/>
-	<menu_item_call label="Condividi" name="Share"/>
-	<menu_item_call label="Paga" name="Pay"/>
-	<menu_item_call label="Offri Teleport" name="teleport"/>
+	<menu_item_call label="Aggiungi amici" name="add_friends"/>
+	<menu_item_call label="Rimuovi amici" name="remove_friends"/>
+	<menu_item_call label="IM" name="im"/>
+	<menu_item_call label="Chiama" name="call"/>
+	<menu_item_call label="Condividi" name="share"/>
+	<menu_item_call label="Paga" name="pay"/>
+	<menu_item_call label="Offri Teleport" name="offer_teleport"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_people_nearby_view.xml b/indra/newview/skins/default/xui/it/menu_people_nearby_view.xml
new file mode 100644
index 00000000000..223d88fee1c
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_people_nearby_view.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="Ordina in base a intervenuti recenti" name="sort_by_recent_speakers"/>
+	<menu_item_check label="Ordina in base al nome" name="sort_name"/>
+	<menu_item_check label="Ordina in base alla distanza" name="sort_distance"/>
+	<menu_item_check label="Mostra le icone delle persone" name="view_icons"/>
+	<menu_item_check label="Mostra mappa" name="view_map"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_people_recent_view.xml b/indra/newview/skins/default/xui/it/menu_people_recent_view.xml
new file mode 100644
index 00000000000..fc6213bd085
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_people_recent_view.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="Mostra prima i più recenti" name="sort_most"/>
+	<menu_item_check label="Ordina in base al nome" name="sort_name"/>
+	<menu_item_check label="Mostra le icone delle persone" name="view_icons"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_url_agent.xml b/indra/newview/skins/default/xui/it/menu_url_agent.xml
index 37755d5749c..abfbab35a34 100644
--- a/indra/newview/skins/default/xui/it/menu_url_agent.xml
+++ b/indra/newview/skins/default/xui/it/menu_url_agent.xml
@@ -1,6 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Url Popup">
-	<menu_item_call label="Mostra profilo residente" name="show_agent"/>
+	<menu_item_call label="Vedi profilo" name="show_agent"/>
+	<menu_item_call label="Manda IM..." name="send_im"/>
+	<menu_item_call label="Aggiungi come amico..." name="add_friend"/>
 	<menu_item_call label="Copia nome negli Appunti" name="url_copy_label"/>
 	<menu_item_call label="Copia SLurl negli Appunti" name="url_copy"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_url_objectim.xml b/indra/newview/skins/default/xui/it/menu_url_objectim.xml
index 763e65f17c0..8456d14b63e 100644
--- a/indra/newview/skins/default/xui/it/menu_url_objectim.xml
+++ b/indra/newview/skins/default/xui/it/menu_url_objectim.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Url Popup">
-	<menu_item_call label="Mostra informazioni oggetto" name="show_object"/>
+	<menu_item_call label="Profilo oggetto..." name="show_object"/>
 	<menu_item_call label="Mostra sulla mappa" name="show_on_map"/>
 	<menu_item_call label="Teleport sul luogo dell&apos;oggetto" name="teleport_to_object"/>
 	<menu_item_call label="Copia nome oggetto negli Appunti" name="url_copy_label"/>
diff --git a/indra/newview/skins/default/xui/it/menu_viewer.xml b/indra/newview/skins/default/xui/it/menu_viewer.xml
index 547c5a9b73c..c93b92029f6 100644
--- a/indra/newview/skins/default/xui/it/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/it/menu_viewer.xml
@@ -16,10 +16,7 @@
 			<menu_item_call label="Ferma animazione" name="Stop Animating My Avatar"/>
 			<menu_item_call label="Cammina / corri / vola..." name="Walk / run / fly"/>
 		</menu>
-		<menu label="Stato" name="Status">
-			<menu_item_call label="Assente" name="Set Away"/>
-			<menu_item_call label="Non disponibile" name="Set Busy"/>
-		</menu>
+		<menu label="Stato" name="Status"/>
 		<menu_item_call label="Acquista L$..." name="Buy and Sell L$"/>
 		<menu_item_call label="Casella venditore in uscita..." name="MerchantOutbox"/>
 		<menu_item_call label="Dashboard dell&apos;account..." name="Manage My Account">
@@ -32,14 +29,18 @@
 		<menu_item_call label="Esci da [APP_NAME]" name="Quit"/>
 	</menu>
 	<menu label="Comunica" name="Communicate">
-		<menu_item_check label="Chat..." name="Nearby Chat"/>
+		<menu_item_check label="Conversazioni..." name="Conversations"/>
+		<menu_item_check label="Chat nei dintorni..." name="Nearby Chat"/>
 		<menu_item_check label="Parla" name="Speak"/>
-		<menu_item_check label="Impostazioni voce..." name="Nearby Voice"/>
-		<menu_item_check label="Manipolazione voce..." name="ShowVoice"/>
+		<menu label="Manipolazione voce" name="VoiceMorphing">
+			<menu_item_check label="Nessuna manipolazione voce" name="NoVoiceMorphing"/>
+			<menu_item_check label="Anteprima..." name="Preview"/>
+			<menu_item_call label="Abbonati..." name="Subscribe"/>
+		</menu>
 		<menu_item_check label="Gesture..." name="Gestures"/>
-		<menu_item_call label="Amici" name="My Friends"/>
-		<menu_item_call label="Gruppi" name="My Groups"/>
-		<menu_item_call label="Persone vicine" name="Active Speakers"/>
+		<menu_item_check label="Amici" name="My Friends"/>
+		<menu_item_check label="Gruppi" name="My Groups"/>
+		<menu_item_check label="Persone vicine" name="Active Speakers"/>
 		<menu_item_call label="Blocca lista" name="Block List"/>
 	</menu>
 	<menu label="Mondo" name="World">
@@ -115,7 +116,6 @@
 			<menu_item_call label="Acquista" name="Menu Object Buy"/>
 			<menu_item_call label="Prendi" name="Menu Object Take"/>
 			<menu_item_call label="Prendi copia" name="Take Copy"/>
-			<menu_item_call label="Salva nell&apos;inventario" name="Save Object Back to My Inventory"/>
 			<menu_item_call label="Salva nei contenuti oggetto" name="Save Object Back to Object Contents"/>
 			<menu_item_call label="Restituisci oggetto" name="Return Object back to Owner"/>
 		</menu>
@@ -130,6 +130,7 @@
 			<menu_item_call label="Set collegati..." name="pathfinding_linksets_menu_item"/>
 			<menu_item_call label="Personaggi..." name="pathfinding_characters_menu_item"/>
 			<menu_item_call label="Visualizza / test..." name="pathfinding_console_menu_item"/>
+			<menu_item_call label="Rebake regione" name="pathfinding_rebake_navmesh_item"/>
 		</menu>
 		<menu label="Opzioni" name="Options">
 			<menu_item_check label="Mostra autorizzazioni avanzate" name="DebugPermissions"/>
@@ -159,6 +160,13 @@
 	<menu label="Aiuto" name="Help">
 		<menu_item_call label="Istruzioni..." name="How To"/>
 		<menu_item_call label="Aiuto di [SECOND_LIFE]" name="Second Life Help"/>
+		<menu_item_call label="Guida dell&apos;utente" name="User’s guide"/>
+		<menu_item_call label="Base di conoscenza" name="Knowledge Base"/>
+		<menu_item_call label="Wiki" name="Wiki"/>
+		<menu_item_call label="Forum della comunità" name="Community Forums"/>
+		<menu_item_call label="Portale assistenza" name="Support portal"/>
+		<menu_item_call label="[SECOND_LIFE] Notizie" name="Second Life News"/>
+		<menu_item_call label="[SECOND_LIFE] Blog" name="Second Life Blogs"/>
 		<menu_item_call label="Segnala abuso" name="Report Abuse"/>
 		<menu_item_call label="Segnala bug" name="Report Bug"/>
 		<menu_item_call label="Informazioni su [APP_NAME]" name="About Second Life"/>
@@ -336,9 +344,14 @@
 				<menu_item_call label="Alterna la geometria dei personaggi" name="Toggle Character Geometry"/>
 				<menu_item_check label="Consenti selezione avatar" name="Allow Select Avatar"/>
 			</menu>
+			<menu label="Velocità animazione" name="Animation Speed">
+				<menu_item_call label="Accelera tutte le animazioni del 10%" name="All Animations 10 Faster"/>
+				<menu_item_call label="Rallenta tutte le animazioni del 10%" name="All Animations 10 Slower"/>
+				<menu_item_call label="Ripristina la velocità di tutte le animazioni" name="Reset All Animation Speed"/>
+				<menu_item_check label="Animazioni lente" name="Slow Motion Animations"/>
+			</menu>
 			<menu_item_call label="Forza i parametri sui valori predefiniti" name="Force Params to Default"/>
 			<menu_item_check label="Informazioni sull&apos;animazione" name="Animation Info"/>
-			<menu_item_check label="Animazioni lente" name="Slow Motion Animations"/>
 			<menu_item_check label="Disabilita livello di dettaglio" name="Disable LOD"/>
 			<menu_item_check label="Mostra schemi collisione" name="Show Collision Skeleton"/>
 			<menu_item_check label="Mostra bersaglio" name="Display Agent Target"/>
diff --git a/indra/newview/skins/default/xui/it/notifications.xml b/indra/newview/skins/default/xui/it/notifications.xml
index d5fdde4e7de..8adbebb62ac 100644
--- a/indra/newview/skins/default/xui/it/notifications.xml
+++ b/indra/newview/skins/default/xui/it/notifications.xml
@@ -513,6 +513,24 @@ Visitare [_URL] per ulteriori informazioni?
 		</url>
 		<usetemplate ignoretext="Driver grafica obsoleto" name="okcancelignore" notext="No" yestext="Sì"/>
 	</notification>
+	<notification name="AMDOldDriver">
+		È probabile che ci sia un driver aggiornato per il processore grafico.  L&apos;aggiornamento dei driver della grafica può migliorare le prestazioni in maniera significativa.
+
+    Visitare [_URL] per cercare un aggiornamento del driver?
+		<url name="url">
+			http://support.amd.com/it/Pages/AMDSupportHub.aspx
+		</url>
+		<usetemplate ignoretext="Driver grafica obsoleto" name="okcancelignore" notext="No" yestext="Sì"/>
+	</notification>
+	<notification name="NVIDIAOldDriver">
+		È probabile che ci sia un driver aggiornato per il processore grafico.  L&apos;aggiornamento dei driver della grafica può migliorare le prestazioni in maniera significativa.
+
+    Visitare [_URL] per cercare un aggiornamento del driver?
+		<url name="url">
+			http://www.nvidia.it/Download/index.aspx?lang=it
+		</url>
+		<usetemplate ignoretext="Driver grafica obsoleto" name="okcancelignore" notext="No" yestext="Sì"/>
+	</notification>
 	<notification name="UnknownGPU">
 		Il tuo sistema utilizza una scheda grafica che [APP_NAME] non riconosce.
 Questo succede spesso con un nuovo hardware che non è stato ancora testato con [APP_NAME].  Probabilmente tutto andrà bene, ma devi riconfigurare le tue impostazioni grafiche.
@@ -1548,10 +1566,13 @@ Vuoi cancellare quell&apos;elemento?
 		Impossibile offrire l&apos;amicizia in questo momento. Riprova fra poco.
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
-	<notification name="BusyModeSet">
-		È stata impostata la modalità Non disponibile.
-La chat e gli IM verranno nascosti. Gli IM riceveranno la tua risposta di Non disponibile. Tutte le offerte di teleport verranno rifiutate. Tutte le offerte di Inventario andranno nel Cestino.
-		<usetemplate ignoretext="Cambio il mio stato sulla modalità Non disponibile" name="okignore" yestext="OK"/>
+	<notification name="DoNotDisturbModeSet">
+		Non disturbare è attivo.  Non riceverai la notifica delle comunicazioni in arrivo.
+
+- Gli altri residenti riceveranno la tua risposta Non disturbare (impostata in Preferenze &gt; Generali).
+- Le offerte di teleport verranno rifiutate.
+- Le chiamate voce verranno rifiutate.
+		<usetemplate ignoretext="Io cambio il mio stato alla modalità Non disturbare." name="okignore" yestext="OK"/>
 	</notification>
 	<notification name="JoinedTooManyGroupsMember">
 		Hai raggiunto il numero massimo di gruppi. Per favore abbandona almeno un gruppo prima di aderire a questo, oppure declina l&apos;offerta.
@@ -2039,6 +2060,10 @@ Trasferisci gli elementi nell&apos;inventario?
 		Vai al [http://secondlife.com/account/ Dashboard] per vedere la cronologia del tuo account?
 		<usetemplate ignoretext="Lancia il browser per vedere la cronologia del mio account" name="okcancelignore" notext="Annulla" yestext="Vai alla pagina"/>
 	</notification>
+	<notification name="ConfirmAddingChatParticipants">
+		Quando aggiungi una persona a una conversazione esistente, viene creata una nuova conversazione.  Tutti i partecipanti riceveranno notifiche per la nuova conversazione.
+		<usetemplate ignoretext="Conferma l&apos;aggiunta dei partecipanti alla chat" name="okcancelignore" notext="Annulla" yestext="Ok"/>
+	</notification>
 	<notification name="ConfirmQuit">
 		Confermi di voler uscire?
 		<usetemplate ignoretext="Conferma prima di uscire" name="okcancelignore" notext="Non uscire" yestext="Esci"/>
@@ -2113,14 +2138,14 @@ Vuoi sostituirlo con l&apos;oggetto selezionato?
 			<button ignore="Never Replace" name="No" text="Annulla"/>
 		</form>
 	</notification>
-	<notification label="Avviso di &apos;Occupato&apos;" name="BusyModePay">
-		Sei in modalità &apos;Occupato&apos;, ciò significa che non riceverai ciò che attendi per questo pagamento.
+	<notification label="Avviso modalità Non disturbare" name="DoNotDisturbModePay">
+		Hai attivato la modalità Non disturbare. Non riceverai alcun oggetto offerto in cambio di questo pagamento.
 
-Desideri abbandonare la modalità &apos;Occupato&apos; prima di completare questa transazione?
+Vuoi disattivare la modalità Non disturbare prima di completare questa transazione?
 		<form name="form">
-			<ignore name="ignore" save_option="true" text="Sto per pagare una persona o un oggetto mentro sono in modalià Non disponibile"/>
-			<button ignore="Always leave Busy Mode" name="Yes" text="OK"/>
-			<button ignore="Never leave Busy Mode" name="No" text="Abbandona"/>
+			<ignore name="ignore" text="Sto per pagare una persona o un oggetto mentre sono in modalità Non disturbare"/>
+			<button ignore="Lascia sempre la modalità Non disturbare" name="Yes" text="OK"/>
+			<button ignore="Non lasciare mai la modalità Non disturbare" name="No" text="Annulla"/>
 		</form>
 	</notification>
 	<notification name="ConfirmDeleteProtectedCategory">
@@ -2255,11 +2280,8 @@ Inseriscilo in una pagina web per dare ad altri un accesso facile a questa ubica
 	<notification name="GroupNotice">
 		Oggetto: [SUBJECT], Messaggio: [MESSAGE]
 	</notification>
-	<notification name="FriendOnline">
-		&lt;nolink&gt;[NAME]&lt;/nolink&gt; è online
-	</notification>
-	<notification name="FriendOffline">
-		&lt;nolink&gt;[NAME]&lt;/nolink&gt; è offline
+	<notification name="FriendOnlineOffline">
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; è [STATUS]
 	</notification>
 	<notification name="AddSelfFriend">
 		Anche se sei molto simpatico, non puoi aggiungere te stesso all&apos;elenco degli amici.
@@ -2487,13 +2509,6 @@ Qui non puoi volare.
 	<notification name="DynamicPathfindingDisabled">
 		Il pathfinding dinamico non è attivato in questa regione.  Gli oggetti scriptati che usano chiamate LSL di pathfinding potrebbero non funzionare come previsto in questa regione.
 	</notification>
-	<notification name="PathfindingRebakeNavmesh">
-		Se modifichi alcuni oggetti in questa regione, ciò potrebbe causare il comportamento errato di altri oggetti in movimento.  Per fare in modo che gli oggetti in movimento si comportino correttamente, fai clic sul pulsante &quot;Rebake regione&quot;.  Per maggiori informazioni, seleziona la guida
-		<url name="url">
-			http://wiki.secondlife.com/wiki/Pathfinding_Tools_in_the_Second_Life_Viewer
-		</url>
-		<usetemplate helptext="Guida" ignoretext="Se modifichi alcuni oggetti in questa regione, ciò potrebbe causare il comportamento errato di altri oggetti in movimento." name="okhelpignore" yestext="OK"/>
-	</notification>
 	<notification name="PathfindingCannotRebakeNavmesh">
 		Si è verificato un errore.  Potrebbe trattarsi di un problema di rete o del server, oppure potresti non avere le autorizzazioni necessarie per la costruzione.  A volte il problema viene risolto uscendo ed eseguendo nuovamente l&apos;accesso.
 		<usetemplate name="okbutton" yestext="OK"/>
@@ -2754,9 +2769,9 @@ OK?
 		</form>
 	</notification>
 	<notification name="ScriptQuestionCaution">
-		Attenzione: L&apos;oggetto &apos;&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;&apos; ha richiesto accesso completo al tuo account in Dollari Linden. Se consenti l&apos;accesso, potrà rimuovere fondi dal tuo account in qalunque momento e anche svuotare completamente l&apos;account, per un periodo illimitato e senza ulteriori avvisi.
+		Avviso: L&apos;oggetto &apos;&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;&apos; ha richiesto accesso completo al tuo account in Dollari Linden. Se consenti l&apos;accesso, potrà rimuovere fondi dal tuo account in qualunque momento e anche svuotare completamente l&apos;account, per un periodo illimitato e senza ulteriori avvisi.
   
-Raramente questo tipo di richiesta è legittima. Non consentire l&apos;accesso se non comprendi perfettamente il motivo per cui desidera accedere al tuo account.
+Non consentire l&apos;accesso se non comprendi perfettamente il motivo per cui desidera accedere al tuo account.
 		<form name="form">
 			<button name="Grant" text="Consenti accesso totale"/>
 			<button name="Deny" text="Nega"/>
@@ -3338,4 +3353,633 @@ Tentativo annullato.
 		Stai per cancellare [NUM_ITEMS] elementi.  Vuoi continuare?
 		<usetemplate ignoretext="Sei sicuro di volere eliminare più oggetti?" name="okcancelignore" notext="No" yestext="Sì"/>
 	</notification>
+	<notification name="AvatarFrozen">
+		[AV_FREEZER] ti ha congelato. Non ti puoi muovere o interagire con il mondo.
+	</notification>
+	<notification name="AvatarFrozenDuration">
+		[AV_FREEZER] ti ha congelato per [AV_FREEZE_TIME] secondi. Non ti puoi muovere o interagire con il mondo.
+	</notification>
+	<notification name="YouFrozeAvatar">
+		Avatar congelato.
+	</notification>
+	<notification name="AvatarHasUnFrozenYou">
+		[AV_FREEZER] ti ha scongelato.
+	</notification>
+	<notification name="AvatarUnFrozen">
+		Avatar scongelato.
+	</notification>
+	<notification name="AvatarFreezeFailure">
+		La congelazione non ha avuto successo perché non hai le autorizzazioni dell&apos;amministratore per quel lotto.
+	</notification>
+	<notification name="AvatarFreezeThaw">
+		Non sei più congelato, puoi continuare.
+	</notification>
+	<notification name="AvatarCantFreeze">
+		Non puoi congelare quell&apos;utente.
+	</notification>
+	<notification name="NowOwnObject">
+		Sei ora il proprietario dell&apos;oggetto [OBJECT_NAME]
+	</notification>
+	<notification name="CantRezOnLand">
+		Non puoi rezzare l&apos;oggetto a [OBJECT_POS] perché non è consentito dal proprietario del terreno.  Usa lo strumento terreno per visualizzare a chi appartiene il terreno.
+	</notification>
+	<notification name="RezFailTooManyRequests">
+		Oggetto non razzato perché ci sono troppe richieste.
+	</notification>
+	<notification name="SitFailCantMove">
+		Non puoi sederti perché al momento non puoi muoverti.
+	</notification>
+	<notification name="SitFailNotAllowedOnLand">
+		Non puoi sederti perché non ti è consentito entrare in quel terreno.
+	</notification>
+	<notification name="SitFailNotSameRegion">
+		Proba ad avvicinarti.  Non puoi sederti su un oggetto perché
+non è nella stessa regione in cui ti trovi.
+	</notification>
+	<notification name="NoNewObjectRegionFull">
+		Impossibile creare il nuovo oggetto. La regione è piena.
+	</notification>
+	<notification name="FailedToPlaceObject">
+		Il posizionamento dell&apos;oggetto nella posizione specificata non è riuscito.  Riprova.
+	</notification>
+	<notification name="NoOwnNoGardening">
+		Non puoi creare alberi ed erba su terreni che non sono di tua proprietà.
+	</notification>
+	<notification name="NoCopyPermsNoObject">
+		Copia non riuscita perché non hai l&apos;autorizzazione necessaria per copiare l&apos;oggetto &apos;[OBJ_NAME]&apos;.
+	</notification>
+	<notification name="NoTransPermsNoObject">
+		La copia non è riuscita perché &apos;[OBJ_NAME]&apos; non può essere trasferito a te.
+	</notification>
+	<notification name="AddToNavMeshNoCopy">
+		La copia non è riuscita perché &apos;[OBJ_NAME]&apos; contribuisce al navmesh.
+	</notification>
+	<notification name="DupeWithNoRootsSelected">
+		Duplicato senza oggetto principale selezionato.
+	</notification>
+	<notification name="CantDupeCuzRegionIsFull">
+		Impossibile duplicare gli oggetti perché la regione è piena.
+	</notification>
+	<notification name="CantDupeCuzParcelNotFound">
+		Impossibile duplicare gli oggetti - Impossibile trovare i lotti in cui si trovano.
+	</notification>
+	<notification name="CantCreateCuzParcelFull">
+		Impossibile creare l&apos;oggetto perché 
+il lotto è pieno.
+	</notification>
+	<notification name="RezAttemptFailed">
+		Tentativo di rezzare un oggetto non riuscito.
+	</notification>
+	<notification name="ToxicInvRezAttemptFailed">
+		Impossibile creare un oggetto che ha causato problemi in questa regione.
+	</notification>
+	<notification name="InvItemIsBlacklisted">
+		L&apos;oggetto dell&apos;inventario è stato aggiunto alla blacklist.
+	</notification>
+	<notification name="NoCanRezObjects">
+		Al momento non ti è consentito creare oggetti.
+	</notification>
+	<notification name="LandSearchBlocked">
+		Ricerca terreno bloccata.
+Hai eseguito troppe ricerche terreno in un breve tempo.
+Riprova tra un minuto.
+	</notification>
+	<notification name="NotEnoughResourcesToAttach">
+		Risorse di script non sufficienti per collegare l&apos;oggetto.
+	</notification>
+	<notification name="YouDiedAndGotTPHome">
+		Sei deceduto e sei stato teleportato alla tua posizione iniziale
+	</notification>
+	<notification name="EjectComingSoon">
+		Non sei più benvenuto qui e hai [EJECT_TIME] secondi per andartene.
+	</notification>
+	<notification name="NoEnterServerFull">
+		Non puoi entrare in questa regione perché 
+il server è pieno.
+	</notification>
+	<notification name="SaveBackToInvDisabled">
+		Opzione Salva nell&apos;inventario disattivata
+	</notification>
+	<notification name="NoExistNoSaveToContents">
+		Impossibile salvare &apos;[OBJ_NAME]&apos; nei contenuti dell&apos;oggetto perché l&apos;oggetto da cui è stato razzato non esiste più.
+	</notification>
+	<notification name="NoModNoSaveToContents">
+		Impossibile salvare &apos;[OBJ_NAME]&apos; nei contenuti dell&apos;oggetto perché non hai l&apos;autorizzazione necessaria per modificare l&apos;oggetto &apos;[DEST_NAME]&apos;.
+	</notification>
+	<notification name="NoSaveBackToInvDisabled">
+		Impossibile riportare &apos;[OBJ_NAME]&apos; nell&apos;inventario -- questa operazione è stata disattivata.
+	</notification>
+	<notification name="NoCopyNoSelCopy">
+		Non puoi copiare l&apos;elemento selezionato perché non hai l&apos;autorizzazione necessaria per copiare l&apos;oggetto &apos;[OBJ_NAME]&apos;.
+	</notification>
+	<notification name="NoTransNoSelCopy">
+		Non puoi copiare la selezione perché l&apos;oggetto &apos;[OBJ_NAME]&apos; non può essere trasferito.
+	</notification>
+	<notification name="NoTransNoCopy">
+		Non puoi copiare la selezione perché l&apos;oggetto &apos;[OBJ_NAME]&apos; non può essere trasferito.
+	</notification>
+	<notification name="NoPermsNoRemoval">
+		La rimozione dell&apos;oggetto &apos;[OBJ_NAME]&apos; dal simulatore non è consentita dal sistema delle autorizzazioni.
+	</notification>
+	<notification name="NoModNoSaveSelection">
+		Non puoi salvare l&apos;elemento selezionato perché non hai l&apos;autorizzazione necessaria per modificare l&apos;oggetto &apos;[OBJ_NAME]&apos;.
+	</notification>
+	<notification name="NoCopyNoSaveSelection">
+		Non puoi salvare la selezione perché l&apos;oggetto &apos;[OBJ_NAME]&apos; non può essere copiato.
+	</notification>
+	<notification name="NoModNoTaking">
+		Non puoi prendere l&apos;elemento selezionato perché non hai l&apos;autorizzazione necessaria per modificare l&apos;oggetto &apos;[OBJ_NAME]&apos;.
+	</notification>
+	<notification name="RezDestInternalError">
+		Errore interno: Tipo di destinazione sconosciuto.
+	</notification>
+	<notification name="DeleteFailObjNotFound">
+		Cancellazione non riuscita perché l&apos;oggetto non è stato trovato.
+	</notification>
+	<notification name="SorryCantEjectUser">
+		Non puoi espellere quell&apos;utente.
+	</notification>
+	<notification name="RegionSezNotAHome">
+		Questa regione non ti consente di impostare qui la tua posizione iniziale.
+	</notification>
+	<notification name="HomeLocationLimits">
+		Puoi impostare la tua posizione iniziale nel tuo terreno o in un Infohub sulla terraferma.
+	</notification>
+	<notification name="HomePositionSet">
+		Posizione di base impostata.
+	</notification>
+	<notification name="AvatarEjected">
+		Avatar espulso.
+	</notification>
+	<notification name="AvatarEjectFailed">
+		L&apos;espulsione non ha avuto successo perché non hai l&apos;autorizzazione dell&apos;amministratore del lotto.
+	</notification>
+	<notification name="CantMoveObjectParcelFull">
+		Impossibile muovere l&apos;oggetto &apos;[OBJECT_NAME]&apos; a
+[OBJ_POSITION] nella regione [REGION_NAME] perché il lotto è pieno.
+	</notification>
+	<notification name="CantMoveObjectParcelPerms">
+		Impossibile muovere l&apos;oggetto &apos;[OBJECT_NAME]&apos; a
+[OBJ_POSITION] nella regione [REGION_NAME] perché i tuoi oggetti non sono ammessi su questo lotto.
+	</notification>
+	<notification name="CantMoveObjectParcelResources">
+		Impossibile muovere l&apos;oggetto &apos;[OBJECT_NAME]&apos; a
+[OBJ_POSITION] nella regione [REGION_NAME] perché non ci sono risorse sufficienti per l&apos;oggetto su questo lotto.
+	</notification>
+	<notification name="CantMoveObjectRegionVersion">
+		Impossibile muovere l&apos;oggetto &apos;[OBJECT_NAME]&apos; a
+[OBJ_POSITION] nella regione [REGION_NAME] perché nell&apos;altra regione è in esecuzione una versione precedente che non consente la ricezione di questo oggetto attraverso i confini tra regioni.
+	</notification>
+	<notification name="CantMoveObjectNavMesh">
+		Impossibile muovere l&apos;oggetto &apos;[OBJECT_NAME]&apos; a
+[OBJ_POSITION] nella regione [REGION_NAME] perché non puoi modificare il navmesh attraverso il confine tra regioni.
+	</notification>
+	<notification name="CantMoveObjectWTF">
+		Impossibile muovere l&apos;oggetto &apos;[OBJECT_NAME]&apos; a
+[OBJ_POSITION] nella regione [REGION_NAME] per un motivo sconosciuto. ([FAILURE_TYPE])
+	</notification>
+	<notification name="NoPermModifyObject">
+		Non hai l&apos;autorizzazione necessaria per modificare questa immagine
+	</notification>
+	<notification name="CantEnablePhysObjContributesToNav">
+		Non è possibile attivare la fisica per un oggetto che contribuisce al navmesh.
+	</notification>
+	<notification name="CantEnablePhysKeyframedObj">
+		Impossibile attivare la fisica per oggetti keyframe.
+	</notification>
+	<notification name="CantEnablePhysNotEnoughLandResources">
+		Impossibile attivare la fisica per l&apos;oggetto -- risorse di terreno insufficienti.
+	</notification>
+	<notification name="CantEnablePhysCostTooGreat">
+		Impossibile attivare la fisica per un oggetto con un costo delle risorse della fisica maggiore di [MAX_OBJECTS]
+	</notification>
+	<notification name="PhantomWithConcavePiece">
+		Questo oggetto non può avere un pezzo concavo perché è un oggetto fantasma e contribuisce al navmesh.
+	</notification>
+	<notification name="UnableAddItem">
+		Aggiunta elemento non riuscita
+	</notification>
+	<notification name="UnableEditItem">
+		Impossibile modificare questo elemento.
+	</notification>
+	<notification name="NoPermToEdit">
+		Non sei autorizzato a modificare questo elemento.
+	</notification>
+	<notification name="NoPermToCopyInventory">
+		Non ti è permesso copiare quell&apos;inventario.
+	</notification>
+	<notification name="CantSaveItemDoesntExist">
+		Impossibile salvare i contenuti dell&apos;oggetto: L&apos;elemento non esiste più.
+	</notification>
+	<notification name="CantSaveItemAlreadyExists">
+		Impossibile salvare i contenuti dell&apos;oggetto: Nell&apos;inventario esiste già un elemento con quel nome.
+	</notification>
+	<notification name="CantSaveModifyAttachment">
+		Impossibile salvare i contenuti dell&apos;oggetto: Verrebbero modificate le autorizzazioni per il collegamento.
+	</notification>
+	<notification name="TooManyScripts">
+		Troppi script.
+	</notification>
+	<notification name="UnableAddScript">
+		Aggiunta script non riuscita.
+	</notification>
+	<notification name="AssetServerTimeoutObjReturn">
+		Il server degli asset non ha inviato una risposta entro il tempo massimo.  Oggetto restituito al sim.
+	</notification>
+	<notification name="RegionDisablePhysicsShapes">
+		In questa regione non sono attivate le forme per la fisica.
+	</notification>
+	<notification name="NoModNavmeshAcrossRegions">
+		Non puoi modificare il navmesh attraverso il confine tra le regioni.
+	</notification>
+	<notification name="NoSetPhysicsPropertiesOnObjectType">
+		Impossibile impostare le proprietà della fisica per quel tipo di oggetto.
+	</notification>
+	<notification name="NoSetRootPrimWithNoShape">
+		impossibile impostare un prim principale senza forma.
+	</notification>
+	<notification name="NoRegionSupportPhysMats">
+		In questa regione non sono attivati i materiali per la fisica.
+	</notification>
+	<notification name="OnlyRootPrimPhysMats">
+		I materiali per la fisica possono essere modificati solo i prim principali.
+	</notification>
+	<notification name="NoSupportCharacterPhysMats">
+		L&apos;impostazione dei materiali per la fisica nei caratteri non è ancora supportata.
+	</notification>
+	<notification name="InvalidPhysMatProperty">
+		Almeno una delle proprietà dei materiali per la fisica non è valida.
+	</notification>
+	<notification name="NoPermsAlterStitchingMeshObj">
+		Non puoi alterare il tipo di punto di un oggetto con reticolo
+	</notification>
+	<notification name="NoPermsAlterShapeMeshObj">
+		Non puoi alterare la forma di un oggetto con reticolo
+	</notification>
+	<notification name="FullRegionCantEnter">
+		Non puoi entrare in questa regione perché è piena.
+	</notification>
+	<notification name="LinkFailedOwnersDiffer">
+		Collegamento non riuscito -- i proprietari non corrispondono
+	</notification>
+	<notification name="LinkFailedNoModNavmeshAcrossRegions">
+		Collegamento non riuscito -- non puoi modificare il navmesh attraverso il confine tra le regioni.
+	</notification>
+	<notification name="LinkFailedNoPermToEdit">
+		Collegamento non riuscito perché non hai le autorizzazioni necessarie per la modifica.
+	</notification>
+	<notification name="LinkFailedTooManyPrims">
+		Collegamento non riuscito -- troppe primitive.
+	</notification>
+	<notification name="LinkFailedCantLinkNoCopyNoTrans">
+		Collegamento non riuscito -- impossibile collegare elementi senza copia ed elementi senza trasferimento
+	</notification>
+	<notification name="LinkFailedNothingLinkable">
+		Collegamento non riuscito -- niente di collegabile.
+	</notification>
+	<notification name="LinkFailedTooManyPathfindingChars">
+		Collegamento non riuscito -- troppi personaggi con pathfinding
+	</notification>
+	<notification name="LinkFailedInsufficientLand">
+		Collegamento non riuscito -- risorse terreno non sufficienti
+	</notification>
+	<notification name="LinkFailedTooMuchPhysics">
+		L&apos;oggetto usa troppe risorse per la fisica -- le sue dinamiche sono state disattivate.
+	</notification>
+	<notification name="TeleportedHomeByObjectOnParcel">
+		Sei stato teleportato nella posizione iniziale dall&apos;oggetto &apos;[OBJECT_NAME]&apos; del lotto &apos;[PARCEL_NAME]&apos;
+	</notification>
+	<notification name="TeleportedHomeByObject">
+		Sei stato teleportato nella tua posizione iniziale dall&apos;oggetto &apos;[OBJECT_NAME]&apos;
+	</notification>
+	<notification name="TeleportedByAttachment">
+		Sei stato teletrasportato da un elemento collegato a [ITEM_ID]
+	</notification>
+	<notification name="TeleportedByObjectOnParcel">
+		Sei stato teleportato dall&apos;oggetto &apos;[OBJECT_NAME]&apos; sul lotto &apos;[PARCEL_NAME]&apos;
+	</notification>
+	<notification name="TeleportedByObjectOwnedBy">
+		Sei stato teleportato dall&apos;oggetto &apos;[OBJECT_NAME]&apos; di proprietà di [OWNER_ID]
+	</notification>
+	<notification name="TeleportedByObjectUnknownUser">
+		Sei stato teleportato dall&apos;oggetto &apos;[OBJECT_NAME]&apos; di proprietà di un utente sconosciuto.
+	</notification>
+	<notification name="CantCreateObjectRegionFull">
+		Impossibile creare l&apos;oggetto richiesto. La regione è piena.
+	</notification>
+	<notification name="CantAttackMultipleObjOneSpot">
+		Non puoi collegare più oggetti a un singolo luogo.
+	</notification>
+	<notification name="CantCreateMultipleObjAtLoc">
+		Non puoi creare oggetti multipli in questa posizione.
+	</notification>
+	<notification name="UnableToCreateObjTimeOut">
+		Impossibile creare l&apos;oggetto richiesto. L&apos;oggetto non è presente nel database.
+	</notification>
+	<notification name="UnableToCreateObjUnknown">
+		Impossibile creare l&apos;oggetto richiesto. Tempo scaduto per la richiesta. Riprova.
+	</notification>
+	<notification name="UnableToCreateObjMissingFromDB">
+		Impossibile creare l&apos;oggetto richiesto. Riprova.
+	</notification>
+	<notification name="RezFailureTookTooLong">
+		Rezzing non riuscito. Il caricamento dell&apos;oggetto richiesto è durato troppo a lungo.
+	</notification>
+	<notification name="FailedToPlaceObjAtLoc">
+		Il posizionamento dell&apos;oggetto nella posizione specificata non è riuscito.  Riprova.
+	</notification>
+	<notification name="CantCreatePlantsOnLand">
+		Non puoi creare piante su questo terreno.
+	</notification>
+	<notification name="CantRestoreObjectNoWorldPos">
+		Impossibile ripristinare l&apos;oggetto. Nessuna posizione trovata nel mondo virtuale.
+	</notification>
+	<notification name="CantRezObjectInvalidMeshData">
+		Impossibile rezzare l&apos;oggetto perché i dati del reticolo non sono validi.
+	</notification>
+	<notification name="CantRezObjectTooManyScripts">
+		Impossibile rezzare l&apos;oggetto perché ci sono già troppi script in questa regione.
+	</notification>
+	<notification name="CantCreateObjectNoAccess">
+		Le tue autorizzazioni di accesso non ti permettono di creare oggetti in quella posizione.
+	</notification>
+	<notification name="CantCreateObject">
+		Al momento non ti è consentito creare oggetti.
+	</notification>
+	<notification name="InvalidObjectParams">
+		Parametri oggetto non validi
+	</notification>
+	<notification name="CantDuplicateObjectNoAcess">
+		Le tue autorizzazioni di accesso non ti permettono di duplicare oggetti in questa posizione.
+	</notification>
+	<notification name="CantChangeShape">
+		Non ti è consentito modificare questa forma.
+	</notification>
+	<notification name="NoAccessToClaimObjects">
+		Le tue autorizzazioni di accesso non ti permettono di richiedere oggetti in questa posizione.
+	</notification>
+	<notification name="DeedFailedNoPermToDeedForGroup">
+		Assegnazione non riuscita perché non hai l&apos;autorizzazione necessaria per assegnare oggetti per il tuo gruppo.
+	</notification>
+	<notification name="NoPrivsToBuyObject">
+		Le tue autorizzazioni di accesso non ti permettono di acquistare oggetti in questa posizione.
+	</notification>
+	<notification name="CantAttachObjectAvatarSittingOnIt">
+		Impossibile collegare l&apos;oggetto perché un avatar è seduto sopra.
+	</notification>
+	<notification name="WhyAreYouTryingToWearShrubbery">
+		Alberi ed erba non possono essere indossati come collegati.
+	</notification>
+	<notification name="CantAttachGroupOwnedObjs">
+		Impossibile collegare oggetti di proprietà di un gruppo.
+	</notification>
+	<notification name="CantAttachObjectsNotOwned">
+		Non puoi collegare oggetti che non sono di tua proprietà.
+	</notification>
+	<notification name="CantAttachNavmeshObjects">
+		Impossibile collegare oggetti che contribuiscono a navmesh.
+	</notification>
+	<notification name="CantAttachObjectNoMovePermissions">
+		L&apos;oggetto non può essere collegato perché non sei autorizzato a muoverlo.
+	</notification>
+	<notification name="CantAttachNotEnoughScriptResources">
+		Risorse di script non sufficienti per collegare l&apos;oggetto.
+	</notification>
+	<notification name="CantDropItemTrialUser">
+		Non puoi lasciare oggetti qui, prova la zona Prova gratuita.
+	</notification>
+	<notification name="CantDropMeshAttachment">
+		Non puoi lasciare elementi collegati con reticolo. Separa nell&apos;inventario e quindi rezza nel mondo virtuale.
+	</notification>
+	<notification name="CantDropAttachmentNoPermission">
+		Impossibile rimuovere l&apos;elemento collegato: non hai l&apos;autorizzazione necessaria per rimuoverlo qui.
+	</notification>
+	<notification name="CantDropAttachmentInsufficientLandResources">
+		Impossibile rimuovere l&apos;elemento collegato: risorse terreno disponibili non sufficienti.
+	</notification>
+	<notification name="CantDropAttachmentInsufficientResources">
+		Impossibile rimuovere gli elementi collegati: risorse disponibili non sufficienti.
+	</notification>
+	<notification name="CantDropObjectFullParcel">
+		Non puoi lasciare l&apos;oggetto qui.  Il lotto è pieno.
+	</notification>
+	<notification name="CantTouchObjectBannedFromParcel">
+		Non puoi toccare/afferrare questo oggetto perché sei stato bandito dal lotto di terreno.
+	</notification>
+	<notification name="PlzNarrowDeleteParams">
+		Limita i parametri per la cancellazione.
+	</notification>
+	<notification name="UnableToUploadAsset">
+		Impossibile caricare l&apos;asset.
+	</notification>
+	<notification name="CantTeleportCouldNotFindUser">
+		Utente da teleportare alla posizione iniziale non trovato
+	</notification>
+	<notification name="GodlikeRequestFailed">
+		richiesta superpoteri non riuscita
+	</notification>
+	<notification name="GenericRequestFailed">
+		richiesta generica non riuscita
+	</notification>
+	<notification name="CantUploadPostcard">
+		Impossibile caricare la cartolina.  Riprova più tardi.
+	</notification>
+	<notification name="CantFetchInventoryForGroupNotice">
+		I dettagli dell&apos;inventario per la notifica di gruppo non sono stati trovati.
+	</notification>
+	<notification name="CantSendGroupNoticeNotPermitted">
+		Impossibile inviare la notifica di gruppo -- non consentita.
+	</notification>
+	<notification name="CantSendGroupNoticeCantConstructInventory">
+		Impossibile inviare la notifica di gruppo -- impossibile costruire l&apos;inventario.
+	</notification>
+	<notification name="CantParceInventoryInNotice">
+		Impossibile analizzare l&apos;inventario nella notifica.
+	</notification>
+	<notification name="TerrainUploadFailed">
+		Caricamento terreno non riuscito.
+	</notification>
+	<notification name="TerrainFileWritten">
+		File terreno scritto.
+	</notification>
+	<notification name="TerrainFileWrittenStartingDownload">
+		File terreno generato, avvio del download...
+	</notification>
+	<notification name="TerrainBaked">
+		Baking terreno completata.
+	</notification>
+	<notification name="TenObjectsDisabledPlzRefresh">
+		Sono stati disattivati solo i primi 10 oggetti. Se necessario, aggiorna e seleziona nuovamente.
+	</notification>
+	<notification name="UpdateViewerBuyParcel">
+		Devi aggiornare il Viewer per poter acquistare questo lotto.
+	</notification>
+	<notification name="CantBuyParcelNotForSale">
+		Impossibile acquistare, questo lotto non è in vendita.
+	</notification>
+	<notification name="CantBuySalePriceOrLandAreaChanged">
+		Impossibile acquistare. Il prezzo o l&apos;area del terreno sono stati cambiati.
+	</notification>
+	<notification name="CantBuyParcelNotAuthorized">
+		Non sei l&apos;acquirente autorizzato di questo lotto.
+	</notification>
+	<notification name="CantBuyParcelAwaitingPurchaseAuth">
+		Non puoi acquistare questo lotto perché è in attesa di autorizzazione all&apos;acquisto
+	</notification>
+	<notification name="CantBuildOverflowParcel">
+		Non puoi costruire oggetti qui perché si supererebbe il limite per il lotto.
+	</notification>
+	<notification name="SelectedMultipleOwnedLand">
+		hai selezionato terreni con proprietari diversi. Seleziona un&apos;area più piccola e riprova.
+	</notification>
+	<notification name="CantJoinTooFewLeasedParcels">
+		Non sono stati selezionati abbastanza lotti affittati da collegare.
+	</notification>
+	<notification name="CantDivideLandMultipleParcelsSelected">
+		Terreno non divisibile.\nHai selezionato più di un lotto.\nProva a selezionare una quantità di terreno più piccola.
+	</notification>
+	<notification name="CantDivideLandCantFindParcel">
+		impossibile suddividere il terreno.\nimpossibile trovare il lotto.\nInvia una segnalazione con Aiuto -&gt; Segnala bug...
+	</notification>
+	<notification name="CantDivideLandWholeParcelSelected">
+		Impossibile suddividere il terreno. È stato selezionato l&apos;intero lotto.\nProva a selezionare un pezzo di terreno più piccolo.
+	</notification>
+	<notification name="LandHasBeenDivided">
+		Il terreno è stato diviso.
+	</notification>
+	<notification name="PassPurchased">
+		Hai acquistato un pass.
+	</notification>
+	<notification name="RegionDisallowsClassifieds">
+		Nella regione non sono permessi gli annunci pubblicitari.
+	</notification>
+	<notification name="LandPassExpireSoon">
+		Il tuo pass per questo terreno è quasi scaduto.
+	</notification>
+	<notification name="CantSitNoSuitableSurface">
+		Nessuna superficie adatta a sedersi, prova un altro luogo.
+	</notification>
+	<notification name="CantSitNoRoom">
+		Non c&apos;è posto per sedersi, prova un altro luogo.
+	</notification>
+	<notification name="ClaimObjectFailedNoPermission">
+		La richiesta dell&apos;oggetto non ha avuto successo perché non hai l&apos;autorizzazione necessaria.
+	</notification>
+	<notification name="ClaimObjectFailedNoMoney">
+		La richiesta dell&apos;oggetto non ha avuto successo perché non hai L$ sufficienti.
+	</notification>
+	<notification name="CantDeedGroupLand">
+		Non puoi assegnare terreno di proprietà di un gruppo.
+	</notification>
+	<notification name="BuyObjectFailedNoMoney">
+		L&apos;acquisto dell&apos;oggetto non ha avuto successo perché non hai L$ sufficienti.
+	</notification>
+	<notification name="BuyInventoryFailedNoMoney">
+		L&apos;acquisto dell&apos;inventario non ha avuto successo perché non hai L$ sufficienti.
+	</notification>
+	<notification name="BuyPassFailedNoMoney">
+		Non hai abbastanza L$ per acquistare un pass per questo terreno.
+	</notification>
+	<notification name="CantBuyPassTryAgain">
+		Al momento non puoi acquistare un pass.  Riprova più tardi.
+	</notification>
+	<notification name="CantCreateObjectParcelFull">
+		Impossibile creare l&apos;oggetto perché il lotto è pieno.
+	</notification>
+	<notification name="FailedPlacingObject">
+		Il posizionamento dell&apos;oggetto nella posizione specificata non è riuscito.  Riprova.
+	</notification>
+	<notification name="CantCreateLandmarkForEvent">
+		Impossibile creare il punto di riferimento per l&apos;evento.
+	</notification>
+	<notification name="GodBeatsFreeze">
+		I tuoi superpoteri hanno interrotto la congelazione.
+	</notification>
+	<notification name="SpecialPowersRequestFailedLogged">
+		Richiesta di poteri speciali non riuscita. La richiesta è stata registrata.
+	</notification>
+	<notification name="ExpireExplanation">
+		Al momento il sistema non è in grado di elaborare la tua richiesta. Tempo scaduto per la richiesta.
+	</notification>
+	<notification name="DieExplanation">
+		Il sistema non è in grado di elaborare la tua richiesta.
+	</notification>
+	<notification name="AddPrimitiveFailure">
+		Denaro insufficiente per creare una primitiva.
+	</notification>
+	<notification name="RezObjectFailure">
+		Denaro insufficiente per creare un oggetto.
+	</notification>
+	<notification name="ResetHomePositionNotLegal">
+		Posizione iniziale ripristinata perché non era valida.
+	</notification>
+	<notification name="CantInviteRegionFull">
+		Al momento non puoi invitare nessuno alla tua posizione perché la regione è piena. Riprova più tardi.
+	</notification>
+	<notification name="CantSetHomeAtRegion">
+		Questa regione non ti consente di impostare qui la tua posizione iniziale.
+	</notification>
+	<notification name="ListValidHomeLocations">
+		Puoi impostare la tua posizione iniziale nel tuo terreno o in un Infohub sulla terraferma.
+	</notification>
+	<notification name="SetHomePosition">
+		Posizione di base impostata.
+	</notification>
+	<notification name="CantDerezInventoryError">
+		Impossibile derazzare l&apos;oggetto a causa di un errore nell&apos;inventario.
+	</notification>
+	<notification name="CantCreateRequestedInv">
+		Impossibile creare l&apos;inventario richiesto.
+	</notification>
+	<notification name="CantCreateRequestedInvFolder">
+		Impossibile creare la cartella dell&apos;inventario richiesta.
+	</notification>
+	<notification name="CantCreateInventory">
+		Impossibile creare quell&apos;inventario.
+	</notification>
+	<notification name="CantCreateLandmark">
+		Impossibile creare il punto di riferimento.
+	</notification>
+	<notification name="CantCreateOutfit">
+		Il vestiario non può essere creato in questo momento. Riprova tra un minuto.
+	</notification>
+	<notification name="InventoryNotForSale">
+		L&apos;inventario non è in vendita.
+	</notification>
+	<notification name="CantFindInvItem">
+		Impossibile trovare l&apos;elemento nell&apos;inventario.
+	</notification>
+	<notification name="CantFindObject">
+		Impossibile trovare l&apos;oggetto.
+	</notification>
+	<notification name="CantTransfterMoneyRegionDisabled">
+		Il trasferimento di denaro agli oggetti è attualmente disattivato in questa regione.
+	</notification>
+	<notification name="CantPayNoAgent">
+		Non si capisce chi deve essere pagato.
+	</notification>
+	<notification name="CantDonateToPublicObjects">
+		Non puoi dare L$ a oggetti pubblici.
+	</notification>
+	<notification name="InventoryCreationInWorldObjectFailed">
+		Creazione inventario non riuscito per un oggetto nel mondo virtuale.
+	</notification>
+	<notification name="UserBalanceOrLandUsageError">
+		Un errore interno ha impedito l&apos;aggiornamento del Viewer.  Il saldo in L$ o i lotti posseduti mostrati nel Viewer potrebbero non corrispondere ai valori correnti sui server.
+	</notification>
+	<notification name="LargePrimAgentIntersect">
+		Non puoi creare prim grandi che intersecano altri giocatori.  Riprova quando gli altri giocatori si sono spostati.
+	</notification>
+	<notification name="PreferenceChatClearLog">
+		Verranno cancellati i registri delle conversazioni precedenti e tutti gli eventuali backup di quel file.
+		<usetemplate ignoretext="Conferma prima di cancellare il registro delle conversazioni precedenti." name="okcancelignore" notext="Annulla" yestext="OK"/>
+	</notification>
+	<notification name="PreferenceChatDeleteTranscripts">
+		Verranno cancellate le trascrizioni di tutte le conversazioni precedenti. L&apos;elenco delle conversazioni passate non cambierà. Tutti i file con i suffissi .txt e txt.backup nella cartella [FOLDER] verranno cancellati.
+		<usetemplate ignoretext="Conferma prima di cancellare le trascrizioni." name="okcancelignore" notext="Annulla" yestext="OK"/>
+	</notification>
+	<notification name="PreferenceChatPathChanged">
+		Impossibile spostare i file. Il percorso precedente è stato ripristinato.
+		<usetemplate ignoretext="Impossibile spostare i file. Il percorso precedente è stato ripristinato." name="okignore" yestext="OK"/>
+	</notification>
 </notifications>
diff --git a/indra/newview/skins/default/xui/it/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/it/panel_avatar_list_item.xml
index ede19b9e5ac..cfceb5b9822 100644
--- a/indra/newview/skins/default/xui/it/panel_avatar_list_item.xml
+++ b/indra/newview/skins/default/xui/it/panel_avatar_list_item.xml
@@ -26,5 +26,6 @@
 	<icon name="permission_edit_mine_icon" tool_tip="Questo amico può modificare, cancellare o prendere i tuoi oggetti"/>
 	<icon name="permission_map_icon" tool_tip="Questo amico può identificarti sulla mappa"/>
 	<icon name="permission_online_icon" tool_tip="Questo amico può vedere se sei online"/>
+	<button name="info_btn" tool_tip="Maggiori informazioni"/>
 	<button name="profile_btn" tool_tip="Vedi profilo"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/it/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/it/panel_block_list_sidetray.xml
index 610f561a65a..7ca2d3b57b1 100644
--- a/indra/newview/skins/default/xui/it/panel_block_list_sidetray.xml
+++ b/indra/newview/skins/default/xui/it/panel_block_list_sidetray.xml
@@ -1,10 +1,11 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="block_list_panel">
-	<text name="title_text">
-		Blocca lista
-	</text>
-	<scroll_list name="blocked" tool_tip="Lista degli attuali residenti bloccati"/>
-	<button label="Blocca il residente..." label_selected="Blocca il residente..." name="Block resident..." tool_tip="Scegli un residente da bloccare"/>
-	<button label="Blocca l&apos;oggetto per nome..." label_selected="Blocca l&apos;oggetto per nome..." name="Block object by name..."/>
-	<button label="Sblocca" label_selected="Sblocca" name="Unblock" tool_tip="Rimuovi un residente o un oggetto dalla lista bloccati"/>
+	<panel label="bottom_panel" name="blocked_buttons_panel">
+		<filter_editor label="Filtro" name="blocked_filter_input"/>
+		<menu_button name="blocked_gear_btn" tool_tip="Azioni sulla persona o oggetto selezionato"/>
+		<menu_button name="view_btn" tool_tip="Opzioni Ordina"/>
+		<menu_button name="plus_btn" tool_tip="Seleziona un residente o un oggetto da bloccare"/>
+		<button name="unblock_btn" tool_tip="Rimuovi un residente o un oggetto dalla lista bloccati"/>
+	</panel>
+	<block_list name="blocked" tool_tip="Lista degli attuali residenti bloccati"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/it/panel_conversation_list_item.xml b/indra/newview/skins/default/xui/it/panel_conversation_list_item.xml
new file mode 100644
index 00000000000..ca6b65300a0
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_conversation_list_item.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="conversation_list_item">
+	<layout_stack name="conversation_item_stack">
+		<layout_panel name="conversation_title_panel">
+			<text name="conversation_title" value="(caricamento in corso)"/>
+		</layout_panel>
+	</layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_conversation_log_list_item.xml b/indra/newview/skins/default/xui/it/panel_conversation_log_list_item.xml
new file mode 100644
index 00000000000..624eaa639c2
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_conversation_log_list_item.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="conversation_log_list_item">
+	<icon name="voice_session_icon" tool_tip="La conversazione includeva la voce"/>
+	<icon name="unread_ims_icon" tool_tip="Sono arrivati dei messaggi mentre eri via"/>
+	<button name="delete_btn" tool_tip="Elimina questo elemento"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_group_list_item.xml b/indra/newview/skins/default/xui/it/panel_group_list_item.xml
index 7cdc4c7ff64..72e644008c9 100644
--- a/indra/newview/skins/default/xui/it/panel_group_list_item.xml
+++ b/indra/newview/skins/default/xui/it/panel_group_list_item.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="group_list_item">
 	<text name="group_name" value="Sconosciuto"/>
+	<button name="info_btn" tool_tip="Maggiori informazioni"/>
 	<button name="profile_btn" tool_tip="Vedi profilo"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/it/panel_people.xml b/indra/newview/skins/default/xui/it/panel_people.xml
index f903ae6e2c0..e1468db76ea 100644
--- a/indra/newview/skins/default/xui/it/panel_people.xml
+++ b/indra/newview/skins/default/xui/it/panel_people.xml
@@ -14,81 +14,53 @@ Stai cercando persone da frequentare? Prova la [secondlife:///app/worldmap Mappa
 	<string name="no_filtered_friends_msg">
 		Non riesci a trovare quello che cerchi? Prova [secondlife:///app/search/people/[SEARCH_TERM] Cerca].
 	</string>
-	<string name="people_filter_label" value="Filtro persone"/>
-	<string name="groups_filter_label" value="Filtro gruppi"/>
 	<string name="no_filtered_groups_msg" value="Non riesci a trovare quello che cerchi? Prova [secondlife:///app/search/groups/[SEARCH_TERM] Cerca]."/>
 	<string name="no_groups_msg" value="Stai cercando gruppi di cui far parte? Prova [secondlife:///app/search/groups Cerca]."/>
 	<string name="MiniMapToolTipMsg" value="[REGION](Fai doppio clic per aprire la Mappa, premi il tasto Maiusc e trascina per la panoramica)"/>
 	<string name="AltMiniMapToolTipMsg" value="[REGION](Fai doppio clic per teleportarti, premi il tasto Maiusc e trascina per la panoramica)"/>
-	<filter_editor label="Filtro" name="filter_input"/>
 	<tab_container name="tabs">
 		<panel label="NELLE VICINANZE" name="nearby_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<menu_button name="nearby_view_sort_btn" tool_tip="Opzioni"/>
-				<button name="add_friend_btn" tool_tip="Aggiungi il residente selezionato alla tua lista degli amici"/>
+			<panel label="bottom_panel" name="nearby_buttons_panel">
+				<filter_editor label="Filtro persone" name="nearby_filter_input"/>
+				<button name="gear_btn" tool_tip="Azioni per la persona selezionata:"/>
+				<menu_button name="nearby_view_btn" tool_tip="Opzioni Mostra/Ordina"/>
+				<button name="add_friend_btn" tool_tip="Offri amicizia a un residente"/>
+				<dnd_button name="nearby_del_btn" tool_tip="Rimuovi la persona selezionata dagli amici"/>
 			</panel>
 		</panel>
-		<panel label="I MIEI AMICI" name="friends_panel">
+		<panel label="AMICI" name="friends_panel">
+			<panel label="bottom_panel" name="friends_buttons_panel">
+				<filter_editor label="Filtro persone" name="friends_filter_input"/>
+				<button name="gear_btn" tool_tip="Azioni per la persona selezionata:"/>
+				<menu_button name="friends_view_btn" tool_tip="Opzioni Mostra/Ordina"/>
+				<button name="friends_add_btn" tool_tip="Offri amicizia a un residente"/>
+				<dnd_button name="friends_del_btn" tool_tip="Rimuovi la persona selezionata dagli amici"/>
+			</panel>
 			<accordion name="friends_accordion">
 				<accordion_tab name="tab_online" title="Online"/>
 				<accordion_tab name="tab_all" title="Tutto"/>
 			</accordion>
-			<panel label="bottom_panel" name="bottom_panel">
-				<layout_stack name="bottom_panel">
-					<layout_panel name="options_gear_btn_panel">
-						<menu_button name="friends_viewsort_btn" tool_tip="Mostra ulteriori opzioni"/>
-					</layout_panel>
-					<layout_panel name="add_btn_panel">
-						<button name="add_btn" tool_tip="Offri amicizia a un residente"/>
-					</layout_panel>
-					<layout_panel name="trash_btn_panel">
-						<dnd_button name="del_btn" tool_tip="Rimuovi la persona selezionata dalla lista degli amici"/>
-					</layout_panel>
-				</layout_stack>
-			</panel>
 		</panel>
-		<panel label="I MIEI GRUPPI" name="groups_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<menu_button name="groups_viewsort_btn" tool_tip="Opzioni"/>
-				<button name="plus_btn" tool_tip="Aderisci al gruppo/Crea nuovo gruppo"/>
-				<button name="activate_btn" tool_tip="Attiva il gruppo selezionato"/>
+		<panel label="GRUPPI" name="groups_panel">
+			<panel label="bottom_panel" name="groups_buttons_panel">
+				<filter_editor label="Filtro gruppi" name="groups_filter_input"/>
+				<menu_button name="groups_gear_btn" tool_tip="Azioni per il gruppo selezionato:"/>
+				<menu_button name="groups_view_btn" tool_tip="Opzioni Mostra/Ordina"/>
+				<menu_button name="plus_btn" tool_tip="Aderisci al gruppo/Crea nuovo gruppo"/>
+				<dnd_button name="minus_btn" tool_tip="Lascia il gruppo selezionato"/>
 			</panel>
 		</panel>
 		<panel label="RECENTE" name="recent_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<menu_button name="recent_viewsort_btn" tool_tip="Opzioni"/>
-				<button name="add_friend_btn" tool_tip="Aggiungi il residente selezionato alla tua lista degli amici"/>
+			<panel label="bottom_panel" name="recent_buttons_panel">
+				<filter_editor label="Filtro persone" name="recent_filter_input"/>
+				<button name="gear_btn" tool_tip="Azioni per la persona selezionata:"/>
+				<menu_button name="recent_view_btn" tool_tip="Opzioni Mostra/Ordina"/>
+				<button name="add_friend_btn" tool_tip="Offri amicizia a un residente"/>
+				<dnd_button name="recent_del_btn" tool_tip="Rimuovi la persona selezionata dagli amici"/>
 			</panel>
 		</panel>
+		<panel label="BLOCCATO" name="blocked_panel">
+			<panel label="Residenti e oggetti bloccati" name="panel_block_list_sidetray"/>
+		</panel>
 	</tab_container>
-	<panel name="button_bar">
-		<layout_stack name="bottom_bar_ls">
-			<layout_panel name="view_profile_btn_lp">
-				<button label="Profilo" name="view_profile_btn" tool_tip="Mostra immagine, gruppi e altre informazioni del residente"/>
-			</layout_panel>
-			<layout_panel name="im_btn_lp">
-				<button label="IM" name="im_btn" tool_tip="Apri una sessione messaggio istantaneo"/>
-			</layout_panel>
-			<layout_panel name="call_btn_lp">
-				<button label="Chiama" name="call_btn" tool_tip="Chiama questo residente"/>
-			</layout_panel>
-			<layout_panel name="share_btn_lp">
-				<button label="Condividi" name="share_btn" tool_tip="Condividi un oggetto dell&apos;inventario"/>
-			</layout_panel>
-			<layout_panel name="teleport_btn_lp">
-				<button label="Teleport" name="teleport_btn" tool_tip="Offri teleport"/>
-			</layout_panel>
-		</layout_stack>
-		<layout_stack name="bottom_bar_ls1">
-			<layout_panel name="group_info_btn_lp">
-				<button label="Profilo del gruppo" name="group_info_btn" tool_tip="Mostra informazioni gruppo"/>
-			</layout_panel>
-			<layout_panel name="chat_btn_lp">
-				<button label="Chat di gruppo" name="chat_btn" tool_tip="Apri sessione chat"/>
-			</layout_panel>
-			<layout_panel name="group_call_btn_lp">
-				<button label="Chiamata al gruppo" name="group_call_btn" tool_tip="Chiama questo gruppo"/>
-			</layout_panel>
-		</layout_stack>
-	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/it/panel_preferences_chat.xml b/indra/newview/skins/default/xui/it/panel_preferences_chat.xml
index 0c9c4027e58..c2ac6e97a9c 100644
--- a/indra/newview/skins/default/xui/it/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/it/panel_preferences_chat.xml
@@ -1,34 +1,86 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Text Chat" name="chat">
-	<text name="font_size">
-		Dimensioni caratteri:
-	</text>
-	<radio_group name="chat_font_size">
-		<radio_item label="Piccola" name="radio" value="0"/>
-		<radio_item label="Media" name="radio2" value="1"/>
-		<radio_item label="Grande" name="radio3" value="2"/>
-	</radio_group>
-	<check_box initial_value="true" label="Simula la battitura tasti quando scrivi" name="play_typing_animation"/>
-	<check_box label="Quando sono OFF-LINE, spediscimi gli IM in una e-mail" name="send_im_to_email"/>
-	<check_box label="Attiva IM in testo semplice e cronologia chat" name="plain_text_chat_history"/>
-	<check_box label="Chat a vignetta" name="bubble_text_chat"/>
-	<text name="show_ims_in_label">
-		Mostra gli IM in:
-	</text>
-	<text name="requires_restart_label">
-		(richiede il riavvio)
-	</text>
-	<radio_group name="chat_window" tool_tip="Mostra i tuoi messaggi istantanei in diverse finestre, o in una finestra con più schede (richiede il riavvio)">
-		<radio_item label="Finestre separate" name="radio" value="0"/>
-		<radio_item label="Schede" name="radio2" value="1"/>
-	</radio_group>
-	<text name="disable_toast_label">
-		Attiva popup per chat in arrivo:
-	</text>
-	<check_box label="Chat di gruppo" name="EnableGroupChatPopups" tool_tip="Seleziona per vedere una finestra popup quando arriva una chat di gruppo"/>
-	<check_box label="Chat IM" name="EnableIMChatPopups" tool_tip="Seleziona per vedere una finestra popup quando arriva un messaggio IM"/>
-	<spinner label="Durata chat vicine:" name="nearby_toasts_lifetime"/>
-	<spinner label="Durata dissolvenza chat vicine:" name="nearby_toasts_fadingtime"/>
+	<panel>
+		<check_box initial_value="true" label="Simula la battitura tasti quando scrivi" name="play_typing_animation"/>
+		<check_box label="Quando sono OFF-LINE, spediscimi gli IM in una e-mail" name="send_im_to_email"/>
+		<check_box label="Solo amici e gruppi possono chiamarmi o mandarmi IM" name="voice_call_friends_only_check"/>
+		<text name="font_size">
+			Dimensioni caratteri:
+		</text>
+		<combo_box name="chat_font_size">
+			<item label="Piccolo" name="Small" value="0"/>
+			<item label="Medio" name="Medium" value="1"/>
+			<item label="Grande" name="Large" value="2"/>
+		</combo_box>
+		<check_box label="Chat a vignetta" name="bubble_text_chat"/>
+	</panel>
+	<panel>
+		<text name="notifications">
+			Notifiche
+		</text>
+		<text name="friend_ims">
+			IM degli amici:
+		</text>
+		<combo_box name="FriendIMOptions">
+			<item label="Apri finestra Conversazioni" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Mostra il messaggio in una finestra pop-up" name="PopUpMessage" value="toast"/>
+			<item label="Pulsante barra strumenti Flash" name="FlashToolbarButton" value="flash"/>
+			<item label="Nessuno" name="None" value="none"/>
+		</combo_box>
+		<text name="non_friend_ims">
+			IM non di amici:
+		</text>
+		<combo_box name="NonFriendIMOptions">
+			<item label="Apri finestra Conversazioni" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Mostra il messaggio in una finestra pop-up" name="PopUpMessage" value="toast"/>
+			<item label="Pulsante barra strumenti Flash" name="FlashToolbarButton" value="flash"/>
+			<item label="Nessuno" name="None" value="none"/>
+		</combo_box>
+		<text name="conference_ims">
+			IM conferenza:
+		</text>
+		<combo_box name="ConferenceIMOptions">
+			<item label="Apri finestra Conversazioni" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Mostra il messaggio in una finestra pop-up" name="PopUpMessage" value="toast"/>
+			<item label="Pulsante barra strumenti Flash" name="FlashToolbarButton" value="flash"/>
+			<item label="Nessuno" name="None" value="none"/>
+		</combo_box>
+		<text name="group_chat">
+			Chat di gruppo:
+		</text>
+		<combo_box name="GroupChatOptions">
+			<item label="Apri finestra Conversazioni" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Mostra il messaggio in una finestra pop-up" name="PopUpMessage" value="toast"/>
+			<item label="Pulsante barra strumenti Flash" name="FlashToolbarButton" value="flash"/>
+			<item label="Nessuno" name="None" value="none"/>
+		</combo_box>
+		<text name="nearby_chat">
+			Chat nei dintorni:
+		</text>
+		<combo_box name="NearbyChatOptions">
+			<item label="Apri finestra Conversazioni" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Mostra il messaggio in una finestra pop-up" name="PopUpMessage" value="toast"/>
+			<item label="Pulsante barra strumenti Flash" name="FlashToolBarButton" value="flash"/>
+			<item label="Nessuno" name="None" value="none"/>
+		</combo_box>
+		<text name="notifications_alert">
+			Per interrompere temporaneamente le notifiche, usa Comunica &gt; Non disturbare.
+		</text>
+	</panel>
+	<panel>
+		<text name="play_sound">
+			Riproduci suono:
+		</text>
+		<check_box label="Nuova conversazione" name="new_conversation"/>
+		<check_box label="Chiamata voce in arrivo" name="incoming_voice_call"/>
+		<check_box label="Offerta di Teleport" name="teleport_offer"/>
+		<check_box label="Offerta inventario" name="inventory_offer"/>
+	</panel>
+	<panel>
+		<button label="Cancella registro..." name="clear_log"/>
+		<button label="Cancella trascrizioni..." name="delete_transcripts"/>
+		<button label="Sfoglia..." label_selected="Sfoglia" name="log_path_button"/>
+	</panel>
 	<button label="Traduzione..." name="ok_btn"/>
 	<button label="Sostituzione automatica..." name="autoreplace_showgui"/>
 	<button label="Correzione ortografica..." name="spellcheck_showgui"/>
diff --git a/indra/newview/skins/default/xui/it/panel_preferences_general.xml b/indra/newview/skins/default/xui/it/panel_preferences_general.xml
index 90a833471ce..45cc06c2eae 100644
--- a/indra/newview/skins/default/xui/it/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/it/panel_preferences_general.xml
@@ -69,6 +69,9 @@
 		<combo_box.item label="mai" name="item4"/>
 	</combo_box>
 	<text name="text_box3">
-		Risposta in modalità occupato:
+		Risposta Non disturbare:
 	</text>
+	<text_editor name="do_not_disturb_response">
+		log_in_to_change
+	</text_editor>
 </panel>
diff --git a/indra/newview/skins/default/xui/it/sidepanel_task_info.xml b/indra/newview/skins/default/xui/it/sidepanel_task_info.xml
index 8a0f93e6509..5f912dd126e 100644
--- a/indra/newview/skins/default/xui/it/sidepanel_task_info.xml
+++ b/indra/newview/skins/default/xui/it/sidepanel_task_info.xml
@@ -72,6 +72,7 @@
 			<combo_box.item label="Acquista oggetto" name="Buyobject"/>
 			<combo_box.item label="Paga oggetto" name="Payobject"/>
 			<combo_box.item label="Apri" name="Open"/>
+			<combo_box.item label="Ingrandisci" name="Zoom"/>
 		</combo_box>
 		<panel name="perms_inv">
 			<text name="perm_modify">
diff --git a/indra/newview/skins/default/xui/it/strings.xml b/indra/newview/skins/default/xui/it/strings.xml
index fb1e3874682..f95318542b4 100644
--- a/indra/newview/skins/default/xui/it/strings.xml
+++ b/indra/newview/skins/default/xui/it/strings.xml
@@ -134,7 +134,7 @@
 		Esci
 	</string>
 	<string name="create_account_url">
-		http://join.secondlife.com/index.php?lang=it-IT&amp;sourceid=[sourceid]
+		http://join.secondlife.com/?sourceid=[sourceid]
 	</string>
 	<string name="LoginFailedViewerNotPermitted">
 		Il viewer utilizzato non è più in grado di accedere a Second Life. Visita la parina seguente per scaricare un nuovo viewer:
@@ -616,8 +616,8 @@ Prova ad accedere nuovamente tra un minuto.
 	<string name="AvatarAway">
 		Assente
 	</string>
-	<string name="AvatarBusy">
-		Occupato
+	<string name="AvatarDoNotDisturb">
+		Non disturbare
 	</string>
 	<string name="AvatarMuted">
 		Mutato
@@ -853,6 +853,12 @@ Prova ad accedere nuovamente tra un minuto.
 	<string name="ST_NO_JOINT">
 		Impossibile trovare ROOT o JOINT.
 	</string>
+	<string name="NearbyChatTitle">
+		Chat nei dintorni
+	</string>
+	<string name="NearbyChatLabel">
+		(Chat nei dintorni)
+	</string>
 	<string name="whisper">
 		sussurra:
 	</string>
@@ -916,6 +922,9 @@ Prova ad accedere nuovamente tra un minuto.
 	<string name="ControlYourCamera">
 		Controllare la tua fotocamera
 	</string>
+	<string name="AgentNameSubst">
+		(Tu)
+	</string>
 	<string name="TeleportYourAgent">
 		Teleportarti
 	</string>
@@ -1000,18 +1009,6 @@ Prova ad accedere nuovamente tra un minuto.
 	<string name="dictionary_files">
 		Dizionari
 	</string>
-	<string name="AvatarSetNotAway">
-		Imposta come non assente
-	</string>
-	<string name="AvatarSetAway">
-		Imposta come assente
-	</string>
-	<string name="AvatarSetNotBusy">
-		Imposta come non occupato
-	</string>
-	<string name="AvatarSetBusy">
-		Imposta come occupato
-	</string>
 	<string name="shape">
 		Figura corporea
 	</string>
@@ -1968,8 +1965,8 @@ Prova ad accedere nuovamente tra un minuto.
 	<string name="PanelContentsNewScript">
 		Nuovo script
 	</string>
-	<string name="BusyModeResponseDefault">
-		Il residente al quale hai inviato un messaggio è in modalità &apos;occupato&apos;, ovvero ha chiesto di non essere disturbato.  Il tuo messaggio comparirà nel suo pannello IM, dove potrà essere letto in un secondo momento.
+	<string name="DoNotDisturbModeResponseDefault">
+		Questo residente ha attivato la modalità &apos;Non disturbare&apos; e vedrà il tuo messaggio più tardi.
 	</string>
 	<string name="MuteByName">
 		(In base al nome)
@@ -2082,9 +2079,6 @@ Prova ad accedere nuovamente tra un minuto.
 	<string name="GroupMoneyDate">
 		[weekday,datetime,utc] [mth,datetime,utc] [day,datetime,utc], [year,datetime,utc]
 	</string>
-	<string name="ViewerObjectContents">
-		Contenuto
-	</string>
 	<string name="AcquiredItems">
 		Oggetti acquisiti
 	</string>
@@ -3799,7 +3793,7 @@ Se il messaggio persiste, contatta [SUPPORT_SITE].
 		Regione generale
 	</string>
 	<string name="LocationCtrlSeeAVsTooltip">
-		Avatar visibili e chat consentita fuori di questo lotto
+		Gli avatar in questo lotto non possono essere visti o sentiti da avatar all&apos;esterno del lotto
 	</string>
 	<string name="LocationCtrlPathfindingDirtyTooltip">
 		Gli oggetti che si muovono potrebbero non comportarsi correttamente in questa regione fino a quando non viene eseguito il rebake della regione.
@@ -3876,6 +3870,12 @@ Se il messaggio persiste, contatta [SUPPORT_SITE].
 	<string name="IM_unblock_only_groups_friends">
 		Per vedere questo messaggio, devi deselezionare &apos;Solo amici e gruppi possono chiamarmi o mandarmi IM&apos; in Preferenze/Privacy.
 	</string>
+	<string name="OnlineStatus">
+		Online
+	</string>
+	<string name="OfflineStatus">
+		Offline
+	</string>
 	<string name="answered_call">
 		Risposto alla chiamata
 	</string>
@@ -3885,6 +3885,9 @@ Se il messaggio persiste, contatta [SUPPORT_SITE].
 	<string name="you_joined_call">
 		Ti sei collegato alla chiamata in voce
 	</string>
+	<string name="you_auto_rejected_call-im">
+		Hai rifiutato automaticamente la chiamata voce mentre era attivata la modalità &apos;Non disturbare&apos;.
+	</string>
 	<string name="name_started_call">
 		[NAME] ha iniziato una chiamata vocale
 	</string>
@@ -3897,6 +3900,9 @@ Se il messaggio persiste, contatta [SUPPORT_SITE].
 	<string name="hang_up-im">
 		Chiusa la chiamata
 	</string>
+	<string name="conference-title">
+		Chat con più persone
+	</string>
 	<string name="conference-title-incoming">
 		Chiamata in conferenza con [AGENT_NAME]
 	</string>
@@ -4769,6 +4775,9 @@ Prova a racchiudere il percorso dell&apos;editor in doppie virgolette.
 	<string name="Command_Chat_Label">
 		Chat
 	</string>
+	<string name="Command_Conversations_Label">
+		Conversazioni
+	</string>
 	<string name="Command_Compass_Label">
 		Bussola
 	</string>
@@ -4844,6 +4853,9 @@ Prova a racchiudere il percorso dell&apos;editor in doppie virgolette.
 	<string name="Command_Chat_Tooltip">
 		Chatta con persone vicine usando il testo
 	</string>
+	<string name="Command_Conversations_Tooltip">
+		Conversa con chiunque
+	</string>
 	<string name="Command_Compass_Tooltip">
 		Bussola
 	</string>
@@ -4973,4 +4985,13 @@ Prova a racchiudere il percorso dell&apos;editor in doppie virgolette.
 	<string name="UserDictionary">
 		[User]
 	</string>
+	<string name="logging_calls_disabled_log_empty">
+		Le conversazioni non vengono registrate. Per iniziare a registrare, seleziona &quot;Salva: Solo registro&quot; oppure &quot;Salva: Registri e trascrizioni&quot; in Preferenze &gt; Chat.
+	</string>
+	<string name="logging_calls_disabled_log_not_empty">
+		Non verranno registrate più le conversazioni. Per riprendere a registrare, seleziona &quot;Salva: Solo registro&quot; oppure &quot;Salva: Registri e trascrizioni&quot; in Preferenze &gt; Chat.
+	</string>
+	<string name="logging_calls_enabled_log_empty">
+		Nessuna conversazione in registro. Dopo che hai contattato qualcuno o se qualcuno ti contatta, una voce del registro verrà mostrata qui.
+	</string>
 </strings>
diff --git a/indra/newview/skins/default/xui/ja/floater_conversation_log.xml b/indra/newview/skins/default/xui/ja/floater_conversation_log.xml
new file mode 100644
index 00000000000..98b1a59a0db
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/floater_conversation_log.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_conversation_log" title="会話ログ">
+	<panel name="buttons_panel">
+		<filter_editor label="人をフィルター" name="people_filter_input"/>
+		<menu_button name="conversation_view_btn" tool_tip="表示 / 並べ替えのオプション"/>
+		<menu_button name="conversations_gear_btn" tool_tip="選択した住人・グループに対するアクション"/>
+	</panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_conversation_preview.xml b/indra/newview/skins/default/xui/ja/floater_conversation_preview.xml
new file mode 100644
index 00000000000..ea0b23de483
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/floater_conversation_preview.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="preview_conversation" title="会話:">
+	<floater.string name="Title">
+		会話:[NAME]
+	</floater.string>
+	<text name="page_label" value="ページ"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_im_container.xml b/indra/newview/skins/default/xui/ja/floater_im_container.xml
index 06b65e27f0c..a155efdc1e6 100644
--- a/indra/newview/skins/default/xui/ja/floater_im_container.xml
+++ b/indra/newview/skins/default/xui/ja/floater_im_container.xml
@@ -1,2 +1,29 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<multi_floater name="floater_im_box" title="会話"/>
+<multi_floater name="floater_im_box" title="会話">
+	<string name="collapse_icon" value="Conv_toolbar_collapse"/>
+	<string name="expand_icon" value="Conv_toolbar_expand"/>
+	<layout_stack name="conversations_stack">
+		<layout_panel name="conversations_layout_panel">
+			<layout_stack name="conversations_pane_buttons_stack">
+				<layout_panel name="conversations_pane_buttons_expanded">
+					<menu_button name="sort_btn" tool_tip="オプションの表示 / 並べ替え"/>
+					<button name="add_btn" tool_tip="新しい会話を開始"/>
+					<button name="speak_btn" tool_tip="マイクを使って人と話す"/>
+				</layout_panel>
+				<layout_panel name="conversations_pane_buttons_collapsed">
+					<button name="expand_collapse_btn" tool_tip="このリストを閉じる / 開く"/>
+				</layout_panel>
+			</layout_stack>
+		</layout_panel>
+		<layout_panel name="messages_layout_panel">
+			<panel_container name="im_box_tab_container">
+				<panel name="stub_panel">
+					<button name="stub_collapse_btn" tool_tip="このペインを閉じる"/>
+					<text name="stub_textbox">
+						この会話は、別のウィンドウに表示されます。[secondlife:/// 戻る.]
+					</text>
+				</panel>
+			</panel_container>
+		</layout_panel>
+	</layout_stack>
+</multi_floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_im_session.xml b/indra/newview/skins/default/xui/ja/floater_im_session.xml
index dfa1c85ca23..a44c843df7f 100644
--- a/indra/newview/skins/default/xui/ja/floater_im_session.xml
+++ b/indra/newview/skins/default/xui/ja/floater_im_session.xml
@@ -1,8 +1,59 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="panel_im">
-	<layout_stack name="im_panels">
-		<layout_panel>
-			<line_editor label="宛先" name="chat_editor"/>
-		</layout_panel>
-	</layout_stack>
+	<floater.string name="call_btn_start">
+		Conv_toolbar_open_call
+	</floater.string>
+	<floater.string name="call_btn_stop">
+		Conv_toolbar_hang_up
+	</floater.string>
+	<floater.string name="collapseline_icon" value="Conv_collapse_to_one_line"/>
+	<floater.string name="expandline_icon" value="Conv_expand_one_line"/>
+	<floater.string name="collapse_icon" value="Conv_toolbar_collapse"/>
+	<floater.string name="expand_icon" value="Conv_toolbar_expand"/>
+	<floater.string name="tear_off_icon" value="Conv_toolbar_arrow_ne"/>
+	<floater.string name="return_icon" value="Conv_toolbar_arrow_sw"/>
+	<floater.string name="participant_added" value="[NAME] は会話に招待されました。"/>
+	<floater.string name="multiple_participants_added" value="[NAME] は会話に招待されました。"/>
+	<floater.string name="tooltip_to_separate_window" value="この会話を別のウィンドウへ移動する"/>
+	<floater.string name="tooltip_to_main_window" value="この会話をメインウィンドウへ戻す"/>
+	<floater.string name="start_call_button_tooltip" value="会話の接続を開く"/>
+	<floater.string name="end_call_button_tooltip" value="会話の接続を閉じる"/>
+	<floater.string name="expcol_button_not_tearoff_tooltip" value="このペインを閉じる"/>
+	<floater.string name="expcol_button_tearoff_and_expanded_tooltip" value="参加者リストを閉じる"/>
+	<floater.string name="expcol_button_tearoff_and_collapsed_tooltip" value="参加者リストを開く"/>
+	<view name="contents_view">
+		<layout_stack name="main_stack">
+			<layout_panel name="toolbar_panel">
+				<menu_button name="view_options_btn" tool_tip="表示 / 並べ替えのオプション"/>
+				<menu_button name="gear_btn" tool_tip="選択した人に対するアクション"/>
+				<button name="add_btn" tool_tip="この会話に他の人を追加する"/>
+				<button name="voice_call_btn" tool_tip="会話の接続を開く"/>
+				<button name="close_btn" tool_tip="この会話を終了する"/>
+				<button name="expand_collapse_btn" tool_tip="このペインを閉じる / 開く"/>
+			</layout_panel>
+			<layout_panel name="body_panel">
+				<layout_stack name="im_panels">
+					<layout_panel name="right_part_holder">
+						<panel name="trnsAndChat_panel">
+							<layout_stack name="translate_and_chat_stack">
+								<layout_panel name="translate_chat_checkbox_lp">
+									<check_box label="チャットを翻訳" name="translate_chat_checkbox"/>
+								</layout_panel>
+							</layout_stack>
+						</panel>
+					</layout_panel>
+				</layout_stack>
+			</layout_panel>
+			<layout_panel name="chat_layout_panel">
+				<layout_stack name="input_panels">
+					<layout_panel name="input_editor_layout_panel">
+						<chat_editor label="宛先" name="chat_editor"/>
+					</layout_panel>
+					<layout_panel name="input_button_layout_panel">
+						<button name="minz_btn" tool_tip="メッセージパネルの表示 / 非表示"/>
+					</layout_panel>
+				</layout_stack>
+			</layout_panel>
+		</layout_stack>
+	</view>
 </floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_incoming_call.xml b/indra/newview/skins/default/xui/ja/floater_incoming_call.xml
index f152fcd7381..308f6f9a3de 100644
--- a/indra/newview/skins/default/xui/ja/floater_incoming_call.xml
+++ b/indra/newview/skins/default/xui/ja/floater_incoming_call.xml
@@ -10,7 +10,7 @@
 		匿名ユーザー
 	</floater.string>
 	<floater.string name="VoiceInviteP2P">
-		がコールしています。
+		からコールを受けています。
 	</floater.string>
 	<floater.string name="VoiceInviteAdHoc">
 		がコンファレンスチャットで、ボイスチャットに参加しました。
@@ -25,9 +25,9 @@
 		[CURRENT_CHAT]を退席して、このボイスチャットに参加しますか?
 	</floater.string>
 	<text name="question">
-		[CURRENT_CHAT] を退席して、このボイスチャットに参加しますか?
+		コールに応答すると、現在のボイスチャットから切断されます。
 	</text>
-	<button label="はい" label_selected="はい" name="Accept"/>
-	<button label="いいえ" label_selected="いいえ" name="Reject"/>
-	<button label="IM" name="Start IM"/>
+	<button label="取る" label_selected="取る" name="Accept"/>
+	<button label="無視" label_selected="無視" name="Reject"/>
+	<button label="代わりに IM を開く" name="Start IM"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_pathfinding_console.xml b/indra/newview/skins/default/xui/ja/floater_pathfinding_console.xml
index ec107f3e6b9..9733c619181 100644
--- a/indra/newview/skins/default/xui/ja/floater_pathfinding_console.xml
+++ b/indra/newview/skins/default/xui/ja/floater_pathfinding_console.xml
@@ -71,7 +71,7 @@
 			<text name="show_label">
 				表示:
 			</text>
-			<check_box label="世界" name="show_world"/>
+			<check_box label="テスト" name="show_world"/>
 			<check_box label="可動物のみ" name="show_world_movables_only"/>
 			<check_box label="ナビメッシュ" name="show_navmesh"/>
 			<text name="show_walkability_label">
diff --git a/indra/newview/skins/default/xui/ja/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/ja/floater_texture_ctrl.xml
index 3773812bb66..37233d3e686 100644
--- a/indra/newview/skins/default/xui/ja/floater_texture_ctrl.xml
+++ b/indra/newview/skins/default/xui/ja/floater_texture_ctrl.xml
@@ -20,7 +20,7 @@
 	<button label="ブランク" label_selected="ブランク" name="Blank"/>
 	<button label="なし" label_selected="なし" name="None"/>
 	<button label="" label_selected="" name="Pipette"/>
-	<check_box initial_value="true" label="ライブプレビュー" name="apply_immediate_check"/>
+	<check_box initial_value="true" label="今すぐ適用" name="apply_immediate_check"/>
 	<text name="preview_disabled" value="プレビュー無効"/>
 	<filter_editor label="テクスチャをフィルター" name="inventory search editor"/>
 	<check_box initial_value="false" label="フォルダを表示" name="show_folders_check"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_voice_chat_volume.xml b/indra/newview/skins/default/xui/ja/floater_voice_chat_volume.xml
new file mode 100644
index 00000000000..44e96c35ad4
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/floater_voice_chat_volume.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_voice_volume" title="ボイスチャットの音量">
+	<slider label="ボイスチャット" name="chat_voice_volume"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_voice_effect.xml b/indra/newview/skins/default/xui/ja/floater_voice_effect.xml
index ee675e143b0..b38ea9331ad 100644
--- a/indra/newview/skins/default/xui/ja/floater_voice_effect.xml
+++ b/indra/newview/skins/default/xui/ja/floater_voice_effect.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater label="場所" name="voice_effects" title="ボイスモーフィング">
+<floater label="場所" name="voice_effects" title="ボイスモーフィングのプレビュー">
 	<string name="no_voice_effect">
 		(ボイスモーフィングなし)
 	</string>
diff --git a/indra/newview/skins/default/xui/ja/floater_voice_volume.xml b/indra/newview/skins/default/xui/ja/floater_voice_volume.xml
new file mode 100644
index 00000000000..a380615d5a4
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/floater_voice_volume.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!--
+  Not can_close / no title to avoid window chrome
+  Single instance - only have one at a time, recycle it each spawn
+-->
+<floater name="floater_voice_volume" title="ボイス音量">
+	<slider name="volume_slider" tool_tip="ボイス音量" value="0.5"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/menu_cof_gear.xml b/indra/newview/skins/default/xui/ja/menu_cof_gear.xml
index a071abbd2e8..07bcefd9b37 100644
--- a/indra/newview/skins/default/xui/ja/menu_cof_gear.xml
+++ b/indra/newview/skins/default/xui/ja/menu_cof_gear.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear COF">
+<toggleable_menu name="Gear COF">
 	<menu label="衣類" name="COF.Gear.New_Clothes"/>
-	<menu label="新しい身体部位" name="COF.Geear.New_Body_Parts"/>
-</menu>
+	<menu label="新しい身体部位" name="COF.Gear.New_Body_Parts"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_conversation.xml b/indra/newview/skins/default/xui/ja/menu_conversation.xml
new file mode 100644
index 00000000000..c7df20d2529
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/menu_conversation.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_conversation_participant">
+	<menu_item_call label="会話を終える" name="close_conversation"/>
+	<menu_item_call label="ボイスチャットを始める" name="open_voice_conversation"/>
+	<menu_item_call label="ボイスチャットを切断する" name="disconnect_from_voice"/>
+	<menu_item_call label="プロフィールを表示" name="view_profile"/>
+	<menu_item_call label="IM" name="im"/>
+	<menu_item_call label="テレポートを送る" name="offer_teleport"/>
+	<menu_item_call label="ボイスコール" name="voice_call"/>
+	<menu_item_call label="チャットの履歴..." name="chat_history"/>
+	<menu_item_call label="フレンドを追加" name="add_friend"/>
+	<menu_item_call label="フレンドを削除" name="remove_friend"/>
+	<menu_item_call label="フレンドを削除" name="remove_friends"/>
+	<menu_item_call label="グループに招待..." name="invite_to_group"/>
+	<menu_item_call label="ズームイン" name="zoom_in"/>
+	<menu_item_call label="地図" name="map"/>
+	<menu_item_call label="共有" name="share"/>
+	<menu_item_call label="支払い" name="pay"/>
+	<menu_item_check label="ボイスをブロック" name="block_unblock"/>
+	<menu_item_check label="文字をブロックする" name="MuteText"/>
+	<menu_item_call label="グループ情報" name="group_profile"/>
+	<menu_item_call label="グループをアクティブにする" name="activate_group"/>
+	<menu_item_call label="グループから脱退する" name="leave_group"/>
+	<context_menu label="モデレーターのオプション" name="Moderator Options">
+		<menu_item_check label="文字チャットを許可" name="AllowTextChat"/>
+		<menu_item_call label="この参加者をミュートする" name="ModerateVoiceMuteSelected"/>
+		<menu_item_call label="この参加者のミュートを解除する" name="ModerateVoiceUnMuteSelected"/>
+		<menu_item_call label="全員の音声をミュートする" name="ModerateVoiceMute"/>
+		<menu_item_call label="全員のミュートを解除する" name="ModerateVoiceUnmute"/>
+	</context_menu>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_conversation_log_gear.xml b/indra/newview/skins/default/xui/ja/menu_conversation_log_gear.xml
new file mode 100644
index 00000000000..c9d4f947a48
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/menu_conversation_log_gear.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Conversation Context Menu">
+	<menu_item_call label="IM..." name="IM"/>
+	<menu_item_call label="ボイスコール..." name="Call"/>
+	<menu_item_call label="チャットの履歴を開く..." name="Chat history"/>
+	<menu_item_call label="プロフィールを表示" name="View Profile"/>
+	<menu_item_call label="テレポートを送る" name="teleport"/>
+	<menu_item_call label="フレンド登録" name="add_friend"/>
+	<menu_item_call label="フレンドを削除" name="remove_friend"/>
+	<menu_item_call label="グループに招待..." name="Invite"/>
+	<menu_item_call label="地図" name="Map"/>
+	<menu_item_call label="共有" name="Share"/>
+	<menu_item_call label="支払い" name="Pay"/>
+	<menu_item_check label="ブロック・ブロック解除" name="Block/Unblock"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_conversation_log_view.xml b/indra/newview/skins/default/xui/ja/menu_conversation_log_view.xml
new file mode 100644
index 00000000000..bd4812603f7
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/menu_conversation_log_view.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_conversation_view">
+	<menu_item_check label="名前で並べ替え" name="sort_by_name"/>
+	<menu_item_check label="日付で並べ替え" name="sort_by_date"/>
+	<menu_item_check label="上位のフレンドを並べ替え" name="sort_by_friends"/>
+	<menu_item_call label="近くのチャットの履歴を表示..." name="view_nearby_chat_history"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_im_conversation.xml b/indra/newview/skins/default/xui/ja/menu_im_conversation.xml
new file mode 100644
index 00000000000..55cd6610f75
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/menu_im_conversation.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Conversation Gear Menu">
+	<menu_item_call label="プロフィールを表示" name="View Profile"/>
+	<menu_item_call label="フレンド登録" name="Add Friend"/>
+	<menu_item_call label="フレンドを削除" name="remove_friend"/>
+	<menu_item_call label="テレポートを送る" name="offer_teleport"/>
+	<menu_item_call label="グループに招待..." name="invite_to_group"/>
+	<menu_item_call label="チャットの履歴..." name="chat_history"/>
+	<menu_item_call label="ズームイン" name="zoom_in"/>
+	<menu_item_call label="地図" name="map"/>
+	<menu_item_call label="共有" name="Share"/>
+	<menu_item_call label="支払い" name="Pay"/>
+	<menu_item_check label="ボイスをブロック" name="Block/Unblock"/>
+	<menu_item_check label="文字をブロックする" name="MuteText"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_im_session_showmodes.xml b/indra/newview/skins/default/xui/ja/menu_im_session_showmodes.xml
new file mode 100644
index 00000000000..222a7417189
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/menu_im_session_showmodes.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_modes">
+	<menu_item_check label="簡略表示" name="compact_view"/>
+	<menu_item_check label="詳細表示" name="expanded_view"/>
+	<menu_item_check label="時間を表示" name="IMShowTime"/>
+	<menu_item_check label="1対1の会話で名前を表示" name="IMShowNamesForP2PConv"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_object_icon.xml b/indra/newview/skins/default/xui/ja/menu_object_icon.xml
index 8c4f3286618..6448e9244ec 100644
--- a/indra/newview/skins/default/xui/ja/menu_object_icon.xml
+++ b/indra/newview/skins/default/xui/ja/menu_object_icon.xml
@@ -2,4 +2,6 @@
 <menu name="Object Icon Menu">
 	<menu_item_call label="オブジェクトのプロフィール..." name="Object Profile"/>
 	<menu_item_call label="ブロック..." name="Block"/>
+	<menu_item_call label="地図に表示" name="show_on_map"/>
+	<menu_item_call label="オブジェクトの場所にテレポート" name="teleport_to_object"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_outfit_gear.xml b/indra/newview/skins/default/xui/ja/menu_outfit_gear.xml
index 2bcbe1915b4..1969ae2a102 100644
--- a/indra/newview/skins/default/xui/ja/menu_outfit_gear.xml
+++ b/indra/newview/skins/default/xui/ja/menu_outfit_gear.xml
@@ -23,6 +23,8 @@
 		<menu_item_call label="髪" name="New Hair"/>
 		<menu_item_call label="ç›®" name="New Eyes"/>
 	</menu>
+	<menu_item_call label="フォルダをすべて開く" name="expand"/>
+	<menu_item_call label="フォルダをすべて閉じる" name="collapse"/>
 	<menu_item_call label="アウトフィットの名前を変更する" name="rename"/>
 	<menu_item_call label="アウトフィットを削除する" name="delete_outfit"/>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_participant_view.xml b/indra/newview/skins/default/xui/ja/menu_participant_view.xml
new file mode 100644
index 00000000000..5816351d9de
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/menu_participant_view.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="participant_manu_view">
+	<menu_item_check label="会話をタイプで並べ替え" name="sort_sessions_by_type"/>
+	<menu_item_check label="会話を名前で並べ替え" name="sort_sessions_by_name"/>
+	<menu_item_check label="会話を最新アクティビティで並べ替え" name="sort_sessions_by_recent"/>
+	<menu_item_check label="参加者を名前で並べ替え" name="sort_participants_by_name"/>
+	<menu_item_check label="参加者を最新アクティビティで並べ替え" name="sort_participants_by_recent"/>
+	<menu_item_call label="チャットの環境設定..." name="chat_preferences"/>
+	<menu_item_call label="プライバシーの環境設定..." name="privacy_preferences"/>
+	<menu_item_check label="会話ログ..." name="Conversation"/>
+	<menu_item_check label="近くのチャットを翻訳" name="Translate_chat"/>
+	<menu_item_check label="翻訳の設定..." name="Translation_settings"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_people_blocked_gear.xml b/indra/newview/skins/default/xui/ja/menu_people_blocked_gear.xml
new file mode 100644
index 00000000000..b5c9d11e021
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/menu_people_blocked_gear.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_blocked_gear">
+	<menu_item_call label="ブロック解除" name="unblock"/>
+	<menu_item_call label="プロフィール..." name="profile"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_people_blocked_plus.xml b/indra/newview/skins/default/xui/ja/menu_people_blocked_plus.xml
new file mode 100644
index 00000000000..3e74b2ddff6
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/menu_people_blocked_plus.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_blocked_plus">
+	<menu_item_call label="名前で住人をブロック..." name="block_resident_by_name"/>
+	<menu_item_call label="名前でオブジェクトをブロック..." name="block_object_by_name"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_people_blocked_view.xml b/indra/newview/skins/default/xui/ja/menu_people_blocked_view.xml
new file mode 100644
index 00000000000..4b86a353f4b
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/menu_people_blocked_view.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_blocked_view">
+	<menu_item_check label="名前で並べ替え" name="sort_by_name"/>
+	<menu_item_check label="タイプによる並べ替え" name="sort_by_type"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_people_friends_view.xml b/indra/newview/skins/default/xui/ja/menu_people_friends_view.xml
new file mode 100644
index 00000000000..b95d11fdbdc
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/menu_people_friends_view.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="名前で並べ替え" name="sort_name"/>
+	<menu_item_check label="オンライン状況で並べ替え" name="sort_status"/>
+	<menu_item_check label="人のアイコン表示" name="view_icons"/>
+	<menu_item_check label="与えられた権限を表示" name="view_permissions"/>
+	<menu_item_check label="会話ログを表示..." name="view_conversation"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_people_groups.xml b/indra/newview/skins/default/xui/ja/menu_people_groups.xml
index 842d79dc4be..2c0c85ba289 100644
--- a/indra/newview/skins/default/xui/ja/menu_people_groups.xml
+++ b/indra/newview/skins/default/xui/ja/menu_people_groups.xml
@@ -2,7 +2,7 @@
 <menu name="menu_group_plus">
 	<menu_item_call label="情報を表示" name="View Info"/>
 	<menu_item_call label="チャット" name="Chat"/>
-	<menu_item_call label="コール" name="Call"/>
+	<menu_item_call label="ボイスコール" name="Call"/>
 	<menu_item_call label="アクティブ" name="Activate"/>
 	<menu_item_call label="脱退" name="Leave"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_people_groups_view.xml b/indra/newview/skins/default/xui/ja/menu_people_groups_view.xml
new file mode 100644
index 00000000000..4a9e402fa4f
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/menu_people_groups_view.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="グループアイコンを表示" name="Display Group Icons"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_people_nearby.xml b/indra/newview/skins/default/xui/ja/menu_people_nearby.xml
index 8d84b0e521c..972ab767bf4 100644
--- a/indra/newview/skins/default/xui/ja/menu_people_nearby.xml
+++ b/indra/newview/skins/default/xui/ja/menu_people_nearby.xml
@@ -1,13 +1,16 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Avatar Context Menu">
-	<menu_item_call label="プロフィールの表示" name="View Profile"/>
-	<menu_item_call label="フレンド登録" name="Add Friend"/>
-	<menu_item_call label="フレンドを削除" name="Remove Friend"/>
-	<menu_item_call label="IM" name="IM"/>
-	<menu_item_call label="コール" name="Call"/>
-	<menu_item_call label="地図" name="Map"/>
-	<menu_item_call label="共有" name="Share"/>
-	<menu_item_call label="支払う" name="Pay"/>
-	<menu_item_check label="ブロック・ブロック解除" name="Block/Unblock"/>
-	<menu_item_call label="テレポートを送る" name="teleport"/>
+	<menu_item_call label="プロフィールを表示" name="view_profile"/>
+	<menu_item_call label="IM" name="im"/>
+	<menu_item_call label="テレポートを送る" name="offer_teleport"/>
+	<menu_item_call label="ボイスコール" name="voice_call"/>
+	<menu_item_call label="チャットの履歴を表示..." name="chat_history"/>
+	<menu_item_call label="フレンド登録" name="add_friend"/>
+	<menu_item_call label="フレンドを削除" name="remove_friend"/>
+	<menu_item_call label="グループに招待..." name="invite_to_group"/>
+	<menu_item_call label="ズームイン" name="zoom_in"/>
+	<menu_item_call label="地図" name="map"/>
+	<menu_item_call label="共有" name="share"/>
+	<menu_item_call label="支払い" name="pay"/>
+	<menu_item_check label="ブロック・ブロック解除" name="block_unblock"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/ja/menu_people_nearby_multiselect.xml
index 3f20e5d3ab1..fe85e278cfd 100644
--- a/indra/newview/skins/default/xui/ja/menu_people_nearby_multiselect.xml
+++ b/indra/newview/skins/default/xui/ja/menu_people_nearby_multiselect.xml
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Multi-Selected People Context Menu">
-	<menu_item_call label="フレンド登録" name="Add Friends"/>
-	<menu_item_call label="フレンドを削除" name="Remove Friend"/>
-	<menu_item_call label="IM" name="IM"/>
-	<menu_item_call label="コール" name="Call"/>
-	<menu_item_call label="共有" name="Share"/>
-	<menu_item_call label="支払う" name="Pay"/>
-	<menu_item_call label="テレポートを送る" name="teleport"/>
+	<menu_item_call label="フレンド登録" name="add_friends"/>
+	<menu_item_call label="フレンドを削除" name="remove_friends"/>
+	<menu_item_call label="IM" name="im"/>
+	<menu_item_call label="コール" name="call"/>
+	<menu_item_call label="共有" name="share"/>
+	<menu_item_call label="支払い" name="pay"/>
+	<menu_item_call label="テレポートを送る" name="offer_teleport"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_people_nearby_view.xml b/indra/newview/skins/default/xui/ja/menu_people_nearby_view.xml
new file mode 100644
index 00000000000..b7cccc4396d
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/menu_people_nearby_view.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="最近の発言者で並べ替え" name="sort_by_recent_speakers"/>
+	<menu_item_check label="名前で並べ替え" name="sort_name"/>
+	<menu_item_check label="距離で並べ替え" name="sort_distance"/>
+	<menu_item_check label="人のアイコン表示" name="view_icons"/>
+	<menu_item_check label="地図を表示" name="view_map"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_people_recent_view.xml b/indra/newview/skins/default/xui/ja/menu_people_recent_view.xml
new file mode 100644
index 00000000000..feaeba4398e
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/menu_people_recent_view.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="新しい順に並べ替え" name="sort_most"/>
+	<menu_item_check label="名前で並べ替え" name="sort_name"/>
+	<menu_item_check label="人のアイコン表示" name="view_icons"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_url_agent.xml b/indra/newview/skins/default/xui/ja/menu_url_agent.xml
index 92d118a5aec..72722db7cca 100644
--- a/indra/newview/skins/default/xui/ja/menu_url_agent.xml
+++ b/indra/newview/skins/default/xui/ja/menu_url_agent.xml
@@ -1,6 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Url Popup">
-	<menu_item_call label="住人のプロフィールを表示" name="show_agent"/>
+	<menu_item_call label="プロフィールを表示" name="show_agent"/>
+	<menu_item_call label="IM を送信..." name="send_im"/>
+	<menu_item_call label="フレンドを追加..." name="add_friend"/>
 	<menu_item_call label="名前をクリップボードにコピー" name="url_copy_label"/>
 	<menu_item_call label="SLurl をクリップボードにコピー" name="url_copy"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_url_objectim.xml b/indra/newview/skins/default/xui/ja/menu_url_objectim.xml
index d6a048dcfcc..9e340e3239c 100644
--- a/indra/newview/skins/default/xui/ja/menu_url_objectim.xml
+++ b/indra/newview/skins/default/xui/ja/menu_url_objectim.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Url Popup">
-	<menu_item_call label="オブジェクトの情報を表示" name="show_object"/>
+	<menu_item_call label="オブジェクトのプロフィール..." name="show_object"/>
 	<menu_item_call label="地図に表示" name="show_on_map"/>
 	<menu_item_call label="オブジェクトの場所にテレポート" name="teleport_to_object"/>
 	<menu_item_call label="オブジェクト名をクリップボードにコピー" name="url_copy_label"/>
diff --git a/indra/newview/skins/default/xui/ja/menu_viewer.xml b/indra/newview/skins/default/xui/ja/menu_viewer.xml
index e60e6781c6e..6f650242b4e 100644
--- a/indra/newview/skins/default/xui/ja/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/ja/menu_viewer.xml
@@ -16,10 +16,7 @@
 			<menu_item_call label="私のアニメーションを停止する" name="Stop Animating My Avatar"/>
 			<menu_item_call label="歩行/走行/飛行..." name="Walk / run / fly"/>
 		</menu>
-		<menu label="ログイン" name="Status">
-			<menu_item_call label="一時退席中" name="Set Away"/>
-			<menu_item_call label="取り込み中" name="Set Busy"/>
-		</menu>
+		<menu label="ログイン" name="Status"/>
 		<menu_item_call label="L$ の購入..." name="Buy and Sell L$"/>
 		<menu_item_call label="マーチャントアウトボックス..." name="MerchantOutbox"/>
 		<menu_item_call label="マイアカウント..." name="Manage My Account">
@@ -32,14 +29,18 @@
 		<menu_item_call label="[APP_NAME] を終了" name="Quit"/>
 	</menu>
 	<menu label="コミュニケーション" name="Communicate">
-		<menu_item_check label="チャット..." name="Nearby Chat"/>
+		<menu_item_check label="会話..." name="Conversations"/>
+		<menu_item_check label="近くのチャット..." name="Nearby Chat"/>
 		<menu_item_check label="話す" name="Speak"/>
-		<menu_item_check label="ボイス設定..." name="Nearby Voice"/>
-		<menu_item_check label="ボイスモーフィング..." name="ShowVoice"/>
+		<menu label="ボイスモーフィング" name="VoiceMorphing">
+			<menu_item_check label="ボイスモーフィングなし" name="NoVoiceMorphing"/>
+			<menu_item_check label="プレビュー..." name="Preview"/>
+			<menu_item_call label="申し込む..." name="Subscribe"/>
+		</menu>
 		<menu_item_check label="ジェスチャー..." name="Gestures"/>
-		<menu_item_call label="フレンド" name="My Friends"/>
-		<menu_item_call label="グループ" name="My Groups"/>
-		<menu_item_call label="近くにいる人" name="Active Speakers"/>
+		<menu_item_check label="フレンド" name="My Friends"/>
+		<menu_item_check label="グループ" name="My Groups"/>
+		<menu_item_check label="近くにいる人" name="Active Speakers"/>
 		<menu_item_call label="リストをブロック" name="Block List"/>
 	</menu>
 	<menu label="世界" name="World">
@@ -115,7 +116,6 @@
 			<menu_item_call label="買う" name="Menu Object Buy"/>
 			<menu_item_call label="取る" name="Menu Object Take"/>
 			<menu_item_call label="コピーを取る" name="Take Copy"/>
-			<menu_item_call label="マイインベントリに保存" name="Save Object Back to My Inventory"/>
 			<menu_item_call label="オブジェクトの中身に保存" name="Save Object Back to Object Contents"/>
 			<menu_item_call label="オブジェクトを返却する" name="Return Object back to Owner"/>
 		</menu>
@@ -130,6 +130,7 @@
 			<menu_item_call label="リンクセット..." name="pathfinding_linksets_menu_item"/>
 			<menu_item_call label="キャラクター..." name="pathfinding_characters_menu_item"/>
 			<menu_item_call label="表示/テスト..." name="pathfinding_console_menu_item"/>
+			<menu_item_call label="地域の再構築" name="pathfinding_rebake_navmesh_item"/>
 		</menu>
 		<menu label="オプション" name="Options">
 			<menu_item_check label="権限の詳細を表示する" name="DebugPermissions"/>
@@ -159,6 +160,13 @@
 	<menu label="ヘルプ" name="Help">
 		<menu_item_call label="ハウツー..." name="How To"/>
 		<menu_item_call label="[SECOND_LIFE] ヘルプ" name="Second Life Help"/>
+		<menu_item_call label="ユーザーガイド" name="User’s guide"/>
+		<menu_item_call label="ナレッジベース" name="Knowledge Base"/>
+		<menu_item_call label="Wiki" name="Wiki"/>
+		<menu_item_call label="コミュニティフォーラム" name="Community Forums"/>
+		<menu_item_call label="日本語サポートページ" name="Support portal"/>
+		<menu_item_call label="[SECOND_LIFE] ニュース" name="Second Life News"/>
+		<menu_item_call label="[SECOND_LIFE] ブログ" name="Second Life Blogs"/>
 		<menu_item_call label="嫌がらせを報告する" name="Report Abuse"/>
 		<menu_item_call label="バグを報告する" name="Report Bug"/>
 		<menu_item_call label="[APP_NAME] について" name="About Second Life"/>
@@ -385,9 +393,14 @@
 				<menu_item_call label="女性アバターのテスト" name="Test Female"/>
 				<menu_item_check label="選択アバター許可" name="Allow Select Avatar"/>
 			</menu>
+			<menu label="アニメーションのスピード" name="Animation Speed">
+				<menu_item_call label="すべてのアニメーションのスピードを 10% アップ" name="All Animations 10 Faster"/>
+				<menu_item_call label="すべてのアニメーションのスピードを 10% ダウン" name="All Animations 10 Slower"/>
+				<menu_item_call label="すべてのアニメーションのスピードをリセット" name="Reset All Animation Speed"/>
+				<menu_item_check label="アニメーションをスローモーション" name="Slow Motion Animations"/>
+			</menu>
 			<menu_item_call label="パラメータを強制的にデフォルトにする" name="Force Params to Default"/>
 			<menu_item_check label="アニメーション情報" name="Animation Info"/>
-			<menu_item_check label="スローモーションのアニメーション" name="Slow Motion Animations"/>
 			<menu_item_check label="見ているものを表示する" name="Show Look At"/>
 			<menu_item_check label="クリックした場所を表示する" name="Show Point At"/>
 			<menu_item_check label="結合部のアップデートのデバッグ" name="Debug Joint Updates"/>
diff --git a/indra/newview/skins/default/xui/ja/notifications.xml b/indra/newview/skins/default/xui/ja/notifications.xml
index d5cff18a24a..356506f1912 100644
--- a/indra/newview/skins/default/xui/ja/notifications.xml
+++ b/indra/newview/skins/default/xui/ja/notifications.xml
@@ -538,6 +538,24 @@ L$ が不足しているのでこのグループに参加することができ
 		</url>
 		<usetemplate ignoretext="使用しているグラフィックドライバが古い場合" name="okcancelignore" notext="いいえ" yestext="はい"/>
 	</notification>
+	<notification name="AMDOldDriver">
+		お使いのグラフィックチップには最新のドライバが存在するようです。グラフィックドライバを更新すると、パフォーマンスが大幅に改善されます。
+
+[_URL] へアクセスして、ドライバーを更新しますか。
+		<url name="url">
+			http://support.amd.com/us/Pages/AMDSupportHub.aspx
+		</url>
+		<usetemplate ignoretext="自分のグラフィックドライバが旧くなりました。" name="okcancelignore" notext="いいえ" yestext="はい"/>
+	</notification>
+	<notification name="NVIDIAOldDriver">
+		お使いのグラフィックチップには最新のドライバが存在するようです。グラフィックドライバを更新すると、パフォーマンスが大幅に改善されます。
+
+[_URL] へアクセスして、ドライバーを更新しますか。
+		<url name="url">
+			http://www.nvidia.com/Download/index.aspx?lang=en-us
+		</url>
+		<usetemplate ignoretext="自分のグラフィックドライバが旧くなりました。" name="okcancelignore" notext="いいえ" yestext="はい"/>
+	</notification>
 	<notification name="UnknownGPU">
 		お使いのシステムには、[APP_NAME] が認識できないグラフィックカードが搭載されています。
 [APP_NAME] でまだテストされていない最新ハードウェアのためだと考えられます。  問題ないとは思いますが、グラフィックの設定を調整する必要があるかもしれません。
@@ -1582,10 +1600,13 @@ http://secondlife.com/download から最新バージョンをダウンロード
 		現在フレンドシップを送れません。数分後にもう一度お試しください。
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
-	<notification name="BusyModeSet">
-		取り込み中モードになりました。
-チャットとインスタントメッセージは表示されません。 受信するインスタントメッセージには取り込み中返答メッセージが表示されます。 テレポートのオファーは受け取り拒否となります。 アイテムのオファーはすべてごみ箱に入ります。
-		<usetemplate ignoretext="ログイン状態を取り込み中モードに変更するとき" name="okignore" yestext="OK"/>
+	<notification name="DoNotDisturbModeSet">
+		「通知を受けない」がオンになります。着信通信はあなたには通知されません。
+
+- 他の住民は「通知を受けない」の応答(「設定」&gt;「一般」で設定)を受け取ることになります。
+- テレポートのオファーはすべて受け取り拒否となります。
+- ボイスコールは拒否されます。
+		<usetemplate ignoretext="マイ ログイン状態を「通知を受けない」モードに変更しました。" name="okignore" yestext="OK"/>
 	</notification>
 	<notification name="JoinedTooManyGroupsMember">
 		加入できるグループの最大限に達しました。 このグループに加入するために他のグループを脱退するか、この申し入れを断ってください。
@@ -2076,6 +2097,10 @@ L$ [AMOUNT] で、このクラシファイド広告を今すぐ公開します
 		[http://jp.secondlife.com/account/ マイアカウント] ページに移動してアカウント履歴を確認しますか?
 		<usetemplate ignoretext="ブラウザを起動してアカウント履歴を見るとき" name="okcancelignore" notext="取り消し" yestext="ページに移動"/>
 	</notification>
+	<notification name="ConfirmAddingChatParticipants">
+		既存の会話に人を加えると、新しい会話が作成されます。参加者全員に新しい会話についての通知が配信されます。
+		<usetemplate ignoretext="チャットの参加者の追加を確認してください" name="okcancelignore" notext="取り消し" yestext="OK"/>
+	</notification>
 	<notification name="ConfirmQuit">
 		終了しようとしています。続けますか?
 		<usetemplate ignoretext="終了時の確認" name="okcancelignore" notext="終了しない" yestext="終了"/>
@@ -2153,14 +2178,14 @@ Linden Lab
 			<button ignore="交換しない" name="No" text="キャンセル"/>
 		</form>
 	</notification>
-	<notification label="取り込み中の警告" name="BusyModePay">
-		現在、「取り込み中」モードのため、支払いと引き換えにアイテムを受け取ることができません。
+	<notification label="「通知を受けない」モードの警告" name="DoNotDisturbModePay">
+		「通知を受けない」をオンにします。この支払との交換で提供されるアイテムが受信されなくなります。
 
-この取引を行うために「取り込み中」の設定を解除しますか?
+このトランザクションを完了するために、「通知を受けない」をオフにしてもよろしいですか。
 		<form name="form">
-			<ignore name="ignore" save_option="true" text="取り込み中モード時に支払をするとき"/>
-			<button ignore="常に「取り込み中」の設定を解除" name="Yes" text="OK"/>
-			<button ignore="常に「取り込み中」の設定を継続" name="No" text="キャンセル"/>
+			<ignore name="ignore" text="「通知を受けない」モード時に、人や物を支払う予定です。"/>
+			<button ignore="「通知を受けない」モードを維持しない" name="Yes" text="OK"/>
+			<button ignore="「通知を受けない」モードを維持する" name="No" text="取り消し"/>
 		</form>
 	</notification>
 	<notification name="ConfirmDeleteProtectedCategory">
@@ -2296,11 +2321,8 @@ Web ページにリンクすると、他人がこの場所に簡単にアクセ
 	<notification name="GroupNotice">
 		件名: [SUBJECT]、メッセージ: [MESSAGE]
 	</notification>
-	<notification name="FriendOnline">
-		&lt;nolink&gt;[NAME]&lt;/nolink&gt; はオンラインです
-	</notification>
-	<notification name="FriendOffline">
-		&lt;nolink&gt;[NAME]&lt;/nolink&gt; はオフラインです
+	<notification name="FriendOnlineOffline">
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; は [STATUS] です
 	</notification>
 	<notification name="AddSelfFriend">
 		残念ながら自分自身をフレンド登録することはできません。
@@ -2530,13 +2552,6 @@ Web ページにリンクすると、他人がこの場所に簡単にアクセ
 	<notification name="DynamicPathfindingDisabled">
 		この地域(リージョン)でダイナミックパスファインディングが有効になっていません。パスファインディング LSL 呼び出しを使用するスクリプト化されたオブジェクトがこの地域(リージョン)では動作できません。
 	</notification>
-	<notification name="PathfindingRebakeNavmesh">
-		この地域(リージョン)のオブジェクトを変更すると、他の移動オブジェクトが正しく動作しなくなる恐れがあります。移動オブジェクトを正しく動作させるには、「地域の再構築」ボタンをクリックします。詳しい情報は見るには「ヘルプ」を選択してください。
-		<url name="url">
-			http://wiki.secondlife.com/wiki/Pathfinding_Tools_in_the_Second_Life_Viewer
-		</url>
-		<usetemplate helptext="ヘルプ" ignoretext="この地域(リージョン)のオブジェクトを変更すると、他の移動オブジェクトが正しく動作しなくなる恐れがあります。" name="okhelpignore" yestext="OK"/>
-	</notification>
 	<notification name="PathfindingCannotRebakeNavmesh">
 		エラーが発生しました。ネットワークまたはサーバーに問題があるか、制作権がない可能性があります。この問題は、一度ログアウトしてから、ログインし直すと解決される場合があります。
 		<usetemplate name="okbutton" yestext="OK"/>
@@ -2797,9 +2812,9 @@ Web ページにリンクすると、他人がこの場所に簡単にアクセ
 		</form>
 	</notification>
 	<notification name="ScriptQuestionCaution">
-		警告:オブジェクト &apos;&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;&apos; はあなたのリンデンドルアカウントへのトータルアクセスを希望しています。アクセスを許可すると、このオブジェクトはいつでもあなたのアカウントから資金を削除したり、今後警告を表示することなく継続的にアカウントを完全に空にできるようになります。
+		警告:オブジェクト &apos;&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;&apos; は、あなたのリンデンドルアカウントへのフルアクセスを要求しています。アクセスを許可すると、このオブジェクトは、特に警告を発せずに単発で、随時アカウントから資金を削除するか、アカウントを完全に空にします。
   
-このようなリクエストが正当であることは稀です。このオブジェクトがあなたのアカウントにアクセスしたい理由を完全に理解している場合を除き、アクセスの許可は避けてください。
+そのオブジェクトがアカウントへのアクセスを要求する理由がよくわからない場合は、アクセスを許可しないでください。
 		<form name="form">
 			<button name="Grant" text="トータルアクセスを許可"/>
 			<button name="Deny" text="拒否"/>
@@ -3378,4 +3393,627 @@ M キーを押して変更します。
 		[NUM_ITEMS] 個のアイテムを削除中です。続けますか?
 		<usetemplate ignoretext="複数のアイテムを削除しますか?" name="okcancelignore" notext="いいえ" yestext="はい"/>
 	</notification>
+	<notification name="AvatarFrozen">
+		[AV_FREEZER] によってあなたはフリーズされています。世界を動かすことも、世界とインタラクションすることもできません。
+	</notification>
+	<notification name="AvatarFrozenDuration">
+		[AV_FREEZER] によって、あなたは [AV_FREEZE_TIME] 秒間フリーズされました。世界を動かすことも、世界とインタラクションすることもできません。
+	</notification>
+	<notification name="YouFrozeAvatar">
+		アバターがフリーズされています。
+	</notification>
+	<notification name="AvatarHasUnFrozenYou">
+		[AV_FREEZER] によってフリーズが解除されています。
+	</notification>
+	<notification name="AvatarUnFrozen">
+		アバターのフリーズが解除されました。
+	</notification>
+	<notification name="AvatarFreezeFailure">
+		その区画の管理権限を持っていないため、フリーズに失敗しました。
+	</notification>
+	<notification name="AvatarFreezeThaw">
+		フリーズ期間が切れました。仕事に戻ってください。
+	</notification>
+	<notification name="AvatarCantFreeze">
+		残念ながら、そのユーザーをフリーズできません。
+	</notification>
+	<notification name="NowOwnObject">
+		これで、オブジェクト [OBJECT_NAME] の所有者になりました
+	</notification>
+	<notification name="CantRezOnLand">
+		この土地の所有者が許可していないため、[OBJECT_POS] でオブジェクトを Rez することができません。土地ツールを使用して、土地の所有を確認してください。
+	</notification>
+	<notification name="RezFailTooManyRequests">
+		リクエストが多すぎて、オブジェクトを Rez することができません。
+	</notification>
+	<notification name="SitFailCantMove">
+		今回移動できなかったため、座ることができません。
+	</notification>
+	<notification name="SitFailNotAllowedOnLand">
+		その土地に対して許可を受けていないため、座ることができません。
+	</notification>
+	<notification name="SitFailNotSameRegion">
+		移動して近づけてみてください。オブジェクトが同じリージョンにないため、オブジェクトを配置できません。
+	</notification>
+	<notification name="NoNewObjectRegionFull">
+		新しいオブジェクトを作成できません。リージョンが埋まっています。
+	</notification>
+	<notification name="FailedToPlaceObject">
+		指定した場所にオブジェクトを配置できませんでした。もう一度お試しください。
+	</notification>
+	<notification name="NoOwnNoGardening">
+		所有していない土地に木や草を植えることはできません。
+	</notification>
+	<notification name="NoCopyPermsNoObject">
+		オブジェクト &apos;[OBJ_NAME]&apos; をコピーする権限がないため、コピーに失敗しました。
+	</notification>
+	<notification name="NoTransPermsNoObject">
+		オブジェクト &apos;[OBJ_NAME]&apos; をあなたに転送できないため、コピーに失敗しました。
+	</notification>
+	<notification name="AddToNavMeshNoCopy">
+		オブジェクト &apos;[OBJ_NAME]&apos; がナビメッシュに貢献しているため、コピーに失敗しました。
+	</notification>
+	<notification name="DupeWithNoRootsSelected">
+		ルートオブジェクトを選択せずに複製します。
+	</notification>
+	<notification name="CantDupeCuzRegionIsFull">
+		リージョンが埋まっているため、オブジェクトのコピーを作成することができません。
+	</notification>
+	<notification name="CantDupeCuzParcelNotFound">
+		オブジェクトのコピーを作成できません。オブジェクトのある区画が見つかりません。
+	</notification>
+	<notification name="CantCreateCuzParcelFull">
+		区画がいっぱいのため、
+オブジェクトを作成できません。
+	</notification>
+	<notification name="RezAttemptFailed">
+		オブジェクトへの Rez の試みに失敗しました。
+	</notification>
+	<notification name="ToxicInvRezAttemptFailed">
+		このリージョンで問題を引き起こすアイテムは作成できません。
+	</notification>
+	<notification name="InvItemIsBlacklisted">
+		その持ち物アイテムはブラックリストに登録されています。
+	</notification>
+	<notification name="NoCanRezObjects">
+		現在あなたにはオブジェクトを作成するための許可がありません。
+	</notification>
+	<notification name="LandSearchBlocked">
+		土地の検索がブロックされました。
+短期間に多くの土地を検索したためです。
+しばらくしてから再度お試しください。
+	</notification>
+	<notification name="NotEnoughResourcesToAttach">
+		オブジェクトの着用に使用できるスクリプトリソースが足りません。
+	</notification>
+	<notification name="YouDiedAndGotTPHome">
+		死んでしまったので、ホームにテレポートされました。
+	</notification>
+	<notification name="EjectComingSoon">
+		ここへの入場が許可されていないため、[EJECT_TIME] 秒後に追放されます。
+	</notification>
+	<notification name="NoEnterServerFull">
+		サーバーが埋まっているため、
+このリージョンに入場することはできません。
+	</notification>
+	<notification name="SaveBackToInvDisabled">
+		「「持ち物」に保存」が無効になっています。
+	</notification>
+	<notification name="NoExistNoSaveToContents">
+		&apos;[OBJ_NAME]&apos; の Rez 元であるオブジェクトが存在しないため、このオブジェクトをオブジェクトコンテンツに保存できません。
+	</notification>
+	<notification name="NoModNoSaveToContents">
+		オブジェクト &apos;[DEST_NAME]&apos; を修正する権限がないため、オブジェクトのコンテンツに &apos;[OBJ_NAME]&apos; を保存できません。
+	</notification>
+	<notification name="NoSaveBackToInvDisabled">
+		インベントリに &apos;[OBJ_NAME]&apos; を保存することはできません - この操作が無効になっています。
+	</notification>
+	<notification name="NoCopyNoSelCopy">
+		オブジェクト &apos;[OBJ_NAME]&apos; を変更する権限を持っていないため、選択したものをコピーできません。
+	</notification>
+	<notification name="NoTransNoSelCopy">
+		オブジェクト &apos;[OBJ_NAME]&apos; を転送できないため、選択したものをコピーできません。
+	</notification>
+	<notification name="NoTransNoCopy">
+		オブジェクト &apos;[OBJ_NAME]&apos; を転送できないため、選択したものをコピーできません。
+	</notification>
+	<notification name="NoPermsNoRemoval">
+		シミュレータからのオブジェクト &apos;[OBJ_NAME]&apos; の削除は、権限システムによって無効にされています。
+	</notification>
+	<notification name="NoModNoSaveSelection">
+		オブジェクト &apos;[OBJ_NAME]&apos; を変更する権限を持っていないため、選択したものを保存できません。
+	</notification>
+	<notification name="NoCopyNoSaveSelection">
+		オブジェクト &apos;[OBJ_NAME]&apos; をコピーできないため、選択したものを保存できません。
+	</notification>
+	<notification name="NoModNoTaking">
+		オブジェクト &apos;[OBJ_NAME]&apos; を変更する権限を持っていないため、選択したものを取得できません。
+	</notification>
+	<notification name="RezDestInternalError">
+		内部エラー: 不明な宛先タイプ。
+	</notification>
+	<notification name="DeleteFailObjNotFound">
+		オブジェクトが見つからないため削除できませんでした。
+	</notification>
+	<notification name="SorryCantEjectUser">
+		残念ながら、そのユーザーを追放することはできません。
+	</notification>
+	<notification name="RegionSezNotAHome">
+		このリージョンでは、ここにホームの位置を設定できません。
+	</notification>
+	<notification name="HomeLocationLimits">
+		ホームの場所を設定できるのは、自分の土地か、またはメインランドのインフォハブでのみです。
+	</notification>
+	<notification name="HomePositionSet">
+		家の配置の設定。
+	</notification>
+	<notification name="AvatarEjected">
+		アバターが追放されました。
+	</notification>
+	<notification name="AvatarEjectFailed">
+		その区画の管理権限がないため、追放できませんでした。
+	</notification>
+	<notification name="CantMoveObjectParcelFull">
+		区画が埋まっているため、オブジェクト &apos;[OBJECT_NAME]&apos; を、リージョン [REGION_NAME] 内の [OBJ_POSITION] に移動できません。
+	</notification>
+	<notification name="CantMoveObjectParcelPerms">
+		オブジェクト &apos;[OBJECT_NAME]&apos; は、この区画で許可されていないため、リージョン [REGION_NAME] 内の [OBJ_POSITION] に移動できません。
+	</notification>
+	<notification name="CantMoveObjectParcelResources">
+		この区画でこのオブジェクトのリソースが不足しているため、オブジェクト &apos;[OBJECT_NAME]&apos; をリージョン [REGION_NAME] 内の [OBJ_POSITION] に移動できません。
+	</notification>
+	<notification name="CantMoveObjectRegionVersion">
+		オブジェクト &apos;[OBJECT_NAME]&apos; をリージョン [REGION_NAME] 内の [OBJ_POSITION] に移動することはできません。他のリージョンでは、リージョンの境界をまたいだこのオブジェクトを受信することができない古いバージョンを実行しているためです。
+	</notification>
+	<notification name="CantMoveObjectNavMesh">
+		リージョン境界をまたぐナビメッシュを変更できないため、オブジェクト &apos;[OBJECT_NAME]&apos; をリージョン [REGION_NAME] 内の [OBJ_POSITION] に移動できません。
+	</notification>
+	<notification name="CantMoveObjectWTF">
+		不明な理由により、オブジェクト &apos;[OBJECT_NAME]&apos; を、リージョン [REGION_NAME] 内の [OBJ_POSITION] に移動できません。
+([FAILURE_TYPE])
+	</notification>
+	<notification name="NoPermModifyObject">
+		そのオブジェクトを変更する権限がありません
+	</notification>
+	<notification name="CantEnablePhysObjContributesToNav">
+		ナビメッシュに貢献するオブジェクトに対して物理を有効にできません。
+	</notification>
+	<notification name="CantEnablePhysKeyframedObj">
+		キーフレームオブジェクトのために物理を有効にできません。
+	</notification>
+	<notification name="CantEnablePhysNotEnoughLandResources">
+		土地のリソースが足りないため、オブジェクトの物理を有効にできません。
+	</notification>
+	<notification name="CantEnablePhysCostTooGreat">
+		[MAX_OBJECTS] より大きい物理リソースコストを持つオブジェクトでは、物理を有効にできません。
+	</notification>
+	<notification name="PhantomWithConcavePiece">
+		このオブジェクトはファントムで、ナビメッシュに貢献しているため、くぼみを持たせることができません。
+	</notification>
+	<notification name="UnableAddItem">
+		アイテムを追加できません!
+	</notification>
+	<notification name="UnableEditItem">
+		これは編集できません!
+	</notification>
+	<notification name="NoPermToEdit">
+		これを編集する許可がありません。
+	</notification>
+	<notification name="NoPermToCopyInventory">
+		そのインベントリをコピーすることは許可されません。
+	</notification>
+	<notification name="CantSaveItemDoesntExist">
+		オブジェクトのコンテンツに保存できません。アイテムが存在していません。
+	</notification>
+	<notification name="CantSaveItemAlreadyExists">
+		オブジェクトのコンテンツに保存できません。同じ名前を持つアイテムがすでにインベントリに存在します。
+	</notification>
+	<notification name="CantSaveModifyAttachment">
+		オブジェクトのコンテンツに保存できません。このため、アタッチメントの権限が変更されます。
+	</notification>
+	<notification name="TooManyScripts">
+		スクリプトが多すぎます。
+	</notification>
+	<notification name="UnableAddScript">
+		テキストを追加できません!
+	</notification>
+	<notification name="AssetServerTimeoutObjReturn">
+		資産サーバーがタイムリーに応答しませんでした。オブジェクトが sim に返されました。
+	</notification>
+	<notification name="RegionDisablePhysicsShapes">
+		このリージョンでは、物理的シェイプが有効にされていません。
+	</notification>
+	<notification name="NoModNavmeshAcrossRegions">
+		リージョンの境界をまたぐナビメッシュは変更できません。
+	</notification>
+	<notification name="NoSetPhysicsPropertiesOnObjectType">
+		そのオブジェクトタイプの物理的プロパティを設定できません。
+	</notification>
+	<notification name="NoSetRootPrimWithNoShape">
+		ルートプリムを設定できないため、シェイプがありません。
+	</notification>
+	<notification name="NoRegionSupportPhysMats">
+		このリージョンでは、物理的素材が有効にされていません。
+	</notification>
+	<notification name="OnlyRootPrimPhysMats">
+		物理的素材を調整できるのは、ルートプリムだけです。
+	</notification>
+	<notification name="NoSupportCharacterPhysMats">
+		キャラクターへの物理的素材の設定はまだサポートされていません。
+	</notification>
+	<notification name="InvalidPhysMatProperty">
+		指定した物理的素材のプロパティが 1 つ以上無効です。
+	</notification>
+	<notification name="NoPermsAlterStitchingMeshObj">
+		メッシュオブジェクトの縫い目のタイプを変更することはできません。
+	</notification>
+	<notification name="NoPermsAlterShapeMeshObj">
+		メッシュオブジェクトの形状を変更することはできません
+	</notification>
+	<notification name="FullRegionCantEnter">
+		リージョンが埋まっているため、\nこのリージョンに入場できません。
+	</notification>
+	<notification name="LinkFailedOwnersDiffer">
+		リンクエラー -- 所有者が違います
+	</notification>
+	<notification name="LinkFailedNoModNavmeshAcrossRegions">
+		リンクエラー -- リージョンの境界をまたぐナビメッシュは変更できません。
+	</notification>
+	<notification name="LinkFailedNoPermToEdit">
+		リンクエラー -- 編集権限がありません。
+	</notification>
+	<notification name="LinkFailedTooManyPrims">
+		リンクエラー -- プリミティブが多すぎます。
+	</notification>
+	<notification name="LinkFailedCantLinkNoCopyNoTrans">
+		リンクエラー -- コピーなしと転送なしをリンクできません。
+	</notification>
+	<notification name="LinkFailedNothingLinkable">
+		リンクエラー -- リンクできるものがありません。
+	</notification>
+	<notification name="LinkFailedTooManyPathfindingChars">
+		リンクエラー -- パスファインディングの文字数が多すぎます
+	</notification>
+	<notification name="LinkFailedInsufficientLand">
+		リンクエラー -- 土地のリソースが足りません
+	</notification>
+	<notification name="LinkFailedTooMuchPhysics">
+		オブジェクトが使用している物理リソースが多すぎたため、ダイナミックスが無効にされました。
+	</notification>
+	<notification name="TeleportedHomeByObjectOnParcel">
+		区画 &apos;[PARCEL_NAME]&apos; のオブジェクト &apos;[OBJECT_NAME]&apos; によって、あなたはホームにテレポートされました。
+	</notification>
+	<notification name="TeleportedHomeByObject">
+		​オブジェクト ​&apos;[OBJECT_NAME]&apos; によって、あなたはホームへテレポートされています。
+	</notification>
+	<notification name="TeleportedByAttachment">
+		[ITEM_ID] へのアタッチメントによって、あなたはテレポートされています。
+	</notification>
+	<notification name="TeleportedByObjectOnParcel">
+		区画 &apos;[PARCEL_NAME]&apos; のオブジェクト &apos;[OBJECT_NAME]&apos; によって、あなたはテレポートされています。
+	</notification>
+	<notification name="TeleportedByObjectOwnedBy">
+		[OWNER_ID] が所有しているオブジェクト &apos;[OBJECT_NAME]&apos; によって、あなたはテレポートされています。
+	</notification>
+	<notification name="TeleportedByObjectUnknownUser">
+		不明なユーザーが所有しているオブジェクト &apos;[OBJECT_NAME]&apos; によって、あなたはテレポートされています。
+	</notification>
+	<notification name="CantCreateObjectRegionFull">
+		リクエストされたオブジェクトを作成できません。リージョンが埋まっています。
+	</notification>
+	<notification name="CantAttackMultipleObjOneSpot">
+		1 つの場所に複数のオブジェクトを着用することはできません。
+	</notification>
+	<notification name="CantCreateMultipleObjAtLoc">
+		ここでは、複数のオブジェクトを作成することはできません。
+	</notification>
+	<notification name="UnableToCreateObjTimeOut">
+		リクエストされたオブジェクトを作成できません。オブジェクトがデータベースに見つかりません。
+	</notification>
+	<notification name="UnableToCreateObjUnknown">
+		リクエストされたオブジェクトを作成できません。リクエストがタイムアウトになりました。もう一度お試しください。
+	</notification>
+	<notification name="UnableToCreateObjMissingFromDB">
+		要求されたオブジェクトを作成できません。もう一度お試しください。
+	</notification>
+	<notification name="RezFailureTookTooLong">
+		リクエストされたオブジェクトのロードに時間がかかりすぎたため、Rez に失敗しました。
+	</notification>
+	<notification name="FailedToPlaceObjAtLoc">
+		指定した場所にオブジェクトを配置できませんでした。もう一度お試しください。
+	</notification>
+	<notification name="CantCreatePlantsOnLand">
+		この土地に木を植えることはできません。
+	</notification>
+	<notification name="CantRestoreObjectNoWorldPos">
+		オブジェクトをリストアできません。ワールドの位置が見つかりません。
+	</notification>
+	<notification name="CantRezObjectInvalidMeshData">
+		メッシュデータが無効なため、オブジェクトを Rez することができません。
+	</notification>
+	<notification name="CantRezObjectTooManyScripts">
+		このリージョンに既に多くのスクリプトが存在するため、オブジェクトを Rez することができません。
+	</notification>
+	<notification name="CantCreateObjectNoAccess">
+		現在のアクセス権限では、そこにオブジェクトを作成できません。
+	</notification>
+	<notification name="CantCreateObject">
+		現在あなたにはオブジェクト作成する許可がありません。
+	</notification>
+	<notification name="InvalidObjectParams">
+		無効なオブジェクトパラメーター
+	</notification>
+	<notification name="CantDuplicateObjectNoAcess">
+		現在のアクセス権限では、ここにオブジェクトのコピーを作成できません。
+	</notification>
+	<notification name="CantChangeShape">
+		あなたにはこのシェイプを変更する許可がありません。
+	</notification>
+	<notification name="NoAccessToClaimObjects">
+		現在のアクセス権限では、ここにオブジェクトを取得できません。
+	</notification>
+	<notification name="DeedFailedNoPermToDeedForGroup">
+		あなたのグループにオブジェクトを譲渡する権限がないため、譲渡に失敗しました。
+	</notification>
+	<notification name="NoPrivsToBuyObject">
+		現在のアクセス権限では、ここでオブジェクトを購入できません。
+	</notification>
+	<notification name="CantAttachObjectAvatarSittingOnIt">
+		アバターがオブジェクトに存在するため、オブジェクトを着用できません。
+	</notification>
+	<notification name="WhyAreYouTryingToWearShrubbery">
+		木や草をアタッチメントとして着用できません。
+	</notification>
+	<notification name="CantAttachGroupOwnedObjs">
+		グループが所有しているオブジェクトは着用できません。
+	</notification>
+	<notification name="CantAttachObjectsNotOwned">
+		所有していないオブジェクトは着用できません。
+	</notification>
+	<notification name="CantAttachNavmeshObjects">
+		ナビメッシュに貢献しているオブジェクトは着用できません。
+	</notification>
+	<notification name="CantAttachObjectNoMovePermissions">
+		あなたにはオブジェクトを移動する権限がないため、そのオブジェクト添付できません。
+	</notification>
+	<notification name="CantAttachNotEnoughScriptResources">
+		オブジェクトの着用に使用できるスクリプトリソースが足りません。
+	</notification>
+	<notification name="CantDropItemTrialUser">
+		オブジェクトをここにドロップできません。フリートライアル領域をお試しください。
+	</notification>
+	<notification name="CantDropMeshAttachment">
+		メッシュアタッチメントをドロップすることはできません。インベントリから切り離して、ワールドで Rez してください。
+	</notification>
+	<notification name="CantDropAttachmentNoPermission">
+		アタッチメントのドロップに失敗しました。そこへドロップする権限がありません。
+	</notification>
+	<notification name="CantDropAttachmentInsufficientLandResources">
+		アタッチメントのドロップに失敗しました。利用できる土地リソースの数が足りません。
+	</notification>
+	<notification name="CantDropAttachmentInsufficientResources">
+		利用できるリソースが足りないため、アタッチメントのドロップに失敗しました。
+	</notification>
+	<notification name="CantDropObjectFullParcel">
+		ここにオブジェクトをドロップできません。区画が埋まっています。
+	</notification>
+	<notification name="CantTouchObjectBannedFromParcel">
+		土地区画に入場することを禁止されているため、このオブジェクトを触ったり、つかむことができません。
+	</notification>
+	<notification name="PlzNarrowDeleteParams">
+		削除パラメーターを絞ってください。
+	</notification>
+	<notification name="UnableToUploadAsset">
+		資産をアップロードできません。
+	</notification>
+	<notification name="CantTeleportCouldNotFindUser">
+		ホームをテレポートするユーザーが見つかりませんでした。
+	</notification>
+	<notification name="GodlikeRequestFailed">
+		過剰なリクエストが失敗しました
+	</notification>
+	<notification name="GenericRequestFailed">
+		一般的なリクエストに失敗しました
+	</notification>
+	<notification name="CantUploadPostcard">
+		ポストカードをアップロードできません。後でもう一度お試しください。
+	</notification>
+	<notification name="CantFetchInventoryForGroupNotice">
+		グループ通知のインベントリの詳細を取得できません。
+	</notification>
+	<notification name="CantSendGroupNoticeNotPermitted">
+		グループ通知の送信が許可されないため、送信できません。
+	</notification>
+	<notification name="CantSendGroupNoticeCantConstructInventory">
+		グループ通知を送信できません。持ち物を作成することもできません。
+	</notification>
+	<notification name="CantParceInventoryInNotice">
+		通知内の持ち物を検出できません。
+	</notification>
+	<notification name="TerrainUploadFailed">
+		地形のアップロードに失敗しました。
+	</notification>
+	<notification name="TerrainFileWritten">
+		地形ファイルが書き込まれました。
+	</notification>
+	<notification name="TerrainFileWrittenStartingDownload">
+		地形ファイルを書き出し、ダウンロードを開始しています...
+	</notification>
+	<notification name="TerrainBaked">
+		地形がベークされました。
+	</notification>
+	<notification name="TenObjectsDisabledPlzRefresh">
+		選択された最初の 10 個のオブジェクトのみが無効にされました。必要に応じて、リフレッシュして選択内容を追加してください。
+	</notification>
+	<notification name="UpdateViewerBuyParcel">
+		この区画を購入するには、ビューワをアップデートする必要があります。
+	</notification>
+	<notification name="CantBuyParcelNotForSale">
+		購入することができません。この区画は販売対象ではありません。
+	</notification>
+	<notification name="CantBuySalePriceOrLandAreaChanged">
+		販売価格または土地の面積が変わったため、購入できません。
+	</notification>
+	<notification name="CantBuyParcelNotAuthorized">
+		あなたはこの区画の委任された買い手ではありません。
+	</notification>
+	<notification name="CantBuyParcelAwaitingPurchaseAuth">
+		すでに購入の認証を待機しているため、この区画を購入できません。
+	</notification>
+	<notification name="CantBuildOverflowParcel">
+		区画をオーバーフローするため、ここでオブジェクトを構築することはできません。
+	</notification>
+	<notification name="SelectedMultipleOwnedLand">
+		所有者の違う土地を選びました。選択する面積を小さくして、もう一度試してください。
+	</notification>
+	<notification name="CantJoinTooFewLeasedParcels">
+		選択範囲のリース区画の数が少ないため、参加できません。
+	</notification>
+	<notification name="CantDivideLandMultipleParcelsSelected">
+		土地を分割できません。\n区画が複数選択されています。\nもっと小さい土地を選択してみてください。
+	</notification>
+	<notification name="CantDivideLandCantFindParcel">
+		土地を分解できません。\n区画が見つかりません。\n「Help」&gt;「Reprt Bug...」でレポートを行ってください。
+	</notification>
+	<notification name="CantDivideLandWholeParcelSelected">
+		土地を分割できません。区画全体を選択します。\n小さい土地を選択してみてください。
+	</notification>
+	<notification name="LandHasBeenDivided">
+		土地が分割されています。
+	</notification>
+	<notification name="PassPurchased">
+		入場許可を購入しました。
+	</notification>
+	<notification name="RegionDisallowsClassifieds">
+		リージョンでは、クラシファイド広告を許可しません。
+	</notification>
+	<notification name="LandPassExpireSoon">
+		この土地への入場許可はまもなく期限が切れます。
+	</notification>
+	<notification name="CantSitNoSuitableSurface">
+		配置に適した表面がありません。別の場所を試してみたください。
+	</notification>
+	<notification name="CantSitNoRoom">
+		ここには座る余地がありません。他の場所を試してください。
+	</notification>
+	<notification name="ClaimObjectFailedNoPermission">
+		権限がないため、オブジェクトを取得できませんでした。
+	</notification>
+	<notification name="ClaimObjectFailedNoMoney">
+		リンデンドルが足りないため、オブジェクトの取得に失敗しました。
+	</notification>
+	<notification name="CantDeedGroupLand">
+		グループ所有の土地は、譲渡できません。
+	</notification>
+	<notification name="BuyObjectFailedNoMoney">
+		リンデンドルが足りないため、オブジェクトの購入に失敗しました。
+	</notification>
+	<notification name="BuyInventoryFailedNoMoney">
+		リンデンドルが不足しているため、インベントリを購入できませんでした。
+	</notification>
+	<notification name="BuyPassFailedNoMoney">
+		リンデンドルが足りないため、この土地への入場許可を購入できません。
+	</notification>
+	<notification name="CantBuyPassTryAgain">
+		今すぐには入場許可を購入できません。後でもう一度お試しください。
+	</notification>
+	<notification name="CantCreateObjectParcelFull">
+		区画が埋まっているため、オブジェクトを\n作成することができません。
+	</notification>
+	<notification name="FailedPlacingObject">
+		指定した場所にオブジェクトを配置できませんでした。もう一度お試しください。
+	</notification>
+	<notification name="CantCreateLandmarkForEvent">
+		イベントのためのランドマークを作成することができません。
+	</notification>
+	<notification name="GodBeatsFreeze">
+		強力な力でフリーズを解除します。
+	</notification>
+	<notification name="SpecialPowersRequestFailedLogged">
+		特殊な権限のリクエストに失敗しました。このリクエストはログに記録されています。
+	</notification>
+	<notification name="ExpireExplanation">
+		システムは、現在あなたのリクエストを処理できません。リクエストがタイムアウトになりました。
+	</notification>
+	<notification name="DieExplanation">
+		システムは、あなたのリクエストを処理できません。
+	</notification>
+	<notification name="AddPrimitiveFailure">
+		プリミティブ広告を出すには、資金が足りません。
+	</notification>
+	<notification name="RezObjectFailure">
+		資金が足りないため、オブジェクトを作成できません。
+	</notification>
+	<notification name="ResetHomePositionNotLegal">
+		ホームが不正なため、ホームの位置をリセットします。
+	</notification>
+	<notification name="CantInviteRegionFull">
+		リージョンが埋まっているため、現在の場所に誰かを招待することはできません。後でもう一度お試しください。
+	</notification>
+	<notification name="CantSetHomeAtRegion">
+		このリージョンでは、ここにホームの位置を設定できません。
+	</notification>
+	<notification name="ListValidHomeLocations">
+		ホームの場所を設定できるのは、自分の土地か、またはメインランドのインフォハブでのみです。
+	</notification>
+	<notification name="SetHomePosition">
+		家の配置の設定。
+	</notification>
+	<notification name="CantDerezInventoryError">
+		インベントリエラーのため、オブジェクトの Rez 解除ができません。
+	</notification>
+	<notification name="CantCreateRequestedInv">
+		リクエストされたインベントリを作成できません。
+	</notification>
+	<notification name="CantCreateRequestedInvFolder">
+		リクエストされた持ち物フォルダーを作成できません。
+	</notification>
+	<notification name="CantCreateInventory">
+		そのインベントリを作成できません。
+	</notification>
+	<notification name="CantCreateLandmark">
+		ランドマークを作成できません。
+	</notification>
+	<notification name="CantCreateOutfit">
+		アウトフィットをすぐには作成できません。しばらくしてから再度お試しください。
+	</notification>
+	<notification name="InventoryNotForSale">
+		インベントリは販売対象ではありません。
+	</notification>
+	<notification name="CantFindInvItem">
+		持ち物アイテムを見つけることができません。
+	</notification>
+	<notification name="CantFindObject">
+		オブジェクトが見つかりません。
+	</notification>
+	<notification name="CantTransfterMoneyRegionDisabled">
+		オブジェクトへの送金は、このリージョンでは現在無効にされています。
+	</notification>
+	<notification name="CantPayNoAgent">
+		支払いの相手を把握できませんでした。
+	</notification>
+	<notification name="CantDonateToPublicObjects">
+		パブリックオブジェクトにリンデンドルを与えることはできません。
+	</notification>
+	<notification name="InventoryCreationInWorldObjectFailed">
+		インワールドオブジェクトでのインベントリ作成に失敗しました。
+	</notification>
+	<notification name="UserBalanceOrLandUsageError">
+		内部エラーが発生したため、ビューワを正しく更新できませんでした。ビューワに表示されるリンデンドルの残高または区画の所有は、サーバー上の実際の残高を反映していない可能性があります。
+	</notification>
+	<notification name="LargePrimAgentIntersect">
+		他のプレイヤーの関心を引く大きなプリムを作成できません。他のプレイヤーが移動したときに再試行してください。
+	</notification>
+	<notification name="PreferenceChatClearLog">
+		これにより、過去の会話のログ、およびそのファイルのすべてのバックアップが削除されます。
+		<usetemplate ignoretext="以前の会話のログを削除する前に確認してください。" name="okcancelignore" notext="取り消し" yestext="OK"/>
+	</notification>
+	<notification name="PreferenceChatDeleteTranscripts">
+		これにより、以前のすべての会話のテキストが削除されます。過去の会話のリストには影響しません。.txt および txt.backup の拡張子が付いたすべてのファイルが [FOLDER] フォルダーから削除されます。
+		<usetemplate ignoretext="テキストを削除するまえに確認してください。" name="okcancelignore" notext="取り消し" yestext="OK"/>
+	</notification>
+	<notification name="PreferenceChatPathChanged">
+		ファイルを移動できません。以前のパスがリストアされました。
+		<usetemplate ignoretext="ファイルを移動できません。以前のパスがリストアされました。" name="okignore" yestext="OK"/>
+	</notification>
 </notifications>
diff --git a/indra/newview/skins/default/xui/ja/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/ja/panel_avatar_list_item.xml
index 70d37c3badd..3ef8eba19f1 100644
--- a/indra/newview/skins/default/xui/ja/panel_avatar_list_item.xml
+++ b/indra/newview/skins/default/xui/ja/panel_avatar_list_item.xml
@@ -27,5 +27,6 @@
 	<icon name="permission_edit_mine_icon" tool_tip="このフレンドは、あなたのオブジェクトを編集・削除・取得することができます"/>
 	<icon name="permission_map_icon" tool_tip="このフレンドは地図上であなたの位置を表示できます"/>
 	<icon name="permission_online_icon" tool_tip="このフレンドはあなたがオンラインにいることを確認できます"/>
+	<button name="info_btn" tool_tip="詳細"/>
 	<button name="profile_btn" tool_tip="プロフィールの表示"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/ja/panel_block_list_sidetray.xml
index 5d6a6065aeb..9263e5f3476 100644
--- a/indra/newview/skins/default/xui/ja/panel_block_list_sidetray.xml
+++ b/indra/newview/skins/default/xui/ja/panel_block_list_sidetray.xml
@@ -1,10 +1,11 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="block_list_panel">
-	<text name="title_text">
-		ブロックリスト
-	</text>
-	<scroll_list name="blocked" tool_tip="現在ブロックされている住人一覧"/>
-	<button label="アバターをブロック" label_selected="住人をブロック..." name="Block resident..." tool_tip="ブロックしたい住人を選んでください"/>
-	<button label="名前でオブジェクトをブロック..." label_selected="名前でオブジェクトをブロック..." name="Block object by name..." tool_tip="名前でブロックしたいオブジェクトを選んでください"/>
-	<button label="ブロック解除" label_selected="ブロック解除" name="Unblock" tool_tip="ブロックリストから住人・オブジェクトを削除"/>
+	<panel label="bottom_panel" name="blocked_buttons_panel">
+		<filter_editor label="フィルター" name="blocked_filter_input"/>
+		<menu_button name="blocked_gear_btn" tool_tip="選択した住人・オブジェクトに対するアクション"/>
+		<menu_button name="view_btn" tool_tip="オプションを並べ替える"/>
+		<menu_button name="plus_btn" tool_tip="ブロックする住人・オブジェクトを選択"/>
+		<button name="unblock_btn" tool_tip="ブロックリストから住人・オブジェクトを削除"/>
+	</panel>
+	<block_list name="blocked" tool_tip="現在ブロックされている住人一覧"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_conversation_list_item.xml b/indra/newview/skins/default/xui/ja/panel_conversation_list_item.xml
new file mode 100644
index 00000000000..09ffb92d368
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/panel_conversation_list_item.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="conversation_list_item">
+	<layout_stack name="conversation_item_stack">
+		<layout_panel name="conversation_title_panel">
+			<text name="conversation_title" value="(ローディング)"/>
+		</layout_panel>
+	</layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_conversation_log_list_item.xml b/indra/newview/skins/default/xui/ja/panel_conversation_log_list_item.xml
new file mode 100644
index 00000000000..e05a67e31da
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/panel_conversation_log_list_item.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="conversation_log_list_item">
+	<icon name="voice_session_icon" tool_tip="ボイスチャット"/>
+	<icon name="unread_ims_icon" tool_tip="ログアウト時に表示されるメッセージ"/>
+	<button name="delete_btn" tool_tip="このエントリーを削除"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_group_list_item.xml b/indra/newview/skins/default/xui/ja/panel_group_list_item.xml
index 4b548049c8b..77d3d8f3916 100644
--- a/indra/newview/skins/default/xui/ja/panel_group_list_item.xml
+++ b/indra/newview/skins/default/xui/ja/panel_group_list_item.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="group_list_item">
 	<text name="group_name" value="不明"/>
+	<button name="info_btn" tool_tip="詳細"/>
 	<button name="profile_btn" tool_tip="プロフィールの表示"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_people.xml b/indra/newview/skins/default/xui/ja/panel_people.xml
index 88c31451b51..03ce87537a5 100644
--- a/indra/newview/skins/default/xui/ja/panel_people.xml
+++ b/indra/newview/skins/default/xui/ja/panel_people.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <!-- Side tray panel -->
 <panel label="人" name="people_panel">
 	<string name="no_recent_people" value="最近交流した人はいません。 一緒に何かする仲間をお探しですか? [secondlife:///app/search/people 検索] か [secondlife:///app/worldmap 世界地図] をお試しください。"/>
@@ -14,81 +14,53 @@
 	<string name="no_filtered_friends_msg">
 		お探しのものは見つかりましたか? [secondlife:///app/search/people/[SEARCH_TERM] 検索] をお試しください。
 	</string>
-	<string name="people_filter_label" value="人をフィルター"/>
-	<string name="groups_filter_label" value="グループをフィルター"/>
 	<string name="no_filtered_groups_msg" value="お探しのものは見つかりましたか? [secondlife:///app/search/groups/[SEARCH_TERM] 検索] をお試しください。"/>
 	<string name="no_groups_msg" value="グループをお探しですか? [secondlife:///app/search/groups 検索] をお試しください。"/>
 	<string name="MiniMapToolTipMsg" value="[地域](ダブルクリックで地図を開く。Shift‐ドラッグで水平・垂直移動)"/>
 	<string name="AltMiniMapToolTipMsg" value="[地域](ダブルクリックでテレポート。Shift‐ドラッグで水平・垂直移動)"/>
-	<filter_editor label="フィルター" name="filter_input"/>
 	<tab_container name="tabs">
 		<panel label="近く" name="nearby_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<menu_button name="nearby_view_sort_btn" tool_tip="オプション"/>
-				<button name="add_friend_btn" tool_tip="選択した住人をフレンドリストに登録"/>
+			<panel label="bottom_panel" name="nearby_buttons_panel">
+				<filter_editor label="人をフィルター" name="nearby_filter_input"/>
+				<button name="gear_btn" tool_tip="選択した人に対するアクション"/>
+				<menu_button name="nearby_view_btn" tool_tip="表示 / 並べ替えのオプション"/>
+				<button name="add_friend_btn" tool_tip="フレンド登録を申し出ます"/>
+				<dnd_button name="nearby_del_btn" tool_tip="フレンドとして選択されている人を削除"/>
 			</panel>
 		</panel>
-		<panel label="マイ フレンド" name="friends_panel">
+		<panel label="フレンド" name="friends_panel">
+			<panel label="bottom_panel" name="friends_buttons_panel">
+				<filter_editor label="人をフィルター" name="friends_filter_input"/>
+				<button name="gear_btn" tool_tip="選択した人に対するアクション"/>
+				<menu_button name="friends_view_btn" tool_tip="表示 / 並べ替えのオプション"/>
+				<button name="friends_add_btn" tool_tip="フレンド登録を申し出ます"/>
+				<dnd_button name="friends_del_btn" tool_tip="フレンドとして選択されている人を削除"/>
+			</panel>
 			<accordion name="friends_accordion">
 				<accordion_tab name="tab_online" title="オンライン"/>
 				<accordion_tab name="tab_all" title="全員"/>
 			</accordion>
-			<panel label="bottom_panel" name="bottom_panel">
-				<layout_stack name="bottom_panel">
-					<layout_panel name="options_gear_btn_panel">
-						<menu_button name="friends_viewsort_btn" tool_tip="オプションを表示します"/>
-					</layout_panel>
-					<layout_panel name="add_btn_panel">
-						<button name="add_btn" tool_tip="フレンド登録を申し出る"/>
-					</layout_panel>
-					<layout_panel name="trash_btn_panel">
-						<dnd_button name="del_btn" tool_tip="選択した人をフレンドリストから削除"/>
-					</layout_panel>
-				</layout_stack>
-			</panel>
 		</panel>
-		<panel label="マイ グループ" name="groups_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<menu_button name="groups_viewsort_btn" tool_tip="オプション"/>
-				<button name="plus_btn" tool_tip="グループに参加 / 新規グループを作成します"/>
-				<button name="activate_btn" tool_tip="選択したグループをアクティブにします"/>
+		<panel label="グループ" name="groups_panel">
+			<panel label="bottom_panel" name="groups_buttons_panel">
+				<filter_editor label="フィルターグループ" name="groups_filter_input"/>
+				<menu_button name="groups_gear_btn" tool_tip="選択したグループに対するアクション"/>
+				<menu_button name="groups_view_btn" tool_tip="表示 / 並べ替えのオプション"/>
+				<menu_button name="plus_btn" tool_tip="グループに参加 / 新規グループを作成します"/>
+				<dnd_button name="minus_btn" tool_tip="選択したグループから脱退"/>
 			</panel>
 		</panel>
 		<panel label="最新" name="recent_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<menu_button name="recent_viewsort_btn" tool_tip="オプション"/>
-				<button name="add_friend_btn" tool_tip="選択した住人をフレンドリストに登録"/>
+			<panel label="bottom_panel" name="recent_buttons_panel">
+				<filter_editor label="人をフィルター" name="recent_filter_input"/>
+				<button name="gear_btn" tool_tip="選択した人に対するアクション"/>
+				<menu_button name="recent_view_btn" tool_tip="表示 / 並べ替えのオプション"/>
+				<button name="add_friend_btn" tool_tip="フレンド登録を申し出ます"/>
+				<dnd_button name="recent_del_btn" tool_tip="フレンドとして選択されている人を削除"/>
 			</panel>
 		</panel>
+		<panel label="停止" name="blocked_panel">
+			<panel label="ブロックされた住人とオブジェクト" name="panel_block_list_sidetray"/>
+		</panel>
 	</tab_container>
-	<panel name="button_bar">
-		<layout_stack name="bottom_bar_ls">
-			<layout_panel name="view_profile_btn_lp">
-				<button label="プロフィール" name="view_profile_btn" tool_tip="写真、グループ、その他住人情報を表示"/>
-			</layout_panel>
-			<layout_panel name="im_btn_lp">
-				<button label="IM" name="im_btn" tool_tip="インスタントメッセージを開きます"/>
-			</layout_panel>
-			<layout_panel name="call_btn_lp">
-				<button label="コール" name="call_btn" tool_tip="この住人にコールする"/>
-			</layout_panel>
-			<layout_panel name="share_btn_lp">
-				<button label="共有" name="share_btn" tool_tip="インベントリのアイテムを共有する"/>
-			</layout_panel>
-			<layout_panel name="teleport_btn_lp">
-				<button label="テレポート" name="teleport_btn" tool_tip="テレポートを送ります"/>
-			</layout_panel>
-		</layout_stack>
-		<layout_stack name="bottom_bar_ls1">
-			<layout_panel name="group_info_btn_lp">
-				<button label="グループプロフィール" name="group_info_btn" tool_tip="グループプロフィールを表示します"/>
-			</layout_panel>
-			<layout_panel name="chat_btn_lp">
-				<button label="グループチャット" name="chat_btn" tool_tip="チャットを開始します"/>
-			</layout_panel>
-			<layout_panel name="group_call_btn_lp">
-				<button label="グループコール" name="group_call_btn" tool_tip="このグループにコールする"/>
-			</layout_panel>
-		</layout_stack>
-	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml b/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml
index b6e344ca480..ae5391c7bd8 100644
--- a/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml
@@ -1,34 +1,86 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="チャット" name="chat">
-	<text name="font_size">
-		文字の大きさ:
-	</text>
-	<radio_group name="chat_font_size">
-		<radio_item label="小" name="radio" value="0"/>
-		<radio_item label="中" name="radio2" value="1"/>
-		<radio_item label="大" name="radio3" value="2"/>
-	</radio_group>
-	<check_box initial_value="true" label="チャット中にタイピング動作のアニメーションを再生" name="play_typing_animation"/>
-	<check_box label="オフライン時に受け取った IM をメールで受信" name="send_im_to_email"/>
-	<check_box label="IM とチャット履歴に文字だけ表示する" name="plain_text_chat_history"/>
-	<check_box label="吹き出しチャット" name="bubble_text_chat"/>
-	<text name="show_ims_in_label">
-		IM の表示方法:
-	</text>
-	<text name="requires_restart_label">
-		(再起動後に反映)
-	</text>
-	<radio_group name="chat_window" tool_tip="インスタントメッセージを別フローター、または1つのフローターに複数タブで表示します(要再起動)">
-		<radio_item label="別々のウィンドウ" name="radio" value="0"/>
-		<radio_item label="タブ" name="radio2" value="1"/>
-	</radio_group>
-	<text name="disable_toast_label">
-		受信チャットのポップアップを有効にする
-	</text>
-	<check_box label="グループチャット" name="EnableGroupChatPopups" tool_tip="これを選択すると、グループチャットメッセージを受信した際にポップアップが表示されます"/>
-	<check_box label="IM チャット" name="EnableIMChatPopups" tool_tip="これを選択すると、インスタントメッセージを受信した際にポップアップが表示されます"/>
-	<spinner label="近くのチャットメッセージが表示される長さ:" name="nearby_toasts_lifetime"/>
-	<spinner label="近くのチャットメッセージが消えるまでの長さ:" name="nearby_toasts_fadingtime"/>
+	<panel>
+		<check_box initial_value="true" label="チャット中にタイピング動作のアニメーションを再生" name="play_typing_animation"/>
+		<check_box label="オフライン時に受け取った IM をメールで受信" name="send_im_to_email"/>
+		<check_box label="フレンドとグループ以外からはコールと IM を受信しない" name="voice_call_friends_only_check"/>
+		<text name="font_size">
+			文字の大きさ:
+		</text>
+		<combo_box name="chat_font_size">
+			<item label="小規模" name="Small" value="0"/>
+			<item label="中" name="Medium" value="1"/>
+			<item label="大規模" name="Large" value="2"/>
+		</combo_box>
+		<check_box label="吹き出しチャット" name="bubble_text_chat"/>
+	</panel>
+	<panel>
+		<text name="notifications">
+			通知
+		</text>
+		<text name="friend_ims">
+			フレンド IM:
+		</text>
+		<combo_box name="FriendIMOptions">
+			<item label="会話ウィンドウを開く" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="メッセージのポップアップ" name="PopUpMessage" value="toast"/>
+			<item label="Flash ツールバーボタン" name="FlashToolbarButton" value="flash"/>
+			<item label="フィルターなし" name="None" value="none"/>
+		</combo_box>
+		<text name="non_friend_ims">
+			非フレンド IM:
+		</text>
+		<combo_box name="NonFriendIMOptions">
+			<item label="会話ウィンドウを開く" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="メッセージのポップアップ" name="PopUpMessage" value="toast"/>
+			<item label="Flash ツールバーボタン" name="FlashToolbarButton" value="flash"/>
+			<item label="フィルターなし" name="None" value="none"/>
+		</combo_box>
+		<text name="conference_ims">
+			コンファレンス IM:
+		</text>
+		<combo_box name="ConferenceIMOptions">
+			<item label="会話ウィンドウを開く" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="メッセージのポップアップ" name="PopUpMessage" value="toast"/>
+			<item label="Flashツールバーボタン" name="FlashToolbarButton" value="flash"/>
+			<item label="フィルターなし" name="None" value="none"/>
+		</combo_box>
+		<text name="group_chat">
+			グループチャット:
+		</text>
+		<combo_box name="GroupChatOptions">
+			<item label="会話ウィンドウを開く" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="メッセージのポップアップ" name="PopUpMessage" value="toast"/>
+			<item label="Flash ツールバーボタン" name="FlashToolbarButton" value="flash"/>
+			<item label="なし" name="None" value="none"/>
+		</combo_box>
+		<text name="nearby_chat">
+			近くのチャット:
+		</text>
+		<combo_box name="NearbyChatOptions">
+			<item label="会話ウィンドウを開く" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="メッセージのポップアップ" name="PopUpMessage" value="toast"/>
+			<item label="Flash ツールバーボタン" name="FlashToolBarButton" value="flash"/>
+			<item label="フィルターなし" name="None" value="none"/>
+		</combo_box>
+		<text name="notifications_alert">
+			すべての通知を一時的に受け付けないようにするには、「コミュニケート」&gt;「通知を受けない」を使用します。
+		</text>
+	</panel>
+	<panel>
+		<text name="play_sound">
+			音の再生:
+		</text>
+		<check_box label="新しい会話" name="new_conversation"/>
+		<check_box label="ボイスコールの着信" name="incoming_voice_call"/>
+		<check_box label="テレポートを渡す" name="teleport_offer"/>
+		<check_box label="アイテムのオファー" name="inventory_offer"/>
+	</panel>
+	<panel>
+		<button label="ログのクリア..." name="clear_log"/>
+		<button label="テキストの削除..." name="delete_transcripts"/>
+		<button label="参照..." label_selected="参照" name="log_path_button"/>
+	</panel>
 	<button label="他の言語..." name="ok_btn"/>
 	<button label="自動置換..." name="autoreplace_showgui"/>
 	<button label="スペルチェック中..." name="spellcheck_showgui"/>
diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_general.xml b/indra/newview/skins/default/xui/ja/panel_preferences_general.xml
index 91e1514e496..d70af7e099d 100644
--- a/indra/newview/skins/default/xui/ja/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/ja/panel_preferences_general.xml
@@ -69,9 +69,9 @@
 		<combo_box.item label="一時退席設定なし" name="item4"/>
 	</combo_box>
 	<text name="text_box3">
-		取り込み中モード時の返事:
+		「通知を受けない」応答:
 	</text>
-	<text_editor name="busy_response">
+	<text_editor name="do_not_disturb_response">
 		log_in_to_change
 	</text_editor>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/sidepanel_task_info.xml b/indra/newview/skins/default/xui/ja/sidepanel_task_info.xml
index c61c73657fc..4f65c8477bc 100644
--- a/indra/newview/skins/default/xui/ja/sidepanel_task_info.xml
+++ b/indra/newview/skins/default/xui/ja/sidepanel_task_info.xml
@@ -72,6 +72,7 @@
 			<combo_box.item label="オブジェクトを買う" name="Buyobject"/>
 			<combo_box.item label="オブジェクトに支払う" name="Payobject"/>
 			<combo_box.item label="開く" name="Open"/>
+			<combo_box.item label="ズーム" name="Zoom"/>
 		</combo_box>
 		<panel name="perms_inv">
 			<text name="perm_modify">
diff --git a/indra/newview/skins/default/xui/ja/strings.xml b/indra/newview/skins/default/xui/ja/strings.xml
index 50697e55001..b27904c4d74 100644
--- a/indra/newview/skins/default/xui/ja/strings.xml
+++ b/indra/newview/skins/default/xui/ja/strings.xml
@@ -137,7 +137,7 @@
 		終了
 	</string>
 	<string name="create_account_url">
-		http://join.secondlife.com/index.php?lang=ja-JP&amp;sourceid=[sourceid]
+		http://join.secondlife.com/?sourceid=[sourceid]
 	</string>
 	<string name="LoginFailedViewerNotPermitted">
 		お使いの古いビューワでは Second Life にアクセスできません。以下のページから新しいビューワをダウンロードしてください:
@@ -622,8 +622,8 @@ support@secondlife.com にお問い合わせください。
 	<string name="AvatarAway">
 		一時退席中
 	</string>
-	<string name="AvatarBusy">
-		取り込み中
+	<string name="AvatarDoNotDisturb">
+		通知を受けない
 	</string>
 	<string name="AvatarMuted">
 		ブロック中
@@ -859,6 +859,12 @@ support@secondlife.com にお問い合わせください。
 	<string name="ST_NO_JOINT">
 		ROOT または JOINT が見つかりません
 	</string>
+	<string name="NearbyChatTitle">
+		近くのチャット
+	</string>
+	<string name="NearbyChatLabel">
+		(近くのチャット)
+	</string>
 	<string name="whisper">
 		のささやき:
 	</string>
@@ -922,12 +928,15 @@ support@secondlife.com にお問い合わせください。
 	<string name="ControlYourCamera">
 		カメラのコントロール
 	</string>
-	<string name="TeleportYourAgent">
-		あなたをテレポート
-	</string>
 	<string name="NotConnected">
 		接続されていません
 	</string>
+	<string name="AgentNameSubst">
+		(あなた)
+	</string>
+	<string name="TeleportYourAgent">
+		あなたをテレポート
+	</string>
 	<string name="SIM_ACCESS_PG">
 		General
 	</string>
@@ -1009,18 +1018,6 @@ support@secondlife.com にお問い合わせください。
 	<string name="dictionary_files">
 		辞書
 	</string>
-	<string name="AvatarSetNotAway">
-		一時退席中解除
-	</string>
-	<string name="AvatarSetAway">
-		一時退席中
-	</string>
-	<string name="AvatarSetNotBusy">
-		取り込み中解除
-	</string>
-	<string name="AvatarSetBusy">
-		取り込み中
-	</string>
 	<string name="shape">
 		シェイプ
 	</string>
@@ -1989,8 +1986,8 @@ support@secondlife.com にお問い合わせください。
 	<string name="PanelContentsNewScript">
 		新規スクリプト
 	</string>
-	<string name="BusyModeResponseDefault">
-		メッセージを送った住人は、誰にも邪魔をされたくないため現在「取り込み中」モードです。  あなたのメッセージは、あとで確認できるように IM パネルに表示されます。
+	<string name="DoNotDisturbModeResponseDefault">
+		この住民が「通知を受けない」をオンにすると、あなたのメッセージが後で表示されるようになります。
 	</string>
 	<string name="MuteByName">
 		(名称別)
@@ -2103,9 +2100,6 @@ support@secondlife.com にお問い合わせください。
 	<string name="GroupMoneyDate">
 		[year,datetime,utc]年[mth,datetime,utc]月[day,datetime,utc]日[weekday,datetime,utc]
 	</string>
-	<string name="ViewerObjectContents">
-		内容
-	</string>
 	<string name="AcquiredItems">
 		取得アイテム
 	</string>
@@ -3877,7 +3871,7 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
 		General リージョン
 	</string>
 	<string name="LocationCtrlSeeAVsTooltip">
-		この区画外にアバターを見えるようにして、チャットも許可
+		この区画内のアバターは、この区画の外にいるアバターからは見ることも聞くこともできません。
 	</string>
 	<string name="LocationCtrlPathfindingDirtyTooltip">
 		地域(リージョン)が再構築されるまで、移動するオブジェクトは正しく動作しない可能性があります。
@@ -3954,6 +3948,12 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
 	<string name="IM_unblock_only_groups_friends">
 		このメッセージを表示するには、「環境設定」の「プライバシー」で「フレンドとグループ以外からはコールと IM を受信しない」チェックボックスをオフにします。
 	</string>
+	<string name="OnlineStatus">
+		オンライン
+	</string>
+	<string name="OfflineStatus">
+		オフライン
+	</string>
 	<string name="answered_call">
 		相手がコールを受けました
 	</string>
@@ -3963,6 +3963,9 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
 	<string name="you_joined_call">
 		ボイスコールに参加しました
 	</string>
+	<string name="you_auto_rejected_call-im">
+		「通知を受けない」がオンのときに、自動的にボイスコールを拒否しました。
+	</string>
 	<string name="name_started_call">
 		[NAME] はボイスコールを開始します
 	</string>
@@ -3979,7 +3982,7 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
 		接続中...
 	</string>
 	<string name="conference-title">
-		アドホックコンファレンス
+		複数人チャット
 	</string>
 	<string name="conference-title-incoming">
 		[AGENT_NAME] とコンファレンスする
@@ -4859,6 +4862,9 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
 	<string name="Command_Chat_Label">
 		チャット
 	</string>
+	<string name="Command_Conversations_Label">
+		会話
+	</string>
 	<string name="Command_Compass_Label">
 		コンパス
 	</string>
@@ -4934,6 +4940,9 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
 	<string name="Command_Chat_Tooltip">
 		近くの人と文字チャットする
 	</string>
+	<string name="Command_Conversations_Tooltip">
+		全員との会話
+	</string>
 	<string name="Command_Compass_Tooltip">
 		コンパス
 	</string>
@@ -5063,4 +5072,13 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
 	<string name="UserDictionary">
 		[User]
 	</string>
+	<string name="logging_calls_disabled_log_empty">
+		会話はログに記録されていません。ログの記録を開始するには、「環境設定」&gt;「チャット」で「保存: ログのみ」または「保存: ログと会話のテキスト」を選択します。
+	</string>
+	<string name="logging_calls_disabled_log_not_empty">
+		これ以上の会話は記録されません。ログの記録を再開するには、「環境設定」&gt;「チャット」で「保存: ログのみ」または「保存: ログと会話のテキスト」を選択します。
+	</string>
+	<string name="logging_calls_enabled_log_empty">
+		ログイン時の会話はありません。誰かにご連絡した後、または誰かがあなたに連絡した後、ログエントリがここに表示されます。
+	</string>
 </strings>
diff --git a/indra/newview/skins/default/xui/pt/floater_conversation_log.xml b/indra/newview/skins/default/xui/pt/floater_conversation_log.xml
new file mode 100644
index 00000000000..ae7dd3c4411
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/floater_conversation_log.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_conversation_log" title="REGISTRO DE CONVERSA">
+	<panel name="buttons_panel">
+		<filter_editor label="Filtrar pessoas" name="people_filter_input"/>
+		<menu_button name="conversation_view_btn" tool_tip="Opções de exibição/ordenação"/>
+		<menu_button name="conversations_gear_btn" tool_tip="Ações em uma pessoa ou um grupo selecionado"/>
+	</panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_conversation_preview.xml b/indra/newview/skins/default/xui/pt/floater_conversation_preview.xml
new file mode 100644
index 00000000000..97a2e8327c0
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/floater_conversation_preview.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="preview_conversation" title="CONVERSA:">
+	<floater.string name="Title">
+		CONVERSA: [NAME]
+	</floater.string>
+	<text name="page_label" value="Página"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_im_container.xml b/indra/newview/skins/default/xui/pt/floater_im_container.xml
index 0fbb826a964..a1cea72b1e0 100644
--- a/indra/newview/skins/default/xui/pt/floater_im_container.xml
+++ b/indra/newview/skins/default/xui/pt/floater_im_container.xml
@@ -1,2 +1,29 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<multi_floater name="floater_im_box" title="CONVERSAS"/>
+<multi_floater name="floater_im_box" title="CONVERSAS">
+	<string name="collapse_icon" value="Conv_toolbar_collapse"/>
+	<string name="expand_icon" value="Conv_toolbar_expand"/>
+	<layout_stack name="conversations_stack">
+		<layout_panel name="conversations_layout_panel">
+			<layout_stack name="conversations_pane_buttons_stack">
+				<layout_panel name="conversations_pane_buttons_expanded">
+					<menu_button name="sort_btn" tool_tip="Opções de exibição/ordenação"/>
+					<button name="add_btn" tool_tip="Iniciar uma nova conversa"/>
+					<button name="speak_btn" tool_tip="Fale com pessoas usando seu microfone"/>
+				</layout_panel>
+				<layout_panel name="conversations_pane_buttons_collapsed">
+					<button name="expand_collapse_btn" tool_tip="Recolher/expandir esta lista"/>
+				</layout_panel>
+			</layout_stack>
+		</layout_panel>
+		<layout_panel name="messages_layout_panel">
+			<panel_container name="im_box_tab_container">
+				<panel name="stub_panel">
+					<button name="stub_collapse_btn" tool_tip="Recolher este painel"/>
+					<text name="stub_textbox">
+						Esta conversa está em uma janela separada.   [secondlife:/// Trazer de volta.]
+					</text>
+				</panel>
+			</panel_container>
+		</layout_panel>
+	</layout_stack>
+</multi_floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_im_session.xml b/indra/newview/skins/default/xui/pt/floater_im_session.xml
index 5543ffa41da..9f6a7a06ad0 100644
--- a/indra/newview/skins/default/xui/pt/floater_im_session.xml
+++ b/indra/newview/skins/default/xui/pt/floater_im_session.xml
@@ -1,8 +1,59 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="panel_im">
-	<layout_stack name="im_panels">
-		<layout_panel>
-			<line_editor label="Para" name="chat_editor"/>
-		</layout_panel>
-	</layout_stack>
+	<floater.string name="call_btn_start">
+		Conv_toolbar_open_call
+	</floater.string>
+	<floater.string name="call_btn_stop">
+		Conv_toolbar_hang_up
+	</floater.string>
+	<floater.string name="collapseline_icon" value="Conv_collapse_to_one_line"/>
+	<floater.string name="expandline_icon" value="Conv_expand_one_line"/>
+	<floater.string name="collapse_icon" value="Conv_toolbar_collapse"/>
+	<floater.string name="expand_icon" value="Conv_toolbar_expand"/>
+	<floater.string name="tear_off_icon" value="Conv_toolbar_arrow_ne"/>
+	<floater.string name="return_icon" value="Conv_toolbar_arrow_sw"/>
+	<floater.string name="participant_added" value="[NAME] foi convidado para a conversa."/>
+	<floater.string name="multiple_participants_added" value="[NAME] foram convidados para a conversa."/>
+	<floater.string name="tooltip_to_separate_window" value="Mover esta conversa para uma janela separada"/>
+	<floater.string name="tooltip_to_main_window" value="Mover esta conversa para a janela principal"/>
+	<floater.string name="start_call_button_tooltip" value="Abrir conexão por voz"/>
+	<floater.string name="end_call_button_tooltip" value="Encerrar conexão por voz"/>
+	<floater.string name="expcol_button_not_tearoff_tooltip" value="Recolher este painel"/>
+	<floater.string name="expcol_button_tearoff_and_expanded_tooltip" value="Recolher lista de participantes"/>
+	<floater.string name="expcol_button_tearoff_and_collapsed_tooltip" value="Expandir a lista de participantes"/>
+	<view name="contents_view">
+		<layout_stack name="main_stack">
+			<layout_panel name="toolbar_panel">
+				<menu_button name="view_options_btn" tool_tip="Opções de exibição/ordenação"/>
+				<menu_button name="gear_btn" tool_tip="Ações nas pessoas selecionadas"/>
+				<button name="add_btn" tool_tip="Adicionar alguém a esta conversa"/>
+				<button name="voice_call_btn" tool_tip="Abrir conexão por voz"/>
+				<button name="close_btn" tool_tip="Encerrar esta conversa"/>
+				<button name="expand_collapse_btn" tool_tip="Recolher/expandir este painel"/>
+			</layout_panel>
+			<layout_panel name="body_panel">
+				<layout_stack name="im_panels">
+					<layout_panel name="right_part_holder">
+						<panel name="trnsAndChat_panel">
+							<layout_stack name="translate_and_chat_stack">
+								<layout_panel name="translate_chat_checkbox_lp">
+									<check_box label="Traduzir bate-papo" name="translate_chat_checkbox"/>
+								</layout_panel>
+							</layout_stack>
+						</panel>
+					</layout_panel>
+				</layout_stack>
+			</layout_panel>
+			<layout_panel name="chat_layout_panel">
+				<layout_stack name="input_panels">
+					<layout_panel name="input_editor_layout_panel">
+						<chat_editor label="Para" name="chat_editor"/>
+					</layout_panel>
+					<layout_panel name="input_button_layout_panel">
+						<button name="minz_btn" tool_tip="Mostrar/ocultar painel de mensagens"/>
+					</layout_panel>
+				</layout_stack>
+			</layout_panel>
+		</layout_stack>
+	</view>
 </floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_incoming_call.xml b/indra/newview/skins/default/xui/pt/floater_incoming_call.xml
index 6344258fa0c..1e86f847ade 100644
--- a/indra/newview/skins/default/xui/pt/floater_incoming_call.xml
+++ b/indra/newview/skins/default/xui/pt/floater_incoming_call.xml
@@ -25,9 +25,9 @@
 		Sair do [CURRENT_CHAT] e entrar neste bate-papo de voz?
 	</floater.string>
 	<text name="question">
-		Sair do [CURRENT_CHAT] e entrar neste bate-papo?
+		Se você atender, será desconectado de suas conversas de voz atuais.
 	</text>
-	<button label="Aceitar" label_selected="Aceitar" name="Accept"/>
-	<button label="Rejeitar" label_selected="Rejeitar" name="Reject"/>
-	<button label="Enviar MI" name="Start IM"/>
+	<button label="Atender" label_selected="Atender" name="Accept"/>
+	<button label="Ignorar" label_selected="Ignorar" name="Reject"/>
+	<button label="Iniciar MI em vez disso" name="Start IM"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_pathfinding_console.xml b/indra/newview/skins/default/xui/pt/floater_pathfinding_console.xml
index 182f2513e0c..d04cf2a173c 100644
--- a/indra/newview/skins/default/xui/pt/floater_pathfinding_console.xml
+++ b/indra/newview/skins/default/xui/pt/floater_pathfinding_console.xml
@@ -71,7 +71,7 @@
 			<text name="show_label">
 				Exibir:
 			</text>
-			<check_box label="Mundo" name="show_world"/>
+			<check_box label="Testar" name="show_world"/>
 			<check_box label="Apenas móveis" name="show_world_movables_only"/>
 			<check_box label="Navmesh" name="show_navmesh"/>
 			<text name="show_walkability_label">
diff --git a/indra/newview/skins/default/xui/pt/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/pt/floater_texture_ctrl.xml
index a75cf34a944..ba4ef0afdef 100644
--- a/indra/newview/skins/default/xui/pt/floater_texture_ctrl.xml
+++ b/indra/newview/skins/default/xui/pt/floater_texture_ctrl.xml
@@ -19,7 +19,7 @@
 	<button label="Padrão" label_selected="Padrão" name="Default"/>
 	<button label="Branco" label_selected="Branco" name="Blank"/>
 	<button label="Nenhum" label_selected="Nenhum" name="None"/>
-	<check_box initial_value="true" label="Visualização em tempo real" name="apply_immediate_check"/>
+	<check_box initial_value="true" label="Inscrever-se agora" name="apply_immediate_check"/>
 	<text name="preview_disabled" value="Visualização desativada"/>
 	<filter_editor label="Filtrar texturas" name="inventory search editor"/>
 	<check_box initial_value="false" label="Exibir pastas" name="show_folders_check"/>
diff --git a/indra/newview/skins/default/xui/pt/floater_voice_chat_volume.xml b/indra/newview/skins/default/xui/pt/floater_voice_chat_volume.xml
new file mode 100644
index 00000000000..de7aa2df12e
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/floater_voice_chat_volume.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_voice_volume" title="VOLUME DO BATE-PAPO DE VOZ">
+	<slider label="Bate-papo de voz" name="chat_voice_volume"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_voice_effect.xml b/indra/newview/skins/default/xui/pt/floater_voice_effect.xml
index b29ca3d699f..71d3c33ae57 100644
--- a/indra/newview/skins/default/xui/pt/floater_voice_effect.xml
+++ b/indra/newview/skins/default/xui/pt/floater_voice_effect.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater label="Lugares" name="voice_effects" title="EFEITOS DE VOZ">
+<floater label="Lugares" name="voice_effects" title="AMOSTRA DE DISTORÇÃO DE VOZ">
 	<string name="no_voice_effect">
 		(Não distorcer voz)
 	</string>
diff --git a/indra/newview/skins/default/xui/pt/floater_voice_volume.xml b/indra/newview/skins/default/xui/pt/floater_voice_volume.xml
new file mode 100644
index 00000000000..dae47a99ae2
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/floater_voice_volume.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!--
+  Not can_close / no title to avoid window chrome
+  Single instance - only have one at a time, recycle it each spawn
+-->
+<floater name="floater_voice_volume" title="VOLUME DE VOZ">
+	<slider name="volume_slider" tool_tip="Volume de voz" value="0.5"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/pt/menu_cof_gear.xml b/indra/newview/skins/default/xui/pt/menu_cof_gear.xml
index 8716992a5e0..b59895573ee 100644
--- a/indra/newview/skins/default/xui/pt/menu_cof_gear.xml
+++ b/indra/newview/skins/default/xui/pt/menu_cof_gear.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear COF">
+<toggleable_menu name="Gear COF">
 	<menu label="Roupas novas" name="COF.Gear.New_Clothes"/>
-	<menu label="Nova parte do corpo" name="COF.Geear.New_Body_Parts"/>
-</menu>
+	<menu label="Novas partes do corpo" name="COF.Gear.New_Body_Parts"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_conversation.xml b/indra/newview/skins/default/xui/pt/menu_conversation.xml
new file mode 100644
index 00000000000..01316b887d4
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_conversation.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_conversation_participant">
+	<menu_item_call label="Encerrar conversa" name="close_conversation"/>
+	<menu_item_call label="Abrir conversa de voz" name="open_voice_conversation"/>
+	<menu_item_call label="Desconectar de voz" name="disconnect_from_voice"/>
+	<menu_item_call label="Exibir perfil" name="view_profile"/>
+	<menu_item_call label="MI" name="im"/>
+	<menu_item_call label="Oferecer teletransporte" name="offer_teleport"/>
+	<menu_item_call label="Chamada de voz" name="voice_call"/>
+	<menu_item_call label="Histórico de bate-papo..." name="chat_history"/>
+	<menu_item_call label="Adicionar amigo" name="add_friend"/>
+	<menu_item_call label="Remover amigo" name="remove_friend"/>
+	<menu_item_call label="Remover amigos" name="remove_friends"/>
+	<menu_item_call label="Convidar para entrar no grupo..." name="invite_to_group"/>
+	<menu_item_call label="Mais zoom" name="zoom_in"/>
+	<menu_item_call label="Mapa" name="map"/>
+	<menu_item_call label="Compartilhar" name="share"/>
+	<menu_item_call label="Pagar" name="pay"/>
+	<menu_item_check label="Bloquear voz" name="block_unblock"/>
+	<menu_item_check label="Bloquear texto" name="MuteText"/>
+	<menu_item_call label="Perfil do grupo" name="group_profile"/>
+	<menu_item_call label="Ativar grupo" name="activate_group"/>
+	<menu_item_call label="Sair do grupo" name="leave_group"/>
+	<context_menu label="Opções do moderador &gt;" name="Moderator Options">
+		<menu_item_check label="Pode bater papo por escrito" name="AllowTextChat"/>
+		<menu_item_call label="Silenciar este participante" name="ModerateVoiceMuteSelected"/>
+		<menu_item_call label="Desfazer silenciar deste participante" name="ModerateVoiceUnMuteSelected"/>
+		<menu_item_call label="Silenciar todos" name="ModerateVoiceMute"/>
+		<menu_item_call label="Desfazer silenciar para todos" name="ModerateVoiceUnmute"/>
+	</context_menu>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_conversation_log_gear.xml b/indra/newview/skins/default/xui/pt/menu_conversation_log_gear.xml
new file mode 100644
index 00000000000..616e6db46e9
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_conversation_log_gear.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Conversation Context Menu">
+	<menu_item_call label="MI..." name="IM"/>
+	<menu_item_call label="Chamada de voz..." name="Call"/>
+	<menu_item_call label="Abrir histórico de bate-papo..." name="Chat history"/>
+	<menu_item_call label="Exibir perfil" name="View Profile"/>
+	<menu_item_call label="Oferecer teletransporte" name="teleport"/>
+	<menu_item_call label="Adicionar amigo" name="add_friend"/>
+	<menu_item_call label="Remover amigo" name="remove_friend"/>
+	<menu_item_call label="Convidar para entrar no grupo..." name="Invite"/>
+	<menu_item_call label="Mapa" name="Map"/>
+	<menu_item_call label="Compartilhar" name="Share"/>
+	<menu_item_call label="Pagar" name="Pay"/>
+	<menu_item_check label="Bloquear/desbloquear" name="Block/Unblock"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_conversation_log_view.xml b/indra/newview/skins/default/xui/pt/menu_conversation_log_view.xml
new file mode 100644
index 00000000000..cab81175a08
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_conversation_log_view.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_conversation_view">
+	<menu_item_check label="Ordenar por nome" name="sort_by_name"/>
+	<menu_item_check label="Ordenar por data" name="sort_by_date"/>
+	<menu_item_check label="Ordenar com amigos acima" name="sort_by_friends"/>
+	<menu_item_call label="Exibir histórico de Bate-papo local..." name="view_nearby_chat_history"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_im_conversation.xml b/indra/newview/skins/default/xui/pt/menu_im_conversation.xml
new file mode 100644
index 00000000000..a8434dc3364
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_im_conversation.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Conversation Gear Menu">
+	<menu_item_call label="Exibir perfil" name="View Profile"/>
+	<menu_item_call label="Adicionar amigo" name="Add Friend"/>
+	<menu_item_call label="Remover amigo" name="remove_friend"/>
+	<menu_item_call label="Oferecer teletransporte" name="offer_teleport"/>
+	<menu_item_call label="Convidar para entrar no grupo..." name="invite_to_group"/>
+	<menu_item_call label="Histórico de bate-papo..." name="chat_history"/>
+	<menu_item_call label="Mais zoom" name="zoom_in"/>
+	<menu_item_call label="Mapa" name="map"/>
+	<menu_item_call label="Compartilhar" name="Share"/>
+	<menu_item_call label="Pagar" name="Pay"/>
+	<menu_item_check label="Bloquear voz" name="Block/Unblock"/>
+	<menu_item_check label="Bloquear texto" name="MuteText"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_im_session_showmodes.xml b/indra/newview/skins/default/xui/pt/menu_im_session_showmodes.xml
new file mode 100644
index 00000000000..398b890f667
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_im_session_showmodes.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_modes">
+	<menu_item_check label="Exibição compacta" name="compact_view"/>
+	<menu_item_check label="Exibição expandida" name="expanded_view"/>
+	<menu_item_check label="Mostrar hora" name="IMShowTime"/>
+	<menu_item_check label="Mostrar nomes em conversas individuais" name="IMShowNamesForP2PConv"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_object_icon.xml b/indra/newview/skins/default/xui/pt/menu_object_icon.xml
index 7af760a6ee4..df224a88fa2 100644
--- a/indra/newview/skins/default/xui/pt/menu_object_icon.xml
+++ b/indra/newview/skins/default/xui/pt/menu_object_icon.xml
@@ -2,4 +2,6 @@
 <menu name="Object Icon Menu">
 	<menu_item_call label="Perfil do objeto..." name="Object Profile"/>
 	<menu_item_call label="Bloquear..." name="Block"/>
+	<menu_item_call label="Mostrar no mapa" name="show_on_map"/>
+	<menu_item_call label="Teletransportar para lugar do objeto" name="teleport_to_object"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_outfit_gear.xml b/indra/newview/skins/default/xui/pt/menu_outfit_gear.xml
index 894f1d741cf..3602bdaac42 100644
--- a/indra/newview/skins/default/xui/pt/menu_outfit_gear.xml
+++ b/indra/newview/skins/default/xui/pt/menu_outfit_gear.xml
@@ -23,6 +23,8 @@
 		<menu_item_call label="Novo cabelo" name="New Hair"/>
 		<menu_item_call label="Novos olhos" name="New Eyes"/>
 	</menu>
+	<menu_item_call label="Expandir todas as pastas" name="expand"/>
+	<menu_item_call label="Recolher todas as pastas" name="collapse"/>
 	<menu_item_call label="Renomear look" name="rename"/>
 	<menu_item_call label="Excluir visual" name="delete_outfit"/>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_participant_view.xml b/indra/newview/skins/default/xui/pt/menu_participant_view.xml
new file mode 100644
index 00000000000..b61108cf545
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_participant_view.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="participant_manu_view">
+	<menu_item_check label="Ordenar conversas por tipo" name="sort_sessions_by_type"/>
+	<menu_item_check label="Ordenar conversas por nome" name="sort_sessions_by_name"/>
+	<menu_item_check label="Ordenar conversas por atividade recente" name="sort_sessions_by_recent"/>
+	<menu_item_check label="Ordenar participantes por nome" name="sort_participants_by_name"/>
+	<menu_item_check label="Ordenar participantes por atividade recente" name="sort_participants_by_recent"/>
+	<menu_item_call label="Preferências de bate-papo..." name="chat_preferences"/>
+	<menu_item_call label="Preferências de privacidade..." name="privacy_preferences"/>
+	<menu_item_check label="Registro de conversas..." name="Conversation"/>
+	<menu_item_check label="Traduzir Bate-papo local" name="Translate_chat"/>
+	<menu_item_check label="Configurações de tradução..." name="Translation_settings"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_people_blocked_gear.xml b/indra/newview/skins/default/xui/pt/menu_people_blocked_gear.xml
new file mode 100644
index 00000000000..8bbde9b38c9
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_people_blocked_gear.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_blocked_gear">
+	<menu_item_call label="Desbloquear" name="unblock"/>
+	<menu_item_call label="Perfil..." name="profile"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_people_blocked_plus.xml b/indra/newview/skins/default/xui/pt/menu_people_blocked_plus.xml
new file mode 100644
index 00000000000..e69935995ca
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_people_blocked_plus.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_blocked_plus">
+	<menu_item_call label="Bloquear residente por nome..." name="block_resident_by_name"/>
+	<menu_item_call label="Bloquear objeto por nome" name="block_object_by_name"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_people_blocked_view.xml b/indra/newview/skins/default/xui/pt/menu_people_blocked_view.xml
new file mode 100644
index 00000000000..b80d683c7be
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_people_blocked_view.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_blocked_view">
+	<menu_item_check label="Ordenar por nome" name="sort_by_name"/>
+	<menu_item_check label="Ordenar por tipo" name="sort_by_type"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_people_friends_view.xml b/indra/newview/skins/default/xui/pt/menu_people_friends_view.xml
new file mode 100644
index 00000000000..46caeae3105
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_people_friends_view.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="Ordenar por nome" name="sort_name"/>
+	<menu_item_check label="Ordenar por status" name="sort_status"/>
+	<menu_item_check label="Exibir ícones de pessoas" name="view_icons"/>
+	<menu_item_check label="Exibir permissões concedidas" name="view_permissions"/>
+	<menu_item_check label="Exibir registro de conversas..." name="view_conversation"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_people_groups.xml b/indra/newview/skins/default/xui/pt/menu_people_groups.xml
index 9a924ad7b93..2ba7af17cd8 100644
--- a/indra/newview/skins/default/xui/pt/menu_people_groups.xml
+++ b/indra/newview/skins/default/xui/pt/menu_people_groups.xml
@@ -2,7 +2,7 @@
 <menu name="menu_group_plus">
 	<menu_item_call label="Ver dados" name="View Info"/>
 	<menu_item_call label="Bate-papo" name="Chat"/>
-	<menu_item_call label="Ligar" name="Call"/>
+	<menu_item_call label="Chamada de voz" name="Call"/>
 	<menu_item_call label="Ativar" name="Activate"/>
 	<menu_item_call label="Sair" name="Leave"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_people_groups_view.xml b/indra/newview/skins/default/xui/pt/menu_people_groups_view.xml
new file mode 100644
index 00000000000..637e591ae19
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_people_groups_view.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="Mostrar ícones de grupos" name="Display Group Icons"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_people_nearby.xml b/indra/newview/skins/default/xui/pt/menu_people_nearby.xml
index 7c720f262ba..51464fed68f 100644
--- a/indra/newview/skins/default/xui/pt/menu_people_nearby.xml
+++ b/indra/newview/skins/default/xui/pt/menu_people_nearby.xml
@@ -1,13 +1,16 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Avatar Context Menu">
-	<menu_item_call label="Ver perfil" name="View Profile"/>
-	<menu_item_call label="Adicionar amigo..." name="Add Friend"/>
-	<menu_item_call label="Remover amigo..." name="Remove Friend"/>
-	<menu_item_call label="MI" name="IM"/>
-	<menu_item_call label="Ligar" name="Call"/>
-	<menu_item_call label="Mapa" name="Map"/>
-	<menu_item_call label="Compartilhar" name="Share"/>
-	<menu_item_call label="Pagar" name="Pay"/>
-	<menu_item_check label="Bloquear/desbloquear" name="Block/Unblock"/>
-	<menu_item_call label="Teletransportar?" name="teleport"/>
+	<menu_item_call label="Exibir perfil" name="view_profile"/>
+	<menu_item_call label="MI" name="im"/>
+	<menu_item_call label="Oferecer teletransporte" name="offer_teleport"/>
+	<menu_item_call label="Chamada de voz" name="voice_call"/>
+	<menu_item_call label="Exibir histórico de bate-papo..." name="chat_history"/>
+	<menu_item_call label="Adicionar amigo" name="add_friend"/>
+	<menu_item_call label="Remover amigo" name="remove_friend"/>
+	<menu_item_call label="Convidar para entrar no grupo..." name="invite_to_group"/>
+	<menu_item_call label="Mais zoom" name="zoom_in"/>
+	<menu_item_call label="Mapa" name="map"/>
+	<menu_item_call label="Compartilhar" name="share"/>
+	<menu_item_call label="Pagar" name="pay"/>
+	<menu_item_check label="Bloquear/desbloquear" name="block_unblock"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/pt/menu_people_nearby_multiselect.xml
index 79edb96b1c6..7f3c6ace278 100644
--- a/indra/newview/skins/default/xui/pt/menu_people_nearby_multiselect.xml
+++ b/indra/newview/skins/default/xui/pt/menu_people_nearby_multiselect.xml
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Multi-Selected People Context Menu">
-	<menu_item_call label="Adicionar amigo..." name="Add Friends"/>
-	<menu_item_call label="Remover amigo..." name="Remove Friend"/>
-	<menu_item_call label="MI" name="IM"/>
-	<menu_item_call label="Ligar" name="Call"/>
-	<menu_item_call label="Compartilhar" name="Share"/>
-	<menu_item_call label="Pagar" name="Pay"/>
-	<menu_item_call label="Teletransportar?" name="teleport"/>
+	<menu_item_call label="Adicionar amigo..." name="add_friends"/>
+	<menu_item_call label="Remover amigo..." name="remove_friends"/>
+	<menu_item_call label="MI" name="im"/>
+	<menu_item_call label="Ligar" name="call"/>
+	<menu_item_call label="Compartilhar" name="share"/>
+	<menu_item_call label="Pagar" name="pay"/>
+	<menu_item_call label="Oferecer teletransporte" name="offer_teleport"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_people_nearby_view.xml b/indra/newview/skins/default/xui/pt/menu_people_nearby_view.xml
new file mode 100644
index 00000000000..bce015e732c
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_people_nearby_view.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="Ordenar por conversas mais recentes" name="sort_by_recent_speakers"/>
+	<menu_item_check label="Ordenar por nome" name="sort_name"/>
+	<menu_item_check label="Ordenar por distância" name="sort_distance"/>
+	<menu_item_check label="Exibir ícones de pessoas" name="view_icons"/>
+	<menu_item_check label="Exibir mapa" name="view_map"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_people_recent_view.xml b/indra/newview/skins/default/xui/pt/menu_people_recent_view.xml
new file mode 100644
index 00000000000..e4b368fe143
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_people_recent_view.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="Ordenar por mais recente" name="sort_most"/>
+	<menu_item_check label="Ordenar por nome" name="sort_name"/>
+	<menu_item_check label="Exibir ícones de pessoas" name="view_icons"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_url_agent.xml b/indra/newview/skins/default/xui/pt/menu_url_agent.xml
index ba5e0551248..aa0a4264054 100644
--- a/indra/newview/skins/default/xui/pt/menu_url_agent.xml
+++ b/indra/newview/skins/default/xui/pt/menu_url_agent.xml
@@ -1,6 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Url Popup">
-	<menu_item_call label="Mostrar perfil de residente" name="show_agent"/>
+	<menu_item_call label="Exibir perfil" name="show_agent"/>
+	<menu_item_call label="Enviar MI..." name="send_im"/>
+	<menu_item_call label="Adicionar amigo..." name="add_friend"/>
 	<menu_item_call label="Copiar nome para área de transferência" name="url_copy_label"/>
 	<menu_item_call label="Copiar SLurl para área de transferência" name="url_copy"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_url_objectim.xml b/indra/newview/skins/default/xui/pt/menu_url_objectim.xml
index c1974441815..247a92567af 100644
--- a/indra/newview/skins/default/xui/pt/menu_url_objectim.xml
+++ b/indra/newview/skins/default/xui/pt/menu_url_objectim.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Url Popup">
-	<menu_item_call label="Mostrar informações sobre o objeto" name="show_object"/>
+	<menu_item_call label="Perfil do objeto..." name="show_object"/>
 	<menu_item_call label="Mostrar no mapa" name="show_on_map"/>
 	<menu_item_call label="Teletransportar para lugar do objeto" name="teleport_to_object"/>
 	<menu_item_call label="Copiar nome do objeto para área de transferência" name="url_copy_label"/>
diff --git a/indra/newview/skins/default/xui/pt/menu_viewer.xml b/indra/newview/skins/default/xui/pt/menu_viewer.xml
index ca378c1b583..703df84efb5 100644
--- a/indra/newview/skins/default/xui/pt/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/pt/menu_viewer.xml
@@ -16,10 +16,7 @@
 			<menu_item_call label="Parar minha animação" name="Stop Animating My Avatar"/>
 			<menu_item_call label="Andar/correr/voar..." name="Walk / run / fly"/>
 		</menu>
-		<menu label="Status" name="Status">
-			<menu_item_call label="Ausente" name="Set Away"/>
-			<menu_item_call label="Ocupado" name="Set Busy"/>
-		</menu>
+		<menu label="Status" name="Status"/>
 		<menu_item_call label="Comprar L$..." name="Buy and Sell L$"/>
 		<menu_item_call label="Caixa de saída do lojista..." name="MerchantOutbox"/>
 		<menu_item_call label="Painel da conta..." name="Manage My Account">
@@ -32,14 +29,18 @@
 		<menu_item_call label="Sair do [APP_NAME]" name="Quit"/>
 	</menu>
 	<menu label="Comunicar" name="Communicate">
-		<menu_item_check label="Bate-papo..." name="Nearby Chat"/>
+		<menu_item_check label="Conversas..." name="Conversations"/>
+		<menu_item_check label="Bate-papo local..." name="Nearby Chat"/>
 		<menu_item_check label="Falar" name="Speak"/>
-		<menu_item_check label="Configurações de voz..." name="Nearby Voice"/>
-		<menu_item_check label="Distorção de voz..." name="ShowVoice"/>
+		<menu label="Distorção de voz" name="VoiceMorphing">
+			<menu_item_check label="Não distorcer voz" name="NoVoiceMorphing"/>
+			<menu_item_check label="Visualizar..." name="Preview"/>
+			<menu_item_call label="Assinar..." name="Subscribe"/>
+		</menu>
 		<menu_item_check label="Gestos..." name="Gestures"/>
-		<menu_item_call label="Amigos" name="My Friends"/>
-		<menu_item_call label="Grupos" name="My Groups"/>
-		<menu_item_call label="Pessoas próximas" name="Active Speakers"/>
+		<menu_item_check label="Amigos" name="My Friends"/>
+		<menu_item_check label="Grupos" name="My Groups"/>
+		<menu_item_check label="Pessoas próximas" name="Active Speakers"/>
 		<menu_item_call label="Lista de bloqueados" name="Block List"/>
 	</menu>
 	<menu label="Mundo" name="World">
@@ -115,7 +116,6 @@
 			<menu_item_call label="Comprar" name="Menu Object Buy"/>
 			<menu_item_call label="Pegar" name="Menu Object Take"/>
 			<menu_item_call label="Pegar uma cópia" name="Take Copy"/>
-			<menu_item_call label="Salvar no meu inventário" name="Save Object Back to My Inventory"/>
 			<menu_item_call label="Salvar objeto de volta aos conteúdos do objeto" name="Save Object Back to Object Contents"/>
 			<menu_item_call label="Devolver objeto" name="Return Object back to Owner"/>
 		</menu>
@@ -130,6 +130,7 @@
 			<menu_item_call label="Linksets..." name="pathfinding_linksets_menu_item"/>
 			<menu_item_call label="Personagens..." name="pathfinding_characters_menu_item"/>
 			<menu_item_call label="Visualização/teste..." name="pathfinding_console_menu_item"/>
+			<menu_item_call label="Recarregar região" name="pathfinding_rebake_navmesh_item"/>
 		</menu>
 		<menu label="Opções" name="Options">
 			<menu_item_check label="Mostrar permissões avançadas" name="DebugPermissions"/>
@@ -159,6 +160,13 @@
 	<menu label="Ajuda" name="Help">
 		<menu_item_call label="Como..." name="How To"/>
 		<menu_item_call label="[SECOND_LIFE] Ajuda" name="Second Life Help"/>
+		<menu_item_call label="Guia do usuário" name="User’s guide"/>
+		<menu_item_call label="Base de conhecimento" name="Knowledge Base"/>
+		<menu_item_call label="Wiki" name="Wiki"/>
+		<menu_item_call label="Fóruns da comunidade" name="Community Forums"/>
+		<menu_item_call label="Portal de suporte" name="Support portal"/>
+		<menu_item_call label="Notícias do [SECOND_LIFE]" name="Second Life News"/>
+		<menu_item_call label="Blogs do [SECOND_LIFE]" name="Second Life Blogs"/>
 		<menu_item_call label="Denunciar abuso" name="Report Abuse"/>
 		<menu_item_call label="Relatar bug" name="Report Bug"/>
 		<menu_item_call label="Sobre [APP_NAME]" name="About Second Life"/>
@@ -336,9 +344,14 @@
 				<menu_item_call label="Toggle Character Geometry" name="Toggle Character Geometry"/>
 				<menu_item_check label="Allow Select Avatar" name="Allow Select Avatar"/>
 			</menu>
+			<menu label="Velocidade de animação" name="Animation Speed">
+				<menu_item_call label="Todas as animações 10% mais rápidas" name="All Animations 10 Faster"/>
+				<menu_item_call label="Todas as animações 10% mais lentas" name="All Animations 10 Slower"/>
+				<menu_item_call label="Redefinir todas as velocidades de animação" name="Reset All Animation Speed"/>
+				<menu_item_check label="Animações em câmera lenta" name="Slow Motion Animations"/>
+			</menu>
 			<menu_item_call label="Force Params to Default" name="Force Params to Default"/>
 			<menu_item_check label="Dados da animação" name="Animation Info"/>
-			<menu_item_check label="Mostrar animação de movimento" name="Slow Motion Animations"/>
 			<menu_item_check label="Disable Level Of Detail" name="Disable LOD"/>
 			<menu_item_check label="Show Collision Skeleton" name="Show Collision Skeleton"/>
 			<menu_item_check label="Display Agent Target" name="Display Agent Target"/>
diff --git a/indra/newview/skins/default/xui/pt/notifications.xml b/indra/newview/skins/default/xui/pt/notifications.xml
index ff7382bf801..d9f5e48745d 100644
--- a/indra/newview/skins/default/xui/pt/notifications.xml
+++ b/indra/newview/skins/default/xui/pt/notifications.xml
@@ -510,6 +510,24 @@ Consultar [_URL] para mais informações?
 		</url>
 		<usetemplate ignoretext="Meu driver gráfico está desatualizado" name="okcancelignore" notext="Não" yestext="Sim"/>
 	</notification>
+	<notification name="AMDOldDriver">
+		Provavelmente, há um driver mais recente para o seu chip gráfico.  A atualização dos drivers gráficos pode melhorar significativamente o desempenho.
+
+    Visitar [_URL] para verificar se há atualizações do driver?
+		<url name="url">
+			http://support.amd.com/us/Pages/AMDSupportHub.aspx
+		</url>
+		<usetemplate ignoretext="Meu driver gráfico está desatualizado" name="okcancelignore" notext="Não" yestext="Sim"/>
+	</notification>
+	<notification name="NVIDIAOldDriver">
+		Provavelmente, há um driver mais recente para o seu chip gráfico.  A atualização dos drivers gráficos pode melhorar significativamente o desempenho.
+
+    Visitar [_URL] para verificar se há atualizações do driver?
+		<url name="url">
+			http://www.nvidia.com.br/Download/index.aspx?lang=br
+		</url>
+		<usetemplate ignoretext="Meu driver gráfico está desatualizado" name="okcancelignore" notext="Não" yestext="Sim"/>
+	</notification>
 	<notification name="UnknownGPU">
 		A placa de vídeo do seu sistema não é reconhecida pelo [APP_NAME].
 Isto acontece quando novos hardwares que ainda não foram testados no [APP_NAME].  Talvez isso não cause problemas, mas pode ser preciso checar as configurações de vídeo. 
@@ -1533,10 +1551,13 @@ Para instalar a atualização, será preciso reiniciar o [APP_NAME].
 		Não é possível oferecer amizade neste momento. Por favor, tente novamente em breve.
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
-	<notification name="BusyModeSet">
-		Modo ocupado ativado. 
-O bate-papo e MIs não serão exibidos.  MIs enviadas para você receberão sua resposta de modo ocupado.  Todas as ofertas de teletransporte serão recusadas.  Todas as ofertas de inventário serão colocadas na Lixeira.
-		<usetemplate ignoretext="Passar meu status para o modo ocupado" name="okignore" yestext="OK"/>
+	<notification name="DoNotDisturbModeSet">
+		Não perturbe está ativado.  Você não será notificado de comunicações recebidas.
+
+- Outros residentes receberão a sua resposta de Não perturbe (definida em Preferências &gt; Geral).
+- As ofertas de teletransporte serão recusadas.
+- Chamadas de voz serão recusadas.
+		<usetemplate ignoretext="Altero meu status para o modo Não perturbe" name="okignore" yestext="OK"/>
 	</notification>
 	<notification name="JoinedTooManyGroupsMember">
 		Você atingiu o limite máximo de grupos. Saia de outro grupo para poder entrar nesse ou recuse o convite.
@@ -2022,6 +2043,10 @@ Mover para o inventário o(s) item(s)?
 		Deseja abrir o [http://secondlife.com/account/ Painel] para ver o histórico da sua conta?
 		<usetemplate ignoretext="Abrir o navegador para acessar minha conta" name="okcancelignore" notext="Cancelar" yestext="Ir para a página"/>
 	</notification>
+	<notification name="ConfirmAddingChatParticipants">
+		Quando você adiciona uma pessoa a uma conversa existente, uma nova conversa é criada.  Todos os participantes recebem notificações sobre a nova conversa.
+		<usetemplate ignoretext="Confirme a inclusão de participantes no bate-papo" name="okcancelignore" notext="Cancelar" yestext="Ok"/>
+	</notification>
 	<notification name="ConfirmQuit">
 		Tem certeza que deseja sair?
 		<usetemplate ignoretext="Confirmar antes de sair" name="okcancelignore" notext="Não sair" yestext="Sair"/>
@@ -2096,14 +2121,14 @@ Você deseja substituí-lo pelo objeto selecionado?
 			<button ignore="Never Replace" name="No" text="Não"/>
 		</form>
 	</notification>
-	<notification label="Aviso de Modo Ocupado" name="BusyModePay">
-		Você está no modo Ocupado, o que significa que você não receberá quaisquer itens oferecidos em troca deste pagamento.
+	<notification label="Aviso de modo Não perturbe" name="DoNotDisturbModePay">
+		Você ativou o Não perturbe. Você não receberá qualquer item oferecido em troca deste pagamento.
 
-Você gostaria de deixar o modo Ocupado antes de completar esta transação?
+Deseja desativar o Não perturbe antes de concluir esta transação?
 		<form name="form">
-			<ignore name="ignore" save_option="true" text="Estou prestes a pagar alguém ou um objeto no modo ocupado"/>
-			<button ignore="Always leave Busy Mode" name="Yes" text="Sim"/>
-			<button ignore="Never leave Busy Mode" name="No" text="Não"/>
+			<ignore name="ignore" text="Estou prestes a pagar alguém ou um objeto no modo Não perturbe"/>
+			<button ignore="Sempre manter no modo Não perturbe" name="Yes" text="OK"/>
+			<button ignore="Nunca sair do modo Não perturbe" name="No" text="Cancelar"/>
 		</form>
 	</notification>
 	<notification name="ConfirmDeleteProtectedCategory">
@@ -2238,11 +2263,8 @@ Inclua um link para facilitar o acesso para visitantes. Teste o link na barra de
 	<notification name="GroupNotice">
 		Assunto: [SUBJECT], Mensagem: [MESSAGE]
 	</notification>
-	<notification name="FriendOnline">
-		&lt;nolink&gt;[NAME]&lt;/nolink&gt; está online
-	</notification>
-	<notification name="FriendOffline">
-		&lt;nolink&gt;[NAME]&lt;/nolink&gt; está offline
+	<notification name="FriendOnlineOffline">
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; está [STATUS]
 	</notification>
 	<notification name="AddSelfFriend">
 		Você é o máximo! Mesmo assim, não dá para adicionar a si mesmo(a) como amigo(a).
@@ -2467,13 +2489,6 @@ Logo, não é possível voar aqui.
 	<notification name="DynamicPathfindingDisabled">
 		O pathfinding dinâmico não está habilitado nesta região.  Os objetos com script usando chamadas LSL de pathfinding podem não operar como o esperado na região.
 	</notification>
-	<notification name="PathfindingRebakeNavmesh">
-		A alteração de determinados objetos nesta região pode resultar no comportamento incorreto de outros objeto em movimento.  Para fazer com que os objetos em movimento se comportem corretamente, clique no botão “Recarregar região”.  Escolha “Ajuda” para obter mais informações.
-		<url name="url">
-			http://wiki.secondlife.com/wiki/Pathfinding_Tools_in_the_Second_Life_Viewer
-		</url>
-		<usetemplate helptext="Ajuda" ignoretext="A alteração de determinados objetos nesta região pode resultar no comportamento incorreto de outros objeto em movimento." name="okhelpignore" yestext="OK"/>
-	</notification>
 	<notification name="PathfindingCannotRebakeNavmesh">
 		Erro.  Pode haver um erro de rede ou do servidor, ou você pode não ter direitos de construção.  Às vezes, fazer login e logout novamente resolve este problema.
 		<usetemplate name="okbutton" yestext="OK"/>
@@ -2736,7 +2751,7 @@ OK?
 	<notification name="ScriptQuestionCaution">
 		Aviso: O objeto &apos;&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;&apos; deseja obter acesso total à sua conta de dólares Linden. Se você conceder acesso, ele poderá remover fundos de sua conta a qualquer momento ou esvaziar sua conta completamente, continuamente e sem avisos adicionais.
   
-Esse tipo de pedido raramente é legítimo. Não conceda acesso se você não entender completamente por que ele deseja acessar sua conta.
+Não conceda acesso se você não entender completamente por que ele deseja acessar sua conta.
 		<form name="form">
 			<button name="Grant" text="Permitir acesso total"/>
 			<button name="Deny" text="Negar"/>
@@ -3310,4 +3325,633 @@ Tentativa cancelada.
 		Você está excluindo [NUM_ITEMS] itens.  Tem certeza de que deseja continuar?
 		<usetemplate ignoretext="Tem certeza de que deseja excluir múltiplos itens?" name="okcancelignore" notext="Não" yestext="Sim"/>
 	</notification>
+	<notification name="AvatarFrozen">
+		[AV_FREEZER] congelou você. Você não pode se mover ou interagir com o mundo.
+	</notification>
+	<notification name="AvatarFrozenDuration">
+		[AV_FREEZER] congelou você por [AV_FREEZE_TIME] segundos. Você não pode se mover ou interagir com o mundo.
+	</notification>
+	<notification name="YouFrozeAvatar">
+		Avatar congelado.
+	</notification>
+	<notification name="AvatarHasUnFrozenYou">
+		[AV_FREEZER] descongelou você.
+	</notification>
+	<notification name="AvatarUnFrozen">
+		Avatar descongelado.
+	</notification>
+	<notification name="AvatarFreezeFailure">
+		O congelamento falhou porque você não tem permissão de administrador para esse lote.
+	</notification>
+	<notification name="AvatarFreezeThaw">
+		Seu congelamento expirou, vá cuidar da sua vida.
+	</notification>
+	<notification name="AvatarCantFreeze">
+		Não é possível congelar esse usuário.
+	</notification>
+	<notification name="NowOwnObject">
+		Agora você é o proprietário do objeto [OBJECT_NAME]
+	</notification>
+	<notification name="CantRezOnLand">
+		Não é possível renderizar objeto em [OBJECT_POS] porque o proprietário do terreno não permite.  Use a ferramenta de terrenos para ver a propriedade do terreno.
+	</notification>
+	<notification name="RezFailTooManyRequests">
+		O objeto não pode ser renderizado porque há muitas solicitações.
+	</notification>
+	<notification name="SitFailCantMove">
+		Você não pode sentar porque não pode se mover no momento.
+	</notification>
+	<notification name="SitFailNotAllowedOnLand">
+		Você não pode sentar porque não está autorizado a sentar nesse terreno.
+	</notification>
+	<notification name="SitFailNotSameRegion">
+		Tente chegar mais perto.  Não é possível sentar no objeto porque
+ele não está na mesma região que você.
+	</notification>
+	<notification name="NoNewObjectRegionFull">
+		Não foi possível criar um novo objeto. A região está cheia.
+	</notification>
+	<notification name="FailedToPlaceObject">
+		Falha ao posicionar objeto em local específico.  Tente novamente.
+	</notification>
+	<notification name="NoOwnNoGardening">
+		Você não pode criar árvores e grama em terrenos que não são sua propriedade.
+	</notification>
+	<notification name="NoCopyPermsNoObject">
+		A cópia falhou porque você não está autorizado a copiar o objeto &apos;[OBJ_NAME]&apos;.
+	</notification>
+	<notification name="NoTransPermsNoObject">
+		A cópia falhou porque o objeto &apos;[OBJ_NAME]&apos; não pode ser transferido para você.
+	</notification>
+	<notification name="AddToNavMeshNoCopy">
+		A cópia falhou porque o objeto &apos;[OBJ_NAME]&apos; contribui para o navmesh.
+	</notification>
+	<notification name="DupeWithNoRootsSelected">
+		Duplicar sem objetos raiz selecionados.
+	</notification>
+	<notification name="CantDupeCuzRegionIsFull">
+		Não é possível duplicar objetos porque a região está cheia.
+	</notification>
+	<notification name="CantDupeCuzParcelNotFound">
+		Não é possível duplicar os objetos - não é possível encontrar o lote em que eles estão.
+	</notification>
+	<notification name="CantCreateCuzParcelFull">
+		Não é possível criar objeto porque 
+o lote está cheio.
+	</notification>
+	<notification name="RezAttemptFailed">
+		Falha na tentativa de renderizar um objeto.
+	</notification>
+	<notification name="ToxicInvRezAttemptFailed">
+		Não é possível criar um item que causou problemas a essa região.
+	</notification>
+	<notification name="InvItemIsBlacklisted">
+		Esse item do inventário foi incluído na lista.
+	</notification>
+	<notification name="NoCanRezObjects">
+		No momento, você não está autorizado a criar objetos.
+	</notification>
+	<notification name="LandSearchBlocked">
+		Pesquisa de terreno bloqueada.
+Você realizou muitas pesquisas de terreno muito rápido.
+Tente novamente em instantes.
+	</notification>
+	<notification name="NotEnoughResourcesToAttach">
+		Não há recursos de script disponíveis suficientes para anexar objeto!
+	</notification>
+	<notification name="YouDiedAndGotTPHome">
+		Você morreu e foi teletransportado para seu início
+	</notification>
+	<notification name="EjectComingSoon">
+		Você não tem mais permissão para ficar aqui e tem [EJECT_TIME] segundos para sair.
+	</notification>
+	<notification name="NoEnterServerFull">
+		Você não pode entrar nesta região porque 
+o servidor está cheio.
+	</notification>
+	<notification name="SaveBackToInvDisabled">
+		Salvar no inventário foi desativado.
+	</notification>
+	<notification name="NoExistNoSaveToContents">
+		Não é possível salvar &apos;[OBJ_NAME]&apos; no conteúdo do objeto porque o objeto do qual ele foi renderizado não existe mais.
+	</notification>
+	<notification name="NoModNoSaveToContents">
+		Não é possível salvar &apos;[OBJ_NAME]&apos; no conteúdo do objeto porque você não tem permissão para modificar o objeto &apos;[DEST_NAME]&apos;.
+	</notification>
+	<notification name="NoSaveBackToInvDisabled">
+		Não é possível salvar &apos;[OBJ_NAME]&apos; no inventário -- essa operação foi desativada.
+	</notification>
+	<notification name="NoCopyNoSelCopy">
+		Você não pode copiar sua seleção porque não está autorizado a copiar o objeto &apos;[OBJ_NAME]&apos;.
+	</notification>
+	<notification name="NoTransNoSelCopy">
+		Você não pode copiar a seleção porque o objeto &apos;[OBJ_NAME]&apos; não é transferível.
+	</notification>
+	<notification name="NoTransNoCopy">
+		Você não pode copiar a seleção porque o objeto &apos;[OBJ_NAME]&apos; não é transferível.
+	</notification>
+	<notification name="NoPermsNoRemoval">
+		A remoção do objeto &apos;[OBJ_NAME]&apos; do simulador é proibida pelo sistema de permissões.
+	</notification>
+	<notification name="NoModNoSaveSelection">
+		Você não pode salvar sua seleção porque não está autorizado a modificar o objeto &apos;[OBJ_NAME]&apos;.
+	</notification>
+	<notification name="NoCopyNoSaveSelection">
+		Não é possível salvar sua seleção porque o objeto &apos;[OBJ_NAME]&apos; não é copiável.
+	</notification>
+	<notification name="NoModNoTaking">
+		Você não pode levar sua seleção porque não está autorizado a modificar o objeto &apos;[OBJ_NAME]&apos;.
+	</notification>
+	<notification name="RezDestInternalError">
+		Erro interno: tipo de destino desconhecido.
+	</notification>
+	<notification name="DeleteFailObjNotFound">
+		A exclusão falhou porque o objeto não foi encontrado
+	</notification>
+	<notification name="SorryCantEjectUser">
+		Não é possível expulsar esse usuário.
+	</notification>
+	<notification name="RegionSezNotAHome">
+		Esta região não permite que você a defina como seu início.
+	</notification>
+	<notification name="HomeLocationLimits">
+		Você só pode definir seu &quot;Início&quot; em seu terreno ou em um Infohub do continente.
+	</notification>
+	<notification name="HomePositionSet">
+		Posição de início definida.
+	</notification>
+	<notification name="AvatarEjected">
+		Avatar expulso.
+	</notification>
+	<notification name="AvatarEjectFailed">
+		A expulsão falhou porque você não tem permissão de administrador para esse lote.
+	</notification>
+	<notification name="CantMoveObjectParcelFull">
+		Não é possível mover &apos;[OBJECT_NAME]&apos; para
+[OBJ_POSITION] na região [REGION_NAME] porque o lote está cheio.
+	</notification>
+	<notification name="CantMoveObjectParcelPerms">
+		Não é possível mover &apos;[OBJECT_NAME]&apos; para
+[OBJ_POSITION] na região [REGION_NAME] porque seus objetos não são permitidos neste lote.
+	</notification>
+	<notification name="CantMoveObjectParcelResources">
+		Não é possível mover &apos;[OBJECT_NAME]&apos; para
+[OBJ_POSITION] na região [REGION_NAME] porque não há recursos suficientes para este objeto neste lote.
+	</notification>
+	<notification name="CantMoveObjectRegionVersion">
+		Não é possível mover &apos;[OBJECT_NAME]&apos; para
+[OBJ_POSITION] na região [REGION_NAME] porque outra região está executando uma versão mais antiga, que não dá suporte o recebimento deste objeto por meio de passagem de regiões.
+	</notification>
+	<notification name="CantMoveObjectNavMesh">
+		Não é possível mover &apos;[OBJECT_NAME]&apos; para
+[OBJ_POSITION] na região [REGION_NAME] porque você não está autorizado a modificar o navmesh além dos limites da região.
+	</notification>
+	<notification name="CantMoveObjectWTF">
+		Não é possível mover &apos;[OBJECT_NAME]&apos; para
+[OBJ_POSITION] na região [REGION_NAME] por uma razão desconhecida. ([FAILURE_TYPE])
+	</notification>
+	<notification name="NoPermModifyObject">
+		Você não está autorizado a modificar este objeto
+	</notification>
+	<notification name="CantEnablePhysObjContributesToNav">
+		Não é possível ativar propriedades físicas para um objeto que contribui para o navmesh.
+	</notification>
+	<notification name="CantEnablePhysKeyframedObj">
+		Não é possível ativar propriedades físicas para objetos keyframe.
+	</notification>
+	<notification name="CantEnablePhysNotEnoughLandResources">
+		Não é possível ativar propriedades físicas para o objeto -- recursos de terreno insuficientes.
+	</notification>
+	<notification name="CantEnablePhysCostTooGreat">
+		Não é possível ativar propriedades físicas para objeto com custo de recursos físicos acima de [MAX_OBJECTS]
+	</notification>
+	<notification name="PhantomWithConcavePiece">
+		Este objeto não pode ter uma peça côncava porque é phantom e contribui para o navmesh.
+	</notification>
+	<notification name="UnableAddItem">
+		Não é possível adicionar item!
+	</notification>
+	<notification name="UnableEditItem">
+		Não é possível editar isso!
+	</notification>
+	<notification name="NoPermToEdit">
+		Não é permitido editar isso.
+	</notification>
+	<notification name="NoPermToCopyInventory">
+		Não é permitido copiar esse inventário.
+	</notification>
+	<notification name="CantSaveItemDoesntExist">
+		Não é possível salvar no conteúdo do objeto: O item não existe mais.
+	</notification>
+	<notification name="CantSaveItemAlreadyExists">
+		Não é possível salvar no conteúdo do objeto: já existe um item com esse nome no inventário
+	</notification>
+	<notification name="CantSaveModifyAttachment">
+		Não é possível salvar no conteúdo do objeto: isso modificaria as permissões de anexo.
+	</notification>
+	<notification name="TooManyScripts">
+		Muitos scripts.
+	</notification>
+	<notification name="UnableAddScript">
+		Não é possível adicionar script!
+	</notification>
+	<notification name="AssetServerTimeoutObjReturn">
+		Servidor de objetos não respondeu a tempo.  Objeto retornado a sim.
+	</notification>
+	<notification name="RegionDisablePhysicsShapes">
+		Esta região não tem formas físicas ativadas.
+	</notification>
+	<notification name="NoModNavmeshAcrossRegions">
+		Você não pode modificar o navmesh além dos limites da região.
+	</notification>
+	<notification name="NoSetPhysicsPropertiesOnObjectType">
+		Não é possível definir as propriedades físicas neste tipo de objeto.
+	</notification>
+	<notification name="NoSetRootPrimWithNoShape">
+		Não é possível definir que um prim raiz não tenha forma.
+	</notification>
+	<notification name="NoRegionSupportPhysMats">
+		Esta região não tem materiais físicos ativados.
+	</notification>
+	<notification name="OnlyRootPrimPhysMats">
+		Apenas prims raiz podem ter seus materiais físicos ajustados.
+	</notification>
+	<notification name="NoSupportCharacterPhysMats">
+		Ainda não há suporte para a configuração dos materiais físicos em personagens.
+	</notification>
+	<notification name="InvalidPhysMatProperty">
+		Uma ou mais das propriedades do material físico são inválidas.
+	</notification>
+	<notification name="NoPermsAlterStitchingMeshObj">
+		Você não pode alterar o tipo de acabamento de um objeto mesh.
+	</notification>
+	<notification name="NoPermsAlterShapeMeshObj">
+		Você não pode alterar a forma de um objeto mesh
+	</notification>
+	<notification name="FullRegionCantEnter">
+		Você não pode entrar nesta região porque \nela está cheia.
+	</notification>
+	<notification name="LinkFailedOwnersDiffer">
+		Falha na vinculação -- proprietários diferentes
+	</notification>
+	<notification name="LinkFailedNoModNavmeshAcrossRegions">
+		Falha na vinculação -- não é possível modificar o navmesh além dos limites da região.
+	</notification>
+	<notification name="LinkFailedNoPermToEdit">
+		Ocorreu uma falha na vinculação porque você não tem permissão de edição.
+	</notification>
+	<notification name="LinkFailedTooManyPrims">
+		Falha na vinculação -- muitos prims
+	</notification>
+	<notification name="LinkFailedCantLinkNoCopyNoTrans">
+		Falha na vinculação -- não é possível vincular itens com cópia proibida a itens com transferência proibida
+	</notification>
+	<notification name="LinkFailedNothingLinkable">
+		Falha na vinculação -- nada é vinculável.
+	</notification>
+	<notification name="LinkFailedTooManyPathfindingChars">
+		Falha na vinculação -- muitos personagens com pathfinding
+	</notification>
+	<notification name="LinkFailedInsufficientLand">
+		Falha na vinculação -- recursos de terreno insuficientes
+	</notification>
+	<notification name="LinkFailedTooMuchPhysics">
+		O objeto usa muitos recursos físicos – sua dinâmica foi desativada.
+	</notification>
+	<notification name="TeleportedHomeByObjectOnParcel">
+		Você foi teletransportado para seu início pelo objeto &apos;[OBJECT_NAME]&apos; no lote &apos;[PARCEL_NAME]&apos;
+	</notification>
+	<notification name="TeleportedHomeByObject">
+		Você foi teletransportado para seu início pelo objeto &apos;[OBJECT_NAME]&apos;
+	</notification>
+	<notification name="TeleportedByAttachment">
+		Você foi teletransportado por um anexo em [ITEM_ID]
+	</notification>
+	<notification name="TeleportedByObjectOnParcel">
+		Você foi teletransportado pelo objeto &apos;[OBJECT_NAME]&apos; no lote &apos;[PARCEL_NAME]&apos;
+	</notification>
+	<notification name="TeleportedByObjectOwnedBy">
+		Você foi teletransportado pelo objeto &apos;[OBJECT_NAME]&apos; de propriedade de [OWNER_ID]
+	</notification>
+	<notification name="TeleportedByObjectUnknownUser">
+		Você foi teletransportado pelo objeto &apos;[OBJECT_NAME]&apos; de propriedade de um usuário desconhecido.
+	</notification>
+	<notification name="CantCreateObjectRegionFull">
+		Não foi possível criar o objeto solicitado. A região está cheia.
+	</notification>
+	<notification name="CantAttackMultipleObjOneSpot">
+		Não é possível anexar vários objetos a um local.
+	</notification>
+	<notification name="CantCreateMultipleObjAtLoc">
+		Você não pode criar vários objetos aqui.
+	</notification>
+	<notification name="UnableToCreateObjTimeOut">
+		Não foi possível criar o objeto solicitado. Objeto ausente do banco de dados.
+	</notification>
+	<notification name="UnableToCreateObjUnknown">
+		Não foi possível criar o objeto solicitado. A solicitação expirou. Tente novamente.
+	</notification>
+	<notification name="UnableToCreateObjMissingFromDB">
+		Não foi possível criar o objeto solicitado. Tente novamente.
+	</notification>
+	<notification name="RezFailureTookTooLong">
+		Falha na renderização, objeto solicitado demorou muito a carregar.
+	</notification>
+	<notification name="FailedToPlaceObjAtLoc">
+		Falha ao posicionar objeto em local específico.  Tente novamente.
+	</notification>
+	<notification name="CantCreatePlantsOnLand">
+		Você não pode criar plantas neste terreno.
+	</notification>
+	<notification name="CantRestoreObjectNoWorldPos">
+		Não é possível restaurar o objeto. Nenhuma posição encontrada no mundo.
+	</notification>
+	<notification name="CantRezObjectInvalidMeshData">
+		Não é possível renderizar o objeto porque os dados de mesh são inválidos.
+	</notification>
+	<notification name="CantRezObjectTooManyScripts">
+		Não foi possível renderizar objeto porque já há muitos scripts nesta região.
+	</notification>
+	<notification name="CantCreateObjectNoAccess">
+		Seus privilégios de acesso não permitem que você crie objetos aqui.
+	</notification>
+	<notification name="CantCreateObject">
+		No momento, você não está autorizado a criar objetos.
+	</notification>
+	<notification name="InvalidObjectParams">
+		Parâmetros de objeto inválidos
+	</notification>
+	<notification name="CantDuplicateObjectNoAcess">
+		Seus privilégios de acesso não permitem que você duplique objetos aqui.
+	</notification>
+	<notification name="CantChangeShape">
+		Você não está autorizado a alterar essa forma.
+	</notification>
+	<notification name="NoAccessToClaimObjects">
+		Seus privilégios de acesso não permitem que você reivindique objetos aqui.
+	</notification>
+	<notification name="DeedFailedNoPermToDeedForGroup">
+		A doação falhou porque você não está autorizado a doar objetos ao seu grupo.
+	</notification>
+	<notification name="NoPrivsToBuyObject">
+		Seus privilégios de acesso não permitem que você compre objetos aqui.
+	</notification>
+	<notification name="CantAttachObjectAvatarSittingOnIt">
+		Não é possível anexar objeto porque um avatar está sentado nele.
+	</notification>
+	<notification name="WhyAreYouTryingToWearShrubbery">
+		Árvores e grama não podem ser usadas como anexos.
+	</notification>
+	<notification name="CantAttachGroupOwnedObjs">
+		Não é possível anexar objetos de propriedade de um grupo.
+	</notification>
+	<notification name="CantAttachObjectsNotOwned">
+		Não é possível anexar objetos que não sua propriedade.
+	</notification>
+	<notification name="CantAttachNavmeshObjects">
+		Não é possível anexar objetos que contribuem com o navmesh.
+	</notification>
+	<notification name="CantAttachObjectNoMovePermissions">
+		Não é possível vincular objeto porque você não tem permissão para movê-lo.
+	</notification>
+	<notification name="CantAttachNotEnoughScriptResources">
+		Não há recursos de script disponíveis suficientes para anexar objeto!
+	</notification>
+	<notification name="CantDropItemTrialUser">
+		Não é possível largar objetos aqui. Tente a área de Avaliação grátis.
+	</notification>
+	<notification name="CantDropMeshAttachment">
+		Você não pode largar anexos mesh. Separe para o inventário e depois renderize no mundo.
+	</notification>
+	<notification name="CantDropAttachmentNoPermission">
+		Falha ao largar anexo: você não está autorizado a largá-lo aqui.
+	</notification>
+	<notification name="CantDropAttachmentInsufficientLandResources">
+		Falha ao largar anexo: recursos de terreno disponíveis insuficientes.
+	</notification>
+	<notification name="CantDropAttachmentInsufficientResources">
+		Falha ao largar anexos: recursos disponíveis insuficientes.
+	</notification>
+	<notification name="CantDropObjectFullParcel">
+		Não é possível largar objeto aqui.  O lote está cheio.
+	</notification>
+	<notification name="CantTouchObjectBannedFromParcel">
+		Não é possível tocar/pegar este objeto porque você foi banido do lote de terreno.
+	</notification>
+	<notification name="PlzNarrowDeleteParams">
+		Detalhe seus parâmetros de exclusão.
+	</notification>
+	<notification name="UnableToUploadAsset">
+		Não é possível carregar objeto.
+	</notification>
+	<notification name="CantTeleportCouldNotFindUser">
+		Não foi possível encontrar usuário para teletransportar para início
+	</notification>
+	<notification name="GodlikeRequestFailed">
+		solicitação de poderes de deus falhou
+	</notification>
+	<notification name="GenericRequestFailed">
+		falha em solicitação genérica
+	</notification>
+	<notification name="CantUploadPostcard">
+		Não foi possível carregar cartão postal.  Tente novamente mais tarde.
+	</notification>
+	<notification name="CantFetchInventoryForGroupNotice">
+		Não foi possível obter detalhes de inventário para o anúncio de grupo.
+	</notification>
+	<notification name="CantSendGroupNoticeNotPermitted">
+		Não é possível enviar anúncio de grupo -- não permitido.
+	</notification>
+	<notification name="CantSendGroupNoticeCantConstructInventory">
+		Não é possível enviar anúncio de grupo -- não foi possível construir inventário.
+	</notification>
+	<notification name="CantParceInventoryInNotice">
+		Não é possível processar o inventário do anúncio.
+	</notification>
+	<notification name="TerrainUploadFailed">
+		Falha no envio de terreno.
+	</notification>
+	<notification name="TerrainFileWritten">
+		Arquivo de terreno gravado.
+	</notification>
+	<notification name="TerrainFileWrittenStartingDownload">
+		Arquivo de terreno criado, iniciando o download...
+	</notification>
+	<notification name="TerrainBaked">
+		Terreno confeccionado.
+	</notification>
+	<notification name="TenObjectsDisabledPlzRefresh">
+		Apenas os 10 primeiros objetos selecionados foram desativados. Atualize e faça novas seleções, se necessário.
+	</notification>
+	<notification name="UpdateViewerBuyParcel">
+		Você precisa atualizar seu visualizador para comprar este lote.
+	</notification>
+	<notification name="CantBuyParcelNotForSale">
+		Não é possível comprar, este lote não está à venda.
+	</notification>
+	<notification name="CantBuySalePriceOrLandAreaChanged">
+		Não é possível comprar, o preço de venda ou a área do terreno foram alterados.
+	</notification>
+	<notification name="CantBuyParcelNotAuthorized">
+		Você não é o comprador autorizado deste lote.
+	</notification>
+	<notification name="CantBuyParcelAwaitingPurchaseAuth">
+		Você não pode comprar este lote porque já está aguardando aut. de compra
+	</notification>
+	<notification name="CantBuildOverflowParcel">
+		Não é possível criar objeto aqui porque isso sobrecarregaria o lote.
+	</notification>
+	<notification name="SelectedMultipleOwnedLand">
+		Você selecionou terreno com proprietários diferentes. Selecione uma área menor e tente novamente.
+	</notification>
+	<notification name="CantJoinTooFewLeasedParcels">
+		Não há lotes alugados suficientes na seleção para reunir.
+	</notification>
+	<notification name="CantDivideLandMultipleParcelsSelected">
+		Não é possível dividir o terreno.\nHá mais de um lote selecionado.\nTente selecionar um pedaço menor de terreno.
+	</notification>
+	<notification name="CantDivideLandCantFindParcel">
+		Não é possível dividir o terreno.\nNão é possível encontrar o lote.\nComunique isso em Ajuda -&gt; Relatar bug...
+	</notification>
+	<notification name="CantDivideLandWholeParcelSelected">
+		Não é possível dividir o terreno. O lote inteiro está selecionado.\nTente selecionar um pedaço menor do terreno.
+	</notification>
+	<notification name="LandHasBeenDivided">
+		O terreno foi dividido.
+	</notification>
+	<notification name="PassPurchased">
+		Você comprou um passe.
+	</notification>
+	<notification name="RegionDisallowsClassifieds">
+		A região não permite classificados.
+	</notification>
+	<notification name="LandPassExpireSoon">
+		Seu passe para este terreno está prestes a expirar.
+	</notification>
+	<notification name="CantSitNoSuitableSurface">
+		Não há uma superfície adequada para sentar, tente outro local.
+	</notification>
+	<notification name="CantSitNoRoom">
+		Não há espaço para sentar aqui, tente outro local.
+	</notification>
+	<notification name="ClaimObjectFailedNoPermission">
+		A reivindicação do objeto falhou porque você não tem permissão
+	</notification>
+	<notification name="ClaimObjectFailedNoMoney">
+		A reivindicação do objeto falhou porque você não tem L$ suficiente.
+	</notification>
+	<notification name="CantDeedGroupLand">
+		Não é possível doar terrenos de propriedade de um grupo.
+	</notification>
+	<notification name="BuyObjectFailedNoMoney">
+		A compra do objeto falhou porque você não tem L$ suficientes.
+	</notification>
+	<notification name="BuyInventoryFailedNoMoney">
+		A compra do inventário falhou porque você não tem L$ suficiente
+	</notification>
+	<notification name="BuyPassFailedNoMoney">
+		Você não tem L $ suficientes para comprar um passe para este terreno.
+	</notification>
+	<notification name="CantBuyPassTryAgain">
+		Não é possível comprar passe no momento.  Tente novamente mais tarde.
+	</notification>
+	<notification name="CantCreateObjectParcelFull">
+		Não é possível criar objeto porque \no lote está cheio.
+	</notification>
+	<notification name="FailedPlacingObject">
+		Falha ao posicionar objeto em local específico.  Tente novamente.
+	</notification>
+	<notification name="CantCreateLandmarkForEvent">
+		Não é possível criar marco para o evento.
+	</notification>
+	<notification name="GodBeatsFreeze">
+		Seus poderes de deus rompem o congelamento!
+	</notification>
+	<notification name="SpecialPowersRequestFailedLogged">
+		Falha na solicitação de poderes especiais. Essa solicitação foi registrada.
+	</notification>
+	<notification name="ExpireExplanation">
+		O sistema não pode processar sua solicitação no momento. A solicitação expirou.
+	</notification>
+	<notification name="DieExplanation">
+		O sistema não pode processar sua solicitação.
+	</notification>
+	<notification name="AddPrimitiveFailure">
+		Fundos insuficientes para criar prim.
+	</notification>
+	<notification name="RezObjectFailure">
+		Fundos insuficientes para criar objeto.
+	</notification>
+	<notification name="ResetHomePositionNotLegal">
+		Redefinir Início pois o Início não era legal.
+	</notification>
+	<notification name="CantInviteRegionFull">
+		No momento, você não pode convidar ninguém para seu local pois a região está cheia. Tente novamente mais tarde.
+	</notification>
+	<notification name="CantSetHomeAtRegion">
+		Esta região não permite que você a defina como seu início.
+	</notification>
+	<notification name="ListValidHomeLocations">
+		Você só pode definir seu &quot;Início&quot; em seu terreno ou em um Infohub do continente.
+	</notification>
+	<notification name="SetHomePosition">
+		Posição de início definida.
+	</notification>
+	<notification name="CantDerezInventoryError">
+		Não é possível desrenderizar objeto devido a uma falha de inventário.
+	</notification>
+	<notification name="CantCreateRequestedInv">
+		Não é possível criar o inventário solicitado.
+	</notification>
+	<notification name="CantCreateRequestedInvFolder">
+		Não é possível criar a pasta de inventário solicitada.
+	</notification>
+	<notification name="CantCreateInventory">
+		Não é possível criar esse inventário.
+	</notification>
+	<notification name="CantCreateLandmark">
+		Não é possível criar marco.
+	</notification>
+	<notification name="CantCreateOutfit">
+		Não é possível criar roupa agora. Tente novamente em instantes.
+	</notification>
+	<notification name="InventoryNotForSale">
+		O inventário não está à venda.
+	</notification>
+	<notification name="CantFindInvItem">
+		Não é possível encontrar item do inventário.
+	</notification>
+	<notification name="CantFindObject">
+		Não foi possível encontrar objeto.
+	</notification>
+	<notification name="CantTransfterMoneyRegionDisabled">
+		Transferências de dinheiro para objetos estão desativadas para esta região no momento.
+	</notification>
+	<notification name="CantPayNoAgent">
+		Não foi possível descobrir a quem pagar.
+	</notification>
+	<notification name="CantDonateToPublicObjects">
+		Não é possível dar L$ a objetos públicos.
+	</notification>
+	<notification name="InventoryCreationInWorldObjectFailed">
+		Falha na criação de inventário de objetos do mundo virtual.
+	</notification>
+	<notification name="UserBalanceOrLandUsageError">
+		Um erro interno impediu que seu visualizador fosse atualizado corretamente.  O saldo em L$ ou a propriedade de lotes exibidos em seu visualizador pode não refletir o saldo real nos servidores.
+	</notification>
+	<notification name="LargePrimAgentIntersect">
+		Não é possível criar grandes prims que interceptam outros jogadores.  Tente novamente quando os outros jogadores tiverem se movido.
+	</notification>
+	<notification name="PreferenceChatClearLog">
+		Isso excluirá os registros das conversas anteriores e qualquer backup desse arquivo.
+		<usetemplate ignoretext="Confirmar antes de excluir o registro com conversas anteriores." name="okcancelignore" notext="Cancelar" yestext="OK"/>
+	</notification>
+	<notification name="PreferenceChatDeleteTranscripts">
+		Isso excluirá todas as transcrições de todas as conversas anteriores. A lista de conversas antigas não será afetada. Todos os arquivos com as extensões .txt e txt.backup na pasta [FOLDER] serão excluídos.
+		<usetemplate ignoretext="Confirmar antes de excluir transcrições." name="okcancelignore" notext="Cancelar" yestext="OK"/>
+	</notification>
+	<notification name="PreferenceChatPathChanged">
+		Não foi possível mover arquivos. Caminho anterior restaurado.
+		<usetemplate ignoretext="Não foi possível mover arquivos. Caminho anterior restaurado." name="okignore" yestext="OK"/>
+	</notification>
 </notifications>
diff --git a/indra/newview/skins/default/xui/pt/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/pt/panel_avatar_list_item.xml
index b444593af82..22eb23ebc52 100644
--- a/indra/newview/skins/default/xui/pt/panel_avatar_list_item.xml
+++ b/indra/newview/skins/default/xui/pt/panel_avatar_list_item.xml
@@ -26,5 +26,6 @@
 	<icon name="permission_edit_mine_icon" tool_tip="Este amigo pode editar, excluir ou pegar seus pertences"/>
 	<icon name="permission_map_icon" tool_tip="Este amigo pode localizar você no mapa"/>
 	<icon name="permission_online_icon" tool_tip="Este amigo pode saber quando você estiver online"/>
+	<button name="info_btn" tool_tip="Mais informações"/>
 	<button name="profile_btn" tool_tip="Ver perfil"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/pt/panel_block_list_sidetray.xml
index c5f93d719a3..2fcf6b9932f 100644
--- a/indra/newview/skins/default/xui/pt/panel_block_list_sidetray.xml
+++ b/indra/newview/skins/default/xui/pt/panel_block_list_sidetray.xml
@@ -1,10 +1,11 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="block_list_panel">
-	<text name="title_text">
-		Lista de bloqueados
-	</text>
-	<scroll_list name="blocked" tool_tip="Lista atual dos residentes bloqueados"/>
-	<button label="Bloquear residente..." label_selected="Bloquear residente..." name="Block resident..." tool_tip="Selecione o residente a bloquear"/>
-	<button label="Bloquear objeto por nome..." label_selected="Bloquear objeto por nome..." name="Block object by name..."/>
-	<button label="Desbloquear" label_selected="Desbloquear" name="Unblock" tool_tip="Remover residente ou objeto da lista dos bloqueados"/>
+	<panel label="bottom_panel" name="blocked_buttons_panel">
+		<filter_editor label="Filtrar" name="blocked_filter_input"/>
+		<menu_button name="blocked_gear_btn" tool_tip="Ações em uma pessoa ou um objeto selecionado"/>
+		<menu_button name="view_btn" tool_tip="Opções de ordenação"/>
+		<menu_button name="plus_btn" tool_tip="Escolher um residente ou um objeto a ser bloqueado"/>
+		<button name="unblock_btn" tool_tip="Remover residente ou objeto da lista dos bloqueados"/>
+	</panel>
+	<block_list name="blocked" tool_tip="Lista atual dos residentes bloqueados"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_conversation_list_item.xml b/indra/newview/skins/default/xui/pt/panel_conversation_list_item.xml
new file mode 100644
index 00000000000..f56168c9629
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_conversation_list_item.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="conversation_list_item">
+	<layout_stack name="conversation_item_stack">
+		<layout_panel name="conversation_title_panel">
+			<text name="conversation_title" value="(carregando)"/>
+		</layout_panel>
+	</layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_conversation_log_list_item.xml b/indra/newview/skins/default/xui/pt/panel_conversation_log_list_item.xml
new file mode 100644
index 00000000000..74daded58f7
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_conversation_log_list_item.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="conversation_log_list_item">
+	<icon name="voice_session_icon" tool_tip="Uma conversa de voz foi incluída"/>
+	<icon name="unread_ims_icon" tool_tip="Chegaram mensagens enquanto você estava desconectado"/>
+	<button name="delete_btn" tool_tip="Remover esta entrada"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_group_list_item.xml b/indra/newview/skins/default/xui/pt/panel_group_list_item.xml
index 19c34d2f103..04908785077 100644
--- a/indra/newview/skins/default/xui/pt/panel_group_list_item.xml
+++ b/indra/newview/skins/default/xui/pt/panel_group_list_item.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="group_list_item">
 	<text name="group_name" value="Desconhecido"/>
+	<button name="info_btn" tool_tip="Mais informações"/>
 	<button name="profile_btn" tool_tip="Ver perfil"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_people.xml b/indra/newview/skins/default/xui/pt/panel_people.xml
index f3af15b9916..babb48c208f 100644
--- a/indra/newview/skins/default/xui/pt/panel_people.xml
+++ b/indra/newview/skins/default/xui/pt/panel_people.xml
@@ -14,81 +14,53 @@ Em busca de alguém para conversar? Procure no [secondlife:///app/worldmap Mapa-
 	<string name="no_filtered_friends_msg">
 		Não encontrou o que procura? Tente buscar no [secondlife:///app/search/people/[SEARCH_TERM] Search].
 	</string>
-	<string name="people_filter_label" value="Filtro de pessoas"/>
-	<string name="groups_filter_label" value="Filtro de grupos"/>
 	<string name="no_filtered_groups_msg" value="Não encontrou o que procura? Tente buscar no [secondlife:///app/search/groups/[SEARCH_TERM] Search]."/>
 	<string name="no_groups_msg" value="À procura de grupos interessantes? Tente fazer uma [secondlife:///app/search/groups Busca]."/>
 	<string name="MiniMapToolTipMsg" value="[REGION](Clique duas vezes para abrir o mapa, shift+arraste para a visão pan)"/>
 	<string name="AltMiniMapToolTipMsg" value="[REGION](Clique duas vezes para teletransportar, shift+arraste para a visão pan)"/>
-	<filter_editor label="Filtro" name="filter_input"/>
 	<tab_container name="tabs">
 		<panel label="PROXIMIDADE" name="nearby_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<menu_button name="nearby_view_sort_btn" tool_tip="Opções"/>
-				<button name="add_friend_btn" tool_tip="Adicionar o residente selecionado para sua lista de amigos"/>
+			<panel label="bottom_panel" name="nearby_buttons_panel">
+				<filter_editor label="Filtrar pessoas" name="nearby_filter_input"/>
+				<button name="gear_btn" tool_tip="Ações nas pessoas selecionadas"/>
+				<menu_button name="nearby_view_btn" tool_tip="Opções de exibição/ordenação"/>
+				<button name="add_friend_btn" tool_tip="Oferecer amizade ao residente"/>
+				<dnd_button name="nearby_del_btn" tool_tip="Remover a pessoa selecionada dos amigos"/>
 			</panel>
 		</panel>
-		<panel label="MEUS AMIGOS" name="friends_panel">
+		<panel label="AMIGOS" name="friends_panel">
+			<panel label="bottom_panel" name="friends_buttons_panel">
+				<filter_editor label="Filtrar pessoas" name="friends_filter_input"/>
+				<button name="gear_btn" tool_tip="Ações nas pessoas selecionadas"/>
+				<menu_button name="friends_view_btn" tool_tip="Opções de exibição/ordenação"/>
+				<button name="friends_add_btn" tool_tip="Oferecer amizade ao residente"/>
+				<dnd_button name="friends_del_btn" tool_tip="Remover a pessoa selecionada dos amigos"/>
+			</panel>
 			<accordion name="friends_accordion">
 				<accordion_tab name="tab_online" title="Online"/>
 				<accordion_tab name="tab_all" title="Todos"/>
 			</accordion>
-			<panel label="bottom_panel" name="bottom_panel">
-				<layout_stack name="bottom_panel">
-					<layout_panel name="options_gear_btn_panel">
-						<menu_button name="friends_viewsort_btn" tool_tip="Mostrar opções adicionais"/>
-					</layout_panel>
-					<layout_panel name="add_btn_panel">
-						<button name="add_btn" tool_tip="Oferecer amizade para um residente"/>
-					</layout_panel>
-					<layout_panel name="trash_btn_panel">
-						<dnd_button name="del_btn" tool_tip="Remover a pessoa selecionada da sua lista de amigos"/>
-					</layout_panel>
-				</layout_stack>
-			</panel>
 		</panel>
-		<panel label="MEUS GRUPOS" name="groups_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<menu_button name="groups_viewsort_btn" tool_tip="Opções"/>
-				<button name="plus_btn" tool_tip="Ingressar em um grupo/Criar novo grupo"/>
-				<button name="activate_btn" tool_tip="Ativar o grupo selecionado"/>
+		<panel label="GRUPOS" name="groups_panel">
+			<panel label="bottom_panel" name="groups_buttons_panel">
+				<filter_editor label="Filtrar grupos" name="groups_filter_input"/>
+				<menu_button name="groups_gear_btn" tool_tip="Ações no grupo selecionado"/>
+				<menu_button name="groups_view_btn" tool_tip="Opções de exibição/ordenação"/>
+				<menu_button name="plus_btn" tool_tip="Entrar em um grupo/Criar novo grupo"/>
+				<dnd_button name="minus_btn" tool_tip="Sair do grupo selecionado"/>
 			</panel>
 		</panel>
 		<panel label="RECENTE" name="recent_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<menu_button name="recent_viewsort_btn" tool_tip="Opções"/>
-				<button name="add_friend_btn" tool_tip="Adicionar o residente selecionado para sua lista de amigos"/>
+			<panel label="bottom_panel" name="recent_buttons_panel">
+				<filter_editor label="Filtrar pessoas" name="recent_filter_input"/>
+				<button name="gear_btn" tool_tip="Ações nas pessoas selecionadas"/>
+				<menu_button name="recent_view_btn" tool_tip="Opções de exibição/ordenação"/>
+				<button name="add_friend_btn" tool_tip="Oferecer amizade ao residente"/>
+				<dnd_button name="recent_del_btn" tool_tip="Remover a pessoa selecionada dos amigos"/>
 			</panel>
 		</panel>
+		<panel label="BLOQUEADA" name="blocked_panel">
+			<panel label="Residentes e objetos bloqueados" name="panel_block_list_sidetray"/>
+		</panel>
 	</tab_container>
-	<panel name="button_bar">
-		<layout_stack name="bottom_bar_ls">
-			<layout_panel name="view_profile_btn_lp">
-				<button label="Perfil" name="view_profile_btn" tool_tip="Exibir fotografia, grupos e outras informações dos residentes"/>
-			</layout_panel>
-			<layout_panel name="im_btn_lp">
-				<button label="MI" name="im_btn" tool_tip="Abrir sessão de mensagem instantânea"/>
-			</layout_panel>
-			<layout_panel name="call_btn_lp">
-				<button label="Ligar" name="call_btn" tool_tip="Ligar para este residente"/>
-			</layout_panel>
-			<layout_panel name="share_btn_lp">
-				<button label="Compartilhar" name="share_btn" tool_tip="Compartilhar item de inventário"/>
-			</layout_panel>
-			<layout_panel name="teleport_btn_lp">
-				<button label="Teletransportar" name="teleport_btn" tool_tip="Oferecer teletransporte"/>
-			</layout_panel>
-		</layout_stack>
-		<layout_stack name="bottom_bar_ls1">
-			<layout_panel name="group_info_btn_lp">
-				<button label="Perfil do grupo" name="group_info_btn" tool_tip="Exibir dados do grupo"/>
-			</layout_panel>
-			<layout_panel name="chat_btn_lp">
-				<button label="Bate-papo de grupo" name="chat_btn" tool_tip="Nova sessão de bate-papo"/>
-			</layout_panel>
-			<layout_panel name="group_call_btn_lp">
-				<button label="Ligar para o grupo" name="group_call_btn" tool_tip="Ligar para este grupo"/>
-			</layout_panel>
-		</layout_stack>
-	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_chat.xml b/indra/newview/skins/default/xui/pt/panel_preferences_chat.xml
index 350d53b81c7..baf14c2c23f 100644
--- a/indra/newview/skins/default/xui/pt/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/pt/panel_preferences_chat.xml
@@ -1,34 +1,86 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Chat" name="chat">
-	<text name="font_size">
-		Tamanho da fonte:
-	</text>
-	<radio_group name="chat_font_size">
-		<radio_item label="Pequeno" name="radio" value="0"/>
-		<radio_item label="Médio" name="radio2" value="1"/>
-		<radio_item label="Grande" name="radio3" value="2"/>
-	</radio_group>
-	<check_box initial_value="true" label="Executar animação digitada quando estiver conversando" name="play_typing_animation"/>
-	<check_box label="Enviar MIs por email se estiver desconectado" name="send_im_to_email"/>
-	<check_box label="Ativar MIs e bate-papos de texto simples" name="plain_text_chat_history"/>
-	<check_box label="Balão de bate-papo" name="bubble_text_chat"/>
-	<text name="show_ims_in_label">
-		Mostrar MIs em:
-	</text>
-	<text name="requires_restart_label">
-		(Reinicie para ativar)
-	</text>
-	<radio_group name="chat_window" tool_tip="Exibir cada bate-papo em uma janela separada ou exibir todos em uma única janela com uma aba para cada pessoa (requer reinício)">
-		<radio_item label="Janelas separadas" name="radio" value="0"/>
-		<radio_item label="Guias" name="radio2" value="1"/>
-	</radio_group>
-	<text name="disable_toast_label">
-		Ativar pop-ups de novos bate-papos:
-	</text>
-	<check_box label="Bate-papo de grupo" name="EnableGroupChatPopups" tool_tip="Exibir pop-up de bate-papos novos de grupos"/>
-	<check_box label="Bate-papos de MI" name="EnableIMChatPopups" tool_tip="Exibir pop-up de mensagens instantâneas novas"/>
-	<spinner label="Transição de avisos de bate-papos por perto:" name="nearby_toasts_lifetime"/>
-	<spinner label="Transição de avisos de bate-papos por perto:" name="nearby_toasts_fadingtime"/>
+	<panel>
+		<check_box initial_value="true" label="Executar animação digitada quando estiver conversando" name="play_typing_animation"/>
+		<check_box label="Enviar MIs por email se estiver desconectado" name="send_im_to_email"/>
+		<check_box label="Apenas amigos e grupos podem me ligar ou enviar MIs" name="voice_call_friends_only_check"/>
+		<text name="font_size">
+			Tamanho da fonte:
+		</text>
+		<combo_box name="chat_font_size">
+			<item label="Pequeno" name="Small" value="0"/>
+			<item label="Médio" name="Medium" value="1"/>
+			<item label="Grande" name="Large" value="2"/>
+		</combo_box>
+		<check_box label="Balão de bate-papo" name="bubble_text_chat"/>
+	</panel>
+	<panel>
+		<text name="notifications">
+			Notificações
+		</text>
+		<text name="friend_ims">
+			MIs de amigos:
+		</text>
+		<combo_box name="FriendIMOptions">
+			<item label="Abrir janela Conversas" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Abrir pop up com mensagem" name="PopUpMessage" value="toast"/>
+			<item label="Piscar botão da barra de ferramentas" name="FlashToolbarButton" value="flash"/>
+			<item label="Nenhum" name="None" value="none"/>
+		</combo_box>
+		<text name="non_friend_ims">
+			MIs de não amigos:
+		</text>
+		<combo_box name="NonFriendIMOptions">
+			<item label="Abrir janela Conversas" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Abrir pop up com mensagem" name="PopUpMessage" value="toast"/>
+			<item label="Piscar botão da barra de ferramentas" name="FlashToolbarButton" value="flash"/>
+			<item label="Nenhum" name="None" value="none"/>
+		</combo_box>
+		<text name="conference_ims">
+			MIs de conferências:
+		</text>
+		<combo_box name="ConferenceIMOptions">
+			<item label="Abrir janela Conversas" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Abrir pop up com mensagem" name="PopUpMessage" value="toast"/>
+			<item label="Piscar botão da barra de ferramentas" name="FlashToolbarButton" value="flash"/>
+			<item label="Nenhum" name="None" value="none"/>
+		</combo_box>
+		<text name="group_chat">
+			Bate-papo de grupo:
+		</text>
+		<combo_box name="GroupChatOptions">
+			<item label="Abrir janela Conversas" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Abrir pop up com mensagem" name="PopUpMessage" value="toast"/>
+			<item label="Piscar botão da barra de ferramentas" name="FlashToolbarButton" value="flash"/>
+			<item label="Nenhum" name="None" value="none"/>
+		</combo_box>
+		<text name="nearby_chat">
+			Bate-papo local:
+		</text>
+		<combo_box name="NearbyChatOptions">
+			<item label="Abrir janela Conversas" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Abrir pop up com mensagem" name="PopUpMessage" value="toast"/>
+			<item label="Piscar botão da barra de ferramentas" name="FlashToolBarButton" value="flash"/>
+			<item label="Nenhum" name="None" value="none"/>
+		</combo_box>
+		<text name="notifications_alert">
+			Para interromper temporariamente todas as notificações, use Comunicar &gt; Não perturbe.
+		</text>
+	</panel>
+	<panel>
+		<text name="play_sound">
+			Executar som:
+		</text>
+		<check_box label="Nova conversa" name="new_conversation"/>
+		<check_box label="Chamada de voz recebida" name="incoming_voice_call"/>
+		<check_box label="Oferta de teletransporte" name="teleport_offer"/>
+		<check_box label="Oferta de inventário" name="inventory_offer"/>
+	</panel>
+	<panel>
+		<button label="Limpar registro..." name="clear_log"/>
+		<button label="Excluir transcrições..." name="delete_transcripts"/>
+		<button label="Procurar..." label_selected="Procurar" name="log_path_button"/>
+	</panel>
 	<button label="Tradução..." name="ok_btn"/>
 	<button label="Substituição automática..." name="autoreplace_showgui"/>
 	<button label="Verificando a ortografia..." name="spellcheck_showgui"/>
diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_general.xml b/indra/newview/skins/default/xui/pt/panel_preferences_general.xml
index c53aa7d5f70..8a0495f9bb5 100644
--- a/indra/newview/skins/default/xui/pt/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/pt/panel_preferences_general.xml
@@ -69,6 +69,9 @@
 		<combo_box.item label="(nunca)" name="item4"/>
 	</combo_box>
 	<text name="text_box3">
-		Mensagem do modo ocupado:
+		Resposta de Não perturbe:
 	</text>
+	<text_editor name="do_not_disturb_response">
+		log_in_to_change
+	</text_editor>
 </panel>
diff --git a/indra/newview/skins/default/xui/pt/sidepanel_task_info.xml b/indra/newview/skins/default/xui/pt/sidepanel_task_info.xml
index 3cfe0fe4f41..f0fd438cef5 100644
--- a/indra/newview/skins/default/xui/pt/sidepanel_task_info.xml
+++ b/indra/newview/skins/default/xui/pt/sidepanel_task_info.xml
@@ -72,6 +72,7 @@
 			<combo_box.item label="Comprar objeto" name="Buyobject"/>
 			<combo_box.item label="Pagar por objeto" name="Payobject"/>
 			<combo_box.item label="Abrir" name="Open"/>
+			<combo_box.item label="Zoom" name="Zoom"/>
 		</combo_box>
 		<panel name="perms_inv">
 			<text name="perm_modify">
diff --git a/indra/newview/skins/default/xui/pt/strings.xml b/indra/newview/skins/default/xui/pt/strings.xml
index bc72b860201..4bf18aab705 100644
--- a/indra/newview/skins/default/xui/pt/strings.xml
+++ b/indra/newview/skins/default/xui/pt/strings.xml
@@ -128,7 +128,7 @@
 		Sair
 	</string>
 	<string name="create_account_url">
-		http://join.secondlife.com/index.php?lang=pt-BR&amp;sourceid=[sourceid]
+		http://join.secondlife.com/?sourceid=[sourceid]
 	</string>
 	<string name="LoginFailedViewerNotPermitted">
 		O visualizador utilizado já não é compatível com o Second Life.  Visite a página abaixo para baixar uma versão atual: http://secondlife.com/download
@@ -571,8 +571,8 @@ Pessoas com contas gratuitas não poderão acessar o Second Life no momento para
 	<string name="AvatarAway">
 		Distante
 	</string>
-	<string name="AvatarBusy">
-		Ocupado
+	<string name="AvatarDoNotDisturb">
+		Não perturbe
 	</string>
 	<string name="AvatarMuted">
 		Mudo
@@ -808,6 +808,12 @@ Pessoas com contas gratuitas não poderão acessar o Second Life no momento para
 	<string name="ST_NO_JOINT">
 		Não é possível encontrar a raiz (ROOT) ou junção (JOINT).
 	</string>
+	<string name="NearbyChatTitle">
+		Bate-papo local
+	</string>
+	<string name="NearbyChatLabel">
+		(Bate-papo local)
+	</string>
 	<string name="whisper">
 		sussurra:
 	</string>
@@ -871,6 +877,9 @@ Pessoas com contas gratuitas não poderão acessar o Second Life no momento para
 	<string name="ControlYourCamera">
 		Controle sua camera
 	</string>
+	<string name="AgentNameSubst">
+		(Você)
+	</string>
 	<string name="TeleportYourAgent">
 		Teletransportá-lo
 	</string>
@@ -955,18 +964,6 @@ Pessoas com contas gratuitas não poderão acessar o Second Life no momento para
 	<string name="dictionary_files">
 		Dicionários
 	</string>
-	<string name="AvatarSetNotAway">
-		deixar como ausente
-	</string>
-	<string name="AvatarSetAway">
-		deixar como ausente
-	</string>
-	<string name="AvatarSetNotBusy">
-		deixar como não ocupado
-	</string>
-	<string name="AvatarSetBusy">
-		Deixar como ocupado
-	</string>
 	<string name="shape">
 		Silhueta
 	</string>
@@ -1923,8 +1920,8 @@ Pessoas com contas gratuitas não poderão acessar o Second Life no momento para
 	<string name="PanelContentsNewScript">
 		Novo Script
 	</string>
-	<string name="BusyModeResponseDefault">
-		O residente para o qual escreveu está no modo &apos;ocupado&apos;, ou seja, ele prefere não receber nada no momento. Sua mensagem será exibida como uma MI mais tarde.
+	<string name="DoNotDisturbModeResponseDefault">
+		Este residente ativou o &quot;Não perturbe&quot; e verá sua mensagem mais tarde.
 	</string>
 	<string name="MuteByName">
 		(por nome)
@@ -2037,9 +2034,6 @@ Pessoas com contas gratuitas não poderão acessar o Second Life no momento para
 	<string name="GroupMoneyDate">
 		[weekday,datetime,utc] [mth,datetime,utc] [day,datetime,utc], [year,datetime,utc]
 	</string>
-	<string name="ViewerObjectContents">
-		Conteúdo
-	</string>
 	<string name="AcquiredItems">
 		Itens adquiridos
 	</string>
@@ -3753,7 +3747,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 		Região em geral
 	</string>
 	<string name="LocationCtrlSeeAVsTooltip">
-		Avatar visíveis e bate-papo permitido fora deste terreno
+		Os avatares neste lote não podem ser vistos ou ouvidos por avatares fora dele
 	</string>
 	<string name="LocationCtrlPathfindingDirtyTooltip">
 		Os objetos que se movem podem não se comportar corretamente nesta região até que ela seja recarregada.
@@ -3830,6 +3824,12 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 	<string name="IM_unblock_only_groups_friends">
 		Para visualizar esta mensagem, você deve desmarcar &quot;Apenas amigos e grupos podem me ligar ou enviar MIs&quot; em Preferências/Privacidade.
 	</string>
+	<string name="OnlineStatus">
+		Conectado
+	</string>
+	<string name="OfflineStatus">
+		Desconectado
+	</string>
 	<string name="answered_call">
 		Ligação atendida
 	</string>
@@ -3839,6 +3839,9 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 	<string name="you_joined_call">
 		Você entrou na ligação
 	</string>
+	<string name="you_auto_rejected_call-im">
+		Você recusou automaticamente a chamada de voz enquanto &quot;Não perturbe&quot; estava ativado.
+	</string>
 	<string name="name_started_call">
 		[NAME] iniciou uma ligação de voz
 	</string>
@@ -3851,6 +3854,9 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 	<string name="hang_up-im">
 		Saiu da ligação de voz
 	</string>
+	<string name="conference-title">
+		Bate-papo com várias pessoas
+	</string>
 	<string name="conference-title-incoming">
 		Conversa com [AGENT_NAME]
 	</string>
@@ -4726,6 +4732,9 @@ Tente colocar o caminho do editor entre aspas.
 	<string name="Command_Chat_Label">
 		Bate-papo
 	</string>
+	<string name="Command_Conversations_Label">
+		Conversas
+	</string>
 	<string name="Command_Compass_Label">
 		Bússola
 	</string>
@@ -4801,6 +4810,9 @@ Tente colocar o caminho do editor entre aspas.
 	<string name="Command_Chat_Tooltip">
 		Bater papo com pessoas próximas usando texto
 	</string>
+	<string name="Command_Conversations_Tooltip">
+		Conversar com todos
+	</string>
 	<string name="Command_Compass_Tooltip">
 		Bússola
 	</string>
@@ -4930,4 +4942,13 @@ Tente colocar o caminho do editor entre aspas.
 	<string name="UserDictionary">
 		[Usuário]
 	</string>
+	<string name="logging_calls_disabled_log_empty">
+		As conversas não estão sendo registradas. Para começar a manter um registro, selecione &quot;Salvar: apenas registro&quot; ou &quot;Salvar: registro e transcrições&quot; em Preferências&gt; Bate-papo.
+	</string>
+	<string name="logging_calls_disabled_log_not_empty">
+		Nenhuma conversa será registrada. Para recomeçar a gravação de registros, selecione &quot;Salvar: apenas registro&quot; ou &quot;Salvar: registro e transcrições&quot; em Preferências&gt; Bate-papo.
+	</string>
+	<string name="logging_calls_enabled_log_empty">
+		Não há conversas registradas. Depois que você entrar em contato com alguém, ou alguém entrar em contato com você, um registro será exibido aqui.
+	</string>
 </strings>
diff --git a/indra/newview/skins/default/xui/ru/floater_conversation_log.xml b/indra/newview/skins/default/xui/ru/floater_conversation_log.xml
new file mode 100644
index 00000000000..090ac7193ac
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_conversation_log.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_conversation_log" title="ЖУРНАЛ РАЗГОВОРА">
+	<panel name="buttons_panel">
+		<filter_editor label="Фильтр для людей" name="people_filter_input"/>
+		<menu_button name="conversation_view_btn" tool_tip="Параметры просмотра/сортировки"/>
+		<menu_button name="conversations_gear_btn" tool_tip="Действия с выбранным жителем или группой"/>
+	</panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_conversation_preview.xml b/indra/newview/skins/default/xui/ru/floater_conversation_preview.xml
new file mode 100644
index 00000000000..23225fcf56d
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_conversation_preview.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="preview_conversation" title="РАЗГОВОР:">
+	<floater.string name="Title">
+		РАЗГОВОР: [NAME]
+	</floater.string>
+	<text name="page_label" value="Страница"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_im_container.xml b/indra/newview/skins/default/xui/ru/floater_im_container.xml
index b147cfa2b32..eba7a19cd4a 100644
--- a/indra/newview/skins/default/xui/ru/floater_im_container.xml
+++ b/indra/newview/skins/default/xui/ru/floater_im_container.xml
@@ -1,2 +1,29 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<multi_floater name="floater_im_box" title="ОБЩЕНИЕ"/>
+<multi_floater name="floater_im_box" title="ОБЩЕНИЕ">
+	<string name="collapse_icon" value="Conv_toolbar_collapse"/>
+	<string name="expand_icon" value="Conv_toolbar_expand"/>
+	<layout_stack name="conversations_stack">
+		<layout_panel name="conversations_layout_panel">
+			<layout_stack name="conversations_pane_buttons_stack">
+				<layout_panel name="conversations_pane_buttons_expanded">
+					<menu_button name="sort_btn" tool_tip="Параметры просмотра/сортировки"/>
+					<button name="add_btn" tool_tip="Начать разговор"/>
+					<button name="speak_btn" tool_tip="Разговаривать через микрофон"/>
+				</layout_panel>
+				<layout_panel name="conversations_pane_buttons_collapsed">
+					<button name="expand_collapse_btn" tool_tip="Свернуть/развернуть этот список"/>
+				</layout_panel>
+			</layout_stack>
+		</layout_panel>
+		<layout_panel name="messages_layout_panel">
+			<panel_container name="im_box_tab_container">
+				<panel name="stub_panel">
+					<button name="stub_collapse_btn" tool_tip="Свернуть эту панель"/>
+					<text name="stub_textbox">
+						Разговор отображается в отдельном окне.   [secondlife:/// Вернуть.]
+					</text>
+				</panel>
+			</panel_container>
+		</layout_panel>
+	</layout_stack>
+</multi_floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_im_session.xml b/indra/newview/skins/default/xui/ru/floater_im_session.xml
index 604d9dc6d33..ea110ffb44a 100644
--- a/indra/newview/skins/default/xui/ru/floater_im_session.xml
+++ b/indra/newview/skins/default/xui/ru/floater_im_session.xml
@@ -1,8 +1,59 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="panel_im">
-	<layout_stack name="im_panels">
-		<layout_panel>
-			<line_editor label="Кому" name="chat_editor"/>
-		</layout_panel>
-	</layout_stack>
+	<floater.string name="call_btn_start">
+		Conv_toolbar_open_call
+	</floater.string>
+	<floater.string name="call_btn_stop">
+		Conv_toolbar_hang_up
+	</floater.string>
+	<floater.string name="collapseline_icon" value="Conv_collapse_to_one_line"/>
+	<floater.string name="expandline_icon" value="Conv_expand_one_line"/>
+	<floater.string name="collapse_icon" value="Conv_toolbar_collapse"/>
+	<floater.string name="expand_icon" value="Conv_toolbar_expand"/>
+	<floater.string name="tear_off_icon" value="Conv_toolbar_arrow_ne"/>
+	<floater.string name="return_icon" value="Conv_toolbar_arrow_sw"/>
+	<floater.string name="participant_added" value="[NAME] приглашен(а) на разговор."/>
+	<floater.string name="multiple_participants_added" value="[NAME] приглашены на разговор."/>
+	<floater.string name="tooltip_to_separate_window" value="Перенести этот разговор в отдельное окно"/>
+	<floater.string name="tooltip_to_main_window" value="Вернуть этот разговор в главное окно"/>
+	<floater.string name="start_call_button_tooltip" value="Открыть голосовое подключение"/>
+	<floater.string name="end_call_button_tooltip" value="Закрыть голосовое подключение"/>
+	<floater.string name="expcol_button_not_tearoff_tooltip" value="Свернуть эту панель"/>
+	<floater.string name="expcol_button_tearoff_and_expanded_tooltip" value="Свернуть список участников"/>
+	<floater.string name="expcol_button_tearoff_and_collapsed_tooltip" value="Развернуть список участников"/>
+	<view name="contents_view">
+		<layout_stack name="main_stack">
+			<layout_panel name="toolbar_panel">
+				<menu_button name="view_options_btn" tool_tip="Параметры просмотра/сортировки"/>
+				<menu_button name="gear_btn" tool_tip="Действия с выбранным жителем"/>
+				<button name="add_btn" tool_tip="Добавить участника в этот разговор"/>
+				<button name="voice_call_btn" tool_tip="Открыть голосовое подключение"/>
+				<button name="close_btn" tool_tip="Завершить этот разговор"/>
+				<button name="expand_collapse_btn" tool_tip="Развернуть/свернуть эту панель"/>
+			</layout_panel>
+			<layout_panel name="body_panel">
+				<layout_stack name="im_panels">
+					<layout_panel name="right_part_holder">
+						<panel name="trnsAndChat_panel">
+							<layout_stack name="translate_and_chat_stack">
+								<layout_panel name="translate_chat_checkbox_lp">
+									<check_box label="Переводить чат" name="translate_chat_checkbox"/>
+								</layout_panel>
+							</layout_stack>
+						</panel>
+					</layout_panel>
+				</layout_stack>
+			</layout_panel>
+			<layout_panel name="chat_layout_panel">
+				<layout_stack name="input_panels">
+					<layout_panel name="input_editor_layout_panel">
+						<chat_editor label="Кому" name="chat_editor"/>
+					</layout_panel>
+					<layout_panel name="input_button_layout_panel">
+						<button name="minz_btn" tool_tip="Показать/скрыть панель сообщений"/>
+					</layout_panel>
+				</layout_stack>
+			</layout_panel>
+		</layout_stack>
+	</view>
 </floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_incoming_call.xml b/indra/newview/skins/default/xui/ru/floater_incoming_call.xml
index 072c20147df..3f61421d0ce 100644
--- a/indra/newview/skins/default/xui/ru/floater_incoming_call.xml
+++ b/indra/newview/skins/default/xui/ru/floater_incoming_call.xml
@@ -10,7 +10,7 @@
 		анонимно
 	</floater.string>
 	<floater.string name="VoiceInviteP2P">
-		вызывает.
+		вызывает вас.
 	</floater.string>
 	<floater.string name="VoiceInviteAdHoc">
 		теперь участвует в групповом голосовом чате.
@@ -25,9 +25,9 @@
 		Хотите выйти из чата «[CURRENT_CHAT]» и присоединиться к этому голосовому чату?
 	</floater.string>
 	<text name="question">
-		Хотите выйти из чата «[CURRENT_CHAT]» и присоединиться к этому голосовому чату?
+		Если вы ответите, вы покинете текущий голосовой чат.
 	</text>
-	<button label="Принять" label_selected="Принять" name="Accept"/>
-	<button label="Отклонить" label_selected="Отклонить" name="Reject"/>
-	<button label="Начать IM" name="Start IM"/>
+	<button label="Ответить" label_selected="Ответить" name="Accept"/>
+	<button label="Игнорировать" label_selected="Игнорировать" name="Reject"/>
+	<button label="Открыть IM" name="Start IM"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_pathfinding_console.xml b/indra/newview/skins/default/xui/ru/floater_pathfinding_console.xml
index fa72df04fdc..8faddb18058 100644
--- a/indra/newview/skins/default/xui/ru/floater_pathfinding_console.xml
+++ b/indra/newview/skins/default/xui/ru/floater_pathfinding_console.xml
@@ -71,7 +71,7 @@
 			<text name="show_label">
 				Показать:
 			</text>
-			<check_box label="Мир" name="show_world"/>
+			<check_box label="Тест" name="show_world"/>
 			<check_box label="Только перемещаемые предметы" name="show_world_movables_only"/>
 			<check_box label="Навигационная сетка" name="show_navmesh"/>
 			<text name="show_walkability_label">
diff --git a/indra/newview/skins/default/xui/ru/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/ru/floater_texture_ctrl.xml
index db37089aeba..a9a21e7d4a1 100644
--- a/indra/newview/skins/default/xui/ru/floater_texture_ctrl.xml
+++ b/indra/newview/skins/default/xui/ru/floater_texture_ctrl.xml
@@ -19,7 +19,7 @@
 	<button label="По умолчанию" label_selected="По умолчанию" name="Default"/>
 	<button label="Очистить" label_selected="Очистить" name="Blank"/>
 	<button label="Нет" label_selected="Нет" name="None"/>
-	<check_box initial_value="истина" label="Просмотр вживую" name="apply_immediate_check"/>
+	<check_box initial_value="истина" label="Применить сейчас" name="apply_immediate_check"/>
 	<text name="preview_disabled" value="Просмотр отключен"/>
 	<filter_editor label="Фильтровать текстуры" name="inventory search editor"/>
 	<check_box initial_value="ложь" label="Показывать папки" name="show_folders_check"/>
diff --git a/indra/newview/skins/default/xui/ru/floater_voice_chat_volume.xml b/indra/newview/skins/default/xui/ru/floater_voice_chat_volume.xml
new file mode 100644
index 00000000000..5a7e7a70610
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_voice_chat_volume.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_voice_volume" title="ГРОМКОСТЬ ГОЛОСОВОГО ЧАТА">
+	<slider label="Голосовой чат" name="chat_voice_volume"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_voice_effect.xml b/indra/newview/skins/default/xui/ru/floater_voice_effect.xml
index 1eb8a94d7a7..d3cef042a31 100644
--- a/indra/newview/skins/default/xui/ru/floater_voice_effect.xml
+++ b/indra/newview/skins/default/xui/ru/floater_voice_effect.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater label="Места" name="voice_effects" title="ИЗМЕНЕНИЕ ГОЛОСА">
+<floater label="Места" name="voice_effects" title="ПРОСМОТР ИЗМЕНЕНИЯ ГОЛОСА">
 	<string name="no_voice_effect">
 		(Нет изменения голоса)
 	</string>
diff --git a/indra/newview/skins/default/xui/ru/floater_voice_volume.xml b/indra/newview/skins/default/xui/ru/floater_voice_volume.xml
new file mode 100644
index 00000000000..aca6bd518aa
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_voice_volume.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!--
+  Not can_close / no title to avoid window chrome
+  Single instance - only have one at a time, recycle it each spawn
+-->
+<floater name="floater_voice_volume" title="ГРОМКОСТЬ ГОЛОСА">
+	<slider name="volume_slider" tool_tip="Громкость голоса" value="0.5"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/menu_cof_gear.xml b/indra/newview/skins/default/xui/ru/menu_cof_gear.xml
index 0332c03a046..b7a32dfd753 100644
--- a/indra/newview/skins/default/xui/ru/menu_cof_gear.xml
+++ b/indra/newview/skins/default/xui/ru/menu_cof_gear.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu name="Gear COF">
 	<menu label="Новая одежда" name="COF.Gear.New_Clothes"/>
-	<menu label="Новые части тела" name="COF.Geear.New_Body_Parts"/>
+	<menu label="Новые части тела" name="COF.Gear.New_Body_Parts"/>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_conversation.xml b/indra/newview/skins/default/xui/ru/menu_conversation.xml
new file mode 100644
index 00000000000..530b1ea704e
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_conversation.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_conversation_participant">
+	<menu_item_call label="Закрыть разговор" name="close_conversation"/>
+	<menu_item_call label="Открыть голосовой чат" name="open_voice_conversation"/>
+	<menu_item_call label="Прекратить голосовой чат" name="disconnect_from_voice"/>
+	<menu_item_call label="Смотреть профиль" name="view_profile"/>
+	<menu_item_call label="IM" name="im"/>
+	<menu_item_call label="Предложить телепортацию" name="offer_teleport"/>
+	<menu_item_call label="Голосовой вызов" name="voice_call"/>
+	<menu_item_call label="Журнал чата..." name="chat_history"/>
+	<menu_item_call label="Добавить друга" name="add_friend"/>
+	<menu_item_call label="Удалить друга" name="remove_friend"/>
+	<menu_item_call label="Удалить друзей" name="remove_friends"/>
+	<menu_item_call label="Пригласить в группу..." name="invite_to_group"/>
+	<menu_item_call label="Приблизить" name="zoom_in"/>
+	<menu_item_call label="Карта" name="map"/>
+	<menu_item_call label="Поделиться" name="share"/>
+	<menu_item_call label="Заплатить" name="pay"/>
+	<menu_item_check label="Блокировать голос" name="block_unblock"/>
+	<menu_item_check label="Блокировать текст" name="MuteText"/>
+	<menu_item_call label="Профиль группы" name="group_profile"/>
+	<menu_item_call label="Активировать группу" name="activate_group"/>
+	<menu_item_call label="Покинуть группу" name="leave_group"/>
+	<context_menu label="Параметры модератора" name="Moderator Options">
+		<menu_item_check label="Разрешить текстовый чат" name="AllowTextChat"/>
+		<menu_item_call label="Заглушить этого участника" name="ModerateVoiceMuteSelected"/>
+		<menu_item_call label="Позволить говорить этому участнику" name="ModerateVoiceUnMuteSelected"/>
+		<menu_item_call label="Заглушить всех" name="ModerateVoiceMute"/>
+		<menu_item_call label="Позволить говорить всем" name="ModerateVoiceUnmute"/>
+	</context_menu>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_conversation_log_gear.xml b/indra/newview/skins/default/xui/ru/menu_conversation_log_gear.xml
new file mode 100644
index 00000000000..3fbffbe038a
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_conversation_log_gear.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Conversation Context Menu">
+	<menu_item_call label="IM..." name="IM"/>
+	<menu_item_call label="Голосовой вызов..." name="Call"/>
+	<menu_item_call label="Открыть журнал чата..." name="Chat history"/>
+	<menu_item_call label="Смотреть профиль" name="View Profile"/>
+	<menu_item_call label="Предложить телепорт" name="teleport"/>
+	<menu_item_call label="Добавить друга" name="add_friend"/>
+	<menu_item_call label="Удалить из друзей" name="remove_friend"/>
+	<menu_item_call label="Пригласить в группу..." name="Invite"/>
+	<menu_item_call label="Карта" name="Map"/>
+	<menu_item_call label="Поделиться" name="Share"/>
+	<menu_item_call label="Заплатить" name="Pay"/>
+	<menu_item_check label="Черный список" name="Block/Unblock"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_conversation_log_view.xml b/indra/newview/skins/default/xui/ru/menu_conversation_log_view.xml
new file mode 100644
index 00000000000..928146e273e
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_conversation_log_view.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_conversation_view">
+	<menu_item_check label="Сортировать по имени" name="sort_by_name"/>
+	<menu_item_check label="Сортировать по дате" name="sort_by_date"/>
+	<menu_item_check label="Сначала друзья" name="sort_by_friends"/>
+	<menu_item_call label="Посмотреть журнал локального чата..." name="view_nearby_chat_history"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_im_conversation.xml b/indra/newview/skins/default/xui/ru/menu_im_conversation.xml
new file mode 100644
index 00000000000..1db0b8bae30
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_im_conversation.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Conversation Gear Menu">
+	<menu_item_call label="Смотреть профиль" name="View Profile"/>
+	<menu_item_call label="Добавить друга" name="Add Friend"/>
+	<menu_item_call label="Удалить друга" name="remove_friend"/>
+	<menu_item_call label="Предложить телепортацию" name="offer_teleport"/>
+	<menu_item_call label="Пригласить в группу..." name="invite_to_group"/>
+	<menu_item_call label="Журнал чата..." name="chat_history"/>
+	<menu_item_call label="Приблизить" name="zoom_in"/>
+	<menu_item_call label="Карта" name="map"/>
+	<menu_item_call label="Поделиться" name="Share"/>
+	<menu_item_call label="Заплатить" name="Pay"/>
+	<menu_item_check label="Блокировать голос" name="Block/Unblock"/>
+	<menu_item_check label="Блокировать текст" name="MuteText"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_im_session_showmodes.xml b/indra/newview/skins/default/xui/ru/menu_im_session_showmodes.xml
new file mode 100644
index 00000000000..35cff8e4bf5
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_im_session_showmodes.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_modes">
+	<menu_item_check label="Компактный вид" name="compact_view"/>
+	<menu_item_check label="Развернутый вид" name="expanded_view"/>
+	<menu_item_check label="Показать время" name="IMShowTime"/>
+	<menu_item_check label="Показывать имена при разговорах" name="IMShowNamesForP2PConv"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_object_icon.xml b/indra/newview/skins/default/xui/ru/menu_object_icon.xml
index 6229b2e72fe..0c50abcfbdf 100644
--- a/indra/newview/skins/default/xui/ru/menu_object_icon.xml
+++ b/indra/newview/skins/default/xui/ru/menu_object_icon.xml
@@ -2,4 +2,6 @@
 <menu name="Object Icon Menu">
 	<menu_item_call label="Профиль объекта..." name="Object Profile"/>
 	<menu_item_call label="Блокировать..." name="Block"/>
+	<menu_item_call label="Показать на карте" name="show_on_map"/>
+	<menu_item_call label="Телепорт в местоположение объекта" name="teleport_to_object"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_outfit_gear.xml b/indra/newview/skins/default/xui/ru/menu_outfit_gear.xml
index 93dbd7d6a7a..d379a172166 100644
--- a/indra/newview/skins/default/xui/ru/menu_outfit_gear.xml
+++ b/indra/newview/skins/default/xui/ru/menu_outfit_gear.xml
@@ -23,6 +23,8 @@
 		<menu_item_call label="Новые волосы" name="New Hair"/>
 		<menu_item_call label="Новые глаза" name="New Eyes"/>
 	</menu>
+	<menu_item_call label="Открыть все папки" name="expand"/>
+	<menu_item_call label="Закрыть все папки" name="collapse"/>
 	<menu_item_call label="Переименовать костюм" name="rename"/>
 	<menu_item_call label="Удалить костюм" name="delete_outfit"/>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_participant_view.xml b/indra/newview/skins/default/xui/ru/menu_participant_view.xml
new file mode 100644
index 00000000000..851a42d428a
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_participant_view.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="participant_manu_view">
+	<menu_item_check label="Сортировать разговоры по типу" name="sort_sessions_by_type"/>
+	<menu_item_check label="Сортировать разговоры по имени" name="sort_sessions_by_name"/>
+	<menu_item_check label="Сортировать разговоры по последнему действию" name="sort_sessions_by_recent"/>
+	<menu_item_check label="Сортировать участников по имени" name="sort_participants_by_name"/>
+	<menu_item_check label="Сортировать участников по последнему действию" name="sort_participants_by_recent"/>
+	<menu_item_call label="Изменить настройки..." name="chat_preferences"/>
+	<menu_item_call label="Настройки приватности..." name="privacy_preferences"/>
+	<menu_item_check label="Журнал разговора..." name="Conversation"/>
+	<menu_item_check label="Перевести локальный чат" name="Translate_chat"/>
+	<menu_item_check label="Настройки перевода..." name="Translation_settings"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_people_blocked_gear.xml b/indra/newview/skins/default/xui/ru/menu_people_blocked_gear.xml
new file mode 100644
index 00000000000..157f2ad5e23
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_people_blocked_gear.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_blocked_gear">
+	<menu_item_call label="Разблокировать" name="unblock"/>
+	<menu_item_call label="Профиль…" name="profile"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_people_blocked_plus.xml b/indra/newview/skins/default/xui/ru/menu_people_blocked_plus.xml
new file mode 100644
index 00000000000..f42e8f8609b
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_people_blocked_plus.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_blocked_plus">
+	<menu_item_call label="Блокировать жителя по имени..." name="block_resident_by_name"/>
+	<menu_item_call label="Блокировать объект по имени" name="block_object_by_name"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_people_blocked_view.xml b/indra/newview/skins/default/xui/ru/menu_people_blocked_view.xml
new file mode 100644
index 00000000000..8c0150e8aed
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_people_blocked_view.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_blocked_view">
+	<menu_item_check label="Сортировать по имени" name="sort_by_name"/>
+	<menu_item_check label="Сортировать по типу" name="sort_by_type"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_people_friends_view.xml b/indra/newview/skins/default/xui/ru/menu_people_friends_view.xml
new file mode 100644
index 00000000000..7b2dba05396
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_people_friends_view.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="Сортировать по имени" name="sort_name"/>
+	<menu_item_check label="Сортировать по статусу" name="sort_status"/>
+	<menu_item_check label="Показывать значки людей" name="view_icons"/>
+	<menu_item_check label="Показывать разрешенные действия" name="view_permissions"/>
+	<menu_item_check label="Посмотреть журнал разговора..." name="view_conversation"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_people_groups.xml b/indra/newview/skins/default/xui/ru/menu_people_groups.xml
index e734a83ef08..78d73c9d1ed 100644
--- a/indra/newview/skins/default/xui/ru/menu_people_groups.xml
+++ b/indra/newview/skins/default/xui/ru/menu_people_groups.xml
@@ -2,7 +2,7 @@
 <menu name="menu_group_plus">
 	<menu_item_call label="Информация" name="View Info"/>
 	<menu_item_call label="Чат" name="Chat"/>
-	<menu_item_call label="Звонок" name="Call"/>
+	<menu_item_call label="Голосовой вызов" name="Call"/>
 	<menu_item_call label="Активация" name="Activate"/>
 	<menu_item_call label="Покинуть" name="Leave"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_people_groups_view.xml b/indra/newview/skins/default/xui/ru/menu_people_groups_view.xml
new file mode 100644
index 00000000000..cbf1c64774f
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_people_groups_view.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="Показывать значки группы" name="Display Group Icons"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_people_nearby.xml b/indra/newview/skins/default/xui/ru/menu_people_nearby.xml
index ebce959044d..d05b7e7d012 100644
--- a/indra/newview/skins/default/xui/ru/menu_people_nearby.xml
+++ b/indra/newview/skins/default/xui/ru/menu_people_nearby.xml
@@ -1,13 +1,16 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Avatar Context Menu">
-	<menu_item_call label="Смотреть профиль" name="View Profile"/>
-	<menu_item_call label="В друзья" name="Add Friend"/>
-	<menu_item_call label="Удалить из друзей" name="Remove Friend"/>
-	<menu_item_call label="IM" name="IM"/>
-	<menu_item_call label="Звонок" name="Call"/>
-	<menu_item_call label="Карта" name="Map"/>
-	<menu_item_call label="Поделиться" name="Share"/>
-	<menu_item_call label="Заплатить" name="Pay"/>
-	<menu_item_check label="Черный список" name="Block/Unblock"/>
-	<menu_item_call label="Предложить телепорт" name="teleport"/>
+	<menu_item_call label="Смотреть профиль" name="view_profile"/>
+	<menu_item_call label="IM" name="im"/>
+	<menu_item_call label="Предложить телепорт" name="offer_teleport"/>
+	<menu_item_call label="Голосовой вызов" name="voice_call"/>
+	<menu_item_call label="Посмотреть журнал чата..." name="chat_history"/>
+	<menu_item_call label="Добавить друга" name="add_friend"/>
+	<menu_item_call label="Удалить из друзей" name="remove_friend"/>
+	<menu_item_call label="Пригласить в группу..." name="invite_to_group"/>
+	<menu_item_call label="Приблизить" name="zoom_in"/>
+	<menu_item_call label="Карта" name="map"/>
+	<menu_item_call label="Поделиться" name="share"/>
+	<menu_item_call label="Заплатить" name="pay"/>
+	<menu_item_check label="Черный список" name="block_unblock"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/ru/menu_people_nearby_multiselect.xml
index 0e8e0d40537..88eb56c9f5e 100644
--- a/indra/newview/skins/default/xui/ru/menu_people_nearby_multiselect.xml
+++ b/indra/newview/skins/default/xui/ru/menu_people_nearby_multiselect.xml
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Multi-Selected People Context Menu">
-	<menu_item_call label="Добавить в друзья" name="Add Friends"/>
-	<menu_item_call label="Удалить из друзей" name="Remove Friend"/>
-	<menu_item_call label="IM" name="IM"/>
-	<menu_item_call label="Звонок" name="Call"/>
-	<menu_item_call label="Поделиться" name="Share"/>
-	<menu_item_call label="Заплатить" name="Pay"/>
-	<menu_item_call label="Предложить телепорт" name="teleport"/>
+	<menu_item_call label="Добавить в друзья" name="add_friends"/>
+	<menu_item_call label="Удалить из друзей" name="remove_friends"/>
+	<menu_item_call label="IM" name="im"/>
+	<menu_item_call label="Звонок" name="call"/>
+	<menu_item_call label="Поделиться" name="share"/>
+	<menu_item_call label="Заплатить" name="pay"/>
+	<menu_item_call label="Предложить телепорт" name="offer_teleport"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_people_nearby_view.xml b/indra/newview/skins/default/xui/ru/menu_people_nearby_view.xml
new file mode 100644
index 00000000000..2bc353ad583
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_people_nearby_view.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="Сортировать по недавно говорившим" name="sort_by_recent_speakers"/>
+	<menu_item_check label="Сортировать по имени" name="sort_name"/>
+	<menu_item_check label="Сортировать по расстоянию" name="sort_distance"/>
+	<menu_item_check label="Показывать значки людей" name="view_icons"/>
+	<menu_item_check label="Смотреть карту" name="view_map"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_people_recent_view.xml b/indra/newview/skins/default/xui/ru/menu_people_recent_view.xml
new file mode 100644
index 00000000000..a009cf081f3
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_people_recent_view.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="Сортировать по времени" name="sort_most"/>
+	<menu_item_check label="Сортировать по имени" name="sort_name"/>
+	<menu_item_check label="Показывать значки людей" name="view_icons"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_url_agent.xml b/indra/newview/skins/default/xui/ru/menu_url_agent.xml
index 0ba3ee152a5..230d049fad6 100644
--- a/indra/newview/skins/default/xui/ru/menu_url_agent.xml
+++ b/indra/newview/skins/default/xui/ru/menu_url_agent.xml
@@ -1,6 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Url Popup">
-	<menu_item_call label="Показать профиль жителя" name="show_agent"/>
+	<menu_item_call label="Смотреть профиль" name="show_agent"/>
+	<menu_item_call label="Отправить сообщение..." name="send_im"/>
+	<menu_item_call label="Добавить в друзья..." name="add_friend"/>
 	<menu_item_call label="Копировать название в буфер обмена" name="url_copy_label"/>
 	<menu_item_call label="Копировать URL-адрес SL в буфер обмена" name="url_copy"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_url_objectim.xml b/indra/newview/skins/default/xui/ru/menu_url_objectim.xml
index 6e7800d3f5d..1326db708e5 100644
--- a/indra/newview/skins/default/xui/ru/menu_url_objectim.xml
+++ b/indra/newview/skins/default/xui/ru/menu_url_objectim.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Url Popup">
-	<menu_item_call label="Показать информацию об объекте" name="show_object"/>
+	<menu_item_call label="Профиль объекта..." name="show_object"/>
 	<menu_item_call label="Показать на карте" name="show_on_map"/>
 	<menu_item_call label="Телепорт в местоположение объекта" name="teleport_to_object"/>
 	<menu_item_call label="Копировать название объекта в буфер обмена" name="url_copy_label"/>
diff --git a/indra/newview/skins/default/xui/ru/menu_viewer.xml b/indra/newview/skins/default/xui/ru/menu_viewer.xml
index d9425937c36..d6625361c58 100644
--- a/indra/newview/skins/default/xui/ru/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/ru/menu_viewer.xml
@@ -16,10 +16,7 @@
 			<menu_item_call label="Остановить анимацию" name="Stop Animating My Avatar"/>
 			<menu_item_call label="Ходьба / бег / полет..." name="Walk / run / fly"/>
 		</menu>
-		<menu label="Статус" name="Status">
-			<menu_item_call label="Нет на месте" name="Set Away"/>
-			<menu_item_call label="Не беспокоить" name="Set Busy"/>
-		</menu>
+		<menu label="Статус" name="Status"/>
 		<menu_item_call label="Купить L$..." name="Buy and Sell L$"/>
 		<menu_item_call label="Торговые исходящие..." name="MerchantOutbox"/>
 		<menu_item_call label="Информационная панель аккаунта..." name="Manage My Account"/>
@@ -30,14 +27,18 @@
 		<menu_item_call label="Выход из [APP_NAME]" name="Quit"/>
 	</menu>
 	<menu label="Общение" name="Communicate">
-		<menu_item_check label="Чат..." name="Nearby Chat"/>
+		<menu_item_check label="Разговоры..." name="Conversations"/>
+		<menu_item_check label="Локальный чат..." name="Nearby Chat"/>
 		<menu_item_check label="Говорить" name="Speak"/>
-		<menu_item_check label="Настройки голоса..." name="Nearby Voice"/>
-		<menu_item_check label="Изменение голоса..." name="ShowVoice"/>
+		<menu label="Изменение голоса" name="VoiceMorphing">
+			<menu_item_check label="Без изменения голоса" name="NoVoiceMorphing"/>
+			<menu_item_check label="Просмотр..." name="Preview"/>
+			<menu_item_call label="Подписаться..." name="Subscribe"/>
+		</menu>
 		<menu_item_check label="Жесты..." name="Gestures"/>
-		<menu_item_call label="Друзья" name="My Friends"/>
-		<menu_item_call label="Группы" name="My Groups"/>
-		<menu_item_call label="Люди неподалеку" name="Active Speakers"/>
+		<menu_item_check label="Друзья" name="My Friends"/>
+		<menu_item_check label="Группы" name="My Groups"/>
+		<menu_item_check label="Люди неподалеку" name="Active Speakers"/>
 		<menu_item_call label="Черный список" name="Block List"/>
 	</menu>
 	<menu label="Мир" name="World">
@@ -113,7 +114,6 @@
 			<menu_item_call label="Купить" name="Menu Object Buy"/>
 			<menu_item_call label="Взять" name="Menu Object Take"/>
 			<menu_item_call label="Взять копию" name="Take Copy"/>
-			<menu_item_call label="Сохранить в моем инвентаре" name="Save Object Back to My Inventory"/>
 			<menu_item_call label="Сохранить в контенте объектов" name="Save Object Back to Object Contents"/>
 			<menu_item_call label="Вернуть объект" name="Return Object back to Owner"/>
 		</menu>
@@ -128,6 +128,7 @@
 			<menu_item_call label="Наборы связей..." name="pathfinding_linksets_menu_item"/>
 			<menu_item_call label="Персонажи..." name="pathfinding_characters_menu_item"/>
 			<menu_item_call label="Просмотр/тестирование..." name="pathfinding_console_menu_item"/>
+			<menu_item_call label="Восстановить регион" name="pathfinding_rebake_navmesh_item"/>
 		</menu>
 		<menu label="Параметры" name="Options">
 			<menu_item_check label="Показать расширенные разрешения" name="DebugPermissions"/>
@@ -157,6 +158,13 @@
 	<menu label="Справка" name="Help">
 		<menu_item_call label="Инструкции..." name="How To"/>
 		<menu_item_call label="Справка по [SECOND_LIFE]" name="Second Life Help"/>
+		<menu_item_call label="Руководство пользователя" name="User’s guide"/>
+		<menu_item_call label="База знаний" name="Knowledge Base"/>
+		<menu_item_call label="Wiki" name="Wiki"/>
+		<menu_item_call label="Форумы сообщества" name="Community Forums"/>
+		<menu_item_call label="Портал поддержки" name="Support portal"/>
+		<menu_item_call label="Новости [SECOND_LIFE]" name="Second Life News"/>
+		<menu_item_call label="Блоги [SECOND_LIFE]" name="Second Life Blogs"/>
 		<menu_item_call label="Жалоба" name="Report Abuse"/>
 		<menu_item_call label="Сообщить об ошибке" name="Report Bug"/>
 		<menu_item_call label="О [APP_NAME]" name="About Second Life"/>
@@ -383,9 +391,14 @@
 				<menu_item_call label="Проверка женщины" name="Test Female"/>
 				<menu_item_check label="Разрешить выбор аватара" name="Allow Select Avatar"/>
 			</menu>
+			<menu label="Скорость анимации" name="Animation Speed">
+				<menu_item_call label="Ускорить все анимации на 10%" name="All Animations 10 Faster"/>
+				<menu_item_call label="Замедлить все анимации на 10%" name="All Animations 10 Slower"/>
+				<menu_item_call label="Восстановить скорость анимаций" name="Reset All Animation Speed"/>
+				<menu_item_check label="Анимация медленных движений" name="Slow Motion Animations"/>
+			</menu>
 			<menu_item_call label="Скинуть параметры" name="Force Params to Default"/>
 			<menu_item_check label="Данные об анимации" name="Animation Info"/>
-			<menu_item_check label="Анимация медленных движений" name="Slow Motion Animations"/>
 			<menu_item_check label="Показать взгляд" name="Show Look At"/>
 			<menu_item_check label="Показать указание" name="Show Point At"/>
 			<menu_item_check label="Отладка обновленных движений суставов" name="Debug Joint Updates"/>
diff --git a/indra/newview/skins/default/xui/ru/notifications.xml b/indra/newview/skins/default/xui/ru/notifications.xml
index 85b7074253f..00ab0b57633 100644
--- a/indra/newview/skins/default/xui/ru/notifications.xml
+++ b/indra/newview/skins/default/xui/ru/notifications.xml
@@ -516,6 +516,24 @@
 		</url>
 		<usetemplate ignoretext="Мой графический драйвер устарел" name="okcancelignore" notext="Нет" yestext="Да"/>
 	</notification>
+	<notification name="AMDOldDriver">
+		Возможно, для вашей видеокарты имеется более новый драйвер.  Обновление драйвера может существенно повысить быстродействие.
+
+    Проверить наличие обновления для драйвера по адресу [_URL]?
+		<url name="url">
+			http://support.amd.com/us/Pages/AMDSupportHub.aspx
+		</url>
+		<usetemplate ignoretext="Мой графический драйвер устарел" name="okcancelignore" notext="Нет" yestext="Да"/>
+	</notification>
+	<notification name="NVIDIAOldDriver">
+		Возможно, для вашей видеокарты имеется более новый драйвер.  Обновление драйвера может существенно повысить быстродействие.
+
+    Проверить наличие обновления для драйвера по адресу [_URL]?
+		<url name="url">
+			http://www.nvidia.com/Download/index.aspx?lang=ru-ru
+		</url>
+		<usetemplate ignoretext="Мой графический драйвер устарел" name="okcancelignore" notext="Нет" yestext="Да"/>
+	</notification>
 	<notification name="UnknownGPU">
 		В вашей системе установлена графическая карта, которую [APP_NAME] не может распознать.
 Так часто бывает, если новое оборудование еще не было проверено на работу с [APP_NAME].  Скорее всего, оно будет работать нормально, но, возможно, придется отрегулировать параметры графики.
@@ -1546,10 +1564,13 @@ http://secondlife.com/download.
 		Сейчас невозможно предложить дружбу. Повторите попытку через минуту.
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
-	<notification name="BusyModeSet">
-		Установлен режим «Занят».
-Сообщения чата и IM будут скрыты. На IM-сообщения будет возвращаться заданный ответ в режиме «Занят». Все предложения телепортации будут отклоняться. Все предложения инвентаря будут направлены в корзину.
-		<usetemplate ignoretext="Смена моего статуса на режим «Занят»" name="okignore" yestext="OK"/>
+	<notification name="DoNotDisturbModeSet">
+		Режим «Не беспокоить» включен.  Вы не будете получать уведомлений о входящих вызовах.
+
+- Другие жители будут получать ваш ответ, установленный для режима «Не беспокоить» (Настройки &gt; Общие).
+- Предложения телепортации будут отклоняться.
+- Голосовые вызовы будут отклоняться.
+		<usetemplate ignoretext="Смена моего статуса на режим «Не беспокоить»" name="okignore" yestext="OK"/>
 	</notification>
 	<notification name="JoinedTooManyGroupsMember">
 		Достигнуто максимальное количество групп. Выйдите из другой группы, прежде чем вступать в эту, или отклоните предложение.
@@ -2033,6 +2054,10 @@ http://secondlife.com/download.
 		Перейти на [http://secondlife.com/account/ информационную панель], чтобы увидеть историю аккаунта?
 		<usetemplate ignoretext="Запустить браузер для просмотра истории аккаунта" name="okcancelignore" notext="Отмена" yestext="Перейти на страницу"/>
 	</notification>
+	<notification name="ConfirmAddingChatParticipants">
+		При добавлении участника в существующий разговор будет создан новый разговор.  Все участники получат уведомления о новом разговоре.
+		<usetemplate ignoretext="Подтвердите добавление участников чата" name="okcancelignore" notext="Отмена" yestext="ОК"/>
+	</notification>
 	<notification name="ConfirmQuit">
 		Выйти из программы?
 		<usetemplate ignoretext="Подтверждать перед выходом" name="okcancelignore" notext="Не выходить" yestext="Выйти"/>
@@ -2107,14 +2132,14 @@ http://secondlife.com/download.
 			<button ignore="Не заменять" name="No" text="Отмена"/>
 		</form>
 	</notification>
-	<notification label="Предупреждение о режиме «Занят»" name="BusyModePay">
-		У вас включен режим «Занят», поэтому вы не получите никаких предметов, предлагаемых в обмен на этот платеж.
+	<notification label="Предупреждение режима «Не беспокоить»" name="DoNotDisturbModePay">
+		Включен режим «Не беспокоить». Вы не будете получать никаких предметов, предлагаемых в обмен за этот платеж.
 
-Хотите отключить режим «Занят» до завершения этой транзакции?
+Отключить режим «Не беспокоить» перед завершением этой операции?
 		<form name="form">
-			<ignore name="ignore" text="Я собираюсь заплатить за пользователя или объект, когда включен режим «Занят»"/>
-			<button ignore="Всегда отключать режим «Занят»" name="Yes" text="OK"/>
-			<button ignore="Не отключать режим «Занят»" name="No" text="Отмена"/>
+			<ignore name="ignore" text="Я собираюсь заплатить за пользователя или объект, когда включен режим «Не беспокоить»"/>
+			<button ignore="Всегда выходить из режима «Не беспокоить»" name="Yes" text="OK"/>
+			<button ignore="Не выходить из режима «Не беспокоить»" name="No" text="Отмена"/>
 		</form>
 	</notification>
 	<notification name="ConfirmDeleteProtectedCategory">
@@ -2249,11 +2274,8 @@ http://secondlife.com/download.
 	<notification name="GroupNotice">
 		Раздел: [SUBJECT], сообщение: [MESSAGE]
 	</notification>
-	<notification name="FriendOnline">
-		&lt;nolink&gt;[NAME]&lt;/nolink&gt; в сети
-	</notification>
-	<notification name="FriendOffline">
-		&lt;nolink&gt;[NAME]&lt;/nolink&gt; не в сети
+	<notification name="FriendOnlineOffline">
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; [STATUS]
 	</notification>
 	<notification name="AddSelfFriend">
 		Вы лучше всех, но нельзя добавить в друзья себя самого.
@@ -2482,13 +2504,6 @@ http://secondlife.com/download.
 	<notification name="DynamicPathfindingDisabled">
 		В этом регионе не разрешен динамический поиск пути.  Возможны нарушения работы скриптовых объектов с использованием вызовов LSL поиска пути.
 	</notification>
-	<notification name="PathfindingRebakeNavmesh">
-		Изменение некоторых объектов в регионе может привести к неправильному поведению других подвижных объектов.  Чтобы исправить их поведение, нажмите кнопку «Восстановить регион».  Более подробная информация – по ссылке «Справка».
-		<url name="url">
-			http://wiki.secondlife.com/wiki/Pathfinding_Tools_in_the_Second_Life_Viewer
-		</url>
-		<usetemplate helptext="Справка" ignoretext="Изменение некоторых объектов в регионе может привести к неправильному поведению других подвижных объектов." name="okhelpignore" yestext="OK"/>
-	</notification>
 	<notification name="PathfindingCannotRebakeNavmesh">
 		Произошла ошибка.  Возможно, неполадка в сети или на сервере, или у вас нет прав на строительство.  Иногда для устранения этой проблемы достаточно выйти и снова войти.
 		<usetemplate name="okbutton" yestext="OK"/>
@@ -2751,7 +2766,7 @@ http://secondlife.com/download.
 	<notification name="ScriptQuestionCaution">
 		Предупреждение. Объект «&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;» требует полного доступа к вашему аккаунту для Linden-долларов. Если разрешить такой доступ, объект сможет в любое время снимать средства с вашего аккаунта или полностью опустошать его неоднократно и без предупреждения.
   
-Такое требование чаще всего незаконно. Не разрешайте доступ к своему аккаунту, если только не полностью осознаете, зачем он нужен этому объекту.
+Не разрешайте доступ к своему аккаунту, если только не полностью осознаете, зачем он нужен этому объекту.
 		<form name="form">
 			<button name="Grant" text="Разрешить полный доступ"/>
 			<button name="Deny" text="Отклонить"/>
@@ -3333,4 +3348,632 @@ http://secondlife.com/download.
 		Вы удаляете несколько предметов ([NUM_ITEMS]).  Продолжить?
 		<usetemplate ignoretext="Удалить несколько предметов?" name="okcancelignore" notext="Нет" yestext="Да"/>
 	</notification>
+	<notification name="AvatarFrozen">
+		[AV_FREEZER] заморозил вас. В это время вы не можете перемещаться и выполнять другие действия с миром.
+	</notification>
+	<notification name="AvatarFrozenDuration">
+		[AV_FREEZER] заморозил вас на [AV_FREEZE_TIME] сек. В это время вы не можете перемещаться и выполнять другие действия с миром.
+	</notification>
+	<notification name="YouFrozeAvatar">
+		Аватар заморожен.
+	</notification>
+	<notification name="AvatarHasUnFrozenYou">
+		[AV_FREEZER] разморозил вас.
+	</notification>
+	<notification name="AvatarUnFrozen">
+		Аватар разморожен.
+	</notification>
+	<notification name="AvatarFreezeFailure">
+		Не удалось заморозить: у вас нет прав администратора на этом участке.
+	</notification>
+	<notification name="AvatarFreezeThaw">
+		Заморозка кончилась, занимайтесь своим делом.
+	</notification>
+	<notification name="AvatarCantFreeze">
+		Невозможно заморозить этого пользователя.
+	</notification>
+	<notification name="NowOwnObject">
+		Вы стали владельцем объекта [OBJECT_NAME]
+	</notification>
+	<notification name="CantRezOnLand">
+		Нельзя выложить объект на [OBJECT_POS]: это не разрешено владельцем земли.  Узнать, кто владелец, можно с помощью инструмента «Земля».
+	</notification>
+	<notification name="RezFailTooManyRequests">
+		Невозможно выложить объект: слишком много запросов.
+	</notification>
+	<notification name="SitFailCantMove">
+		Нельзя сесть: сейчас вы не можете двигаться.
+	</notification>
+	<notification name="SitFailNotAllowedOnLand">
+		Вам не разрешено садиться на этой земле.
+	</notification>
+	<notification name="SitFailNotSameRegion">
+		Попробуйте переместиться ближе.  Нельзя сесть на объект:
+он находится в другом регионе.
+	</notification>
+	<notification name="NoNewObjectRegionFull">
+		Невозможно создать новый объект. Регион уже заполнен.
+	</notification>
+	<notification name="FailedToPlaceObject">
+		Не удалось поместить объект в указанное место.  Повторите попытку.
+	</notification>
+	<notification name="NoOwnNoGardening">
+		Вы не можете создавать деревья и траву на чужой земле.
+	</notification>
+	<notification name="NoCopyPermsNoObject">
+		Не удалось скопировать: вам не разрешено копировать объект «[OBJ_NAME]».
+	</notification>
+	<notification name="NoTransPermsNoObject">
+		Не удалось скопировать: объект «[OBJ_NAME]» нельзя перенести к вам.
+	</notification>
+	<notification name="AddToNavMeshNoCopy">
+		Не удалось скопировать: объект «[OBJ_NAME]» относится к навигационной сетке.
+	</notification>
+	<notification name="DupeWithNoRootsSelected">
+		Выбран дубликат без корневых объектов.
+	</notification>
+	<notification name="CantDupeCuzRegionIsFull">
+		Невозможно дублировать объекты: регион заполнен.
+	</notification>
+	<notification name="CantDupeCuzParcelNotFound">
+		Невозможно дублировать объекты: не удалось найти их участок.
+	</notification>
+	<notification name="CantCreateCuzParcelFull">
+		Нельзя создать объект: 
+участок уже заполнен.
+	</notification>
+	<notification name="RezAttemptFailed">
+		Не удалось выложить объект.
+	</notification>
+	<notification name="ToxicInvRezAttemptFailed">
+		Невозможно создать элемент, который вызвал проблемы в этом регионе.
+	</notification>
+	<notification name="InvItemIsBlacklisted">
+		Этот предмет инвентаря находится в черном списке.
+	</notification>
+	<notification name="NoCanRezObjects">
+		Сейчас вам не разрешено создавать объекты.
+	</notification>
+	<notification name="LandSearchBlocked">
+		Поиск по земле заблокирован.
+Вы провели слишком много операций поиска за короткое время.
+Повторите попытку через минуту.
+	</notification>
+	<notification name="NotEnoughResourcesToAttach">
+		Недостаточно свободных ресурсов скриптинга для присоединения объекта!
+	</notification>
+	<notification name="YouDiedAndGotTPHome">
+		Вы умерли и были телепортированы в ваше домашнее местоположение
+	</notification>
+	<notification name="EjectComingSoon">
+		Вам запрещено здесь присутствовать; у вас есть [EJECT_TIME] сек, чтобы покинуть это место.
+	</notification>
+	<notification name="NoEnterServerFull">
+		Вам нет доступа в этот регион: 
+серпер переполнен.
+	</notification>
+	<notification name="SaveBackToInvDisabled">
+		Сохранение в инвентаре отключено.
+	</notification>
+	<notification name="NoExistNoSaveToContents">
+		Нельзя сохранить «[OBJ_NAME]» в содержимом объекта: объект, из которого оно было выложено, уже не существует.
+	</notification>
+	<notification name="NoModNoSaveToContents">
+		Нельзя сохранить «[OBJ_NAME]» в содержимом объекта: вам не разрешено изменять объект «[DEST_NAME]».
+	</notification>
+	<notification name="NoSaveBackToInvDisabled">
+		Невозможно сохранить «[OBJ_NAME]» в инвентаре: эта операция запрещена.
+	</notification>
+	<notification name="NoCopyNoSelCopy">
+		Нельзя скопировать выбранное: вам не разрешено копировать объект «[OBJ_NAME]».
+	</notification>
+	<notification name="NoTransNoSelCopy">
+		Невозможно скопировать выбранный предмет: объект «[OBJ_NAME]» не переносится.
+	</notification>
+	<notification name="NoTransNoCopy">
+		Невозможно скопировать выбранный предмет: объект «[OBJ_NAME]» не переносится.
+	</notification>
+	<notification name="NoPermsNoRemoval">
+		Удаление объекта «[OBJ_NAME]» из симулятора запрещено системой разрешений.
+	</notification>
+	<notification name="NoModNoSaveSelection">
+		Нельзя сохранить выбранное: вам не разрешено изменять объект «[OBJ_NAME]».
+	</notification>
+	<notification name="NoCopyNoSaveSelection">
+		Невозможно сохранить выбранный предмет: объект «[OBJ_NAME]» не копируется.
+	</notification>
+	<notification name="NoModNoTaking">
+		Нельзя забрать выбранное: вам не разрешено изменять объект «[OBJ_NAME]».
+	</notification>
+	<notification name="RezDestInternalError">
+		Внутренняя ошибка: неизвестный тип места назначения.
+	</notification>
+	<notification name="DeleteFailObjNotFound">
+		Невозможно удалить: объект не найден
+	</notification>
+	<notification name="SorryCantEjectUser">
+		Невозможно выбросить этого пользователя.
+	</notification>
+	<notification name="RegionSezNotAHome">
+		Вам не разрешено устанавливать свое домашнее местоположение в этом регионе.
+	</notification>
+	<notification name="HomeLocationLimits">
+		Задать домашнее местоположение можно только на вашей земле или в Инфохабе материка.
+	</notification>
+	<notification name="HomePositionSet">
+		Задано положение дома.
+	</notification>
+	<notification name="AvatarEjected">
+		Аватар выброшен.
+	</notification>
+	<notification name="AvatarEjectFailed">
+		Не удалось выбросить: у вас нет прав администратора на этом участке.
+	</notification>
+	<notification name="CantMoveObjectParcelFull">
+		Нельзя переместить объект «[OBJECT_NAME]» в позицию «[OBJ_POSITION]» региона [REGION_NAME]: участок уже заполнен.
+	</notification>
+	<notification name="CantMoveObjectParcelPerms">
+		Нельзя переместить объект «[OBJECT_NAME]» в позицию
+«[OBJ_POSITION]» региона [REGION_NAME]: вашим объектам не разрешено присутствовать на этом участке.
+	</notification>
+	<notification name="CantMoveObjectParcelResources">
+		Нельзя переместить объект «[OBJECT_NAME]» в позицию
+«[OBJ_POSITION]» региона [REGION_NAME]: на этом участке недостаточно ресурсов для данного объекта.
+	</notification>
+	<notification name="CantMoveObjectRegionVersion">
+		Нельзя переместить объект «[OBJECT_NAME]» в позицию
+[OBJ_POSITION] региона [REGION_NAME]: в другом регионе работает старая версия симулятора, которая не поддерживает прием этого объекта через границу регионов.
+	</notification>
+	<notification name="CantMoveObjectNavMesh">
+		Нельзя переместить объект «[OBJECT_NAME]» в позицию
+«[OBJ_POSITION]» региона [REGION_NAME]: вам не разрешено изменять навигационную сетку за пределами региона.
+	</notification>
+	<notification name="CantMoveObjectWTF">
+		Нельзя переместить объект «[OBJECT_NAME]» в позицию
+[OBJ_POSITION] региона [REGION_NAME] по неизвестной причине. ([FAILURE_TYPE])
+	</notification>
+	<notification name="NoPermModifyObject">
+		У вас нет прав на изменение этого объекта
+	</notification>
+	<notification name="CantEnablePhysObjContributesToNav">
+		Нельзя включить физику для объекта, который относится к навигационной сетке.
+	</notification>
+	<notification name="CantEnablePhysKeyframedObj">
+		Нельзя включить физику для объектов с ключевыми кадрами.
+	</notification>
+	<notification name="CantEnablePhysNotEnoughLandResources">
+		Нельзя включить физику для объекта -- недостаточно земельных ресурсов.
+	</notification>
+	<notification name="CantEnablePhysCostTooGreat">
+		Нельзя включить физику для объекта с расходом ресурсов физики больше [MAX_OBJECTS]
+	</notification>
+	<notification name="PhantomWithConcavePiece">
+		Этот объект не может содержать вогнутых элементов: это фантом, который относится к навигационной сетке.
+	</notification>
+	<notification name="UnableAddItem">
+		Невозможно добавить предмет!
+	</notification>
+	<notification name="UnableEditItem">
+		Редактирование невозможно!
+	</notification>
+	<notification name="NoPermToEdit">
+		Редактирование не разрешено.
+	</notification>
+	<notification name="NoPermToCopyInventory">
+		Не разрешено копировать этот инвентарь.
+	</notification>
+	<notification name="CantSaveItemDoesntExist">
+		Нельзя сохранить в содержимом объекта: предмет уже не существует.
+	</notification>
+	<notification name="CantSaveItemAlreadyExists">
+		Нельзя сохранить в содержимом объекта: предмет с таким названием уже есть в инвентаре
+	</notification>
+	<notification name="CantSaveModifyAttachment">
+		Нельзя сохранить в содержимом объекта: это приведет к изменению разрешений прикрепленного объекта.
+	</notification>
+	<notification name="TooManyScripts">
+		Слишком много скриптов.
+	</notification>
+	<notification name="UnableAddScript">
+		Невозможно добавить скрипт!
+	</notification>
+	<notification name="AssetServerTimeoutObjReturn">
+		Сервер активов не ответил в заданное время.  Объект возвращен в симулятор.
+	</notification>
+	<notification name="RegionDisablePhysicsShapes">
+		В этом регионе не разрешены фигуры с физическими данными.
+	</notification>
+	<notification name="NoModNavmeshAcrossRegions">
+		Нельзя изменять навигационную сетку за пределами региона.
+	</notification>
+	<notification name="NoSetPhysicsPropertiesOnObjectType">
+		Нельзя задать свойства физики для объекта этого типа.
+	</notification>
+	<notification name="NoSetRootPrimWithNoShape">
+		Нельзя задать корневой примитив без фигуры.
+	</notification>
+	<notification name="NoRegionSupportPhysMats">
+		В этом регионе не разрешены материалы с физическими данными.
+	</notification>
+	<notification name="OnlyRootPrimPhysMats">
+		Настройка материалов с физическими данными разрешена только для корневых примитивов.
+	</notification>
+	<notification name="NoSupportCharacterPhysMats">
+		Присвоение персонажам материалов с физическими данными еще не поддерживается.
+	</notification>
+	<notification name="InvalidPhysMatProperty">
+		Одно или несколько свойств указанного материала с физическими данными недопустимы.
+	</notification>
+	<notification name="NoPermsAlterStitchingMeshObj">
+		Не разрешается изменять тип стыковки меш-объекта.
+	</notification>
+	<notification name="NoPermsAlterShapeMeshObj">
+		Не разрешается изменять форму меш-объекта
+	</notification>
+	<notification name="FullRegionCantEnter">
+		Вам нет доступа в этот регион: \nрегион заполнен.
+	</notification>
+	<notification name="LinkFailedOwnersDiffer">
+		Связь невозможна -- разные владельцы
+	</notification>
+	<notification name="LinkFailedNoModNavmeshAcrossRegions">
+		Связь невозможна – нельзя изменять навигационную сетку за пределами региона.
+	</notification>
+	<notification name="LinkFailedNoPermToEdit">
+		Связь невозможна: у вас нет разрешения на редактирование.
+	</notification>
+	<notification name="LinkFailedTooManyPrims">
+		Связь невозможна -- слишком много примитивов
+	</notification>
+	<notification name="LinkFailedCantLinkNoCopyNoTrans">
+		Связь невозможна -- нельзя связать некопируемый и непереносимый объекты
+	</notification>
+	<notification name="LinkFailedNothingLinkable">
+		Связь невозможна -- нет связываемых объектов.
+	</notification>
+	<notification name="LinkFailedTooManyPathfindingChars">
+		Связь невозможна -- слишком много персонажей с поиском пути
+	</notification>
+	<notification name="LinkFailedInsufficientLand">
+		Связь невозможна -- недостаточно земельных ресурсов
+	</notification>
+	<notification name="LinkFailedTooMuchPhysics">
+		Объект использует слишком много ресурсов физики -- динамическое поведение отключено.
+	</notification>
+	<notification name="TeleportedHomeByObjectOnParcel">
+		Вы были телепортированы домой объектом «[OBJECT_NAME]» на участке «[PARCEL_NAME]»
+	</notification>
+	<notification name="TeleportedHomeByObject">
+		Вы были телепортированы домой объектом «[OBJECT_NAME]»
+	</notification>
+	<notification name="TeleportedByAttachment">
+		Вы были телепортированы прикрепленным объектом [ITEM_ID]
+	</notification>
+	<notification name="TeleportedByObjectOnParcel">
+		Вы были телепортированы объектом «[OBJECT_NAME]» на участке «[PARCEL_NAME]»
+	</notification>
+	<notification name="TeleportedByObjectOwnedBy">
+		Вы были телепортированы объектом «[OBJECT_NAME]», владелец – [OWNER_ID]
+	</notification>
+	<notification name="TeleportedByObjectUnknownUser">
+		Вы были телепортированы объектом «[OBJECT_NAME]», владелец неизвестен.
+	</notification>
+	<notification name="CantCreateObjectRegionFull">
+		Невозможно создать запрошенный объект. Регион уже заполнен.
+	</notification>
+	<notification name="CantAttackMultipleObjOneSpot">
+		Нельзя присоединить несколько объектов к одной точке.
+	</notification>
+	<notification name="CantCreateMultipleObjAtLoc">
+		Здесь нельзя создать несколько объектов.
+	</notification>
+	<notification name="UnableToCreateObjTimeOut">
+		Невозможно создать запрошенный объект. Объекта нет в базе данных.
+	</notification>
+	<notification name="UnableToCreateObjUnknown">
+		Невозможно создать запрошенный объект. Истекло время запроса. Повторите попытку.
+	</notification>
+	<notification name="UnableToCreateObjMissingFromDB">
+		Невозможно создать запрошенный объект. Повторите попытку.
+	</notification>
+	<notification name="RezFailureTookTooLong">
+		Не удалось выложить, загрузка нужного объекта длится слишком долго.
+	</notification>
+	<notification name="FailedToPlaceObjAtLoc">
+		Не удалось поместить объект в указанное место.  Повторите попытку.
+	</notification>
+	<notification name="CantCreatePlantsOnLand">
+		Вам нельзя создавать растения на этой земле.
+	</notification>
+	<notification name="CantRestoreObjectNoWorldPos">
+		Невозможно восстановить объект. Не найдена позиция в игровом мире.
+	</notification>
+	<notification name="CantRezObjectInvalidMeshData">
+		Невозможно выложить объект: его данные сетки неверны.
+	</notification>
+	<notification name="CantRezObjectTooManyScripts">
+		Невозможно выложить объект: в этом регионе уже сликом много скриптов.
+	</notification>
+	<notification name="CantCreateObjectNoAccess">
+		Ваши привилегии доступа не разрешают создание объектов на этом месте.
+	</notification>
+	<notification name="CantCreateObject">
+		Сейчас вам не разрешено создавать объекты.
+	</notification>
+	<notification name="InvalidObjectParams">
+		Неверные параметры объекта
+	</notification>
+	<notification name="CantDuplicateObjectNoAcess">
+		Ваши привилегии доступа не разрешают дублирование объектов на этом месте.
+	</notification>
+	<notification name="CantChangeShape">
+		Вам не разрешено изменять эту фигуру.
+	</notification>
+	<notification name="NoAccessToClaimObjects">
+		Ваши привилегии доступа не разрешают претендовать на объекты на этом месте.
+	</notification>
+	<notification name="DeedFailedNoPermToDeedForGroup">
+		Не удалось передать: вам не разрешено передавать объекты для этой группы.
+	</notification>
+	<notification name="NoPrivsToBuyObject">
+		Ваши привилегии доступа не разрешают покупать объекты на этом месте.
+	</notification>
+	<notification name="CantAttachObjectAvatarSittingOnIt">
+		Невозможно присоединить объект: на нем сидит аватар.
+	</notification>
+	<notification name="WhyAreYouTryingToWearShrubbery">
+		Деревья и траву нельзя носить как прикрепленные объекты.
+	</notification>
+	<notification name="CantAttachGroupOwnedObjs">
+		Нельзя присоединять объекты, принадлежащие группе.
+	</notification>
+	<notification name="CantAttachObjectsNotOwned">
+		Нельзя прикреплять объекты, которыми вы не владеете.
+	</notification>
+	<notification name="CantAttachNavmeshObjects">
+		Невозможно присоединить объекты, которые относятся к навигационной сетке.
+	</notification>
+	<notification name="CantAttachObjectNoMovePermissions">
+		Нельзя присоединить объект: вам не разрешено его перемещать.
+	</notification>
+	<notification name="CantAttachNotEnoughScriptResources">
+		Недостаточно свободных ресурсов скриптинга для присоединения объекта!
+	</notification>
+	<notification name="CantDropItemTrialUser">
+		Здесь нельзя сбрасывать объекты; перейдите в бесплатную область для гостей.
+	</notification>
+	<notification name="CantDropMeshAttachment">
+		Нельзя сбрасывать прикрепленные меш-объекты. Отсоедините их в инвентарь, а затем выложите в игровой мир.
+	</notification>
+	<notification name="CantDropAttachmentNoPermission">
+		Не удалось сбросить прикрепленный объект: вам не разрешено оставлять его здесь.
+	</notification>
+	<notification name="CantDropAttachmentInsufficientLandResources">
+		Не удалось сбросить прикрепленный объект: не хватает свободных земельных ресурсов.
+	</notification>
+	<notification name="CantDropAttachmentInsufficientResources">
+		Не удалось сбросить прикрепленные объекты: не хватает свободных ресурсов.
+	</notification>
+	<notification name="CantDropObjectFullParcel">
+		Нельзя сбросить объект здесь.  Участок уже заполнен.
+	</notification>
+	<notification name="CantTouchObjectBannedFromParcel">
+		Нельзя коснуться/взять этот объект: вы забанены на этом участке.
+	</notification>
+	<notification name="PlzNarrowDeleteParams">
+		Уточните параметры удаления.
+	</notification>
+	<notification name="UnableToUploadAsset">
+		Невозможно отправить актив.
+	</notification>
+	<notification name="CantTeleportCouldNotFindUser">
+		Не удалось найти пользователя для телепортации домой
+	</notification>
+	<notification name="GodlikeRequestFailed">
+		режим творца недоступен
+	</notification>
+	<notification name="GenericRequestFailed">
+		не удалось выполнить общий запрос
+	</notification>
+	<notification name="CantUploadPostcard">
+		Невозможно отправить открытку.  Повторите попытку позже.
+	</notification>
+	<notification name="CantFetchInventoryForGroupNotice">
+		Невозможно получить данные инвентаря для группового уведомления.
+	</notification>
+	<notification name="CantSendGroupNoticeNotPermitted">
+		Невозможно отправить групповое уведомление -- не разрешено.
+	</notification>
+	<notification name="CantSendGroupNoticeCantConstructInventory">
+		Невозможно отправить групповое уведомление -- не удалось собрать инвентарь.
+	</notification>
+	<notification name="CantParceInventoryInNotice">
+		Невозможно проанализировать инвентарь, указанный в уведомлении.
+	</notification>
+	<notification name="TerrainUploadFailed">
+		Не удалось загрузить ландшафт.
+	</notification>
+	<notification name="TerrainFileWritten">
+		Файл ландшафта записан.
+	</notification>
+	<notification name="TerrainFileWrittenStartingDownload">
+		Файл ландшафта записан, начинается загрузка...
+	</notification>
+	<notification name="TerrainBaked">
+		Ландшафт готов.
+	</notification>
+	<notification name="TenObjectsDisabledPlzRefresh">
+		Отключены только первые 10 выбранных объектов. Обновите экран и выберите объекты снова, если требуется.
+	</notification>
+	<notification name="UpdateViewerBuyParcel">
+		Для покупки этого участка необходимо обновить клиент.
+	</notification>
+	<notification name="CantBuyParcelNotForSale">
+		Невозможно купить, этот участок не предназначен для продажи.
+	</notification>
+	<notification name="CantBuySalePriceOrLandAreaChanged">
+		Невозможно купить: цена или площадь земли изменились.
+	</notification>
+	<notification name="CantBuyParcelNotAuthorized">
+		Вам не разрешено покупать этот участок.
+	</notification>
+	<notification name="CantBuyParcelAwaitingPurchaseAuth">
+		Вы не можете приобрести этот участок: он уже ожидает подтверждения покупки
+	</notification>
+	<notification name="CantBuildOverflowParcel">
+		Здесь нельзя создавать объекты – участок будет переполнен.
+	</notification>
+	<notification name="SelectedMultipleOwnedLand">
+		Вы выбрали землю с разными владельцами. Выберите меньшую область и повторите попытку.
+	</notification>
+	<notification name="CantJoinTooFewLeasedParcels">
+		Выбрано недостаточно арендуемых участков для вступления.
+	</notification>
+	<notification name="CantDivideLandMultipleParcelsSelected">
+		Нельзя разделить землю.\nВыбрано больше одного участка.\nВыберите меньшую территорию.
+	</notification>
+	<notification name="CantDivideLandCantFindParcel">
+		Нельзя разделить землю.\nНе удалось найти участок.\nСообщите об этой неполадке: Справка -&gt; Сообщить об ошибке...
+	</notification>
+	<notification name="CantDivideLandWholeParcelSelected">
+		Невозможно разделить землю. Выбран весь участок.\nПопробуйте выбрать территорию поменьше.
+	</notification>
+	<notification name="LandHasBeenDivided">
+		Земля разделена.
+	</notification>
+	<notification name="PassPurchased">
+		Вы приобрели пропуск.
+	</notification>
+	<notification name="RegionDisallowsClassifieds">
+		В регионе не разрешены рекламные объявления.
+	</notification>
+	<notification name="LandPassExpireSoon">
+		Ваш пропуск на эту землю скоро закончится.
+	</notification>
+	<notification name="CantSitNoSuitableSurface">
+		Нет подходящей поверхности, чтобы сесть. Попробуйте в другом месте.
+	</notification>
+	<notification name="CantSitNoRoom">
+		Здесь нет места, чтобы сесть. Попробуйте в другом месте.
+	</notification>
+	<notification name="ClaimObjectFailedNoPermission">
+		Невозможно претендовать на объект: у вас нет разрешения
+	</notification>
+	<notification name="ClaimObjectFailedNoMoney">
+		Невозможно претендовать на объект: у вас не хватает L$.
+	</notification>
+	<notification name="CantDeedGroupLand">
+		Нельзя передать землю, принадлежащую группе.
+	</notification>
+	<notification name="BuyObjectFailedNoMoney">
+		Не удалось купить объект: у вас не хватает L$.
+	</notification>
+	<notification name="BuyInventoryFailedNoMoney">
+		Не удалось купить инвентарь: у вас не хватает L$.
+	</notification>
+	<notification name="BuyPassFailedNoMoney">
+		У вас недостаточно L$, чтобы заплатить за проход на эту землю.
+	</notification>
+	<notification name="CantBuyPassTryAgain">
+		Сейчас нельзя купить пропуск.  Повторите попытку позже.
+	</notification>
+	<notification name="CantCreateObjectParcelFull">
+		Невозможно создать объект:\nучасток заполнен.
+	</notification>
+	<notification name="FailedPlacingObject">
+		Не удалось поместить объект в указанное место.  Повторите попытку.
+	</notification>
+	<notification name="CantCreateLandmarkForEvent">
+		Невозможно создать закладку для события.
+	</notification>
+	<notification name="GodBeatsFreeze">
+		Сила творца одолевает заморозку!
+	</notification>
+	<notification name="SpecialPowersRequestFailedLogged">
+		Не удалось выполнить запрос на особые способности. Запрос зарегистрирован.
+	</notification>
+	<notification name="ExpireExplanation">
+		Система сейчас не может обработать ваш запрос. Истекло время запроса.
+	</notification>
+	<notification name="DieExplanation">
+		Система не может обработать ваш запрос.
+	</notification>
+	<notification name="AddPrimitiveFailure">
+		Недостаточно денег для создания примитива.
+	</notification>
+	<notification name="RezObjectFailure">
+		Недостаточно денег для создания объекта.
+	</notification>
+	<notification name="ResetHomePositionNotLegal">
+		Недопустимое домашнее местоположение; восстановлено стандартное местоположение.
+	</notification>
+	<notification name="CantInviteRegionFull">
+		Сейчас вы не можете никого пригласить к себе: регион уже заполнен. Повторите попытку позже.
+	</notification>
+	<notification name="CantSetHomeAtRegion">
+		Вам не разрешено устанавливать свое домашнее местоположение в этом регионе.
+	</notification>
+	<notification name="ListValidHomeLocations">
+		Задать домашнее местоположение можно только на вашей земле или в Инфохабе материка.
+	</notification>
+	<notification name="SetHomePosition">
+		Домашнее местоположение задано.
+	</notification>
+	<notification name="CantDerezInventoryError">
+		Невозможно забрать объект: сбой инвентаря.
+	</notification>
+	<notification name="CantCreateRequestedInv">
+		Невозможно создать требуемый инвентарь.
+	</notification>
+	<notification name="CantCreateRequestedInvFolder">
+		Невозможно создать требуемую папку инвентаря.
+	</notification>
+	<notification name="CantCreateInventory">
+		Невозможно создать этот инвентарь.
+	</notification>
+	<notification name="CantCreateLandmark">
+		Невозможно создать закладку.
+	</notification>
+	<notification name="CantCreateOutfit">
+		Сейчас нельзя создать костюм. Попробуйте через минуту.
+	</notification>
+	<notification name="InventoryNotForSale">
+		Инвентарь не для продажи.
+	</notification>
+	<notification name="CantFindInvItem">
+		Не удалось найти предмет из инвентаря.
+	</notification>
+	<notification name="CantFindObject">
+		Не удалось найти объект.
+	</notification>
+	<notification name="CantTransfterMoneyRegionDisabled">
+		Сейчас в этом регионе запрещен перевод денег на объекты.
+	</notification>
+	<notification name="CantPayNoAgent">
+		Непонятно, кому платить.
+	</notification>
+	<notification name="CantDonateToPublicObjects">
+		Нельзя отдавать L$ за общедоступные объекты.
+	</notification>
+	<notification name="InventoryCreationInWorldObjectFailed">
+		Не удалось создать инвентарь в объекте игрового мира.
+	</notification>
+	<notification name="UserBalanceOrLandUsageError">
+		Не удалось обновить клиент из-за внутренней ошибки.  Отображаемый в клиенте баланс L$ или владение участками могут не соответствовать действительному балансу на серверах.
+	</notification>
+	<notification name="LargePrimAgentIntersect">
+		Нельзя создавать большие примитивы, которые пересекаются с другими игроками.  Повторите попытку, когда другие игроки уйдут.
+	</notification>
+	<notification name="PreferenceChatClearLog">
+		Будут удалены журналы предыдущих разговоров и все резервные копии этих файлов.
+		<usetemplate ignoretext="Подтверждать удаление журнала предыдущих разговоров." name="okcancelignore" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="PreferenceChatDeleteTranscripts">
+		Будут удалены записи всех предыдущих разговоров. Список прошедших разговоров не изменится. Все файлы с расширениями .txt и txt.backup в папке [FOLDER] будут удалены.
+		<usetemplate ignoretext="Подтверждать удаление записей." name="okcancelignore" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="PreferenceChatPathChanged">
+		Невозможно переместить файлы. Восстановлен прежний путь.
+		<usetemplate ignoretext="Невозможно переместить файлы. Восстановлен прежний путь." name="okignore" yestext="OK"/>
+	</notification>
 </notifications>
diff --git a/indra/newview/skins/default/xui/ru/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/ru/panel_avatar_list_item.xml
index 75e396222f9..4866bb7ed61 100644
--- a/indra/newview/skins/default/xui/ru/panel_avatar_list_item.xml
+++ b/indra/newview/skins/default/xui/ru/panel_avatar_list_item.xml
@@ -27,5 +27,6 @@
 	<icon name="permission_edit_mine_icon" tool_tip="Этот друг может изменять, удалять или брать ваши объекты"/>
 	<icon name="permission_map_icon" tool_tip="Этот друг может видеть вас на карте"/>
 	<icon name="permission_online_icon" tool_tip="Этот друг может видеть ваш статус в сети"/>
+	<button name="info_btn" tool_tip="Дополнительно"/>
 	<button name="profile_btn" tool_tip="Смотреть профиль"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/ru/panel_block_list_sidetray.xml
index 214ca8bf3a9..70a1b259969 100644
--- a/indra/newview/skins/default/xui/ru/panel_block_list_sidetray.xml
+++ b/indra/newview/skins/default/xui/ru/panel_block_list_sidetray.xml
@@ -1,10 +1,11 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="block_list_panel">
-	<text name="title_text">
-		Черный список
-	</text>
-	<scroll_list name="blocked" tool_tip="Список заблокированных жителей"/>
-	<button label="Заблокировать жителя" name="Block resident..." tool_tip="Выберите жителя для блокировки"/>
-	<button label="Блокировать объект по имени" name="Block object by name..." tool_tip="Выберите объект для блокировки по имени"/>
-	<button label="Разблокировать" name="Unblock" tool_tip="Удалить объект или жителя из списка заблокированных"/>
+	<panel label="bottom_panel" name="blocked_buttons_panel">
+		<filter_editor label="Фильтр" name="blocked_filter_input"/>
+		<menu_button name="blocked_gear_btn" tool_tip="Действия с выбранным жителем или объектом"/>
+		<menu_button name="view_btn" tool_tip="Параметры сортировки"/>
+		<menu_button name="plus_btn" tool_tip="Выберите жителя или объект для блокировки"/>
+		<button name="unblock_btn" tool_tip="Удалить объект или жителя из списка заблокированных"/>
+	</panel>
+	<block_list name="blocked" tool_tip="Список заблокированных жителей"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_conversation_list_item.xml b/indra/newview/skins/default/xui/ru/panel_conversation_list_item.xml
new file mode 100644
index 00000000000..4fdb4f9122e
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_conversation_list_item.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="conversation_list_item">
+	<layout_stack name="conversation_item_stack">
+		<layout_panel name="conversation_title_panel">
+			<text name="conversation_title" value="(загрузка)"/>
+		</layout_panel>
+	</layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_conversation_log_list_item.xml b/indra/newview/skins/default/xui/ru/panel_conversation_log_list_item.xml
new file mode 100644
index 00000000000..98fe7b99be0
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_conversation_log_list_item.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="conversation_log_list_item">
+	<icon name="voice_session_icon" tool_tip="Включая голосовой чат"/>
+	<icon name="unread_ims_icon" tool_tip="За время вашего отсутствия пришли сообщения"/>
+	<button name="delete_btn" tool_tip="Удалить эту запись"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_group_list_item.xml b/indra/newview/skins/default/xui/ru/panel_group_list_item.xml
index 7f000fb5a0d..b043ffbbe25 100644
--- a/indra/newview/skins/default/xui/ru/panel_group_list_item.xml
+++ b/indra/newview/skins/default/xui/ru/panel_group_list_item.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="group_list_item">
 	<text name="group_name" value="Неизвестно"/>
+	<button name="info_btn" tool_tip="Дополнительно"/>
 	<button name="profile_btn" tool_tip="Смотреть профиль"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_people.xml b/indra/newview/skins/default/xui/ru/panel_people.xml
index 607921f2d69..7da7fb3191f 100644
--- a/indra/newview/skins/default/xui/ru/panel_people.xml
+++ b/indra/newview/skins/default/xui/ru/panel_people.xml
@@ -14,81 +14,53 @@
 	<string name="no_filtered_friends_msg">
 		Не нашли того, что вам нужно? Воспользуйтесь [secondlife:///app/search/people/[SEARCH_TERM] поиском].
 	</string>
-	<string name="people_filter_label" value="Фильтр для людей"/>
-	<string name="groups_filter_label" value="Фильтр для групп"/>
 	<string name="no_filtered_groups_msg" value="Не нашли того, что вам нужно? Воспользуйтесь [secondlife:///app/search/groups/[SEARCH_TERM] поиском]."/>
 	<string name="no_groups_msg" value="Ищете группу, чтобы присоединиться к ней? Воспользуйтесь [secondlife:///app/search/groups поиском]."/>
 	<string name="MiniMapToolTipMsg" value="[REGION](Двойной щелчок открывает карту, shift+перетягивание – обзор)"/>
 	<string name="AltMiniMapToolTipMsg" value="[REGION](Двойной щелчок – телепортация, shift+перетягивание – обзор)"/>
-	<filter_editor label="Фильтр" name="filter_input"/>
 	<tab_container name="tabs">
 		<panel label="РЯДОМ" name="nearby_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<menu_button name="nearby_view_sort_btn" tool_tip="Опции"/>
-				<button name="add_friend_btn" tool_tip="Добавить выбранного жителя в список друзей"/>
+			<panel label="bottom_panel" name="nearby_buttons_panel">
+				<filter_editor label="Фильтр для людей" name="nearby_filter_input"/>
+				<button name="gear_btn" tool_tip="Действия с выбранным жителем"/>
+				<menu_button name="nearby_view_btn" tool_tip="Параметры просмотра/сортировки"/>
+				<button name="add_friend_btn" tool_tip="Предложить жителю дружбу"/>
+				<dnd_button name="nearby_del_btn" tool_tip="Удалить выбранного пользователя из друзей"/>
 			</panel>
 		</panel>
-		<panel label="МОИ ДРУЗЬЯ" name="friends_panel">
+		<panel label="ДРУЗЬЯ" name="friends_panel">
+			<panel label="bottom_panel" name="friends_buttons_panel">
+				<filter_editor label="Фильтр для людей" name="friends_filter_input"/>
+				<button name="gear_btn" tool_tip="Действия с выбранным жителем"/>
+				<menu_button name="friends_view_btn" tool_tip="Параметры просмотра/сортировки"/>
+				<button name="friends_add_btn" tool_tip="Предложить жителю дружбу"/>
+				<dnd_button name="friends_del_btn" tool_tip="Удалить выбранного пользователя из друзей"/>
+			</panel>
 			<accordion name="friends_accordion">
 				<accordion_tab name="tab_online" title="Онлайн"/>
 				<accordion_tab name="tab_all" title="Все"/>
 			</accordion>
-			<panel label="bottom_panel" name="bottom_panel">
-				<layout_stack name="bottom_panel">
-					<layout_panel name="options_gear_btn_panel">
-						<menu_button name="friends_viewsort_btn" tool_tip="Показать дополнительные параметры"/>
-					</layout_panel>
-					<layout_panel name="add_btn_panel">
-						<button name="add_btn" tool_tip="Предложить жителю дружбу"/>
-					</layout_panel>
-					<layout_panel name="trash_btn_panel">
-						<dnd_button name="del_btn" tool_tip="Удалить выбранного жителя из списка друзей"/>
-					</layout_panel>
-				</layout_stack>
-			</panel>
 		</panel>
-		<panel label="МОИ ГРУППЫ" name="groups_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<menu_button name="groups_viewsort_btn" tool_tip="Опции"/>
-				<button name="plus_btn" tool_tip="Присоединиться к группе/создать новую группу"/>
-				<button name="activate_btn" tool_tip="Активировать выбранную группу"/>
+		<panel label="ГРУППЫ" name="groups_panel">
+			<panel label="bottom_panel" name="groups_buttons_panel">
+				<filter_editor label="Фильтр для групп" name="groups_filter_input"/>
+				<menu_button name="groups_gear_btn" tool_tip="Действия с выбранной группой"/>
+				<menu_button name="groups_view_btn" tool_tip="Параметры просмотра/сортировки"/>
+				<menu_button name="plus_btn" tool_tip="Присоединиться к группе/создать новую группу"/>
+				<dnd_button name="minus_btn" tool_tip="Покинуть выбранную группу"/>
 			</panel>
 		</panel>
 		<panel label="НЕДАВНИЕ" name="recent_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<menu_button name="recent_viewsort_btn" tool_tip="Опции"/>
-				<button name="add_friend_btn" tool_tip="Добавить выбранного жителя в список друзей"/>
+			<panel label="bottom_panel" name="recent_buttons_panel">
+				<filter_editor label="Фильтр для людей" name="recent_filter_input"/>
+				<button name="gear_btn" tool_tip="Действия с выбранным жителем"/>
+				<menu_button name="recent_view_btn" tool_tip="Параметры просмотра/сортировки"/>
+				<button name="add_friend_btn" tool_tip="Предложить жителю дружбу"/>
+				<dnd_button name="recent_del_btn" tool_tip="Удалить выбранного пользователя из друзей"/>
 			</panel>
 		</panel>
+		<panel label="БЛОКИРОВАН" name="blocked_panel">
+			<panel label="Черный список жителей и объектов" name="panel_block_list_sidetray"/>
+		</panel>
 	</tab_container>
-	<panel name="button_bar">
-		<layout_stack name="bottom_bar_ls">
-			<layout_panel name="view_profile_btn_lp">
-				<button label="Профиль" name="view_profile_btn" tool_tip="Показать изображение, группы и прочую информацию о жителе"/>
-			</layout_panel>
-			<layout_panel name="im_btn_lp">
-				<button label="IM" name="im_btn" tool_tip="Начать сеанс IM"/>
-			</layout_panel>
-			<layout_panel name="call_btn_lp">
-				<button label="Звонок" name="call_btn" tool_tip="Позвонить этому жителю"/>
-			</layout_panel>
-			<layout_panel name="share_btn_lp">
-				<button label="Поделиться" name="share_btn" tool_tip="Поделиться объектом из инвентаря"/>
-			</layout_panel>
-			<layout_panel name="teleport_btn_lp">
-				<button label="Телепортация" name="teleport_btn" tool_tip="Предложить телепортацию"/>
-			</layout_panel>
-		</layout_stack>
-		<layout_stack name="bottom_bar_ls1">
-			<layout_panel name="group_info_btn_lp">
-				<button label="Профиль группы" name="group_info_btn" tool_tip="Показать информацию о группе"/>
-			</layout_panel>
-			<layout_panel name="chat_btn_lp">
-				<button label="Групповой чат" name="chat_btn" tool_tip="Открыть сеанс чата"/>
-			</layout_panel>
-			<layout_panel name="group_call_btn_lp">
-				<button label="Звонок группе" name="group_call_btn" tool_tip="Позвонить этой группе"/>
-			</layout_panel>
-		</layout_stack>
-	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_chat.xml b/indra/newview/skins/default/xui/ru/panel_preferences_chat.xml
index 9283fc9e6e5..6383fc8c2c0 100644
--- a/indra/newview/skins/default/xui/ru/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/ru/panel_preferences_chat.xml
@@ -1,34 +1,86 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Текстовый чат" name="chat">
-	<text name="font_size">
-		Размер шрифта:
-	</text>
-	<radio_group name="chat_font_size">
-		<radio_item label="Мелкий" name="radio" value="0"/>
-		<radio_item label="Средний" name="radio2" value="1"/>
-		<radio_item label="Крупный" name="radio3" value="2"/>
-	</radio_group>
-	<check_box initial_value="истина" label="Воспроизводить анимацию ввода текста при общении" name="play_typing_animation"/>
-	<check_box label="Отправлять мне сообщения по почте, когда меня нет в сети" name="send_im_to_email"/>
-	<check_box label="Вести журнал текстового IM и чата" name="plain_text_chat_history"/>
-	<check_box label="Чат в пузырьках" name="bubble_text_chat"/>
-	<text name="show_ims_in_label">
-		Показывать сообщения:
-	</text>
-	<text name="requires_restart_label">
-		(требуется перезапуск)
-	</text>
-	<radio_group name="chat_window" tool_tip="Показывать IM-сообщения в отдельных окнах или же в одном окне с несколькими вкладками (требуется перезапуск)">
-		<radio_item label="В отдельных окнах" name="radio" value="0"/>
-		<radio_item label="На вкладках" name="radio2" value="1"/>
-	</radio_group>
-	<text name="disable_toast_label">
-		Включить всплывающие сообщения с новыми репликами в чате:
-	</text>
-	<check_box label="Групповой чат" name="EnableGroupChatPopups" tool_tip="Отображать всплывающие уведомления при появлении сообщений в групповом чате"/>
-	<check_box label="Текстовые чаты" name="EnableIMChatPopups" tool_tip="Отображать всплывающие уведомления при получении IM-сообщений"/>
-	<spinner label="Время отображения всплывающих реплик:" name="nearby_toasts_lifetime"/>
-	<spinner label="Время затухания всплывающих реплик:" name="nearby_toasts_fadingtime"/>
+	<panel>
+		<check_box initial_value="истина" label="Воспроизводить анимацию ввода текста при общении" name="play_typing_animation"/>
+		<check_box label="Отправлять мне сообщения по почте, когда меня нет в сети" name="send_im_to_email"/>
+		<check_box label="Только друзья и группы могут звонить мне и отправлять IM" name="voice_call_friends_only_check"/>
+		<text name="font_size">
+			Размер шрифта:
+		</text>
+		<combo_box name="chat_font_size">
+			<item label="Мелкий" name="Small" value="0"/>
+			<item label="Средний" name="Medium" value="1"/>
+			<item label="Крупный" name="Large" value="2"/>
+		</combo_box>
+		<check_box label="Чат в пузырьках" name="bubble_text_chat"/>
+	</panel>
+	<panel>
+		<text name="notifications">
+			Уведомления
+		</text>
+		<text name="friend_ims">
+			IM друзей:
+		</text>
+		<combo_box name="FriendIMOptions">
+			<item label="Открыть окно разговоров" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Сообщение во всплывающем окне" name="PopUpMessage" value="всплывание"/>
+			<item label="Мигание кнопки на панели инструментов" name="FlashToolbarButton" value="мигание"/>
+			<item label="Нет" name="None" value="нет"/>
+		</combo_box>
+		<text name="non_friend_ims">
+			IM чужих:
+		</text>
+		<combo_box name="NonFriendIMOptions">
+			<item label="Открыть окно разговоров" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Сообщение во всплывающем окне" name="PopUpMessage" value="всплывание"/>
+			<item label="Мигание кнопки на панели инструментов" name="FlashToolbarButton" value="мигание"/>
+			<item label="Нет" name="None" value="нет"/>
+		</combo_box>
+		<text name="conference_ims">
+			IM конференции:
+		</text>
+		<combo_box name="ConferenceIMOptions">
+			<item label="Открыть окно разговоров" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Сообщение во всплывающем окне" name="PopUpMessage" value="всплывание"/>
+			<item label="Мигание кнопки на панели инструментов" name="FlashToolbarButton" value="мигание"/>
+			<item label="Нет" name="None" value="нет"/>
+		</combo_box>
+		<text name="group_chat">
+			Групповой чат:
+		</text>
+		<combo_box name="GroupChatOptions">
+			<item label="Открыть окно разговоров" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Сообщение во всплывающем окне" name="PopUpMessage" value="всплывание"/>
+			<item label="Мигание кнопки на панели инструментов" name="FlashToolbarButton" value="мигание"/>
+			<item label="Нет" name="None" value="нет"/>
+		</combo_box>
+		<text name="nearby_chat">
+			Локальный чат:
+		</text>
+		<combo_box name="NearbyChatOptions">
+			<item label="Открыть окно разговоров" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Сообщение во всплывающем окне" name="PopUpMessage" value="всплывание"/>
+			<item label="Мигание кнопки на панели инструментов" name="FlashToolBarButton" value="мигание"/>
+			<item label="Нет" name="None" value="нет"/>
+		</combo_box>
+		<text name="notifications_alert">
+			Для временного отключения всех уведомлений вызовите меню «Общение &gt; Не беспокоить».
+		</text>
+	</panel>
+	<panel>
+		<text name="play_sound">
+			Звук:
+		</text>
+		<check_box label="Новый разговор" name="new_conversation"/>
+		<check_box label="Входящий голосовой вызов" name="incoming_voice_call"/>
+		<check_box label="Предложение телепортации" name="teleport_offer"/>
+		<check_box label="Предложение инвентаря" name="inventory_offer"/>
+	</panel>
+	<panel>
+		<button label="Очистить журнал..." name="clear_log"/>
+		<button label="Удалить записи..." name="delete_transcripts"/>
+		<button label="Обзор..." label_selected="Обзор" name="log_path_button"/>
+	</panel>
 	<button label="Перевод..." name="ok_btn"/>
 	<button label="Автозамена..." name="autoreplace_showgui"/>
 	<button label="Проверка правописания..." name="spellcheck_showgui"/>
diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_general.xml b/indra/newview/skins/default/xui/ru/panel_preferences_general.xml
index d1bfedf2d85..c7a850f78a1 100644
--- a/indra/newview/skins/default/xui/ru/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/ru/panel_preferences_general.xml
@@ -68,9 +68,9 @@
 		<combo_box.item label="никогда" name="item4"/>
 	</combo_box>
 	<text name="text_box3">
-		Ответ в режиме «Занят»:
+		Ответ в режиме «Не беспокоить»:
 	</text>
-	<text_editor name="busy_response">
+	<text_editor name="do_not_disturb_response">
 		log_in_to_change
 	</text_editor>
 </panel>
diff --git a/indra/newview/skins/default/xui/ru/sidepanel_task_info.xml b/indra/newview/skins/default/xui/ru/sidepanel_task_info.xml
index e9dd3760b5c..5502530ca46 100644
--- a/indra/newview/skins/default/xui/ru/sidepanel_task_info.xml
+++ b/indra/newview/skins/default/xui/ru/sidepanel_task_info.xml
@@ -72,6 +72,7 @@
 			<combo_box.item label="Купить объект" name="Buyobject"/>
 			<combo_box.item label="Заплатить за объект" name="Payobject"/>
 			<combo_box.item label="Открыть" name="Open"/>
+			<combo_box.item label="Приблизить" name="Zoom"/>
 		</combo_box>
 		<panel name="perms_inv">
 			<text name="perm_modify">
diff --git a/indra/newview/skins/default/xui/ru/strings.xml b/indra/newview/skins/default/xui/ru/strings.xml
index f9ded799bff..d7d4df4a37c 100644
--- a/indra/newview/skins/default/xui/ru/strings.xml
+++ b/indra/newview/skins/default/xui/ru/strings.xml
@@ -137,7 +137,7 @@
 		Выйти
 	</string>
 	<string name="create_account_url">
-		http://join.secondlife.com/index.php?lang=ru-RU&amp;sourceid=[sourceid]
+		http://join.secondlife.com/?sourceid=[sourceid]
 	</string>
 	<string name="LoginFailedViewerNotPermitted">
 		У клиента, которым вы пользуетесь, больше нет доступа к игре Second Life. Загрузить новую версию клиента можно по адресу
@@ -619,7 +619,7 @@ support@secondlife.com.
 	<string name="AvatarAway">
 		Нет на месте
 	</string>
-	<string name="AvatarBusy">
+	<string name="AvatarDoNotDisturb">
 		Не беспокоить
 	</string>
 	<string name="AvatarMuted">
@@ -856,6 +856,12 @@ support@secondlife.com.
 	<string name="ST_NO_JOINT">
 		Не удается найти объект ROOT или JOINT.
 	</string>
+	<string name="NearbyChatTitle">
+		Локальный чат
+	</string>
+	<string name="NearbyChatLabel">
+		(Локальный чат)
+	</string>
 	<string name="whisper">
 		шепчет:
 	</string>
@@ -919,12 +925,15 @@ support@secondlife.com.
 	<string name="ControlYourCamera">
 		Управлять камерой
 	</string>
-	<string name="TeleportYourAgent">
-		Телепортировать вас
-	</string>
 	<string name="NotConnected">
 		Нет подключения
 	</string>
+	<string name="AgentNameSubst">
+		(Ð’Ñ‹)
+	</string>
+	<string name="TeleportYourAgent">
+		Телепортировать вас
+	</string>
 	<string name="SIM_ACCESS_PG">
 		Общий
 	</string>
@@ -1006,18 +1015,6 @@ support@secondlife.com.
 	<string name="dictionary_files">
 		Словари
 	</string>
-	<string name="AvatarSetNotAway">
-		На месте
-	</string>
-	<string name="AvatarSetAway">
-		Нет на месте
-	</string>
-	<string name="AvatarSetNotBusy">
-		Не занят(а)
-	</string>
-	<string name="AvatarSetBusy">
-		Не беспокоить
-	</string>
 	<string name="shape">
 		Фигура
 	</string>
@@ -1986,8 +1983,8 @@ support@secondlife.com.
 	<string name="PanelContentsNewScript">
 		Новый скрипт
 	</string>
-	<string name="BusyModeResponseDefault">
-		У адресата вашего сообщения задан статус «Не беспокоить».  Ваше сообщение все равно будет отображено на панели IM для просмотра позже.
+	<string name="DoNotDisturbModeResponseDefault">
+		Этот житель включил режим «Не беспокоить» и увидит ваше сообщение позже.
 	</string>
 	<string name="MuteByName">
 		(по имени)
@@ -2100,9 +2097,6 @@ support@secondlife.com.
 	<string name="GroupMoneyDate">
 		[weekday,datetime,utc], [day,datetime,utc] [mth,datetime,utc] [year,datetime,utc]
 	</string>
-	<string name="ViewerObjectContents">
-		Контент
-	</string>
 	<string name="AcquiredItems">
 		Купленные вещи
 	</string>
@@ -3871,7 +3865,7 @@ support@secondlife.com.
 		Область общей дозволенности
 	</string>
 	<string name="LocationCtrlSeeAVsTooltip">
-		Все жители с других участков могут видеть аватары и общаться в чате
+		Аватары на этом участке невидимы и неслышимы для аватаров с других участков
 	</string>
 	<string name="LocationCtrlPathfindingDirtyTooltip">
 		Возможны неполадки подвижных объектов в этом регионе, пока регион не будет восстановлен.
@@ -3948,6 +3942,12 @@ support@secondlife.com.
 	<string name="IM_unblock_only_groups_friends">
 		Для просмотра этого сообщения снимите флажок «Только друзья и группы могут звонить мне и отправлять IM» в окне «Настройки/Приватность».
 	</string>
+	<string name="OnlineStatus">
+		Онлайн
+	</string>
+	<string name="OfflineStatus">
+		Оффлайн
+	</string>
 	<string name="answered_call">
 		На ваш звонок ответили
 	</string>
@@ -3957,6 +3957,9 @@ support@secondlife.com.
 	<string name="you_joined_call">
 		Вы присоединились к голосовой беседе
 	</string>
+	<string name="you_auto_rejected_call-im">
+		Голосовой вызов автоматически отклонен, так как включен режим «Не беспокоить».
+	</string>
 	<string name="name_started_call">
 		Житель [NAME] начал голосовую беседу
 	</string>
@@ -3973,7 +3976,7 @@ support@secondlife.com.
 		Соединяется...
 	</string>
 	<string name="conference-title">
-		Спонтанная конференция
+		Чат с несколькими участниками
 	</string>
 	<string name="conference-title-incoming">
 		Конференция с жителем [AGENT_NAME]
@@ -4865,6 +4868,9 @@ support@secondlife.com.
 	<string name="Command_Chat_Label">
 		Чат
 	</string>
+	<string name="Command_Conversations_Label">
+		Разговоры
+	</string>
 	<string name="Command_Compass_Label">
 		Компас
 	</string>
@@ -4940,6 +4946,9 @@ support@secondlife.com.
 	<string name="Command_Chat_Tooltip">
 		Обменивайтесь текстовыми репликами с людьми вокруг вас
 	</string>
+	<string name="Command_Conversations_Tooltip">
+		Поговорить со всеми
+	</string>
 	<string name="Command_Compass_Tooltip">
 		Компас
 	</string>
@@ -5069,4 +5078,13 @@ support@secondlife.com.
 	<string name="UserDictionary">
 		[Пользователь]
 	</string>
+	<string name="logging_calls_disabled_log_empty">
+		Разговоры не записываются. Чтобы начать запись разговора, в меню «Настройки &gt; Чат» выберите «Сохранять: только журнал» или «Сохранять: журнал и записи».
+	</string>
+	<string name="logging_calls_disabled_log_not_empty">
+		Разговоры больше не будут записываться. Чтобы восстановить запись разговора, в меню «Настройки &gt; Чат» выберите «Сохранять: только журнал» или «Сохранять: журнал и записи».
+	</string>
+	<string name="logging_calls_enabled_log_empty">
+		Нет зарегистрированных разговоров. Если вы обратитесь к кому-то или наоборот, в журнале появится новая запись.
+	</string>
 </strings>
diff --git a/indra/newview/skins/default/xui/tr/floater_conversation_log.xml b/indra/newview/skins/default/xui/tr/floater_conversation_log.xml
new file mode 100644
index 00000000000..5f8dac506fd
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_conversation_log.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_conversation_log" title="SOHBET GÜNLÜĞÜ">
+	<panel name="buttons_panel">
+		<filter_editor label="KiÅŸileri Filtrele" name="people_filter_input"/>
+		<menu_button name="conversation_view_btn" tool_tip="Gösterme/sıralama seçenekleri"/>
+		<menu_button name="conversations_gear_btn" tool_tip="Seçilen kişi veya grup üzerindeki eylemler"/>
+	</panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_conversation_preview.xml b/indra/newview/skins/default/xui/tr/floater_conversation_preview.xml
new file mode 100644
index 00000000000..84403dfd682
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_conversation_preview.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="preview_conversation" title="KONUÅžMA:">
+	<floater.string name="Title">
+		KONUÅžMA: [NAME]
+	</floater.string>
+	<text name="page_label" value="Sayfa"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_im_container.xml b/indra/newview/skins/default/xui/tr/floater_im_container.xml
index 4451d1d309b..6504430b3cb 100644
--- a/indra/newview/skins/default/xui/tr/floater_im_container.xml
+++ b/indra/newview/skins/default/xui/tr/floater_im_container.xml
@@ -1,2 +1,29 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<multi_floater name="floater_im_box" title="SOHBETLER"/>
+<multi_floater name="floater_im_box" title="SOHBETLER">
+	<string name="collapse_icon" value="Conv_toolbar_collapse"/>
+	<string name="expand_icon" value="Conv_toolbar_expand"/>
+	<layout_stack name="conversations_stack">
+		<layout_panel name="conversations_layout_panel">
+			<layout_stack name="conversations_pane_buttons_stack">
+				<layout_panel name="conversations_pane_buttons_expanded">
+					<menu_button name="sort_btn" tool_tip="Gösterme/sıralama seçenekleri"/>
+					<button name="add_btn" tool_tip="Yeni bir sohbet baÅŸlat"/>
+					<button name="speak_btn" tool_tip="Mikrofonunuzu kullanarak kiÅŸilerle konuÅŸun"/>
+				</layout_panel>
+				<layout_panel name="conversations_pane_buttons_collapsed">
+					<button name="expand_collapse_btn" tool_tip="Bu listeyi Daralt/GeniÅŸlet"/>
+				</layout_panel>
+			</layout_stack>
+		</layout_panel>
+		<layout_panel name="messages_layout_panel">
+			<panel_container name="im_box_tab_container">
+				<panel name="stub_panel">
+					<button name="stub_collapse_btn" tool_tip="Bu panoyu daralt"/>
+					<text name="stub_textbox">
+						Sohbet ayrı bir pencerede.   [secondlife:/// Bunu geri getir.]
+					</text>
+				</panel>
+			</panel_container>
+		</layout_panel>
+	</layout_stack>
+</multi_floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_im_session.xml b/indra/newview/skins/default/xui/tr/floater_im_session.xml
index bed08b36c61..8ce8f0fe13d 100644
--- a/indra/newview/skins/default/xui/tr/floater_im_session.xml
+++ b/indra/newview/skins/default/xui/tr/floater_im_session.xml
@@ -1,8 +1,59 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="panel_im">
-	<layout_stack name="im_panels">
-		<layout_panel>
-			<line_editor label="Kime" name="chat_editor"/>
-		</layout_panel>
-	</layout_stack>
+	<floater.string name="call_btn_start">
+		Conv_toolbar_open_call
+	</floater.string>
+	<floater.string name="call_btn_stop">
+		Conv_toolbar_hang_up
+	</floater.string>
+	<floater.string name="collapseline_icon" value="Conv_collapse_to_one_line"/>
+	<floater.string name="expandline_icon" value="Conv_expand_one_line"/>
+	<floater.string name="collapse_icon" value="Conv_toolbar_collapse"/>
+	<floater.string name="expand_icon" value="Conv_toolbar_expand"/>
+	<floater.string name="tear_off_icon" value="Conv_toolbar_arrow_ne"/>
+	<floater.string name="return_icon" value="Conv_toolbar_arrow_sw"/>
+	<floater.string name="participant_added" value="[NAME] sohbete davet edildi."/>
+	<floater.string name="multiple_participants_added" value="[NAME] sohbete davet edildi."/>
+	<floater.string name="tooltip_to_separate_window" value="Bu sohbeti ayrı bir pencereye taşı"/>
+	<floater.string name="tooltip_to_main_window" value="Bu sohbeti ana pencereye geri taşı"/>
+	<floater.string name="start_call_button_tooltip" value="Ses bağlantısını aç"/>
+	<floater.string name="end_call_button_tooltip" value="Ses bağlantısını kapat"/>
+	<floater.string name="expcol_button_not_tearoff_tooltip" value="Bu panoyu daralt"/>
+	<floater.string name="expcol_button_tearoff_and_expanded_tooltip" value="Katılımcı listesini daralt"/>
+	<floater.string name="expcol_button_tearoff_and_collapsed_tooltip" value="Katılımcı listesini genişlet"/>
+	<view name="contents_view">
+		<layout_stack name="main_stack">
+			<layout_panel name="toolbar_panel">
+				<menu_button name="view_options_btn" tool_tip="Gösterme/sıralama seçenekleri"/>
+				<menu_button name="gear_btn" tool_tip="Seçilen kişi üzerindeki eylemler"/>
+				<button name="add_btn" tool_tip="Bu sohbete birini ekle"/>
+				<button name="voice_call_btn" tool_tip="Ses bağlantısını aç"/>
+				<button name="close_btn" tool_tip="Bu sohbeti bitir"/>
+				<button name="expand_collapse_btn" tool_tip="Bu panoyu Daralt/GeniÅŸlet"/>
+			</layout_panel>
+			<layout_panel name="body_panel">
+				<layout_stack name="im_panels">
+					<layout_panel name="right_part_holder">
+						<panel name="trnsAndChat_panel">
+							<layout_stack name="translate_and_chat_stack">
+								<layout_panel name="translate_chat_checkbox_lp">
+									<check_box label="Sohbeti çevir" name="translate_chat_checkbox"/>
+								</layout_panel>
+							</layout_stack>
+						</panel>
+					</layout_panel>
+				</layout_stack>
+			</layout_panel>
+			<layout_panel name="chat_layout_panel">
+				<layout_stack name="input_panels">
+					<layout_panel name="input_editor_layout_panel">
+						<chat_editor label="Kime" name="chat_editor"/>
+					</layout_panel>
+					<layout_panel name="input_button_layout_panel">
+						<button name="minz_btn" tool_tip="Mesaj panelini gösterir/gizler"/>
+					</layout_panel>
+				</layout_stack>
+			</layout_panel>
+		</layout_stack>
+	</view>
 </floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_incoming_call.xml b/indra/newview/skins/default/xui/tr/floater_incoming_call.xml
index adb03c2dff3..0f2b27241e0 100644
--- a/indra/newview/skins/default/xui/tr/floater_incoming_call.xml
+++ b/indra/newview/skins/default/xui/tr/floater_incoming_call.xml
@@ -10,7 +10,7 @@
 		anonim
 	</floater.string>
 	<floater.string name="VoiceInviteP2P">
-		arıyor.
+		sizi arıyor.
 	</floater.string>
 	<floater.string name="VoiceInviteAdHoc">
 		bir Sesli Sohbet aramasına bir konferans araması ile katıldı.
@@ -25,9 +25,9 @@
 		[CURRENT_CHAT] sohbetinden ayrılıp, bu sesli sohbete katılmak istiyor musunuz?
 	</floater.string>
 	<text name="question">
-		[CURRENT_CHAT] sohbetinden ayrılıp, bu sesli sohbete katılmak istiyor musunuz?
+		Yanıtlarsanız, mevcut sesli sohbetinizle bağlantınız kesilecek.
 	</text>
-	<button label="Kabul Et" label_selected="Kabul Et" name="Accept"/>
-	<button label="Reddet" label_selected="Reddet" name="Reject"/>
-	<button label="AÄ° BaÅŸlat" name="Start IM"/>
+	<button label="Yanıtla" label_selected="Yanıtla" name="Accept"/>
+	<button label="Yok say" label_selected="Yok say" name="Reject"/>
+	<button label="Bunun yerine Aİ aç" name="Start IM"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_pathfinding_console.xml b/indra/newview/skins/default/xui/tr/floater_pathfinding_console.xml
index 6eecc7fb776..35f47e6dfaa 100644
--- a/indra/newview/skins/default/xui/tr/floater_pathfinding_console.xml
+++ b/indra/newview/skins/default/xui/tr/floater_pathfinding_console.xml
@@ -71,7 +71,7 @@
 			<text name="show_label">
 				Göster:
 			</text>
-			<check_box label="Dünya" name="show_world"/>
+			<check_box label="Test" name="show_world"/>
 			<check_box label="Sadece hareket ettirilebilir nesneler" name="show_world_movables_only"/>
 			<check_box label="Navigasyon örgüsü" name="show_navmesh"/>
 			<text name="show_walkability_label">
diff --git a/indra/newview/skins/default/xui/tr/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/tr/floater_texture_ctrl.xml
index 889425f23a0..42483c09e18 100644
--- a/indra/newview/skins/default/xui/tr/floater_texture_ctrl.xml
+++ b/indra/newview/skins/default/xui/tr/floater_texture_ctrl.xml
@@ -19,7 +19,7 @@
 	<button label="Varsayılan" label_selected="Varsayılan" name="Default"/>
 	<button label="BoÅŸ" label_selected="BoÅŸ" name="Blank"/>
 	<button label="Hiçbiri" label_selected="Hiçbiri" name="None"/>
-	<check_box initial_value="true" label="Canlı Önizleme" name="apply_immediate_check"/>
+	<check_box initial_value="true" label="Åžimdi uygula" name="apply_immediate_check"/>
 	<text name="preview_disabled" value="Önizleme Devre Dışı"/>
 	<filter_editor label="Dokuları Filtrele" name="inventory search editor"/>
 	<check_box initial_value="false" label="Klasörleri göster" name="show_folders_check"/>
diff --git a/indra/newview/skins/default/xui/tr/floater_voice_chat_volume.xml b/indra/newview/skins/default/xui/tr/floater_voice_chat_volume.xml
new file mode 100644
index 00000000000..ec350bee60b
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_voice_chat_volume.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_voice_volume" title="SOHBET SES DÃœZEYÄ°">
+	<slider label="Sesli Sohbet" name="chat_voice_volume"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_voice_effect.xml b/indra/newview/skins/default/xui/tr/floater_voice_effect.xml
index 3534a3fe906..7a157244cd6 100644
--- a/indra/newview/skins/default/xui/tr/floater_voice_effect.xml
+++ b/indra/newview/skins/default/xui/tr/floater_voice_effect.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater label="Yerler" name="voice_effects" title="SES ÅžEKÄ°LLENDÄ°RME">
+<floater label="Yerler" name="voice_effects" title="SES ŞEKİLLENDİRME ÖNİZLEMESİ">
 	<string name="no_voice_effect">
 		(Ses Åžekillendirme Yok)
 	</string>
diff --git a/indra/newview/skins/default/xui/tr/floater_voice_volume.xml b/indra/newview/skins/default/xui/tr/floater_voice_volume.xml
new file mode 100644
index 00000000000..acf99d6199c
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_voice_volume.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!--
+  Not can_close / no title to avoid window chrome
+  Single instance - only have one at a time, recycle it each spawn
+-->
+<floater name="floater_voice_volume" title="SES DÃœZEYÄ°">
+	<slider name="volume_slider" tool_tip="Ses düzeyi" value="0.5"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/menu_cof_gear.xml b/indra/newview/skins/default/xui/tr/menu_cof_gear.xml
index f910e1fe910..9480d300298 100644
--- a/indra/newview/skins/default/xui/tr/menu_cof_gear.xml
+++ b/indra/newview/skins/default/xui/tr/menu_cof_gear.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu name="Gear COF">
 	<menu label="Yeni Giysiler" name="COF.Gear.New_Clothes"/>
-	<menu label="Yeni Vücut Bölümleri" name="COF.Geear.New_Body_Parts"/>
+	<menu label="Yeni Vücut Bölümleri" name="COF.Gear.New_Body_Parts"/>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_conversation.xml b/indra/newview/skins/default/xui/tr/menu_conversation.xml
new file mode 100644
index 00000000000..31404f25010
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_conversation.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_conversation_participant">
+	<menu_item_call label="Sohbeti kapat" name="close_conversation"/>
+	<menu_item_call label="Ses sohbetini aç" name="open_voice_conversation"/>
+	<menu_item_call label="Ses bağlantısını kes" name="disconnect_from_voice"/>
+	<menu_item_call label="Profili Göster" name="view_profile"/>
+	<menu_item_call label="AÄ°" name="im"/>
+	<menu_item_call label="Işınlama teklif et" name="offer_teleport"/>
+	<menu_item_call label="Sesli arama" name="voice_call"/>
+	<menu_item_call label="Sohbet geçmişi..." name="chat_history"/>
+	<menu_item_call label="ArkadaÅŸ ekle" name="add_friend"/>
+	<menu_item_call label="Arkadaşı çıkar" name="remove_friend"/>
+	<menu_item_call label="Arkadaşları çıkar" name="remove_friends"/>
+	<menu_item_call label="Gruba davet et..." name="invite_to_group"/>
+	<menu_item_call label="Yakınlaştır" name="zoom_in"/>
+	<menu_item_call label="Harita" name="map"/>
+	<menu_item_call label="PaylaÅŸ" name="share"/>
+	<menu_item_call label="Öde" name="pay"/>
+	<menu_item_check label="Sesi Engelle" name="block_unblock"/>
+	<menu_item_check label="Metni Engelle" name="MuteText"/>
+	<menu_item_call label="Grup Profili" name="group_profile"/>
+	<menu_item_call label="Grubu EtkinleÅŸtir" name="activate_group"/>
+	<menu_item_call label="Gruptan Ayrıl" name="leave_group"/>
+	<context_menu label="Moderatör Seçenekleri" name="Moderator Options">
+		<menu_item_check label="Metin sohbetine izin ver" name="AllowTextChat"/>
+		<menu_item_call label="Bu katılımcıyı engelle" name="ModerateVoiceMuteSelected"/>
+		<menu_item_call label="Bu katılımcının engellemesini kaldır" name="ModerateVoiceUnMuteSelected"/>
+		<menu_item_call label="Herkesi engelle" name="ModerateVoiceMute"/>
+		<menu_item_call label="Herkesin engellemesini kaldır" name="ModerateVoiceUnmute"/>
+	</context_menu>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_conversation_log_gear.xml b/indra/newview/skins/default/xui/tr/menu_conversation_log_gear.xml
new file mode 100644
index 00000000000..9e91780eb81
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_conversation_log_gear.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Conversation Context Menu">
+	<menu_item_call label="AÄ°..." name="IM"/>
+	<menu_item_call label="Sesli arama..." name="Call"/>
+	<menu_item_call label="Sohbet geçmişini aç..." name="Chat history"/>
+	<menu_item_call label="Profili Göster" name="View Profile"/>
+	<menu_item_call label="Işınlama Teklif Et" name="teleport"/>
+	<menu_item_call label="ArkadaÅŸ Ekle" name="add_friend"/>
+	<menu_item_call label="Arkadaşı Çıkar" name="remove_friend"/>
+	<menu_item_call label="Gruba davet et..." name="Invite"/>
+	<menu_item_call label="Harita" name="Map"/>
+	<menu_item_call label="PaylaÅŸ" name="Share"/>
+	<menu_item_call label="Öde" name="Pay"/>
+	<menu_item_check label="Engelle/Engeli Kaldır" name="Block/Unblock"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_conversation_log_view.xml b/indra/newview/skins/default/xui/tr/menu_conversation_log_view.xml
new file mode 100644
index 00000000000..9a77eaadd90
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_conversation_log_view.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_conversation_view">
+	<menu_item_check label="Ada göre sırala" name="sort_by_name"/>
+	<menu_item_check label="Tarihe göre sırala" name="sort_by_date"/>
+	<menu_item_check label="Arkadaşlar üstte olacak şekilde sırala" name="sort_by_friends"/>
+	<menu_item_call label="Yakındaki sohbet geçmişini göster..." name="view_nearby_chat_history"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_im_conversation.xml b/indra/newview/skins/default/xui/tr/menu_im_conversation.xml
new file mode 100644
index 00000000000..3b9738edceb
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_im_conversation.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Conversation Gear Menu">
+	<menu_item_call label="Profili Göster" name="View Profile"/>
+	<menu_item_call label="ArkadaÅŸ Ekle" name="Add Friend"/>
+	<menu_item_call label="Arkadaşı çıkar" name="remove_friend"/>
+	<menu_item_call label="Işınlama teklif et" name="offer_teleport"/>
+	<menu_item_call label="Gruba davet et..." name="invite_to_group"/>
+	<menu_item_call label="Sohbet geçmişi..." name="chat_history"/>
+	<menu_item_call label="Yakınlaştır" name="zoom_in"/>
+	<menu_item_call label="Harita" name="map"/>
+	<menu_item_call label="PaylaÅŸ" name="Share"/>
+	<menu_item_call label="Öde" name="Pay"/>
+	<menu_item_check label="Sesi Engelle" name="Block/Unblock"/>
+	<menu_item_check label="Metni Engelle" name="MuteText"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_im_session_showmodes.xml b/indra/newview/skins/default/xui/tr/menu_im_session_showmodes.xml
new file mode 100644
index 00000000000..c4d4357ac97
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_im_session_showmodes.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_modes">
+	<menu_item_check label="Daraltılmış görünüm" name="compact_view"/>
+	<menu_item_check label="Genişletilmiş görünüm" name="expanded_view"/>
+	<menu_item_check label="Zamanı göster" name="IMShowTime"/>
+	<menu_item_check label="Bire bir sohbetlerde adları göster" name="IMShowNamesForP2PConv"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_object_icon.xml b/indra/newview/skins/default/xui/tr/menu_object_icon.xml
index 34a2661d8af..3d5c68d9d3d 100644
--- a/indra/newview/skins/default/xui/tr/menu_object_icon.xml
+++ b/indra/newview/skins/default/xui/tr/menu_object_icon.xml
@@ -2,4 +2,6 @@
 <menu name="Object Icon Menu">
 	<menu_item_call label="Nesne Profili..." name="Object Profile"/>
 	<menu_item_call label="Engelle..." name="Block"/>
+	<menu_item_call label="Haritada Göster" name="show_on_map"/>
+	<menu_item_call label="Nesne Konumuna Işınla" name="teleport_to_object"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_outfit_gear.xml b/indra/newview/skins/default/xui/tr/menu_outfit_gear.xml
index d2e7e7107aa..674041e9c9b 100644
--- a/indra/newview/skins/default/xui/tr/menu_outfit_gear.xml
+++ b/indra/newview/skins/default/xui/tr/menu_outfit_gear.xml
@@ -23,6 +23,8 @@
 		<menu_item_call label="Yeni Saç" name="New Hair"/>
 		<menu_item_call label="Yeni Gözler" name="New Eyes"/>
 	</menu>
+	<menu_item_call label="Tüm klasörleri genişlet" name="expand"/>
+	<menu_item_call label="Tüm klasörleri daralt" name="collapse"/>
 	<menu_item_call label="Dış Görünümü Yeniden Adlandır" name="rename"/>
 	<menu_item_call label="Dış Görünümü Sil" name="delete_outfit"/>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_participant_view.xml b/indra/newview/skins/default/xui/tr/menu_participant_view.xml
new file mode 100644
index 00000000000..e9411ff350d
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_participant_view.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="participant_manu_view">
+	<menu_item_check label="Sohbetleri türe göre sırala" name="sort_sessions_by_type"/>
+	<menu_item_check label="Sohbetleri ada göre sırala" name="sort_sessions_by_name"/>
+	<menu_item_check label="Sohbetleri son faaliyetlere göre sırala" name="sort_sessions_by_recent"/>
+	<menu_item_check label="Katılımcıları ada göre sırala" name="sort_participants_by_name"/>
+	<menu_item_check label="Katılımcıları son faaliyetlere göre sırala" name="sort_participants_by_recent"/>
+	<menu_item_call label="Sohbet tercihleri..." name="chat_preferences"/>
+	<menu_item_call label="Gizlilik tercihleri..." name="privacy_preferences"/>
+	<menu_item_check label="Sohbet günlüğü..." name="Conversation"/>
+	<menu_item_check label="Yakındaki sohbeti çevir" name="Translate_chat"/>
+	<menu_item_check label="Çeviri ayarları..." name="Translation_settings"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_people_blocked_gear.xml b/indra/newview/skins/default/xui/tr/menu_people_blocked_gear.xml
new file mode 100644
index 00000000000..2bf1101b481
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_people_blocked_gear.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_blocked_gear">
+	<menu_item_call label="Engellemeyi Kaldır" name="unblock"/>
+	<menu_item_call label="Profil..." name="profile"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_people_blocked_plus.xml b/indra/newview/skins/default/xui/tr/menu_people_blocked_plus.xml
new file mode 100644
index 00000000000..a869e2ae7d6
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_people_blocked_plus.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_blocked_plus">
+	<menu_item_call label="Sakini ada göre engelle..." name="block_resident_by_name"/>
+	<menu_item_call label="Nesneyi ada göre engelle" name="block_object_by_name"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_people_blocked_view.xml b/indra/newview/skins/default/xui/tr/menu_people_blocked_view.xml
new file mode 100644
index 00000000000..14b3de3a9fc
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_people_blocked_view.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_blocked_view">
+	<menu_item_check label="Ada göre sırala" name="sort_by_name"/>
+	<menu_item_check label="Türe göre sırala" name="sort_by_type"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_people_friends_view.xml b/indra/newview/skins/default/xui/tr/menu_people_friends_view.xml
new file mode 100644
index 00000000000..609584d6a60
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_people_friends_view.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="Ada Göre Sırala" name="sort_name"/>
+	<menu_item_check label="Duruma Göre Sırala" name="sort_status"/>
+	<menu_item_check label="Kişi Simgelerini Göster" name="view_icons"/>
+	<menu_item_check label="Verilen İzinleri Göster" name="view_permissions"/>
+	<menu_item_check label="Sohbet Günlüğünü Göster..." name="view_conversation"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_people_groups.xml b/indra/newview/skins/default/xui/tr/menu_people_groups.xml
index 9f2946e310a..743b01844d1 100644
--- a/indra/newview/skins/default/xui/tr/menu_people_groups.xml
+++ b/indra/newview/skins/default/xui/tr/menu_people_groups.xml
@@ -2,7 +2,7 @@
 <menu name="menu_group_plus">
 	<menu_item_call label="Bilgileri Görüntüle" name="View Info"/>
 	<menu_item_call label="Sohbet" name="Chat"/>
-	<menu_item_call label="Ara" name="Call"/>
+	<menu_item_call label="Sesli arama" name="Call"/>
 	<menu_item_call label="EtkinleÅŸtir" name="Activate"/>
 	<menu_item_call label="Ayrıl" name="Leave"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_people_groups_view.xml b/indra/newview/skins/default/xui/tr/menu_people_groups_view.xml
new file mode 100644
index 00000000000..e550b20addd
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_people_groups_view.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="Grup Simgelerini Göster" name="Display Group Icons"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_people_nearby.xml b/indra/newview/skins/default/xui/tr/menu_people_nearby.xml
index ee859a9450d..2d61461c919 100644
--- a/indra/newview/skins/default/xui/tr/menu_people_nearby.xml
+++ b/indra/newview/skins/default/xui/tr/menu_people_nearby.xml
@@ -1,13 +1,16 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Avatar Context Menu">
-	<menu_item_call label="Profili Göster" name="View Profile"/>
-	<menu_item_call label="ArkadaÅŸ Ekle" name="Add Friend"/>
-	<menu_item_call label="Arkadaşı Çıkar" name="Remove Friend"/>
-	<menu_item_call label="AÄ°" name="IM"/>
-	<menu_item_call label="Ara" name="Call"/>
-	<menu_item_call label="Harita" name="Map"/>
-	<menu_item_call label="PaylaÅŸ" name="Share"/>
-	<menu_item_call label="Öde" name="Pay"/>
-	<menu_item_check label="Engelle/Engeli Kaldır" name="Block/Unblock"/>
-	<menu_item_call label="Işınlama Teklif Et" name="teleport"/>
+	<menu_item_call label="Profili Göster" name="view_profile"/>
+	<menu_item_call label="AÄ°" name="im"/>
+	<menu_item_call label="Işınlama Teklif Et" name="offer_teleport"/>
+	<menu_item_call label="Sesli arama" name="voice_call"/>
+	<menu_item_call label="Sohbet geçmişini göster..." name="chat_history"/>
+	<menu_item_call label="ArkadaÅŸ Ekle" name="add_friend"/>
+	<menu_item_call label="Arkadaşı Çıkar" name="remove_friend"/>
+	<menu_item_call label="Gruba davet et..." name="invite_to_group"/>
+	<menu_item_call label="Yakınlaştır" name="zoom_in"/>
+	<menu_item_call label="Harita" name="map"/>
+	<menu_item_call label="PaylaÅŸ" name="share"/>
+	<menu_item_call label="Öde" name="pay"/>
+	<menu_item_check label="Engelle/Engeli Kaldır" name="block_unblock"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/tr/menu_people_nearby_multiselect.xml
index 5c89f87906c..20695d98e8d 100644
--- a/indra/newview/skins/default/xui/tr/menu_people_nearby_multiselect.xml
+++ b/indra/newview/skins/default/xui/tr/menu_people_nearby_multiselect.xml
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Multi-Selected People Context Menu">
-	<menu_item_call label="ArkadaÅŸ Ekle" name="Add Friends"/>
-	<menu_item_call label="Arkadaşı Çıkar" name="Remove Friend"/>
-	<menu_item_call label="AÄ°" name="IM"/>
-	<menu_item_call label="Ara" name="Call"/>
-	<menu_item_call label="PaylaÅŸ" name="Share"/>
-	<menu_item_call label="Öde" name="Pay"/>
-	<menu_item_call label="Işınlama Teklif Et" name="teleport"/>
+	<menu_item_call label="ArkadaÅŸ Ekle" name="add_friends"/>
+	<menu_item_call label="Arkadaşı Çıkar" name="remove_friends"/>
+	<menu_item_call label="AÄ°" name="im"/>
+	<menu_item_call label="Ara" name="call"/>
+	<menu_item_call label="PaylaÅŸ" name="share"/>
+	<menu_item_call label="Öde" name="pay"/>
+	<menu_item_call label="Işınlama Teklif Et" name="offer_teleport"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_people_nearby_view.xml b/indra/newview/skins/default/xui/tr/menu_people_nearby_view.xml
new file mode 100644
index 00000000000..59ea7c145f6
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_people_nearby_view.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="Son Konuşanlara Göre Sırala" name="sort_by_recent_speakers"/>
+	<menu_item_check label="Ada Göre Sırala" name="sort_name"/>
+	<menu_item_check label="Mesafeye Göre Sırala" name="sort_distance"/>
+	<menu_item_check label="Kişi Simgelerini Göster" name="view_icons"/>
+	<menu_item_check label="Haritayı Göster" name="view_map"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_people_recent_view.xml b/indra/newview/skins/default/xui/tr/menu_people_recent_view.xml
new file mode 100644
index 00000000000..02be715ed2c
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_people_recent_view.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="En Sonunculara Göre Sırala" name="sort_most"/>
+	<menu_item_check label="Ada Göre Sırala" name="sort_name"/>
+	<menu_item_check label="Kişi Simgelerini Göster" name="view_icons"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_url_agent.xml b/indra/newview/skins/default/xui/tr/menu_url_agent.xml
index d82b52aea80..b14a0509bfe 100644
--- a/indra/newview/skins/default/xui/tr/menu_url_agent.xml
+++ b/indra/newview/skins/default/xui/tr/menu_url_agent.xml
@@ -1,6 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Url Popup">
-	<menu_item_call label="Sakin Profilini Göster" name="show_agent"/>
+	<menu_item_call label="Profili Göster" name="show_agent"/>
+	<menu_item_call label="Aİ Gönder..." name="send_im"/>
+	<menu_item_call label="ArkadaÅŸ Ekle..." name="add_friend"/>
 	<menu_item_call label="Adı panoya kopyala" name="url_copy_label"/>
 	<menu_item_call label="SLurl&apos;yi Panoya Kopyala" name="url_copy"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_url_objectim.xml b/indra/newview/skins/default/xui/tr/menu_url_objectim.xml
index d55e34c11c3..00fa3c27c2e 100644
--- a/indra/newview/skins/default/xui/tr/menu_url_objectim.xml
+++ b/indra/newview/skins/default/xui/tr/menu_url_objectim.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Url Popup">
-	<menu_item_call label="Nesne Bilgilerini Göster" name="show_object"/>
+	<menu_item_call label="Nesne Profili..." name="show_object"/>
 	<menu_item_call label="Haritada Göster" name="show_on_map"/>
 	<menu_item_call label="Nesne Konumuna Işınla" name="teleport_to_object"/>
 	<menu_item_call label="Nesne Adını panoya kopyala" name="url_copy_label"/>
diff --git a/indra/newview/skins/default/xui/tr/menu_viewer.xml b/indra/newview/skins/default/xui/tr/menu_viewer.xml
index 7a7faf6ac4b..c465966fc7e 100644
--- a/indra/newview/skins/default/xui/tr/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/tr/menu_viewer.xml
@@ -16,10 +16,7 @@
 			<menu_item_call label="Beni Anime Etmeyi Durdur" name="Stop Animating My Avatar"/>
 			<menu_item_call label="Yürü / koş / uç..." name="Walk / run / fly"/>
 		</menu>
-		<menu label="Durum" name="Status">
-			<menu_item_call label="Uzakta" name="Set Away"/>
-			<menu_item_call label="MeÅŸgul" name="Set Busy"/>
-		</menu>
+		<menu label="Durum" name="Status"/>
 		<menu_item_call label="L$ Satın Al..." name="Buy and Sell L$"/>
 		<menu_item_call label="Satıcı Giden Kutusu..." name="MerchantOutbox"/>
 		<menu_item_call label="Hesap kontrol paneli..." name="Manage My Account"/>
@@ -30,14 +27,18 @@
 		<menu_item_call label="[APP_NAME]&apos;den Çık" name="Quit"/>
 	</menu>
 	<menu label="Ä°letiÅŸim Kur" name="Communicate">
-		<menu_item_check label="Sohbet..." name="Nearby Chat"/>
+		<menu_item_check label="Sohbetler..." name="Conversations"/>
+		<menu_item_check label="Yakındaki Sohbet..." name="Nearby Chat"/>
 		<menu_item_check label="KonuÅŸ" name="Speak"/>
-		<menu_item_check label="Ses ayarları..." name="Nearby Voice"/>
-		<menu_item_check label="Ses ÅŸekillendirme..." name="ShowVoice"/>
+		<menu label="Ses ÅŸekillendirme" name="VoiceMorphing">
+			<menu_item_check label="Ses ÅŸekillendirme yok" name="NoVoiceMorphing"/>
+			<menu_item_check label="Önizleme..." name="Preview"/>
+			<menu_item_call label="Abone ol..." name="Subscribe"/>
+		</menu>
 		<menu_item_check label="Mimikler..." name="Gestures"/>
-		<menu_item_call label="ArkadaÅŸlar" name="My Friends"/>
-		<menu_item_call label="Gruplar" name="My Groups"/>
-		<menu_item_call label="Yakındaki kişiler" name="Active Speakers"/>
+		<menu_item_check label="ArkadaÅŸlar" name="My Friends"/>
+		<menu_item_check label="Gruplar" name="My Groups"/>
+		<menu_item_check label="Yakındaki kişiler" name="Active Speakers"/>
 		<menu_item_call label="Engelleme Listesi" name="Block List"/>
 	</menu>
 	<menu label="Dünya" name="World">
@@ -113,7 +114,6 @@
 			<menu_item_call label="Satın Al" name="Menu Object Buy"/>
 			<menu_item_call label="Al" name="Menu Object Take"/>
 			<menu_item_call label="Kopya Al" name="Take Copy"/>
-			<menu_item_call label="Envanterime Geri Kaydet" name="Save Object Back to My Inventory"/>
 			<menu_item_call label="Nesne İçeriklerine Geri Kaydet" name="Save Object Back to Object Contents"/>
 			<menu_item_call label="Nesneyi Ä°ade Et" name="Return Object back to Owner"/>
 		</menu>
@@ -128,6 +128,7 @@
 			<menu_item_call label="Bağlantı kümeleri..." name="pathfinding_linksets_menu_item"/>
 			<menu_item_call label="Karakterler..." name="pathfinding_characters_menu_item"/>
 			<menu_item_call label="Görüntüleme / test..." name="pathfinding_console_menu_item"/>
+			<menu_item_call label="Bölgeyi tekrar kaydet" name="pathfinding_rebake_navmesh_item"/>
 		</menu>
 		<menu label="Seçenklr." name="Options">
 			<menu_item_check label="Gelişmiş İzinleri Göster" name="DebugPermissions"/>
@@ -157,6 +158,13 @@
 	<menu label="Yardım" name="Help">
 		<menu_item_call label="Nasıl yapılır..." name="How To"/>
 		<menu_item_call label="[SECOND_LIFE] Yardımı" name="Second Life Help"/>
+		<menu_item_call label="Kullanıcı kılavuzu" name="User’s guide"/>
+		<menu_item_call label="Bilgi Bankası" name="Knowledge Base"/>
+		<menu_item_call label="Wiki" name="Wiki"/>
+		<menu_item_call label="Topluluk Forumları" name="Community Forums"/>
+		<menu_item_call label="Destek portalı" name="Support portal"/>
+		<menu_item_call label="[SECOND_LIFE] Haberleri" name="Second Life News"/>
+		<menu_item_call label="[SECOND_LIFE] Blogları" name="Second Life Blogs"/>
 		<menu_item_call label="Kötüye Kullanımı Bildir" name="Report Abuse"/>
 		<menu_item_call label="Hata Bildir" name="Report Bug"/>
 		<menu_item_call label="[APP_NAME] Hakkında" name="About Second Life"/>
@@ -383,9 +391,14 @@
 				<menu_item_call label="Test DiÅŸisi" name="Test Female"/>
 				<menu_item_check label="Avatar Seçimine İzin Ver" name="Allow Select Avatar"/>
 			</menu>
+			<menu label="Animasyon Hızı" name="Animation Speed">
+				<menu_item_call label="Tüm Animasyonlar %10 Daha Hızlı" name="All Animations 10 Faster"/>
+				<menu_item_call label="Tüm Animasyonlar %10 Daha Yavaş" name="All Animations 10 Slower"/>
+				<menu_item_call label="Tüm Animasyon Hızlarını Sıfırla" name="Reset All Animation Speed"/>
+				<menu_item_check label="Yavaş Hareket Animasyonları" name="Slow Motion Animations"/>
+			</menu>
 			<menu_item_call label="Parametreleri Varsayılana Zorla" name="Force Params to Default"/>
 			<menu_item_check label="Animasyon Bilgisi" name="Animation Info"/>
-			<menu_item_check label="Yavaş Hareket Animasyonları" name="Slow Motion Animations"/>
 			<menu_item_check label="Şuraya Bak&apos;ı Göster" name="Show Look At"/>
 			<menu_item_check label="Şuraya İşaret Et&apos;i Göster" name="Show Point At"/>
 			<menu_item_check label="Eklem Güncelleştirmeleri İçin Hata Ayıklama" name="Debug Joint Updates"/>
diff --git a/indra/newview/skins/default/xui/tr/notifications.xml b/indra/newview/skins/default/xui/tr/notifications.xml
index 488702f9caa..ad92a4b478d 100644
--- a/indra/newview/skins/default/xui/tr/notifications.xml
+++ b/indra/newview/skins/default/xui/tr/notifications.xml
@@ -516,6 +516,24 @@ Daha fazla bilgi için [_URL] adresini ziyaret etmek ister misiniz?
 		</url>
 		<usetemplate ignoretext="Grafik sürücüm güncel değil" name="okcancelignore" notext="Hayır" yestext="Evet"/>
 	</notification>
+	<notification name="AMDOldDriver">
+		Grafik yonganız için muhtemelen daha yeni bir sürücü mevcut.  Grafik sürücüleri güncellemek performansınızı kayda değer şekilde artırabilir.
+
+    Sürücü güncellemeleri için [_URL] adresini ziyaret etmek ister misiniz?
+		<url name="url">
+			http://support.amd.com/us/Pages/AMDSupportHub.aspx
+		</url>
+		<usetemplate ignoretext="Grafik sürücüm güncel değil" name="okcancelignore" notext="Hayır" yestext="Evet"/>
+	</notification>
+	<notification name="NVIDIAOldDriver">
+		Grafik yonganız için muhtemelen daha yeni bir sürücü mevcut.  Grafik sürücüleri güncellemek performansınızı kayda değer şekilde artırabilir.
+
+    Sürücü güncellemeleri için [_URL] adresini ziyaret etmek ister misiniz?
+		<url name="url">
+			http://www.nvidia.com/Download/index.aspx?lang=en-us
+		</url>
+		<usetemplate ignoretext="Grafik sürücüm güncel değil" name="okcancelignore" notext="Hayır" yestext="Evet"/>
+	</notification>
 	<notification name="UnknownGPU">
 		Sisteminiz [APP_NAME] uygulamasının tanımadığı bir grafik kartı içeriyor.
 Bu durum genellikle [APP_NAME] uygulaması ile henüz denenmemiş yeni donanımlar kullanıldığında ortaya çıkar.  Büyük olasılıkla bir sorun çıkmayacaktır, fakat grafik ayarlarınızı değiştirmeniz gerekebilir.
@@ -1546,10 +1564,13 @@ Gruptan ayrılmak istiyor musunuz?
 		Şu anda arkadaşlık teklif edilemiyor. Lütfen biraz sonra tekrar deneyin.
 		<usetemplate name="okbutton" yestext="Tamam"/>
 	</notification>
-	<notification name="BusyModeSet">
-		Durumunuz Meşgul olarak ayarlandı.
-Sohbet ve anlık iletiler gizlenecek. Anlık iletilere Meşgul durumu için belirlediğiniz yanıt gönderilecek. Tüm ışınlanma teklifleri reddedilecek. Tüm envanter teklifleri Çöp Kutunuza gidecek.
-		<usetemplate ignoretext="Durumumu MeÅŸgul olarak deÄŸiÅŸtiriyorum" name="okignore" yestext="Tamam"/>
+	<notification name="DoNotDisturbModeSet">
+		Rahatsız Etme açık.  Gelen iletişimlerle ilgili size bilgi verilmeyecek.
+
+- Diğer sakinlere sizin Rahatsız Etmeyin yanıtı iletilecektir (Tercihler &gt; Genel içerisinde ayarlanır).
+- Işınlanma teklifleri reddedilecektir.
+- Sesli aramalar reddedilecektir.
+		<usetemplate ignoretext="Durumumu Rahatsız Etme moduna değiştiriyorum" name="okignore" yestext="Tamam"/>
 	</notification>
 	<notification name="JoinedTooManyGroupsMember">
 		Maksimum grup sayısına eriştiniz. Lütfen bu gruba katılmadan önce başka bir gruptan ayrılın ya da bu teklifi reddedin.
@@ -2033,6 +2054,10 @@ Envanter öğesi/öğeleri taşınsın mı?
 		Hesap geçmişinizi görüntülemek için [http://secondlife.com/account/ Kontrol Paneli] adresine gitmek istiyor musunuz?
 		<usetemplate ignoretext="Hesap geçmişimi görüntülemek için tarayıcımı başlat" name="okcancelignore" notext="İptal" yestext="Sayfaya git"/>
 	</notification>
+	<notification name="ConfirmAddingChatParticipants">
+		Mevcut bir sohbete bir kişi eklediğinizde yeni bir sohbet oluşturulur.  Tüm katılımcılara yeni sohbet bildirimi gönderilir.
+		<usetemplate ignoretext="Sohbet katılımcılarının eklenmesini doğrula" name="okcancelignore" notext="İptal" yestext="Tamam"/>
+	</notification>
 	<notification name="ConfirmQuit">
 		Çıkmak istediğinize emin misiniz?
 		<usetemplate ignoretext="Çıkmadan önce doğrulama iste" name="okcancelignore" notext="Çıkma" yestext="Çık"/>
@@ -2107,14 +2132,14 @@ Bu nesneyi seçilen nesne ile değiştirmek istiyor musunuz?
 			<button ignore="Hiçbir Zaman Değiştirme" name="No" text="İptal"/>
 		</form>
 	</notification>
-	<notification label="Meşgul Durumu Uyarısı" name="BusyModePay">
-		Durumunuz Meşgul olarak ayarlanmış; bu da, bu ödemenin karşılığında teklif edilen hiçbir öğeyi almayacağınız anlamına gelir.
+	<notification label="Rahatsız Etme Modu Uyarısı" name="DoNotDisturbModePay">
+		Rahatsız Etme seçeneğini devreye aldınız. Bu ödemenin karşılığında sunulan hiçbir öğeyi almayacaksınız.
 
-Bu işlemi tamamlamadan önce Meşgul durumundan çıkmak ister misiniz?
+Bu işlemi tamamlamadan önce Rahatsız Etme&apos;yi kapatmak ister misiniz?
 		<form name="form">
-			<ignore name="ignore" text="Meşgul durumundayken bir kişiye veya bir nesneye ödeme yapmak üzereyim."/>
-			<button ignore="Her zaman Meşgul durumundan çık" name="Yes" text="Tamam"/>
-			<button ignore="Hiçbir zaman Meşgul durumundan çıkma" name="No" text="İptal"/>
+			<ignore name="ignore" text="Rahatsız Etmeyin modundayken bir kişiye veya bir nesneye ödeme yapmak üzereyim"/>
+			<button ignore="Rahatsız Etme Modundan daima çıkılsın" name="Yes" text="Tamam"/>
+			<button ignore="Rahatsız Etme Modundan asla çıkılmasın" name="No" text="İptal"/>
 		</form>
 	</notification>
 	<notification name="ConfirmDeleteProtectedCategory">
@@ -2249,11 +2274,8 @@ Diğer kişilerin bu konuma kolayca erişmesini sağlamak için bu adrese bir we
 	<notification name="GroupNotice">
 		Konu: [SUBJECT], Ä°leti: [MESSAGE]
 	</notification>
-	<notification name="FriendOnline">
-		&lt;nolink&gt;[NAME]&lt;/nolink&gt; çevrimiçi
-	</notification>
-	<notification name="FriendOffline">
-		&lt;nolink&gt;[NAME]&lt;/nolink&gt; çevrimdışı
+	<notification name="FriendOnlineOffline">
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; durumu: [STATUS]
 	</notification>
 	<notification name="AddSelfFriend">
 		Çok iyi biri olduğunuza eminiz fakat kendinizi arkadaş olarak ekleyemezsiniz.
@@ -2482,13 +2504,6 @@ Burada uçamazsınız.
 	<notification name="DynamicPathfindingDisabled">
 		Bu bölgede dinamik yol bulma etkin değil.  Yol bulma LSL çağrılarını kullanan komut dosyalı nesneler, bu bölgede beklendiiği gibi çalışmayabilir.
 	</notification>
-	<notification name="PathfindingRebakeNavmesh">
-		Bu bölgede belirli diğer nesneleri değiştirmek, hareket eden başka nesnelerin yanlış davranmasına neden olabilir.  Hareket eden başka nesnelerin doğru davranmasını sağlamak için “Bölgeyi yeniden kaydet” düğmesine tıklayın.  Daha fazla bilgi edinmek için “Yardım” seçimini yapın.
-		<url name="url">
-			http://wiki.secondlife.com/wiki/Pathfinding_Tools_in_the_Second_Life_Viewer
-		</url>
-		<usetemplate helptext="Yardım" ignoretext="Bu bölgede belirli diğer nesneleri değiştirmek, hareket eden başka nesnelerin yanlış davranmasına neden olabilir." name="okhelpignore" yestext="Tamam"/>
-	</notification>
 	<notification name="PathfindingCannotRebakeNavmesh">
 		Bir hata meydana geldi.  Bir ağ veya sunucu sorunu olabilir ya da oluşturma haklarına sahip olmayabilirsiniz.  Bazen oturumu kapatıp, tekrar açmak bu sorunu çözer.
 		<usetemplate name="okbutton" yestext="Tamam"/>
@@ -2751,7 +2766,7 @@ Kabul ediyor musunuz?
 	<notification name="ScriptQuestionCaution">
 		Uyarı: &apos;&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;&apos; nesnesi, Linden Dolar hesabınıza tam erişim istiyor. Eğer erişime izin verirseniz, süregelen bir şekilde, ilave uyarı olmaksızın, hesabınızdan herhangi bir zamanda fon çekebilir veya hesabınızı tamamen boşaltabilir.
   
-Bu türden bir talebin yerinde olması nadir bir durumdur. Eğer hesabınıza neden erişmek istediğini tam olarak anlamıyorsanız, erişime izin vermeyin.
+Eğer hesabınıza neden erişmek istediğini tam olarak anlamıyorsanız, erişime izin vermeyin.
 		<form name="form">
 			<button name="Grant" text="Tam eriÅŸime izin ver"/>
 			<button name="Deny" text="Reddet"/>
@@ -3333,4 +3348,626 @@ GiriÅŸim iptal edildi.
 		[NUM_ITEMS] öğeyi siliyorsunuz.  Devam etmek istediğinize emin misiniz?
 		<usetemplate ignoretext="Birden çok öğeyi silmek istediğinize emin misiniz?" name="okcancelignore" notext="Hayır" yestext="Evet"/>
 	</notification>
+	<notification name="AvatarFrozen">
+		[AV_FREEZER] sizi dondurdu. Hareket edemez veya dünyayla etkileşim kuramazsınız.
+	</notification>
+	<notification name="AvatarFrozenDuration">
+		[AV_FREEZER] sizi [AV_FREEZE_TIME] saniye boyunca dondurdu. Hareket edemez veya dünyayla etkileşim kuramazsınız.
+	</notification>
+	<notification name="YouFrozeAvatar">
+		Avatar donduruldu.
+	</notification>
+	<notification name="AvatarHasUnFrozenYou">
+		[AV_FREEZER] sizin dondurulmanızı kaldırdı.
+	</notification>
+	<notification name="AvatarUnFrozen">
+		Avatar artık dondurulmuş değil.
+	</notification>
+	<notification name="AvatarFreezeFailure">
+		Dondurma başarılamadı çünkü bu parsel için yönetici iznine sahip değilsiniz.
+	</notification>
+	<notification name="AvatarFreezeThaw">
+		Dondurmanızın süresi sona erdi, istediğinizi yapabilirsiniz.
+	</notification>
+	<notification name="AvatarCantFreeze">
+		Üzgünüz, bu kullanıcı dondurulamaz.
+	</notification>
+	<notification name="NowOwnObject">
+		Artık [OBJECT_NAME] nesnesinin sahibisiniz
+	</notification>
+	<notification name="CantRezOnLand">
+		[OBJECT_POS] konumunda nesneyi oluşturamazsınız çünkü bu arazinin sahibi buna izin vermiyor.  Arazinin sahibini görmek için arazi aracını kullanın.
+	</notification>
+	<notification name="RezFailTooManyRequests">
+		Çok fazla talep olduğu için nesne oluşturulamadı.
+	</notification>
+	<notification name="SitFailCantMove">
+		Oturamazsınız çünkü şu anda hareket edemezsiniz.
+	</notification>
+	<notification name="SitFailNotAllowedOnLand">
+		Oturamazsınız çünkü bu araziye girme izniniz yok.
+	</notification>
+	<notification name="SitFailNotSameRegion">
+		Daha yakına gelmeyi deneyin.  Nesne sizinle aynı bölgede olmadığı için nesnenin üzerine oturulamaz.
+	</notification>
+	<notification name="NoNewObjectRegionFull">
+		Yeni nesne oluşturulamıyor. Bölge dolu.
+	</notification>
+	<notification name="FailedToPlaceObject">
+		Belirtilen konuma nesne yerleştirilemedi.  Lütfen tekrar deneyin.
+	</notification>
+	<notification name="NoOwnNoGardening">
+		Sahibi olmadığınız arazide ağaçlar ve çimen oluşturamazsınız.
+	</notification>
+	<notification name="NoCopyPermsNoObject">
+		&apos;[OBJ_NAME]&apos; nesnesini kopyalama izniniz olmadığı için kopyalama başarılamadı.
+	</notification>
+	<notification name="NoTransPermsNoObject">
+		&apos;[OBJ_NAME]&apos; nesnesi size aktarılamadığı için kopyalama başarılamadı.
+	</notification>
+	<notification name="AddToNavMeshNoCopy">
+		&apos;[OBJ_NAME]&apos; nesnesi navmesh&apos;e katkıda bulunduğu için kopyalama başarılamadı.
+	</notification>
+	<notification name="DupeWithNoRootsSelected">
+		Kök nesne seçili olmayan kopya.
+	</notification>
+	<notification name="CantDupeCuzRegionIsFull">
+		Nesneler çoğaltılamıyor çünkü bölge dolu.
+	</notification>
+	<notification name="CantDupeCuzParcelNotFound">
+		Nesneler çoğaltılamadı - Üzerinde oldukları parsel bulunamadı.
+	</notification>
+	<notification name="CantCreateCuzParcelFull">
+		Nesne oluşturulamıyor çünkü
+parsel dolu.
+	</notification>
+	<notification name="RezAttemptFailed">
+		Bir nesneyi oluşturma girişimi başarısız oldu.
+	</notification>
+	<notification name="ToxicInvRezAttemptFailed">
+		Bu bölgede hatalara yol açmış olan öğe oluşturulamıyor.
+	</notification>
+	<notification name="InvItemIsBlacklisted">
+		Bu envanter öğesi kara listeye alınmış.
+	</notification>
+	<notification name="NoCanRezObjects">
+		Şu anda nesne oluşturmanıza izin verilmiyor.
+	</notification>
+	<notification name="LandSearchBlocked">
+		Arazi Arama Engellendi.
+Çok fazla sayıda arazi aramasını çok hızlı gerçekleştirdiniz.
+Lütfen bir dakika sonra tekrar deneyin.
+	</notification>
+	<notification name="NotEnoughResourcesToAttach">
+		Nesneyi iliştirmek için yeterli komut dosyası kaynağı mevcut değil!
+	</notification>
+	<notification name="YouDiedAndGotTPHome">
+		Hayatınızı kaybettiniz ve ana konumunuza ışınlandınız
+	</notification>
+	<notification name="EjectComingSoon">
+		Daha fazla burada olma izniniz yok ve ayrılmak için [EJECT_TIME] saniyeniz var.
+	</notification>
+	<notification name="NoEnterServerFull">
+		Bu bölgeye giremezsiniz çünkü 
+sunucu dolu.
+	</notification>
+	<notification name="SaveBackToInvDisabled">
+		Envantere Geri Kaydet devre dışı bırakıldı.
+	</notification>
+	<notification name="NoExistNoSaveToContents">
+		&apos;[OBJ_NAME]&apos; nesne içeriğine kaydedilemedi, çünkü oluşturulurken temel alınan nesne artık mevcut değil.
+	</notification>
+	<notification name="NoModNoSaveToContents">
+		&apos;[DEST_NAME]&apos; nesnesini değiştirme izniniz olmadığı için &apos;[OBJ_NAME]&apos; nesne içeriğine kaydedilemedi.
+	</notification>
+	<notification name="NoSaveBackToInvDisabled">
+		&apos;[OBJ_NAME]&apos; envantere geri kaydedilemez -- bu işlem devre dışı bırakıldı.
+	</notification>
+	<notification name="NoCopyNoSelCopy">
+		&apos;[OBJ_NAME]&apos; nesnesini kopyalama izniniz olmadığı için seçiminizi kopyalamayazsınız.
+	</notification>
+	<notification name="NoTransNoSelCopy">
+		&apos;[OBJ_NAME]&apos; nesnesi aktarılamaz olduğu için seçiminizi kopyalayamazsınız.
+	</notification>
+	<notification name="NoTransNoCopy">
+		&apos;[OBJ_NAME]&apos; nesnesi aktarılamaz olduğu için seçiminizi kopyalayamazsınız.
+	</notification>
+	<notification name="NoPermsNoRemoval">
+		Benzeticiden &apos;[OBJ_NAME]&apos; nesnesinin kaldırılmasına izinler sistemi izin vermiyor.
+	</notification>
+	<notification name="NoModNoSaveSelection">
+		&apos;[OBJ_NAME]&apos; nesnesini değiştirme izniniz olmadığı için seçiminizi kaydedemezsiniz.
+	</notification>
+	<notification name="NoCopyNoSaveSelection">
+		&apos;[OBJ_NAME]&apos; nesnesi kopyalanamaz olduğu için seçiminizi kaydedemezsiniz.
+	</notification>
+	<notification name="NoModNoTaking">
+		&apos;[OBJ_NAME]&apos; nesnesini değiştirme izniniz olmadığı için seçiminizi alamazsınız.
+	</notification>
+	<notification name="RezDestInternalError">
+		Dahili Hata: Bilinmeyen hedef türü.
+	</notification>
+	<notification name="DeleteFailObjNotFound">
+		Nesne bulunamadığı için silme başarılamadı
+	</notification>
+	<notification name="SorryCantEjectUser">
+		Üzgünüz, bu kullanıcı çıkartılamaz.
+	</notification>
+	<notification name="RegionSezNotAHome">
+		Bu bölge, ana konumunuzu buraya kurmanıza izin vermiyor.
+	</notification>
+	<notification name="HomeLocationLimits">
+		&apos;Ana Konum&apos;unuzu sadece arazinizde veya anakarada bir Bilgi Ä°stasyonu&apos;nda ayarlayabilirsiniz.
+	</notification>
+	<notification name="HomePositionSet">
+		Ana konum ayarlandı.
+	</notification>
+	<notification name="AvatarEjected">
+		Avatar çıkartıldı.
+	</notification>
+	<notification name="AvatarEjectFailed">
+		Çıkarma başarılamadı çünkü bu parsel için yönetici iznine sahip değilsiniz.
+	</notification>
+	<notification name="CantMoveObjectParcelFull">
+		[REGION_NAME] bölgesinde &apos;[OBJECT_NAME]&apos; nesnesi [OBJ_POSITION] konumuna hareket ettirilemiyor çünkü parsel dolu.
+	</notification>
+	<notification name="CantMoveObjectParcelPerms">
+		[REGION_NAME] bölgesinde &apos;[OBJECT_NAME]&apos; nesnesi [OBJ_POSITION] konumuna hareket ettirilemiyor çünkü bu parselde nesnelerinize izin verilmiyor.
+	</notification>
+	<notification name="CantMoveObjectParcelResources">
+		[REGION_NAME] bölgesinde &apos;[OBJECT_NAME]&apos; nesnesi [OBJ_POSITION] konumuna hareket ettirilemiyor, çünkü bu parselde bu nesne için yeterli kaynak yok.
+	</notification>
+	<notification name="CantMoveObjectRegionVersion">
+		[REGION_NAME] bölgesinde &apos;[OBJECT_NAME]&apos; nesnesi [OBJ_POSITION] konumuna hareket ettirilemiyor çünkü bölgede çalıştırılan eski versiyon, bölge değiştirme üzerinden bu nesnenin alınmasını desteklemiyor.
+	</notification>
+	<notification name="CantMoveObjectNavMesh">
+		[REGION_NAME] bölgesinde &apos;[OBJECT_NAME]&apos; nesnesi [OBJ_POSITION] konumuna hareket ettirilemiyor çünkü navmesh&apos;i bölge sınırları ötesinde değiştiremezsiniz.
+	</notification>
+	<notification name="CantMoveObjectWTF">
+		Bilinmeyen bir nedenden ötürü [REGION_NAME] bölgesinde &apos;[OBJECT_NAME]&apos; nesnesi [OBJ_POSITION] konumuna hareket ettirilemiyor. ([FAILURE_TYPE])
+	</notification>
+	<notification name="NoPermModifyObject">
+		Bu nesneyi deÄŸiÅŸtirme izniniz yok
+	</notification>
+	<notification name="CantEnablePhysObjContributesToNav">
+		Navmesh&apos;e katkıda bulunan bir nesne için fizik etkinleştirilemez.
+	</notification>
+	<notification name="CantEnablePhysKeyframedObj">
+		Anahtar karelenmiş nesneler için fizik etkinleştirilemez.
+	</notification>
+	<notification name="CantEnablePhysNotEnoughLandResources">
+		Nesne için fizik etkinleştirilemedi -- arazi kaynakları yetersiz.
+	</notification>
+	<notification name="CantEnablePhysCostTooGreat">
+		Fizik kaynağı maliyeti [MAX_OBJECTS]&apos;dan büyük nesne için fizik etkinleştirilemedi
+	</notification>
+	<notification name="PhantomWithConcavePiece">
+		Bu nesne fantom olduğu ve navmesh&apos;e katkıda bulunduğu için konkav bir parçaya sahip olamaz.
+	</notification>
+	<notification name="UnableAddItem">
+		Öğe eklenemedi!
+	</notification>
+	<notification name="UnableEditItem">
+		Bu düzenlenemiyor!
+	</notification>
+	<notification name="NoPermToEdit">
+		Bunu düzenleme izni yok.
+	</notification>
+	<notification name="NoPermToCopyInventory">
+		Bu envanteri kopyalama izni yok.
+	</notification>
+	<notification name="CantSaveItemDoesntExist">
+		Nesne içeriklerine kaydedilemedi: Öğe artık mevcut değil.
+	</notification>
+	<notification name="CantSaveItemAlreadyExists">
+		Nesne içeriklerine kaydedilemedi: Bu ada sahip öğe envanterde zaten mevcut
+	</notification>
+	<notification name="CantSaveModifyAttachment">
+		Nesne içeriklerine kaydedilemedi: Bu, aksesuar izinlerini değiştirmeyi gerektirirdi.
+	</notification>
+	<notification name="TooManyScripts">
+		Çok fazla komut dosyası.
+	</notification>
+	<notification name="UnableAddScript">
+		Komut dosyası eklenemedi!
+	</notification>
+	<notification name="AssetServerTimeoutObjReturn">
+		Varlık sunucusu zamanında yanıt vermedi.  Nesne sime iade edildi.
+	</notification>
+	<notification name="RegionDisablePhysicsShapes">
+		Bu bölgede fiziksel şekiller etkin değil.
+	</notification>
+	<notification name="NoModNavmeshAcrossRegions">
+		Navmesh&apos;i bölge sınırlarının ötesinde değiştiremezsiniz.
+	</notification>
+	<notification name="NoSetPhysicsPropertiesOnObjectType">
+		Bu nesne türü üzerinde fizik özellikleri ayarlanamaz.
+	</notification>
+	<notification name="NoSetRootPrimWithNoShape">
+		Kök prim şekilsiz olacak şekilde ayarlanamaz.
+	</notification>
+	<notification name="NoRegionSupportPhysMats">
+		Bu bölgede fiziksel malzemeler etkin değil.
+	</notification>
+	<notification name="OnlyRootPrimPhysMats">
+		Sadece kök primlerin fizik malzemeleri ayarlanabilir.
+	</notification>
+	<notification name="NoSupportCharacterPhysMats">
+		Karakterler üzerinde fizik malzemelerin ayarlanması henüz desteklenmiyor.
+	</notification>
+	<notification name="InvalidPhysMatProperty">
+		Belirtilen fizik malzemesi özelliklerinden biri veya daha fazlası geçersiz.
+	</notification>
+	<notification name="NoPermsAlterStitchingMeshObj">
+		Bir örgü nesnesinin dikiş türünü değiştiremezsiniz.
+	</notification>
+	<notification name="NoPermsAlterShapeMeshObj">
+		Bir örgü nesnesinin şeklini değiştiremezsiniz
+	</notification>
+	<notification name="FullRegionCantEnter">
+		Bu bölgeye giremezsiniz çünkü \nbölge dolu.
+	</notification>
+	<notification name="LinkFailedOwnersDiffer">
+		Bağlantı başarısız oldu -- sahipler farklı
+	</notification>
+	<notification name="LinkFailedNoModNavmeshAcrossRegions">
+		Bağlntı başarılamadı -- navmesh&apos;i bölge sınırlarının ötesinde değiştiremezsiniz.
+	</notification>
+	<notification name="LinkFailedNoPermToEdit">
+		Düzenleme iznine sahip olmadığınız için bağlantı başarılamadı.
+	</notification>
+	<notification name="LinkFailedTooManyPrims">
+		Bağlantı başarısız oldu -- çok fazla ilkel öğe var
+	</notification>
+	<notification name="LinkFailedCantLinkNoCopyNoTrans">
+		Bağlantı başarısız oldu -- aktarılamayanla kopyalanamayan arasında bağlantı kurulamaz
+	</notification>
+	<notification name="LinkFailedNothingLinkable">
+		Bağlantı başarısız oldu -- bağlantı verilebilecek bir şey yok.
+	</notification>
+	<notification name="LinkFailedTooManyPathfindingChars">
+		Bağlantı başarısız oldu -- çok fazla yol bulma karakteri var
+	</notification>
+	<notification name="LinkFailedInsufficientLand">
+		Bağlantı başarısız oldu -- arazi kaynakları yetersiz
+	</notification>
+	<notification name="LinkFailedTooMuchPhysics">
+		Nesne çok fazla fizik kaynağı kullanıyor -- dinamikleri devre dışı bırakıldı.
+	</notification>
+	<notification name="TeleportedHomeByObjectOnParcel">
+		&apos;[PARCEL_NAME]&apos; parseli üzerindeki &apos;[OBJECT_NAME]&apos; nesnesi tarafından ana konuma ışınlandınız
+	</notification>
+	<notification name="TeleportedHomeByObject">
+		&apos;[OBJECT_NAME]&apos; nesnesi tarafından ana konuma ışınlandınız
+	</notification>
+	<notification name="TeleportedByAttachment">
+		You have been teleported by an attachment on [ITEM_ID]
+	</notification>
+	<notification name="TeleportedByObjectOnParcel">
+		&apos;[PARCEL_NAME]&apos; parseli üzerindeki &apos;[OBJECT_NAME]&apos; nesnesi tarafından ışınlandınız
+	</notification>
+	<notification name="TeleportedByObjectOwnedBy">
+		Sahibi [OWNER_ID] olan &apos;[OBJECT_NAME]&apos; nesnesi tarafından ışınlandınız
+	</notification>
+	<notification name="TeleportedByObjectUnknownUser">
+		Bilinmeyen bir sahibi olan &apos;[OBJECT_NAME]&apos; nesnesi tarafından ışınlandınız.
+	</notification>
+	<notification name="CantCreateObjectRegionFull">
+		Talep edilen nesne oluşturulamıyor. Bölge dolu.
+	</notification>
+	<notification name="CantAttackMultipleObjOneSpot">
+		Tek bir noktaya birden fazla nesne iliÅŸtiremezsiniz.
+	</notification>
+	<notification name="CantCreateMultipleObjAtLoc">
+		Burada birden fazla nesne oluşturamazsınız.
+	</notification>
+	<notification name="UnableToCreateObjTimeOut">
+		Talep edilen nesne oluşturulamıyor. Nesne veri tabanında yok.
+	</notification>
+	<notification name="UnableToCreateObjUnknown">
+		Talep edilen nesne oluşturulamıyor. Talep zaman aşımına uğradı. Lütfen tekrar deneyin.
+	</notification>
+	<notification name="UnableToCreateObjMissingFromDB">
+		Talep edilen nesne oluşturulamıyor. Lütfen tekrar deneyin.
+	</notification>
+	<notification name="RezFailureTookTooLong">
+		Oluşturma başarısız oldu, talep edilen nesnenin yüklenmesi çok zaman aldı.
+	</notification>
+	<notification name="FailedToPlaceObjAtLoc">
+		Belirtilen konuma nesne yerleştirilemedi.  Lütfen tekrar deneyin.
+	</notification>
+	<notification name="CantCreatePlantsOnLand">
+		Bu arazide bitkiler oluşturamazsınız.
+	</notification>
+	<notification name="CantRestoreObjectNoWorldPos">
+		Nesne geri yüklenemiyor. Dünya konumu bulunamadı.
+	</notification>
+	<notification name="CantRezObjectInvalidMeshData">
+		Örgü verileri geçersiz olduğu için nesne oluşturulamadı.
+	</notification>
+	<notification name="CantRezObjectTooManyScripts">
+		Bölgede zaten fazlasıyla komut dosyası olduğu için nesne oluşturulamadı.
+	</notification>
+	<notification name="CantCreateObjectNoAccess">
+		Erişim ayrıcalıklarınız orada nesne oluşturmanıza izin vermiyor.
+	</notification>
+	<notification name="CantCreateObject">
+		Şu anda nesne oluşturmanıza izin verilmiyor.
+	</notification>
+	<notification name="InvalidObjectParams">
+		Geçersiz nesne parametreleri
+	</notification>
+	<notification name="CantDuplicateObjectNoAcess">
+		Erişim ayrıcalıklarınız burada nesne çoğaltmanıza izin vermiyor.
+	</notification>
+	<notification name="CantChangeShape">
+		Bu ÅŸekli deÄŸiÅŸtirmenize izin verilmiyor.
+	</notification>
+	<notification name="NoAccessToClaimObjects">
+		Erişim ayrıcalıklarınız burada nesneler üzerinde hak talebinde bulunmanıza izin vermiyor.
+	</notification>
+	<notification name="DeedFailedNoPermToDeedForGroup">
+		Grubunuz adına nesne devretmek için gerekli izne sahip olmadığınız için devretme başarılamadı.
+	</notification>
+	<notification name="NoPrivsToBuyObject">
+		Erişim ayrıcalıklarınız burada nesneler satın almanıza izin vermiyor.
+	</notification>
+	<notification name="CantAttachObjectAvatarSittingOnIt">
+		Üzerinde bir avatar oturduğu için nesne iliştirilemiyor.
+	</notification>
+	<notification name="WhyAreYouTryingToWearShrubbery">
+		Ağaçlar ve çimen aksesuar olarak giyilemez.
+	</notification>
+	<notification name="CantAttachGroupOwnedObjs">
+		Sahibi grup olan nesneler iliÅŸtirilemiyor.
+	</notification>
+	<notification name="CantAttachObjectsNotOwned">
+		Sahip olmadığınız nesneleri iliştiremezsiniz.
+	</notification>
+	<notification name="CantAttachNavmeshObjects">
+		Navmesh&apos;e katkıda bulunan nesneler iliştirilemez.
+	</notification>
+	<notification name="CantAttachObjectNoMovePermissions">
+		Nesneyi hareket ettirme izniniz olmadığı için nesneyi iliştiremiyorsanız.
+	</notification>
+	<notification name="CantAttachNotEnoughScriptResources">
+		Nesneyi iliştirmek için yeterli komut dosyası kaynağı mevcut değil!
+	</notification>
+	<notification name="CantDropItemTrialUser">
+		Buraya nesne düşüremezsiniz; Ücretsiz Deneme alanını deneyin.
+	</notification>
+	<notification name="CantDropMeshAttachment">
+		Örgü aksesuarlarını düşüremezsiniz. Envantere ayırın, sonra dünyada oluşturun.
+	</notification>
+	<notification name="CantDropAttachmentNoPermission">
+		Aksesuar düşürülemedi: Burada düşürme izniniz yok.
+	</notification>
+	<notification name="CantDropAttachmentInsufficientLandResources">
+		Aksesuar düşürülemedi: Mevcut arazi kaynakları yetersiz.
+	</notification>
+	<notification name="CantDropAttachmentInsufficientResources">
+		Aksesuarlar düşürülemedi: Mevcut kaynaklar yetersiz.
+	</notification>
+	<notification name="CantDropObjectFullParcel">
+		Nesne buraya düşürülemez.  Parsel dolu.
+	</notification>
+	<notification name="CantTouchObjectBannedFromParcel">
+		Bu arazi parselinde yasaklandığınız için bu nesneye dokunamıyor/tutamıyorsunuz.
+	</notification>
+	<notification name="PlzNarrowDeleteParams">
+		Lütfen silme parametrelerinizi daraltın.
+	</notification>
+	<notification name="UnableToUploadAsset">
+		Varlık karşıya yüklenemiyor.
+	</notification>
+	<notification name="CantTeleportCouldNotFindUser">
+		Ana konuma ışınlanacak kullanıcı bulunamadı
+	</notification>
+	<notification name="GodlikeRequestFailed">
+		tanrısal talep başarısız oldu
+	</notification>
+	<notification name="GenericRequestFailed">
+		genel talep başarısız oldu
+	</notification>
+	<notification name="CantUploadPostcard">
+		Posta kartı karşıya yüklenemiyor.  Daha sonra tekrar deneyin.
+	</notification>
+	<notification name="CantFetchInventoryForGroupNotice">
+		Grup bildirimi için envanter ayrıntıları alınamadı.
+	</notification>
+	<notification name="CantSendGroupNoticeNotPermitted">
+		Grup bildirimi gönderilemedi -- izin verilmiyor.
+	</notification>
+	<notification name="CantSendGroupNoticeCantConstructInventory">
+		Grup bildirimi gönderilemedi -- envanter oluşturulamadı.
+	</notification>
+	<notification name="CantParceInventoryInNotice">
+		Bildirimde envanter ayrıştırılamadı.
+	</notification>
+	<notification name="TerrainUploadFailed">
+		Yüzeyin karşıya yüklemesi başarılamadı.
+	</notification>
+	<notification name="TerrainFileWritten">
+		Yüzey dosyası yazıldı.
+	</notification>
+	<notification name="TerrainFileWrittenStartingDownload">
+		Yüzey dosyası yazıldı, karşıdan yükleme başlatılıyor...
+	</notification>
+	<notification name="TerrainBaked">
+		Yüzey kaydedildi.
+	</notification>
+	<notification name="TenObjectsDisabledPlzRefresh">
+		Sadece seçilen ilk 10 nesne devre dışı bırakıldı. Gerekiyorsa yenileyin ve ilave seçimler yapın.
+	</notification>
+	<notification name="UpdateViewerBuyParcel">
+		Bu parseli satın almak için görüntüleyicinizi güncelleştirmelisiniz.
+	</notification>
+	<notification name="CantBuyParcelNotForSale">
+		Satın alınamıyor, bu parsel satılık değil.
+	</notification>
+	<notification name="CantBuySalePriceOrLandAreaChanged">
+		Satın alınamıyor, satış fiyatı veya arazi bölgesi değişmiş.
+	</notification>
+	<notification name="CantBuyParcelNotAuthorized">
+		Bu parsel için yetkili alıcı değilsiniz.
+	</notification>
+	<notification name="CantBuyParcelAwaitingPurchaseAuth">
+		Bu parseli satın alamazsınız çünkü zaten satın alım yetkilendirmesi bekliyor
+	</notification>
+	<notification name="CantBuildOverflowParcel">
+		Burada nesneler inşa edemezsiniz, aksi halde parselin kaynak sınırları aşılır.
+	</notification>
+	<notification name="SelectedMultipleOwnedLand">
+		Farklı sahiplere ait araziler seçtiniz. Lütfen daha küçük bir alan seçin ve tekrar deneyin.
+	</notification>
+	<notification name="CantJoinTooFewLeasedParcels">
+		Seçimde birleştirilecek yeterli sayıda lease edilmiş parsel yok.
+	</notification>
+	<notification name="CantDivideLandMultipleParcelsSelected">
+		Arazi bölünemedi.\nBirden fazla parsel seçili durumda.\nDaha küçük bir arazi parçası seçmeyi deneyin.
+	</notification>
+	<notification name="CantDivideLandCantFindParcel">
+		Arazi bölünemiyor.\nParsel bulunamıyor.\nLütfen Yardım -&gt; Hata Bildir ile bildirin...
+	</notification>
+	<notification name="CantDivideLandWholeParcelSelected">
+		Arazi bölünemiyor. Tüm parsel seçilidir.\nDaha küçük bir arazi parçası seçmeyi deneyin.
+	</notification>
+	<notification name="LandHasBeenDivided">
+		Arazi bölündü.
+	</notification>
+	<notification name="PassPurchased">
+		Bir geçiş hakkı satın aldınız.
+	</notification>
+	<notification name="RegionDisallowsClassifieds">
+		Bölgede seri ilanlara izin verilmiyor.
+	</notification>
+	<notification name="LandPassExpireSoon">
+		Bu arazi için geçiş hakkınız sona ermek üzere.
+	</notification>
+	<notification name="CantSitNoSuitableSurface">
+		Üzerinde oturulabilecek uygun bir yüzey yok, başka bir noktayı deneyin.
+	</notification>
+	<notification name="CantSitNoRoom">
+		Burada oturacak yer yok, baÅŸka bir yer deneyin.
+	</notification>
+	<notification name="ClaimObjectFailedNoPermission">
+		İzniniz olmadığı için nesne üzerinde hak talep etme başarılamadı
+	</notification>
+	<notification name="ClaimObjectFailedNoMoney">
+		Sahip olduğunuz L$ yeterli olmadığı için nesne üzerinde hak talep etme başarılamadı.
+	</notification>
+	<notification name="CantDeedGroupLand">
+		Grubun sahip olduÄŸu araziyi devredemezsiniz.
+	</notification>
+	<notification name="BuyObjectFailedNoMoney">
+		Sahip olduğunuz L$ yeterli olmadığı için nesne satın alma başarılamadı.
+	</notification>
+	<notification name="BuyInventoryFailedNoMoney">
+		Sahip olduğunuz L$ yeterli olmadığı için envanter satın alma başarılamadı.
+	</notification>
+	<notification name="BuyPassFailedNoMoney">
+		Sahibi olduğunuz L$ bu araziye geçiş hakkı almanıza yeterli değil.
+	</notification>
+	<notification name="CantBuyPassTryAgain">
+		Şu anda geçiş hakkı satın alınamıyor.  Daha sonra tekrar deneyin.
+	</notification>
+	<notification name="CantCreateObjectParcelFull">
+		Nesne oluşturulamıyor çünkü \nparsel dolu.
+	</notification>
+	<notification name="FailedPlacingObject">
+		Belirtilen konuma nesne yerleştirilemedi.  Lütfen tekrar deneyin.
+	</notification>
+	<notification name="CantCreateLandmarkForEvent">
+		Etkinlik için yer imi oluşturulamıyor.
+	</notification>
+	<notification name="GodBeatsFreeze">
+		Tanrısal güçleriniz dondurmayı devre dışı bıraktı!
+	</notification>
+	<notification name="SpecialPowersRequestFailedLogged">
+		Özel yetkiler talebi başarısız oldu. Bu talep günlüğe kaydedildi.
+	</notification>
+	<notification name="ExpireExplanation">
+		Sistem şu anda talebinizi işleyemiyor. Talep zaman aşımına uğradı.
+	</notification>
+	<notification name="DieExplanation">
+		Sistem talebinizi iÅŸleyemiyor.
+	</notification>
+	<notification name="AddPrimitiveFailure">
+		İlkel öğeyi oluşturmak için yeterli fon yok.
+	</notification>
+	<notification name="RezObjectFailure">
+		Nesneyi oluşturmak için yeterli fon yok.
+	</notification>
+	<notification name="ResetHomePositionNotLegal">
+		Ana konum sıfırlandı çünkü Ana konum yasal değildi.
+	</notification>
+	<notification name="CantInviteRegionFull">
+		Şu anda konumunuza kimseyi davet edemezsiniz çünkü bölge dolu. Daha sonra tekrar deneyin.
+	</notification>
+	<notification name="CantSetHomeAtRegion">
+		Bu bölge, ana konumunuzu buraya kurmanıza izin vermiyor.
+	</notification>
+	<notification name="ListValidHomeLocations">
+		&apos;Ana Konum&apos;unuzu sadece arazinizde veya anakarada bir Bilgi Ä°stasyonu&apos;nda ayarlayabilirsiniz.
+	</notification>
+	<notification name="SetHomePosition">
+		Ana konum ayarlandı.
+	</notification>
+	<notification name="CantDerezInventoryError">
+		Envanter hatasından ötürü nesne oluşturulması geri alınamıyor.
+	</notification>
+	<notification name="CantCreateRequestedInv">
+		Talep edilen envanter oluşturulamadı.
+	</notification>
+	<notification name="CantCreateRequestedInvFolder">
+		Talep edilen envanter klasörü oluşturulamadı.
+	</notification>
+	<notification name="CantCreateInventory">
+		Bu envanter oluşturulamadı.
+	</notification>
+	<notification name="CantCreateLandmark">
+		Yer imi oluşturulamıyor.
+	</notification>
+	<notification name="CantCreateOutfit">
+		Dış görünüm şu anda oluşturulamıyor. Bir dakika sonra tekrar deneyin.
+	</notification>
+	<notification name="InventoryNotForSale">
+		Envanter satılık değil.
+	</notification>
+	<notification name="CantFindInvItem">
+		Envanter öğesi bulunamıyor.
+	</notification>
+	<notification name="CantFindObject">
+		Nesne bulunamıyor.
+	</notification>
+	<notification name="CantTransfterMoneyRegionDisabled">
+		Nesnelere para transferleri bölgede şu anda devre dışı bırakılmış durumda.
+	</notification>
+	<notification name="CantPayNoAgent">
+		Kime ödeme yapılacağı belirlenemedi.
+	</notification>
+	<notification name="CantDonateToPublicObjects">
+		Kamusal nesnelere L$ veremezsiniz.
+	</notification>
+	<notification name="InventoryCreationInWorldObjectFailed">
+		Dünya içerisindeki nesnede envater oluşturma başarısız oldu.
+	</notification>
+	<notification name="UserBalanceOrLandUsageError">
+		Dahili bir hata nedeniyle görüntüleyicinizi gerektiği gibi güncelleyemedik.  Görüntüleyicinizde gösterilen L$ bakiyesi veya parsel tutarı sunucular üzerinde gerçekteki bakiyenizi yansıtmayabilir.
+	</notification>
+	<notification name="LargePrimAgentIntersect">
+		Başka oyuncularla kesişen büyük primler oluşturulamaz.  Öbür oyuncular hareket ettiğinde lütfen tekrar deneyin.
+	</notification>
+	<notification name="PreferenceChatClearLog">
+		Bu, geçmiş sohbetlerin günlüklerini ve bu dosyanın tüm yedeklerini silecektir.
+		<usetemplate ignoretext="Ben geçmiş sohbetlerin günlüğünü silmeden önce doğrula." name="okcancelignore" notext="İptal" yestext="Tamam"/>
+	</notification>
+	<notification name="PreferenceChatDeleteTranscripts">
+		Bu, tüm geçmiş sohbetlerin dökümlerini silecektir. Geçmiş sohbetlerin listesi bundan etkilenmez. [FOLDER] klasöründe .txt ve txt.backup uzantısına sahip tüm dosyalar silinecektir.
+		<usetemplate ignoretext="Ben dökümleri silmeden önce doğrulama iste." name="okcancelignore" notext="İptal" yestext="Tamam"/>
+	</notification>
+	<notification name="PreferenceChatPathChanged">
+		Dosyalar taşınamıyor. Önceki yol geri yüklendi.
+		<usetemplate ignoretext="Dosyalar taşınamıyor. Önceki yol geri yüklendi." name="okignore" yestext="Tamam"/>
+	</notification>
 </notifications>
diff --git a/indra/newview/skins/default/xui/tr/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/tr/panel_avatar_list_item.xml
index 7542778acaf..f330bd85e8e 100644
--- a/indra/newview/skins/default/xui/tr/panel_avatar_list_item.xml
+++ b/indra/newview/skins/default/xui/tr/panel_avatar_list_item.xml
@@ -27,5 +27,6 @@
 	<icon name="permission_edit_mine_icon" tool_tip="Bu arkadaşınız nesnelerinizi düzenleyebilir, silebilir veya alabilir"/>
 	<icon name="permission_map_icon" tool_tip="Bu arkadaşınız haritada sizi bulabilir"/>
 	<icon name="permission_online_icon" tool_tip="Bu arkadaşınız çevrimiçi olduğunuzda sizi görebilir"/>
+	<button name="info_btn" tool_tip="Ek bilgi"/>
 	<button name="profile_btn" tool_tip="Profili göster"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/tr/panel_block_list_sidetray.xml
index 0464b7ec07a..87b67e249ed 100644
--- a/indra/newview/skins/default/xui/tr/panel_block_list_sidetray.xml
+++ b/indra/newview/skins/default/xui/tr/panel_block_list_sidetray.xml
@@ -1,10 +1,11 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="block_list_panel">
-	<text name="title_text">
-		Listeyi Engelle
-	</text>
-	<scroll_list name="blocked" tool_tip="Åžu anda engellenmiÅŸ olan Sakinler listesi"/>
-	<button label="Kişiyi engelle" name="Block resident..." tool_tip="Engellenecek bir Sakin seç"/>
-	<button label="Nesneyi ada göre engelle" name="Block object by name..." tool_tip="Ada göre engellenecek bir nesne seç"/>
-	<button label="Engellemeyi Kaldır" name="Unblock" tool_tip="Engelleme listesinden Sakini veya nesneyi kaldır"/>
+	<panel label="bottom_panel" name="blocked_buttons_panel">
+		<filter_editor label="Filtrele" name="blocked_filter_input"/>
+		<menu_button name="blocked_gear_btn" tool_tip="Seçilen kişi veya nesne üzerindeki eylemler"/>
+		<menu_button name="view_btn" tool_tip="Sıralama seçenekleri"/>
+		<menu_button name="plus_btn" tool_tip="Engellenecek bir Sakin veya nesne seç"/>
+		<button name="unblock_btn" tool_tip="Engelleme listesinden Sakini veya nesneyi kaldır"/>
+	</panel>
+	<block_list name="blocked" tool_tip="Åžu anda engellenmiÅŸ olan Sakinler listesi"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_conversation_list_item.xml b/indra/newview/skins/default/xui/tr/panel_conversation_list_item.xml
new file mode 100644
index 00000000000..c7227f02b65
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_conversation_list_item.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="conversation_list_item">
+	<layout_stack name="conversation_item_stack">
+		<layout_panel name="conversation_title_panel">
+			<text name="conversation_title" value="(yükleniyor)"/>
+		</layout_panel>
+	</layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_conversation_log_list_item.xml b/indra/newview/skins/default/xui/tr/panel_conversation_log_list_item.xml
new file mode 100644
index 00000000000..79895f9c211
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_conversation_log_list_item.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="conversation_log_list_item">
+	<icon name="voice_session_icon" tool_tip="Sohbet ses dahil edildi"/>
+	<icon name="unread_ims_icon" tool_tip="Oturumunuz kapalıyken mesajlar geldi"/>
+	<button name="delete_btn" tool_tip="Bu girişi kaldır"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_group_list_item.xml b/indra/newview/skins/default/xui/tr/panel_group_list_item.xml
index 2bc597f2fa9..f44d2b5e762 100644
--- a/indra/newview/skins/default/xui/tr/panel_group_list_item.xml
+++ b/indra/newview/skins/default/xui/tr/panel_group_list_item.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="group_list_item">
 	<text name="group_name" value="Bilinmiyor"/>
+	<button name="info_btn" tool_tip="Ek bilgi"/>
 	<button name="profile_btn" tool_tip="Profili göster"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_people.xml b/indra/newview/skins/default/xui/tr/panel_people.xml
index 1a1e53bac20..08efd0aa616 100644
--- a/indra/newview/skins/default/xui/tr/panel_people.xml
+++ b/indra/newview/skins/default/xui/tr/panel_people.xml
@@ -14,81 +14,53 @@ Birlikte takılacak kişiler mi arıyorsunuz? [secondlife:///app/worldmap Dünya
 	<string name="no_filtered_friends_msg">
 		Aradığınızı bulamadınız mı? [secondlife:///app/search/people/[SEARCH_TERM] Ara] deneyin.
 	</string>
-	<string name="people_filter_label" value="KiÅŸileri Filtrele"/>
-	<string name="groups_filter_label" value="Grupları Filtrele"/>
 	<string name="no_filtered_groups_msg" value="Aradığınızı bulamadınız mı? [secondlife:///app/search/groups/[SEARCH_TERM] Ara] deneyin."/>
 	<string name="no_groups_msg" value="Katılacak Gruplar mı arıyorsunuz? [secondlife:///app/search/groups Ara] deneyin."/>
 	<string name="MiniMapToolTipMsg" value="[REGION](Haritayı açmak için çift tıkla, yatay hareket için shift çek)"/>
 	<string name="AltMiniMapToolTipMsg" value="[REGION](Işınlamak için çift tıkla, yatay hareket için shift çek)"/>
-	<filter_editor label="Filtrele" name="filter_input"/>
 	<tab_container name="tabs">
 		<panel label="YAKIN" name="nearby_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<menu_button name="nearby_view_sort_btn" tool_tip="Seçenklr."/>
-				<button name="add_friend_btn" tool_tip="Seçilen Sakini arkadaş listene ekle"/>
+			<panel label="bottom_panel" name="nearby_buttons_panel">
+				<filter_editor label="KiÅŸileri Filtrele" name="nearby_filter_input"/>
+				<button name="gear_btn" tool_tip="Seçilen kişi üzerindeki eylemler"/>
+				<menu_button name="nearby_view_btn" tool_tip="Gösterme/sıralama seçenekleri"/>
+				<button name="add_friend_btn" tool_tip="Bir sakine arkadaşlık öner"/>
+				<dnd_button name="nearby_del_btn" tool_tip="Seçilen kişiyi arkadaş olarak kaldır"/>
 			</panel>
 		</panel>
-		<panel label="ARKADAÅžLARIM" name="friends_panel">
+		<panel label="ARKADAÅžLAR" name="friends_panel">
+			<panel label="bottom_panel" name="friends_buttons_panel">
+				<filter_editor label="KiÅŸileri Filtrele" name="friends_filter_input"/>
+				<button name="gear_btn" tool_tip="Seçilen kişi üzerindeki eylemler"/>
+				<menu_button name="friends_view_btn" tool_tip="Seçenekleri göster/sırala"/>
+				<button name="friends_add_btn" tool_tip="Bir sakine arkadaşlık öner"/>
+				<dnd_button name="friends_del_btn" tool_tip="Seçilen kişiyi arkadaş olarak kaldır"/>
+			</panel>
 			<accordion name="friends_accordion">
 				<accordion_tab name="tab_online" title="Çevrimiçi"/>
 				<accordion_tab name="tab_all" title="Tümü"/>
 			</accordion>
-			<panel label="bottom_panel" name="bottom_panel">
-				<layout_stack name="bottom_panel">
-					<layout_panel name="options_gear_btn_panel">
-						<menu_button name="friends_viewsort_btn" tool_tip="İlave seçenekleri göster"/>
-					</layout_panel>
-					<layout_panel name="add_btn_panel">
-						<button name="add_btn" tool_tip="Bir Sakine arkadaşlık öner"/>
-					</layout_panel>
-					<layout_panel name="trash_btn_panel">
-						<dnd_button name="del_btn" tool_tip="Seçilen kişiyi arkadaş Listenden çıkar"/>
-					</layout_panel>
-				</layout_stack>
-			</panel>
 		</panel>
-		<panel label="GRUPLARIM" name="groups_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<menu_button name="groups_viewsort_btn" tool_tip="Seçenklr."/>
-				<button name="plus_btn" tool_tip="Gruba katıl/yeni grup oluştur"/>
-				<button name="activate_btn" tool_tip="Seçilen grubu etkinleştir"/>
+		<panel label="GRUPLAR" name="groups_panel">
+			<panel label="bottom_panel" name="groups_buttons_panel">
+				<filter_editor label="Grupları Filtrele" name="groups_filter_input"/>
+				<menu_button name="groups_gear_btn" tool_tip="Seçilen grup üzerindeki eylemler"/>
+				<menu_button name="groups_view_btn" tool_tip="Seçenekleri göster/sırala"/>
+				<menu_button name="plus_btn" tool_tip="Gruba katıl/yeni grup oluştur"/>
+				<dnd_button name="minus_btn" tool_tip="Seçilen gruptan ayrıl"/>
 			</panel>
 		</panel>
 		<panel label="SON" name="recent_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<menu_button name="recent_viewsort_btn" tool_tip="Seçenklr."/>
-				<button name="add_friend_btn" tool_tip="Seçilen Sakini arkadaş listene ekle"/>
+			<panel label="bottom_panel" name="recent_buttons_panel">
+				<filter_editor label="KiÅŸileri Filtrele" name="recent_filter_input"/>
+				<button name="gear_btn" tool_tip="Seçilen kişi üzerindeki eylemler"/>
+				<menu_button name="recent_view_btn" tool_tip="Seçenekleri göster/sırala"/>
+				<button name="add_friend_btn" tool_tip="Bir sakine arkadaşlık öner"/>
+				<dnd_button name="recent_del_btn" tool_tip="Seçilen kişiyi arkadaş olarak kaldır"/>
 			</panel>
 		</panel>
+		<panel label="ENGELLENMÄ°Åž" name="blocked_panel">
+			<panel label="EngellenmiÅŸ Sakinler ve Nesneler" name="panel_block_list_sidetray"/>
+		</panel>
 	</tab_container>
-	<panel name="button_bar">
-		<layout_stack name="bottom_bar_ls">
-			<layout_panel name="view_profile_btn_lp">
-				<button label="Profil" name="view_profile_btn" tool_tip="Resim, grup ve diğer Sakin bilgilerini göster"/>
-			</layout_panel>
-			<layout_panel name="im_btn_lp">
-				<button label="Aİ" name="im_btn" tool_tip="Anlık ileti oturumu aç"/>
-			</layout_panel>
-			<layout_panel name="call_btn_lp">
-				<button label="Ara" name="call_btn" tool_tip="Bu Sakini ara"/>
-			</layout_panel>
-			<layout_panel name="share_btn_lp">
-				<button label="Paylaş" name="share_btn" tool_tip="Bir envanter öğesini paylaş"/>
-			</layout_panel>
-			<layout_panel name="teleport_btn_lp">
-				<button label="Işınla" name="teleport_btn" tool_tip="Işınlama teklif et"/>
-			</layout_panel>
-		</layout_stack>
-		<layout_stack name="bottom_bar_ls1">
-			<layout_panel name="group_info_btn_lp">
-				<button label="Grup Profili" name="group_info_btn" tool_tip="Grup bilgilerini göster"/>
-			</layout_panel>
-			<layout_panel name="chat_btn_lp">
-				<button label="Grup Sohbeti" name="chat_btn" tool_tip="Sohbet oturumu aç"/>
-			</layout_panel>
-			<layout_panel name="group_call_btn_lp">
-				<button label="Grup Araması" name="group_call_btn" tool_tip="Bu grubu ara"/>
-			</layout_panel>
-		</layout_stack>
-	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_preferences_chat.xml b/indra/newview/skins/default/xui/tr/panel_preferences_chat.xml
index 231e8fc5fe8..aaeebdfe6e8 100644
--- a/indra/newview/skins/default/xui/tr/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/tr/panel_preferences_chat.xml
@@ -1,34 +1,86 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Metin Sohbeti" name="chat">
-	<text name="font_size">
-		Font büyüklüğü:
-	</text>
-	<radio_group name="chat_font_size">
-		<radio_item label="Küçük" name="radio" value="0"/>
-		<radio_item label="Orta" name="radio2" value="1"/>
-		<radio_item label="Büyük" name="radio3" value="2"/>
-	</radio_group>
-	<check_box initial_value="true" label="Sohbet sırasında yazma animasyonunu oynat" name="play_typing_animation"/>
-	<check_box label="Çevrimdışı olduğunda Aİ&apos;ler e-posta ile bana gönderilsin" name="send_im_to_email"/>
-	<check_box label="Düz metin Aİ&apos;ler ve sohbet geçmişini etkinleştir" name="plain_text_chat_history"/>
-	<check_box label="Balon Sohbeti" name="bubble_text_chat"/>
-	<text name="show_ims_in_label">
-		Aİ&apos;leri şurada göster:
-	</text>
-	<text name="requires_restart_label">
-		(tekrar baÅŸlatma gerekir)
-	</text>
-	<radio_group name="chat_window" tool_tip="Anlık İletileri ayrı gezdiricilerde veya çoklu sekmelere sahip tek bir gezdiricide gösterin (tekrar başlatma gerekir)">
-		<radio_item label="Ayrı Pencereler" name="radio" value="0"/>
-		<radio_item label="Sekmeler" name="radio2" value="1"/>
-	</radio_group>
-	<text name="disable_toast_label">
-		Gelen sohbet için açılır pencereleri etkinleştir:
-	</text>
-	<check_box label="Grup Sohbetleri" name="EnableGroupChatPopups" tool_tip="Bir Grup Sohbet iletisi gönderildiğinde açılır pencereleri görmek için işaretle"/>
-	<check_box label="Aİ Sohbetleri" name="EnableIMChatPopups" tool_tip="Bir anlık ileti geldiğinde açılır pencereleri görmek için işaretle"/>
-	<spinner label="Yakındaki sohbet iletilerinin vurgulanma süresi:" name="nearby_toasts_lifetime"/>
-	<spinner label="Yakındaki sohbet iletilerinin sönme süresi:" name="nearby_toasts_fadingtime"/>
+	<panel>
+		<check_box initial_value="true" label="Sohbet sırasında yazma animasyonunu oynat" name="play_typing_animation"/>
+		<check_box label="Çevrimdışı olduğunda Aİ&apos;ler e-posta ile bana gönderilsin" name="send_im_to_email"/>
+		<check_box label="Sadece arkadaşlar ve gruplar beni arasın veya Aİ göndersin" name="voice_call_friends_only_check"/>
+		<text name="font_size">
+			Font büyüklüğü:
+		</text>
+		<combo_box name="chat_font_size">
+			<item label="Küçük" name="Small" value="0"/>
+			<item label="Orta" name="Medium" value="1"/>
+			<item label="Büyük" name="Large" value="2"/>
+		</combo_box>
+		<check_box label="Balon Sohbeti" name="bubble_text_chat"/>
+	</panel>
+	<panel>
+		<text name="notifications">
+			Bildirimler
+		</text>
+		<text name="friend_ims">
+			ArkadaÅŸ AÄ°&apos;leri:
+		</text>
+		<combo_box name="FriendIMOptions">
+			<item label="Sohbetler penceresini aç" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Mesajı aç" name="PopUpMessage" value="toast"/>
+			<item label="Araç çubuğu düğmesi yanıp sönsün" name="FlashToolbarButton" value="flash"/>
+			<item label="Hiçbiri" name="None" value="none"/>
+		</combo_box>
+		<text name="non_friend_ims">
+			ArkadaÅŸ harici AÄ°&apos;ler:
+		</text>
+		<combo_box name="NonFriendIMOptions">
+			<item label="Sohbetler penceresini aç" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Mesajı açılır pencerede göster" name="PopUpMessage" value="toast"/>
+			<item label="Araç çubuğu düğmesi yanıp sönsün" name="FlashToolbarButton" value="flash"/>
+			<item label="Hiçbiri" name="None" value="none"/>
+		</combo_box>
+		<text name="conference_ims">
+			Konferans AÄ°&apos;leri:
+		</text>
+		<combo_box name="ConferenceIMOptions">
+			<item label="Sohbetler penceresini aç" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Mesajı aç" name="PopUpMessage" value="toast"/>
+			<item label="Araç çubuğu düğmesi yanıp sönsün" name="FlashToolbarButton" value="flash"/>
+			<item label="Hiçbiri" name="None" value="none"/>
+		</combo_box>
+		<text name="group_chat">
+			Grup sohbeti:
+		</text>
+		<combo_box name="GroupChatOptions">
+			<item label="Sohbetler penceresini aç" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Mesajı aç" name="PopUpMessage" value="toast"/>
+			<item label="Araç çubuğu düğmesi yanıp sönsün" name="FlashToolbarButton" value="flash"/>
+			<item label="Hiçbiri" name="None" value="none"/>
+		</combo_box>
+		<text name="nearby_chat">
+			Yakındaki sohbet:
+		</text>
+		<combo_box name="NearbyChatOptions">
+			<item label="Sohbetler penceresini aç" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="Mesajı aç" name="PopUpMessage" value="toast"/>
+			<item label="Araç çubuğu düğmesi yanıp sönsün" name="FlashToolBarButton" value="flash"/>
+			<item label="Hiçbiri" name="None" value="none"/>
+		</combo_box>
+		<text name="notifications_alert">
+			Tüm bildirimleri geçici olarak durdurmak için İletişim Kur &gt; Rahatsız Etme seçeneğini kullanın.
+		</text>
+	</panel>
+	<panel>
+		<text name="play_sound">
+			Sesi çal:
+		</text>
+		<check_box label="Yeni sohbet" name="new_conversation"/>
+		<check_box label="Gelen sesli arama" name="incoming_voice_call"/>
+		<check_box label="Işınlama teklifi" name="teleport_offer"/>
+		<check_box label="Envanter teklifi" name="inventory_offer"/>
+	</panel>
+	<panel>
+		<button label="Günlüğü temizle..." name="clear_log"/>
+		<button label="Dökümleri sil..." name="delete_transcripts"/>
+		<button label="Gözat..." label_selected="Gözat" name="log_path_button"/>
+	</panel>
 	<button label="Çeviri..." name="ok_btn"/>
 	<button label="Otomatik Yerine Koy..." name="autoreplace_showgui"/>
 	<button label="Yazım Denetimi Yapılıyor..." name="spellcheck_showgui"/>
diff --git a/indra/newview/skins/default/xui/tr/panel_preferences_general.xml b/indra/newview/skins/default/xui/tr/panel_preferences_general.xml
index 4a48b1588c1..1a13cf8f717 100644
--- a/indra/newview/skins/default/xui/tr/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/tr/panel_preferences_general.xml
@@ -68,9 +68,9 @@
 		<combo_box.item label="asla" name="item4"/>
 	</combo_box>
 	<text name="text_box3">
-		Meşgul durumu cevabı:
+		Rahatsız Etme yanıtı:
 	</text>
-	<text_editor name="busy_response">
+	<text_editor name="do_not_disturb_response">
 		log_in_to_change
 	</text_editor>
 </panel>
diff --git a/indra/newview/skins/default/xui/tr/sidepanel_task_info.xml b/indra/newview/skins/default/xui/tr/sidepanel_task_info.xml
index b0b9ab77169..9a4cf54fa79 100644
--- a/indra/newview/skins/default/xui/tr/sidepanel_task_info.xml
+++ b/indra/newview/skins/default/xui/tr/sidepanel_task_info.xml
@@ -72,6 +72,7 @@
 			<combo_box.item label="Nesneyi satın al" name="Buyobject"/>
 			<combo_box.item label="Nesneye ödeme yap" name="Payobject"/>
 			<combo_box.item label="Aç" name="Open"/>
+			<combo_box.item label="Yakınlaştır" name="Zoom"/>
 		</combo_box>
 		<panel name="perms_inv">
 			<text name="perm_modify">
diff --git a/indra/newview/skins/default/xui/tr/strings.xml b/indra/newview/skins/default/xui/tr/strings.xml
index 1be8f5974c7..155dc8749a0 100644
--- a/indra/newview/skins/default/xui/tr/strings.xml
+++ b/indra/newview/skins/default/xui/tr/strings.xml
@@ -137,7 +137,7 @@
 		Çık
 	</string>
 	<string name="create_account_url">
-		http://join.secondlife.com/index.php?lang=tr-TR&amp;sourceid=[sourceid]
+		http://join.secondlife.com/?sourceid=[sourceid]
 	</string>
 	<string name="LoginFailedViewerNotPermitted">
 		Kullandığınız görüntüleyici ile artık Second Life&apos;a erişemezsiniz. Yeni bir görüntüleyiciyi karşıdan yüklemek için lütfen şu sayfayı ziyaret edin:
@@ -619,8 +619,8 @@ Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin.
 	<string name="AvatarAway">
 		Uzakta
 	</string>
-	<string name="AvatarBusy">
-		MeÅŸgul
+	<string name="AvatarDoNotDisturb">
+		Rahatsız Etme
 	</string>
 	<string name="AvatarMuted">
 		EngellenmiÅŸ
@@ -856,6 +856,12 @@ Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin.
 	<string name="ST_NO_JOINT">
 		KÖK veya EKLEM bulunamıyor.
 	</string>
+	<string name="NearbyChatTitle">
+		Yakındaki sohbet
+	</string>
+	<string name="NearbyChatLabel">
+		(Yakındaki sohbet)
+	</string>
 	<string name="whisper">
 		fısıldar:
 	</string>
@@ -919,12 +925,15 @@ Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin.
 	<string name="ControlYourCamera">
 		Kameranızı kontrol etmek
 	</string>
-	<string name="TeleportYourAgent">
-		Sizi ışınlama
-	</string>
 	<string name="NotConnected">
 		Bağlı Değil
 	</string>
+	<string name="AgentNameSubst">
+		(Siz)
+	</string>
+	<string name="TeleportYourAgent">
+		Sizi ışınlama
+	</string>
 	<string name="SIM_ACCESS_PG">
 		Genel
 	</string>
@@ -1006,18 +1015,6 @@ Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin.
 	<string name="dictionary_files">
 		Sözlükler
 	</string>
-	<string name="AvatarSetNotAway">
-		Uzakta DeÄŸil
-	</string>
-	<string name="AvatarSetAway">
-		Uzakta
-	</string>
-	<string name="AvatarSetNotBusy">
-		MeÅŸgul DeÄŸil
-	</string>
-	<string name="AvatarSetBusy">
-		MeÅŸgul
-	</string>
 	<string name="shape">
 		Åžekil
 	</string>
@@ -1986,8 +1983,8 @@ Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin.
 	<string name="PanelContentsNewScript">
 		Yeni Komut Dosyası
 	</string>
-	<string name="BusyModeResponseDefault">
-		İleti gönderdiğiniz Sakin &apos;meşgul modu&apos;nda, bu da rahatsız edilmek istemediği anlamına geliyor.  İletiniz daha sonra incelenmesi için kendisine ait Aİ panelinde gösterilecektir.
+	<string name="DoNotDisturbModeResponseDefault">
+		Bu sakin &quot;Rahatsız Etme&quot; seçeneğini devreye almış, mesajınızı sonra görecek.
 	</string>
 	<string name="MuteByName">
 		(Adına göre)
@@ -2100,9 +2097,6 @@ Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin.
 	<string name="GroupMoneyDate">
 		[weekday,datetime,utc] [mth,datetime,utc] [day,datetime,utc], [year,datetime,utc]
 	</string>
-	<string name="ViewerObjectContents">
-		İçerik
-	</string>
 	<string name="AcquiredItems">
 		Alınan Öğeler
 	</string>
@@ -3874,7 +3868,7 @@ Bu iletiyi almaya devam ederseniz, lütfen [SUPPORT_SITE] bölümüne başvurun.
 		Genel Bölge
 	</string>
 	<string name="LocationCtrlSeeAVsTooltip">
-		Bu parselin dışında avatarlar görünür durumda ve sohbete izin veriliyor
+		Bu parselin içindeki avatarlar, bu parselin dışındaki avatarlar tarafından görülemez veya işitilemez
 	</string>
 	<string name="LocationCtrlPathfindingDirtyTooltip">
 		Bölge yeniden kaydedilinceye kadar hareket eden nesneler bu bölgede doğru davranmayabilir.
@@ -3951,6 +3945,12 @@ Bu iletiyi almaya devam ederseniz, lütfen [SUPPORT_SITE] bölümüne başvurun.
 	<string name="IM_unblock_only_groups_friends">
 		Bu mesajı görmek için Tercihler/Gizlilik&apos;de &apos;Sadece arkadaşlar ve gruplar beni arasın veya Aİ göndersin&apos; seçeneğinin işaretini kaldırmalısınız.
 	</string>
+	<string name="OnlineStatus">
+		Çevrimiçi
+	</string>
+	<string name="OfflineStatus">
+		Çevrimdışı
+	</string>
 	<string name="answered_call">
 		Aramanız yanıtlandı
 	</string>
@@ -3960,6 +3960,9 @@ Bu iletiyi almaya devam ederseniz, lütfen [SUPPORT_SITE] bölümüne başvurun.
 	<string name="you_joined_call">
 		Sesli aramaya katıldınız
 	</string>
+	<string name="you_auto_rejected_call-im">
+		&quot;Rahatsız Etme&quot; seçeneğini devredeyken sesli aramayı otomatik olarak reddettiniz.
+	</string>
 	<string name="name_started_call">
 		[NAME] bir sesli arama başlattı
 	</string>
@@ -3976,7 +3979,7 @@ Bu iletiyi almaya devam ederseniz, lütfen [SUPPORT_SITE] bölümüne başvurun.
 		Bağlanıyor...
 	</string>
 	<string name="conference-title">
-		Özel Konferans
+		Çok kişili sohbet
 	</string>
 	<string name="conference-title-incoming">
 		[AGENT_NAME] ile konferans
@@ -4866,6 +4869,9 @@ Düzenleyici yolunu çift tırnakla çevrelemeyi deneyin.
 	<string name="Command_Chat_Label">
 		Sohbet
 	</string>
+	<string name="Command_Conversations_Label">
+		Sohbetler
+	</string>
 	<string name="Command_Compass_Label">
 		Pusula
 	</string>
@@ -4941,6 +4947,9 @@ Düzenleyici yolunu çift tırnakla çevrelemeyi deneyin.
 	<string name="Command_Chat_Tooltip">
 		Metin kullanarak yakındaki kişilerle sohbet etmek
 	</string>
+	<string name="Command_Conversations_Tooltip">
+		Herkesle sohbet et
+	</string>
 	<string name="Command_Compass_Tooltip">
 		Pusula
 	</string>
@@ -5070,4 +5079,13 @@ Düzenleyici yolunu çift tırnakla çevrelemeyi deneyin.
 	<string name="UserDictionary">
 		[User]
 	</string>
+	<string name="logging_calls_disabled_log_empty">
+		Sohbetlerin günlüğü tutulmuyor. Bir günlük tutmaya başlamak için, Tercihler &gt; Sohbet altında &quot;Kaydet: Sadece günlük&quot; veya &quot;Kaydet: Günlük ve dökümler&quot; seçimini yapın.
+	</string>
+	<string name="logging_calls_disabled_log_not_empty">
+		Bundan böyle sohbetlerin günlükleri tutulmayacak. Bir günlük tutmaya devam etmek için, Tercihler &gt; Sohbet altında &quot;Kaydet: Sadece günlük&quot; veya &quot;Kaydet: Günlük ve dökümler&quot; seçimini yapın.
+	</string>
+	<string name="logging_calls_enabled_log_empty">
+		Günlüğü tutulmuş sohbet yok. Siz biriyle iletişime geçtikten sonra veya biri sizinle iletişime geçtikten sonra, burada bir günlük girişi gösterilir.
+	</string>
 </strings>
diff --git a/indra/newview/skins/default/xui/zh/floater_conversation_log.xml b/indra/newview/skins/default/xui/zh/floater_conversation_log.xml
new file mode 100644
index 00000000000..37115a0310e
--- /dev/null
+++ b/indra/newview/skins/default/xui/zh/floater_conversation_log.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_conversation_log" title="交談記錄">
+	<panel name="buttons_panel">
+		<filter_editor label="人員過濾器" name="people_filter_input"/>
+		<menu_button name="conversation_view_btn" tool_tip="檢視/排序的選項"/>
+		<menu_button name="conversations_gear_btn" tool_tip="對所選的人或群組採取動作"/>
+	</panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/zh/floater_conversation_preview.xml b/indra/newview/skins/default/xui/zh/floater_conversation_preview.xml
new file mode 100644
index 00000000000..ece263f440d
--- /dev/null
+++ b/indra/newview/skins/default/xui/zh/floater_conversation_preview.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="preview_conversation" title="交談:">
+	<floater.string name="Title">
+		交談:[NAME]
+	</floater.string>
+	<text name="page_label" value="頁"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/zh/floater_im_container.xml b/indra/newview/skins/default/xui/zh/floater_im_container.xml
index 2d66c659fe8..84ad869100c 100644
--- a/indra/newview/skins/default/xui/zh/floater_im_container.xml
+++ b/indra/newview/skins/default/xui/zh/floater_im_container.xml
@@ -1,2 +1,29 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<multi_floater name="floater_im_box" title="交談"/>
+<multi_floater name="floater_im_box" title="交談">
+	<string name="collapse_icon" value="Conv_toolbar_collapse"/>
+	<string name="expand_icon" value="Conv_toolbar_expand"/>
+	<layout_stack name="conversations_stack">
+		<layout_panel name="conversations_layout_panel">
+			<layout_stack name="conversations_pane_buttons_stack">
+				<layout_panel name="conversations_pane_buttons_expanded">
+					<menu_button name="sort_btn" tool_tip="檢視/排序的選項"/>
+					<button name="add_btn" tool_tip="開始新的交談"/>
+					<button name="speak_btn" tool_tip="用麥克風和大家交談"/>
+				</layout_panel>
+				<layout_panel name="conversations_pane_buttons_collapsed">
+					<button name="expand_collapse_btn" tool_tip="縮疊/展開這個清單"/>
+				</layout_panel>
+			</layout_stack>
+		</layout_panel>
+		<layout_panel name="messages_layout_panel">
+			<panel_container name="im_box_tab_container">
+				<panel name="stub_panel">
+					<button name="stub_collapse_btn" tool_tip="縮疊這一區塊"/>
+					<text name="stub_textbox">
+						這個交談另開了新視窗。   [secondlife:/// 把它收回來]
+					</text>
+				</panel>
+			</panel_container>
+		</layout_panel>
+	</layout_stack>
+</multi_floater>
diff --git a/indra/newview/skins/default/xui/zh/floater_im_session.xml b/indra/newview/skins/default/xui/zh/floater_im_session.xml
index 808a0b6720d..d63c5507db7 100644
--- a/indra/newview/skins/default/xui/zh/floater_im_session.xml
+++ b/indra/newview/skins/default/xui/zh/floater_im_session.xml
@@ -1,8 +1,59 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="panel_im">
-	<layout_stack name="im_panels">
-		<layout_panel>
-			<line_editor label="至" name="chat_editor"/>
-		</layout_panel>
-	</layout_stack>
+	<floater.string name="call_btn_start">
+		Conv_toolbar_open_call
+	</floater.string>
+	<floater.string name="call_btn_stop">
+		Conv_toolbar_hang_up
+	</floater.string>
+	<floater.string name="collapseline_icon" value="Conv_collapse_to_one_line"/>
+	<floater.string name="expandline_icon" value="Conv_expand_one_line"/>
+	<floater.string name="collapse_icon" value="Conv_toolbar_collapse"/>
+	<floater.string name="expand_icon" value="Conv_toolbar_expand"/>
+	<floater.string name="tear_off_icon" value="Conv_toolbar_arrow_ne"/>
+	<floater.string name="return_icon" value="Conv_toolbar_arrow_sw"/>
+	<floater.string name="participant_added" value="[NAME] 已受邀加入交談。"/>
+	<floater.string name="multiple_participants_added" value="[NAME] 已受邀加入交談。"/>
+	<floater.string name="tooltip_to_separate_window" value="為這個交談另開新視窗"/>
+	<floater.string name="tooltip_to_main_window" value="將這個交談移回到主視窗"/>
+	<floater.string name="start_call_button_tooltip" value="建立語音通聯"/>
+	<floater.string name="end_call_button_tooltip" value="切斷語音通聯"/>
+	<floater.string name="expcol_button_not_tearoff_tooltip" value="縮疊這一區塊"/>
+	<floater.string name="expcol_button_tearoff_and_expanded_tooltip" value="縮疊參與者清單"/>
+	<floater.string name="expcol_button_tearoff_and_collapsed_tooltip" value="展開參與者清單"/>
+	<view name="contents_view">
+		<layout_stack name="main_stack">
+			<layout_panel name="toolbar_panel">
+				<menu_button name="view_options_btn" tool_tip="檢視/排序的選項"/>
+				<menu_button name="gear_btn" tool_tip="對選取的人採取動作"/>
+				<button name="add_btn" tool_tip="新增某人到這個交談"/>
+				<button name="voice_call_btn" tool_tip="建立語音通聯"/>
+				<button name="close_btn" tool_tip="結束這個交談"/>
+				<button name="expand_collapse_btn" tool_tip="縮疊/展開這個框"/>
+			</layout_panel>
+			<layout_panel name="body_panel">
+				<layout_stack name="im_panels">
+					<layout_panel name="right_part_holder">
+						<panel name="trnsAndChat_panel">
+							<layout_stack name="translate_and_chat_stack">
+								<layout_panel name="translate_chat_checkbox_lp">
+									<check_box label="翻譯聊天內容" name="translate_chat_checkbox"/>
+								</layout_panel>
+							</layout_stack>
+						</panel>
+					</layout_panel>
+				</layout_stack>
+			</layout_panel>
+			<layout_panel name="chat_layout_panel">
+				<layout_stack name="input_panels">
+					<layout_panel name="input_editor_layout_panel">
+						<chat_editor label="至" name="chat_editor"/>
+					</layout_panel>
+					<layout_panel name="input_button_layout_panel">
+						<button name="minz_btn" tool_tip="顯示/隱藏訊息框"/>
+					</layout_panel>
+				</layout_stack>
+			</layout_panel>
+		</layout_stack>
+	</view>
 </floater>
diff --git a/indra/newview/skins/default/xui/zh/floater_incoming_call.xml b/indra/newview/skins/default/xui/zh/floater_incoming_call.xml
index 45a003d3c88..4526eff21d8 100644
--- a/indra/newview/skins/default/xui/zh/floater_incoming_call.xml
+++ b/indra/newview/skins/default/xui/zh/floater_incoming_call.xml
@@ -25,9 +25,9 @@
 		是否離開 [CURRENT_CHAT] 並加入這個語音聊天?
 	</floater.string>
 	<text name="question">
-		是否離開 [CURRENT_CHAT] 並加入這個語音聊天?
+		如果接聽,你將切斷目前的語音交談。
 	</text>
-	<button label="接受" label_selected="接受" name="Accept"/>
-	<button label="拒絕" label_selected="拒絕" name="Reject"/>
-	<button label="開始 IM" name="Start IM"/>
+	<button label="接聽" label_selected="接聽" name="Accept"/>
+	<button label="忽視" label_selected="忽視" name="Reject"/>
+	<button label="不接聽但開啟 IM" name="Start IM"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/zh/floater_pathfinding_console.xml b/indra/newview/skins/default/xui/zh/floater_pathfinding_console.xml
index be009b54d88..d0978b8b010 100644
--- a/indra/newview/skins/default/xui/zh/floater_pathfinding_console.xml
+++ b/indra/newview/skins/default/xui/zh/floater_pathfinding_console.xml
@@ -71,7 +71,7 @@
 			<text name="show_label">
 				顯示:
 			</text>
-			<check_box label="世界" name="show_world"/>
+			<check_box label="測試" name="show_world"/>
 			<check_box label="僅限可移動的" name="show_world_movables_only"/>
 			<check_box label="導航網面" name="show_navmesh"/>
 			<text name="show_walkability_label">
diff --git a/indra/newview/skins/default/xui/zh/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/zh/floater_texture_ctrl.xml
index e909a67e2c6..02d06323d47 100644
--- a/indra/newview/skins/default/xui/zh/floater_texture_ctrl.xml
+++ b/indra/newview/skins/default/xui/zh/floater_texture_ctrl.xml
@@ -19,7 +19,7 @@
 	<button label="預設" label_selected="預設" name="Default"/>
 	<button label="空白" label_selected="空白" name="Blank"/>
 	<button label="ç„¡" label_selected="ç„¡" name="None"/>
-	<check_box initial_value="true" label="實時預覽" name="apply_immediate_check"/>
+	<check_box initial_value="true" label="立即套用" name="apply_immediate_check"/>
 	<text name="preview_disabled" value="已停用預覽"/>
 	<filter_editor label="材質過濾器" name="inventory search editor"/>
 	<check_box initial_value="false" label="顯示資料夾" name="show_folders_check"/>
diff --git a/indra/newview/skins/default/xui/zh/floater_voice_chat_volume.xml b/indra/newview/skins/default/xui/zh/floater_voice_chat_volume.xml
new file mode 100644
index 00000000000..96caa7d3334
--- /dev/null
+++ b/indra/newview/skins/default/xui/zh/floater_voice_chat_volume.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_voice_volume" title="語音聊天音量">
+	<slider label="語音聊天" name="chat_voice_volume"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/zh/floater_voice_effect.xml b/indra/newview/skins/default/xui/zh/floater_voice_effect.xml
index 81e0204262e..aab5fa60289 100644
--- a/indra/newview/skins/default/xui/zh/floater_voice_effect.xml
+++ b/indra/newview/skins/default/xui/zh/floater_voice_effect.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater label="地點" name="voice_effects" title="語音變聲">
+<floater label="地點" name="voice_effects" title="語音變聲試聽">
 	<string name="no_voice_effect">
 		(無變聲效果)
 	</string>
diff --git a/indra/newview/skins/default/xui/zh/floater_voice_volume.xml b/indra/newview/skins/default/xui/zh/floater_voice_volume.xml
new file mode 100644
index 00000000000..4260a8d3314
--- /dev/null
+++ b/indra/newview/skins/default/xui/zh/floater_voice_volume.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!--
+  Not can_close / no title to avoid window chrome
+  Single instance - only have one at a time, recycle it each spawn
+-->
+<floater name="floater_voice_volume" title="音量">
+	<slider name="volume_slider" tool_tip="音量" value="0.5"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/zh/menu_cof_gear.xml b/indra/newview/skins/default/xui/zh/menu_cof_gear.xml
index cd069f96017..eb7093a23c9 100644
--- a/indra/newview/skins/default/xui/zh/menu_cof_gear.xml
+++ b/indra/newview/skins/default/xui/zh/menu_cof_gear.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu name="Gear COF">
 	<menu label="新衣服" name="COF.Gear.New_Clothes"/>
-	<menu label="新身體部位" name="COF.Geear.New_Body_Parts"/>
+	<menu label="新身體部位" name="COF.Gear.New_Body_Parts"/>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_conversation.xml b/indra/newview/skins/default/xui/zh/menu_conversation.xml
new file mode 100644
index 00000000000..507255d0c04
--- /dev/null
+++ b/indra/newview/skins/default/xui/zh/menu_conversation.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_conversation_participant">
+	<menu_item_call label="關閉交談" name="close_conversation"/>
+	<menu_item_call label="開啟語音交談" name="open_voice_conversation"/>
+	<menu_item_call label="切斷語音交談" name="disconnect_from_voice"/>
+	<menu_item_call label="察看檔案" name="view_profile"/>
+	<menu_item_call label="IM" name="im"/>
+	<menu_item_call label="發出瞬間傳送邀請" name="offer_teleport"/>
+	<menu_item_call label="語音通話" name="voice_call"/>
+	<menu_item_call label="聊天歷史……" name="chat_history"/>
+	<menu_item_call label="新增朋友" name="add_friend"/>
+	<menu_item_call label="移除朋友" name="remove_friend"/>
+	<menu_item_call label="移除朋友" name="remove_friends"/>
+	<menu_item_call label="邀請加入群組……" name="invite_to_group"/>
+	<menu_item_call label="放大" name="zoom_in"/>
+	<menu_item_call label="地圖" name="map"/>
+	<menu_item_call label="分享" name="share"/>
+	<menu_item_call label="支付" name="pay"/>
+	<menu_item_check label="禁止語音" name="block_unblock"/>
+	<menu_item_check label="禁止文字" name="MuteText"/>
+	<menu_item_call label="群組檔案" name="group_profile"/>
+	<menu_item_call label="啟用群組" name="activate_group"/>
+	<menu_item_call label="離開群組" name="leave_group"/>
+	<context_menu label="主持人選項" name="Moderator Options">
+		<menu_item_check label="允許文字聊天" name="AllowTextChat"/>
+		<menu_item_call label="將此人消音" name="ModerateVoiceMuteSelected"/>
+		<menu_item_call label="取消對此人的消音" name="ModerateVoiceUnMuteSelected"/>
+		<menu_item_call label="所有人消音" name="ModerateVoiceMute"/>
+		<menu_item_call label="取消所有人的消音" name="ModerateVoiceUnmute"/>
+	</context_menu>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_conversation_log_gear.xml b/indra/newview/skins/default/xui/zh/menu_conversation_log_gear.xml
new file mode 100644
index 00000000000..49e91417e89
--- /dev/null
+++ b/indra/newview/skins/default/xui/zh/menu_conversation_log_gear.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Conversation Context Menu">
+	<menu_item_call label="IM…" name="IM"/>
+	<menu_item_call label="語音通話…" name="Call"/>
+	<menu_item_call label="開啟聊天歷史…" name="Chat history"/>
+	<menu_item_call label="察看檔案" name="View Profile"/>
+	<menu_item_call label="發給瞬間傳送請求" name="teleport"/>
+	<menu_item_call label="加為朋友" name="add_friend"/>
+	<menu_item_call label="移除朋友" name="remove_friend"/>
+	<menu_item_call label="邀請加入群組……" name="Invite"/>
+	<menu_item_call label="地圖" name="Map"/>
+	<menu_item_call label="分享" name="Share"/>
+	<menu_item_call label="支付" name="Pay"/>
+	<menu_item_check label="封鎖/不再封鎖" name="Block/Unblock"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_conversation_log_view.xml b/indra/newview/skins/default/xui/zh/menu_conversation_log_view.xml
new file mode 100644
index 00000000000..3fa99a5cd7b
--- /dev/null
+++ b/indra/newview/skins/default/xui/zh/menu_conversation_log_view.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_conversation_view">
+	<menu_item_check label="依名稱排序" name="sort_by_name"/>
+	<menu_item_check label="依日期排序" name="sort_by_date"/>
+	<menu_item_check label="將朋友列在頂端" name="sort_by_friends"/>
+	<menu_item_call label="檢視附近聊天歷史……" name="view_nearby_chat_history"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_im_conversation.xml b/indra/newview/skins/default/xui/zh/menu_im_conversation.xml
new file mode 100644
index 00000000000..815b0b594cc
--- /dev/null
+++ b/indra/newview/skins/default/xui/zh/menu_im_conversation.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Conversation Gear Menu">
+	<menu_item_call label="察看檔案" name="View Profile"/>
+	<menu_item_call label="加為朋友" name="Add Friend"/>
+	<menu_item_call label="移除朋友" name="remove_friend"/>
+	<menu_item_call label="發出瞬間傳送邀請" name="offer_teleport"/>
+	<menu_item_call label="邀請加入群組……" name="invite_to_group"/>
+	<menu_item_call label="聊天歷史……" name="chat_history"/>
+	<menu_item_call label="放大" name="zoom_in"/>
+	<menu_item_call label="地圖" name="map"/>
+	<menu_item_call label="分享" name="Share"/>
+	<menu_item_call label="支付" name="Pay"/>
+	<menu_item_check label="禁止語音" name="Block/Unblock"/>
+	<menu_item_check label="禁止文字" name="MuteText"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_im_session_showmodes.xml b/indra/newview/skins/default/xui/zh/menu_im_session_showmodes.xml
new file mode 100644
index 00000000000..a7006e524a3
--- /dev/null
+++ b/indra/newview/skins/default/xui/zh/menu_im_session_showmodes.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_modes">
+	<menu_item_check label="精簡視野" name="compact_view"/>
+	<menu_item_check label="全展視野" name="expanded_view"/>
+	<menu_item_check label="顯示時間" name="IMShowTime"/>
+	<menu_item_check label="一對一交談時顯示名字" name="IMShowNamesForP2PConv"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_object_icon.xml b/indra/newview/skins/default/xui/zh/menu_object_icon.xml
index f4f93b0bdc2..9655732f2e0 100644
--- a/indra/newview/skins/default/xui/zh/menu_object_icon.xml
+++ b/indra/newview/skins/default/xui/zh/menu_object_icon.xml
@@ -2,4 +2,6 @@
 <menu name="Object Icon Menu">
 	<menu_item_call label="物件檔案..." name="Object Profile"/>
 	<menu_item_call label="封鎖…" name="Block"/>
+	<menu_item_call label="顯示在地圖上" name="show_on_map"/>
+	<menu_item_call label="瞬間傳送到物件位置" name="teleport_to_object"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_outfit_gear.xml b/indra/newview/skins/default/xui/zh/menu_outfit_gear.xml
index e85b4b71821..258d0d6b20e 100644
--- a/indra/newview/skins/default/xui/zh/menu_outfit_gear.xml
+++ b/indra/newview/skins/default/xui/zh/menu_outfit_gear.xml
@@ -23,6 +23,8 @@
 		<menu_item_call label="æ–°é ­é«®" name="New Hair"/>
 		<menu_item_call label="新眼睛" name="New Eyes"/>
 	</menu>
+	<menu_item_call label="展開全部資料夾" name="expand"/>
+	<menu_item_call label="摺疊全部資料夾" name="collapse"/>
 	<menu_item_call label="裝扮更名" name="rename"/>
 	<menu_item_call label="刪除裝扮" name="delete_outfit"/>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_participant_view.xml b/indra/newview/skins/default/xui/zh/menu_participant_view.xml
new file mode 100644
index 00000000000..8b35860eb60
--- /dev/null
+++ b/indra/newview/skins/default/xui/zh/menu_participant_view.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="participant_manu_view">
+	<menu_item_check label="將交談依類型排序" name="sort_sessions_by_type"/>
+	<menu_item_check label="將交談依名字排序" name="sort_sessions_by_name"/>
+	<menu_item_check label="將交談依最近活動排序" name="sort_sessions_by_recent"/>
+	<menu_item_check label="將參與者依名字排序" name="sort_participants_by_name"/>
+	<menu_item_check label="將參與者依最近活動排序" name="sort_participants_by_recent"/>
+	<menu_item_call label="聊天偏好設定……" name="chat_preferences"/>
+	<menu_item_call label="隱私偏好設定……" name="privacy_preferences"/>
+	<menu_item_check label="交談記錄……" name="Conversation"/>
+	<menu_item_check label="翻譯附近的聊天" name="Translate_chat"/>
+	<menu_item_check label="翻譯設定……" name="Translation_settings"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_people_blocked_gear.xml b/indra/newview/skins/default/xui/zh/menu_people_blocked_gear.xml
new file mode 100644
index 00000000000..9a2a3c403d5
--- /dev/null
+++ b/indra/newview/skins/default/xui/zh/menu_people_blocked_gear.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_blocked_gear">
+	<menu_item_call label="解除封鎖" name="unblock"/>
+	<menu_item_call label="檔案..." name="profile"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_people_blocked_plus.xml b/indra/newview/skins/default/xui/zh/menu_people_blocked_plus.xml
new file mode 100644
index 00000000000..a8cecb4e147
--- /dev/null
+++ b/indra/newview/skins/default/xui/zh/menu_people_blocked_plus.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_blocked_plus">
+	<menu_item_call label="按名字封鎖居民……" name="block_resident_by_name"/>
+	<menu_item_call label="依名稱封鎖物件" name="block_object_by_name"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_people_blocked_view.xml b/indra/newview/skins/default/xui/zh/menu_people_blocked_view.xml
new file mode 100644
index 00000000000..5b70cd35bff
--- /dev/null
+++ b/indra/newview/skins/default/xui/zh/menu_people_blocked_view.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_blocked_view">
+	<menu_item_check label="依名稱排序" name="sort_by_name"/>
+	<menu_item_check label="依類型排序" name="sort_by_type"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_people_friends_view.xml b/indra/newview/skins/default/xui/zh/menu_people_friends_view.xml
new file mode 100644
index 00000000000..4251238fd95
--- /dev/null
+++ b/indra/newview/skins/default/xui/zh/menu_people_friends_view.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="依名稱排序" name="sort_name"/>
+	<menu_item_check label="依狀態排序" name="sort_status"/>
+	<menu_item_check label="察看人群圖示" name="view_icons"/>
+	<menu_item_check label="察看許可權限" name="view_permissions"/>
+	<menu_item_check label="檢視交談記錄……" name="view_conversation"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_people_groups.xml b/indra/newview/skins/default/xui/zh/menu_people_groups.xml
index 5768c554c9c..b4b566f5cae 100644
--- a/indra/newview/skins/default/xui/zh/menu_people_groups.xml
+++ b/indra/newview/skins/default/xui/zh/menu_people_groups.xml
@@ -2,7 +2,7 @@
 <menu name="menu_group_plus">
 	<menu_item_call label="察看資訊" name="View Info"/>
 	<menu_item_call label="聊天" name="Chat"/>
-	<menu_item_call label="通話" name="Call"/>
+	<menu_item_call label="語音通話" name="Call"/>
 	<menu_item_call label="å•Ÿå‹•" name="Activate"/>
 	<menu_item_call label="退出" name="Leave"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_people_groups_view.xml b/indra/newview/skins/default/xui/zh/menu_people_groups_view.xml
new file mode 100644
index 00000000000..05a30d938f2
--- /dev/null
+++ b/indra/newview/skins/default/xui/zh/menu_people_groups_view.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="顯示群組圖示" name="Display Group Icons"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_people_nearby.xml b/indra/newview/skins/default/xui/zh/menu_people_nearby.xml
index 38d5f3d3247..d25adaf8fb5 100644
--- a/indra/newview/skins/default/xui/zh/menu_people_nearby.xml
+++ b/indra/newview/skins/default/xui/zh/menu_people_nearby.xml
@@ -1,13 +1,16 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Avatar Context Menu">
-	<menu_item_call label="察看檔案" name="View Profile"/>
-	<menu_item_call label="加為朋友" name="Add Friend"/>
-	<menu_item_call label="移除朋友" name="Remove Friend"/>
-	<menu_item_call label="IM" name="IM"/>
-	<menu_item_call label="通話" name="Call"/>
-	<menu_item_call label="地圖" name="Map"/>
-	<menu_item_call label="分享" name="Share"/>
-	<menu_item_call label="支付" name="Pay"/>
-	<menu_item_check label="封鎖/不再封鎖" name="Block/Unblock"/>
-	<menu_item_call label="發給瞬間傳送請求" name="teleport"/>
+	<menu_item_call label="察看檔案" name="view_profile"/>
+	<menu_item_call label="IM" name="im"/>
+	<menu_item_call label="發給瞬間傳送請求" name="offer_teleport"/>
+	<menu_item_call label="語音通話" name="voice_call"/>
+	<menu_item_call label="檢視聊天歷史……" name="chat_history"/>
+	<menu_item_call label="加為朋友" name="add_friend"/>
+	<menu_item_call label="移除朋友" name="remove_friend"/>
+	<menu_item_call label="邀請加入群組……" name="invite_to_group"/>
+	<menu_item_call label="放大" name="zoom_in"/>
+	<menu_item_call label="地圖" name="map"/>
+	<menu_item_call label="分享" name="share"/>
+	<menu_item_call label="支付" name="pay"/>
+	<menu_item_check label="封鎖/不再封鎖" name="block_unblock"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/zh/menu_people_nearby_multiselect.xml
index 1380e0b307c..69f0eab7dc9 100644
--- a/indra/newview/skins/default/xui/zh/menu_people_nearby_multiselect.xml
+++ b/indra/newview/skins/default/xui/zh/menu_people_nearby_multiselect.xml
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Multi-Selected People Context Menu">
-	<menu_item_call label="加為朋友" name="Add Friends"/>
-	<menu_item_call label="移除朋友" name="Remove Friend"/>
-	<menu_item_call label="IM" name="IM"/>
-	<menu_item_call label="通話" name="Call"/>
-	<menu_item_call label="分享" name="Share"/>
-	<menu_item_call label="支付" name="Pay"/>
-	<menu_item_call label="發給瞬間傳送請求" name="teleport"/>
+	<menu_item_call label="加為朋友" name="add_friends"/>
+	<menu_item_call label="移除朋友" name="remove_friends"/>
+	<menu_item_call label="IM" name="im"/>
+	<menu_item_call label="通話" name="call"/>
+	<menu_item_call label="分享" name="share"/>
+	<menu_item_call label="支付" name="pay"/>
+	<menu_item_call label="發給瞬間傳送請求" name="offer_teleport"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_people_nearby_view.xml b/indra/newview/skins/default/xui/zh/menu_people_nearby_view.xml
new file mode 100644
index 00000000000..9bc56384726
--- /dev/null
+++ b/indra/newview/skins/default/xui/zh/menu_people_nearby_view.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="依最近說話者排序" name="sort_by_recent_speakers"/>
+	<menu_item_check label="依名稱排序" name="sort_name"/>
+	<menu_item_check label="依距離排序" name="sort_distance"/>
+	<menu_item_check label="察看人群圖示" name="view_icons"/>
+	<menu_item_check label="察看地圖" name="view_map"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_people_recent_view.xml b/indra/newview/skins/default/xui/zh/menu_people_recent_view.xml
new file mode 100644
index 00000000000..382234c3ecf
--- /dev/null
+++ b/indra/newview/skins/default/xui/zh/menu_people_recent_view.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="依最近排序" name="sort_most"/>
+	<menu_item_check label="依名稱排序" name="sort_name"/>
+	<menu_item_check label="察看人群圖示" name="view_icons"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_url_agent.xml b/indra/newview/skins/default/xui/zh/menu_url_agent.xml
index 592bb6561e9..72629822d4b 100644
--- a/indra/newview/skins/default/xui/zh/menu_url_agent.xml
+++ b/indra/newview/skins/default/xui/zh/menu_url_agent.xml
@@ -1,6 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Url Popup">
-	<menu_item_call label="顯示居民檔案" name="show_agent"/>
+	<menu_item_call label="察看檔案" name="show_agent"/>
+	<menu_item_call label="送出 IM..." name="send_im"/>
+	<menu_item_call label="加為朋友..." name="add_friend"/>
 	<menu_item_call label="覆製名稱到剪貼簿" name="url_copy_label"/>
 	<menu_item_call label="覆製 SLurl 到剪貼簿" name="url_copy"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_url_objectim.xml b/indra/newview/skins/default/xui/zh/menu_url_objectim.xml
index b344b21c62f..9f3a9d58ffd 100644
--- a/indra/newview/skins/default/xui/zh/menu_url_objectim.xml
+++ b/indra/newview/skins/default/xui/zh/menu_url_objectim.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Url Popup">
-	<menu_item_call label="顯示物件資訊" name="show_object"/>
+	<menu_item_call label="物件檔案..." name="show_object"/>
 	<menu_item_call label="顯示在地圖上" name="show_on_map"/>
 	<menu_item_call label="瞬間傳送到物件位置" name="teleport_to_object"/>
 	<menu_item_call label="覆製物件名稱到剪貼簿" name="url_copy_label"/>
diff --git a/indra/newview/skins/default/xui/zh/menu_viewer.xml b/indra/newview/skins/default/xui/zh/menu_viewer.xml
index ac0e9e7e358..09bdc578196 100644
--- a/indra/newview/skins/default/xui/zh/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/zh/menu_viewer.xml
@@ -16,10 +16,7 @@
 			<menu_item_call label="停止我身上的動作" name="Stop Animating My Avatar"/>
 			<menu_item_call label="行走 / 跑步 / 飛行…" name="Walk / run / fly"/>
 		</menu>
-		<menu label="狀態" name="Status">
-			<menu_item_call label="離開" name="Set Away"/>
-			<menu_item_call label="忙碌" name="Set Busy"/>
-		</menu>
+		<menu label="狀態" name="Status"/>
 		<menu_item_call label="購買 L$…" name="Buy and Sell L$"/>
 		<menu_item_call label="商家發件匣…" name="MerchantOutbox"/>
 		<menu_item_call label="帳戶主控臺…" name="Manage My Account"/>
@@ -30,14 +27,18 @@
 		<menu_item_call label="退出 [APP_NAME]" name="Quit"/>
 	</menu>
 	<menu label="溝通" name="Communicate">
-		<menu_item_check label="聊天…" name="Nearby Chat"/>
+		<menu_item_check label="交談……" name="Conversations"/>
+		<menu_item_check label="附近的聊天……" name="Nearby Chat"/>
 		<menu_item_check label="說話" name="Speak"/>
-		<menu_item_check label="語音設定…" name="Nearby Voice"/>
-		<menu_item_check label="語音變聲…" name="ShowVoice"/>
+		<menu label="語音變聲" name="VoiceMorphing">
+			<menu_item_check label="沒有變聲效果" name="NoVoiceMorphing"/>
+			<menu_item_check label="預覽……" name="Preview"/>
+			<menu_item_call label="訂閱……" name="Subscribe"/>
+		</menu>
 		<menu_item_check label="姿勢…" name="Gestures"/>
-		<menu_item_call label="朋友" name="My Friends"/>
-		<menu_item_call label="群組" name="My Groups"/>
-		<menu_item_call label="附近的人群" name="Active Speakers"/>
+		<menu_item_check label="朋友" name="My Friends"/>
+		<menu_item_check label="群組" name="My Groups"/>
+		<menu_item_check label="附近的人群" name="Active Speakers"/>
 		<menu_item_call label="封鎖清單" name="Block List"/>
 	</menu>
 	<menu label="世界" name="World">
@@ -113,7 +114,6 @@
 			<menu_item_call label="購買" name="Menu Object Buy"/>
 			<menu_item_call label="取得" name="Menu Object Take"/>
 			<menu_item_call label="取得副本" name="Take Copy"/>
-			<menu_item_call label="回存到我的收納區" name="Save Object Back to My Inventory"/>
 			<menu_item_call label="回存到物件內容" name="Save Object Back to Object Contents"/>
 			<menu_item_call label="退回物件" name="Return Object back to Owner"/>
 		</menu>
@@ -128,6 +128,7 @@
 			<menu_item_call label="聯結集…" name="pathfinding_linksets_menu_item"/>
 			<menu_item_call label="角色…" name="pathfinding_characters_menu_item"/>
 			<menu_item_call label="察看 / 測試…" name="pathfinding_console_menu_item"/>
+			<menu_item_call label="重新產出地區" name="pathfinding_rebake_navmesh_item"/>
 		</menu>
 		<menu label="選項" name="Options">
 			<menu_item_check label="顯示進階權限" name="DebugPermissions"/>
@@ -157,6 +158,13 @@
 	<menu label="幫助" name="Help">
 		<menu_item_call label="簡易教學…" name="How To"/>
 		<menu_item_call label="[SECOND_LIFE] 幫助" name="Second Life Help"/>
+		<menu_item_call label="使用者指南" name="User’s guide"/>
+		<menu_item_call label="知識庫" name="Knowledge Base"/>
+		<menu_item_call label="維基" name="Wiki"/>
+		<menu_item_call label="社群論壇" name="Community Forums"/>
+		<menu_item_call label="支援入口" name="Support portal"/>
+		<menu_item_call label="[SECOND_LIFE] 最新消息" name="Second Life News"/>
+		<menu_item_call label="[SECOND_LIFE] 部落格" name="Second Life Blogs"/>
 		<menu_item_call label="違規舉報" name="Report Abuse"/>
 		<menu_item_call label="回報臭蟲" name="Report Bug"/>
 		<menu_item_call label="關於 [APP_NAME]" name="About Second Life"/>
@@ -383,9 +391,14 @@
 				<menu_item_call label="女性測試" name="Test Female"/>
 				<menu_item_check label="允許選擇化身" name="Allow Select Avatar"/>
 			</menu>
+			<menu label="動作速度" name="Animation Speed">
+				<menu_item_call label="所有動作加快 10%" name="All Animations 10 Faster"/>
+				<menu_item_call label="所有動作放慢 10%" name="All Animations 10 Slower"/>
+				<menu_item_call label="將所有動作恢復原速" name="Reset All Animation Speed"/>
+				<menu_item_check label="慢動作" name="Slow Motion Animations"/>
+			</menu>
 			<menu_item_call label="強制參數為預設值" name="Force Params to Default"/>
 			<menu_item_check label="動作資訊" name="Animation Info"/>
-			<menu_item_check label="慢動作" name="Slow Motion Animations"/>
 			<menu_item_check label="顯示注視在" name="Show Look At"/>
 			<menu_item_check label="顯示指向在" name="Show Point At"/>
 			<menu_item_check label="除錯旋軸的更新" name="Debug Joint Updates"/>
diff --git a/indra/newview/skins/default/xui/zh/notifications.xml b/indra/newview/skins/default/xui/zh/notifications.xml
index 9fecf2c104d..59be26d43bf 100644
--- a/indra/newview/skins/default/xui/zh/notifications.xml
+++ b/indra/newview/skins/default/xui/zh/notifications.xml
@@ -516,6 +516,24 @@
 		</url>
 		<usetemplate ignoretext="我的顯示驅動程式太老舊" name="okcancelignore" notext="否" yestext="是"/>
 	</notification>
+	<notification name="AMDOldDriver">
+		你的顯示卡很可能有新版的驅動程式。  更新顯示驅動程式會大幅改善性能。
+
+    前往 [_URL] 察看是否有新版驅動程式?
+		<url name="url">
+			http://support.amd.com/us/Pages/AMDSupportHub.aspx
+		</url>
+		<usetemplate ignoretext="我的顯示驅動程式太老舊" name="okcancelignore" notext="否" yestext="是"/>
+	</notification>
+	<notification name="NVIDIAOldDriver">
+		你的顯示卡很可能有新版的驅動程式。  更新顯示驅動程式會大幅改善性能。
+
+    前往 [_URL] 察看是否有新版驅動程式?
+		<url name="url">
+			http://www.nvidia.com/Download/index.aspx?lang=tw
+		</url>
+		<usetemplate ignoretext="我的顯示驅動程式太老舊" name="okcancelignore" notext="否" yestext="是"/>
+	</notification>
 	<notification name="UnknownGPU">
 		你的系統含有一個 [APP_NAME] 無法辨認的顯像卡。
 原因很可能是 [APP_NAME] 尚未針對新硬體完成測試。  這大概不會出問題,但你可能需要調整顯像設定。
@@ -1536,10 +1554,13 @@ SHA1 指紋:[MD5_DIGEST]
 		此時無法發出交友邀請。 請稍候再試。
 		<usetemplate name="okbutton" yestext="確定"/>
 	</notification>
-	<notification name="BusyModeSet">
-		已設為忙碌模式。
-聊天和即時訊息內容將被隱藏。 即時訊息發送者將收到你的「忙碌模式」回應。 所有的瞬間傳送邀請都將被婉拒。 此時起送給你的收納區物項都將丟入垃圾桶。
-		<usetemplate ignoretext="我變更我的狀態為忙碌模式" name="okignore" yestext="確定"/>
+	<notification name="DoNotDisturbModeSet">
+		「請勿打擾」模式目前是開啟狀態。  你將不會收到任何發給你的訊息通知。
+
+- 其他居民將收到你的「請勿打擾」回應(回應內容設於「偏好設定 &gt; 一般設定」)。
+- 所有瞬間傳送的邀請都將被婉拒。
+- 所有語音來電都將拒絕接聽。
+		<usetemplate ignoretext="我變更我的狀態為「請勿打擾」模式" name="okignore" yestext="確定"/>
 	</notification>
 	<notification name="JoinedTooManyGroupsMember">
 		你已達可同時加入的群組數上限。 請先離開另一個群組再加入這一個,或婉拒加入邀請。
@@ -2024,6 +2045,10 @@ SHA1 指紋:[MD5_DIGEST]
 		前往你的[http://secondlife.com/account/ 塗鴉牆]以察看你的帳戶歷史紀錄?
 		<usetemplate ignoretext="啟動我的瀏覽器以察看我的帳戶歷史紀錄" name="okcancelignore" notext="取消" yestext="前往頁面"/>
 	</notification>
+	<notification name="ConfirmAddingChatParticipants">
+		新增一個人到現有的交談,等於建立新的交談。  所有交談者將會收到新交談通知。
+		<usetemplate ignoretext="確認新增聊天者" name="okcancelignore" notext="取消" yestext="確定"/>
+	</notification>
 	<notification name="ConfirmQuit">
 		你確定你要結束退出?
 		<usetemplate ignoretext="當我結束退出時進行確認" name="okcancelignore" notext="不要結束退出" yestext="結束退出"/>
@@ -2098,14 +2123,14 @@ SHA1 指紋:[MD5_DIGEST]
 			<button ignore="絕不取代" name="No" text="取消"/>
 		</form>
 	</notification>
-	<notification label="忙碌模式警告" name="BusyModePay">
-		你現在處於忙碌模式,這意味著你付費後仍將不會收到任何物項。
+	<notification label="「請勿打擾」模式警告" name="DoNotDisturbModePay">
+		你已開啟「請勿打擾」。 你將不會收到任何付款購買的物項。
 
-你是否要先離開忙碌模式,再完成交易?
+是否要在完成交易之前,先關閉「請勿打擾」模式?
 		<form name="form">
-			<ignore name="ignore" text="當我在忙碌模式時,將要支付金錢或給他人物件"/>
-			<button ignore="總是離開忙碌模式" name="Yes" text="確定"/>
-			<button ignore="絕不離開忙碌模式" name="No" text="取消"/>
+			<ignore name="ignore" text="我即將在「請勿打擾」模式下,試圖付錢給他人或給一個物件"/>
+			<button ignore="固定選擇離開「請勿打擾」模式" name="Yes" text="確定"/>
+			<button ignore="永不離開「請勿打擾」模式" name="No" text="取消"/>
 		</form>
 	</notification>
 	<notification name="ConfirmDeleteProtectedCategory">
@@ -2240,11 +2265,8 @@ SHA1 指紋:[MD5_DIGEST]
 	<notification name="GroupNotice">
 		主旨:[SUBJECT],訊息:[MESSAGE]
 	</notification>
-	<notification name="FriendOnline">
-		&lt;nolink&gt;[NAME]&lt;/nolink&gt; 目前在線上
-	</notification>
-	<notification name="FriendOffline">
-		&lt;nolink&gt;[NAME]&lt;/nolink&gt; 目前離線
+	<notification name="FriendOnlineOffline">
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; 目前狀態為 [STATUS]
 	</notification>
 	<notification name="AddSelfFriend">
 		雖然你人很好,你還是不能把自己加為朋友。
@@ -2472,13 +2494,6 @@ SHA1 指紋:[MD5_DIGEST]
 	<notification name="DynamicPathfindingDisabled">
 		這地區並未啟用動態尋徑。  使用尋徑 LSL 呼叫的帶腳本物件,在此地區可能無法正常運作。
 	</notification>
-	<notification name="PathfindingRebakeNavmesh">
-		更改本地區的某些物件將導致其他移動物件的運作發生問題。  要使移動物件正常運作,請點按「重新產出地區」按鈕。  欲獲知詳情請選擇「幫助」。
-		<url name="url">
-			http://wiki.secondlife.com/wiki/Pathfinding_Tools_in_the_Second_Life_Viewer
-		</url>
-		<usetemplate helptext="幫助" ignoretext="更改本地區的某些物件將導致其他移動物件的運作發生問題。" name="okhelpignore" yestext="確定"/>
-	</notification>
 	<notification name="PathfindingCannotRebakeNavmesh">
 		發生錯誤。  問題可能出在網路或伺服器,也可能因為你無權建製物件。  有時,只要登出再登入即能解決這類問題。
 		<usetemplate name="okbutton" yestext="確定"/>
@@ -2741,7 +2756,7 @@ SHA1 指紋:[MD5_DIGEST]
 	<notification name="ScriptQuestionCaution">
 		警告:物件 &apos;&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;&apos; 要求全權存取你的林登幣帳戶。 你如果允許存取帳戶,它將可在任何時候從你帳戶取走資金,或完全加以清空,或定期取走部分資金,且不會發出警告。
   
-這很可能是種不當的要求。 如果你不完全瞭解它為何要求存取你的帳戶,請勿允准。
+如果你不完全瞭解它為何要求存取你的帳戶,請勿允准。
 		<form name="form">
 			<button name="Grant" text="允許全權存取"/>
 			<button name="Deny" text="拒絕"/>
@@ -3323,4 +3338,633 @@ SHA1 指紋:[MD5_DIGEST]
 		你正在刪除 [NUM_ITEMS] 個物項。  你確定你要繼續?
 		<usetemplate ignoretext="確定要刪除多個物項?" name="okcancelignore" notext="否" yestext="是"/>
 	</notification>
+	<notification name="AvatarFrozen">
+		[AV_FREEZER] 凍結了你。 你此時無法移動或與周遭互動。
+	</notification>
+	<notification name="AvatarFrozenDuration">
+		[AV_FREEZER] 凍結了你 [AV_FREEZE_TIME] 秒鐘。 你此時無法移動或與周遭互動。
+	</notification>
+	<notification name="YouFrozeAvatar">
+		化身已凍結。
+	</notification>
+	<notification name="AvatarHasUnFrozenYou">
+		[AV_FREEZER] 解除了對你的凍結。
+	</notification>
+	<notification name="AvatarUnFrozen">
+		化身已解除凍結。
+	</notification>
+	<notification name="AvatarFreezeFailure">
+		凍結失敗,因為你在該地段沒有管理員權限。
+	</notification>
+	<notification name="AvatarFreezeThaw">
+		你遭凍結的時間已過,請恢復正常活動。
+	</notification>
+	<notification name="AvatarCantFreeze">
+		抱歉,無法凍結該用戶。
+	</notification>
+	<notification name="NowOwnObject">
+		你現在是物件 [OBJECT_NAME] 的所有人
+	</notification>
+	<notification name="CantRezOnLand">
+		無法在 [OBJECT_POS] 產生物件,因為這土地的所有人不允許。  請用土地工具察看所有人。
+	</notification>
+	<notification name="RezFailTooManyRequests">
+		無法產生物件,此刻要求數目過多。
+	</notification>
+	<notification name="SitFailCantMove">
+		你無法坐下,因為此刻你不能移動。
+	</notification>
+	<notification name="SitFailNotAllowedOnLand">
+		你不能坐下,因為該土地不允許。
+	</notification>
+	<notification name="SitFailNotSameRegion">
+		請挨近一點。  無法坐在物件上,因為
+它和你不在同一個地區。
+	</notification>
+	<notification name="NoNewObjectRegionFull">
+		無法建立新物件。 地區已滿載。
+	</notification>
+	<notification name="FailedToPlaceObject">
+		無法將物件置於指定地點。  請再試一次。
+	</notification>
+	<notification name="NoOwnNoGardening">
+		你無法在別人的土地上建立樹和草。
+	</notification>
+	<notification name="NoCopyPermsNoObject">
+		複製失敗,你無權複製物件 &apos;[OBJ_NAME]&apos;。
+	</notification>
+	<notification name="NoTransPermsNoObject">
+		複製失敗,因為物件 &apos;[OBJ_NAME]&apos; 無法轉移給你。
+	</notification>
+	<notification name="AddToNavMeshNoCopy">
+		複製失敗,因為物件 &apos;[OBJ_NAME]&apos; 對導航網面有貢獻。
+	</notification>
+	<notification name="DupeWithNoRootsSelected">
+		選取了沒有根的重覆物件。
+	</notification>
+	<notification name="CantDupeCuzRegionIsFull">
+		無法複製物件,因為地區滿載。
+	</notification>
+	<notification name="CantDupeCuzParcelNotFound">
+		無法複製物件,找不到它們所在的地段。
+	</notification>
+	<notification name="CantCreateCuzParcelFull">
+		無法建立物件,因為 
+地段滿載。
+	</notification>
+	<notification name="RezAttemptFailed">
+		試圖產生物件失敗。
+	</notification>
+	<notification name="ToxicInvRezAttemptFailed">
+		無法建立已在此地區造成問題的物件。
+	</notification>
+	<notification name="InvItemIsBlacklisted">
+		該收納區物項已被列入黑名單。
+	</notification>
+	<notification name="NoCanRezObjects">
+		你此時無權建立物件。
+	</notification>
+	<notification name="LandSearchBlocked">
+		土地搜尋遭禁。
+你在短時間內進行了太多次土地搜尋。
+請稍候再試。
+	</notification>
+	<notification name="NotEnoughResourcesToAttach">
+		腳本資源不足,無法附著物件!
+	</notification>
+	<notification name="YouDiedAndGotTPHome">
+		你已經死亡並且被瞬間傳送回你的家的位置
+	</notification>
+	<notification name="EjectComingSoon">
+		你不再允許待在這裡,必須在 [EJECT_TIME] 秒內離開。
+	</notification>
+	<notification name="NoEnterServerFull">
+		你無法進入這地區,因為 
+伺服器滿載。
+	</notification>
+	<notification name="SaveBackToInvDisabled">
+		「儲存回收納區」功能已被停用。
+	</notification>
+	<notification name="NoExistNoSaveToContents">
+		無法將 &apos;[OBJ_NAME]&apos; 儲存到物件內容,因為產生它的來源物件已不存在。
+	</notification>
+	<notification name="NoModNoSaveToContents">
+		無法儲存 [OBJ_NAME] 到物件內容,你無權修改 &apos;[DEST_NAME]&apos; 物件。
+	</notification>
+	<notification name="NoSaveBackToInvDisabled">
+		無法將 &apos;[OBJ_NAME]&apos; 儲存回收納區,此動作已被停用。
+	</notification>
+	<notification name="NoCopyNoSelCopy">
+		無法複製你所選的,因為你無權複製物件 &apos;[OBJ_NAME]&apos;。
+	</notification>
+	<notification name="NoTransNoSelCopy">
+		無法選取複製,因為物件 &apos;[OBJ_NAME]&apos; 不可轉移。
+	</notification>
+	<notification name="NoTransNoCopy">
+		無法選取複製,因為物件 &apos;[OBJ_NAME]&apos; 不可轉移。
+	</notification>
+	<notification name="NoPermsNoRemoval">
+		權限系統不允許從模擬器移除物件 &apos;[OBJ_NAME]&apos;。
+	</notification>
+	<notification name="NoModNoSaveSelection">
+		無法儲存你所選的,因為你無權修改 &apos;[OBJ_NAME]&apos; 物件。
+	</notification>
+	<notification name="NoCopyNoSaveSelection">
+		無法儲存你所選的,因為物件 &apos;[OBJ_NAME]&apos; 不可複製。
+	</notification>
+	<notification name="NoModNoTaking">
+		無法拿取你所選的,因為你無權修改 &apos;[OBJ_NAME]&apos; 物件。
+	</notification>
+	<notification name="RezDestInternalError">
+		內部錯誤:未知的目的地類型。
+	</notification>
+	<notification name="DeleteFailObjNotFound">
+		刪除失敗,因為找不到物件
+	</notification>
+	<notification name="SorryCantEjectUser">
+		抱歉,無法踢出該用戶。
+	</notification>
+	<notification name="RegionSezNotAHome">
+		此地區不許你在此設定「我的家」。
+	</notification>
+	<notification name="HomeLocationLimits">
+		你只能在自己的土地或大陸資訊中心上設定「我的家」。
+	</notification>
+	<notification name="HomePositionSet">
+		我的家位置已定。
+	</notification>
+	<notification name="AvatarEjected">
+		化身已被踢出。
+	</notification>
+	<notification name="AvatarEjectFailed">
+		踢出失敗,因為你在該地段沒有管理員權限。
+	</notification>
+	<notification name="CantMoveObjectParcelFull">
+		無法移動 &apos;[OBJECT_NAME]&apos; 物件到
+地區 [REGION_NAME] 的 [OBJ_POSITION],因為該目標地段已滿載。
+	</notification>
+	<notification name="CantMoveObjectParcelPerms">
+		無法移動 &apos;[OBJECT_NAME]&apos; 物件到
+地區 [REGION_NAME] 的 [OBJ_POSITION],因為此地段不允許你的物件。
+	</notification>
+	<notification name="CantMoveObjectParcelResources">
+		無法移動 &apos;[OBJECT_NAME]&apos; 物件到
+ [REGION_NAME] 地區的 [OBJ_POSITION],因為此地段資源不足容納此物件。
+	</notification>
+	<notification name="CantMoveObjectRegionVersion">
+		無法移動 &apos;[OBJECT_NAME]&apos; 物件到
+ [REGION_NAME] 地區的 [OBJ_POSITION],因為該地區所執行的軟體版本過舊,不支援跨地區接受這個物件。
+	</notification>
+	<notification name="CantMoveObjectNavMesh">
+		無法移動 &apos;[OBJECT_NAME]&apos; 物件到
+地區 [REGION_NAME] 的 [OBJ_POSITION],因為你不得修改跨越地區界限的導航網面。
+	</notification>
+	<notification name="CantMoveObjectWTF">
+		無法移動 &apos;[OBJECT_NAME]&apos; 物件到
+地區 [REGION_NAME] 的 [OBJ_POSITION],原因不明。 ([FAILURE_TYPE])
+	</notification>
+	<notification name="NoPermModifyObject">
+		你無權變更該物件
+	</notification>
+	<notification name="CantEnablePhysObjContributesToNav">
+		對導航網面有貢獻的物件,無法啟用物理。
+	</notification>
+	<notification name="CantEnablePhysKeyframedObj">
+		鍵格動畫物件無法啟用物理。
+	</notification>
+	<notification name="CantEnablePhysNotEnoughLandResources">
+		無法啟用物件的物理——土地資源不足。
+	</notification>
+	<notification name="CantEnablePhysCostTooGreat">
+		物件的物理資源成本超過 [MAX_OBJECTS],無法啟用物理
+	</notification>
+	<notification name="PhantomWithConcavePiece">
+		此物件不得有凹面部件,因為物件是幻影物件,對導航網面有貢獻。
+	</notification>
+	<notification name="UnableAddItem">
+		無法新增項目!
+	</notification>
+	<notification name="UnableEditItem">
+		無法編輯這項目!
+	</notification>
+	<notification name="NoPermToEdit">
+		無權編輯這項目。
+	</notification>
+	<notification name="NoPermToCopyInventory">
+		無權複製該收納區。
+	</notification>
+	<notification name="CantSaveItemDoesntExist">
+		無法儲存到物件內容:該項目已不存在。
+	</notification>
+	<notification name="CantSaveItemAlreadyExists">
+		無法儲存到物件內容:收納區已存在同名稱的項目
+	</notification>
+	<notification name="CantSaveModifyAttachment">
+		無法儲存到物件內容:這麼做將修改附件的權限。
+	</notification>
+	<notification name="TooManyScripts">
+		腳本太多。
+	</notification>
+	<notification name="UnableAddScript">
+		無法新增腳本!
+	</notification>
+	<notification name="AssetServerTimeoutObjReturn">
+		資產伺服器未在正常時間內反應。  物件已返交模擬器。
+	</notification>
+	<notification name="RegionDisablePhysicsShapes">
+		本地區未啟用物理形狀。
+	</notification>
+	<notification name="NoModNavmeshAcrossRegions">
+		你無法變更跨越地區界限的導航網面。
+	</notification>
+	<notification name="NoSetPhysicsPropertiesOnObjectType">
+		該物件類型不得設定物理性質。
+	</notification>
+	<notification name="NoSetRootPrimWithNoShape">
+		根幾何元件無法設成無形狀。
+	</notification>
+	<notification name="NoRegionSupportPhysMats">
+		本地區未啟用物理材料。
+	</notification>
+	<notification name="OnlyRootPrimPhysMats">
+		只能調整根幾何元件的物理材料。
+	</notification>
+	<notification name="NoSupportCharacterPhysMats">
+		尚不支援角色設定物理材料。
+	</notification>
+	<notification name="InvalidPhysMatProperty">
+		指定的物理材料屬性中,至少有一個無效。
+	</notification>
+	<notification name="NoPermsAlterStitchingMeshObj">
+		網面物件的縫合類型不得變更。
+	</notification>
+	<notification name="NoPermsAlterShapeMeshObj">
+		網面物件的形狀不得變更。
+	</notification>
+	<notification name="FullRegionCantEnter">
+		你無法進入這地區,\n因為地區滿載。
+	</notification>
+	<notification name="LinkFailedOwnersDiffer">
+		聯結失敗——所有人不同
+	</notification>
+	<notification name="LinkFailedNoModNavmeshAcrossRegions">
+		聯結失敗——無法修改跨越地區界限的導航網面。
+	</notification>
+	<notification name="LinkFailedNoPermToEdit">
+		聯結失敗,你無權編輯。
+	</notification>
+	<notification name="LinkFailedTooManyPrims">
+		聯結失敗——幾何元件太多
+	</notification>
+	<notification name="LinkFailedCantLinkNoCopyNoTrans">
+		聯結失敗——無法將「禁止複製」和「禁止轉移」物件聯結起來
+	</notification>
+	<notification name="LinkFailedNothingLinkable">
+		聯結失敗——沒有可聯結的東西。
+	</notification>
+	<notification name="LinkFailedTooManyPathfindingChars">
+		聯結失敗——尋徑角色太多
+	</notification>
+	<notification name="LinkFailedInsufficientLand">
+		聯結失敗——土地資源不足
+	</notification>
+	<notification name="LinkFailedTooMuchPhysics">
+		物件使用了過多物理資源,其動態特性已被停用。
+	</notification>
+	<notification name="TeleportedHomeByObjectOnParcel">
+		你已被 &apos;[PARCEL_NAME]&apos; 地段的物件 &apos;[OBJECT_NAME]&apos; 成功瞬間傳送回家
+	</notification>
+	<notification name="TeleportedHomeByObject">
+		你已成功被物件 &apos;[OBJECT_NAME]&apos; 瞬間傳送回家
+	</notification>
+	<notification name="TeleportedByAttachment">
+		你已成功被 [ITEM_ID] 上的一個附件瞬間傳送
+	</notification>
+	<notification name="TeleportedByObjectOnParcel">
+		你已成功被 &apos;[PARCEL_NAME]&apos; 地段的物件 &apos;[OBJECT_NAME]&apos; 瞬間傳送
+	</notification>
+	<notification name="TeleportedByObjectOwnedBy">
+		你已成功被 [OWNER_ID] 擁有的物件 &apos;[OBJECT_NAME]&apos; 瞬間傳送
+	</notification>
+	<notification name="TeleportedByObjectUnknownUser">
+		你已成功被某未知用戶擁有的物件 &apos;[OBJECT_NAME]&apos; 瞬間傳送。
+	</notification>
+	<notification name="CantCreateObjectRegionFull">
+		無法建立要求的物件。 地區已滿載。
+	</notification>
+	<notification name="CantAttackMultipleObjOneSpot">
+		你不能將多個物件附著到同一個點。
+	</notification>
+	<notification name="CantCreateMultipleObjAtLoc">
+		你不能在此建立多個物件。
+	</notification>
+	<notification name="UnableToCreateObjTimeOut">
+		無法建立要求的物件。 物件在資料庫中找不到。
+	</notification>
+	<notification name="UnableToCreateObjUnknown">
+		無法建立要求的物件。 要求逾時,無法完成。 請再試一次。
+	</notification>
+	<notification name="UnableToCreateObjMissingFromDB">
+		無法建立要求的物件。 請再試一次。
+	</notification>
+	<notification name="RezFailureTookTooLong">
+		物件產生失敗,要求的物件載入時間太久。
+	</notification>
+	<notification name="FailedToPlaceObjAtLoc">
+		無法將物件置於指定地點。  請再試一次。
+	</notification>
+	<notification name="CantCreatePlantsOnLand">
+		你不得在這土地上建立植物。
+	</notification>
+	<notification name="CantRestoreObjectNoWorldPos">
+		無法恢復物件。 找不到虛擬世界的位置。
+	</notification>
+	<notification name="CantRezObjectInvalidMeshData">
+		無法產生物件,它的網面資料無效。
+	</notification>
+	<notification name="CantRezObjectTooManyScripts">
+		無法產生物件,因為這地區已有太多的腳本。
+	</notification>
+	<notification name="CantCreateObjectNoAccess">
+		你無權在此建立物件。
+	</notification>
+	<notification name="CantCreateObject">
+		你此時無權建立物件。
+	</notification>
+	<notification name="InvalidObjectParams">
+		無效的物件參數
+	</notification>
+	<notification name="CantDuplicateObjectNoAcess">
+		你權限不夠,無法在此複製物件。
+	</notification>
+	<notification name="CantChangeShape">
+		你無權變更這個形狀。
+	</notification>
+	<notification name="NoAccessToClaimObjects">
+		你權限不夠,無法在此收取物件。
+	</notification>
+	<notification name="DeedFailedNoPermToDeedForGroup">
+		讓渡失敗,你無權為你的群組讓渡物件。
+	</notification>
+	<notification name="NoPrivsToBuyObject">
+		你權限不夠,無法在此購買物件。
+	</notification>
+	<notification name="CantAttachObjectAvatarSittingOnIt">
+		無法附著物件,有個化身正坐在物件上。
+	</notification>
+	<notification name="WhyAreYouTryingToWearShrubbery">
+		樹和草不能當附件穿戴。
+	</notification>
+	<notification name="CantAttachGroupOwnedObjs">
+		無法附著群組所擁有的物件。
+	</notification>
+	<notification name="CantAttachObjectsNotOwned">
+		無法附著不是你擁有的物件。
+	</notification>
+	<notification name="CantAttachNavmeshObjects">
+		無法附著對導航網面有貢獻的物件。
+	</notification>
+	<notification name="CantAttachObjectNoMovePermissions">
+		無法附著物件,你無權移動該物件。
+	</notification>
+	<notification name="CantAttachNotEnoughScriptResources">
+		腳本資源不足,無法附著物件!
+	</notification>
+	<notification name="CantDropItemTrialUser">
+		你無法在此卸除物件,請到「自由嘗試」區域再試。
+	</notification>
+	<notification name="CantDropMeshAttachment">
+		你無法在此卸除附件。 請選擇把卸除附件送回收納區,再重新成形。
+	</notification>
+	<notification name="CantDropAttachmentNoPermission">
+		卸除附件失敗:你無權在此處卸除。
+	</notification>
+	<notification name="CantDropAttachmentInsufficientLandResources">
+		卸除附件失敗:可用土地資源不足。
+	</notification>
+	<notification name="CantDropAttachmentInsufficientResources">
+		卸除附件失敗:可用資源不足。
+	</notification>
+	<notification name="CantDropObjectFullParcel">
+		無法在此卸除物件。  地段滿載。
+	</notification>
+	<notification name="CantTouchObjectBannedFromParcel">
+		無法觸摸/抓取此物件,因為你在該土地地段遭禁。
+	</notification>
+	<notification name="PlzNarrowDeleteParams">
+		請將刪除參數範圍調小一點。
+	</notification>
+	<notification name="UnableToUploadAsset">
+		無法上傳資產。
+	</notification>
+	<notification name="CantTeleportCouldNotFindUser">
+		找不到要瞬間傳送到家的用戶
+	</notification>
+	<notification name="GodlikeRequestFailed">
+		要求神的權力失敗
+	</notification>
+	<notification name="GenericRequestFailed">
+		普通請求失敗
+	</notification>
+	<notification name="CantUploadPostcard">
+		無法上傳明信片。  請稍候再試一次。
+	</notification>
+	<notification name="CantFetchInventoryForGroupNotice">
+		無法取得群組通知的收納區細節。
+	</notification>
+	<notification name="CantSendGroupNoticeNotPermitted">
+		無法送出群組通知——未准許。
+	</notification>
+	<notification name="CantSendGroupNoticeCantConstructInventory">
+		無法送出群組通知——收納區建立失敗。
+	</notification>
+	<notification name="CantParceInventoryInNotice">
+		無法剖析通知裡的收納品項。
+	</notification>
+	<notification name="TerrainUploadFailed">
+		地形上傳失敗。
+	</notification>
+	<notification name="TerrainFileWritten">
+		地形檔案已寫入。
+	</notification>
+	<notification name="TerrainFileWrittenStartingDownload">
+		地形檔案已寫入,開始下載……
+	</notification>
+	<notification name="TerrainBaked">
+		地形已定貌。
+	</notification>
+	<notification name="TenObjectsDisabledPlzRefresh">
+		只成功停用前 10 個所選物件。 若有需要,請刷新之後再選取更多的項目。
+	</notification>
+	<notification name="UpdateViewerBuyParcel">
+		你必須先更新瀏覽器後,才可購買這個地段。
+	</notification>
+	<notification name="CantBuyParcelNotForSale">
+		無法購買,此地段不供出售。
+	</notification>
+	<notification name="CantBuySalePriceOrLandAreaChanged">
+		無法購買,售價或土地面積已變。
+	</notification>
+	<notification name="CantBuyParcelNotAuthorized">
+		你不是此地段的獲授權的買主。
+	</notification>
+	<notification name="CantBuyParcelAwaitingPurchaseAuth">
+		你無法購買此地段,該地段已在等候批准購買
+	</notification>
+	<notification name="CantBuildOverflowParcel">
+		你不得在此建立物件,這麼做將導致地段超載。
+	</notification>
+	<notification name="SelectedMultipleOwnedLand">
+		你選擇的土地範圍,為不同人所擁有。 請縮小選擇範圍,再試一次。
+	</notification>
+	<notification name="CantJoinTooFewLeasedParcels">
+		未選取足夠租用地段,無法合併。
+	</notification>
+	<notification name="CantDivideLandMultipleParcelsSelected">
+		無法分割土地,\n因為你選取了多個地段,\n請縮小所選土地。
+	</notification>
+	<notification name="CantDivideLandCantFindParcel">
+		無法分割土地。\n找不到地段。\n請到「幫助 &gt; 回報錯誤……」回報問題
+	</notification>
+	<notification name="CantDivideLandWholeParcelSelected">
+		無法分割土地。 選取了整個地段。\n請試著縮小所選的土地。
+	</notification>
+	<notification name="LandHasBeenDivided">
+		土地分割成功。
+	</notification>
+	<notification name="PassPurchased">
+		你購買了通行權。
+	</notification>
+	<notification name="RegionDisallowsClassifieds">
+		地區不允許分類廣告。
+	</notification>
+	<notification name="LandPassExpireSoon">
+		你在此土地的通行權即將到期失效。
+	</notification>
+	<notification name="CantSitNoSuitableSurface">
+		沒有合適的表面讓你坐下,請試一試別處。
+	</notification>
+	<notification name="CantSitNoRoom">
+		這裡沒有空間讓你坐下,請試試另一處。
+	</notification>
+	<notification name="ClaimObjectFailedNoPermission">
+		收取物件失敗,因為你權限不足。
+	</notification>
+	<notification name="ClaimObjectFailedNoMoney">
+		收取物件失敗,因為你 L$ 金額不足。
+	</notification>
+	<notification name="CantDeedGroupLand">
+		無法讓渡群組所擁有的土地。
+	</notification>
+	<notification name="BuyObjectFailedNoMoney">
+		購買物件失敗,你 L$ 金額不足。
+	</notification>
+	<notification name="BuyInventoryFailedNoMoney">
+		購買收納區失敗,你 L$ 金額不足。
+	</notification>
+	<notification name="BuyPassFailedNoMoney">
+		你的 L$ 不足,無法購買此土地的通行權。
+	</notification>
+	<notification name="CantBuyPassTryAgain">
+		此時無法購買通行權。  請稍候再試一次。
+	</notification>
+	<notification name="CantCreateObjectParcelFull">
+		無法建立物件,\n地段滿載。
+	</notification>
+	<notification name="FailedPlacingObject">
+		無法將物件置於指定地點。  請再試一次。
+	</notification>
+	<notification name="CantCreateLandmarkForEvent">
+		無法為活動建立地標。
+	</notification>
+	<notification name="GodBeatsFreeze">
+		你擁有的神力解除了凍結!
+	</notification>
+	<notification name="SpecialPowersRequestFailedLogged">
+		要求特殊能力失敗。 該要求已載入記錄。
+	</notification>
+	<notification name="ExpireExplanation">
+		系統此時無法處理你的要求。 要求逾時,無法完成。
+	</notification>
+	<notification name="DieExplanation">
+		系統無法處理你的要求。
+	</notification>
+	<notification name="AddPrimitiveFailure">
+		金額不足,無法建立幾何元件。
+	</notification>
+	<notification name="RezObjectFailure">
+		金額不足,無法建立物件。
+	</notification>
+	<notification name="ResetHomePositionNotLegal">
+		已重設「我的家」位置,因為前一個位置不合法。
+	</notification>
+	<notification name="CantInviteRegionFull">
+		此刻你無法邀請任何人到你的位置,因為地區滿載。 請稍候再試一次。
+	</notification>
+	<notification name="CantSetHomeAtRegion">
+		此地區不許你在此設定「我的家」。
+	</notification>
+	<notification name="ListValidHomeLocations">
+		你只能在自己的土地或大陸資訊中心上設定「我的家」。
+	</notification>
+	<notification name="SetHomePosition">
+		我的家位置已定。
+	</notification>
+	<notification name="CantDerezInventoryError">
+		收納區出錯,無法收納物件。
+	</notification>
+	<notification name="CantCreateRequestedInv">
+		無法建立要求的收納區。
+	</notification>
+	<notification name="CantCreateRequestedInvFolder">
+		無法建立要求的收納區資料夾。
+	</notification>
+	<notification name="CantCreateInventory">
+		無法建立該收納區。
+	</notification>
+	<notification name="CantCreateLandmark">
+		無法建立地標。
+	</notification>
+	<notification name="CantCreateOutfit">
+		此時無法建立裝扮。 請過一分鐘後再試。
+	</notification>
+	<notification name="InventoryNotForSale">
+		收納區沒有待售。
+	</notification>
+	<notification name="CantFindInvItem">
+		找不到收納區物項。
+	</notification>
+	<notification name="CantFindObject">
+		找不到物件。
+	</notification>
+	<notification name="CantTransfterMoneyRegionDisabled">
+		此地區目前未啟用轉移金錢給物件的功能。
+	</notification>
+	<notification name="CantPayNoAgent">
+		無法決定付款給誰。
+	</notification>
+	<notification name="CantDonateToPublicObjects">
+		你無法將 L$ 送給公共物件。
+	</notification>
+	<notification name="InventoryCreationInWorldObjectFailed">
+		針對虛擬世界物件建立收納區失敗。
+	</notification>
+	<notification name="UserBalanceOrLandUsageError">
+		發生內部錯誤,我們無法如常更新你的瀏覽器。  你瀏覽器顯示的 L$ 餘額或擁有地段,可能和伺服器上的正確數額不一致。
+	</notification>
+	<notification name="LargePrimAgentIntersect">
+		無法建立和其他參與者發生交截的大型幾何元件。  請等其他參與者移開後再試。
+	</notification>
+	<notification name="PreferenceChatClearLog">
+		這動作將刪除先前交談的記錄,和所有記錄備份。
+		<usetemplate ignoretext="刪除先前交談記錄前,先向我確認。" name="okcancelignore" notext="取消" yestext="確定"/>
+	</notification>
+	<notification name="PreferenceChatDeleteTranscripts">
+		這將刪除所有先前交談的內容記錄。 過去交談歷史清單不受影響。 資料夾 [FOLDER] 所有副檔名 .txt 和 txt.backup 的檔案都將刪除。
+		<usetemplate ignoretext="刪除交談內容記錄前先向我確認。" name="okcancelignore" notext="取消" yestext="確定"/>
+	</notification>
+	<notification name="PreferenceChatPathChanged">
+		無法移動檔案。 已恢復前一個路徑。
+		<usetemplate ignoretext="無法移動檔案。 已恢復前一個路徑。" name="okignore" yestext="確定"/>
+	</notification>
 </notifications>
diff --git a/indra/newview/skins/default/xui/zh/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/zh/panel_avatar_list_item.xml
index 1c8b56b3d62..e0a49a0addb 100644
--- a/indra/newview/skins/default/xui/zh/panel_avatar_list_item.xml
+++ b/indra/newview/skins/default/xui/zh/panel_avatar_list_item.xml
@@ -27,5 +27,6 @@
 	<icon name="permission_edit_mine_icon" tool_tip="這位朋友能編輯、刪除或取得你的物件"/>
 	<icon name="permission_map_icon" tool_tip="這位朋友能在地圖上找到你的位置"/>
 	<icon name="permission_online_icon" tool_tip="這位朋友當你上線能看到訊息"/>
+	<button name="info_btn" tool_tip="詳情"/>
 	<button name="profile_btn" tool_tip="察看檔案"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/zh/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/zh/panel_block_list_sidetray.xml
index 1dfa024138b..9f59bb32f81 100644
--- a/indra/newview/skins/default/xui/zh/panel_block_list_sidetray.xml
+++ b/indra/newview/skins/default/xui/zh/panel_block_list_sidetray.xml
@@ -1,10 +1,11 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="block_list_panel">
-	<text name="title_text">
-		封鎖清單
-	</text>
-	<scroll_list name="blocked" tool_tip="目前封鎖的居民清單"/>
-	<button label="封鎖他人" name="Block resident..." tool_tip="挑選一位居民以進行封鎖"/>
-	<button label="依名稱封鎖物件" name="Block object by name..." tool_tip="依名稱挑選一個物件進行封鎖"/>
-	<button label="解除封鎖" name="Unblock" tool_tip="將居民或物件由封鎖清單中移除"/>
+	<panel label="bottom_panel" name="blocked_buttons_panel">
+		<filter_editor label="過濾器" name="blocked_filter_input"/>
+		<menu_button name="blocked_gear_btn" tool_tip="對所選的人或物件採取動作"/>
+		<menu_button name="view_btn" tool_tip="排序選項"/>
+		<menu_button name="plus_btn" tool_tip="挑選一位居民或物件,加以封鎖"/>
+		<button name="unblock_btn" tool_tip="將居民或物件由封鎖清單中移除"/>
+	</panel>
+	<block_list name="blocked" tool_tip="目前封鎖的居民清單"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/zh/panel_conversation_list_item.xml b/indra/newview/skins/default/xui/zh/panel_conversation_list_item.xml
new file mode 100644
index 00000000000..6524d416456
--- /dev/null
+++ b/indra/newview/skins/default/xui/zh/panel_conversation_list_item.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="conversation_list_item">
+	<layout_stack name="conversation_item_stack">
+		<layout_panel name="conversation_title_panel">
+			<text name="conversation_title" value="(載入中)"/>
+		</layout_panel>
+	</layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/zh/panel_conversation_log_list_item.xml b/indra/newview/skins/default/xui/zh/panel_conversation_log_list_item.xml
new file mode 100644
index 00000000000..8446ce21309
--- /dev/null
+++ b/indra/newview/skins/default/xui/zh/panel_conversation_log_list_item.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="conversation_log_list_item">
+	<icon name="voice_session_icon" tool_tip="包含語音交談"/>
+	<icon name="unread_ims_icon" tool_tip="訊息在你登出期間傳來"/>
+	<button name="delete_btn" tool_tip="移除此項目"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/zh/panel_group_list_item.xml b/indra/newview/skins/default/xui/zh/panel_group_list_item.xml
index 175293cdf7f..fec4bb572ab 100644
--- a/indra/newview/skins/default/xui/zh/panel_group_list_item.xml
+++ b/indra/newview/skins/default/xui/zh/panel_group_list_item.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="group_list_item">
 	<text name="group_name" value="未知"/>
+	<button name="info_btn" tool_tip="詳情"/>
 	<button name="profile_btn" tool_tip="察看檔案"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/zh/panel_people.xml b/indra/newview/skins/default/xui/zh/panel_people.xml
index 59ea7b70e2d..5f7aca387a6 100644
--- a/indra/newview/skins/default/xui/zh/panel_people.xml
+++ b/indra/newview/skins/default/xui/zh/panel_people.xml
@@ -14,81 +14,53 @@
 	<string name="no_filtered_friends_msg">
 		找不到你要找的嗎? 請試試[secondlife:///app/search/people/[SEARCH_TERM] 搜尋]。
 	</string>
-	<string name="people_filter_label" value="人員過濾器"/>
-	<string name="groups_filter_label" value="群組過濾器"/>
 	<string name="no_filtered_groups_msg" value="找不到你要找的嗎? 請試試[secondlife:///app/search/groups/[SEARCH_TERM] 搜尋]。"/>
 	<string name="no_groups_msg" value="要尋找群組考慮加入嗎? 請試試[secondlife:///app/search/groups 搜尋]。"/>
 	<string name="MiniMapToolTipMsg" value="[REGION](雙擊以開啟地圖,按下 shift 鍵拖曳來平移)"/>
 	<string name="AltMiniMapToolTipMsg" value="[REGION](雙擊以瞬間傳送,按下 shift 鍵拖曳來平移)"/>
-	<filter_editor label="過濾器" name="filter_input"/>
 	<tab_container name="tabs">
 		<panel label="附近" name="nearby_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<menu_button name="nearby_view_sort_btn" tool_tip="選項"/>
-				<button name="add_friend_btn" tool_tip="添加所選的居民到你的朋友清單"/>
+			<panel label="bottom_panel" name="nearby_buttons_panel">
+				<filter_editor label="人員過濾器" name="nearby_filter_input"/>
+				<button name="gear_btn" tool_tip="對選取的人採取動作"/>
+				<menu_button name="nearby_view_btn" tool_tip="檢視/排序的選項"/>
+				<button name="add_friend_btn" tool_tip="向某位居民發出交友邀請"/>
+				<dnd_button name="nearby_del_btn" tool_tip="將選取的人從朋友名單移除"/>
 			</panel>
 		</panel>
-		<panel label="我的朋友" name="friends_panel">
+		<panel label="朋友" name="friends_panel">
+			<panel label="bottom_panel" name="friends_buttons_panel">
+				<filter_editor label="人員過濾器" name="friends_filter_input"/>
+				<button name="gear_btn" tool_tip="對選取的人採取動作"/>
+				<menu_button name="friends_view_btn" tool_tip="檢視/排序的選項"/>
+				<button name="friends_add_btn" tool_tip="向某位居民發出交友邀請"/>
+				<dnd_button name="friends_del_btn" tool_tip="將選取的人從朋友名單移除"/>
+			</panel>
 			<accordion name="friends_accordion">
 				<accordion_tab name="tab_online" title="上線"/>
 				<accordion_tab name="tab_all" title="全部"/>
 			</accordion>
-			<panel label="bottom_panel" name="bottom_panel">
-				<layout_stack name="bottom_panel">
-					<layout_panel name="options_gear_btn_panel">
-						<menu_button name="friends_viewsort_btn" tool_tip="顯示額外選項"/>
-					</layout_panel>
-					<layout_panel name="add_btn_panel">
-						<button name="add_btn" tool_tip="向居民發出交友邀請"/>
-					</layout_panel>
-					<layout_panel name="trash_btn_panel">
-						<dnd_button name="del_btn" tool_tip="由你的朋友清單移除所選擇的人"/>
-					</layout_panel>
-				</layout_stack>
-			</panel>
 		</panel>
-		<panel label="我的群組" name="groups_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<menu_button name="groups_viewsort_btn" tool_tip="選項"/>
-				<button name="plus_btn" tool_tip="加入群組/創立新群組"/>
-				<button name="activate_btn" tool_tip="啟用所選擇的群組"/>
+		<panel label="群組" name="groups_panel">
+			<panel label="bottom_panel" name="groups_buttons_panel">
+				<filter_editor label="群組過濾器" name="groups_filter_input"/>
+				<menu_button name="groups_gear_btn" tool_tip="對所選群組採取動作"/>
+				<menu_button name="groups_view_btn" tool_tip="檢視/排序的選項"/>
+				<menu_button name="plus_btn" tool_tip="加入群組/創立新群組"/>
+				<dnd_button name="minus_btn" tool_tip="離開所選群組"/>
 			</panel>
 		</panel>
 		<panel label="最近" name="recent_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<menu_button name="recent_viewsort_btn" tool_tip="選項"/>
-				<button name="add_friend_btn" tool_tip="添加所選的居民到你的朋友清單"/>
+			<panel label="bottom_panel" name="recent_buttons_panel">
+				<filter_editor label="人員過濾器" name="recent_filter_input"/>
+				<button name="gear_btn" tool_tip="對選取的人採取動作"/>
+				<menu_button name="recent_view_btn" tool_tip="檢視/排序的選項"/>
+				<button name="add_friend_btn" tool_tip="向某位居民發出交友邀請"/>
+				<dnd_button name="recent_del_btn" tool_tip="將選取的人從朋友名單移除"/>
 			</panel>
 		</panel>
+		<panel label="已封鎖的" name="blocked_panel">
+			<panel label="被封鎖的居民與物件" name="panel_block_list_sidetray"/>
+		</panel>
 	</tab_container>
-	<panel name="button_bar">
-		<layout_stack name="bottom_bar_ls">
-			<layout_panel name="view_profile_btn_lp">
-				<button label="檔案" name="view_profile_btn" tool_tip="顯示圖片、群組與其他居民資訊"/>
-			</layout_panel>
-			<layout_panel name="im_btn_lp">
-				<button label="IM" name="im_btn" tool_tip="開啟即時訊息會話"/>
-			</layout_panel>
-			<layout_panel name="call_btn_lp">
-				<button label="通話" name="call_btn" tool_tip="和這位居民通話"/>
-			</layout_panel>
-			<layout_panel name="share_btn_lp">
-				<button label="分享" name="share_btn" tool_tip="分享一個收納區物品"/>
-			</layout_panel>
-			<layout_panel name="teleport_btn_lp">
-				<button label="瞬間傳送" name="teleport_btn" tool_tip="發出瞬間傳送邀請"/>
-			</layout_panel>
-		</layout_stack>
-		<layout_stack name="bottom_bar_ls1">
-			<layout_panel name="group_info_btn_lp">
-				<button label="群組檔案" name="group_info_btn" tool_tip="顯示群組資訊"/>
-			</layout_panel>
-			<layout_panel name="chat_btn_lp">
-				<button label="群組聊天" name="chat_btn" tool_tip="開啟聊天會話"/>
-			</layout_panel>
-			<layout_panel name="group_call_btn_lp">
-				<button label="群組通話" name="group_call_btn" tool_tip="與此群組進行通話"/>
-			</layout_panel>
-		</layout_stack>
-	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/zh/panel_preferences_chat.xml b/indra/newview/skins/default/xui/zh/panel_preferences_chat.xml
index cf2f81d3139..e700e35516d 100644
--- a/indra/newview/skins/default/xui/zh/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/zh/panel_preferences_chat.xml
@@ -1,34 +1,86 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="文字聊天" name="chat">
-	<text name="font_size">
-		字型尺寸:
-	</text>
-	<radio_group name="chat_font_size">
-		<radio_item label="小" name="radio" value="0"/>
-		<radio_item label="中" name="radio2" value="1"/>
-		<radio_item label="大" name="radio3" value="2"/>
-	</radio_group>
-	<check_box initial_value="true" label="聊天時播放打字動作" name="play_typing_animation"/>
-	<check_box label="當我離線時將收到的 IM 訊息郵寄給我" name="send_im_to_email"/>
-	<check_box label="啟用純本文 IM 與聊天歷史紀錄" name="plain_text_chat_history"/>
-	<check_box label="聊天泡泡" name="bubble_text_chat"/>
-	<text name="show_ims_in_label">
-		顯示 IMs 於:
-	</text>
-	<text name="requires_restart_label">
-		(須重新啟動)
-	</text>
-	<radio_group name="chat_window" tool_tip="顯示你的即時訊息在分開的浮動視窗,或是使用很多頁籤的單一浮動視窗(須重新啟動)">
-		<radio_item label="分開視窗" name="radio" value="0"/>
-		<radio_item label="頁籤" name="radio2" value="1"/>
-	</radio_group>
-	<text name="disable_toast_label">
-		啟用傳入聊天的突顯示視窗:
-	</text>
-	<check_box label="群組聊天" name="EnableGroupChatPopups" tool_tip="當群組聊天訊息抵達時查看突顯式視窗"/>
-	<check_box label="IM 聊天" name="EnableIMChatPopups" tool_tip="當即時訊息抵達時查看突顯式視窗"/>
-	<spinner label="附近聊天內容提示框停駐時間:" name="nearby_toasts_lifetime"/>
-	<spinner label="附近聊天內容提示框消退時間:" name="nearby_toasts_fadingtime"/>
+	<panel>
+		<check_box initial_value="true" label="聊天時播放打字動作" name="play_typing_animation"/>
+		<check_box label="當我離線時將收到的 IM 訊息郵寄給我" name="send_im_to_email"/>
+		<check_box label="只有我的朋友和群組可以 IM 或與我通話。" name="voice_call_friends_only_check"/>
+		<text name="font_size">
+			字型尺寸:
+		</text>
+		<combo_box name="chat_font_size">
+			<item label="小" name="Small" value="0"/>
+			<item label="中" name="Medium" value="1"/>
+			<item label="大" name="Large" value="2"/>
+		</combo_box>
+		<check_box label="聊天泡泡" name="bubble_text_chat"/>
+	</panel>
+	<panel>
+		<text name="notifications">
+			通知
+		</text>
+		<text name="friend_ims">
+			朋友 IM:
+		</text>
+		<combo_box name="FriendIMOptions">
+			<item label="開啟交談視窗" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="以突顯式視窗顯示訊息" name="PopUpMessage" value="toast"/>
+			<item label="Flash 工具列按鈕" name="FlashToolbarButton" value="flash"/>
+			<item label="ç„¡" name="None" value="ç„¡"/>
+		</combo_box>
+		<text name="non_friend_ims">
+			非朋友 IM:
+		</text>
+		<combo_box name="NonFriendIMOptions">
+			<item label="開啟交談視窗" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="以突顯式視窗顯示訊息" name="PopUpMessage" value="toast"/>
+			<item label="Flash 工具列按鈕" name="FlashToolbarButton" value="flash"/>
+			<item label="ç„¡" name="None" value="ç„¡"/>
+		</combo_box>
+		<text name="conference_ims">
+			多方交談 IM:
+		</text>
+		<combo_box name="ConferenceIMOptions">
+			<item label="開啟交談視窗" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="以突顯式視窗顯示訊息" name="PopUpMessage" value="toast"/>
+			<item label="Flash 工具列按鈕" name="FlashToolbarButton" value="flash"/>
+			<item label="ç„¡" name="None" value="ç„¡"/>
+		</combo_box>
+		<text name="group_chat">
+			群組聊天:
+		</text>
+		<combo_box name="GroupChatOptions">
+			<item label="開啟交談視窗" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="以突顯式視窗顯示訊息" name="PopUpMessage" value="toast"/>
+			<item label="Flash 工具列按鈕" name="FlashToolbarButton" value="flash"/>
+			<item label="ç„¡" name="None" value="ç„¡"/>
+		</combo_box>
+		<text name="nearby_chat">
+			附近的聊天:
+		</text>
+		<combo_box name="NearbyChatOptions">
+			<item label="開啟交談視窗" name="OpenConversationsWindow" value="openconversations"/>
+			<item label="以突顯式視窗顯示訊息" name="PopUpMessage" value="toast"/>
+			<item label="Flash 工具列按鈕" name="FlashToolBarButton" value="flash"/>
+			<item label="ç„¡" name="None" value="ç„¡"/>
+		</combo_box>
+		<text name="notifications_alert">
+			若要暫時停止所有通知,請設定「溝通 &gt; 請勿打擾」。
+		</text>
+	</panel>
+	<panel>
+		<text name="play_sound">
+			播放聲音:
+		</text>
+		<check_box label="新交談" name="new_conversation"/>
+		<check_box label="語音通話來電" name="incoming_voice_call"/>
+		<check_box label="瞬間傳送邀請" name="teleport_offer"/>
+		<check_box label="收納物品贈送" name="inventory_offer"/>
+	</panel>
+	<panel>
+		<button label="清空記錄……" name="clear_log"/>
+		<button label="刪除交談內容記錄……" name="delete_transcripts"/>
+		<button label="瀏覽…" label_selected="瀏覽" name="log_path_button"/>
+	</panel>
 	<button label="翻譯…" name="ok_btn"/>
 	<button label="自動取代…" name="autoreplace_showgui"/>
 	<button label="拼字檢查…" name="spellcheck_showgui"/>
diff --git a/indra/newview/skins/default/xui/zh/panel_preferences_general.xml b/indra/newview/skins/default/xui/zh/panel_preferences_general.xml
index 7e67a0d02d0..044edbed701 100644
--- a/indra/newview/skins/default/xui/zh/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/zh/panel_preferences_general.xml
@@ -68,9 +68,9 @@
 		<combo_box.item label="絕不" name="item4"/>
 	</combo_box>
 	<text name="text_box3">
-		忙碌模式回應:
+		「請勿打擾」預設回應:
 	</text>
-	<text_editor name="busy_response">
+	<text_editor name="do_not_disturb_response">
 		log_in_to_change
 	</text_editor>
 </panel>
diff --git a/indra/newview/skins/default/xui/zh/sidepanel_task_info.xml b/indra/newview/skins/default/xui/zh/sidepanel_task_info.xml
index 982dde40105..60f44a3d88f 100644
--- a/indra/newview/skins/default/xui/zh/sidepanel_task_info.xml
+++ b/indra/newview/skins/default/xui/zh/sidepanel_task_info.xml
@@ -72,6 +72,7 @@
 			<combo_box.item label="購買物件" name="Buyobject"/>
 			<combo_box.item label="支付物件" name="Payobject"/>
 			<combo_box.item label="打開" name="Open"/>
+			<combo_box.item label="縮放" name="Zoom"/>
 		</combo_box>
 		<panel name="perms_inv">
 			<text name="perm_modify">
diff --git a/indra/newview/skins/default/xui/zh/strings.xml b/indra/newview/skins/default/xui/zh/strings.xml
index 7e17ed68647..31713ac2816 100644
--- a/indra/newview/skins/default/xui/zh/strings.xml
+++ b/indra/newview/skins/default/xui/zh/strings.xml
@@ -614,8 +614,8 @@ http://secondlife.com/viewer-access-faq
 	<string name="AvatarAway">
 		離開
 	</string>
-	<string name="AvatarBusy">
-		忙碌
+	<string name="AvatarDoNotDisturb">
+		請勿打擾
 	</string>
 	<string name="AvatarMuted">
 		封鎖的
@@ -851,6 +851,12 @@ http://secondlife.com/viewer-access-faq
 	<string name="ST_NO_JOINT">
 		找不到 ROOT 或旋軸。
 	</string>
+	<string name="NearbyChatTitle">
+		附近的聊天中
+	</string>
+	<string name="NearbyChatLabel">
+		(附近的聊天)
+	</string>
 	<string name="whisper">
 		低語:
 	</string>
@@ -914,12 +920,15 @@ http://secondlife.com/viewer-access-faq
 	<string name="ControlYourCamera">
 		控制你的攝影機
 	</string>
-	<string name="TeleportYourAgent">
-		瞬間傳送你本人
-	</string>
 	<string name="NotConnected">
 		未聯接
 	</string>
+	<string name="AgentNameSubst">
+		(你)
+	</string>
+	<string name="TeleportYourAgent">
+		瞬間傳送你本人
+	</string>
 	<string name="SIM_ACCESS_PG">
 		一般普級
 	</string>
@@ -1001,18 +1010,6 @@ http://secondlife.com/viewer-access-faq
 	<string name="dictionary_files">
 		å­—å…¸
 	</string>
-	<string name="AvatarSetNotAway">
-		非離開
-	</string>
-	<string name="AvatarSetAway">
-		離開
-	</string>
-	<string name="AvatarSetNotBusy">
-		非忙碌
-	</string>
-	<string name="AvatarSetBusy">
-		忙碌
-	</string>
 	<string name="shape">
 		體形
 	</string>
@@ -1981,8 +1978,8 @@ http://secondlife.com/viewer-access-faq
 	<string name="PanelContentsNewScript">
 		新腳本
 	</string>
-	<string name="BusyModeResponseDefault">
-		你傳訊過去的居民目前處於忙碌狀態,這意味著他要求不被打擾。  你的訊息仍將留存並顯示於對方的 IM 面板上供稍後查閱。
+	<string name="DoNotDisturbModeResponseDefault">
+		這居民處於「請勿打擾」狀態,不會立即看到你的訊息。
 	</string>
 	<string name="MuteByName">
 		(按名稱)
@@ -2095,9 +2092,6 @@ http://secondlife.com/viewer-access-faq
 	<string name="GroupMoneyDate">
 		[weekday,datetime,utc] [mth,datetime,utc] [day,datetime,utc], [year,datetime,utc]
 	</string>
-	<string name="ViewerObjectContents">
-		內容
-	</string>
 	<string name="AcquiredItems">
 		取得物品
 	</string>
@@ -3869,7 +3863,7 @@ http://secondlife.com/viewer-access-faq
 		一般普級地區
 	</string>
 	<string name="LocationCtrlSeeAVsTooltip">
-		可看到本地段外的化身,並與之交談
+		這地段外的其他化身,看不見也聽不到位於地段裡的化身
 	</string>
 	<string name="LocationCtrlPathfindingDirtyTooltip">
 		地區重新產出之前,可移動物件可能無法正常運作。
@@ -3946,6 +3940,12 @@ http://secondlife.com/viewer-access-faq
 	<string name="IM_unblock_only_groups_friends">
 		要察看這訊息,你必須到「偏好設定 / 隱私」,取消勾選「只有我的朋友和群組可以 IM 或與我通話」。
 	</string>
+	<string name="OnlineStatus">
+		上線
+	</string>
+	<string name="OfflineStatus">
+		離線
+	</string>
 	<string name="answered_call">
 		你的通話已經接通
 	</string>
@@ -3955,6 +3955,9 @@ http://secondlife.com/viewer-access-faq
 	<string name="you_joined_call">
 		你發起了語音通話
 	</string>
+	<string name="you_auto_rejected_call-im">
+		因為處於「請勿打擾」模式,你已自動拒聽這通語音來電。
+	</string>
 	<string name="name_started_call">
 		[NAME] 發起了語音通話
 	</string>
@@ -3971,7 +3974,7 @@ http://secondlife.com/viewer-access-faq
 		聯接中...
 	</string>
 	<string name="conference-title">
-		臨時多方通話
+		多人聊天
 	</string>
 	<string name="conference-title-incoming">
 		和 [AGENT_NAME] 多方通話
@@ -4863,6 +4866,9 @@ http://secondlife.com/viewer-access-faq
 	<string name="Command_Chat_Label">
 		聊天
 	</string>
+	<string name="Command_Conversations_Label">
+		交談
+	</string>
 	<string name="Command_Compass_Label">
 		羅盤
 	</string>
@@ -4938,6 +4944,9 @@ http://secondlife.com/viewer-access-faq
 	<string name="Command_Chat_Tooltip">
 		透過文字和附近人們聊天
 	</string>
+	<string name="Command_Conversations_Tooltip">
+		和所有人交談
+	</string>
 	<string name="Command_Compass_Tooltip">
 		指南針
 	</string>
@@ -5067,4 +5076,13 @@ http://secondlife.com/viewer-access-faq
 	<string name="UserDictionary">
 		[User]
 	</string>
+	<string name="logging_calls_disabled_log_empty">
+		交談未留記錄。 若想開始留記錄,請到「偏好設定 &gt; 聊天」,選擇「儲存:只留歷史記錄」或「儲存:歷史記錄兼交談內容」。
+	</string>
+	<string name="logging_calls_disabled_log_not_empty">
+		將不再為交談留記錄。 若想恢復留存記錄,請到「偏好設定 &gt; 聊天」,選擇「儲存:只留歷史記錄」或「儲存:歷史記錄兼交談內容」。
+	</string>
+	<string name="logging_calls_enabled_log_empty">
+		目前沒有交談記錄。 在你聯絡某人或某人聯絡你之後,這裡將留存記錄。
+	</string>
 </strings>
-- 
GitLab


From f89d1c9665146d6b528018d7f4b1ad2f290ea174 Mon Sep 17 00:00:00 2001
From: Oz Linden <oz@lindenlab.com>
Date: Wed, 24 Apr 2013 18:49:27 -0400
Subject: [PATCH 436/436] tag merge of DRTVWR-309

---
 .hgtags | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.hgtags b/.hgtags
index a8f816074c0..58567a4371a 100755
--- a/.hgtags
+++ b/.hgtags
@@ -305,3 +305,4 @@ b1dbb1a83f48f93f6f878cff9e52d2cb635e145c 3.4.0-beta2
 7649a3dff5ec22d3727377e5f02efd0f421e4cb5 DRTVWR-201
 84fb70dfe3444e75a44fb4bee43e2fc8221cebdd 3.4.0-beta4
 de3be913f68813a9bac7d1c671fef96d1159bcd6 DRTVWR-202
+c2b1066514308dff1eeb91162392dfe08bf1c0fe DRTVWR-309
-- 
GitLab